@dxos/messaging 0.8.4-main.9be5663bfe → 0.8.4-main.abd8ff62ef
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/neutral/{chunk-ZNKR3G44.mjs → chunk-EC4H56J5.mjs} +35 -232
- package/dist/lib/neutral/chunk-EC4H56J5.mjs.map +7 -0
- package/dist/lib/neutral/index.mjs +92 -546
- package/dist/lib/neutral/index.mjs.map +3 -3
- package/dist/lib/neutral/meta.json +1 -1
- package/dist/lib/neutral/testing/index.mjs +2 -7
- package/dist/lib/neutral/testing/index.mjs.map +2 -2
- package/dist/types/src/messenger-monitor.d.ts.map +1 -1
- package/dist/types/src/messenger.blueprint-test.d.ts +1 -1
- package/dist/types/src/messenger.blueprint-test.d.ts.map +1 -1
- package/dist/types/src/messenger.d.ts +1 -1
- package/dist/types/src/messenger.d.ts.map +1 -1
- package/dist/types/src/signal-client/signal-client-monitor.d.ts.map +1 -1
- package/dist/types/src/signal-client/signal-client.d.ts +0 -1
- package/dist/types/src/signal-client/signal-client.d.ts.map +1 -1
- package/dist/types/src/signal-client/signal-local-state.d.ts.map +1 -1
- package/dist/types/src/signal-client/signal-rpc-client-monitor.d.ts.map +1 -1
- package/dist/types/src/signal-client/signal-rpc-client.d.ts +1 -1
- package/dist/types/src/signal-client/signal-rpc-client.d.ts.map +1 -1
- package/dist/types/src/signal-manager/edge-signal-manager.d.ts.map +1 -1
- package/dist/types/src/signal-manager/memory-signal-manager.d.ts +1 -1
- package/dist/types/src/signal-manager/memory-signal-manager.d.ts.map +1 -1
- package/dist/types/src/signal-manager/utils.d.ts.map +1 -1
- package/dist/types/src/signal-manager/websocket-signal-manager-monitor.d.ts.map +1 -1
- package/dist/types/src/signal-manager/websocket-signal-manager.d.ts +0 -1
- package/dist/types/src/signal-manager/websocket-signal-manager.d.ts.map +1 -1
- package/dist/types/src/signal-methods.d.ts.map +1 -1
- package/dist/types/src/testing/test-builder.d.ts.map +1 -1
- package/dist/types/src/testing/test-peer.d.ts.map +1 -1
- package/dist/types/src/testing/utils.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +16 -23
- package/src/messenger.ts +3 -4
- package/src/signal-client/signal-client.ts +2 -5
- package/src/signal-client/signal-rpc-client.ts +2 -4
- package/src/signal-manager/websocket-signal-manager.ts +1 -7
- package/dist/lib/neutral/chunk-ZNKR3G44.mjs.map +0 -7
|
@@ -4,15 +4,14 @@ import {
|
|
|
4
4
|
MemorySignalManagerContext,
|
|
5
5
|
Messenger,
|
|
6
6
|
PeerInfoHash
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-EC4H56J5.mjs";
|
|
8
8
|
|
|
9
9
|
// src/signal-client/signal-client.ts
|
|
10
10
|
import { DeferredTask, Event as Event2, Trigger as Trigger2, scheduleTask, scheduleTaskInterval as scheduleTaskInterval2, sleep } from "@dxos/async";
|
|
11
11
|
import { Resource, cancelWithContext as cancelWithContext2 } from "@dxos/context";
|
|
12
12
|
import { invariant as invariant2 } from "@dxos/invariant";
|
|
13
|
-
import { PublicKey as
|
|
13
|
+
import { PublicKey as PublicKey2 } from "@dxos/keys";
|
|
14
14
|
import { log as log3 } from "@dxos/log";
|
|
15
|
-
import { trace as trace4 } from "@dxos/protocols";
|
|
16
15
|
import { SignalState } from "@dxos/protocols/proto/dxos/mesh/signal";
|
|
17
16
|
|
|
18
17
|
// src/signal-client/signal-client-monitor.ts
|
|
@@ -189,12 +188,7 @@ var SignalLocalState = class {
|
|
|
189
188
|
unsubscribeMessages(peerId) {
|
|
190
189
|
log("unsubscribing from messages", {
|
|
191
190
|
peerId
|
|
192
|
-
}, {
|
|
193
|
-
F: __dxlog_file,
|
|
194
|
-
L: 79,
|
|
195
|
-
S: this,
|
|
196
|
-
C: (f, a) => f(...a)
|
|
197
|
-
});
|
|
191
|
+
}, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 72, S: this });
|
|
198
192
|
this._subscribedMessages.delete({
|
|
199
193
|
peerId
|
|
200
194
|
});
|
|
@@ -241,12 +235,7 @@ var SignalLocalState = class {
|
|
|
241
235
|
})) {
|
|
242
236
|
log("swarm event", {
|
|
243
237
|
swarmEvent
|
|
244
|
-
}, {
|
|
245
|
-
F: __dxlog_file,
|
|
246
|
-
L: 115,
|
|
247
|
-
S: this,
|
|
248
|
-
C: (f, a) => f(...a)
|
|
249
|
-
});
|
|
238
|
+
}, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 125, S: this });
|
|
250
239
|
const event = swarmEvent.peerAvailable ? {
|
|
251
240
|
topic,
|
|
252
241
|
peerAvailable: {
|
|
@@ -314,9 +303,7 @@ import WebSocket from "isomorphic-ws";
|
|
|
314
303
|
import { TimeoutError, Trigger, scheduleTaskInterval } from "@dxos/async";
|
|
315
304
|
import { Context } from "@dxos/context";
|
|
316
305
|
import { invariant } from "@dxos/invariant";
|
|
317
|
-
import { PublicKey as PublicKey2 } from "@dxos/keys";
|
|
318
306
|
import { log as log2 } from "@dxos/log";
|
|
319
|
-
import { trace as trace3 } from "@dxos/protocols";
|
|
320
307
|
import { schema } from "@dxos/protocols/proto";
|
|
321
308
|
import { createProtoRpcPeer } from "@dxos/rpc";
|
|
322
309
|
|
|
@@ -346,15 +333,9 @@ var SignalRPCClient = class {
|
|
|
346
333
|
_closeComplete = new Trigger();
|
|
347
334
|
_monitor = new SignalRpcClientMonitor();
|
|
348
335
|
constructor({ url, callbacks = {} }) {
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
}), {
|
|
353
|
-
F: __dxlog_file2,
|
|
354
|
-
L: 66,
|
|
355
|
-
S: this,
|
|
356
|
-
C: (f, a) => f(...a)
|
|
357
|
-
});
|
|
336
|
+
log2("creating signal rpc client", {
|
|
337
|
+
url
|
|
338
|
+
}, { "~LogMeta": "~LogMeta", F: __dxlog_file2, L: 28, S: this });
|
|
358
339
|
this._url = url;
|
|
359
340
|
this._callbacks = callbacks;
|
|
360
341
|
this._socket = new WebSocket(this._url);
|
|
@@ -371,12 +352,7 @@ var SignalRPCClient = class {
|
|
|
371
352
|
try {
|
|
372
353
|
this._socket.send(msg);
|
|
373
354
|
} catch (err) {
|
|
374
|
-
log2.warn("send error", err, {
|
|
375
|
-
F: __dxlog_file2,
|
|
376
|
-
L: 85,
|
|
377
|
-
S: this,
|
|
378
|
-
C: (f, a) => f(...a)
|
|
379
|
-
});
|
|
355
|
+
log2.warn("send error", err, { "~LogMeta": "~LogMeta", F: __dxlog_file2, L: 48, S: this });
|
|
380
356
|
}
|
|
381
357
|
},
|
|
382
358
|
subscribe: (cb) => {
|
|
@@ -400,18 +376,10 @@ var SignalRPCClient = class {
|
|
|
400
376
|
await this._safeCloseRpc();
|
|
401
377
|
return;
|
|
402
378
|
}
|
|
403
|
-
log2(`RPC open ${this._url}`, void 0, {
|
|
404
|
-
F: __dxlog_file2,
|
|
405
|
-
L: 110,
|
|
406
|
-
S: this,
|
|
407
|
-
C: (f, a) => f(...a)
|
|
408
|
-
});
|
|
379
|
+
log2(`RPC open ${this._url}`, void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file2, L: 72, S: this });
|
|
409
380
|
this._callbacks.onConnected?.();
|
|
410
381
|
this._connectTrigger.wake();
|
|
411
|
-
this._keepaliveCtx = new Context(void 0, {
|
|
412
|
-
F: __dxlog_file2,
|
|
413
|
-
L: 113
|
|
414
|
-
});
|
|
382
|
+
this._keepaliveCtx = new Context(void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file2, L: 75 });
|
|
415
383
|
scheduleTaskInterval(this._keepaliveCtx, async () => {
|
|
416
384
|
this._socket?.send("__ping__");
|
|
417
385
|
}, SIGNAL_KEEPALIVE_INTERVAL);
|
|
@@ -422,12 +390,7 @@ var SignalRPCClient = class {
|
|
|
422
390
|
}
|
|
423
391
|
};
|
|
424
392
|
this._socket.onclose = async () => {
|
|
425
|
-
log2(`Disconnected ${this._url}`, void 0, {
|
|
426
|
-
F: __dxlog_file2,
|
|
427
|
-
L: 133,
|
|
428
|
-
S: this,
|
|
429
|
-
C: (f, a) => f(...a)
|
|
430
|
-
});
|
|
393
|
+
log2(`Disconnected ${this._url}`, void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file2, L: 90, S: this });
|
|
431
394
|
this._callbacks.onDisconnected?.();
|
|
432
395
|
this._closeComplete.wake();
|
|
433
396
|
await this.close();
|
|
@@ -443,21 +406,11 @@ var SignalRPCClient = class {
|
|
|
443
406
|
log2.warn(`Socket ${event.type ?? "unknown"} error`, {
|
|
444
407
|
message: event.message,
|
|
445
408
|
url: this._url
|
|
446
|
-
}, {
|
|
447
|
-
F: __dxlog_file2,
|
|
448
|
-
L: 149,
|
|
449
|
-
S: this,
|
|
450
|
-
C: (f, a) => f(...a)
|
|
451
|
-
});
|
|
409
|
+
}, { "~LogMeta": "~LogMeta", F: __dxlog_file2, L: 103, S: this });
|
|
452
410
|
};
|
|
453
|
-
log2
|
|
454
|
-
|
|
455
|
-
}
|
|
456
|
-
F: __dxlog_file2,
|
|
457
|
-
L: 152,
|
|
458
|
-
S: this,
|
|
459
|
-
C: (f, a) => f(...a)
|
|
460
|
-
});
|
|
411
|
+
log2("created signal rpc client", {
|
|
412
|
+
url
|
|
413
|
+
}, { "~LogMeta": "~LogMeta", F: __dxlog_file2, L: 108, S: this });
|
|
461
414
|
}
|
|
462
415
|
async close() {
|
|
463
416
|
if (this._closed) {
|
|
@@ -485,21 +438,8 @@ var SignalRPCClient = class {
|
|
|
485
438
|
topic,
|
|
486
439
|
peerId,
|
|
487
440
|
metadata: this._callbacks?.getMetadata?.()
|
|
488
|
-
}, {
|
|
489
|
-
|
|
490
|
-
L: 178,
|
|
491
|
-
S: this,
|
|
492
|
-
C: (f, a) => f(...a)
|
|
493
|
-
});
|
|
494
|
-
invariant(!this._closed, "SignalRPCClient is closed", {
|
|
495
|
-
F: __dxlog_file2,
|
|
496
|
-
L: 179,
|
|
497
|
-
S: this,
|
|
498
|
-
A: [
|
|
499
|
-
"!this._closed",
|
|
500
|
-
"'SignalRPCClient is closed'"
|
|
501
|
-
]
|
|
502
|
-
});
|
|
441
|
+
}, { "~LogMeta": "~LogMeta", F: __dxlog_file2, L: 135, S: this });
|
|
442
|
+
invariant(!this._closed, "SignalRPCClient is closed", { "~LogMeta": "~LogMeta", F: __dxlog_file2, L: 140, S: this, A: ["!this._closed", "'SignalRPCClient is closed'"] });
|
|
503
443
|
await this._connectTrigger.wait();
|
|
504
444
|
const swarmStream = this._rpc.rpc.Signal.join({
|
|
505
445
|
swarm: topic.asUint8Array(),
|
|
@@ -512,21 +452,8 @@ var SignalRPCClient = class {
|
|
|
512
452
|
async receiveMessages(peerId) {
|
|
513
453
|
log2("receiveMessages", {
|
|
514
454
|
peerId
|
|
515
|
-
}, {
|
|
516
|
-
|
|
517
|
-
L: 191,
|
|
518
|
-
S: this,
|
|
519
|
-
C: (f, a) => f(...a)
|
|
520
|
-
});
|
|
521
|
-
invariant(!this._closed, "SignalRPCClient is closed", {
|
|
522
|
-
F: __dxlog_file2,
|
|
523
|
-
L: 192,
|
|
524
|
-
S: this,
|
|
525
|
-
A: [
|
|
526
|
-
"!this._closed",
|
|
527
|
-
"'SignalRPCClient is closed'"
|
|
528
|
-
]
|
|
529
|
-
});
|
|
455
|
+
}, { "~LogMeta": "~LogMeta", F: __dxlog_file2, L: 151, S: this });
|
|
456
|
+
invariant(!this._closed, "SignalRPCClient is closed", { "~LogMeta": "~LogMeta", F: __dxlog_file2, L: 154, S: this, A: ["!this._closed", "'SignalRPCClient is closed'"] });
|
|
530
457
|
await this._connectTrigger.wait();
|
|
531
458
|
const messageStream = this._rpc.rpc.Signal.receiveMessages({
|
|
532
459
|
peer: peerId.asUint8Array()
|
|
@@ -540,21 +467,8 @@ var SignalRPCClient = class {
|
|
|
540
467
|
recipient,
|
|
541
468
|
payload,
|
|
542
469
|
metadata: this._callbacks?.getMetadata?.()
|
|
543
|
-
}, {
|
|
544
|
-
|
|
545
|
-
L: 210,
|
|
546
|
-
S: this,
|
|
547
|
-
C: (f, a) => f(...a)
|
|
548
|
-
});
|
|
549
|
-
invariant(!this._closed, "SignalRPCClient is closed", {
|
|
550
|
-
F: __dxlog_file2,
|
|
551
|
-
L: 211,
|
|
552
|
-
S: this,
|
|
553
|
-
A: [
|
|
554
|
-
"!this._closed",
|
|
555
|
-
"'SignalRPCClient is closed'"
|
|
556
|
-
]
|
|
557
|
-
});
|
|
470
|
+
}, { "~LogMeta": "~LogMeta", F: __dxlog_file2, L: 163, S: this });
|
|
471
|
+
invariant(!this._closed, "SignalRPCClient is closed", { "~LogMeta": "~LogMeta", F: __dxlog_file2, L: 169, S: this, A: ["!this._closed", "'SignalRPCClient is closed'"] });
|
|
558
472
|
await this._connectTrigger.wait();
|
|
559
473
|
await this._rpc.rpc.Signal.sendMessage({
|
|
560
474
|
author: author.asUint8Array(),
|
|
@@ -568,12 +482,7 @@ var SignalRPCClient = class {
|
|
|
568
482
|
this._connectTrigger.reset();
|
|
569
483
|
await this._rpc.close();
|
|
570
484
|
} catch (err) {
|
|
571
|
-
log2.catch(err, void 0, {
|
|
572
|
-
F: __dxlog_file2,
|
|
573
|
-
L: 226,
|
|
574
|
-
S: this,
|
|
575
|
-
C: (f, a) => f(...a)
|
|
576
|
-
});
|
|
485
|
+
log2.catch(err, void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file2, L: 183, S: this });
|
|
577
486
|
}
|
|
578
487
|
}
|
|
579
488
|
};
|
|
@@ -600,7 +509,6 @@ var SignalClient = class extends Resource {
|
|
|
600
509
|
* Number of milliseconds after which the connection will be attempted again in case of error.
|
|
601
510
|
*/
|
|
602
511
|
_reconnectAfter = DEFAULT_RECONNECT_TIMEOUT;
|
|
603
|
-
_instanceId = PublicKey3.random().toHex();
|
|
604
512
|
/**
|
|
605
513
|
* @internal
|
|
606
514
|
*/
|
|
@@ -625,14 +533,7 @@ var SignalClient = class extends Resource {
|
|
|
625
533
|
}, async (event) => this.swarmEvent.emit(event));
|
|
626
534
|
}
|
|
627
535
|
async _open() {
|
|
628
|
-
log3
|
|
629
|
-
id: this._instanceId
|
|
630
|
-
}), {
|
|
631
|
-
F: __dxlog_file3,
|
|
632
|
-
L: 96,
|
|
633
|
-
S: this,
|
|
634
|
-
C: (f, a) => f(...a)
|
|
635
|
-
});
|
|
536
|
+
log3("opening signal client", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file3, L: 62, S: this });
|
|
636
537
|
if ([
|
|
637
538
|
SignalState.CONNECTED,
|
|
638
539
|
SignalState.CONNECTING
|
|
@@ -645,15 +546,7 @@ var SignalClient = class extends Resource {
|
|
|
645
546
|
await cancelWithContext2(this._connectionCtx, this._clientReady.wait({
|
|
646
547
|
timeout: 5e3
|
|
647
548
|
}));
|
|
648
|
-
invariant2(this._state === SignalState.CONNECTED, "Not connected to Signal Server", {
|
|
649
|
-
F: __dxlog_file3,
|
|
650
|
-
L: 106,
|
|
651
|
-
S: this,
|
|
652
|
-
A: [
|
|
653
|
-
"this._state === SignalState.CONNECTED",
|
|
654
|
-
"'Not connected to Signal Server'"
|
|
655
|
-
]
|
|
656
|
-
});
|
|
549
|
+
invariant2(this._state === SignalState.CONNECTED, "Not connected to Signal Server", { "~LogMeta": "~LogMeta", F: __dxlog_file3, L: 75, S: this, A: ["this._state === SignalState.CONNECTED", "'Not connected to Signal Server'"] });
|
|
657
550
|
await this.localState.reconcile(this._connectionCtx, this._client);
|
|
658
551
|
this._monitor.recordReconciliation({
|
|
659
552
|
success: true
|
|
@@ -686,36 +579,19 @@ var SignalClient = class extends Resource {
|
|
|
686
579
|
}
|
|
687
580
|
});
|
|
688
581
|
this._createClient();
|
|
689
|
-
log3
|
|
690
|
-
id: this._instanceId
|
|
691
|
-
}), {
|
|
692
|
-
F: __dxlog_file3,
|
|
693
|
-
L: 139,
|
|
694
|
-
S: this,
|
|
695
|
-
C: (f, a) => f(...a)
|
|
696
|
-
});
|
|
582
|
+
log3("opened signal client", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file3, L: 109, S: this });
|
|
697
583
|
}
|
|
698
584
|
async _catch(err) {
|
|
699
585
|
if (this._state === SignalState.CLOSED || this._ctx.disposed) {
|
|
700
586
|
return;
|
|
701
587
|
}
|
|
702
588
|
if (this._state === SignalState.CONNECTED && !this._lastReconciliationFailed) {
|
|
703
|
-
log3.warn("SignalClient error:", err, {
|
|
704
|
-
F: __dxlog_file3,
|
|
705
|
-
L: 148,
|
|
706
|
-
S: this,
|
|
707
|
-
C: (f, a) => f(...a)
|
|
708
|
-
});
|
|
589
|
+
log3.warn("SignalClient error:", err, { "~LogMeta": "~LogMeta", F: __dxlog_file3, L: 117, S: this });
|
|
709
590
|
}
|
|
710
591
|
this._scheduleReconcileAfterError();
|
|
711
592
|
}
|
|
712
593
|
async _close() {
|
|
713
|
-
log3("closing...", void 0, {
|
|
714
|
-
F: __dxlog_file3,
|
|
715
|
-
L: 154,
|
|
716
|
-
S: this,
|
|
717
|
-
C: (f, a) => f(...a)
|
|
718
|
-
});
|
|
594
|
+
log3("closing...", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file3, L: 122, S: this });
|
|
719
595
|
if ([
|
|
720
596
|
SignalState.CLOSED
|
|
721
597
|
].includes(this._state)) {
|
|
@@ -723,12 +599,7 @@ var SignalClient = class extends Resource {
|
|
|
723
599
|
}
|
|
724
600
|
this._setState(SignalState.CLOSED);
|
|
725
601
|
await this._safeResetClient();
|
|
726
|
-
log3("closed", void 0, {
|
|
727
|
-
F: __dxlog_file3,
|
|
728
|
-
L: 162,
|
|
729
|
-
S: this,
|
|
730
|
-
C: (f, a) => f(...a)
|
|
731
|
-
});
|
|
602
|
+
log3("closed", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file3, L: 130, S: this });
|
|
732
603
|
}
|
|
733
604
|
getStatus() {
|
|
734
605
|
return {
|
|
@@ -743,16 +614,11 @@ var SignalClient = class extends Resource {
|
|
|
743
614
|
log3("joining", {
|
|
744
615
|
topic: args.topic,
|
|
745
616
|
peerId: args.peer.peerKey
|
|
746
|
-
}, {
|
|
747
|
-
F: __dxlog_file3,
|
|
748
|
-
L: 176,
|
|
749
|
-
S: this,
|
|
750
|
-
C: (f, a) => f(...a)
|
|
751
|
-
});
|
|
617
|
+
}, { "~LogMeta": "~LogMeta", F: __dxlog_file3, L: 142, S: this });
|
|
752
618
|
this._monitor.recordJoin();
|
|
753
619
|
this.localState.join({
|
|
754
620
|
topic: args.topic,
|
|
755
|
-
peerId:
|
|
621
|
+
peerId: PublicKey2.from(args.peer.peerKey)
|
|
756
622
|
});
|
|
757
623
|
this._reconcileTask?.schedule();
|
|
758
624
|
}
|
|
@@ -760,16 +626,11 @@ var SignalClient = class extends Resource {
|
|
|
760
626
|
log3("leaving", {
|
|
761
627
|
topic: args.topic,
|
|
762
628
|
peerId: args.peer.peerKey
|
|
763
|
-
}, {
|
|
764
|
-
F: __dxlog_file3,
|
|
765
|
-
L: 183,
|
|
766
|
-
S: this,
|
|
767
|
-
C: (f, a) => f(...a)
|
|
768
|
-
});
|
|
629
|
+
}, { "~LogMeta": "~LogMeta", F: __dxlog_file3, L: 154, S: this });
|
|
769
630
|
this._monitor.recordLeave();
|
|
770
631
|
this.localState.leave({
|
|
771
632
|
topic: args.topic,
|
|
772
|
-
peerId:
|
|
633
|
+
peerId: PublicKey2.from(args.peer.peerKey)
|
|
773
634
|
});
|
|
774
635
|
}
|
|
775
636
|
async query(_ctx, params) {
|
|
@@ -778,80 +639,30 @@ var SignalClient = class extends Resource {
|
|
|
778
639
|
async sendMessage(_ctx, msg) {
|
|
779
640
|
return this._monitor.recordMessageSending(msg, async () => {
|
|
780
641
|
await this._clientReady.wait();
|
|
781
|
-
invariant2(this._state === SignalState.CONNECTED, "Not connected to Signal Server", {
|
|
782
|
-
|
|
783
|
-
|
|
784
|
-
S: this,
|
|
785
|
-
A: [
|
|
786
|
-
"this._state === SignalState.CONNECTED",
|
|
787
|
-
"'Not connected to Signal Server'"
|
|
788
|
-
]
|
|
789
|
-
});
|
|
790
|
-
invariant2(msg.author.peerKey, "Author key required", {
|
|
791
|
-
F: __dxlog_file3,
|
|
792
|
-
L: 196,
|
|
793
|
-
S: this,
|
|
794
|
-
A: [
|
|
795
|
-
"msg.author.peerKey",
|
|
796
|
-
"'Author key required'"
|
|
797
|
-
]
|
|
798
|
-
});
|
|
799
|
-
invariant2(msg.recipient.peerKey, "Recipient key required", {
|
|
800
|
-
F: __dxlog_file3,
|
|
801
|
-
L: 197,
|
|
802
|
-
S: this,
|
|
803
|
-
A: [
|
|
804
|
-
"msg.recipient.peerKey",
|
|
805
|
-
"'Recipient key required'"
|
|
806
|
-
]
|
|
807
|
-
});
|
|
642
|
+
invariant2(this._state === SignalState.CONNECTED, "Not connected to Signal Server", { "~LogMeta": "~LogMeta", F: __dxlog_file3, L: 170, S: this, A: ["this._state === SignalState.CONNECTED", "'Not connected to Signal Server'"] });
|
|
643
|
+
invariant2(msg.author.peerKey, "Author key required", { "~LogMeta": "~LogMeta", F: __dxlog_file3, L: 171, S: this, A: ["msg.author.peerKey", "'Author key required'"] });
|
|
644
|
+
invariant2(msg.recipient.peerKey, "Recipient key required", { "~LogMeta": "~LogMeta", F: __dxlog_file3, L: 172, S: this, A: ["msg.recipient.peerKey", "'Recipient key required'"] });
|
|
808
645
|
await this._client.sendMessage({
|
|
809
|
-
author:
|
|
810
|
-
recipient:
|
|
646
|
+
author: PublicKey2.from(msg.author.peerKey),
|
|
647
|
+
recipient: PublicKey2.from(msg.recipient.peerKey),
|
|
811
648
|
payload: msg.payload
|
|
812
649
|
});
|
|
813
650
|
});
|
|
814
651
|
}
|
|
815
652
|
async subscribeMessages(peer) {
|
|
816
|
-
invariant2(peer.peerKey, "Peer key required", {
|
|
817
|
-
F: __dxlog_file3,
|
|
818
|
-
L: 207,
|
|
819
|
-
S: this,
|
|
820
|
-
A: [
|
|
821
|
-
"peer.peerKey",
|
|
822
|
-
"'Peer key required'"
|
|
823
|
-
]
|
|
824
|
-
});
|
|
653
|
+
invariant2(peer.peerKey, "Peer key required", { "~LogMeta": "~LogMeta", F: __dxlog_file3, L: 181, S: this, A: ["peer.peerKey", "'Peer key required'"] });
|
|
825
654
|
log3("subscribing to messages", {
|
|
826
655
|
peer
|
|
827
|
-
}, {
|
|
828
|
-
|
|
829
|
-
L: 208,
|
|
830
|
-
S: this,
|
|
831
|
-
C: (f, a) => f(...a)
|
|
832
|
-
});
|
|
833
|
-
this.localState.subscribeMessages(PublicKey3.from(peer.peerKey));
|
|
656
|
+
}, { "~LogMeta": "~LogMeta", F: __dxlog_file3, L: 182, S: this });
|
|
657
|
+
this.localState.subscribeMessages(PublicKey2.from(peer.peerKey));
|
|
834
658
|
this._reconcileTask?.schedule();
|
|
835
659
|
}
|
|
836
660
|
async unsubscribeMessages(peer) {
|
|
837
|
-
invariant2(peer.peerKey, "Peer key required", {
|
|
838
|
-
F: __dxlog_file3,
|
|
839
|
-
L: 214,
|
|
840
|
-
S: this,
|
|
841
|
-
A: [
|
|
842
|
-
"peer.peerKey",
|
|
843
|
-
"'Peer key required'"
|
|
844
|
-
]
|
|
845
|
-
});
|
|
661
|
+
invariant2(peer.peerKey, "Peer key required", { "~LogMeta": "~LogMeta", F: __dxlog_file3, L: 189, S: this, A: ["peer.peerKey", "'Peer key required'"] });
|
|
846
662
|
log3("unsubscribing from messages", {
|
|
847
663
|
peer
|
|
848
|
-
}, {
|
|
849
|
-
|
|
850
|
-
L: 215,
|
|
851
|
-
S: this,
|
|
852
|
-
C: (f, a) => f(...a)
|
|
853
|
-
});
|
|
854
|
-
this.localState.unsubscribeMessages(PublicKey3.from(peer.peerKey));
|
|
664
|
+
}, { "~LogMeta": "~LogMeta", F: __dxlog_file3, L: 190, S: this });
|
|
665
|
+
this.localState.unsubscribeMessages(PublicKey2.from(peer.peerKey));
|
|
855
666
|
}
|
|
856
667
|
_scheduleReconcileAfterError() {
|
|
857
668
|
scheduleTask(this._ctx, () => this._reconcileTask.schedule(), ERROR_RECONCILE_DELAY);
|
|
@@ -860,30 +671,12 @@ var SignalClient = class extends Resource {
|
|
|
860
671
|
log3("creating client", {
|
|
861
672
|
host: this._host,
|
|
862
673
|
state: this._state
|
|
863
|
-
}, {
|
|
864
|
-
|
|
865
|
-
L: 224,
|
|
866
|
-
S: this,
|
|
867
|
-
C: (f, a) => f(...a)
|
|
868
|
-
});
|
|
869
|
-
invariant2(!this._client, "Client already created", {
|
|
870
|
-
F: __dxlog_file3,
|
|
871
|
-
L: 225,
|
|
872
|
-
S: this,
|
|
873
|
-
A: [
|
|
874
|
-
"!this._client",
|
|
875
|
-
"'Client already created'"
|
|
876
|
-
]
|
|
877
|
-
});
|
|
674
|
+
}, { "~LogMeta": "~LogMeta", F: __dxlog_file3, L: 199, S: this });
|
|
675
|
+
invariant2(!this._client, "Client already created", { "~LogMeta": "~LogMeta", F: __dxlog_file3, L: 203, S: this, A: ["!this._client", "'Client already created'"] });
|
|
878
676
|
this._monitor.recordConnectionStartTime();
|
|
879
677
|
this._connectionCtx = this._ctx.derive();
|
|
880
678
|
this._connectionCtx.onDispose(async () => {
|
|
881
|
-
log3("connection context disposed", void 0, {
|
|
882
|
-
F: __dxlog_file3,
|
|
883
|
-
L: 232,
|
|
884
|
-
S: this,
|
|
885
|
-
C: (f, a) => f(...a)
|
|
886
|
-
});
|
|
679
|
+
log3("connection context disposed", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file3, L: 208, S: this });
|
|
887
680
|
const { failureCount } = await this.localState.safeCloseStreams();
|
|
888
681
|
this._monitor.recordStreamCloseErrors(failureCount);
|
|
889
682
|
});
|
|
@@ -893,12 +686,7 @@ var SignalClient = class extends Resource {
|
|
|
893
686
|
callbacks: {
|
|
894
687
|
onConnected: () => {
|
|
895
688
|
if (client === this._client) {
|
|
896
|
-
log3("socket connected", void 0, {
|
|
897
|
-
F: __dxlog_file3,
|
|
898
|
-
L: 243,
|
|
899
|
-
S: this,
|
|
900
|
-
C: (f, a) => f(...a)
|
|
901
|
-
});
|
|
689
|
+
log3("socket connected", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file3, L: 218, S: this });
|
|
902
690
|
this._onConnected();
|
|
903
691
|
}
|
|
904
692
|
},
|
|
@@ -908,12 +696,7 @@ var SignalClient = class extends Resource {
|
|
|
908
696
|
}
|
|
909
697
|
log3("socket disconnected", {
|
|
910
698
|
state: this._state
|
|
911
|
-
}, {
|
|
912
|
-
F: __dxlog_file3,
|
|
913
|
-
L: 252,
|
|
914
|
-
S: this,
|
|
915
|
-
C: (f, a) => f(...a)
|
|
916
|
-
});
|
|
699
|
+
}, { "~LogMeta": "~LogMeta", F: __dxlog_file3, L: 226, S: this });
|
|
917
700
|
if (this._state === SignalState.ERROR) {
|
|
918
701
|
this._setState(SignalState.DISCONNECTED);
|
|
919
702
|
} else {
|
|
@@ -925,12 +708,7 @@ var SignalClient = class extends Resource {
|
|
|
925
708
|
log3("socket error", {
|
|
926
709
|
error,
|
|
927
710
|
state: this._state
|
|
928
|
-
}, {
|
|
929
|
-
F: __dxlog_file3,
|
|
930
|
-
L: 264,
|
|
931
|
-
S: this,
|
|
932
|
-
C: (f, a) => f(...a)
|
|
933
|
-
});
|
|
711
|
+
}, { "~LogMeta": "~LogMeta", F: __dxlog_file3, L: 239, S: this });
|
|
934
712
|
this._onDisconnected({
|
|
935
713
|
error
|
|
936
714
|
});
|
|
@@ -950,19 +728,9 @@ var SignalClient = class extends Resource {
|
|
|
950
728
|
async _reconnect() {
|
|
951
729
|
log3(`reconnecting in ${this._reconnectAfter}ms`, {
|
|
952
730
|
state: this._state
|
|
953
|
-
}, {
|
|
954
|
-
F: __dxlog_file3,
|
|
955
|
-
L: 279,
|
|
956
|
-
S: this,
|
|
957
|
-
C: (f, a) => f(...a)
|
|
958
|
-
});
|
|
731
|
+
}, { "~LogMeta": "~LogMeta", F: __dxlog_file3, L: 260, S: this });
|
|
959
732
|
if (this._state === SignalState.RECONNECTING) {
|
|
960
|
-
log3.info("Signal api already reconnecting.", void 0, {
|
|
961
|
-
F: __dxlog_file3,
|
|
962
|
-
L: 282,
|
|
963
|
-
S: this,
|
|
964
|
-
C: (f, a) => f(...a)
|
|
965
|
-
});
|
|
733
|
+
log3.info("Signal api already reconnecting.", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file3, L: 264, S: this });
|
|
966
734
|
return;
|
|
967
735
|
}
|
|
968
736
|
if (this._state === SignalState.CLOSED) {
|
|
@@ -999,12 +767,7 @@ var SignalClient = class extends Resource {
|
|
|
999
767
|
this._monitor.recordStateChangeTime();
|
|
1000
768
|
log3("signal state changed", {
|
|
1001
769
|
status: this.getStatus()
|
|
1002
|
-
}, {
|
|
1003
|
-
F: __dxlog_file3,
|
|
1004
|
-
L: 323,
|
|
1005
|
-
S: this,
|
|
1006
|
-
C: (f, a) => f(...a)
|
|
1007
|
-
});
|
|
770
|
+
}, { "~LogMeta": "~LogMeta", F: __dxlog_file3, L: 299, S: this });
|
|
1008
771
|
this.statusChanged.emit(this.getStatus());
|
|
1009
772
|
}
|
|
1010
773
|
_updateReconnectTimeout() {
|
|
@@ -1027,19 +790,18 @@ var SignalClient = class extends Resource {
|
|
|
1027
790
|
import { Event as Event3, sleep as sleep2, synchronized } from "@dxos/async";
|
|
1028
791
|
import { LifecycleState, Resource as Resource2 } from "@dxos/context";
|
|
1029
792
|
import { invariant as invariant3 } from "@dxos/invariant";
|
|
1030
|
-
import { PublicKey as PublicKey4 } from "@dxos/keys";
|
|
1031
793
|
import { log as log4 } from "@dxos/log";
|
|
1032
|
-
import { RateLimitExceededError, TimeoutError as TimeoutError2
|
|
794
|
+
import { RateLimitExceededError, TimeoutError as TimeoutError2 } from "@dxos/protocols";
|
|
1033
795
|
import { BitField, safeAwaitAll as safeAwaitAll2 } from "@dxos/util";
|
|
1034
796
|
|
|
1035
797
|
// src/signal-manager/websocket-signal-manager-monitor.ts
|
|
1036
|
-
import { trace as
|
|
798
|
+
import { trace as trace3 } from "@dxos/tracing";
|
|
1037
799
|
var WebsocketSignalManagerMonitor = class {
|
|
1038
800
|
recordRateLimitExceeded() {
|
|
1039
|
-
|
|
801
|
+
trace3.metrics.increment("dxos.mesh.signal.signal-manager.rate-limit-hit", 1);
|
|
1040
802
|
}
|
|
1041
803
|
recordServerFailure(params) {
|
|
1042
|
-
|
|
804
|
+
trace3.metrics.increment("dxos.mesh.signal.signal-manager.server-failure", 1, {
|
|
1043
805
|
tags: {
|
|
1044
806
|
server: params.serverName,
|
|
1045
807
|
restarted: params.willRestart
|
|
@@ -1049,13 +811,13 @@ var WebsocketSignalManagerMonitor = class {
|
|
|
1049
811
|
};
|
|
1050
812
|
|
|
1051
813
|
// src/signal-manager/websocket-signal-manager.ts
|
|
814
|
+
var __dxlog_file4 = "/__w/dxos/dxos/packages/core/mesh/messaging/src/signal-manager/websocket-signal-manager.ts";
|
|
1052
815
|
function _ts_decorate(decorators, target, key, desc) {
|
|
1053
816
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
1054
817
|
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
1055
818
|
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
1056
819
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
1057
820
|
}
|
|
1058
|
-
var __dxlog_file4 = "/__w/dxos/dxos/packages/core/mesh/messaging/src/signal-manager/websocket-signal-manager.ts";
|
|
1059
821
|
var MAX_SERVER_FAILURES = 5;
|
|
1060
822
|
var WSS_SIGNAL_SERVER_REBOOT_DELAY = 3e3;
|
|
1061
823
|
var WebsocketSignalManager = class extends Resource2 {
|
|
@@ -1071,17 +833,11 @@ var WebsocketSignalManager = class extends Resource2 {
|
|
|
1071
833
|
statusChanged = new Event3();
|
|
1072
834
|
swarmEvent = new Event3();
|
|
1073
835
|
onMessage = new Event3();
|
|
1074
|
-
_instanceId = PublicKey4.random().toHex();
|
|
1075
836
|
constructor(_hosts, _getMetadata) {
|
|
1076
837
|
super(), this._hosts = _hosts, this._getMetadata = _getMetadata;
|
|
1077
838
|
log4("Created WebsocketSignalManager", {
|
|
1078
839
|
hosts: this._hosts
|
|
1079
|
-
}, {
|
|
1080
|
-
F: __dxlog_file4,
|
|
1081
|
-
L: 58,
|
|
1082
|
-
S: this,
|
|
1083
|
-
C: (f, a) => f(...a)
|
|
1084
|
-
});
|
|
840
|
+
}, { "~LogMeta": "~LogMeta", F: __dxlog_file4, L: 38, S: this });
|
|
1085
841
|
for (const host of this._hosts) {
|
|
1086
842
|
if (this._servers.has(host.server)) {
|
|
1087
843
|
continue;
|
|
@@ -1098,29 +854,8 @@ var WebsocketSignalManager = class extends Resource2 {
|
|
|
1098
854
|
async _open() {
|
|
1099
855
|
log4("open signal manager", {
|
|
1100
856
|
hosts: this._hosts
|
|
1101
|
-
}, {
|
|
1102
|
-
F: __dxlog_file4,
|
|
1103
|
-
L: 78,
|
|
1104
|
-
S: this,
|
|
1105
|
-
C: (f, a) => f(...a)
|
|
1106
|
-
});
|
|
1107
|
-
log4.trace("dxos.mesh.websocket-signal-manager.open", trace6.begin({
|
|
1108
|
-
id: this._instanceId
|
|
1109
|
-
}), {
|
|
1110
|
-
F: __dxlog_file4,
|
|
1111
|
-
L: 79,
|
|
1112
|
-
S: this,
|
|
1113
|
-
C: (f, a) => f(...a)
|
|
1114
|
-
});
|
|
857
|
+
}, { "~LogMeta": "~LogMeta", F: __dxlog_file4, L: 56, S: this });
|
|
1115
858
|
await safeAwaitAll2(this._servers.values(), (server) => server.open());
|
|
1116
|
-
log4.trace("dxos.mesh.websocket-signal-manager.open", trace6.end({
|
|
1117
|
-
id: this._instanceId
|
|
1118
|
-
}), {
|
|
1119
|
-
F: __dxlog_file4,
|
|
1120
|
-
L: 83,
|
|
1121
|
-
S: this,
|
|
1122
|
-
C: (f, a) => f(...a)
|
|
1123
|
-
});
|
|
1124
859
|
}
|
|
1125
860
|
async _close() {
|
|
1126
861
|
await safeAwaitAll2(this._servers.values(), (server) => server.close());
|
|
@@ -1128,31 +863,10 @@ var WebsocketSignalManager = class extends Resource2 {
|
|
|
1128
863
|
async restartServer(serverName) {
|
|
1129
864
|
log4("restarting server", {
|
|
1130
865
|
serverName
|
|
1131
|
-
}, {
|
|
1132
|
-
|
|
1133
|
-
L: 91,
|
|
1134
|
-
S: this,
|
|
1135
|
-
C: (f, a) => f(...a)
|
|
1136
|
-
});
|
|
1137
|
-
invariant3(this._lifecycleState === LifecycleState.OPEN, void 0, {
|
|
1138
|
-
F: __dxlog_file4,
|
|
1139
|
-
L: 92,
|
|
1140
|
-
S: this,
|
|
1141
|
-
A: [
|
|
1142
|
-
"this._lifecycleState === LifecycleState.OPEN",
|
|
1143
|
-
""
|
|
1144
|
-
]
|
|
1145
|
-
});
|
|
866
|
+
}, { "~LogMeta": "~LogMeta", F: __dxlog_file4, L: 65, S: this });
|
|
867
|
+
invariant3(this._lifecycleState === LifecycleState.OPEN, void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file4, L: 68, S: this, A: ["this._lifecycleState === LifecycleState.OPEN", ""] });
|
|
1146
868
|
const server = this._servers.get(serverName);
|
|
1147
|
-
invariant3(server, "server not found", {
|
|
1148
|
-
F: __dxlog_file4,
|
|
1149
|
-
L: 95,
|
|
1150
|
-
S: this,
|
|
1151
|
-
A: [
|
|
1152
|
-
"server",
|
|
1153
|
-
"'server not found'"
|
|
1154
|
-
]
|
|
1155
|
-
});
|
|
869
|
+
invariant3(server, "server not found", { "~LogMeta": "~LogMeta", F: __dxlog_file4, L: 70, S: this, A: ["server", "'server not found'"] });
|
|
1156
870
|
await server.close();
|
|
1157
871
|
await sleep2(WSS_SIGNAL_SERVER_REBOOT_DELAY);
|
|
1158
872
|
await server.open();
|
|
@@ -1164,21 +878,8 @@ var WebsocketSignalManager = class extends Resource2 {
|
|
|
1164
878
|
log4("join", {
|
|
1165
879
|
topic,
|
|
1166
880
|
peer
|
|
1167
|
-
}, {
|
|
1168
|
-
|
|
1169
|
-
L: 108,
|
|
1170
|
-
S: this,
|
|
1171
|
-
C: (f, a) => f(...a)
|
|
1172
|
-
});
|
|
1173
|
-
invariant3(this._lifecycleState === LifecycleState.OPEN, void 0, {
|
|
1174
|
-
F: __dxlog_file4,
|
|
1175
|
-
L: 109,
|
|
1176
|
-
S: this,
|
|
1177
|
-
A: [
|
|
1178
|
-
"this._lifecycleState === LifecycleState.OPEN",
|
|
1179
|
-
""
|
|
1180
|
-
]
|
|
1181
|
-
});
|
|
881
|
+
}, { "~LogMeta": "~LogMeta", F: __dxlog_file4, L: 79, S: this });
|
|
882
|
+
invariant3(this._lifecycleState === LifecycleState.OPEN, void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file4, L: 83, S: this, A: ["this._lifecycleState === LifecycleState.OPEN", ""] });
|
|
1182
883
|
await this._forEachServer((server) => server.join(_ctx, {
|
|
1183
884
|
topic,
|
|
1184
885
|
peer
|
|
@@ -1188,21 +889,8 @@ var WebsocketSignalManager = class extends Resource2 {
|
|
|
1188
889
|
log4("leaving", {
|
|
1189
890
|
topic,
|
|
1190
891
|
peer
|
|
1191
|
-
}, {
|
|
1192
|
-
|
|
1193
|
-
L: 115,
|
|
1194
|
-
S: this,
|
|
1195
|
-
C: (f, a) => f(...a)
|
|
1196
|
-
});
|
|
1197
|
-
invariant3(this._lifecycleState === LifecycleState.OPEN, void 0, {
|
|
1198
|
-
F: __dxlog_file4,
|
|
1199
|
-
L: 116,
|
|
1200
|
-
S: this,
|
|
1201
|
-
A: [
|
|
1202
|
-
"this._lifecycleState === LifecycleState.OPEN",
|
|
1203
|
-
""
|
|
1204
|
-
]
|
|
1205
|
-
});
|
|
892
|
+
}, { "~LogMeta": "~LogMeta", F: __dxlog_file4, L: 90, S: this });
|
|
893
|
+
invariant3(this._lifecycleState === LifecycleState.OPEN, void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file4, L: 94, S: this, A: ["this._lifecycleState === LifecycleState.OPEN", ""] });
|
|
1206
894
|
await this._forEachServer((server) => server.leave(_ctx, {
|
|
1207
895
|
topic,
|
|
1208
896
|
peer
|
|
@@ -1214,21 +902,8 @@ var WebsocketSignalManager = class extends Resource2 {
|
|
|
1214
902
|
async sendMessage(_ctx, { author, recipient, payload }) {
|
|
1215
903
|
log4("signal", {
|
|
1216
904
|
recipient
|
|
1217
|
-
}, {
|
|
1218
|
-
|
|
1219
|
-
L: 125,
|
|
1220
|
-
S: this,
|
|
1221
|
-
C: (f, a) => f(...a)
|
|
1222
|
-
});
|
|
1223
|
-
invariant3(this._lifecycleState === LifecycleState.OPEN, void 0, {
|
|
1224
|
-
F: __dxlog_file4,
|
|
1225
|
-
L: 126,
|
|
1226
|
-
S: this,
|
|
1227
|
-
A: [
|
|
1228
|
-
"this._lifecycleState === LifecycleState.OPEN",
|
|
1229
|
-
""
|
|
1230
|
-
]
|
|
1231
|
-
});
|
|
905
|
+
}, { "~LogMeta": "~LogMeta", F: __dxlog_file4, L: 104, S: this });
|
|
906
|
+
invariant3(this._lifecycleState === LifecycleState.OPEN, void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file4, L: 107, S: this, A: ["this._lifecycleState === LifecycleState.OPEN", ""] });
|
|
1232
907
|
void this._forEachServer(async (server, serverName, index) => {
|
|
1233
908
|
void server.sendMessage(_ctx, {
|
|
1234
909
|
author,
|
|
@@ -1238,32 +913,17 @@ var WebsocketSignalManager = class extends Resource2 {
|
|
|
1238
913
|
if (err instanceof RateLimitExceededError) {
|
|
1239
914
|
log4.info("WSS rate limit exceeded", {
|
|
1240
915
|
err
|
|
1241
|
-
}, {
|
|
1242
|
-
F: __dxlog_file4,
|
|
1243
|
-
L: 134,
|
|
1244
|
-
S: this,
|
|
1245
|
-
C: (f, a) => f(...a)
|
|
1246
|
-
});
|
|
916
|
+
}, { "~LogMeta": "~LogMeta", F: __dxlog_file4, L: 115, S: this });
|
|
1247
917
|
this._monitor.recordRateLimitExceeded();
|
|
1248
918
|
} else if (err instanceof TimeoutError2 || err.constructor.name === "TimeoutError") {
|
|
1249
919
|
log4.info("WSS sendMessage timeout", {
|
|
1250
920
|
err
|
|
1251
|
-
}, {
|
|
1252
|
-
F: __dxlog_file4,
|
|
1253
|
-
L: 137,
|
|
1254
|
-
S: this,
|
|
1255
|
-
C: (f, a) => f(...a)
|
|
1256
|
-
});
|
|
921
|
+
}, { "~LogMeta": "~LogMeta", F: __dxlog_file4, L: 120, S: this });
|
|
1257
922
|
void this.checkServerFailure(serverName, index);
|
|
1258
923
|
} else {
|
|
1259
924
|
log4.warn(`error sending to ${serverName}`, {
|
|
1260
925
|
err
|
|
1261
|
-
}, {
|
|
1262
|
-
F: __dxlog_file4,
|
|
1263
|
-
L: 140,
|
|
1264
|
-
S: this,
|
|
1265
|
-
C: (f, a) => f(...a)
|
|
1266
|
-
});
|
|
926
|
+
}, { "~LogMeta": "~LogMeta", F: __dxlog_file4, L: 125, S: this });
|
|
1267
927
|
void this.checkServerFailure(serverName, index);
|
|
1268
928
|
}
|
|
1269
929
|
});
|
|
@@ -1281,12 +941,7 @@ var WebsocketSignalManager = class extends Resource2 {
|
|
|
1281
941
|
log4.warn("too many failures for ws-server, restarting", {
|
|
1282
942
|
serverName,
|
|
1283
943
|
failureCount
|
|
1284
|
-
}, {
|
|
1285
|
-
F: __dxlog_file4,
|
|
1286
|
-
L: 154,
|
|
1287
|
-
S: this,
|
|
1288
|
-
C: (f, a) => f(...a)
|
|
1289
|
-
});
|
|
944
|
+
}, { "~LogMeta": "~LogMeta", F: __dxlog_file4, L: 142, S: this });
|
|
1290
945
|
BitField.set(this._failedServersBitfield, index, true);
|
|
1291
946
|
}
|
|
1292
947
|
await this.restartServer(serverName);
|
|
@@ -1299,12 +954,7 @@ var WebsocketSignalManager = class extends Resource2 {
|
|
|
1299
954
|
if (BitField.get(this._failedServersBitfield, index)) {
|
|
1300
955
|
log4.info("server connection restored", {
|
|
1301
956
|
serverName
|
|
1302
|
-
}, {
|
|
1303
|
-
F: __dxlog_file4,
|
|
1304
|
-
L: 167,
|
|
1305
|
-
S: this,
|
|
1306
|
-
C: (f, a) => f(...a)
|
|
1307
|
-
});
|
|
957
|
+
}, { "~LogMeta": "~LogMeta", F: __dxlog_file4, L: 156, S: this });
|
|
1308
958
|
BitField.set(this._failedServersBitfield, index, false);
|
|
1309
959
|
this.failureCount.set(serverName, 0);
|
|
1310
960
|
}
|
|
@@ -1312,41 +962,15 @@ var WebsocketSignalManager = class extends Resource2 {
|
|
|
1312
962
|
async subscribeMessages(peer) {
|
|
1313
963
|
log4("subscribed for message stream", {
|
|
1314
964
|
peer
|
|
1315
|
-
}, {
|
|
1316
|
-
|
|
1317
|
-
L: 174,
|
|
1318
|
-
S: this,
|
|
1319
|
-
C: (f, a) => f(...a)
|
|
1320
|
-
});
|
|
1321
|
-
invariant3(this._lifecycleState === LifecycleState.OPEN, void 0, {
|
|
1322
|
-
F: __dxlog_file4,
|
|
1323
|
-
L: 175,
|
|
1324
|
-
S: this,
|
|
1325
|
-
A: [
|
|
1326
|
-
"this._lifecycleState === LifecycleState.OPEN",
|
|
1327
|
-
""
|
|
1328
|
-
]
|
|
1329
|
-
});
|
|
965
|
+
}, { "~LogMeta": "~LogMeta", F: __dxlog_file4, L: 164, S: this });
|
|
966
|
+
invariant3(this._lifecycleState === LifecycleState.OPEN, void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file4, L: 167, S: this, A: ["this._lifecycleState === LifecycleState.OPEN", ""] });
|
|
1330
967
|
await this._forEachServer(async (server) => server.subscribeMessages(peer));
|
|
1331
968
|
}
|
|
1332
969
|
async unsubscribeMessages(peer) {
|
|
1333
970
|
log4("subscribed for message stream", {
|
|
1334
971
|
peer
|
|
1335
|
-
}, {
|
|
1336
|
-
|
|
1337
|
-
L: 181,
|
|
1338
|
-
S: this,
|
|
1339
|
-
C: (f, a) => f(...a)
|
|
1340
|
-
});
|
|
1341
|
-
invariant3(this._lifecycleState === LifecycleState.OPEN, void 0, {
|
|
1342
|
-
F: __dxlog_file4,
|
|
1343
|
-
L: 182,
|
|
1344
|
-
S: this,
|
|
1345
|
-
A: [
|
|
1346
|
-
"this._lifecycleState === LifecycleState.OPEN",
|
|
1347
|
-
""
|
|
1348
|
-
]
|
|
1349
|
-
});
|
|
972
|
+
}, { "~LogMeta": "~LogMeta", F: __dxlog_file4, L: 171, S: this });
|
|
973
|
+
invariant3(this._lifecycleState === LifecycleState.OPEN, void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file4, L: 174, S: this, A: ["this._lifecycleState === LifecycleState.OPEN", ""] });
|
|
1350
974
|
await this._forEachServer(async (server) => server.unsubscribeMessages(peer));
|
|
1351
975
|
}
|
|
1352
976
|
async _forEachServer(fn) {
|
|
@@ -1368,7 +992,7 @@ import { Event as Event4, scheduleMicroTask } from "@dxos/async";
|
|
|
1368
992
|
import { Resource as Resource3, cancelWithContext as cancelWithContext3 } from "@dxos/context";
|
|
1369
993
|
import { EdgeIdentityChangedError, protocol } from "@dxos/edge-client";
|
|
1370
994
|
import { invariant as invariant4 } from "@dxos/invariant";
|
|
1371
|
-
import { PublicKey as
|
|
995
|
+
import { PublicKey as PublicKey3 } from "@dxos/keys";
|
|
1372
996
|
import { log as log5 } from "@dxos/log";
|
|
1373
997
|
import { EdgeService } from "@dxos/protocols";
|
|
1374
998
|
import { bufWkt } from "@dxos/protocols/buf";
|
|
@@ -1386,7 +1010,7 @@ var EdgeSignalManager = class extends Resource3 {
|
|
|
1386
1010
|
* Swarm key -> { peer: <own state payload>, joinedPeers: <state of swarm> }.
|
|
1387
1011
|
*/
|
|
1388
1012
|
// TODO(mykola): This class should not contain swarm state joinedPeers. Temporary before network-manager API changes to accept list of peers.
|
|
1389
|
-
_swarmPeers = new ComplexMap2(
|
|
1013
|
+
_swarmPeers = new ComplexMap2(PublicKey3.hash);
|
|
1390
1014
|
_edgeConnection;
|
|
1391
1015
|
constructor({ edgeConnection }) {
|
|
1392
1016
|
super();
|
|
@@ -1409,12 +1033,7 @@ var EdgeSignalManager = class extends Resource3 {
|
|
|
1409
1033
|
peerKey: this._edgeConnection.peerKey,
|
|
1410
1034
|
identityKey: this._edgeConnection.identityKey
|
|
1411
1035
|
}
|
|
1412
|
-
}, {
|
|
1413
|
-
F: __dxlog_file5,
|
|
1414
|
-
L: 65,
|
|
1415
|
-
S: this,
|
|
1416
|
-
C: (f, a) => f(...a)
|
|
1417
|
-
});
|
|
1036
|
+
}, { "~LogMeta": "~LogMeta", F: __dxlog_file5, L: 41, S: this });
|
|
1418
1037
|
peer.identityKey = this._edgeConnection.identityKey;
|
|
1419
1038
|
peer.peerKey = this._edgeConnection.peerKey;
|
|
1420
1039
|
}
|
|
@@ -1478,12 +1097,7 @@ var EdgeSignalManager = class extends Resource3 {
|
|
|
1478
1097
|
peerKey: this._edgeConnection.peerKey,
|
|
1479
1098
|
identityKey: this._edgeConnection.identityKey
|
|
1480
1099
|
}
|
|
1481
|
-
}, {
|
|
1482
|
-
F: __dxlog_file5,
|
|
1483
|
-
L: 133,
|
|
1484
|
-
S: this,
|
|
1485
|
-
C: (f, a) => f(...a)
|
|
1486
|
-
});
|
|
1100
|
+
}, { "~LogMeta": "~LogMeta", F: __dxlog_file5, L: 108, S: this });
|
|
1487
1101
|
}
|
|
1488
1102
|
await this._edgeConnection.send(ctx, protocol.createMessage(bufWkt.AnySchema, {
|
|
1489
1103
|
serviceId: EdgeService.SIGNAL,
|
|
@@ -1513,18 +1127,10 @@ var EdgeSignalManager = class extends Resource3 {
|
|
|
1513
1127
|
}
|
|
1514
1128
|
}
|
|
1515
1129
|
_processSwarmResponse(message) {
|
|
1516
|
-
invariant4(protocol.getPayloadType(message) === SwarmResponseSchema.typeName, "Wrong payload type", {
|
|
1517
|
-
F: __dxlog_file5,
|
|
1518
|
-
L: 171,
|
|
1519
|
-
S: this,
|
|
1520
|
-
A: [
|
|
1521
|
-
"protocol.getPayloadType(message) === SwarmResponseSchema.typeName",
|
|
1522
|
-
"'Wrong payload type'"
|
|
1523
|
-
]
|
|
1524
|
-
});
|
|
1130
|
+
invariant4(protocol.getPayloadType(message) === SwarmResponseSchema.typeName, "Wrong payload type", { "~LogMeta": "~LogMeta", F: __dxlog_file5, L: 148, S: this, A: ["protocol.getPayloadType(message) === SwarmResponseSchema.typeName", "'Wrong payload type'"] });
|
|
1525
1131
|
const payload = protocol.getPayload(message, SwarmResponseSchema);
|
|
1526
1132
|
this.swarmState.emit(payload);
|
|
1527
|
-
const topic =
|
|
1133
|
+
const topic = PublicKey3.from(payload.swarmKey);
|
|
1528
1134
|
if (!this._swarmPeers.has(topic)) {
|
|
1529
1135
|
return;
|
|
1530
1136
|
}
|
|
@@ -1557,43 +1163,11 @@ var EdgeSignalManager = class extends Resource3 {
|
|
|
1557
1163
|
this._swarmPeers.get(topic).joinedPeers = newPeers;
|
|
1558
1164
|
}
|
|
1559
1165
|
_processMessage(message) {
|
|
1560
|
-
invariant4(protocol.getPayloadType(message) === bufWkt.AnySchema.typeName, "Wrong payload type", {
|
|
1561
|
-
F: __dxlog_file5,
|
|
1562
|
-
L: 209,
|
|
1563
|
-
S: this,
|
|
1564
|
-
A: [
|
|
1565
|
-
"protocol.getPayloadType(message) === bufWkt.AnySchema.typeName",
|
|
1566
|
-
"'Wrong payload type'"
|
|
1567
|
-
]
|
|
1568
|
-
});
|
|
1166
|
+
invariant4(protocol.getPayloadType(message) === bufWkt.AnySchema.typeName, "Wrong payload type", { "~LogMeta": "~LogMeta", F: __dxlog_file5, L: 186, S: this, A: ["protocol.getPayloadType(message) === bufWkt.AnySchema.typeName", "'Wrong payload type'"] });
|
|
1569
1167
|
const payload = protocol.getPayload(message, bufWkt.AnySchema);
|
|
1570
|
-
invariant4(message.source, "source is missing", {
|
|
1571
|
-
|
|
1572
|
-
|
|
1573
|
-
S: this,
|
|
1574
|
-
A: [
|
|
1575
|
-
"message.source",
|
|
1576
|
-
"'source is missing'"
|
|
1577
|
-
]
|
|
1578
|
-
});
|
|
1579
|
-
invariant4(message.target, "target is missing", {
|
|
1580
|
-
F: __dxlog_file5,
|
|
1581
|
-
L: 212,
|
|
1582
|
-
S: this,
|
|
1583
|
-
A: [
|
|
1584
|
-
"message.target",
|
|
1585
|
-
"'target is missing'"
|
|
1586
|
-
]
|
|
1587
|
-
});
|
|
1588
|
-
invariant4(message.target.length === 1, "target should have exactly one item", {
|
|
1589
|
-
F: __dxlog_file5,
|
|
1590
|
-
L: 213,
|
|
1591
|
-
S: this,
|
|
1592
|
-
A: [
|
|
1593
|
-
"message.target.length === 1",
|
|
1594
|
-
"'target should have exactly one item'"
|
|
1595
|
-
]
|
|
1596
|
-
});
|
|
1168
|
+
invariant4(message.source, "source is missing", { "~LogMeta": "~LogMeta", F: __dxlog_file5, L: 188, S: this, A: ["message.source", "'source is missing'"] });
|
|
1169
|
+
invariant4(message.target, "target is missing", { "~LogMeta": "~LogMeta", F: __dxlog_file5, L: 189, S: this, A: ["message.target", "'target is missing'"] });
|
|
1170
|
+
invariant4(message.target.length === 1, "target should have exactly one item", { "~LogMeta": "~LogMeta", F: __dxlog_file5, L: 190, S: this, A: ["message.target.length === 1", "'target should have exactly one item'"] });
|
|
1597
1171
|
this.onMessage.emit({
|
|
1598
1172
|
author: message.source,
|
|
1599
1173
|
recipient: message.target[0],
|
|
@@ -1609,12 +1183,7 @@ var EdgeSignalManager = class extends Resource3 {
|
|
|
1609
1183
|
async _rejoinAllSwarms() {
|
|
1610
1184
|
log5("rejoin swarms", {
|
|
1611
1185
|
swarms: Array.from(this._swarmPeers.keys())
|
|
1612
|
-
}, {
|
|
1613
|
-
F: __dxlog_file5,
|
|
1614
|
-
L: 232,
|
|
1615
|
-
S: this,
|
|
1616
|
-
C: (f, a) => f(...a)
|
|
1617
|
-
});
|
|
1186
|
+
}, { "~LogMeta": "~LogMeta", F: __dxlog_file5, L: 204, S: this });
|
|
1618
1187
|
for (const [topic, { lastState }] of this._swarmPeers.entries()) {
|
|
1619
1188
|
await this.join(this._ctx, {
|
|
1620
1189
|
topic,
|
|
@@ -1644,12 +1213,7 @@ var setIdentityTags = ({ identityService, devicesService, setTag }) => {
|
|
|
1644
1213
|
if (!idqr?.identity?.identityKey) {
|
|
1645
1214
|
log6("empty response from identity service", {
|
|
1646
1215
|
idqr
|
|
1647
|
-
}, {
|
|
1648
|
-
F: __dxlog_file6,
|
|
1649
|
-
L: 21,
|
|
1650
|
-
S: void 0,
|
|
1651
|
-
C: (f, a) => f(...a)
|
|
1652
|
-
});
|
|
1216
|
+
}, { "~LogMeta": "~LogMeta", F: __dxlog_file6, L: 10, S: void 0 });
|
|
1653
1217
|
return;
|
|
1654
1218
|
}
|
|
1655
1219
|
setTag("identityKey", idqr.identity.identityKey.truncate());
|
|
@@ -1658,33 +1222,15 @@ var setIdentityTags = ({ identityService, devicesService, setTag }) => {
|
|
|
1658
1222
|
if (!dqr || !dqr.devices || dqr.devices.length === 0) {
|
|
1659
1223
|
log6("empty response from device service", {
|
|
1660
1224
|
device: dqr
|
|
1661
|
-
}, {
|
|
1662
|
-
F: __dxlog_file6,
|
|
1663
|
-
L: 30,
|
|
1664
|
-
S: void 0,
|
|
1665
|
-
C: (f, a) => f(...a)
|
|
1666
|
-
});
|
|
1225
|
+
}, { "~LogMeta": "~LogMeta", F: __dxlog_file6, L: 19, S: void 0 });
|
|
1667
1226
|
return;
|
|
1668
1227
|
}
|
|
1669
|
-
invariant5(dqr, "empty response from device service", {
|
|
1670
|
-
F: __dxlog_file6,
|
|
1671
|
-
L: 33,
|
|
1672
|
-
S: void 0,
|
|
1673
|
-
A: [
|
|
1674
|
-
"dqr",
|
|
1675
|
-
"'empty response from device service'"
|
|
1676
|
-
]
|
|
1677
|
-
});
|
|
1228
|
+
invariant5(dqr, "empty response from device service", { "~LogMeta": "~LogMeta", F: __dxlog_file6, L: 24, S: void 0, A: ["dqr", "'empty response from device service'"] });
|
|
1678
1229
|
const thisDevice = dqr.devices.find((device) => device.kind === DeviceKind.CURRENT);
|
|
1679
1230
|
if (!thisDevice) {
|
|
1680
1231
|
log6("no current device", {
|
|
1681
1232
|
device: dqr
|
|
1682
|
-
}, {
|
|
1683
|
-
F: __dxlog_file6,
|
|
1684
|
-
L: 37,
|
|
1685
|
-
S: void 0,
|
|
1686
|
-
C: (f, a) => f(...a)
|
|
1687
|
-
});
|
|
1233
|
+
}, { "~LogMeta": "~LogMeta", F: __dxlog_file6, L: 27, S: void 0 });
|
|
1688
1234
|
return;
|
|
1689
1235
|
}
|
|
1690
1236
|
setTag("deviceKey", thisDevice.deviceKey.truncate());
|