tool-db 1.2.1 → 1.3.1

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 (140) hide show
  1. package/README.md +42 -3
  2. package/custom-test-env.js +18 -0
  3. package/dist/index.d.ts +10 -0
  4. package/dist/index.js +21 -1
  5. package/dist/index.js.map +1 -1
  6. package/dist/libp2p/create.d.ts +2 -0
  7. package/dist/libp2p/create.js +131 -0
  8. package/dist/libp2p/create.js.map +1 -0
  9. package/dist/libp2p/createLibP2p.d.ts +3 -0
  10. package/dist/libp2p/createLibP2p.js +130 -0
  11. package/dist/libp2p/createLibP2p.js.map +1 -0
  12. package/dist/libp2p/tooldb-protocol.d.ts +19 -0
  13. package/dist/libp2p/tooldb-protocol.js +156 -0
  14. package/dist/libp2p/tooldb-protocol.js.map +1 -0
  15. package/dist/messageHandlers/handleCrdt copy.d.ts +2 -0
  16. package/dist/messageHandlers/handleCrdt copy.js +15 -0
  17. package/dist/messageHandlers/handleCrdt copy.js.map +1 -0
  18. package/dist/messageHandlers/handleCrdt.d.ts +2 -0
  19. package/dist/messageHandlers/handleCrdt.js +15 -0
  20. package/dist/messageHandlers/handleCrdt.js.map +1 -0
  21. package/dist/messageHandlers/handleCrdtGet copy.d.ts +2 -0
  22. package/dist/messageHandlers/handleCrdtGet copy.js +22 -0
  23. package/dist/messageHandlers/handleCrdtGet copy.js.map +1 -0
  24. package/dist/messageHandlers/handleCrdtGet.d.ts +2 -0
  25. package/dist/messageHandlers/handleCrdtGet.js +22 -0
  26. package/dist/messageHandlers/handleCrdtGet.js.map +1 -0
  27. package/dist/messageHandlers/handleCrdtPut copy.d.ts +2 -0
  28. package/dist/messageHandlers/handleCrdtPut copy.js +83 -0
  29. package/dist/messageHandlers/handleCrdtPut copy.js.map +1 -0
  30. package/dist/messageHandlers/handleCrdtPut.d.ts +2 -0
  31. package/dist/messageHandlers/handleCrdtPut.js +83 -0
  32. package/dist/messageHandlers/handleCrdtPut.js.map +1 -0
  33. package/dist/messageHandlers/handleGet copy.d.ts +2 -0
  34. package/dist/messageHandlers/handleGet copy.js +37 -0
  35. package/dist/messageHandlers/handleGet copy.js.map +1 -0
  36. package/dist/messageHandlers/handleGet.d.ts +2 -0
  37. package/dist/messageHandlers/handleGet.js +37 -0
  38. package/dist/messageHandlers/handleGet.js.map +1 -0
  39. package/dist/messageHandlers/handleGetServers.d.ts +2 -0
  40. package/dist/messageHandlers/handleGetServers.js +23 -0
  41. package/dist/messageHandlers/handleGetServers.js.map +1 -0
  42. package/dist/messageHandlers/handleJoin copy.d.ts +2 -0
  43. package/dist/messageHandlers/handleJoin copy.js +37 -0
  44. package/dist/messageHandlers/handleJoin copy.js.map +1 -0
  45. package/dist/messageHandlers/handleJoin.d.ts +2 -0
  46. package/dist/messageHandlers/handleJoin.js +36 -0
  47. package/dist/messageHandlers/handleJoin.js.map +1 -0
  48. package/dist/messageHandlers/handlePing copy.d.ts +2 -0
  49. package/dist/messageHandlers/handlePing copy.js +13 -0
  50. package/dist/messageHandlers/handlePing copy.js.map +1 -0
  51. package/dist/messageHandlers/handlePing.d.ts +2 -0
  52. package/dist/messageHandlers/handlePing.js +20 -0
  53. package/dist/messageHandlers/handlePing.js.map +1 -0
  54. package/dist/messageHandlers/handlePong.d.ts +2 -0
  55. package/dist/messageHandlers/handlePong.js +30 -0
  56. package/dist/messageHandlers/handlePong.js.map +1 -0
  57. package/dist/messageHandlers/handlePut.d.ts +2 -0
  58. package/dist/messageHandlers/handlePut.js +61 -0
  59. package/dist/messageHandlers/handlePut.js.map +1 -0
  60. package/dist/messageHandlers/handleQuery.d.ts +2 -0
  61. package/dist/messageHandlers/handleQuery.js +18 -0
  62. package/dist/messageHandlers/handleQuery.js.map +1 -0
  63. package/dist/messageHandlers/handleServers copy.d.ts +2 -0
  64. package/dist/messageHandlers/handleServers copy.js +23 -0
  65. package/dist/messageHandlers/handleServers copy.js.map +1 -0
  66. package/dist/messageHandlers/handleServers.d.ts +2 -0
  67. package/dist/messageHandlers/handleServers.js +23 -0
  68. package/dist/messageHandlers/handleServers.js.map +1 -0
  69. package/dist/messageHandlers/handleSubscribe.d.ts +2 -0
  70. package/dist/messageHandlers/handleSubscribe.js +62 -0
  71. package/dist/messageHandlers/handleSubscribe.js.map +1 -0
  72. package/dist/metrics/metricsConfig.d.ts +6 -0
  73. package/dist/metrics/metricsConfig.js +35 -0
  74. package/dist/metrics/metricsConfig.js.map +1 -0
  75. package/dist/toolDbClientOnMessage.d.ts +2 -2
  76. package/dist/toolDbClientOnMessage.js +60 -259
  77. package/dist/toolDbClientOnMessage.js.map +1 -1
  78. package/dist/toolDbCrdtPut.js +1 -1
  79. package/dist/toolDbCrdtPut.js.map +1 -1
  80. package/dist/toolDbGet.js +1 -1
  81. package/dist/toolDbGet.js.map +1 -1
  82. package/dist/toolDbLibP2p.d.ts +34 -0
  83. package/dist/toolDbLibP2p.js +375 -0
  84. package/dist/toolDbLibP2p.js.map +1 -0
  85. package/dist/toolDbNetwork.d.ts +33 -0
  86. package/dist/toolDbNetwork.js +277 -0
  87. package/dist/toolDbNetwork.js.map +1 -0
  88. package/dist/toolDbPut.js +1 -1
  89. package/dist/toolDbPut.js.map +1 -1
  90. package/dist/toolDbQueryKeys.js +1 -1
  91. package/dist/toolDbQueryKeys.js.map +1 -1
  92. package/dist/toolDbSignUp.js +1 -1
  93. package/dist/toolDbSignUp.js.map +1 -1
  94. package/dist/toolDbSubscribe.js +1 -1
  95. package/dist/toolDbSubscribe.js.map +1 -1
  96. package/dist/toolDbVerificationWrapper.js +1 -1
  97. package/dist/toolDbVerificationWrapper.js.map +1 -1
  98. package/dist/tooldb.d.ts +29 -11
  99. package/dist/tooldb.js +119 -41
  100. package/dist/tooldb.js.map +1 -1
  101. package/dist/types/message.d.ts +11 -2
  102. package/dist/types/message.js.map +1 -1
  103. package/dist/types/tooldb.d.ts +34 -1
  104. package/dist/types/tooldb.js +19 -0
  105. package/dist/types/tooldb.js.map +1 -1
  106. package/dist/utils/indexedb.d.ts +2 -6
  107. package/dist/utils/indexedb.js +13 -3
  108. package/dist/utils/indexedb.js.map +1 -1
  109. package/dist/utils/leveldb.d.ts +2 -6
  110. package/dist/utils/leveldb.js +12 -2
  111. package/dist/utils/leveldb.js.map +1 -1
  112. package/dist/utils/verifyPeer.d.ts +2 -0
  113. package/dist/utils/verifyPeer.js +13 -0
  114. package/dist/utils/verifyPeer.js.map +1 -0
  115. package/dist/wss.d.ts +1 -1
  116. package/dist/wss.js +5 -5
  117. package/dist/wss.js.map +1 -1
  118. package/jest.config.ts +2 -1
  119. package/package.json +3 -2
  120. package/test-alice/000003.log +0 -0
  121. package/test-alice/CURRENT +1 -0
  122. package/test-alice/LOCK +0 -0
  123. package/test-alice/LOG +1 -0
  124. package/test-alice/MANIFEST-000002 +0 -0
  125. package/test-bob/000003.log +0 -0
  126. package/test-bob/CURRENT +1 -0
  127. package/test-bob/LOCK +0 -0
  128. package/test-bob/LOG +1 -0
  129. package/test-bob/MANIFEST-000002 +0 -0
  130. package/test-node-a/000003.log +0 -0
  131. package/test-node-a/CURRENT +1 -0
  132. package/test-node-a/LOCK +0 -0
  133. package/test-node-a/LOG +1 -0
  134. package/test-node-a/MANIFEST-000002 +0 -0
  135. package/test-node-b/000003.log +0 -0
  136. package/test-node-b/CURRENT +1 -0
  137. package/test-node-b/LOCK +0 -0
  138. package/test-node-b/LOG +1 -0
  139. package/test-node-b/MANIFEST-000002 +0 -0
  140. package/toolDbLibP2p.ts +206 -0
