@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.
@@ -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: 63,
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: 65,
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: 69,
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: 74,
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: 94,
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: 108,
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: 110,
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: 119,
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: 215,
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: 250,
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
- invariant2(this._rpc, "Rpc is not initialized");
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: 136,
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: 148,
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: 177,
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: 181,
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: 192,
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: 207,
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: 215,
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: 230,
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: 236,
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: 255,
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: 260,
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: 268,
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: 280,
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: 289,
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: 304,
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: 331,
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: 335,
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: 387,
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 invariant4 from "tiny-invariant";
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
- var _a;
1045
- invariant4(recipient);
1046
- invariant4(!this._ctx.disposed, "Closed");
1047
- if (!this._context.connections.has(recipient)) {
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: 160,
1218
+ L: 169,
1054
1219
  S: this,
1055
1220
  C: (f, a) => f(...a)
1056
1221
  });
1057
1222
  return;
1058
1223
  }
1059
- if (!((_a = this._context.connections.get(recipient)) == null ? void 0 : _a._ctx.disposed)) {
1060
- this._context.connections.get(recipient).onMessage.emit({
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: 170,
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: 175,
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: 47,
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: 69,
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: 70,
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: 77,
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: 97,
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: 104,
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: 119,
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: 123,
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: 128,
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: 135,
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: 143,
1528
+ L: 142,
1261
1529
  S: this,
1262
1530
  C: (f, a) => f(...a)
1263
1531
  })