Socket
Socket
Sign inDemoInstall

ssb-conn

Package Overview
Dependencies
Maintainers
1
Versions
92
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

ssb-conn - npm Package Compare versions

Comparing version 0.8.5 to 0.9.0

1

lib/conn-scheduler.d.ts
export declare class ConnScheduler {
private readonly ssb;
private readonly config;
private readonly hub;
private readonly hasSsbDb;

@@ -6,0 +5,0 @@ private closed;

16

lib/conn-scheduler.js

@@ -91,5 +91,5 @@ "use strict";

int.unref();
onWakeup(() => this.hub.reset());
onNetwork(() => this.hub.reset());
pull(this.hub.listen(), pull.filter((ev) => ev.type === 'disconnected'), pull.drain(() => this.updateConnectionsSoon(200)));
onWakeup(() => this.ssb.conn.hub().reset());
onNetwork(() => this.ssb.conn.hub().reset());
pull(this.ssb.conn.hub().listen(), pull.filter((ev) => ev.type === 'disconnected'), pull.drain(() => this.updateConnectionsSoon(200)));
this.updateConnectionsSoon();

@@ -100,3 +100,3 @@ };

this.ssb.lan.stop();
this.hub.reset();
this.ssb.conn.hub().reset();
this.closed = true;

@@ -106,3 +106,2 @@ };

this.config = config;
this.hub = this.ssb.conn.internalConnHub();
this.hasSsbDb = !!this.ssb.post && !!this.ssb.messagesByType;

@@ -258,3 +257,4 @@ this.closed = true;

const permanent = hasPinged(peer) || isLocal(peer);
return !permanent || this.hub.getState(peer[0]) === 'connecting';
const state = this.ssb.conn.hub().getState(peer[0]);
return !permanent || state === 'connecting';
})

