@dxos/messaging 0.3.11-main.fbbdc2a → 0.3.11-main.fc97a54

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.
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../../src/messenger.ts", "../../../src/timeouts.ts", "../../../src/signal-client/signal-client.ts", "../../../src/signal-client/signal-rpc-client.ts", "../../../src/signal-manager/memory-signal-manager.ts", "../../../src/signal-manager/websocket-signal-manager.ts"],
4
4
  "sourcesContent": ["//\n// Copyright 2022 DXOS.org\n//\n\nimport { TimeoutError, scheduleExponentialBackoffTaskInterval, scheduleTask, scheduleTaskInterval } from '@dxos/async';\nimport { type Any } from '@dxos/codec-protobuf';\nimport { Context } from '@dxos/context';\nimport { invariant } from '@dxos/invariant';\nimport { PublicKey } from '@dxos/keys';\nimport { log } from '@dxos/log';\nimport { TimeoutError as ProtocolTimeoutError, schema, trace } from '@dxos/protocols';\nimport { ReliablePayload } from '@dxos/protocols/proto/dxos/mesh/messaging';\nimport { ComplexMap, ComplexSet } from '@dxos/util';\n\nimport { type SignalManager } from './signal-manager';\nimport { type Message } from './signal-methods';\nimport { MESSAGE_TIMEOUT } from './timeouts';\n\nexport type OnMessage = (params: { author: PublicKey; recipient: PublicKey; payload: Any }) => Promise<void>;\n\nexport interface MessengerOptions {\n signalManager: SignalManager;\n retryDelay?: number;\n}\n\nconst ReliablePayload = schema.getCodecForType('dxos.mesh.messaging.ReliablePayload');\nconst Acknowledgement = schema.getCodecForType('dxos.mesh.messaging.Acknowledgement');\n\nconst RECEIVED_MESSAGES_GC_INTERVAL = 120_000;\n\n/**\n * Reliable messenger that works trough signal network.\n */\nexport class Messenger {\n private readonly _signalManager: SignalManager;\n // { peerId, payloadType } => listeners set\n private readonly _listeners = new ComplexMap<{ peerId: PublicKey; payloadType: string }, Set<OnMessage>>(\n ({ peerId, payloadType }) => peerId.toHex() + payloadType,\n );\n\n // peerId => listeners set\n private readonly _defaultListeners = new ComplexMap<PublicKey, Set<OnMessage>>(PublicKey.hash);\n\n private readonly _onAckCallbacks = new ComplexMap<PublicKey, () => void>(PublicKey.hash);\n\n private readonly _receivedMessages = new ComplexSet<PublicKey>(PublicKey.hash);\n\n /**\n * Keys scheduled to be cleared from _receivedMessages on the next iteration.\n */\n private readonly _toClear = new ComplexSet<PublicKey>(PublicKey.hash);\n\n private _ctx!: Context;\n private _closed = true;\n private readonly _retryDelay: number;\n\n constructor({ signalManager, retryDelay = 300 }: MessengerOptions) {\n this._signalManager = signalManager;\n this._retryDelay = retryDelay;\n\n this.open();\n }\n\n open() {\n if (!this._closed) {\n return;\n }\n const traceId = PublicKey.random().toHex();\n log.trace('dxos.mesh.messenger.open', trace.begin({ id: traceId }));\n this._ctx = new Context({\n onError: (err) => log.catch(err),\n });\n this._ctx.onDispose(\n this._signalManager.onMessage.on(async (message) => {\n log('received message', { from: message.author });\n await this._handleMessage(message);\n }),\n );\n\n // Clear the map periodically.\n scheduleTaskInterval(\n this._ctx,\n async () => {\n this._performGc();\n },\n RECEIVED_MESSAGES_GC_INTERVAL,\n );\n\n this._closed = false;\n log.trace('dxos.mesh.messenger.open', trace.end({ id: traceId }));\n }\n\n async close() {\n if (this._closed) {\n return;\n }\n this._closed = true;\n await this._ctx.dispose();\n }\n\n async sendMessage({ author, recipient, payload }: Message): Promise<void> {\n invariant(!this._closed, 'Closed');\n const messageContext = this._ctx.derive();\n\n const reliablePayload: ReliablePayload = {\n messageId: PublicKey.random(),\n payload,\n };\n invariant(!this._onAckCallbacks.has(reliablePayload.messageId!));\n log('send message', { messageId: reliablePayload.messageId, author, recipient });\n\n let messageReceived: () => void;\n let timeoutHit: (err: Error) => void;\n\n const promise = new Promise<void>((resolve, reject) => {\n messageReceived = resolve;\n timeoutHit = reject;\n });\n\n // Setting retry interval if signal was not acknowledged.\n scheduleExponentialBackoffTaskInterval(\n messageContext,\n async () => {\n log('retrying message', { messageId: reliablePayload.messageId });\n await this._encodeAndSend({ author, recipient, reliablePayload }).catch((err) =>\n log('failed to send message', { err }),\n );\n },\n this._retryDelay,\n );\n\n scheduleTask(\n messageContext,\n () => {\n log('message not delivered', { messageId: reliablePayload.messageId });\n this._onAckCallbacks.delete(reliablePayload.messageId!);\n timeoutHit(\n new ProtocolTimeoutError(\n 'signaling message not delivered',\n new TimeoutError(MESSAGE_TIMEOUT, 'Message not delivered'),\n ),\n );\n void messageContext.dispose();\n },\n MESSAGE_TIMEOUT,\n );\n\n this._onAckCallbacks.set(reliablePayload.messageId, () => {\n messageReceived();\n this._onAckCallbacks.delete(reliablePayload.messageId!);\n void messageContext.dispose();\n });\n\n await this._encodeAndSend({ author, recipient, reliablePayload });\n return promise;\n }\n\n /**\n * Subscribes onMessage function to messages that contains payload with payloadType.\n * @param payloadType if not specified, onMessage will be subscribed to all types of messages.\n */\n async listen({\n peerId,\n payloadType,\n onMessage,\n }: {\n peerId: PublicKey;\n payloadType?: string;\n onMessage: OnMessage;\n }): Promise<ListeningHandle> {\n invariant(!this._closed, 'Closed');\n\n await this._signalManager.subscribeMessages(peerId);\n let listeners: Set<OnMessage> | undefined;\n\n if (!payloadType) {\n listeners = this._defaultListeners.get(peerId);\n if (!listeners) {\n listeners = new Set();\n this._defaultListeners.set(peerId, listeners);\n }\n } else {\n listeners = this._listeners.get({ peerId, payloadType });\n if (!listeners) {\n listeners = new Set();\n this._listeners.set({ peerId, payloadType }, listeners);\n }\n }\n\n listeners.add(onMessage);\n\n return {\n unsubscribe: async () => {\n listeners!.delete(onMessage);\n },\n };\n }\n\n private async _encodeAndSend({\n author,\n recipient,\n reliablePayload,\n }: {\n author: PublicKey;\n recipient: PublicKey;\n reliablePayload: ReliablePayload;\n }): Promise<void> {\n await this._signalManager.sendMessage({\n author,\n recipient,\n payload: {\n type_url: 'dxos.mesh.messaging.ReliablePayload',\n value: ReliablePayload.encode(reliablePayload, { preserveAny: true }),\n },\n });\n }\n\n private async _handleMessage(message: Message): Promise<void> {\n switch (message.payload.type_url) {\n case 'dxos.mesh.messaging.ReliablePayload': {\n await this._handleReliablePayload(message);\n break;\n }\n case 'dxos.mesh.messaging.Acknowledgement': {\n await this._handleAcknowledgement({ payload: message.payload });\n break;\n }\n }\n }\n\n private async _handleReliablePayload({ author, recipient, payload }: Message) {\n invariant(payload.type_url === 'dxos.mesh.messaging.ReliablePayload');\n const reliablePayload: ReliablePayload = ReliablePayload.decode(payload.value, { preserveAny: true });\n\n log('handling message', { messageId: reliablePayload.messageId });\n\n await this._sendAcknowledgement({\n author,\n recipient,\n messageId: reliablePayload.messageId,\n });\n\n if (this._receivedMessages.has(reliablePayload.messageId!)) {\n return;\n }\n\n this._receivedMessages.add(reliablePayload.messageId!);\n\n await this._callListeners({\n author,\n recipient,\n payload: reliablePayload.payload,\n });\n }\n\n private async _handleAcknowledgement({ payload }: { payload: Any }) {\n invariant(payload.type_url === 'dxos.mesh.messaging.Acknowledgement');\n this._onAckCallbacks.get(Acknowledgement.decode(payload.value).messageId)?.();\n }\n\n private async _sendAcknowledgement({\n author,\n recipient,\n messageId,\n }: {\n author: PublicKey;\n recipient: PublicKey;\n messageId: PublicKey;\n }): Promise<void> {\n log('sending ACK', { messageId, from: recipient, to: author });\n\n await this._signalManager.sendMessage({\n author: recipient,\n recipient: author,\n payload: {\n type_url: 'dxos.mesh.messaging.Acknowledgement',\n value: Acknowledgement.encode({ messageId }),\n },\n });\n }\n\n private async _callListeners(message: Message): Promise<void> {\n {\n const defaultListenerMap = this._defaultListeners.get(message.recipient);\n if (defaultListenerMap) {\n for (const listener of defaultListenerMap) {\n await listener(message);\n }\n }\n }\n\n {\n const listenerMap = this._listeners.get({\n peerId: message.recipient,\n payloadType: message.payload.type_url,\n });\n if (listenerMap) {\n for (const listener of listenerMap) {\n await listener(message);\n }\n }\n }\n }\n\n 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 2023 DXOS.org\n//\n\n/**\n * Timeout for retrying messages.\n */\nexport const MESSAGE_TIMEOUT = 10_000;\n", "//\n// Copyright 2020 DXOS.org\n//\n\nimport { DeferredTask, Event, Trigger, asyncTimeout, scheduleTask, scheduleTaskInterval, sleep } from '@dxos/async';\nimport { type Any, type Stream } from '@dxos/codec-protobuf';\nimport { Context, cancelWithContext } from '@dxos/context';\nimport { invariant } from '@dxos/invariant';\nimport { PublicKey } from '@dxos/keys';\nimport { log } from '@dxos/log';\nimport { trace } from '@dxos/protocols';\nimport { type Message as SignalMessage, SignalState, type SwarmEvent } from '@dxos/protocols/proto/dxos/mesh/signal';\nimport { ComplexMap, ComplexSet } from '@dxos/util';\n\nimport { SignalRPCClient } from './signal-rpc-client';\nimport { type Message, type SignalMethods } from '../signal-methods';\n\nconst DEFAULT_RECONNECT_TIMEOUT = 100;\nconst MAX_RECONNECT_TIMEOUT = 5000;\nconst ERROR_RECONCILE_DELAY = 1000;\nconst RECONCILE_INTERVAL = 5_000;\n\nexport type SignalStatus = {\n host: string;\n state: SignalState;\n error?: string;\n reconnectIn: number;\n connectionStarted: Date;\n lastStateChange: Date;\n};\n\nexport type CommandTrace = {\n messageId: string;\n host: string;\n incoming: boolean;\n time: number;\n method: string;\n payload: any;\n response?: any;\n error?: string;\n};\n\n/**\n * Establishes a websocket connection to signal server and provides RPC methods.\n */\nexport class SignalClient implements SignalMethods {\n private _state = SignalState.CLOSED;\n\n private _lastError?: Error;\n\n /**\n * Number of milliseconds after which the connection will be attempted again in case of error.\n */\n private _reconnectAfter = DEFAULT_RECONNECT_TIMEOUT;\n\n /**\n * Timestamp of when the connection attempt was began.\n */\n private _connectionStarted = new Date();\n\n /**\n * Timestamp of last state change.\n */\n private _lastStateChange = new Date();\n\n private _client?: SignalRPCClient;\n private readonly _clientReady = new Trigger();\n\n private _ctx?: Context;\n\n private _connectionCtx?: Context;\n\n private _reconcileTask?: DeferredTask;\n private _reconnectTask?: DeferredTask;\n\n readonly statusChanged = new Event<SignalStatus>();\n readonly commandTrace = new Event<CommandTrace>();\n\n /**\n * Swarm events streams. Keys represent actually joined topic and peerId.\n */\n private readonly _swarmStreams = new ComplexMap<{ topic: PublicKey; peerId: PublicKey }, Stream<SwarmEvent>>(\n ({ topic, peerId }) => topic.toHex() + peerId.toHex(),\n );\n\n /**\n * Represent desired joined topic and peerId.\n */\n private readonly _joinedTopics = new ComplexSet<{ topic: PublicKey; peerId: PublicKey }>(\n ({ topic, peerId }) => topic.toHex() + peerId.toHex(),\n );\n\n /**\n * Message streams. Keys represents actually subscribed peers.\n * @internal\n */\n public readonly _messageStreams = new ComplexMap<PublicKey, Stream<SignalMessage>>((key) => key.toHex());\n\n /**\n * Represent desired message subscriptions.\n */\n private readonly _subscribedMessages = new ComplexSet<{ peerId: PublicKey }>(({ peerId }) => peerId.toHex());\n\n /**\n * Event to use in tests to wait till subscription is successfully established.\n * @internal\n */\n public _reconciled = new Event();\n\n private readonly _instanceId = PublicKey.random().toHex();\n\n private readonly _performance = {\n sentMessages: 0,\n receivedMessages: 0,\n reconnectCounter: 0,\n joinCounter: 0,\n leaveCounter: 0,\n };\n\n /**\n * @param _host Signal server websocket URL.\n * @param _onMessage\n */\n constructor(\n private readonly _host: string,\n private readonly _onMessage: (params: { author: PublicKey; recipient: PublicKey; payload: Any }) => Promise<void>,\n private readonly _onSwarmEvent: (params: { topic: PublicKey; swarmEvent: SwarmEvent }) => Promise<void>,\n ) {\n if (!this._host.startsWith('wss://') && !this._host.startsWith('ws://')) {\n throw new Error(`Signal server requires a websocket URL. Provided: ${this._host}`);\n }\n }\n\n open() {\n log.trace('dxos.mesh.signal-client.open', trace.begin({ id: this._instanceId }));\n\n if ([SignalState.CONNECTED, SignalState.CONNECTING].includes(this._state)) {\n return;\n }\n\n this._ctx = new Context({\n onError: (err) => {\n if (this._state === SignalState.CLOSED || this._ctx?.disposed) {\n return;\n }\n if (this._state === SignalState.CONNECTED) {\n log.warn('SignalClient error:', err);\n }\n this._scheduleReconcileAfterError();\n },\n });\n\n this._reconcileTask = new DeferredTask(this._ctx, async () => {\n await this._reconcileSwarmSubscriptions();\n await this._reconcileMessageSubscriptions();\n this._reconciled.emit();\n });\n\n // Reconcile subscriptions periodically.\n scheduleTaskInterval(\n this._ctx,\n async () => {\n if (this._state === SignalState.CONNECTED) {\n this._reconcileTask!.schedule();\n }\n },\n RECONCILE_INTERVAL,\n );\n\n this._reconnectTask = new DeferredTask(this._ctx, async () => {\n await this._reconnect();\n });\n\n this._setState(SignalState.CONNECTING);\n this._createClient();\n log.trace('dxos.mesh.signal-client.open', trace.end({ id: this._instanceId }));\n }\n\n async close() {\n log('closing...');\n if ([SignalState.CLOSED].includes(this._state)) {\n return;\n }\n\n await this._ctx?.dispose();\n\n this._clientReady.reset();\n await this._client?.close();\n this._client = undefined;\n this._setState(SignalState.CLOSED);\n log('closed');\n }\n\n getStatus(): SignalStatus {\n return {\n host: this._host,\n state: this._state,\n error: this._lastError?.message,\n reconnectIn: this._reconnectAfter,\n connectionStarted: this._connectionStarted,\n lastStateChange: this._lastStateChange,\n };\n }\n\n async join({ topic, peerId }: { topic: PublicKey; peerId: PublicKey }): Promise<void> {\n log('joining', { topic, peerId });\n this._performance.joinCounter++;\n this._joinedTopics.add({ topic, peerId });\n this._reconcileTask!.schedule();\n }\n\n async leave({ topic, peerId }: { topic: PublicKey; peerId: PublicKey }): Promise<void> {\n this._performance.leaveCounter++;\n log('leaving', { topic, peerId });\n\n void this._swarmStreams.get({ topic, peerId })?.close();\n this._swarmStreams.delete({ topic, peerId });\n this._joinedTopics.delete({ topic, peerId });\n }\n\n async sendMessage(msg: Message): Promise<void> {\n this._performance.sentMessages++;\n await this._clientReady.wait();\n invariant(this._state === SignalState.CONNECTED, 'Not connected to Signal Server');\n await this._client!.sendMessage(msg);\n }\n\n async subscribeMessages(peerId: PublicKey) {\n log('subscribing to messages', { peerId });\n this._subscribedMessages.add({ peerId });\n this._reconcileTask!.schedule();\n }\n\n async unsubscribeMessages(peerId: PublicKey) {\n log('unsubscribing from messages', { peerId });\n this._subscribedMessages.delete({ peerId });\n void this._messageStreams.get(peerId)?.close();\n this._messageStreams.delete(peerId);\n }\n\n private _scheduleReconcileAfterError() {\n scheduleTask(\n this._ctx!,\n () => {\n this._reconcileTask!.schedule();\n },\n ERROR_RECONCILE_DELAY,\n );\n }\n\n private _setState(newState: SignalState) {\n this._state = newState;\n this._lastStateChange = new Date();\n log('signal state changed', { status: this.getStatus() });\n this.statusChanged.emit(this.getStatus());\n }\n\n private _createClient() {\n log('creating client', { host: this._host, state: this._state });\n invariant(!this._client, 'Client already created');\n\n this._connectionStarted = new Date();\n\n // Create new context for each connection.\n this._connectionCtx = this._ctx!.derive();\n this._connectionCtx.onDispose(async () => {\n log('connection context disposed');\n await Promise.all(Array.from(this._swarmStreams.values()).map((stream) => stream.close()));\n await Promise.all(Array.from(this._messageStreams.values()).map((stream) => stream.close()));\n this._swarmStreams.clear();\n this._messageStreams.clear();\n });\n\n try {\n this._client = new SignalRPCClient({\n url: this._host,\n callbacks: {\n onConnected: () => {\n log('socket connected');\n this._lastError = undefined;\n this._reconnectAfter = DEFAULT_RECONNECT_TIMEOUT;\n this._setState(SignalState.CONNECTED);\n this._clientReady.wake();\n this._reconcileTask!.schedule();\n },\n\n onDisconnected: () => {\n log('socket disconnected', { state: this._state });\n if (this._state === SignalState.ERROR) {\n // Ignore disconnects after error.\n // Handled by error handler before disconnect handler.\n this._setState(SignalState.DISCONNECTED);\n return;\n }\n if (this._state !== SignalState.CONNECTED && this._state !== SignalState.CONNECTING) {\n this._incrementReconnectTimeout();\n }\n this._setState(SignalState.DISCONNECTED);\n this._reconnectTask!.schedule();\n },\n\n onError: (error) => {\n log('socket error', { error, state: this._state });\n this._lastError = error;\n if (this._state !== SignalState.CONNECTED && this._state !== SignalState.CONNECTING) {\n this._incrementReconnectTimeout();\n }\n this._setState(SignalState.ERROR);\n\n this._reconnectTask!.schedule();\n },\n },\n });\n } catch (err: any) {\n if (this._state !== SignalState.CONNECTED && this._state !== SignalState.CONNECTING) {\n this._incrementReconnectTimeout();\n }\n this._lastError = err;\n this._setState(SignalState.DISCONNECTED);\n this._reconnectTask!.schedule();\n }\n }\n\n private _incrementReconnectTimeout() {\n this._reconnectAfter *= 2;\n this._reconnectAfter = Math.min(this._reconnectAfter, MAX_RECONNECT_TIMEOUT);\n }\n\n private async _reconnect() {\n log(`reconnecting in ${this._reconnectAfter}ms`, { state: this._state });\n this._performance.reconnectCounter++;\n\n if (this._state === SignalState.RECONNECTING) {\n log.warn('Signal api already reconnecting.');\n return;\n }\n\n if (this._state === SignalState.CLOSED) {\n return;\n }\n\n // Close client if it wasn't already closed.\n this._clientReady.reset();\n await this._connectionCtx?.dispose();\n this._client?.close().catch(() => {});\n this._client = undefined;\n\n await cancelWithContext(this._ctx!, sleep(this._reconnectAfter));\n\n this._setState(SignalState.RECONNECTING);\n\n this._createClient();\n }\n\n private async _reconcileSwarmSubscriptions(): Promise<void> {\n await asyncTimeout(cancelWithContext(this._connectionCtx!, this._clientReady.wait()), 5_000);\n // Copy Client reference to avoid client change during the reconcile.\n const client = this._client!;\n invariant(this._state === SignalState.CONNECTED, 'Not connected to Signal Server');\n\n // Unsubscribe from topics that are no longer needed.\n for (const { topic, peerId } of this._swarmStreams.keys()) {\n // Join desired topics.\n if (this._joinedTopics.has({ topic, peerId })) {\n continue;\n }\n\n 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(\n cancelWithContext(this._connectionCtx!, client.join({ topic, peerId })),\n 5000,\n );\n // Subscribing to swarm events.\n // TODO(mykola): What happens when the swarm stream is closed? Maybe send leave event for each peer?\n swarmStream.subscribe(async (swarmEvent: SwarmEvent) => {\n log('swarm event', { swarmEvent });\n await this._onSwarmEvent({ topic, swarmEvent });\n });\n\n // Saving swarm stream.\n this._swarmStreams.set({ topic, peerId }, swarmStream);\n }\n }\n\n private async _reconcileMessageSubscriptions(): Promise<void> {\n await asyncTimeout(cancelWithContext(this._connectionCtx!, this._clientReady.wait()), 5_000);\n // Copy Client reference to avoid client change during the reconcile.\n const client = this._client!;\n invariant(this._state === SignalState.CONNECTED, 'Not connected to Signal Server');\n\n // Unsubscribe from messages that are no longer needed.\n for (const peerId of this._messageStreams.keys()) {\n // Join desired topics.\n if (this._subscribedMessages.has({ peerId })) {\n continue;\n }\n\n 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(\n cancelWithContext(this._connectionCtx!, client.receiveMessages(peerId)),\n 5000,\n );\n messageStream.subscribe(async (message: SignalMessage) => {\n this._performance.receivedMessages++;\n await this._onMessage({\n author: PublicKey.from(message.author),\n recipient: PublicKey.from(message.recipient),\n payload: message.payload,\n });\n });\n\n // Saving message stream.\n this._messageStreams.set(peerId, messageStream);\n }\n }\n}\n", "//\n// Copyright 2022 DXOS.org\n//\n\nimport WebSocket from 'isomorphic-ws';\n\nimport { Trigger } from '@dxos/async';\nimport { type Any, type Stream } from '@dxos/codec-protobuf';\nimport { invariant } from '@dxos/invariant';\nimport { PublicKey } from '@dxos/keys';\nimport { log } from '@dxos/log';\nimport { schema, trace } from '@dxos/protocols';\nimport { type Message as SignalMessage, type Signal } from '@dxos/protocols/proto/dxos/mesh/signal';\nimport { createProtoRpcPeer, type ProtoRpcPeer } from '@dxos/rpc';\n\ninterface Services {\n Signal: Signal;\n}\n\nexport type SignalCallbacks = {\n onConnected?: () => void;\n\n /**\n * Called on disconnect.\n * In case of error, `onError` will be called first and then `onDisconnected`.\n */\n onDisconnected?: () => void;\n\n onError?: (error: Error) => void;\n};\n\nexport type SignalRPCClientParams = {\n url: string;\n callbacks?: SignalCallbacks;\n};\n\nexport class SignalRPCClient {\n private _socket?: WebSocket;\n private _rpc?: ProtoRpcPeer<Services>;\n private readonly _connectTrigger = new Trigger();\n\n private _closed = false;\n\n private readonly _url: string;\n private readonly _callbacks: SignalCallbacks;\n\n constructor({ url, callbacks = {} }: SignalRPCClientParams) {\n const traceId = PublicKey.random().toHex();\n log.trace('dxos.mesh.signal-rpc-client.constructor', trace.begin({ id: traceId }));\n this._url = url;\n this._callbacks = callbacks;\n this._socket = new WebSocket(this._url);\n\n this._rpc = createProtoRpcPeer({\n requested: {\n Signal: schema.getService('dxos.mesh.signal.Signal'),\n },\n noHandshake: true,\n port: {\n send: (msg) => {\n if (this._closed) {\n // Do not send messages after close.\n return;\n }\n try {\n this._socket!.send(msg);\n } catch (err) {\n log.warn('send error', err);\n }\n },\n subscribe: (cb) => {\n this._socket!.onmessage = async (msg: WebSocket.MessageEvent) => {\n if (typeof Blob !== 'undefined' && msg.data instanceof Blob) {\n cb(Buffer.from(await msg.data.arrayBuffer()));\n } else {\n cb(msg.data as any);\n }\n };\n },\n },\n encodingOptions: {\n preserveAny: true,\n },\n });\n\n this._socket.onopen = async () => {\n try {\n await this._rpc!.open();\n log(`RPC open ${this._url}`);\n this._callbacks.onConnected?.();\n this._connectTrigger.wake();\n } catch (err: any) {\n this._callbacks.onError?.(err);\n }\n };\n\n this._socket.onclose = async () => {\n log(`Disconnected ${this._url}`);\n this._callbacks.onDisconnected?.();\n await this.close();\n };\n\n this._socket.onerror = async (event: WebSocket.ErrorEvent) => {\n if (this._closed) {\n // Ignore errors after close.\n return;\n }\n\n this._callbacks.onError?.(event.error ?? new Error(event.message));\n this._connectTrigger.reset();\n\n try {\n await this._rpc?.close();\n } catch (err) {\n log.catch(err);\n }\n this._closed = true;\n\n log.warn(event.message ?? 'Socket error', { url: this._url });\n };\n\n log.trace('dxos.mesh.signal-rpc-client.constructor', trace.end({ id: traceId }));\n }\n\n async close() {\n this._closed = true;\n try {\n await this._rpc?.close();\n this._socket?.close();\n } catch (err) {\n log.warn('close error', err);\n }\n }\n\n async join({ topic, peerId }: { topic: PublicKey; peerId: PublicKey }) {\n log('join', { topic, peerId });\n await this._connectTrigger.wait();\n invariant(!this._closed, 'SignalRPCClient is closed');\n invariant(this._rpc, 'Rpc is not initialized');\n const swarmStream = this._rpc.rpc.Signal.join({\n swarm: topic.asUint8Array(),\n peer: peerId.asUint8Array(),\n });\n await swarmStream.waitUntilReady();\n return swarmStream;\n }\n\n async receiveMessages(peerId: PublicKey): Promise<Stream<SignalMessage>> {\n log('receiveMessages', { peerId });\n invariant(!this._closed, 'SignalRPCClient is closed');\n await this._connectTrigger.wait();\n invariant(this._rpc, 'Rpc is not initialized');\n const messageStream = this._rpc.rpc.Signal.receiveMessages({\n peer: peerId.asUint8Array(),\n });\n await messageStream.waitUntilReady();\n return messageStream;\n }\n\n async sendMessage({ author, recipient, payload }: { author: PublicKey; recipient: PublicKey; payload: Any }) {\n log('sendMessage', { author, recipient, payload });\n invariant(!this._closed, 'SignalRPCClient is closed');\n await this._connectTrigger.wait();\n invariant(this._rpc, 'Rpc is not initialized');\n await this._rpc.rpc.Signal.sendMessage({\n author: author.asUint8Array(),\n recipient: recipient.asUint8Array(),\n payload,\n });\n }\n}\n", "//\n// Copyright 2020 DXOS.org\n//\n\nimport { Event, Trigger } from '@dxos/async';\nimport { type Any } from '@dxos/codec-protobuf';\nimport { Context } from '@dxos/context';\nimport { invariant } from '@dxos/invariant';\nimport { PublicKey } from '@dxos/keys';\nimport { log } from '@dxos/log';\nimport { schema } from '@dxos/protocols';\nimport { type SwarmEvent } from '@dxos/protocols/proto/dxos/mesh/signal';\nimport { ComplexMap, ComplexSet } from '@dxos/util';\n\nimport { type SignalManager } from './signal-manager';\nimport { type CommandTrace, type SignalStatus } from '../signal-client';\n\n/**\n * Common signaling context that connects multiple MemorySignalManager instances.\n */\nexport class MemorySignalManagerContext {\n // Swarm messages.\n readonly swarmEvent = new Event<{\n topic: PublicKey;\n swarmEvent: SwarmEvent;\n }>();\n\n // Mapping from topic to set of peers.\n readonly swarms = new ComplexMap<PublicKey, ComplexSet<PublicKey>>(PublicKey.hash);\n\n // Map of connections for each peer for signaling.\n readonly connections = new ComplexMap<PublicKey, MemorySignalManager>(PublicKey.hash);\n}\n\n/**\n * In memory signal manager for testing.\n */\nexport class MemorySignalManager implements SignalManager {\n readonly statusChanged = new Event<SignalStatus[]>();\n readonly commandTrace = new Event<CommandTrace>();\n readonly swarmEvent = new Event<{\n topic: PublicKey;\n swarmEvent: SwarmEvent;\n }>();\n\n readonly onMessage = new Event<{\n author: PublicKey;\n recipient: PublicKey;\n payload: Any;\n }>();\n\n /** Will be used to emit SwarmEvents on .open() and .close() */\n private _joinedSwarms = new ComplexSet<{ topic: PublicKey; peerId: PublicKey }>(\n ({ topic, peerId }) => topic.toHex() + peerId.toHex(),\n );\n\n private _ctx!: Context;\n\n // TODO(dmaretskyi): Replace with callback.\n private readonly _freezeTrigger = new Trigger().wake();\n\n constructor(private readonly _context: MemorySignalManagerContext) {\n this._ctx = new Context();\n\n this._ctx.onDispose(this._context.swarmEvent.on((data) => this.swarmEvent.emit(data)));\n }\n\n async open() {\n if (!this._ctx.disposed) {\n return;\n }\n this._ctx = new Context();\n this._ctx.onDispose(this._context.swarmEvent.on((data) => this.swarmEvent.emit(data)));\n\n await Promise.all([...this._joinedSwarms.values()].map((value) => this.join(value)));\n }\n\n async close() {\n if (this._ctx.disposed) {\n return;\n }\n // save copy of joined swarms.\n const joinedSwarmsCopy = new ComplexSet<{ topic: PublicKey; peerId: PublicKey }>(\n ({ topic, peerId }) => topic.toHex() + peerId.toHex(),\n [...this._joinedSwarms.values()],\n );\n\n await Promise.all([...this._joinedSwarms.values()].map((value) => this.leave(value)));\n\n // assign joined swarms back because .leave() deletes it.\n this._joinedSwarms = joinedSwarmsCopy;\n\n await this._ctx.dispose();\n }\n\n getStatus(): SignalStatus[] {\n return [];\n }\n\n async join({ topic, peerId }: { topic: PublicKey; peerId: PublicKey }) {\n invariant(!this._ctx.disposed, 'Closed');\n\n this._joinedSwarms.add({ topic, peerId });\n\n if (!this._context.swarms.has(topic)) {\n this._context.swarms.set(topic, new ComplexSet(PublicKey.hash));\n }\n\n this._context.swarms.get(topic)!.add(peerId);\n this._context.swarmEvent.emit({\n topic,\n swarmEvent: {\n peerAvailable: {\n peer: peerId.asUint8Array(),\n since: new Date(),\n },\n },\n });\n\n // Emitting swarm events for each peer.\n for (const [topic, peerIds] of this._context.swarms) {\n Array.from(peerIds).forEach((peerId) => {\n this.swarmEvent.emit({\n topic,\n swarmEvent: {\n peerAvailable: {\n peer: peerId.asUint8Array(),\n since: new Date(),\n },\n },\n });\n });\n }\n }\n\n async leave({ topic, peerId }: { topic: PublicKey; peerId: PublicKey }) {\n invariant(!this._ctx.disposed, 'Closed');\n\n this._joinedSwarms.delete({ topic, peerId });\n\n if (!this._context.swarms.has(topic)) {\n this._context.swarms.set(topic, new ComplexSet(PublicKey.hash));\n }\n\n this._context.swarms.get(topic)!.delete(peerId);\n\n const swarmEvent: SwarmEvent = {\n peerLeft: {\n peer: peerId.asUint8Array(),\n },\n };\n\n this._context.swarmEvent.emit({ topic, swarmEvent });\n }\n\n async sendMessage({ author, recipient, payload }: { author: PublicKey; recipient: PublicKey; payload: Any }) {\n log('send message', { author, recipient, ...dec(payload) });\n\n invariant(recipient);\n invariant(!this._ctx.disposed, 'Closed');\n\n await this._freezeTrigger.wait();\n\n const remote = this._context.connections.get(recipient);\n if (!remote) {\n log.warn('recipient is not subscribed for messages', { author, recipient });\n return;\n }\n\n if (remote._ctx.disposed) {\n log.warn('recipient is disposed', { author, recipient });\n return;\n }\n\n remote._freezeTrigger\n .wait()\n .then(() => {\n if (remote._ctx.disposed) {\n log.warn('recipient is disposed', { author, recipient });\n return;\n }\n\n log('receive message', { author, recipient, ...dec(payload) });\n\n remote.onMessage.emit({ author, recipient, payload });\n })\n .catch((err) => {\n log.error('error while waiting for freeze', { err });\n });\n }\n\n async subscribeMessages(peerId: PublicKey) {\n log('subscribing', { peerId });\n this._context.connections.set(peerId, this);\n }\n\n async unsubscribeMessages(peerId: PublicKey) {\n log('unsubscribing', { peerId });\n this._context.connections.delete(peerId);\n }\n\n freeze() {\n this._freezeTrigger.reset();\n }\n\n unfreeze() {\n this._freezeTrigger.wake();\n }\n}\nconst dec = (payload: Any) => {\n if (!payload.type_url.endsWith('ReliablePayload')) {\n return {};\n }\n\n const relPayload = schema.getCodecForType('dxos.mesh.messaging.ReliablePayload').decode(payload.value);\n\n if (typeof relPayload?.payload?.data === 'object') {\n return { payload: Object.keys(relPayload?.payload?.data)[0], sessionId: relPayload?.payload?.sessionId };\n }\n\n return {};\n};\n", "//\n// Copyright 2020 DXOS.org\n//\n\nimport { Event, sleep, synchronized } from '@dxos/async';\nimport { type Any } from '@dxos/codec-protobuf';\nimport { Context } from '@dxos/context';\nimport { invariant } from '@dxos/invariant';\nimport { PublicKey } from '@dxos/keys';\nimport { log } from '@dxos/log';\nimport { RateLimitExceededError, TimeoutError, trace } from '@dxos/protocols';\nimport { type Runtime } from '@dxos/protocols/proto/dxos/config';\nimport { type SwarmEvent } from '@dxos/protocols/proto/dxos/mesh/signal';\n\nimport { type SignalManager } from './signal-manager';\nimport { type CommandTrace, SignalClient, type SignalStatus } from '../signal-client';\n\nconst MAX_SERVER_FAILURES = 5;\nconst WSS_SIGNAL_SERVER_REBOOT_DELAY = 3_000;\n/**\n * Manages connection to multiple Signal Servers over WebSocket\n */\nexport class WebsocketSignalManager implements SignalManager {\n private readonly _servers = new Map<string, SignalClient>();\n\n private _ctx!: Context;\n private _opened = false;\n\n readonly failureCount = new Map<string, number>();\n readonly statusChanged = new Event<SignalStatus[]>();\n readonly commandTrace = new Event<CommandTrace>();\n readonly swarmEvent = new Event<{\n topic: PublicKey;\n swarmEvent: SwarmEvent;\n }>();\n\n readonly onMessage = new Event<{\n author: PublicKey;\n recipient: PublicKey;\n payload: Any;\n }>();\n\n private readonly _instanceId = PublicKey.random().toHex();\n\n constructor(private readonly _hosts: Runtime.Services.Signal[]) {\n log('Created WebsocketSignalManager', { hosts: this._hosts });\n for (const host of this._hosts) {\n if (this._servers.has(host.server)) {\n continue;\n }\n const server = new SignalClient(\n host.server,\n async (message) => this.onMessage.emit(message),\n async (data) => this.swarmEvent.emit(data),\n );\n server.statusChanged.on(() => this.statusChanged.emit(this.getStatus()));\n\n this._servers.set(host.server, server);\n this.failureCount.set(host.server, 0);\n server.commandTrace.on((trace) => this.commandTrace.emit(trace));\n }\n }\n\n @synchronized\n async open() {\n if (this._opened) {\n return;\n }\n log('open signal manager', { hosts: this._hosts });\n log.trace('dxos.mesh.websocket-signal-manager.open', trace.begin({ id: this._instanceId }));\n\n this._initContext();\n\n [...this._servers.values()].forEach((server) => server.open());\n\n this._opened = true;\n log.trace('dxos.mesh.websocket-signal-manager.open', trace.end({ id: this._instanceId }));\n }\n\n @synchronized\n async close() {\n if (!this._opened) {\n return;\n }\n this._opened = false;\n\n await this._ctx.dispose();\n\n await Promise.all(Array.from(this._servers.values()).map((server) => server.close()));\n }\n\n async restartServer(serverName: string) {\n log('Restarting server', { serverName });\n invariant(this._opened, 'server already closed');\n\n const server = this._servers.get(serverName);\n invariant(server, 'server not found');\n\n await server.close();\n await sleep(WSS_SIGNAL_SERVER_REBOOT_DELAY);\n await server.open();\n }\n\n getStatus(): SignalStatus[] {\n return Array.from(this._servers.values()).map((server) => server.getStatus());\n }\n\n @synchronized\n async join({ topic, peerId }: { topic: PublicKey; peerId: PublicKey }) {\n log('Join', { topic, peerId });\n invariant(this._opened, 'Closed');\n await this._forEachServer((server) => server.join({ topic, peerId }));\n }\n\n @synchronized\n async leave({ topic, peerId }: { topic: PublicKey; peerId: PublicKey }) {\n log('leaving', { topic, peerId });\n invariant(this._opened, 'Closed');\n\n await this._forEachServer((server) => server.leave({ topic, peerId }));\n }\n\n async sendMessage({\n author,\n recipient,\n payload,\n }: {\n author: PublicKey;\n recipient: PublicKey;\n payload: Any;\n }): Promise<void> {\n log(`Signal ${recipient.truncate()}`);\n invariant(this._opened, 'Closed');\n\n void this._forEachServer(async (server, serverName) => {\n void server.sendMessage({ author, recipient, payload }).catch((err) => {\n if (err instanceof RateLimitExceededError) {\n log.info('WSS rate limit exceeded', { err });\n } else if (err instanceof TimeoutError || err.constructor.name === 'TimeoutError') {\n log.info('WSS sendMessage timeout', { err });\n void this.checkServerFailure(serverName);\n } else {\n log.info(`error sending to ${serverName}`, { err });\n void this.checkServerFailure(serverName);\n }\n });\n });\n }\n\n @synchronized\n async checkServerFailure(serverName: string) {\n const failureCount = this.failureCount.get(serverName!) ?? 0;\n if (failureCount > MAX_SERVER_FAILURES) {\n log.warn(`Too many failures sending to ${serverName} (${failureCount} > ${MAX_SERVER_FAILURES}), restarting`);\n await this.restartServer(serverName!);\n this.failureCount.set(serverName!, 0);\n return;\n }\n this.failureCount.set(serverName!, (this.failureCount.get(serverName!) ?? 0) + 1);\n }\n\n async subscribeMessages(peerId: PublicKey) {\n log(`Subscribed for message stream peerId=${peerId}`);\n invariant(this._opened, 'Closed');\n\n await this._forEachServer(async (server) => server.subscribeMessages(peerId));\n }\n\n async unsubscribeMessages(peerId: PublicKey) {\n log(`Subscribed for message stream peerId=${peerId}`);\n invariant(this._opened, 'Closed');\n\n await this._forEachServer(async (server) => server.unsubscribeMessages(peerId));\n }\n\n private _initContext() {\n this._ctx = new Context({\n onError: (err) => log.catch(err),\n });\n }\n\n private async _forEachServer<ReturnType>(\n fn: (server: SignalClient, serverName: string) => Promise<ReturnType>,\n ): Promise<ReturnType[]> {\n return Promise.all(Array.from(this._servers.entries()).map(([serverName, server]) => fn(server, serverName)));\n }\n}\n"],
