@dxos/messaging 0.1.56-main.d0c207f → 0.1.56-main.d9d1c3e
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 +345 -77
- package/dist/lib/browser/index.mjs.map +3 -3
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/node/index.cjs +347 -79
- package/dist/lib/node/index.cjs.map +3 -3
- package/dist/lib/node/meta.json +1 -1
- package/dist/types/src/messenger.d.ts.map +1 -1
- package/dist/types/src/signal-client/signal-client.d.ts.map +1 -1
- package/dist/types/src/signal-client/signal-rpc-client.d.ts.map +1 -1
- package/dist/types/src/signal-manager/memory-signal-manager.d.ts +3 -0
- package/dist/types/src/signal-manager/memory-signal-manager.d.ts.map +1 -1
- package/dist/types/src/signal-manager/websocket-signal-manager.d.ts.map +1 -1
- package/package.json +12 -12
- package/src/messenger.ts +1 -2
- package/src/signal-client/signal-client.ts +1 -2
- package/src/signal-client/signal-rpc-client.ts +1 -1
- package/src/signal-manager/memory-signal-manager.ts +53 -6
- package/src/signal-manager/websocket-signal-manager.ts +1 -2
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import "@dxos/node-std/globals";
|
|
2
2
|
|
|
3
3
|
// packages/core/mesh/messaging/src/messenger.ts
|
|
4
|
-
import invariant from "tiny-invariant";
|
|
5
4
|
import { TimeoutError, scheduleExponentialBackoffTaskInterval, scheduleTask } from "@dxos/async";
|
|
6
5
|
import { Context } from "@dxos/context";
|
|
6
|
+
import { invariant } from "@dxos/invariant";
|
|
7
7
|
import { PublicKey } from "@dxos/keys";
|
|
8
8
|
import { log } from "@dxos/log";
|
|
9
9
|
import { schema, trace } from "@dxos/protocols";
|
|
@@ -38,14 +38,14 @@ var Messenger = class {
|
|
|
38
38
|
id: traceId
|
|
39
39
|
}), {
|
|
40
40
|
F: __dxlog_file,
|
|
41
|
-
L:
|
|
41
|
+
L: 62,
|
|
42
42
|
S: this,
|
|
43
43
|
C: (f, a) => f(...a)
|
|
44
44
|
});
|
|
45
45
|
this._ctx = new Context({
|
|
46
46
|
onError: (err) => log.catch(err, void 0, {
|
|
47
47
|
F: __dxlog_file,
|
|
48
|
-
L:
|
|
48
|
+
L: 64,
|
|
49
49
|
S: this,
|
|
50
50
|
C: (f, a) => f(...a)
|
|
51
51
|
})
|
|
@@ -55,7 +55,7 @@ var Messenger = class {
|
|
|
55
55
|
from: message.author
|
|
56
56
|
}, {
|
|
57
57
|
F: __dxlog_file,
|
|
58
|
-
L:
|
|
58
|
+
L: 68,
|
|
59
59
|
S: this,
|
|
60
60
|
C: (f, a) => f(...a)
|
|
61
61
|
});
|
|
@@ -66,7 +66,7 @@ var Messenger = class {
|
|
|
66
66
|
id: traceId
|
|
67
67
|
}), {
|
|
68
68
|
F: __dxlog_file,
|
|
69
|
-
L:
|
|
69
|
+
L: 73,
|
|
70
70
|
S: this,
|
|
71
71
|
C: (f, a) => f(...a)
|
|
72
72
|
});
|
|
@@ -79,20 +79,36 @@ var Messenger = class {
|
|
|
79
79
|
await this._ctx.dispose();
|
|
80
80
|
}
|
|
81
81
|
async sendMessage({ author, recipient, payload }) {
|
|
82
|
-
invariant(!this._closed, "Closed"
|
|
82
|
+
invariant(!this._closed, "Closed", {
|
|
83
|
+
F: __dxlog_file,
|
|
84
|
+
L: 85,
|
|
85
|
+
S: this,
|
|
86
|
+
A: [
|
|
87
|
+
"!this._closed",
|
|
88
|
+
"'Closed'"
|
|
89
|
+
]
|
|
90
|
+
});
|
|
83
91
|
const messageContext = this._ctx.derive();
|
|
84
92
|
const reliablePayload = {
|
|
85
93
|
messageId: PublicKey.random(),
|
|
86
94
|
payload
|
|
87
95
|
};
|
|
88
|
-
invariant(!this._onAckCallbacks.has(reliablePayload.messageId)
|
|
96
|
+
invariant(!this._onAckCallbacks.has(reliablePayload.messageId), void 0, {
|
|
97
|
+
F: __dxlog_file,
|
|
98
|
+
L: 92,
|
|
99
|
+
S: this,
|
|
100
|
+
A: [
|
|
101
|
+
"!this._onAckCallbacks.has(reliablePayload.messageId!)",
|
|
102
|
+
""
|
|
103
|
+
]
|
|
104
|
+
});
|
|
89
105
|
log("send message", {
|
|
90
106
|
messageId: reliablePayload.messageId,
|
|
91
107
|
author,
|
|
92
108
|
recipient
|
|
93
109
|
}, {
|
|
94
110
|
F: __dxlog_file,
|
|
95
|
-
L:
|
|
111
|
+
L: 93,
|
|
96
112
|
S: this,
|
|
97
113
|
C: (f, a) => f(...a)
|
|
98
114
|
});
|
|
@@ -107,7 +123,7 @@ var Messenger = class {
|
|
|
107
123
|
messageId: reliablePayload.messageId
|
|
108
124
|
}, {
|
|
109
125
|
F: __dxlog_file,
|
|
110
|
-
L:
|
|
126
|
+
L: 107,
|
|
111
127
|
S: this,
|
|
112
128
|
C: (f, a) => f(...a)
|
|
113
129
|
});
|
|
@@ -119,7 +135,7 @@ var Messenger = class {
|
|
|
119
135
|
err
|
|
120
136
|
}, {
|
|
121
137
|
F: __dxlog_file,
|
|
122
|
-
L:
|
|
138
|
+
L: 109,
|
|
123
139
|
S: this,
|
|
124
140
|
C: (f, a) => f(...a)
|
|
125
141
|
}));
|
|
@@ -129,7 +145,7 @@ var Messenger = class {
|
|
|
129
145
|
messageId: reliablePayload.messageId
|
|
130
146
|
}, {
|
|
131
147
|
F: __dxlog_file,
|
|
132
|
-
L:
|
|
148
|
+
L: 118,
|
|
133
149
|
S: this,
|
|
134
150
|
C: (f, a) => f(...a)
|
|
135
151
|
});
|
|
@@ -154,7 +170,15 @@ var Messenger = class {
|
|
|
154
170
|
* @param payloadType if not specified, onMessage will be subscribed to all types of messages.
|
|
155
171
|
*/
|
|
156
172
|
async listen({ peerId, payloadType, onMessage }) {
|
|
157
|
-
invariant(!this._closed, "Closed"
|
|
173
|
+
invariant(!this._closed, "Closed", {
|
|
174
|
+
F: __dxlog_file,
|
|
175
|
+
L: 150,
|
|
176
|
+
S: this,
|
|
177
|
+
A: [
|
|
178
|
+
"!this._closed",
|
|
179
|
+
"'Closed'"
|
|
180
|
+
]
|
|
181
|
+
});
|
|
158
182
|
await this._signalManager.subscribeMessages(peerId);
|
|
159
183
|
let listeners;
|
|
160
184
|
if (!payloadType) {
|
|
@@ -210,7 +234,15 @@ var Messenger = class {
|
|
|
210
234
|
}
|
|
211
235
|
}
|
|
212
236
|
async _handleReliablePayload({ author, recipient, payload }) {
|
|
213
|
-
invariant(payload.type_url === "dxos.mesh.messaging.ReliablePayload"
|
|
237
|
+
invariant(payload.type_url === "dxos.mesh.messaging.ReliablePayload", void 0, {
|
|
238
|
+
F: __dxlog_file,
|
|
239
|
+
L: 211,
|
|
240
|
+
S: this,
|
|
241
|
+
A: [
|
|
242
|
+
"payload.type_url === 'dxos.mesh.messaging.ReliablePayload'",
|
|
243
|
+
""
|
|
244
|
+
]
|
|
245
|
+
});
|
|
214
246
|
const reliablePayload = ReliablePayload.decode(payload.value, {
|
|
215
247
|
preserveAny: true
|
|
216
248
|
});
|
|
@@ -218,7 +250,7 @@ var Messenger = class {
|
|
|
218
250
|
messageId: reliablePayload.messageId
|
|
219
251
|
}, {
|
|
220
252
|
F: __dxlog_file,
|
|
221
|
-
L:
|
|
253
|
+
L: 214,
|
|
222
254
|
S: this,
|
|
223
255
|
C: (f, a) => f(...a)
|
|
224
256
|
});
|
|
@@ -239,7 +271,15 @@ var Messenger = class {
|
|
|
239
271
|
}
|
|
240
272
|
async _handleAcknowledgement({ payload }) {
|
|
241
273
|
var _a;
|
|
242
|
-
invariant(payload.type_url === "dxos.mesh.messaging.Acknowledgement"
|
|
274
|
+
invariant(payload.type_url === "dxos.mesh.messaging.Acknowledgement", void 0, {
|
|
275
|
+
F: __dxlog_file,
|
|
276
|
+
L: 236,
|
|
277
|
+
S: this,
|
|
278
|
+
A: [
|
|
279
|
+
"payload.type_url === 'dxos.mesh.messaging.Acknowledgement'",
|
|
280
|
+
""
|
|
281
|
+
]
|
|
282
|
+
});
|
|
243
283
|
(_a = this._onAckCallbacks.get(Acknowledgement.decode(payload.value).messageId)) == null ? void 0 : _a();
|
|
244
284
|
}
|
|
245
285
|
async _sendAcknowledgement({ author, recipient, messageId }) {
|
|
@@ -249,7 +289,7 @@ var Messenger = class {
|
|
|
249
289
|
to: author
|
|
250
290
|
}, {
|
|
251
291
|
F: __dxlog_file,
|
|
252
|
-
L:
|
|
292
|
+
L: 249,
|
|
253
293
|
S: this,
|
|
254
294
|
C: (f, a) => f(...a)
|
|
255
295
|
});
|
|
@@ -288,9 +328,9 @@ var Messenger = class {
|
|
|
288
328
|
};
|
|
289
329
|
|
|
290
330
|
// packages/core/mesh/messaging/src/signal-client/signal-client.ts
|
|
291
|
-
import invariant3 from "tiny-invariant";
|
|
292
331
|
import { DeferredTask, Event, Trigger as Trigger2, asyncTimeout, scheduleTask as scheduleTask2, scheduleTaskInterval, sleep } from "@dxos/async";
|
|
293
332
|
import { Context as Context2, cancelWithContext } from "@dxos/context";
|
|
333
|
+
import { invariant as invariant3 } from "@dxos/invariant";
|
|
294
334
|
import { PublicKey as PublicKey3 } from "@dxos/keys";
|
|
295
335
|
import { log as log3 } from "@dxos/log";
|
|
296
336
|
import { trace as trace3 } from "@dxos/protocols";
|
|
@@ -299,8 +339,8 @@ import { ComplexMap as ComplexMap2, ComplexSet as ComplexSet2 } from "@dxos/util
|
|
|
299
339
|
|
|
300
340
|
// packages/core/mesh/messaging/src/signal-client/signal-rpc-client.ts
|
|
301
341
|
import WebSocket from "isomorphic-ws";
|
|
302
|
-
import invariant2 from "tiny-invariant";
|
|
303
342
|
import { Trigger } from "@dxos/async";
|
|
343
|
+
import { invariant as invariant2 } from "@dxos/invariant";
|
|
304
344
|
import { PublicKey as PublicKey2 } from "@dxos/keys";
|
|
305
345
|
import { log as log2 } from "@dxos/log";
|
|
306
346
|
import { schema as schema2, trace as trace2 } from "@dxos/protocols";
|
|
@@ -446,8 +486,24 @@ var SignalRPCClient = class {
|
|
|
446
486
|
C: (f, a) => f(...a)
|
|
447
487
|
});
|
|
448
488
|
await this._connectTrigger.wait();
|
|
449
|
-
invariant2(!this._closed, "SignalRPCClient is closed"
|
|
450
|
-
|
|
489
|
+
invariant2(!this._closed, "SignalRPCClient is closed", {
|
|
490
|
+
F: __dxlog_file2,
|
|
491
|
+
L: 138,
|
|
492
|
+
S: this,
|
|
493
|
+
A: [
|
|
494
|
+
"!this._closed",
|
|
495
|
+
"'SignalRPCClient is closed'"
|
|
496
|
+
]
|
|
497
|
+
});
|
|
498
|
+
invariant2(this._rpc, "Rpc is not initialized", {
|
|
499
|
+
F: __dxlog_file2,
|
|
500
|
+
L: 139,
|
|
501
|
+
S: this,
|
|
502
|
+
A: [
|
|
503
|
+
"this._rpc",
|
|
504
|
+
"'Rpc is not initialized'"
|
|
505
|
+
]
|
|
506
|
+
});
|
|
451
507
|
const swarmStream = this._rpc.rpc.Signal.join({
|
|
452
508
|
swarm: topic.asUint8Array(),
|
|
453
509
|
peer: peerId.asUint8Array()
|
|
@@ -464,9 +520,25 @@ var SignalRPCClient = class {
|
|
|
464
520
|
S: this,
|
|
465
521
|
C: (f, a) => f(...a)
|
|
466
522
|
});
|
|
467
|
-
invariant2(!this._closed, "SignalRPCClient is closed"
|
|
523
|
+
invariant2(!this._closed, "SignalRPCClient is closed", {
|
|
524
|
+
F: __dxlog_file2,
|
|
525
|
+
L: 150,
|
|
526
|
+
S: this,
|
|
527
|
+
A: [
|
|
528
|
+
"!this._closed",
|
|
529
|
+
"'SignalRPCClient is closed'"
|
|
530
|
+
]
|
|
531
|
+
});
|
|
468
532
|
await this._connectTrigger.wait();
|
|
469
|
-
invariant2(this._rpc, "Rpc is not initialized"
|
|
533
|
+
invariant2(this._rpc, "Rpc is not initialized", {
|
|
534
|
+
F: __dxlog_file2,
|
|
535
|
+
L: 152,
|
|
536
|
+
S: this,
|
|
537
|
+
A: [
|
|
538
|
+
"this._rpc",
|
|
539
|
+
"'Rpc is not initialized'"
|
|
540
|
+
]
|
|
541
|
+
});
|
|
470
542
|
const messageStream = this._rpc.rpc.Signal.receiveMessages({
|
|
471
543
|
peer: peerId.asUint8Array()
|
|
472
544
|
});
|
|
@@ -484,9 +556,25 @@ var SignalRPCClient = class {
|
|
|
484
556
|
S: this,
|
|
485
557
|
C: (f, a) => f(...a)
|
|
486
558
|
});
|
|
487
|
-
invariant2(!this._closed, "SignalRPCClient is closed"
|
|
559
|
+
invariant2(!this._closed, "SignalRPCClient is closed", {
|
|
560
|
+
F: __dxlog_file2,
|
|
561
|
+
L: 162,
|
|
562
|
+
S: this,
|
|
563
|
+
A: [
|
|
564
|
+
"!this._closed",
|
|
565
|
+
"'SignalRPCClient is closed'"
|
|
566
|
+
]
|
|
567
|
+
});
|
|
488
568
|
await this._connectTrigger.wait();
|
|
489
|
-
invariant2(this._rpc, "Rpc is not initialized"
|
|
569
|
+
invariant2(this._rpc, "Rpc is not initialized", {
|
|
570
|
+
F: __dxlog_file2,
|
|
571
|
+
L: 164,
|
|
572
|
+
S: this,
|
|
573
|
+
A: [
|
|
574
|
+
"this._rpc",
|
|
575
|
+
"'Rpc is not initialized'"
|
|
576
|
+
]
|
|
577
|
+
});
|
|
490
578
|
await this._rpc.rpc.Signal.sendMessage({
|
|
491
579
|
author: author.asUint8Array(),
|
|
492
580
|
recipient: recipient.asUint8Array(),
|
|
@@ -539,7 +627,7 @@ var SignalClient = class {
|
|
|
539
627
|
id: this._instanceId
|
|
540
628
|
}), {
|
|
541
629
|
F: __dxlog_file3,
|
|
542
|
-
L:
|
|
630
|
+
L: 135,
|
|
543
631
|
S: this,
|
|
544
632
|
C: (f, a) => f(...a)
|
|
545
633
|
});
|
|
@@ -558,7 +646,7 @@ var SignalClient = class {
|
|
|
558
646
|
if (this._state === SignalState.CONNECTED) {
|
|
559
647
|
log3.warn("SignalClient error:", err, {
|
|
560
648
|
F: __dxlog_file3,
|
|
561
|
-
L:
|
|
649
|
+
L: 147,
|
|
562
650
|
S: this,
|
|
563
651
|
C: (f, a) => f(...a)
|
|
564
652
|
});
|
|
@@ -585,7 +673,7 @@ var SignalClient = class {
|
|
|
585
673
|
id: this._instanceId
|
|
586
674
|
}), {
|
|
587
675
|
F: __dxlog_file3,
|
|
588
|
-
L:
|
|
676
|
+
L: 176,
|
|
589
677
|
S: this,
|
|
590
678
|
C: (f, a) => f(...a)
|
|
591
679
|
});
|
|
@@ -594,7 +682,7 @@ var SignalClient = class {
|
|
|
594
682
|
var _a, _b;
|
|
595
683
|
log3("closing...", void 0, {
|
|
596
684
|
F: __dxlog_file3,
|
|
597
|
-
L:
|
|
685
|
+
L: 180,
|
|
598
686
|
S: this,
|
|
599
687
|
C: (f, a) => f(...a)
|
|
600
688
|
});
|
|
@@ -610,7 +698,7 @@ var SignalClient = class {
|
|
|
610
698
|
this._setState(SignalState.CLOSED);
|
|
611
699
|
log3("closed", void 0, {
|
|
612
700
|
F: __dxlog_file3,
|
|
613
|
-
L:
|
|
701
|
+
L: 191,
|
|
614
702
|
S: this,
|
|
615
703
|
C: (f, a) => f(...a)
|
|
616
704
|
});
|
|
@@ -632,7 +720,7 @@ var SignalClient = class {
|
|
|
632
720
|
peerId
|
|
633
721
|
}, {
|
|
634
722
|
F: __dxlog_file3,
|
|
635
|
-
L:
|
|
723
|
+
L: 206,
|
|
636
724
|
S: this,
|
|
637
725
|
C: (f, a) => f(...a)
|
|
638
726
|
});
|
|
@@ -651,7 +739,7 @@ var SignalClient = class {
|
|
|
651
739
|
peerId
|
|
652
740
|
}, {
|
|
653
741
|
F: __dxlog_file3,
|
|
654
|
-
L:
|
|
742
|
+
L: 214,
|
|
655
743
|
S: this,
|
|
656
744
|
C: (f, a) => f(...a)
|
|
657
745
|
});
|
|
@@ -671,7 +759,15 @@ var SignalClient = class {
|
|
|
671
759
|
async sendMessage(msg) {
|
|
672
760
|
this._performance.sentMessages++;
|
|
673
761
|
await this._clientReady.wait();
|
|
674
|
-
invariant3(this._state === SignalState.CONNECTED, "Not connected to Signal Server"
|
|
762
|
+
invariant3(this._state === SignalState.CONNECTED, "Not connected to Signal Server", {
|
|
763
|
+
F: __dxlog_file3,
|
|
764
|
+
L: 224,
|
|
765
|
+
S: this,
|
|
766
|
+
A: [
|
|
767
|
+
"this._state === SignalState.CONNECTED",
|
|
768
|
+
"'Not connected to Signal Server'"
|
|
769
|
+
]
|
|
770
|
+
});
|
|
675
771
|
await this._client.sendMessage(msg);
|
|
676
772
|
}
|
|
677
773
|
async subscribeMessages(peerId) {
|
|
@@ -679,7 +775,7 @@ var SignalClient = class {
|
|
|
679
775
|
peerId
|
|
680
776
|
}, {
|
|
681
777
|
F: __dxlog_file3,
|
|
682
|
-
L:
|
|
778
|
+
L: 229,
|
|
683
779
|
S: this,
|
|
684
780
|
C: (f, a) => f(...a)
|
|
685
781
|
});
|
|
@@ -694,7 +790,7 @@ var SignalClient = class {
|
|
|
694
790
|
peerId
|
|
695
791
|
}, {
|
|
696
792
|
F: __dxlog_file3,
|
|
697
|
-
L:
|
|
793
|
+
L: 235,
|
|
698
794
|
S: this,
|
|
699
795
|
C: (f, a) => f(...a)
|
|
700
796
|
});
|
|
@@ -716,7 +812,7 @@ var SignalClient = class {
|
|
|
716
812
|
status: this.getStatus()
|
|
717
813
|
}, {
|
|
718
814
|
F: __dxlog_file3,
|
|
719
|
-
L:
|
|
815
|
+
L: 254,
|
|
720
816
|
S: this,
|
|
721
817
|
C: (f, a) => f(...a)
|
|
722
818
|
});
|
|
@@ -728,17 +824,25 @@ var SignalClient = class {
|
|
|
728
824
|
state: this._state
|
|
729
825
|
}, {
|
|
730
826
|
F: __dxlog_file3,
|
|
731
|
-
L:
|
|
827
|
+
L: 259,
|
|
732
828
|
S: this,
|
|
733
829
|
C: (f, a) => f(...a)
|
|
734
830
|
});
|
|
735
|
-
invariant3(!this._client, "Client already created"
|
|
831
|
+
invariant3(!this._client, "Client already created", {
|
|
832
|
+
F: __dxlog_file3,
|
|
833
|
+
L: 260,
|
|
834
|
+
S: this,
|
|
835
|
+
A: [
|
|
836
|
+
"!this._client",
|
|
837
|
+
"'Client already created'"
|
|
838
|
+
]
|
|
839
|
+
});
|
|
736
840
|
this._connectionStarted = new Date();
|
|
737
841
|
this._connectionCtx = this._ctx.derive();
|
|
738
842
|
this._connectionCtx.onDispose(() => {
|
|
739
843
|
log3("connection context disposed", void 0, {
|
|
740
844
|
F: __dxlog_file3,
|
|
741
|
-
L:
|
|
845
|
+
L: 267,
|
|
742
846
|
S: this,
|
|
743
847
|
C: (f, a) => f(...a)
|
|
744
848
|
});
|
|
@@ -754,7 +858,7 @@ var SignalClient = class {
|
|
|
754
858
|
onConnected: () => {
|
|
755
859
|
log3("socket connected", void 0, {
|
|
756
860
|
F: __dxlog_file3,
|
|
757
|
-
L:
|
|
861
|
+
L: 279,
|
|
758
862
|
S: this,
|
|
759
863
|
C: (f, a) => f(...a)
|
|
760
864
|
});
|
|
@@ -769,7 +873,7 @@ var SignalClient = class {
|
|
|
769
873
|
state: this._state
|
|
770
874
|
}, {
|
|
771
875
|
F: __dxlog_file3,
|
|
772
|
-
L:
|
|
876
|
+
L: 288,
|
|
773
877
|
S: this,
|
|
774
878
|
C: (f, a) => f(...a)
|
|
775
879
|
});
|
|
@@ -789,7 +893,7 @@ var SignalClient = class {
|
|
|
789
893
|
state: this._state
|
|
790
894
|
}, {
|
|
791
895
|
F: __dxlog_file3,
|
|
792
|
-
L:
|
|
896
|
+
L: 303,
|
|
793
897
|
S: this,
|
|
794
898
|
C: (f, a) => f(...a)
|
|
795
899
|
});
|
|
@@ -821,7 +925,7 @@ var SignalClient = class {
|
|
|
821
925
|
state: this._state
|
|
822
926
|
}, {
|
|
823
927
|
F: __dxlog_file3,
|
|
824
|
-
L:
|
|
928
|
+
L: 330,
|
|
825
929
|
S: this,
|
|
826
930
|
C: (f, a) => f(...a)
|
|
827
931
|
});
|
|
@@ -829,7 +933,7 @@ var SignalClient = class {
|
|
|
829
933
|
if (this._state === SignalState.RECONNECTING) {
|
|
830
934
|
log3.warn("Signal api already reconnecting.", void 0, {
|
|
831
935
|
F: __dxlog_file3,
|
|
832
|
-
L:
|
|
936
|
+
L: 334,
|
|
833
937
|
S: this,
|
|
834
938
|
C: (f, a) => f(...a)
|
|
835
939
|
});
|
|
@@ -851,7 +955,15 @@ var SignalClient = class {
|
|
|
851
955
|
var _a;
|
|
852
956
|
await asyncTimeout(cancelWithContext(this._connectionCtx, this._clientReady.wait()), 5e3);
|
|
853
957
|
const client = this._client;
|
|
854
|
-
invariant3(this._state === SignalState.CONNECTED, "Not connected to Signal Server"
|
|
958
|
+
invariant3(this._state === SignalState.CONNECTED, "Not connected to Signal Server", {
|
|
959
|
+
F: __dxlog_file3,
|
|
960
|
+
L: 359,
|
|
961
|
+
S: this,
|
|
962
|
+
A: [
|
|
963
|
+
"this._state === SignalState.CONNECTED",
|
|
964
|
+
"'Not connected to Signal Server'"
|
|
965
|
+
]
|
|
966
|
+
});
|
|
855
967
|
for (const { topic, peerId } of this._swarmStreams.keys()) {
|
|
856
968
|
if (this._joinedTopics.has({
|
|
857
969
|
topic,
|
|
@@ -884,7 +996,7 @@ var SignalClient = class {
|
|
|
884
996
|
swarmEvent
|
|
885
997
|
}, {
|
|
886
998
|
F: __dxlog_file3,
|
|
887
|
-
L:
|
|
999
|
+
L: 386,
|
|
888
1000
|
S: this,
|
|
889
1001
|
C: (f, a) => f(...a)
|
|
890
1002
|
});
|
|
@@ -903,7 +1015,15 @@ var SignalClient = class {
|
|
|
903
1015
|
var _a;
|
|
904
1016
|
await asyncTimeout(cancelWithContext(this._connectionCtx, this._clientReady.wait()), 5e3);
|
|
905
1017
|
const client = this._client;
|
|
906
|
-
invariant3(this._state === SignalState.CONNECTED, "Not connected to Signal Server"
|
|
1018
|
+
invariant3(this._state === SignalState.CONNECTED, "Not connected to Signal Server", {
|
|
1019
|
+
F: __dxlog_file3,
|
|
1020
|
+
L: 399,
|
|
1021
|
+
S: this,
|
|
1022
|
+
A: [
|
|
1023
|
+
"this._state === SignalState.CONNECTED",
|
|
1024
|
+
"'Not connected to Signal Server'"
|
|
1025
|
+
]
|
|
1026
|
+
});
|
|
907
1027
|
for (const peerId of this._messageStreams.keys()) {
|
|
908
1028
|
if (this._subscribedMessages.has({
|
|
909
1029
|
peerId
|
|
@@ -932,11 +1052,12 @@ var SignalClient = class {
|
|
|
932
1052
|
};
|
|
933
1053
|
|
|
934
1054
|
// packages/core/mesh/messaging/src/signal-manager/memory-signal-manager.ts
|
|
935
|
-
import
|
|
936
|
-
import { Event as Event2 } from "@dxos/async";
|
|
1055
|
+
import { Event as Event2, Trigger as Trigger3 } from "@dxos/async";
|
|
937
1056
|
import { Context as Context3 } from "@dxos/context";
|
|
1057
|
+
import { invariant as invariant4 } from "@dxos/invariant";
|
|
938
1058
|
import { PublicKey as PublicKey4 } from "@dxos/keys";
|
|
939
1059
|
import { log as log4 } from "@dxos/log";
|
|
1060
|
+
import { schema as schema3 } from "@dxos/protocols";
|
|
940
1061
|
import { ComplexMap as ComplexMap3, ComplexSet as ComplexSet3 } from "@dxos/util";
|
|
941
1062
|
var __dxlog_file4 = "/home/runner/work/dxos/dxos/packages/core/mesh/messaging/src/signal-manager/memory-signal-manager.ts";
|
|
942
1063
|
var MemorySignalManagerContext = class {
|
|
@@ -958,6 +1079,7 @@ var MemorySignalManager = class {
|
|
|
958
1079
|
this.swarmEvent = new Event2();
|
|
959
1080
|
this.onMessage = new Event2();
|
|
960
1081
|
this._joinedSwarms = new ComplexSet3(({ topic, peerId }) => topic.toHex() + peerId.toHex());
|
|
1082
|
+
this._freezeTrigger = new Trigger3().wake();
|
|
961
1083
|
this._ctx = new Context3();
|
|
962
1084
|
this._ctx.onDispose(this._context.swarmEvent.on((data) => this.swarmEvent.emit(data)));
|
|
963
1085
|
}
|
|
@@ -988,7 +1110,15 @@ var MemorySignalManager = class {
|
|
|
988
1110
|
return [];
|
|
989
1111
|
}
|
|
990
1112
|
async join({ topic, peerId }) {
|
|
991
|
-
invariant4(!this._ctx.disposed, "Closed"
|
|
1113
|
+
invariant4(!this._ctx.disposed, "Closed", {
|
|
1114
|
+
F: __dxlog_file4,
|
|
1115
|
+
L: 104,
|
|
1116
|
+
S: this,
|
|
1117
|
+
A: [
|
|
1118
|
+
"!this._ctx.disposed",
|
|
1119
|
+
"'Closed'"
|
|
1120
|
+
]
|
|
1121
|
+
});
|
|
992
1122
|
this._joinedSwarms.add({
|
|
993
1123
|
topic,
|
|
994
1124
|
peerId
|
|
@@ -1021,7 +1151,15 @@ var MemorySignalManager = class {
|
|
|
1021
1151
|
}
|
|
1022
1152
|
}
|
|
1023
1153
|
async leave({ topic, peerId }) {
|
|
1024
|
-
invariant4(!this._ctx.disposed, "Closed"
|
|
1154
|
+
invariant4(!this._ctx.disposed, "Closed", {
|
|
1155
|
+
F: __dxlog_file4,
|
|
1156
|
+
L: 140,
|
|
1157
|
+
S: this,
|
|
1158
|
+
A: [
|
|
1159
|
+
"!this._ctx.disposed",
|
|
1160
|
+
"'Closed'"
|
|
1161
|
+
]
|
|
1162
|
+
});
|
|
1025
1163
|
this._joinedSwarms.delete({
|
|
1026
1164
|
topic,
|
|
1027
1165
|
peerId
|
|
@@ -1041,35 +1179,105 @@ var MemorySignalManager = class {
|
|
|
1041
1179
|
});
|
|
1042
1180
|
}
|
|
1043
1181
|
async sendMessage({ author, recipient, payload }) {
|
|
1044
|
-
|
|
1045
|
-
|
|
1046
|
-
|
|
1047
|
-
|
|
1182
|
+
log4("send message", {
|
|
1183
|
+
author,
|
|
1184
|
+
recipient,
|
|
1185
|
+
...dec(payload)
|
|
1186
|
+
}, {
|
|
1187
|
+
F: __dxlog_file4,
|
|
1188
|
+
L: 160,
|
|
1189
|
+
S: this,
|
|
1190
|
+
C: (f, a) => f(...a)
|
|
1191
|
+
});
|
|
1192
|
+
invariant4(recipient, void 0, {
|
|
1193
|
+
F: __dxlog_file4,
|
|
1194
|
+
L: 162,
|
|
1195
|
+
S: this,
|
|
1196
|
+
A: [
|
|
1197
|
+
"recipient",
|
|
1198
|
+
""
|
|
1199
|
+
]
|
|
1200
|
+
});
|
|
1201
|
+
invariant4(!this._ctx.disposed, "Closed", {
|
|
1202
|
+
F: __dxlog_file4,
|
|
1203
|
+
L: 163,
|
|
1204
|
+
S: this,
|
|
1205
|
+
A: [
|
|
1206
|
+
"!this._ctx.disposed",
|
|
1207
|
+
"'Closed'"
|
|
1208
|
+
]
|
|
1209
|
+
});
|
|
1210
|
+
await this._freezeTrigger.wait();
|
|
1211
|
+
const remote = this._context.connections.get(recipient);
|
|
1212
|
+
if (!remote) {
|
|
1048
1213
|
log4.warn("recipient is not subscribed for messages", {
|
|
1049
1214
|
author,
|
|
1050
1215
|
recipient
|
|
1051
1216
|
}, {
|
|
1052
1217
|
F: __dxlog_file4,
|
|
1053
|
-
L:
|
|
1218
|
+
L: 169,
|
|
1054
1219
|
S: this,
|
|
1055
1220
|
C: (f, a) => f(...a)
|
|
1056
1221
|
});
|
|
1057
1222
|
return;
|
|
1058
1223
|
}
|
|
1059
|
-
if (
|
|
1060
|
-
|
|
1224
|
+
if (remote._ctx.disposed) {
|
|
1225
|
+
log4.warn("recipient is disposed", {
|
|
1226
|
+
author,
|
|
1227
|
+
recipient
|
|
1228
|
+
}, {
|
|
1229
|
+
F: __dxlog_file4,
|
|
1230
|
+
L: 174,
|
|
1231
|
+
S: this,
|
|
1232
|
+
C: (f, a) => f(...a)
|
|
1233
|
+
});
|
|
1234
|
+
return;
|
|
1235
|
+
}
|
|
1236
|
+
remote._freezeTrigger.wait().then(() => {
|
|
1237
|
+
if (remote._ctx.disposed) {
|
|
1238
|
+
log4.warn("recipient is disposed", {
|
|
1239
|
+
author,
|
|
1240
|
+
recipient
|
|
1241
|
+
}, {
|
|
1242
|
+
F: __dxlog_file4,
|
|
1243
|
+
L: 182,
|
|
1244
|
+
S: this,
|
|
1245
|
+
C: (f, a) => f(...a)
|
|
1246
|
+
});
|
|
1247
|
+
return;
|
|
1248
|
+
}
|
|
1249
|
+
log4("receive message", {
|
|
1250
|
+
author,
|
|
1251
|
+
recipient,
|
|
1252
|
+
...dec(payload)
|
|
1253
|
+
}, {
|
|
1254
|
+
F: __dxlog_file4,
|
|
1255
|
+
L: 186,
|
|
1256
|
+
S: this,
|
|
1257
|
+
C: (f, a) => f(...a)
|
|
1258
|
+
});
|
|
1259
|
+
remote.onMessage.emit({
|
|
1061
1260
|
author,
|
|
1062
1261
|
recipient,
|
|
1063
1262
|
payload
|
|
1064
1263
|
});
|
|
1065
|
-
}
|
|
1264
|
+
}).catch((err) => {
|
|
1265
|
+
log4.error("error while waiting for freeze", {
|
|
1266
|
+
err
|
|
1267
|
+
}, {
|
|
1268
|
+
F: __dxlog_file4,
|
|
1269
|
+
L: 191,
|
|
1270
|
+
S: this,
|
|
1271
|
+
C: (f, a) => f(...a)
|
|
1272
|
+
});
|
|
1273
|
+
});
|
|
1066
1274
|
}
|
|
1067
1275
|
async subscribeMessages(peerId) {
|
|
1068
1276
|
log4("subscribing", {
|
|
1069
1277
|
peerId
|
|
1070
1278
|
}, {
|
|
1071
1279
|
F: __dxlog_file4,
|
|
1072
|
-
L:
|
|
1280
|
+
L: 196,
|
|
1073
1281
|
S: this,
|
|
1074
1282
|
C: (f, a) => f(...a)
|
|
1075
1283
|
});
|
|
@@ -1080,18 +1288,38 @@ var MemorySignalManager = class {
|
|
|
1080
1288
|
peerId
|
|
1081
1289
|
}, {
|
|
1082
1290
|
F: __dxlog_file4,
|
|
1083
|
-
L:
|
|
1291
|
+
L: 201,
|
|
1084
1292
|
S: this,
|
|
1085
1293
|
C: (f, a) => f(...a)
|
|
1086
1294
|
});
|
|
1087
1295
|
this._context.connections.delete(peerId);
|
|
1088
1296
|
}
|
|
1297
|
+
freeze() {
|
|
1298
|
+
this._freezeTrigger.reset();
|
|
1299
|
+
}
|
|
1300
|
+
unfreeze() {
|
|
1301
|
+
this._freezeTrigger.wake();
|
|
1302
|
+
}
|
|
1303
|
+
};
|
|
1304
|
+
var dec = (payload) => {
|
|
1305
|
+
var _a, _b, _c;
|
|
1306
|
+
if (!payload.type_url.endsWith("ReliablePayload")) {
|
|
1307
|
+
return {};
|
|
1308
|
+
}
|
|
1309
|
+
const relPayload = schema3.getCodecForType("dxos.mesh.messaging.ReliablePayload").decode(payload.value);
|
|
1310
|
+
if (typeof ((_a = relPayload == null ? void 0 : relPayload.payload) == null ? void 0 : _a.data) === "object") {
|
|
1311
|
+
return {
|
|
1312
|
+
payload: Object.keys((_b = relPayload == null ? void 0 : relPayload.payload) == null ? void 0 : _b.data)[0],
|
|
1313
|
+
sessionId: (_c = relPayload == null ? void 0 : relPayload.payload) == null ? void 0 : _c.sessionId
|
|
1314
|
+
};
|
|
1315
|
+
}
|
|
1316
|
+
return {};
|
|
1089
1317
|
};
|
|
1090
1318
|
|
|
1091
1319
|
// packages/core/mesh/messaging/src/signal-manager/websocket-signal-manager.ts
|
|
1092
|
-
import invariant5 from "tiny-invariant";
|
|
1093
1320
|
import { Event as Event3, synchronized } from "@dxos/async";
|
|
1094
1321
|
import { Context as Context4 } from "@dxos/context";
|
|
1322
|
+
import { invariant as invariant5 } from "@dxos/invariant";
|
|
1095
1323
|
import { PublicKey as PublicKey5 } from "@dxos/keys";
|
|
1096
1324
|
import { log as log5 } from "@dxos/log";
|
|
1097
1325
|
import { trace as trace4 } from "@dxos/protocols";
|
|
@@ -1121,7 +1349,7 @@ var WebsocketSignalManager = class {
|
|
|
1121
1349
|
hosts: this._hosts
|
|
1122
1350
|
}, {
|
|
1123
1351
|
F: __dxlog_file5,
|
|
1124
|
-
L:
|
|
1352
|
+
L: 46,
|
|
1125
1353
|
S: this,
|
|
1126
1354
|
C: (f, a) => f(...a)
|
|
1127
1355
|
});
|
|
@@ -1143,7 +1371,7 @@ var WebsocketSignalManager = class {
|
|
|
1143
1371
|
hosts: this._hosts
|
|
1144
1372
|
}, {
|
|
1145
1373
|
F: __dxlog_file5,
|
|
1146
|
-
L:
|
|
1374
|
+
L: 68,
|
|
1147
1375
|
S: this,
|
|
1148
1376
|
C: (f, a) => f(...a)
|
|
1149
1377
|
});
|
|
@@ -1151,7 +1379,7 @@ var WebsocketSignalManager = class {
|
|
|
1151
1379
|
id: this._instanceId
|
|
1152
1380
|
}), {
|
|
1153
1381
|
F: __dxlog_file5,
|
|
1154
|
-
L:
|
|
1382
|
+
L: 69,
|
|
1155
1383
|
S: this,
|
|
1156
1384
|
C: (f, a) => f(...a)
|
|
1157
1385
|
});
|
|
@@ -1164,7 +1392,7 @@ var WebsocketSignalManager = class {
|
|
|
1164
1392
|
id: this._instanceId
|
|
1165
1393
|
}), {
|
|
1166
1394
|
F: __dxlog_file5,
|
|
1167
|
-
L:
|
|
1395
|
+
L: 76,
|
|
1168
1396
|
S: this,
|
|
1169
1397
|
C: (f, a) => f(...a)
|
|
1170
1398
|
});
|
|
@@ -1186,11 +1414,19 @@ var WebsocketSignalManager = class {
|
|
|
1186
1414
|
peerId
|
|
1187
1415
|
}, {
|
|
1188
1416
|
F: __dxlog_file5,
|
|
1189
|
-
L:
|
|
1417
|
+
L: 96,
|
|
1190
1418
|
S: this,
|
|
1191
1419
|
C: (f, a) => f(...a)
|
|
1192
1420
|
});
|
|
1193
|
-
invariant5(this._opened, "Closed"
|
|
1421
|
+
invariant5(this._opened, "Closed", {
|
|
1422
|
+
F: __dxlog_file5,
|
|
1423
|
+
L: 97,
|
|
1424
|
+
S: this,
|
|
1425
|
+
A: [
|
|
1426
|
+
"this._opened",
|
|
1427
|
+
"'Closed'"
|
|
1428
|
+
]
|
|
1429
|
+
});
|
|
1194
1430
|
await this._forEachServer((server) => server.join({
|
|
1195
1431
|
topic,
|
|
1196
1432
|
peerId
|
|
@@ -1202,11 +1438,19 @@ var WebsocketSignalManager = class {
|
|
|
1202
1438
|
peerId
|
|
1203
1439
|
}, {
|
|
1204
1440
|
F: __dxlog_file5,
|
|
1205
|
-
L:
|
|
1441
|
+
L: 103,
|
|
1206
1442
|
S: this,
|
|
1207
1443
|
C: (f, a) => f(...a)
|
|
1208
1444
|
});
|
|
1209
|
-
invariant5(this._opened, "Closed"
|
|
1445
|
+
invariant5(this._opened, "Closed", {
|
|
1446
|
+
F: __dxlog_file5,
|
|
1447
|
+
L: 104,
|
|
1448
|
+
S: this,
|
|
1449
|
+
A: [
|
|
1450
|
+
"this._opened",
|
|
1451
|
+
"'Closed'"
|
|
1452
|
+
]
|
|
1453
|
+
});
|
|
1210
1454
|
await this._forEachServer((server) => server.leave({
|
|
1211
1455
|
topic,
|
|
1212
1456
|
peerId
|
|
@@ -1215,11 +1459,19 @@ var WebsocketSignalManager = class {
|
|
|
1215
1459
|
async sendMessage({ author, recipient, payload }) {
|
|
1216
1460
|
log5(`Signal ${recipient}`, void 0, {
|
|
1217
1461
|
F: __dxlog_file5,
|
|
1218
|
-
L:
|
|
1462
|
+
L: 118,
|
|
1219
1463
|
S: this,
|
|
1220
1464
|
C: (f, a) => f(...a)
|
|
1221
1465
|
});
|
|
1222
|
-
invariant5(this._opened, "Closed"
|
|
1466
|
+
invariant5(this._opened, "Closed", {
|
|
1467
|
+
F: __dxlog_file5,
|
|
1468
|
+
L: 119,
|
|
1469
|
+
S: this,
|
|
1470
|
+
A: [
|
|
1471
|
+
"this._opened",
|
|
1472
|
+
"'Closed'"
|
|
1473
|
+
]
|
|
1474
|
+
});
|
|
1223
1475
|
void this._forEachServer(async (server) => {
|
|
1224
1476
|
void server.sendMessage({
|
|
1225
1477
|
author,
|
|
@@ -1227,7 +1479,7 @@ var WebsocketSignalManager = class {
|
|
|
1227
1479
|
payload
|
|
1228
1480
|
}).catch((err) => log5(err, void 0, {
|
|
1229
1481
|
F: __dxlog_file5,
|
|
1230
|
-
L:
|
|
1482
|
+
L: 122,
|
|
1231
1483
|
S: this,
|
|
1232
1484
|
C: (f, a) => f(...a)
|
|
1233
1485
|
}));
|
|
@@ -1236,28 +1488,44 @@ var WebsocketSignalManager = class {
|
|
|
1236
1488
|
async subscribeMessages(peerId) {
|
|
1237
1489
|
log5(`Subscribed for message stream peerId=${peerId}`, void 0, {
|
|
1238
1490
|
F: __dxlog_file5,
|
|
1239
|
-
L:
|
|
1491
|
+
L: 127,
|
|
1240
1492
|
S: this,
|
|
1241
1493
|
C: (f, a) => f(...a)
|
|
1242
1494
|
});
|
|
1243
|
-
invariant5(this._opened, "Closed"
|
|
1495
|
+
invariant5(this._opened, "Closed", {
|
|
1496
|
+
F: __dxlog_file5,
|
|
1497
|
+
L: 128,
|
|
1498
|
+
S: this,
|
|
1499
|
+
A: [
|
|
1500
|
+
"this._opened",
|
|
1501
|
+
"'Closed'"
|
|
1502
|
+
]
|
|
1503
|
+
});
|
|
1244
1504
|
await this._forEachServer(async (server) => server.subscribeMessages(peerId));
|
|
1245
1505
|
}
|
|
1246
1506
|
async unsubscribeMessages(peerId) {
|
|
1247
1507
|
log5(`Subscribed for message stream peerId=${peerId}`, void 0, {
|
|
1248
1508
|
F: __dxlog_file5,
|
|
1249
|
-
L:
|
|
1509
|
+
L: 134,
|
|
1250
1510
|
S: this,
|
|
1251
1511
|
C: (f, a) => f(...a)
|
|
1252
1512
|
});
|
|
1253
|
-
invariant5(this._opened, "Closed"
|
|
1513
|
+
invariant5(this._opened, "Closed", {
|
|
1514
|
+
F: __dxlog_file5,
|
|
1515
|
+
L: 135,
|
|
1516
|
+
S: this,
|
|
1517
|
+
A: [
|
|
1518
|
+
"this._opened",
|
|
1519
|
+
"'Closed'"
|
|
1520
|
+
]
|
|
1521
|
+
});
|
|
1254
1522
|
await this._forEachServer(async (server) => server.unsubscribeMessages(peerId));
|
|
1255
1523
|
}
|
|
1256
1524
|
_initContext() {
|
|
1257
1525
|
this._ctx = new Context4({
|
|
1258
1526
|
onError: (err) => log5.catch(err, void 0, {
|
|
1259
1527
|
F: __dxlog_file5,
|
|
1260
|
-
L:
|
|
1528
|
+
L: 142,
|
|
1261
1529
|
S: this,
|
|
1262
1530
|
C: (f, a) => f(...a)
|
|
1263
1531
|
})
|