tool-db 1.2.3 → 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 (135) 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 -264
  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.js +2 -2
  112. package/dist/wss.js.map +1 -1
  113. package/jest.config.ts +2 -1
  114. package/package.json +3 -2
  115. package/test-alice/000003.log +0 -0
  116. package/test-alice/CURRENT +1 -0
  117. package/test-alice/LOCK +0 -0
  118. package/test-alice/LOG +1 -0
  119. package/test-alice/MANIFEST-000002 +0 -0
  120. package/test-bob/000003.log +0 -0
  121. package/test-bob/CURRENT +1 -0
  122. package/test-bob/LOCK +0 -0
  123. package/test-bob/LOG +1 -0
  124. package/test-bob/MANIFEST-000002 +0 -0
  125. package/test-node-a/000003.log +0 -0
  126. package/test-node-a/CURRENT +1 -0
  127. package/test-node-a/LOCK +0 -0
  128. package/test-node-a/LOG +1 -0
  129. package/test-node-a/MANIFEST-000002 +0 -0
  130. package/test-node-b/000003.log +0 -0
  131. package/test-node-b/CURRENT +1 -0
  132. package/test-node-b/LOCK +0 -0
  133. package/test-node-b/LOG +1 -0
  134. package/test-node-b/MANIFEST-000002 +0 -0
  135. package/toolDbLibP2p.ts +206 -0
