@dxos/messaging 0.5.9-main.a2de4fa → 0.5.9-main.a75fa71

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.
@@ -78,6 +78,9 @@ var Messenger = class {
78
78
  S: this,
79
79
  C: (f, a) => f(...a)
80
80
  })
81
+ }, {
82
+ F: __dxlog_file,
83
+ L: 72
81
84
  });
82
85
  this._ctx.onDispose(this._signalManager.onMessage.on(async (message) => {
83
86
  log("received message", {
@@ -755,7 +758,10 @@ var SignalRPCClient = class {
755
758
  });
756
759
  this._callbacks.onConnected?.();
757
760
  this._connectTrigger.wake();
758
- this._keepaliveCtx = new Context2();
761
+ this._keepaliveCtx = new Context2(void 0, {
762
+ F: __dxlog_file3,
763
+ L: 107
764
+ });
759
765
  scheduleTaskInterval2(this._keepaliveCtx, async () => {
760
766
  this._socket?.send("__ping__");
761
767
  }, SIGNAL_KEEPALIVE_INTERVAL);
@@ -1331,14 +1337,20 @@ var MemorySignalManager = class {
1331
1337
  this.onMessage = new Event3();
1332
1338
  this._joinedSwarms = new ComplexSet3(({ topic, peerId }) => topic.toHex() + peerId.toHex());
1333
1339
  this._freezeTrigger = new Trigger3().wake();
1334
- this._ctx = new Context3();
1340
+ this._ctx = new Context3(void 0, {
1341
+ F: __dxlog_file5,
1342
+ L: 62
1343
+ });
1335
1344
  this._ctx.onDispose(this._context.swarmEvent.on((data) => this.swarmEvent.emit(data)));
1336
1345
  }
1337
1346
  async open() {
1338
1347
  if (!this._ctx.disposed) {
1339
1348
  return;
1340
1349
  }
1341
- this._ctx = new Context3();
1350
+ this._ctx = new Context3(void 0, {
1351
+ F: __dxlog_file5,
1352
+ L: 71
1353
+ });
1342
1354
  this._ctx.onDispose(this._context.swarmEvent.on((data) => this.swarmEvent.emit(data)));
1343
1355
  await Promise.all([
1344
1356
  ...this._joinedSwarms.values()
@@ -1905,6 +1917,9 @@ var WebsocketSignalManager = class {
1905
1917
  S: this,
1906
1918
  C: (f, a) => f(...a)
1907
1919
  })
1920
+ }, {
1921
+ F: __dxlog_file6,
1922
+ L: 208
1908
1923
  });
1909
1924
  }
1910
1925
  async _forEachServer(fn) {
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../../src/messenger.ts", "../../../src/messenger-monitor.ts", "../../../src/timeouts.ts", "../../../src/signal-client/signal-client.ts", "../../../src/signal-client/signal-client-monitor.ts", "../../../src/signal-client/signal-local-state.ts", "../../../src/signal-client/signal-rpc-client.ts", "../../../src/signal-client/signal-rpc-client-monitor.ts", "../../../src/signal-manager/memory-signal-manager.ts", "../../../src/signal-manager/websocket-signal-manager.ts", "../../../src/signal-manager/websocket-signal-manager-monitor.ts", "../../../src/signal-manager/utils.ts"],
4
4
  "sourcesContent": ["//\n// Copyright 2022 DXOS.org\n//\n\nimport { TimeoutError, scheduleExponentialBackoffTaskInterval, scheduleTask, scheduleTaskInterval } from '@dxos/async';\nimport { type 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 { TimeoutError as ProtocolTimeoutError, schema, trace } from '@dxos/protocols';\nimport { type ReliablePayload } from '@dxos/protocols/proto/dxos/mesh/messaging';\nimport { ComplexMap, ComplexSet } from '@dxos/util';\n\nimport { MessengerMonitor } from './messenger-monitor';\nimport { type SignalManager } from './signal-manager';\nimport { type 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\nconst RECEIVED_MESSAGES_GC_INTERVAL = 120_000;\n\n/**\n * Reliable messenger that works trough signal network.\n */\nexport class Messenger {\n private readonly _monitor = new MessengerMonitor();\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>(PublicKey.hash);\n\n /**\n * Keys scheduled to be cleared from _receivedMessages on the next iteration.\n */\n private readonly _toClear = new ComplexSet<PublicKey>(PublicKey.hash);\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\n // Clear the map periodically.\n scheduleTaskInterval(\n this._ctx,\n async () => {\n this._performGc();\n },\n RECEIVED_MESSAGES_GC_INTERVAL,\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 let sendAttempts = 0;\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 sendAttempts++;\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(\n new ProtocolTimeoutError(\n 'signaling message not delivered',\n new TimeoutError(MESSAGE_TIMEOUT, 'Message not delivered'),\n ),\n );\n void messageContext.dispose();\n this._monitor.recordReliableMessage({ sendAttempts, sent: false });\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 this._monitor.recordReliableMessage({ sendAttempts, sent: true });\n });\n\n await this._encodeAndSend({ author, recipient, reliablePayload });\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 try {\n await this._sendAcknowledgement({\n author,\n recipient,\n messageId: reliablePayload.messageId,\n });\n } catch (err) {\n this._monitor.recordMessageAckFailed();\n throw err;\n }\n\n // Ignore message if it was already received, i.e. from multiple signal servers.\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 private _performGc() {\n const start = performance.now();\n\n for (const key of this._toClear.keys()) {\n this._receivedMessages.delete(key);\n }\n this._toClear.clear();\n for (const key of this._receivedMessages.keys()) {\n this._toClear.add(key);\n }\n\n const elapsed = performance.now() - start;\n if (elapsed > 100) {\n log.warn('GC took too long', { elapsed });\n }\n }\n}\n\nexport interface ListeningHandle {\n unsubscribe: () => Promise<void>;\n}\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { trace } from '@dxos/tracing';\n\nexport class MessengerMonitor {\n public recordMessageAckFailed() {\n trace.metrics.increment('mesh.signal.messenger.failed-ack', 1);\n }\n\n public recordReliableMessage(params: { sendAttempts: number; sent: boolean }) {\n trace.metrics.increment('mesh.signal.messenger.reliable-send', 1, {\n tags: {\n success: params.sent,\n attempts: params.sendAttempts,\n },\n });\n }\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, scheduleTask, scheduleTaskInterval, sleep } from '@dxos/async';\nimport { type Any } from '@dxos/codec-protobuf';\nimport { type Context, cancelWithContext, Resource } from '@dxos/context';\nimport { invariant } from '@dxos/invariant';\nimport { PublicKey } from '@dxos/keys';\nimport { log } from '@dxos/log';\nimport { trace } from '@dxos/protocols';\nimport { SignalState, type SwarmEvent } from '@dxos/protocols/proto/dxos/mesh/signal';\n\nimport { SignalClientMonitor } from './signal-client-monitor';\nimport { SignalLocalState } from './signal-local-state';\nimport { SignalRPCClient } from './signal-rpc-client';\nimport { type Message, type SignalClientMethods, type SignalStatus } from '../signal-methods';\n\nconst DEFAULT_RECONNECT_TIMEOUT = 100;\nconst MAX_RECONNECT_TIMEOUT = 5_000;\nconst ERROR_RECONCILE_DELAY = 1_000;\nconst RECONCILE_INTERVAL = 5_000;\n\n/**\n * KUBE-specific signaling client.\n * Establishes a websocket connection to signal server and provides RPC methods.\n * Subscription state updates are executed immediately against the local state which\n * is reconciled periodically.\n */\n// TODO(burdon): Rename impl.\nexport class SignalClient extends Resource implements SignalClientMethods {\n private readonly _monitor = new SignalClientMonitor();\n\n private _state = SignalState.CLOSED;\n private _lastError?: Error;\n private _lastReconciliationFailed = false;\n\n private readonly _clientReady = new Trigger();\n private _connectionCtx?: Context;\n private _client?: SignalRPCClient;\n\n private _reconcileTask?: DeferredTask;\n private _reconnectTask?: DeferredTask;\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 private readonly _instanceId = PublicKey.random().toHex();\n\n /**\n * @internal\n */\n readonly localState: SignalLocalState;\n\n readonly statusChanged = new Event<SignalStatus>();\n\n /**\n * @param _host Signal server websocket URL.\n * @param onMessage called when a new message is received.\n * @param onSwarmEvent called when a new swarm event is received.\n * @param _getMetadata signal-message metadata provider, called for every message.\n */\n constructor(\n private readonly _host: string,\n onMessage: (params: { author: PublicKey; recipient: PublicKey; payload: Any }) => Promise<void>,\n onSwarmEvent: (params: { topic: PublicKey; swarmEvent: SwarmEvent }) => Promise<void>,\n private readonly _getMetadata?: () => any,\n ) {\n super();\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 this.localState = new SignalLocalState((message) => {\n this._monitor.recordMessageReceived(message);\n return onMessage(message);\n }, onSwarmEvent);\n }\n\n protected override async _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 this._setState(SignalState.CONNECTING);\n\n this._reconcileTask = new DeferredTask(this._ctx, async () => {\n try {\n await cancelWithContext(this._connectionCtx!, this._clientReady.wait({ timeout: 5_000 }));\n invariant(this._state === SignalState.CONNECTED, 'Not connected to Signal Server');\n await this.localState.reconcile(this._connectionCtx!, this._client!);\n this._monitor.recordReconciliation({ success: true });\n this._lastReconciliationFailed = false;\n } catch (err) {\n this._lastReconciliationFailed = true;\n this._monitor.recordReconciliation({ success: false });\n throw err;\n }\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 try {\n await this._reconnect();\n this._monitor.recordReconnect({ success: true });\n } catch (err) {\n this._monitor.recordReconnect({ success: false });\n throw err;\n }\n });\n\n this._createClient();\n log.trace('dxos.mesh.signal-client.open', trace.end({ id: this._instanceId }));\n }\n\n protected override async _catch(err: Error) {\n if (this._state === SignalState.CLOSED || this._ctx.disposed) {\n return;\n }\n // Don't log consecutive reconciliation failures.\n if (this._state === SignalState.CONNECTED && !this._lastReconciliationFailed) {\n log.warn('SignalClient error:', err);\n }\n this._scheduleReconcileAfterError();\n }\n\n protected override async _close() {\n log('closing...');\n if ([SignalState.CLOSED].includes(this._state)) {\n return;\n }\n\n this._setState(SignalState.CLOSED);\n await this._safeResetClient();\n\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 ...this._monitor.getRecordedTimestamps(),\n };\n }\n\n async join(args: { topic: PublicKey; peerId: PublicKey }): Promise<void> {\n log('joining', { topic: args.topic, peerId: args.peerId });\n this._monitor.recordJoin();\n this.localState.join(args);\n this._reconcileTask?.schedule();\n }\n\n async leave(args: { topic: PublicKey; peerId: PublicKey }): Promise<void> {\n log('leaving', { topic: args.topic, peerId: args.peerId });\n this._monitor.recordLeave();\n this.localState.leave(args);\n }\n\n async sendMessage(msg: Message): Promise<void> {\n return this._monitor.recordMessageSending(msg, async () => {\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\n async subscribeMessages(peerId: PublicKey) {\n log('subscribing to messages', { peerId });\n this.localState.subscribeMessages(peerId);\n this._reconcileTask?.schedule();\n }\n\n async unsubscribeMessages(peerId: PublicKey) {\n log('unsubscribing from messages', { peerId });\n this.localState.unsubscribeMessages(peerId);\n }\n\n private _scheduleReconcileAfterError() {\n scheduleTask(this._ctx, () => this._reconcileTask!.schedule(), ERROR_RECONCILE_DELAY);\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._monitor.recordConnectionStartTime();\n\n // Create new context for each connection.\n this._connectionCtx = this._ctx.derive();\n this._connectionCtx.onDispose(async () => {\n log('connection context disposed');\n const { failureCount } = await this.localState.safeCloseStreams();\n this._monitor.recordStreamCloseErrors(failureCount);\n });\n\n try {\n const client = new SignalRPCClient({\n url: this._host,\n callbacks: {\n onConnected: () => {\n if (client === this._client) {\n log('socket connected');\n this._onConnected();\n }\n },\n\n onDisconnected: () => {\n if (client !== this._client) {\n return;\n }\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 } else {\n this._onDisconnected();\n }\n },\n\n onError: (error) => {\n if (client === this._client) {\n log('socket error', { error, state: this._state });\n this._onDisconnected({ error });\n }\n },\n getMetadata: this._getMetadata,\n },\n });\n this._client = client;\n } catch (error: any) {\n this._client = undefined;\n this._onDisconnected({ error });\n }\n }\n\n private async _reconnect() {\n log(`reconnecting in ${this._reconnectAfter}ms`, { state: this._state });\n\n if (this._state === SignalState.RECONNECTING) {\n log.info('Signal api already reconnecting.');\n return;\n }\n if (this._state === SignalState.CLOSED) {\n return;\n }\n this._setState(SignalState.RECONNECTING);\n\n await this._safeResetClient();\n\n await cancelWithContext(this._ctx!, sleep(this._reconnectAfter));\n\n this._createClient();\n }\n\n private _onConnected() {\n this._lastError = undefined;\n this._lastReconciliationFailed = false;\n this._reconnectAfter = DEFAULT_RECONNECT_TIMEOUT;\n this._setState(SignalState.CONNECTED);\n this._clientReady.wake();\n this._reconcileTask!.schedule();\n }\n\n private _onDisconnected(options?: { error: Error }) {\n this._updateReconnectTimeout();\n if (this._state === SignalState.CLOSED) {\n return;\n }\n if (options?.error) {\n this._lastError = options.error;\n this._setState(SignalState.ERROR);\n } else {\n this._setState(SignalState.DISCONNECTED);\n }\n this._reconnectTask!.schedule();\n }\n\n private _setState(newState: SignalState) {\n this._state = newState;\n this._monitor.recordStateChangeTime();\n log('signal state changed', { status: this.getStatus() });\n this.statusChanged.emit(this.getStatus());\n }\n\n private _updateReconnectTimeout() {\n if (this._state !== SignalState.CONNECTED && this._state !== SignalState.CONNECTING) {\n this._reconnectAfter *= 2;\n this._reconnectAfter = Math.min(this._reconnectAfter, MAX_RECONNECT_TIMEOUT);\n }\n }\n\n private async _safeResetClient() {\n await this._connectionCtx?.dispose();\n this._connectionCtx = undefined;\n\n this._clientReady.reset();\n await this._client?.close().catch(() => {});\n this._client = undefined;\n }\n}\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { trace } from '@dxos/tracing';\n\nimport type { Message } from '../signal-methods';\n\nexport class SignalClientMonitor {\n private readonly _performance = {\n sentMessages: 0,\n receivedMessages: 0,\n reconnectCounter: 0,\n joinCounter: 0,\n leaveCounter: 0,\n };\n\n /**\n * Timestamp of when the connection attempt was began.\n */\n private _connectionStarted = new Date();\n /**\n * Timestamp of last state change.\n */\n private _lastStateChange = new Date();\n\n public getRecordedTimestamps() {\n return {\n connectionStarted: this._connectionStarted,\n lastStateChange: this._lastStateChange,\n };\n }\n\n public recordStateChangeTime() {\n this._lastStateChange = new Date();\n }\n\n public recordConnectionStartTime() {\n this._connectionStarted = new Date();\n }\n\n public recordReconnect(params: { success: boolean }) {\n this._performance.reconnectCounter++;\n trace.metrics.increment('mesh.signal.signal-client.reconnect', 1, {\n tags: {\n success: params.success,\n },\n });\n }\n\n public recordJoin() {\n this._performance.joinCounter++;\n }\n\n public recordLeave() {\n this._performance.leaveCounter++;\n }\n\n public recordMessageReceived(message: Message) {\n this._performance.receivedMessages++;\n trace.metrics.increment('mesh.signal.signal-client.received-total', 1, {\n tags: createIdentityTags(message),\n });\n trace.metrics.distribution('mesh.signal.signal-client.bytes-in', getByteCount(message), {\n tags: createIdentityTags(message),\n });\n }\n\n public async recordMessageSending(message: Message, sendMessage: () => Promise<void>) {\n this._performance.sentMessages++;\n const tags = createIdentityTags(message);\n let success = true;\n try {\n const reqStart = Date.now();\n await sendMessage();\n const reqDuration = Date.now() - reqStart;\n trace.metrics.distribution('mesh.signal.signal-client.send-duration', reqDuration, { tags });\n trace.metrics.distribution('mesh.signal.signal-client.bytes-out', getByteCount(message), { tags });\n } catch (err) {\n success = false;\n }\n trace.metrics.increment('mesh.signal.signal-client.sent-total', 1, {\n tags: { ...tags, success },\n });\n }\n\n public recordStreamCloseErrors(count: number) {\n trace.metrics.increment('mesh.signal.signal-client.stream-close-errors', count);\n }\n\n public recordReconciliation(params: { success: boolean }) {\n trace.metrics.increment('mesh.signal.signal-client.reconciliation', 1, {\n tags: {\n success: params.success,\n },\n });\n }\n}\n\nconst getByteCount = (message: Message): number => {\n return (\n message.author.asUint8Array().length +\n message.recipient.asUint8Array().length +\n message.payload.type_url.length +\n message.payload.value.length\n );\n};\n\nconst createIdentityTags = (message: Message) => {\n return { peer: message.author.toHex() };\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { asyncTimeout, Event } from '@dxos/async';\nimport type { Any, Stream } from '@dxos/codec-protobuf';\nimport { cancelWithContext, type Context } from '@dxos/context';\nimport { PublicKey } from '@dxos/keys';\nimport { log } from '@dxos/log';\nimport { type Message as SignalMessage, type SwarmEvent } from '@dxos/protocols/proto/dxos/mesh/signal';\nimport { ComplexMap, ComplexSet, safeAwaitAll } from '@dxos/util';\n\nimport { type SignalRPCClient } from './signal-rpc-client';\nimport type { Message } from '../signal-methods';\n\nexport class SignalLocalState {\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 * Represent desired message subscriptions.\n */\n private readonly _subscribedMessages = new ComplexSet<{ peerId: PublicKey }>(({ peerId }) => peerId.toHex());\n\n /**\n * Message streams. Keys represents actually subscribed peers.\n * @internal\n */\n readonly messageStreams = new ComplexMap<PublicKey, Stream<SignalMessage>>((key) => key.toHex());\n\n /**\n * Event to use in tests to wait till subscription is successfully established.\n * @internal\n */\n readonly reconciled = new Event();\n\n constructor(\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\n async safeCloseStreams(): Promise<{ failureCount: number }> {\n const streams = ([...this._swarmStreams.values()] as Stream<any>[]).concat([...this.messageStreams.values()]);\n this._swarmStreams.clear();\n this.messageStreams.clear();\n const failureCount = (await safeAwaitAll(streams, (s) => s.close())).length;\n return { failureCount };\n }\n\n join({ topic, peerId }: { topic: PublicKey; peerId: PublicKey }) {\n this._joinedTopics.add({ topic, peerId });\n }\n\n leave({ topic, peerId }: { topic: PublicKey; peerId: PublicKey }) {\n void this._swarmStreams.get({ topic, peerId })?.close();\n this._swarmStreams.delete({ topic, peerId });\n this._joinedTopics.delete({ topic, peerId });\n }\n\n subscribeMessages(peerId: PublicKey) {\n this._subscribedMessages.add({ peerId });\n }\n\n unsubscribeMessages(peerId: PublicKey) {\n log('unsubscribing from messages', { peerId });\n this._subscribedMessages.delete({ peerId });\n void this.messageStreams.get(peerId)?.close();\n this.messageStreams.delete(peerId);\n }\n\n public async reconcile(ctx: Context, client: SignalRPCClient) {\n await this._reconcileSwarmSubscriptions(ctx, client);\n await this._reconcileMessageSubscriptions(ctx, client);\n this.reconciled.emit();\n }\n\n private async _reconcileSwarmSubscriptions(ctx: Context, client: SignalRPCClient): Promise<void> {\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 void 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(cancelWithContext(ctx, client.join({ topic, peerId })), 5_000);\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 if (this._joinedTopics.has({ topic, peerId })) {\n log('swarm event', { swarmEvent });\n await this._onSwarmEvent({ topic, swarmEvent });\n }\n });\n\n // Saving swarm stream.\n this._swarmStreams.set({ topic, peerId }, swarmStream);\n }\n }\n\n private async _reconcileMessageSubscriptions(ctx: Context, client: SignalRPCClient): Promise<void> {\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 void 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(cancelWithContext(ctx, client.receiveMessages(peerId)), 5_000);\n messageStream.subscribe(async (signalMessage: SignalMessage) => {\n if (this._subscribedMessages.has({ peerId })) {\n const message: Message = {\n author: PublicKey.from(signalMessage.author),\n recipient: PublicKey.from(signalMessage.recipient),\n payload: signalMessage.payload,\n };\n await this._onMessage(message);\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 { scheduleTaskInterval, TimeoutError, Trigger } from '@dxos/async';\nimport { type Any, type Stream } 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 { type Message as SignalMessage, type Signal } from '@dxos/protocols/proto/dxos/mesh/signal';\nimport { createProtoRpcPeer, type ProtoRpcPeer } from '@dxos/rpc';\n\nimport { SignalRpcClientMonitor } from './signal-rpc-client-monitor';\n\nconst SIGNAL_KEEPALIVE_INTERVAL = 10000;\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 getMetadata?: () => any;\n};\n\nexport type SignalRPCClientParams = {\n url: string;\n callbacks?: SignalCallbacks;\n};\n\nexport class SignalRPCClient {\n private readonly _socket: WebSocket;\n private readonly _rpc: ProtoRpcPeer<Services>;\n private readonly _connectTrigger = new Trigger();\n\n private _keepaliveCtx?: Context;\n\n private _closed = false;\n\n private readonly _url: string;\n private readonly _callbacks: SignalCallbacks;\n private readonly _closeComplete = new Trigger();\n\n private readonly _monitor = new SignalRpcClientMonitor();\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 if (this._closed) {\n await this._safeCloseRpc();\n return;\n }\n log(`RPC open ${this._url}`);\n this._callbacks.onConnected?.();\n this._connectTrigger.wake();\n this._keepaliveCtx = new Context();\n scheduleTaskInterval(\n this._keepaliveCtx,\n async () => {\n // TODO(nf): use RFC6455 ping/pong once implemented in the browser?\n // TODO(nf): check for pong response from server (once implemented)\n // Current implementation of signal server ignores all text data messages, and does not send a response.\n // However this is enough to detect breakages in the connection as TCP will reset the connection if ACKs are not received.\n this._socket?.send('__ping__');\n },\n SIGNAL_KEEPALIVE_INTERVAL,\n );\n } catch (err: any) {\n this._callbacks.onError?.(err);\n this._socket.close();\n this._closed = true;\n }\n };\n\n this._socket.onclose = async () => {\n log(`Disconnected ${this._url}`);\n this._callbacks.onDisconnected?.();\n this._closeComplete.wake();\n await this.close();\n };\n\n this._socket.onerror = async (event: WebSocket.ErrorEvent) => {\n if (this._closed) {\n this._socket.close();\n return;\n }\n this._closed = true;\n\n this._callbacks.onError?.(event.error ?? new Error(event.message));\n await this._safeCloseRpc();\n\n log.warn(`Socket ${event.type ?? 'unknown'} error`, { message: event.message, url: this._url });\n };\n\n log.trace('dxos.mesh.signal-rpc-client.constructor', trace.end({ id: traceId }));\n }\n\n async close() {\n if (this._closed) {\n return;\n }\n this._closed = true;\n\n await this._keepaliveCtx?.dispose();\n try {\n await this._safeCloseRpc();\n\n if (this._socket.readyState === WebSocket.OPEN || this._socket.readyState === WebSocket.CONNECTING) {\n // close() only starts the closing handshake.\n this._socket.close();\n }\n\n await this._closeComplete.wait({ timeout: 1_000 });\n } catch (err) {\n const failureReason = err instanceof TimeoutError ? 'timeout' : err?.constructor?.name ?? 'unknown';\n this._monitor.recordClientCloseFailure({ failureReason });\n }\n }\n\n async join({ topic, peerId }: { topic: PublicKey; peerId: PublicKey }) {\n log('join', { topic, peerId, metadata: this._callbacks?.getMetadata?.() });\n invariant(!this._closed, 'SignalRPCClient is closed');\n await this._connectTrigger.wait();\n const swarmStream = this._rpc.rpc.Signal.join({\n swarm: topic.asUint8Array(),\n peer: peerId.asUint8Array(),\n metadata: this._callbacks?.getMetadata?.(),\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 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, metadata: this._callbacks?.getMetadata?.() });\n invariant(!this._closed, 'SignalRPCClient is closed');\n await this._connectTrigger.wait();\n await this._rpc.rpc.Signal.sendMessage({\n author: author.asUint8Array(),\n recipient: recipient.asUint8Array(),\n payload,\n metadata: this._callbacks?.getMetadata?.(),\n });\n }\n\n private async _safeCloseRpc() {\n try {\n this._connectTrigger.reset();\n await this._rpc.close();\n } catch (err) {\n log.catch(err);\n }\n }\n}\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { trace } from '@dxos/tracing';\n\nexport class SignalRpcClientMonitor {\n public recordClientCloseFailure(params: { failureReason: string }) {\n trace.metrics.increment('mesh.signal.signal-rpc-client.close-failure', 1, {\n tags: {\n reason: params.failureReason,\n },\n });\n }\n}\n", "//\n// Copyright 2020 DXOS.org\n//\n\nimport { Event, Trigger } from '@dxos/async';\nimport { type 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 { type SwarmEvent } from '@dxos/protocols/proto/dxos/mesh/signal';\nimport { ComplexMap, ComplexSet } from '@dxos/util';\n\nimport { type SignalManager } from './signal-manager';\nimport { type SignalStatus } from '../signal-methods';\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 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 constructor(private readonly _context: MemorySignalManagerContext) {\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, sleep, synchronized } from '@dxos/async';\nimport { type 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 { RateLimitExceededError, TimeoutError, trace } from '@dxos/protocols';\nimport { type Runtime } from '@dxos/protocols/proto/dxos/config';\nimport { type SwarmEvent } from '@dxos/protocols/proto/dxos/mesh/signal';\nimport { BitField, safeAwaitAll } from '@dxos/util';\n\nimport { type SignalManager } from './signal-manager';\nimport { WebsocketSignalManagerMonitor } from './websocket-signal-manager-monitor';\nimport { SignalClient } from '../signal-client';\nimport { type SignalClientMethods, type SignalMethods, type SignalStatus } from '../signal-methods';\n\nconst MAX_SERVER_FAILURES = 5;\nconst WSS_SIGNAL_SERVER_REBOOT_DELAY = 3_000;\n\n/**\n * Manages connection to multiple Signal Servers over WebSocket\n */\nexport class WebsocketSignalManager implements SignalManager {\n private readonly _servers = new Map<string, SignalClientMethods>();\n private readonly _monitor = new WebsocketSignalManagerMonitor();\n\n /**\n * Used to avoid logging failed server restarts more than once until the server actually recovers.\n */\n private readonly _failedServersBitfield: Uint8Array;\n\n private _ctx!: Context;\n private _opened = false;\n\n readonly failureCount = new Map<string, number>();\n readonly statusChanged = new Event<SignalStatus[]>();\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 constructor(\n private readonly _hosts: Runtime.Services.Signal[],\n private readonly _getMetadata?: () => any,\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\n // TODO(burdon): Create factory to support different variants.\n const server = new SignalClient(\n host.server,\n async (message) => this.onMessage.emit(message),\n async (data) => this.swarmEvent.emit(data),\n this._getMetadata,\n );\n\n server.statusChanged.on(() => this.statusChanged.emit(this.getStatus()));\n\n this._servers.set(host.server, server);\n this.failureCount.set(host.server, 0);\n }\n this._failedServersBitfield = BitField.zeros(this._hosts.length);\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 await safeAwaitAll(this._servers.values(), (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 @synchronized\n async close() {\n if (!this._opened) {\n return;\n }\n this._opened = false;\n await this._ctx.dispose();\n await safeAwaitAll(this._servers.values(), (server) => server.close());\n }\n\n async restartServer(serverName: string) {\n log('restarting server', { serverName });\n invariant(this._opened, 'server already closed');\n\n const server = this._servers.get(serverName);\n invariant(server, 'server not found');\n\n await server.close();\n await sleep(WSS_SIGNAL_SERVER_REBOOT_DELAY);\n await server.open();\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 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, serverName, index) => {\n void server\n .sendMessage({ author, recipient, payload })\n .then(() => this._clearServerFailedFlag(serverName, index))\n .catch((err) => {\n if (err instanceof RateLimitExceededError) {\n log.info('WSS rate limit exceeded', { err });\n this._monitor.recordRateLimitExceeded();\n } else if (err instanceof TimeoutError || err.constructor.name === 'TimeoutError') {\n log.info('WSS sendMessage timeout', { err });\n void this.checkServerFailure(serverName, index);\n } else {\n log.warn(`error sending to ${serverName}`, { err });\n void this.checkServerFailure(serverName, index);\n }\n });\n });\n }\n\n @synchronized\n async checkServerFailure(serverName: string, index: number) {\n const failureCount = this.failureCount.get(serverName!) ?? 0;\n const isRestartRequired = failureCount > MAX_SERVER_FAILURES;\n this._monitor.recordServerFailure({ serverName, willRestart: isRestartRequired });\n if (isRestartRequired) {\n if (!BitField.get(this._failedServersBitfield, index)) {\n log.warn('too many failures for ws-server, restarting', { serverName, failureCount });\n BitField.set(this._failedServersBitfield, index, true);\n }\n await this.restartServer(serverName!);\n this.failureCount.set(serverName!, 0);\n return;\n }\n\n this.failureCount.set(serverName!, (this.failureCount.get(serverName!) ?? 0) + 1);\n }\n\n private _clearServerFailedFlag(serverName: string, index: number) {\n if (BitField.get(this._failedServersBitfield, index)) {\n log.info('server connection restored', { serverName });\n BitField.set(this._failedServersBitfield, index, false);\n this.failureCount.set(serverName!, 0);\n }\n }\n\n async subscribeMessages(peerId: PublicKey) {\n log('subscribed for message stream', { 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 });\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>(\n fn: (server: SignalMethods, serverName: string, index: number) => Promise<ReturnType>,\n ): Promise<ReturnType[]> {\n return Promise.all(\n Array.from(this._servers.entries()).map(([serverName, server], idx) => fn(server, serverName, idx)),\n );\n }\n}\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { trace } from '@dxos/tracing';\n\nexport class WebsocketSignalManagerMonitor {\n public recordRateLimitExceeded() {\n trace.metrics.increment('mesh.signal.signal-manager.rate-limit-hit', 1);\n }\n\n public recordServerFailure(params: { serverName: string; willRestart: boolean }) {\n trace.metrics.increment('mesh.signal.signal-manager.server-failure', 1, {\n tags: {\n server: params.serverName,\n restarted: params.willRestart,\n },\n });\n }\n}\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { invariant } from '@dxos/invariant';\nimport { log } from '@dxos/log';\nimport { type DevicesService, type IdentityService } from '@dxos/protocols/proto/dxos/client/services';\nimport { DeviceKind } from '@dxos/protocols/proto/dxos/client/services';\n\nexport const setIdentityTags = ({\n identityService,\n devicesService,\n setTag,\n}: {\n identityService: IdentityService;\n devicesService: DevicesService;\n setTag: (k: string, v: string) => void;\n}) => {\n identityService.queryIdentity().subscribe((idqr) => {\n if (!idqr?.identity?.identityKey) {\n log('empty response from identity service', { idqr });\n return;\n }\n\n setTag('identityKey', idqr.identity.identityKey.truncate());\n });\n\n devicesService.queryDevices().subscribe((dqr) => {\n if (!dqr || !dqr.devices || dqr.devices.length === 0) {\n log('empty response from device service', { device: dqr });\n return;\n }\n invariant(dqr, 'empty response from device service');\n\n const thisDevice = dqr.devices.find((device) => device.kind === DeviceKind.CURRENT);\n if (!thisDevice) {\n log('no current device', { device: dqr });\n return;\n }\n setTag('deviceKey', thisDevice.deviceKey.truncate());\n });\n};\n"],
5
- "mappings": "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",
5
+ "mappings": "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",
6
6
  "names": ["TimeoutError", "scheduleExponentialBackoffTaskInterval", "scheduleTask", "scheduleTaskInterval", "Context", "invariant", "PublicKey", "log", "ProtocolTimeoutError", "schema", "trace", "ComplexMap", "ComplexSet", "trace", "MessengerMonitor", "recordMessageAckFailed", "trace", "metrics", "increment", "recordReliableMessage", "params", "tags", "success", "sent", "attempts", "sendAttempts", "MESSAGE_TIMEOUT", "ReliablePayload", "schema", "getCodecForType", "Acknowledgement", "RECEIVED_MESSAGES_GC_INTERVAL", "Messenger", "constructor", "signalManager", "retryDelay", "_monitor", "MessengerMonitor", "_listeners", "ComplexMap", "peerId", "payloadType", "toHex", "_defaultListeners", "PublicKey", "hash", "_onAckCallbacks", "_receivedMessages", "ComplexSet", "_toClear", "_closed", "_signalManager", "_retryDelay", "open", "traceId", "random", "log", "trace", "begin", "id", "_ctx", "Context", "onError", "err", "catch", "onDispose", "onMessage", "on", "message", "from", "author", "_handleMessage", "scheduleTaskInterval", "_performGc", "end", "close", "dispose", "sendMessage", "recipient", "payload", "invariant", "messageContext", "derive", "reliablePayload", "messageId", "has", "messageReceived", "timeoutHit", "sendAttempts", "promise", "Promise", "resolve", "reject", "scheduleExponentialBackoffTaskInterval", "_encodeAndSend", "scheduleTask", "delete", "ProtocolTimeoutError", "TimeoutError", "MESSAGE_TIMEOUT", "recordReliableMessage", "sent", "set", "listen", "subscribeMessages", "listeners", "get", "Set", "add", "unsubscribe", "type_url", "value", "encode", "preserveAny", "_handleReliablePayload", "_handleAcknowledgement", "decode", "_sendAcknowledgement", "recordMessageAckFailed", "_callListeners", "to", "defaultListenerMap", "listener", "listenerMap", "start", "performance", "now", "key", "keys", "clear", "elapsed", "warn", "DeferredTask", "Event", "Trigger", "scheduleTask", "scheduleTaskInterval", "sleep", "cancelWithContext", "Resource", "invariant", "PublicKey", "log", "trace", "SignalState", "trace", "SignalClientMonitor", "_performance", "sentMessages", "receivedMessages", "reconnectCounter", "joinCounter", "leaveCounter", "_connectionStarted", "Date", "_lastStateChange", "getRecordedTimestamps", "connectionStarted", "lastStateChange", "recordStateChangeTime", "recordConnectionStartTime", "recordReconnect", "params", "trace", "metrics", "increment", "tags", "success", "recordJoin", "recordLeave", "recordMessageReceived", "message", "createIdentityTags", "distribution", "getByteCount", "recordMessageSending", "sendMessage", "reqStart", "now", "reqDuration", "err", "recordStreamCloseErrors", "count", "recordReconciliation", "author", "asUint8Array", "length", "recipient", "payload", "type_url", "value", "peer", "toHex", "asyncTimeout", "Event", "cancelWithContext", "PublicKey", "log", "ComplexMap", "ComplexSet", "safeAwaitAll", "SignalLocalState", "constructor", "_onMessage", "_onSwarmEvent", "_swarmStreams", "topic", "peerId", "toHex", "_joinedTopics", "_subscribedMessages", "messageStreams", "key", "reconciled", "safeCloseStreams", "streams", "values", "concat", "clear", "failureCount", "s", "close", "length", "join", "add", "leave", "get", "delete", "subscribeMessages", "unsubscribeMessages", "reconcile", "ctx", "client", "_reconcileSwarmSubscriptions", "_reconcileMessageSubscriptions", "emit", "keys", "has", "swarmStream", "subscribe", "swarmEvent", "set", "messageStream", "receiveMessages", "signalMessage", "message", "author", "from", "recipient", "payload", "WebSocket", "scheduleTaskInterval", "TimeoutError", "Trigger", "Context", "invariant", "PublicKey", "log", "schema", "trace", "createProtoRpcPeer", "trace", "SignalRpcClientMonitor", "recordClientCloseFailure", "params", "trace", "metrics", "increment", "tags", "reason", "failureReason", "SIGNAL_KEEPALIVE_INTERVAL", "SignalRPCClient", "constructor", "url", "callbacks", "_connectTrigger", "Trigger", "_closed", "_closeComplete", "_monitor", "SignalRpcClientMonitor", "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", "_safeCloseRpc", "onConnected", "wake", "_keepaliveCtx", "Context", "scheduleTaskInterval", "onError", "close", "onclose", "onDisconnected", "onerror", "event", "error", "Error", "message", "type", "end", "dispose", "readyState", "OPEN", "CONNECTING", "wait", "timeout", "failureReason", "TimeoutError", "name", "recordClientCloseFailure", "join", "topic", "peerId", "metadata", "getMetadata", "invariant", "swarmStream", "rpc", "swarm", "asUint8Array", "peer", "waitUntilReady", "receiveMessages", "messageStream", "sendMessage", "author", "recipient", "payload", "reset", "catch", "DEFAULT_RECONNECT_TIMEOUT", "MAX_RECONNECT_TIMEOUT", "ERROR_RECONCILE_DELAY", "RECONCILE_INTERVAL", "SignalClient", "Resource", "constructor", "_host", "onMessage", "onSwarmEvent", "_getMetadata", "_monitor", "SignalClientMonitor", "_state", "SignalState", "CLOSED", "_lastReconciliationFailed", "_clientReady", "Trigger", "_reconnectAfter", "_instanceId", "PublicKey", "random", "toHex", "statusChanged", "Event", "startsWith", "Error", "localState", "SignalLocalState", "message", "recordMessageReceived", "_open", "log", "trace", "begin", "id", "CONNECTED", "CONNECTING", "includes", "_setState", "_reconcileTask", "DeferredTask", "_ctx", "cancelWithContext", "_connectionCtx", "wait", "timeout", "invariant", "reconcile", "_client", "recordReconciliation", "success", "err", "scheduleTaskInterval", "schedule", "_reconnectTask", "_reconnect", "recordReconnect", "_createClient", "end", "_catch", "disposed", "warn", "_scheduleReconcileAfterError", "_close", "_safeResetClient", "getStatus", "host", "state", "error", "_lastError", "reconnectIn", "getRecordedTimestamps", "join", "args", "topic", "peerId", "recordJoin", "leave", "recordLeave", "sendMessage", "msg", "recordMessageSending", "subscribeMessages", "unsubscribeMessages", "scheduleTask", "recordConnectionStartTime", "derive", "onDispose", "failureCount", "safeCloseStreams", "recordStreamCloseErrors", "client", "SignalRPCClient", "url", "callbacks", "onConnected", "_onConnected", "onDisconnected", "ERROR", "DISCONNECTED", "_onDisconnected", "onError", "getMetadata", "undefined", "RECONNECTING", "info", "sleep", "wake", "options", "_updateReconnectTimeout", "newState", "recordStateChangeTime", "status", "emit", "Math", "min", "dispose", "reset", "close", "catch", "Event", "Trigger", "Context", "invariant", "PublicKey", "log", "schema", "ComplexMap", "ComplexSet", "MemorySignalManagerContext", "swarmEvent", "swarms", "hash", "connections", "MemorySignalManager", "constructor", "_context", "statusChanged", "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", "sleep", "synchronized", "Context", "invariant", "PublicKey", "log", "RateLimitExceededError", "TimeoutError", "trace", "BitField", "safeAwaitAll", "trace", "WebsocketSignalManagerMonitor", "recordRateLimitExceeded", "trace", "metrics", "increment", "recordServerFailure", "params", "tags", "server", "serverName", "restarted", "willRestart", "MAX_SERVER_FAILURES", "WSS_SIGNAL_SERVER_REBOOT_DELAY", "WebsocketSignalManager", "constructor", "_hosts", "_getMetadata", "_servers", "Map", "_monitor", "WebsocketSignalManagerMonitor", "_opened", "failureCount", "statusChanged", "Event", "swarmEvent", "onMessage", "_instanceId", "PublicKey", "random", "toHex", "log", "hosts", "host", "has", "server", "SignalClient", "message", "emit", "data", "on", "getStatus", "set", "_failedServersBitfield", "BitField", "zeros", "length", "open", "trace", "begin", "id", "_initContext", "safeAwaitAll", "values", "end", "close", "_ctx", "dispose", "restartServer", "serverName", "invariant", "get", "sleep", "Array", "from", "map", "join", "topic", "peerId", "_forEachServer", "leave", "sendMessage", "author", "recipient", "payload", "index", "then", "_clearServerFailedFlag", "catch", "err", "RateLimitExceededError", "info", "recordRateLimitExceeded", "TimeoutError", "name", "checkServerFailure", "warn", "isRestartRequired", "recordServerFailure", "willRestart", "subscribeMessages", "unsubscribeMessages", "Context", "onError", "fn", "Promise", "all", "entries", "idx", "synchronized", "invariant", "log", "DeviceKind", "setIdentityTags", "identityService", "devicesService", "setTag", "queryIdentity", "subscribe", "idqr", "identity", "identityKey", "truncate", "queryDevices", "dqr", "devices", "length", "device", "thisDevice", "find", "kind", "CURRENT", "deviceKey"]
7
7
  }
@@ -1 +1 @@
1
- {"inputs":{"inject-globals:@inject-globals":{"bytes":384,"imports":[{"path":"@dxos/node-std/inject-globals","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/messaging/src/messenger-monitor.ts":{"bytes":2050,"imports":[{"path":"@dxos/tracing","kind":"import-statement","external":true},{"path":"@inject-globals","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/messaging/src/timeouts.ts":{"bytes":692,"imports":[{"path":"@inject-globals","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/messaging/src/messenger.ts":{"bytes":36500,"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/messenger-monitor.ts","kind":"import-statement","original":"./messenger-monitor"},{"path":"packages/core/mesh/messaging/src/timeouts.ts","kind":"import-statement","original":"./timeouts"},{"path":"@inject-globals","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/messaging/src/signal-client/signal-client-monitor.ts":{"bytes":11000,"imports":[{"path":"@dxos/tracing","kind":"import-statement","external":true},{"path":"@inject-globals","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/messaging/src/signal-client/signal-local-state.ts":{"bytes":20447,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"@inject-globals","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/messaging/src/signal-client/signal-rpc-client-monitor.ts":{"bytes":1597,"imports":[{"path":"@dxos/tracing","kind":"import-statement","external":true},{"path":"@inject-globals","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/messaging/src/signal-client/signal-rpc-client.ts":{"bytes":25822,"imports":[{"path":"isomorphic-ws","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/rpc","kind":"import-statement","external":true},{"path":"packages/core/mesh/messaging/src/signal-client/signal-rpc-client-monitor.ts","kind":"import-statement","original":"./signal-rpc-client-monitor"},{"path":"@inject-globals","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/messaging/src/signal-client/signal-client.ts":{"bytes":40703,"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":"packages/core/mesh/messaging/src/signal-client/signal-client-monitor.ts","kind":"import-statement","original":"./signal-client-monitor"},{"path":"packages/core/mesh/messaging/src/signal-client/signal-local-state.ts","kind":"import-statement","original":"./signal-local-state"},{"path":"packages/core/mesh/messaging/src/signal-client/signal-rpc-client.ts","kind":"import-statement","original":"./signal-rpc-client"},{"path":"@inject-globals","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/messaging/src/signal-client/index.ts":{"bytes":527,"imports":[{"path":"packages/core/mesh/messaging/src/signal-client/signal-client.ts","kind":"import-statement","original":"./signal-client"},{"path":"@inject-globals","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/messaging/src/signal-manager/memory-signal-manager.ts":{"bytes":24675,"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":"@inject-globals","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/messaging/src/signal-manager/signal-manager.ts":{"bytes":1346,"imports":[{"path":"@inject-globals","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/messaging/src/signal-manager/websocket-signal-manager-monitor.ts":{"bytes":2204,"imports":[{"path":"@dxos/tracing","kind":"import-statement","external":true},{"path":"@inject-globals","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/messaging/src/signal-manager/websocket-signal-manager.ts":{"bytes":30719,"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/signal-manager/websocket-signal-manager-monitor.ts","kind":"import-statement","original":"./websocket-signal-manager-monitor"},{"path":"packages/core/mesh/messaging/src/signal-client/index.ts","kind":"import-statement","original":"../signal-client"},{"path":"@inject-globals","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/messaging/src/signal-manager/utils.ts":{"bytes":5247,"imports":[{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols/proto/dxos/client/services","kind":"import-statement","external":true},{"path":"@inject-globals","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/messaging/src/signal-manager/index.ts":{"bytes":867,"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"},{"path":"packages/core/mesh/messaging/src/signal-manager/utils.ts","kind":"import-statement","original":"./utils"},{"path":"@inject-globals","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/messaging/src/signal-methods.ts":{"bytes":2450,"imports":[{"path":"@inject-globals","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/messaging/src/index.ts":{"bytes":818,"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"},{"path":"@inject-globals","kind":"import-statement","external":true}],"format":"esm"}},"outputs":{"packages/core/mesh/messaging/dist/lib/browser/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":92548},"packages/core/mesh/messaging/dist/lib/browser/index.mjs":{"imports":[{"path":"@dxos/node-std/inject-globals","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/tracing","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/tracing","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","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/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/rpc","kind":"import-statement","external":true},{"path":"@dxos/tracing","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},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"@dxos/tracing","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols/proto/dxos/client/services","kind":"import-statement","external":true}],"exports":["MemorySignalManager","MemorySignalManagerContext","Messenger","SignalClient","WebsocketSignalManager","setIdentityTags"],"entryPoint":"packages/core/mesh/messaging/src/index.ts","inputs":{"inject-globals:@inject-globals":{"bytesInOutput":79},"packages/core/mesh/messaging/src/messenger.ts":{"bytesInOutput":10037},"packages/core/mesh/messaging/src/messenger-monitor.ts":{"bytesInOutput":382},"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":11017},"packages/core/mesh/messaging/src/signal-client/signal-client-monitor.ts":{"bytesInOutput":2801},"packages/core/mesh/messaging/src/signal-client/signal-local-state.ts":{"bytesInOutput":4459},"packages/core/mesh/messaging/src/signal-client/signal-rpc-client.ts":{"bytesInOutput":6725},"packages/core/mesh/messaging/src/signal-client/signal-rpc-client-monitor.ts":{"bytesInOutput":278},"packages/core/mesh/messaging/src/signal-client/index.ts":{"bytesInOutput":0},"packages/core/mesh/messaging/src/signal-manager/memory-signal-manager.ts":{"bytesInOutput":6623},"packages/core/mesh/messaging/src/signal-manager/index.ts":{"bytesInOutput":0},"packages/core/mesh/messaging/src/signal-manager/websocket-signal-manager.ts":{"bytesInOutput":9512},"packages/core/mesh/messaging/src/signal-manager/websocket-signal-manager-monitor.ts":{"bytesInOutput":426},"packages/core/mesh/messaging/src/signal-manager/utils.ts":{"bytesInOutput":1597}},"bytes":55306}}}
1
+ {"inputs":{"inject-globals:@inject-globals":{"bytes":384,"imports":[{"path":"@dxos/node-std/inject-globals","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/messaging/src/messenger-monitor.ts":{"bytes":2050,"imports":[{"path":"@dxos/tracing","kind":"import-statement","external":true},{"path":"@inject-globals","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/messaging/src/timeouts.ts":{"bytes":692,"imports":[{"path":"@inject-globals","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/messaging/src/messenger.ts":{"bytes":36568,"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/messenger-monitor.ts","kind":"import-statement","original":"./messenger-monitor"},{"path":"packages/core/mesh/messaging/src/timeouts.ts","kind":"import-statement","original":"./timeouts"},{"path":"@inject-globals","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/messaging/src/signal-client/signal-client-monitor.ts":{"bytes":11000,"imports":[{"path":"@dxos/tracing","kind":"import-statement","external":true},{"path":"@inject-globals","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/messaging/src/signal-client/signal-local-state.ts":{"bytes":20447,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"@inject-globals","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/messaging/src/signal-client/signal-rpc-client-monitor.ts":{"bytes":1597,"imports":[{"path":"@dxos/tracing","kind":"import-statement","external":true},{"path":"@inject-globals","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/messaging/src/signal-client/signal-rpc-client.ts":{"bytes":25921,"imports":[{"path":"isomorphic-ws","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/rpc","kind":"import-statement","external":true},{"path":"packages/core/mesh/messaging/src/signal-client/signal-rpc-client-monitor.ts","kind":"import-statement","original":"./signal-rpc-client-monitor"},{"path":"@inject-globals","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/messaging/src/signal-client/signal-client.ts":{"bytes":40703,"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":"packages/core/mesh/messaging/src/signal-client/signal-client-monitor.ts","kind":"import-statement","original":"./signal-client-monitor"},{"path":"packages/core/mesh/messaging/src/signal-client/signal-local-state.ts","kind":"import-statement","original":"./signal-local-state"},{"path":"packages/core/mesh/messaging/src/signal-client/signal-rpc-client.ts","kind":"import-statement","original":"./signal-rpc-client"},{"path":"@inject-globals","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/messaging/src/signal-client/index.ts":{"bytes":527,"imports":[{"path":"packages/core/mesh/messaging/src/signal-client/signal-client.ts","kind":"import-statement","original":"./signal-client"},{"path":"@inject-globals","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/messaging/src/signal-manager/memory-signal-manager.ts":{"bytes":24823,"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":"@inject-globals","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/messaging/src/signal-manager/signal-manager.ts":{"bytes":1346,"imports":[{"path":"@inject-globals","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/messaging/src/signal-manager/websocket-signal-manager-monitor.ts":{"bytes":2204,"imports":[{"path":"@dxos/tracing","kind":"import-statement","external":true},{"path":"@inject-globals","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/messaging/src/signal-manager/websocket-signal-manager.ts":{"bytes":30788,"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/signal-manager/websocket-signal-manager-monitor.ts","kind":"import-statement","original":"./websocket-signal-manager-monitor"},{"path":"packages/core/mesh/messaging/src/signal-client/index.ts","kind":"import-statement","original":"../signal-client"},{"path":"@inject-globals","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/messaging/src/signal-manager/utils.ts":{"bytes":5247,"imports":[{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols/proto/dxos/client/services","kind":"import-statement","external":true},{"path":"@inject-globals","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/messaging/src/signal-manager/index.ts":{"bytes":867,"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"},{"path":"packages/core/mesh/messaging/src/signal-manager/utils.ts","kind":"import-statement","original":"./utils"},{"path":"@inject-globals","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/messaging/src/signal-methods.ts":{"bytes":2450,"imports":[{"path":"@inject-globals","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/messaging/src/index.ts":{"bytes":818,"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"},{"path":"@inject-globals","kind":"import-statement","external":true}],"format":"esm"}},"outputs":{"packages/core/mesh/messaging/dist/lib/browser/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":92581},"packages/core/mesh/messaging/dist/lib/browser/index.mjs":{"imports":[{"path":"@dxos/node-std/inject-globals","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/tracing","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/tracing","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","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/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/rpc","kind":"import-statement","external":true},{"path":"@dxos/tracing","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},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"@dxos/tracing","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols/proto/dxos/client/services","kind":"import-statement","external":true}],"exports":["MemorySignalManager","MemorySignalManagerContext","Messenger","SignalClient","WebsocketSignalManager","setIdentityTags"],"entryPoint":"packages/core/mesh/messaging/src/index.ts","inputs":{"inject-globals:@inject-globals":{"bytesInOutput":79},"packages/core/mesh/messaging/src/messenger.ts":{"bytesInOutput":10081},"packages/core/mesh/messaging/src/messenger-monitor.ts":{"bytesInOutput":382},"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":11017},"packages/core/mesh/messaging/src/signal-client/signal-client-monitor.ts":{"bytesInOutput":2801},"packages/core/mesh/messaging/src/signal-client/signal-local-state.ts":{"bytesInOutput":4459},"packages/core/mesh/messaging/src/signal-client/signal-rpc-client.ts":{"bytesInOutput":6789},"packages/core/mesh/messaging/src/signal-client/signal-rpc-client-monitor.ts":{"bytesInOutput":278},"packages/core/mesh/messaging/src/signal-client/index.ts":{"bytesInOutput":0},"packages/core/mesh/messaging/src/signal-manager/memory-signal-manager.ts":{"bytesInOutput":6725},"packages/core/mesh/messaging/src/signal-manager/index.ts":{"bytesInOutput":0},"packages/core/mesh/messaging/src/signal-manager/websocket-signal-manager.ts":{"bytesInOutput":9558},"packages/core/mesh/messaging/src/signal-manager/websocket-signal-manager-monitor.ts":{"bytesInOutput":426},"packages/core/mesh/messaging/src/signal-manager/utils.ts":{"bytesInOutput":1597}},"bytes":55562}}}
@@ -135,6 +135,9 @@ var Messenger = class {
135
135
  S: this,
136
136
  C: (f, a) => f(...a)
137
137
  })
138
+ }, {
139
+ F: __dxlog_file,
140
+ L: 72
138
141
  });
139
142
  this._ctx.onDispose(this._signalManager.onMessage.on(async (message) => {
140
143
  (0, import_log.log)("received message", {
@@ -772,7 +775,10 @@ var SignalRPCClient = class {
772
775
  });
773
776
  this._callbacks.onConnected?.();
774
777
  this._connectTrigger.wake();
775
- this._keepaliveCtx = new import_context4.Context();
778
+ this._keepaliveCtx = new import_context4.Context(void 0, {
779
+ F: __dxlog_file3,
780
+ L: 107
781
+ });
776
782
  (0, import_async4.scheduleTaskInterval)(this._keepaliveCtx, async () => {
777
783
  this._socket?.send("__ping__");
778
784
  }, SIGNAL_KEEPALIVE_INTERVAL);
@@ -1334,14 +1340,20 @@ var MemorySignalManager = class {
1334
1340
  this.onMessage = new import_async5.Event();
1335
1341
  this._joinedSwarms = new import_util3.ComplexSet(({ topic, peerId }) => topic.toHex() + peerId.toHex());
1336
1342
  this._freezeTrigger = new import_async5.Trigger().wake();
1337
- this._ctx = new import_context5.Context();
1343
+ this._ctx = new import_context5.Context(void 0, {
1344
+ F: __dxlog_file5,
1345
+ L: 62
1346
+ });
1338
1347
  this._ctx.onDispose(this._context.swarmEvent.on((data) => this.swarmEvent.emit(data)));
1339
1348
  }
1340
1349
  async open() {
1341
1350
  if (!this._ctx.disposed) {
1342
1351
  return;
1343
1352
  }
1344
- this._ctx = new import_context5.Context();
1353
+ this._ctx = new import_context5.Context(void 0, {
1354
+ F: __dxlog_file5,
1355
+ L: 71
1356
+ });
1345
1357
  this._ctx.onDispose(this._context.swarmEvent.on((data) => this.swarmEvent.emit(data)));
1346
1358
  await Promise.all([
1347
1359
  ...this._joinedSwarms.values()
@@ -1894,6 +1906,9 @@ var WebsocketSignalManager = class {
1894
1906
  S: this,
1895
1907
  C: (f, a) => f(...a)
1896
1908
  })
1909
+ }, {
1910
+ F: __dxlog_file6,
1911
+ L: 208
1897
1912
  });
1898
1913
  }
1899
1914
  async _forEachServer(fn) {
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../../src/messenger.ts", "../../../src/messenger-monitor.ts", "../../../src/timeouts.ts", "../../../src/signal-client/signal-client.ts", "../../../src/signal-client/signal-client-monitor.ts", "../../../src/signal-client/signal-local-state.ts", "../../../src/signal-client/signal-rpc-client.ts", "../../../src/signal-client/signal-rpc-client-monitor.ts", "../../../src/signal-manager/memory-signal-manager.ts", "../../../src/signal-manager/websocket-signal-manager.ts", "../../../src/signal-manager/websocket-signal-manager-monitor.ts", "../../../src/signal-manager/utils.ts"],
4
4
  "sourcesContent": ["//\n// Copyright 2022 DXOS.org\n//\n\nimport { TimeoutError, scheduleExponentialBackoffTaskInterval, scheduleTask, scheduleTaskInterval } from '@dxos/async';\nimport { type 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 { TimeoutError as ProtocolTimeoutError, schema, trace } from '@dxos/protocols';\nimport { type ReliablePayload } from '@dxos/protocols/proto/dxos/mesh/messaging';\nimport { ComplexMap, ComplexSet } from '@dxos/util';\n\nimport { MessengerMonitor } from './messenger-monitor';\nimport { type SignalManager } from './signal-manager';\nimport { type 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\nconst RECEIVED_MESSAGES_GC_INTERVAL = 120_000;\n\n/**\n * Reliable messenger that works trough signal network.\n */\nexport class Messenger {\n private readonly _monitor = new MessengerMonitor();\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>(PublicKey.hash);\n\n /**\n * Keys scheduled to be cleared from _receivedMessages on the next iteration.\n */\n private readonly _toClear = new ComplexSet<PublicKey>(PublicKey.hash);\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\n // Clear the map periodically.\n scheduleTaskInterval(\n this._ctx,\n async () => {\n this._performGc();\n },\n RECEIVED_MESSAGES_GC_INTERVAL,\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 let sendAttempts = 0;\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 sendAttempts++;\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(\n new ProtocolTimeoutError(\n 'signaling message not delivered',\n new TimeoutError(MESSAGE_TIMEOUT, 'Message not delivered'),\n ),\n );\n void messageContext.dispose();\n this._monitor.recordReliableMessage({ sendAttempts, sent: false });\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 this._monitor.recordReliableMessage({ sendAttempts, sent: true });\n });\n\n await this._encodeAndSend({ author, recipient, reliablePayload });\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 try {\n await this._sendAcknowledgement({\n author,\n recipient,\n messageId: reliablePayload.messageId,\n });\n } catch (err) {\n this._monitor.recordMessageAckFailed();\n throw err;\n }\n\n // Ignore message if it was already received, i.e. from multiple signal servers.\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 private _performGc() {\n const start = performance.now();\n\n for (const key of this._toClear.keys()) {\n this._receivedMessages.delete(key);\n }\n this._toClear.clear();\n for (const key of this._receivedMessages.keys()) {\n this._toClear.add(key);\n }\n\n const elapsed = performance.now() - start;\n if (elapsed > 100) {\n log.warn('GC took too long', { elapsed });\n }\n }\n}\n\nexport interface ListeningHandle {\n unsubscribe: () => Promise<void>;\n}\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { trace } from '@dxos/tracing';\n\nexport class MessengerMonitor {\n public recordMessageAckFailed() {\n trace.metrics.increment('mesh.signal.messenger.failed-ack', 1);\n }\n\n public recordReliableMessage(params: { sendAttempts: number; sent: boolean }) {\n trace.metrics.increment('mesh.signal.messenger.reliable-send', 1, {\n tags: {\n success: params.sent,\n attempts: params.sendAttempts,\n },\n });\n }\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, scheduleTask, scheduleTaskInterval, sleep } from '@dxos/async';\nimport { type Any } from '@dxos/codec-protobuf';\nimport { type Context, cancelWithContext, Resource } from '@dxos/context';\nimport { invariant } from '@dxos/invariant';\nimport { PublicKey } from '@dxos/keys';\nimport { log } from '@dxos/log';\nimport { trace } from '@dxos/protocols';\nimport { SignalState, type SwarmEvent } from '@dxos/protocols/proto/dxos/mesh/signal';\n\nimport { SignalClientMonitor } from './signal-client-monitor';\nimport { SignalLocalState } from './signal-local-state';\nimport { SignalRPCClient } from './signal-rpc-client';\nimport { type Message, type SignalClientMethods, type SignalStatus } from '../signal-methods';\n\nconst DEFAULT_RECONNECT_TIMEOUT = 100;\nconst MAX_RECONNECT_TIMEOUT = 5_000;\nconst ERROR_RECONCILE_DELAY = 1_000;\nconst RECONCILE_INTERVAL = 5_000;\n\n/**\n * KUBE-specific signaling client.\n * Establishes a websocket connection to signal server and provides RPC methods.\n * Subscription state updates are executed immediately against the local state which\n * is reconciled periodically.\n */\n// TODO(burdon): Rename impl.\nexport class SignalClient extends Resource implements SignalClientMethods {\n private readonly _monitor = new SignalClientMonitor();\n\n private _state = SignalState.CLOSED;\n private _lastError?: Error;\n private _lastReconciliationFailed = false;\n\n private readonly _clientReady = new Trigger();\n private _connectionCtx?: Context;\n private _client?: SignalRPCClient;\n\n private _reconcileTask?: DeferredTask;\n private _reconnectTask?: DeferredTask;\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 private readonly _instanceId = PublicKey.random().toHex();\n\n /**\n * @internal\n */\n readonly localState: SignalLocalState;\n\n readonly statusChanged = new Event<SignalStatus>();\n\n /**\n * @param _host Signal server websocket URL.\n * @param onMessage called when a new message is received.\n * @param onSwarmEvent called when a new swarm event is received.\n * @param _getMetadata signal-message metadata provider, called for every message.\n */\n constructor(\n private readonly _host: string,\n onMessage: (params: { author: PublicKey; recipient: PublicKey; payload: Any }) => Promise<void>,\n onSwarmEvent: (params: { topic: PublicKey; swarmEvent: SwarmEvent }) => Promise<void>,\n private readonly _getMetadata?: () => any,\n ) {\n super();\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 this.localState = new SignalLocalState((message) => {\n this._monitor.recordMessageReceived(message);\n return onMessage(message);\n }, onSwarmEvent);\n }\n\n protected override async _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 this._setState(SignalState.CONNECTING);\n\n this._reconcileTask = new DeferredTask(this._ctx, async () => {\n try {\n await cancelWithContext(this._connectionCtx!, this._clientReady.wait({ timeout: 5_000 }));\n invariant(this._state === SignalState.CONNECTED, 'Not connected to Signal Server');\n await this.localState.reconcile(this._connectionCtx!, this._client!);\n this._monitor.recordReconciliation({ success: true });\n this._lastReconciliationFailed = false;\n } catch (err) {\n this._lastReconciliationFailed = true;\n this._monitor.recordReconciliation({ success: false });\n throw err;\n }\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 try {\n await this._reconnect();\n this._monitor.recordReconnect({ success: true });\n } catch (err) {\n this._monitor.recordReconnect({ success: false });\n throw err;\n }\n });\n\n this._createClient();\n log.trace('dxos.mesh.signal-client.open', trace.end({ id: this._instanceId }));\n }\n\n protected override async _catch(err: Error) {\n if (this._state === SignalState.CLOSED || this._ctx.disposed) {\n return;\n }\n // Don't log consecutive reconciliation failures.\n if (this._state === SignalState.CONNECTED && !this._lastReconciliationFailed) {\n log.warn('SignalClient error:', err);\n }\n this._scheduleReconcileAfterError();\n }\n\n protected override async _close() {\n log('closing...');\n if ([SignalState.CLOSED].includes(this._state)) {\n return;\n }\n\n this._setState(SignalState.CLOSED);\n await this._safeResetClient();\n\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 ...this._monitor.getRecordedTimestamps(),\n };\n }\n\n async join(args: { topic: PublicKey; peerId: PublicKey }): Promise<void> {\n log('joining', { topic: args.topic, peerId: args.peerId });\n this._monitor.recordJoin();\n this.localState.join(args);\n this._reconcileTask?.schedule();\n }\n\n async leave(args: { topic: PublicKey; peerId: PublicKey }): Promise<void> {\n log('leaving', { topic: args.topic, peerId: args.peerId });\n this._monitor.recordLeave();\n this.localState.leave(args);\n }\n\n async sendMessage(msg: Message): Promise<void> {\n return this._monitor.recordMessageSending(msg, async () => {\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\n async subscribeMessages(peerId: PublicKey) {\n log('subscribing to messages', { peerId });\n this.localState.subscribeMessages(peerId);\n this._reconcileTask?.schedule();\n }\n\n async unsubscribeMessages(peerId: PublicKey) {\n log('unsubscribing from messages', { peerId });\n this.localState.unsubscribeMessages(peerId);\n }\n\n private _scheduleReconcileAfterError() {\n scheduleTask(this._ctx, () => this._reconcileTask!.schedule(), ERROR_RECONCILE_DELAY);\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._monitor.recordConnectionStartTime();\n\n // Create new context for each connection.\n this._connectionCtx = this._ctx.derive();\n this._connectionCtx.onDispose(async () => {\n log('connection context disposed');\n const { failureCount } = await this.localState.safeCloseStreams();\n this._monitor.recordStreamCloseErrors(failureCount);\n });\n\n try {\n const client = new SignalRPCClient({\n url: this._host,\n callbacks: {\n onConnected: () => {\n if (client === this._client) {\n log('socket connected');\n this._onConnected();\n }\n },\n\n onDisconnected: () => {\n if (client !== this._client) {\n return;\n }\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 } else {\n this._onDisconnected();\n }\n },\n\n onError: (error) => {\n if (client === this._client) {\n log('socket error', { error, state: this._state });\n this._onDisconnected({ error });\n }\n },\n getMetadata: this._getMetadata,\n },\n });\n this._client = client;\n } catch (error: any) {\n this._client = undefined;\n this._onDisconnected({ error });\n }\n }\n\n private async _reconnect() {\n log(`reconnecting in ${this._reconnectAfter}ms`, { state: this._state });\n\n if (this._state === SignalState.RECONNECTING) {\n log.info('Signal api already reconnecting.');\n return;\n }\n if (this._state === SignalState.CLOSED) {\n return;\n }\n this._setState(SignalState.RECONNECTING);\n\n await this._safeResetClient();\n\n await cancelWithContext(this._ctx!, sleep(this._reconnectAfter));\n\n this._createClient();\n }\n\n private _onConnected() {\n this._lastError = undefined;\n this._lastReconciliationFailed = false;\n this._reconnectAfter = DEFAULT_RECONNECT_TIMEOUT;\n this._setState(SignalState.CONNECTED);\n this._clientReady.wake();\n this._reconcileTask!.schedule();\n }\n\n private _onDisconnected(options?: { error: Error }) {\n this._updateReconnectTimeout();\n if (this._state === SignalState.CLOSED) {\n return;\n }\n if (options?.error) {\n this._lastError = options.error;\n this._setState(SignalState.ERROR);\n } else {\n this._setState(SignalState.DISCONNECTED);\n }\n this._reconnectTask!.schedule();\n }\n\n private _setState(newState: SignalState) {\n this._state = newState;\n this._monitor.recordStateChangeTime();\n log('signal state changed', { status: this.getStatus() });\n this.statusChanged.emit(this.getStatus());\n }\n\n private _updateReconnectTimeout() {\n if (this._state !== SignalState.CONNECTED && this._state !== SignalState.CONNECTING) {\n this._reconnectAfter *= 2;\n this._reconnectAfter = Math.min(this._reconnectAfter, MAX_RECONNECT_TIMEOUT);\n }\n }\n\n private async _safeResetClient() {\n await this._connectionCtx?.dispose();\n this._connectionCtx = undefined;\n\n this._clientReady.reset();\n await this._client?.close().catch(() => {});\n this._client = undefined;\n }\n}\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { trace } from '@dxos/tracing';\n\nimport type { Message } from '../signal-methods';\n\nexport class SignalClientMonitor {\n private readonly _performance = {\n sentMessages: 0,\n receivedMessages: 0,\n reconnectCounter: 0,\n joinCounter: 0,\n leaveCounter: 0,\n };\n\n /**\n * Timestamp of when the connection attempt was began.\n */\n private _connectionStarted = new Date();\n /**\n * Timestamp of last state change.\n */\n private _lastStateChange = new Date();\n\n public getRecordedTimestamps() {\n return {\n connectionStarted: this._connectionStarted,\n lastStateChange: this._lastStateChange,\n };\n }\n\n public recordStateChangeTime() {\n this._lastStateChange = new Date();\n }\n\n public recordConnectionStartTime() {\n this._connectionStarted = new Date();\n }\n\n public recordReconnect(params: { success: boolean }) {\n this._performance.reconnectCounter++;\n trace.metrics.increment('mesh.signal.signal-client.reconnect', 1, {\n tags: {\n success: params.success,\n },\n });\n }\n\n public recordJoin() {\n this._performance.joinCounter++;\n }\n\n public recordLeave() {\n this._performance.leaveCounter++;\n }\n\n public recordMessageReceived(message: Message) {\n this._performance.receivedMessages++;\n trace.metrics.increment('mesh.signal.signal-client.received-total', 1, {\n tags: createIdentityTags(message),\n });\n trace.metrics.distribution('mesh.signal.signal-client.bytes-in', getByteCount(message), {\n tags: createIdentityTags(message),\n });\n }\n\n public async recordMessageSending(message: Message, sendMessage: () => Promise<void>) {\n this._performance.sentMessages++;\n const tags = createIdentityTags(message);\n let success = true;\n try {\n const reqStart = Date.now();\n await sendMessage();\n const reqDuration = Date.now() - reqStart;\n trace.metrics.distribution('mesh.signal.signal-client.send-duration', reqDuration, { tags });\n trace.metrics.distribution('mesh.signal.signal-client.bytes-out', getByteCount(message), { tags });\n } catch (err) {\n success = false;\n }\n trace.metrics.increment('mesh.signal.signal-client.sent-total', 1, {\n tags: { ...tags, success },\n });\n }\n\n public recordStreamCloseErrors(count: number) {\n trace.metrics.increment('mesh.signal.signal-client.stream-close-errors', count);\n }\n\n public recordReconciliation(params: { success: boolean }) {\n trace.metrics.increment('mesh.signal.signal-client.reconciliation', 1, {\n tags: {\n success: params.success,\n },\n });\n }\n}\n\nconst getByteCount = (message: Message): number => {\n return (\n message.author.asUint8Array().length +\n message.recipient.asUint8Array().length +\n message.payload.type_url.length +\n message.payload.value.length\n );\n};\n\nconst createIdentityTags = (message: Message) => {\n return { peer: message.author.toHex() };\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { asyncTimeout, Event } from '@dxos/async';\nimport type { Any, Stream } from '@dxos/codec-protobuf';\nimport { cancelWithContext, type Context } from '@dxos/context';\nimport { PublicKey } from '@dxos/keys';\nimport { log } from '@dxos/log';\nimport { type Message as SignalMessage, type SwarmEvent } from '@dxos/protocols/proto/dxos/mesh/signal';\nimport { ComplexMap, ComplexSet, safeAwaitAll } from '@dxos/util';\n\nimport { type SignalRPCClient } from './signal-rpc-client';\nimport type { Message } from '../signal-methods';\n\nexport class SignalLocalState {\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 * Represent desired message subscriptions.\n */\n private readonly _subscribedMessages = new ComplexSet<{ peerId: PublicKey }>(({ peerId }) => peerId.toHex());\n\n /**\n * Message streams. Keys represents actually subscribed peers.\n * @internal\n */\n readonly messageStreams = new ComplexMap<PublicKey, Stream<SignalMessage>>((key) => key.toHex());\n\n /**\n * Event to use in tests to wait till subscription is successfully established.\n * @internal\n */\n readonly reconciled = new Event();\n\n constructor(\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\n async safeCloseStreams(): Promise<{ failureCount: number }> {\n const streams = ([...this._swarmStreams.values()] as Stream<any>[]).concat([...this.messageStreams.values()]);\n this._swarmStreams.clear();\n this.messageStreams.clear();\n const failureCount = (await safeAwaitAll(streams, (s) => s.close())).length;\n return { failureCount };\n }\n\n join({ topic, peerId }: { topic: PublicKey; peerId: PublicKey }) {\n this._joinedTopics.add({ topic, peerId });\n }\n\n leave({ topic, peerId }: { topic: PublicKey; peerId: PublicKey }) {\n void this._swarmStreams.get({ topic, peerId })?.close();\n this._swarmStreams.delete({ topic, peerId });\n this._joinedTopics.delete({ topic, peerId });\n }\n\n subscribeMessages(peerId: PublicKey) {\n this._subscribedMessages.add({ peerId });\n }\n\n unsubscribeMessages(peerId: PublicKey) {\n log('unsubscribing from messages', { peerId });\n this._subscribedMessages.delete({ peerId });\n void this.messageStreams.get(peerId)?.close();\n this.messageStreams.delete(peerId);\n }\n\n public async reconcile(ctx: Context, client: SignalRPCClient) {\n await this._reconcileSwarmSubscriptions(ctx, client);\n await this._reconcileMessageSubscriptions(ctx, client);\n this.reconciled.emit();\n }\n\n private async _reconcileSwarmSubscriptions(ctx: Context, client: SignalRPCClient): Promise<void> {\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 void 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(cancelWithContext(ctx, client.join({ topic, peerId })), 5_000);\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 if (this._joinedTopics.has({ topic, peerId })) {\n log('swarm event', { swarmEvent });\n await this._onSwarmEvent({ topic, swarmEvent });\n }\n });\n\n // Saving swarm stream.\n this._swarmStreams.set({ topic, peerId }, swarmStream);\n }\n }\n\n private async _reconcileMessageSubscriptions(ctx: Context, client: SignalRPCClient): Promise<void> {\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 void 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(cancelWithContext(ctx, client.receiveMessages(peerId)), 5_000);\n messageStream.subscribe(async (signalMessage: SignalMessage) => {\n if (this._subscribedMessages.has({ peerId })) {\n const message: Message = {\n author: PublicKey.from(signalMessage.author),\n recipient: PublicKey.from(signalMessage.recipient),\n payload: signalMessage.payload,\n };\n await this._onMessage(message);\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 { scheduleTaskInterval, TimeoutError, Trigger } from '@dxos/async';\nimport { type Any, type Stream } 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 { type Message as SignalMessage, type Signal } from '@dxos/protocols/proto/dxos/mesh/signal';\nimport { createProtoRpcPeer, type ProtoRpcPeer } from '@dxos/rpc';\n\nimport { SignalRpcClientMonitor } from './signal-rpc-client-monitor';\n\nconst SIGNAL_KEEPALIVE_INTERVAL = 10000;\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 getMetadata?: () => any;\n};\n\nexport type SignalRPCClientParams = {\n url: string;\n callbacks?: SignalCallbacks;\n};\n\nexport class SignalRPCClient {\n private readonly _socket: WebSocket;\n private readonly _rpc: ProtoRpcPeer<Services>;\n private readonly _connectTrigger = new Trigger();\n\n private _keepaliveCtx?: Context;\n\n private _closed = false;\n\n private readonly _url: string;\n private readonly _callbacks: SignalCallbacks;\n private readonly _closeComplete = new Trigger();\n\n private readonly _monitor = new SignalRpcClientMonitor();\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 if (this._closed) {\n await this._safeCloseRpc();\n return;\n }\n log(`RPC open ${this._url}`);\n this._callbacks.onConnected?.();\n this._connectTrigger.wake();\n this._keepaliveCtx = new Context();\n scheduleTaskInterval(\n this._keepaliveCtx,\n async () => {\n // TODO(nf): use RFC6455 ping/pong once implemented in the browser?\n // TODO(nf): check for pong response from server (once implemented)\n // Current implementation of signal server ignores all text data messages, and does not send a response.\n // However this is enough to detect breakages in the connection as TCP will reset the connection if ACKs are not received.\n this._socket?.send('__ping__');\n },\n SIGNAL_KEEPALIVE_INTERVAL,\n );\n } catch (err: any) {\n this._callbacks.onError?.(err);\n this._socket.close();\n this._closed = true;\n }\n };\n\n this._socket.onclose = async () => {\n log(`Disconnected ${this._url}`);\n this._callbacks.onDisconnected?.();\n this._closeComplete.wake();\n await this.close();\n };\n\n this._socket.onerror = async (event: WebSocket.ErrorEvent) => {\n if (this._closed) {\n this._socket.close();\n return;\n }\n this._closed = true;\n\n this._callbacks.onError?.(event.error ?? new Error(event.message));\n await this._safeCloseRpc();\n\n log.warn(`Socket ${event.type ?? 'unknown'} error`, { message: event.message, url: this._url });\n };\n\n log.trace('dxos.mesh.signal-rpc-client.constructor', trace.end({ id: traceId }));\n }\n\n async close() {\n if (this._closed) {\n return;\n }\n this._closed = true;\n\n await this._keepaliveCtx?.dispose();\n try {\n await this._safeCloseRpc();\n\n if (this._socket.readyState === WebSocket.OPEN || this._socket.readyState === WebSocket.CONNECTING) {\n // close() only starts the closing handshake.\n this._socket.close();\n }\n\n await this._closeComplete.wait({ timeout: 1_000 });\n } catch (err) {\n const failureReason = err instanceof TimeoutError ? 'timeout' : err?.constructor?.name ?? 'unknown';\n this._monitor.recordClientCloseFailure({ failureReason });\n }\n }\n\n async join({ topic, peerId }: { topic: PublicKey; peerId: PublicKey }) {\n log('join', { topic, peerId, metadata: this._callbacks?.getMetadata?.() });\n invariant(!this._closed, 'SignalRPCClient is closed');\n await this._connectTrigger.wait();\n const swarmStream = this._rpc.rpc.Signal.join({\n swarm: topic.asUint8Array(),\n peer: peerId.asUint8Array(),\n metadata: this._callbacks?.getMetadata?.(),\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 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, metadata: this._callbacks?.getMetadata?.() });\n invariant(!this._closed, 'SignalRPCClient is closed');\n await this._connectTrigger.wait();\n await this._rpc.rpc.Signal.sendMessage({\n author: author.asUint8Array(),\n recipient: recipient.asUint8Array(),\n payload,\n metadata: this._callbacks?.getMetadata?.(),\n });\n }\n\n private async _safeCloseRpc() {\n try {\n this._connectTrigger.reset();\n await this._rpc.close();\n } catch (err) {\n log.catch(err);\n }\n }\n}\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { trace } from '@dxos/tracing';\n\nexport class SignalRpcClientMonitor {\n public recordClientCloseFailure(params: { failureReason: string }) {\n trace.metrics.increment('mesh.signal.signal-rpc-client.close-failure', 1, {\n tags: {\n reason: params.failureReason,\n },\n });\n }\n}\n", "//\n// Copyright 2020 DXOS.org\n//\n\nimport { Event, Trigger } from '@dxos/async';\nimport { type 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 { type SwarmEvent } from '@dxos/protocols/proto/dxos/mesh/signal';\nimport { ComplexMap, ComplexSet } from '@dxos/util';\n\nimport { type SignalManager } from './signal-manager';\nimport { type SignalStatus } from '../signal-methods';\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 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 constructor(private readonly _context: MemorySignalManagerContext) {\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, sleep, synchronized } from '@dxos/async';\nimport { type 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 { RateLimitExceededError, TimeoutError, trace } from '@dxos/protocols';\nimport { type Runtime } from '@dxos/protocols/proto/dxos/config';\nimport { type SwarmEvent } from '@dxos/protocols/proto/dxos/mesh/signal';\nimport { BitField, safeAwaitAll } from '@dxos/util';\n\nimport { type SignalManager } from './signal-manager';\nimport { WebsocketSignalManagerMonitor } from './websocket-signal-manager-monitor';\nimport { SignalClient } from '../signal-client';\nimport { type SignalClientMethods, type SignalMethods, type SignalStatus } from '../signal-methods';\n\nconst MAX_SERVER_FAILURES = 5;\nconst WSS_SIGNAL_SERVER_REBOOT_DELAY = 3_000;\n\n/**\n * Manages connection to multiple Signal Servers over WebSocket\n */\nexport class WebsocketSignalManager implements SignalManager {\n private readonly _servers = new Map<string, SignalClientMethods>();\n private readonly _monitor = new WebsocketSignalManagerMonitor();\n\n /**\n * Used to avoid logging failed server restarts more than once until the server actually recovers.\n */\n private readonly _failedServersBitfield: Uint8Array;\n\n private _ctx!: Context;\n private _opened = false;\n\n readonly failureCount = new Map<string, number>();\n readonly statusChanged = new Event<SignalStatus[]>();\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 constructor(\n private readonly _hosts: Runtime.Services.Signal[],\n private readonly _getMetadata?: () => any,\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\n // TODO(burdon): Create factory to support different variants.\n const server = new SignalClient(\n host.server,\n async (message) => this.onMessage.emit(message),\n async (data) => this.swarmEvent.emit(data),\n this._getMetadata,\n );\n\n server.statusChanged.on(() => this.statusChanged.emit(this.getStatus()));\n\n this._servers.set(host.server, server);\n this.failureCount.set(host.server, 0);\n }\n this._failedServersBitfield = BitField.zeros(this._hosts.length);\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 await safeAwaitAll(this._servers.values(), (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 @synchronized\n async close() {\n if (!this._opened) {\n return;\n }\n this._opened = false;\n await this._ctx.dispose();\n await safeAwaitAll(this._servers.values(), (server) => server.close());\n }\n\n async restartServer(serverName: string) {\n log('restarting server', { serverName });\n invariant(this._opened, 'server already closed');\n\n const server = this._servers.get(serverName);\n invariant(server, 'server not found');\n\n await server.close();\n await sleep(WSS_SIGNAL_SERVER_REBOOT_DELAY);\n await server.open();\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 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, serverName, index) => {\n void server\n .sendMessage({ author, recipient, payload })\n .then(() => this._clearServerFailedFlag(serverName, index))\n .catch((err) => {\n if (err instanceof RateLimitExceededError) {\n log.info('WSS rate limit exceeded', { err });\n this._monitor.recordRateLimitExceeded();\n } else if (err instanceof TimeoutError || err.constructor.name === 'TimeoutError') {\n log.info('WSS sendMessage timeout', { err });\n void this.checkServerFailure(serverName, index);\n } else {\n log.warn(`error sending to ${serverName}`, { err });\n void this.checkServerFailure(serverName, index);\n }\n });\n });\n }\n\n @synchronized\n async checkServerFailure(serverName: string, index: number) {\n const failureCount = this.failureCount.get(serverName!) ?? 0;\n const isRestartRequired = failureCount > MAX_SERVER_FAILURES;\n this._monitor.recordServerFailure({ serverName, willRestart: isRestartRequired });\n if (isRestartRequired) {\n if (!BitField.get(this._failedServersBitfield, index)) {\n log.warn('too many failures for ws-server, restarting', { serverName, failureCount });\n BitField.set(this._failedServersBitfield, index, true);\n }\n await this.restartServer(serverName!);\n this.failureCount.set(serverName!, 0);\n return;\n }\n\n this.failureCount.set(serverName!, (this.failureCount.get(serverName!) ?? 0) + 1);\n }\n\n private _clearServerFailedFlag(serverName: string, index: number) {\n if (BitField.get(this._failedServersBitfield, index)) {\n log.info('server connection restored', { serverName });\n BitField.set(this._failedServersBitfield, index, false);\n this.failureCount.set(serverName!, 0);\n }\n }\n\n async subscribeMessages(peerId: PublicKey) {\n log('subscribed for message stream', { 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 });\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>(\n fn: (server: SignalMethods, serverName: string, index: number) => Promise<ReturnType>,\n ): Promise<ReturnType[]> {\n return Promise.all(\n Array.from(this._servers.entries()).map(([serverName, server], idx) => fn(server, serverName, idx)),\n );\n }\n}\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { trace } from '@dxos/tracing';\n\nexport class WebsocketSignalManagerMonitor {\n public recordRateLimitExceeded() {\n trace.metrics.increment('mesh.signal.signal-manager.rate-limit-hit', 1);\n }\n\n public recordServerFailure(params: { serverName: string; willRestart: boolean }) {\n trace.metrics.increment('mesh.signal.signal-manager.server-failure', 1, {\n tags: {\n server: params.serverName,\n restarted: params.willRestart,\n },\n });\n }\n}\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { invariant } from '@dxos/invariant';\nimport { log } from '@dxos/log';\nimport { type DevicesService, type IdentityService } from '@dxos/protocols/proto/dxos/client/services';\nimport { DeviceKind } from '@dxos/protocols/proto/dxos/client/services';\n\nexport const setIdentityTags = ({\n identityService,\n devicesService,\n setTag,\n}: {\n identityService: IdentityService;\n devicesService: DevicesService;\n setTag: (k: string, v: string) => void;\n}) => {\n identityService.queryIdentity().subscribe((idqr) => {\n if (!idqr?.identity?.identityKey) {\n log('empty response from identity service', { idqr });\n return;\n }\n\n setTag('identityKey', idqr.identity.identityKey.truncate());\n });\n\n devicesService.queryDevices().subscribe((dqr) => {\n if (!dqr || !dqr.devices || dqr.devices.length === 0) {\n log('empty response from device service', { device: dqr });\n return;\n }\n invariant(dqr, 'empty response from device service');\n\n const thisDevice = dqr.devices.find((device) => device.kind === DeviceKind.CURRENT);\n if (!thisDevice) {\n log('no current device', { device: dqr });\n return;\n }\n setTag('deviceKey', thisDevice.deviceKey.truncate());\n });\n};\n"],
5
- "mappings": "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",
5
+ "mappings": "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",
6
6
  "names": ["import_async", "import_context", "import_invariant", "import_keys", "import_log", "import_protocols", "import_tracing", "import_util", "MessengerMonitor", "recordMessageAckFailed", "trace", "metrics", "increment", "recordReliableMessage", "params", "tags", "success", "sent", "attempts", "sendAttempts", "MESSAGE_TIMEOUT", "ReliablePayload", "schema", "getCodecForType", "Acknowledgement", "RECEIVED_MESSAGES_GC_INTERVAL", "Messenger", "constructor", "signalManager", "retryDelay", "_monitor", "ComplexMap", "peerId", "payloadType", "toHex", "PublicKey", "hash", "_onAckCallbacks", "_receivedMessages", "ComplexSet", "_closed", "_signalManager", "_retryDelay", "open", "traceId", "random", "log", "begin", "id", "_ctx", "Context", "onError", "err", "catch", "onDispose", "onMessage", "on", "message", "from", "author", "_handleMessage", "scheduleTaskInterval", "_performGc", "end", "close", "dispose", "sendMessage", "recipient", "payload", "invariant", "messageContext", "derive", "reliablePayload", "messageId", "has", "messageReceived", "timeoutHit", "promise", "Promise", "resolve", "reject", "scheduleExponentialBackoffTaskInterval", "_encodeAndSend", "scheduleTask", "delete", "ProtocolTimeoutError", "TimeoutError", "set", "listen", "subscribeMessages", "listeners", "_defaultListeners", "get", "Set", "_listeners", "add", "unsubscribe", "type_url", "value", "encode", "preserveAny", "_handleReliablePayload", "_handleAcknowledgement", "decode", "_sendAcknowledgement", "_callListeners", "to", "defaultListenerMap", "listener", "listenerMap", "start", "performance", "now", "key", "_toClear", "keys", "clear", "elapsed", "warn", "SignalClientMonitor", "_performance", "sentMessages", "receivedMessages", "reconnectCounter", "joinCounter", "leaveCounter", "Date", "getRecordedTimestamps", "connectionStarted", "_connectionStarted", "lastStateChange", "_lastStateChange", "recordStateChangeTime", "recordConnectionStartTime", "recordReconnect", "recordJoin", "recordLeave", "recordMessageReceived", "createIdentityTags", "distribution", "getByteCount", "recordMessageSending", "reqStart", "reqDuration", "recordStreamCloseErrors", "count", "recordReconciliation", "asUint8Array", "length", "peer", "SignalLocalState", "_onMessage", "_onSwarmEvent", "_swarmStreams", "topic", "_joinedTopics", "_subscribedMessages", "messageStreams", "reconciled", "Event", "safeCloseStreams", "streams", "values", "concat", "failureCount", "safeAwaitAll", "s", "join", "leave", "unsubscribeMessages", "reconcile", "ctx", "client", "_reconcileSwarmSubscriptions", "_reconcileMessageSubscriptions", "emit", "swarmStream", "asyncTimeout", "cancelWithContext", "subscribe", "swarmEvent", "messageStream", "receiveMessages", "signalMessage", "SignalRpcClientMonitor", "recordClientCloseFailure", "reason", "failureReason", "SIGNAL_KEEPALIVE_INTERVAL", "SignalRPCClient", "url", "callbacks", "_connectTrigger", "Trigger", "_closeComplete", "_url", "_callbacks", "_socket", "WebSocket", "_rpc", "createProtoRpcPeer", "requested", "Signal", "getService", "noHandshake", "port", "send", "msg", "cb", "onmessage", "Blob", "data", "Buffer", "arrayBuffer", "encodingOptions", "onopen", "_safeCloseRpc", "onConnected", "wake", "_keepaliveCtx", "onclose", "onDisconnected", "onerror", "event", "error", "Error", "type", "readyState", "OPEN", "CONNECTING", "wait", "timeout", "name", "metadata", "getMetadata", "rpc", "swarm", "waitUntilReady", "reset", "DEFAULT_RECONNECT_TIMEOUT", "MAX_RECONNECT_TIMEOUT", "ERROR_RECONCILE_DELAY", "RECONCILE_INTERVAL", "SignalClient", "Resource", "_host", "onSwarmEvent", "_getMetadata", "_state", "SignalState", "CLOSED", "_lastReconciliationFailed", "_clientReady", "_reconnectAfter", "_instanceId", "statusChanged", "startsWith", "localState", "_open", "CONNECTED", "includes", "_setState", "_reconcileTask", "DeferredTask", "_connectionCtx", "_client", "schedule", "_reconnectTask", "_reconnect", "_createClient", "_catch", "disposed", "_scheduleReconcileAfterError", "_close", "_safeResetClient", "getStatus", "host", "state", "_lastError", "reconnectIn", "args", "_onConnected", "ERROR", "DISCONNECTED", "_onDisconnected", "undefined", "RECONNECTING", "info", "sleep", "options", "_updateReconnectTimeout", "newState", "status", "Math", "min", "MemorySignalManagerContext", "MemorySignalManager", "_context", "_joinedSwarms", "_freezeTrigger", "all", "map", "joinedSwarmsCopy", "swarms", "peerAvailable", "since", "peerIds", "Array", "forEach", "peerLeft", "dec", "remote", "connections", "then", "freeze", "unfreeze", "endsWith", "relPayload", "Object", "sessionId", "WebsocketSignalManagerMonitor", "recordRateLimitExceeded", "recordServerFailure", "server", "serverName", "restarted", "willRestart", "MAX_SERVER_FAILURES", "WSS_SIGNAL_SERVER_REBOOT_DELAY", "WebsocketSignalManager", "_hosts", "_servers", "Map", "_opened", "hosts", "_failedServersBitfield", "BitField", "zeros", "_initContext", "restartServer", "_forEachServer", "index", "_clearServerFailedFlag", "RateLimitExceededError", "checkServerFailure", "isRestartRequired", "fn", "entries", "idx", "synchronized", "setIdentityTags", "identityService", "devicesService", "setTag", "queryIdentity", "idqr", "identity", "identityKey", "truncate", "queryDevices", "dqr", "devices", "device", "thisDevice", "find", "kind", "DeviceKind", "CURRENT", "deviceKey"]
7
7
  }
@@ -1 +1 @@
1
- {"inputs":{"packages/core/mesh/messaging/src/messenger-monitor.ts":{"bytes":2050,"imports":[{"path":"@dxos/tracing","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/messaging/src/timeouts.ts":{"bytes":692,"imports":[],"format":"esm"},"packages/core/mesh/messaging/src/messenger.ts":{"bytes":36500,"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/messenger-monitor.ts","kind":"import-statement","original":"./messenger-monitor"},{"path":"packages/core/mesh/messaging/src/timeouts.ts","kind":"import-statement","original":"./timeouts"}],"format":"esm"},"packages/core/mesh/messaging/src/signal-client/signal-client-monitor.ts":{"bytes":11000,"imports":[{"path":"@dxos/tracing","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/messaging/src/signal-client/signal-local-state.ts":{"bytes":20447,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/messaging/src/signal-client/signal-rpc-client-monitor.ts":{"bytes":1597,"imports":[{"path":"@dxos/tracing","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/messaging/src/signal-client/signal-rpc-client.ts":{"bytes":25822,"imports":[{"path":"isomorphic-ws","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/rpc","kind":"import-statement","external":true},{"path":"packages/core/mesh/messaging/src/signal-client/signal-rpc-client-monitor.ts","kind":"import-statement","original":"./signal-rpc-client-monitor"}],"format":"esm"},"packages/core/mesh/messaging/src/signal-client/signal-client.ts":{"bytes":40703,"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":"packages/core/mesh/messaging/src/signal-client/signal-client-monitor.ts","kind":"import-statement","original":"./signal-client-monitor"},{"path":"packages/core/mesh/messaging/src/signal-client/signal-local-state.ts","kind":"import-statement","original":"./signal-local-state"},{"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":527,"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":24675,"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":1346,"imports":[],"format":"esm"},"packages/core/mesh/messaging/src/signal-manager/websocket-signal-manager-monitor.ts":{"bytes":2204,"imports":[{"path":"@dxos/tracing","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/messaging/src/signal-manager/websocket-signal-manager.ts":{"bytes":30719,"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/signal-manager/websocket-signal-manager-monitor.ts","kind":"import-statement","original":"./websocket-signal-manager-monitor"},{"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/utils.ts":{"bytes":5247,"imports":[{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols/proto/dxos/client/services","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/messaging/src/signal-manager/index.ts":{"bytes":867,"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"},{"path":"packages/core/mesh/messaging/src/signal-manager/utils.ts","kind":"import-statement","original":"./utils"}],"format":"esm"},"packages/core/mesh/messaging/src/signal-methods.ts":{"bytes":2450,"imports":[],"format":"esm"},"packages/core/mesh/messaging/src/index.ts":{"bytes":818,"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":92539},"packages/core/mesh/messaging/dist/lib/node/index.cjs":{"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/tracing","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/tracing","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","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/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/rpc","kind":"import-statement","external":true},{"path":"@dxos/tracing","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},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"@dxos/tracing","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols/proto/dxos/client/services","kind":"import-statement","external":true}],"exports":["MemorySignalManager","MemorySignalManagerContext","Messenger","SignalClient","WebsocketSignalManager","setIdentityTags"],"entryPoint":"packages/core/mesh/messaging/src/index.ts","inputs":{"packages/core/mesh/messaging/src/messenger.ts":{"bytesInOutput":10037},"packages/core/mesh/messaging/src/messenger-monitor.ts":{"bytesInOutput":382},"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":11017},"packages/core/mesh/messaging/src/signal-client/signal-client-monitor.ts":{"bytesInOutput":2801},"packages/core/mesh/messaging/src/signal-client/signal-local-state.ts":{"bytesInOutput":4459},"packages/core/mesh/messaging/src/signal-client/signal-rpc-client.ts":{"bytesInOutput":6725},"packages/core/mesh/messaging/src/signal-client/signal-rpc-client-monitor.ts":{"bytesInOutput":278},"packages/core/mesh/messaging/src/signal-client/index.ts":{"bytesInOutput":0},"packages/core/mesh/messaging/src/signal-manager/memory-signal-manager.ts":{"bytesInOutput":6623},"packages/core/mesh/messaging/src/signal-manager/index.ts":{"bytesInOutput":0},"packages/core/mesh/messaging/src/signal-manager/websocket-signal-manager.ts":{"bytesInOutput":9512},"packages/core/mesh/messaging/src/signal-manager/websocket-signal-manager-monitor.ts":{"bytesInOutput":426},"packages/core/mesh/messaging/src/signal-manager/utils.ts":{"bytesInOutput":1597}},"bytes":55158}}}
1
+ {"inputs":{"packages/core/mesh/messaging/src/messenger-monitor.ts":{"bytes":2050,"imports":[{"path":"@dxos/tracing","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/messaging/src/timeouts.ts":{"bytes":692,"imports":[],"format":"esm"},"packages/core/mesh/messaging/src/messenger.ts":{"bytes":36568,"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/messenger-monitor.ts","kind":"import-statement","original":"./messenger-monitor"},{"path":"packages/core/mesh/messaging/src/timeouts.ts","kind":"import-statement","original":"./timeouts"}],"format":"esm"},"packages/core/mesh/messaging/src/signal-client/signal-client-monitor.ts":{"bytes":11000,"imports":[{"path":"@dxos/tracing","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/messaging/src/signal-client/signal-local-state.ts":{"bytes":20447,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/messaging/src/signal-client/signal-rpc-client-monitor.ts":{"bytes":1597,"imports":[{"path":"@dxos/tracing","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/messaging/src/signal-client/signal-rpc-client.ts":{"bytes":25921,"imports":[{"path":"isomorphic-ws","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/rpc","kind":"import-statement","external":true},{"path":"packages/core/mesh/messaging/src/signal-client/signal-rpc-client-monitor.ts","kind":"import-statement","original":"./signal-rpc-client-monitor"}],"format":"esm"},"packages/core/mesh/messaging/src/signal-client/signal-client.ts":{"bytes":40703,"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":"packages/core/mesh/messaging/src/signal-client/signal-client-monitor.ts","kind":"import-statement","original":"./signal-client-monitor"},{"path":"packages/core/mesh/messaging/src/signal-client/signal-local-state.ts","kind":"import-statement","original":"./signal-local-state"},{"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":527,"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":24823,"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":1346,"imports":[],"format":"esm"},"packages/core/mesh/messaging/src/signal-manager/websocket-signal-manager-monitor.ts":{"bytes":2204,"imports":[{"path":"@dxos/tracing","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/messaging/src/signal-manager/websocket-signal-manager.ts":{"bytes":30788,"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/signal-manager/websocket-signal-manager-monitor.ts","kind":"import-statement","original":"./websocket-signal-manager-monitor"},{"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/utils.ts":{"bytes":5247,"imports":[{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols/proto/dxos/client/services","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/messaging/src/signal-manager/index.ts":{"bytes":867,"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"},{"path":"packages/core/mesh/messaging/src/signal-manager/utils.ts","kind":"import-statement","original":"./utils"}],"format":"esm"},"packages/core/mesh/messaging/src/signal-methods.ts":{"bytes":2450,"imports":[],"format":"esm"},"packages/core/mesh/messaging/src/index.ts":{"bytes":818,"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":92572},"packages/core/mesh/messaging/dist/lib/node/index.cjs":{"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/tracing","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/tracing","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","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/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/rpc","kind":"import-statement","external":true},{"path":"@dxos/tracing","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},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"@dxos/tracing","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols/proto/dxos/client/services","kind":"import-statement","external":true}],"exports":["MemorySignalManager","MemorySignalManagerContext","Messenger","SignalClient","WebsocketSignalManager","setIdentityTags"],"entryPoint":"packages/core/mesh/messaging/src/index.ts","inputs":{"packages/core/mesh/messaging/src/messenger.ts":{"bytesInOutput":10081},"packages/core/mesh/messaging/src/messenger-monitor.ts":{"bytesInOutput":382},"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":11017},"packages/core/mesh/messaging/src/signal-client/signal-client-monitor.ts":{"bytesInOutput":2801},"packages/core/mesh/messaging/src/signal-client/signal-local-state.ts":{"bytesInOutput":4459},"packages/core/mesh/messaging/src/signal-client/signal-rpc-client.ts":{"bytesInOutput":6789},"packages/core/mesh/messaging/src/signal-client/signal-rpc-client-monitor.ts":{"bytesInOutput":278},"packages/core/mesh/messaging/src/signal-client/index.ts":{"bytesInOutput":0},"packages/core/mesh/messaging/src/signal-manager/memory-signal-manager.ts":{"bytesInOutput":6725},"packages/core/mesh/messaging/src/signal-manager/index.ts":{"bytesInOutput":0},"packages/core/mesh/messaging/src/signal-manager/websocket-signal-manager.ts":{"bytesInOutput":9558},"packages/core/mesh/messaging/src/signal-manager/websocket-signal-manager-monitor.ts":{"bytesInOutput":426},"packages/core/mesh/messaging/src/signal-manager/utils.ts":{"bytesInOutput":1597}},"bytes":55414}}}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dxos/messaging",
3
- "version": "0.5.9-main.a2de4fa",
3
+ "version": "0.5.9-main.a75fa71",
4
4
  "description": "Messaging",
5
5
  "homepage": "https://dxos.org",
6
6
  "bugs": "https://github.com/dxos/dxos/issues",
@@ -19,24 +19,24 @@
19
19
  "dependencies": {
20
20
  "isomorphic-ws": "^5.0.0",
21
21
  "ws": "^8.14.2",
22
- "@dxos/async": "0.5.9-main.a2de4fa",
23
- "@dxos/codec-protobuf": "0.5.9-main.a2de4fa",
24
- "@dxos/invariant": "0.5.9-main.a2de4fa",
25
- "@dxos/context": "0.5.9-main.a2de4fa",
26
- "@dxos/keys": "0.5.9-main.a2de4fa",
27
- "@dxos/node-std": "0.5.9-main.a2de4fa",
28
- "@dxos/log": "0.5.9-main.a2de4fa",
29
- "@dxos/rpc": "0.5.9-main.a2de4fa",
30
- "@dxos/tracing": "0.5.9-main.a2de4fa",
31
- "@dxos/protocols": "0.5.9-main.a2de4fa",
32
- "@dxos/util": "0.5.9-main.a2de4fa"
22
+ "@dxos/async": "0.5.9-main.a75fa71",
23
+ "@dxos/context": "0.5.9-main.a75fa71",
24
+ "@dxos/codec-protobuf": "0.5.9-main.a75fa71",
25
+ "@dxos/invariant": "0.5.9-main.a75fa71",
26
+ "@dxos/keys": "0.5.9-main.a75fa71",
27
+ "@dxos/node-std": "0.5.9-main.a75fa71",
28
+ "@dxos/log": "0.5.9-main.a75fa71",
29
+ "@dxos/protocols": "0.5.9-main.a75fa71",
30
+ "@dxos/rpc": "0.5.9-main.a75fa71",
31
+ "@dxos/tracing": "0.5.9-main.a75fa71",
32
+ "@dxos/util": "0.5.9-main.a75fa71"
33
33
  },
34
34
  "devDependencies": {
35
35
  "@types/node": "^18.11.9",
36
36
  "earljs": "~0.1.10",
37
37
  "typescript": "^5.4.5",
38
38
  "wait-for-expect": "^3.0.2",
39
- "@dxos/signal": "0.5.9-main.a2de4fa"
39
+ "@dxos/signal": "0.5.9-main.a75fa71"
40
40
  },
41
41
  "publishConfig": {
42
42
  "access": "public"