package/README.md CHANGED
@@ -12,7 +12,7 @@ This setup IS NOT a requirement! It is just what I think is the best and most re
12
12
  Since anyone can join a federated server swarm to help growing the network we use cryptography (basic public and private key authenthication and signature validation) to ensure all messages are coming from the real authors of the data that they intend to modify; this way by joining a swarm all peers in it can help validate without even having full data; even a new server peer can help, because all information is stored on each message and we dont rely on any centralized database to fetch users data.
13
13
 
14
14
  Please check the [chain-swarm](https://github.com/Manuel-777/chain-swarm) repository to see how a federated server swarm would look like, Tool Db only handles the connection and messaging between peers, but it does not have any logic for peer discovery.
15
- We do that using [discovery-channel](https://www.npmjs.com/package/discovery-channel), but you can use any DHT solution you want! Theoretically, even WebRTC between browsers would work.
15
+ We do that using [discovery-channel](https://www.npmjs.com/package/discovery-channel), but you can use any DHT solution you want! even WebRTC between browsers could work.
16
16
 
17
17
  ## Base usage
18
18
  Connect to the selected toolDb peers;
@@ -21,26 +21,65 @@ const client = new ToolDb(options);
21
21
  ```
22
22
 
23
23
  These are the options you can pass to the constructor:
24
+
24
25
  ```
25
26
  {
26
27
  // Database name to use
27
28
  db: string;
29
+
28
30
  // Show debug console logs
29
31
  debug: boolean;
30
- // List of peers to connect to (full URL with port like "http://127.0.0.1:9000")
31
- peers: string[];
32
+
33
+ // Array of peers to connect to, each one in the form of { host: "127.0.0.1", port: 9000 }
34
+ peers: { host: "127.0.0.1", port: 9000 }[];
35
+
32
36
  // Max number of tries when a connection fails
33
37
  maxRetries: number;
38
+
39
+ // How long to wait (max) for a debounced key listener recv
40
+ triggerDebouce: number;
41
+
34
42
  // How long to wait between retries
35
43
  wait: number;
44
+
36
45
  // If you want to force a Proof of Work on all messages, set how much (zero is no POW)
37
46
  pow: number;
47
+
38
48
  // Weter we are a server or not
39
49
  server: boolean;
50
+
51
+ // Our hostname (server only)
52
+ host: string
53
+
40
54
  // Port to listen incoming connections (server only)
41
55
  port: number;
56
+
57
+ // A server instance like Express (server only)
58
+ httpServer: HTTPServer | HTTPSServer | undefined;
59
+
60
+ // Our storage namespace (default is "tooldb")
61
+ storageName: string;
62
+
63
+ // A custom network adapter class
64
+ networkAdapter: typeof ToolDbNetworkAdapter;
65
+
66
+ // A custom storage adapter function
67
+ storageAdapter: ToolDbStorageAdapter;
68
+
69
+ // Our client ID (defaults to a random ID)
70
+ id: string;
71
+
72
+ // The namespace/topic of our app
73
+ topic: string;
74
+
75
+ // Public and private (ECDSA) keys of our client. In the default network adapter these are used to sign
76
+ // our messages as we join and leave the network, and public key should match the client ID.
77
+ publicKey: CryptoKey | undefined;
78
+ privateKey: CryptoKey | undefined;
42
79
  }
43
80
  ```
81
+ Notice you can use your own network and storage modules if you would like to implement custom solutions for peers discovery, connections, storage, etc, the default adapters will work both on nodejs and the browser.
82
+
44
83
 
45
84
  You can create a user, sign in or create a random set of keys for anonymous usage;
46
85
  ```
@@ -0,0 +1,18 @@
1
+ const Environment = require("jest-environment-jsdom");
2
+
3
+ /**
4
+ * A custom environment to set the TextEncoder.
5
+ */
6
+ module.exports = class CustomTestEnvironment extends Environment {
7
+ async setup() {
8
+ await super.setup();
9
+ if (typeof this.global.TextEncoder === "undefined") {
10
+ const { TextEncoder } = require("util");
11
+ this.global.TextEncoder = TextEncoder;
12
+ }
13
+ if (typeof this.global.TextDecoder === "undefined") {
14
+ const { TextDecoder } = require("util");
15
+ this.global.TextDecoder = TextDecoder;
16
+ }
17
+ }
18
+ };
package/dist/index.d.ts CHANGED
@@ -34,4 +34,14 @@ export { default as importKey } from "./utils/crypto/importKey";
34
34
  export { default as loadKeysComb } from "./utils/crypto/loadKeysComb";
35
35
  export { default as saveKeysComb } from "./utils/crypto/saveKeysComb";
36
36
  export { default as verifyData } from "./utils/crypto/verifyData";
37
+ export { default as toolDbNetwork } from "./toolDbNetwork";
38
+ export { default as handleCrdt } from "./messageHandlers/handleCrdt";
39
+ export { default as handleCrdtGet } from "./messageHandlers/handleCrdtGet";
40
+ export { default as handleCrdtPut } from "./messageHandlers/handleCrdtPut";
41
+ export { default as handleGet } from "./messageHandlers/handleGet";
42
+ export { default as handlePing } from "./messageHandlers/handlePing";
43
+ export { default as handlePong } from "./messageHandlers/handlePong";
44
+ export { default as handlePut } from "./messageHandlers/handlePut";
45
+ export { default as handleQuery } from "./messageHandlers/handleQuery";
46
+ export { default as handleSubscribe } from "./messageHandlers/handleSubscribe";
37
47
  export { default as ToolDb } from "./tooldb";
package/dist/index.js CHANGED
@@ -13,7 +13,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
13
13
  return (mod && mod.__esModule) ? mod : { "default": mod };
14
14
  };
15
15
  Object.defineProperty(exports, "__esModule", { value: true });
16
- exports.ToolDb = exports.verifyData = exports.saveKeysComb = exports.loadKeysComb = exports.importKey = exports.generateKeysComb = exports.generateKeyPair = exports.generateKeyFromPassword = exports.exportKey = exports.encryptWithPass = exports.encryptData = exports.encodeKeyString = exports.deriveSecret = exports.decryptWithPass = exports.decryptData = exports.decodeKeyString = exports.getIpFromUrl = exports.verifyMessage = exports.uint8ToBase64 = exports.toBase64 = exports.textRandom = exports.stringToArrayBuffer = exports.randomAnimal = exports.generateIv = exports.fromBase64 = exports.base64ToUint8 = exports.base64ToBinaryDocument = exports.base64ToBinaryChange = exports.base64ToArrayBuffer = exports.arrayBufferToString = exports.arrayBufferToBase64 = exports.signData = exports.sha256 = exports.sha1 = exports.proofOfWork = void 0;
16
+ exports.ToolDb = exports.handleSubscribe = exports.handleQuery = exports.handlePut = exports.handlePong = exports.handlePing = exports.handleGet = exports.handleCrdtPut = exports.handleCrdtGet = exports.handleCrdt = exports.toolDbNetwork = exports.verifyData = exports.saveKeysComb = exports.loadKeysComb = exports.importKey = exports.generateKeysComb = exports.generateKeyPair = exports.generateKeyFromPassword = exports.exportKey = exports.encryptWithPass = exports.encryptData = exports.encodeKeyString = exports.deriveSecret = exports.decryptWithPass = exports.decryptData = exports.decodeKeyString = exports.getIpFromUrl = exports.verifyMessage = exports.uint8ToBase64 = exports.toBase64 = exports.textRandom = exports.stringToArrayBuffer = exports.randomAnimal = exports.generateIv = exports.fromBase64 = exports.base64ToUint8 = exports.base64ToBinaryDocument = exports.base64ToBinaryChange = exports.base64ToArrayBuffer = exports.arrayBufferToString = exports.arrayBufferToBase64 = exports.signData = exports.sha256 = exports.sha1 = exports.proofOfWork = void 0;
17
17
  /* eslint-disable no-undef */
18
18
  /* eslint-disable global-require */
19
19
  __exportStar(require("./types/graph"), exports);
@@ -100,6 +100,26 @@ var saveKeysComb_1 = require("./utils/crypto/saveKeysComb");
100
100
  Object.defineProperty(exports, "saveKeysComb", { enumerable: true, get: function () { return __importDefault(saveKeysComb_1).default; } });
101
101
  var verifyData_1 = require("./utils/crypto/verifyData");
102
102
  Object.defineProperty(exports, "verifyData", { enumerable: true, get: function () { return __importDefault(verifyData_1).default; } });
103
+ var toolDbNetwork_1 = require("./toolDbNetwork");
104
+ Object.defineProperty(exports, "toolDbNetwork", { enumerable: true, get: function () { return __importDefault(toolDbNetwork_1).default; } });
105
+ var handleCrdt_1 = require("./messageHandlers/handleCrdt");
106
+ Object.defineProperty(exports, "handleCrdt", { enumerable: true, get: function () { return __importDefault(handleCrdt_1).default; } });
107
+ var handleCrdtGet_1 = require("./messageHandlers/handleCrdtGet");
108
+ Object.defineProperty(exports, "handleCrdtGet", { enumerable: true, get: function () { return __importDefault(handleCrdtGet_1).default; } });
109
+ var handleCrdtPut_1 = require("./messageHandlers/handleCrdtPut");
110
+ Object.defineProperty(exports, "handleCrdtPut", { enumerable: true, get: function () { return __importDefault(handleCrdtPut_1).default; } });
111
+ var handleGet_1 = require("./messageHandlers/handleGet");
112
+ Object.defineProperty(exports, "handleGet", { enumerable: true, get: function () { return __importDefault(handleGet_1).default; } });
113
+ var handlePing_1 = require("./messageHandlers/handlePing");
114
+ Object.defineProperty(exports, "handlePing", { enumerable: true, get: function () { return __importDefault(handlePing_1).default; } });
115
+ var handlePong_1 = require("./messageHandlers/handlePong");
116
+ Object.defineProperty(exports, "handlePong", { enumerable: true, get: function () { return __importDefault(handlePong_1).default; } });
117
+ var handlePut_1 = require("./messageHandlers/handlePut");
118
+ Object.defineProperty(exports, "handlePut", { enumerable: true, get: function () { return __importDefault(handlePut_1).default; } });
119
+ var handleQuery_1 = require("./messageHandlers/handleQuery");
120
+ Object.defineProperty(exports, "handleQuery", { enumerable: true, get: function () { return __importDefault(handleQuery_1).default; } });
121
+ var handleSubscribe_1 = require("./messageHandlers/handleSubscribe");
122
+ Object.defineProperty(exports, "handleSubscribe", { enumerable: true, get: function () { return __importDefault(handleSubscribe_1).default; } });
103
123
  var tooldb_1 = require("./tooldb");
104
124
  Object.defineProperty(exports, "ToolDb", { enumerable: true, get: function () { return __importDefault(tooldb_1).default; } });
105
125
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,6BAA6B;AAC7B,mCAAmC;AACnC,gDAA8B;AAC9B,kDAAgC;AAEhC,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,OAAO,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC;AAE1D,IAAI,OAAO,IAAI,KAAK,WAAW,EAAE;IAC/B,MAAM,CAAC,IAAI,GAAG,UAAC,GAAG;QAChB,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACvD,CAAC,CAAC;CACH;AAED,IAAI,OAAO,IAAI,KAAK,WAAW,EAAE;IAC/B,MAAM,CAAC,IAAI,GAAG,UAAC,UAAU;QACvB,OAAO,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAC9D,CAAC,CAAC;CACH;AAED,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;IACjC,MAAM,CAAC,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC;CAC7C;AAED,mDAA6D;AAApD,2HAAA,OAAO,OAAe;AAC/B,qCAA+C;AAAtC,6GAAA,OAAO,OAAQ;AACxB,yCAAmD;AAA1C,iHAAA,OAAO,OAAU;AAC1B,6CAAuD;AAA9C,qHAAA,OAAO,OAAY;AAC5B,mEAA6E;AAApE,2IAAA,OAAO,OAAuB;AACvC,mEAA6E;AAApE,2IAAA,OAAO,OAAuB;AACvC,mEAA6E;AAApE,2IAAA,OAAO,OAAuB;AACvC,qEAA+E;AAAtE,6IAAA,OAAO,OAAwB;AACxC,yEAAmF;AAA1E,iJAAA,OAAO,OAA0B;AAC1C,uDAAiE;AAAxD,+HAAA,OAAO,OAAiB;AACjC,iDAA2D;AAAlD,yHAAA,OAAO,OAAc;AAC9B,iDAA2D;AAAlD,yHAAA,OAAO,OAAc;AAC9B,qDAA+D;AAAtD,6HAAA,OAAO,OAAgB;AAChC,mEAA6E;AAApE,2IAAA,OAAO,OAAuB;AACvC,iDAA2D;AAAlD,yHAAA,OAAO,OAAc;AAC9B,6CAAuD;AAA9C,qHAAA,OAAO,OAAY;AAC5B,uDAAiE;AAAxD,+HAAA,OAAO,OAAiB;AACjC,uDAAiE;AAAxD,+HAAA,OAAO,OAAiB;AACjC,qDAA+D;AAAtD,6HAAA,OAAO,OAAgB;AAEhC,kEAA4E;AAAnE,mIAAA,OAAO,OAAmB;AACnC,0DAAoE;AAA3D,2HAAA,OAAO,OAAe;AAC/B,kEAA4E;AAAnE,mIAAA,OAAO,OAAmB;AACnC,4DAAsE;AAA7D,6HAAA,OAAO,OAAgB;AAChC,kEAA4E;AAAnE,mIAAA,OAAO,OAAmB;AACnC,0DAAoE;AAA3D,2HAAA,OAAO,OAAe;AAC/B,kEAA4E;AAAnE,mIAAA,OAAO,OAAmB;AACnC,sDAAgE;AAAvD,uHAAA,OAAO,OAAa;AAC7B,kFAA4F;AAAnF,mJAAA,OAAO,OAA2B;AAC3C,kEAA4E;AAAnE,mIAAA,OAAO,OAAmB;AACnC,oEAA8E;AAArE,qIAAA,OAAO,OAAoB;AACpC,sDAAgE;AAAvD,uHAAA,OAAO,OAAa;AAC7B,4DAAsE;AAA7D,6HAAA,OAAO,OAAgB;AAChC,4DAAsE;AAA7D,6HAAA,OAAO,OAAgB;AAChC,wDAAkE;AAAzD,yHAAA,OAAO,OAAc;AAE9B,mCAA6C;AAApC,iHAAA,OAAO,OAAU"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import { ToolDb } from "..";
2
+ export default function create(db: ToolDb): Promise<void>;
@@ -0,0 +1,131 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __generator = (this && this.__generator) || function (thisArg, body) {
12
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
13
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
14
+ function verb(n) { return function (v) { return step([n, v]); }; }
15
+ function step(op) {
16
+ if (f) throw new TypeError("Generator is already executing.");
17
+ while (_) try {
18
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
19
+ if (y = 0, t) op = [op[0] & 2, t.value];
20
+ switch (op[0]) {
21
+ case 0: case 1: t = op; break;
22
+ case 4: _.label++; return { value: op[1], done: false };
23
+ case 5: _.label++; y = op[1]; op = [0]; continue;
24
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
25
+ default:
26
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
27
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
28
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
29
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
30
+ if (t[2]) _.ops.pop();
31
+ _.trys.pop(); continue;
32
+ }
33
+ op = body.call(thisArg, _);
34
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
35
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
36
+ }
37
+ };
38
+ var __importDefault = (this && this.__importDefault) || function (mod) {
39
+ return (mod && mod.__esModule) ? mod : { "default": mod };
40
+ };
41
+ Object.defineProperty(exports, "__esModule", { value: true });
42
+ var libp2p_1 = __importDefault(require("libp2p"));
43
+ var libp2p_websockets_1 = __importDefault(require("libp2p-websockets"));
44
+ var libp2p_webrtc_star_1 = __importDefault(require("libp2p-webrtc-star"));
45
+ var libp2p_noise_1 = require("@chainsafe/libp2p-noise");
46
+ var libp2p_mplex_1 = __importDefault(require("libp2p-mplex"));
47
+ var tooldb_protocol_1 = require("./tooldb-protocol");
48
+ function create(db) {
49
+ return __awaiter(this, void 0, void 0, function () {
50
+ var options, node;
51
+ var _this = this;
52
+ return __generator(this, function (_a) {
53
+ switch (_a.label) {
54
+ case 0:
55
+ options = {
56
+ addresses: {
57
+ listen: [
58
+ "/dns4/wrtc-star1.par.dwebops.pub/tcp/443/wss/p2p-webrtc-star",
59
+ "/dns4/wrtc-star2.sjc.dwebops.pub/tcp/443/wss/p2p-webrtc-star",
60
+ ],
61
+ },
62
+ modules: {
63
+ transport: [libp2p_websockets_1.default, libp2p_webrtc_star_1.default],
64
+ connEncryption: [libp2p_noise_1.NOISE],
65
+ streamMuxer: [libp2p_mplex_1.default],
66
+ },
67
+ };
68
+ return [4 /*yield*/, libp2p_1.default.create(options)];
69
+ case 1:
70
+ node = _a.sent();
71
+ window.libp2p = node;
72
+ db.options.id = node.peerId.toB58String();
73
+ // Listen for new peers
74
+ // node.on("peer:discovery", (peerId) => {
75
+ // console.log(`Found peer ${peerId.toB58String()}`);
76
+ // });
77
+ // Listen for new connections to peers
78
+ node.connectionManager.on("peer:connect", function (connection) {
79
+ // Send message to other peers (connected) using the protocol
80
+ node.peerStore.peers.forEach(function (peer) { return __awaiter(_this, void 0, void 0, function () {
81
+ var connection, pid, stream, err_1;
82
+ return __generator(this, function (_a) {
83
+ switch (_a.label) {
84
+ case 0:
85
+ connection = node.connectionManager.get(peer.id);
86
+ if (!connection)
87
+ return [2 /*return*/];
88
+ if (!peer.protocols.includes(tooldb_protocol_1.PROTOCOL_VER)) {
89
+ // Close connections without our protocol
90
+ connection.close();
91
+ return [2 /*return*/];
92
+ }
93
+ pid = peer.id.toB58String();
94
+ if (!!db.websockets.clientSockets[pid]) return [3 /*break*/, 5];
95
+ console.warn("Protocol found " + tooldb_protocol_1.PROTOCOL_VER);
96
+ _a.label = 1;
97
+ case 1:
98
+ _a.trys.push([1, 4, , 5]);
99
+ return [4 /*yield*/, connection.newStream([tooldb_protocol_1.PROTOCOL_VER])];
100
+ case 2:
101
+ stream = (_a.sent()).stream;
102
+ db.websockets.clientSockets[pid] = stream;
103
+ return [4 /*yield*/, (0, tooldb_protocol_1.toolDbProtocolSend)("message data test " + Math.round(Math.random() * 9999), stream, db)];
104
+ case 3:
105
+ _a.sent();
106
+ return [3 /*break*/, 5];
107
+ case 4:
108
+ err_1 = _a.sent();
109
+ console.info("Could not handshake protocol with peer", err_1);
110
+ return [3 /*break*/, 5];
111
+ case 5: return [2 /*return*/];
112
+ }
113
+ });
114
+ }); });
115
+ });
116
+ // Listen for peers disconnecting
117
+ node.connectionManager.on("peer:disconnect", function (connection) {
118
+ var pid = connection.remotePeer.toB58String();
119
+ delete db.websockets.clientSockets[pid];
120
+ });
121
+ node.handle(tooldb_protocol_1.PROTOCOL_VER, function (args) { return (0, tooldb_protocol_1.toolDbProtocolHandler)(args, db); });
122
+ return [4 /*yield*/, node.start()];
123
+ case 2:
124
+ _a.sent();
125
+ return [2 /*return*/];
126
+ }
127
+ });
128
+ });
129
+ }
130
+ exports.default = create;
131
+ //# sourceMappingURL=create.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create.js","sourceRoot":"","sources":["../../src/libp2p/create.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,kDAA4B;AAC5B,wEAA2C;AAC3C,0EAA4C;AAC5C,wDAAgD;AAChD,8DAAiC;AAEjC,qDAI2B;AAG3B,SAA8B,MAAM,CAAC,EAAU;;;;;;;oBACvC,OAAO,GAAG;wBACd,SAAS,EAAE;4BACT,MAAM,EAAE;gCACN,8DAA8D;gCAC9D,8DAA8D;6BAC/D;yBACF;wBACD,OAAO,EAAE;4BACP,SAAS,EAAE,CAAC,2BAAU,EAAE,4BAAU,CAAC;4BACnC,cAAc,EAAE,CAAC,oBAAK,CAAC;4BACvB,WAAW,EAAE,CAAC,sBAAK,CAAC;yBACrB;qBACF,CAAC;oBAEW,qBAAM,gBAAM,CAAC,MAAM,CAAC,OAAO,CAAC,EAAA;;oBAAnC,IAAI,GAAG,SAA4B;oBACxC,MAAc,CAAC,MAAM,GAAG,IAAI,CAAC;oBAC9B,EAAE,CAAC,OAAO,CAAC,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;oBAE1C,uBAAuB;oBACvB,0CAA0C;oBAC1C,uDAAuD;oBACvD,MAAM;oBAEN,sCAAsC;oBACtC,IAAI,CAAC,iBAAiB,CAAC,EAAE,CAAC,cAAc,EAAE,UAAC,UAAe;wBACxD,6DAA6D;wBAC7D,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,UAAO,IAAS;;;;;wCACrC,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;wCACvD,IAAI,CAAC,UAAU;4CAAE,sBAAO;wCACxB,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,8BAAY,CAAC,EAAE;4CAC1C,yCAAyC;4CACzC,UAAU,CAAC,KAAK,EAAE,CAAC;4CACnB,sBAAO;yCACR;wCACK,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC;6CAE9B,CAAC,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,GAAG,CAAC,EAAjC,wBAAiC;wCACnC,OAAO,CAAC,IAAI,CAAC,oBAAkB,8BAAc,CAAC,CAAC;;;;wCAE1B,qBAAM,UAAU,CAAC,SAAS,CAAC,CAAC,8BAAY,CAAC,CAAC,EAAA;;wCAArD,MAAM,GAAK,CAAA,SAA0C,CAAA,OAA/C;wCACd,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC;wCAC1C,qBAAM,IAAA,oCAAkB,EACtB,oBAAoB,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,EACvD,MAAM,EACN,EAAE,CACH,EAAA;;wCAJD,SAIC,CAAC;;;;wCAEF,OAAO,CAAC,IAAI,CAAC,wCAAwC,EAAE,KAAG,CAAC,CAAC;;;;;6BAGjE,CAAC,CAAC;oBACL,CAAC,CAAC,CAAC;oBAEH,iCAAiC;oBACjC,IAAI,CAAC,iBAAiB,CAAC,EAAE,CAAC,iBAAiB,EAAE,UAAC,UAAe;wBAC3D,IAAM,GAAG,GAAG,UAAU,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;wBAChD,OAAO,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;oBAC1C,CAAC,CAAC,CAAC;oBAEH,IAAI,CAAC,MAAM,CAAC,8BAAY,EAAE,UAAC,IAAS,IAAK,OAAA,IAAA,uCAAqB,EAAC,IAAI,EAAE,EAAE,CAAC,EAA/B,CAA+B,CAAC,CAAC;oBAC1E,qBAAM,IAAI,CAAC,KAAK,EAAE,EAAA;;oBAAlB,SAAkB,CAAC;;;;;CACpB;AA9DD,yBA8DC"}
@@ -0,0 +1,3 @@
1
+ import Libp2p from "libp2p";
2
+ import { ToolDb } from "..";
3
+ export default function createLibP2p(db: ToolDb): Promise<Libp2p>;
@@ -0,0 +1,130 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __generator = (this && this.__generator) || function (thisArg, body) {
12
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
13
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
14
+ function verb(n) { return function (v) { return step([n, v]); }; }
15
+ function step(op) {
16
+ if (f) throw new TypeError("Generator is already executing.");
17
+ while (_) try {
18
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
19
+ if (y = 0, t) op = [op[0] & 2, t.value];
20
+ switch (op[0]) {
21
+ case 0: case 1: t = op; break;
22
+ case 4: _.label++; return { value: op[1], done: false };
23
+ case 5: _.label++; y = op[1]; op = [0]; continue;
24
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
25
+ default:
26
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
27
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
28
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
29
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
30
+ if (t[2]) _.ops.pop();
31
+ _.trys.pop(); continue;
32
+ }
33
+ op = body.call(thisArg, _);
34
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
35
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
36
+ }
37
+ };
38
+ var __importDefault = (this && this.__importDefault) || function (mod) {
39
+ return (mod && mod.__esModule) ? mod : { "default": mod };
40
+ };
41
+ Object.defineProperty(exports, "__esModule", { value: true });
42
+ var libp2p_1 = __importDefault(require("libp2p"));
43
+ var libp2p_websockets_1 = __importDefault(require("libp2p-websockets"));
44
+ var libp2p_webrtc_star_1 = __importDefault(require("libp2p-webrtc-star"));
45
+ var libp2p_noise_1 = require("@chainsafe/libp2p-noise");
46
+ var libp2p_mplex_1 = __importDefault(require("libp2p-mplex"));
47
+ function createLibP2p(db) {
48
+ return __awaiter(this, void 0, void 0, function () {
49
+ var options, node;
50
+ var _this = this;
51
+ return __generator(this, function (_a) {
52
+ switch (_a.label) {
53
+ case 0:
54
+ options = {
55
+ addresses: {
56
+ listen: [
57
+ "/dns4/wrtc-star1.par.dwebops.pub/tcp/443/wss/p2p-webrtc-star",
58
+ "/dns4/wrtc-star2.sjc.dwebops.pub/tcp/443/wss/p2p-webrtc-star",
59
+ ],
60
+ },
61
+ modules: {
62
+ transport: [libp2p_websockets_1.default, libp2p_webrtc_star_1.default],
63
+ connEncryption: [libp2p_noise_1.NOISE],
64
+ streamMuxer: [libp2p_mplex_1.default],
65
+ },
66
+ };
67
+ return [4 /*yield*/, libp2p_1.default.create(options)];
68
+ case 1:
69
+ node = _a.sent();
70
+ window.libp2p = node;
71
+ db.options.id = node.peerId.toB58String();
72
+ // Listen for new peers
73
+ // node.on("peer:discovery", (peerId) => {
74
+ // console.log(`Found peer ${peerId.toB58String()}`);
75
+ // });
76
+ // Listen for new connections to peers
77
+ node.connectionManager.on("peer:connect", function (connection) {
78
+ // Send message to other peers (connected) using the protocol
79
+ node.peerStore.peers.forEach(function (peer) { return __awaiter(_this, void 0, void 0, function () {
80
+ var connection, pid, stream, err_1;
81
+ return __generator(this, function (_a) {
82
+ switch (_a.label) {
83
+ case 0:
84
+ connection = node.connectionManager.get(peer.id);
85
+ if (!connection)
86
+ return [2 /*return*/];
87
+ if (!peer.protocols.includes(PROTOCOL_VER)) {
88
+ // Close connections without our protocol
89
+ connection.close();
90
+ return [2 /*return*/];
91
+ }
92
+ pid = peer.id.toB58String();
93
+ if (!!db.websockets.clientSockets[pid]) return [3 /*break*/, 5];
94
+ console.warn("Protocol found " + PROTOCOL_VER);
95
+ _a.label = 1;
96
+ case 1:
97
+ _a.trys.push([1, 4, , 5]);
98
+ return [4 /*yield*/, connection.newStream([PROTOCOL_VER])];
99
+ case 2:
100
+ stream = (_a.sent()).stream;
101
+ db.websockets.clientSockets[pid] = stream;
102
+ return [4 /*yield*/, toolDbProtocolSend("message data test " + Math.round(Math.random() * 9999), stream, db)];
103
+ case 3:
104
+ _a.sent();
105
+ return [3 /*break*/, 5];
106
+ case 4:
107
+ err_1 = _a.sent();
108
+ console.info("Could not handshake protocol with peer", err_1);
109
+ return [3 /*break*/, 5];
110
+ case 5: return [2 /*return*/];
111
+ }
112
+ });
113
+ }); });
114
+ });
115
+ // Listen for peers disconnecting
116
+ node.connectionManager.on("peer:disconnect", function (connection) {
117
+ var pid = connection.remotePeer.toB58String();
118
+ delete db.websockets.clientSockets[pid];
119
+ });
120
+ node.handle(PROTOCOL_VER, function (args) { return toolDbProtocolHandler(args, db); });
121
+ return [4 /*yield*/, node.start()];
122
+ case 2:
123
+ _a.sent();
124
+ return [2 /*return*/, node];
125
+ }
126
+ });
127
+ });
128
+ }
129
+ exports.default = createLibP2p;
130
+ //# sourceMappingURL=createLibP2p.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createLibP2p.js","sourceRoot":"","sources":["../../src/libp2p/createLibP2p.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,kDAA4B;AAC5B,wEAA2C;AAC3C,0EAA4C;AAC5C,wDAAgD;AAChD,8DAAiC;AAIjC,SAA8B,YAAY,CAAC,EAAU;;;;;;;oBAC7C,OAAO,GAAG;wBACd,SAAS,EAAE;4BACT,MAAM,EAAE;gCACN,8DAA8D;gCAC9D,8DAA8D;6BAC/D;yBACF;wBACD,OAAO,EAAE;4BACP,SAAS,EAAE,CAAC,2BAAU,EAAE,4BAAU,CAAC;4BACnC,cAAc,EAAE,CAAC,oBAAK,CAAC;4BACvB,WAAW,EAAE,CAAC,sBAAK,CAAC;yBACrB;qBACF,CAAC;oBAEW,qBAAM,gBAAM,CAAC,MAAM,CAAC,OAAO,CAAC,EAAA;;oBAAnC,IAAI,GAAG,SAA4B;oBACxC,MAAc,CAAC,MAAM,GAAG,IAAI,CAAC;oBAC9B,EAAE,CAAC,OAAO,CAAC,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;oBAE1C,uBAAuB;oBACvB,0CAA0C;oBAC1C,uDAAuD;oBACvD,MAAM;oBAEN,sCAAsC;oBACtC,IAAI,CAAC,iBAAiB,CAAC,EAAE,CAAC,cAAc,EAAE,UAAC,UAAe;wBACxD,6DAA6D;wBAC7D,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,UAAO,IAAS;;;;;wCACrC,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;wCACvD,IAAI,CAAC,UAAU;4CAAE,sBAAO;wCACxB,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE;4CAC1C,yCAAyC;4CACzC,UAAU,CAAC,KAAK,EAAE,CAAC;4CACnB,sBAAO;yCACR;wCACK,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC;6CAE9B,CAAC,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,GAAG,CAAC,EAAjC,wBAAiC;wCACnC,OAAO,CAAC,IAAI,CAAC,oBAAkB,YAAc,CAAC,CAAC;;;;wCAE1B,qBAAM,UAAU,CAAC,SAAS,CAAC,CAAC,YAAY,CAAC,CAAC,EAAA;;wCAArD,MAAM,GAAK,CAAA,SAA0C,CAAA,OAA/C;wCACd,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC;wCAC1C,qBAAM,kBAAkB,CACtB,oBAAoB,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,EACvD,MAAM,EACN,EAAE,CACH,EAAA;;wCAJD,SAIC,CAAC;;;;wCAEF,OAAO,CAAC,IAAI,CAAC,wCAAwC,EAAE,KAAG,CAAC,CAAC;;;;;6BAGjE,CAAC,CAAC;oBACL,CAAC,CAAC,CAAC;oBAEH,iCAAiC;oBACjC,IAAI,CAAC,iBAAiB,CAAC,EAAE,CAAC,iBAAiB,EAAE,UAAC,UAAe;wBAC3D,IAAM,GAAG,GAAG,UAAU,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;wBAChD,OAAO,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;oBAC1C,CAAC,CAAC,CAAC;oBAEH,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,UAAC,IAAS,IAAK,OAAA,qBAAqB,CAAC,IAAI,EAAE,EAAE,CAAC,EAA/B,CAA+B,CAAC,CAAC;oBAC1E,qBAAM,IAAI,CAAC,KAAK,EAAE,EAAA;;oBAAlB,SAAkB,CAAC;oBACnB,sBAAO,IAAI,EAAC;;;;CACb;AA/DD,+BA+DC"}
@@ -0,0 +1,19 @@
1
+ import { MuxedStream } from "libp2p-interfaces/dist/src/stream-muxer/types";
2
+ import { ToolDb } from "..";
3
+ export declare const PROTOCOL_VER = "/tooldb/1.2.0";
4
+ /**
5
+ * A simple handler to print incoming messages to the console
6
+ * @param {Object} params
7
+ * @param {Connection} params.connection The connection the stream belongs to
8
+ * @param {Stream} params.stream stream to the peer
9
+ */
10
+ export declare function toolDbProtocolHandler({ connection, stream, }: {
11
+ connection: any;
12
+ stream: any[];
13
+ }, db: ToolDb): Promise<void>;
14
+ /**
15
+ * Writes a given `message` over the given `stream`.
16
+ * @param {String} message The message to send over `stream`
17
+ * @param {Stream} stream A stream over the muxed Connection to our peer
18
+ */
19
+ export declare function toolDbProtocolSend(message: string, stream: MuxedStream, db: ToolDb): Promise<void>;
@@ -0,0 +1,156 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __generator = (this && this.__generator) || function (thisArg, body) {
12
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
13
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
14
+ function verb(n) { return function (v) { return step([n, v]); }; }
15
+ function step(op) {
16
+ if (f) throw new TypeError("Generator is already executing.");
17
+ while (_) try {
18
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
19
+ if (y = 0, t) op = [op[0] & 2, t.value];
20
+ switch (op[0]) {
21
+ case 0: case 1: t = op; break;
22
+ case 4: _.label++; return { value: op[1], done: false };
23
+ case 5: _.label++; y = op[1]; op = [0]; continue;
24
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
25
+ default:
26
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
27
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
28
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
29
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
30
+ if (t[2]) _.ops.pop();
31
+ _.trys.pop(); continue;
32
+ }
33
+ op = body.call(thisArg, _);
34
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
35
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
36
+ }
37
+ };
38
+ var __asyncValues = (this && this.__asyncValues) || function (o) {
39
+ if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
40
+ var m = o[Symbol.asyncIterator], i;
41
+ return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i);
42
+ function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }
43
+ function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }
44
+ };
45
+ var __importDefault = (this && this.__importDefault) || function (mod) {
46
+ return (mod && mod.__esModule) ? mod : { "default": mod };
47
+ };
48
+ Object.defineProperty(exports, "__esModule", { value: true });
49
+ exports.toolDbProtocolSend = exports.toolDbProtocolHandler = exports.PROTOCOL_VER = void 0;
50
+ var it_pipe_1 = __importDefault(require("it-pipe"));
51
+ exports.PROTOCOL_VER = "/tooldb/1.2.0";
52
+ /**
53
+ * A simple handler to print incoming messages to the console
54
+ * @param {Object} params
55
+ * @param {Connection} params.connection The connection the stream belongs to
56
+ * @param {Stream} params.stream stream to the peer
57
+ */
58
+ function toolDbProtocolHandler(_a, db) {
59
+ var connection = _a.connection, stream = _a.stream;
60
+ return __awaiter(this, void 0, void 0, function () {
61
+ var err_1;
62
+ return __generator(this, function (_b) {
63
+ switch (_b.label) {
64
+ case 0:
65
+ _b.trys.push([0, 3, , 4]);
66
+ return [4 /*yield*/, (0, it_pipe_1.default)(stream, function (source) {
67
+ var source_1, source_1_1;
68
+ var e_1, _a;
69
+ return __awaiter(this, void 0, void 0, function () {
70
+ var message, e_1_1;
71
+ return __generator(this, function (_b) {
72
+ switch (_b.label) {
73
+ case 0:
74
+ _b.trys.push([0, 5, 6, 11]);
75
+ source_1 = __asyncValues(source);
76
+ _b.label = 1;
77
+ case 1: return [4 /*yield*/, source_1.next()];
78
+ case 2:
79
+ if (!(source_1_1 = _b.sent(), !source_1_1.done)) return [3 /*break*/, 4];
80
+ message = source_1_1.value;
81
+ db.clientOnMessage(message, connection.remotePeer.toB58String());
82
+ _b.label = 3;
83
+ case 3: return [3 /*break*/, 1];
84
+ case 4: return [3 /*break*/, 11];
85
+ case 5:
86
+ e_1_1 = _b.sent();
87
+ e_1 = { error: e_1_1 };
88
+ return [3 /*break*/, 11];
89
+ case 6:
90
+ _b.trys.push([6, , 9, 10]);
91
+ if (!(source_1_1 && !source_1_1.done && (_a = source_1.return))) return [3 /*break*/, 8];
92
+ return [4 /*yield*/, _a.call(source_1)];
93
+ case 7:
94
+ _b.sent();
95
+ _b.label = 8;
96
+ case 8: return [3 /*break*/, 10];
97
+ case 9:
98
+ if (e_1) throw e_1.error;
99
+ return [7 /*endfinally*/];
100
+ case 10: return [7 /*endfinally*/];
101
+ case 11: return [2 /*return*/];
102
+ }
103
+ });
104
+ });
105
+ })];
106
+ case 1:
107
+ _b.sent();
108
+ // Replies are done on new streams, so let's close this stream so we don't leak it
109
+ return [4 /*yield*/, (0, it_pipe_1.default)([], stream)];
110
+ case 2:
111
+ // Replies are done on new streams, so let's close this stream so we don't leak it
112
+ _b.sent();
113
+ return [3 /*break*/, 4];
114
+ case 3:
115
+ err_1 = _b.sent();
116
+ console.error(err_1);
117
+ return [3 /*break*/, 4];
118
+ case 4: return [2 /*return*/];
119
+ }
120
+ });
121
+ });
122
+ }
123
+ exports.toolDbProtocolHandler = toolDbProtocolHandler;
124
+ /**
125
+ * Writes a given `message` over the given `stream`.
126
+ * @param {String} message The message to send over `stream`
127
+ * @param {Stream} stream A stream over the muxed Connection to our peer
128
+ */
129
+ function toolDbProtocolSend(message, stream, db) {
130
+ return __awaiter(this, void 0, void 0, function () {
131
+ var err_2;
132
+ return __generator(this, function (_a) {
133
+ switch (_a.label) {
134
+ case 0:
135
+ _a.trys.push([0, 2, , 3]);
136
+ return [4 /*yield*/, (0, it_pipe_1.default)([message], stream, function (_source) {
137
+ return __awaiter(this, void 0, void 0, function () {
138
+ return __generator(this, function (_a) {
139
+ return [2 /*return*/];
140
+ });
141
+ });
142
+ })];
143
+ case 1:
144
+ _a.sent();
145
+ return [3 /*break*/, 3];
146
+ case 2:
147
+ err_2 = _a.sent();
148
+ console.error(err_2);
149
+ return [3 /*break*/, 3];
150
+ case 3: return [2 /*return*/];
151
+ }
152
+ });
153
+ });
154
+ }
155
+ exports.toolDbProtocolSend = toolDbProtocolSend;
156
+ //# sourceMappingURL=tooldb-protocol.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tooldb-protocol.js","sourceRoot":"","sources":["../../src/libp2p/tooldb-protocol.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGA,oDAA2B;AAEd,QAAA,YAAY,GAAG,eAAe,CAAC;AAE5C;;;;;GAKG;AACH,SAAsB,qBAAqB,CACzC,EAMC,EACD,EAAU;QANR,UAAU,gBAAA,EACV,MAAM,YAAA;;;;;;;oBAQN,qBAAM,IAAA,iBAAI,EAAC,MAAM,EAAE,UAAgB,MAAM;;;;;;;;;4CACX,WAAA,cAAA,MAAM,CAAA;;;;;4CAAjB,OAAO,mBAAA,CAAA;4CACtB,EAAE,CAAC,eAAe,CAAC,OAAO,EAAE,UAAU,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;yBAEpE,CAAC,EAAA;;oBAJF,SAIE,CAAC;oBACH,kFAAkF;oBAClF,qBAAM,IAAA,iBAAI,EAAC,EAAE,EAAE,MAAM,CAAC,EAAA;;oBADtB,kFAAkF;oBAClF,SAAsB,CAAC;;;;oBAEvB,OAAO,CAAC,KAAK,CAAC,KAAG,CAAC,CAAC;;;;;;CAEtB;AArBD,sDAqBC;AAED;;;;GAIG;AACH,SAAsB,kBAAkB,CACtC,OAAe,EACf,MAAmB,EACnB,EAAU;;;;;;;oBAGR,qBAAM,IAAA,iBAAI,EAAC,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,UAAgB,OAAY;;;;;;yBAIzD,CAAC,EAAA;;oBAJF,SAIE,CAAC;;;;oBAEH,OAAO,CAAC,KAAK,CAAC,KAAG,CAAC,CAAC;;;;;;CAEtB;AAdD,gDAcC"}
@@ -0,0 +1,2 @@
1
+ import { CrdtMessage, ToolDb } from "..";
2
+ export default function handleCrdt(this: ToolDb, message: CrdtMessage, remotePeerId: string): void;