@dxos/messaging 0.1.58-main.9be790d → 0.1.58-main.b2aa5cf
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 +53 -24
- package/dist/lib/browser/index.mjs.map +3 -3
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/node/index.cjs +50 -21
- 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 +13 -13
- package/src/messenger.ts +36 -2
|
@@ -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":37849,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/errors","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":70566},"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/errors","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":10944},"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":43985}}}
|
package/dist/lib/node/index.cjs
CHANGED
|
@@ -57,6 +57,7 @@ var ReliablePayload = import_protocols.schema.getCodecForType("dxos.mesh.messagi
|
|
|
57
57
|
var Acknowledgement = import_protocols.schema.getCodecForType("dxos.mesh.messaging.Acknowledgement");
|
|
58
58
|
var ERROR_LIMIT = 5;
|
|
59
59
|
var NETWORK_REBOOT_DELAY = 3e3;
|
|
60
|
+
var RECEIVED_MESSAGES_GC_INTERVAL = 12e4;
|
|
60
61
|
var Messenger = class {
|
|
61
62
|
constructor({ signalManager, retryDelay = 300 }) {
|
|
62
63
|
// { peerId, payloadType } => listeners set
|
|
@@ -64,7 +65,11 @@ var Messenger = class {
|
|
|
64
65
|
// peerId => listeners set
|
|
65
66
|
this._defaultListeners = new import_util.ComplexMap(import_keys.PublicKey.hash);
|
|
66
67
|
this._onAckCallbacks = new import_util.ComplexMap(import_keys.PublicKey.hash);
|
|
67
|
-
this._receivedMessages = new import_util.ComplexSet(
|
|
68
|
+
this._receivedMessages = new import_util.ComplexSet(import_keys.PublicKey.hash);
|
|
69
|
+
/**
|
|
70
|
+
* Keys scheduled to be cleared from _receivedMessages on the next iteration.
|
|
71
|
+
*/
|
|
72
|
+
this._toClear = new import_util.ComplexSet(import_keys.PublicKey.hash);
|
|
68
73
|
this._closed = true;
|
|
69
74
|
this._errorCount = 0;
|
|
70
75
|
this._rebooting = false;
|
|
@@ -81,14 +86,14 @@ var Messenger = class {
|
|
|
81
86
|
id: traceId
|
|
82
87
|
}), {
|
|
83
88
|
F: __dxlog_file,
|
|
84
|
-
L:
|
|
89
|
+
L: 75,
|
|
85
90
|
S: this,
|
|
86
91
|
C: (f, a) => f(...a)
|
|
87
92
|
});
|
|
88
93
|
this._ctx = new import_context.Context({
|
|
89
94
|
onError: (err) => import_log.log.catch(err, void 0, {
|
|
90
95
|
F: __dxlog_file,
|
|
91
|
-
L:
|
|
96
|
+
L: 77,
|
|
92
97
|
S: this,
|
|
93
98
|
C: (f, a) => f(...a)
|
|
94
99
|
})
|
|
@@ -98,18 +103,21 @@ var Messenger = class {
|
|
|
98
103
|
from: message.author
|
|
99
104
|
}, {
|
|
100
105
|
F: __dxlog_file,
|
|
101
|
-
L:
|
|
106
|
+
L: 81,
|
|
102
107
|
S: this,
|
|
103
108
|
C: (f, a) => f(...a)
|
|
104
109
|
});
|
|
105
110
|
await this._handleMessage(message);
|
|
106
111
|
}));
|
|
112
|
+
(0, import_async.scheduleTaskInterval)(this._ctx, async () => {
|
|
113
|
+
this._performGc();
|
|
114
|
+
}, RECEIVED_MESSAGES_GC_INTERVAL);
|
|
107
115
|
this._closed = false;
|
|
108
116
|
import_log.log.trace("dxos.mesh.messenger.open", import_protocols.trace.end({
|
|
109
117
|
id: traceId
|
|
110
118
|
}), {
|
|
111
119
|
F: __dxlog_file,
|
|
112
|
-
L:
|
|
120
|
+
L: 96,
|
|
113
121
|
S: this,
|
|
114
122
|
C: (f, a) => f(...a)
|
|
115
123
|
});
|
|
@@ -124,7 +132,7 @@ var Messenger = class {
|
|
|
124
132
|
async sendMessage({ author, recipient, payload }) {
|
|
125
133
|
(0, import_invariant.invariant)(!this._closed, "Closed", {
|
|
126
134
|
F: __dxlog_file,
|
|
127
|
-
L:
|
|
135
|
+
L: 108,
|
|
128
136
|
S: this,
|
|
129
137
|
A: [
|
|
130
138
|
"!this._closed",
|
|
@@ -138,7 +146,7 @@ var Messenger = class {
|
|
|
138
146
|
};
|
|
139
147
|
(0, import_invariant.invariant)(!this._onAckCallbacks.has(reliablePayload.messageId), void 0, {
|
|
140
148
|
F: __dxlog_file,
|
|
141
|
-
L:
|
|
149
|
+
L: 115,
|
|
142
150
|
S: this,
|
|
143
151
|
A: [
|
|
144
152
|
"!this._onAckCallbacks.has(reliablePayload.messageId!)",
|
|
@@ -151,7 +159,7 @@ var Messenger = class {
|
|
|
151
159
|
recipient
|
|
152
160
|
}, {
|
|
153
161
|
F: __dxlog_file,
|
|
154
|
-
L:
|
|
162
|
+
L: 116,
|
|
155
163
|
S: this,
|
|
156
164
|
C: (f, a) => f(...a)
|
|
157
165
|
});
|
|
@@ -166,7 +174,7 @@ var Messenger = class {
|
|
|
166
174
|
messageId: reliablePayload.messageId
|
|
167
175
|
}, {
|
|
168
176
|
F: __dxlog_file,
|
|
169
|
-
L:
|
|
177
|
+
L: 130,
|
|
170
178
|
S: this,
|
|
171
179
|
C: (f, a) => f(...a)
|
|
172
180
|
});
|
|
@@ -178,7 +186,7 @@ var Messenger = class {
|
|
|
178
186
|
err
|
|
179
187
|
}, {
|
|
180
188
|
F: __dxlog_file,
|
|
181
|
-
L:
|
|
189
|
+
L: 132,
|
|
182
190
|
S: this,
|
|
183
191
|
C: (f, a) => f(...a)
|
|
184
192
|
}));
|
|
@@ -188,7 +196,7 @@ var Messenger = class {
|
|
|
188
196
|
messageId: reliablePayload.messageId
|
|
189
197
|
}, {
|
|
190
198
|
F: __dxlog_file,
|
|
191
|
-
L:
|
|
199
|
+
L: 141,
|
|
192
200
|
S: this,
|
|
193
201
|
C: (f, a) => f(...a)
|
|
194
202
|
});
|
|
@@ -212,7 +220,7 @@ var Messenger = class {
|
|
|
212
220
|
async errorLimitCheck() {
|
|
213
221
|
(0, import_log.log)(`checking error limit ${this._errorCount}`, void 0, {
|
|
214
222
|
F: __dxlog_file,
|
|
215
|
-
L:
|
|
223
|
+
L: 166,
|
|
216
224
|
S: this,
|
|
217
225
|
C: (f, a) => f(...a)
|
|
218
226
|
});
|
|
@@ -227,7 +235,7 @@ var Messenger = class {
|
|
|
227
235
|
this._rebooting = true;
|
|
228
236
|
(0, import_log.log)("rebooting Messenger/SignalManager", void 0, {
|
|
229
237
|
F: __dxlog_file,
|
|
230
|
-
L:
|
|
238
|
+
L: 178,
|
|
231
239
|
S: this,
|
|
232
240
|
C: (f, a) => f(...a)
|
|
233
241
|
});
|
|
@@ -235,14 +243,14 @@ var Messenger = class {
|
|
|
235
243
|
await this._signalManager.close();
|
|
236
244
|
(0, import_log.log)("pausing", void 0, {
|
|
237
245
|
F: __dxlog_file,
|
|
238
|
-
L:
|
|
246
|
+
L: 181,
|
|
239
247
|
S: this,
|
|
240
248
|
C: (f, a) => f(...a)
|
|
241
249
|
});
|
|
242
250
|
await new Promise((resolve) => setTimeout(resolve, NETWORK_REBOOT_DELAY));
|
|
243
251
|
(0, import_log.log)("done pausing", void 0, {
|
|
244
252
|
F: __dxlog_file,
|
|
245
|
-
L:
|
|
253
|
+
L: 183,
|
|
246
254
|
S: this,
|
|
247
255
|
C: (f, a) => f(...a)
|
|
248
256
|
});
|
|
@@ -250,7 +258,7 @@ var Messenger = class {
|
|
|
250
258
|
await this._signalManager.open();
|
|
251
259
|
(0, import_log.log)("done rebooting", void 0, {
|
|
252
260
|
F: __dxlog_file,
|
|
253
|
-
L:
|
|
261
|
+
L: 186,
|
|
254
262
|
S: this,
|
|
255
263
|
C: (f, a) => f(...a)
|
|
256
264
|
});
|
|
@@ -264,7 +272,7 @@ var Messenger = class {
|
|
|
264
272
|
async listen({ peerId, payloadType, onMessage }) {
|
|
265
273
|
(0, import_invariant.invariant)(!this._closed, "Closed", {
|
|
266
274
|
F: __dxlog_file,
|
|
267
|
-
L:
|
|
275
|
+
L: 205,
|
|
268
276
|
S: this,
|
|
269
277
|
A: [
|
|
270
278
|
"!this._closed",
|
|
@@ -328,7 +336,7 @@ var Messenger = class {
|
|
|
328
336
|
async _handleReliablePayload({ author, recipient, payload }) {
|
|
329
337
|
(0, import_invariant.invariant)(payload.type_url === "dxos.mesh.messaging.ReliablePayload", void 0, {
|
|
330
338
|
F: __dxlog_file,
|
|
331
|
-
L:
|
|
339
|
+
L: 266,
|
|
332
340
|
S: this,
|
|
333
341
|
A: [
|
|
334
342
|
"payload.type_url === 'dxos.mesh.messaging.ReliablePayload'",
|
|
@@ -342,7 +350,7 @@ var Messenger = class {
|
|
|
342
350
|
messageId: reliablePayload.messageId
|
|
343
351
|
}, {
|
|
344
352
|
F: __dxlog_file,
|
|
345
|
-
L:
|
|
353
|
+
L: 269,
|
|
346
354
|
S: this,
|
|
347
355
|
C: (f, a) => f(...a)
|
|
348
356
|
});
|
|
@@ -364,7 +372,7 @@ var Messenger = class {
|
|
|
364
372
|
async _handleAcknowledgement({ payload }) {
|
|
365
373
|
(0, import_invariant.invariant)(payload.type_url === "dxos.mesh.messaging.Acknowledgement", void 0, {
|
|
366
374
|
F: __dxlog_file,
|
|
367
|
-
L:
|
|
375
|
+
L: 291,
|
|
368
376
|
S: this,
|
|
369
377
|
A: [
|
|
370
378
|
"payload.type_url === 'dxos.mesh.messaging.Acknowledgement'",
|
|
@@ -380,7 +388,7 @@ var Messenger = class {
|
|
|
380
388
|
to: author
|
|
381
389
|
}, {
|
|
382
390
|
F: __dxlog_file,
|
|
383
|
-
L:
|
|
391
|
+
L: 304,
|
|
384
392
|
S: this,
|
|
385
393
|
C: (f, a) => f(...a)
|
|
386
394
|
});
|
|
@@ -416,6 +424,27 @@ var Messenger = class {
|
|
|
416
424
|
}
|
|
417
425
|
}
|
|
418
426
|
}
|
|
427
|
+
_performGc() {
|
|
428
|
+
const start = performance.now();
|
|
429
|
+
for (const key of this._toClear.keys()) {
|
|
430
|
+
this._receivedMessages.delete(key);
|
|
431
|
+
}
|
|
432
|
+
this._toClear.clear();
|
|
433
|
+
for (const key of this._receivedMessages.keys()) {
|
|
434
|
+
this._toClear.add(key);
|
|
435
|
+
}
|
|
436
|
+
const elapsed = performance.now() - start;
|
|
437
|
+
if (elapsed > 100) {
|
|
438
|
+
import_log.log.warn("GC took too long", {
|
|
439
|
+
elapsed
|
|
440
|
+
}, {
|
|
441
|
+
F: __dxlog_file,
|
|
442
|
+
L: 352,
|
|
443
|
+
S: this,
|
|
444
|
+
C: (f, a) => f(...a)
|
|
445
|
+
});
|
|
446
|
+
}
|
|
447
|
+
}
|
|
419
448
|
};
|
|
420
449
|
|
|
421
450
|
// packages/core/mesh/messaging/src/signal-client/signal-client.ts
|