@@ -0,0 +1,375 @@
1
+ "use strict";
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
13
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
14
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
15
+ return new (P || (P = Promise))(function (resolve, reject) {
16
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
17
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
18
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
19
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
20
+ });
21
+ };
22
+ var __generator = (this && this.__generator) || function (thisArg, body) {
23
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
24
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
25
+ function verb(n) { return function (v) { return step([n, v]); }; }
26
+ function step(op) {
27
+ if (f) throw new TypeError("Generator is already executing.");
28
+ while (_) try {
29
+ 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;
30
+ if (y = 0, t) op = [op[0] & 2, t.value];
31
+ switch (op[0]) {
32
+ case 0: case 1: t = op; break;
33
+ case 4: _.label++; return { value: op[1], done: false };
34
+ case 5: _.label++; y = op[1]; op = [0]; continue;
35
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
36
+ default:
37
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
38
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
39
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
40
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
41
+ if (t[2]) _.ops.pop();
42
+ _.trys.pop(); continue;
43
+ }
44
+ op = body.call(thisArg, _);
45
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
46
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
47
+ }
48
+ };
49
+ var __asyncValues = (this && this.__asyncValues) || function (o) {
50
+ if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
51
+ var m = o[Symbol.asyncIterator], i;
52
+ 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);
53
+ 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); }); }; }
54
+ function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }
55
+ };
56
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
57
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
58
+ if (ar || !(i in from)) {
59
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
60
+ ar[i] = from[i];
61
+ }
62
+ }
63
+ return to.concat(ar || Array.prototype.slice.call(from));
64
+ };
65
+ var __importDefault = (this && this.__importDefault) || function (mod) {
66
+ return (mod && mod.__esModule) ? mod : { "default": mod };
67
+ };
68
+ Object.defineProperty(exports, "__esModule", { value: true });
69
+ exports.PROTOCOL_VER = void 0;
70
+ var lodash_1 = __importDefault(require("lodash"));
71
+ var libp2p_1 = __importDefault(require("libp2p"));
72
+ var libp2p_websockets_1 = __importDefault(require("libp2p-websockets"));
73
+ var libp2p_webrtc_star_1 = __importDefault(require("libp2p-webrtc-star"));
74
+ var libp2p_noise_1 = require("@chainsafe/libp2p-noise");
75
+ var libp2p_mplex_1 = __importDefault(require("libp2p-mplex"));
76
+ var it_pipe_1 = __importDefault(require("it-pipe"));
77
+ var _1 = require(".");
78
+ exports.PROTOCOL_VER = "/tooldb/1.2.0";
79
+ var toolDbLibP2p = /** @class */ (function () {
80
+ function toolDbLibP2p(db) {
81
+ this._clientSockets = {};
82
+ this._tooldb = db;
83
+ this.options = db.options;
84
+ this.createLibP2p();
85
+ if (this.options.server) {
86
+ //
87
+ }
88
+ }
89
+ Object.defineProperty(toolDbLibP2p.prototype, "clientSockets", {
90
+ get: function () {
91
+ return this._clientSockets;
92
+ },
93
+ enumerable: false,
94
+ configurable: true
95
+ });
96
+ Object.defineProperty(toolDbLibP2p.prototype, "libp2p", {
97
+ get: function () {
98
+ return this._libp2p;
99
+ },
100
+ enumerable: false,
101
+ configurable: true
102
+ });
103
+ toolDbLibP2p.prototype.createLibP2p = function () {
104
+ return __awaiter(this, void 0, void 0, function () {
105
+ var options, node;
106
+ var _this = this;
107
+ return __generator(this, function (_a) {
108
+ switch (_a.label) {
109
+ case 0:
110
+ options = {
111
+ addresses: {
112
+ listen: [
113
+ "/dns4/wrtc-star1.par.dwebops.pub/tcp/443/wss/p2p-webrtc-star",
114
+ "/dns4/wrtc-star2.sjc.dwebops.pub/tcp/443/wss/p2p-webrtc-star",
115
+ ],
116
+ },
117
+ modules: {
118
+ transport: [libp2p_websockets_1.default, libp2p_webrtc_star_1.default],
119
+ connEncryption: [libp2p_noise_1.NOISE],
120
+ streamMuxer: [libp2p_mplex_1.default],
121
+ },
122
+ };
123
+ return [4 /*yield*/, libp2p_1.default.create(options)];
124
+ case 1:
125
+ node = _a.sent();
126
+ this._libp2p = node;
127
+ window.libp2p = node;
128
+ this._tooldb.options.id = node.peerId.toB58String();
129
+ // Listen for new peers
130
+ // node.on("peer:discovery", (peerId) => {
131
+ // console.log(`Found peer ${peerId.toB58String()}`);
132
+ // });
133
+ // Listen for new connections to peers
134
+ node.connectionManager.on("peer:connect", function (connection) {
135
+ // Send message to other peers (connected) using the protocol
136
+ node.peerStore.peers.forEach(function (peer) { return __awaiter(_this, void 0, void 0, function () {
137
+ var connection, pid, stream, err_1;
138
+ return __generator(this, function (_a) {
139
+ switch (_a.label) {
140
+ case 0:
141
+ connection = node.connectionManager.get(peer.id);
142
+ if (!connection)
143
+ return [2 /*return*/];
144
+ if (!peer.protocols.includes(exports.PROTOCOL_VER)) {
145
+ // Close connections without our protocol
146
+ connection.close();
147
+ return [2 /*return*/];
148
+ }
149
+ pid = peer.id.toB58String();
150
+ if (!!this.clientSockets[pid]) return [3 /*break*/, 5];
151
+ console.warn("Protocol found " + exports.PROTOCOL_VER);
152
+ _a.label = 1;
153
+ case 1:
154
+ _a.trys.push([1, 4, , 5]);
155
+ return [4 /*yield*/, connection.newStream([exports.PROTOCOL_VER])];
156
+ case 2:
157
+ stream = (_a.sent()).stream;
158
+ this.clientSockets[pid] = stream;
159
+ return [4 /*yield*/, this.sendToClientId(pid, {
160
+ type: "ping",
161
+ clientId: this.options.id,
162
+ to: [this.options.id],
163
+ isServer: this.options.server,
164
+ id: (0, _1.textRandom)(10),
165
+ })];
166
+ case 3:
167
+ _a.sent();
168
+ return [3 /*break*/, 5];
169
+ case 4:
170
+ err_1 = _a.sent();
171
+ console.info("Could not handshake protocol with peer", err_1);
172
+ return [3 /*break*/, 5];
173
+ case 5: return [2 /*return*/];
174
+ }
175
+ });
176
+ }); });
177
+ });
178
+ // Listen for peers disconnecting
179
+ node.connectionManager.on("peer:disconnect", function (connection) {
180
+ var pid = connection.remotePeer.toB58String();
181
+ delete _this.clientSockets[pid];
182
+ });
183
+ node.handle(exports.PROTOCOL_VER, function (args) { return _this.toolDbProtocolHandler(args); });
184
+ return [4 /*yield*/, node.start()];
185
+ case 2:
186
+ _a.sent();
187
+ return [2 /*return*/, node];
188
+ }
189
+ });
190
+ });
191
+ };
192
+ toolDbLibP2p.prototype.close = function (clientId) {
193
+ if (this.libp2p) {
194
+ var conn = this.libp2p.connections.get(clientId);
195
+ if (conn && conn[0]) {
196
+ conn[0].close();
197
+ }
198
+ }
199
+ };
200
+ /**
201
+ * A simple handler to print incoming messages to the console
202
+ * @param {Object} params
203
+ * @param {Connection} params.connection The connection the stream belongs to
204
+ * @param {Stream} params.stream stream to the peer
205
+ */
206
+ toolDbLibP2p.prototype.toolDbProtocolHandler = function (_a) {
207
+ var connection = _a.connection, stream = _a.stream;
208
+ return __awaiter(this, void 0, void 0, function () {
209
+ var err_2;
210
+ var _this = this;
211
+ return __generator(this, function (_b) {
212
+ switch (_b.label) {
213
+ case 0:
214
+ _b.trys.push([0, 3, , 4]);
215
+ return [4 /*yield*/, (0, it_pipe_1.default)(stream, function (source) { var source_1, source_1_1; return __awaiter(_this, void 0, void 0, function () {
216
+ var message, msg, e_1_1;
217
+ var e_1, _a;
218
+ return __generator(this, function (_b) {
219
+ switch (_b.label) {
220
+ case 0:
221
+ _b.trys.push([0, 5, 6, 11]);
222
+ source_1 = __asyncValues(source);
223
+ _b.label = 1;
224
+ case 1: return [4 /*yield*/, source_1.next()];
225
+ case 2:
226
+ if (!(source_1_1 = _b.sent(), !source_1_1.done)) return [3 /*break*/, 4];
227
+ message = source_1_1.value;
228
+ console.info(connection.remotePeer.toB58String() + ": " + message);
229
+ try {
230
+ msg = JSON.parse("" + message);
231
+ this._tooldb.clientOnMessage(msg, connection.remotePeer.toB58String());
232
+ }
233
+ catch (e) {
234
+ console.log("Got message ERR > ", message);
235
+ console.log(e);
236
+ }
237
+ _b.label = 3;
238
+ case 3: return [3 /*break*/, 1];
239
+ case 4: return [3 /*break*/, 11];
240
+ case 5:
241
+ e_1_1 = _b.sent();
242
+ e_1 = { error: e_1_1 };
243
+ return [3 /*break*/, 11];
244
+ case 6:
245
+ _b.trys.push([6, , 9, 10]);
246
+ if (!(source_1_1 && !source_1_1.done && (_a = source_1.return))) return [3 /*break*/, 8];
247
+ return [4 /*yield*/, _a.call(source_1)];
248
+ case 7:
249
+ _b.sent();
250
+ _b.label = 8;
251
+ case 8: return [3 /*break*/, 10];
252
+ case 9:
253
+ if (e_1) throw e_1.error;
254
+ return [7 /*endfinally*/];
255
+ case 10: return [7 /*endfinally*/];
256
+ case 11: return [2 /*return*/];
257
+ }
258
+ });
259
+ }); })];
260
+ case 1:
261
+ _b.sent();
262
+ // Replies are done on new streams, so let's close this stream so we don't leak it
263
+ return [4 /*yield*/, (0, it_pipe_1.default)([], stream)];
264
+ case 2:
265
+ // Replies are done on new streams, so let's close this stream so we don't leak it
266
+ _b.sent();
267
+ return [3 /*break*/, 4];
268
+ case 3:
269
+ err_2 = _b.sent();
270
+ console.error(err_2);
271
+ return [3 /*break*/, 4];
272
+ case 4: return [2 /*return*/];
273
+ }
274
+ });
275
+ });
276
+ };
277
+ /**
278
+ * Writes a given `message` over the given `stream`.
279
+ * @param {String} message The message to send over `stream`
280
+ * @param {Stream} stream A stream over the muxed Connection to our peer
281
+ */
282
+ toolDbLibP2p.prototype.toolDbProtocolSend = function (message, stream) {
283
+ return __awaiter(this, void 0, void 0, function () {
284
+ var err_3;
285
+ return __generator(this, function (_a) {
286
+ switch (_a.label) {
287
+ case 0:
288
+ _a.trys.push([0, 2, , 3]);
289
+ return [4 /*yield*/, (0, it_pipe_1.default)([message], stream, function (source) {
290
+ var source_2, source_2_1;
291
+ var e_2, _a;
292
+ return __awaiter(this, void 0, void 0, function () {
293
+ var message_1, e_2_1;
294
+ return __generator(this, function (_b) {
295
+ switch (_b.label) {
296
+ case 0:
297
+ _b.trys.push([0, 5, 6, 11]);
298
+ source_2 = __asyncValues(source);
299
+ _b.label = 1;
300
+ case 1: return [4 /*yield*/, source_2.next()];
301
+ case 2:
302
+ if (!(source_2_1 = _b.sent(), !source_2_1.done)) return [3 /*break*/, 4];
303
+ message_1 = source_2_1.value;
304
+ console.info("Me: " + message_1);
305
+ _b.label = 3;
306
+ case 3: return [3 /*break*/, 1];
307
+ case 4: return [3 /*break*/, 11];
308
+ case 5:
309
+ e_2_1 = _b.sent();
310
+ e_2 = { error: e_2_1 };
311
+ return [3 /*break*/, 11];
312
+ case 6:
313
+ _b.trys.push([6, , 9, 10]);
314
+ if (!(source_2_1 && !source_2_1.done && (_a = source_2.return))) return [3 /*break*/, 8];
315
+ return [4 /*yield*/, _a.call(source_2)];
316
+ case 7:
317
+ _b.sent();
318
+ _b.label = 8;
319
+ case 8: return [3 /*break*/, 10];
320
+ case 9:
321
+ if (e_2) throw e_2.error;
322
+ return [7 /*endfinally*/];
323
+ case 10: return [7 /*endfinally*/];
324
+ case 11: return [2 /*return*/];
325
+ }
326
+ });
327
+ });
328
+ })];
329
+ case 1:
330
+ _a.sent();
331
+ return [3 /*break*/, 3];
332
+ case 2:
333
+ err_3 = _a.sent();
334
+ console.error(err_3);
335
+ return [3 /*break*/, 3];
336
+ case 3: return [2 /*return*/];
337
+ }
338
+ });
339
+ });
340
+ };
341
+ toolDbLibP2p.prototype.sendToAll = function (msg, crossServerOnly) {
342
+ var _this = this;
343
+ if (crossServerOnly === void 0) { crossServerOnly = false; }
344
+ var to = lodash_1.default.uniq(__spreadArray(__spreadArray([], msg.to, true), [this.options.id], false));
345
+ var filteredConns = Object.keys(this.clientSockets).filter(function (id) { return !to.includes(id); });
346
+ filteredConns.forEach(function (clientId) {
347
+ var stream = _this._clientSockets[clientId];
348
+ if (!crossServerOnly) {
349
+ console.log("Sent out to: ", clientId);
350
+ if (stream) {
351
+ var message = JSON.stringify(__assign(__assign({}, msg), { to: to }));
352
+ _this.toolDbProtocolSend(message, stream);
353
+ }
354
+ }
355
+ });
356
+ };
357
+ toolDbLibP2p.prototype.sendToClientId = function (clientId, msg) {
358
+ var stream = this._clientSockets[clientId];
359
+ if (stream) {
360
+ var to = lodash_1.default.uniq(__spreadArray(__spreadArray([], msg.to, true), [this.options.id], false));
361
+ var message = JSON.stringify(__assign(__assign({}, msg), { to: to }));
362
+ this.toolDbProtocolSend(message, stream);
363
+ }
364
+ };
365
+ Object.defineProperty(toolDbLibP2p.prototype, "tooldb", {
366
+ get: function () {
367
+ return this._tooldb;
368
+ },
369
+ enumerable: false,
370
+ configurable: true
371
+ });
372
+ return toolDbLibP2p;
373
+ }());
374
+ exports.default = toolDbLibP2p;
375
+ //# sourceMappingURL=toolDbLibP2p.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toolDbLibP2p.js","sourceRoot":"","sources":["../src/toolDbLibP2p.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ import WebSocket from "ws";
2
+ import { ToolDbMessage } from ".";
3
+ import ToolDb from "./tooldb";
4
+ export declare type ToolDbWebSocket = WebSocket & {
5
+ toolDbId?: string;
6
+ isServer: boolean;
7
+ origUrl: string;
8
+ };
9
+ export default class toolDbNetwork {
10
+ private wnd;
11
+ private _wss;
12
+ private options;
13
+ private server;
14
+ private _tooldb;
15
+ private _connections;
16
+ get allPeers(): string[];
17
+ private _awaitingConnections;
18
+ private removeFromAwaiting;
19
+ _clientSockets: Record<string, ToolDbWebSocket>;
20
+ get clientSockets(): Record<string, ToolDbWebSocket>;
21
+ constructor(db: ToolDb);
22
+ /**
23
+ * Open a connection to a federated server
24
+ * @param url URL of the server (including port)
25
+ * @returns websocket
26
+ */
27
+ connectTo: (host: string, port: number, connectionId?: string | undefined) => ToolDbWebSocket | undefined;
28
+ close(clientId: string): void;
29
+ sendToAll(msg: ToolDbMessage, crossServerOnly?: boolean, isRelay?: boolean): void;
30
+ sendToClientId(clientId: string, msg: ToolDbMessage): void;
31
+ private reconnect;
32
+ get tooldb(): ToolDb;
33
+ }