ssb-conn-hub
Advanced tools
Comparing version 0.1.0-rc1 to 0.1.0-rc2
@@ -20,10 +20,3 @@ import { ConnectionData as Data, Address } from './types'; | ||
reset(): void; | ||
entries(): IterableIterator<[string, Readonly<{ | ||
[name: string]: any; | ||
state: "connecting" | "connected" | "disconnecting"; | ||
hubBirth: number; | ||
hubUpdated: number; | ||
disconnect?: ((cb: (err?: any) => void) => void) | undefined; | ||
key?: string | undefined; | ||
}>]>; | ||
entries(): IterableIterator<[string, Data]>; | ||
liveEntries(): any; | ||
@@ -30,0 +23,0 @@ getState(address: Address): Data['state'] | undefined; |
@@ -78,2 +78,4 @@ "use strict"; | ||
var Notify = require('pull-notify'); | ||
var ip = require('ip'); | ||
var msNetPlugin = require('multiserver/plugins/net')({}); | ||
var msAddress = require('multiserver-address'); | ||
@@ -101,2 +103,16 @@ var ref = require('ssb-ref'); | ||
} | ||
function inferPeerType(address) { | ||
if (address.startsWith('bt:')) | ||
return 'bt'; | ||
if (address.startsWith('dht:')) | ||
return 'dht'; | ||
if (address.startsWith('tunnel:')) | ||
return 'tunnel'; | ||
if (address.startsWith('net:')) { | ||
var parsed = msNetPlugin.parse(address); | ||
if (parsed && parsed.host && ip.isPrivate(parsed.host)) | ||
return 'lan'; | ||
} | ||
return; | ||
} | ||
var ConnHub = (function () { | ||
@@ -128,7 +144,10 @@ function ConnHub(server) { | ||
} | ||
var _a = __read(!peer ? [rpc.stream.address, { key: rpc.id }] : peer, 2), address = _a[0], data = _a[1]; | ||
var _a = __read(!peer | ||
? [rpc.stream.address, { key: rpc.id }] | ||
: peer, 2), address = _a[0], data = _a[1]; | ||
data.inferredType = inferPeerType(address); | ||
var key = data.key; | ||
var state = 'connected'; | ||
var disconnect = function (cb) { return rpc.close(true, cb); }; | ||
_this._setPeer(address, { state: state, key: key, disconnect: disconnect }); | ||
_this._setPeer(address, __assign({}, data, { state: state, disconnect: disconnect })); | ||
debug('connected to %s', address); | ||
@@ -135,0 +154,0 @@ _this._notifyEvent({ |
export declare type Address = string; | ||
export declare type ConnectionData = Readonly<{ | ||
export declare type ConnectionData = { | ||
key?: string; | ||
state: 'connecting' | 'connected' | 'disconnecting'; | ||
inferredType?: 'bt' | 'lan' | 'dht' | 'tunnel'; | ||
hubBirth: number; | ||
hubUpdated: number; | ||
disconnect?: (cb: (err?: any) => void) => void; | ||
key?: string; | ||
[name: string]: any; | ||
}>; | ||
export declare type ListenEvent = Readonly<{ | ||
}; | ||
export declare type ListenEvent = { | ||
type: ConnectionData['state'] | 'connecting-failed' | 'disconnecting-failed' | 'disconnected'; | ||
@@ -15,2 +16,2 @@ address: Address; | ||
details?: any; | ||
}>; | ||
}; |
{ | ||
"name": "ssb-conn-hub", | ||
"description": "Module that manages active connections to SSB peers", | ||
"version": "0.1.0-rc1", | ||
"version": "0.1.0-rc2", | ||
"homepage": "https://github.com/staltz/ssb-conn-hub", | ||
@@ -13,2 +13,4 @@ "main": "lib/index.js", | ||
"dependencies": { | ||
"ip": "^1.1.5", | ||
"multiserver": "^3.4.0", | ||
"multiserver-address": "~1.0.1", | ||
@@ -15,0 +17,0 @@ "promisify-tuple": "^1.0.0", |
@@ -7,2 +7,4 @@ import {ConnectionData as Data, ListenEvent, Address} from './types'; | ||
const Notify = require('pull-notify'); | ||
const ip = require('ip'); | ||
const msNetPlugin = require('multiserver/plugins/net')({}); | ||
const msAddress = require('multiserver-address'); | ||
@@ -32,2 +34,15 @@ const ref = require('ssb-ref'); | ||
// TODO perhaps the `type` should be provided by each multiserver plugin? | ||
// like when multiserver plugins provide the `stream.address` to secret-stack | ||
function inferPeerType(address: Address): Data['inferredType'] { | ||
if (address.startsWith('bt:')) return 'bt'; | ||
if (address.startsWith('dht:')) return 'dht'; | ||
if (address.startsWith('tunnel:')) return 'tunnel'; | ||
if (address.startsWith('net:')) { | ||
const parsed = msNetPlugin.parse(address); | ||
if (parsed && parsed.host && ip.isPrivate(parsed.host)) return 'lan'; | ||
} | ||
return; | ||
} | ||
class ConnHub { | ||
@@ -139,3 +154,6 @@ private readonly _server: any; | ||
const [address, data] = !peer ? [rpc.stream.address, {key: rpc.id}] : peer; | ||
const [address, data] = !peer | ||
? [rpc.stream.address, {key: rpc.id} as Data] | ||
: peer; | ||
data.inferredType = inferPeerType(address); | ||
const key = data.key; | ||
@@ -145,3 +163,3 @@ | ||
const disconnect: Data['disconnect'] = cb => rpc.close(true, cb); | ||
this._setPeer(address, {state, key, disconnect}); | ||
this._setPeer(address, {...data, state, disconnect}); | ||
debug('connected to %s', address); | ||
@@ -148,0 +166,0 @@ this._notifyEvent({ |
export type Address = string; | ||
export type ConnectionData = Readonly<{ | ||
export type ConnectionData = { | ||
key?: string; | ||
state: 'connecting' | 'connected' | 'disconnecting'; | ||
inferredType?: 'bt' | 'lan' | 'dht' | 'tunnel'; | ||
hubBirth: number; | ||
hubUpdated: number; | ||
disconnect?: (cb: (err?: any) => void) => void; | ||
key?: string; | ||
[name: string]: any; | ||
}>; | ||
}; | ||
export type ListenEvent = Readonly<{ | ||
export type ListenEvent = { | ||
type: | ||
@@ -21,2 +22,2 @@ | ConnectionData['state'] | ||
details?: any; | ||
}>; | ||
}; |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
115785
958
9
+ Addedip@^1.1.5
+ Addedmultiserver@^3.4.0
+ Addedchloride@2.4.1(transitive)
+ Addedchloride-test@1.2.4(transitive)
+ Addedclarify-error@1.0.0(transitive)
+ Addeded2curve@0.1.4(transitive)
+ Addedincrement-buffer@1.0.1(transitive)
+ Addedinherits@2.0.4(transitive)
+ Addedip-address@9.0.5(transitive)
+ Addedjsbn@1.1.0(transitive)
+ Addedjson-buffer@2.0.11(transitive)
+ Addedlibsodium@0.7.15(transitive)
+ Addedlibsodium-wrappers@0.7.15(transitive)
+ Addedlooper@3.0.0(transitive)
+ Addedmulticb@1.2.2(transitive)
+ Addedmultiserver@3.8.2(transitive)
+ Addedmultiserver-scopes@2.0.0(transitive)
+ Addednode-gyp-build@4.8.2(transitive)
+ Addednon-private-ip@2.2.0(transitive)
+ Addedpull-box-stream@1.0.13(transitive)
+ Addedpull-handshake@1.1.4(transitive)
+ Addedpull-pair@1.1.0(transitive)
+ Addedpull-reader@1.3.1(transitive)
+ Addedpull-through@1.0.18(transitive)
+ Addedpull-websocket@3.4.2(transitive)
+ Addedrelative-url@1.0.2(transitive)
+ Addedsafe-buffer@5.2.1(transitive)
+ Addedsecret-handshake@1.1.21(transitive)
+ Addedseparator-escape@0.0.1(transitive)
+ Addedsha.js@2.4.112.4.5(transitive)
+ Addedsmart-buffer@4.2.0(transitive)
+ Addedsocks@2.8.3(transitive)
+ Addedsodium-browserify@1.3.0(transitive)
+ Addedsodium-browserify-tweetnacl@0.2.6(transitive)
+ Addedsodium-chloride@1.1.2(transitive)
+ Addedsodium-native@3.4.1(transitive)
+ Addedsplit-buffer@1.0.0(transitive)
+ Addedsprintf-js@1.1.3(transitive)
+ Addedstream-to-pull-stream@1.7.3(transitive)
+ Addedtweetnacl@0.14.51.0.3(transitive)
+ Addedtweetnacl-auth@0.3.1(transitive)
+ Addedtypedarray-to-buffer@4.0.0(transitive)
+ Addedws@7.5.10(transitive)