tool-db 1.2.0 → 1.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/custom-test-env.js +18 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.js +21 -1
- package/dist/index.js.map +1 -1
- package/dist/libp2p/create.d.ts +2 -0
- package/dist/libp2p/create.js +131 -0
- package/dist/libp2p/create.js.map +1 -0
- package/dist/libp2p/createLibP2p.d.ts +3 -0
- package/dist/libp2p/createLibP2p.js +130 -0
- package/dist/libp2p/createLibP2p.js.map +1 -0
- package/dist/libp2p/tooldb-protocol.d.ts +19 -0
- package/dist/libp2p/tooldb-protocol.js +156 -0
- package/dist/libp2p/tooldb-protocol.js.map +1 -0
- package/dist/messageHandlers/handleCrdt copy.d.ts +2 -0
- package/dist/messageHandlers/handleCrdt copy.js +15 -0
- package/dist/messageHandlers/handleCrdt copy.js.map +1 -0
- package/dist/messageHandlers/handleCrdt.d.ts +2 -0
- package/dist/messageHandlers/handleCrdt.js +15 -0
- package/dist/messageHandlers/handleCrdt.js.map +1 -0
- package/dist/messageHandlers/handleCrdtGet copy.d.ts +2 -0
- package/dist/messageHandlers/handleCrdtGet copy.js +22 -0
- package/dist/messageHandlers/handleCrdtGet copy.js.map +1 -0
- package/dist/messageHandlers/handleCrdtGet.d.ts +2 -0
- package/dist/messageHandlers/handleCrdtGet.js +22 -0
- package/dist/messageHandlers/handleCrdtGet.js.map +1 -0
- package/dist/messageHandlers/handleCrdtPut copy.d.ts +2 -0
- package/dist/messageHandlers/handleCrdtPut copy.js +83 -0
- package/dist/messageHandlers/handleCrdtPut copy.js.map +1 -0
- package/dist/messageHandlers/handleCrdtPut.d.ts +2 -0
- package/dist/messageHandlers/handleCrdtPut.js +83 -0
- package/dist/messageHandlers/handleCrdtPut.js.map +1 -0
- package/dist/messageHandlers/handleGet copy.d.ts +2 -0
- package/dist/messageHandlers/handleGet copy.js +37 -0
- package/dist/messageHandlers/handleGet copy.js.map +1 -0
- package/dist/messageHandlers/handleGet.d.ts +2 -0
- package/dist/messageHandlers/handleGet.js +37 -0
- package/dist/messageHandlers/handleGet.js.map +1 -0
- package/dist/messageHandlers/handleGetServers.d.ts +2 -0
- package/dist/messageHandlers/handleGetServers.js +23 -0
- package/dist/messageHandlers/handleGetServers.js.map +1 -0
- package/dist/messageHandlers/handleJoin copy.d.ts +2 -0
- package/dist/messageHandlers/handleJoin copy.js +37 -0
- package/dist/messageHandlers/handleJoin copy.js.map +1 -0
- package/dist/messageHandlers/handleJoin.d.ts +2 -0
- package/dist/messageHandlers/handleJoin.js +36 -0
- package/dist/messageHandlers/handleJoin.js.map +1 -0
- package/dist/messageHandlers/handlePing copy.d.ts +2 -0
- package/dist/messageHandlers/handlePing copy.js +13 -0
- package/dist/messageHandlers/handlePing copy.js.map +1 -0
- package/dist/messageHandlers/handlePing.d.ts +2 -0
- package/dist/messageHandlers/handlePing.js +20 -0
- package/dist/messageHandlers/handlePing.js.map +1 -0
- package/dist/messageHandlers/handlePong.d.ts +2 -0
- package/dist/messageHandlers/handlePong.js +30 -0
- package/dist/messageHandlers/handlePong.js.map +1 -0
- package/dist/messageHandlers/handlePut.d.ts +2 -0
- package/dist/messageHandlers/handlePut.js +61 -0
- package/dist/messageHandlers/handlePut.js.map +1 -0
- package/dist/messageHandlers/handleQuery.d.ts +2 -0
- package/dist/messageHandlers/handleQuery.js +18 -0
- package/dist/messageHandlers/handleQuery.js.map +1 -0
- package/dist/messageHandlers/handleServers copy.d.ts +2 -0
- package/dist/messageHandlers/handleServers copy.js +23 -0
- package/dist/messageHandlers/handleServers copy.js.map +1 -0
- package/dist/messageHandlers/handleServers.d.ts +2 -0
- package/dist/messageHandlers/handleServers.js +23 -0
- package/dist/messageHandlers/handleServers.js.map +1 -0
- package/dist/messageHandlers/handleSubscribe.d.ts +2 -0
- package/dist/messageHandlers/handleSubscribe.js +62 -0
- package/dist/messageHandlers/handleSubscribe.js.map +1 -0
- package/dist/toolDbClientOnMessage.d.ts +2 -2
- package/dist/toolDbClientOnMessage.js +59 -253
- package/dist/toolDbClientOnMessage.js.map +1 -1
- package/dist/toolDbCrdtPut.js +1 -1
- package/dist/toolDbCrdtPut.js.map +1 -1
- package/dist/toolDbGet.js +1 -1
- package/dist/toolDbGet.js.map +1 -1
- package/dist/toolDbLibP2p.d.ts +34 -0
- package/dist/toolDbLibP2p.js +375 -0
- package/dist/toolDbLibP2p.js.map +1 -0
- package/dist/toolDbNetwork.d.ts +33 -0
- package/dist/toolDbNetwork.js +277 -0
- package/dist/toolDbNetwork.js.map +1 -0
- package/dist/toolDbPut.js +1 -1
- package/dist/toolDbPut.js.map +1 -1
- package/dist/toolDbQueryKeys.js +1 -1
- package/dist/toolDbQueryKeys.js.map +1 -1
- package/dist/toolDbSignUp.js +1 -1
- package/dist/toolDbSignUp.js.map +1 -1
- package/dist/toolDbSubscribe.js +1 -1
- package/dist/toolDbSubscribe.js.map +1 -1
- package/dist/toolDbVerificationWrapper.js +1 -1
- package/dist/toolDbVerificationWrapper.js.map +1 -1
- package/dist/tooldb.d.ts +26 -10
- package/dist/tooldb.js +63 -7
- package/dist/tooldb.js.map +1 -1
- package/dist/types/message.d.ts +11 -2
- package/dist/types/message.js.map +1 -1
- package/dist/types/tooldb.d.ts +34 -1
- package/dist/types/tooldb.js +19 -0
- package/dist/types/tooldb.js.map +1 -1
- package/dist/utils/indexedb.d.ts +2 -6
- package/dist/utils/indexedb.js +13 -3
- package/dist/utils/indexedb.js.map +1 -1
- package/dist/utils/leveldb.d.ts +2 -6
- package/dist/utils/leveldb.js +12 -2
- package/dist/utils/leveldb.js.map +1 -1
- package/dist/utils/verifyPeer.d.ts +2 -0
- package/dist/utils/verifyPeer.js +13 -0
- package/dist/utils/verifyPeer.js.map +1 -0
- package/dist/wss.d.ts +1 -1
- package/dist/wss.js +14 -11
- package/dist/wss.js.map +1 -1
- package/jest.config.ts +2 -1
- package/package.json +3 -2
- package/test-alice/000003.log +0 -0
- package/test-alice/CURRENT +1 -0
- package/test-alice/LOCK +0 -0
- package/test-alice/LOG +1 -0
- package/test-alice/MANIFEST-000002 +0 -0
- package/test-bob/000003.log +0 -0
- package/test-bob/CURRENT +1 -0
- package/test-bob/LOCK +0 -0
- package/test-bob/LOG +1 -0
- package/test-bob/MANIFEST-000002 +0 -0
- package/test-node-a/000003.log +0 -0
- package/test-node-a/CURRENT +1 -0
- package/test-node-a/LOCK +0 -0
- package/test-node-a/LOG +1 -0
- package/test-node-a/MANIFEST-000002 +0 -0
- package/test-node-b/000003.log +0 -0
- package/test-node-b/CURRENT +1 -0
- package/test-node-b/LOCK +0 -0
- package/test-node-b/LOG +1 -0
- package/test-node-b/MANIFEST-000002 +0 -0
- package/toolDbLibP2p.ts +206 -0
package/dist/types/message.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { Peer } from "./tooldb";
|
|
1
2
|
export declare enum VerifyResult {
|
|
2
3
|
CustomVerificationFailed = "CustomVerificationFailed",
|
|
3
4
|
InvalidData = "InvalidData",
|
|
@@ -18,12 +19,20 @@ export interface VerificationData<T = any> {
|
|
|
18
19
|
s: string;
|
|
19
20
|
v: T;
|
|
20
21
|
}
|
|
21
|
-
export declare type MessageType = "ping" | "pong" | "query" | "queryAck" | "subscribe" | "get" | "put" | "crdtPut" | "crdtGet" | "crdt";
|
|
22
|
+
export declare type MessageType = "ping" | "pong" | "query" | "queryAck" | "subscribe" | "get" | "put" | "crdtPut" | "crdtGet" | "crdt" | "join" | "servers";
|
|
22
23
|
export interface BaseMessage {
|
|
23
24
|
type: MessageType;
|
|
24
25
|
id: string;
|
|
25
26
|
to: string[];
|
|
26
27
|
}
|
|
28
|
+
export interface JoinMessage extends BaseMessage {
|
|
29
|
+
type: "join";
|
|
30
|
+
peer: Peer;
|
|
31
|
+
}
|
|
32
|
+
export interface ServersMessage extends BaseMessage {
|
|
33
|
+
type: "servers";
|
|
34
|
+
servers: Peer[];
|
|
35
|
+
}
|
|
27
36
|
export interface PingMessage extends BaseMessage {
|
|
28
37
|
type: "ping";
|
|
29
38
|
isServer: boolean;
|
|
@@ -65,4 +74,4 @@ export interface CrdtMessage extends BaseMessage {
|
|
|
65
74
|
key: string;
|
|
66
75
|
doc: string;
|
|
67
76
|
}
|
|
68
|
-
export declare type ToolDbMessage = PingMessage | PongMessage | QueryMessage | QueryAckMessage | SubscribeMessage | GetMessage | PutMessage | CrdtPutMessage | CrdtGetMessage | CrdtMessage;
|
|
77
|
+
export declare type ToolDbMessage = JoinMessage | ServersMessage | PingMessage | PongMessage | QueryMessage | QueryAckMessage | SubscribeMessage | GetMessage | PutMessage | CrdtPutMessage | CrdtGetMessage | CrdtMessage;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"message.js","sourceRoot":"","sources":["../../src/types/message.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"message.js","sourceRoot":"","sources":["../../src/types/message.ts"],"names":[],"mappings":";;;AAEA,IAAY,YAUX;AAVD,WAAY,YAAY;IACtB,qEAAqD,CAAA;IACrD,2CAA2B,CAAA;IAC3B,2DAA2C,CAAA;IAC3C,qDAAqC,CAAA;IACrC,iDAAiC,CAAA;IACjC,+CAA+B,CAAA;IAC/B,qDAAqC,CAAA;IACrC,qDAAqC,CAAA;IACrC,qCAAqB,CAAA;AACvB,CAAC,EAVW,YAAY,GAAZ,oBAAY,KAAZ,oBAAY,QAUvB"}
|
package/dist/types/tooldb.d.ts
CHANGED
|
@@ -1,16 +1,49 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
2
|
import { Server as HTTPServer } from "http";
|
|
3
3
|
import { Server as HTTPSServer } from "https";
|
|
4
|
+
import { ToolDb, ToolDbMessage } from "..";
|
|
5
|
+
export declare class ToolDbNetworkAdapter {
|
|
6
|
+
constructor(db: ToolDb);
|
|
7
|
+
close(clientId: string): void;
|
|
8
|
+
sendToAll(msg: ToolDbMessage, crossServerOnly?: boolean, isRelay?: boolean): void;
|
|
9
|
+
sendToClientId(clientId: string, msg: ToolDbMessage): void;
|
|
10
|
+
}
|
|
11
|
+
export interface Peer {
|
|
12
|
+
topic: string;
|
|
13
|
+
timestamp: number;
|
|
14
|
+
host: string;
|
|
15
|
+
port: number;
|
|
16
|
+
pubkey: string;
|
|
17
|
+
sig: string;
|
|
18
|
+
}
|
|
19
|
+
export interface ToolDbStore {
|
|
20
|
+
start: () => void;
|
|
21
|
+
put: (key: string, data: string, callback: (err: any | null, data?: string) => void) => void;
|
|
22
|
+
get: (key: string, callback: (err: any | null, data?: string) => void) => void;
|
|
23
|
+
query: (key: string) => Promise<string[]>;
|
|
24
|
+
}
|
|
25
|
+
export declare type ToolDbStorageAdapter = (dbName?: string) => ToolDbStore;
|
|
26
|
+
export declare type ToolDbMessageHandler = (this: ToolDb, message: ToolDbMessage, remotePeerId: string) => void;
|
|
4
27
|
export interface ToolDbOptions {
|
|
5
28
|
db: string;
|
|
6
29
|
debug: boolean;
|
|
7
|
-
peers:
|
|
30
|
+
peers: {
|
|
31
|
+
host: string;
|
|
32
|
+
port: number;
|
|
33
|
+
}[];
|
|
8
34
|
maxRetries: number;
|
|
9
35
|
triggerDebouce: number;
|
|
10
36
|
wait: number;
|
|
11
37
|
pow: number;
|
|
12
38
|
server: boolean;
|
|
13
39
|
httpServer: HTTPServer | HTTPSServer | undefined;
|
|
40
|
+
host: string;
|
|
14
41
|
port: number;
|
|
42
|
+
storageName: string;
|
|
43
|
+
networkAdapter: typeof ToolDbNetworkAdapter;
|
|
44
|
+
storageAdapter: ToolDbStorageAdapter;
|
|
15
45
|
id: string;
|
|
46
|
+
topic: string;
|
|
47
|
+
publicKey: CryptoKey | undefined;
|
|
48
|
+
privateKey: CryptoKey | undefined;
|
|
16
49
|
}
|
package/dist/types/tooldb.js
CHANGED
|
@@ -1,3 +1,22 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ToolDbNetworkAdapter = void 0;
|
|
4
|
+
var ToolDbNetworkAdapter = /** @class */ (function () {
|
|
5
|
+
function ToolDbNetworkAdapter(db) {
|
|
6
|
+
//
|
|
7
|
+
}
|
|
8
|
+
ToolDbNetworkAdapter.prototype.close = function (clientId) {
|
|
9
|
+
//
|
|
10
|
+
};
|
|
11
|
+
ToolDbNetworkAdapter.prototype.sendToAll = function (msg, crossServerOnly, isRelay) {
|
|
12
|
+
if (crossServerOnly === void 0) { crossServerOnly = false; }
|
|
13
|
+
if (isRelay === void 0) { isRelay = false; }
|
|
14
|
+
//
|
|
15
|
+
};
|
|
16
|
+
ToolDbNetworkAdapter.prototype.sendToClientId = function (clientId, msg) {
|
|
17
|
+
//
|
|
18
|
+
};
|
|
19
|
+
return ToolDbNetworkAdapter;
|
|
20
|
+
}());
|
|
21
|
+
exports.ToolDbNetworkAdapter = ToolDbNetworkAdapter;
|
|
3
22
|
//# sourceMappingURL=tooldb.js.map
|
package/dist/types/tooldb.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tooldb.js","sourceRoot":"","sources":["../../src/types/tooldb.ts"],"names":[],"mappings":""}
|
|
1
|
+
{"version":3,"file":"tooldb.js","sourceRoot":"","sources":["../../src/types/tooldb.ts"],"names":[],"mappings":";;;AAIA;IACE,8BAAY,EAAU;QACpB,EAAE;IACJ,CAAC;IAEM,oCAAK,GAAZ,UAAa,QAAgB;QAC3B,EAAE;IACJ,CAAC;IAEM,wCAAS,GAAhB,UACE,GAAkB,EAClB,eAAuB,EACvB,OAAe;QADf,gCAAA,EAAA,uBAAuB;QACvB,wBAAA,EAAA,eAAe;QAEf,EAAE;IACJ,CAAC;IAEM,6CAAc,GAArB,UAAsB,QAAgB,EAAE,GAAkB;QACxD,EAAE;IACJ,CAAC;IACH,2BAAC;AAAD,CAAC,AApBD,IAoBC;AApBY,oDAAoB"}
|
package/dist/utils/indexedb.d.ts
CHANGED
|
@@ -1,6 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
put: (key: string, data: any, cb: (err: any | null, data?: any) => void) => void;
|
|
4
|
-
get: (key: string, cb: (err: any | null, data?: any) => void) => void;
|
|
5
|
-
query: (key: string) => Promise<string[]>;
|
|
6
|
-
};
|
|
1
|
+
import { ToolDbStore } from "../types/tooldb";
|
|
2
|
+
export default function indexedb(dbName?: string): ToolDbStore;
|
package/dist/utils/indexedb.js
CHANGED
|
@@ -1,10 +1,20 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
// @ts-nocheck
|
|
3
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
3
|
function indexedb(dbName) {
|
|
5
4
|
if (dbName === void 0) { dbName = "tooldb"; }
|
|
6
5
|
var db = null;
|
|
7
|
-
var store = {
|
|
6
|
+
var store = {
|
|
7
|
+
start: function () {
|
|
8
|
+
//
|
|
9
|
+
},
|
|
10
|
+
put: function (key, data, callback) {
|
|
11
|
+
//
|
|
12
|
+
},
|
|
13
|
+
get: function (key, callback) {
|
|
14
|
+
//
|
|
15
|
+
},
|
|
16
|
+
query: function (key) { return Promise.resolve([]); },
|
|
17
|
+
};
|
|
8
18
|
store.start = function () {
|
|
9
19
|
// console.warn("store start");
|
|
10
20
|
var open = indexedDB.open(dbName, 1);
|
|
@@ -72,7 +82,7 @@ function indexedb(dbName) {
|
|
|
72
82
|
cb(eve || 5);
|
|
73
83
|
};
|
|
74
84
|
};
|
|
75
|
-
store.query = function (key
|
|
85
|
+
store.query = function (key) {
|
|
76
86
|
return new Promise(function (resolve, reject) {
|
|
77
87
|
try {
|
|
78
88
|
var keyRange = IDBKeyRange.bound(key, key + "|", true, true);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"indexedb.js","sourceRoot":"","sources":["../../src/utils/indexedb.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"indexedb.js","sourceRoot":"","sources":["../../src/utils/indexedb.ts"],"names":[],"mappings":"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"}
|
package/dist/utils/leveldb.d.ts
CHANGED
|
@@ -1,6 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
put: (key: string, data: any, cb: (err: any | null, data?: any) => void) => void;
|
|
4
|
-
get: (key: string, cb: (err: any | null, data?: any) => void) => void;
|
|
5
|
-
query: (key: string) => Promise<string[]>;
|
|
6
|
-
};
|
|
1
|
+
import { ToolDbStore } from "../types/tooldb";
|
|
2
|
+
export default function leveldb(dbName?: string): ToolDbStore;
|
package/dist/utils/leveldb.js
CHANGED
|
@@ -1,11 +1,21 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
// @ts-nocheck
|
|
4
3
|
function leveldb(dbName) {
|
|
5
4
|
if (dbName === void 0) { dbName = "tooldb"; }
|
|
6
5
|
var level = require("level");
|
|
7
6
|
var db = null;
|
|
8
|
-
var store = {
|
|
7
|
+
var store = {
|
|
8
|
+
start: function () {
|
|
9
|
+
//
|
|
10
|
+
},
|
|
11
|
+
put: function (key, data, callback) {
|
|
12
|
+
//
|
|
13
|
+
},
|
|
14
|
+
get: function (key, callback) {
|
|
15
|
+
//
|
|
16
|
+
},
|
|
17
|
+
query: function (key) { return Promise.resolve([]); },
|
|
18
|
+
};
|
|
9
19
|
store.start = function () {
|
|
10
20
|
db = level(dbName);
|
|
11
21
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"leveldb.js","sourceRoot":"","sources":["../../src/utils/leveldb.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"leveldb.js","sourceRoot":"","sources":["../../src/utils/leveldb.ts"],"names":[],"mappings":";;AAEA,SAAwB,OAAO,CAAC,MAAiB;IAAjB,uBAAA,EAAA,iBAAiB;IAC/C,IAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC/B,IAAI,EAAE,GAAQ,IAAI,CAAC;IAEnB,IAAM,KAAK,GAAG;QACZ,KAAK,EAAE;YACL,EAAE;QACJ,CAAC;QACD,GAAG,EAAE,UACH,GAAW,EACX,IAAY,EACZ,QAAkD;YAElD,EAAE;QACJ,CAAC;QACD,GAAG,EAAE,UAAC,GAAW,EAAE,QAAkD;YACnE,EAAE;QACJ,CAAC;QACD,KAAK,EAAE,UAAC,GAAW,IAAK,OAAA,OAAO,CAAC,OAAO,CAAW,EAAE,CAAC,EAA7B,CAA6B;KACtD,CAAC;IAEF,KAAK,CAAC,KAAK,GAAG;QACZ,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;IACrB,CAAC,CAAC;IACF,KAAK,CAAC,KAAK,EAAE,CAAC;IAEd,KAAK,CAAC,GAAG,GAAG,UAAU,GAAG,EAAE,IAAI,EAAE,EAAE;QACjC,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,EAAE,UAAU,GAAQ;YAClC,IAAI,GAAG,EAAE;gBACP,IAAI,EAAE;oBAAE,EAAE,CAAC,GAAG,CAAC,CAAC;aACjB;iBAAM;gBACL,IAAI,EAAE;oBAAE,EAAE,CAAC,KAAK,CAAC,CAAC;aACnB;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC;IAEF,KAAK,CAAC,GAAG,GAAG,UAAU,GAAG,EAAE,EAAE;QAC3B,kCAAkC;QAClC,IAAI,CAAC,EAAE,EAAE;YACP,UAAU,CAAC;gBACT,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;YACrB,CAAC,EAAE,CAAC,CAAC,CAAC;YACN,OAAO;SACR;QACD,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,UAAU,GAAQ,EAAE,KAAU;YACxC,IAAI,GAAG,EAAE;gBACP,IAAI,EAAE;oBAAE,EAAE,CAAC,GAAG,CAAC,CAAC;aACjB;iBAAM;gBACL,IAAI,EAAE;oBAAE,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;aAC1B;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC;IAEF,KAAK,CAAC,KAAK,GAAG,UAAU,GAAG;QACzB,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QAC1B,OAAO,IAAI,OAAO,CAAC,UAAC,OAAO,EAAE,MAAM;YACjC,IAAI;gBACF,IAAM,OAAK,GAAa,EAAE,CAAC;gBAC3B,EAAE,CAAC,eAAe,CAAC;oBACjB,GAAG,EAAE,GAAG;oBACR,GAAG,EAAE,GAAG,GAAG,QAAQ;iBACpB,CAAC;qBACC,EAAE,CAAC,MAAM,EAAE,UAAU,IAAY;oBAChC,8BAA8B;oBAC9B,OAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBACjB,IAAI;gBACN,CAAC,CAAC;qBACD,EAAE,CAAC,OAAO,EAAE,UAAU,GAAQ;oBAC7B,MAAM,CAAC,GAAG,CAAC,CAAC;gBACd,CAAC,CAAC;qBACD,EAAE,CAAC,OAAO,EAAE;oBACX,OAAO,CAAC,OAAK,CAAC,CAAC;gBACjB,CAAC,CAAC,CAAC;aACN;YAAC,OAAO,KAAK,EAAE;gBACd,MAAM,CAAC,KAAK,CAAC,CAAC;aACf;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC;IAEF,OAAO,KAAK,CAAC;AACf,CAAC;AAhFD,0BAgFC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
var __1 = require("..");
|
|
4
|
+
function verifyPeer(peer) {
|
|
5
|
+
// Import the public key string
|
|
6
|
+
return (0, __1.importKey)((0, __1.decodeKeyString)(peer.pubkey), "spki", "ECDSA", [
|
|
7
|
+
"verify",
|
|
8
|
+
]).then(function (pubKey) {
|
|
9
|
+
return (0, __1.verifyData)((0, __1.sha1)(peer.topic + "-" + peer.timestamp + "-" + peer.host + ":" + peer.port), (0, __1.fromBase64)(peer.sig), pubKey);
|
|
10
|
+
});
|
|
11
|
+
}
|
|
12
|
+
exports.default = verifyPeer;
|
|
13
|
+
//# sourceMappingURL=verifyPeer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"verifyPeer.js","sourceRoot":"","sources":["../../src/utils/verifyPeer.ts"],"names":[],"mappings":";;AAAA,wBAA8E;AAG9E,SAAwB,UAAU,CAAC,IAAU;IAC3C,+BAA+B;IAC/B,OAAO,IAAA,aAAS,EAAC,IAAA,mBAAe,EAAC,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE;QAC9D,QAAQ;KACT,CAAC,CAAC,IAAI,CAAC,UAAC,MAAM;QACb,OAAA,IAAA,cAAU,EACR,IAAA,QAAI,EAAI,IAAI,CAAC,KAAK,SAAI,IAAI,CAAC,SAAS,SAAI,IAAI,CAAC,IAAI,SAAI,IAAI,CAAC,IAAM,CAAC,EACjE,IAAA,cAAU,EAAC,IAAI,CAAC,GAAG,CAAC,EACpB,MAAM,CACP;IAJD,CAIC,CACF,CAAC;AACJ,CAAC;AAXD,6BAWC"}
|
package/dist/wss.d.ts
CHANGED
|
@@ -27,7 +27,7 @@ export default class WSS {
|
|
|
27
27
|
*/
|
|
28
28
|
open: (url: string) => ToolDbWebSocket | undefined;
|
|
29
29
|
close(clientId: string): void;
|
|
30
|
-
send(msg: ToolDbMessage,
|
|
30
|
+
send(msg: ToolDbMessage, crossServerOnly?: boolean): void;
|
|
31
31
|
sendToClientId(clientId: string, msg: ToolDbMessage): void;
|
|
32
32
|
private reconnect;
|
|
33
33
|
get tooldb(): ToolDb;
|
package/dist/wss.js
CHANGED
|
@@ -91,7 +91,7 @@ var WSS = /** @class */ (function () {
|
|
|
91
91
|
if (!msg) {
|
|
92
92
|
return;
|
|
93
93
|
}
|
|
94
|
-
_this.tooldb.clientOnMessage(msg.data.toString(), wss_1);
|
|
94
|
+
_this.tooldb.clientOnMessage(msg.data.toString(), wss_1.tooldb || "");
|
|
95
95
|
};
|
|
96
96
|
return wss_1;
|
|
97
97
|
}
|
|
@@ -158,7 +158,7 @@ var WSS = /** @class */ (function () {
|
|
|
158
158
|
}
|
|
159
159
|
});
|
|
160
160
|
socket.on("message", function (message) {
|
|
161
|
-
_this.tooldb.clientOnMessage(message, socket);
|
|
161
|
+
_this.tooldb.clientOnMessage(message, socket.toolDbId || "");
|
|
162
162
|
});
|
|
163
163
|
});
|
|
164
164
|
}
|
|
@@ -198,24 +198,27 @@ var WSS = /** @class */ (function () {
|
|
|
198
198
|
delete this._clientSockets[clientId];
|
|
199
199
|
}
|
|
200
200
|
};
|
|
201
|
-
WSS.prototype.send = function (msg,
|
|
201
|
+
WSS.prototype.send = function (msg, crossServerOnly) {
|
|
202
202
|
var _this = this;
|
|
203
|
-
if (
|
|
203
|
+
if (crossServerOnly === void 0) { crossServerOnly = false; }
|
|
204
204
|
var to = lodash_1.default.uniq(__spreadArray(__spreadArray([], msg.to, true), [this.options.id], false));
|
|
205
|
-
var filteredConns =
|
|
206
|
-
.filter(function (
|
|
205
|
+
var filteredConns = Object.keys(this.clientSockets)
|
|
206
|
+
.filter(function (id) { return !to.includes(id); })
|
|
207
207
|
.map(function (clientId) { return _this._clientSockets[clientId]; })
|
|
208
208
|
.filter(function (conn) { return conn && conn.readyState === conn.OPEN; });
|
|
209
|
+
// console.log(">> Send message: ", msg, "to: ", to);
|
|
209
210
|
// console.log(
|
|
210
|
-
// "
|
|
211
|
-
// filteredConns.map((c) => c.
|
|
212
|
-
// "but not to",
|
|
213
|
-
// filterUrls
|
|
211
|
+
// "filteredConns ",
|
|
212
|
+
// filteredConns.map((c) => c.toolDbId)
|
|
214
213
|
// );
|
|
215
214
|
filteredConns.forEach(function (conn) {
|
|
216
|
-
if ((
|
|
215
|
+
if ((crossServerOnly && conn.isServer) || !crossServerOnly) {
|
|
216
|
+
// console.log("Sent out to: ", conn.toolDbId, conn.origUrl);
|
|
217
217
|
conn.send(JSON.stringify(__assign(__assign({}, msg), { to: to })));
|
|
218
218
|
}
|
|
219
|
+
else {
|
|
220
|
+
// console.log("Fitlered out!", conn.toolDbId, conn.origUrl);
|
|
221
|
+
}
|
|
219
222
|
});
|
|
220
223
|
};
|
|
221
224
|
WSS.prototype.sendToClientId = function (clientId, msg) {
|
package/dist/wss.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wss.js","sourceRoot":"","sources":["../src/wss.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"wss.js","sourceRoot":"","sources":["../src/wss.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA,kDAAuB;AACvB,0CAA2B;AAC3B,sBAAyE;AAUzE;IAwCE,aAAY,EAAU;QAAtB,iBAuCC;QA9ED,oCAAoC;QAC5B,QAAG,GACT,OAAO,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAE,MAA0B,CAAC;QAElE,SAAI,GAAG,IAAI,CAAC,GAAG;YACrB,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,IAAI,IAAI,CAAC,GAAG,CAAC,eAAe,IAAI,IAAI,CAAC,GAAG,CAAC,YAAY;YACzE,CAAC,CAAC,YAAS,CAAC;QAIN,WAAM,GAA4B,IAAI,CAAC;QAIvC,iBAAY,GAOhB,EAAE,CAAC;QAMC,iBAAY,GAAa,EAAE,CAAC;QAM7B,mBAAc,GAAoC,EAAE,CAAC;QAmD5D;;;;WAIG;QACI,SAAI,GAAG,UAAC,GAAW;YACxB,IAAI;gBACF,IAAM,KAAK,GAAG,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;gBACzC,IAAM,KAAG,GAAG,IAAI,KAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBACjC,IAAI,CAAC,KAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE;oBAC3B,KAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,KAAG,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;iBAC/D;gBAED,KAAG,CAAC,OAAO,GAAG,GAAG,CAAC;gBAElB,KAAG,CAAC,OAAO,GAAG,UAAC,MAAW;oBACxB,IAAI,KAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;wBACnC,KAAI,CAAC,YAAY,CAAC,MAAM,CAAC,KAAI,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;qBAC7D;oBACD,IAAI,KAAI,CAAC,OAAO,CAAC,KAAK,EAAE;wBACtB,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;qBAC3B;oBACD,KAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;gBACtB,CAAC,CAAC;gBAEF,KAAG,CAAC,OAAO,GAAG,UAAC,MAAW;;oBACxB,IAAI,KAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;wBACnC,KAAI,CAAC,YAAY,CAAC,MAAM,CAAC,KAAI,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;qBAC7D;oBACD,IAAI,KAAI,CAAC,OAAO,CAAC,KAAK,EAAE;wBACtB,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;qBAC3B;oBACD,IAAI,CAAA,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,KAAK,0CAAE,IAAI,MAAK,WAAW,EAAE;wBACvC,KAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;qBACrB;gBACH,CAAC,CAAC;gBAEF,KAAG,CAAC,MAAM,GAAG;oBACX,IAAI,CAAC,KAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;wBACpC,KAAI,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;qBAC7B;oBACD,OAAO,CAAC,IAAI,CAAC,eAAe,GAAG,GAAG,GAAG,eAAe,CAAC,CAAC;oBAEtD,KAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,IAAI,GAAG,KAAG,CAAC;oBAElC,UAAU;oBACV,KAAG,CAAC,IAAI,CACN,IAAI,CAAC,SAAS,CAAC;wBACb,IAAI,EAAE,MAAM;wBACZ,QAAQ,EAAE,KAAI,CAAC,OAAO,CAAC,EAAE;wBACzB,EAAE,EAAE,CAAC,KAAI,CAAC,OAAO,CAAC,EAAE,CAAC;wBACrB,QAAQ,EAAE,KAAI,CAAC,OAAO,CAAC,MAAM;wBAC7B,EAAE,EAAE,IAAA,aAAU,EAAC,EAAE,CAAC;qBACJ,CAAC,CAClB,CAAC;gBACJ,CAAC,CAAC;gBAEF,KAAG,CAAC,SAAS,GAAG,UAAC,GAA2B;oBAC1C,IAAI,CAAC,GAAG,EAAE;wBACR,OAAO;qBACR;oBACD,KAAI,CAAC,MAAM,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,KAAG,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;gBACrE,CAAC,CAAC;gBAEF,OAAO,KAAG,CAAC;aACZ;YAAC,OAAO,CAAC,EAAE;gBACV,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;aACjB;YACD,OAAO,SAAS,CAAC;QACnB,CAAC,CAAC;QA+CM,cAAS,GAAG,UAAC,GAAW;YAC9B,IAAM,IAAI,GAAG,KAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;YACpC,IAAI,IAAI,EAAE;gBACR,IAAI,IAAI,CAAC,KAAK,EAAE;oBACd,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;iBAC1B;gBAED,IAAI,IAAI,CAAC,KAAK,GAAG,KAAI,CAAC,OAAO,CAAC,UAAU,EAAE;oBACxC,IAAM,KAAK,GAAG;wBACZ,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC;wBAChB,OAAO,CAAC,IAAI,CAAC,gBAAgB,GAAG,GAAG,GAAG,SAAS,CAAC,CAAC;wBACjD,KAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;oBACjB,CAAC,CAAC;oBAEF,IAAI,CAAC,KAAK,GAAG,UAAU,CAAC,KAAK,EAAE,KAAI,CAAC,OAAO,CAAC,IAAI,CAAQ,CAAC;iBAC1D;qBAAM;oBACL,OAAO,CAAC,IAAI,CAAC,yBAAyB,GAAG,GAAG,GAAG,YAAY,CAAC,CAAC;oBAC7D,IAAI,KAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;wBACnC,KAAI,CAAC,YAAY,CAAC,MAAM,CAAC,KAAI,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;qBAC7D;oBACD,OAAO,KAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;oBAE9B,sCAAsC;oBACtC,IAAI,MAAM,CAAC,IAAI,CAAC,KAAI,CAAC,YAAY,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE;wBAC/C,KAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC;qBAC7B;iBACF;aACF;iBAAM;gBACL,kBAAkB;aACnB;QACH,CAAC,CAAC;QA9LA,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;QAClB,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC,OAAO,CAAC;QAE1B,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,UAAC,GAAG;YAC7B,IAAM,SAAS,GAAG,KAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACjC,IAAI,SAAS,EAAE;gBACb,KAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;aACrE;QACH,CAAC,CAAC,CAAC;QAEH,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;YACvB,IAAI,CAAC,MAAM,GAAG,IAAI,YAAS,CAAC,MAAM,CAAC;gBACjC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI;gBACvB,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,UAAU;aAChC,CAAC,CAAC;YAEH,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,YAAY,EAAE,UAAC,MAAuB;gBACnD,0CAA0C;gBAE1C,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE;oBACjB,6CAA6C;oBAC7C,IAAI,MAAM,CAAC,QAAQ,EAAE;wBACnB,OAAO,KAAI,CAAC,cAAc,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;qBAC7C;gBACH,CAAC,CAAC,CAAC;gBAEH,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE;oBACjB,8CAA8C;oBAC9C,IAAI,MAAM,CAAC,QAAQ,EAAE;wBACnB,OAAO,KAAI,CAAC,cAAc,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;qBAC7C;gBACH,CAAC,CAAC,CAAC;gBAEH,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,UAAC,OAAe;oBACnC,KAAI,CAAC,MAAM,CAAC,eAAe,CAAC,OAAO,EAAE,MAAM,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC;gBAC9D,CAAC,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;SACJ;IACH,CAAC;IAvDD,sBAAI,yBAAQ;aAAZ;YACE,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,eAAY,CAAC,CAAC;QAC1D,CAAC;;;OAAA;IAID,sBAAI,4BAAW;aAAf;YACE,OAAO,IAAI,CAAC,YAAY,CAAC;QAC3B,CAAC;;;OAAA;IAID,sBAAI,8BAAa;aAAjB;YACE,OAAO,IAAI,CAAC,cAAc,CAAC;QAC7B,CAAC;;;OAAA;IA2CM,uBAAS,GAAhB,UAAiB,GAAW;QAC1B,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACjB,CAAC;IAyEM,mBAAK,GAAZ,UAAa,QAAgB;QAC3B,IAAM,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;QAC3C,IAAI,IAAI,EAAE;YACR,IAAI,IAAI,CAAC,OAAO,EAAE;gBAChB,IAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBAC7C,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC;aACtC;YACD,IAAI,CAAC,KAAK,EAAE,CAAC;YACb,OAAO,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;SACtC;IACH,CAAC;IAEM,kBAAI,GAAX,UAAY,GAAkB,EAAE,eAAuB;QAAvD,iBAuBC;QAvB+B,gCAAA,EAAA,uBAAuB;QACrD,IAAM,EAAE,GAAG,gBAAC,CAAC,IAAI,iCAAK,GAAG,CAAC,EAAE,UAAE,IAAI,CAAC,OAAO,CAAC,EAAE,UAAE,CAAC;QAEhD,IAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC;aAClD,MAAM,CAAC,UAAC,EAAE,IAAK,OAAA,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAhB,CAAgB,CAAC;aAChC,GAAG,CAAC,UAAC,QAAQ,IAAK,OAAA,KAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,EAA7B,CAA6B,CAAC;aAChD,MAAM,CAAC,UAAC,IAAI,IAAK,OAAA,IAAI,IAAI,IAAI,CAAC,UAAU,KAAK,IAAI,CAAC,IAAI,EAArC,CAAqC,CAAC,CAAC;QAE3D,qDAAqD;QAErD,eAAe;QACf,sBAAsB;QACtB,yCAAyC;QACzC,KAAK;QAEL,aAAa,CAAC,OAAO,CAAC,UAAC,IAAI;YACzB,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,eAAe,EAAE;gBAC1D,6DAA6D;gBAC7D,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,uBAAM,GAAG,KAAE,EAAE,IAAA,IAAG,CAAC,CAAC;aAC3C;iBAAM;gBACL,6DAA6D;aAC9D;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAEM,4BAAc,GAArB,UAAsB,QAAgB,EAAE,GAAkB;QACxD,IAAM,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;QAC7C,IAAI,MAAM,EAAE;YACV,IAAM,EAAE,GAAG,gBAAC,CAAC,IAAI,iCAAK,GAAG,CAAC,EAAE,UAAE,IAAI,CAAC,OAAO,CAAC,EAAE,UAAE,CAAC;YAChD,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,uBAAM,GAAG,KAAE,EAAE,IAAA,IAAG,CAAC,CAAC;SAC7C;IACH,CAAC;IAkCD,sBAAI,uBAAM;aAAV;YACE,OAAO,IAAI,CAAC,OAAO,CAAC;QACtB,CAAC;;;OAAA;IACH,UAAC;AAAD,CAAC,AA5OD,IA4OC"}
|
package/jest.config.ts
CHANGED
|
@@ -137,7 +137,8 @@ export default {
|
|
|
137
137
|
// snapshotSerializers: [],
|
|
138
138
|
|
|
139
139
|
// The test environment that will be used for testing
|
|
140
|
-
testEnvironment: "jsdom",
|
|
140
|
+
// testEnvironment: "jsdom",
|
|
141
|
+
testEnvironment: "./custom-test-env.js",
|
|
141
142
|
|
|
142
143
|
// Options that will be passed to the testEnvironment
|
|
143
144
|
// testEnvironmentOptions: {},
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "tool-db",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.3.0",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "A decentralized database model for federated p2p networks.",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -34,7 +34,6 @@
|
|
|
34
34
|
"@types/node": "^15.0.1",
|
|
35
35
|
"@types/ws": "^7.4.7",
|
|
36
36
|
"@typescript-eslint/eslint-plugin": "^4.29.1",
|
|
37
|
-
"npm-watch": "^0.11.0",
|
|
38
37
|
"eslint": "^7.32.0",
|
|
39
38
|
"eslint-config-airbnb": "^18.2.1",
|
|
40
39
|
"eslint-config-prettier": "^8.3.0",
|
|
@@ -42,7 +41,9 @@
|
|
|
42
41
|
"eslint-plugin-jest": "^24.3.6",
|
|
43
42
|
"eslint-plugin-prettier": "^3.4.0",
|
|
44
43
|
"jest": "^27.0.6",
|
|
44
|
+
"jest-environment-jsdom": "^27.4.6",
|
|
45
45
|
"np": "^7.5.0",
|
|
46
|
+
"npm-watch": "^0.11.0",
|
|
46
47
|
"prettier": "^2.3.2",
|
|
47
48
|
"ts-node": "^10.2.0",
|
|
48
49
|
"typescript": "^4.1.2",
|
|
File without changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
MANIFEST-000002
|
package/test-alice/LOCK
ADDED
|
File without changes
|
package/test-alice/LOG
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
2022/01/08-15:31:16.982 9398 Delete type=3 #1
|
|
Binary file
|
|
File without changes
|
package/test-bob/CURRENT
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
MANIFEST-000002
|
package/test-bob/LOCK
ADDED
|
File without changes
|
package/test-bob/LOG
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
2022/01/08-15:31:16.989 5fac Delete type=3 #1
|
|
Binary file
|
|
File without changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
MANIFEST-000002
|
package/test-node-a/LOCK
ADDED
|
File without changes
|
package/test-node-a/LOG
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
2022/01/08-15:31:16.989 4470 Delete type=3 #1
|
|
Binary file
|
|
File without changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
MANIFEST-000002
|
package/test-node-b/LOCK
ADDED
|
File without changes
|
package/test-node-b/LOG
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
2022/01/08-15:31:16.993 7570 Delete type=3 #1
|
|
Binary file
|
package/toolDbLibP2p.ts
ADDED
|
@@ -0,0 +1,206 @@
|
|
|
1
|
+
import _ from "lodash";
|
|
2
|
+
import Libp2p from "libp2p";
|
|
3
|
+
import Websockets from "libp2p-websockets";
|
|
4
|
+
import WebRTCStar from "libp2p-webrtc-star";
|
|
5
|
+
import { NOISE } from "@chainsafe/libp2p-noise";
|
|
6
|
+
import Mplex from "libp2p-mplex";
|
|
7
|
+
|
|
8
|
+
import { MuxedStream } from "libp2p-interfaces/dist/src/stream-muxer/types";
|
|
9
|
+
|
|
10
|
+
import pipe from "it-pipe";
|
|
11
|
+
|
|
12
|
+
import { PingMessage, textRandom, ToolDb, ToolDbMessage } from ".";
|
|
13
|
+
|
|
14
|
+
import { ToolDbOptions } from "./types/tooldb";
|
|
15
|
+
|
|
16
|
+
export const PROTOCOL_VER = `/tooldb/1.2.0`;
|
|
17
|
+
|
|
18
|
+
export default class toolDbLibP2p {
|
|
19
|
+
private options: ToolDbOptions;
|
|
20
|
+
|
|
21
|
+
private _tooldb: ToolDb;
|
|
22
|
+
|
|
23
|
+
private _libp2p: Libp2p | undefined;
|
|
24
|
+
|
|
25
|
+
public _clientSockets: Record<string, MuxedStream> = {};
|
|
26
|
+
|
|
27
|
+
get clientSockets() {
|
|
28
|
+
return this._clientSockets;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
get libp2p() {
|
|
32
|
+
return this._libp2p;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
private async createLibP2p() {
|
|
36
|
+
const options = {
|
|
37
|
+
addresses: {
|
|
38
|
+
listen: [
|
|
39
|
+
"/dns4/wrtc-star1.par.dwebops.pub/tcp/443/wss/p2p-webrtc-star",
|
|
40
|
+
"/dns4/wrtc-star2.sjc.dwebops.pub/tcp/443/wss/p2p-webrtc-star",
|
|
41
|
+
],
|
|
42
|
+
},
|
|
43
|
+
modules: {
|
|
44
|
+
transport: [Websockets, WebRTCStar],
|
|
45
|
+
connEncryption: [NOISE],
|
|
46
|
+
streamMuxer: [Mplex],
|
|
47
|
+
},
|
|
48
|
+
};
|
|
49
|
+
|
|
50
|
+
const node = await Libp2p.create(options);
|
|
51
|
+
this._libp2p = node;
|
|
52
|
+
(window as any).libp2p = node;
|
|
53
|
+
this._tooldb.options.id = node.peerId.toB58String();
|
|
54
|
+
|
|
55
|
+
// Listen for new peers
|
|
56
|
+
// node.on("peer:discovery", (peerId) => {
|
|
57
|
+
// console.log(`Found peer ${peerId.toB58String()}`);
|
|
58
|
+
// });
|
|
59
|
+
|
|
60
|
+
// Listen for new connections to peers
|
|
61
|
+
node.connectionManager.on("peer:connect", (connection: any) => {
|
|
62
|
+
// Send message to other peers (connected) using the protocol
|
|
63
|
+
node.peerStore.peers.forEach(async (peer: any) => {
|
|
64
|
+
const connection = node.connectionManager.get(peer.id);
|
|
65
|
+
if (!connection) return;
|
|
66
|
+
if (!peer.protocols.includes(PROTOCOL_VER)) {
|
|
67
|
+
// Close connections without our protocol
|
|
68
|
+
connection.close();
|
|
69
|
+
return;
|
|
70
|
+
}
|
|
71
|
+
const pid = peer.id.toB58String();
|
|
72
|
+
|
|
73
|
+
if (!this.clientSockets[pid]) {
|
|
74
|
+
console.warn(`Protocol found ${PROTOCOL_VER}`);
|
|
75
|
+
try {
|
|
76
|
+
const { stream } = await connection.newStream([PROTOCOL_VER]);
|
|
77
|
+
this.clientSockets[pid] = stream;
|
|
78
|
+
await this.sendToClientId(pid, {
|
|
79
|
+
type: "ping",
|
|
80
|
+
clientId: this.options.id,
|
|
81
|
+
to: [this.options.id],
|
|
82
|
+
isServer: this.options.server,
|
|
83
|
+
id: textRandom(10),
|
|
84
|
+
} as PingMessage);
|
|
85
|
+
} catch (err) {
|
|
86
|
+
console.info("Could not handshake protocol with peer", err);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
});
|
|
90
|
+
});
|
|
91
|
+
|
|
92
|
+
// Listen for peers disconnecting
|
|
93
|
+
node.connectionManager.on("peer:disconnect", (connection: any) => {
|
|
94
|
+
const pid = connection.remotePeer.toB58String();
|
|
95
|
+
delete this.clientSockets[pid];
|
|
96
|
+
});
|
|
97
|
+
|
|
98
|
+
node.handle(PROTOCOL_VER, (args: any) => this.toolDbProtocolHandler(args));
|
|
99
|
+
await node.start();
|
|
100
|
+
return node;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
constructor(db: ToolDb) {
|
|
104
|
+
this._tooldb = db;
|
|
105
|
+
this.options = db.options;
|
|
106
|
+
|
|
107
|
+
this.createLibP2p();
|
|
108
|
+
if (this.options.server) {
|
|
109
|
+
//
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
public close(clientId: string): void {
|
|
114
|
+
if (this.libp2p) {
|
|
115
|
+
const conn = this.libp2p.connections.get(clientId);
|
|
116
|
+
if (conn && conn[0]) {
|
|
117
|
+
conn[0].close();
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
/**
|
|
123
|
+
* A simple handler to print incoming messages to the console
|
|
124
|
+
* @param {Object} params
|
|
125
|
+
* @param {Connection} params.connection The connection the stream belongs to
|
|
126
|
+
* @param {Stream} params.stream stream to the peer
|
|
127
|
+
*/
|
|
128
|
+
public async toolDbProtocolHandler({
|
|
129
|
+
connection,
|
|
130
|
+
stream,
|
|
131
|
+
}: {
|
|
132
|
+
connection: any;
|
|
133
|
+
stream: any[];
|
|
134
|
+
}) {
|
|
135
|
+
try {
|
|
136
|
+
await pipe(stream, async (source) => {
|
|
137
|
+
for await (const message of source) {
|
|
138
|
+
console.info(`${connection.remotePeer.toB58String()}: ${message}`);
|
|
139
|
+
try {
|
|
140
|
+
const msg = JSON.parse(`${message}`) as ToolDbMessage;
|
|
141
|
+
this._tooldb.clientOnMessage(
|
|
142
|
+
msg,
|
|
143
|
+
connection.remotePeer.toB58String()
|
|
144
|
+
);
|
|
145
|
+
} catch (e) {
|
|
146
|
+
console.log("Got message ERR > ", message);
|
|
147
|
+
console.log(e);
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
});
|
|
151
|
+
// Replies are done on new streams, so let's close this stream so we don't leak it
|
|
152
|
+
await pipe([], stream);
|
|
153
|
+
} catch (err) {
|
|
154
|
+
console.error(err);
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
/**
|
|
159
|
+
* Writes a given `message` over the given `stream`.
|
|
160
|
+
* @param {String} message The message to send over `stream`
|
|
161
|
+
* @param {Stream} stream A stream over the muxed Connection to our peer
|
|
162
|
+
*/
|
|
163
|
+
public async toolDbProtocolSend(message: string, stream: MuxedStream) {
|
|
164
|
+
try {
|
|
165
|
+
await pipe([message], stream, async function (source: any) {
|
|
166
|
+
for await (const message of source) {
|
|
167
|
+
console.info(`Me: ${message}`);
|
|
168
|
+
}
|
|
169
|
+
});
|
|
170
|
+
} catch (err) {
|
|
171
|
+
console.error(err);
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
public sendToAll(msg: ToolDbMessage, crossServerOnly = false) {
|
|
176
|
+
const to = _.uniq([...msg.to, this.options.id]);
|
|
177
|
+
|
|
178
|
+
const filteredConns = Object.keys(this.clientSockets).filter(
|
|
179
|
+
(id) => !to.includes(id)
|
|
180
|
+
);
|
|
181
|
+
|
|
182
|
+
filteredConns.forEach((clientId) => {
|
|
183
|
+
const stream = this._clientSockets[clientId];
|
|
184
|
+
if (!crossServerOnly) {
|
|
185
|
+
console.log("Sent out to: ", clientId);
|
|
186
|
+
if (stream) {
|
|
187
|
+
const message = JSON.stringify({ ...msg, to });
|
|
188
|
+
this.toolDbProtocolSend(message, stream);
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
});
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
public sendToClientId(clientId: string, msg: ToolDbMessage) {
|
|
195
|
+
const stream = this._clientSockets[clientId];
|
|
196
|
+
if (stream) {
|
|
197
|
+
const to = _.uniq([...msg.to, this.options.id]);
|
|
198
|
+
const message = JSON.stringify({ ...msg, to });
|
|
199
|
+
this.toolDbProtocolSend(message, stream);
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
get tooldb() {
|
|
204
|
+
return this._tooldb;
|
|
205
|
+
}
|
|
206
|
+
}
|