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.
Files changed (136) hide show
  1. package/custom-test-env.js +18 -0
  2. package/dist/index.d.ts +10 -0
  3. package/dist/index.js +21 -1
  4. package/dist/index.js.map +1 -1
  5. package/dist/libp2p/create.d.ts +2 -0
  6. package/dist/libp2p/create.js +131 -0
  7. package/dist/libp2p/create.js.map +1 -0
  8. package/dist/libp2p/createLibP2p.d.ts +3 -0
  9. package/dist/libp2p/createLibP2p.js +130 -0
  10. package/dist/libp2p/createLibP2p.js.map +1 -0
  11. package/dist/libp2p/tooldb-protocol.d.ts +19 -0
  12. package/dist/libp2p/tooldb-protocol.js +156 -0
  13. package/dist/libp2p/tooldb-protocol.js.map +1 -0
  14. package/dist/messageHandlers/handleCrdt copy.d.ts +2 -0
  15. package/dist/messageHandlers/handleCrdt copy.js +15 -0
  16. package/dist/messageHandlers/handleCrdt copy.js.map +1 -0
  17. package/dist/messageHandlers/handleCrdt.d.ts +2 -0
  18. package/dist/messageHandlers/handleCrdt.js +15 -0
  19. package/dist/messageHandlers/handleCrdt.js.map +1 -0
  20. package/dist/messageHandlers/handleCrdtGet copy.d.ts +2 -0
  21. package/dist/messageHandlers/handleCrdtGet copy.js +22 -0
  22. package/dist/messageHandlers/handleCrdtGet copy.js.map +1 -0
  23. package/dist/messageHandlers/handleCrdtGet.d.ts +2 -0
  24. package/dist/messageHandlers/handleCrdtGet.js +22 -0
  25. package/dist/messageHandlers/handleCrdtGet.js.map +1 -0
  26. package/dist/messageHandlers/handleCrdtPut copy.d.ts +2 -0
  27. package/dist/messageHandlers/handleCrdtPut copy.js +83 -0
  28. package/dist/messageHandlers/handleCrdtPut copy.js.map +1 -0
  29. package/dist/messageHandlers/handleCrdtPut.d.ts +2 -0
  30. package/dist/messageHandlers/handleCrdtPut.js +83 -0
  31. package/dist/messageHandlers/handleCrdtPut.js.map +1 -0
  32. package/dist/messageHandlers/handleGet copy.d.ts +2 -0
  33. package/dist/messageHandlers/handleGet copy.js +37 -0
  34. package/dist/messageHandlers/handleGet copy.js.map +1 -0
  35. package/dist/messageHandlers/handleGet.d.ts +2 -0
  36. package/dist/messageHandlers/handleGet.js +37 -0
  37. package/dist/messageHandlers/handleGet.js.map +1 -0
  38. package/dist/messageHandlers/handleGetServers.d.ts +2 -0
  39. package/dist/messageHandlers/handleGetServers.js +23 -0
  40. package/dist/messageHandlers/handleGetServers.js.map +1 -0
  41. package/dist/messageHandlers/handleJoin copy.d.ts +2 -0
  42. package/dist/messageHandlers/handleJoin copy.js +37 -0
  43. package/dist/messageHandlers/handleJoin copy.js.map +1 -0
  44. package/dist/messageHandlers/handleJoin.d.ts +2 -0
  45. package/dist/messageHandlers/handleJoin.js +36 -0
  46. package/dist/messageHandlers/handleJoin.js.map +1 -0
  47. package/dist/messageHandlers/handlePing copy.d.ts +2 -0
  48. package/dist/messageHandlers/handlePing copy.js +13 -0
  49. package/dist/messageHandlers/handlePing copy.js.map +1 -0
  50. package/dist/messageHandlers/handlePing.d.ts +2 -0
  51. package/dist/messageHandlers/handlePing.js +20 -0
  52. package/dist/messageHandlers/handlePing.js.map +1 -0
  53. package/dist/messageHandlers/handlePong.d.ts +2 -0
  54. package/dist/messageHandlers/handlePong.js +30 -0
  55. package/dist/messageHandlers/handlePong.js.map +1 -0
  56. package/dist/messageHandlers/handlePut.d.ts +2 -0
  57. package/dist/messageHandlers/handlePut.js +61 -0
  58. package/dist/messageHandlers/handlePut.js.map +1 -0
  59. package/dist/messageHandlers/handleQuery.d.ts +2 -0
  60. package/dist/messageHandlers/handleQuery.js +18 -0
  61. package/dist/messageHandlers/handleQuery.js.map +1 -0
  62. package/dist/messageHandlers/handleServers copy.d.ts +2 -0
  63. package/dist/messageHandlers/handleServers copy.js +23 -0
  64. package/dist/messageHandlers/handleServers copy.js.map +1 -0
  65. package/dist/messageHandlers/handleServers.d.ts +2 -0
  66. package/dist/messageHandlers/handleServers.js +23 -0
  67. package/dist/messageHandlers/handleServers.js.map +1 -0
  68. package/dist/messageHandlers/handleSubscribe.d.ts +2 -0
  69. package/dist/messageHandlers/handleSubscribe.js +62 -0
  70. package/dist/messageHandlers/handleSubscribe.js.map +1 -0
  71. package/dist/toolDbClientOnMessage.d.ts +2 -2
  72. package/dist/toolDbClientOnMessage.js +59 -253
  73. package/dist/toolDbClientOnMessage.js.map +1 -1
  74. package/dist/toolDbCrdtPut.js +1 -1
  75. package/dist/toolDbCrdtPut.js.map +1 -1
  76. package/dist/toolDbGet.js +1 -1
  77. package/dist/toolDbGet.js.map +1 -1
  78. package/dist/toolDbLibP2p.d.ts +34 -0
  79. package/dist/toolDbLibP2p.js +375 -0
  80. package/dist/toolDbLibP2p.js.map +1 -0
  81. package/dist/toolDbNetwork.d.ts +33 -0
  82. package/dist/toolDbNetwork.js +277 -0
  83. package/dist/toolDbNetwork.js.map +1 -0
  84. package/dist/toolDbPut.js +1 -1
  85. package/dist/toolDbPut.js.map +1 -1
  86. package/dist/toolDbQueryKeys.js +1 -1
  87. package/dist/toolDbQueryKeys.js.map +1 -1
  88. package/dist/toolDbSignUp.js +1 -1
  89. package/dist/toolDbSignUp.js.map +1 -1
  90. package/dist/toolDbSubscribe.js +1 -1
  91. package/dist/toolDbSubscribe.js.map +1 -1
  92. package/dist/toolDbVerificationWrapper.js +1 -1
  93. package/dist/toolDbVerificationWrapper.js.map +1 -1
  94. package/dist/tooldb.d.ts +26 -10
  95. package/dist/tooldb.js +63 -7
  96. package/dist/tooldb.js.map +1 -1
  97. package/dist/types/message.d.ts +11 -2
  98. package/dist/types/message.js.map +1 -1
  99. package/dist/types/tooldb.d.ts +34 -1
  100. package/dist/types/tooldb.js +19 -0
  101. package/dist/types/tooldb.js.map +1 -1
  102. package/dist/utils/indexedb.d.ts +2 -6
  103. package/dist/utils/indexedb.js +13 -3
  104. package/dist/utils/indexedb.js.map +1 -1
  105. package/dist/utils/leveldb.d.ts +2 -6
  106. package/dist/utils/leveldb.js +12 -2
  107. package/dist/utils/leveldb.js.map +1 -1
  108. package/dist/utils/verifyPeer.d.ts +2 -0
  109. package/dist/utils/verifyPeer.js +13 -0
  110. package/dist/utils/verifyPeer.js.map +1 -0
  111. package/dist/wss.d.ts +1 -1
  112. package/dist/wss.js +14 -11
  113. package/dist/wss.js.map +1 -1
  114. package/jest.config.ts +2 -1
  115. package/package.json +3 -2
  116. package/test-alice/000003.log +0 -0
  117. package/test-alice/CURRENT +1 -0
  118. package/test-alice/LOCK +0 -0
  119. package/test-alice/LOG +1 -0
  120. package/test-alice/MANIFEST-000002 +0 -0
  121. package/test-bob/000003.log +0 -0
  122. package/test-bob/CURRENT +1 -0
  123. package/test-bob/LOCK +0 -0
  124. package/test-bob/LOG +1 -0
  125. package/test-bob/MANIFEST-000002 +0 -0
  126. package/test-node-a/000003.log +0 -0
  127. package/test-node-a/CURRENT +1 -0
  128. package/test-node-a/LOCK +0 -0
  129. package/test-node-a/LOG +1 -0
  130. package/test-node-a/MANIFEST-000002 +0 -0
  131. package/test-node-b/000003.log +0 -0
  132. package/test-node-b/CURRENT +1 -0
  133. package/test-node-b/LOCK +0 -0
  134. package/test-node-b/LOG +1 -0
  135. package/test-node-b/MANIFEST-000002 +0 -0
  136. package/toolDbLibP2p.ts +206 -0
