@dxos/messaging 0.6.10 → 0.6.11-staging.32b42e4
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.
|
@@ -1691,12 +1691,8 @@ var WebsocketSignalManagerMonitor = class {
|
|
|
1691
1691
|
// packages/core/mesh/messaging/src/signal-manager/websocket-signal-manager.ts
|
|
1692
1692
|
function _ts_decorate(decorators, target, key, desc) {
|
|
1693
1693
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
1694
|
-
if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
|
|
1695
|
-
|
|
1696
|
-
else
|
|
1697
|
-
for (var i = decorators.length - 1; i >= 0; i--)
|
|
1698
|
-
if (d = decorators[i])
|
|
1699
|
-
r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
1694
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
1695
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
1700
1696
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
1701
1697
|
}
|
|
1702
1698
|
var __dxlog_file6 = "/home/runner/work/dxos/dxos/packages/core/mesh/messaging/src/signal-manager/websocket-signal-manager.ts";
|
|
@@ -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-methods.ts", "../../../src/signal-manager/websocket-signal-manager.ts", "../../../src/signal-manager/websocket-signal-manager-monitor.ts", "../../../src/signal-manager/edge-signal-manager.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, trace } from '@dxos/protocols';\nimport { schema } from '@dxos/protocols/proto';\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 PeerInfo, type Message } from './signal-methods';\nimport { MESSAGE_TIMEOUT } from './timeouts';\n\nexport type OnMessage = (params: Message) => 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: string; payloadType: string }, Set<OnMessage>>(\n ({ peerId, payloadType }) => peerId + payloadType,\n );\n\n // peerId => listeners set\n private readonly _defaultListeners = new Map<string, Set<OnMessage>>();\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 peer,\n payloadType,\n onMessage,\n }: {\n peer: PeerInfo;\n payloadType?: string;\n onMessage: OnMessage;\n }): Promise<ListeningHandle> {\n invariant(!this._closed, 'Closed');\n\n await this._signalManager.subscribeMessages(peer);\n let listeners: Set<OnMessage> | undefined;\n invariant(peer.peerKey, 'Peer key is required');\n\n if (!payloadType) {\n listeners = this._defaultListeners.get(peer.peerKey);\n if (!listeners) {\n listeners = new Set();\n this._defaultListeners.set(peer.peerKey, listeners);\n }\n } else {\n listeners = this._listeners.get({ peerId: peer.peerKey, payloadType });\n if (!listeners) {\n listeners = new Set();\n this._listeners.set({ peerId: peer.peerKey, 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: PeerInfo;\n recipient: PeerInfo;\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: PeerInfo;\n recipient: PeerInfo;\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 invariant(message.recipient.peerKey, 'Peer key is required');\n const defaultListenerMap = this._defaultListeners.get(message.recipient.peerKey);\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.peerKey,\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('dxos.mesh.signal.messenger.failed-ack', 1);\n }\n\n public recordReliableMessage(params: { sendAttempts: number; sent: boolean }) {\n trace.metrics.increment('dxos.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 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 } 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 {\n type PeerInfo,\n type Message,\n type SignalClientMethods,\n type SignalStatus,\n type SwarmEvent,\n} 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 public readonly onMessage = new Event<Message>();\n public readonly swarmEvent = new Event<SwarmEvent>();\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 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(\n async (message) => {\n this._monitor.recordMessageReceived(message);\n this.onMessage.emit(message);\n },\n async (event) => this.swarmEvent.emit(event),\n );\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; peer: PeerInfo }): Promise<void> {\n log('joining', { topic: args.topic, peerId: args.peer.peerKey });\n this._monitor.recordJoin();\n this.localState.join({ topic: args.topic, peerId: PublicKey.from(args.peer.peerKey) });\n this._reconcileTask?.schedule();\n }\n\n async leave(args: { topic: PublicKey; peer: PeerInfo }): Promise<void> {\n log('leaving', { topic: args.topic, peerId: args.peer.peerKey });\n this._monitor.recordLeave();\n this.localState.leave({ topic: args.topic, peerId: PublicKey.from(args.peer.peerKey) });\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 invariant(msg.author.peerKey, 'Author key required');\n invariant(msg.recipient.peerKey, 'Recipient key required');\n await this._client!.sendMessage({\n author: PublicKey.from(msg.author.peerKey),\n recipient: PublicKey.from(msg.recipient.peerKey),\n payload: msg.payload,\n });\n });\n }\n\n async subscribeMessages(peer: PeerInfo) {\n invariant(peer.peerKey, 'Peer key required');\n log('subscribing to messages', { peer });\n this.localState.subscribeMessages(PublicKey.from(peer.peerKey));\n this._reconcileTask?.schedule();\n }\n\n async unsubscribeMessages(peer: PeerInfo) {\n invariant(peer.peerKey, 'Peer key required');\n log('unsubscribing from messages', { peer });\n this.localState.unsubscribeMessages(PublicKey.from(peer.peerKey));\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('dxos.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('dxos.mesh.signal.signal-client.received-total', 1, {\n tags: createIdentityTags(message),\n });\n trace.metrics.distribution('dxos.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('dxos.mesh.signal.signal-client.send-duration', reqDuration, { tags });\n trace.metrics.distribution('dxos.mesh.signal.signal-client.bytes-out', getByteCount(message), { tags });\n } catch (err) {\n success = false;\n }\n trace.metrics.increment('dxos.mesh.signal.signal-client.sent-total', 1, {\n tags: { ...tags, success },\n });\n }\n\n public recordStreamCloseErrors(count: number) {\n trace.metrics.increment('dxos.mesh.signal.signal-client.stream-close-errors', count);\n }\n\n public recordReconciliation(params: { success: boolean }) {\n trace.metrics.increment('dxos.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.peerKey.length +\n message.recipient.peerKey.length +\n message.payload.type_url.length +\n message.payload.value.length\n );\n};\n\nconst createIdentityTags = (message: Message) => {\n return { peer: message.author.peerKey };\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { asyncTimeout, Event } from '@dxos/async';\nimport type { Stream } from '@dxos/codec-protobuf';\nimport { cancelWithContext, type Context } from '@dxos/context';\nimport { PublicKey } from '@dxos/keys';\nimport { log } from '@dxos/log';\nimport {\n type Message as SignalMessage,\n type SwarmEvent as SwarmEventProto,\n} 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, SwarmEvent } 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<SwarmEventProto>>(\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: Message) => Promise<void>,\n private readonly _onSwarmEvent: (params: 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: SwarmEventProto) => {\n if (this._joinedTopics.has({ topic, peerId })) {\n log('swarm event', { swarmEvent });\n const event: SwarmEvent = swarmEvent.peerAvailable\n ? {\n topic,\n peerAvailable: {\n ...swarmEvent.peerAvailable,\n peer: { peerKey: PublicKey.from(swarmEvent.peerAvailable.peer).toHex() },\n },\n }\n : {\n topic,\n peerLeft: {\n ...swarmEvent.peerLeft,\n peer: { peerKey: PublicKey.from(swarmEvent.peerLeft!.peer).toHex() },\n },\n };\n await this._onSwarmEvent(event);\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: { peerKey: PublicKey.from(signalMessage.author).toHex() },\n recipient: { peerKey: PublicKey.from(signalMessage.recipient).toHex() },\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 { trace } from '@dxos/protocols';\nimport { schema } from '@dxos/protocols/proto';\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('dxos.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/proto';\nimport { ComplexMap, ComplexSet } from '@dxos/util';\n\nimport { type SignalManager } from './signal-manager';\nimport { type SwarmEvent, type PeerInfo, type SignalStatus, type Message, PeerInfoHash } 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<SwarmEvent>();\n\n // Mapping from topic to set of peers.\n readonly swarms = new ComplexMap<PublicKey, ComplexSet<PeerInfo>>(PublicKey.hash);\n\n // Map of connections for each peer for signaling.\n readonly connections = new ComplexMap<PeerInfo, MemorySignalManager>(PeerInfoHash);\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<SwarmEvent>();\n\n readonly onMessage = new Event<Message>();\n\n /** Will be used to emit SwarmEvents on .open() and .close() */\n private _joinedSwarms = new ComplexSet<{ topic: PublicKey; peer: PeerInfo }>(\n ({ topic, peer }) => topic.toHex() + peer.peerKey,\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; peer: PeerInfo }>(\n ({ topic, peer }) => topic.toHex() + peer.peerKey,\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, peer }: { topic: PublicKey; peer: PeerInfo }) {\n invariant(!this._ctx.disposed, 'Closed');\n\n this._joinedSwarms.add({ topic, peer });\n\n if (!this._context.swarms.has(topic)) {\n this._context.swarms.set(topic, new ComplexSet(PeerInfoHash));\n }\n\n this._context.swarms.get(topic)!.add(peer);\n this._context.swarmEvent.emit({\n topic,\n peerAvailable: {\n peer,\n since: new Date(),\n },\n });\n\n // Emitting swarm events for each peer.\n for (const [topic, peers] of this._context.swarms) {\n Array.from(peers).forEach((peer) => {\n this.swarmEvent.emit({\n topic,\n peerAvailable: {\n peer,\n since: new Date(),\n },\n });\n });\n }\n }\n\n async leave({ topic, peer }: { topic: PublicKey; peer: PeerInfo }) {\n invariant(!this._ctx.disposed, 'Closed');\n\n this._joinedSwarms.delete({ topic, peer });\n\n if (!this._context.swarms.has(topic)) {\n this._context.swarms.set(topic, new ComplexSet(PeerInfoHash));\n }\n\n this._context.swarms.get(topic)!.delete(peer);\n\n const swarmEvent: SwarmEvent = {\n topic,\n peerLeft: {\n peer,\n },\n };\n\n this._context.swarmEvent.emit(swarmEvent);\n }\n\n async sendMessage({ author, recipient, payload }: { author: PeerInfo; recipient: PeerInfo; 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(peerInfo: PeerInfo) {\n log('subscribing', { peerInfo });\n this._context.connections.set(peerInfo, this);\n }\n\n async unsubscribeMessages(peerInfo: PeerInfo) {\n log('unsubscribing', { peerInfo });\n this._context.connections.delete(peerInfo);\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 2022 DXOS.org\n//\n\nimport { type Event } from '@dxos/async';\nimport { type Lifecycle } from '@dxos/context';\nimport { type PublicKey } from '@dxos/keys';\nimport { type Peer } from '@dxos/protocols/buf/dxos/edge/messenger_pb';\nimport { type SignalState } from '@dxos/protocols/proto/dxos/mesh/signal';\n\nexport type PeerInfo = Partial<Peer> & Required<Pick<Peer, 'peerKey'>>;\nexport const PeerInfoHash = ({ peerKey }: PeerInfo) => peerKey;\n\nexport interface Message {\n author: PeerInfo;\n recipient: PeerInfo;\n payload: {\n type_url: string;\n value: Uint8Array;\n };\n}\n\nexport type SignalStatus = {\n host: string;\n state: SignalState;\n error?: string;\n reconnectIn: number;\n connectionStarted: Date;\n lastStateChange: Date;\n};\n\nexport type SwarmEvent = {\n topic: PublicKey;\n\n /**\n * The peer was announced as available on the swarm.\n */\n peerAvailable?: {\n peer: PeerInfo;\n since: Date;\n };\n\n /**\n * The peer left, or their announcement timed out.\n */\n peerLeft?: {\n peer: PeerInfo;\n };\n};\n\n/**\n * Message routing interface.\n */\nexport interface SignalMethods {\n /**\n * Emits when other peers join or leave the swarm.\n */\n swarmEvent: Event<SwarmEvent>;\n\n /**\n * Emits when a message is received.\n */\n onMessage: Event<Message>;\n\n /**\n * Join topic on signal network, to be discoverable by other peers.\n */\n join: (params: { topic: PublicKey; peer: PeerInfo }) => Promise<void>;\n\n /**\n * Leave topic on signal network, to stop being discoverable by other peers.\n */\n leave: (params: { topic: PublicKey; peer: PeerInfo }) => Promise<void>;\n\n /**\n * Send message to peer.\n */\n sendMessage: (message: Message) => Promise<void>;\n\n /**\n * Start receiving messages from peer.\n */\n // TODO(burdon): Return unsubscribe function. Encapsulate callback/routing here.\n subscribeMessages: (peer: PeerInfo) => Promise<void>;\n\n /**\n * Stop receiving messages from peer.\n */\n unsubscribeMessages: (peer: PeerInfo) => Promise<void>;\n}\n\n/**\n * Signaling client.\n */\nexport interface SignalClientMethods extends SignalMethods, Required<Lifecycle> {\n getStatus(): SignalStatus;\n}\n", "//\n// Copyright 2020 DXOS.org\n//\n\nimport { Event, sleep, synchronized } from '@dxos/async';\nimport { LifecycleState, Resource } 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 { 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 {\n type PeerInfo,\n type Message,\n type SignalClientMethods,\n type SignalMethods,\n type SignalStatus,\n type SwarmEvent,\n} 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 extends Resource 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 readonly failureCount = new Map<string, number>();\n readonly statusChanged = new Event<SignalStatus[]>();\n readonly swarmEvent = new Event<SwarmEvent>();\n\n readonly onMessage = new Event<Message>();\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 super();\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(host.server, this._getMetadata);\n server.swarmEvent.on((data) => this.swarmEvent.emit(data));\n server.onMessage.on((data) => this.onMessage.emit(data));\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 protected override async _open() {\n log('open signal manager', { hosts: this._hosts });\n log.trace('dxos.mesh.websocket-signal-manager.open', trace.begin({ id: this._instanceId }));\n\n await safeAwaitAll(this._servers.values(), (server) => server.open());\n\n log.trace('dxos.mesh.websocket-signal-manager.open', trace.end({ id: this._instanceId }));\n }\n\n protected override async _close() {\n await safeAwaitAll(this._servers.values(), (server) => server.close());\n }\n\n async restartServer(serverName: string) {\n log('restarting server', { serverName });\n invariant(this._lifecycleState === LifecycleState.OPEN);\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, peer }: { topic: PublicKey; peer: PeerInfo }) {\n log('join', { topic, peer });\n invariant(this._lifecycleState === LifecycleState.OPEN);\n await this._forEachServer((server) => server.join({ topic, peer }));\n }\n\n @synchronized\n async leave({ topic, peer }: { topic: PublicKey; peer: PeerInfo }) {\n log('leaving', { topic, peer });\n invariant(this._lifecycleState === LifecycleState.OPEN);\n await this._forEachServer((server) => server.leave({ topic, peer }));\n }\n\n async sendMessage({ author, recipient, payload }: Message): Promise<void> {\n log('signal', { recipient });\n invariant(this._lifecycleState === LifecycleState.OPEN);\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(peer: PeerInfo) {\n log('subscribed for message stream', { peer });\n invariant(this._lifecycleState === LifecycleState.OPEN);\n\n await this._forEachServer(async (server) => server.subscribeMessages(peer));\n }\n\n async unsubscribeMessages(peer: PeerInfo) {\n log('subscribed for message stream', { peer });\n invariant(this._lifecycleState === LifecycleState.OPEN);\n\n await this._forEachServer(async (server) => server.unsubscribeMessages(peer));\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('dxos.mesh.signal.signal-manager.rate-limit-hit', 1);\n }\n\n public recordServerFailure(params: { serverName: string; willRestart: boolean }) {\n trace.metrics.increment('dxos.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 { AnySchema } from '@bufbuild/protobuf/wkt';\n\nimport { Event } from '@dxos/async';\nimport { Resource } from '@dxos/context';\nimport { type EdgeConnection, protocol } from '@dxos/edge-client';\nimport { invariant } from '@dxos/invariant';\nimport { PublicKey } from '@dxos/keys';\nimport { log } from '@dxos/log';\nimport { EdgeService } from '@dxos/protocols';\nimport {\n SwarmRequestSchema,\n SwarmRequest_Action as SwarmRequestAction,\n SwarmResponseSchema,\n type Message as EdgeMessage,\n} from '@dxos/protocols/buf/dxos/edge/messenger_pb';\nimport { ComplexMap, ComplexSet } from '@dxos/util';\n\nimport { type SignalManager } from './signal-manager';\nimport { type PeerInfo, type Message, type SwarmEvent, PeerInfoHash } from '../signal-methods';\n\nexport class EdgeSignalManager extends Resource implements SignalManager {\n public swarmEvent = new Event<SwarmEvent>();\n public onMessage = new Event<Message>();\n\n /**\n * swarm key -> peerKeys in the swarm\n */\n // TODO(mykola): This class should not contain swarm state. Temporary before network-manager API changes to accept list of peers.\n private readonly _swarmPeers = new ComplexMap<PublicKey, ComplexSet<PeerInfo>>(PublicKey.hash);\n private readonly _edgeConnection: EdgeConnection;\n\n constructor({ edgeConnection }: { edgeConnection: EdgeConnection }) {\n super();\n this._edgeConnection = edgeConnection;\n }\n\n protected override async _open() {\n this._ctx.onDispose(this._edgeConnection.addListener((message) => this._onMessage(message)));\n this._edgeConnection.reconnect.on(this._ctx, () => this._rejoinAllSwarms());\n await this._rejoinAllSwarms();\n }\n\n /**\n * Warning: PeerInfo is inferred from edgeConnection.\n */\n async join({ topic, peer }: { topic: PublicKey; peer: PeerInfo }): Promise<void> {\n if (!this._matchSelfPeerInfo(peer)) {\n // NOTE: Could only join swarm with the same peer info as the edge connection.\n log.warn('ignoring peer info on join request', {\n peer,\n expected: {\n peerKey: this._edgeConnection.peerKey,\n identityKey: this._edgeConnection.identityKey,\n },\n });\n }\n\n this._swarmPeers.set(topic, new ComplexSet<PeerInfo>(PeerInfoHash));\n await this._edgeConnection.send(\n protocol.createMessage(SwarmRequestSchema, {\n serviceId: EdgeService.SWARM_SERVICE_ID,\n payload: { action: SwarmRequestAction.JOIN, swarmKeys: [topic.toHex()] },\n }),\n );\n }\n\n async leave({ topic, peer }: { topic: PublicKey; peer: PeerInfo }): Promise<void> {\n this._swarmPeers.delete(topic);\n await this._edgeConnection.send(\n protocol.createMessage(SwarmRequestSchema, {\n serviceId: EdgeService.SWARM_SERVICE_ID,\n payload: { action: SwarmRequestAction.LEAVE, swarmKeys: [topic.toHex()] },\n }),\n );\n }\n\n async sendMessage(message: Message): Promise<void> {\n if (!this._matchSelfPeerInfo(message.author)) {\n // NOTE: Could only join swarm with the same peer info as the edge connection.\n log.warn('ignoring author on send request', {\n author: message.author,\n expected: { peerKey: this._edgeConnection.peerKey, identityKey: this._edgeConnection.identityKey },\n });\n }\n\n await this._edgeConnection.send(\n protocol.createMessage(AnySchema, {\n serviceId: EdgeService.SIGNAL_SERVICE_ID,\n source: message.author,\n target: [message.recipient],\n payload: { typeUrl: message.payload.type_url, value: message.payload.value },\n }),\n );\n }\n\n async subscribeMessages(peerInfo: PeerInfo): Promise<void> {\n // No-op.\n }\n\n async unsubscribeMessages(peerInfo: PeerInfo): Promise<void> {\n // No-op.\n }\n\n private _onMessage(message: EdgeMessage) {\n switch (message.serviceId) {\n case EdgeService.SWARM_SERVICE_ID: {\n this._processSwarmResponse(message);\n break;\n }\n case EdgeService.SIGNAL_SERVICE_ID: {\n this._processMessage(message);\n }\n }\n }\n\n private _processSwarmResponse(message: EdgeMessage) {\n invariant(protocol.getPayloadType(message) === SwarmResponseSchema.typeName, 'Wrong payload type');\n const payload = protocol.getPayload(message, SwarmResponseSchema);\n const topic = PublicKey.from(payload.swarmKey);\n if (!this._swarmPeers.has(topic)) {\n log.warn('Received message from wrong topic', { topic });\n return;\n }\n const oldPeers = this._swarmPeers.get(topic)!;\n const timestamp = new Date(Date.parse(message.timestamp));\n const newPeers = new ComplexSet<PeerInfo>(PeerInfoHash, payload.peers);\n\n // Emit new available peers in the swarm.\n for (const peer of newPeers) {\n if (oldPeers.has(peer)) {\n continue;\n }\n this.swarmEvent.emit({\n topic,\n peerAvailable: { peer, since: timestamp },\n });\n }\n\n // Emit peer that left the swarm.\n for (const peer of oldPeers) {\n if (newPeers.has(peer)) {\n continue;\n }\n this.swarmEvent.emit({\n topic,\n peerLeft: { peer },\n });\n }\n\n this._swarmPeers.set(topic, newPeers);\n }\n\n private _processMessage(message: EdgeMessage) {\n invariant(protocol.getPayloadType(message) === AnySchema.typeName, 'Wrong payload type');\n const payload = protocol.getPayload(message, AnySchema);\n invariant(message.source, 'source is missing');\n invariant(message.target, 'target is missing');\n invariant(message.target.length === 1, 'target should have exactly one item');\n\n this.onMessage.emit({\n author: message.source,\n recipient: message.target[0],\n payload: {\n type_url: payload.typeUrl,\n value: payload.value,\n },\n });\n }\n\n private _matchSelfPeerInfo(peer: PeerInfo) {\n return (\n peer && (peer.peerKey === this._edgeConnection.peerKey || peer.identityKey === this._edgeConnection.identityKey)\n );\n }\n\n private async _rejoinAllSwarms() {\n log('rejoin swarms', { swarms: Array.from(this._swarmPeers.keys()) });\n // Clear all swarms. But leave keys in the map.\n for (const topic of this._swarmPeers.keys()) {\n await this.join({\n topic,\n peer: { peerKey: this._edgeConnection.peerKey, identityKey: this._edgeConnection.identityKey },\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", "trace", "schema", "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", "_defaultListeners", "Map", "_onAckCallbacks", "PublicKey", "hash", "_receivedMessages", "ComplexSet", "_toClear", "_closed", "_signalManager", "_retryDelay", "open", "traceId", "random", "toHex", "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", "peer", "subscribeMessages", "listeners", "peerKey", "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", "peerKey", "length", "recipient", "payload", "type_url", "value", "peer", "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", "event", "peerAvailable", "peer", "peerKey", "from", "peerLeft", "set", "messageStream", "receiveMessages", "signalMessage", "message", "author", "recipient", "payload", "WebSocket", "scheduleTaskInterval", "TimeoutError", "Trigger", "Context", "invariant", "PublicKey", "log", "trace", "schema", "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", "_getMetadata", "_monitor", "SignalClientMonitor", "_state", "SignalState", "CLOSED", "_lastReconciliationFailed", "_clientReady", "Trigger", "_reconnectAfter", "_instanceId", "PublicKey", "random", "toHex", "statusChanged", "Event", "onMessage", "swarmEvent", "startsWith", "Error", "localState", "SignalLocalState", "message", "recordMessageReceived", "emit", "event", "_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", "peer", "peerKey", "recordJoin", "from", "leave", "recordLeave", "sendMessage", "msg", "recordMessageSending", "author", "recipient", "payload", "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", "Math", "min", "dispose", "reset", "close", "catch", "Event", "Trigger", "Context", "invariant", "PublicKey", "log", "schema", "ComplexMap", "ComplexSet", "PeerInfoHash", "peerKey", "MemorySignalManagerContext", "swarmEvent", "Event", "swarms", "ComplexMap", "PublicKey", "hash", "connections", "PeerInfoHash", "MemorySignalManager", "constructor", "_context", "statusChanged", "onMessage", "_joinedSwarms", "ComplexSet", "topic", "peer", "toHex", "peerKey", "_freezeTrigger", "Trigger", "wake", "_ctx", "Context", "onDispose", "on", "data", "emit", "open", "disposed", "Promise", "all", "values", "map", "value", "join", "close", "joinedSwarmsCopy", "leave", "dispose", "getStatus", "invariant", "add", "has", "set", "get", "peerAvailable", "since", "Date", "peers", "Array", "from", "forEach", "delete", "peerLeft", "sendMessage", "author", "recipient", "payload", "log", "dec", "wait", "remote", "warn", "then", "catch", "err", "error", "subscribeMessages", "peerInfo", "unsubscribeMessages", "freeze", "reset", "unfreeze", "type_url", "endsWith", "relPayload", "schema", "getCodecForType", "decode", "Object", "keys", "sessionId", "Event", "sleep", "synchronized", "LifecycleState", "Resource", "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", "Resource", "constructor", "_hosts", "_getMetadata", "_servers", "Map", "_monitor", "WebsocketSignalManagerMonitor", "failureCount", "statusChanged", "Event", "swarmEvent", "onMessage", "_instanceId", "PublicKey", "random", "toHex", "log", "hosts", "host", "has", "server", "SignalClient", "on", "data", "emit", "getStatus", "set", "_failedServersBitfield", "BitField", "zeros", "length", "_open", "trace", "begin", "id", "safeAwaitAll", "values", "open", "end", "_close", "close", "restartServer", "serverName", "invariant", "_lifecycleState", "LifecycleState", "OPEN", "get", "sleep", "Array", "from", "map", "join", "topic", "peer", "_forEachServer", "leave", "sendMessage", "author", "recipient", "payload", "index", "then", "_clearServerFailedFlag", "catch", "err", "RateLimitExceededError", "info", "recordRateLimitExceeded", "TimeoutError", "name", "checkServerFailure", "warn", "isRestartRequired", "recordServerFailure", "willRestart", "subscribeMessages", "unsubscribeMessages", "fn", "Promise", "all", "entries", "idx", "synchronized", "AnySchema", "Event", "Resource", "protocol", "invariant", "PublicKey", "log", "EdgeService", "SwarmRequestSchema", "SwarmRequest_Action", "SwarmRequestAction", "SwarmResponseSchema", "ComplexMap", "ComplexSet", "EdgeSignalManager", "Resource", "constructor", "edgeConnection", "swarmEvent", "Event", "onMessage", "_swarmPeers", "ComplexMap", "PublicKey", "hash", "_edgeConnection", "_open", "_ctx", "onDispose", "addListener", "message", "_onMessage", "reconnect", "on", "_rejoinAllSwarms", "join", "topic", "peer", "_matchSelfPeerInfo", "log", "warn", "expected", "peerKey", "identityKey", "set", "ComplexSet", "PeerInfoHash", "send", "protocol", "createMessage", "SwarmRequestSchema", "serviceId", "EdgeService", "SWARM_SERVICE_ID", "payload", "action", "SwarmRequestAction", "JOIN", "swarmKeys", "toHex", "leave", "delete", "LEAVE", "sendMessage", "author", "AnySchema", "SIGNAL_SERVICE_ID", "source", "target", "recipient", "typeUrl", "type_url", "value", "subscribeMessages", "peerInfo", "unsubscribeMessages", "_processSwarmResponse", "_processMessage", "invariant", "getPayloadType", "SwarmResponseSchema", "typeName", "getPayload", "from", "swarmKey", "has", "oldPeers", "get", "timestamp", "Date", "parse", "newPeers", "peers", "emit", "peerAvailable", "since", "peerLeft", "length", "swarms", "Array", "keys", "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":2072,"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":37629,"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","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":11042,"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":22542,"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":1610,"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":26041,"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/protocols/proto","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":44005,"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-methods.ts":{"bytes":3541,"imports":[{"path":"@inject-globals","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/messaging/src/signal-manager/memory-signal-manager.ts":{"bytes":24025,"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/proto","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"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"},"packages/core/mesh/messaging/src/signal-manager/signal-manager.ts":{"bytes":1062,"imports":[{"path":"@inject-globals","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/messaging/src/signal-manager/websocket-signal-manager-monitor.ts":{"bytes":2226,"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":29352,"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/edge-signal-manager.ts":{"bytes":24777,"imports":[{"path":"@bufbuild/protobuf/wkt","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/edge-client","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/buf/dxos/edge/messenger_pb","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"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"},"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":982,"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/edge-signal-manager.ts","kind":"import-statement","original":"./edge-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/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":107724},"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/protocols/proto","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/protocols/proto","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/proto","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":"@bufbuild/protobuf/wkt","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/edge-client","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/buf/dxos/edge/messenger_pb","kind":"import-statement","external":true},{"path":"@dxos/util","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":["EdgeSignalManager","MemorySignalManager","MemorySignalManagerContext","Messenger","PeerInfoHash","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":10584},"packages/core/mesh/messaging/src/messenger-monitor.ts":{"bytesInOutput":392},"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":12280},"packages/core/mesh/messaging/src/signal-client/signal-client-monitor.ts":{"bytesInOutput":2827},"packages/core/mesh/messaging/src/signal-client/signal-local-state.ts":{"bytesInOutput":5016},"packages/core/mesh/messaging/src/signal-client/signal-rpc-client.ts":{"bytesInOutput":6829},"packages/core/mesh/messaging/src/signal-client/signal-rpc-client-monitor.ts":{"bytesInOutput":283},"packages/core/mesh/messaging/src/signal-client/index.ts":{"bytesInOutput":0},"packages/core/mesh/messaging/src/signal-manager/memory-signal-manager.ts":{"bytesInOutput":6550},"packages/core/mesh/messaging/src/signal-methods.ts":{"bytesInOutput":45},"packages/core/mesh/messaging/src/signal-manager/index.ts":{"bytesInOutput":0},"packages/core/mesh/messaging/src/signal-manager/websocket-signal-manager.ts":{"bytesInOutput":9271},"packages/core/mesh/messaging/src/signal-manager/websocket-signal-manager-monitor.ts":{"bytesInOutput":436},"packages/core/mesh/messaging/src/signal-manager/edge-signal-manager.ts":{"bytesInOutput":6801},"packages/core/mesh/messaging/src/signal-manager/utils.ts":{"bytesInOutput":1597}},"bytes":64604}}}
|
|
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":2072,"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":37629,"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","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":11042,"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":22542,"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":1610,"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":26041,"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/protocols/proto","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":44005,"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-methods.ts":{"bytes":3541,"imports":[{"path":"@inject-globals","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/messaging/src/signal-manager/memory-signal-manager.ts":{"bytes":24025,"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/proto","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"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"},"packages/core/mesh/messaging/src/signal-manager/signal-manager.ts":{"bytes":1062,"imports":[{"path":"@inject-globals","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/messaging/src/signal-manager/websocket-signal-manager-monitor.ts":{"bytes":2226,"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":29352,"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/edge-signal-manager.ts":{"bytes":24777,"imports":[{"path":"@bufbuild/protobuf/wkt","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/edge-client","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/buf/dxos/edge/messenger_pb","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"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"},"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":982,"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/edge-signal-manager.ts","kind":"import-statement","original":"./edge-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/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":107720},"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/protocols/proto","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/protocols/proto","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/proto","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":"@bufbuild/protobuf/wkt","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/edge-client","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/buf/dxos/edge/messenger_pb","kind":"import-statement","external":true},{"path":"@dxos/util","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":["EdgeSignalManager","MemorySignalManager","MemorySignalManagerContext","Messenger","PeerInfoHash","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":10584},"packages/core/mesh/messaging/src/messenger-monitor.ts":{"bytesInOutput":392},"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":12280},"packages/core/mesh/messaging/src/signal-client/signal-client-monitor.ts":{"bytesInOutput":2827},"packages/core/mesh/messaging/src/signal-client/signal-local-state.ts":{"bytesInOutput":5016},"packages/core/mesh/messaging/src/signal-client/signal-rpc-client.ts":{"bytesInOutput":6829},"packages/core/mesh/messaging/src/signal-client/signal-rpc-client-monitor.ts":{"bytesInOutput":283},"packages/core/mesh/messaging/src/signal-client/index.ts":{"bytesInOutput":0},"packages/core/mesh/messaging/src/signal-manager/memory-signal-manager.ts":{"bytesInOutput":6550},"packages/core/mesh/messaging/src/signal-methods.ts":{"bytesInOutput":45},"packages/core/mesh/messaging/src/signal-manager/index.ts":{"bytesInOutput":0},"packages/core/mesh/messaging/src/signal-manager/websocket-signal-manager.ts":{"bytesInOutput":9249},"packages/core/mesh/messaging/src/signal-manager/websocket-signal-manager-monitor.ts":{"bytesInOutput":436},"packages/core/mesh/messaging/src/signal-manager/edge-signal-manager.ts":{"bytesInOutput":6801},"packages/core/mesh/messaging/src/signal-manager/utils.ts":{"bytesInOutput":1597}},"bytes":64582}}}
|
package/dist/lib/node/index.cjs
CHANGED
|
@@ -1688,12 +1688,8 @@ var WebsocketSignalManagerMonitor = class {
|
|
|
1688
1688
|
};
|
|
1689
1689
|
function _ts_decorate(decorators, target, key, desc) {
|
|
1690
1690
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
1691
|
-
if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
|
|
1692
|
-
|
|
1693
|
-
else
|
|
1694
|
-
for (var i = decorators.length - 1; i >= 0; i--)
|
|
1695
|
-
if (d = decorators[i])
|
|
1696
|
-
r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
1691
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
1692
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
1697
1693
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
1698
1694
|
}
|
|
1699
1695
|
var __dxlog_file6 = "/home/runner/work/dxos/dxos/packages/core/mesh/messaging/src/signal-manager/websocket-signal-manager.ts";
|
|
@@ -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-methods.ts", "../../../src/signal-manager/websocket-signal-manager.ts", "../../../src/signal-manager/websocket-signal-manager-monitor.ts", "../../../src/signal-manager/edge-signal-manager.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, trace } from '@dxos/protocols';\nimport { schema } from '@dxos/protocols/proto';\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 PeerInfo, type Message } from './signal-methods';\nimport { MESSAGE_TIMEOUT } from './timeouts';\n\nexport type OnMessage = (params: Message) => 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: string; payloadType: string }, Set<OnMessage>>(\n ({ peerId, payloadType }) => peerId + payloadType,\n );\n\n // peerId => listeners set\n private readonly _defaultListeners = new Map<string, Set<OnMessage>>();\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 peer,\n payloadType,\n onMessage,\n }: {\n peer: PeerInfo;\n payloadType?: string;\n onMessage: OnMessage;\n }): Promise<ListeningHandle> {\n invariant(!this._closed, 'Closed');\n\n await this._signalManager.subscribeMessages(peer);\n let listeners: Set<OnMessage> | undefined;\n invariant(peer.peerKey, 'Peer key is required');\n\n if (!payloadType) {\n listeners = this._defaultListeners.get(peer.peerKey);\n if (!listeners) {\n listeners = new Set();\n this._defaultListeners.set(peer.peerKey, listeners);\n }\n } else {\n listeners = this._listeners.get({ peerId: peer.peerKey, payloadType });\n if (!listeners) {\n listeners = new Set();\n this._listeners.set({ peerId: peer.peerKey, 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: PeerInfo;\n recipient: PeerInfo;\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: PeerInfo;\n recipient: PeerInfo;\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 invariant(message.recipient.peerKey, 'Peer key is required');\n const defaultListenerMap = this._defaultListeners.get(message.recipient.peerKey);\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.peerKey,\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('dxos.mesh.signal.messenger.failed-ack', 1);\n }\n\n public recordReliableMessage(params: { sendAttempts: number; sent: boolean }) {\n trace.metrics.increment('dxos.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 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 } 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 {\n type PeerInfo,\n type Message,\n type SignalClientMethods,\n type SignalStatus,\n type SwarmEvent,\n} 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 public readonly onMessage = new Event<Message>();\n public readonly swarmEvent = new Event<SwarmEvent>();\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 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(\n async (message) => {\n this._monitor.recordMessageReceived(message);\n this.onMessage.emit(message);\n },\n async (event) => this.swarmEvent.emit(event),\n );\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; peer: PeerInfo }): Promise<void> {\n log('joining', { topic: args.topic, peerId: args.peer.peerKey });\n this._monitor.recordJoin();\n this.localState.join({ topic: args.topic, peerId: PublicKey.from(args.peer.peerKey) });\n this._reconcileTask?.schedule();\n }\n\n async leave(args: { topic: PublicKey; peer: PeerInfo }): Promise<void> {\n log('leaving', { topic: args.topic, peerId: args.peer.peerKey });\n this._monitor.recordLeave();\n this.localState.leave({ topic: args.topic, peerId: PublicKey.from(args.peer.peerKey) });\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 invariant(msg.author.peerKey, 'Author key required');\n invariant(msg.recipient.peerKey, 'Recipient key required');\n await this._client!.sendMessage({\n author: PublicKey.from(msg.author.peerKey),\n recipient: PublicKey.from(msg.recipient.peerKey),\n payload: msg.payload,\n });\n });\n }\n\n async subscribeMessages(peer: PeerInfo) {\n invariant(peer.peerKey, 'Peer key required');\n log('subscribing to messages', { peer });\n this.localState.subscribeMessages(PublicKey.from(peer.peerKey));\n this._reconcileTask?.schedule();\n }\n\n async unsubscribeMessages(peer: PeerInfo) {\n invariant(peer.peerKey, 'Peer key required');\n log('unsubscribing from messages', { peer });\n this.localState.unsubscribeMessages(PublicKey.from(peer.peerKey));\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('dxos.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('dxos.mesh.signal.signal-client.received-total', 1, {\n tags: createIdentityTags(message),\n });\n trace.metrics.distribution('dxos.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('dxos.mesh.signal.signal-client.send-duration', reqDuration, { tags });\n trace.metrics.distribution('dxos.mesh.signal.signal-client.bytes-out', getByteCount(message), { tags });\n } catch (err) {\n success = false;\n }\n trace.metrics.increment('dxos.mesh.signal.signal-client.sent-total', 1, {\n tags: { ...tags, success },\n });\n }\n\n public recordStreamCloseErrors(count: number) {\n trace.metrics.increment('dxos.mesh.signal.signal-client.stream-close-errors', count);\n }\n\n public recordReconciliation(params: { success: boolean }) {\n trace.metrics.increment('dxos.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.peerKey.length +\n message.recipient.peerKey.length +\n message.payload.type_url.length +\n message.payload.value.length\n );\n};\n\nconst createIdentityTags = (message: Message) => {\n return { peer: message.author.peerKey };\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { asyncTimeout, Event } from '@dxos/async';\nimport type { Stream } from '@dxos/codec-protobuf';\nimport { cancelWithContext, type Context } from '@dxos/context';\nimport { PublicKey } from '@dxos/keys';\nimport { log } from '@dxos/log';\nimport {\n type Message as SignalMessage,\n type SwarmEvent as SwarmEventProto,\n} 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, SwarmEvent } 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<SwarmEventProto>>(\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: Message) => Promise<void>,\n private readonly _onSwarmEvent: (params: 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: SwarmEventProto) => {\n if (this._joinedTopics.has({ topic, peerId })) {\n log('swarm event', { swarmEvent });\n const event: SwarmEvent = swarmEvent.peerAvailable\n ? {\n topic,\n peerAvailable: {\n ...swarmEvent.peerAvailable,\n peer: { peerKey: PublicKey.from(swarmEvent.peerAvailable.peer).toHex() },\n },\n }\n : {\n topic,\n peerLeft: {\n ...swarmEvent.peerLeft,\n peer: { peerKey: PublicKey.from(swarmEvent.peerLeft!.peer).toHex() },\n },\n };\n await this._onSwarmEvent(event);\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: { peerKey: PublicKey.from(signalMessage.author).toHex() },\n recipient: { peerKey: PublicKey.from(signalMessage.recipient).toHex() },\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 { trace } from '@dxos/protocols';\nimport { schema } from '@dxos/protocols/proto';\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('dxos.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/proto';\nimport { ComplexMap, ComplexSet } from '@dxos/util';\n\nimport { type SignalManager } from './signal-manager';\nimport { type SwarmEvent, type PeerInfo, type SignalStatus, type Message, PeerInfoHash } 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<SwarmEvent>();\n\n // Mapping from topic to set of peers.\n readonly swarms = new ComplexMap<PublicKey, ComplexSet<PeerInfo>>(PublicKey.hash);\n\n // Map of connections for each peer for signaling.\n readonly connections = new ComplexMap<PeerInfo, MemorySignalManager>(PeerInfoHash);\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<SwarmEvent>();\n\n readonly onMessage = new Event<Message>();\n\n /** Will be used to emit SwarmEvents on .open() and .close() */\n private _joinedSwarms = new ComplexSet<{ topic: PublicKey; peer: PeerInfo }>(\n ({ topic, peer }) => topic.toHex() + peer.peerKey,\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; peer: PeerInfo }>(\n ({ topic, peer }) => topic.toHex() + peer.peerKey,\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, peer }: { topic: PublicKey; peer: PeerInfo }) {\n invariant(!this._ctx.disposed, 'Closed');\n\n this._joinedSwarms.add({ topic, peer });\n\n if (!this._context.swarms.has(topic)) {\n this._context.swarms.set(topic, new ComplexSet(PeerInfoHash));\n }\n\n this._context.swarms.get(topic)!.add(peer);\n this._context.swarmEvent.emit({\n topic,\n peerAvailable: {\n peer,\n since: new Date(),\n },\n });\n\n // Emitting swarm events for each peer.\n for (const [topic, peers] of this._context.swarms) {\n Array.from(peers).forEach((peer) => {\n this.swarmEvent.emit({\n topic,\n peerAvailable: {\n peer,\n since: new Date(),\n },\n });\n });\n }\n }\n\n async leave({ topic, peer }: { topic: PublicKey; peer: PeerInfo }) {\n invariant(!this._ctx.disposed, 'Closed');\n\n this._joinedSwarms.delete({ topic, peer });\n\n if (!this._context.swarms.has(topic)) {\n this._context.swarms.set(topic, new ComplexSet(PeerInfoHash));\n }\n\n this._context.swarms.get(topic)!.delete(peer);\n\n const swarmEvent: SwarmEvent = {\n topic,\n peerLeft: {\n peer,\n },\n };\n\n this._context.swarmEvent.emit(swarmEvent);\n }\n\n async sendMessage({ author, recipient, payload }: { author: PeerInfo; recipient: PeerInfo; 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(peerInfo: PeerInfo) {\n log('subscribing', { peerInfo });\n this._context.connections.set(peerInfo, this);\n }\n\n async unsubscribeMessages(peerInfo: PeerInfo) {\n log('unsubscribing', { peerInfo });\n this._context.connections.delete(peerInfo);\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 2022 DXOS.org\n//\n\nimport { type Event } from '@dxos/async';\nimport { type Lifecycle } from '@dxos/context';\nimport { type PublicKey } from '@dxos/keys';\nimport { type Peer } from '@dxos/protocols/buf/dxos/edge/messenger_pb';\nimport { type SignalState } from '@dxos/protocols/proto/dxos/mesh/signal';\n\nexport type PeerInfo = Partial<Peer> & Required<Pick<Peer, 'peerKey'>>;\nexport const PeerInfoHash = ({ peerKey }: PeerInfo) => peerKey;\n\nexport interface Message {\n author: PeerInfo;\n recipient: PeerInfo;\n payload: {\n type_url: string;\n value: Uint8Array;\n };\n}\n\nexport type SignalStatus = {\n host: string;\n state: SignalState;\n error?: string;\n reconnectIn: number;\n connectionStarted: Date;\n lastStateChange: Date;\n};\n\nexport type SwarmEvent = {\n topic: PublicKey;\n\n /**\n * The peer was announced as available on the swarm.\n */\n peerAvailable?: {\n peer: PeerInfo;\n since: Date;\n };\n\n /**\n * The peer left, or their announcement timed out.\n */\n peerLeft?: {\n peer: PeerInfo;\n };\n};\n\n/**\n * Message routing interface.\n */\nexport interface SignalMethods {\n /**\n * Emits when other peers join or leave the swarm.\n */\n swarmEvent: Event<SwarmEvent>;\n\n /**\n * Emits when a message is received.\n */\n onMessage: Event<Message>;\n\n /**\n * Join topic on signal network, to be discoverable by other peers.\n */\n join: (params: { topic: PublicKey; peer: PeerInfo }) => Promise<void>;\n\n /**\n * Leave topic on signal network, to stop being discoverable by other peers.\n */\n leave: (params: { topic: PublicKey; peer: PeerInfo }) => Promise<void>;\n\n /**\n * Send message to peer.\n */\n sendMessage: (message: Message) => Promise<void>;\n\n /**\n * Start receiving messages from peer.\n */\n // TODO(burdon): Return unsubscribe function. Encapsulate callback/routing here.\n subscribeMessages: (peer: PeerInfo) => Promise<void>;\n\n /**\n * Stop receiving messages from peer.\n */\n unsubscribeMessages: (peer: PeerInfo) => Promise<void>;\n}\n\n/**\n * Signaling client.\n */\nexport interface SignalClientMethods extends SignalMethods, Required<Lifecycle> {\n getStatus(): SignalStatus;\n}\n", "//\n// Copyright 2020 DXOS.org\n//\n\nimport { Event, sleep, synchronized } from '@dxos/async';\nimport { LifecycleState, Resource } 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 { 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 {\n type PeerInfo,\n type Message,\n type SignalClientMethods,\n type SignalMethods,\n type SignalStatus,\n type SwarmEvent,\n} 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 extends Resource 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 readonly failureCount = new Map<string, number>();\n readonly statusChanged = new Event<SignalStatus[]>();\n readonly swarmEvent = new Event<SwarmEvent>();\n\n readonly onMessage = new Event<Message>();\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 super();\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(host.server, this._getMetadata);\n server.swarmEvent.on((data) => this.swarmEvent.emit(data));\n server.onMessage.on((data) => this.onMessage.emit(data));\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 protected override async _open() {\n log('open signal manager', { hosts: this._hosts });\n log.trace('dxos.mesh.websocket-signal-manager.open', trace.begin({ id: this._instanceId }));\n\n await safeAwaitAll(this._servers.values(), (server) => server.open());\n\n log.trace('dxos.mesh.websocket-signal-manager.open', trace.end({ id: this._instanceId }));\n }\n\n protected override async _close() {\n await safeAwaitAll(this._servers.values(), (server) => server.close());\n }\n\n async restartServer(serverName: string) {\n log('restarting server', { serverName });\n invariant(this._lifecycleState === LifecycleState.OPEN);\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, peer }: { topic: PublicKey; peer: PeerInfo }) {\n log('join', { topic, peer });\n invariant(this._lifecycleState === LifecycleState.OPEN);\n await this._forEachServer((server) => server.join({ topic, peer }));\n }\n\n @synchronized\n async leave({ topic, peer }: { topic: PublicKey; peer: PeerInfo }) {\n log('leaving', { topic, peer });\n invariant(this._lifecycleState === LifecycleState.OPEN);\n await this._forEachServer((server) => server.leave({ topic, peer }));\n }\n\n async sendMessage({ author, recipient, payload }: Message): Promise<void> {\n log('signal', { recipient });\n invariant(this._lifecycleState === LifecycleState.OPEN);\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(peer: PeerInfo) {\n log('subscribed for message stream', { peer });\n invariant(this._lifecycleState === LifecycleState.OPEN);\n\n await this._forEachServer(async (server) => server.subscribeMessages(peer));\n }\n\n async unsubscribeMessages(peer: PeerInfo) {\n log('subscribed for message stream', { peer });\n invariant(this._lifecycleState === LifecycleState.OPEN);\n\n await this._forEachServer(async (server) => server.unsubscribeMessages(peer));\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('dxos.mesh.signal.signal-manager.rate-limit-hit', 1);\n }\n\n public recordServerFailure(params: { serverName: string; willRestart: boolean }) {\n trace.metrics.increment('dxos.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 { AnySchema } from '@bufbuild/protobuf/wkt';\n\nimport { Event } from '@dxos/async';\nimport { Resource } from '@dxos/context';\nimport { type EdgeConnection, protocol } from '@dxos/edge-client';\nimport { invariant } from '@dxos/invariant';\nimport { PublicKey } from '@dxos/keys';\nimport { log } from '@dxos/log';\nimport { EdgeService } from '@dxos/protocols';\nimport {\n SwarmRequestSchema,\n SwarmRequest_Action as SwarmRequestAction,\n SwarmResponseSchema,\n type Message as EdgeMessage,\n} from '@dxos/protocols/buf/dxos/edge/messenger_pb';\nimport { ComplexMap, ComplexSet } from '@dxos/util';\n\nimport { type SignalManager } from './signal-manager';\nimport { type PeerInfo, type Message, type SwarmEvent, PeerInfoHash } from '../signal-methods';\n\nexport class EdgeSignalManager extends Resource implements SignalManager {\n public swarmEvent = new Event<SwarmEvent>();\n public onMessage = new Event<Message>();\n\n /**\n * swarm key -> peerKeys in the swarm\n */\n // TODO(mykola): This class should not contain swarm state. Temporary before network-manager API changes to accept list of peers.\n private readonly _swarmPeers = new ComplexMap<PublicKey, ComplexSet<PeerInfo>>(PublicKey.hash);\n private readonly _edgeConnection: EdgeConnection;\n\n constructor({ edgeConnection }: { edgeConnection: EdgeConnection }) {\n super();\n this._edgeConnection = edgeConnection;\n }\n\n protected override async _open() {\n this._ctx.onDispose(this._edgeConnection.addListener((message) => this._onMessage(message)));\n this._edgeConnection.reconnect.on(this._ctx, () => this._rejoinAllSwarms());\n await this._rejoinAllSwarms();\n }\n\n /**\n * Warning: PeerInfo is inferred from edgeConnection.\n */\n async join({ topic, peer }: { topic: PublicKey; peer: PeerInfo }): Promise<void> {\n if (!this._matchSelfPeerInfo(peer)) {\n // NOTE: Could only join swarm with the same peer info as the edge connection.\n log.warn('ignoring peer info on join request', {\n peer,\n expected: {\n peerKey: this._edgeConnection.peerKey,\n identityKey: this._edgeConnection.identityKey,\n },\n });\n }\n\n this._swarmPeers.set(topic, new ComplexSet<PeerInfo>(PeerInfoHash));\n await this._edgeConnection.send(\n protocol.createMessage(SwarmRequestSchema, {\n serviceId: EdgeService.SWARM_SERVICE_ID,\n payload: { action: SwarmRequestAction.JOIN, swarmKeys: [topic.toHex()] },\n }),\n );\n }\n\n async leave({ topic, peer }: { topic: PublicKey; peer: PeerInfo }): Promise<void> {\n this._swarmPeers.delete(topic);\n await this._edgeConnection.send(\n protocol.createMessage(SwarmRequestSchema, {\n serviceId: EdgeService.SWARM_SERVICE_ID,\n payload: { action: SwarmRequestAction.LEAVE, swarmKeys: [topic.toHex()] },\n }),\n );\n }\n\n async sendMessage(message: Message): Promise<void> {\n if (!this._matchSelfPeerInfo(message.author)) {\n // NOTE: Could only join swarm with the same peer info as the edge connection.\n log.warn('ignoring author on send request', {\n author: message.author,\n expected: { peerKey: this._edgeConnection.peerKey, identityKey: this._edgeConnection.identityKey },\n });\n }\n\n await this._edgeConnection.send(\n protocol.createMessage(AnySchema, {\n serviceId: EdgeService.SIGNAL_SERVICE_ID,\n source: message.author,\n target: [message.recipient],\n payload: { typeUrl: message.payload.type_url, value: message.payload.value },\n }),\n );\n }\n\n async subscribeMessages(peerInfo: PeerInfo): Promise<void> {\n // No-op.\n }\n\n async unsubscribeMessages(peerInfo: PeerInfo): Promise<void> {\n // No-op.\n }\n\n private _onMessage(message: EdgeMessage) {\n switch (message.serviceId) {\n case EdgeService.SWARM_SERVICE_ID: {\n this._processSwarmResponse(message);\n break;\n }\n case EdgeService.SIGNAL_SERVICE_ID: {\n this._processMessage(message);\n }\n }\n }\n\n private _processSwarmResponse(message: EdgeMessage) {\n invariant(protocol.getPayloadType(message) === SwarmResponseSchema.typeName, 'Wrong payload type');\n const payload = protocol.getPayload(message, SwarmResponseSchema);\n const topic = PublicKey.from(payload.swarmKey);\n if (!this._swarmPeers.has(topic)) {\n log.warn('Received message from wrong topic', { topic });\n return;\n }\n const oldPeers = this._swarmPeers.get(topic)!;\n const timestamp = new Date(Date.parse(message.timestamp));\n const newPeers = new ComplexSet<PeerInfo>(PeerInfoHash, payload.peers);\n\n // Emit new available peers in the swarm.\n for (const peer of newPeers) {\n if (oldPeers.has(peer)) {\n continue;\n }\n this.swarmEvent.emit({\n topic,\n peerAvailable: { peer, since: timestamp },\n });\n }\n\n // Emit peer that left the swarm.\n for (const peer of oldPeers) {\n if (newPeers.has(peer)) {\n continue;\n }\n this.swarmEvent.emit({\n topic,\n peerLeft: { peer },\n });\n }\n\n this._swarmPeers.set(topic, newPeers);\n }\n\n private _processMessage(message: EdgeMessage) {\n invariant(protocol.getPayloadType(message) === AnySchema.typeName, 'Wrong payload type');\n const payload = protocol.getPayload(message, AnySchema);\n invariant(message.source, 'source is missing');\n invariant(message.target, 'target is missing');\n invariant(message.target.length === 1, 'target should have exactly one item');\n\n this.onMessage.emit({\n author: message.source,\n recipient: message.target[0],\n payload: {\n type_url: payload.typeUrl,\n value: payload.value,\n },\n });\n }\n\n private _matchSelfPeerInfo(peer: PeerInfo) {\n return (\n peer && (peer.peerKey === this._edgeConnection.peerKey || peer.identityKey === this._edgeConnection.identityKey)\n );\n }\n\n private async _rejoinAllSwarms() {\n log('rejoin swarms', { swarms: Array.from(this._swarmPeers.keys()) });\n // Clear all swarms. But leave keys in the map.\n for (const topic of this._swarmPeers.keys()) {\n await this.join({\n topic,\n peer: { peerKey: this._edgeConnection.peerKey, identityKey: this._edgeConnection.identityKey },\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", "import_proto", "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", "Map", "_onAckCallbacks", "PublicKey", "hash", "_receivedMessages", "ComplexSet", "_closed", "_signalManager", "_retryDelay", "open", "traceId", "random", "toHex", "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", "peer", "subscribeMessages", "listeners", "peerKey", "_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", "length", "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", "event", "peerAvailable", "peerLeft", "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", "error", "Error", "type", "readyState", "OPEN", "CONNECTING", "wait", "timeout", "name", "metadata", "getMetadata", "rpc", "swarm", "asUint8Array", "waitUntilReady", "reset", "DEFAULT_RECONNECT_TIMEOUT", "MAX_RECONNECT_TIMEOUT", "ERROR_RECONCILE_DELAY", "RECONCILE_INTERVAL", "SignalClient", "Resource", "_host", "_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", "PeerInfoHash", "MemorySignalManagerContext", "MemorySignalManager", "_context", "_joinedSwarms", "_freezeTrigger", "all", "map", "joinedSwarmsCopy", "swarms", "since", "peers", "Array", "forEach", "dec", "remote", "connections", "then", "peerInfo", "freeze", "unfreeze", "endsWith", "relPayload", "Object", "sessionId", "WebsocketSignalManagerMonitor", "recordRateLimitExceeded", "recordServerFailure", "server", "serverName", "restarted", "willRestart", "MAX_SERVER_FAILURES", "WSS_SIGNAL_SERVER_REBOOT_DELAY", "WebsocketSignalManager", "_hosts", "_servers", "hosts", "_failedServersBitfield", "BitField", "zeros", "restartServer", "_lifecycleState", "LifecycleState", "_forEachServer", "index", "_clearServerFailedFlag", "RateLimitExceededError", "checkServerFailure", "isRestartRequired", "fn", "entries", "idx", "synchronized", "EdgeSignalManager", "edgeConnection", "_edgeConnection", "addListener", "reconnect", "_rejoinAllSwarms", "_matchSelfPeerInfo", "expected", "identityKey", "_swarmPeers", "protocol", "createMessage", "SwarmRequestSchema", "serviceId", "EdgeService", "SWARM_SERVICE_ID", "action", "SwarmRequestAction", "JOIN", "swarmKeys", "LEAVE", "AnySchema", "SIGNAL_SERVICE_ID", "source", "target", "typeUrl", "_processSwarmResponse", "_processMessage", "getPayloadType", "SwarmResponseSchema", "typeName", "getPayload", "swarmKey", "oldPeers", "timestamp", "parse", "newPeers", "setIdentityTags", "identityService", "devicesService", "setTag", "queryIdentity", "idqr", "identity", "truncate", "queryDevices", "dqr", "devices", "device", "thisDevice", "find", "kind", "DeviceKind", "CURRENT", "deviceKey"]
|
|
7
7
|
}
|
package/dist/lib/node/meta.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"inputs":{"packages/core/mesh/messaging/src/messenger-monitor.ts":{"bytes":2072,"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":37629,"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","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":11042,"imports":[{"path":"@dxos/tracing","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/messaging/src/signal-client/signal-local-state.ts":{"bytes":22542,"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":1610,"imports":[{"path":"@dxos/tracing","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/messaging/src/signal-client/signal-rpc-client.ts":{"bytes":26041,"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/protocols/proto","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":44005,"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-methods.ts":{"bytes":3541,"imports":[],"format":"esm"},"packages/core/mesh/messaging/src/signal-manager/memory-signal-manager.ts":{"bytes":24025,"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/proto","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"packages/core/mesh/messaging/src/signal-methods.ts","kind":"import-statement","original":"../signal-methods"}],"format":"esm"},"packages/core/mesh/messaging/src/signal-manager/signal-manager.ts":{"bytes":1062,"imports":[],"format":"esm"},"packages/core/mesh/messaging/src/signal-manager/websocket-signal-manager-monitor.ts":{"bytes":2226,"imports":[{"path":"@dxos/tracing","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/messaging/src/signal-manager/websocket-signal-manager.ts":{"bytes":29352,"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/edge-signal-manager.ts":{"bytes":24777,"imports":[{"path":"@bufbuild/protobuf/wkt","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/edge-client","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/buf/dxos/edge/messenger_pb","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"packages/core/mesh/messaging/src/signal-methods.ts","kind":"import-statement","original":"../signal-methods"}],"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":982,"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/edge-signal-manager.ts","kind":"import-statement","original":"./edge-signal-manager"},{"path":"packages/core/mesh/messaging/src/signal-manager/utils.ts","kind":"import-statement","original":"./utils"}],"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":107715},"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/protocols/proto","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/protocols/proto","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/proto","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":"@bufbuild/protobuf/wkt","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/edge-client","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/buf/dxos/edge/messenger_pb","kind":"import-statement","external":true},{"path":"@dxos/util","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":["EdgeSignalManager","MemorySignalManager","MemorySignalManagerContext","Messenger","PeerInfoHash","SignalClient","WebsocketSignalManager","setIdentityTags"],"entryPoint":"packages/core/mesh/messaging/src/index.ts","inputs":{"packages/core/mesh/messaging/src/messenger.ts":{"bytesInOutput":10584},"packages/core/mesh/messaging/src/messenger-monitor.ts":{"bytesInOutput":392},"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":12280},"packages/core/mesh/messaging/src/signal-client/signal-client-monitor.ts":{"bytesInOutput":2827},"packages/core/mesh/messaging/src/signal-client/signal-local-state.ts":{"bytesInOutput":5016},"packages/core/mesh/messaging/src/signal-client/signal-rpc-client.ts":{"bytesInOutput":6829},"packages/core/mesh/messaging/src/signal-client/signal-rpc-client-monitor.ts":{"bytesInOutput":283},"packages/core/mesh/messaging/src/signal-client/index.ts":{"bytesInOutput":0},"packages/core/mesh/messaging/src/signal-manager/memory-signal-manager.ts":{"bytesInOutput":6550},"packages/core/mesh/messaging/src/signal-methods.ts":{"bytesInOutput":45},"packages/core/mesh/messaging/src/signal-manager/index.ts":{"bytesInOutput":0},"packages/core/mesh/messaging/src/signal-manager/websocket-signal-manager.ts":{"bytesInOutput":9271},"packages/core/mesh/messaging/src/signal-manager/websocket-signal-manager-monitor.ts":{"bytesInOutput":436},"packages/core/mesh/messaging/src/signal-manager/edge-signal-manager.ts":{"bytesInOutput":6801},"packages/core/mesh/messaging/src/signal-manager/utils.ts":{"bytesInOutput":1597}},"bytes":64456}}}
|
|
1
|
+
{"inputs":{"packages/core/mesh/messaging/src/messenger-monitor.ts":{"bytes":2072,"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":37629,"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","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":11042,"imports":[{"path":"@dxos/tracing","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/messaging/src/signal-client/signal-local-state.ts":{"bytes":22542,"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":1610,"imports":[{"path":"@dxos/tracing","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/messaging/src/signal-client/signal-rpc-client.ts":{"bytes":26041,"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/protocols/proto","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":44005,"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-methods.ts":{"bytes":3541,"imports":[],"format":"esm"},"packages/core/mesh/messaging/src/signal-manager/memory-signal-manager.ts":{"bytes":24025,"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/proto","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"packages/core/mesh/messaging/src/signal-methods.ts","kind":"import-statement","original":"../signal-methods"}],"format":"esm"},"packages/core/mesh/messaging/src/signal-manager/signal-manager.ts":{"bytes":1062,"imports":[],"format":"esm"},"packages/core/mesh/messaging/src/signal-manager/websocket-signal-manager-monitor.ts":{"bytes":2226,"imports":[{"path":"@dxos/tracing","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/messaging/src/signal-manager/websocket-signal-manager.ts":{"bytes":29352,"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/edge-signal-manager.ts":{"bytes":24777,"imports":[{"path":"@bufbuild/protobuf/wkt","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/edge-client","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/buf/dxos/edge/messenger_pb","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"packages/core/mesh/messaging/src/signal-methods.ts","kind":"import-statement","original":"../signal-methods"}],"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":982,"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/edge-signal-manager.ts","kind":"import-statement","original":"./edge-signal-manager"},{"path":"packages/core/mesh/messaging/src/signal-manager/utils.ts","kind":"import-statement","original":"./utils"}],"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":107711},"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/protocols/proto","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/protocols/proto","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/proto","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":"@bufbuild/protobuf/wkt","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/edge-client","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/buf/dxos/edge/messenger_pb","kind":"import-statement","external":true},{"path":"@dxos/util","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":["EdgeSignalManager","MemorySignalManager","MemorySignalManagerContext","Messenger","PeerInfoHash","SignalClient","WebsocketSignalManager","setIdentityTags"],"entryPoint":"packages/core/mesh/messaging/src/index.ts","inputs":{"packages/core/mesh/messaging/src/messenger.ts":{"bytesInOutput":10584},"packages/core/mesh/messaging/src/messenger-monitor.ts":{"bytesInOutput":392},"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":12280},"packages/core/mesh/messaging/src/signal-client/signal-client-monitor.ts":{"bytesInOutput":2827},"packages/core/mesh/messaging/src/signal-client/signal-local-state.ts":{"bytesInOutput":5016},"packages/core/mesh/messaging/src/signal-client/signal-rpc-client.ts":{"bytesInOutput":6829},"packages/core/mesh/messaging/src/signal-client/signal-rpc-client-monitor.ts":{"bytesInOutput":283},"packages/core/mesh/messaging/src/signal-client/index.ts":{"bytesInOutput":0},"packages/core/mesh/messaging/src/signal-manager/memory-signal-manager.ts":{"bytesInOutput":6550},"packages/core/mesh/messaging/src/signal-methods.ts":{"bytesInOutput":45},"packages/core/mesh/messaging/src/signal-manager/index.ts":{"bytesInOutput":0},"packages/core/mesh/messaging/src/signal-manager/websocket-signal-manager.ts":{"bytesInOutput":9249},"packages/core/mesh/messaging/src/signal-manager/websocket-signal-manager-monitor.ts":{"bytesInOutput":436},"packages/core/mesh/messaging/src/signal-manager/edge-signal-manager.ts":{"bytesInOutput":6801},"packages/core/mesh/messaging/src/signal-manager/utils.ts":{"bytesInOutput":1597}},"bytes":64434}}}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dxos/messaging",
|
|
3
|
-
"version": "0.6.
|
|
3
|
+
"version": "0.6.11-staging.32b42e4",
|
|
4
4
|
"description": "Messaging",
|
|
5
5
|
"homepage": "https://dxos.org",
|
|
6
6
|
"bugs": "https://github.com/dxos/dxos/issues",
|
|
@@ -28,25 +28,25 @@
|
|
|
28
28
|
"@bufbuild/protobuf": "^2.0.0",
|
|
29
29
|
"isomorphic-ws": "^5.0.0",
|
|
30
30
|
"ws": "^8.14.2",
|
|
31
|
-
"@dxos/
|
|
32
|
-
"@dxos/
|
|
33
|
-
"@dxos/keys": "0.6.
|
|
34
|
-
"@dxos/
|
|
35
|
-
"@dxos/log": "0.6.
|
|
36
|
-
"@dxos/node-std": "0.6.
|
|
37
|
-
"@dxos/
|
|
38
|
-
"@dxos/
|
|
39
|
-
"@dxos/
|
|
40
|
-
"@dxos/
|
|
41
|
-
"@dxos/
|
|
42
|
-
"@dxos/
|
|
31
|
+
"@dxos/codec-protobuf": "0.6.11-staging.32b42e4",
|
|
32
|
+
"@dxos/invariant": "0.6.11-staging.32b42e4",
|
|
33
|
+
"@dxos/keys": "0.6.11-staging.32b42e4",
|
|
34
|
+
"@dxos/async": "0.6.11-staging.32b42e4",
|
|
35
|
+
"@dxos/log": "0.6.11-staging.32b42e4",
|
|
36
|
+
"@dxos/node-std": "0.6.11-staging.32b42e4",
|
|
37
|
+
"@dxos/protocols": "0.6.11-staging.32b42e4",
|
|
38
|
+
"@dxos/rpc": "0.6.11-staging.32b42e4",
|
|
39
|
+
"@dxos/tracing": "0.6.11-staging.32b42e4",
|
|
40
|
+
"@dxos/util": "0.6.11-staging.32b42e4",
|
|
41
|
+
"@dxos/context": "0.6.11-staging.32b42e4",
|
|
42
|
+
"@dxos/edge-client": "0.6.11-staging.32b42e4"
|
|
43
43
|
},
|
|
44
44
|
"devDependencies": {
|
|
45
45
|
"@types/node": "^18.11.9",
|
|
46
46
|
"earljs": "~0.1.10",
|
|
47
47
|
"typescript": "^5.5.4",
|
|
48
48
|
"wait-for-expect": "^3.0.2",
|
|
49
|
-
"@dxos/signal": "0.6.
|
|
49
|
+
"@dxos/signal": "0.6.11-staging.32b42e4"
|
|
50
50
|
},
|
|
51
51
|
"publishConfig": {
|
|
52
52
|
"access": "public"
|