@dxos/messaging 0.1.56-main.a25bb93 → 0.1.56-main.a63ce79

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.
@@ -270,7 +270,6 @@ var Messenger = class {
270
270
  });
271
271
  }
272
272
  async _handleAcknowledgement({ payload }) {
273
- var _a;
274
273
  invariant(payload.type_url === "dxos.mesh.messaging.Acknowledgement", void 0, {
275
274
  F: __dxlog_file,
276
275
  L: 236,
@@ -280,7 +279,7 @@ var Messenger = class {
280
279
  ""
281
280
  ]
282
281
  });
283
- (_a = this._onAckCallbacks.get(Acknowledgement.decode(payload.value).messageId)) == null ? void 0 : _a();
282
+ this._onAckCallbacks.get(Acknowledgement.decode(payload.value).messageId)?.();
284
283
  }
285
284
  async _sendAcknowledgement({ author, recipient, messageId }) {
286
285
  log("sending ACK", {
@@ -398,7 +397,6 @@ var SignalRPCClient = class {
398
397
  }
399
398
  });
400
399
  this._socket.onopen = async () => {
401
- var _a, _b, _c, _d;
402
400
  try {
403
401
  await this._rpc.open();
404
402
  log2(`RPC open ${this._url}`, void 0, {
@@ -407,32 +405,30 @@ var SignalRPCClient = class {
407
405
  S: this,
408
406
  C: (f, a) => f(...a)
409
407
  });
410
- (_b = (_a = this._callbacks).onConnected) == null ? void 0 : _b.call(_a);
408
+ this._callbacks.onConnected?.();
411
409
  this._connectTrigger.wake();
412
410
  } catch (err) {
413
- (_d = (_c = this._callbacks).onError) == null ? void 0 : _d.call(_c, err);
411
+ this._callbacks.onError?.(err);
414
412
  }
415
413
  };
416
414
  this._socket.onclose = async () => {
417
- var _a, _b;
418
415
  log2(`Disconnected ${this._url}`, void 0, {
419
416
  F: __dxlog_file2,
420
417
  L: 98,
421
418
  S: this,
422
419
  C: (f, a) => f(...a)
423
420
  });
424
- (_b = (_a = this._callbacks).onDisconnected) == null ? void 0 : _b.call(_a);
421
+ this._callbacks.onDisconnected?.();
425
422
  await this.close();
426
423
  };
427
424
  this._socket.onerror = async (event) => {
428
- var _a, _b, _c, _d, _e;
429
425
  if (this._closed) {
430
426
  return;
431
427
  }
432
- (_c = (_b = this._callbacks).onError) == null ? void 0 : _c.call(_b, (_a = event.error) != null ? _a : new Error(event.message));
428
+ this._callbacks.onError?.(event.error ?? new Error(event.message));
433
429
  this._connectTrigger.reset();
434
430
  try {
435
- await ((_d = this._rpc) == null ? void 0 : _d.close());
431
+ await this._rpc?.close();
436
432
  } catch (err) {
437
433
  log2.catch(err, void 0, {
438
434
  F: __dxlog_file2,
@@ -442,7 +438,7 @@ var SignalRPCClient = class {
442
438
  });
443
439
  }
444
440
  this._closed = true;
445
- log2.warn((_e = event.message) != null ? _e : "Socket error", {
441
+ log2.warn(event.message ?? "Socket error", {
446
442
  url: this._url
447
443
  }, {
448
444
  F: __dxlog_file2,
@@ -461,11 +457,10 @@ var SignalRPCClient = class {
461
457
  });
462
458
  }
463
459
  async close() {
464
- var _a, _b;
465
460
  this._closed = true;
466
461
  try {
467
- await ((_a = this._rpc) == null ? void 0 : _a.close());
468
- (_b = this._socket) == null ? void 0 : _b.close();
462
+ await this._rpc?.close();
463
+ this._socket?.close();
469
464
  } catch (err) {
470
465
  log2.warn("close error", err, {
471
466
  F: __dxlog_file2,
@@ -600,8 +595,8 @@ var SignalClient = class {
600
595
  this._onSwarmEvent = _onSwarmEvent;
601
596
  this._state = SignalState.CLOSED;
602
597
  this._reconnectAfter = DEFAULT_RECONNECT_TIMEOUT;
603
- this._connectionStarted = new Date();
604
- this._lastStateChange = new Date();
598
+ this._connectionStarted = /* @__PURE__ */ new Date();
599
+ this._lastStateChange = /* @__PURE__ */ new Date();
605
600
  this._clientReady = new Trigger2();
606
601
  this.statusChanged = new Event();
607
602
  this.commandTrace = new Event();
@@ -639,8 +634,7 @@ var SignalClient = class {
639
634
  }
640
635
  this._ctx = new Context2({
641
636
  onError: (err) => {
642
- var _a;
643
- if (this._state === SignalState.CLOSED || ((_a = this._ctx) == null ? void 0 : _a.disposed)) {
637
+ if (this._state === SignalState.CLOSED || this._ctx?.disposed) {
644
638
  return;
645
639
  }
646
640
  if (this._state === SignalState.CONNECTED) {
@@ -679,7 +673,6 @@ var SignalClient = class {
679
673
  });
680
674
  }
681
675
  async close() {
682
- var _a, _b;
683
676
  log3("closing...", void 0, {
684
677
  F: __dxlog_file3,
685
678
  L: 180,
@@ -691,9 +684,9 @@ var SignalClient = class {
691
684
  ].includes(this._state)) {
692
685
  return;
693
686
  }
694
- await ((_a = this._ctx) == null ? void 0 : _a.dispose());
687
+ await this._ctx?.dispose();
695
688
  this._clientReady.reset();
696
- await ((_b = this._client) == null ? void 0 : _b.close());
689
+ await this._client?.close();
697
690
  this._client = void 0;
698
691
  this._setState(SignalState.CLOSED);
699
692
  log3("closed", void 0, {
@@ -704,11 +697,10 @@ var SignalClient = class {
704
697
  });
705
698
  }
706
699
  getStatus() {
707
- var _a;
708
700
  return {
709
701
  host: this._host,
710
702
  state: this._state,
711
- error: (_a = this._lastError) == null ? void 0 : _a.message,
703
+ error: this._lastError?.message,
712
704
  reconnectIn: this._reconnectAfter,
713
705
  connectionStarted: this._connectionStarted,
714
706
  lastStateChange: this._lastStateChange
@@ -732,7 +724,6 @@ var SignalClient = class {
732
724
  this._reconcileTask.schedule();
733
725
  }
734
726
  async leave({ topic, peerId }) {
735
- var _a;
736
727
  this._performance.leaveCounter++;
737
728
  log3("leaving", {
738
729
  topic,
@@ -743,10 +734,10 @@ var SignalClient = class {
743
734
  S: this,
744
735
  C: (f, a) => f(...a)
745
736
  });
746
- (_a = this._swarmStreams.get({
737
+ this._swarmStreams.get({
747
738
  topic,
748
739
  peerId
749
- })) == null ? void 0 : _a.close();
740
+ })?.close();
750
741
  this._swarmStreams.delete({
751
742
  topic,
752
743
  peerId
@@ -785,7 +776,6 @@ var SignalClient = class {
785
776
  this._reconcileTask.schedule();
786
777
  }
787
778
  async unsubscribeMessages(peerId) {
788
- var _a;
789
779
  log3("unsubscribing from messages", {
790
780
  peerId
791
781
  }, {
@@ -797,7 +787,7 @@ var SignalClient = class {
797
787
  this._subscribedMessages.delete({
798
788
  peerId
799
789
  });
800
- (_a = this._messageStreams.get(peerId)) == null ? void 0 : _a.close();
790
+ this._messageStreams.get(peerId)?.close();
801
791
  this._messageStreams.delete(peerId);
802
792
  }
803
793
  _scheduleReconcileAfterError() {
@@ -807,7 +797,7 @@ var SignalClient = class {
807
797
  }
808
798
  _setState(newState) {
809
799
  this._state = newState;
810
- this._lastStateChange = new Date();
800
+ this._lastStateChange = /* @__PURE__ */ new Date();
811
801
  log3("signal state changed", {
812
802
  status: this.getStatus()
813
803
  }, {
@@ -837,7 +827,7 @@ var SignalClient = class {
837
827
  "'Client already created'"
838
828
  ]
839
829
  });
840
- this._connectionStarted = new Date();
830
+ this._connectionStarted = /* @__PURE__ */ new Date();
841
831
  this._connectionCtx = this._ctx.derive();
842
832
  this._connectionCtx.onDispose(() => {
843
833
  log3("connection context disposed", void 0, {
@@ -920,7 +910,6 @@ var SignalClient = class {
920
910
  this._reconnectAfter = Math.min(this._reconnectAfter, MAX_RECONNECT_TIMEOUT);
921
911
  }
922
912
  async _reconnect() {
923
- var _a, _b;
924
913
  log3(`reconnecting in ${this._reconnectAfter}ms`, {
925
914
  state: this._state
926
915
  }, {
@@ -943,8 +932,8 @@ var SignalClient = class {
943
932
  return;
944
933
  }
945
934
  this._clientReady.reset();
946
- await ((_a = this._connectionCtx) == null ? void 0 : _a.dispose());
947
- (_b = this._client) == null ? void 0 : _b.close().catch(() => {
935
+ await this._connectionCtx?.dispose();
936
+ this._client?.close().catch(() => {
948
937
  });
949
938
  this._client = void 0;
950
939
  await cancelWithContext(this._ctx, sleep(this._reconnectAfter));
@@ -952,7 +941,6 @@ var SignalClient = class {
952
941
  this._createClient();
953
942
  }
954
943
  async _reconcileSwarmSubscriptions() {
955
- var _a;
956
944
  await asyncTimeout(cancelWithContext(this._connectionCtx, this._clientReady.wait()), 5e3);
957
945
  const client = this._client;
958
946
  invariant3(this._state === SignalState.CONNECTED, "Not connected to Signal Server", {
@@ -971,10 +959,10 @@ var SignalClient = class {
971
959
  })) {
972
960
  continue;
973
961
  }
974
- (_a = this._swarmStreams.get({
962
+ this._swarmStreams.get({
975
963
  topic,
976
964
  peerId
977
- })) == null ? void 0 : _a.close();
965
+ })?.close();
978
966
  this._swarmStreams.delete({
979
967
  topic,
980
968
  peerId
@@ -1012,7 +1000,6 @@ var SignalClient = class {
1012
1000
  }
1013
1001
  }
1014
1002
  async _reconcileMessageSubscriptions() {
1015
- var _a;
1016
1003
  await asyncTimeout(cancelWithContext(this._connectionCtx, this._clientReady.wait()), 5e3);
1017
1004
  const client = this._client;
1018
1005
  invariant3(this._state === SignalState.CONNECTED, "Not connected to Signal Server", {
@@ -1030,7 +1017,7 @@ var SignalClient = class {
1030
1017
  })) {
1031
1018
  continue;
1032
1019
  }
1033
- (_a = this._messageStreams.get(peerId)) == null ? void 0 : _a.close();
1020
+ this._messageStreams.get(peerId)?.close();
1034
1021
  this._messageStreams.delete(peerId);
1035
1022
  }
1036
1023
  for (const { peerId } of this._subscribedMessages.values()) {
@@ -1132,7 +1119,7 @@ var MemorySignalManager = class {
1132
1119
  swarmEvent: {
1133
1120
  peerAvailable: {
1134
1121
  peer: peerId.asUint8Array(),
1135
- since: new Date()
1122
+ since: /* @__PURE__ */ new Date()
1136
1123
  }
1137
1124
  }
1138
1125
  });
@@ -1143,7 +1130,7 @@ var MemorySignalManager = class {
1143
1130
  swarmEvent: {
1144
1131
  peerAvailable: {
1145
1132
  peer: peerId2.asUint8Array(),
1146
- since: new Date()
1133
+ since: /* @__PURE__ */ new Date()
1147
1134
  }
1148
1135
  }
1149
1136
  });
@@ -1302,15 +1289,14 @@ var MemorySignalManager = class {
1302
1289
  }
1303
1290
  };
1304
1291
  var dec = (payload) => {
1305
- var _a, _b, _c;
1306
1292
  if (!payload.type_url.endsWith("ReliablePayload")) {
1307
1293
  return {};
1308
1294
  }
1309
1295
  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") {
1296
+ if (typeof relPayload?.payload?.data === "object") {
1311
1297
  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
1298
+ payload: Object.keys(relPayload?.payload?.data)[0],
1299
+ sessionId: relPayload?.payload?.sessionId
1314
1300
  };
1315
1301
  }
1316
1302
  return {};
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../../src/messenger.ts", "../../../src/timeouts.ts", "../../../src/signal-client/signal-client.ts", "../../../src/signal-client/signal-rpc-client.ts", "../../../src/signal-manager/memory-signal-manager.ts", "../../../src/signal-manager/websocket-signal-manager.ts"],
4
4
  "sourcesContent": ["//\n// Copyright 2022 DXOS.org\n//\n\nimport { TimeoutError, scheduleExponentialBackoffTaskInterval, scheduleTask } from '@dxos/async';\nimport { Any } from '@dxos/codec-protobuf';\nimport { Context } from '@dxos/context';\nimport { invariant } from '@dxos/invariant';\nimport { PublicKey } from '@dxos/keys';\nimport { log } from '@dxos/log';\nimport { schema, trace } from '@dxos/protocols';\nimport { ReliablePayload } from '@dxos/protocols/proto/dxos/mesh/messaging';\nimport { ComplexMap, ComplexSet } from '@dxos/util';\n\nimport { SignalManager } from './signal-manager';\nimport { Message } from './signal-methods';\nimport { MESSAGE_TIMEOUT } from './timeouts';\n\nexport type OnMessage = (params: { author: PublicKey; recipient: PublicKey; payload: Any }) => Promise<void>;\n\nexport interface MessengerOptions {\n signalManager: SignalManager;\n retryDelay?: number;\n}\n\nconst ReliablePayload = schema.getCodecForType('dxos.mesh.messaging.ReliablePayload');\nconst Acknowledgement = schema.getCodecForType('dxos.mesh.messaging.Acknowledgement');\n\n/**\n * Reliable messenger that works trough signal network.\n */\nexport class Messenger {\n private readonly _signalManager: SignalManager;\n // { peerId, payloadType } => listeners set\n private readonly _listeners = new ComplexMap<{ peerId: PublicKey; payloadType: string }, Set<OnMessage>>(\n ({ peerId, payloadType }) => peerId.toHex() + payloadType,\n );\n\n // peerId => listeners set\n private readonly _defaultListeners = new ComplexMap<PublicKey, Set<OnMessage>>(PublicKey.hash);\n\n private readonly _onAckCallbacks = new ComplexMap<PublicKey, () => void>(PublicKey.hash);\n\n private readonly _receivedMessages = new ComplexSet<PublicKey>((key) => key.toHex());\n\n private _ctx!: Context;\n private _closed = true;\n private readonly _retryDelay: number;\n\n constructor({ signalManager, retryDelay = 300 }: MessengerOptions) {\n this._signalManager = signalManager;\n this._retryDelay = retryDelay;\n\n this.open();\n }\n\n open() {\n if (!this._closed) {\n return;\n }\n const traceId = PublicKey.random().toHex();\n log.trace('dxos.mesh.messenger.open', trace.begin({ id: traceId }));\n this._ctx = new Context({\n onError: (err) => log.catch(err),\n });\n this._ctx.onDispose(\n this._signalManager.onMessage.on(async (message) => {\n log('received message', { from: message.author });\n await this._handleMessage(message);\n }),\n );\n this._closed = false;\n log.trace('dxos.mesh.messenger.open', trace.end({ id: traceId }));\n }\n\n async close() {\n if (this._closed) {\n return;\n }\n this._closed = true;\n await this._ctx.dispose();\n }\n\n async sendMessage({ author, recipient, payload }: Message): Promise<void> {\n invariant(!this._closed, 'Closed');\n const messageContext = this._ctx.derive();\n\n const reliablePayload: ReliablePayload = {\n messageId: PublicKey.random(),\n payload,\n };\n invariant(!this._onAckCallbacks.has(reliablePayload.messageId!));\n log('send message', { messageId: reliablePayload.messageId, author, recipient });\n\n let messageReceived: () => void;\n let timeoutHit: (err: Error) => void;\n\n const promise = new Promise<void>((resolve, reject) => {\n messageReceived = resolve;\n timeoutHit = reject;\n });\n\n // Setting retry interval if signal was not acknowledged.\n scheduleExponentialBackoffTaskInterval(\n messageContext,\n async () => {\n log('retrying message', { messageId: reliablePayload.messageId });\n await this._encodeAndSend({ author, recipient, reliablePayload }).catch((err) =>\n log('failed to send message', { err }),\n );\n },\n this._retryDelay,\n );\n\n scheduleTask(\n messageContext,\n () => {\n log('message not delivered', { messageId: reliablePayload.messageId });\n this._onAckCallbacks.delete(reliablePayload.messageId!);\n timeoutHit(new TimeoutError(MESSAGE_TIMEOUT, 'Message not delivered'));\n void messageContext.dispose();\n },\n MESSAGE_TIMEOUT,\n );\n\n this._onAckCallbacks.set(reliablePayload.messageId, () => {\n messageReceived();\n this._onAckCallbacks.delete(reliablePayload.messageId!);\n void messageContext.dispose();\n });\n\n await this._encodeAndSend({ author, recipient, reliablePayload });\n\n return promise;\n }\n\n /**\n * Subscribes onMessage function to messages that contains payload with payloadType.\n * @param payloadType if not specified, onMessage will be subscribed to all types of messages.\n */\n async listen({\n peerId,\n payloadType,\n onMessage,\n }: {\n peerId: PublicKey;\n payloadType?: string;\n onMessage: OnMessage;\n }): Promise<ListeningHandle> {\n invariant(!this._closed, 'Closed');\n\n await this._signalManager.subscribeMessages(peerId);\n let listeners: Set<OnMessage> | undefined;\n\n if (!payloadType) {\n listeners = this._defaultListeners.get(peerId);\n if (!listeners) {\n listeners = new Set();\n this._defaultListeners.set(peerId, listeners);\n }\n } else {\n listeners = this._listeners.get({ peerId, payloadType });\n if (!listeners) {\n listeners = new Set();\n this._listeners.set({ peerId, payloadType }, listeners);\n }\n }\n\n listeners.add(onMessage);\n\n return {\n unsubscribe: async () => {\n listeners!.delete(onMessage);\n },\n };\n }\n\n private async _encodeAndSend({\n author,\n recipient,\n reliablePayload,\n }: {\n author: PublicKey;\n recipient: PublicKey;\n reliablePayload: ReliablePayload;\n }): Promise<void> {\n await this._signalManager.sendMessage({\n author,\n recipient,\n payload: {\n type_url: 'dxos.mesh.messaging.ReliablePayload',\n value: ReliablePayload.encode(reliablePayload, { preserveAny: true }),\n },\n });\n }\n\n private async _handleMessage(message: Message): Promise<void> {\n switch (message.payload.type_url) {\n case 'dxos.mesh.messaging.ReliablePayload': {\n await this._handleReliablePayload(message);\n break;\n }\n case 'dxos.mesh.messaging.Acknowledgement': {\n await this._handleAcknowledgement({ payload: message.payload });\n break;\n }\n }\n }\n\n private async _handleReliablePayload({ author, recipient, payload }: Message) {\n invariant(payload.type_url === 'dxos.mesh.messaging.ReliablePayload');\n const reliablePayload: ReliablePayload = ReliablePayload.decode(payload.value, { preserveAny: true });\n\n log('handling message', { messageId: reliablePayload.messageId });\n\n await this._sendAcknowledgement({\n author,\n recipient,\n messageId: reliablePayload.messageId,\n });\n\n if (this._receivedMessages.has(reliablePayload.messageId!)) {\n return;\n }\n\n this._receivedMessages.add(reliablePayload.messageId!);\n\n await this._callListeners({\n author,\n recipient,\n payload: reliablePayload.payload,\n });\n }\n\n private async _handleAcknowledgement({ payload }: { payload: Any }) {\n invariant(payload.type_url === 'dxos.mesh.messaging.Acknowledgement');\n this._onAckCallbacks.get(Acknowledgement.decode(payload.value).messageId)?.();\n }\n\n private async _sendAcknowledgement({\n author,\n recipient,\n messageId,\n }: {\n author: PublicKey;\n recipient: PublicKey;\n messageId: PublicKey;\n }): Promise<void> {\n log('sending ACK', { messageId, from: recipient, to: author });\n\n await this._signalManager.sendMessage({\n author: recipient,\n recipient: author,\n payload: {\n type_url: 'dxos.mesh.messaging.Acknowledgement',\n value: Acknowledgement.encode({ messageId }),\n },\n });\n }\n\n private async _callListeners(message: Message): Promise<void> {\n {\n const defaultListenerMap = this._defaultListeners.get(message.recipient);\n if (defaultListenerMap) {\n for (const listener of defaultListenerMap) {\n await listener(message);\n }\n }\n }\n\n {\n const listenerMap = this._listeners.get({\n peerId: message.recipient,\n payloadType: message.payload.type_url,\n });\n if (listenerMap) {\n for (const listener of listenerMap) {\n await listener(message);\n }\n }\n }\n }\n}\n\nexport interface ListeningHandle {\n unsubscribe: () => Promise<void>;\n}\n", "//\n// Copyright 2023 DXOS.org\n//\n\n/**\n * Timeout for retrying messages.\n */\nexport const MESSAGE_TIMEOUT = 10_000;\n", "//\n// Copyright 2020 DXOS.org\n//\n\nimport { DeferredTask, Event, Trigger, asyncTimeout, scheduleTask, scheduleTaskInterval, sleep } from '@dxos/async';\nimport { Any, Stream } from '@dxos/codec-protobuf';\nimport { Context, cancelWithContext } from '@dxos/context';\nimport { invariant } from '@dxos/invariant';\nimport { PublicKey } from '@dxos/keys';\nimport { log } from '@dxos/log';\nimport { trace } from '@dxos/protocols';\nimport { Message as SignalMessage, SignalState, SwarmEvent } from '@dxos/protocols/proto/dxos/mesh/signal';\nimport { ComplexMap, ComplexSet } from '@dxos/util';\n\nimport { Message, SignalMethods } from '../signal-methods';\nimport { SignalRPCClient } from './signal-rpc-client';\n\nconst DEFAULT_RECONNECT_TIMEOUT = 100;\nconst MAX_RECONNECT_TIMEOUT = 5000;\nconst ERROR_RECONCILE_DELAY = 1000;\nconst RECONCILE_INTERVAL = 5_000;\n\nexport type SignalStatus = {\n host: string;\n state: SignalState;\n error?: string;\n reconnectIn: number;\n connectionStarted: Date;\n lastStateChange: Date;\n};\n\nexport type CommandTrace = {\n messageId: string;\n host: string;\n incoming: boolean;\n time: number;\n method: string;\n payload: any;\n response?: any;\n error?: string;\n};\n\n/**\n * Establishes a websocket connection to signal server and provides RPC methods.\n */\nexport class SignalClient implements SignalMethods {\n private _state = SignalState.CLOSED;\n\n private _lastError?: Error;\n\n /**\n * Number of milliseconds after which the connection will be attempted again in case of error.\n */\n private _reconnectAfter = DEFAULT_RECONNECT_TIMEOUT;\n\n /**\n * Timestamp of when the connection attempt was began.\n */\n private _connectionStarted = new Date();\n\n /**\n * Timestamp of last state change.\n */\n private _lastStateChange = new Date();\n\n private _client?: SignalRPCClient;\n private readonly _clientReady = new Trigger();\n\n private _ctx?: Context;\n\n private _connectionCtx?: Context;\n\n private _reconcileTask?: DeferredTask;\n private _reconnectTask?: DeferredTask;\n\n readonly statusChanged = new Event<SignalStatus>();\n readonly commandTrace = new Event<CommandTrace>();\n\n /**\n * Swarm events streams. Keys represent actually joined topic and peerId.\n */\n private readonly _swarmStreams = new ComplexMap<{ topic: PublicKey; peerId: PublicKey }, Stream<SwarmEvent>>(\n ({ topic, peerId }) => topic.toHex() + peerId.toHex(),\n );\n\n /**\n * Represent desired joined topic and peerId.\n */\n private readonly _joinedTopics = new ComplexSet<{ topic: PublicKey; peerId: PublicKey }>(\n ({ topic, peerId }) => topic.toHex() + peerId.toHex(),\n );\n\n /**\n * Message streams. Keys represents actually subscribed peers.\n * @internal\n */\n public readonly _messageStreams = new ComplexMap<PublicKey, Stream<SignalMessage>>((key) => key.toHex());\n\n /**\n * Represent desired message subscriptions.\n */\n private readonly _subscribedMessages = new ComplexSet<{ peerId: PublicKey }>(({ peerId }) => peerId.toHex());\n\n /**\n * Event to use in tests to wait till subscription is successfully established.\n * @internal\n */\n public _reconciled = new Event();\n\n private readonly _instanceId = PublicKey.random().toHex();\n\n private readonly _performance = {\n sentMessages: 0,\n receivedMessages: 0,\n reconnectCounter: 0,\n joinCounter: 0,\n leaveCounter: 0,\n };\n\n /**\n * @param _host Signal server websocket URL.\n * @param _onMessage\n */\n constructor(\n private readonly _host: string,\n private readonly _onMessage: (params: { author: PublicKey; recipient: PublicKey; payload: Any }) => Promise<void>,\n private readonly _onSwarmEvent: (params: { topic: PublicKey; swarmEvent: SwarmEvent }) => Promise<void>,\n ) {\n if (!this._host.startsWith('wss://') && !this._host.startsWith('ws://')) {\n throw new Error(`Signal server requires a websocket URL. Provided: ${this._host}`);\n }\n }\n\n open() {\n log.trace('dxos.mesh.signal-client.open', trace.begin({ id: this._instanceId }));\n\n if ([SignalState.CONNECTED, SignalState.CONNECTING].includes(this._state)) {\n return;\n }\n\n this._ctx = new Context({\n onError: (err) => {\n if (this._state === SignalState.CLOSED || this._ctx?.disposed) {\n return;\n }\n if (this._state === SignalState.CONNECTED) {\n log.warn('SignalClient error:', err);\n }\n this._scheduleReconcileAfterError();\n },\n });\n\n this._reconcileTask = new DeferredTask(this._ctx, async () => {\n await this._reconcileSwarmSubscriptions();\n await this._reconcileMessageSubscriptions();\n this._reconciled.emit();\n });\n\n // Reconcile subscriptions periodically.\n scheduleTaskInterval(\n this._ctx,\n async () => {\n if (this._state === SignalState.CONNECTED) {\n this._reconcileTask!.schedule();\n }\n },\n RECONCILE_INTERVAL,\n );\n\n this._reconnectTask = new DeferredTask(this._ctx, async () => {\n await this._reconnect();\n });\n\n this._setState(SignalState.CONNECTING);\n this._createClient();\n log.trace('dxos.mesh.signal-client.open', trace.end({ id: this._instanceId }));\n }\n\n async close() {\n log('closing...');\n if ([SignalState.CLOSED].includes(this._state)) {\n return;\n }\n\n await this._ctx?.dispose();\n\n this._clientReady.reset();\n await this._client?.close();\n this._client = undefined;\n this._setState(SignalState.CLOSED);\n log('closed');\n }\n\n getStatus(): SignalStatus {\n return {\n host: this._host,\n state: this._state,\n error: this._lastError?.message,\n reconnectIn: this._reconnectAfter,\n connectionStarted: this._connectionStarted,\n lastStateChange: this._lastStateChange,\n };\n }\n\n async join({ topic, peerId }: { topic: PublicKey; peerId: PublicKey }): Promise<void> {\n log('joining', { topic, peerId });\n this._performance.joinCounter++;\n this._joinedTopics.add({ topic, peerId });\n this._reconcileTask!.schedule();\n }\n\n async leave({ topic, peerId }: { topic: PublicKey; peerId: PublicKey }): Promise<void> {\n this._performance.leaveCounter++;\n log('leaving', { topic, peerId });\n\n this._swarmStreams.get({ topic, peerId })?.close();\n this._swarmStreams.delete({ topic, peerId });\n this._joinedTopics.delete({ topic, peerId });\n }\n\n async sendMessage(msg: Message): Promise<void> {\n this._performance.sentMessages++;\n await this._clientReady.wait();\n invariant(this._state === SignalState.CONNECTED, 'Not connected to Signal Server');\n await this._client!.sendMessage(msg);\n }\n\n async subscribeMessages(peerId: PublicKey) {\n log('subscribing to messages', { peerId });\n this._subscribedMessages.add({ peerId });\n this._reconcileTask!.schedule();\n }\n\n async unsubscribeMessages(peerId: PublicKey) {\n log('unsubscribing from messages', { peerId });\n this._subscribedMessages.delete({ peerId });\n this._messageStreams.get(peerId)?.close();\n this._messageStreams.delete(peerId);\n }\n\n private _scheduleReconcileAfterError() {\n scheduleTask(\n this._ctx!,\n () => {\n this._reconcileTask!.schedule();\n },\n ERROR_RECONCILE_DELAY,\n );\n }\n\n private _setState(newState: SignalState) {\n this._state = newState;\n this._lastStateChange = new Date();\n log('signal state changed', { status: this.getStatus() });\n this.statusChanged.emit(this.getStatus());\n }\n\n private _createClient() {\n log('creating client', { host: this._host, state: this._state });\n invariant(!this._client, 'Client already created');\n\n this._connectionStarted = new Date();\n\n // Create new context for each connection.\n this._connectionCtx = this._ctx!.derive();\n this._connectionCtx.onDispose(() => {\n log('connection context disposed');\n Array.from(this._swarmStreams.values()).forEach((stream) => stream.close());\n Array.from(this._messageStreams.values()).forEach((stream) => stream.close());\n this._swarmStreams.clear();\n this._messageStreams.clear();\n });\n\n try {\n this._client = new SignalRPCClient({\n url: this._host,\n callbacks: {\n onConnected: () => {\n log('socket connected');\n this._lastError = undefined;\n this._reconnectAfter = DEFAULT_RECONNECT_TIMEOUT;\n this._setState(SignalState.CONNECTED);\n this._clientReady.wake();\n this._reconcileTask!.schedule();\n },\n\n onDisconnected: () => {\n log('socket disconnected', { state: this._state });\n if (this._state === SignalState.ERROR) {\n // Ignore disconnects after error.\n // Handled by error handler before disconnect handler.\n this._setState(SignalState.DISCONNECTED);\n return;\n }\n if (this._state !== SignalState.CONNECTED && this._state !== SignalState.CONNECTING) {\n this._incrementReconnectTimeout();\n }\n this._setState(SignalState.DISCONNECTED);\n this._reconnectTask!.schedule();\n },\n\n onError: (error) => {\n log('socket error', { error, state: this._state });\n this._lastError = error;\n if (this._state !== SignalState.CONNECTED && this._state !== SignalState.CONNECTING) {\n this._incrementReconnectTimeout();\n }\n this._setState(SignalState.ERROR);\n\n this._reconnectTask!.schedule();\n },\n },\n });\n } catch (err: any) {\n if (this._state !== SignalState.CONNECTED && this._state !== SignalState.CONNECTING) {\n this._incrementReconnectTimeout();\n }\n this._lastError = err;\n this._setState(SignalState.DISCONNECTED);\n this._reconnectTask!.schedule();\n }\n }\n\n private _incrementReconnectTimeout() {\n this._reconnectAfter *= 2;\n this._reconnectAfter = Math.min(this._reconnectAfter, MAX_RECONNECT_TIMEOUT);\n }\n\n private async _reconnect() {\n log(`reconnecting in ${this._reconnectAfter}ms`, { state: this._state });\n this._performance.reconnectCounter++;\n\n if (this._state === SignalState.RECONNECTING) {\n log.warn('Signal api already reconnecting.');\n return;\n }\n\n if (this._state === SignalState.CLOSED) {\n return;\n }\n\n // Close client if it wasn't already closed.\n this._clientReady.reset();\n await this._connectionCtx?.dispose();\n this._client?.close().catch(() => {});\n this._client = undefined;\n\n await cancelWithContext(this._ctx!, sleep(this._reconnectAfter));\n\n this._setState(SignalState.RECONNECTING);\n\n this._createClient();\n }\n\n private async _reconcileSwarmSubscriptions(): Promise<void> {\n await asyncTimeout(cancelWithContext(this._connectionCtx!, this._clientReady.wait()), 5_000);\n // Copy Client reference to avoid client change during the reconcile.\n const client = this._client!;\n invariant(this._state === SignalState.CONNECTED, 'Not connected to Signal Server');\n\n // Unsubscribe from topics that are no longer needed.\n for (const { topic, peerId } of this._swarmStreams.keys()) {\n // Join desired topics.\n if (this._joinedTopics.has({ topic, peerId })) {\n continue;\n }\n\n this._swarmStreams.get({ topic, peerId })?.close();\n this._swarmStreams.delete({ topic, peerId });\n }\n\n // Subscribe to topics that are needed.\n for (const { topic, peerId } of this._joinedTopics.values()) {\n // Join desired topics.\n if (this._swarmStreams.has({ topic, peerId })) {\n continue;\n }\n\n const swarmStream = await asyncTimeout(\n cancelWithContext(this._connectionCtx!, client.join({ topic, peerId })),\n 5000,\n );\n // Subscribing to swarm events.\n // TODO(mykola): What happens when the swarm stream is closed? Maybe send leave event for each peer?\n swarmStream.subscribe(async (swarmEvent: SwarmEvent) => {\n log('swarm event', { swarmEvent });\n await this._onSwarmEvent({ topic, swarmEvent });\n });\n\n // Saving swarm stream.\n this._swarmStreams.set({ topic, peerId }, swarmStream);\n }\n }\n\n private async _reconcileMessageSubscriptions(): Promise<void> {\n await asyncTimeout(cancelWithContext(this._connectionCtx!, this._clientReady.wait()), 5_000);\n // Copy Client reference to avoid client change during the reconcile.\n const client = this._client!;\n invariant(this._state === SignalState.CONNECTED, 'Not connected to Signal Server');\n\n // Unsubscribe from messages that are no longer needed.\n for (const peerId of this._messageStreams.keys()) {\n // Join desired topics.\n if (this._subscribedMessages.has({ peerId })) {\n continue;\n }\n\n this._messageStreams.get(peerId)?.close();\n this._messageStreams.delete(peerId);\n }\n\n // Subscribe to messages that are needed.\n for (const { peerId } of this._subscribedMessages.values()) {\n if (this._messageStreams.has(peerId)) {\n continue;\n }\n\n const messageStream = await asyncTimeout(\n cancelWithContext(this._connectionCtx!, client.receiveMessages(peerId)),\n 5000,\n );\n messageStream.subscribe(async (message: SignalMessage) => {\n this._performance.receivedMessages++;\n await this._onMessage({\n author: PublicKey.from(message.author),\n recipient: PublicKey.from(message.recipient),\n payload: message.payload,\n });\n });\n\n // Saving message stream.\n this._messageStreams.set(peerId, messageStream);\n }\n }\n}\n", "//\n// Copyright 2022 DXOS.org\n//\n\nimport WebSocket from 'isomorphic-ws';\n\nimport { Trigger } from '@dxos/async';\nimport { Any, Stream } from '@dxos/codec-protobuf';\nimport { invariant } from '@dxos/invariant';\nimport { PublicKey } from '@dxos/keys';\nimport { log } from '@dxos/log';\nimport { schema, trace } from '@dxos/protocols';\nimport { Message as SignalMessage, Signal } from '@dxos/protocols/proto/dxos/mesh/signal';\nimport { createProtoRpcPeer, ProtoRpcPeer } from '@dxos/rpc';\n\ninterface Services {\n Signal: Signal;\n}\n\nexport type SignalCallbacks = {\n onConnected?: () => void;\n\n /**\n * Called on disconnect.\n * In case of error, `onError` will be called first and then `onDisconnected`.\n */\n onDisconnected?: () => void;\n\n onError?: (error: Error) => void;\n};\n\nexport type SignalRPCClientParams = {\n url: string;\n callbacks?: SignalCallbacks;\n};\n\nexport class SignalRPCClient {\n private _socket?: WebSocket;\n private _rpc?: ProtoRpcPeer<Services>;\n private readonly _connectTrigger = new Trigger();\n\n private _closed = false;\n\n private readonly _url: string;\n private readonly _callbacks: SignalCallbacks;\n\n constructor({ url, callbacks = {} }: SignalRPCClientParams) {\n const traceId = PublicKey.random().toHex();\n log.trace('dxos.mesh.signal-rpc-client.constructor', trace.begin({ id: traceId }));\n this._url = url;\n this._callbacks = callbacks;\n this._socket = new WebSocket(this._url);\n\n this._rpc = createProtoRpcPeer({\n requested: {\n Signal: schema.getService('dxos.mesh.signal.Signal'),\n },\n noHandshake: true,\n port: {\n send: (msg) => {\n if (this._closed) {\n // Do not send messages after close.\n return;\n }\n try {\n this._socket!.send(msg);\n } catch (err) {\n log.warn('send error', err);\n }\n },\n subscribe: (cb) => {\n this._socket!.onmessage = async (msg: WebSocket.MessageEvent) => {\n if (typeof Blob !== 'undefined' && msg.data instanceof Blob) {\n cb(Buffer.from(await msg.data.arrayBuffer()));\n } else {\n cb(msg.data as any);\n }\n };\n },\n },\n encodingOptions: {\n preserveAny: true,\n },\n });\n\n this._socket.onopen = async () => {\n try {\n await this._rpc!.open();\n log(`RPC open ${this._url}`);\n this._callbacks.onConnected?.();\n this._connectTrigger.wake();\n } catch (err: any) {\n this._callbacks.onError?.(err);\n }\n };\n\n this._socket.onclose = async () => {\n log(`Disconnected ${this._url}`);\n this._callbacks.onDisconnected?.();\n await this.close();\n };\n\n this._socket.onerror = async (event: WebSocket.ErrorEvent) => {\n if (this._closed) {\n // Ignore errors after close.\n return;\n }\n\n this._callbacks.onError?.(event.error ?? new Error(event.message));\n this._connectTrigger.reset();\n\n try {\n await this._rpc?.close();\n } catch (err) {\n log.catch(err);\n }\n this._closed = true;\n\n log.warn(event.message ?? 'Socket error', { url: this._url });\n };\n\n log.trace('dxos.mesh.signal-rpc-client.constructor', trace.end({ id: traceId }));\n }\n\n async close() {\n this._closed = true;\n try {\n await this._rpc?.close();\n this._socket?.close();\n } catch (err) {\n log.warn('close error', err);\n }\n }\n\n async join({ topic, peerId }: { topic: PublicKey; peerId: PublicKey }) {\n log('join', { topic, peerId });\n await this._connectTrigger.wait();\n invariant(!this._closed, 'SignalRPCClient is closed');\n invariant(this._rpc, 'Rpc is not initialized');\n const swarmStream = this._rpc.rpc.Signal.join({\n swarm: topic.asUint8Array(),\n peer: peerId.asUint8Array(),\n });\n await swarmStream.waitUntilReady();\n return swarmStream;\n }\n\n async receiveMessages(peerId: PublicKey): Promise<Stream<SignalMessage>> {\n log('receiveMessages', { peerId });\n invariant(!this._closed, 'SignalRPCClient is closed');\n await this._connectTrigger.wait();\n invariant(this._rpc, 'Rpc is not initialized');\n const messageStream = this._rpc.rpc.Signal.receiveMessages({\n peer: peerId.asUint8Array(),\n });\n await messageStream.waitUntilReady();\n return messageStream;\n }\n\n async sendMessage({ author, recipient, payload }: { author: PublicKey; recipient: PublicKey; payload: Any }) {\n log('sendMessage', { author, recipient, payload });\n invariant(!this._closed, 'SignalRPCClient is closed');\n await this._connectTrigger.wait();\n invariant(this._rpc, 'Rpc is not initialized');\n await this._rpc.rpc.Signal.sendMessage({\n author: author.asUint8Array(),\n recipient: recipient.asUint8Array(),\n payload,\n });\n }\n}\n", "//\n// Copyright 2020 DXOS.org\n//\n\nimport { Event, Trigger } from '@dxos/async';\nimport { Any } from '@dxos/codec-protobuf';\nimport { Context } from '@dxos/context';\nimport { invariant } from '@dxos/invariant';\nimport { PublicKey } from '@dxos/keys';\nimport { log } from '@dxos/log';\nimport { schema } from '@dxos/protocols';\nimport { SwarmEvent } from '@dxos/protocols/proto/dxos/mesh/signal';\nimport { ComplexMap, ComplexSet } from '@dxos/util';\n\nimport { CommandTrace, SignalStatus } from '../signal-client';\nimport { SignalManager } from './signal-manager';\n\n/**\n * Common signaling context that connects multiple MemorySignalManager instances.\n */\nexport class MemorySignalManagerContext {\n // Swarm messages.\n readonly swarmEvent = new Event<{\n topic: PublicKey;\n swarmEvent: SwarmEvent;\n }>();\n\n // Mapping from topic to set of peers.\n readonly swarms = new ComplexMap<PublicKey, ComplexSet<PublicKey>>(PublicKey.hash);\n\n // Map of connections for each peer for signaling.\n readonly connections = new ComplexMap<PublicKey, MemorySignalManager>(PublicKey.hash);\n}\n\n/**\n * In memory signal manager for testing.\n */\nexport class MemorySignalManager implements SignalManager {\n readonly statusChanged = new Event<SignalStatus[]>();\n readonly commandTrace = new Event<CommandTrace>();\n readonly swarmEvent = new Event<{\n topic: PublicKey;\n swarmEvent: SwarmEvent;\n }>();\n\n readonly onMessage = new Event<{\n author: PublicKey;\n recipient: PublicKey;\n payload: Any;\n }>();\n\n /** Will be used to emit SwarmEvents on .open() and .close() */\n private _joinedSwarms = new ComplexSet<{ topic: PublicKey; peerId: PublicKey }>(\n ({ topic, peerId }) => topic.toHex() + peerId.toHex(),\n );\n\n private _ctx!: Context;\n\n // TODO(dmaretskyi): Replace with callback.\n private readonly _freezeTrigger = new Trigger().wake();\n\n // prettier-ignore\n constructor(\n private readonly _context: MemorySignalManagerContext\n ) {\n this._ctx = new Context();\n\n this._ctx.onDispose(this._context.swarmEvent.on((data) => this.swarmEvent.emit(data)));\n }\n\n async open() {\n if (!this._ctx.disposed) {\n return;\n }\n this._ctx = new Context();\n this._ctx.onDispose(this._context.swarmEvent.on((data) => this.swarmEvent.emit(data)));\n\n await Promise.all([...this._joinedSwarms.values()].map((value) => this.join(value)));\n }\n\n async close() {\n if (this._ctx.disposed) {\n return;\n }\n // save copy of joined swarms.\n const joinedSwarmsCopy = new ComplexSet<{ topic: PublicKey; peerId: PublicKey }>(\n ({ topic, peerId }) => topic.toHex() + peerId.toHex(),\n [...this._joinedSwarms.values()],\n );\n\n await Promise.all([...this._joinedSwarms.values()].map((value) => this.leave(value)));\n\n // assign joined swarms back because .leave() deletes it.\n this._joinedSwarms = joinedSwarmsCopy;\n\n await this._ctx.dispose();\n }\n\n getStatus(): SignalStatus[] {\n return [];\n }\n\n async join({ topic, peerId }: { topic: PublicKey; peerId: PublicKey }) {\n invariant(!this._ctx.disposed, 'Closed');\n\n this._joinedSwarms.add({ topic, peerId });\n\n if (!this._context.swarms.has(topic)) {\n this._context.swarms.set(topic, new ComplexSet(PublicKey.hash));\n }\n\n this._context.swarms.get(topic)!.add(peerId);\n this._context.swarmEvent.emit({\n topic,\n swarmEvent: {\n peerAvailable: {\n peer: peerId.asUint8Array(),\n since: new Date(),\n },\n },\n });\n\n // Emitting swarm events for each peer.\n for (const [topic, peerIds] of this._context.swarms) {\n Array.from(peerIds).forEach((peerId) => {\n this.swarmEvent.emit({\n topic,\n swarmEvent: {\n peerAvailable: {\n peer: peerId.asUint8Array(),\n since: new Date(),\n },\n },\n });\n });\n }\n }\n\n async leave({ topic, peerId }: { topic: PublicKey; peerId: PublicKey }) {\n invariant(!this._ctx.disposed, 'Closed');\n\n this._joinedSwarms.delete({ topic, peerId });\n\n if (!this._context.swarms.has(topic)) {\n this._context.swarms.set(topic, new ComplexSet(PublicKey.hash));\n }\n\n this._context.swarms.get(topic)!.delete(peerId);\n\n const swarmEvent: SwarmEvent = {\n peerLeft: {\n peer: peerId.asUint8Array(),\n },\n };\n\n this._context.swarmEvent.emit({ topic, swarmEvent });\n }\n\n async sendMessage({ author, recipient, payload }: { author: PublicKey; recipient: PublicKey; payload: Any }) {\n log('send message', { author, recipient, ...dec(payload) });\n\n invariant(recipient);\n invariant(!this._ctx.disposed, 'Closed');\n\n await this._freezeTrigger.wait();\n\n const remote = this._context.connections.get(recipient);\n if (!remote) {\n log.warn('recipient is not subscribed for messages', { author, recipient });\n return;\n }\n\n if (remote._ctx.disposed) {\n log.warn('recipient is disposed', { author, recipient });\n return;\n }\n\n remote._freezeTrigger\n .wait()\n .then(() => {\n if (remote._ctx.disposed) {\n log.warn('recipient is disposed', { author, recipient });\n return;\n }\n\n log('receive message', { author, recipient, ...dec(payload) });\n\n remote.onMessage.emit({ author, recipient, payload });\n })\n .catch((err) => {\n log.error('error while waiting for freeze', { err });\n });\n }\n\n async subscribeMessages(peerId: PublicKey) {\n log('subscribing', { peerId });\n this._context.connections.set(peerId, this);\n }\n\n async unsubscribeMessages(peerId: PublicKey) {\n log('unsubscribing', { peerId });\n this._context.connections.delete(peerId);\n }\n\n freeze() {\n this._freezeTrigger.reset();\n }\n\n unfreeze() {\n this._freezeTrigger.wake();\n }\n}\nconst dec = (payload: Any) => {\n if (!payload.type_url.endsWith('ReliablePayload')) {\n return {};\n }\n\n const relPayload = schema.getCodecForType('dxos.mesh.messaging.ReliablePayload').decode(payload.value);\n\n if (typeof relPayload?.payload?.data === 'object') {\n return { payload: Object.keys(relPayload?.payload?.data)[0], sessionId: relPayload?.payload?.sessionId };\n }\n\n return {};\n};\n", "//\n// Copyright 2020 DXOS.org\n//\n\nimport { Event, synchronized } from '@dxos/async';\nimport { Any } from '@dxos/codec-protobuf';\nimport { Context } from '@dxos/context';\nimport { invariant } from '@dxos/invariant';\nimport { PublicKey } from '@dxos/keys';\nimport { log } from '@dxos/log';\nimport { trace } from '@dxos/protocols';\nimport { Runtime } from '@dxos/protocols/proto/dxos/config';\nimport { SwarmEvent } from '@dxos/protocols/proto/dxos/mesh/signal';\n\nimport { CommandTrace, SignalClient, SignalStatus } from '../signal-client';\nimport { SignalManager } from './signal-manager';\n\n/**\n * Manages connection to multiple Signal Servers over WebSocket\n */\nexport class WebsocketSignalManager implements SignalManager {\n private readonly _servers = new Map<string, SignalClient>();\n\n private _ctx!: Context;\n private _opened = false;\n\n readonly statusChanged = new Event<SignalStatus[]>();\n readonly commandTrace = new Event<CommandTrace>();\n readonly swarmEvent = new Event<{\n topic: PublicKey;\n swarmEvent: SwarmEvent;\n }>();\n\n readonly onMessage = new Event<{\n author: PublicKey;\n recipient: PublicKey;\n payload: Any;\n }>();\n\n private readonly _instanceId = PublicKey.random().toHex();\n\n // prettier-ignore\n constructor(\n private readonly _hosts: Runtime.Services.Signal[]\n ) {\n log('Created WebsocketSignalManager', { hosts: this._hosts });\n for (const host of this._hosts) {\n if (this._servers.has(host.server)) {\n continue;\n }\n const server = new SignalClient(\n host.server,\n async (message) => this.onMessage.emit(message),\n async (data) => this.swarmEvent.emit(data)\n );\n server.statusChanged.on(() => this.statusChanged.emit(this.getStatus()));\n\n this._servers.set(host.server, server);\n server.commandTrace.on((trace) => this.commandTrace.emit(trace));\n }\n }\n\n @synchronized\n async open() {\n if (this._opened) {\n return;\n }\n log('open signal manager', { hosts: this._hosts });\n log.trace('dxos.mesh.websocket-signal-manager.open', trace.begin({ id: this._instanceId }));\n\n this._initContext();\n\n [...this._servers.values()].forEach((server) => server.open());\n\n this._opened = true;\n log.trace('dxos.mesh.websocket-signal-manager.open', trace.end({ id: this._instanceId }));\n }\n\n async close() {\n if (!this._opened) {\n return;\n }\n this._opened = false;\n\n await this._ctx.dispose();\n\n await Promise.all(Array.from(this._servers.values()).map((server) => server.close()));\n }\n\n getStatus(): SignalStatus[] {\n return Array.from(this._servers.values()).map((server) => server.getStatus());\n }\n\n @synchronized\n async join({ topic, peerId }: { topic: PublicKey; peerId: PublicKey }) {\n log('Join', { topic, peerId });\n invariant(this._opened, 'Closed');\n await this._forEachServer((server) => server.join({ topic, peerId }));\n }\n\n @synchronized\n async leave({ topic, peerId }: { topic: PublicKey; peerId: PublicKey }) {\n log('leaving', { topic, peerId });\n invariant(this._opened, 'Closed');\n\n await this._forEachServer((server) => server.leave({ topic, peerId }));\n }\n\n async sendMessage({\n author,\n recipient,\n payload,\n }: {\n author: PublicKey;\n recipient: PublicKey;\n payload: Any;\n }): Promise<void> {\n log(`Signal ${recipient}`);\n invariant(this._opened, 'Closed');\n\n void this._forEachServer(async (server) => {\n void server.sendMessage({ author, recipient, payload }).catch((err) => log(err));\n });\n }\n\n async subscribeMessages(peerId: PublicKey) {\n log(`Subscribed for message stream peerId=${peerId}`);\n invariant(this._opened, 'Closed');\n\n await this._forEachServer(async (server) => server.subscribeMessages(peerId));\n }\n\n async unsubscribeMessages(peerId: PublicKey) {\n log(`Subscribed for message stream peerId=${peerId}`);\n invariant(this._opened, 'Closed');\n\n await this._forEachServer(async (server) => server.unsubscribeMessages(peerId));\n }\n\n private _initContext() {\n this._ctx = new Context({\n onError: (err) => log.catch(err),\n });\n }\n\n private async _forEachServer<ReturnType>(fn: (server: SignalClient) => Promise<ReturnType>): Promise<ReturnType[]> {\n return Promise.all(Array.from(this._servers.values()).map(fn));\n }\n}\n"],
5
- "mappings": "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",
5
+ "mappings": "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",
6
6
  "names": ["TimeoutError", "scheduleExponentialBackoffTaskInterval", "scheduleTask", "Context", "invariant", "PublicKey", "log", "schema", "trace", "ComplexMap", "ComplexSet", "MESSAGE_TIMEOUT", "ReliablePayload", "schema", "getCodecForType", "Acknowledgement", "Messenger", "constructor", "signalManager", "retryDelay", "_listeners", "ComplexMap", "peerId", "payloadType", "toHex", "_defaultListeners", "PublicKey", "hash", "_onAckCallbacks", "_receivedMessages", "ComplexSet", "key", "_closed", "_signalManager", "_retryDelay", "open", "traceId", "random", "log", "trace", "begin", "id", "_ctx", "Context", "onError", "err", "catch", "onDispose", "onMessage", "on", "message", "from", "author", "_handleMessage", "end", "close", "dispose", "sendMessage", "recipient", "payload", "invariant", "messageContext", "derive", "reliablePayload", "messageId", "has", "messageReceived", "timeoutHit", "promise", "Promise", "resolve", "reject", "scheduleExponentialBackoffTaskInterval", "_encodeAndSend", "scheduleTask", "delete", "TimeoutError", "MESSAGE_TIMEOUT", "set", "listen", "subscribeMessages", "listeners", "get", "Set", "add", "unsubscribe", "type_url", "value", "encode", "preserveAny", "_handleReliablePayload", "_handleAcknowledgement", "decode", "_sendAcknowledgement", "_callListeners", "to", "defaultListenerMap", "listener", "listenerMap", "DeferredTask", "Event", "Trigger", "asyncTimeout", "scheduleTask", "scheduleTaskInterval", "sleep", "Context", "cancelWithContext", "invariant", "PublicKey", "log", "trace", "SignalState", "ComplexMap", "ComplexSet", "WebSocket", "Trigger", "invariant", "PublicKey", "log", "schema", "trace", "createProtoRpcPeer", "SignalRPCClient", "constructor", "url", "callbacks", "_connectTrigger", "_closed", "traceId", "random", "toHex", "begin", "id", "_url", "_callbacks", "_socket", "_rpc", "requested", "Signal", "getService", "noHandshake", "port", "send", "msg", "err", "warn", "subscribe", "cb", "onmessage", "Blob", "data", "Buffer", "from", "arrayBuffer", "encodingOptions", "preserveAny", "onopen", "open", "onConnected", "wake", "onError", "onclose", "onDisconnected", "close", "onerror", "event", "error", "Error", "message", "reset", "catch", "end", "join", "topic", "peerId", "wait", "swarmStream", "rpc", "swarm", "asUint8Array", "peer", "waitUntilReady", "receiveMessages", "messageStream", "sendMessage", "author", "recipient", "payload", "DEFAULT_RECONNECT_TIMEOUT", "MAX_RECONNECT_TIMEOUT", "ERROR_RECONCILE_DELAY", "RECONCILE_INTERVAL", "SignalClient", "constructor", "_host", "_onMessage", "_onSwarmEvent", "_state", "SignalState", "CLOSED", "_reconnectAfter", "_connectionStarted", "Date", "_lastStateChange", "_clientReady", "Trigger", "statusChanged", "Event", "commandTrace", "_swarmStreams", "ComplexMap", "topic", "peerId", "toHex", "_joinedTopics", "ComplexSet", "_messageStreams", "key", "_subscribedMessages", "_reconciled", "_instanceId", "PublicKey", "random", "_performance", "sentMessages", "receivedMessages", "reconnectCounter", "joinCounter", "leaveCounter", "startsWith", "Error", "open", "log", "trace", "begin", "id", "CONNECTED", "CONNECTING", "includes", "_ctx", "Context", "onError", "err", "disposed", "warn", "_scheduleReconcileAfterError", "_reconcileTask", "DeferredTask", "_reconcileSwarmSubscriptions", "_reconcileMessageSubscriptions", "emit", "scheduleTaskInterval", "schedule", "_reconnectTask", "_reconnect", "_setState", "_createClient", "end", "close", "dispose", "reset", "_client", "undefined", "getStatus", "host", "state", "error", "_lastError", "message", "reconnectIn", "connectionStarted", "lastStateChange", "join", "add", "leave", "get", "delete", "sendMessage", "msg", "wait", "invariant", "subscribeMessages", "unsubscribeMessages", "scheduleTask", "newState", "status", "_connectionCtx", "derive", "onDispose", "Array", "from", "values", "forEach", "stream", "clear", "SignalRPCClient", "url", "callbacks", "onConnected", "wake", "onDisconnected", "ERROR", "DISCONNECTED", "_incrementReconnectTimeout", "Math", "min", "RECONNECTING", "catch", "cancelWithContext", "sleep", "asyncTimeout", "client", "keys", "has", "swarmStream", "subscribe", "swarmEvent", "set", "messageStream", "receiveMessages", "author", "recipient", "payload", "Event", "Trigger", "Context", "invariant", "PublicKey", "log", "schema", "ComplexMap", "ComplexSet", "MemorySignalManagerContext", "swarmEvent", "swarms", "hash", "connections", "MemorySignalManager", "constructor", "_context", "statusChanged", "commandTrace", "onMessage", "_joinedSwarms", "topic", "peerId", "toHex", "_freezeTrigger", "wake", "_ctx", "onDispose", "on", "data", "emit", "open", "disposed", "Promise", "all", "values", "map", "value", "join", "close", "joinedSwarmsCopy", "leave", "dispose", "getStatus", "add", "has", "set", "get", "peerAvailable", "peer", "asUint8Array", "since", "Date", "peerIds", "Array", "from", "forEach", "delete", "peerLeft", "sendMessage", "author", "recipient", "payload", "dec", "wait", "remote", "warn", "then", "catch", "err", "error", "subscribeMessages", "unsubscribeMessages", "freeze", "reset", "unfreeze", "type_url", "endsWith", "relPayload", "getCodecForType", "decode", "Object", "keys", "sessionId", "Event", "synchronized", "Context", "invariant", "PublicKey", "log", "trace", "WebsocketSignalManager", "constructor", "_hosts", "_servers", "Map", "_opened", "statusChanged", "Event", "commandTrace", "swarmEvent", "onMessage", "_instanceId", "PublicKey", "random", "toHex", "log", "hosts", "host", "has", "server", "SignalClient", "message", "emit", "data", "on", "getStatus", "set", "trace", "open", "begin", "id", "_initContext", "values", "forEach", "end", "close", "_ctx", "dispose", "Promise", "all", "Array", "from", "map", "join", "topic", "peerId", "invariant", "_forEachServer", "leave", "sendMessage", "author", "recipient", "payload", "catch", "err", "subscribeMessages", "unsubscribeMessages", "Context", "onError", "fn", "synchronized"]
7
7
  }
@@ -1 +1 @@
1
- {"inputs":{"packages/core/mesh/messaging/src/timeouts.ts":{"bytes":656,"imports":[]},"packages/core/mesh/messaging/src/messenger.ts":{"bytes":30612,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"packages/core/mesh/messaging/src/timeouts.ts","kind":"import-statement","original":"./timeouts"}]},"packages/core/mesh/messaging/src/signal-client/signal-rpc-client.ts":{"bytes":20028,"imports":[{"path":"isomorphic-ws","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/rpc","kind":"import-statement","external":true}]},"packages/core/mesh/messaging/src/signal-client/signal-client.ts":{"bytes":51940,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/protocols/proto/dxos/mesh/signal","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"packages/core/mesh/messaging/src/signal-client/signal-rpc-client.ts","kind":"import-statement","original":"./signal-rpc-client"}]},"packages/core/mesh/messaging/src/signal-client/index.ts":{"bytes":499,"imports":[{"path":"packages/core/mesh/messaging/src/signal-client/signal-client.ts","kind":"import-statement","original":"./signal-client"}]},"packages/core/mesh/messaging/src/signal-manager/memory-signal-manager.ts":{"bytes":24541,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true}]},"packages/core/mesh/messaging/src/signal-manager/signal-manager.ts":{"bytes":1268,"imports":[]},"packages/core/mesh/messaging/src/signal-manager/websocket-signal-manager.ts":{"bytes":18581,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"packages/core/mesh/messaging/src/signal-client/index.ts","kind":"import-statement","original":"../signal-client"}]},"packages/core/mesh/messaging/src/signal-manager/index.ts":{"bytes":750,"imports":[{"path":"packages/core/mesh/messaging/src/signal-manager/memory-signal-manager.ts","kind":"import-statement","original":"./memory-signal-manager"},{"path":"packages/core/mesh/messaging/src/signal-manager/signal-manager.ts","kind":"import-statement","original":"./signal-manager"},{"path":"packages/core/mesh/messaging/src/signal-manager/websocket-signal-manager.ts","kind":"import-statement","original":"./websocket-signal-manager"}]},"packages/core/mesh/messaging/src/signal-methods.ts":{"bytes":1621,"imports":[]},"packages/core/mesh/messaging/src/index.ts":{"bytes":782,"imports":[{"path":"packages/core/mesh/messaging/src/messenger.ts","kind":"import-statement","original":"./messenger"},{"path":"packages/core/mesh/messaging/src/signal-client/index.ts","kind":"import-statement","original":"./signal-client"},{"path":"packages/core/mesh/messaging/src/signal-manager/index.ts","kind":"import-statement","original":"./signal-manager"},{"path":"packages/core/mesh/messaging/src/signal-methods.ts","kind":"import-statement","original":"./signal-methods"}]}},"outputs":{"packages/core/mesh/messaging/dist/lib/browser/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":67195},"packages/core/mesh/messaging/dist/lib/browser/index.mjs":{"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/protocols/proto/dxos/mesh/signal","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"isomorphic-ws","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/rpc","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true}],"exports":["MemorySignalManager","MemorySignalManagerContext","Messenger","SignalClient","WebsocketSignalManager"],"entryPoint":"packages/core/mesh/messaging/src/index.ts","inputs":{"packages/core/mesh/messaging/src/messenger.ts":{"bytesInOutput":8741},"packages/core/mesh/messaging/src/timeouts.ts":{"bytesInOutput":27},"packages/core/mesh/messaging/src/index.ts":{"bytesInOutput":0},"packages/core/mesh/messaging/src/signal-client/signal-client.ts":{"bytesInOutput":13837},"packages/core/mesh/messaging/src/signal-client/signal-rpc-client.ts":{"bytesInOutput":6401},"packages/core/mesh/messaging/src/signal-client/index.ts":{"bytesInOutput":0},"packages/core/mesh/messaging/src/signal-manager/memory-signal-manager.ts":{"bytesInOutput":6841},"packages/core/mesh/messaging/src/signal-manager/index.ts":{"bytesInOutput":0},"packages/core/mesh/messaging/src/signal-manager/websocket-signal-manager.ts":{"bytesInOutput":6027}},"bytes":42575}}}
1
+ {"inputs":{"packages/core/mesh/messaging/src/timeouts.ts":{"bytes":656,"imports":[],"format":"esm"},"packages/core/mesh/messaging/src/messenger.ts":{"bytes":30612,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"packages/core/mesh/messaging/src/timeouts.ts","kind":"import-statement","original":"./timeouts"}],"format":"esm"},"packages/core/mesh/messaging/src/signal-client/signal-rpc-client.ts":{"bytes":20028,"imports":[{"path":"isomorphic-ws","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/rpc","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/messaging/src/signal-client/signal-client.ts":{"bytes":51940,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/protocols/proto/dxos/mesh/signal","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"packages/core/mesh/messaging/src/signal-client/signal-rpc-client.ts","kind":"import-statement","original":"./signal-rpc-client"}],"format":"esm"},"packages/core/mesh/messaging/src/signal-client/index.ts":{"bytes":499,"imports":[{"path":"packages/core/mesh/messaging/src/signal-client/signal-client.ts","kind":"import-statement","original":"./signal-client"}],"format":"esm"},"packages/core/mesh/messaging/src/signal-manager/memory-signal-manager.ts":{"bytes":24541,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/messaging/src/signal-manager/signal-manager.ts":{"bytes":1268,"imports":[],"format":"esm"},"packages/core/mesh/messaging/src/signal-manager/websocket-signal-manager.ts":{"bytes":18581,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"packages/core/mesh/messaging/src/signal-client/index.ts","kind":"import-statement","original":"../signal-client"}],"format":"esm"},"packages/core/mesh/messaging/src/signal-manager/index.ts":{"bytes":750,"imports":[{"path":"packages/core/mesh/messaging/src/signal-manager/memory-signal-manager.ts","kind":"import-statement","original":"./memory-signal-manager"},{"path":"packages/core/mesh/messaging/src/signal-manager/signal-manager.ts","kind":"import-statement","original":"./signal-manager"},{"path":"packages/core/mesh/messaging/src/signal-manager/websocket-signal-manager.ts","kind":"import-statement","original":"./websocket-signal-manager"}],"format":"esm"},"packages/core/mesh/messaging/src/signal-methods.ts":{"bytes":1621,"imports":[],"format":"esm"},"packages/core/mesh/messaging/src/index.ts":{"bytes":782,"imports":[{"path":"packages/core/mesh/messaging/src/messenger.ts","kind":"import-statement","original":"./messenger"},{"path":"packages/core/mesh/messaging/src/signal-client/index.ts","kind":"import-statement","original":"./signal-client"},{"path":"packages/core/mesh/messaging/src/signal-manager/index.ts","kind":"import-statement","original":"./signal-manager"},{"path":"packages/core/mesh/messaging/src/signal-methods.ts","kind":"import-statement","original":"./signal-methods"}],"format":"esm"}},"outputs":{"packages/core/mesh/messaging/dist/lib/browser/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":67066},"packages/core/mesh/messaging/dist/lib/browser/index.mjs":{"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/protocols/proto/dxos/mesh/signal","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"isomorphic-ws","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/rpc","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true}],"exports":["MemorySignalManager","MemorySignalManagerContext","Messenger","SignalClient","WebsocketSignalManager"],"entryPoint":"packages/core/mesh/messaging/src/index.ts","inputs":{"packages/core/mesh/messaging/src/messenger.ts":{"bytesInOutput":8702},"packages/core/mesh/messaging/src/timeouts.ts":{"bytesInOutput":27},"packages/core/mesh/messaging/src/index.ts":{"bytesInOutput":0},"packages/core/mesh/messaging/src/signal-client/signal-client.ts":{"bytesInOutput":13505},"packages/core/mesh/messaging/src/signal-client/signal-rpc-client.ts":{"bytesInOutput":6017},"packages/core/mesh/messaging/src/signal-client/index.ts":{"bytesInOutput":0},"packages/core/mesh/messaging/src/signal-manager/memory-signal-manager.ts":{"bytesInOutput":6682},"packages/core/mesh/messaging/src/signal-manager/index.ts":{"bytesInOutput":0},"packages/core/mesh/messaging/src/signal-manager/websocket-signal-manager.ts":{"bytesInOutput":6027}},"bytes":41661}}}
@@ -308,7 +308,6 @@ var Messenger = class {
308
308
  });
309
309
  }
310
310
  async _handleAcknowledgement({ payload }) {
311
- var _a;
312
311
  (0, import_invariant.invariant)(payload.type_url === "dxos.mesh.messaging.Acknowledgement", void 0, {
313
312
  F: __dxlog_file,
314
313
  L: 236,
@@ -318,7 +317,7 @@ var Messenger = class {
318
317
  ""
319
318
  ]
320
319
  });
321
- (_a = this._onAckCallbacks.get(Acknowledgement.decode(payload.value).messageId)) == null ? void 0 : _a();
320
+ this._onAckCallbacks.get(Acknowledgement.decode(payload.value).messageId)?.();
322
321
  }
323
322
  async _sendAcknowledgement({ author, recipient, messageId }) {
324
323
  (0, import_log.log)("sending ACK", {
@@ -436,7 +435,6 @@ var SignalRPCClient = class {
436
435
  }
437
436
  });
438
437
  this._socket.onopen = async () => {
439
- var _a, _b, _c, _d;
440
438
  try {
441
439
  await this._rpc.open();
442
440
  (0, import_log2.log)(`RPC open ${this._url}`, void 0, {
@@ -445,32 +443,30 @@ var SignalRPCClient = class {
445
443
  S: this,
446
444
  C: (f, a) => f(...a)
447
445
  });
448
- (_b = (_a = this._callbacks).onConnected) == null ? void 0 : _b.call(_a);
446
+ this._callbacks.onConnected?.();
449
447
  this._connectTrigger.wake();
450
448
  } catch (err) {
451
- (_d = (_c = this._callbacks).onError) == null ? void 0 : _d.call(_c, err);
449
+ this._callbacks.onError?.(err);
452
450
  }
453
451
  };
454
452
  this._socket.onclose = async () => {
455
- var _a, _b;
456
453
  (0, import_log2.log)(`Disconnected ${this._url}`, void 0, {
457
454
  F: __dxlog_file2,
458
455
  L: 98,
459
456
  S: this,
460
457
  C: (f, a) => f(...a)
461
458
  });
462
- (_b = (_a = this._callbacks).onDisconnected) == null ? void 0 : _b.call(_a);
459
+ this._callbacks.onDisconnected?.();
463
460
  await this.close();
464
461
  };
465
462
  this._socket.onerror = async (event) => {
466
- var _a, _b, _c, _d, _e;
467
463
  if (this._closed) {
468
464
  return;
469
465
  }
470
- (_c = (_b = this._callbacks).onError) == null ? void 0 : _c.call(_b, (_a = event.error) != null ? _a : new Error(event.message));
466
+ this._callbacks.onError?.(event.error ?? new Error(event.message));
471
467
  this._connectTrigger.reset();
472
468
  try {
473
- await ((_d = this._rpc) == null ? void 0 : _d.close());
469
+ await this._rpc?.close();
474
470
  } catch (err) {
475
471
  import_log2.log.catch(err, void 0, {
476
472
  F: __dxlog_file2,
@@ -480,7 +476,7 @@ var SignalRPCClient = class {
480
476
  });
481
477
  }
482
478
  this._closed = true;
483
- import_log2.log.warn((_e = event.message) != null ? _e : "Socket error", {
479
+ import_log2.log.warn(event.message ?? "Socket error", {
484
480
  url: this._url
485
481
  }, {
486
482
  F: __dxlog_file2,
@@ -499,11 +495,10 @@ var SignalRPCClient = class {
499
495
  });
500
496
  }
501
497
  async close() {
502
- var _a, _b;
503
498
  this._closed = true;
504
499
  try {
505
- await ((_a = this._rpc) == null ? void 0 : _a.close());
506
- (_b = this._socket) == null ? void 0 : _b.close();
500
+ await this._rpc?.close();
501
+ this._socket?.close();
507
502
  } catch (err) {
508
503
  import_log2.log.warn("close error", err, {
509
504
  F: __dxlog_file2,
@@ -638,8 +633,8 @@ var SignalClient = class {
638
633
  this._onSwarmEvent = _onSwarmEvent;
639
634
  this._state = import_signal.SignalState.CLOSED;
640
635
  this._reconnectAfter = DEFAULT_RECONNECT_TIMEOUT;
641
- this._connectionStarted = new Date();
642
- this._lastStateChange = new Date();
636
+ this._connectionStarted = /* @__PURE__ */ new Date();
637
+ this._lastStateChange = /* @__PURE__ */ new Date();
643
638
  this._clientReady = new import_async3.Trigger();
644
639
  this.statusChanged = new import_async3.Event();
645
640
  this.commandTrace = new import_async3.Event();
@@ -677,8 +672,7 @@ var SignalClient = class {
677
672
  }
678
673
  this._ctx = new import_context2.Context({
679
674
  onError: (err) => {
680
- var _a;
681
- if (this._state === import_signal.SignalState.CLOSED || ((_a = this._ctx) == null ? void 0 : _a.disposed)) {
675
+ if (this._state === import_signal.SignalState.CLOSED || this._ctx?.disposed) {
682
676
  return;
683
677
  }
684
678
  if (this._state === import_signal.SignalState.CONNECTED) {
@@ -717,7 +711,6 @@ var SignalClient = class {
717
711
  });
718
712
  }
719
713
  async close() {
720
- var _a, _b;
721
714
  (0, import_log3.log)("closing...", void 0, {
722
715
  F: __dxlog_file3,
723
716
  L: 180,
@@ -729,9 +722,9 @@ var SignalClient = class {
729
722
  ].includes(this._state)) {
730
723
  return;
731
724
  }
732
- await ((_a = this._ctx) == null ? void 0 : _a.dispose());
725
+ await this._ctx?.dispose();
733
726
  this._clientReady.reset();
734
- await ((_b = this._client) == null ? void 0 : _b.close());
727
+ await this._client?.close();
735
728
  this._client = void 0;
736
729
  this._setState(import_signal.SignalState.CLOSED);
737
730
  (0, import_log3.log)("closed", void 0, {
@@ -742,11 +735,10 @@ var SignalClient = class {
742
735
  });
743
736
  }
744
737
  getStatus() {
745
- var _a;
746
738
  return {
747
739
  host: this._host,
748
740
  state: this._state,
749
- error: (_a = this._lastError) == null ? void 0 : _a.message,
741
+ error: this._lastError?.message,
750
742
  reconnectIn: this._reconnectAfter,
751
743
  connectionStarted: this._connectionStarted,
752
744
  lastStateChange: this._lastStateChange
@@ -770,7 +762,6 @@ var SignalClient = class {
770
762
  this._reconcileTask.schedule();
771
763
  }
772
764
  async leave({ topic, peerId }) {
773
- var _a;
774
765
  this._performance.leaveCounter++;
775
766
  (0, import_log3.log)("leaving", {
776
767
  topic,
@@ -781,10 +772,10 @@ var SignalClient = class {
781
772
  S: this,
782
773
  C: (f, a) => f(...a)
783
774
  });
784
- (_a = this._swarmStreams.get({
775
+ this._swarmStreams.get({
785
776
  topic,
786
777
  peerId
787
- })) == null ? void 0 : _a.close();
778
+ })?.close();
788
779
  this._swarmStreams.delete({
789
780
  topic,
790
781
  peerId
@@ -823,7 +814,6 @@ var SignalClient = class {
823
814
  this._reconcileTask.schedule();
824
815
  }
825
816
  async unsubscribeMessages(peerId) {
826
- var _a;
827
817
  (0, import_log3.log)("unsubscribing from messages", {
828
818
  peerId
829
819
  }, {
@@ -835,7 +825,7 @@ var SignalClient = class {
835
825
  this._subscribedMessages.delete({
836
826
  peerId
837
827
  });
838
- (_a = this._messageStreams.get(peerId)) == null ? void 0 : _a.close();
828
+ this._messageStreams.get(peerId)?.close();
839
829
  this._messageStreams.delete(peerId);
840
830
  }
841
831
  _scheduleReconcileAfterError() {
@@ -845,7 +835,7 @@ var SignalClient = class {
845
835
  }
846
836
  _setState(newState) {
847
837
  this._state = newState;
848
- this._lastStateChange = new Date();
838
+ this._lastStateChange = /* @__PURE__ */ new Date();
849
839
  (0, import_log3.log)("signal state changed", {
850
840
  status: this.getStatus()
851
841
  }, {
@@ -875,7 +865,7 @@ var SignalClient = class {
875
865
  "'Client already created'"
876
866
  ]
877
867
  });
878
- this._connectionStarted = new Date();
868
+ this._connectionStarted = /* @__PURE__ */ new Date();
879
869
  this._connectionCtx = this._ctx.derive();
880
870
  this._connectionCtx.onDispose(() => {
881
871
  (0, import_log3.log)("connection context disposed", void 0, {
@@ -958,7 +948,6 @@ var SignalClient = class {
958
948
  this._reconnectAfter = Math.min(this._reconnectAfter, MAX_RECONNECT_TIMEOUT);
959
949
  }
960
950
  async _reconnect() {
961
- var _a, _b;
962
951
  (0, import_log3.log)(`reconnecting in ${this._reconnectAfter}ms`, {
963
952
  state: this._state
964
953
  }, {
@@ -981,8 +970,8 @@ var SignalClient = class {
981
970
  return;
982
971
  }
983
972
  this._clientReady.reset();
984
- await ((_a = this._connectionCtx) == null ? void 0 : _a.dispose());
985
- (_b = this._client) == null ? void 0 : _b.close().catch(() => {
973
+ await this._connectionCtx?.dispose();
974
+ this._client?.close().catch(() => {
986
975
  });
987
976
  this._client = void 0;
988
977
  await (0, import_context2.cancelWithContext)(this._ctx, (0, import_async3.sleep)(this._reconnectAfter));
@@ -990,7 +979,6 @@ var SignalClient = class {
990
979
  this._createClient();
991
980
  }
992
981
  async _reconcileSwarmSubscriptions() {
993
- var _a;
994
982
  await (0, import_async3.asyncTimeout)((0, import_context2.cancelWithContext)(this._connectionCtx, this._clientReady.wait()), 5e3);
995
983
  const client = this._client;
996
984
  (0, import_invariant3.invariant)(this._state === import_signal.SignalState.CONNECTED, "Not connected to Signal Server", {
@@ -1009,10 +997,10 @@ var SignalClient = class {
1009
997
  })) {
1010
998
  continue;
1011
999
  }
1012
- (_a = this._swarmStreams.get({
1000
+ this._swarmStreams.get({
1013
1001
  topic,
1014
1002
  peerId
1015
- })) == null ? void 0 : _a.close();
1003
+ })?.close();
1016
1004
  this._swarmStreams.delete({
1017
1005
  topic,
1018
1006
  peerId
@@ -1050,7 +1038,6 @@ var SignalClient = class {
1050
1038
  }
1051
1039
  }
1052
1040
  async _reconcileMessageSubscriptions() {
1053
- var _a;
1054
1041
  await (0, import_async3.asyncTimeout)((0, import_context2.cancelWithContext)(this._connectionCtx, this._clientReady.wait()), 5e3);
1055
1042
  const client = this._client;
1056
1043
  (0, import_invariant3.invariant)(this._state === import_signal.SignalState.CONNECTED, "Not connected to Signal Server", {
@@ -1068,7 +1055,7 @@ var SignalClient = class {
1068
1055
  })) {
1069
1056
  continue;
1070
1057
  }
1071
- (_a = this._messageStreams.get(peerId)) == null ? void 0 : _a.close();
1058
+ this._messageStreams.get(peerId)?.close();
1072
1059
  this._messageStreams.delete(peerId);
1073
1060
  }
1074
1061
  for (const { peerId } of this._subscribedMessages.values()) {
@@ -1170,7 +1157,7 @@ var MemorySignalManager = class {
1170
1157
  swarmEvent: {
1171
1158
  peerAvailable: {
1172
1159
  peer: peerId.asUint8Array(),
1173
- since: new Date()
1160
+ since: /* @__PURE__ */ new Date()
1174
1161
  }
1175
1162
  }
1176
1163
  });
@@ -1181,7 +1168,7 @@ var MemorySignalManager = class {
1181
1168
  swarmEvent: {
1182
1169
  peerAvailable: {
1183
1170
  peer: peerId2.asUint8Array(),
1184
- since: new Date()
1171
+ since: /* @__PURE__ */ new Date()
1185
1172
  }
1186
1173
  }
1187
1174
  });
@@ -1340,15 +1327,14 @@ var MemorySignalManager = class {
1340
1327
  }
1341
1328
  };
1342
1329
  var dec = (payload) => {
1343
- var _a, _b, _c;
1344
1330
  if (!payload.type_url.endsWith("ReliablePayload")) {
1345
1331
  return {};
1346
1332
  }
1347
1333
  const relPayload = import_protocols4.schema.getCodecForType("dxos.mesh.messaging.ReliablePayload").decode(payload.value);
1348
- if (typeof ((_a = relPayload == null ? void 0 : relPayload.payload) == null ? void 0 : _a.data) === "object") {
1334
+ if (typeof relPayload?.payload?.data === "object") {
1349
1335
  return {
1350
- payload: Object.keys((_b = relPayload == null ? void 0 : relPayload.payload) == null ? void 0 : _b.data)[0],
1351
- sessionId: (_c = relPayload == null ? void 0 : relPayload.payload) == null ? void 0 : _c.sessionId
1336
+ payload: Object.keys(relPayload?.payload?.data)[0],
1337
+ sessionId: relPayload?.payload?.sessionId
1352
1338
  };
1353
1339
  }
1354
1340
  return {};
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../../src/index.ts", "../../../src/messenger.ts", "../../../src/timeouts.ts", "../../../src/signal-client/signal-client.ts", "../../../src/signal-client/signal-rpc-client.ts", "../../../src/signal-manager/memory-signal-manager.ts", "../../../src/signal-manager/websocket-signal-manager.ts"],
4
4
  "sourcesContent": ["//\n// Copyright 2022 DXOS.org\n//\n\nexport * from './messenger';\nexport * from './signal-client';\nexport * from './signal-manager';\nexport * from './signal-methods';\n", "//\n// Copyright 2022 DXOS.org\n//\n\nimport { TimeoutError, scheduleExponentialBackoffTaskInterval, scheduleTask } from '@dxos/async';\nimport { Any } from '@dxos/codec-protobuf';\nimport { Context } from '@dxos/context';\nimport { invariant } from '@dxos/invariant';\nimport { PublicKey } from '@dxos/keys';\nimport { log } from '@dxos/log';\nimport { schema, trace } from '@dxos/protocols';\nimport { ReliablePayload } from '@dxos/protocols/proto/dxos/mesh/messaging';\nimport { ComplexMap, ComplexSet } from '@dxos/util';\n\nimport { SignalManager } from './signal-manager';\nimport { Message } from './signal-methods';\nimport { MESSAGE_TIMEOUT } from './timeouts';\n\nexport type OnMessage = (params: { author: PublicKey; recipient: PublicKey; payload: Any }) => Promise<void>;\n\nexport interface MessengerOptions {\n signalManager: SignalManager;\n retryDelay?: number;\n}\n\nconst ReliablePayload = schema.getCodecForType('dxos.mesh.messaging.ReliablePayload');\nconst Acknowledgement = schema.getCodecForType('dxos.mesh.messaging.Acknowledgement');\n\n/**\n * Reliable messenger that works trough signal network.\n */\nexport class Messenger {\n private readonly _signalManager: SignalManager;\n // { peerId, payloadType } => listeners set\n private readonly _listeners = new ComplexMap<{ peerId: PublicKey; payloadType: string }, Set<OnMessage>>(\n ({ peerId, payloadType }) => peerId.toHex() + payloadType,\n );\n\n // peerId => listeners set\n private readonly _defaultListeners = new ComplexMap<PublicKey, Set<OnMessage>>(PublicKey.hash);\n\n private readonly _onAckCallbacks = new ComplexMap<PublicKey, () => void>(PublicKey.hash);\n\n private readonly _receivedMessages = new ComplexSet<PublicKey>((key) => key.toHex());\n\n private _ctx!: Context;\n private _closed = true;\n private readonly _retryDelay: number;\n\n constructor({ signalManager, retryDelay = 300 }: MessengerOptions) {\n this._signalManager = signalManager;\n this._retryDelay = retryDelay;\n\n this.open();\n }\n\n open() {\n if (!this._closed) {\n return;\n }\n const traceId = PublicKey.random().toHex();\n log.trace('dxos.mesh.messenger.open', trace.begin({ id: traceId }));\n this._ctx = new Context({\n onError: (err) => log.catch(err),\n });\n this._ctx.onDispose(\n this._signalManager.onMessage.on(async (message) => {\n log('received message', { from: message.author });\n await this._handleMessage(message);\n }),\n );\n this._closed = false;\n log.trace('dxos.mesh.messenger.open', trace.end({ id: traceId }));\n }\n\n async close() {\n if (this._closed) {\n return;\n }\n this._closed = true;\n await this._ctx.dispose();\n }\n\n async sendMessage({ author, recipient, payload }: Message): Promise<void> {\n invariant(!this._closed, 'Closed');\n const messageContext = this._ctx.derive();\n\n const reliablePayload: ReliablePayload = {\n messageId: PublicKey.random(),\n payload,\n };\n invariant(!this._onAckCallbacks.has(reliablePayload.messageId!));\n log('send message', { messageId: reliablePayload.messageId, author, recipient });\n\n let messageReceived: () => void;\n let timeoutHit: (err: Error) => void;\n\n const promise = new Promise<void>((resolve, reject) => {\n messageReceived = resolve;\n timeoutHit = reject;\n });\n\n // Setting retry interval if signal was not acknowledged.\n scheduleExponentialBackoffTaskInterval(\n messageContext,\n async () => {\n log('retrying message', { messageId: reliablePayload.messageId });\n await this._encodeAndSend({ author, recipient, reliablePayload }).catch((err) =>\n log('failed to send message', { err }),\n );\n },\n this._retryDelay,\n );\n\n scheduleTask(\n messageContext,\n () => {\n log('message not delivered', { messageId: reliablePayload.messageId });\n this._onAckCallbacks.delete(reliablePayload.messageId!);\n timeoutHit(new TimeoutError(MESSAGE_TIMEOUT, 'Message not delivered'));\n void messageContext.dispose();\n },\n MESSAGE_TIMEOUT,\n );\n\n this._onAckCallbacks.set(reliablePayload.messageId, () => {\n messageReceived();\n this._onAckCallbacks.delete(reliablePayload.messageId!);\n void messageContext.dispose();\n });\n\n await this._encodeAndSend({ author, recipient, reliablePayload });\n\n return promise;\n }\n\n /**\n * Subscribes onMessage function to messages that contains payload with payloadType.\n * @param payloadType if not specified, onMessage will be subscribed to all types of messages.\n */\n async listen({\n peerId,\n payloadType,\n onMessage,\n }: {\n peerId: PublicKey;\n payloadType?: string;\n onMessage: OnMessage;\n }): Promise<ListeningHandle> {\n invariant(!this._closed, 'Closed');\n\n await this._signalManager.subscribeMessages(peerId);\n let listeners: Set<OnMessage> | undefined;\n\n if (!payloadType) {\n listeners = this._defaultListeners.get(peerId);\n if (!listeners) {\n listeners = new Set();\n this._defaultListeners.set(peerId, listeners);\n }\n } else {\n listeners = this._listeners.get({ peerId, payloadType });\n if (!listeners) {\n listeners = new Set();\n this._listeners.set({ peerId, payloadType }, listeners);\n }\n }\n\n listeners.add(onMessage);\n\n return {\n unsubscribe: async () => {\n listeners!.delete(onMessage);\n },\n };\n }\n\n private async _encodeAndSend({\n author,\n recipient,\n reliablePayload,\n }: {\n author: PublicKey;\n recipient: PublicKey;\n reliablePayload: ReliablePayload;\n }): Promise<void> {\n await this._signalManager.sendMessage({\n author,\n recipient,\n payload: {\n type_url: 'dxos.mesh.messaging.ReliablePayload',\n value: ReliablePayload.encode(reliablePayload, { preserveAny: true }),\n },\n });\n }\n\n private async _handleMessage(message: Message): Promise<void> {\n switch (message.payload.type_url) {\n case 'dxos.mesh.messaging.ReliablePayload': {\n await this._handleReliablePayload(message);\n break;\n }\n case 'dxos.mesh.messaging.Acknowledgement': {\n await this._handleAcknowledgement({ payload: message.payload });\n break;\n }\n }\n }\n\n private async _handleReliablePayload({ author, recipient, payload }: Message) {\n invariant(payload.type_url === 'dxos.mesh.messaging.ReliablePayload');\n const reliablePayload: ReliablePayload = ReliablePayload.decode(payload.value, { preserveAny: true });\n\n log('handling message', { messageId: reliablePayload.messageId });\n\n await this._sendAcknowledgement({\n author,\n recipient,\n messageId: reliablePayload.messageId,\n });\n\n if (this._receivedMessages.has(reliablePayload.messageId!)) {\n return;\n }\n\n this._receivedMessages.add(reliablePayload.messageId!);\n\n await this._callListeners({\n author,\n recipient,\n payload: reliablePayload.payload,\n });\n }\n\n private async _handleAcknowledgement({ payload }: { payload: Any }) {\n invariant(payload.type_url === 'dxos.mesh.messaging.Acknowledgement');\n this._onAckCallbacks.get(Acknowledgement.decode(payload.value).messageId)?.();\n }\n\n private async _sendAcknowledgement({\n author,\n recipient,\n messageId,\n }: {\n author: PublicKey;\n recipient: PublicKey;\n messageId: PublicKey;\n }): Promise<void> {\n log('sending ACK', { messageId, from: recipient, to: author });\n\n await this._signalManager.sendMessage({\n author: recipient,\n recipient: author,\n payload: {\n type_url: 'dxos.mesh.messaging.Acknowledgement',\n value: Acknowledgement.encode({ messageId }),\n },\n });\n }\n\n private async _callListeners(message: Message): Promise<void> {\n {\n const defaultListenerMap = this._defaultListeners.get(message.recipient);\n if (defaultListenerMap) {\n for (const listener of defaultListenerMap) {\n await listener(message);\n }\n }\n }\n\n {\n const listenerMap = this._listeners.get({\n peerId: message.recipient,\n payloadType: message.payload.type_url,\n });\n if (listenerMap) {\n for (const listener of listenerMap) {\n await listener(message);\n }\n }\n }\n }\n}\n\nexport interface ListeningHandle {\n unsubscribe: () => Promise<void>;\n}\n", "//\n// Copyright 2023 DXOS.org\n//\n\n/**\n * Timeout for retrying messages.\n */\nexport const MESSAGE_TIMEOUT = 10_000;\n", "//\n// Copyright 2020 DXOS.org\n//\n\nimport { DeferredTask, Event, Trigger, asyncTimeout, scheduleTask, scheduleTaskInterval, sleep } from '@dxos/async';\nimport { Any, Stream } from '@dxos/codec-protobuf';\nimport { Context, cancelWithContext } from '@dxos/context';\nimport { invariant } from '@dxos/invariant';\nimport { PublicKey } from '@dxos/keys';\nimport { log } from '@dxos/log';\nimport { trace } from '@dxos/protocols';\nimport { Message as SignalMessage, SignalState, SwarmEvent } from '@dxos/protocols/proto/dxos/mesh/signal';\nimport { ComplexMap, ComplexSet } from '@dxos/util';\n\nimport { Message, SignalMethods } from '../signal-methods';\nimport { SignalRPCClient } from './signal-rpc-client';\n\nconst DEFAULT_RECONNECT_TIMEOUT = 100;\nconst MAX_RECONNECT_TIMEOUT = 5000;\nconst ERROR_RECONCILE_DELAY = 1000;\nconst RECONCILE_INTERVAL = 5_000;\n\nexport type SignalStatus = {\n host: string;\n state: SignalState;\n error?: string;\n reconnectIn: number;\n connectionStarted: Date;\n lastStateChange: Date;\n};\n\nexport type CommandTrace = {\n messageId: string;\n host: string;\n incoming: boolean;\n time: number;\n method: string;\n payload: any;\n response?: any;\n error?: string;\n};\n\n/**\n * Establishes a websocket connection to signal server and provides RPC methods.\n */\nexport class SignalClient implements SignalMethods {\n private _state = SignalState.CLOSED;\n\n private _lastError?: Error;\n\n /**\n * Number of milliseconds after which the connection will be attempted again in case of error.\n */\n private _reconnectAfter = DEFAULT_RECONNECT_TIMEOUT;\n\n /**\n * Timestamp of when the connection attempt was began.\n */\n private _connectionStarted = new Date();\n\n /**\n * Timestamp of last state change.\n */\n private _lastStateChange = new Date();\n\n private _client?: SignalRPCClient;\n private readonly _clientReady = new Trigger();\n\n private _ctx?: Context;\n\n private _connectionCtx?: Context;\n\n private _reconcileTask?: DeferredTask;\n private _reconnectTask?: DeferredTask;\n\n readonly statusChanged = new Event<SignalStatus>();\n readonly commandTrace = new Event<CommandTrace>();\n\n /**\n * Swarm events streams. Keys represent actually joined topic and peerId.\n */\n private readonly _swarmStreams = new ComplexMap<{ topic: PublicKey; peerId: PublicKey }, Stream<SwarmEvent>>(\n ({ topic, peerId }) => topic.toHex() + peerId.toHex(),\n );\n\n /**\n * Represent desired joined topic and peerId.\n */\n private readonly _joinedTopics = new ComplexSet<{ topic: PublicKey; peerId: PublicKey }>(\n ({ topic, peerId }) => topic.toHex() + peerId.toHex(),\n );\n\n /**\n * Message streams. Keys represents actually subscribed peers.\n * @internal\n */\n public readonly _messageStreams = new ComplexMap<PublicKey, Stream<SignalMessage>>((key) => key.toHex());\n\n /**\n * Represent desired message subscriptions.\n */\n private readonly _subscribedMessages = new ComplexSet<{ peerId: PublicKey }>(({ peerId }) => peerId.toHex());\n\n /**\n * Event to use in tests to wait till subscription is successfully established.\n * @internal\n */\n public _reconciled = new Event();\n\n private readonly _instanceId = PublicKey.random().toHex();\n\n private readonly _performance = {\n sentMessages: 0,\n receivedMessages: 0,\n reconnectCounter: 0,\n joinCounter: 0,\n leaveCounter: 0,\n };\n\n /**\n * @param _host Signal server websocket URL.\n * @param _onMessage\n */\n constructor(\n private readonly _host: string,\n private readonly _onMessage: (params: { author: PublicKey; recipient: PublicKey; payload: Any }) => Promise<void>,\n private readonly _onSwarmEvent: (params: { topic: PublicKey; swarmEvent: SwarmEvent }) => Promise<void>,\n ) {\n if (!this._host.startsWith('wss://') && !this._host.startsWith('ws://')) {\n throw new Error(`Signal server requires a websocket URL. Provided: ${this._host}`);\n }\n }\n\n open() {\n log.trace('dxos.mesh.signal-client.open', trace.begin({ id: this._instanceId }));\n\n if ([SignalState.CONNECTED, SignalState.CONNECTING].includes(this._state)) {\n return;\n }\n\n this._ctx = new Context({\n onError: (err) => {\n if (this._state === SignalState.CLOSED || this._ctx?.disposed) {\n return;\n }\n if (this._state === SignalState.CONNECTED) {\n log.warn('SignalClient error:', err);\n }\n this._scheduleReconcileAfterError();\n },\n });\n\n this._reconcileTask = new DeferredTask(this._ctx, async () => {\n await this._reconcileSwarmSubscriptions();\n await this._reconcileMessageSubscriptions();\n this._reconciled.emit();\n });\n\n // Reconcile subscriptions periodically.\n scheduleTaskInterval(\n this._ctx,\n async () => {\n if (this._state === SignalState.CONNECTED) {\n this._reconcileTask!.schedule();\n }\n },\n RECONCILE_INTERVAL,\n );\n\n this._reconnectTask = new DeferredTask(this._ctx, async () => {\n await this._reconnect();\n });\n\n this._setState(SignalState.CONNECTING);\n this._createClient();\n log.trace('dxos.mesh.signal-client.open', trace.end({ id: this._instanceId }));\n }\n\n async close() {\n log('closing...');\n if ([SignalState.CLOSED].includes(this._state)) {\n return;\n }\n\n await this._ctx?.dispose();\n\n this._clientReady.reset();\n await this._client?.close();\n this._client = undefined;\n this._setState(SignalState.CLOSED);\n log('closed');\n }\n\n getStatus(): SignalStatus {\n return {\n host: this._host,\n state: this._state,\n error: this._lastError?.message,\n reconnectIn: this._reconnectAfter,\n connectionStarted: this._connectionStarted,\n lastStateChange: this._lastStateChange,\n };\n }\n\n async join({ topic, peerId }: { topic: PublicKey; peerId: PublicKey }): Promise<void> {\n log('joining', { topic, peerId });\n this._performance.joinCounter++;\n this._joinedTopics.add({ topic, peerId });\n this._reconcileTask!.schedule();\n }\n\n async leave({ topic, peerId }: { topic: PublicKey; peerId: PublicKey }): Promise<void> {\n this._performance.leaveCounter++;\n log('leaving', { topic, peerId });\n\n this._swarmStreams.get({ topic, peerId })?.close();\n this._swarmStreams.delete({ topic, peerId });\n this._joinedTopics.delete({ topic, peerId });\n }\n\n async sendMessage(msg: Message): Promise<void> {\n this._performance.sentMessages++;\n await this._clientReady.wait();\n invariant(this._state === SignalState.CONNECTED, 'Not connected to Signal Server');\n await this._client!.sendMessage(msg);\n }\n\n async subscribeMessages(peerId: PublicKey) {\n log('subscribing to messages', { peerId });\n this._subscribedMessages.add({ peerId });\n this._reconcileTask!.schedule();\n }\n\n async unsubscribeMessages(peerId: PublicKey) {\n log('unsubscribing from messages', { peerId });\n this._subscribedMessages.delete({ peerId });\n this._messageStreams.get(peerId)?.close();\n this._messageStreams.delete(peerId);\n }\n\n private _scheduleReconcileAfterError() {\n scheduleTask(\n this._ctx!,\n () => {\n this._reconcileTask!.schedule();\n },\n ERROR_RECONCILE_DELAY,\n );\n }\n\n private _setState(newState: SignalState) {\n this._state = newState;\n this._lastStateChange = new Date();\n log('signal state changed', { status: this.getStatus() });\n this.statusChanged.emit(this.getStatus());\n }\n\n private _createClient() {\n log('creating client', { host: this._host, state: this._state });\n invariant(!this._client, 'Client already created');\n\n this._connectionStarted = new Date();\n\n // Create new context for each connection.\n this._connectionCtx = this._ctx!.derive();\n this._connectionCtx.onDispose(() => {\n log('connection context disposed');\n Array.from(this._swarmStreams.values()).forEach((stream) => stream.close());\n Array.from(this._messageStreams.values()).forEach((stream) => stream.close());\n this._swarmStreams.clear();\n this._messageStreams.clear();\n });\n\n try {\n this._client = new SignalRPCClient({\n url: this._host,\n callbacks: {\n onConnected: () => {\n log('socket connected');\n this._lastError = undefined;\n this._reconnectAfter = DEFAULT_RECONNECT_TIMEOUT;\n this._setState(SignalState.CONNECTED);\n this._clientReady.wake();\n this._reconcileTask!.schedule();\n },\n\n onDisconnected: () => {\n log('socket disconnected', { state: this._state });\n if (this._state === SignalState.ERROR) {\n // Ignore disconnects after error.\n // Handled by error handler before disconnect handler.\n this._setState(SignalState.DISCONNECTED);\n return;\n }\n if (this._state !== SignalState.CONNECTED && this._state !== SignalState.CONNECTING) {\n this._incrementReconnectTimeout();\n }\n this._setState(SignalState.DISCONNECTED);\n this._reconnectTask!.schedule();\n },\n\n onError: (error) => {\n log('socket error', { error, state: this._state });\n this._lastError = error;\n if (this._state !== SignalState.CONNECTED && this._state !== SignalState.CONNECTING) {\n this._incrementReconnectTimeout();\n }\n this._setState(SignalState.ERROR);\n\n this._reconnectTask!.schedule();\n },\n },\n });\n } catch (err: any) {\n if (this._state !== SignalState.CONNECTED && this._state !== SignalState.CONNECTING) {\n this._incrementReconnectTimeout();\n }\n this._lastError = err;\n this._setState(SignalState.DISCONNECTED);\n this._reconnectTask!.schedule();\n }\n }\n\n private _incrementReconnectTimeout() {\n this._reconnectAfter *= 2;\n this._reconnectAfter = Math.min(this._reconnectAfter, MAX_RECONNECT_TIMEOUT);\n }\n\n private async _reconnect() {\n log(`reconnecting in ${this._reconnectAfter}ms`, { state: this._state });\n this._performance.reconnectCounter++;\n\n if (this._state === SignalState.RECONNECTING) {\n log.warn('Signal api already reconnecting.');\n return;\n }\n\n if (this._state === SignalState.CLOSED) {\n return;\n }\n\n // Close client if it wasn't already closed.\n this._clientReady.reset();\n await this._connectionCtx?.dispose();\n this._client?.close().catch(() => {});\n this._client = undefined;\n\n await cancelWithContext(this._ctx!, sleep(this._reconnectAfter));\n\n this._setState(SignalState.RECONNECTING);\n\n this._createClient();\n }\n\n private async _reconcileSwarmSubscriptions(): Promise<void> {\n await asyncTimeout(cancelWithContext(this._connectionCtx!, this._clientReady.wait()), 5_000);\n // Copy Client reference to avoid client change during the reconcile.\n const client = this._client!;\n invariant(this._state === SignalState.CONNECTED, 'Not connected to Signal Server');\n\n // Unsubscribe from topics that are no longer needed.\n for (const { topic, peerId } of this._swarmStreams.keys()) {\n // Join desired topics.\n if (this._joinedTopics.has({ topic, peerId })) {\n continue;\n }\n\n this._swarmStreams.get({ topic, peerId })?.close();\n this._swarmStreams.delete({ topic, peerId });\n }\n\n // Subscribe to topics that are needed.\n for (const { topic, peerId } of this._joinedTopics.values()) {\n // Join desired topics.\n if (this._swarmStreams.has({ topic, peerId })) {\n continue;\n }\n\n const swarmStream = await asyncTimeout(\n cancelWithContext(this._connectionCtx!, client.join({ topic, peerId })),\n 5000,\n );\n // Subscribing to swarm events.\n // TODO(mykola): What happens when the swarm stream is closed? Maybe send leave event for each peer?\n swarmStream.subscribe(async (swarmEvent: SwarmEvent) => {\n log('swarm event', { swarmEvent });\n await this._onSwarmEvent({ topic, swarmEvent });\n });\n\n // Saving swarm stream.\n this._swarmStreams.set({ topic, peerId }, swarmStream);\n }\n }\n\n private async _reconcileMessageSubscriptions(): Promise<void> {\n await asyncTimeout(cancelWithContext(this._connectionCtx!, this._clientReady.wait()), 5_000);\n // Copy Client reference to avoid client change during the reconcile.\n const client = this._client!;\n invariant(this._state === SignalState.CONNECTED, 'Not connected to Signal Server');\n\n // Unsubscribe from messages that are no longer needed.\n for (const peerId of this._messageStreams.keys()) {\n // Join desired topics.\n if (this._subscribedMessages.has({ peerId })) {\n continue;\n }\n\n this._messageStreams.get(peerId)?.close();\n this._messageStreams.delete(peerId);\n }\n\n // Subscribe to messages that are needed.\n for (const { peerId } of this._subscribedMessages.values()) {\n if (this._messageStreams.has(peerId)) {\n continue;\n }\n\n const messageStream = await asyncTimeout(\n cancelWithContext(this._connectionCtx!, client.receiveMessages(peerId)),\n 5000,\n );\n messageStream.subscribe(async (message: SignalMessage) => {\n this._performance.receivedMessages++;\n await this._onMessage({\n author: PublicKey.from(message.author),\n recipient: PublicKey.from(message.recipient),\n payload: message.payload,\n });\n });\n\n // Saving message stream.\n this._messageStreams.set(peerId, messageStream);\n }\n }\n}\n", "//\n// Copyright 2022 DXOS.org\n//\n\nimport WebSocket from 'isomorphic-ws';\n\nimport { Trigger } from '@dxos/async';\nimport { Any, Stream } from '@dxos/codec-protobuf';\nimport { invariant } from '@dxos/invariant';\nimport { PublicKey } from '@dxos/keys';\nimport { log } from '@dxos/log';\nimport { schema, trace } from '@dxos/protocols';\nimport { Message as SignalMessage, Signal } from '@dxos/protocols/proto/dxos/mesh/signal';\nimport { createProtoRpcPeer, ProtoRpcPeer } from '@dxos/rpc';\n\ninterface Services {\n Signal: Signal;\n}\n\nexport type SignalCallbacks = {\n onConnected?: () => void;\n\n /**\n * Called on disconnect.\n * In case of error, `onError` will be called first and then `onDisconnected`.\n */\n onDisconnected?: () => void;\n\n onError?: (error: Error) => void;\n};\n\nexport type SignalRPCClientParams = {\n url: string;\n callbacks?: SignalCallbacks;\n};\n\nexport class SignalRPCClient {\n private _socket?: WebSocket;\n private _rpc?: ProtoRpcPeer<Services>;\n private readonly _connectTrigger = new Trigger();\n\n private _closed = false;\n\n private readonly _url: string;\n private readonly _callbacks: SignalCallbacks;\n\n constructor({ url, callbacks = {} }: SignalRPCClientParams) {\n const traceId = PublicKey.random().toHex();\n log.trace('dxos.mesh.signal-rpc-client.constructor', trace.begin({ id: traceId }));\n this._url = url;\n this._callbacks = callbacks;\n this._socket = new WebSocket(this._url);\n\n this._rpc = createProtoRpcPeer({\n requested: {\n Signal: schema.getService('dxos.mesh.signal.Signal'),\n },\n noHandshake: true,\n port: {\n send: (msg) => {\n if (this._closed) {\n // Do not send messages after close.\n return;\n }\n try {\n this._socket!.send(msg);\n } catch (err) {\n log.warn('send error', err);\n }\n },\n subscribe: (cb) => {\n this._socket!.onmessage = async (msg: WebSocket.MessageEvent) => {\n if (typeof Blob !== 'undefined' && msg.data instanceof Blob) {\n cb(Buffer.from(await msg.data.arrayBuffer()));\n } else {\n cb(msg.data as any);\n }\n };\n },\n },\n encodingOptions: {\n preserveAny: true,\n },\n });\n\n this._socket.onopen = async () => {\n try {\n await this._rpc!.open();\n log(`RPC open ${this._url}`);\n this._callbacks.onConnected?.();\n this._connectTrigger.wake();\n } catch (err: any) {\n this._callbacks.onError?.(err);\n }\n };\n\n this._socket.onclose = async () => {\n log(`Disconnected ${this._url}`);\n this._callbacks.onDisconnected?.();\n await this.close();\n };\n\n this._socket.onerror = async (event: WebSocket.ErrorEvent) => {\n if (this._closed) {\n // Ignore errors after close.\n return;\n }\n\n this._callbacks.onError?.(event.error ?? new Error(event.message));\n this._connectTrigger.reset();\n\n try {\n await this._rpc?.close();\n } catch (err) {\n log.catch(err);\n }\n this._closed = true;\n\n log.warn(event.message ?? 'Socket error', { url: this._url });\n };\n\n log.trace('dxos.mesh.signal-rpc-client.constructor', trace.end({ id: traceId }));\n }\n\n async close() {\n this._closed = true;\n try {\n await this._rpc?.close();\n this._socket?.close();\n } catch (err) {\n log.warn('close error', err);\n }\n }\n\n async join({ topic, peerId }: { topic: PublicKey; peerId: PublicKey }) {\n log('join', { topic, peerId });\n await this._connectTrigger.wait();\n invariant(!this._closed, 'SignalRPCClient is closed');\n invariant(this._rpc, 'Rpc is not initialized');\n const swarmStream = this._rpc.rpc.Signal.join({\n swarm: topic.asUint8Array(),\n peer: peerId.asUint8Array(),\n });\n await swarmStream.waitUntilReady();\n return swarmStream;\n }\n\n async receiveMessages(peerId: PublicKey): Promise<Stream<SignalMessage>> {\n log('receiveMessages', { peerId });\n invariant(!this._closed, 'SignalRPCClient is closed');\n await this._connectTrigger.wait();\n invariant(this._rpc, 'Rpc is not initialized');\n const messageStream = this._rpc.rpc.Signal.receiveMessages({\n peer: peerId.asUint8Array(),\n });\n await messageStream.waitUntilReady();\n return messageStream;\n }\n\n async sendMessage({ author, recipient, payload }: { author: PublicKey; recipient: PublicKey; payload: Any }) {\n log('sendMessage', { author, recipient, payload });\n invariant(!this._closed, 'SignalRPCClient is closed');\n await this._connectTrigger.wait();\n invariant(this._rpc, 'Rpc is not initialized');\n await this._rpc.rpc.Signal.sendMessage({\n author: author.asUint8Array(),\n recipient: recipient.asUint8Array(),\n payload,\n });\n }\n}\n", "//\n// Copyright 2020 DXOS.org\n//\n\nimport { Event, Trigger } from '@dxos/async';\nimport { Any } from '@dxos/codec-protobuf';\nimport { Context } from '@dxos/context';\nimport { invariant } from '@dxos/invariant';\nimport { PublicKey } from '@dxos/keys';\nimport { log } from '@dxos/log';\nimport { schema } from '@dxos/protocols';\nimport { SwarmEvent } from '@dxos/protocols/proto/dxos/mesh/signal';\nimport { ComplexMap, ComplexSet } from '@dxos/util';\n\nimport { CommandTrace, SignalStatus } from '../signal-client';\nimport { SignalManager } from './signal-manager';\n\n/**\n * Common signaling context that connects multiple MemorySignalManager instances.\n */\nexport class MemorySignalManagerContext {\n // Swarm messages.\n readonly swarmEvent = new Event<{\n topic: PublicKey;\n swarmEvent: SwarmEvent;\n }>();\n\n // Mapping from topic to set of peers.\n readonly swarms = new ComplexMap<PublicKey, ComplexSet<PublicKey>>(PublicKey.hash);\n\n // Map of connections for each peer for signaling.\n readonly connections = new ComplexMap<PublicKey, MemorySignalManager>(PublicKey.hash);\n}\n\n/**\n * In memory signal manager for testing.\n */\nexport class MemorySignalManager implements SignalManager {\n readonly statusChanged = new Event<SignalStatus[]>();\n readonly commandTrace = new Event<CommandTrace>();\n readonly swarmEvent = new Event<{\n topic: PublicKey;\n swarmEvent: SwarmEvent;\n }>();\n\n readonly onMessage = new Event<{\n author: PublicKey;\n recipient: PublicKey;\n payload: Any;\n }>();\n\n /** Will be used to emit SwarmEvents on .open() and .close() */\n private _joinedSwarms = new ComplexSet<{ topic: PublicKey; peerId: PublicKey }>(\n ({ topic, peerId }) => topic.toHex() + peerId.toHex(),\n );\n\n private _ctx!: Context;\n\n // TODO(dmaretskyi): Replace with callback.\n private readonly _freezeTrigger = new Trigger().wake();\n\n // prettier-ignore\n constructor(\n private readonly _context: MemorySignalManagerContext\n ) {\n this._ctx = new Context();\n\n this._ctx.onDispose(this._context.swarmEvent.on((data) => this.swarmEvent.emit(data)));\n }\n\n async open() {\n if (!this._ctx.disposed) {\n return;\n }\n this._ctx = new Context();\n this._ctx.onDispose(this._context.swarmEvent.on((data) => this.swarmEvent.emit(data)));\n\n await Promise.all([...this._joinedSwarms.values()].map((value) => this.join(value)));\n }\n\n async close() {\n if (this._ctx.disposed) {\n return;\n }\n // save copy of joined swarms.\n const joinedSwarmsCopy = new ComplexSet<{ topic: PublicKey; peerId: PublicKey }>(\n ({ topic, peerId }) => topic.toHex() + peerId.toHex(),\n [...this._joinedSwarms.values()],\n );\n\n await Promise.all([...this._joinedSwarms.values()].map((value) => this.leave(value)));\n\n // assign joined swarms back because .leave() deletes it.\n this._joinedSwarms = joinedSwarmsCopy;\n\n await this._ctx.dispose();\n }\n\n getStatus(): SignalStatus[] {\n return [];\n }\n\n async join({ topic, peerId }: { topic: PublicKey; peerId: PublicKey }) {\n invariant(!this._ctx.disposed, 'Closed');\n\n this._joinedSwarms.add({ topic, peerId });\n\n if (!this._context.swarms.has(topic)) {\n this._context.swarms.set(topic, new ComplexSet(PublicKey.hash));\n }\n\n this._context.swarms.get(topic)!.add(peerId);\n this._context.swarmEvent.emit({\n topic,\n swarmEvent: {\n peerAvailable: {\n peer: peerId.asUint8Array(),\n since: new Date(),\n },\n },\n });\n\n // Emitting swarm events for each peer.\n for (const [topic, peerIds] of this._context.swarms) {\n Array.from(peerIds).forEach((peerId) => {\n this.swarmEvent.emit({\n topic,\n swarmEvent: {\n peerAvailable: {\n peer: peerId.asUint8Array(),\n since: new Date(),\n },\n },\n });\n });\n }\n }\n\n async leave({ topic, peerId }: { topic: PublicKey; peerId: PublicKey }) {\n invariant(!this._ctx.disposed, 'Closed');\n\n this._joinedSwarms.delete({ topic, peerId });\n\n if (!this._context.swarms.has(topic)) {\n this._context.swarms.set(topic, new ComplexSet(PublicKey.hash));\n }\n\n this._context.swarms.get(topic)!.delete(peerId);\n\n const swarmEvent: SwarmEvent = {\n peerLeft: {\n peer: peerId.asUint8Array(),\n },\n };\n\n this._context.swarmEvent.emit({ topic, swarmEvent });\n }\n\n async sendMessage({ author, recipient, payload }: { author: PublicKey; recipient: PublicKey; payload: Any }) {\n log('send message', { author, recipient, ...dec(payload) });\n\n invariant(recipient);\n invariant(!this._ctx.disposed, 'Closed');\n\n await this._freezeTrigger.wait();\n\n const remote = this._context.connections.get(recipient);\n if (!remote) {\n log.warn('recipient is not subscribed for messages', { author, recipient });\n return;\n }\n\n if (remote._ctx.disposed) {\n log.warn('recipient is disposed', { author, recipient });\n return;\n }\n\n remote._freezeTrigger\n .wait()\n .then(() => {\n if (remote._ctx.disposed) {\n log.warn('recipient is disposed', { author, recipient });\n return;\n }\n\n log('receive message', { author, recipient, ...dec(payload) });\n\n remote.onMessage.emit({ author, recipient, payload });\n })\n .catch((err) => {\n log.error('error while waiting for freeze', { err });\n });\n }\n\n async subscribeMessages(peerId: PublicKey) {\n log('subscribing', { peerId });\n this._context.connections.set(peerId, this);\n }\n\n async unsubscribeMessages(peerId: PublicKey) {\n log('unsubscribing', { peerId });\n this._context.connections.delete(peerId);\n }\n\n freeze() {\n this._freezeTrigger.reset();\n }\n\n unfreeze() {\n this._freezeTrigger.wake();\n }\n}\nconst dec = (payload: Any) => {\n if (!payload.type_url.endsWith('ReliablePayload')) {\n return {};\n }\n\n const relPayload = schema.getCodecForType('dxos.mesh.messaging.ReliablePayload').decode(payload.value);\n\n if (typeof relPayload?.payload?.data === 'object') {\n return { payload: Object.keys(relPayload?.payload?.data)[0], sessionId: relPayload?.payload?.sessionId };\n }\n\n return {};\n};\n", "//\n// Copyright 2020 DXOS.org\n//\n\nimport { Event, synchronized } from '@dxos/async';\nimport { Any } from '@dxos/codec-protobuf';\nimport { Context } from '@dxos/context';\nimport { invariant } from '@dxos/invariant';\nimport { PublicKey } from '@dxos/keys';\nimport { log } from '@dxos/log';\nimport { trace } from '@dxos/protocols';\nimport { Runtime } from '@dxos/protocols/proto/dxos/config';\nimport { SwarmEvent } from '@dxos/protocols/proto/dxos/mesh/signal';\n\nimport { CommandTrace, SignalClient, SignalStatus } from '../signal-client';\nimport { SignalManager } from './signal-manager';\n\n/**\n * Manages connection to multiple Signal Servers over WebSocket\n */\nexport class WebsocketSignalManager implements SignalManager {\n private readonly _servers = new Map<string, SignalClient>();\n\n private _ctx!: Context;\n private _opened = false;\n\n readonly statusChanged = new Event<SignalStatus[]>();\n readonly commandTrace = new Event<CommandTrace>();\n readonly swarmEvent = new Event<{\n topic: PublicKey;\n swarmEvent: SwarmEvent;\n }>();\n\n readonly onMessage = new Event<{\n author: PublicKey;\n recipient: PublicKey;\n payload: Any;\n }>();\n\n private readonly _instanceId = PublicKey.random().toHex();\n\n // prettier-ignore\n constructor(\n private readonly _hosts: Runtime.Services.Signal[]\n ) {\n log('Created WebsocketSignalManager', { hosts: this._hosts });\n for (const host of this._hosts) {\n if (this._servers.has(host.server)) {\n continue;\n }\n const server = new SignalClient(\n host.server,\n async (message) => this.onMessage.emit(message),\n async (data) => this.swarmEvent.emit(data)\n );\n server.statusChanged.on(() => this.statusChanged.emit(this.getStatus()));\n\n this._servers.set(host.server, server);\n server.commandTrace.on((trace) => this.commandTrace.emit(trace));\n }\n }\n\n @synchronized\n async open() {\n if (this._opened) {\n return;\n }\n log('open signal manager', { hosts: this._hosts });\n log.trace('dxos.mesh.websocket-signal-manager.open', trace.begin({ id: this._instanceId }));\n\n this._initContext();\n\n [...this._servers.values()].forEach((server) => server.open());\n\n this._opened = true;\n log.trace('dxos.mesh.websocket-signal-manager.open', trace.end({ id: this._instanceId }));\n }\n\n async close() {\n if (!this._opened) {\n return;\n }\n this._opened = false;\n\n await this._ctx.dispose();\n\n await Promise.all(Array.from(this._servers.values()).map((server) => server.close()));\n }\n\n getStatus(): SignalStatus[] {\n return Array.from(this._servers.values()).map((server) => server.getStatus());\n }\n\n @synchronized\n async join({ topic, peerId }: { topic: PublicKey; peerId: PublicKey }) {\n log('Join', { topic, peerId });\n invariant(this._opened, 'Closed');\n await this._forEachServer((server) => server.join({ topic, peerId }));\n }\n\n @synchronized\n async leave({ topic, peerId }: { topic: PublicKey; peerId: PublicKey }) {\n log('leaving', { topic, peerId });\n invariant(this._opened, 'Closed');\n\n await this._forEachServer((server) => server.leave({ topic, peerId }));\n }\n\n async sendMessage({\n author,\n recipient,\n payload,\n }: {\n author: PublicKey;\n recipient: PublicKey;\n payload: Any;\n }): Promise<void> {\n log(`Signal ${recipient}`);\n invariant(this._opened, 'Closed');\n\n void this._forEachServer(async (server) => {\n void server.sendMessage({ author, recipient, payload }).catch((err) => log(err));\n });\n }\n\n async subscribeMessages(peerId: PublicKey) {\n log(`Subscribed for message stream peerId=${peerId}`);\n invariant(this._opened, 'Closed');\n\n await this._forEachServer(async (server) => server.subscribeMessages(peerId));\n }\n\n async unsubscribeMessages(peerId: PublicKey) {\n log(`Subscribed for message stream peerId=${peerId}`);\n invariant(this._opened, 'Closed');\n\n await this._forEachServer(async (server) => server.unsubscribeMessages(peerId));\n }\n\n private _initContext() {\n this._ctx = new Context({\n onError: (err) => log.catch(err),\n });\n }\n\n private async _forEachServer<ReturnType>(fn: (server: SignalClient) => Promise<ReturnType>): Promise<ReturnType[]> {\n return Promise.all(Array.from(this._servers.values()).map(fn));\n }\n}\n"],
5
- "mappings": "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",
5
+ "mappings": "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",
6
6
  "names": ["MESSAGE_TIMEOUT", "ReliablePayload", "schema", "getCodecForType", "Acknowledgement", "Messenger", "constructor", "signalManager", "retryDelay", "_listeners", "ComplexMap", "peerId", "payloadType", "toHex", "_defaultListeners", "PublicKey", "hash", "_onAckCallbacks", "_receivedMessages", "ComplexSet", "key", "_closed", "_signalManager", "_retryDelay", "open", "traceId", "random", "log", "trace", "begin", "id", "_ctx", "Context", "onError", "err", "catch", "onDispose", "onMessage", "on", "message", "from", "author", "_handleMessage", "end", "close", "dispose", "sendMessage", "recipient", "payload", "invariant", "messageContext", "derive", "reliablePayload", "messageId", "has", "messageReceived", "timeoutHit", "promise", "Promise", "resolve", "reject", "scheduleExponentialBackoffTaskInterval", "_encodeAndSend", "scheduleTask", "delete", "TimeoutError", "MESSAGE_TIMEOUT", "set", "listen", "subscribeMessages", "listeners", "get", "Set", "add", "unsubscribe", "type_url", "value", "encode", "preserveAny", "_handleReliablePayload", "_handleAcknowledgement", "decode", "_sendAcknowledgement", "_callListeners", "to", "defaultListenerMap", "listener", "listenerMap", "import_async", "import_context", "import_invariant", "import_keys", "import_log", "import_protocols", "import_util", "import_async", "import_invariant", "import_keys", "import_log", "import_protocols", "SignalRPCClient", "constructor", "url", "callbacks", "_connectTrigger", "Trigger", "_closed", "traceId", "PublicKey", "random", "toHex", "log", "trace", "begin", "id", "_url", "_callbacks", "_socket", "WebSocket", "_rpc", "createProtoRpcPeer", "requested", "Signal", "schema", "getService", "noHandshake", "port", "send", "msg", "err", "warn", "subscribe", "cb", "onmessage", "Blob", "data", "Buffer", "from", "arrayBuffer", "encodingOptions", "preserveAny", "onopen", "open", "onConnected", "wake", "onError", "onclose", "onDisconnected", "close", "onerror", "event", "error", "Error", "message", "reset", "catch", "end", "join", "topic", "peerId", "wait", "invariant", "swarmStream", "rpc", "swarm", "asUint8Array", "peer", "waitUntilReady", "receiveMessages", "messageStream", "sendMessage", "author", "recipient", "payload", "DEFAULT_RECONNECT_TIMEOUT", "MAX_RECONNECT_TIMEOUT", "ERROR_RECONCILE_DELAY", "RECONCILE_INTERVAL", "SignalClient", "constructor", "_host", "_onMessage", "_onSwarmEvent", "_state", "SignalState", "CLOSED", "_reconnectAfter", "_connectionStarted", "Date", "_lastStateChange", "_clientReady", "Trigger", "statusChanged", "Event", "commandTrace", "_swarmStreams", "ComplexMap", "topic", "peerId", "toHex", "_joinedTopics", "ComplexSet", "_messageStreams", "key", "_subscribedMessages", "_reconciled", "_instanceId", "PublicKey", "random", "_performance", "sentMessages", "receivedMessages", "reconnectCounter", "joinCounter", "leaveCounter", "startsWith", "Error", "open", "log", "trace", "begin", "id", "CONNECTED", "CONNECTING", "includes", "_ctx", "Context", "onError", "err", "disposed", "warn", "_scheduleReconcileAfterError", "_reconcileTask", "DeferredTask", "_reconcileSwarmSubscriptions", "_reconcileMessageSubscriptions", "emit", "scheduleTaskInterval", "schedule", "_reconnectTask", "_reconnect", "_setState", "_createClient", "end", "close", "dispose", "reset", "_client", "undefined", "getStatus", "host", "state", "error", "_lastError", "message", "reconnectIn", "connectionStarted", "lastStateChange", "join", "add", "leave", "get", "delete", "sendMessage", "msg", "wait", "invariant", "subscribeMessages", "unsubscribeMessages", "scheduleTask", "newState", "status", "_connectionCtx", "derive", "onDispose", "Array", "from", "values", "forEach", "stream", "clear", "SignalRPCClient", "url", "callbacks", "onConnected", "wake", "onDisconnected", "ERROR", "DISCONNECTED", "_incrementReconnectTimeout", "Math", "min", "RECONNECTING", "catch", "cancelWithContext", "sleep", "asyncTimeout", "client", "keys", "has", "swarmStream", "subscribe", "swarmEvent", "set", "messageStream", "receiveMessages", "author", "recipient", "payload", "import_async", "import_context", "import_invariant", "import_keys", "import_log", "import_protocols", "import_util", "MemorySignalManagerContext", "swarmEvent", "Event", "swarms", "ComplexMap", "PublicKey", "hash", "connections", "MemorySignalManager", "constructor", "_context", "statusChanged", "commandTrace", "onMessage", "_joinedSwarms", "ComplexSet", "topic", "peerId", "toHex", "_freezeTrigger", "Trigger", "wake", "_ctx", "Context", "onDispose", "on", "data", "emit", "open", "disposed", "Promise", "all", "values", "map", "value", "join", "close", "joinedSwarmsCopy", "leave", "dispose", "getStatus", "invariant", "add", "has", "set", "get", "peerAvailable", "peer", "asUint8Array", "since", "Date", "peerIds", "Array", "from", "forEach", "delete", "peerLeft", "sendMessage", "author", "recipient", "payload", "log", "dec", "wait", "remote", "warn", "then", "catch", "err", "error", "subscribeMessages", "unsubscribeMessages", "freeze", "reset", "unfreeze", "type_url", "endsWith", "relPayload", "schema", "getCodecForType", "decode", "Object", "keys", "sessionId", "import_async", "import_context", "import_invariant", "import_keys", "import_log", "import_protocols", "WebsocketSignalManager", "constructor", "_hosts", "_servers", "Map", "_opened", "statusChanged", "Event", "commandTrace", "swarmEvent", "onMessage", "_instanceId", "PublicKey", "random", "toHex", "log", "hosts", "host", "has", "server", "SignalClient", "message", "emit", "data", "on", "getStatus", "set", "trace", "open", "begin", "id", "_initContext", "values", "forEach", "end", "close", "_ctx", "dispose", "Promise", "all", "Array", "from", "map", "join", "topic", "peerId", "invariant", "_forEachServer", "leave", "sendMessage", "author", "recipient", "payload", "catch", "err", "subscribeMessages", "unsubscribeMessages", "Context", "onError", "fn", "synchronized"]
7
7
  }
@@ -1 +1 @@
1
- {"inputs":{"packages/core/mesh/messaging/src/timeouts.ts":{"bytes":656,"imports":[]},"packages/core/mesh/messaging/src/messenger.ts":{"bytes":30612,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"packages/core/mesh/messaging/src/timeouts.ts","kind":"import-statement","original":"./timeouts"}]},"packages/core/mesh/messaging/src/signal-client/signal-rpc-client.ts":{"bytes":20028,"imports":[{"path":"isomorphic-ws","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/rpc","kind":"import-statement","external":true}]},"packages/core/mesh/messaging/src/signal-client/signal-client.ts":{"bytes":51940,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/protocols/proto/dxos/mesh/signal","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"packages/core/mesh/messaging/src/signal-client/signal-rpc-client.ts","kind":"import-statement","original":"./signal-rpc-client"}]},"packages/core/mesh/messaging/src/signal-client/index.ts":{"bytes":499,"imports":[{"path":"packages/core/mesh/messaging/src/signal-client/signal-client.ts","kind":"import-statement","original":"./signal-client"}]},"packages/core/mesh/messaging/src/signal-manager/memory-signal-manager.ts":{"bytes":24541,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true}]},"packages/core/mesh/messaging/src/signal-manager/signal-manager.ts":{"bytes":1268,"imports":[]},"packages/core/mesh/messaging/src/signal-manager/websocket-signal-manager.ts":{"bytes":18581,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"packages/core/mesh/messaging/src/signal-client/index.ts","kind":"import-statement","original":"../signal-client"}]},"packages/core/mesh/messaging/src/signal-manager/index.ts":{"bytes":750,"imports":[{"path":"packages/core/mesh/messaging/src/signal-manager/memory-signal-manager.ts","kind":"import-statement","original":"./memory-signal-manager"},{"path":"packages/core/mesh/messaging/src/signal-manager/signal-manager.ts","kind":"import-statement","original":"./signal-manager"},{"path":"packages/core/mesh/messaging/src/signal-manager/websocket-signal-manager.ts","kind":"import-statement","original":"./websocket-signal-manager"}]},"packages/core/mesh/messaging/src/signal-methods.ts":{"bytes":1621,"imports":[]},"packages/core/mesh/messaging/src/index.ts":{"bytes":782,"imports":[{"path":"packages/core/mesh/messaging/src/messenger.ts","kind":"import-statement","original":"./messenger"},{"path":"packages/core/mesh/messaging/src/signal-client/index.ts","kind":"import-statement","original":"./signal-client"},{"path":"packages/core/mesh/messaging/src/signal-manager/index.ts","kind":"import-statement","original":"./signal-manager"},{"path":"packages/core/mesh/messaging/src/signal-methods.ts","kind":"import-statement","original":"./signal-methods"}]}},"outputs":{"packages/core/mesh/messaging/dist/lib/node/index.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":66851},"packages/core/mesh/messaging/dist/lib/node/index.cjs":{"imports":[{"path":"@dxos/async","kind":"require-call","external":true},{"path":"@dxos/context","kind":"require-call","external":true},{"path":"@dxos/invariant","kind":"require-call","external":true},{"path":"@dxos/keys","kind":"require-call","external":true},{"path":"@dxos/log","kind":"require-call","external":true},{"path":"@dxos/protocols","kind":"require-call","external":true},{"path":"@dxos/util","kind":"require-call","external":true},{"path":"@dxos/async","kind":"require-call","external":true},{"path":"@dxos/context","kind":"require-call","external":true},{"path":"@dxos/invariant","kind":"require-call","external":true},{"path":"@dxos/keys","kind":"require-call","external":true},{"path":"@dxos/log","kind":"require-call","external":true},{"path":"@dxos/protocols","kind":"require-call","external":true},{"path":"@dxos/protocols/proto/dxos/mesh/signal","kind":"require-call","external":true},{"path":"@dxos/util","kind":"require-call","external":true},{"path":"isomorphic-ws","kind":"require-call","external":true},{"path":"@dxos/async","kind":"require-call","external":true},{"path":"@dxos/invariant","kind":"require-call","external":true},{"path":"@dxos/keys","kind":"require-call","external":true},{"path":"@dxos/log","kind":"require-call","external":true},{"path":"@dxos/protocols","kind":"require-call","external":true},{"path":"@dxos/rpc","kind":"require-call","external":true},{"path":"@dxos/async","kind":"require-call","external":true},{"path":"@dxos/context","kind":"require-call","external":true},{"path":"@dxos/invariant","kind":"require-call","external":true},{"path":"@dxos/keys","kind":"require-call","external":true},{"path":"@dxos/log","kind":"require-call","external":true},{"path":"@dxos/protocols","kind":"require-call","external":true},{"path":"@dxos/util","kind":"require-call","external":true},{"path":"@dxos/async","kind":"require-call","external":true},{"path":"@dxos/context","kind":"require-call","external":true},{"path":"@dxos/invariant","kind":"require-call","external":true},{"path":"@dxos/keys","kind":"require-call","external":true},{"path":"@dxos/log","kind":"require-call","external":true},{"path":"@dxos/protocols","kind":"require-call","external":true}],"exports":[],"entryPoint":"packages/core/mesh/messaging/src/index.ts","inputs":{"packages/core/mesh/messaging/src/index.ts":{"bytesInOutput":329},"packages/core/mesh/messaging/src/messenger.ts":{"bytesInOutput":9178},"packages/core/mesh/messaging/src/timeouts.ts":{"bytesInOutput":27},"packages/core/mesh/messaging/src/signal-client/signal-client.ts":{"bytesInOutput":14839},"packages/core/mesh/messaging/src/signal-client/signal-rpc-client.ts":{"bytesInOutput":6772},"packages/core/mesh/messaging/src/signal-client/index.ts":{"bytesInOutput":0},"packages/core/mesh/messaging/src/signal-manager/memory-signal-manager.ts":{"bytesInOutput":7191},"packages/core/mesh/messaging/src/signal-manager/index.ts":{"bytesInOutput":0},"packages/core/mesh/messaging/src/signal-manager/websocket-signal-manager.ts":{"bytesInOutput":6412}},"bytes":46937}}}
1
+ {"inputs":{"packages/core/mesh/messaging/src/timeouts.ts":{"bytes":656,"imports":[],"format":"esm"},"packages/core/mesh/messaging/src/messenger.ts":{"bytes":30612,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"packages/core/mesh/messaging/src/timeouts.ts","kind":"import-statement","original":"./timeouts"}],"format":"esm"},"packages/core/mesh/messaging/src/signal-client/signal-rpc-client.ts":{"bytes":20028,"imports":[{"path":"isomorphic-ws","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/rpc","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/messaging/src/signal-client/signal-client.ts":{"bytes":51940,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/protocols/proto/dxos/mesh/signal","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"packages/core/mesh/messaging/src/signal-client/signal-rpc-client.ts","kind":"import-statement","original":"./signal-rpc-client"}],"format":"esm"},"packages/core/mesh/messaging/src/signal-client/index.ts":{"bytes":499,"imports":[{"path":"packages/core/mesh/messaging/src/signal-client/signal-client.ts","kind":"import-statement","original":"./signal-client"}],"format":"esm"},"packages/core/mesh/messaging/src/signal-manager/memory-signal-manager.ts":{"bytes":24541,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/messaging/src/signal-manager/signal-manager.ts":{"bytes":1268,"imports":[],"format":"esm"},"packages/core/mesh/messaging/src/signal-manager/websocket-signal-manager.ts":{"bytes":18581,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"packages/core/mesh/messaging/src/signal-client/index.ts","kind":"import-statement","original":"../signal-client"}],"format":"esm"},"packages/core/mesh/messaging/src/signal-manager/index.ts":{"bytes":750,"imports":[{"path":"packages/core/mesh/messaging/src/signal-manager/memory-signal-manager.ts","kind":"import-statement","original":"./memory-signal-manager"},{"path":"packages/core/mesh/messaging/src/signal-manager/signal-manager.ts","kind":"import-statement","original":"./signal-manager"},{"path":"packages/core/mesh/messaging/src/signal-manager/websocket-signal-manager.ts","kind":"import-statement","original":"./websocket-signal-manager"}],"format":"esm"},"packages/core/mesh/messaging/src/signal-methods.ts":{"bytes":1621,"imports":[],"format":"esm"},"packages/core/mesh/messaging/src/index.ts":{"bytes":782,"imports":[{"path":"packages/core/mesh/messaging/src/messenger.ts","kind":"import-statement","original":"./messenger"},{"path":"packages/core/mesh/messaging/src/signal-client/index.ts","kind":"import-statement","original":"./signal-client"},{"path":"packages/core/mesh/messaging/src/signal-manager/index.ts","kind":"import-statement","original":"./signal-manager"},{"path":"packages/core/mesh/messaging/src/signal-methods.ts","kind":"import-statement","original":"./signal-methods"}],"format":"esm"}},"outputs":{"packages/core/mesh/messaging/dist/lib/node/index.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":66722},"packages/core/mesh/messaging/dist/lib/node/index.cjs":{"imports":[{"path":"@dxos/async","kind":"require-call","external":true},{"path":"@dxos/context","kind":"require-call","external":true},{"path":"@dxos/invariant","kind":"require-call","external":true},{"path":"@dxos/keys","kind":"require-call","external":true},{"path":"@dxos/log","kind":"require-call","external":true},{"path":"@dxos/protocols","kind":"require-call","external":true},{"path":"@dxos/util","kind":"require-call","external":true},{"path":"@dxos/async","kind":"require-call","external":true},{"path":"@dxos/context","kind":"require-call","external":true},{"path":"@dxos/invariant","kind":"require-call","external":true},{"path":"@dxos/keys","kind":"require-call","external":true},{"path":"@dxos/log","kind":"require-call","external":true},{"path":"@dxos/protocols","kind":"require-call","external":true},{"path":"@dxos/protocols/proto/dxos/mesh/signal","kind":"require-call","external":true},{"path":"@dxos/util","kind":"require-call","external":true},{"path":"isomorphic-ws","kind":"require-call","external":true},{"path":"@dxos/async","kind":"require-call","external":true},{"path":"@dxos/invariant","kind":"require-call","external":true},{"path":"@dxos/keys","kind":"require-call","external":true},{"path":"@dxos/log","kind":"require-call","external":true},{"path":"@dxos/protocols","kind":"require-call","external":true},{"path":"@dxos/rpc","kind":"require-call","external":true},{"path":"@dxos/async","kind":"require-call","external":true},{"path":"@dxos/context","kind":"require-call","external":true},{"path":"@dxos/invariant","kind":"require-call","external":true},{"path":"@dxos/keys","kind":"require-call","external":true},{"path":"@dxos/log","kind":"require-call","external":true},{"path":"@dxos/protocols","kind":"require-call","external":true},{"path":"@dxos/util","kind":"require-call","external":true},{"path":"@dxos/async","kind":"require-call","external":true},{"path":"@dxos/context","kind":"require-call","external":true},{"path":"@dxos/invariant","kind":"require-call","external":true},{"path":"@dxos/keys","kind":"require-call","external":true},{"path":"@dxos/log","kind":"require-call","external":true},{"path":"@dxos/protocols","kind":"require-call","external":true}],"exports":[],"entryPoint":"packages/core/mesh/messaging/src/index.ts","inputs":{"packages/core/mesh/messaging/src/index.ts":{"bytesInOutput":329},"packages/core/mesh/messaging/src/messenger.ts":{"bytesInOutput":9139},"packages/core/mesh/messaging/src/timeouts.ts":{"bytesInOutput":27},"packages/core/mesh/messaging/src/signal-client/signal-client.ts":{"bytesInOutput":14507},"packages/core/mesh/messaging/src/signal-client/signal-rpc-client.ts":{"bytesInOutput":6388},"packages/core/mesh/messaging/src/signal-client/index.ts":{"bytesInOutput":0},"packages/core/mesh/messaging/src/signal-manager/memory-signal-manager.ts":{"bytesInOutput":7032},"packages/core/mesh/messaging/src/signal-manager/index.ts":{"bytesInOutput":0},"packages/core/mesh/messaging/src/signal-manager/websocket-signal-manager.ts":{"bytesInOutput":6412}},"bytes":46023}}}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dxos/messaging",
3
- "version": "0.1.56-main.a25bb93",
3
+ "version": "0.1.56-main.a63ce79",
4
4
  "description": "Messaging",
5
5
  "homepage": "https://dxos.org",
6
6
  "bugs": "https://github.com/dxos/dxos/issues",
@@ -19,23 +19,23 @@
19
19
  "dependencies": {
20
20
  "isomorphic-ws": "^4.0.1",
21
21
  "ws": "^7.4.4",
22
- "@dxos/async": "0.1.56-main.a25bb93",
23
- "@dxos/codec-protobuf": "0.1.56-main.a25bb93",
24
- "@dxos/context": "0.1.56-main.a25bb93",
25
- "@dxos/invariant": "0.1.56-main.a25bb93",
26
- "@dxos/keys": "0.1.56-main.a25bb93",
27
- "@dxos/log": "0.1.56-main.a25bb93",
28
- "@dxos/node-std": "0.1.56-main.a25bb93",
29
- "@dxos/protocols": "0.1.56-main.a25bb93",
30
- "@dxos/rpc": "0.1.56-main.a25bb93",
31
- "@dxos/util": "0.1.56-main.a25bb93"
22
+ "@dxos/async": "0.1.56-main.a63ce79",
23
+ "@dxos/codec-protobuf": "0.1.56-main.a63ce79",
24
+ "@dxos/context": "0.1.56-main.a63ce79",
25
+ "@dxos/invariant": "0.1.56-main.a63ce79",
26
+ "@dxos/keys": "0.1.56-main.a63ce79",
27
+ "@dxos/log": "0.1.56-main.a63ce79",
28
+ "@dxos/node-std": "0.1.56-main.a63ce79",
29
+ "@dxos/protocols": "0.1.56-main.a63ce79",
30
+ "@dxos/rpc": "0.1.56-main.a63ce79",
31
+ "@dxos/util": "0.1.56-main.a63ce79"
32
32
  },
33
33
  "devDependencies": {
34
34
  "@types/node": "^18.11.9",
35
35
  "earljs": "~0.1.10",
36
36
  "typescript": "^5.0.4",
37
37
  "wait-for-expect": "^3.0.2",
38
- "@dxos/signal": "0.1.56-main.a25bb93"
38
+ "@dxos/signal": "0.1.56-main.a63ce79"
39
39
  },
40
40
  "publishConfig": {
41
41
  "access": "public"