@@ -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":";;;AAAA,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"}
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"}
@@ -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: string[];
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
  }
@@ -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
@@ -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"}
@@ -1,6 +1,2 @@
1
- export default function indexedb(dbName?: string): {
2
- start: () => void;
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;
@@ -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, cb) {
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":"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"}
1
+ {"version":3,"file":"indexedb.js","sourceRoot":"","sources":["../../src/utils/indexedb.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,2 @@
1
- export default function leveldb(dbName?: string): {
2
- start: () => void;
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;
@@ -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":";;AAAA,cAAc;AACd,SAAwB,OAAO,CAAC,MAAiB;IAAjB,uBAAA,EAAA,iBAAiB;IAU/C,IAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC/B,IAAI,EAAE,GAAG,IAAI,CAAC;IAEd,IAAM,KAAK,GAAG,EAAE,CAAC;IAEjB,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,GAAG;YAC7B,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,GAAG,EAAE,KAAK;YAC9B,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,GAAG,EAAE,CAAC;gBACjB,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,GAAG;oBACxB,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;AA1ED,0BA0EC"}
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,2 @@
1
+ import { Peer } from "../types/tooldb";
2
+ export default function verifyPeer(peer: Peer): Promise<boolean>;
@@ -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, crossServer?: boolean): void;
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, crossServer) {
201
+ WSS.prototype.send = function (msg, crossServerOnly) {
202
202
  var _this = this;
203
- if (crossServer === void 0) { crossServer = false; }
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 = to
206
- .filter(function (clientId) { return !to.includes(clientId) && clientId !== _this.options.id; })
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
- // "Send to ",
211
- // filteredConns.map((c) => c.peer.url),
212
- // "but not to",
213
- // filterUrls
211
+ // "filteredConns ",
212
+ // filteredConns.map((c) => c.toolDbId)
214
213
  // );
215
214
  filteredConns.forEach(function (conn) {
216
- if ((crossServer && conn.isServer) || !crossServer) {
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":"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"}
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.2.0",
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
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
@@ -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
File without changes
@@ -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
File without changes
@@ -0,0 +1 @@
1
+ 2022/01/08-15:31:16.993 7570 Delete type=3 #1
Binary file
@@ -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
+ }