@dxos/messaging 0.1.58-main.47053bc → 0.1.58-main.4cbb52d
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/lib/browser/index.mjs +54 -26
- package/dist/lib/browser/index.mjs.map +3 -3
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/node/index.cjs +51 -23
- package/dist/lib/node/index.cjs.map +3 -3
- package/dist/lib/node/meta.json +1 -1
- package/dist/types/src/messenger.d.ts +5 -0
- package/dist/types/src/messenger.d.ts.map +1 -1
- package/package.json +12 -13
- package/src/messenger.ts +37 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"inputs":{"packages/core/mesh/messaging/src/timeouts.ts":{"bytes":656,"imports":[],"format":"esm"},"packages/core/mesh/messaging/src/messenger.ts":{"bytes":
|
|
1
|
+
{"inputs":{"packages/core/mesh/messaging/src/timeouts.ts":{"bytes":656,"imports":[],"format":"esm"},"packages/core/mesh/messaging/src/messenger.ts":{"bytes":37754,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"packages/core/mesh/messaging/src/timeouts.ts","kind":"import-statement","original":"./timeouts"}],"format":"esm"},"packages/core/mesh/messaging/src/signal-client/signal-rpc-client.ts":{"bytes":20028,"imports":[{"path":"isomorphic-ws","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/rpc","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/messaging/src/signal-client/signal-client.ts":{"bytes":52172,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/protocols/proto/dxos/mesh/signal","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"packages/core/mesh/messaging/src/signal-client/signal-rpc-client.ts","kind":"import-statement","original":"./signal-rpc-client"}],"format":"esm"},"packages/core/mesh/messaging/src/signal-client/index.ts":{"bytes":499,"imports":[{"path":"packages/core/mesh/messaging/src/signal-client/signal-client.ts","kind":"import-statement","original":"./signal-client"}],"format":"esm"},"packages/core/mesh/messaging/src/signal-manager/memory-signal-manager.ts":{"bytes":24541,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/messaging/src/signal-manager/signal-manager.ts":{"bytes":1268,"imports":[],"format":"esm"},"packages/core/mesh/messaging/src/signal-manager/websocket-signal-manager.ts":{"bytes":18581,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"packages/core/mesh/messaging/src/signal-client/index.ts","kind":"import-statement","original":"../signal-client"}],"format":"esm"},"packages/core/mesh/messaging/src/signal-manager/index.ts":{"bytes":750,"imports":[{"path":"packages/core/mesh/messaging/src/signal-manager/memory-signal-manager.ts","kind":"import-statement","original":"./memory-signal-manager"},{"path":"packages/core/mesh/messaging/src/signal-manager/signal-manager.ts","kind":"import-statement","original":"./signal-manager"},{"path":"packages/core/mesh/messaging/src/signal-manager/websocket-signal-manager.ts","kind":"import-statement","original":"./websocket-signal-manager"}],"format":"esm"},"packages/core/mesh/messaging/src/signal-methods.ts":{"bytes":1621,"imports":[],"format":"esm"},"packages/core/mesh/messaging/src/index.ts":{"bytes":782,"imports":[{"path":"packages/core/mesh/messaging/src/messenger.ts","kind":"import-statement","original":"./messenger"},{"path":"packages/core/mesh/messaging/src/signal-client/index.ts","kind":"import-statement","original":"./signal-client"},{"path":"packages/core/mesh/messaging/src/signal-manager/index.ts","kind":"import-statement","original":"./signal-manager"},{"path":"packages/core/mesh/messaging/src/signal-methods.ts","kind":"import-statement","original":"./signal-methods"}],"format":"esm"}},"outputs":{"packages/core/mesh/messaging/dist/lib/browser/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":70523},"packages/core/mesh/messaging/dist/lib/browser/index.mjs":{"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/protocols/proto/dxos/mesh/signal","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"isomorphic-ws","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/rpc","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true}],"exports":["MemorySignalManager","MemorySignalManagerContext","Messenger","SignalClient","WebsocketSignalManager"],"entryPoint":"packages/core/mesh/messaging/src/index.ts","inputs":{"packages/core/mesh/messaging/src/messenger.ts":{"bytesInOutput":10913},"packages/core/mesh/messaging/src/timeouts.ts":{"bytesInOutput":27},"packages/core/mesh/messaging/src/index.ts":{"bytesInOutput":0},"packages/core/mesh/messaging/src/signal-client/signal-client.ts":{"bytesInOutput":13587},"packages/core/mesh/messaging/src/signal-client/signal-rpc-client.ts":{"bytesInOutput":6017},"packages/core/mesh/messaging/src/signal-client/index.ts":{"bytesInOutput":0},"packages/core/mesh/messaging/src/signal-manager/memory-signal-manager.ts":{"bytesInOutput":6682},"packages/core/mesh/messaging/src/signal-manager/index.ts":{"bytesInOutput":0},"packages/core/mesh/messaging/src/signal-manager/websocket-signal-manager.ts":{"bytesInOutput":6027}},"bytes":43954}}}
|
package/dist/lib/node/index.cjs
CHANGED
|
@@ -41,7 +41,6 @@ module.exports = __toCommonJS(src_exports);
|
|
|
41
41
|
// packages/core/mesh/messaging/src/messenger.ts
|
|
42
42
|
var import_async = require("@dxos/async");
|
|
43
43
|
var import_context = require("@dxos/context");
|
|
44
|
-
var import_errors = require("@dxos/errors");
|
|
45
44
|
var import_invariant = require("@dxos/invariant");
|
|
46
45
|
var import_keys = require("@dxos/keys");
|
|
47
46
|
var import_log = require("@dxos/log");
|
|
@@ -57,6 +56,7 @@ var ReliablePayload = import_protocols.schema.getCodecForType("dxos.mesh.messagi
|
|
|
57
56
|
var Acknowledgement = import_protocols.schema.getCodecForType("dxos.mesh.messaging.Acknowledgement");
|
|
58
57
|
var ERROR_LIMIT = 5;
|
|
59
58
|
var NETWORK_REBOOT_DELAY = 3e3;
|
|
59
|
+
var RECEIVED_MESSAGES_GC_INTERVAL = 12e4;
|
|
60
60
|
var Messenger = class {
|
|
61
61
|
constructor({ signalManager, retryDelay = 300 }) {
|
|
62
62
|
// { peerId, payloadType } => listeners set
|
|
@@ -64,7 +64,11 @@ var Messenger = class {
|
|
|
64
64
|
// peerId => listeners set
|
|
65
65
|
this._defaultListeners = new import_util.ComplexMap(import_keys.PublicKey.hash);
|
|
66
66
|
this._onAckCallbacks = new import_util.ComplexMap(import_keys.PublicKey.hash);
|
|
67
|
-
this._receivedMessages = new import_util.ComplexSet(
|
|
67
|
+
this._receivedMessages = new import_util.ComplexSet(import_keys.PublicKey.hash);
|
|
68
|
+
/**
|
|
69
|
+
* Keys scheduled to be cleared from _receivedMessages on the next iteration.
|
|
70
|
+
*/
|
|
71
|
+
this._toClear = new import_util.ComplexSet(import_keys.PublicKey.hash);
|
|
68
72
|
this._closed = true;
|
|
69
73
|
this._errorCount = 0;
|
|
70
74
|
this._rebooting = false;
|
|
@@ -81,14 +85,14 @@ var Messenger = class {
|
|
|
81
85
|
id: traceId
|
|
82
86
|
}), {
|
|
83
87
|
F: __dxlog_file,
|
|
84
|
-
L:
|
|
88
|
+
L: 74,
|
|
85
89
|
S: this,
|
|
86
90
|
C: (f, a) => f(...a)
|
|
87
91
|
});
|
|
88
92
|
this._ctx = new import_context.Context({
|
|
89
93
|
onError: (err) => import_log.log.catch(err, void 0, {
|
|
90
94
|
F: __dxlog_file,
|
|
91
|
-
L:
|
|
95
|
+
L: 76,
|
|
92
96
|
S: this,
|
|
93
97
|
C: (f, a) => f(...a)
|
|
94
98
|
})
|
|
@@ -98,18 +102,21 @@ var Messenger = class {
|
|
|
98
102
|
from: message.author
|
|
99
103
|
}, {
|
|
100
104
|
F: __dxlog_file,
|
|
101
|
-
L:
|
|
105
|
+
L: 80,
|
|
102
106
|
S: this,
|
|
103
107
|
C: (f, a) => f(...a)
|
|
104
108
|
});
|
|
105
109
|
await this._handleMessage(message);
|
|
106
110
|
}));
|
|
111
|
+
(0, import_async.scheduleTaskInterval)(this._ctx, async () => {
|
|
112
|
+
this._performGc();
|
|
113
|
+
}, RECEIVED_MESSAGES_GC_INTERVAL);
|
|
107
114
|
this._closed = false;
|
|
108
115
|
import_log.log.trace("dxos.mesh.messenger.open", import_protocols.trace.end({
|
|
109
116
|
id: traceId
|
|
110
117
|
}), {
|
|
111
118
|
F: __dxlog_file,
|
|
112
|
-
L:
|
|
119
|
+
L: 95,
|
|
113
120
|
S: this,
|
|
114
121
|
C: (f, a) => f(...a)
|
|
115
122
|
});
|
|
@@ -124,7 +131,7 @@ var Messenger = class {
|
|
|
124
131
|
async sendMessage({ author, recipient, payload }) {
|
|
125
132
|
(0, import_invariant.invariant)(!this._closed, "Closed", {
|
|
126
133
|
F: __dxlog_file,
|
|
127
|
-
L:
|
|
134
|
+
L: 107,
|
|
128
135
|
S: this,
|
|
129
136
|
A: [
|
|
130
137
|
"!this._closed",
|
|
@@ -138,7 +145,7 @@ var Messenger = class {
|
|
|
138
145
|
};
|
|
139
146
|
(0, import_invariant.invariant)(!this._onAckCallbacks.has(reliablePayload.messageId), void 0, {
|
|
140
147
|
F: __dxlog_file,
|
|
141
|
-
L:
|
|
148
|
+
L: 114,
|
|
142
149
|
S: this,
|
|
143
150
|
A: [
|
|
144
151
|
"!this._onAckCallbacks.has(reliablePayload.messageId!)",
|
|
@@ -151,7 +158,7 @@ var Messenger = class {
|
|
|
151
158
|
recipient
|
|
152
159
|
}, {
|
|
153
160
|
F: __dxlog_file,
|
|
154
|
-
L:
|
|
161
|
+
L: 115,
|
|
155
162
|
S: this,
|
|
156
163
|
C: (f, a) => f(...a)
|
|
157
164
|
});
|
|
@@ -166,7 +173,7 @@ var Messenger = class {
|
|
|
166
173
|
messageId: reliablePayload.messageId
|
|
167
174
|
}, {
|
|
168
175
|
F: __dxlog_file,
|
|
169
|
-
L:
|
|
176
|
+
L: 129,
|
|
170
177
|
S: this,
|
|
171
178
|
C: (f, a) => f(...a)
|
|
172
179
|
});
|
|
@@ -178,7 +185,7 @@ var Messenger = class {
|
|
|
178
185
|
err
|
|
179
186
|
}, {
|
|
180
187
|
F: __dxlog_file,
|
|
181
|
-
L:
|
|
188
|
+
L: 131,
|
|
182
189
|
S: this,
|
|
183
190
|
C: (f, a) => f(...a)
|
|
184
191
|
}));
|
|
@@ -188,13 +195,13 @@ var Messenger = class {
|
|
|
188
195
|
messageId: reliablePayload.messageId
|
|
189
196
|
}, {
|
|
190
197
|
F: __dxlog_file,
|
|
191
|
-
L:
|
|
198
|
+
L: 140,
|
|
192
199
|
S: this,
|
|
193
200
|
C: (f, a) => f(...a)
|
|
194
201
|
});
|
|
195
202
|
this._onAckCallbacks.delete(reliablePayload.messageId);
|
|
196
203
|
await this.errorLimitCheck();
|
|
197
|
-
timeoutHit(new
|
|
204
|
+
timeoutHit(new import_protocols.TimeoutError("signaling message not delivered", new import_async.TimeoutError(MESSAGE_TIMEOUT, "Message not delivered")));
|
|
198
205
|
void messageContext.dispose();
|
|
199
206
|
}, MESSAGE_TIMEOUT);
|
|
200
207
|
this._onAckCallbacks.set(reliablePayload.messageId, () => {
|
|
@@ -212,7 +219,7 @@ var Messenger = class {
|
|
|
212
219
|
async errorLimitCheck() {
|
|
213
220
|
(0, import_log.log)(`checking error limit ${this._errorCount}`, void 0, {
|
|
214
221
|
F: __dxlog_file,
|
|
215
|
-
L:
|
|
222
|
+
L: 165,
|
|
216
223
|
S: this,
|
|
217
224
|
C: (f, a) => f(...a)
|
|
218
225
|
});
|
|
@@ -227,7 +234,7 @@ var Messenger = class {
|
|
|
227
234
|
this._rebooting = true;
|
|
228
235
|
(0, import_log.log)("rebooting Messenger/SignalManager", void 0, {
|
|
229
236
|
F: __dxlog_file,
|
|
230
|
-
L:
|
|
237
|
+
L: 177,
|
|
231
238
|
S: this,
|
|
232
239
|
C: (f, a) => f(...a)
|
|
233
240
|
});
|
|
@@ -235,14 +242,14 @@ var Messenger = class {
|
|
|
235
242
|
await this._signalManager.close();
|
|
236
243
|
(0, import_log.log)("pausing", void 0, {
|
|
237
244
|
F: __dxlog_file,
|
|
238
|
-
L:
|
|
245
|
+
L: 180,
|
|
239
246
|
S: this,
|
|
240
247
|
C: (f, a) => f(...a)
|
|
241
248
|
});
|
|
242
249
|
await new Promise((resolve) => setTimeout(resolve, NETWORK_REBOOT_DELAY));
|
|
243
250
|
(0, import_log.log)("done pausing", void 0, {
|
|
244
251
|
F: __dxlog_file,
|
|
245
|
-
L:
|
|
252
|
+
L: 182,
|
|
246
253
|
S: this,
|
|
247
254
|
C: (f, a) => f(...a)
|
|
248
255
|
});
|
|
@@ -250,7 +257,7 @@ var Messenger = class {
|
|
|
250
257
|
await this._signalManager.open();
|
|
251
258
|
(0, import_log.log)("done rebooting", void 0, {
|
|
252
259
|
F: __dxlog_file,
|
|
253
|
-
L:
|
|
260
|
+
L: 185,
|
|
254
261
|
S: this,
|
|
255
262
|
C: (f, a) => f(...a)
|
|
256
263
|
});
|
|
@@ -264,7 +271,7 @@ var Messenger = class {
|
|
|
264
271
|
async listen({ peerId, payloadType, onMessage }) {
|
|
265
272
|
(0, import_invariant.invariant)(!this._closed, "Closed", {
|
|
266
273
|
F: __dxlog_file,
|
|
267
|
-
L:
|
|
274
|
+
L: 204,
|
|
268
275
|
S: this,
|
|
269
276
|
A: [
|
|
270
277
|
"!this._closed",
|
|
@@ -328,7 +335,7 @@ var Messenger = class {
|
|
|
328
335
|
async _handleReliablePayload({ author, recipient, payload }) {
|
|
329
336
|
(0, import_invariant.invariant)(payload.type_url === "dxos.mesh.messaging.ReliablePayload", void 0, {
|
|
330
337
|
F: __dxlog_file,
|
|
331
|
-
L:
|
|
338
|
+
L: 265,
|
|
332
339
|
S: this,
|
|
333
340
|
A: [
|
|
334
341
|
"payload.type_url === 'dxos.mesh.messaging.ReliablePayload'",
|
|
@@ -342,7 +349,7 @@ var Messenger = class {
|
|
|
342
349
|
messageId: reliablePayload.messageId
|
|
343
350
|
}, {
|
|
344
351
|
F: __dxlog_file,
|
|
345
|
-
L:
|
|
352
|
+
L: 268,
|
|
346
353
|
S: this,
|
|
347
354
|
C: (f, a) => f(...a)
|
|
348
355
|
});
|
|
@@ -364,7 +371,7 @@ var Messenger = class {
|
|
|
364
371
|
async _handleAcknowledgement({ payload }) {
|
|
365
372
|
(0, import_invariant.invariant)(payload.type_url === "dxos.mesh.messaging.Acknowledgement", void 0, {
|
|
366
373
|
F: __dxlog_file,
|
|
367
|
-
L:
|
|
374
|
+
L: 290,
|
|
368
375
|
S: this,
|
|
369
376
|
A: [
|
|
370
377
|
"payload.type_url === 'dxos.mesh.messaging.Acknowledgement'",
|
|
@@ -380,7 +387,7 @@ var Messenger = class {
|
|
|
380
387
|
to: author
|
|
381
388
|
}, {
|
|
382
389
|
F: __dxlog_file,
|
|
383
|
-
L:
|
|
390
|
+
L: 303,
|
|
384
391
|
S: this,
|
|
385
392
|
C: (f, a) => f(...a)
|
|
386
393
|
});
|
|
@@ -416,6 +423,27 @@ var Messenger = class {
|
|
|
416
423
|
}
|
|
417
424
|
}
|
|
418
425
|
}
|
|
426
|
+
_performGc() {
|
|
427
|
+
const start = performance.now();
|
|
428
|
+
for (const key of this._toClear.keys()) {
|
|
429
|
+
this._receivedMessages.delete(key);
|
|
430
|
+
}
|
|
431
|
+
this._toClear.clear();
|
|
432
|
+
for (const key of this._receivedMessages.keys()) {
|
|
433
|
+
this._toClear.add(key);
|
|
434
|
+
}
|
|
435
|
+
const elapsed = performance.now() - start;
|
|
436
|
+
if (elapsed > 100) {
|
|
437
|
+
import_log.log.warn("GC took too long", {
|
|
438
|
+
elapsed
|
|
439
|
+
}, {
|
|
440
|
+
F: __dxlog_file,
|
|
441
|
+
L: 351,
|
|
442
|
+
S: this,
|
|
443
|
+
C: (f, a) => f(...a)
|
|
444
|
+
});
|
|
445
|
+
}
|
|
446
|
+
}
|
|
419
447
|
};
|
|
420
448
|
|
|
421
449
|
// packages/core/mesh/messaging/src/signal-client/signal-client.ts
|