5
- "mappings": "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",
5
+ "mappings": ";;;;;;;;;;AAIA,SAASA,cAAcC,wCAAwCC,cAAcC,4BAA4B;AAEzG,SAASC,eAAe;AACxB,SAASC,iBAAiB;AAC1B,SAASC,iBAAiB;AAC1B,SAASC,WAAW;AACpB,SAASP,gBAAgBQ,sBAAsBC,QAAQC,aAAa;AAEpE,SAASC,YAAYC,kBAAkB;;;ACLhC,IAAMC,kBAAkB;;;;ADkB/B,IAAMC,kBAAkBC,OAAOC,gBAAgB,qCAAA;AAC/C,IAAMC,kBAAkBF,OAAOC,gBAAgB,qCAAA;AAE/C,IAAME,gCAAgC;AAK/B,IAAMC,YAAN,MAAMA;EAuBXC,YAAY,EAAEC,eAAeC,aAAa,IAAG,GAAsB;AApBlDC;sBAAa,IAAIC,WAChC,CAAC,EAAEC,QAAQC,YAAW,MAAOD,OAAOE,MAAK,IAAKD,WAAAA;AAI/BE;6BAAoB,IAAIJ,WAAsCK,UAAUC,IAAI;AAE5EC,2BAAkB,IAAIP,WAAkCK,UAAUC,IAAI;AAEtEE,6BAAoB,IAAIC,WAAsBJ,UAAUC,IAAI;AAK5DI;;;oBAAW,IAAID,WAAsBJ,UAAUC,IAAI;AAG5DK,mBAAU;AAIhB,SAAKC,iBAAiBf;AACtB,SAAKgB,cAAcf;AAEnB,SAAKgB,KAAI;EACX;EAEAA,OAAO;AACL,QAAI,CAAC,KAAKH,SAAS;AACjB;IACF;AACA,UAAMI,UAAUV,UAAUW,OAAM,EAAGb,MAAK;AACxCc,QAAIC,MAAM,4BAA4BA,MAAMC,MAAM;MAAEC,IAAIL;IAAQ,CAAA,GAAA;;;;;;AAChE,SAAKM,OAAO,IAAIC,QAAQ;MACtBC,SAAS,CAACC,QAAQP,IAAIQ,MAAMD,KAAAA,QAAAA;;;;;;IAC9B,CAAA;AACA,SAAKH,KAAKK,UACR,KAAKd,eAAee,UAAUC,GAAG,OAAOC,YAAAA;AACtCZ,UAAI,oBAAoB;QAAEa,MAAMD,QAAQE;MAAO,GAAA;;;;;;AAC/C,YAAM,KAAKC,eAAeH,OAAAA;IAC5B,CAAA,CAAA;AAIFI,yBACE,KAAKZ,MACL,YAAA;AACE,WAAKa,WAAU;IACjB,GACAxC,6BAAAA;AAGF,SAAKiB,UAAU;AACfM,QAAIC,MAAM,4BAA4BA,MAAMiB,IAAI;MAAEf,IAAIL;IAAQ,CAAA,GAAA;;;;;;EAChE;EAEA,MAAMqB,QAAQ;AACZ,QAAI,KAAKzB,SAAS;AAChB;IACF;AACA,SAAKA,UAAU;AACf,UAAM,KAAKU,KAAKgB,QAAO;EACzB;EAEA,MAAMC,YAAY,EAAEP,QAAQQ,WAAWC,QAAO,GAA4B;AACxEC,cAAU,CAAC,KAAK9B,SAAS,UAAA;;;;;;;;;AACzB,UAAM+B,iBAAiB,KAAKrB,KAAKsB,OAAM;AAEvC,UAAMC,kBAAmC;MACvCC,WAAWxC,UAAUW,OAAM;MAC3BwB;IACF;AACAC,cAAU,CAAC,KAAKlC,gBAAgBuC,IAAIF,gBAAgBC,SAAS,GAAA,QAAA;;;;;;;;;AAC7D5B,QAAI,gBAAgB;MAAE4B,WAAWD,gBAAgBC;MAAWd;MAAQQ;IAAU,GAAA;;;;;;AAE9E,QAAIQ;AACJ,QAAIC;AAEJ,UAAMC,UAAU,IAAIC,QAAc,CAACC,SAASC,WAAAA;AAC1CL,wBAAkBI;AAClBH,mBAAaI;IACf,CAAA;AAGAC,2CACEX,gBACA,YAAA;AACEzB,UAAI,oBAAoB;QAAE4B,WAAWD,gBAAgBC;MAAU,GAAA;;;;;;AAC/D,YAAM,KAAKS,eAAe;QAAEvB;QAAQQ;QAAWK;MAAgB,CAAA,EAAGnB,MAAM,CAACD,QACvEP,IAAI,0BAA0B;QAAEO;MAAI,GAAA;;;;;;IAExC,GACA,KAAKX,WAAW;AAGlB0C,iBACEb,gBACA,MAAA;AACEzB,UAAI,yBAAyB;QAAE4B,WAAWD,gBAAgBC;MAAU,GAAA;;;;;;AACpE,WAAKtC,gBAAgBiD,OAAOZ,gBAAgBC,SAAS;AACrDG,iBACE,IAAIS,qBACF,mCACA,IAAIC,aAAaC,iBAAiB,uBAAA,CAAA,CAAA;AAGtC,WAAKjB,eAAeL,QAAO;IAC7B,GACAsB,eAAAA;AAGF,SAAKpD,gBAAgBqD,IAAIhB,gBAAgBC,WAAW,MAAA;AAClDE,sBAAAA;AACA,WAAKxC,gBAAgBiD,OAAOZ,gBAAgBC,SAAS;AACrD,WAAKH,eAAeL,QAAO;IAC7B,CAAA;AAEA,UAAM,KAAKiB,eAAe;MAAEvB;MAAQQ;MAAWK;IAAgB,CAAA;AAC/D,WAAOK;EACT;;;;;EAMA,MAAMY,OAAO,EACX5D,QACAC,aACAyB,UAAS,GAKkB;AAC3Bc,cAAU,CAAC,KAAK9B,SAAS,UAAA;;;;;;;;;AAEzB,UAAM,KAAKC,eAAekD,kBAAkB7D,MAAAA;AAC5C,QAAI8D;AAEJ,QAAI,CAAC7D,aAAa;AAChB6D,kBAAY,KAAK3D,kBAAkB4D,IAAI/D,MAAAA;AACvC,UAAI,CAAC8D,WAAW;AACdA,oBAAY,oBAAIE,IAAAA;AAChB,aAAK7D,kBAAkBwD,IAAI3D,QAAQ8D,SAAAA;MACrC;IACF,OAAO;AACLA,kBAAY,KAAKhE,WAAWiE,IAAI;QAAE/D;QAAQC;MAAY,CAAA;AACtD,UAAI,CAAC6D,WAAW;AACdA,oBAAY,oBAAIE,IAAAA;AAChB,aAAKlE,WAAW6D,IAAI;UAAE3D;UAAQC;QAAY,GAAG6D,SAAAA;MAC/C;IACF;AAEAA,cAAUG,IAAIvC,SAAAA;AAEd,WAAO;MACLwC,aAAa,YAAA;AACXJ,kBAAWP,OAAO7B,SAAAA;MACpB;IACF;EACF;EAEA,MAAc2B,eAAe,EAC3BvB,QACAQ,WACAK,gBAAe,GAKC;AAChB,UAAM,KAAKhC,eAAe0B,YAAY;MACpCP;MACAQ;MACAC,SAAS;QACP4B,UAAU;QACVC,OAAO/E,gBAAgBgF,OAAO1B,iBAAiB;UAAE2B,aAAa;QAAK,CAAA;MACrE;IACF,CAAA;EACF;EAEA,MAAcvC,eAAeH,SAAiC;AAC5D,YAAQA,QAAQW,QAAQ4B,UAAQ;MAC9B,KAAK,uCAAuC;AAC1C,cAAM,KAAKI,uBAAuB3C,OAAAA;AAClC;MACF;MACA,KAAK,uCAAuC;AAC1C,cAAM,KAAK4C,uBAAuB;UAAEjC,SAASX,QAAQW;QAAQ,CAAA;AAC7D;MACF;IACF;EACF;EAEA,MAAcgC,uBAAuB,EAAEzC,QAAQQ,WAAWC,QAAO,GAAa;AAC5EC,cAAUD,QAAQ4B,aAAa,uCAAA,QAAA;;;;;;;;;AAC/B,UAAMxB,kBAAmCtD,gBAAgBoF,OAAOlC,QAAQ6B,OAAO;MAAEE,aAAa;IAAK,CAAA;AAEnGtD,QAAI,oBAAoB;MAAE4B,WAAWD,gBAAgBC;IAAU,GAAA;;;;;;AAE/D,UAAM,KAAK8B,qBAAqB;MAC9B5C;MACAQ;MACAM,WAAWD,gBAAgBC;IAC7B,CAAA;AAEA,QAAI,KAAKrC,kBAAkBsC,IAAIF,gBAAgBC,SAAS,GAAI;AAC1D;IACF;AAEA,SAAKrC,kBAAkB0D,IAAItB,gBAAgBC,SAAS;AAEpD,UAAM,KAAK+B,eAAe;MACxB7C;MACAQ;MACAC,SAASI,gBAAgBJ;IAC3B,CAAA;EACF;EAEA,MAAciC,uBAAuB,EAAEjC,QAAO,GAAsB;AAClEC,cAAUD,QAAQ4B,aAAa,uCAAA,QAAA;;;;;;;;;AAC/B,SAAK7D,gBAAgByD,IAAIvE,gBAAgBiF,OAAOlC,QAAQ6B,KAAK,EAAExB,SAAS,IAAA;EAC1E;EAEA,MAAc8B,qBAAqB,EACjC5C,QACAQ,WACAM,UAAS,GAKO;AAChB5B,QAAI,eAAe;MAAE4B;MAAWf,MAAMS;MAAWsC,IAAI9C;IAAO,GAAA;;;;;;AAE5D,UAAM,KAAKnB,eAAe0B,YAAY;MACpCP,QAAQQ;MACRA,WAAWR;MACXS,SAAS;QACP4B,UAAU;QACVC,OAAO5E,gBAAgB6E,OAAO;UAAEzB;QAAU,CAAA;MAC5C;IACF,CAAA;EACF;EAEA,MAAc+B,eAAe/C,SAAiC;AAC5D;AACE,YAAMiD,qBAAqB,KAAK1E,kBAAkB4D,IAAInC,QAAQU,SAAS;AACvE,UAAIuC,oBAAoB;AACtB,mBAAWC,YAAYD,oBAAoB;AACzC,gBAAMC,SAASlD,OAAAA;QACjB;MACF;IACF;AAEA;AACE,YAAMmD,cAAc,KAAKjF,WAAWiE,IAAI;QACtC/D,QAAQ4B,QAAQU;QAChBrC,aAAa2B,QAAQW,QAAQ4B;MAC/B,CAAA;AACA,UAAIY,aAAa;AACf,mBAAWD,YAAYC,aAAa;AAClC,gBAAMD,SAASlD,OAAAA;QACjB;MACF;IACF;EACF;EAEQK,aAAa;AACnB,UAAM+C,QAAQC,YAAYC,IAAG;AAE7B,eAAWC,OAAO,KAAK1E,SAAS2E,KAAI,GAAI;AACtC,WAAK7E,kBAAkBgD,OAAO4B,GAAAA;IAChC;AACA,SAAK1E,SAAS4E,MAAK;AACnB,eAAWF,OAAO,KAAK5E,kBAAkB6E,KAAI,GAAI;AAC/C,WAAK3E,SAASwD,IAAIkB,GAAAA;IACpB;AAEA,UAAMG,UAAUL,YAAYC,IAAG,IAAKF;AACpC,QAAIM,UAAU,KAAK;AACjBtE,UAAIuE,KAAK,oBAAoB;QAAED;MAAQ,GAAA;;;;;;IACzC;EACF;AACF;;;AE5TA,SAASE,cAAcC,OAAOC,WAAAA,UAASC,cAAcC,gBAAAA,eAAcC,wBAAAA,uBAAsBC,aAAa;AAEtG,SAASC,WAAAA,UAASC,yBAAyB;AAC3C,SAASC,aAAAA,kBAAiB;AAC1B,SAASC,aAAAA,kBAAiB;AAC1B,SAASC,OAAAA,YAAW;AACpB,SAASC,SAAAA,cAAa;AACtB,SAAwCC,mBAAoC;AAC5E,SAASC,cAAAA,aAAYC,cAAAA,mBAAkB;;;ACRvC,OAAOC,eAAe;AAEtB,SAASC,eAAe;AAExB,SAASC,aAAAA,kBAAiB;AAC1B,SAASC,aAAAA,kBAAiB;AAC1B,SAASC,OAAAA,YAAW;AACpB,SAASC,UAAAA,SAAQC,SAAAA,cAAa;AAE9B,SAASC,0BAA6C;;AAuB/C,IAAMC,kBAAN,MAAMA;EAUXC,YAAY,EAAEC,KAAKC,YAAY,CAAC,EAAC,GAA2B;AAP3CC,2BAAkB,IAAIX,QAAAA;AAE/BY,mBAAU;AAMhB,UAAMC,UAAUX,WAAUY,OAAM,EAAGC,MAAK;AACxCZ,IAAAA,KAAIE,MAAM,2CAA2CA,OAAMW,MAAM;MAAEC,IAAIJ;IAAQ,CAAA,GAAA;;;;;;AAC/E,SAAKK,OAAOT;AACZ,SAAKU,aAAaT;AAClB,SAAKU,UAAU,IAAIrB,UAAU,KAAKmB,IAAI;AAEtC,SAAKG,OAAOf,mBAAmB;MAC7BgB,WAAW;QACTC,QAAQnB,QAAOoB,WAAW,yBAAA;MAC5B;MACAC,aAAa;MACbC,MAAM;QACJC,MAAM,CAACC,QAAAA;AACL,cAAI,KAAKhB,SAAS;AAEhB;UACF;AACA,cAAI;AACF,iBAAKQ,QAASO,KAAKC,GAAAA;UACrB,SAASC,KAAK;AACZ1B,YAAAA,KAAI2B,KAAK,cAAcD,KAAAA;;;;;;UACzB;QACF;QACAE,WAAW,CAACC,OAAAA;AACV,eAAKZ,QAASa,YAAY,OAAOL,QAAAA;AAC/B,gBAAI,OAAOM,SAAS,eAAeN,IAAIO,gBAAgBD,MAAM;AAC3DF,iBAAGI,OAAOC,KAAK,MAAMT,IAAIO,KAAKG,YAAW,CAAA,CAAA;YAC3C,OAAO;AACLN,iBAAGJ,IAAIO,IAAI;YACb;UACF;QACF;MACF;MACAI,iBAAiB;QACfC,aAAa;MACf;IACF,CAAA;AAEA,SAAKpB,QAAQqB,SAAS,YAAA;AACpB,UAAI;AACF,cAAM,KAAKpB,KAAMqB,KAAI;AACrBvC,QAAAA,KAAI,YAAY,KAAKe,IAAI,IAAE,QAAA;;;;;;AAC3B,aAAKC,WAAWwB,cAAW;AAC3B,aAAKhC,gBAAgBiC,KAAI;MAC3B,SAASf,KAAU;AACjB,aAAKV,WAAW0B,UAAUhB,GAAAA;MAC5B;IACF;AAEA,SAAKT,QAAQ0B,UAAU,YAAA;AACrB3C,MAAAA,KAAI,gBAAgB,KAAKe,IAAI,IAAE,QAAA;;;;;;AAC/B,WAAKC,WAAW4B,iBAAc;AAC9B,YAAM,KAAKC,MAAK;IAClB;AAEA,SAAK5B,QAAQ6B,UAAU,OAAOC,UAAAA;AAC5B,UAAI,KAAKtC,SAAS;AAEhB;MACF;AAEA,WAAKO,WAAW0B,UAAUK,MAAMC,SAAS,IAAIC,MAAMF,MAAMG,OAAO,CAAA;AAChE,WAAK1C,gBAAgB2C,MAAK;AAE1B,UAAI;AACF,cAAM,KAAKjC,MAAM2B,MAAAA;MACnB,SAASnB,KAAK;AACZ1B,QAAAA,KAAIoD,MAAM1B,KAAAA,QAAAA;;;;;;MACZ;AACA,WAAKjB,UAAU;AAEfT,MAAAA,KAAI2B,KAAKoB,MAAMG,WAAW,gBAAgB;QAAE5C,KAAK,KAAKS;MAAK,GAAA;;;;;;IAC7D;AAEAf,IAAAA,KAAIE,MAAM,2CAA2CA,OAAMmD,IAAI;MAAEvC,IAAIJ;IAAQ,CAAA,GAAA;;;;;;EAC/E;EAEA,MAAMmC,QAAQ;AACZ,SAAKpC,UAAU;AACf,QAAI;AACF,YAAM,KAAKS,MAAM2B,MAAAA;AACjB,WAAK5B,SAAS4B,MAAAA;IAChB,SAASnB,KAAK;AACZ1B,MAAAA,KAAI2B,KAAK,eAAeD,KAAAA;;;;;;IAC1B;EACF;EAEA,MAAM4B,KAAK,EAAEC,OAAOC,OAAM,GAA6C;AACrExD,IAAAA,KAAI,QAAQ;MAAEuD;MAAOC;IAAO,GAAA;;;;;;AAC5B,UAAM,KAAKhD,gBAAgBiD,KAAI;AAC/B3D,IAAAA,WAAU,CAAC,KAAKW,SAAS,6BAAA;;;;;;;;;AACzBX,IAAAA,WAAU,KAAKoB,MAAM,0BAAA;;;;;;;;;AACrB,UAAMwC,cAAc,KAAKxC,KAAKyC,IAAIvC,OAAOkC,KAAK;MAC5CM,OAAOL,MAAMM,aAAY;MACzBC,MAAMN,OAAOK,aAAY;IAC3B,CAAA;AACA,UAAMH,YAAYK,eAAc;AAChC,WAAOL;EACT;EAEA,MAAMM,gBAAgBR,QAAmD;AACvExD,IAAAA,KAAI,mBAAmB;MAAEwD;IAAO,GAAA;;;;;;AAChC1D,IAAAA,WAAU,CAAC,KAAKW,SAAS,6BAAA;;;;;;;;;AACzB,UAAM,KAAKD,gBAAgBiD,KAAI;AAC/B3D,IAAAA,WAAU,KAAKoB,MAAM,0BAAA;;;;;;;;;AACrB,UAAM+C,gBAAgB,KAAK/C,KAAKyC,IAAIvC,OAAO4C,gBAAgB;MACzDF,MAAMN,OAAOK,aAAY;IAC3B,CAAA;AACA,UAAMI,cAAcF,eAAc;AAClC,WAAOE;EACT;EAEA,MAAMC,YAAY,EAAEC,QAAQC,WAAWC,QAAO,GAA+D;AAC3GrE,IAAAA,KAAI,eAAe;MAAEmE;MAAQC;MAAWC;IAAQ,GAAA;;;;;;AAChDvE,IAAAA,WAAU,CAAC,KAAKW,SAAS,6BAAA;;;;;;;;;AACzB,UAAM,KAAKD,gBAAgBiD,KAAI;AAC/B3D,IAAAA,WAAU,KAAKoB,MAAM,0BAAA;;;;;;;;;AACrB,UAAM,KAAKA,KAAKyC,IAAIvC,OAAO8C,YAAY;MACrCC,QAAQA,OAAON,aAAY;MAC3BO,WAAWA,UAAUP,aAAY;MACjCQ;IACF,CAAA;EACF;AACF;;;;ADzJA,IAAMC,4BAA4B;AAClC,IAAMC,wBAAwB;AAC9B,IAAMC,wBAAwB;AAC9B,IAAMC,qBAAqB;AAyBpB,IAAMC,eAAN,MAAMA;;;;;EA8EXC,YACmBC,OACAC,YACAC,eACjB;SAHiBF,QAAAA;SACAC,aAAAA;SACAC,gBAAAA;SAhFXC,SAASC,YAAYC;SAOrBC,kBAAkBZ;SAKlBa,qBAAqB,oBAAIC,KAAAA;SAKzBC,mBAAmB,oBAAID,KAAAA;SAGdE,eAAe,IAAIC,SAAAA;SAS3BC,gBAAgB,IAAIC,MAAAA;SACpBC,eAAe,IAAID,MAAAA;SAKXE,gBAAgB,IAAIC,YACnC,CAAC,EAAEC,OAAOC,OAAM,MAAOD,MAAME,MAAK,IAAKD,OAAOC,MAAK,CAAA;SAMpCC,gBAAgB,IAAIC,YACnC,CAAC,EAAEJ,OAAOC,OAAM,MAAOD,MAAME,MAAK,IAAKD,OAAOC,MAAK,CAAA;SAOrCG,kBAAkB,IAAIN,YAA6C,CAACO,QAAQA,IAAIJ,MAAK,CAAA;SAKpFK,sBAAsB,IAAIH,YAAkC,CAAC,EAAEH,OAAM,MAAOA,OAAOC,MAAK,CAAA;SAMlGM,cAAc,IAAIZ,MAAAA;SAERa,cAAcC,WAAUC,OAAM,EAAGT,MAAK;SAEtCU,eAAe;MAC9BC,cAAc;MACdC,kBAAkB;MAClBC,kBAAkB;MAClBC,aAAa;MACbC,cAAc;IAChB;AAWE,QAAI,CAAC,KAAKlC,MAAMmC,WAAW,QAAA,KAAa,CAAC,KAAKnC,MAAMmC,WAAW,OAAA,GAAU;AACvE,YAAM,IAAIC,MAAM,qDAAqD,KAAKpC,KAAK,EAAE;IACnF;EACF;EAEAqC,OAAO;AACLC,IAAAA,KAAIC,MAAM,gCAAgCA,OAAMC,MAAM;MAAEC,IAAI,KAAKf;IAAY,CAAA,GAAA;;;;;;AAE7E,QAAI;MAACtB,YAAYsC;MAAWtC,YAAYuC;MAAYC,SAAS,KAAKzC,MAAM,GAAG;AACzE;IACF;AAEA,SAAK0C,OAAO,IAAIC,SAAQ;MACtBC,SAAS,CAACC,QAAAA;AACR,YAAI,KAAK7C,WAAWC,YAAYC,UAAU,KAAKwC,MAAMI,UAAU;AAC7D;QACF;AACA,YAAI,KAAK9C,WAAWC,YAAYsC,WAAW;AACzCJ,UAAAA,KAAIY,KAAK,uBAAuBF,KAAAA;;;;;;QAClC;AACA,aAAKG,6BAA4B;MACnC;IACF,CAAA;AAEA,SAAKC,iBAAiB,IAAIC,aAAa,KAAKR,MAAM,YAAA;AAChD,YAAM,KAAKS,6BAA4B;AACvC,YAAM,KAAKC,+BAA8B;AACzC,WAAK9B,YAAY+B,KAAI;IACvB,CAAA;AAGAC,IAAAA,sBACE,KAAKZ,MACL,YAAA;AACE,UAAI,KAAK1C,WAAWC,YAAYsC,WAAW;AACzC,aAAKU,eAAgBM,SAAQ;MAC/B;IACF,GACA7D,kBAAAA;AAGF,SAAK8D,iBAAiB,IAAIN,aAAa,KAAKR,MAAM,YAAA;AAChD,YAAM,KAAKe,WAAU;IACvB,CAAA;AAEA,SAAKC,UAAUzD,YAAYuC,UAAU;AACrC,SAAKmB,cAAa;AAClBxB,IAAAA,KAAIC,MAAM,gCAAgCA,OAAMwB,IAAI;MAAEtB,IAAI,KAAKf;IAAY,CAAA,GAAA;;;;;;EAC7E;EAEA,MAAMsC,QAAQ;AACZ1B,IAAAA,KAAI,cAAA,QAAA;;;;;;AACJ,QAAI;MAAClC,YAAYC;MAAQuC,SAAS,KAAKzC,MAAM,GAAG;AAC9C;IACF;AAEA,UAAM,KAAK0C,MAAMoB,QAAAA;AAEjB,SAAKvD,aAAawD,MAAK;AACvB,UAAM,KAAKC,SAASH,MAAAA;AACpB,SAAKG,UAAUC;AACf,SAAKP,UAAUzD,YAAYC,MAAM;AACjCiC,IAAAA,KAAI,UAAA,QAAA;;;;;;EACN;EAEA+B,YAA0B;AACxB,WAAO;MACLC,MAAM,KAAKtE;MACXuE,OAAO,KAAKpE;MACZqE,OAAO,KAAKC,YAAYC;MACxBC,aAAa,KAAKrE;MAClBsE,mBAAmB,KAAKrE;MACxBsE,iBAAiB,KAAKpE;IACxB;EACF;EAEA,MAAMqE,KAAK,EAAE7D,OAAOC,OAAM,GAA4D;AACpFoB,IAAAA,KAAI,WAAW;MAAErB;MAAOC;IAAO,GAAA;;;;;;AAC/B,SAAKW,aAAaI;AAClB,SAAKb,cAAc2D,IAAI;MAAE9D;MAAOC;IAAO,CAAA;AACvC,SAAKkC,eAAgBM,SAAQ;EAC/B;EAEA,MAAMsB,MAAM,EAAE/D,OAAOC,OAAM,GAA4D;AACrF,SAAKW,aAAaK;AAClBI,IAAAA,KAAI,WAAW;MAAErB;MAAOC;IAAO,GAAA;;;;;;AAE/B,SAAK,KAAKH,cAAckE,IAAI;MAAEhE;MAAOC;IAAO,CAAA,GAAI8C,MAAAA;AAChD,SAAKjD,cAAcmE,OAAO;MAAEjE;MAAOC;IAAO,CAAA;AAC1C,SAAKE,cAAc8D,OAAO;MAAEjE;MAAOC;IAAO,CAAA;EAC5C;EAEA,MAAMiE,YAAYC,KAA6B;AAC7C,SAAKvD,aAAaC;AAClB,UAAM,KAAKpB,aAAa2E,KAAI;AAC5BC,IAAAA,WAAU,KAAKnF,WAAWC,YAAYsC,WAAW,kCAAA;;;;;;;;;AACjD,UAAM,KAAKyB,QAASgB,YAAYC,GAAAA;EAClC;EAEA,MAAMG,kBAAkBrE,QAAmB;AACzCoB,IAAAA,KAAI,2BAA2B;MAAEpB;IAAO,GAAA;;;;;;AACxC,SAAKM,oBAAoBuD,IAAI;MAAE7D;IAAO,CAAA;AACtC,SAAKkC,eAAgBM,SAAQ;EAC/B;EAEA,MAAM8B,oBAAoBtE,QAAmB;AAC3CoB,IAAAA,KAAI,+BAA+B;MAAEpB;IAAO,GAAA;;;;;;AAC5C,SAAKM,oBAAoB0D,OAAO;MAAEhE;IAAO,CAAA;AACzC,SAAK,KAAKI,gBAAgB2D,IAAI/D,MAAAA,GAAS8C,MAAAA;AACvC,SAAK1C,gBAAgB4D,OAAOhE,MAAAA;EAC9B;EAEQiC,+BAA+B;AACrCsC,IAAAA,cACE,KAAK5C,MACL,MAAA;AACE,WAAKO,eAAgBM,SAAQ;IAC/B,GACA9D,qBAAAA;EAEJ;EAEQiE,UAAU6B,UAAuB;AACvC,SAAKvF,SAASuF;AACd,SAAKjF,mBAAmB,oBAAID,KAAAA;AAC5B8B,IAAAA,KAAI,wBAAwB;MAAEqD,QAAQ,KAAKtB,UAAS;IAAG,GAAA;;;;;;AACvD,SAAKzD,cAAc4C,KAAK,KAAKa,UAAS,CAAA;EACxC;EAEQP,gBAAgB;AACtBxB,IAAAA,KAAI,mBAAmB;MAAEgC,MAAM,KAAKtE;MAAOuE,OAAO,KAAKpE;IAAO,GAAA;;;;;;AAC9DmF,IAAAA,WAAU,CAAC,KAAKnB,SAAS,0BAAA;;;;;;;;;AAEzB,SAAK5D,qBAAqB,oBAAIC,KAAAA;AAG9B,SAAKoF,iBAAiB,KAAK/C,KAAMgD,OAAM;AACvC,SAAKD,eAAeE,UAAU,YAAA;AAC5BxD,MAAAA,KAAI,+BAAA,QAAA;;;;;;AACJ,YAAMyD,QAAQC,IAAIC,MAAMC,KAAK,KAAKnF,cAAcoF,OAAM,CAAA,EAAIC,IAAI,CAACC,WAAWA,OAAOrC,MAAK,CAAA,CAAA;AACtF,YAAM+B,QAAQC,IAAIC,MAAMC,KAAK,KAAK5E,gBAAgB6E,OAAM,CAAA,EAAIC,IAAI,CAACC,WAAWA,OAAOrC,MAAK,CAAA,CAAA;AACxF,WAAKjD,cAAcuF,MAAK;AACxB,WAAKhF,gBAAgBgF,MAAK;IAC5B,CAAA;AAEA,QAAI;AACF,WAAKnC,UAAU,IAAIoC,gBAAgB;QACjCC,KAAK,KAAKxG;QACVyG,WAAW;UACTC,aAAa,MAAA;AACXpE,YAAAA,KAAI,oBAAA,QAAA;;;;;;AACJ,iBAAKmC,aAAaL;AAClB,iBAAK9D,kBAAkBZ;AACvB,iBAAKmE,UAAUzD,YAAYsC,SAAS;AACpC,iBAAKhC,aAAaiG,KAAI;AACtB,iBAAKvD,eAAgBM,SAAQ;UAC/B;UAEAkD,gBAAgB,MAAA;AACdtE,YAAAA,KAAI,uBAAuB;cAAEiC,OAAO,KAAKpE;YAAO,GAAA;;;;;;AAChD,gBAAI,KAAKA,WAAWC,YAAYyG,OAAO;AAGrC,mBAAKhD,UAAUzD,YAAY0G,YAAY;AACvC;YACF;AACA,gBAAI,KAAK3G,WAAWC,YAAYsC,aAAa,KAAKvC,WAAWC,YAAYuC,YAAY;AACnF,mBAAKoE,2BAA0B;YACjC;AACA,iBAAKlD,UAAUzD,YAAY0G,YAAY;AACvC,iBAAKnD,eAAgBD,SAAQ;UAC/B;UAEAX,SAAS,CAACyB,UAAAA;AACRlC,YAAAA,KAAI,gBAAgB;cAAEkC;cAAOD,OAAO,KAAKpE;YAAO,GAAA;;;;;;AAChD,iBAAKsE,aAAaD;AAClB,gBAAI,KAAKrE,WAAWC,YAAYsC,aAAa,KAAKvC,WAAWC,YAAYuC,YAAY;AACnF,mBAAKoE,2BAA0B;YACjC;AACA,iBAAKlD,UAAUzD,YAAYyG,KAAK;AAEhC,iBAAKlD,eAAgBD,SAAQ;UAC/B;QACF;MACF,CAAA;IACF,SAASV,KAAU;AACjB,UAAI,KAAK7C,WAAWC,YAAYsC,aAAa,KAAKvC,WAAWC,YAAYuC,YAAY;AACnF,aAAKoE,2BAA0B;MACjC;AACA,WAAKtC,aAAazB;AAClB,WAAKa,UAAUzD,YAAY0G,YAAY;AACvC,WAAKnD,eAAgBD,SAAQ;IAC/B;EACF;EAEQqD,6BAA6B;AACnC,SAAKzG,mBAAmB;AACxB,SAAKA,kBAAkB0G,KAAKC,IAAI,KAAK3G,iBAAiBX,qBAAAA;EACxD;EAEA,MAAciE,aAAa;AACzBtB,IAAAA,KAAI,mBAAmB,KAAKhC,eAAe,MAAM;MAAEiE,OAAO,KAAKpE;IAAO,GAAA;;;;;;AACtE,SAAK0B,aAAaG;AAElB,QAAI,KAAK7B,WAAWC,YAAY8G,cAAc;AAC5C5E,MAAAA,KAAIY,KAAK,oCAAA,QAAA;;;;;;AACT;IACF;AAEA,QAAI,KAAK/C,WAAWC,YAAYC,QAAQ;AACtC;IACF;AAGA,SAAKK,aAAawD,MAAK;AACvB,UAAM,KAAK0B,gBAAgB3B,QAAAA;AAC3B,SAAKE,SAASH,MAAAA,EAAQmD,MAAM,MAAA;IAAO,CAAA;AACnC,SAAKhD,UAAUC;AAEf,UAAMgD,kBAAkB,KAAKvE,MAAOwE,MAAM,KAAK/G,eAAe,CAAA;AAE9D,SAAKuD,UAAUzD,YAAY8G,YAAY;AAEvC,SAAKpD,cAAa;EACpB;EAEA,MAAcR,+BAA8C;AAC1D,UAAMgE,aAAaF,kBAAkB,KAAKxB,gBAAiB,KAAKlF,aAAa2E,KAAI,CAAA,GAAK,GAAA;AAEtF,UAAMkC,SAAS,KAAKpD;AACpBmB,IAAAA,WAAU,KAAKnF,WAAWC,YAAYsC,WAAW,kCAAA;;;;;;;;;AAGjD,eAAW,EAAEzB,OAAOC,OAAM,KAAM,KAAKH,cAAcyG,KAAI,GAAI;AAEzD,UAAI,KAAKpG,cAAcqG,IAAI;QAAExG;QAAOC;MAAO,CAAA,GAAI;AAC7C;MACF;AAEA,WAAK,KAAKH,cAAckE,IAAI;QAAEhE;QAAOC;MAAO,CAAA,GAAI8C,MAAAA;AAChD,WAAKjD,cAAcmE,OAAO;QAAEjE;QAAOC;MAAO,CAAA;IAC5C;AAGA,eAAW,EAAED,OAAOC,OAAM,KAAM,KAAKE,cAAc+E,OAAM,GAAI;AAE3D,UAAI,KAAKpF,cAAc0G,IAAI;QAAExG;QAAOC;MAAO,CAAA,GAAI;AAC7C;MACF;AAEA,YAAMwG,cAAc,MAAMJ,aACxBF,kBAAkB,KAAKxB,gBAAiB2B,OAAOzC,KAAK;QAAE7D;QAAOC;MAAO,CAAA,CAAA,GACpE,GAAA;AAIFwG,kBAAYC,UAAU,OAAOC,eAAAA;AAC3BtF,QAAAA,KAAI,eAAe;UAAEsF;QAAW,GAAA;;;;;;AAChC,cAAM,KAAK1H,cAAc;UAAEe;UAAO2G;QAAW,CAAA;MAC/C,CAAA;AAGA,WAAK7G,cAAc8G,IAAI;QAAE5G;QAAOC;MAAO,GAAGwG,WAAAA;IAC5C;EACF;EAEA,MAAcnE,iCAAgD;AAC5D,UAAM+D,aAAaF,kBAAkB,KAAKxB,gBAAiB,KAAKlF,aAAa2E,KAAI,CAAA,GAAK,GAAA;AAEtF,UAAMkC,SAAS,KAAKpD;AACpBmB,IAAAA,WAAU,KAAKnF,WAAWC,YAAYsC,WAAW,kCAAA;;;;;;;;;AAGjD,eAAWxB,UAAU,KAAKI,gBAAgBkG,KAAI,GAAI;AAEhD,UAAI,KAAKhG,oBAAoBiG,IAAI;QAAEvG;MAAO,CAAA,GAAI;AAC5C;MACF;AAEA,WAAK,KAAKI,gBAAgB2D,IAAI/D,MAAAA,GAAS8C,MAAAA;AACvC,WAAK1C,gBAAgB4D,OAAOhE,MAAAA;IAC9B;AAGA,eAAW,EAAEA,OAAM,KAAM,KAAKM,oBAAoB2E,OAAM,GAAI;AAC1D,UAAI,KAAK7E,gBAAgBmG,IAAIvG,MAAAA,GAAS;AACpC;MACF;AAEA,YAAM4G,gBAAgB,MAAMR,aAC1BF,kBAAkB,KAAKxB,gBAAiB2B,OAAOQ,gBAAgB7G,MAAAA,CAAAA,GAC/D,GAAA;AAEF4G,oBAAcH,UAAU,OAAOjD,YAAAA;AAC7B,aAAK7C,aAAaE;AAClB,cAAM,KAAK9B,WAAW;UACpB+H,QAAQrG,WAAUuE,KAAKxB,QAAQsD,MAAM;UACrCC,WAAWtG,WAAUuE,KAAKxB,QAAQuD,SAAS;UAC3CC,SAASxD,QAAQwD;QACnB,CAAA;MACF,CAAA;AAGA,WAAK5G,gBAAgBuG,IAAI3G,QAAQ4G,aAAAA;IACnC;EACF;AACF;;;AE9aA,SAASK,SAAAA,QAAOC,WAAAA,gBAAe;AAE/B,SAASC,WAAAA,gBAAe;AACxB,SAASC,aAAAA,kBAAiB;AAC1B,SAASC,aAAAA,kBAAiB;AAC1B,SAASC,OAAAA,YAAW;AACpB,SAASC,UAAAA,eAAc;AAEvB,SAASC,cAAAA,aAAYC,cAAAA,mBAAkB;;AAQhC,IAAMC,6BAAN,MAAMA;EAAN;AAEIC;sBAAa,IAAIV,OAAAA;AAMjBW;kBAAS,IAAIJ,YAA6CH,WAAUQ,IAAI;AAGxEC;uBAAc,IAAIN,YAA2CH,WAAUQ,IAAI;;AACtF;AAKO,IAAME,sBAAN,MAAMA;EAwBXC,YAA6BC,UAAsC;SAAtCA,WAAAA;SAvBpBC,gBAAgB,IAAIjB,OAAAA;SACpBkB,eAAe,IAAIlB,OAAAA;SACnBU,aAAa,IAAIV,OAAAA;SAKjBmB,YAAY,IAAInB,OAAAA;SAOjBoB,gBAAgB,IAAIZ,YAC1B,CAAC,EAAEa,OAAOC,OAAM,MAAOD,MAAME,MAAK,IAAKD,OAAOC,MAAK,CAAA;SAMpCC,iBAAiB,IAAIvB,SAAAA,EAAUwB,KAAI;AAGlD,SAAKC,OAAO,IAAIxB,SAAAA;AAEhB,SAAKwB,KAAKC,UAAU,KAAKX,SAASN,WAAWkB,GAAG,CAACC,SAAS,KAAKnB,WAAWoB,KAAKD,IAAAA,CAAAA,CAAAA;EACjF;EAEA,MAAME,OAAO;AACX,QAAI,CAAC,KAAKL,KAAKM,UAAU;AACvB;IACF;AACA,SAAKN,OAAO,IAAIxB,SAAAA;AAChB,SAAKwB,KAAKC,UAAU,KAAKX,SAASN,WAAWkB,GAAG,CAACC,SAAS,KAAKnB,WAAWoB,KAAKD,IAAAA,CAAAA,CAAAA;AAE/E,UAAMI,QAAQC,IAAI;SAAI,KAAKd,cAAce,OAAM;MAAIC,IAAI,CAACC,UAAU,KAAKC,KAAKD,KAAAA,CAAAA,CAAAA;EAC9E;EAEA,MAAME,QAAQ;AACZ,QAAI,KAAKb,KAAKM,UAAU;AACtB;IACF;AAEA,UAAMQ,mBAAmB,IAAIhC,YAC3B,CAAC,EAAEa,OAAOC,OAAM,MAAOD,MAAME,MAAK,IAAKD,OAAOC,MAAK,GACnD;SAAI,KAAKH,cAAce,OAAM;KAAG;AAGlC,UAAMF,QAAQC,IAAI;SAAI,KAAKd,cAAce,OAAM;MAAIC,IAAI,CAACC,UAAU,KAAKI,MAAMJ,KAAAA,CAAAA,CAAAA;AAG7E,SAAKjB,gBAAgBoB;AAErB,UAAM,KAAKd,KAAKgB,QAAO;EACzB;EAEAC,YAA4B;AAC1B,WAAO,CAAA;EACT;EAEA,MAAML,KAAK,EAAEjB,OAAOC,OAAM,GAA6C;AACrEnB,IAAAA,WAAU,CAAC,KAAKuB,KAAKM,UAAU,UAAA;;;;;;;;;AAE/B,SAAKZ,cAAcwB,IAAI;MAAEvB;MAAOC;IAAO,CAAA;AAEvC,QAAI,CAAC,KAAKN,SAASL,OAAOkC,IAAIxB,KAAAA,GAAQ;AACpC,WAAKL,SAASL,OAAOmC,IAAIzB,OAAO,IAAIb,YAAWJ,WAAUQ,IAAI,CAAA;IAC/D;AAEA,SAAKI,SAASL,OAAOoC,IAAI1B,KAAAA,EAAQuB,IAAItB,MAAAA;AACrC,SAAKN,SAASN,WAAWoB,KAAK;MAC5BT;MACAX,YAAY;QACVsC,eAAe;UACbC,MAAM3B,OAAO4B,aAAY;UACzBC,OAAO,oBAAIC,KAAAA;QACb;MACF;IACF,CAAA;AAGA,eAAW,CAAC/B,QAAOgC,OAAAA,KAAY,KAAKrC,SAASL,QAAQ;AACnD2C,YAAMC,KAAKF,OAAAA,EAASG,QAAQ,CAAClC,YAAAA;AAC3B,aAAKZ,WAAWoB,KAAK;UACnBT,OAAAA;UACAX,YAAY;YACVsC,eAAe;cACbC,MAAM3B,QAAO4B,aAAY;cACzBC,OAAO,oBAAIC,KAAAA;YACb;UACF;QACF,CAAA;MACF,CAAA;IACF;EACF;EAEA,MAAMX,MAAM,EAAEpB,OAAOC,OAAM,GAA6C;AACtEnB,IAAAA,WAAU,CAAC,KAAKuB,KAAKM,UAAU,UAAA;;;;;;;;;AAE/B,SAAKZ,cAAcqC,OAAO;MAAEpC;MAAOC;IAAO,CAAA;AAE1C,QAAI,CAAC,KAAKN,SAASL,OAAOkC,IAAIxB,KAAAA,GAAQ;AACpC,WAAKL,SAASL,OAAOmC,IAAIzB,OAAO,IAAIb,YAAWJ,WAAUQ,IAAI,CAAA;IAC/D;AAEA,SAAKI,SAASL,OAAOoC,IAAI1B,KAAAA,EAAQoC,OAAOnC,MAAAA;AAExC,UAAMZ,aAAyB;MAC7BgD,UAAU;QACRT,MAAM3B,OAAO4B,aAAY;MAC3B;IACF;AAEA,SAAKlC,SAASN,WAAWoB,KAAK;MAAET;MAAOX;IAAW,CAAA;EACpD;EAEA,MAAMiD,YAAY,EAAEC,QAAQC,WAAWC,QAAO,GAA+D;AAC3GzD,IAAAA,KAAI,gBAAgB;MAAEuD;MAAQC;MAAW,GAAGE,IAAID,OAAAA;IAAS,GAAA;;;;;;AAEzD3D,IAAAA,WAAU0D,WAAAA,QAAAA;;;;;;;;;AACV1D,IAAAA,WAAU,CAAC,KAAKuB,KAAKM,UAAU,UAAA;;;;;;;;;AAE/B,UAAM,KAAKR,eAAewC,KAAI;AAE9B,UAAMC,SAAS,KAAKjD,SAASH,YAAYkC,IAAIc,SAAAA;AAC7C,QAAI,CAACI,QAAQ;AACX5D,MAAAA,KAAI6D,KAAK,4CAA4C;QAAEN;QAAQC;MAAU,GAAA;;;;;;AACzE;IACF;AAEA,QAAII,OAAOvC,KAAKM,UAAU;AACxB3B,MAAAA,KAAI6D,KAAK,yBAAyB;QAAEN;QAAQC;MAAU,GAAA;;;;;;AACtD;IACF;AAEAI,WAAOzC,eACJwC,KAAI,EACJG,KAAK,MAAA;AACJ,UAAIF,OAAOvC,KAAKM,UAAU;AACxB3B,QAAAA,KAAI6D,KAAK,yBAAyB;UAAEN;UAAQC;QAAU,GAAA;;;;;;AACtD;MACF;AAEAxD,MAAAA,KAAI,mBAAmB;QAAEuD;QAAQC;QAAW,GAAGE,IAAID,OAAAA;MAAS,GAAA;;;;;;AAE5DG,aAAO9C,UAAUW,KAAK;QAAE8B;QAAQC;QAAWC;MAAQ,CAAA;IACrD,CAAA,EACCM,MAAM,CAACC,QAAAA;AACNhE,MAAAA,KAAIiE,MAAM,kCAAkC;QAAED;MAAI,GAAA;;;;;;IACpD,CAAA;EACJ;EAEA,MAAME,kBAAkBjD,QAAmB;AACzCjB,IAAAA,KAAI,eAAe;MAAEiB;IAAO,GAAA;;;;;;AAC5B,SAAKN,SAASH,YAAYiC,IAAIxB,QAAQ,IAAI;EAC5C;EAEA,MAAMkD,oBAAoBlD,QAAmB;AAC3CjB,IAAAA,KAAI,iBAAiB;MAAEiB;IAAO,GAAA;;;;;;AAC9B,SAAKN,SAASH,YAAY4C,OAAOnC,MAAAA;EACnC;EAEAmD,SAAS;AACP,SAAKjD,eAAekD,MAAK;EAC3B;EAEAC,WAAW;AACT,SAAKnD,eAAeC,KAAI;EAC1B;AACF;AACA,IAAMsC,MAAM,CAACD,YAAAA;AACX,MAAI,CAACA,QAAQc,SAASC,SAAS,iBAAA,GAAoB;AACjD,WAAO,CAAC;EACV;AAEA,QAAMC,aAAaxE,QAAOyE,gBAAgB,qCAAA,EAAuCC,OAAOlB,QAAQzB,KAAK;AAErG,MAAI,OAAOyC,YAAYhB,SAASjC,SAAS,UAAU;AACjD,WAAO;MAAEiC,SAASmB,OAAOC,KAAKJ,YAAYhB,SAASjC,IAAAA,EAAM,CAAA;MAAIsD,WAAWL,YAAYhB,SAASqB;IAAU;EACzG;AAEA,SAAO,CAAC;AACV;;;ACzNA,SAASC,SAAAA,QAAOC,SAAAA,QAAOC,oBAAoB;AAE3C,SAASC,WAAAA,gBAAe;AACxB,SAASC,aAAAA,kBAAiB;AAC1B,SAASC,aAAAA,kBAAiB;AAC1B,SAASC,OAAAA,YAAW;AACpB,SAASC,wBAAwBC,gBAAAA,eAAcC,SAAAA,cAAa;;;;;;;;;;;;AAO5D,IAAMC,sBAAsB;AAC5B,IAAMC,iCAAiC;AAIhC,IAAMC,yBAAN,MAAMA;EAsBXC,YAA6BC,QAAmC;SAAnCA,SAAAA;SArBZC,WAAW,oBAAIC,IAAAA;SAGxBC,UAAU;SAETC,eAAe,oBAAIF,IAAAA;SACnBG,gBAAgB,IAAIC,OAAAA;SACpBC,eAAe,IAAID,OAAAA;SACnBE,aAAa,IAAIF,OAAAA;SAKjBG,YAAY,IAAIH,OAAAA;SAMRI,cAAcC,WAAUC,OAAM,EAAGC,MAAK;AAGrDC,IAAAA,KAAI,kCAAkC;MAAEC,OAAO,KAAKf;IAAO,GAAA;;;;;;AAC3D,eAAWgB,QAAQ,KAAKhB,QAAQ;AAC9B,UAAI,KAAKC,SAASgB,IAAID,KAAKE,MAAM,GAAG;AAClC;MACF;AACA,YAAMA,SAAS,IAAIC,aACjBH,KAAKE,QACL,OAAOE,YAAY,KAAKX,UAAUY,KAAKD,OAAAA,GACvC,OAAOE,SAAS,KAAKd,WAAWa,KAAKC,IAAAA,CAAAA;AAEvCJ,aAAOb,cAAckB,GAAG,MAAM,KAAKlB,cAAcgB,KAAK,KAAKG,UAAS,CAAA,CAAA;AAEpE,WAAKvB,SAASwB,IAAIT,KAAKE,QAAQA,MAAAA;AAC/B,WAAKd,aAAaqB,IAAIT,KAAKE,QAAQ,CAAA;AACnCA,aAAOX,aAAagB,GAAG,CAACG,WAAU,KAAKnB,aAAac,KAAKK,MAAAA,CAAAA;IAC3D;EACF;EAEA,MACMC,OAAO;AACX,QAAI,KAAKxB,SAAS;AAChB;IACF;AACAW,IAAAA,KAAI,uBAAuB;MAAEC,OAAO,KAAKf;IAAO,GAAA;;;;;;AAChDc,IAAAA,KAAIY,MAAM,2CAA2CA,OAAME,MAAM;MAAEC,IAAI,KAAKnB;IAAY,CAAA,GAAA;;;;;;AAExF,SAAKoB,aAAY;AAEjB;SAAI,KAAK7B,SAAS8B,OAAM;MAAIC,QAAQ,CAACd,WAAWA,OAAOS,KAAI,CAAA;AAE3D,SAAKxB,UAAU;AACfW,IAAAA,KAAIY,MAAM,2CAA2CA,OAAMO,IAAI;MAAEJ,IAAI,KAAKnB;IAAY,CAAA,GAAA;;;;;;EACxF;EAEA,MACMwB,QAAQ;AACZ,QAAI,CAAC,KAAK/B,SAAS;AACjB;IACF;AACA,SAAKA,UAAU;AAEf,UAAM,KAAKgC,KAAKC,QAAO;AAEvB,UAAMC,QAAQC,IAAIC,MAAMC,KAAK,KAAKvC,SAAS8B,OAAM,CAAA,EAAIU,IAAI,CAACvB,WAAWA,OAAOgB,MAAK,CAAA,CAAA;EACnF;EAEA,MAAMQ,cAAcC,YAAoB;AACtC7B,IAAAA,KAAI,qBAAqB;MAAE6B;IAAW,GAAA;;;;;;AACtCC,IAAAA,WAAU,KAAKzC,SAAS,yBAAA;;;;;;;;;AAExB,UAAMe,SAAS,KAAKjB,SAAS4C,IAAIF,UAAAA;AACjCC,IAAAA,WAAU1B,QAAQ,oBAAA;;;;;;;;;AAElB,UAAMA,OAAOgB,MAAK;AAClB,UAAMY,OAAMjD,8BAAAA;AACZ,UAAMqB,OAAOS,KAAI;EACnB;EAEAH,YAA4B;AAC1B,WAAOe,MAAMC,KAAK,KAAKvC,SAAS8B,OAAM,CAAA,EAAIU,IAAI,CAACvB,WAAWA,OAAOM,UAAS,CAAA;EAC5E;EAEA,MACMuB,KAAK,EAAEC,OAAOC,OAAM,GAA6C;AACrEnC,IAAAA,KAAI,QAAQ;MAAEkC;MAAOC;IAAO,GAAA;;;;;;AAC5BL,IAAAA,WAAU,KAAKzC,SAAS,UAAA;;;;;;;;;AACxB,UAAM,KAAK+C,eAAe,CAAChC,WAAWA,OAAO6B,KAAK;MAAEC;MAAOC;IAAO,CAAA,CAAA;EACpE;EAEA,MACME,MAAM,EAAEH,OAAOC,OAAM,GAA6C;AACtEnC,IAAAA,KAAI,WAAW;MAAEkC;MAAOC;IAAO,GAAA;;;;;;AAC/BL,IAAAA,WAAU,KAAKzC,SAAS,UAAA;;;;;;;;;AAExB,UAAM,KAAK+C,eAAe,CAAChC,WAAWA,OAAOiC,MAAM;MAAEH;MAAOC;IAAO,CAAA,CAAA;EACrE;EAEA,MAAMG,YAAY,EAChBC,QACAC,WACAC,QAAO,GAKS;AAChBzC,IAAAA,KAAI,UAAUwC,UAAUE,SAAQ,CAAA,IAAI,QAAA;;;;;;AACpCZ,IAAAA,WAAU,KAAKzC,SAAS,UAAA;;;;;;;;;AAExB,SAAK,KAAK+C,eAAe,OAAOhC,QAAQyB,eAAAA;AACtC,WAAKzB,OAAOkC,YAAY;QAAEC;QAAQC;QAAWC;MAAQ,CAAA,EAAGE,MAAM,CAACC,QAAAA;AAC7D,YAAIA,eAAeC,wBAAwB;AACzC7C,UAAAA,KAAI8C,KAAK,2BAA2B;YAAEF;UAAI,GAAA;;;;;;QAC5C,WAAWA,eAAeG,iBAAgBH,IAAI3D,YAAY+D,SAAS,gBAAgB;AACjFhD,UAAAA,KAAI8C,KAAK,2BAA2B;YAAEF;UAAI,GAAA;;;;;;AAC1C,eAAK,KAAKK,mBAAmBpB,UAAAA;QAC/B,OAAO;AACL7B,UAAAA,KAAI8C,KAAK,oBAAoBjB,UAAAA,IAAc;YAAEe;UAAI,GAAA;;;;;;AACjD,eAAK,KAAKK,mBAAmBpB,UAAAA;QAC/B;MACF,CAAA;IACF,CAAA;EACF;EAEA,MACMoB,mBAAmBpB,YAAoB;AAC3C,UAAMvC,eAAe,KAAKA,aAAayC,IAAIF,UAAAA,KAAgB;AAC3D,QAAIvC,eAAeR,qBAAqB;AACtCkB,MAAAA,KAAIkD,KAAK,gCAAgCrB,UAAAA,KAAevC,YAAAA,MAAkBR,mBAAAA,iBAAkC,QAAA;;;;;;AAC5G,YAAM,KAAK8C,cAAcC,UAAAA;AACzB,WAAKvC,aAAaqB,IAAIkB,YAAa,CAAA;AACnC;IACF;AACA,SAAKvC,aAAaqB,IAAIkB,aAAc,KAAKvC,aAAayC,IAAIF,UAAAA,KAAgB,KAAK,CAAA;EACjF;EAEA,MAAMsB,kBAAkBhB,QAAmB;AACzCnC,IAAAA,KAAI,wCAAwCmC,MAAAA,IAAQ,QAAA;;;;;;AACpDL,IAAAA,WAAU,KAAKzC,SAAS,UAAA;;;;;;;;;AAExB,UAAM,KAAK+C,eAAe,OAAOhC,WAAWA,OAAO+C,kBAAkBhB,MAAAA,CAAAA;EACvE;EAEA,MAAMiB,oBAAoBjB,QAAmB;AAC3CnC,IAAAA,KAAI,wCAAwCmC,MAAAA,IAAQ,QAAA;;;;;;AACpDL,IAAAA,WAAU,KAAKzC,SAAS,UAAA;;;;;;;;;AAExB,UAAM,KAAK+C,eAAe,OAAOhC,WAAWA,OAAOgD,oBAAoBjB,MAAAA,CAAAA;EACzE;EAEQnB,eAAe;AACrB,SAAKK,OAAO,IAAIgC,SAAQ;MACtBC,SAAS,CAACV,QAAQ5C,KAAI2C,MAAMC,KAAAA,QAAAA;;;;;;IAC9B,CAAA;EACF;EAEA,MAAcR,eACZmB,IACuB;AACvB,WAAOhC,QAAQC,IAAIC,MAAMC,KAAK,KAAKvC,SAASqE,QAAO,CAAA,EAAI7B,IAAI,CAAC,CAACE,YAAYzB,MAAAA,MAAYmD,GAAGnD,QAAQyB,UAAAA,CAAAA,CAAAA;EAClG;AACF;;EA3HG4B;GAzCUzE,uBAAAA,WAAAA,QAAAA,IAAAA;;EAyDVyE;GAzDUzE,uBAAAA,WAAAA,SAAAA,IAAAA;;EAqFVyE;GArFUzE,uBAAAA,WAAAA,QAAAA,IAAAA;;EA4FVyE;GA5FUzE,uBAAAA,WAAAA,SAAAA,IAAAA;;EA+HVyE;GA/HUzE,uBAAAA,WAAAA,sBAAAA,IAAAA;",
6
6
  "names": ["TimeoutError", "scheduleExponentialBackoffTaskInterval", "scheduleTask", "scheduleTaskInterval", "Context", "invariant", "PublicKey", "log", "ProtocolTimeoutError", "schema", "trace", "ComplexMap", "ComplexSet", "MESSAGE_TIMEOUT", "ReliablePayload", "schema", "getCodecForType", "Acknowledgement", "RECEIVED_MESSAGES_GC_INTERVAL", "Messenger", "constructor", "signalManager", "retryDelay", "_listeners", "ComplexMap", "peerId", "payloadType", "toHex", "_defaultListeners", "PublicKey", "hash", "_onAckCallbacks", "_receivedMessages", "ComplexSet", "_toClear", "_closed", "_signalManager", "_retryDelay", "open", "traceId", "random", "log", "trace", "begin", "id", "_ctx", "Context", "onError", "err", "catch", "onDispose", "onMessage", "on", "message", "from", "author", "_handleMessage", "scheduleTaskInterval", "_performGc", "end", "close", "dispose", "sendMessage", "recipient", "payload", "invariant", "messageContext", "derive", "reliablePayload", "messageId", "has", "messageReceived", "timeoutHit", "promise", "Promise", "resolve", "reject", "scheduleExponentialBackoffTaskInterval", "_encodeAndSend", "scheduleTask", "delete", "ProtocolTimeoutError", "TimeoutError", "MESSAGE_TIMEOUT", "set", "listen", "subscribeMessages", "listeners", "get", "Set", "add", "unsubscribe", "type_url", "value", "encode", "preserveAny", "_handleReliablePayload", "_handleAcknowledgement", "decode", "_sendAcknowledgement", "_callListeners", "to", "defaultListenerMap", "listener", "listenerMap", "start", "performance", "now", "key", "keys", "clear", "elapsed", "warn", "DeferredTask", "Event", "Trigger", "asyncTimeout", "scheduleTask", "scheduleTaskInterval", "sleep", "Context", "cancelWithContext", "invariant", "PublicKey", "log", "trace", "SignalState", "ComplexMap", "ComplexSet", "WebSocket", "Trigger", "invariant", "PublicKey", "log", "schema", "trace", "createProtoRpcPeer", "SignalRPCClient", "constructor", "url", "callbacks", "_connectTrigger", "_closed", "traceId", "random", "toHex", "begin", "id", "_url", "_callbacks", "_socket", "_rpc", "requested", "Signal", "getService", "noHandshake", "port", "send", "msg", "err", "warn", "subscribe", "cb", "onmessage", "Blob", "data", "Buffer", "from", "arrayBuffer", "encodingOptions", "preserveAny", "onopen", "open", "onConnected", "wake", "onError", "onclose", "onDisconnected", "close", "onerror", "event", "error", "Error", "message", "reset", "catch", "end", "join", "topic", "peerId", "wait", "swarmStream", "rpc", "swarm", "asUint8Array", "peer", "waitUntilReady", "receiveMessages", "messageStream", "sendMessage", "author", "recipient", "payload", "DEFAULT_RECONNECT_TIMEOUT", "MAX_RECONNECT_TIMEOUT", "ERROR_RECONCILE_DELAY", "RECONCILE_INTERVAL", "SignalClient", "constructor", "_host", "_onMessage", "_onSwarmEvent", "_state", "SignalState", "CLOSED", "_reconnectAfter", "_connectionStarted", "Date", "_lastStateChange", "_clientReady", "Trigger", "statusChanged", "Event", "commandTrace", "_swarmStreams", "ComplexMap", "topic", "peerId", "toHex", "_joinedTopics", "ComplexSet", "_messageStreams", "key", "_subscribedMessages", "_reconciled", "_instanceId", "PublicKey", "random", "_performance", "sentMessages", "receivedMessages", "reconnectCounter", "joinCounter", "leaveCounter", "startsWith", "Error", "open", "log", "trace", "begin", "id", "CONNECTED", "CONNECTING", "includes", "_ctx", "Context", "onError", "err", "disposed", "warn", "_scheduleReconcileAfterError", "_reconcileTask", "DeferredTask", "_reconcileSwarmSubscriptions", "_reconcileMessageSubscriptions", "emit", "scheduleTaskInterval", "schedule", "_reconnectTask", "_reconnect", "_setState", "_createClient", "end", "close", "dispose", "reset", "_client", "undefined", "getStatus", "host", "state", "error", "_lastError", "message", "reconnectIn", "connectionStarted", "lastStateChange", "join", "add", "leave", "get", "delete", "sendMessage", "msg", "wait", "invariant", "subscribeMessages", "unsubscribeMessages", "scheduleTask", "newState", "status", "_connectionCtx", "derive", "onDispose", "Promise", "all", "Array", "from", "values", "map", "stream", "clear", "SignalRPCClient", "url", "callbacks", "onConnected", "wake", "onDisconnected", "ERROR", "DISCONNECTED", "_incrementReconnectTimeout", "Math", "min", "RECONNECTING", "catch", "cancelWithContext", "sleep", "asyncTimeout", "client", "keys", "has", "swarmStream", "subscribe", "swarmEvent", "set", "messageStream", "receiveMessages", "author", "recipient", "payload", "Event", "Trigger", "Context", "invariant", "PublicKey", "log", "schema", "ComplexMap", "ComplexSet", "MemorySignalManagerContext", "swarmEvent", "swarms", "hash", "connections", "MemorySignalManager", "constructor", "_context", "statusChanged", "commandTrace", "onMessage", "_joinedSwarms", "topic", "peerId", "toHex", "_freezeTrigger", "wake", "_ctx", "onDispose", "on", "data", "emit", "open", "disposed", "Promise", "all", "values", "map", "value", "join", "close", "joinedSwarmsCopy", "leave", "dispose", "getStatus", "add", "has", "set", "get", "peerAvailable", "peer", "asUint8Array", "since", "Date", "peerIds", "Array", "from", "forEach", "delete", "peerLeft", "sendMessage", "author", "recipient", "payload", "dec", "wait", "remote", "warn", "then", "catch", "err", "error", "subscribeMessages", "unsubscribeMessages", "freeze", "reset", "unfreeze", "type_url", "endsWith", "relPayload", "getCodecForType", "decode", "Object", "keys", "sessionId", "Event", "sleep", "synchronized", "Context", "invariant", "PublicKey", "log", "RateLimitExceededError", "TimeoutError", "trace", "MAX_SERVER_FAILURES", "WSS_SIGNAL_SERVER_REBOOT_DELAY", "WebsocketSignalManager", "constructor", "_hosts", "_servers", "Map", "_opened", "failureCount", "statusChanged", "Event", "commandTrace", "swarmEvent", "onMessage", "_instanceId", "PublicKey", "random", "toHex", "log", "hosts", "host", "has", "server", "SignalClient", "message", "emit", "data", "on", "getStatus", "set", "trace", "open", "begin", "id", "_initContext", "values", "forEach", "end", "close", "_ctx", "dispose", "Promise", "all", "Array", "from", "map", "restartServer", "serverName", "invariant", "get", "sleep", "join", "topic", "peerId", "_forEachServer", "leave", "sendMessage", "author", "recipient", "payload", "truncate", "catch", "err", "RateLimitExceededError", "info", "TimeoutError", "name", "checkServerFailure", "warn", "subscribeMessages", "unsubscribeMessages", "Context", "onError", "fn", "entries", "synchronized"]
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/timeouts.ts":{"bytes":656,"imports":[{"path":"@inject-globals","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/messaging/src/messenger.ts":{"bytes":34092,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"packages/core/mesh/messaging/src/timeouts.ts","kind":"import-statement","original":"./timeouts"},{"path":"@inject-globals","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/messaging/src/signal-client/signal-rpc-client.ts":{"bytes":20064,"imports":[{"path":"isomorphic-ws","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/rpc","kind":"import-statement","external":true},{"path":"@inject-globals","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/messaging/src/signal-client/signal-client.ts":{"bytes":52212,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/protocols/proto/dxos/mesh/signal","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"packages/core/mesh/messaging/src/signal-client/signal-rpc-client.ts","kind":"import-statement","original":"./signal-rpc-client"},{"path":"@inject-globals","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/messaging/src/signal-client/index.ts":{"bytes":499,"imports":[{"path":"packages/core/mesh/messaging/src/signal-client/signal-client.ts","kind":"import-statement","original":"./signal-client"},{"path":"@inject-globals","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/messaging/src/signal-manager/memory-signal-manager.ts":{"bytes":24494,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"@inject-globals","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/messaging/src/signal-manager/signal-manager.ts":{"bytes":1316,"imports":[{"path":"@inject-globals","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/messaging/src/signal-manager/websocket-signal-manager.ts":{"bytes":25803,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"packages/core/mesh/messaging/src/signal-client/index.ts","kind":"import-statement","original":"../signal-client"},{"path":"@inject-globals","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/messaging/src/signal-manager/index.ts":{"bytes":750,"imports":[{"path":"packages/core/mesh/messaging/src/signal-manager/memory-signal-manager.ts","kind":"import-statement","original":"./memory-signal-manager"},{"path":"packages/core/mesh/messaging/src/signal-manager/signal-manager.ts","kind":"import-statement","original":"./signal-manager"},{"path":"packages/core/mesh/messaging/src/signal-manager/websocket-signal-manager.ts","kind":"import-statement","original":"./websocket-signal-manager"},{"path":"@inject-globals","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/messaging/src/signal-methods.ts":{"bytes":1633,"imports":[{"path":"@inject-globals","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/messaging/src/index.ts":{"bytes":782,"imports":[{"path":"packages/core/mesh/messaging/src/messenger.ts","kind":"import-statement","original":"./messenger"},{"path":"packages/core/mesh/messaging/src/signal-client/index.ts","kind":"import-statement","original":"./signal-client"},{"path":"packages/core/mesh/messaging/src/signal-manager/index.ts","kind":"import-statement","original":"./signal-manager"},{"path":"packages/core/mesh/messaging/src/signal-methods.ts","kind":"import-statement","original":"./signal-methods"},{"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":72202},"packages/core/mesh/messaging/dist/lib/browser/index.mjs":{"imports":[{"path":"@dxos/node-std/inject-globals","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/protocols/proto/dxos/mesh/signal","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"isomorphic-ws","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/rpc","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true}],"exports":["MemorySignalManager","MemorySignalManagerContext","Messenger","SignalClient","WebsocketSignalManager"],"entryPoint":"packages/core/mesh/messaging/src/index.ts","inputs":{"inject-globals:@inject-globals":{"bytesInOutput":79},"packages/core/mesh/messaging/src/messenger.ts":{"bytesInOutput":9633},"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":13587},"packages/core/mesh/messaging/src/signal-client/signal-rpc-client.ts":{"bytesInOutput":6017},"packages/core/mesh/messaging/src/signal-client/index.ts":{"bytesInOutput":0},"packages/core/mesh/messaging/src/signal-manager/memory-signal-manager.ts":{"bytesInOutput":6661},"packages/core/mesh/messaging/src/signal-manager/index.ts":{"bytesInOutput":0},"packages/core/mesh/messaging/src/signal-manager/websocket-signal-manager.ts":{"bytesInOutput":8542}},"bytes":45282}}}
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/timeouts.ts":{"bytes":656,"imports":[{"path":"@inject-globals","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/messaging/src/messenger.ts":{"bytes":34092,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"packages/core/mesh/messaging/src/timeouts.ts","kind":"import-statement","original":"./timeouts"},{"path":"@inject-globals","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/messaging/src/signal-client/signal-rpc-client.ts":{"bytes":20064,"imports":[{"path":"isomorphic-ws","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/rpc","kind":"import-statement","external":true},{"path":"@inject-globals","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/messaging/src/signal-client/signal-client.ts":{"bytes":52252,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/protocols/proto/dxos/mesh/signal","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"packages/core/mesh/messaging/src/signal-client/signal-rpc-client.ts","kind":"import-statement","original":"./signal-rpc-client"},{"path":"@inject-globals","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/messaging/src/signal-client/index.ts":{"bytes":499,"imports":[{"path":"packages/core/mesh/messaging/src/signal-client/signal-client.ts","kind":"import-statement","original":"./signal-client"},{"path":"@inject-globals","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/messaging/src/signal-manager/memory-signal-manager.ts":{"bytes":24506,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"@inject-globals","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/messaging/src/signal-manager/signal-manager.ts":{"bytes":1339,"imports":[{"path":"@inject-globals","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/messaging/src/signal-manager/websocket-signal-manager.ts":{"bytes":25815,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"packages/core/mesh/messaging/src/signal-client/index.ts","kind":"import-statement","original":"../signal-client"},{"path":"@inject-globals","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/messaging/src/signal-manager/index.ts":{"bytes":750,"imports":[{"path":"packages/core/mesh/messaging/src/signal-manager/memory-signal-manager.ts","kind":"import-statement","original":"./memory-signal-manager"},{"path":"packages/core/mesh/messaging/src/signal-manager/signal-manager.ts","kind":"import-statement","original":"./signal-manager"},{"path":"packages/core/mesh/messaging/src/signal-manager/websocket-signal-manager.ts","kind":"import-statement","original":"./websocket-signal-manager"},{"path":"@inject-globals","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/messaging/src/signal-methods.ts":{"bytes":1633,"imports":[{"path":"@inject-globals","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/messaging/src/index.ts":{"bytes":782,"imports":[{"path":"packages/core/mesh/messaging/src/messenger.ts","kind":"import-statement","original":"./messenger"},{"path":"packages/core/mesh/messaging/src/signal-client/index.ts","kind":"import-statement","original":"./signal-client"},{"path":"packages/core/mesh/messaging/src/signal-manager/index.ts","kind":"import-statement","original":"./signal-manager"},{"path":"packages/core/mesh/messaging/src/signal-methods.ts","kind":"import-statement","original":"./signal-methods"},{"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":72228},"packages/core/mesh/messaging/dist/lib/browser/index.mjs":{"imports":[{"path":"@dxos/node-std/inject-globals","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/protocols/proto/dxos/mesh/signal","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"isomorphic-ws","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/rpc","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true}],"exports":["MemorySignalManager","MemorySignalManagerContext","Messenger","SignalClient","WebsocketSignalManager"],"entryPoint":"packages/core/mesh/messaging/src/index.ts","inputs":{"inject-globals:@inject-globals":{"bytesInOutput":79},"packages/core/mesh/messaging/src/messenger.ts":{"bytesInOutput":9633},"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":13587},"packages/core/mesh/messaging/src/signal-client/signal-rpc-client.ts":{"bytesInOutput":6017},"packages/core/mesh/messaging/src/signal-client/index.ts":{"bytesInOutput":0},"packages/core/mesh/messaging/src/signal-manager/memory-signal-manager.ts":{"bytesInOutput":6661},"packages/core/mesh/messaging/src/signal-manager/index.ts":{"bytesInOutput":0},"packages/core/mesh/messaging/src/signal-manager/websocket-signal-manager.ts":{"bytesInOutput":8542}},"bytes":45282}}}
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../../src/messenger.ts", "../../../src/timeouts.ts", "../../../src/signal-client/signal-client.ts", "../../../src/signal-client/signal-rpc-client.ts", "../../../src/signal-manager/memory-signal-manager.ts", "../../../src/signal-manager/websocket-signal-manager.ts"],
4
4
  "sourcesContent": ["//\n// Copyright 2022 DXOS.org\n//\n\nimport { TimeoutError, scheduleExponentialBackoffTaskInterval, scheduleTask, scheduleTaskInterval } from '@dxos/async';\nimport { type Any } from '@dxos/codec-protobuf';\nimport { Context } from '@dxos/context';\nimport { invariant } from '@dxos/invariant';\nimport { PublicKey } from '@dxos/keys';\nimport { log } from '@dxos/log';\nimport { TimeoutError as ProtocolTimeoutError, schema, trace } from '@dxos/protocols';\nimport { ReliablePayload } from '@dxos/protocols/proto/dxos/mesh/messaging';\nimport { ComplexMap, ComplexSet } from '@dxos/util';\n\nimport { type SignalManager } from './signal-manager';\nimport { type Message } from './signal-methods';\nimport { MESSAGE_TIMEOUT } from './timeouts';\n\nexport type OnMessage = (params: { author: PublicKey; recipient: PublicKey; payload: Any }) => Promise<void>;\n\nexport interface MessengerOptions {\n signalManager: SignalManager;\n retryDelay?: number;\n}\n\nconst ReliablePayload = schema.getCodecForType('dxos.mesh.messaging.ReliablePayload');\nconst Acknowledgement = schema.getCodecForType('dxos.mesh.messaging.Acknowledgement');\n\nconst RECEIVED_MESSAGES_GC_INTERVAL = 120_000;\n\n/**\n * Reliable messenger that works trough signal network.\n */\nexport class Messenger {\n private readonly _signalManager: SignalManager;\n // { peerId, payloadType } => listeners set\n private readonly _listeners = new ComplexMap<{ peerId: PublicKey; payloadType: string }, Set<OnMessage>>(\n ({ peerId, payloadType }) => peerId.toHex() + payloadType,\n );\n\n // peerId => listeners set\n private readonly _defaultListeners = new ComplexMap<PublicKey, Set<OnMessage>>(PublicKey.hash);\n\n private readonly _onAckCallbacks = new ComplexMap<PublicKey, () => void>(PublicKey.hash);\n\n private readonly _receivedMessages = new ComplexSet<PublicKey>(PublicKey.hash);\n\n /**\n * Keys scheduled to be cleared from _receivedMessages on the next iteration.\n */\n private readonly _toClear = new ComplexSet<PublicKey>(PublicKey.hash);\n\n private _ctx!: Context;\n private _closed = true;\n private readonly _retryDelay: number;\n\n constructor({ signalManager, retryDelay = 300 }: MessengerOptions) {\n this._signalManager = signalManager;\n this._retryDelay = retryDelay;\n\n this.open();\n }\n\n open() {\n if (!this._closed) {\n return;\n }\n const traceId = PublicKey.random().toHex();\n log.trace('dxos.mesh.messenger.open', trace.begin({ id: traceId }));\n this._ctx = new Context({\n onError: (err) => log.catch(err),\n });\n this._ctx.onDispose(\n this._signalManager.onMessage.on(async (message) => {\n log('received message', { from: message.author });\n await this._handleMessage(message);\n }),\n );\n\n // Clear the map periodically.\n scheduleTaskInterval(\n this._ctx,\n async () => {\n this._performGc();\n },\n RECEIVED_MESSAGES_GC_INTERVAL,\n );\n\n this._closed = false;\n log.trace('dxos.mesh.messenger.open', trace.end({ id: traceId }));\n }\n\n async close() {\n if (this._closed) {\n return;\n }\n this._closed = true;\n await this._ctx.dispose();\n }\n\n async sendMessage({ author, recipient, payload }: Message): Promise<void> {\n invariant(!this._closed, 'Closed');\n const messageContext = this._ctx.derive();\n\n const reliablePayload: ReliablePayload = {\n messageId: PublicKey.random(),\n payload,\n };\n invariant(!this._onAckCallbacks.has(reliablePayload.messageId!));\n log('send message', { messageId: reliablePayload.messageId, author, recipient });\n\n let messageReceived: () => void;\n let timeoutHit: (err: Error) => void;\n\n const promise = new Promise<void>((resolve, reject) => {\n messageReceived = resolve;\n timeoutHit = reject;\n });\n\n // Setting retry interval if signal was not acknowledged.\n scheduleExponentialBackoffTaskInterval(\n messageContext,\n async () => {\n log('retrying message', { messageId: reliablePayload.messageId });\n await this._encodeAndSend({ author, recipient, reliablePayload }).catch((err) =>\n log('failed to send message', { err }),\n );\n },\n this._retryDelay,\n );\n\n scheduleTask(\n messageContext,\n () => {\n log('message not delivered', { messageId: reliablePayload.messageId });\n this._onAckCallbacks.delete(reliablePayload.messageId!);\n timeoutHit(\n new ProtocolTimeoutError(\n 'signaling message not delivered',\n new TimeoutError(MESSAGE_TIMEOUT, 'Message not delivered'),\n ),\n );\n void messageContext.dispose();\n },\n MESSAGE_TIMEOUT,\n );\n\n this._onAckCallbacks.set(reliablePayload.messageId, () => {\n messageReceived();\n this._onAckCallbacks.delete(reliablePayload.messageId!);\n void messageContext.dispose();\n });\n\n await this._encodeAndSend({ author, recipient, reliablePayload });\n return promise;\n }\n\n /**\n * Subscribes onMessage function to messages that contains payload with payloadType.\n * @param payloadType if not specified, onMessage will be subscribed to all types of messages.\n */\n async listen({\n peerId,\n payloadType,\n onMessage,\n }: {\n peerId: PublicKey;\n payloadType?: string;\n onMessage: OnMessage;\n }): Promise<ListeningHandle> {\n invariant(!this._closed, 'Closed');\n\n await this._signalManager.subscribeMessages(peerId);\n let listeners: Set<OnMessage> | undefined;\n\n if (!payloadType) {\n listeners = this._defaultListeners.get(peerId);\n if (!listeners) {\n listeners = new Set();\n this._defaultListeners.set(peerId, listeners);\n }\n } else {\n listeners = this._listeners.get({ peerId, payloadType });\n if (!listeners) {\n listeners = new Set();\n this._listeners.set({ peerId, payloadType }, listeners);\n }\n }\n\n listeners.add(onMessage);\n\n return {\n unsubscribe: async () => {\n listeners!.delete(onMessage);\n },\n };\n }\n\n private async _encodeAndSend({\n author,\n recipient,\n reliablePayload,\n }: {\n author: PublicKey;\n recipient: PublicKey;\n reliablePayload: ReliablePayload;\n }): Promise<void> {\n await this._signalManager.sendMessage({\n author,\n recipient,\n payload: {\n type_url: 'dxos.mesh.messaging.ReliablePayload',\n value: ReliablePayload.encode(reliablePayload, { preserveAny: true }),\n },\n });\n }\n\n private async _handleMessage(message: Message): Promise<void> {\n switch (message.payload.type_url) {\n case 'dxos.mesh.messaging.ReliablePayload': {\n await this._handleReliablePayload(message);\n break;\n }\n case 'dxos.mesh.messaging.Acknowledgement': {\n await this._handleAcknowledgement({ payload: message.payload });\n break;\n }\n }\n }\n\n private async _handleReliablePayload({ author, recipient, payload }: Message) {\n invariant(payload.type_url === 'dxos.mesh.messaging.ReliablePayload');\n const reliablePayload: ReliablePayload = ReliablePayload.decode(payload.value, { preserveAny: true });\n\n log('handling message', { messageId: reliablePayload.messageId });\n\n await this._sendAcknowledgement({\n author,\n recipient,\n messageId: reliablePayload.messageId,\n });\n\n if (this._receivedMessages.has(reliablePayload.messageId!)) {\n return;\n }\n\n this._receivedMessages.add(reliablePayload.messageId!);\n\n await this._callListeners({\n author,\n recipient,\n payload: reliablePayload.payload,\n });\n }\n\n private async _handleAcknowledgement({ payload }: { payload: Any }) {\n invariant(payload.type_url === 'dxos.mesh.messaging.Acknowledgement');\n this._onAckCallbacks.get(Acknowledgement.decode(payload.value).messageId)?.();\n }\n\n private async _sendAcknowledgement({\n author,\n recipient,\n messageId,\n }: {\n author: PublicKey;\n recipient: PublicKey;\n messageId: PublicKey;\n }): Promise<void> {\n log('sending ACK', { messageId, from: recipient, to: author });\n\n await this._signalManager.sendMessage({\n author: recipient,\n recipient: author,\n payload: {\n type_url: 'dxos.mesh.messaging.Acknowledgement',\n value: Acknowledgement.encode({ messageId }),\n },\n });\n }\n\n private async _callListeners(message: Message): Promise<void> {\n {\n const defaultListenerMap = this._defaultListeners.get(message.recipient);\n if (defaultListenerMap) {\n for (const listener of defaultListenerMap) {\n await listener(message);\n }\n }\n }\n\n {\n const listenerMap = this._listeners.get({\n peerId: message.recipient,\n payloadType: message.payload.type_url,\n });\n if (listenerMap) {\n for (const listener of listenerMap) {\n await listener(message);\n }\n }\n }\n }\n\n 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 2023 DXOS.org\n//\n\n/**\n * Timeout for retrying messages.\n */\nexport const MESSAGE_TIMEOUT = 10_000;\n", "//\n// Copyright 2020 DXOS.org\n//\n\nimport { DeferredTask, Event, Trigger, asyncTimeout, scheduleTask, scheduleTaskInterval, sleep } from '@dxos/async';\nimport { type Any, type Stream } from '@dxos/codec-protobuf';\nimport { Context, cancelWithContext } from '@dxos/context';\nimport { invariant } from '@dxos/invariant';\nimport { PublicKey } from '@dxos/keys';\nimport { log } from '@dxos/log';\nimport { trace } from '@dxos/protocols';\nimport { type Message as SignalMessage, SignalState, type SwarmEvent } from '@dxos/protocols/proto/dxos/mesh/signal';\nimport { ComplexMap, ComplexSet } from '@dxos/util';\n\nimport { SignalRPCClient } from './signal-rpc-client';\nimport { type Message, type SignalMethods } from '../signal-methods';\n\nconst DEFAULT_RECONNECT_TIMEOUT = 100;\nconst MAX_RECONNECT_TIMEOUT = 5000;\nconst ERROR_RECONCILE_DELAY = 1000;\nconst RECONCILE_INTERVAL = 5_000;\n\nexport type SignalStatus = {\n host: string;\n state: SignalState;\n error?: string;\n reconnectIn: number;\n connectionStarted: Date;\n lastStateChange: Date;\n};\n\nexport type CommandTrace = {\n messageId: string;\n host: string;\n incoming: boolean;\n time: number;\n method: string;\n payload: any;\n response?: any;\n error?: string;\n};\n\n/**\n * Establishes a websocket connection to signal server and provides RPC methods.\n */\nexport class SignalClient implements SignalMethods {\n private _state = SignalState.CLOSED;\n\n private _lastError?: Error;\n\n /**\n * Number of milliseconds after which the connection will be attempted again in case of error.\n */\n private _reconnectAfter = DEFAULT_RECONNECT_TIMEOUT;\n\n /**\n * Timestamp of when the connection attempt was began.\n */\n private _connectionStarted = new Date();\n\n /**\n * Timestamp of last state change.\n */\n private _lastStateChange = new Date();\n\n private _client?: SignalRPCClient;\n private readonly _clientReady = new Trigger();\n\n private _ctx?: Context;\n\n private _connectionCtx?: Context;\n\n private _reconcileTask?: DeferredTask;\n private _reconnectTask?: DeferredTask;\n\n readonly statusChanged = new Event<SignalStatus>();\n readonly commandTrace = new Event<CommandTrace>();\n\n /**\n * Swarm events streams. Keys represent actually joined topic and peerId.\n */\n private readonly _swarmStreams = new ComplexMap<{ topic: PublicKey; peerId: PublicKey }, Stream<SwarmEvent>>(\n ({ topic, peerId }) => topic.toHex() + peerId.toHex(),\n );\n\n /**\n * Represent desired joined topic and peerId.\n */\n private readonly _joinedTopics = new ComplexSet<{ topic: PublicKey; peerId: PublicKey }>(\n ({ topic, peerId }) => topic.toHex() + peerId.toHex(),\n );\n\n /**\n * Message streams. Keys represents actually subscribed peers.\n * @internal\n */\n public readonly _messageStreams = new ComplexMap<PublicKey, Stream<SignalMessage>>((key) => key.toHex());\n\n /**\n * Represent desired message subscriptions.\n */\n private readonly _subscribedMessages = new ComplexSet<{ peerId: PublicKey }>(({ peerId }) => peerId.toHex());\n\n /**\n * Event to use in tests to wait till subscription is successfully established.\n * @internal\n */\n public _reconciled = new Event();\n\n private readonly _instanceId = PublicKey.random().toHex();\n\n private readonly _performance = {\n sentMessages: 0,\n receivedMessages: 0,\n reconnectCounter: 0,\n joinCounter: 0,\n leaveCounter: 0,\n };\n\n /**\n * @param _host Signal server websocket URL.\n * @param _onMessage\n */\n constructor(\n private readonly _host: string,\n private readonly _onMessage: (params: { author: PublicKey; recipient: PublicKey; payload: Any }) => Promise<void>,\n private readonly _onSwarmEvent: (params: { topic: PublicKey; swarmEvent: SwarmEvent }) => Promise<void>,\n ) {\n if (!this._host.startsWith('wss://') && !this._host.startsWith('ws://')) {\n throw new Error(`Signal server requires a websocket URL. Provided: ${this._host}`);\n }\n }\n\n open() {\n log.trace('dxos.mesh.signal-client.open', trace.begin({ id: this._instanceId }));\n\n if ([SignalState.CONNECTED, SignalState.CONNECTING].includes(this._state)) {\n return;\n }\n\n this._ctx = new Context({\n onError: (err) => {\n if (this._state === SignalState.CLOSED || this._ctx?.disposed) {\n return;\n }\n if (this._state === SignalState.CONNECTED) {\n log.warn('SignalClient error:', err);\n }\n this._scheduleReconcileAfterError();\n },\n });\n\n this._reconcileTask = new DeferredTask(this._ctx, async () => {\n await this._reconcileSwarmSubscriptions();\n await this._reconcileMessageSubscriptions();\n this._reconciled.emit();\n });\n\n // Reconcile subscriptions periodically.\n scheduleTaskInterval(\n this._ctx,\n async () => {\n if (this._state === SignalState.CONNECTED) {\n this._reconcileTask!.schedule();\n }\n },\n RECONCILE_INTERVAL,\n );\n\n this._reconnectTask = new DeferredTask(this._ctx, async () => {\n await this._reconnect();\n });\n\n this._setState(SignalState.CONNECTING);\n this._createClient();\n log.trace('dxos.mesh.signal-client.open', trace.end({ id: this._instanceId }));\n }\n\n async close() {\n log('closing...');\n if ([SignalState.CLOSED].includes(this._state)) {\n return;\n }\n\n await this._ctx?.dispose();\n\n this._clientReady.reset();\n await this._client?.close();\n this._client = undefined;\n this._setState(SignalState.CLOSED);\n log('closed');\n }\n\n getStatus(): SignalStatus {\n return {\n host: this._host,\n state: this._state,\n error: this._lastError?.message,\n reconnectIn: this._reconnectAfter,\n connectionStarted: this._connectionStarted,\n lastStateChange: this._lastStateChange,\n };\n }\n\n async join({ topic, peerId }: { topic: PublicKey; peerId: PublicKey }): Promise<void> {\n log('joining', { topic, peerId });\n this._performance.joinCounter++;\n this._joinedTopics.add({ topic, peerId });\n this._reconcileTask!.schedule();\n }\n\n async leave({ topic, peerId }: { topic: PublicKey; peerId: PublicKey }): Promise<void> {\n this._performance.leaveCounter++;\n log('leaving', { topic, peerId });\n\n void this._swarmStreams.get({ topic, peerId })?.close();\n this._swarmStreams.delete({ topic, peerId });\n this._joinedTopics.delete({ topic, peerId });\n }\n\n async sendMessage(msg: Message): Promise<void> {\n this._performance.sentMessages++;\n await this._clientReady.wait();\n invariant(this._state === SignalState.CONNECTED, 'Not connected to Signal Server');\n await this._client!.sendMessage(msg);\n }\n\n async subscribeMessages(peerId: PublicKey) {\n log('subscribing to messages', { peerId });\n this._subscribedMessages.add({ peerId });\n this._reconcileTask!.schedule();\n }\n\n async unsubscribeMessages(peerId: PublicKey) {\n log('unsubscribing from messages', { peerId });\n this._subscribedMessages.delete({ peerId });\n void this._messageStreams.get(peerId)?.close();\n this._messageStreams.delete(peerId);\n }\n\n private _scheduleReconcileAfterError() {\n scheduleTask(\n this._ctx!,\n () => {\n this._reconcileTask!.schedule();\n },\n ERROR_RECONCILE_DELAY,\n );\n }\n\n private _setState(newState: SignalState) {\n this._state = newState;\n this._lastStateChange = new Date();\n log('signal state changed', { status: this.getStatus() });\n this.statusChanged.emit(this.getStatus());\n }\n\n private _createClient() {\n log('creating client', { host: this._host, state: this._state });\n invariant(!this._client, 'Client already created');\n\n this._connectionStarted = new Date();\n\n // Create new context for each connection.\n this._connectionCtx = this._ctx!.derive();\n this._connectionCtx.onDispose(async () => {\n log('connection context disposed');\n await Promise.all(Array.from(this._swarmStreams.values()).map((stream) => stream.close()));\n await Promise.all(Array.from(this._messageStreams.values()).map((stream) => stream.close()));\n this._swarmStreams.clear();\n this._messageStreams.clear();\n });\n\n try {\n this._client = new SignalRPCClient({\n url: this._host,\n callbacks: {\n onConnected: () => {\n log('socket connected');\n this._lastError = undefined;\n this._reconnectAfter = DEFAULT_RECONNECT_TIMEOUT;\n this._setState(SignalState.CONNECTED);\n this._clientReady.wake();\n this._reconcileTask!.schedule();\n },\n\n onDisconnected: () => {\n log('socket disconnected', { state: this._state });\n if (this._state === SignalState.ERROR) {\n // Ignore disconnects after error.\n // Handled by error handler before disconnect handler.\n this._setState(SignalState.DISCONNECTED);\n return;\n }\n if (this._state !== SignalState.CONNECTED && this._state !== SignalState.CONNECTING) {\n this._incrementReconnectTimeout();\n }\n this._setState(SignalState.DISCONNECTED);\n this._reconnectTask!.schedule();\n },\n\n onError: (error) => {\n log('socket error', { error, state: this._state });\n this._lastError = error;\n if (this._state !== SignalState.CONNECTED && this._state !== SignalState.CONNECTING) {\n this._incrementReconnectTimeout();\n }\n this._setState(SignalState.ERROR);\n\n this._reconnectTask!.schedule();\n },\n },\n });\n } catch (err: any) {\n if (this._state !== SignalState.CONNECTED && this._state !== SignalState.CONNECTING) {\n this._incrementReconnectTimeout();\n }\n this._lastError = err;\n this._setState(SignalState.DISCONNECTED);\n this._reconnectTask!.schedule();\n }\n }\n\n private _incrementReconnectTimeout() {\n this._reconnectAfter *= 2;\n this._reconnectAfter = Math.min(this._reconnectAfter, MAX_RECONNECT_TIMEOUT);\n }\n\n private async _reconnect() {\n log(`reconnecting in ${this._reconnectAfter}ms`, { state: this._state });\n this._performance.reconnectCounter++;\n\n if (this._state === SignalState.RECONNECTING) {\n log.warn('Signal api already reconnecting.');\n return;\n }\n\n if (this._state === SignalState.CLOSED) {\n return;\n }\n\n // Close client if it wasn't already closed.\n this._clientReady.reset();\n await this._connectionCtx?.dispose();\n this._client?.close().catch(() => {});\n this._client = undefined;\n\n await cancelWithContext(this._ctx!, sleep(this._reconnectAfter));\n\n this._setState(SignalState.RECONNECTING);\n\n this._createClient();\n }\n\n private async _reconcileSwarmSubscriptions(): Promise<void> {\n await asyncTimeout(cancelWithContext(this._connectionCtx!, this._clientReady.wait()), 5_000);\n // Copy Client reference to avoid client change during the reconcile.\n const client = this._client!;\n invariant(this._state === SignalState.CONNECTED, 'Not connected to Signal Server');\n\n // Unsubscribe from topics that are no longer needed.\n for (const { topic, peerId } of this._swarmStreams.keys()) {\n // Join desired topics.\n if (this._joinedTopics.has({ topic, peerId })) {\n continue;\n }\n\n 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(\n cancelWithContext(this._connectionCtx!, client.join({ topic, peerId })),\n 5000,\n );\n // Subscribing to swarm events.\n // TODO(mykola): What happens when the swarm stream is closed? Maybe send leave event for each peer?\n swarmStream.subscribe(async (swarmEvent: SwarmEvent) => {\n log('swarm event', { swarmEvent });\n await this._onSwarmEvent({ topic, swarmEvent });\n });\n\n // Saving swarm stream.\n this._swarmStreams.set({ topic, peerId }, swarmStream);\n }\n }\n\n private async _reconcileMessageSubscriptions(): Promise<void> {\n await asyncTimeout(cancelWithContext(this._connectionCtx!, this._clientReady.wait()), 5_000);\n // Copy Client reference to avoid client change during the reconcile.\n const client = this._client!;\n invariant(this._state === SignalState.CONNECTED, 'Not connected to Signal Server');\n\n // Unsubscribe from messages that are no longer needed.\n for (const peerId of this._messageStreams.keys()) {\n // Join desired topics.\n if (this._subscribedMessages.has({ peerId })) {\n continue;\n }\n\n 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(\n cancelWithContext(this._connectionCtx!, client.receiveMessages(peerId)),\n 5000,\n );\n messageStream.subscribe(async (message: SignalMessage) => {\n this._performance.receivedMessages++;\n await this._onMessage({\n author: PublicKey.from(message.author),\n recipient: PublicKey.from(message.recipient),\n payload: message.payload,\n });\n });\n\n // Saving message stream.\n this._messageStreams.set(peerId, messageStream);\n }\n }\n}\n", "//\n// Copyright 2022 DXOS.org\n//\n\nimport WebSocket from 'isomorphic-ws';\n\nimport { Trigger } from '@dxos/async';\nimport { type Any, type Stream } from '@dxos/codec-protobuf';\nimport { invariant } from '@dxos/invariant';\nimport { PublicKey } from '@dxos/keys';\nimport { log } from '@dxos/log';\nimport { schema, trace } from '@dxos/protocols';\nimport { type Message as SignalMessage, type Signal } from '@dxos/protocols/proto/dxos/mesh/signal';\nimport { createProtoRpcPeer, type ProtoRpcPeer } from '@dxos/rpc';\n\ninterface Services {\n Signal: Signal;\n}\n\nexport type SignalCallbacks = {\n onConnected?: () => void;\n\n /**\n * Called on disconnect.\n * In case of error, `onError` will be called first and then `onDisconnected`.\n */\n onDisconnected?: () => void;\n\n onError?: (error: Error) => void;\n};\n\nexport type SignalRPCClientParams = {\n url: string;\n callbacks?: SignalCallbacks;\n};\n\nexport class SignalRPCClient {\n private _socket?: WebSocket;\n private _rpc?: ProtoRpcPeer<Services>;\n private readonly _connectTrigger = new Trigger();\n\n private _closed = false;\n\n private readonly _url: string;\n private readonly _callbacks: SignalCallbacks;\n\n constructor({ url, callbacks = {} }: SignalRPCClientParams) {\n const traceId = PublicKey.random().toHex();\n log.trace('dxos.mesh.signal-rpc-client.constructor', trace.begin({ id: traceId }));\n this._url = url;\n this._callbacks = callbacks;\n this._socket = new WebSocket(this._url);\n\n this._rpc = createProtoRpcPeer({\n requested: {\n Signal: schema.getService('dxos.mesh.signal.Signal'),\n },\n noHandshake: true,\n port: {\n send: (msg) => {\n if (this._closed) {\n // Do not send messages after close.\n return;\n }\n try {\n this._socket!.send(msg);\n } catch (err) {\n log.warn('send error', err);\n }\n },\n subscribe: (cb) => {\n this._socket!.onmessage = async (msg: WebSocket.MessageEvent) => {\n if (typeof Blob !== 'undefined' && msg.data instanceof Blob) {\n cb(Buffer.from(await msg.data.arrayBuffer()));\n } else {\n cb(msg.data as any);\n }\n };\n },\n },\n encodingOptions: {\n preserveAny: true,\n },\n });\n\n this._socket.onopen = async () => {\n try {\n await this._rpc!.open();\n log(`RPC open ${this._url}`);\n this._callbacks.onConnected?.();\n this._connectTrigger.wake();\n } catch (err: any) {\n this._callbacks.onError?.(err);\n }\n };\n\n this._socket.onclose = async () => {\n log(`Disconnected ${this._url}`);\n this._callbacks.onDisconnected?.();\n await this.close();\n };\n\n this._socket.onerror = async (event: WebSocket.ErrorEvent) => {\n if (this._closed) {\n // Ignore errors after close.\n return;\n }\n\n this._callbacks.onError?.(event.error ?? new Error(event.message));\n this._connectTrigger.reset();\n\n try {\n await this._rpc?.close();\n } catch (err) {\n log.catch(err);\n }\n this._closed = true;\n\n log.warn(event.message ?? 'Socket error', { url: this._url });\n };\n\n log.trace('dxos.mesh.signal-rpc-client.constructor', trace.end({ id: traceId }));\n }\n\n async close() {\n this._closed = true;\n try {\n await this._rpc?.close();\n this._socket?.close();\n } catch (err) {\n log.warn('close error', err);\n }\n }\n\n async join({ topic, peerId }: { topic: PublicKey; peerId: PublicKey }) {\n log('join', { topic, peerId });\n await this._connectTrigger.wait();\n invariant(!this._closed, 'SignalRPCClient is closed');\n invariant(this._rpc, 'Rpc is not initialized');\n const swarmStream = this._rpc.rpc.Signal.join({\n swarm: topic.asUint8Array(),\n peer: peerId.asUint8Array(),\n });\n await swarmStream.waitUntilReady();\n return swarmStream;\n }\n\n async receiveMessages(peerId: PublicKey): Promise<Stream<SignalMessage>> {\n log('receiveMessages', { peerId });\n invariant(!this._closed, 'SignalRPCClient is closed');\n await this._connectTrigger.wait();\n invariant(this._rpc, 'Rpc is not initialized');\n const messageStream = this._rpc.rpc.Signal.receiveMessages({\n peer: peerId.asUint8Array(),\n });\n await messageStream.waitUntilReady();\n return messageStream;\n }\n\n async sendMessage({ author, recipient, payload }: { author: PublicKey; recipient: PublicKey; payload: Any }) {\n log('sendMessage', { author, recipient, payload });\n invariant(!this._closed, 'SignalRPCClient is closed');\n await this._connectTrigger.wait();\n invariant(this._rpc, 'Rpc is not initialized');\n await this._rpc.rpc.Signal.sendMessage({\n author: author.asUint8Array(),\n recipient: recipient.asUint8Array(),\n payload,\n });\n }\n}\n", "//\n// Copyright 2020 DXOS.org\n//\n\nimport { Event, Trigger } from '@dxos/async';\nimport { type Any } from '@dxos/codec-protobuf';\nimport { Context } from '@dxos/context';\nimport { invariant } from '@dxos/invariant';\nimport { PublicKey } from '@dxos/keys';\nimport { log } from '@dxos/log';\nimport { schema } from '@dxos/protocols';\nimport { type SwarmEvent } from '@dxos/protocols/proto/dxos/mesh/signal';\nimport { ComplexMap, ComplexSet } from '@dxos/util';\n\nimport { type SignalManager } from './signal-manager';\nimport { type CommandTrace, type SignalStatus } from '../signal-client';\n\n/**\n * Common signaling context that connects multiple MemorySignalManager instances.\n */\nexport class MemorySignalManagerContext {\n // Swarm messages.\n readonly swarmEvent = new Event<{\n topic: PublicKey;\n swarmEvent: SwarmEvent;\n }>();\n\n // Mapping from topic to set of peers.\n readonly swarms = new ComplexMap<PublicKey, ComplexSet<PublicKey>>(PublicKey.hash);\n\n // Map of connections for each peer for signaling.\n readonly connections = new ComplexMap<PublicKey, MemorySignalManager>(PublicKey.hash);\n}\n\n/**\n * In memory signal manager for testing.\n */\nexport class MemorySignalManager implements SignalManager {\n readonly statusChanged = new Event<SignalStatus[]>();\n readonly commandTrace = new Event<CommandTrace>();\n readonly swarmEvent = new Event<{\n topic: PublicKey;\n swarmEvent: SwarmEvent;\n }>();\n\n readonly onMessage = new Event<{\n author: PublicKey;\n recipient: PublicKey;\n payload: Any;\n }>();\n\n /** Will be used to emit SwarmEvents on .open() and .close() */\n private _joinedSwarms = new ComplexSet<{ topic: PublicKey; peerId: PublicKey }>(\n ({ topic, peerId }) => topic.toHex() + peerId.toHex(),\n );\n\n private _ctx!: Context;\n\n // TODO(dmaretskyi): Replace with callback.\n private readonly _freezeTrigger = new Trigger().wake();\n\n constructor(private readonly _context: MemorySignalManagerContext) {\n this._ctx = new Context();\n\n this._ctx.onDispose(this._context.swarmEvent.on((data) => this.swarmEvent.emit(data)));\n }\n\n async open() {\n if (!this._ctx.disposed) {\n return;\n }\n this._ctx = new Context();\n this._ctx.onDispose(this._context.swarmEvent.on((data) => this.swarmEvent.emit(data)));\n\n await Promise.all([...this._joinedSwarms.values()].map((value) => this.join(value)));\n }\n\n async close() {\n if (this._ctx.disposed) {\n return;\n }\n // save copy of joined swarms.\n const joinedSwarmsCopy = new ComplexSet<{ topic: PublicKey; peerId: PublicKey }>(\n ({ topic, peerId }) => topic.toHex() + peerId.toHex(),\n [...this._joinedSwarms.values()],\n );\n\n await Promise.all([...this._joinedSwarms.values()].map((value) => this.leave(value)));\n\n // assign joined swarms back because .leave() deletes it.\n this._joinedSwarms = joinedSwarmsCopy;\n\n await this._ctx.dispose();\n }\n\n getStatus(): SignalStatus[] {\n return [];\n }\n\n async join({ topic, peerId }: { topic: PublicKey; peerId: PublicKey }) {\n invariant(!this._ctx.disposed, 'Closed');\n\n this._joinedSwarms.add({ topic, peerId });\n\n if (!this._context.swarms.has(topic)) {\n this._context.swarms.set(topic, new ComplexSet(PublicKey.hash));\n }\n\n this._context.swarms.get(topic)!.add(peerId);\n this._context.swarmEvent.emit({\n topic,\n swarmEvent: {\n peerAvailable: {\n peer: peerId.asUint8Array(),\n since: new Date(),\n },\n },\n });\n\n // Emitting swarm events for each peer.\n for (const [topic, peerIds] of this._context.swarms) {\n Array.from(peerIds).forEach((peerId) => {\n this.swarmEvent.emit({\n topic,\n swarmEvent: {\n peerAvailable: {\n peer: peerId.asUint8Array(),\n since: new Date(),\n },\n },\n });\n });\n }\n }\n\n async leave({ topic, peerId }: { topic: PublicKey; peerId: PublicKey }) {\n invariant(!this._ctx.disposed, 'Closed');\n\n this._joinedSwarms.delete({ topic, peerId });\n\n if (!this._context.swarms.has(topic)) {\n this._context.swarms.set(topic, new ComplexSet(PublicKey.hash));\n }\n\n this._context.swarms.get(topic)!.delete(peerId);\n\n const swarmEvent: SwarmEvent = {\n peerLeft: {\n peer: peerId.asUint8Array(),\n },\n };\n\n this._context.swarmEvent.emit({ topic, swarmEvent });\n }\n\n async sendMessage({ author, recipient, payload }: { author: PublicKey; recipient: PublicKey; payload: Any }) {\n log('send message', { author, recipient, ...dec(payload) });\n\n invariant(recipient);\n invariant(!this._ctx.disposed, 'Closed');\n\n await this._freezeTrigger.wait();\n\n const remote = this._context.connections.get(recipient);\n if (!remote) {\n log.warn('recipient is not subscribed for messages', { author, recipient });\n return;\n }\n\n if (remote._ctx.disposed) {\n log.warn('recipient is disposed', { author, recipient });\n return;\n }\n\n remote._freezeTrigger\n .wait()\n .then(() => {\n if (remote._ctx.disposed) {\n log.warn('recipient is disposed', { author, recipient });\n return;\n }\n\n log('receive message', { author, recipient, ...dec(payload) });\n\n remote.onMessage.emit({ author, recipient, payload });\n })\n .catch((err) => {\n log.error('error while waiting for freeze', { err });\n });\n }\n\n async subscribeMessages(peerId: PublicKey) {\n log('subscribing', { peerId });\n this._context.connections.set(peerId, this);\n }\n\n async unsubscribeMessages(peerId: PublicKey) {\n log('unsubscribing', { peerId });\n this._context.connections.delete(peerId);\n }\n\n freeze() {\n this._freezeTrigger.reset();\n }\n\n unfreeze() {\n this._freezeTrigger.wake();\n }\n}\nconst dec = (payload: Any) => {\n if (!payload.type_url.endsWith('ReliablePayload')) {\n return {};\n }\n\n const relPayload = schema.getCodecForType('dxos.mesh.messaging.ReliablePayload').decode(payload.value);\n\n if (typeof relPayload?.payload?.data === 'object') {\n return { payload: Object.keys(relPayload?.payload?.data)[0], sessionId: relPayload?.payload?.sessionId };\n }\n\n return {};\n};\n", "//\n// Copyright 2020 DXOS.org\n//\n\nimport { Event, sleep, synchronized } from '@dxos/async';\nimport { type Any } from '@dxos/codec-protobuf';\nimport { Context } from '@dxos/context';\nimport { invariant } from '@dxos/invariant';\nimport { PublicKey } from '@dxos/keys';\nimport { log } from '@dxos/log';\nimport { RateLimitExceededError, TimeoutError, trace } from '@dxos/protocols';\nimport { type Runtime } from '@dxos/protocols/proto/dxos/config';\nimport { type SwarmEvent } from '@dxos/protocols/proto/dxos/mesh/signal';\n\nimport { type SignalManager } from './signal-manager';\nimport { type CommandTrace, SignalClient, type SignalStatus } from '../signal-client';\n\nconst MAX_SERVER_FAILURES = 5;\nconst WSS_SIGNAL_SERVER_REBOOT_DELAY = 3_000;\n/**\n * Manages connection to multiple Signal Servers over WebSocket\n */\nexport class WebsocketSignalManager implements SignalManager {\n private readonly _servers = new Map<string, SignalClient>();\n\n private _ctx!: Context;\n private _opened = false;\n\n readonly failureCount = new Map<string, number>();\n readonly statusChanged = new Event<SignalStatus[]>();\n readonly commandTrace = new Event<CommandTrace>();\n readonly swarmEvent = new Event<{\n topic: PublicKey;\n swarmEvent: SwarmEvent;\n }>();\n\n readonly onMessage = new Event<{\n author: PublicKey;\n recipient: PublicKey;\n payload: Any;\n }>();\n\n private readonly _instanceId = PublicKey.random().toHex();\n\n constructor(private readonly _hosts: Runtime.Services.Signal[]) {\n log('Created WebsocketSignalManager', { hosts: this._hosts });\n for (const host of this._hosts) {\n if (this._servers.has(host.server)) {\n continue;\n }\n const server = new SignalClient(\n host.server,\n async (message) => this.onMessage.emit(message),\n async (data) => this.swarmEvent.emit(data),\n );\n server.statusChanged.on(() => this.statusChanged.emit(this.getStatus()));\n\n this._servers.set(host.server, server);\n this.failureCount.set(host.server, 0);\n server.commandTrace.on((trace) => this.commandTrace.emit(trace));\n }\n }\n\n @synchronized\n async open() {\n if (this._opened) {\n return;\n }\n log('open signal manager', { hosts: this._hosts });\n log.trace('dxos.mesh.websocket-signal-manager.open', trace.begin({ id: this._instanceId }));\n\n this._initContext();\n\n [...this._servers.values()].forEach((server) => server.open());\n\n this._opened = true;\n log.trace('dxos.mesh.websocket-signal-manager.open', trace.end({ id: this._instanceId }));\n }\n\n @synchronized\n async close() {\n if (!this._opened) {\n return;\n }\n this._opened = false;\n\n await this._ctx.dispose();\n\n await Promise.all(Array.from(this._servers.values()).map((server) => server.close()));\n }\n\n async restartServer(serverName: string) {\n log('Restarting server', { serverName });\n invariant(this._opened, 'server already closed');\n\n const server = this._servers.get(serverName);\n invariant(server, 'server not found');\n\n await server.close();\n await sleep(WSS_SIGNAL_SERVER_REBOOT_DELAY);\n await server.open();\n }\n\n getStatus(): SignalStatus[] {\n return Array.from(this._servers.values()).map((server) => server.getStatus());\n }\n\n @synchronized\n async join({ topic, peerId }: { topic: PublicKey; peerId: PublicKey }) {\n log('Join', { topic, peerId });\n invariant(this._opened, 'Closed');\n await this._forEachServer((server) => server.join({ topic, peerId }));\n }\n\n @synchronized\n async leave({ topic, peerId }: { topic: PublicKey; peerId: PublicKey }) {\n log('leaving', { topic, peerId });\n invariant(this._opened, 'Closed');\n\n await this._forEachServer((server) => server.leave({ topic, peerId }));\n }\n\n async sendMessage({\n author,\n recipient,\n payload,\n }: {\n author: PublicKey;\n recipient: PublicKey;\n payload: Any;\n }): Promise<void> {\n log(`Signal ${recipient.truncate()}`);\n invariant(this._opened, 'Closed');\n\n void this._forEachServer(async (server, serverName) => {\n void server.sendMessage({ author, recipient, payload }).catch((err) => {\n if (err instanceof RateLimitExceededError) {\n log.info('WSS rate limit exceeded', { err });\n } else if (err instanceof TimeoutError || err.constructor.name === 'TimeoutError') {\n log.info('WSS sendMessage timeout', { err });\n void this.checkServerFailure(serverName);\n } else {\n log.info(`error sending to ${serverName}`, { err });\n void this.checkServerFailure(serverName);\n }\n });\n });\n }\n\n @synchronized\n async checkServerFailure(serverName: string) {\n const failureCount = this.failureCount.get(serverName!) ?? 0;\n if (failureCount > MAX_SERVER_FAILURES) {\n log.warn(`Too many failures sending to ${serverName} (${failureCount} > ${MAX_SERVER_FAILURES}), restarting`);\n await this.restartServer(serverName!);\n this.failureCount.set(serverName!, 0);\n return;\n }\n this.failureCount.set(serverName!, (this.failureCount.get(serverName!) ?? 0) + 1);\n }\n\n async subscribeMessages(peerId: PublicKey) {\n log(`Subscribed for message stream peerId=${peerId}`);\n invariant(this._opened, 'Closed');\n\n await this._forEachServer(async (server) => server.subscribeMessages(peerId));\n }\n\n async unsubscribeMessages(peerId: PublicKey) {\n log(`Subscribed for message stream peerId=${peerId}`);\n invariant(this._opened, 'Closed');\n\n await this._forEachServer(async (server) => server.unsubscribeMessages(peerId));\n }\n\n private _initContext() {\n this._ctx = new Context({\n onError: (err) => log.catch(err),\n });\n }\n\n private async _forEachServer<ReturnType>(\n fn: (server: SignalClient, serverName: string) => Promise<ReturnType>,\n ): Promise<ReturnType[]> {\n return Promise.all(Array.from(this._servers.entries()).map(([serverName, server]) => fn(server, serverName)));\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_util", "MESSAGE_TIMEOUT", "ReliablePayload", "schema", "getCodecForType", "Acknowledgement", "RECEIVED_MESSAGES_GC_INTERVAL", "Messenger", "constructor", "signalManager", "retryDelay", "ComplexMap", "peerId", "payloadType", "toHex", "PublicKey", "hash", "_onAckCallbacks", "_receivedMessages", "ComplexSet", "_closed", "_signalManager", "_retryDelay", "open", "traceId", "random", "log", "trace", "begin", "id", "_ctx", "Context", "onError", "err", "catch", "onDispose", "onMessage", "on", "message", "from", "author", "_handleMessage", "scheduleTaskInterval", "_performGc", "end", "close", "dispose", "sendMessage", "recipient", "payload", "invariant", "messageContext", "derive", "reliablePayload", "messageId", "has", "messageReceived", "timeoutHit", "promise", "Promise", "resolve", "reject", "scheduleExponentialBackoffTaskInterval", "_encodeAndSend", "scheduleTask", "delete", "ProtocolTimeoutError", "TimeoutError", "set", "listen", "subscribeMessages", "listeners", "_defaultListeners", "get", "Set", "_listeners", "add", "unsubscribe", "type_url", "value", "encode", "preserveAny", "_handleReliablePayload", "_handleAcknowledgement", "decode", "_sendAcknowledgement", "_callListeners", "to", "defaultListenerMap", "listener", "listenerMap", "start", "performance", "now", "key", "_toClear", "keys", "clear", "elapsed", "warn", "SignalRPCClient", "url", "callbacks", "_connectTrigger", "Trigger", "_url", "_callbacks", "_socket", "WebSocket", "_rpc", "createProtoRpcPeer", "requested", "Signal", "getService", "noHandshake", "port", "send", "msg", "subscribe", "cb", "onmessage", "Blob", "data", "Buffer", "arrayBuffer", "encodingOptions", "onopen", "onConnected", "wake", "onclose", "onDisconnected", "onerror", "event", "error", "Error", "reset", "join", "topic", "wait", "swarmStream", "rpc", "swarm", "asUint8Array", "peer", "waitUntilReady", "receiveMessages", "messageStream", "DEFAULT_RECONNECT_TIMEOUT", "MAX_RECONNECT_TIMEOUT", "ERROR_RECONCILE_DELAY", "RECONCILE_INTERVAL", "SignalClient", "_host", "_onMessage", "_onSwarmEvent", "_state", "SignalState", "CLOSED", "_reconnectAfter", "_connectionStarted", "Date", "_lastStateChange", "_clientReady", "statusChanged", "Event", "commandTrace", "_swarmStreams", "_joinedTopics", "_messageStreams", "_subscribedMessages", "_reconciled", "_instanceId", "_performance", "sentMessages", "receivedMessages", "reconnectCounter", "joinCounter", "leaveCounter", "startsWith", "CONNECTED", "CONNECTING", "includes", "disposed", "_scheduleReconcileAfterError", "_reconcileTask", "DeferredTask", "_reconcileSwarmSubscriptions", "_reconcileMessageSubscriptions", "emit", "schedule", "_reconnectTask", "_reconnect", "_setState", "_createClient", "_client", "undefined", "getStatus", "host", "state", "_lastError", "reconnectIn", "connectionStarted", "lastStateChange", "leave", "unsubscribeMessages", "newState", "status", "_connectionCtx", "all", "Array", "values", "map", "stream", "ERROR", "DISCONNECTED", "_incrementReconnectTimeout", "Math", "min", "RECONNECTING", "cancelWithContext", "sleep", "asyncTimeout", "client", "swarmEvent", "MemorySignalManagerContext", "MemorySignalManager", "_context", "_joinedSwarms", "_freezeTrigger", "joinedSwarmsCopy", "swarms", "peerAvailable", "since", "peerIds", "forEach", "peerLeft", "dec", "remote", "connections", "then", "freeze", "unfreeze", "endsWith", "relPayload", "Object", "sessionId", "MAX_SERVER_FAILURES", "WSS_SIGNAL_SERVER_REBOOT_DELAY", "WebsocketSignalManager", "_hosts", "_servers", "Map", "_opened", "failureCount", "hosts", "server", "_initContext", "restartServer", "serverName", "_forEachServer", "truncate", "RateLimitExceededError", "info", "name", "checkServerFailure", "fn", "entries", "synchronized"]