@@ -312,3 +312,3 @@ .filter(peer => peer[1].stateChange + 10e3 < Date.now())

}
else if (!this.ssb.conn.internalConnDB().has(address)) {
else if (!this.ssb.conn.db().has(address)) {
this.ssb.conn.stage(address, { key, type: 'pub' });

@@ -326,3 +326,3 @@ this.ssb.conn.remember(address, {

}));
pull(this.ssb.conn.internalConnStaging().liveEntries(), pull.drain((staged) => {
pull(this.ssb.conn.staging().liveEntries(), pull.drain((staged) => {
const stagedPubs = staged.filter(([, data]) => data.type === 'pub');

@@ -329,0 +329,0 @@ if (stagedPubs.length >= MAX_STAGED_PUBS) {

@@ -10,6 +10,6 @@ import ConnDB = require('ssb-conn-db');

private readonly config;
private readonly db;
private readonly hub;
private readonly staging;
private readonly connQuery;
private readonly _db;
private readonly _hub;
private readonly _staging;
private readonly _query;
constructor(ssb: any, cfg: any);

@@ -35,6 +35,9 @@ private initialize;

stagedPeers: () => any;
query: () => ConnQuery;
start: () => Promise<void>;
stop: () => void;
ping: () => any;
db: () => ConnDB;
hub: () => ConnHub;
staging: () => ConnStaging;
query: () => ConnQuery;
internalConnDB: () => ConnDB;

@@ -41,0 +44,0 @@ internalConnHub: () => ConnHub;

@@ -27,8 +27,8 @@ "use strict";

this.remember = (address, data = {}) => {
this.db.set(address, data);
this._db.set(address, data);
};
this.forget = (address) => {
this.db.delete(address);
this._db.delete(address);
};
this.dbPeers = () => this.db.entries();
this.dbPeers = () => this._db.entries();
this.connect = (address, b, c) => {

@@ -41,3 +41,3 @@ if (c && (typeof b === 'function' || !b)) {

const data = (typeof b === 'object' ? b : {});
this.hub
this._hub
.connect(address, data)

@@ -47,17 +47,16 @@ .then(result => cb && cb(null, result), err => cb && cb(err));

this.disconnect = (address, cb) => {
this.hub
this._hub
.disconnect(address)
.then(result => cb && cb(null, result), err => cb && cb(err));
};
this.peers = () => this.hub.liveEntries();
this.peers = () => this._hub.liveEntries();
this.stage = (address, data = { type: 'internet' }) => {
if (!!this.hub.getState(address))
if (!!this._hub.getState(address))
return false;
return this.staging.stage(address, data);
return this._staging.stage(address, data);
};
this.unstage = (address) => {
return this.staging.unstage(address);
return this._staging.unstage(address);
};
this.stagedPeers = () => this.staging.liveEntries();
this.query = () => this.connQuery;
this.stagedPeers = () => this._staging.liveEntries();
this.start = () => {

@@ -77,11 +76,24 @@ return this.startScheduler();

};
this.internalConnDB = () => this.db;
this.internalConnHub = () => this.hub;
this.internalConnStaging = () => this.staging;
this.db = () => this._db;
this.hub = () => this._hub;
this.staging = () => this._staging;
this.query = () => this._query;
this.internalConnDB = () => {
console.error('DEPRECATED conn.internalConnDB(), use conn.db() instead');
return this._db;
};
this.internalConnHub = () => {
console.error('DEPRECATED conn.internalConnHub(), use conn.hub() instead');
return this._hub;
};
this.internalConnStaging = () => {
console.error('DEPRECATED conn.internalConnStaging(), use conn.staging() instead');
return this._staging;
};
this.ssb = ssb;
this.config = cfg;
this.db = new ConnDB({ path: this.config.path, writeTimeout: 1e3 });
this.hub = new ConnHub(this.ssb);
this.staging = new ConnStaging();
this.connQuery = new ConnQuery(this.db, this.hub, this.staging);
this._db = new ConnDB({ path: this.config.path, writeTimeout: 1e3 });
this._hub = new ConnHub(this.ssb);
this._staging = new ConnStaging();
this._query = new ConnQuery(this._db, this._hub, this._staging);
this.initialize();

@@ -92,3 +104,3 @@ }

this.maybeAutoStartScheduler();
interpool_glue_1.interpoolGlue(this.db, this.hub, this.staging);
interpool_glue_1.interpoolGlue(this._db, this._hub, this._staging);
}

@@ -99,5 +111,5 @@ setupCloseHook() {

that.stopScheduler();
that.db.close();
that.hub.close();
that.staging.close();
that._db.close();
that._hub.close();
that._staging.close();
return fn.apply(this, args);

@@ -113,3 +125,3 @@ });

return __awaiter(this, void 0, void 0, function* () {
yield this.db.loaded();
yield this._db.loaded();
if (this.ssb.connScheduler) {

@@ -165,5 +177,2 @@ this.ssb.connScheduler.start();

secret_stack_decorators_1.muxrpc('sync')
], CONN.prototype, "query", void 0);
__decorate([
secret_stack_decorators_1.muxrpc('sync')
], CONN.prototype, "start", void 0);

@@ -178,2 +187,14 @@ __decorate([

secret_stack_decorators_1.muxrpc('sync')
], CONN.prototype, "db", void 0);
__decorate([
secret_stack_decorators_1.muxrpc('sync')
], CONN.prototype, "hub", void 0);
__decorate([
secret_stack_decorators_1.muxrpc('sync')
], CONN.prototype, "staging", void 0);
__decorate([
secret_stack_decorators_1.muxrpc('sync')
], CONN.prototype, "query", void 0);
__decorate([
secret_stack_decorators_1.muxrpc('sync')
], CONN.prototype, "internalConnDB", void 0);

@@ -180,0 +201,0 @@ __decorate([

@@ -6,5 +6,2 @@ import { Callback, Peer } from './types';

private readonly conn;
private readonly connDB;
private readonly connHub;
private readonly connStaging;
private latestWarning;

@@ -11,0 +8,0 @@ constructor(ssb: any);

@@ -87,7 +87,7 @@ "use strict";

}
const peers = Array.from(this.connDB.entries()).map(([address, data]) => {
return Object.assign({}, data, { address, state: this.connHub.getState(address) });
const peers = Array.from(this.conn.db().entries()).map(([address, data]) => {
return Object.assign({}, data, { address, state: this.conn.hub().getState(address) });
});
for (const [address, data] of this.connHub.entries()) {
if (!this.connDB.has(address)) {
for (const [address, data] of this.conn.hub().entries()) {
if (!this.conn.db().has(address)) {
const [, parsed] = validateAddr(address);

@@ -102,3 +102,3 @@ peers.push(Object.assign({}, data, parsed, { address, source: inferSource(address) }));

if (ref.isFeed(addr)) {
for (let [address, data] of this.connDB.entries()) {
for (let [address, data] of this.conn.db().entries()) {
if (data.key === addr) {

@@ -111,7 +111,7 @@ return Object.assign({}, data, { address });

const [addressString] = validateAddr(addr);
const peer = this.connDB.get(addressString);
const peer = this.conn.db().get(addressString);
if (!peer)
return undefined;
else {
return Object.assign({ address: addressString, state: this.connHub.getState(addressString) }, peer);
return Object.assign({ address: addressString, state: this.conn.hub().getState(addressString) }, peer);
}

@@ -130,3 +130,6 @@ };

this.add(addressString, 'manual');
this.conn.connect(addressString, cb);
const stagedData = this.conn.staging().get(addressString) || {};
const dbData = this.conn.db().get(addressString) || {};
const data = Object.assign({}, dbData, stagedData);
this.conn.connect(addressString, data, cb);
};

@@ -159,7 +162,7 @@ this.disconnect = (addr, cb) => {

}
if (this.connDB.has(addressString)) {
return this.connDB.get(addressString);
if (this.conn.db().has(addressString)) {
return this.conn.db().get(addressString);
}
else {
this.connDB.set(addressString, {
this.conn.db().set(addressString, {
host: parsed.host,

@@ -173,6 +176,6 @@ port: parsed.port,

type: 'discover',
peer: Object.assign({}, parsed, { state: this.connHub.getState(addressString), source: source || 'manual' }),
peer: Object.assign({}, parsed, { state: this.conn.hub().getState(addressString), source: source || 'manual' }),
source: source || 'manual',
});
return this.connDB.get(addressString) || parsed;
return this.conn.db().get(addressString) || parsed;
}

@@ -183,8 +186,8 @@ };

const [addressString] = validateAddr(addr);
this.connHub.disconnect(addressString);
this.connStaging.unstage(addressString);
const peer = this.connDB.get(addressString);
this.conn.hub().disconnect(addressString);
this.conn.staging().unstage(addressString);
const peer = this.conn.db().get(addressString);
if (!peer)
return;
this.connDB.delete(addressString);
this.conn.db().delete(addressString);
this.notify({ type: 'remove', peer: peer });

@@ -195,3 +198,3 @@ };

console.error('DEPRECATED gossip.reconnect() was called. Use ssb-conn instead');
this.connHub.reset();
this.conn.hub().reset();
};

@@ -207,5 +210,2 @@ this.enable = (type) => {

this.conn = this.ssb.conn;
this.connDB = this.conn.internalConnDB();
this.connHub = this.conn.internalConnHub();
this.connStaging = this.conn.internalConnStaging();
this.latestWarning = 0;

@@ -216,3 +216,3 @@ this.setupConnectionListeners();

setupConnectionListeners() {
pull(this.connHub.listen(), pull.drain((ev) => {
pull(this.conn.hub().listen(), pull.drain((ev) => {
if (ev.type === 'connecting-failed')

@@ -227,8 +227,8 @@ this.onConnectingFailed(ev);

onConnectingFailed(ev) {
const peer = Object.assign({ state: ev.type, address: ev.address, key: ev.key }, this.connDB.get(ev.address));
const peer = Object.assign({ state: ev.type, address: ev.address, key: ev.key }, this.conn.db().get(ev.address));
this.notify({ type: 'connect-failure', peer });
}
onConnected(ev) {
const peer = Object.assign({ state: ev.type, address: ev.address, key: ev.key }, this.connDB.get(ev.address));
if (!this.connDB.has(ev.address))
const peer = Object.assign({ state: ev.type, address: ev.address, key: ev.key }, this.conn.db().get(ev.address));
if (!this.conn.db().has(ev.address))
peer.source = inferSource(ev.address);

@@ -238,7 +238,7 @@ this.notify({ type: 'connect', peer });

onDisconnected(ev) {
const peer = Object.assign({ state: ev.type, address: ev.address, key: ev.key }, this.connDB.get(ev.address));
const peer = Object.assign({ state: ev.type, address: ev.address, key: ev.key }, this.conn.db().get(ev.address));
this.notify({ type: 'disconnect', peer });
}
idToAddr(id) {
const addr = this.connDB.getAddressForId(id);
const addr = this.conn.db().getAddressForId(id);
if (!addr) {

@@ -245,0 +245,0 @@ throw new Error('no known address for peer:' + id);

@@ -20,4 +20,8 @@ "use strict";

function onConnecting(ev) {
staging.unstage(ev.address);
db.update(ev.address, { stateChange: Date.now() });
const addr = ev.address;
const stagedData = staging.get(addr);
staging.unstage(addr);
db.update(addr, { stateChange: Date.now() });
const dbData = db.get(addr);
hub.update(addr, Object.assign({}, dbData, stagedData));
}

@@ -32,6 +36,10 @@ function onConnectingFailed(ev) {

function onConnected(ev) {
staging.unstage(ev.address);
db.update(ev.address, { stateChange: Date.now(), failure: 0 });
const addr = ev.address;
const stagedData = staging.get(addr);
staging.unstage(addr);
db.update(addr, { stateChange: Date.now(), failure: 0 });
const dbData = db.get(addr);
hub.update(addr, Object.assign({}, dbData, stagedData));
if (ev.details.isClient)
setupPing(ev.address, ev.details.rpc);
setupPing(addr, ev.details.rpc);
}

@@ -38,0 +46,0 @@ function onDisconnecting(ev) {

{
"name": "ssb-conn",
"description": "SSB plugin for establishing and managing peer connections",
"version": "0.8.5",
"version": "0.9.0",
"homepage": "https://github.com/staltz/ssb-conn",

@@ -23,6 +23,6 @@ "main": "lib/index.js",

"secret-stack-decorators": "1.0.0",
"ssb-conn-db": "~0.2.0",
"ssb-conn-db": "~0.2.1",
"ssb-conn-hub": "~0.2.2",
"ssb-conn-query": "~0.3.1",
"ssb-conn-staging": "~0.0.8",
"ssb-conn-query": "~0.4.0",
"ssb-conn-staging": "~0.1.0",
"ssb-ref": "^2.13.9",

@@ -41,3 +41,3 @@ "ssb-typescript": "^1.4.0",

"ssb-caps": "~1.1.0",
"ssb-lan": "~0.1.1",
"ssb-lan": "~0.1.3",
"ssb-server": "~15.1.0",

@@ -44,0 +44,0 @@ "tape": "^4.9.2",

@@ -61,6 +61,9 @@ <div style="text-align:center" align="center">

| **`stagedPeers()`** | `source` | A pull-stream that emits an array of all staged "entries" (see definition below) whenever any staging status updates (upon stage() or unstage()). |
| **`query()`** | `sync` | Returns an instance of [ConnQuery](https://github.com/staltz/ssb-conn-query). |
| **`start()`** | `sync` | Triggers the start of the connection scheduler in CONN. |
| **`stop()`** | `sync` | Stops the CONN scheduler if it is currently active. |
| **`ping()`** | `duplex` | A duplex pull-stream for periodically pinging with peers, fully compatible with `ssb.gossip.ping`. |
| **`db()`** | `sync` | Returns the instance of [ConnDB](https://github.com/staltz/ssb-conn-db) currently in use. |
| **`hub()`** | `sync` | Returns the instance of [ConnHub](https://github.com/staltz/ssb-conn-hub) currently in use. |
| **`staging()`** | `sync` | Returns the instance of [ConnStaging](https://github.com/staltz/ssb-conn-staging) currently in use. |
| **`query()`** | `sync` | Returns the instance of [ConnQuery](https://github.com/staltz/ssb-conn-query) currently in use. |

@@ -212,8 +215,2 @@ An "entry" is a (tuple) array with a multiserver address (string that [follows some rules](https://github.com/dominictarr/multiserver-address)) and data (an object):

**Pro tip:** when implementing your ConnScheduler, you have access to `ssb.conn.*` APIs, but if you need more precision, you can access lower level APIs belonging to ConnDB, ConnHub, and ConnStaging:
- `ssb.conn.internalConnDB().*`
- `ssb.conn.internalConnHub().*`
- `ssb.conn.internalConnStaging().*`
<ul></ul>

@@ -220,0 +217,0 @@

@@ -1,2 +0,1 @@

import ConnHub = require('ssb-conn-hub');
import ConnQuery = require('ssb-conn-query');

@@ -89,3 +88,2 @@ import {ListenEvent as HubEvent} from 'ssb-conn-hub/lib/types';

private readonly config: any;
private readonly hub: ConnHub;
private readonly hasSsbDb: boolean;

@@ -101,3 +99,2 @@ private closed: boolean;

this.config = config;
this.hub = this.ssb.conn.internalConnHub();
this.hasSsbDb = !!this.ssb.post && !!this.ssb.messagesByType;

@@ -298,3 +295,4 @@ this.closed = true;

const permanent = hasPinged(peer) || isLocal(peer);
return !permanent || this.hub.getState(peer[0]) === 'connecting';
const state = this.ssb.conn.hub().getState(peer[0]);
return !permanent || state === 'connecting';
})

@@ -368,3 +366,3 @@ .filter(peer => peer[1].stateChange! + 10e3 < Date.now())

this.ssb.conn.forget(address);
} else if (!this.ssb.conn.internalConnDB().has(address)) {
} else if (!this.ssb.conn.db().has(address)) {
this.ssb.conn.stage(address, {key, type: 'pub'});

@@ -385,3 +383,3 @@ this.ssb.conn.remember(address, {

pull(
this.ssb.conn.internalConnStaging().liveEntries(),
this.ssb.conn.staging().liveEntries(),
pull.drain((staged: Array<any>) => {

@@ -490,10 +488,10 @@ const stagedPubs = staged.filter(([, data]) => data.type === 'pub');

// Upon wakeup, trigger hard reconnect
onWakeup(() => this.hub.reset());
onWakeup(() => this.ssb.conn.hub().reset());
// Upon network changes, trigger hard reconnect
onNetwork(() => this.hub.reset());
onNetwork(() => this.ssb.conn.hub().reset());
// Upon some disconnection, attempt to make connections
pull(
this.hub.listen(),
this.ssb.conn.hub().listen(),
pull.filter((ev: HubEvent) => ev.type === 'disconnected'),

@@ -510,5 +508,5 @@ pull.drain(() => this.updateConnectionsSoon(200)),

if (this.ssb.lan && this.ssb.lan.stop) this.ssb.lan.stop();
this.hub.reset();
this.ssb.conn.hub().reset();
this.closed = true;
};
}

@@ -16,6 +16,6 @@ import ConnDB = require('ssb-conn-db');

private readonly config: any;
private readonly db: ConnDB;
private readonly hub: ConnHub;
private readonly staging: ConnStaging;
private readonly connQuery: ConnQuery;
private readonly _db: ConnDB;
private readonly _hub: ConnHub;
private readonly _staging: ConnStaging;
private readonly _query: ConnQuery;

@@ -25,6 +25,6 @@ constructor(ssb: any, cfg: any) {

this.config = cfg;
this.db = new ConnDB({path: this.config.path, writeTimeout: 1e3});
this.hub = new ConnHub(this.ssb);
this.staging = new ConnStaging();
this.connQuery = new ConnQuery(this.db, this.hub, this.staging);
this._db = new ConnDB({path: this.config.path, writeTimeout: 1e3});
this._hub = new ConnHub(this.ssb);
this._staging = new ConnStaging();
this._query = new ConnQuery(this._db, this._hub, this._staging);

@@ -39,3 +39,3 @@ this.initialize();

this.maybeAutoStartScheduler();
interpoolGlue(this.db, this.hub, this.staging);
interpoolGlue(this._db, this._hub, this._staging);
}

@@ -47,5 +47,5 @@

that.stopScheduler();
that.db.close();
that.hub.close();
that.staging.close();
that._db.close();
that._hub.close();
that._staging.close();
return fn.apply(this, args);

@@ -66,3 +66,3 @@ });

private async startScheduler() {
await this.db.loaded();
await this._db.loaded();

@@ -96,3 +96,3 @@ if (this.ssb.connScheduler) {

public remember = (address: string, data: any = {}) => {
this.db.set(address, data);
this._db.set(address, data);
};

@@ -102,7 +102,7 @@

public forget = (address: string) => {
this.db.delete(address);
this._db.delete(address);
};
@muxrpc('sync')
public dbPeers = () => this.db.entries() as Iterable<[string, AddressData]>;
public dbPeers = () => this._db.entries() as Iterable<[string, AddressData]>;

@@ -122,3 +122,3 @@ @muxrpc('async')

this.hub
this._hub
.connect(address, data)

@@ -130,3 +130,3 @@ .then(result => cb && cb(null, result), err => cb && cb(err));

public disconnect = (address: string, cb?: Callback<any>) => {
this.hub
this._hub
.disconnect(address)

@@ -137,3 +137,3 @@ .then(result => cb && cb(null, result), err => cb && cb(err));

@muxrpc('source')
public peers = () => this.hub.liveEntries();
public peers = () => this._hub.liveEntries();

@@ -145,5 +145,5 @@ @muxrpc('sync')

) => {
if (!!this.hub.getState(address)) return false;
if (!!this._hub.getState(address)) return false;
return this.staging.stage(address, data);
return this._staging.stage(address, data);
};

@@ -153,12 +153,9 @@

public unstage = (address: string) => {
return this.staging.unstage(address);
return this._staging.unstage(address);
};
@muxrpc('source')
public stagedPeers = () => this.staging.liveEntries();
public stagedPeers = () => this._staging.liveEntries();
@muxrpc('sync')
public query = () => this.connQuery;
@muxrpc('sync')
public start = () => {

@@ -184,11 +181,33 @@ return this.startScheduler();

@muxrpc('sync')
public internalConnDB = () => this.db;
public db = () => this._db;
@muxrpc('sync')
public internalConnHub = () => this.hub;
public hub = () => this._hub;
@muxrpc('sync')
public internalConnStaging = () => this.staging;
public staging = () => this._staging;
@muxrpc('sync')
public query = () => this._query;
@muxrpc('sync')
public internalConnDB = () => {
console.error('DEPRECATED conn.internalConnDB(), use conn.db() instead');
return this._db;
};
@muxrpc('sync')
public internalConnHub = () => {
console.error('DEPRECATED conn.internalConnHub(), use conn.hub() instead');
return this._hub;
};
@muxrpc('sync')
public internalConnStaging = () => {
console.error(
'DEPRECATED conn.internalConnStaging(), use conn.staging() instead',
);
return this._staging;
};
//#endregion
}

@@ -1,4 +0,1 @@

import ConnDB = require('ssb-conn-db');
import ConnHub = require('ssb-conn-hub');
import ConnStaging = require('ssb-conn-staging');
import {ListenEvent as HubEvent} from 'ssb-conn-hub/lib/types';

@@ -90,5 +87,2 @@ import {Callback, Peer} from './types';

private readonly conn: CONN;
private readonly connDB: ConnDB;
private readonly connHub: ConnHub;
private readonly connStaging: ConnStaging;

@@ -104,5 +98,2 @@ /**

this.conn = this.ssb.conn;
this.connDB = this.conn.internalConnDB();
this.connHub = this.conn.internalConnHub();
this.connStaging = this.conn.internalConnStaging();
this.latestWarning = 0;

@@ -116,3 +107,3 @@

pull(
this.connHub.listen(),
this.conn.hub().listen(),
pull.drain((ev: HubEvent) => {

@@ -131,3 +122,3 @@ if (ev.type === 'connecting-failed') this.onConnectingFailed(ev);

key: ev.key,
...this.connDB.get(ev.address),
...this.conn.db().get(ev.address),
};

@@ -142,5 +133,5 @@ this.notify({type: 'connect-failure', peer});

key: ev.key,
...this.connDB.get(ev.address),
...this.conn.db().get(ev.address),
} as Peer;
if (!this.connDB.has(ev.address)) peer.source = inferSource(ev.address);
if (!this.conn.db().has(ev.address)) peer.source = inferSource(ev.address);
this.notify({type: 'connect', peer});

@@ -154,3 +145,3 @@ }

key: ev.key,
...this.connDB.get(ev.address),
...this.conn.db().get(ev.address),
} as Peer;

@@ -161,3 +152,3 @@ this.notify({type: 'disconnect', peer});

private idToAddr(id: any) {
const addr = this.connDB.getAddressForId(id as string) as string;
const addr = this.conn.db().getAddressForId(id as string) as string;
if (!addr) {

@@ -175,13 +166,15 @@ throw new Error('no known address for peer:' + id);

}
const peers = Array.from(this.connDB.entries()).map(([address, data]) => {
return {
...data,
address,
state: this.connHub.getState(address),
};
});
const peers = Array.from(this.conn.db().entries()).map(
([address, data]) => {
return {
...data,
address,
state: this.conn.hub().getState(address),
};
},
);
// Add peers that are connected but are not in the cold database
for (const [address, data] of this.connHub.entries()) {
if (!this.connDB.has(address)) {
for (const [address, data] of this.conn.hub().entries()) {
if (!this.conn.db().has(address)) {
const [, parsed] = validateAddr(address);

@@ -206,3 +199,3 @@ peers.push({

if (ref.isFeed(addr)) {
for (let [address, data] of this.connDB.entries()) {
for (let [address, data] of this.conn.db().entries()) {
if (data.key === addr) {

@@ -215,3 +208,3 @@ return {...data, address};

const [addressString] = validateAddr(addr);
const peer = this.connDB.get(addressString);
const peer = this.conn.db().get(addressString);
if (!peer) return undefined;

@@ -221,3 +214,3 @@ else {

address: addressString,
state: this.connHub.getState(addressString),
state: this.conn.hub().getState(addressString),
...peer,

@@ -242,4 +235,7 @@ };

this.add(addressString, 'manual');
const stagedData = this.conn.staging().get(addressString) || {};
const dbData = this.conn.db().get(addressString) || {};
const data = {...dbData, ...stagedData};
this.conn.connect(addressString, cb);
this.conn.connect(addressString, data, cb);
};

@@ -285,6 +281,6 @@

if (this.connDB.has(addressString)) {
return this.connDB.get(addressString);
if (this.conn.db().has(addressString)) {
return this.conn.db().get(addressString);
} else {
this.connDB.set(addressString, {
this.conn.db().set(addressString, {
host: parsed.host,

@@ -300,3 +296,3 @@ port: parsed.port,

...parsed,
state: this.connHub.getState(addressString),
state: this.conn.hub().getState(addressString),
source: source || 'manual',

@@ -306,3 +302,3 @@ },

});
return this.connDB.get(addressString) || parsed;
return this.conn.db().get(addressString) || parsed;
}

@@ -318,8 +314,8 @@ };

this.connHub.disconnect(addressString);
this.connStaging.unstage(addressString);
this.conn.hub().disconnect(addressString);
this.conn.staging().unstage(addressString);
const peer = this.connDB.get(addressString);
const peer = this.conn.db().get(addressString);
if (!peer) return;
this.connDB.delete(addressString);
this.conn.db().delete(addressString);
this.notify({type: 'remove', peer: peer});

@@ -336,3 +332,3 @@ };

);
this.connHub.reset();
this.conn.hub().reset();
};

@@ -339,0 +335,0 @@

@@ -28,4 +28,8 @@ import ConnDB = require('ssb-conn-db');

function onConnecting(ev: HubEvent) {
staging.unstage(ev.address);
db.update(ev.address, {stateChange: Date.now()});
const addr = ev.address;
const stagedData = staging.get(addr);
staging.unstage(addr);
db.update(addr, {stateChange: Date.now()});
const dbData = db.get(addr);
hub.update(addr, {...dbData, ...stagedData});
}

@@ -42,5 +46,9 @@

function onConnected(ev: HubEvent) {
staging.unstage(ev.address);
db.update(ev.address, {stateChange: Date.now(), failure: 0});
if (ev.details.isClient) setupPing(ev.address, ev.details.rpc);
const addr = ev.address;
const stagedData = staging.get(addr);
staging.unstage(addr);
db.update(addr, {stateChange: Date.now(), failure: 0});
const dbData = db.get(addr);
hub.update(addr, {...dbData, ...stagedData});
if (ev.details.isClient) setupPing(addr, ev.details.rpc);
}

@@ -47,0 +55,0 @@

@@ -20,2 +20,5 @@ const tape = require('tape');

t.ok(ssb.conn.db, 'ssb.conn.db');
t.ok(ssb.conn.hub, 'ssb.conn.hub');
t.ok(ssb.conn.staging, 'ssb.conn.staging');
t.ok(ssb.conn.query, 'ssb.conn.query');

@@ -22,0 +25,0 @@ t.ok(ssb.conn.start, 'ssb.conn.start');

@@ -19,3 +19,3 @@ const tape = require('tape');

const entries1 = Array.from(ssb.conn.internalConnStaging().entries());
const entries1 = Array.from(ssb.conn.staging().entries());
t.equals(entries1.length, 0, 'there is nothing in staging');

@@ -35,3 +35,3 @@

const entries1 = Array.from(ssb.conn.internalConnStaging().entries());
const entries1 = Array.from(ssb.conn.staging().entries());
t.equals(entries1.length, 1, 'there is one address in staging');

@@ -45,3 +45,3 @@ const [actualAddress] = entries1[0];

const entries2 = Array.from(ssb.conn.internalConnStaging().entries());
const entries2 = Array.from(ssb.conn.staging().entries());
t.equals(entries2.length, 0, 'there is nothing in staging');

@@ -61,3 +61,3 @@

const entries1 = Array.from(ssb.conn.internalConnStaging().entries());
const entries1 = Array.from(ssb.conn.staging().entries());
t.equals(entries1.length, 1, 'there is one address in staging');

@@ -71,3 +71,3 @@ const [actualAddress] = entries1[0];

const entries2 = Array.from(ssb.conn.internalConnStaging().entries());
const entries2 = Array.from(ssb.conn.staging().entries());
t.equals(entries2.length, 1, 'there is (still) one address in staging');

@@ -74,0 +74,0 @@

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc