@dxos/messaging 0.8.3 → 0.8.4-main.1da679c

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.
Files changed (67) hide show
  1. package/dist/lib/browser/{chunk-ISA3S2ZX.mjs → chunk-46VUJLOF.mjs} +451 -334
  2. package/dist/lib/browser/chunk-46VUJLOF.mjs.map +7 -0
  3. package/dist/lib/browser/index.mjs +1 -1
  4. package/dist/lib/browser/meta.json +1 -1
  5. package/dist/lib/browser/testing/index.mjs +46 -17
  6. package/dist/lib/browser/testing/index.mjs.map +3 -3
  7. package/dist/lib/node-esm/{chunk-SO4RY3ON.mjs → chunk-4SVYY5G5.mjs} +451 -334
  8. package/dist/lib/node-esm/chunk-4SVYY5G5.mjs.map +7 -0
  9. package/dist/lib/node-esm/index.mjs +1 -1
  10. package/dist/lib/node-esm/meta.json +1 -1
  11. package/dist/lib/node-esm/testing/index.mjs +46 -17
  12. package/dist/lib/node-esm/testing/index.mjs.map +3 -3
  13. package/dist/types/src/messenger.blueprint-test.d.ts.map +1 -1
  14. package/dist/types/src/messenger.d.ts +1 -1
  15. package/dist/types/src/messenger.d.ts.map +1 -1
  16. package/dist/types/src/signal-client/signal-client.d.ts +2 -2
  17. package/dist/types/src/signal-client/signal-client.d.ts.map +1 -1
  18. package/dist/types/src/signal-client/signal-local-state.d.ts +1 -1
  19. package/dist/types/src/signal-client/signal-local-state.d.ts.map +1 -1
  20. package/dist/types/src/signal-client/signal-rpc-client.d.ts.map +1 -1
  21. package/dist/types/src/signal-manager/edge-signal-manager.d.ts +1 -1
  22. package/dist/types/src/signal-manager/edge-signal-manager.d.ts.map +1 -1
  23. package/dist/types/src/signal-manager/index.d.ts +1 -1
  24. package/dist/types/src/signal-manager/index.d.ts.map +1 -1
  25. package/dist/types/src/signal-manager/memory-signal-manager.d.ts +1 -1
  26. package/dist/types/src/signal-manager/memory-signal-manager.d.ts.map +1 -1
  27. package/dist/types/src/signal-manager/signal-manager.d.ts +1 -1
  28. package/dist/types/src/signal-manager/signal-manager.d.ts.map +1 -1
  29. package/dist/types/src/signal-manager/websocket-signal-manager.d.ts +1 -1
  30. package/dist/types/src/signal-manager/websocket-signal-manager.d.ts.map +1 -1
  31. package/dist/types/src/signal-methods.d.ts +2 -2
  32. package/dist/types/src/signal-methods.d.ts.map +1 -1
  33. package/dist/types/src/testing/test-builder.d.ts +1 -1
  34. package/dist/types/src/testing/test-builder.d.ts.map +1 -1
  35. package/dist/types/src/testing/test-peer.d.ts +1 -1
  36. package/dist/types/src/testing/test-peer.d.ts.map +1 -1
  37. package/dist/types/src/testing/utils.d.ts +1 -1
  38. package/dist/types/src/testing/utils.d.ts.map +1 -1
  39. package/dist/types/tsconfig.tsbuildinfo +1 -1
  40. package/package.json +18 -16
  41. package/src/messenger.blueprint-test.ts +2 -2
  42. package/src/messenger.node.test.ts +2 -2
  43. package/src/messenger.ts +1 -1
  44. package/src/signal-client/signal-client.node.test.ts +4 -3
  45. package/src/signal-client/signal-client.ts +7 -6
  46. package/src/signal-client/signal-local-state.ts +4 -3
  47. package/src/signal-client/signal-rpc-client.node.test.ts +1 -1
  48. package/src/signal-client/signal-rpc-client.ts +4 -4
  49. package/src/signal-manager/edge-signal-manager.ts +6 -5
  50. package/src/signal-manager/index.ts +1 -1
  51. package/src/signal-manager/memory-signal-manager.ts +2 -1
  52. package/src/signal-manager/signal-manager.ts +1 -1
  53. package/src/signal-manager/websocket-signal-manager.node.test.ts +3 -2
  54. package/src/signal-manager/websocket-signal-manager.ts +4 -3
  55. package/src/signal-methods.ts +3 -3
  56. package/src/testing/test-builder.ts +3 -2
  57. package/src/testing/test-peer.ts +3 -2
  58. package/src/testing/utils.ts +3 -2
  59. package/dist/lib/browser/chunk-ISA3S2ZX.mjs.map +0 -7
  60. package/dist/lib/node/chunk-GMND65DN.cjs +0 -2291
  61. package/dist/lib/node/chunk-GMND65DN.cjs.map +0 -7
  62. package/dist/lib/node/index.cjs +0 -43
  63. package/dist/lib/node/index.cjs.map +0 -7
  64. package/dist/lib/node/meta.json +0 -1
  65. package/dist/lib/node/testing/index.cjs +0 -159
  66. package/dist/lib/node/testing/index.cjs.map +0 -7
  67. package/dist/lib/node-esm/chunk-SO4RY3ON.mjs.map +0 -7
@@ -1,6 +1,6 @@
1
1
  import "@dxos/node-std/globals";
2
2
 
3
- // packages/core/mesh/messaging/src/messenger.ts
3
+ // src/messenger.ts
4
4
  import { TimeoutError, scheduleExponentialBackoffTaskInterval, scheduleTask, scheduleTaskInterval } from "@dxos/async";
5
5
  import { Context } from "@dxos/context";
6
6
  import { invariant } from "@dxos/invariant";
@@ -10,7 +10,7 @@ import { TimeoutError as ProtocolTimeoutError, trace as trace2 } from "@dxos/pro
10
10
  import { schema } from "@dxos/protocols/proto";
11
11
  import { ComplexMap, ComplexSet } from "@dxos/util";
12
12
 
13
- // packages/core/mesh/messaging/src/messenger-monitor.ts
13
+ // src/messenger-monitor.ts
14
14
  import { trace } from "@dxos/tracing";
15
15
  var MessengerMonitor = class {
16
16
  recordMessageAckFailed() {
@@ -26,32 +26,28 @@ var MessengerMonitor = class {
26
26
  }
27
27
  };
28
28
 
29
- // packages/core/mesh/messaging/src/timeouts.ts
29
+ // src/timeouts.ts
30
30
  var MESSAGE_TIMEOUT = 1e4;
31
31
 
32
- // packages/core/mesh/messaging/src/messenger.ts
33
- var __dxlog_file = "/home/runner/work/dxos/dxos/packages/core/mesh/messaging/src/messenger.ts";
32
+ // src/messenger.ts
33
+ function _define_property(obj, key, value) {
34
+ if (key in obj) {
35
+ Object.defineProperty(obj, key, {
36
+ value,
37
+ enumerable: true,
38
+ configurable: true,
39
+ writable: true
40
+ });
41
+ } else {
42
+ obj[key] = value;
43
+ }
44
+ return obj;
45
+ }
46
+ var __dxlog_file = "/__w/dxos/dxos/packages/core/mesh/messaging/src/messenger.ts";
34
47
  var ReliablePayload = schema.getCodecForType("dxos.mesh.messaging.ReliablePayload");
35
48
  var Acknowledgement = schema.getCodecForType("dxos.mesh.messaging.Acknowledgement");
36
49
  var RECEIVED_MESSAGES_GC_INTERVAL = 12e4;
37
50
  var Messenger = class {
38
- constructor({ signalManager, retryDelay = 1e3 }) {
39
- this._monitor = new MessengerMonitor();
40
- // { peerId, payloadType } => listeners set
41
- this._listeners = new ComplexMap(({ peerId, payloadType }) => peerId + payloadType);
42
- // peerId => listeners set
43
- this._defaultListeners = /* @__PURE__ */ new Map();
44
- this._onAckCallbacks = new ComplexMap(PublicKey.hash);
45
- this._receivedMessages = new ComplexSet(PublicKey.hash);
46
- /**
47
- * Keys scheduled to be cleared from _receivedMessages on the next iteration.
48
- */
49
- this._toClear = new ComplexSet(PublicKey.hash);
50
- this._closed = true;
51
- this._signalManager = signalManager;
52
- this._retryDelay = retryDelay;
53
- this.open();
54
- }
55
51
  open() {
56
52
  if (!this._closed) {
57
53
  return;
@@ -407,37 +403,48 @@ var Messenger = class {
407
403
  });
408
404
  }
409
405
  }
406
+ constructor({ signalManager, retryDelay = 1e3 }) {
407
+ _define_property(this, "_monitor", new MessengerMonitor());
408
+ _define_property(this, "_signalManager", void 0);
409
+ _define_property(this, "_listeners", new ComplexMap(({ peerId, payloadType }) => peerId + payloadType));
410
+ _define_property(this, "_defaultListeners", /* @__PURE__ */ new Map());
411
+ _define_property(this, "_onAckCallbacks", new ComplexMap(PublicKey.hash));
412
+ _define_property(this, "_receivedMessages", new ComplexSet(PublicKey.hash));
413
+ _define_property(this, "_toClear", new ComplexSet(PublicKey.hash));
414
+ _define_property(this, "_ctx", void 0);
415
+ _define_property(this, "_closed", true);
416
+ _define_property(this, "_retryDelay", void 0);
417
+ this._signalManager = signalManager;
418
+ this._retryDelay = retryDelay;
419
+ this.open();
420
+ }
410
421
  };
411
422
 
412
- // packages/core/mesh/messaging/src/signal-client/signal-client.ts
423
+ // src/signal-client/signal-client.ts
413
424
  import { DeferredTask, Event as Event2, Trigger as Trigger2, scheduleTask as scheduleTask2, scheduleTaskInterval as scheduleTaskInterval3, sleep } from "@dxos/async";
414
- import { cancelWithContext as cancelWithContext2, Resource } from "@dxos/context";
425
+ import { Resource, cancelWithContext as cancelWithContext2 } from "@dxos/context";
415
426
  import { invariant as invariant3 } from "@dxos/invariant";
416
427
  import { PublicKey as PublicKey4 } from "@dxos/keys";
417
428
  import { log as log4 } from "@dxos/log";
418
429
  import { trace as trace6 } from "@dxos/protocols";
419
430
  import { SignalState } from "@dxos/protocols/proto/dxos/mesh/signal";
420
431
 
421
- // packages/core/mesh/messaging/src/signal-client/signal-client-monitor.ts
432
+ // src/signal-client/signal-client-monitor.ts
422
433
  import { trace as trace3 } from "@dxos/tracing";
434
+ function _define_property2(obj, key, value) {
435
+ if (key in obj) {
436
+ Object.defineProperty(obj, key, {
437
+ value,
438
+ enumerable: true,
439
+ configurable: true,
440
+ writable: true
441
+ });
442
+ } else {
443
+ obj[key] = value;
444
+ }
445
+ return obj;
446
+ }
423
447
  var SignalClientMonitor = class {
424
- constructor() {
425
- this._performance = {
426
- sentMessages: 0,
427
- receivedMessages: 0,
428
- reconnectCounter: 0,
429
- joinCounter: 0,
430
- leaveCounter: 0
431
- };
432
- /**
433
- * Timestamp of when the connection attempt was began.
434
- */
435
- this._connectionStarted = /* @__PURE__ */ new Date();
436
- /**
437
- * Timestamp of last state change.
438
- */
439
- this._lastStateChange = /* @__PURE__ */ new Date();
440
- }
441
448
  getRecordedTimestamps() {
442
449
  return {
443
450
  connectionStarted: this._connectionStarted,
@@ -507,6 +514,17 @@ var SignalClientMonitor = class {
507
514
  }
508
515
  });
509
516
  }
517
+ constructor() {
518
+ _define_property2(this, "_performance", {
519
+ sentMessages: 0,
520
+ receivedMessages: 0,
521
+ reconnectCounter: 0,
522
+ joinCounter: 0,
523
+ leaveCounter: 0
524
+ });
525
+ _define_property2(this, "_connectionStarted", /* @__PURE__ */ new Date());
526
+ _define_property2(this, "_lastStateChange", /* @__PURE__ */ new Date());
527
+ }
510
528
  };
511
529
  var getByteCount = (message) => {
512
530
  return message.author.peerKey.length + message.recipient.peerKey.length + message.payload.type_url.length + message.payload.value.length;
@@ -517,23 +535,27 @@ var createIdentityTags = (message) => {
517
535
  };
518
536
  };
519
537
 
520
- // packages/core/mesh/messaging/src/signal-client/signal-local-state.ts
521
- import { asyncTimeout, Event } from "@dxos/async";
538
+ // src/signal-client/signal-local-state.ts
539
+ import { Event, asyncTimeout } from "@dxos/async";
522
540
  import { cancelWithContext } from "@dxos/context";
523
541
  import { PublicKey as PublicKey2 } from "@dxos/keys";
524
542
  import { log as log2 } from "@dxos/log";
525
543
  import { ComplexMap as ComplexMap2, ComplexSet as ComplexSet2, safeAwaitAll } from "@dxos/util";
526
- var __dxlog_file2 = "/home/runner/work/dxos/dxos/packages/core/mesh/messaging/src/signal-client/signal-local-state.ts";
544
+ function _define_property3(obj, key, value) {
545
+ if (key in obj) {
546
+ Object.defineProperty(obj, key, {
547
+ value,
548
+ enumerable: true,
549
+ configurable: true,
550
+ writable: true
551
+ });
552
+ } else {
553
+ obj[key] = value;
554
+ }
555
+ return obj;
556
+ }
557
+ var __dxlog_file2 = "/__w/dxos/dxos/packages/core/mesh/messaging/src/signal-client/signal-local-state.ts";
527
558
  var SignalLocalState = class {
528
- constructor(_onMessage, _onSwarmEvent) {
529
- this._onMessage = _onMessage;
530
- this._onSwarmEvent = _onSwarmEvent;
531
- this._swarmStreams = new ComplexMap2(({ topic, peerId }) => topic.toHex() + peerId.toHex());
532
- this._joinedTopics = new ComplexSet2(({ topic, peerId }) => topic.toHex() + peerId.toHex());
533
- this._subscribedMessages = new ComplexSet2(({ peerId }) => peerId.toHex());
534
- this.messageStreams = new ComplexMap2((key) => key.toHex());
535
- this.reconciled = new Event();
536
- }
537
559
  async safeCloseStreams() {
538
560
  const streams = [
539
561
  ...this._swarmStreams.values()
@@ -577,7 +599,7 @@ var SignalLocalState = class {
577
599
  peerId
578
600
  }, {
579
601
  F: __dxlog_file2,
580
- L: 79,
602
+ L: 80,
581
603
  S: this,
582
604
  C: (f, a) => f(...a)
583
605
  });
@@ -629,7 +651,7 @@ var SignalLocalState = class {
629
651
  swarmEvent
630
652
  }, {
631
653
  F: __dxlog_file2,
632
- L: 115,
654
+ L: 116,
633
655
  S: this,
634
656
  C: (f, a) => f(...a)
635
657
  });
@@ -693,11 +715,27 @@ var SignalLocalState = class {
693
715
  this.messageStreams.set(peerId, messageStream);
694
716
  }
695
717
  }
718
+ constructor(_onMessage, _onSwarmEvent) {
719
+ _define_property3(this, "_onMessage", void 0);
720
+ _define_property3(this, "_onSwarmEvent", void 0);
721
+ _define_property3(this, "_swarmStreams", void 0);
722
+ _define_property3(this, "_joinedTopics", void 0);
723
+ _define_property3(this, "_subscribedMessages", void 0);
724
+ _define_property3(this, "messageStreams", void 0);
725
+ _define_property3(this, "reconciled", void 0);
726
+ this._onMessage = _onMessage;
727
+ this._onSwarmEvent = _onSwarmEvent;
728
+ this._swarmStreams = new ComplexMap2(({ topic, peerId }) => topic.toHex() + peerId.toHex());
729
+ this._joinedTopics = new ComplexSet2(({ topic, peerId }) => topic.toHex() + peerId.toHex());
730
+ this._subscribedMessages = new ComplexSet2(({ peerId }) => peerId.toHex());
731
+ this.messageStreams = new ComplexMap2((key) => key.toHex());
732
+ this.reconciled = new Event();
733
+ }
696
734
  };
697
735
 
698
- // packages/core/mesh/messaging/src/signal-client/signal-rpc-client.ts
736
+ // src/signal-client/signal-rpc-client.ts
699
737
  import WebSocket from "isomorphic-ws";
700
- import { scheduleTaskInterval as scheduleTaskInterval2, TimeoutError as TimeoutError2, Trigger } from "@dxos/async";
738
+ import { TimeoutError as TimeoutError2, Trigger, scheduleTaskInterval as scheduleTaskInterval2 } from "@dxos/async";
701
739
  import { Context as Context2 } from "@dxos/context";
702
740
  import { invariant as invariant2 } from "@dxos/invariant";
703
741
  import { PublicKey as PublicKey3 } from "@dxos/keys";
@@ -706,7 +744,7 @@ import { trace as trace5 } from "@dxos/protocols";
706
744
  import { schema as schema2 } from "@dxos/protocols/proto";
707
745
  import { createProtoRpcPeer } from "@dxos/rpc";
708
746
 
709
- // packages/core/mesh/messaging/src/signal-client/signal-rpc-client-monitor.ts
747
+ // src/signal-client/signal-rpc-client-monitor.ts
710
748
  import { trace as trace4 } from "@dxos/tracing";
711
749
  var SignalRpcClientMonitor = class {
712
750
  recordClientCloseFailure(params) {
@@ -718,128 +756,23 @@ var SignalRpcClientMonitor = class {
718
756
  }
719
757
  };
720
758
 
721
- // packages/core/mesh/messaging/src/signal-client/signal-rpc-client.ts
722
- var __dxlog_file3 = "/home/runner/work/dxos/dxos/packages/core/mesh/messaging/src/signal-client/signal-rpc-client.ts";
759
+ // src/signal-client/signal-rpc-client.ts
760
+ function _define_property4(obj, key, value) {
761
+ if (key in obj) {
762
+ Object.defineProperty(obj, key, {
763
+ value,
764
+ enumerable: true,
765
+ configurable: true,
766
+ writable: true
767
+ });
768
+ } else {
769
+ obj[key] = value;
770
+ }
771
+ return obj;
772
+ }
773
+ var __dxlog_file3 = "/__w/dxos/dxos/packages/core/mesh/messaging/src/signal-client/signal-rpc-client.ts";
723
774
  var SIGNAL_KEEPALIVE_INTERVAL = 1e4;
724
775
  var SignalRPCClient = class {
725
- constructor({ url, callbacks = {} }) {
726
- this._connectTrigger = new Trigger();
727
- this._closed = false;
728
- this._closeComplete = new Trigger();
729
- this._monitor = new SignalRpcClientMonitor();
730
- const traceId = PublicKey3.random().toHex();
731
- log3.trace("dxos.mesh.signal-rpc-client.constructor", trace5.begin({
732
- id: traceId
733
- }), {
734
- F: __dxlog_file3,
735
- L: 66,
736
- S: this,
737
- C: (f, a) => f(...a)
738
- });
739
- this._url = url;
740
- this._callbacks = callbacks;
741
- this._socket = new WebSocket(this._url);
742
- this._rpc = createProtoRpcPeer({
743
- requested: {
744
- Signal: schema2.getService("dxos.mesh.signal.Signal")
745
- },
746
- noHandshake: true,
747
- port: {
748
- send: (msg) => {
749
- if (this._closed) {
750
- return;
751
- }
752
- try {
753
- this._socket.send(msg);
754
- } catch (err) {
755
- log3.warn("send error", err, {
756
- F: __dxlog_file3,
757
- L: 85,
758
- S: this,
759
- C: (f, a) => f(...a)
760
- });
761
- }
762
- },
763
- subscribe: (cb) => {
764
- this._socket.onmessage = async (msg) => {
765
- if (typeof Blob !== "undefined" && msg.data instanceof Blob) {
766
- cb(Buffer.from(await msg.data.arrayBuffer()));
767
- } else {
768
- cb(msg.data);
769
- }
770
- };
771
- }
772
- },
773
- encodingOptions: {
774
- preserveAny: true
775
- }
776
- });
777
- this._socket.onopen = async () => {
778
- try {
779
- await this._rpc.open();
780
- if (this._closed) {
781
- await this._safeCloseRpc();
782
- return;
783
- }
784
- log3(`RPC open ${this._url}`, void 0, {
785
- F: __dxlog_file3,
786
- L: 110,
787
- S: this,
788
- C: (f, a) => f(...a)
789
- });
790
- this._callbacks.onConnected?.();
791
- this._connectTrigger.wake();
792
- this._keepaliveCtx = new Context2(void 0, {
793
- F: __dxlog_file3,
794
- L: 113
795
- });
796
- scheduleTaskInterval2(this._keepaliveCtx, async () => {
797
- this._socket?.send("__ping__");
798
- }, SIGNAL_KEEPALIVE_INTERVAL);
799
- } catch (err) {
800
- this._callbacks.onError?.(err);
801
- this._socket.close();
802
- this._closed = true;
803
- }
804
- };
805
- this._socket.onclose = async () => {
806
- log3(`Disconnected ${this._url}`, void 0, {
807
- F: __dxlog_file3,
808
- L: 133,
809
- S: this,
810
- C: (f, a) => f(...a)
811
- });
812
- this._callbacks.onDisconnected?.();
813
- this._closeComplete.wake();
814
- await this.close();
815
- };
816
- this._socket.onerror = async (event) => {
817
- if (this._closed) {
818
- this._socket.close();
819
- return;
820
- }
821
- this._closed = true;
822
- this._callbacks.onError?.(event.error ?? new Error(event.message));
823
- await this._safeCloseRpc();
824
- log3.warn(`Socket ${event.type ?? "unknown"} error`, {
825
- message: event.message,
826
- url: this._url
827
- }, {
828
- F: __dxlog_file3,
829
- L: 149,
830
- S: this,
831
- C: (f, a) => f(...a)
832
- });
833
- };
834
- log3.trace("dxos.mesh.signal-rpc-client.constructor", trace5.end({
835
- id: traceId
836
- }), {
837
- F: __dxlog_file3,
838
- L: 152,
839
- S: this,
840
- C: (f, a) => f(...a)
841
- });
842
- }
843
776
  async close() {
844
777
  if (this._closed) {
845
778
  return;
@@ -957,37 +890,157 @@ var SignalRPCClient = class {
957
890
  });
958
891
  }
959
892
  }
893
+ constructor({ url, callbacks = {} }) {
894
+ _define_property4(this, "_socket", void 0);
895
+ _define_property4(this, "_rpc", void 0);
896
+ _define_property4(this, "_connectTrigger", new Trigger());
897
+ _define_property4(this, "_keepaliveCtx", void 0);
898
+ _define_property4(this, "_closed", false);
899
+ _define_property4(this, "_url", void 0);
900
+ _define_property4(this, "_callbacks", void 0);
901
+ _define_property4(this, "_closeComplete", new Trigger());
902
+ _define_property4(this, "_monitor", new SignalRpcClientMonitor());
903
+ const traceId = PublicKey3.random().toHex();
904
+ log3.trace("dxos.mesh.signal-rpc-client.constructor", trace5.begin({
905
+ id: traceId
906
+ }), {
907
+ F: __dxlog_file3,
908
+ L: 66,
909
+ S: this,
910
+ C: (f, a) => f(...a)
911
+ });
912
+ this._url = url;
913
+ this._callbacks = callbacks;
914
+ this._socket = new WebSocket(this._url);
915
+ this._rpc = createProtoRpcPeer({
916
+ requested: {
917
+ Signal: schema2.getService("dxos.mesh.signal.Signal")
918
+ },
919
+ noHandshake: true,
920
+ port: {
921
+ send: (msg) => {
922
+ if (this._closed) {
923
+ return;
924
+ }
925
+ try {
926
+ this._socket.send(msg);
927
+ } catch (err) {
928
+ log3.warn("send error", err, {
929
+ F: __dxlog_file3,
930
+ L: 85,
931
+ S: this,
932
+ C: (f, a) => f(...a)
933
+ });
934
+ }
935
+ },
936
+ subscribe: (cb) => {
937
+ this._socket.onmessage = async (msg) => {
938
+ if (typeof Blob !== "undefined" && msg.data instanceof Blob) {
939
+ cb(Buffer.from(await msg.data.arrayBuffer()));
940
+ } else {
941
+ cb(msg.data);
942
+ }
943
+ };
944
+ }
945
+ },
946
+ encodingOptions: {
947
+ preserveAny: true
948
+ }
949
+ });
950
+ this._socket.onopen = async () => {
951
+ try {
952
+ await this._rpc.open();
953
+ if (this._closed) {
954
+ await this._safeCloseRpc();
955
+ return;
956
+ }
957
+ log3(`RPC open ${this._url}`, void 0, {
958
+ F: __dxlog_file3,
959
+ L: 110,
960
+ S: this,
961
+ C: (f, a) => f(...a)
962
+ });
963
+ this._callbacks.onConnected?.();
964
+ this._connectTrigger.wake();
965
+ this._keepaliveCtx = new Context2(void 0, {
966
+ F: __dxlog_file3,
967
+ L: 113
968
+ });
969
+ scheduleTaskInterval2(this._keepaliveCtx, async () => {
970
+ this._socket?.send("__ping__");
971
+ }, SIGNAL_KEEPALIVE_INTERVAL);
972
+ } catch (err) {
973
+ this._callbacks.onError?.(err);
974
+ this._socket.close();
975
+ this._closed = true;
976
+ }
977
+ };
978
+ this._socket.onclose = async () => {
979
+ log3(`Disconnected ${this._url}`, void 0, {
980
+ F: __dxlog_file3,
981
+ L: 133,
982
+ S: this,
983
+ C: (f, a) => f(...a)
984
+ });
985
+ this._callbacks.onDisconnected?.();
986
+ this._closeComplete.wake();
987
+ await this.close();
988
+ };
989
+ this._socket.onerror = async (event) => {
990
+ if (this._closed) {
991
+ this._socket.close();
992
+ return;
993
+ }
994
+ this._closed = true;
995
+ this._callbacks.onError?.(event.error ?? new Error(event.message));
996
+ await this._safeCloseRpc();
997
+ log3.warn(`Socket ${event.type ?? "unknown"} error`, {
998
+ message: event.message,
999
+ url: this._url
1000
+ }, {
1001
+ F: __dxlog_file3,
1002
+ L: 149,
1003
+ S: this,
1004
+ C: (f, a) => f(...a)
1005
+ });
1006
+ };
1007
+ log3.trace("dxos.mesh.signal-rpc-client.constructor", trace5.end({
1008
+ id: traceId
1009
+ }), {
1010
+ F: __dxlog_file3,
1011
+ L: 152,
1012
+ S: this,
1013
+ C: (f, a) => f(...a)
1014
+ });
1015
+ }
960
1016
  };
961
1017
 
962
- // packages/core/mesh/messaging/src/signal-client/signal-client.ts
963
- var __dxlog_file4 = "/home/runner/work/dxos/dxos/packages/core/mesh/messaging/src/signal-client/signal-client.ts";
1018
+ // src/signal-client/signal-client.ts
1019
+ function _define_property5(obj, key, value) {
1020
+ if (key in obj) {
1021
+ Object.defineProperty(obj, key, {
1022
+ value,
1023
+ enumerable: true,
1024
+ configurable: true,
1025
+ writable: true
1026
+ });
1027
+ } else {
1028
+ obj[key] = value;
1029
+ }
1030
+ return obj;
1031
+ }
1032
+ var __dxlog_file4 = "/__w/dxos/dxos/packages/core/mesh/messaging/src/signal-client/signal-client.ts";
964
1033
  var DEFAULT_RECONNECT_TIMEOUT = 100;
965
1034
  var MAX_RECONNECT_TIMEOUT = 5e3;
966
1035
  var ERROR_RECONCILE_DELAY = 1e3;
967
1036
  var RECONCILE_INTERVAL = 5e3;
968
1037
  var SignalClient = class extends Resource {
969
- /**
970
- * @param _host Signal server websocket URL.
971
- * @param onMessage called when a new message is received.
972
- * @param onSwarmEvent called when a new swarm event is received.
973
- * @param _getMetadata signal-message metadata provider, called for every message.
974
- */
975
- constructor(_host, _getMetadata) {
976
- super(), this._host = _host, this._getMetadata = _getMetadata, this._monitor = new SignalClientMonitor(), this._state = SignalState.CLOSED, this._lastReconciliationFailed = false, this._clientReady = new Trigger2(), this._reconnectAfter = DEFAULT_RECONNECT_TIMEOUT, this._instanceId = PublicKey4.random().toHex(), this.statusChanged = new Event2(), this.onMessage = new Event2(), this.swarmEvent = new Event2();
977
- if (!this._host.startsWith("wss://") && !this._host.startsWith("ws://")) {
978
- throw new Error(`Signal server requires a websocket URL. Provided: ${this._host}`);
979
- }
980
- this.localState = new SignalLocalState(async (message) => {
981
- this._monitor.recordMessageReceived(message);
982
- this.onMessage.emit(message);
983
- }, async (event) => this.swarmEvent.emit(event));
984
- }
985
1038
  async _open() {
986
1039
  log4.trace("dxos.mesh.signal-client.open", trace6.begin({
987
1040
  id: this._instanceId
988
1041
  }), {
989
1042
  F: __dxlog_file4,
990
- L: 96,
1043
+ L: 97,
991
1044
  S: this,
992
1045
  C: (f, a) => f(...a)
993
1046
  });
@@ -1005,7 +1058,7 @@ var SignalClient = class extends Resource {
1005
1058
  }));
1006
1059
  invariant3(this._state === SignalState.CONNECTED, "Not connected to Signal Server", {
1007
1060
  F: __dxlog_file4,
1008
- L: 106,
1061
+ L: 107,
1009
1062
  S: this,
1010
1063
  A: [
1011
1064
  "this._state === SignalState.CONNECTED",
@@ -1048,7 +1101,7 @@ var SignalClient = class extends Resource {
1048
1101
  id: this._instanceId
1049
1102
  }), {
1050
1103
  F: __dxlog_file4,
1051
- L: 139,
1104
+ L: 140,
1052
1105
  S: this,
1053
1106
  C: (f, a) => f(...a)
1054
1107
  });
@@ -1060,7 +1113,7 @@ var SignalClient = class extends Resource {
1060
1113
  if (this._state === SignalState.CONNECTED && !this._lastReconciliationFailed) {
1061
1114
  log4.warn("SignalClient error:", err, {
1062
1115
  F: __dxlog_file4,
1063
- L: 148,
1116
+ L: 149,
1064
1117
  S: this,
1065
1118
  C: (f, a) => f(...a)
1066
1119
  });
@@ -1070,7 +1123,7 @@ var SignalClient = class extends Resource {
1070
1123
  async _close() {
1071
1124
  log4("closing...", void 0, {
1072
1125
  F: __dxlog_file4,
1073
- L: 154,
1126
+ L: 155,
1074
1127
  S: this,
1075
1128
  C: (f, a) => f(...a)
1076
1129
  });
@@ -1083,7 +1136,7 @@ var SignalClient = class extends Resource {
1083
1136
  await this._safeResetClient();
1084
1137
  log4("closed", void 0, {
1085
1138
  F: __dxlog_file4,
1086
- L: 162,
1139
+ L: 163,
1087
1140
  S: this,
1088
1141
  C: (f, a) => f(...a)
1089
1142
  });
@@ -1103,7 +1156,7 @@ var SignalClient = class extends Resource {
1103
1156
  peerId: args.peer.peerKey
1104
1157
  }, {
1105
1158
  F: __dxlog_file4,
1106
- L: 176,
1159
+ L: 177,
1107
1160
  S: this,
1108
1161
  C: (f, a) => f(...a)
1109
1162
  });
@@ -1120,7 +1173,7 @@ var SignalClient = class extends Resource {
1120
1173
  peerId: args.peer.peerKey
1121
1174
  }, {
1122
1175
  F: __dxlog_file4,
1123
- L: 183,
1176
+ L: 184,
1124
1177
  S: this,
1125
1178
  C: (f, a) => f(...a)
1126
1179
  });
@@ -1138,7 +1191,7 @@ var SignalClient = class extends Resource {
1138
1191
  await this._clientReady.wait();
1139
1192
  invariant3(this._state === SignalState.CONNECTED, "Not connected to Signal Server", {
1140
1193
  F: __dxlog_file4,
1141
- L: 195,
1194
+ L: 196,
1142
1195
  S: this,
1143
1196
  A: [
1144
1197
  "this._state === SignalState.CONNECTED",
@@ -1147,7 +1200,7 @@ var SignalClient = class extends Resource {
1147
1200
  });
1148
1201
  invariant3(msg.author.peerKey, "Author key required", {
1149
1202
  F: __dxlog_file4,
1150
- L: 196,
1203
+ L: 197,
1151
1204
  S: this,
1152
1205
  A: [
1153
1206
  "msg.author.peerKey",
@@ -1156,7 +1209,7 @@ var SignalClient = class extends Resource {
1156
1209
  });
1157
1210
  invariant3(msg.recipient.peerKey, "Recipient key required", {
1158
1211
  F: __dxlog_file4,
1159
- L: 197,
1212
+ L: 198,
1160
1213
  S: this,
1161
1214
  A: [
1162
1215
  "msg.recipient.peerKey",
@@ -1173,7 +1226,7 @@ var SignalClient = class extends Resource {
1173
1226
  async subscribeMessages(peer) {
1174
1227
  invariant3(peer.peerKey, "Peer key required", {
1175
1228
  F: __dxlog_file4,
1176
- L: 207,
1229
+ L: 208,
1177
1230
  S: this,
1178
1231
  A: [
1179
1232
  "peer.peerKey",
@@ -1184,7 +1237,7 @@ var SignalClient = class extends Resource {
1184
1237
  peer
1185
1238
  }, {
1186
1239
  F: __dxlog_file4,
1187
- L: 208,
1240
+ L: 209,
1188
1241
  S: this,
1189
1242
  C: (f, a) => f(...a)
1190
1243
  });
@@ -1194,7 +1247,7 @@ var SignalClient = class extends Resource {
1194
1247
  async unsubscribeMessages(peer) {
1195
1248
  invariant3(peer.peerKey, "Peer key required", {
1196
1249
  F: __dxlog_file4,
1197
- L: 214,
1250
+ L: 215,
1198
1251
  S: this,
1199
1252
  A: [
1200
1253
  "peer.peerKey",
@@ -1205,7 +1258,7 @@ var SignalClient = class extends Resource {
1205
1258
  peer
1206
1259
  }, {
1207
1260
  F: __dxlog_file4,
1208
- L: 215,
1261
+ L: 216,
1209
1262
  S: this,
1210
1263
  C: (f, a) => f(...a)
1211
1264
  });
@@ -1220,13 +1273,13 @@ var SignalClient = class extends Resource {
1220
1273
  state: this._state
1221
1274
  }, {
1222
1275
  F: __dxlog_file4,
1223
- L: 224,
1276
+ L: 225,
1224
1277
  S: this,
1225
1278
  C: (f, a) => f(...a)
1226
1279
  });
1227
1280
  invariant3(!this._client, "Client already created", {
1228
1281
  F: __dxlog_file4,
1229
- L: 225,
1282
+ L: 226,
1230
1283
  S: this,
1231
1284
  A: [
1232
1285
  "!this._client",
@@ -1238,7 +1291,7 @@ var SignalClient = class extends Resource {
1238
1291
  this._connectionCtx.onDispose(async () => {
1239
1292
  log4("connection context disposed", void 0, {
1240
1293
  F: __dxlog_file4,
1241
- L: 232,
1294
+ L: 233,
1242
1295
  S: this,
1243
1296
  C: (f, a) => f(...a)
1244
1297
  });
@@ -1253,7 +1306,7 @@ var SignalClient = class extends Resource {
1253
1306
  if (client === this._client) {
1254
1307
  log4("socket connected", void 0, {
1255
1308
  F: __dxlog_file4,
1256
- L: 243,
1309
+ L: 244,
1257
1310
  S: this,
1258
1311
  C: (f, a) => f(...a)
1259
1312
  });
@@ -1268,7 +1321,7 @@ var SignalClient = class extends Resource {
1268
1321
  state: this._state
1269
1322
  }, {
1270
1323
  F: __dxlog_file4,
1271
- L: 252,
1324
+ L: 253,
1272
1325
  S: this,
1273
1326
  C: (f, a) => f(...a)
1274
1327
  });
@@ -1285,7 +1338,7 @@ var SignalClient = class extends Resource {
1285
1338
  state: this._state
1286
1339
  }, {
1287
1340
  F: __dxlog_file4,
1288
- L: 264,
1341
+ L: 265,
1289
1342
  S: this,
1290
1343
  C: (f, a) => f(...a)
1291
1344
  });
@@ -1310,14 +1363,14 @@ var SignalClient = class extends Resource {
1310
1363
  state: this._state
1311
1364
  }, {
1312
1365
  F: __dxlog_file4,
1313
- L: 279,
1366
+ L: 280,
1314
1367
  S: this,
1315
1368
  C: (f, a) => f(...a)
1316
1369
  });
1317
1370
  if (this._state === SignalState.RECONNECTING) {
1318
1371
  log4.info("Signal api already reconnecting.", void 0, {
1319
1372
  F: __dxlog_file4,
1320
- L: 282,
1373
+ L: 283,
1321
1374
  S: this,
1322
1375
  C: (f, a) => f(...a)
1323
1376
  });
@@ -1359,7 +1412,7 @@ var SignalClient = class extends Resource {
1359
1412
  status: this.getStatus()
1360
1413
  }, {
1361
1414
  F: __dxlog_file4,
1362
- L: 323,
1415
+ L: 324,
1363
1416
  S: this,
1364
1417
  C: (f, a) => f(...a)
1365
1418
  });
@@ -1379,12 +1432,34 @@ var SignalClient = class extends Resource {
1379
1432
  });
1380
1433
  this._client = void 0;
1381
1434
  }
1435
+ /**
1436
+ * @param _host Signal server websocket URL.
1437
+ * @param onMessage called when a new message is received.
1438
+ * @param onSwarmEvent called when a new swarm event is received.
1439
+ * @param _getMetadata signal-message metadata provider, called for every message.
1440
+ */
1441
+ constructor(_host, _getMetadata) {
1442
+ super(), _define_property5(this, "_host", void 0), _define_property5(this, "_getMetadata", void 0), _define_property5(this, "_monitor", void 0), _define_property5(this, "_state", void 0), _define_property5(this, "_lastError", void 0), _define_property5(this, "_lastReconciliationFailed", void 0), _define_property5(this, "_clientReady", void 0), _define_property5(this, "_connectionCtx", void 0), _define_property5(this, "_client", void 0), _define_property5(this, "_reconcileTask", void 0), _define_property5(this, "_reconnectTask", void 0), /**
1443
+ * Number of milliseconds after which the connection will be attempted again in case of error.
1444
+ */
1445
+ _define_property5(this, "_reconnectAfter", void 0), _define_property5(this, "_instanceId", void 0), /**
1446
+ * @internal
1447
+ */
1448
+ _define_property5(this, "localState", void 0), _define_property5(this, "statusChanged", void 0), _define_property5(this, "onMessage", void 0), _define_property5(this, "swarmEvent", void 0), this._host = _host, this._getMetadata = _getMetadata, this._monitor = new SignalClientMonitor(), this._state = SignalState.CLOSED, this._lastReconciliationFailed = false, this._clientReady = new Trigger2(), this._reconnectAfter = DEFAULT_RECONNECT_TIMEOUT, this._instanceId = PublicKey4.random().toHex(), this.statusChanged = new Event2(), this.onMessage = new Event2(), this.swarmEvent = new Event2();
1449
+ if (!this._host.startsWith("wss://") && !this._host.startsWith("ws://")) {
1450
+ throw new Error(`Signal server requires a websocket URL. Provided: ${this._host}`);
1451
+ }
1452
+ this.localState = new SignalLocalState(async (message) => {
1453
+ this._monitor.recordMessageReceived(message);
1454
+ this.onMessage.emit(message);
1455
+ }, async (event) => this.swarmEvent.emit(event));
1456
+ }
1382
1457
  };
1383
1458
 
1384
- // packages/core/mesh/messaging/src/signal-methods.ts
1459
+ // src/signal-methods.ts
1385
1460
  var PeerInfoHash = ({ peerKey }) => peerKey;
1386
1461
 
1387
- // packages/core/mesh/messaging/src/signal-manager/memory-signal-manager.ts
1462
+ // src/signal-manager/memory-signal-manager.ts
1388
1463
  import { Event as Event3, Trigger as Trigger3 } from "@dxos/async";
1389
1464
  import { Context as Context3 } from "@dxos/context";
1390
1465
  import { invariant as invariant4 } from "@dxos/invariant";
@@ -1392,38 +1467,35 @@ import { PublicKey as PublicKey5 } from "@dxos/keys";
1392
1467
  import { log as log5 } from "@dxos/log";
1393
1468
  import { schema as schema3 } from "@dxos/protocols/proto";
1394
1469
  import { ComplexMap as ComplexMap3, ComplexSet as ComplexSet3 } from "@dxos/util";
1395
- var __dxlog_file5 = "/home/runner/work/dxos/dxos/packages/core/mesh/messaging/src/signal-manager/memory-signal-manager.ts";
1470
+ function _define_property6(obj, key, value) {
1471
+ if (key in obj) {
1472
+ Object.defineProperty(obj, key, {
1473
+ value,
1474
+ enumerable: true,
1475
+ configurable: true,
1476
+ writable: true
1477
+ });
1478
+ } else {
1479
+ obj[key] = value;
1480
+ }
1481
+ return obj;
1482
+ }
1483
+ var __dxlog_file5 = "/__w/dxos/dxos/packages/core/mesh/messaging/src/signal-manager/memory-signal-manager.ts";
1396
1484
  var MemorySignalManagerContext = class {
1397
1485
  constructor() {
1398
- // Swarm messages.
1399
- this.swarmEvent = new Event3();
1400
- // Mapping from topic to set of peers.
1401
- this.swarms = new ComplexMap3(PublicKey5.hash);
1402
- // Map of connections for each peer for signaling.
1403
- this.connections = new ComplexMap3(PeerInfoHash);
1486
+ _define_property6(this, "swarmEvent", new Event3());
1487
+ _define_property6(this, "swarms", new ComplexMap3(PublicKey5.hash));
1488
+ _define_property6(this, "connections", new ComplexMap3(PeerInfoHash));
1404
1489
  }
1405
1490
  };
1406
1491
  var MemorySignalManager = class {
1407
- constructor(_context) {
1408
- this._context = _context;
1409
- this.statusChanged = new Event3();
1410
- this.swarmEvent = new Event3();
1411
- this.onMessage = new Event3();
1412
- this._joinedSwarms = new ComplexSet3(({ topic, peer }) => topic.toHex() + peer.peerKey);
1413
- this._freezeTrigger = new Trigger3().wake();
1414
- this._ctx = new Context3(void 0, {
1415
- F: __dxlog_file5,
1416
- L: 53
1417
- });
1418
- this._ctx.onDispose(this._context.swarmEvent.on((data) => this.swarmEvent.emit(data)));
1419
- }
1420
1492
  async open() {
1421
1493
  if (!this._ctx.disposed) {
1422
1494
  return;
1423
1495
  }
1424
1496
  this._ctx = new Context3(void 0, {
1425
1497
  F: __dxlog_file5,
1426
- L: 62
1498
+ L: 63
1427
1499
  });
1428
1500
  this._ctx.onDispose(this._context.swarmEvent.on((data) => this.swarmEvent.emit(data)));
1429
1501
  await Promise.all([
@@ -1449,7 +1521,7 @@ var MemorySignalManager = class {
1449
1521
  async join({ topic, peer }) {
1450
1522
  invariant4(!this._ctx.disposed, "Closed", {
1451
1523
  F: __dxlog_file5,
1452
- L: 91,
1524
+ L: 92,
1453
1525
  S: this,
1454
1526
  A: [
1455
1527
  "!this._ctx.disposed",
@@ -1486,7 +1558,7 @@ var MemorySignalManager = class {
1486
1558
  async leave({ topic, peer }) {
1487
1559
  invariant4(!this._ctx.disposed, "Closed", {
1488
1560
  F: __dxlog_file5,
1489
- L: 123,
1561
+ L: 124,
1490
1562
  S: this,
1491
1563
  A: [
1492
1564
  "!this._ctx.disposed",
@@ -1519,13 +1591,13 @@ var MemorySignalManager = class {
1519
1591
  ...dec(payload)
1520
1592
  }, {
1521
1593
  F: __dxlog_file5,
1522
- L: 156,
1594
+ L: 157,
1523
1595
  S: this,
1524
1596
  C: (f, a) => f(...a)
1525
1597
  });
1526
1598
  invariant4(recipient, void 0, {
1527
1599
  F: __dxlog_file5,
1528
- L: 158,
1600
+ L: 159,
1529
1601
  S: this,
1530
1602
  A: [
1531
1603
  "recipient",
@@ -1534,7 +1606,7 @@ var MemorySignalManager = class {
1534
1606
  });
1535
1607
  invariant4(!this._ctx.disposed, "Closed", {
1536
1608
  F: __dxlog_file5,
1537
- L: 159,
1609
+ L: 160,
1538
1610
  S: this,
1539
1611
  A: [
1540
1612
  "!this._ctx.disposed",
@@ -1549,7 +1621,7 @@ var MemorySignalManager = class {
1549
1621
  recipient
1550
1622
  }, {
1551
1623
  F: __dxlog_file5,
1552
- L: 165,
1624
+ L: 166,
1553
1625
  S: this,
1554
1626
  C: (f, a) => f(...a)
1555
1627
  });
@@ -1561,7 +1633,7 @@ var MemorySignalManager = class {
1561
1633
  recipient
1562
1634
  }, {
1563
1635
  F: __dxlog_file5,
1564
- L: 170,
1636
+ L: 171,
1565
1637
  S: this,
1566
1638
  C: (f, a) => f(...a)
1567
1639
  });
@@ -1574,7 +1646,7 @@ var MemorySignalManager = class {
1574
1646
  recipient
1575
1647
  }, {
1576
1648
  F: __dxlog_file5,
1577
- L: 178,
1649
+ L: 179,
1578
1650
  S: this,
1579
1651
  C: (f, a) => f(...a)
1580
1652
  });
@@ -1586,7 +1658,7 @@ var MemorySignalManager = class {
1586
1658
  ...dec(payload)
1587
1659
  }, {
1588
1660
  F: __dxlog_file5,
1589
- L: 182,
1661
+ L: 183,
1590
1662
  S: this,
1591
1663
  C: (f, a) => f(...a)
1592
1664
  });
@@ -1600,7 +1672,7 @@ var MemorySignalManager = class {
1600
1672
  err
1601
1673
  }, {
1602
1674
  F: __dxlog_file5,
1603
- L: 187,
1675
+ L: 188,
1604
1676
  S: this,
1605
1677
  C: (f, a) => f(...a)
1606
1678
  });
@@ -1611,7 +1683,7 @@ var MemorySignalManager = class {
1611
1683
  peerInfo
1612
1684
  }, {
1613
1685
  F: __dxlog_file5,
1614
- L: 192,
1686
+ L: 193,
1615
1687
  S: this,
1616
1688
  C: (f, a) => f(...a)
1617
1689
  });
@@ -1622,7 +1694,7 @@ var MemorySignalManager = class {
1622
1694
  peerInfo
1623
1695
  }, {
1624
1696
  F: __dxlog_file5,
1625
- L: 197,
1697
+ L: 198,
1626
1698
  S: this,
1627
1699
  C: (f, a) => f(...a)
1628
1700
  });
@@ -1634,6 +1706,26 @@ var MemorySignalManager = class {
1634
1706
  unfreeze() {
1635
1707
  this._freezeTrigger.wake();
1636
1708
  }
1709
+ constructor(_context) {
1710
+ _define_property6(this, "_context", void 0);
1711
+ _define_property6(this, "statusChanged", void 0);
1712
+ _define_property6(this, "swarmEvent", void 0);
1713
+ _define_property6(this, "onMessage", void 0);
1714
+ _define_property6(this, "_joinedSwarms", void 0);
1715
+ _define_property6(this, "_ctx", void 0);
1716
+ _define_property6(this, "_freezeTrigger", void 0);
1717
+ this._context = _context;
1718
+ this.statusChanged = new Event3();
1719
+ this.swarmEvent = new Event3();
1720
+ this.onMessage = new Event3();
1721
+ this._joinedSwarms = new ComplexSet3(({ topic, peer }) => topic.toHex() + peer.peerKey);
1722
+ this._freezeTrigger = new Trigger3().wake();
1723
+ this._ctx = new Context3(void 0, {
1724
+ F: __dxlog_file5,
1725
+ L: 54
1726
+ });
1727
+ this._ctx.onDispose(this._context.swarmEvent.on((data) => this.swarmEvent.emit(data)));
1728
+ }
1637
1729
  };
1638
1730
  var dec = (payload) => {
1639
1731
  if (!payload.type_url.endsWith("ReliablePayload")) {
@@ -1649,7 +1741,7 @@ var dec = (payload) => {
1649
1741
  return {};
1650
1742
  };
1651
1743
 
1652
- // packages/core/mesh/messaging/src/signal-manager/websocket-signal-manager.ts
1744
+ // src/signal-manager/websocket-signal-manager.ts
1653
1745
  import { Event as Event4, sleep as sleep2, synchronized } from "@dxos/async";
1654
1746
  import { LifecycleState, Resource as Resource2 } from "@dxos/context";
1655
1747
  import { invariant as invariant5 } from "@dxos/invariant";
@@ -1658,7 +1750,7 @@ import { log as log6 } from "@dxos/log";
1658
1750
  import { RateLimitExceededError, TimeoutError as TimeoutError3, trace as trace8 } from "@dxos/protocols";
1659
1751
  import { BitField, safeAwaitAll as safeAwaitAll2 } from "@dxos/util";
1660
1752
 
1661
- // packages/core/mesh/messaging/src/signal-manager/websocket-signal-manager-monitor.ts
1753
+ // src/signal-manager/websocket-signal-manager-monitor.ts
1662
1754
  import { trace as trace7 } from "@dxos/tracing";
1663
1755
  var WebsocketSignalManagerMonitor = class {
1664
1756
  recordRateLimitExceeded() {
@@ -1674,46 +1766,36 @@ var WebsocketSignalManagerMonitor = class {
1674
1766
  }
1675
1767
  };
1676
1768
 
1677
- // packages/core/mesh/messaging/src/signal-manager/websocket-signal-manager.ts
1769
+ // src/signal-manager/websocket-signal-manager.ts
1770
+ function _define_property7(obj, key, value) {
1771
+ if (key in obj) {
1772
+ Object.defineProperty(obj, key, {
1773
+ value,
1774
+ enumerable: true,
1775
+ configurable: true,
1776
+ writable: true
1777
+ });
1778
+ } else {
1779
+ obj[key] = value;
1780
+ }
1781
+ return obj;
1782
+ }
1678
1783
  function _ts_decorate(decorators, target, key, desc) {
1679
1784
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
1680
1785
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
1681
1786
  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;
1682
1787
  return c > 3 && r && Object.defineProperty(target, key, r), r;
1683
1788
  }
1684
- var __dxlog_file6 = "/home/runner/work/dxos/dxos/packages/core/mesh/messaging/src/signal-manager/websocket-signal-manager.ts";
1789
+ var __dxlog_file6 = "/__w/dxos/dxos/packages/core/mesh/messaging/src/signal-manager/websocket-signal-manager.ts";
1685
1790
  var MAX_SERVER_FAILURES = 5;
1686
1791
  var WSS_SIGNAL_SERVER_REBOOT_DELAY = 3e3;
1687
1792
  var WebsocketSignalManager = class extends Resource2 {
1688
- constructor(_hosts, _getMetadata) {
1689
- super(), this._hosts = _hosts, this._getMetadata = _getMetadata, this._servers = /* @__PURE__ */ new Map(), this._monitor = new WebsocketSignalManagerMonitor(), this.failureCount = /* @__PURE__ */ new Map(), this.statusChanged = new Event4(), this.swarmEvent = new Event4(), this.onMessage = new Event4(), this._instanceId = PublicKey6.random().toHex();
1690
- log6("Created WebsocketSignalManager", {
1691
- hosts: this._hosts
1692
- }, {
1693
- F: __dxlog_file6,
1694
- L: 58,
1695
- S: this,
1696
- C: (f, a) => f(...a)
1697
- });
1698
- for (const host of this._hosts) {
1699
- if (this._servers.has(host.server)) {
1700
- continue;
1701
- }
1702
- const server = new SignalClient(host.server, this._getMetadata);
1703
- server.swarmEvent.on((data) => this.swarmEvent.emit(data));
1704
- server.onMessage.on((data) => this.onMessage.emit(data));
1705
- server.statusChanged.on(() => this.statusChanged.emit(this.getStatus()));
1706
- this._servers.set(host.server, server);
1707
- this.failureCount.set(host.server, 0);
1708
- }
1709
- this._failedServersBitfield = BitField.zeros(this._hosts.length);
1710
- }
1711
1793
  async _open() {
1712
1794
  log6("open signal manager", {
1713
1795
  hosts: this._hosts
1714
1796
  }, {
1715
1797
  F: __dxlog_file6,
1716
- L: 78,
1798
+ L: 79,
1717
1799
  S: this,
1718
1800
  C: (f, a) => f(...a)
1719
1801
  });
@@ -1721,7 +1803,7 @@ var WebsocketSignalManager = class extends Resource2 {
1721
1803
  id: this._instanceId
1722
1804
  }), {
1723
1805
  F: __dxlog_file6,
1724
- L: 79,
1806
+ L: 80,
1725
1807
  S: this,
1726
1808
  C: (f, a) => f(...a)
1727
1809
  });
@@ -1730,7 +1812,7 @@ var WebsocketSignalManager = class extends Resource2 {
1730
1812
  id: this._instanceId
1731
1813
  }), {
1732
1814
  F: __dxlog_file6,
1733
- L: 83,
1815
+ L: 84,
1734
1816
  S: this,
1735
1817
  C: (f, a) => f(...a)
1736
1818
  });
@@ -1743,13 +1825,13 @@ var WebsocketSignalManager = class extends Resource2 {
1743
1825
  serverName
1744
1826
  }, {
1745
1827
  F: __dxlog_file6,
1746
- L: 91,
1828
+ L: 92,
1747
1829
  S: this,
1748
1830
  C: (f, a) => f(...a)
1749
1831
  });
1750
1832
  invariant5(this._lifecycleState === LifecycleState.OPEN, void 0, {
1751
1833
  F: __dxlog_file6,
1752
- L: 92,
1834
+ L: 93,
1753
1835
  S: this,
1754
1836
  A: [
1755
1837
  "this._lifecycleState === LifecycleState.OPEN",
@@ -1759,7 +1841,7 @@ var WebsocketSignalManager = class extends Resource2 {
1759
1841
  const server = this._servers.get(serverName);
1760
1842
  invariant5(server, "server not found", {
1761
1843
  F: __dxlog_file6,
1762
- L: 95,
1844
+ L: 96,
1763
1845
  S: this,
1764
1846
  A: [
1765
1847
  "server",
@@ -1779,13 +1861,13 @@ var WebsocketSignalManager = class extends Resource2 {
1779
1861
  peer
1780
1862
  }, {
1781
1863
  F: __dxlog_file6,
1782
- L: 108,
1864
+ L: 109,
1783
1865
  S: this,
1784
1866
  C: (f, a) => f(...a)
1785
1867
  });
1786
1868
  invariant5(this._lifecycleState === LifecycleState.OPEN, void 0, {
1787
1869
  F: __dxlog_file6,
1788
- L: 109,
1870
+ L: 110,
1789
1871
  S: this,
1790
1872
  A: [
1791
1873
  "this._lifecycleState === LifecycleState.OPEN",
@@ -1803,13 +1885,13 @@ var WebsocketSignalManager = class extends Resource2 {
1803
1885
  peer
1804
1886
  }, {
1805
1887
  F: __dxlog_file6,
1806
- L: 115,
1888
+ L: 116,
1807
1889
  S: this,
1808
1890
  C: (f, a) => f(...a)
1809
1891
  });
1810
1892
  invariant5(this._lifecycleState === LifecycleState.OPEN, void 0, {
1811
1893
  F: __dxlog_file6,
1812
- L: 116,
1894
+ L: 117,
1813
1895
  S: this,
1814
1896
  A: [
1815
1897
  "this._lifecycleState === LifecycleState.OPEN",
@@ -1829,13 +1911,13 @@ var WebsocketSignalManager = class extends Resource2 {
1829
1911
  recipient
1830
1912
  }, {
1831
1913
  F: __dxlog_file6,
1832
- L: 125,
1914
+ L: 126,
1833
1915
  S: this,
1834
1916
  C: (f, a) => f(...a)
1835
1917
  });
1836
1918
  invariant5(this._lifecycleState === LifecycleState.OPEN, void 0, {
1837
1919
  F: __dxlog_file6,
1838
- L: 126,
1920
+ L: 127,
1839
1921
  S: this,
1840
1922
  A: [
1841
1923
  "this._lifecycleState === LifecycleState.OPEN",
@@ -1853,7 +1935,7 @@ var WebsocketSignalManager = class extends Resource2 {
1853
1935
  err
1854
1936
  }, {
1855
1937
  F: __dxlog_file6,
1856
- L: 134,
1938
+ L: 135,
1857
1939
  S: this,
1858
1940
  C: (f, a) => f(...a)
1859
1941
  });
@@ -1863,7 +1945,7 @@ var WebsocketSignalManager = class extends Resource2 {
1863
1945
  err
1864
1946
  }, {
1865
1947
  F: __dxlog_file6,
1866
- L: 137,
1948
+ L: 138,
1867
1949
  S: this,
1868
1950
  C: (f, a) => f(...a)
1869
1951
  });
@@ -1873,7 +1955,7 @@ var WebsocketSignalManager = class extends Resource2 {
1873
1955
  err
1874
1956
  }, {
1875
1957
  F: __dxlog_file6,
1876
- L: 140,
1958
+ L: 141,
1877
1959
  S: this,
1878
1960
  C: (f, a) => f(...a)
1879
1961
  });
@@ -1896,7 +1978,7 @@ var WebsocketSignalManager = class extends Resource2 {
1896
1978
  failureCount
1897
1979
  }, {
1898
1980
  F: __dxlog_file6,
1899
- L: 154,
1981
+ L: 155,
1900
1982
  S: this,
1901
1983
  C: (f, a) => f(...a)
1902
1984
  });
@@ -1914,7 +1996,7 @@ var WebsocketSignalManager = class extends Resource2 {
1914
1996
  serverName
1915
1997
  }, {
1916
1998
  F: __dxlog_file6,
1917
- L: 167,
1999
+ L: 168,
1918
2000
  S: this,
1919
2001
  C: (f, a) => f(...a)
1920
2002
  });
@@ -1927,13 +2009,13 @@ var WebsocketSignalManager = class extends Resource2 {
1927
2009
  peer
1928
2010
  }, {
1929
2011
  F: __dxlog_file6,
1930
- L: 174,
2012
+ L: 175,
1931
2013
  S: this,
1932
2014
  C: (f, a) => f(...a)
1933
2015
  });
1934
2016
  invariant5(this._lifecycleState === LifecycleState.OPEN, void 0, {
1935
2017
  F: __dxlog_file6,
1936
- L: 175,
2018
+ L: 176,
1937
2019
  S: this,
1938
2020
  A: [
1939
2021
  "this._lifecycleState === LifecycleState.OPEN",
@@ -1947,13 +2029,13 @@ var WebsocketSignalManager = class extends Resource2 {
1947
2029
  peer
1948
2030
  }, {
1949
2031
  F: __dxlog_file6,
1950
- L: 181,
2032
+ L: 182,
1951
2033
  S: this,
1952
2034
  C: (f, a) => f(...a)
1953
2035
  });
1954
2036
  invariant5(this._lifecycleState === LifecycleState.OPEN, void 0, {
1955
2037
  F: __dxlog_file6,
1956
- L: 182,
2038
+ L: 183,
1957
2039
  S: this,
1958
2040
  A: [
1959
2041
  "this._lifecycleState === LifecycleState.OPEN",
@@ -1965,6 +2047,32 @@ var WebsocketSignalManager = class extends Resource2 {
1965
2047
  async _forEachServer(fn) {
1966
2048
  return Promise.all(Array.from(this._servers.entries()).map(([serverName, server], idx) => fn(server, serverName, idx)));
1967
2049
  }
2050
+ constructor(_hosts, _getMetadata) {
2051
+ super(), _define_property7(this, "_hosts", void 0), _define_property7(this, "_getMetadata", void 0), _define_property7(this, "_servers", void 0), _define_property7(this, "_monitor", void 0), /**
2052
+ * Used to avoid logging failed server restarts more than once until the server actually recovers.
2053
+ */
2054
+ _define_property7(this, "_failedServersBitfield", void 0), _define_property7(this, "failureCount", void 0), _define_property7(this, "statusChanged", void 0), _define_property7(this, "swarmEvent", void 0), _define_property7(this, "onMessage", void 0), _define_property7(this, "_instanceId", void 0), this._hosts = _hosts, this._getMetadata = _getMetadata, this._servers = /* @__PURE__ */ new Map(), this._monitor = new WebsocketSignalManagerMonitor(), this.failureCount = /* @__PURE__ */ new Map(), this.statusChanged = new Event4(), this.swarmEvent = new Event4(), this.onMessage = new Event4(), this._instanceId = PublicKey6.random().toHex();
2055
+ log6("Created WebsocketSignalManager", {
2056
+ hosts: this._hosts
2057
+ }, {
2058
+ F: __dxlog_file6,
2059
+ L: 59,
2060
+ S: this,
2061
+ C: (f, a) => f(...a)
2062
+ });
2063
+ for (const host of this._hosts) {
2064
+ if (this._servers.has(host.server)) {
2065
+ continue;
2066
+ }
2067
+ const server = new SignalClient(host.server, this._getMetadata);
2068
+ server.swarmEvent.on((data) => this.swarmEvent.emit(data));
2069
+ server.onMessage.on((data) => this.onMessage.emit(data));
2070
+ server.statusChanged.on(() => this.statusChanged.emit(this.getStatus()));
2071
+ this._servers.set(host.server, server);
2072
+ this.failureCount.set(host.server, 0);
2073
+ }
2074
+ this._failedServersBitfield = BitField.zeros(this._hosts.length);
2075
+ }
1968
2076
  };
1969
2077
  _ts_decorate([
1970
2078
  synchronized
@@ -1976,34 +2084,32 @@ _ts_decorate([
1976
2084
  synchronized
1977
2085
  ], WebsocketSignalManager.prototype, "checkServerFailure", null);
1978
2086
 
1979
- // packages/core/mesh/messaging/src/signal-manager/edge-signal-manager.ts
2087
+ // src/signal-manager/edge-signal-manager.ts
1980
2088
  import { Event as Event5, scheduleMicroTask } from "@dxos/async";
1981
- import { cancelWithContext as cancelWithContext3, Resource as Resource3 } from "@dxos/context";
2089
+ import { Resource as Resource3, cancelWithContext as cancelWithContext3 } from "@dxos/context";
1982
2090
  import { protocol } from "@dxos/edge-client";
1983
2091
  import { invariant as invariant6 } from "@dxos/invariant";
1984
2092
  import { PublicKey as PublicKey7 } from "@dxos/keys";
1985
2093
  import { log as log7 } from "@dxos/log";
1986
2094
  import { EdgeService } from "@dxos/protocols";
1987
2095
  import { bufWkt } from "@dxos/protocols/buf";
1988
- import { SwarmRequestSchema, SwarmRequest_Action as SwarmRequestAction, SwarmResponseSchema } from "@dxos/protocols/buf/dxos/edge/messenger_pb";
2096
+ import { SwarmRequest_Action as SwarmRequestAction, SwarmRequestSchema, SwarmResponseSchema } from "@dxos/protocols/buf/dxos/edge/messenger_pb";
1989
2097
  import { ComplexMap as ComplexMap4, ComplexSet as ComplexSet4 } from "@dxos/util";
1990
- var __dxlog_file7 = "/home/runner/work/dxos/dxos/packages/core/mesh/messaging/src/signal-manager/edge-signal-manager.ts";
2098
+ function _define_property8(obj, key, value) {
2099
+ if (key in obj) {
2100
+ Object.defineProperty(obj, key, {
2101
+ value,
2102
+ enumerable: true,
2103
+ configurable: true,
2104
+ writable: true
2105
+ });
2106
+ } else {
2107
+ obj[key] = value;
2108
+ }
2109
+ return obj;
2110
+ }
2111
+ var __dxlog_file7 = "/__w/dxos/dxos/packages/core/mesh/messaging/src/signal-manager/edge-signal-manager.ts";
1991
2112
  var EdgeSignalManager = class extends Resource3 {
1992
- constructor({ edgeConnection }) {
1993
- super();
1994
- /**
1995
- * @deprecated
1996
- */
1997
- this.swarmEvent = new Event5();
1998
- this.swarmState = new Event5();
1999
- this.onMessage = new Event5();
2000
- /**
2001
- * Swarm key -> { peer: <own state payload>, joinedPeers: <state of swarm> }.
2002
- */
2003
- // TODO(mykola): This class should not contain swarm state joinedPeers. Temporary before network-manager API changes to accept list of peers.
2004
- this._swarmPeers = new ComplexMap4(PublicKey7.hash);
2005
- this._edgeConnection = edgeConnection;
2006
- }
2007
2113
  async _open() {
2008
2114
  this._ctx.onDispose(this._edgeConnection.onMessage((message) => this._onMessage(message)));
2009
2115
  this._ctx.onDispose(this._edgeConnection.onReconnected(() => {
@@ -2023,7 +2129,7 @@ var EdgeSignalManager = class extends Resource3 {
2023
2129
  }
2024
2130
  }, {
2025
2131
  F: __dxlog_file7,
2026
- L: 65,
2132
+ L: 66,
2027
2133
  S: this,
2028
2134
  C: (f, a) => f(...a)
2029
2135
  });
@@ -2085,7 +2191,7 @@ var EdgeSignalManager = class extends Resource3 {
2085
2191
  }
2086
2192
  }, {
2087
2193
  F: __dxlog_file7,
2088
- L: 121,
2194
+ L: 122,
2089
2195
  S: this,
2090
2196
  C: (f, a) => f(...a)
2091
2197
  });
@@ -2120,7 +2226,7 @@ var EdgeSignalManager = class extends Resource3 {
2120
2226
  _processSwarmResponse(message) {
2121
2227
  invariant6(protocol.getPayloadType(message) === SwarmResponseSchema.typeName, "Wrong payload type", {
2122
2228
  F: __dxlog_file7,
2123
- L: 158,
2229
+ L: 159,
2124
2230
  S: this,
2125
2231
  A: [
2126
2232
  "protocol.getPayloadType(message) === SwarmResponseSchema.typeName",
@@ -2164,7 +2270,7 @@ var EdgeSignalManager = class extends Resource3 {
2164
2270
  _processMessage(message) {
2165
2271
  invariant6(protocol.getPayloadType(message) === bufWkt.AnySchema.typeName, "Wrong payload type", {
2166
2272
  F: __dxlog_file7,
2167
- L: 196,
2273
+ L: 197,
2168
2274
  S: this,
2169
2275
  A: [
2170
2276
  "protocol.getPayloadType(message) === bufWkt.AnySchema.typeName",
@@ -2174,7 +2280,7 @@ var EdgeSignalManager = class extends Resource3 {
2174
2280
  const payload = protocol.getPayload(message, bufWkt.AnySchema);
2175
2281
  invariant6(message.source, "source is missing", {
2176
2282
  F: __dxlog_file7,
2177
- L: 198,
2283
+ L: 199,
2178
2284
  S: this,
2179
2285
  A: [
2180
2286
  "message.source",
@@ -2183,7 +2289,7 @@ var EdgeSignalManager = class extends Resource3 {
2183
2289
  });
2184
2290
  invariant6(message.target, "target is missing", {
2185
2291
  F: __dxlog_file7,
2186
- L: 199,
2292
+ L: 200,
2187
2293
  S: this,
2188
2294
  A: [
2189
2295
  "message.target",
@@ -2192,7 +2298,7 @@ var EdgeSignalManager = class extends Resource3 {
2192
2298
  });
2193
2299
  invariant6(message.target.length === 1, "target should have exactly one item", {
2194
2300
  F: __dxlog_file7,
2195
- L: 200,
2301
+ L: 201,
2196
2302
  S: this,
2197
2303
  A: [
2198
2304
  "message.target.length === 1",
@@ -2216,7 +2322,7 @@ var EdgeSignalManager = class extends Resource3 {
2216
2322
  swarms: Array.from(this._swarmPeers.keys())
2217
2323
  }, {
2218
2324
  F: __dxlog_file7,
2219
- L: 219,
2325
+ L: 220,
2220
2326
  S: this,
2221
2327
  C: (f, a) => f(...a)
2222
2328
  });
@@ -2231,6 +2337,17 @@ var EdgeSignalManager = class extends Resource3 {
2231
2337
  });
2232
2338
  }
2233
2339
  }
2340
+ constructor({ edgeConnection }) {
2341
+ super(), /**
2342
+ * @deprecated
2343
+ */
2344
+ _define_property8(this, "swarmEvent", new Event5()), _define_property8(this, "swarmState", new Event5()), _define_property8(this, "onMessage", new Event5()), /**
2345
+ * Swarm key -> { peer: <own state payload>, joinedPeers: <state of swarm> }.
2346
+ */
2347
+ // TODO(mykola): This class should not contain swarm state joinedPeers. Temporary before network-manager API changes to accept list of peers.
2348
+ _define_property8(this, "_swarmPeers", new ComplexMap4(PublicKey7.hash)), _define_property8(this, "_edgeConnection", void 0);
2349
+ this._edgeConnection = edgeConnection;
2350
+ }
2234
2351
  };
2235
2352
  var createMessageSource = (topic, peerInfo) => {
2236
2353
  return {
@@ -2239,11 +2356,11 @@ var createMessageSource = (topic, peerInfo) => {
2239
2356
  };
2240
2357
  };
2241
2358
 
2242
- // packages/core/mesh/messaging/src/signal-manager/utils.ts
2359
+ // src/signal-manager/utils.ts
2243
2360
  import { invariant as invariant7 } from "@dxos/invariant";
2244
2361
  import { log as log8 } from "@dxos/log";
2245
2362
  import { DeviceKind } from "@dxos/protocols/proto/dxos/client/services";
2246
- var __dxlog_file8 = "/home/runner/work/dxos/dxos/packages/core/mesh/messaging/src/signal-manager/utils.ts";
2363
+ var __dxlog_file8 = "/__w/dxos/dxos/packages/core/mesh/messaging/src/signal-manager/utils.ts";
2247
2364
  var setIdentityTags = ({ identityService, devicesService, setTag }) => {
2248
2365
  identityService.queryIdentity().subscribe((idqr) => {
2249
2366
  if (!idqr?.identity?.identityKey) {
@@ -2306,4 +2423,4 @@ export {
2306
2423
  EdgeSignalManager,
2307
2424
  setIdentityTags
2308
2425
  };
2309
- //# sourceMappingURL=chunk-ISA3S2ZX.mjs.map
2426
+ //# sourceMappingURL=chunk-46VUJLOF.mjs.map