7
7
  }
@@ -1 +1 @@
1
- {"inputs":{"packages/core/mesh/messaging/src/timeouts.ts":{"bytes":656,"imports":[],"format":"esm"},"packages/core/mesh/messaging/src/messenger.ts":{"bytes":34092,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"packages/core/mesh/messaging/src/timeouts.ts","kind":"import-statement","original":"./timeouts"}],"format":"esm"},"packages/core/mesh/messaging/src/signal-client/signal-rpc-client.ts":{"bytes":20064,"imports":[{"path":"isomorphic-ws","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/rpc","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/messaging/src/signal-client/signal-client.ts":{"bytes":52212,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/protocols/proto/dxos/mesh/signal","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"packages/core/mesh/messaging/src/signal-client/signal-rpc-client.ts","kind":"import-statement","original":"./signal-rpc-client"}],"format":"esm"},"packages/core/mesh/messaging/src/signal-client/index.ts":{"bytes":499,"imports":[{"path":"packages/core/mesh/messaging/src/signal-client/signal-client.ts","kind":"import-statement","original":"./signal-client"}],"format":"esm"},"packages/core/mesh/messaging/src/signal-manager/memory-signal-manager.ts":{"bytes":24494,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/messaging/src/signal-manager/signal-manager.ts":{"bytes":1316,"imports":[],"format":"esm"},"packages/core/mesh/messaging/src/signal-manager/websocket-signal-manager.ts":{"bytes":25803,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"packages/core/mesh/messaging/src/signal-client/index.ts","kind":"import-statement","original":"../signal-client"}],"format":"esm"},"packages/core/mesh/messaging/src/signal-manager/index.ts":{"bytes":750,"imports":[{"path":"packages/core/mesh/messaging/src/signal-manager/memory-signal-manager.ts","kind":"import-statement","original":"./memory-signal-manager"},{"path":"packages/core/mesh/messaging/src/signal-manager/signal-manager.ts","kind":"import-statement","original":"./signal-manager"},{"path":"packages/core/mesh/messaging/src/signal-manager/websocket-signal-manager.ts","kind":"import-statement","original":"./websocket-signal-manager"}],"format":"esm"},"packages/core/mesh/messaging/src/signal-methods.ts":{"bytes":1633,"imports":[],"format":"esm"},"packages/core/mesh/messaging/src/index.ts":{"bytes":782,"imports":[{"path":"packages/core/mesh/messaging/src/messenger.ts","kind":"import-statement","original":"./messenger"},{"path":"packages/core/mesh/messaging/src/signal-client/index.ts","kind":"import-statement","original":"./signal-client"},{"path":"packages/core/mesh/messaging/src/signal-manager/index.ts","kind":"import-statement","original":"./signal-manager"},{"path":"packages/core/mesh/messaging/src/signal-methods.ts","kind":"import-statement","original":"./signal-methods"}],"format":"esm"}},"outputs":{"packages/core/mesh/messaging/dist/lib/node/index.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":72193},"packages/core/mesh/messaging/dist/lib/node/index.cjs":{"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/protocols/proto/dxos/mesh/signal","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"isomorphic-ws","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/rpc","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true}],"exports":["MemorySignalManager","MemorySignalManagerContext","Messenger","SignalClient","WebsocketSignalManager"],"entryPoint":"packages/core/mesh/messaging/src/index.ts","inputs":{"packages/core/mesh/messaging/src/messenger.ts":{"bytesInOutput":9633},"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":13587},"packages/core/mesh/messaging/src/signal-client/signal-rpc-client.ts":{"bytesInOutput":6017},"packages/core/mesh/messaging/src/signal-client/index.ts":{"bytesInOutput":0},"packages/core/mesh/messaging/src/signal-manager/memory-signal-manager.ts":{"bytesInOutput":6661},"packages/core/mesh/messaging/src/signal-manager/index.ts":{"bytesInOutput":0},"packages/core/mesh/messaging/src/signal-manager/websocket-signal-manager.ts":{"bytesInOutput":8542}},"bytes":45134}}}
1
+ {"inputs":{"packages/core/mesh/messaging/src/timeouts.ts":{"bytes":656,"imports":[],"format":"esm"},"packages/core/mesh/messaging/src/messenger.ts":{"bytes":34092,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"packages/core/mesh/messaging/src/timeouts.ts","kind":"import-statement","original":"./timeouts"}],"format":"esm"},"packages/core/mesh/messaging/src/signal-client/signal-rpc-client.ts":{"bytes":20064,"imports":[{"path":"isomorphic-ws","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/rpc","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/messaging/src/signal-client/signal-client.ts":{"bytes":52252,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/protocols/proto/dxos/mesh/signal","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"packages/core/mesh/messaging/src/signal-client/signal-rpc-client.ts","kind":"import-statement","original":"./signal-rpc-client"}],"format":"esm"},"packages/core/mesh/messaging/src/signal-client/index.ts":{"bytes":499,"imports":[{"path":"packages/core/mesh/messaging/src/signal-client/signal-client.ts","kind":"import-statement","original":"./signal-client"}],"format":"esm"},"packages/core/mesh/messaging/src/signal-manager/memory-signal-manager.ts":{"bytes":24506,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/messaging/src/signal-manager/signal-manager.ts":{"bytes":1339,"imports":[],"format":"esm"},"packages/core/mesh/messaging/src/signal-manager/websocket-signal-manager.ts":{"bytes":25815,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"packages/core/mesh/messaging/src/signal-client/index.ts","kind":"import-statement","original":"../signal-client"}],"format":"esm"},"packages/core/mesh/messaging/src/signal-manager/index.ts":{"bytes":750,"imports":[{"path":"packages/core/mesh/messaging/src/signal-manager/memory-signal-manager.ts","kind":"import-statement","original":"./memory-signal-manager"},{"path":"packages/core/mesh/messaging/src/signal-manager/signal-manager.ts","kind":"import-statement","original":"./signal-manager"},{"path":"packages/core/mesh/messaging/src/signal-manager/websocket-signal-manager.ts","kind":"import-statement","original":"./websocket-signal-manager"}],"format":"esm"},"packages/core/mesh/messaging/src/signal-methods.ts":{"bytes":1633,"imports":[],"format":"esm"},"packages/core/mesh/messaging/src/index.ts":{"bytes":782,"imports":[{"path":"packages/core/mesh/messaging/src/messenger.ts","kind":"import-statement","original":"./messenger"},{"path":"packages/core/mesh/messaging/src/signal-client/index.ts","kind":"import-statement","original":"./signal-client"},{"path":"packages/core/mesh/messaging/src/signal-manager/index.ts","kind":"import-statement","original":"./signal-manager"},{"path":"packages/core/mesh/messaging/src/signal-methods.ts","kind":"import-statement","original":"./signal-methods"}],"format":"esm"}},"outputs":{"packages/core/mesh/messaging/dist/lib/node/index.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":72219},"packages/core/mesh/messaging/dist/lib/node/index.cjs":{"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/protocols/proto/dxos/mesh/signal","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"isomorphic-ws","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/rpc","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true}],"exports":["MemorySignalManager","MemorySignalManagerContext","Messenger","SignalClient","WebsocketSignalManager"],"entryPoint":"packages/core/mesh/messaging/src/index.ts","inputs":{"packages/core/mesh/messaging/src/messenger.ts":{"bytesInOutput":9633},"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":13587},"packages/core/mesh/messaging/src/signal-client/signal-rpc-client.ts":{"bytesInOutput":6017},"packages/core/mesh/messaging/src/signal-client/index.ts":{"bytesInOutput":0},"packages/core/mesh/messaging/src/signal-manager/memory-signal-manager.ts":{"bytesInOutput":6661},"packages/core/mesh/messaging/src/signal-manager/index.ts":{"bytesInOutput":0},"packages/core/mesh/messaging/src/signal-manager/websocket-signal-manager.ts":{"bytesInOutput":8542}},"bytes":45134}}}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dxos/messaging",
3
- "version": "0.3.11-main.fbbdc2a",
3
+ "version": "0.3.11-main.fc97a54",
4
4
  "description": "Messaging",
5
5
  "homepage": "https://dxos.org",
6
6
  "bugs": "https://github.com/dxos/dxos/issues",
@@ -19,23 +19,23 @@
19
19
  "dependencies": {
20
20
  "isomorphic-ws": "^4.0.1",
21
21
  "ws": "^8.14.2",
22
- "@dxos/async": "0.3.11-main.fbbdc2a",
23
- "@dxos/codec-protobuf": "0.3.11-main.fbbdc2a",
24
- "@dxos/context": "0.3.11-main.fbbdc2a",
25
- "@dxos/invariant": "0.3.11-main.fbbdc2a",
26
- "@dxos/keys": "0.3.11-main.fbbdc2a",
27
- "@dxos/log": "0.3.11-main.fbbdc2a",
28
- "@dxos/node-std": "0.3.11-main.fbbdc2a",
29
- "@dxos/protocols": "0.3.11-main.fbbdc2a",
30
- "@dxos/util": "0.3.11-main.fbbdc2a",
31
- "@dxos/rpc": "0.3.11-main.fbbdc2a"
22
+ "@dxos/async": "0.3.11-main.fc97a54",
23
+ "@dxos/context": "0.3.11-main.fc97a54",
24
+ "@dxos/invariant": "0.3.11-main.fc97a54",
25
+ "@dxos/keys": "0.3.11-main.fc97a54",
26
+ "@dxos/codec-protobuf": "0.3.11-main.fc97a54",
27
+ "@dxos/rpc": "0.3.11-main.fc97a54",
28
+ "@dxos/node-std": "0.3.11-main.fc97a54",
29
+ "@dxos/log": "0.3.11-main.fc97a54",
30
+ "@dxos/util": "0.3.11-main.fc97a54",
31
+ "@dxos/protocols": "0.3.11-main.fc97a54"
32
32
  },
33
33
  "devDependencies": {
34
34
  "@types/node": "^18.11.9",
35
35
  "earljs": "~0.1.10",
36
36
  "typescript": "^5.2.2",
37
37
  "wait-for-expect": "^3.0.2",
38
- "@dxos/signal": "0.3.11-main.fbbdc2a"
38
+ "@dxos/signal": "0.3.11-main.fc97a54"
39
39
  },
40
40
  "publishConfig": {
41
41
  "access": "public"
@@ -362,7 +362,7 @@ describe('Messenger', () => {
362
362
  describe('load', () => {
363
363
  test('many connections to KUBE', async () => {
364
364
  // let numReceived = 0;
365
- range(100).map(async () => {
365
+ void range(100).map(async () => {
366
366
  const peerId = PublicKey.random();
367
367
  const newLocal = new WebsocketSignalManager([{ server: 'wss://dev.kube.dxos.org/.well-known/dx/signal' }]);
368
368
  await newLocal.open();