@dxos/messaging 0.8.4-main.406dc2a → 0.8.4-main.548089c
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.
- package/dist/lib/browser/{chunk-CD3GXEDZ.mjs → chunk-L7NDSF6K.mjs} +301 -354
- package/dist/lib/browser/{chunk-CD3GXEDZ.mjs.map → chunk-L7NDSF6K.mjs.map} +2 -2
- package/dist/lib/browser/index.mjs +1 -1
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/testing/index.mjs +15 -38
- package/dist/lib/browser/testing/index.mjs.map +2 -2
- package/dist/lib/node-esm/{chunk-IVXFEWLW.mjs → chunk-PVWR5V42.mjs} +301 -354
- package/dist/lib/node-esm/{chunk-IVXFEWLW.mjs.map → chunk-PVWR5V42.mjs.map} +2 -2
- package/dist/lib/node-esm/index.mjs +1 -1
- package/dist/lib/node-esm/meta.json +1 -1
- package/dist/lib/node-esm/testing/index.mjs +15 -38
- package/dist/lib/node-esm/testing/index.mjs.map +2 -2
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +16 -16
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/messenger.ts", "../../../src/messenger-monitor.ts", "../../../src/timeouts.ts", "../../../src/signal-client/signal-client.ts", "../../../src/signal-client/signal-client-monitor.ts", "../../../src/signal-client/signal-local-state.ts", "../../../src/signal-client/signal-rpc-client.ts", "../../../src/signal-client/signal-rpc-client-monitor.ts", "../../../src/signal-methods.ts", "../../../src/signal-manager/memory-signal-manager.ts", "../../../src/signal-manager/websocket-signal-manager.ts", "../../../src/signal-manager/websocket-signal-manager-monitor.ts", "../../../src/signal-manager/edge-signal-manager.ts", "../../../src/signal-manager/utils.ts"],
|
|
4
4
|
"sourcesContent": ["//\n// Copyright 2022 DXOS.org\n//\n\nimport { TimeoutError, scheduleExponentialBackoffTaskInterval, scheduleTask, scheduleTaskInterval } from '@dxos/async';\nimport { type Any } from '@dxos/codec-protobuf';\nimport { Context } from '@dxos/context';\nimport { invariant } from '@dxos/invariant';\nimport { PublicKey } from '@dxos/keys';\nimport { log } from '@dxos/log';\nimport { TimeoutError as ProtocolTimeoutError, trace } from '@dxos/protocols';\nimport { schema } from '@dxos/protocols/proto';\nimport { type ReliablePayload } from '@dxos/protocols/proto/dxos/mesh/messaging';\nimport { ComplexMap, ComplexSet } from '@dxos/util';\n\nimport { MessengerMonitor } from './messenger-monitor';\nimport { type SignalManager } from './signal-manager';\nimport { type Message, type PeerInfo } from './signal-methods';\nimport { MESSAGE_TIMEOUT } from './timeouts';\n\nexport type OnMessage = (params: Message) => Promise<void>;\n\nexport interface MessengerOptions {\n signalManager: SignalManager;\n retryDelay?: number;\n}\n\nconst ReliablePayload = schema.getCodecForType('dxos.mesh.messaging.ReliablePayload');\nconst Acknowledgement = schema.getCodecForType('dxos.mesh.messaging.Acknowledgement');\n\nconst RECEIVED_MESSAGES_GC_INTERVAL = 120_000;\n\n/**\n * Reliable messenger that works trough signal network.\n */\nexport class Messenger {\n private readonly _monitor = new MessengerMonitor();\n private readonly _signalManager: SignalManager;\n // { peerId, payloadType } => listeners set\n private readonly _listeners = new ComplexMap<{ peerId: string; payloadType: string }, Set<OnMessage>>(\n ({ peerId, payloadType }) => peerId + payloadType,\n );\n\n // peerId => listeners set\n private readonly _defaultListeners = new Map<string, Set<OnMessage>>();\n\n private readonly _onAckCallbacks = new ComplexMap<PublicKey, () => void>(PublicKey.hash);\n\n private readonly _receivedMessages = new ComplexSet<PublicKey>(PublicKey.hash);\n\n /**\n * Keys scheduled to be cleared from _receivedMessages on the next iteration.\n */\n private readonly _toClear = new ComplexSet<PublicKey>(PublicKey.hash);\n\n private _ctx!: Context;\n private _closed = true;\n private readonly _retryDelay: number;\n\n constructor({ signalManager, retryDelay = 1000 }: MessengerOptions) {\n this._signalManager = signalManager;\n this._retryDelay = retryDelay;\n\n this.open();\n }\n\n open(): void {\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(): Promise<void> {\n if (this._closed) {\n return;\n }\n this._closed = true;\n await this._ctx.dispose();\n }\n\n async sendMessage({ author, recipient, payload }: Message): Promise<void> {\n invariant(!this._closed, 'Closed');\n const messageContext = this._ctx.derive();\n\n const reliablePayload: ReliablePayload = {\n messageId: PublicKey.random(),\n payload,\n };\n invariant(!this._onAckCallbacks.has(reliablePayload.messageId!));\n log('send message', { messageId: reliablePayload.messageId, author, recipient });\n\n let messageReceived: () => void;\n let timeoutHit: (err: Error) => void;\n let sendAttempts = 0;\n\n const promise = new Promise<void>((resolve, reject) => {\n messageReceived = resolve;\n timeoutHit = reject;\n });\n\n // Setting retry interval if signal was not acknowledged.\n scheduleExponentialBackoffTaskInterval(\n messageContext,\n async () => {\n log('retrying message', { messageId: reliablePayload.messageId });\n sendAttempts++;\n await this._encodeAndSend({ author, recipient, reliablePayload }).catch((err) =>\n log('failed to send message', { err }),\n );\n },\n this._retryDelay,\n );\n\n scheduleTask(\n messageContext,\n () => {\n log('message not delivered', { messageId: reliablePayload.messageId });\n this._onAckCallbacks.delete(reliablePayload.messageId!);\n timeoutHit(\n new ProtocolTimeoutError(\n 'signaling message not delivered',\n new TimeoutError(MESSAGE_TIMEOUT, 'Message not delivered'),\n ),\n );\n void messageContext.dispose();\n this._monitor.recordReliableMessage({ sendAttempts, sent: false });\n },\n MESSAGE_TIMEOUT,\n );\n\n this._onAckCallbacks.set(reliablePayload.messageId, () => {\n messageReceived();\n this._onAckCallbacks.delete(reliablePayload.messageId!);\n void messageContext.dispose();\n this._monitor.recordReliableMessage({ sendAttempts, sent: true });\n });\n\n await this._encodeAndSend({ author, recipient, reliablePayload });\n return promise;\n }\n\n /**\n * Subscribes onMessage function to messages that contains payload with payloadType.\n * @param payloadType if not specified, onMessage will be subscribed to all types of messages.\n */\n async listen({\n peer,\n payloadType,\n onMessage,\n }: {\n peer: PeerInfo;\n payloadType?: string;\n onMessage: OnMessage;\n }): Promise<ListeningHandle> {\n invariant(!this._closed, 'Closed');\n\n await this._signalManager.subscribeMessages(peer);\n let listeners: Set<OnMessage> | undefined;\n invariant(peer.peerKey, 'Peer key is required');\n\n if (!payloadType) {\n listeners = this._defaultListeners.get(peer.peerKey);\n if (!listeners) {\n listeners = new Set();\n this._defaultListeners.set(peer.peerKey, listeners);\n }\n } else {\n listeners = this._listeners.get({ peerId: peer.peerKey, payloadType });\n if (!listeners) {\n listeners = new Set();\n this._listeners.set({ peerId: peer.peerKey, payloadType }, listeners);\n }\n }\n\n listeners.add(onMessage);\n\n return {\n unsubscribe: async () => {\n listeners!.delete(onMessage);\n },\n };\n }\n\n private async _encodeAndSend({\n author,\n recipient,\n reliablePayload,\n }: {\n author: PeerInfo;\n recipient: PeerInfo;\n reliablePayload: ReliablePayload;\n }): Promise<void> {\n await this._signalManager.sendMessage({\n author,\n recipient,\n payload: {\n type_url: 'dxos.mesh.messaging.ReliablePayload',\n value: ReliablePayload.encode(reliablePayload, { preserveAny: true }),\n },\n });\n }\n\n private async _handleMessage(message: Message): Promise<void> {\n switch (message.payload.type_url) {\n case 'dxos.mesh.messaging.ReliablePayload': {\n await this._handleReliablePayload(message);\n break;\n }\n case 'dxos.mesh.messaging.Acknowledgement': {\n await this._handleAcknowledgement({ payload: message.payload });\n break;\n }\n }\n }\n\n private async _handleReliablePayload({ author, recipient, payload }: Message): Promise<void> {\n invariant(payload.type_url === 'dxos.mesh.messaging.ReliablePayload');\n const reliablePayload: ReliablePayload = ReliablePayload.decode(payload.value, { preserveAny: true });\n\n log('handling message', { messageId: reliablePayload.messageId });\n\n try {\n await this._sendAcknowledgement({\n author,\n recipient,\n messageId: reliablePayload.messageId,\n });\n } catch (err) {\n this._monitor.recordMessageAckFailed();\n throw err;\n }\n\n // Ignore message if it was already received, i.e. from multiple signal servers.\n if (this._receivedMessages.has(reliablePayload.messageId!)) {\n return;\n }\n\n this._receivedMessages.add(reliablePayload.messageId!);\n\n await this._callListeners({\n author,\n recipient,\n payload: reliablePayload.payload,\n });\n }\n\n private async _handleAcknowledgement({ payload }: { payload: Any }): Promise<void> {\n invariant(payload.type_url === 'dxos.mesh.messaging.Acknowledgement');\n this._onAckCallbacks.get(Acknowledgement.decode(payload.value).messageId)?.();\n }\n\n private async _sendAcknowledgement({\n author,\n recipient,\n messageId,\n }: {\n author: PeerInfo;\n recipient: PeerInfo;\n messageId: PublicKey;\n }): Promise<void> {\n log('sending ACK', { messageId, from: recipient, to: author });\n\n await this._signalManager.sendMessage({\n author: recipient,\n recipient: author,\n payload: {\n type_url: 'dxos.mesh.messaging.Acknowledgement',\n value: Acknowledgement.encode({ messageId }),\n },\n });\n }\n\n private async _callListeners(message: Message): Promise<void> {\n {\n invariant(message.recipient.peerKey, 'Peer key is required');\n const defaultListenerMap = this._defaultListeners.get(message.recipient.peerKey);\n if (defaultListenerMap) {\n for (const listener of defaultListenerMap) {\n await listener(message);\n }\n }\n }\n\n {\n const listenerMap = this._listeners.get({\n peerId: message.recipient.peerKey,\n payloadType: message.payload.type_url,\n });\n if (listenerMap) {\n for (const listener of listenerMap) {\n await listener(message);\n }\n }\n }\n }\n\n private _performGc(): void {\n const start = performance.now();\n\n for (const key of this._toClear.keys()) {\n this._receivedMessages.delete(key);\n }\n this._toClear.clear();\n for (const key of this._receivedMessages.keys()) {\n this._toClear.add(key);\n }\n\n const elapsed = performance.now() - start;\n if (elapsed > 100) {\n log.warn('GC took too long', { elapsed });\n }\n }\n}\n\nexport interface ListeningHandle {\n unsubscribe: () => Promise<void>;\n}\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { trace } from '@dxos/tracing';\n\nexport class MessengerMonitor {\n public recordMessageAckFailed(): void {\n trace.metrics.increment('dxos.mesh.signal.messenger.failed-ack', 1);\n }\n\n public recordReliableMessage(params: { sendAttempts: number; sent: boolean }): void {\n trace.metrics.increment('dxos.mesh.signal.messenger.reliable-send', 1, {\n tags: {\n success: params.sent,\n attempts: params.sendAttempts,\n },\n });\n }\n}\n", "//\n// Copyright 2023 DXOS.org\n//\n\n/**\n * Timeout for retrying messages.\n */\nexport const MESSAGE_TIMEOUT = 10_000;\n", "//\n// Copyright 2020 DXOS.org\n//\n\nimport { DeferredTask, Event, Trigger, scheduleTask, scheduleTaskInterval, sleep } from '@dxos/async';\nimport { type Context, Resource, 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 SwarmResponse } from '@dxos/protocols/proto/dxos/edge/messenger';\nimport { type JoinRequest, type LeaveRequest, type QueryRequest } from '@dxos/protocols/proto/dxos/edge/signal';\nimport { SignalState } from '@dxos/protocols/proto/dxos/mesh/signal';\n\nimport {\n type Message,\n type PeerInfo,\n type SignalClientMethods,\n type SignalStatus,\n type SwarmEvent,\n} from '../signal-methods';\n\nimport { SignalClientMonitor } from './signal-client-monitor';\nimport { SignalLocalState } from './signal-local-state';\nimport { SignalRPCClient } from './signal-rpc-client';\n\nconst DEFAULT_RECONNECT_TIMEOUT = 100;\nconst MAX_RECONNECT_TIMEOUT = 5_000;\nconst ERROR_RECONCILE_DELAY = 1_000;\nconst RECONCILE_INTERVAL = 5_000;\n\n/**\n * KUBE-specific signaling client.\n * Establishes a websocket connection to signal server and provides RPC methods.\n * Subscription state updates are executed immediately against the local state which\n * is reconciled periodically.\n * TODO(mykola): Delete.\n * @deprecated\n */\n// TODO(burdon): Rename impl.\nexport class SignalClient extends Resource implements SignalClientMethods {\n private readonly _monitor = new SignalClientMonitor();\n\n private _state = SignalState.CLOSED;\n private _lastError?: Error;\n private _lastReconciliationFailed = false;\n\n private readonly _clientReady = new Trigger();\n private _connectionCtx?: Context;\n private _client?: SignalRPCClient;\n\n private _reconcileTask?: DeferredTask;\n private _reconnectTask?: DeferredTask;\n\n /**\n * Number of milliseconds after which the connection will be attempted again in case of error.\n */\n private _reconnectAfter = DEFAULT_RECONNECT_TIMEOUT;\n\n private readonly _instanceId = PublicKey.random().toHex();\n\n /**\n * @internal\n */\n readonly localState: SignalLocalState;\n\n readonly statusChanged = new Event<SignalStatus>();\n\n public readonly onMessage = new Event<Message>();\n public readonly swarmEvent = new Event<SwarmEvent>();\n\n /**\n * @param _host Signal server websocket URL.\n * @param onMessage called when a new message is received.\n * @param onSwarmEvent called when a new swarm event is received.\n * @param _getMetadata signal-message metadata provider, called for every message.\n */\n constructor(\n private readonly _host: string,\n private readonly _getMetadata?: () => any,\n ) {\n super();\n if (!this._host.startsWith('wss://') && !this._host.startsWith('ws://')) {\n throw new Error(`Signal server requires a websocket URL. Provided: ${this._host}`);\n }\n\n this.localState = new SignalLocalState(\n async (message) => {\n this._monitor.recordMessageReceived(message);\n this.onMessage.emit(message);\n },\n async (event) => this.swarmEvent.emit(event),\n );\n }\n\n protected override async _open(): Promise<void> {\n log.trace('dxos.mesh.signal-client.open', trace.begin({ id: this._instanceId }));\n\n if ([SignalState.CONNECTED, SignalState.CONNECTING].includes(this._state)) {\n return;\n }\n this._setState(SignalState.CONNECTING);\n\n this._reconcileTask = new DeferredTask(this._ctx, async () => {\n try {\n await cancelWithContext(this._connectionCtx!, this._clientReady.wait({ timeout: 5_000 }));\n invariant(this._state === SignalState.CONNECTED, 'Not connected to Signal Server');\n await this.localState.reconcile(this._connectionCtx!, this._client!);\n this._monitor.recordReconciliation({ success: true });\n this._lastReconciliationFailed = false;\n } catch (err) {\n this._lastReconciliationFailed = true;\n this._monitor.recordReconciliation({ success: false });\n throw err;\n }\n });\n\n // Reconcile subscriptions periodically.\n scheduleTaskInterval(\n this._ctx,\n async () => {\n if (this._state === SignalState.CONNECTED) {\n this._reconcileTask!.schedule();\n }\n },\n RECONCILE_INTERVAL,\n );\n\n this._reconnectTask = new DeferredTask(this._ctx, async () => {\n try {\n await this._reconnect();\n this._monitor.recordReconnect({ success: true });\n } catch (err) {\n this._monitor.recordReconnect({ success: false });\n throw err;\n }\n });\n\n this._createClient();\n log.trace('dxos.mesh.signal-client.open', trace.end({ id: this._instanceId }));\n }\n\n protected override async _catch(err: Error): Promise<void> {\n if (this._state === SignalState.CLOSED || this._ctx.disposed) {\n return;\n }\n // Don't log consecutive reconciliation failures.\n if (this._state === SignalState.CONNECTED && !this._lastReconciliationFailed) {\n log.warn('SignalClient error:', err);\n }\n this._scheduleReconcileAfterError();\n }\n\n protected override async _close(): Promise<void> {\n log('closing...');\n if ([SignalState.CLOSED].includes(this._state)) {\n return;\n }\n\n this._setState(SignalState.CLOSED);\n await this._safeResetClient();\n\n log('closed');\n }\n\n getStatus(): SignalStatus {\n return {\n host: this._host,\n state: this._state,\n error: this._lastError?.message,\n reconnectIn: this._reconnectAfter,\n ...this._monitor.getRecordedTimestamps(),\n };\n }\n\n async join(args: JoinRequest): Promise<void> {\n log('joining', { topic: args.topic, peerId: args.peer.peerKey });\n this._monitor.recordJoin();\n this.localState.join({ topic: args.topic, peerId: PublicKey.from(args.peer.peerKey) });\n this._reconcileTask?.schedule();\n }\n\n async leave(args: LeaveRequest): Promise<void> {\n log('leaving', { topic: args.topic, peerId: args.peer.peerKey });\n this._monitor.recordLeave();\n this.localState.leave({ topic: args.topic, peerId: PublicKey.from(args.peer.peerKey) });\n }\n\n async query(params: QueryRequest): Promise<SwarmResponse> {\n throw new Error('Not implemented');\n }\n\n async sendMessage(msg: Message): Promise<void> {\n return this._monitor.recordMessageSending(msg, async () => {\n await this._clientReady.wait();\n invariant(this._state === SignalState.CONNECTED, 'Not connected to Signal Server');\n invariant(msg.author.peerKey, 'Author key required');\n invariant(msg.recipient.peerKey, 'Recipient key required');\n await this._client!.sendMessage({\n author: PublicKey.from(msg.author.peerKey),\n recipient: PublicKey.from(msg.recipient.peerKey),\n payload: msg.payload,\n });\n });\n }\n\n async subscribeMessages(peer: PeerInfo): Promise<void> {\n invariant(peer.peerKey, 'Peer key required');\n log('subscribing to messages', { peer });\n this.localState.subscribeMessages(PublicKey.from(peer.peerKey));\n this._reconcileTask?.schedule();\n }\n\n async unsubscribeMessages(peer: PeerInfo): Promise<void> {\n invariant(peer.peerKey, 'Peer key required');\n log('unsubscribing from messages', { peer });\n this.localState.unsubscribeMessages(PublicKey.from(peer.peerKey));\n }\n\n private _scheduleReconcileAfterError(): void {\n scheduleTask(this._ctx, () => this._reconcileTask!.schedule(), ERROR_RECONCILE_DELAY);\n }\n\n private _createClient(): void {\n log('creating client', { host: this._host, state: this._state });\n invariant(!this._client, 'Client already created');\n\n this._monitor.recordConnectionStartTime();\n\n // Create new context for each connection.\n this._connectionCtx = this._ctx.derive();\n this._connectionCtx.onDispose(async () => {\n log('connection context disposed');\n const { failureCount } = await this.localState.safeCloseStreams();\n this._monitor.recordStreamCloseErrors(failureCount);\n });\n\n try {\n const client = new SignalRPCClient({\n url: this._host,\n callbacks: {\n onConnected: () => {\n if (client === this._client) {\n log('socket connected');\n this._onConnected();\n }\n },\n\n onDisconnected: () => {\n if (client !== this._client) {\n return;\n }\n log('socket disconnected', { state: this._state });\n if (this._state === SignalState.ERROR) {\n // Ignore disconnects after error.\n // Handled by error handler before disconnect handler.\n this._setState(SignalState.DISCONNECTED);\n } else {\n this._onDisconnected();\n }\n },\n\n onError: (error) => {\n if (client === this._client) {\n log('socket error', { error, state: this._state });\n this._onDisconnected({ error });\n }\n },\n getMetadata: this._getMetadata,\n },\n });\n this._client = client;\n } catch (error: any) {\n this._client = undefined;\n this._onDisconnected({ error });\n }\n }\n\n private async _reconnect(): Promise<void> {\n log(`reconnecting in ${this._reconnectAfter}ms`, { state: this._state });\n\n if (this._state === SignalState.RECONNECTING) {\n log.info('Signal api already reconnecting.');\n return;\n }\n if (this._state === SignalState.CLOSED) {\n return;\n }\n this._setState(SignalState.RECONNECTING);\n\n await this._safeResetClient();\n\n await cancelWithContext(this._ctx!, sleep(this._reconnectAfter));\n\n this._createClient();\n }\n\n private _onConnected(): void {\n this._lastError = undefined;\n this._lastReconciliationFailed = false;\n this._reconnectAfter = DEFAULT_RECONNECT_TIMEOUT;\n this._setState(SignalState.CONNECTED);\n this._clientReady.wake();\n this._reconcileTask!.schedule();\n }\n\n private _onDisconnected(options?: { error: Error }): void {\n this._updateReconnectTimeout();\n if (this._state === SignalState.CLOSED) {\n return;\n }\n if (options?.error) {\n this._lastError = options.error;\n this._setState(SignalState.ERROR);\n } else {\n this._setState(SignalState.DISCONNECTED);\n }\n this._reconnectTask!.schedule();\n }\n\n private _setState(newState: SignalState): void {\n this._state = newState;\n this._monitor.recordStateChangeTime();\n log('signal state changed', { status: this.getStatus() });\n this.statusChanged.emit(this.getStatus());\n }\n\n private _updateReconnectTimeout(): void {\n if (this._state !== SignalState.CONNECTED && this._state !== SignalState.CONNECTING) {\n this._reconnectAfter *= 2;\n this._reconnectAfter = Math.min(this._reconnectAfter, MAX_RECONNECT_TIMEOUT);\n }\n }\n\n private async _safeResetClient(): Promise<void> {\n await this._connectionCtx?.dispose();\n this._connectionCtx = undefined;\n\n this._clientReady.reset();\n await this._client?.close().catch(() => {});\n this._client = undefined;\n }\n}\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { trace } from '@dxos/tracing';\n\nimport type { Message } from '../signal-methods';\n\nexport class SignalClientMonitor {\n private readonly _performance = {\n sentMessages: 0,\n receivedMessages: 0,\n reconnectCounter: 0,\n joinCounter: 0,\n leaveCounter: 0,\n };\n\n /**\n * Timestamp of when the connection attempt was began.\n */\n private _connectionStarted = new Date();\n /**\n * Timestamp of last state change.\n */\n private _lastStateChange = new Date();\n\n public getRecordedTimestamps(): { connectionStarted: Date; lastStateChange: Date } {\n return {\n connectionStarted: this._connectionStarted,\n lastStateChange: this._lastStateChange,\n };\n }\n\n public recordStateChangeTime(): void {\n this._lastStateChange = new Date();\n }\n\n public recordConnectionStartTime(): void {\n this._connectionStarted = new Date();\n }\n\n public recordReconnect(params: { success: boolean }): void {\n this._performance.reconnectCounter++;\n trace.metrics.increment('dxos.mesh.signal.signal-client.reconnect', 1, {\n tags: {\n success: params.success,\n },\n });\n }\n\n public recordJoin(): void {\n this._performance.joinCounter++;\n }\n\n public recordLeave(): void {\n this._performance.leaveCounter++;\n }\n\n public recordMessageReceived(message: Message): void {\n this._performance.receivedMessages++;\n trace.metrics.increment('dxos.mesh.signal.signal-client.received-total', 1, {\n tags: createIdentityTags(message),\n });\n trace.metrics.distribution('dxos.mesh.signal.signal-client.bytes-in', getByteCount(message), {\n tags: createIdentityTags(message),\n });\n }\n\n public async recordMessageSending(message: Message, sendMessage: () => Promise<void>): Promise<void> {\n this._performance.sentMessages++;\n const tags = createIdentityTags(message);\n let success = true;\n try {\n const reqStart = Date.now();\n await sendMessage();\n const reqDuration = Date.now() - reqStart;\n trace.metrics.distribution('dxos.mesh.signal.signal-client.send-duration', reqDuration, { tags });\n trace.metrics.distribution('dxos.mesh.signal.signal-client.bytes-out', getByteCount(message), { tags });\n } catch (err) {\n success = false;\n }\n trace.metrics.increment('dxos.mesh.signal.signal-client.sent-total', 1, {\n tags: { ...tags, success },\n });\n }\n\n public recordStreamCloseErrors(count: number): void {\n trace.metrics.increment('dxos.mesh.signal.signal-client.stream-close-errors', count);\n }\n\n public recordReconciliation(params: { success: boolean }): void {\n trace.metrics.increment('dxos.mesh.signal.signal-client.reconciliation', 1, {\n tags: {\n success: params.success,\n },\n });\n }\n}\n\nconst getByteCount = (message: Message): number => {\n return (\n message.author.peerKey.length +\n message.recipient.peerKey.length +\n message.payload.type_url.length +\n message.payload.value.length\n );\n};\n\nconst createIdentityTags = (message: Message) => {\n return { peer: message.author.peerKey };\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { Event, asyncTimeout } from '@dxos/async';\nimport type { Stream } from '@dxos/codec-protobuf/stream';\nimport { type Context, cancelWithContext } from '@dxos/context';\nimport { PublicKey } from '@dxos/keys';\nimport { log } from '@dxos/log';\nimport {\n type Message as SignalMessage,\n type SwarmEvent as SwarmEventProto,\n} from '@dxos/protocols/proto/dxos/mesh/signal';\nimport { ComplexMap, ComplexSet, safeAwaitAll } from '@dxos/util';\n\nimport type { Message, SwarmEvent } from '../signal-methods';\n\nimport { type SignalRPCClient } from './signal-rpc-client';\n\nexport class SignalLocalState {\n /**\n * Swarm events streams. Keys represent actually joined topic and peerId.\n */\n private readonly _swarmStreams = new ComplexMap<{ topic: PublicKey; peerId: PublicKey }, Stream<SwarmEventProto>>(\n ({ topic, peerId }) => topic.toHex() + peerId.toHex(),\n );\n\n /**\n * Represent desired joined topic and peerId.\n */\n private readonly _joinedTopics = new ComplexSet<{ topic: PublicKey; peerId: PublicKey }>(\n ({ topic, peerId }) => topic.toHex() + peerId.toHex(),\n );\n\n /**\n * Represent desired message subscriptions.\n */\n private readonly _subscribedMessages = new ComplexSet<{ peerId: PublicKey }>(({ peerId }) => peerId.toHex());\n\n /**\n * Message streams. Keys represents actually subscribed peers.\n * @internal\n */\n readonly messageStreams = new ComplexMap<PublicKey, Stream<SignalMessage>>((key) => key.toHex());\n\n /**\n * Event to use in tests to wait till subscription is successfully established.\n * @internal\n */\n readonly reconciled = new Event();\n\n constructor(\n private readonly _onMessage: (params: Message) => Promise<void>,\n private readonly _onSwarmEvent: (params: SwarmEvent) => Promise<void>,\n ) {}\n\n async safeCloseStreams(): Promise<{ failureCount: number }> {\n const streams = ([...this._swarmStreams.values()] as Stream<any>[]).concat([...this.messageStreams.values()]);\n this._swarmStreams.clear();\n this.messageStreams.clear();\n const failureCount = (await safeAwaitAll(streams, (s) => s.close())).length;\n return { failureCount };\n }\n\n join({ topic, peerId }: { topic: PublicKey; peerId: PublicKey }): void {\n this._joinedTopics.add({ topic, peerId });\n }\n\n leave({ topic, peerId }: { topic: PublicKey; peerId: PublicKey }): void {\n void this._swarmStreams.get({ topic, peerId })?.close();\n this._swarmStreams.delete({ topic, peerId });\n this._joinedTopics.delete({ topic, peerId });\n }\n\n subscribeMessages(peerId: PublicKey): void {\n this._subscribedMessages.add({ peerId });\n }\n\n unsubscribeMessages(peerId: PublicKey): void {\n log('unsubscribing from messages', { peerId });\n this._subscribedMessages.delete({ peerId });\n void this.messageStreams.get(peerId)?.close();\n this.messageStreams.delete(peerId);\n }\n\n public async reconcile(ctx: Context, client: SignalRPCClient): Promise<void> {\n await this._reconcileSwarmSubscriptions(ctx, client);\n await this._reconcileMessageSubscriptions(ctx, client);\n this.reconciled.emit();\n }\n\n private async _reconcileSwarmSubscriptions(ctx: Context, client: SignalRPCClient): Promise<void> {\n // Unsubscribe from topics that are no longer needed.\n for (const { topic, peerId } of this._swarmStreams.keys()) {\n // Join desired topics.\n if (this._joinedTopics.has({ topic, peerId })) {\n continue;\n }\n\n void this._swarmStreams.get({ topic, peerId })?.close();\n this._swarmStreams.delete({ topic, peerId });\n }\n\n // Subscribe to topics that are needed.\n for (const { topic, peerId } of this._joinedTopics.values()) {\n // Join desired topics.\n if (this._swarmStreams.has({ topic, peerId })) {\n continue;\n }\n\n const swarmStream = await asyncTimeout(cancelWithContext(ctx, client.join({ topic, peerId })), 5_000);\n // Subscribing to swarm events.\n // TODO(mykola): What happens when the swarm stream is closed? Maybe send leave event for each peer?\n swarmStream.subscribe(async (swarmEvent: SwarmEventProto) => {\n if (this._joinedTopics.has({ topic, peerId })) {\n log('swarm event', { swarmEvent });\n const event: SwarmEvent = swarmEvent.peerAvailable\n ? {\n topic,\n peerAvailable: {\n ...swarmEvent.peerAvailable,\n peer: { peerKey: PublicKey.from(swarmEvent.peerAvailable.peer).toHex() },\n },\n }\n : {\n topic,\n peerLeft: {\n ...swarmEvent.peerLeft,\n peer: { peerKey: PublicKey.from(swarmEvent.peerLeft!.peer).toHex() },\n },\n };\n await this._onSwarmEvent(event);\n }\n });\n\n // Saving swarm stream.\n this._swarmStreams.set({ topic, peerId }, swarmStream);\n }\n }\n\n private async _reconcileMessageSubscriptions(ctx: Context, client: SignalRPCClient): Promise<void> {\n // Unsubscribe from messages that are no longer needed.\n for (const peerId of this.messageStreams.keys()) {\n // Join desired topics.\n if (this._subscribedMessages.has({ peerId })) {\n continue;\n }\n\n void this.messageStreams.get(peerId)?.close();\n this.messageStreams.delete(peerId);\n }\n\n // Subscribe to messages that are needed.\n for (const { peerId } of this._subscribedMessages.values()) {\n if (this.messageStreams.has(peerId)) {\n continue;\n }\n\n const messageStream = await asyncTimeout(cancelWithContext(ctx, client.receiveMessages(peerId)), 5_000);\n messageStream.subscribe(async (signalMessage: SignalMessage) => {\n if (this._subscribedMessages.has({ peerId })) {\n const message: Message = {\n author: { peerKey: PublicKey.from(signalMessage.author).toHex() },\n recipient: { peerKey: PublicKey.from(signalMessage.recipient).toHex() },\n payload: signalMessage.payload,\n };\n await this._onMessage(message);\n }\n });\n\n // Saving message stream.\n this.messageStreams.set(peerId, messageStream);\n }\n }\n}\n", "//\n// Copyright 2022 DXOS.org\n//\n\nimport WebSocket from 'isomorphic-ws';\n\nimport { TimeoutError, Trigger, scheduleTaskInterval } from '@dxos/async';\nimport { type Any, type Stream } from '@dxos/codec-protobuf';\nimport { Context } from '@dxos/context';\nimport { invariant } from '@dxos/invariant';\nimport { PublicKey } from '@dxos/keys';\nimport { log } from '@dxos/log';\nimport { trace } from '@dxos/protocols';\nimport { schema } from '@dxos/protocols/proto';\nimport { type Signal, type Message as SignalMessage } from '@dxos/protocols/proto/dxos/mesh/signal';\nimport { type ProtoRpcPeer, createProtoRpcPeer } from '@dxos/rpc';\n\nimport { SignalRpcClientMonitor } from './signal-rpc-client-monitor';\n\nconst SIGNAL_KEEPALIVE_INTERVAL = 10000;\n\ninterface Services {\n Signal: Signal;\n}\n\nexport type SignalCallbacks = {\n onConnected?: () => void;\n\n /**\n * Called on disconnect.\n * In case of error, `onError` will be called first and then `onDisconnected`.\n */\n onDisconnected?: () => void;\n\n onError?: (error: Error) => void;\n getMetadata?: () => any;\n};\n\nexport type SignalRPCClientParams = {\n url: string;\n callbacks?: SignalCallbacks;\n};\n\n/**\n * Signal RPC client.\n * TODO(mykola): Delete.\n * @deprecated\n */\nexport class SignalRPCClient {\n private readonly _socket: WebSocket;\n private readonly _rpc: ProtoRpcPeer<Services>;\n private readonly _connectTrigger = new Trigger();\n\n private _keepaliveCtx?: Context;\n\n private _closed = false;\n\n private readonly _url: string;\n private readonly _callbacks: SignalCallbacks;\n private readonly _closeComplete = new Trigger();\n\n private readonly _monitor = new SignalRpcClientMonitor();\n\n constructor({ url, callbacks = {} }: SignalRPCClientParams) {\n const traceId = PublicKey.random().toHex();\n log.trace('dxos.mesh.signal-rpc-client.constructor', trace.begin({ id: traceId }));\n this._url = url;\n this._callbacks = callbacks;\n this._socket = new WebSocket(this._url);\n\n this._rpc = createProtoRpcPeer({\n requested: {\n Signal: schema.getService('dxos.mesh.signal.Signal'),\n },\n noHandshake: true,\n port: {\n send: (msg) => {\n if (this._closed) {\n // Do not send messages after close.\n return;\n }\n try {\n this._socket!.send(msg);\n } catch (err) {\n log.warn('send error', err);\n }\n },\n subscribe: (cb) => {\n this._socket!.onmessage = async (msg: WebSocket.MessageEvent) => {\n if (typeof Blob !== 'undefined' && msg.data instanceof Blob) {\n cb(Buffer.from(await msg.data.arrayBuffer()));\n } else {\n cb(msg.data as any);\n }\n };\n },\n },\n encodingOptions: {\n preserveAny: true,\n },\n });\n\n this._socket.onopen = async () => {\n try {\n await this._rpc!.open();\n if (this._closed) {\n await this._safeCloseRpc();\n return;\n }\n log(`RPC open ${this._url}`);\n this._callbacks.onConnected?.();\n this._connectTrigger.wake();\n this._keepaliveCtx = new Context();\n scheduleTaskInterval(\n this._keepaliveCtx,\n async () => {\n // TODO(nf): use RFC6455 ping/pong once implemented in the browser?\n // TODO(nf): check for pong response from server (once implemented)\n // Current implementation of signal server ignores all text data messages, and does not send a response.\n // However this is enough to detect breakages in the connection as TCP will reset the connection if ACKs are not received.\n this._socket?.send('__ping__');\n },\n SIGNAL_KEEPALIVE_INTERVAL,\n );\n } catch (err: any) {\n this._callbacks.onError?.(err);\n this._socket.close();\n this._closed = true;\n }\n };\n\n this._socket.onclose = async () => {\n log(`Disconnected ${this._url}`);\n this._callbacks.onDisconnected?.();\n this._closeComplete.wake();\n await this.close();\n };\n\n this._socket.onerror = async (event: WebSocket.ErrorEvent) => {\n if (this._closed) {\n this._socket.close();\n return;\n }\n this._closed = true;\n\n this._callbacks.onError?.(event.error ?? new Error(event.message));\n await this._safeCloseRpc();\n\n log.warn(`Socket ${event.type ?? 'unknown'} error`, { message: event.message, url: this._url });\n };\n\n log.trace('dxos.mesh.signal-rpc-client.constructor', trace.end({ id: traceId }));\n }\n\n async close(): Promise<void> {\n if (this._closed) {\n return;\n }\n this._closed = true;\n\n await this._keepaliveCtx?.dispose();\n try {\n await this._safeCloseRpc();\n\n if (this._socket.readyState === WebSocket.OPEN || this._socket.readyState === WebSocket.CONNECTING) {\n // close() only starts the closing handshake.\n this._socket.close();\n }\n\n await this._closeComplete.wait({ timeout: 1_000 });\n } catch (err) {\n const failureReason = err instanceof TimeoutError ? 'timeout' : (err?.constructor?.name ?? 'unknown');\n this._monitor.recordClientCloseFailure({ failureReason });\n }\n }\n\n async join({ topic, peerId }: { topic: PublicKey; peerId: PublicKey }) {\n log('join', { topic, peerId, metadata: this._callbacks?.getMetadata?.() });\n invariant(!this._closed, 'SignalRPCClient is closed');\n await this._connectTrigger.wait();\n const swarmStream = this._rpc.rpc.Signal.join({\n swarm: topic.asUint8Array(),\n peer: peerId.asUint8Array(),\n metadata: this._callbacks?.getMetadata?.(),\n });\n await swarmStream.waitUntilReady();\n return swarmStream;\n }\n\n async receiveMessages(peerId: PublicKey): Promise<Stream<SignalMessage>> {\n log('receiveMessages', { peerId });\n invariant(!this._closed, 'SignalRPCClient is closed');\n await this._connectTrigger.wait();\n const messageStream = this._rpc.rpc.Signal.receiveMessages({\n peer: peerId.asUint8Array(),\n });\n await messageStream.waitUntilReady();\n return messageStream;\n }\n\n async sendMessage({\n author,\n recipient,\n payload,\n }: {\n author: PublicKey;\n recipient: PublicKey;\n payload: Any;\n }): Promise<void> {\n log('sendMessage', { author, recipient, payload, metadata: this._callbacks?.getMetadata?.() });\n invariant(!this._closed, 'SignalRPCClient is closed');\n await this._connectTrigger.wait();\n await this._rpc.rpc.Signal.sendMessage({\n author: author.asUint8Array(),\n recipient: recipient.asUint8Array(),\n payload,\n metadata: this._callbacks?.getMetadata?.(),\n });\n }\n\n private async _safeCloseRpc(): Promise<void> {\n try {\n this._connectTrigger.reset();\n await this._rpc.close();\n } catch (err) {\n log.catch(err);\n }\n }\n}\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { trace } from '@dxos/tracing';\n\nexport class SignalRpcClientMonitor {\n public recordClientCloseFailure(params: { failureReason: string }): void {\n trace.metrics.increment('dxos.mesh.signal.signal-rpc-client.close-failure', 1, {\n tags: {\n reason: params.failureReason,\n },\n });\n }\n}\n", "//\n// Copyright 2022 DXOS.org\n//\n\nimport { type Event } from '@dxos/async';\nimport { type Lifecycle } from '@dxos/context';\nimport { type Peer, type SwarmResponse } from '@dxos/protocols/proto/dxos/edge/messenger';\nimport {\n type JoinRequest,\n type LeaveRequest,\n type Message,\n type QueryRequest,\n type SwarmEvent,\n} from '@dxos/protocols/proto/dxos/edge/signal';\nimport { type SignalState } from '@dxos/protocols/proto/dxos/mesh/signal';\n\nexport type { Message, SwarmEvent };\nexport type PeerInfo = Peer;\nexport const PeerInfoHash = ({ peerKey }: PeerInfo) => peerKey;\n\nexport type SignalStatus = {\n host: string;\n state: SignalState;\n error?: string;\n reconnectIn: number;\n connectionStarted: Date;\n lastStateChange: Date;\n};\n\n/**\n * Message routing interface.\n */\nexport interface SignalMethods {\n /**\n * Emits when other peers join or leave the swarm.\n * @deprecated\n * TODO(mykola): Use swarmState in network-manager instead.\n */\n swarmEvent: Event<SwarmEvent>;\n\n /**\n * Emits when a message is received.\n */\n onMessage: Event<Message>;\n\n /**\n * Emits when the swarm state changes.\n */\n swarmState?: Event<SwarmResponse>;\n\n /**\n * Join topic on signal network, to be discoverable by other peers.\n */\n join: (params: JoinRequest) => Promise<void>;\n\n /**\n * Leave topic on signal network, to stop being discoverable by other peers.\n */\n leave: (params: LeaveRequest) => Promise<void>;\n\n /**\n * Query peers in the swarm without joining it.\n */\n query: (params: QueryRequest) => Promise<SwarmResponse>;\n\n /**\n * Send message to peer.\n */\n sendMessage: (message: Message) => Promise<void>;\n\n /**\n * Start receiving messages from peer.\n * @deprecated\n */\n // TODO(burdon): Return unsubscribe function. Encapsulate callback/routing here.\n subscribeMessages: (peer: PeerInfo) => Promise<void>;\n\n /**\n * Stop receiving messages from peer.\n * @deprecated\n */\n unsubscribeMessages: (peer: PeerInfo) => Promise<void>;\n}\n\n/**\n * Signaling client.\n * TODO(mykola): Delete.\n * @deprecated\n */\nexport interface SignalClientMethods extends SignalMethods, Required<Lifecycle> {\n getStatus(): SignalStatus;\n}\n", "//\n// Copyright 2020 DXOS.org\n//\n\nimport { Event, Trigger } from '@dxos/async';\nimport { type Any } from '@dxos/codec-protobuf';\nimport { Context } from '@dxos/context';\nimport { invariant } from '@dxos/invariant';\nimport { PublicKey } from '@dxos/keys';\nimport { log } from '@dxos/log';\nimport { schema } from '@dxos/protocols/proto';\nimport { type SwarmResponse } from '@dxos/protocols/proto/dxos/edge/messenger';\nimport { type QueryRequest } from '@dxos/protocols/proto/dxos/edge/signal';\nimport { ComplexMap, ComplexSet } from '@dxos/util';\n\nimport { type Message, type PeerInfo, PeerInfoHash, type SignalStatus, type SwarmEvent } from '../signal-methods';\n\nimport { type SignalManager } from './signal-manager';\n\n/**\n * Common signaling context that connects multiple MemorySignalManager instances.\n */\nexport class MemorySignalManagerContext {\n // Swarm messages.\n readonly swarmEvent = new Event<SwarmEvent>();\n\n // Mapping from topic to set of peers.\n readonly swarms = new ComplexMap<PublicKey, ComplexSet<PeerInfo>>(PublicKey.hash);\n\n // Map of connections for each peer for signaling.\n readonly connections = new ComplexMap<PeerInfo, MemorySignalManager>(PeerInfoHash);\n}\n\n/**\n * In memory signal manager for testing.\n */\nexport class MemorySignalManager implements SignalManager {\n readonly statusChanged = new Event<SignalStatus[]>();\n readonly swarmEvent = new Event<SwarmEvent>();\n\n readonly onMessage = new Event<Message>();\n\n /** Will be used to emit SwarmEvents on .open() and .close() */\n private _joinedSwarms = new ComplexSet<{ topic: PublicKey; peer: PeerInfo }>(\n ({ topic, peer }) => topic.toHex() + peer.peerKey,\n );\n\n private _ctx!: Context;\n\n // TODO(dmaretskyi): Replace with callback.\n private readonly _freezeTrigger = new Trigger().wake();\n\n constructor(private readonly _context: MemorySignalManagerContext) {\n this._ctx = new Context();\n\n this._ctx.onDispose(this._context.swarmEvent.on((data) => this.swarmEvent.emit(data)));\n }\n\n async open(): Promise<void> {\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(): Promise<void> {\n if (this._ctx.disposed) {\n return;\n }\n // save copy of joined swarms.\n const joinedSwarmsCopy = new ComplexSet<{ topic: PublicKey; peer: PeerInfo }>(\n ({ topic, peer }) => topic.toHex() + peer.peerKey,\n [...this._joinedSwarms.values()],\n );\n\n await Promise.all([...this._joinedSwarms.values()].map((value) => this.leave(value)));\n\n // assign joined swarms back because .leave() deletes it.\n this._joinedSwarms = joinedSwarmsCopy;\n\n await this._ctx.dispose();\n }\n\n getStatus(): SignalStatus[] {\n return [];\n }\n\n async join({ topic, peer }: { topic: PublicKey; peer: PeerInfo }): Promise<void> {\n invariant(!this._ctx.disposed, 'Closed');\n\n this._joinedSwarms.add({ topic, peer });\n\n if (!this._context.swarms.has(topic)) {\n this._context.swarms.set(topic, new ComplexSet(PeerInfoHash));\n }\n\n this._context.swarms.get(topic)!.add(peer);\n this._context.swarmEvent.emit({\n topic,\n peerAvailable: {\n peer,\n since: new Date(),\n },\n });\n\n // Emitting swarm events for each peer.\n for (const [topic, peers] of this._context.swarms) {\n Array.from(peers).forEach((peer) => {\n this.swarmEvent.emit({\n topic,\n peerAvailable: {\n peer,\n since: new Date(),\n },\n });\n });\n }\n }\n\n async leave({ topic, peer }: { topic: PublicKey; peer: PeerInfo }): Promise<void> {\n invariant(!this._ctx.disposed, 'Closed');\n\n this._joinedSwarms.delete({ topic, peer });\n\n if (!this._context.swarms.has(topic)) {\n this._context.swarms.set(topic, new ComplexSet(PeerInfoHash));\n }\n\n this._context.swarms.get(topic)!.delete(peer);\n\n const swarmEvent: SwarmEvent = {\n topic,\n peerLeft: {\n peer,\n },\n };\n\n this._context.swarmEvent.emit(swarmEvent);\n }\n\n async query(request: QueryRequest): Promise<SwarmResponse> {\n throw new Error('Not implemented');\n }\n\n async sendMessage({\n author,\n recipient,\n payload,\n }: {\n author: PeerInfo;\n recipient: PeerInfo;\n payload: Any;\n }): Promise<void> {\n log('send message', { author, recipient, ...dec(payload) });\n\n invariant(recipient);\n invariant(!this._ctx.disposed, 'Closed');\n\n await this._freezeTrigger.wait();\n\n const remote = this._context.connections.get(recipient);\n if (!remote) {\n log.warn('recipient is not subscribed for messages', { author, recipient });\n return;\n }\n\n if (remote._ctx.disposed) {\n log.warn('recipient is disposed', { author, recipient });\n return;\n }\n\n remote._freezeTrigger\n .wait()\n .then(() => {\n if (remote._ctx.disposed) {\n log.warn('recipient is disposed', { author, recipient });\n return;\n }\n\n log('receive message', { author, recipient, ...dec(payload) });\n\n remote.onMessage.emit({ author, recipient, payload });\n })\n .catch((err) => {\n log.error('error while waiting for freeze', { err });\n });\n }\n\n async subscribeMessages(peerInfo: PeerInfo): Promise<void> {\n log('subscribing', { peerInfo });\n this._context.connections.set(peerInfo, this);\n }\n\n async unsubscribeMessages(peerInfo: PeerInfo): Promise<void> {\n log('unsubscribing', { peerInfo });\n this._context.connections.delete(peerInfo);\n }\n\n freeze(): void {\n this._freezeTrigger.reset();\n }\n\n unfreeze(): void {\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 { LifecycleState, Resource } from '@dxos/context';\nimport { invariant } from '@dxos/invariant';\nimport { PublicKey } from '@dxos/keys';\nimport { log } from '@dxos/log';\nimport { RateLimitExceededError, TimeoutError, trace } from '@dxos/protocols';\nimport { type Runtime } from '@dxos/protocols/proto/dxos/config';\nimport { type SwarmResponse } from '@dxos/protocols/proto/dxos/edge/messenger';\nimport { type JoinRequest, type LeaveRequest, type QueryRequest } from '@dxos/protocols/proto/dxos/edge/signal';\nimport { BitField, safeAwaitAll } from '@dxos/util';\n\nimport { SignalClient } from '../signal-client';\nimport {\n type Message,\n type PeerInfo,\n type SignalClientMethods,\n type SignalMethods,\n type SignalStatus,\n type SwarmEvent,\n} from '../signal-methods';\n\nimport { type SignalManager } from './signal-manager';\nimport { WebsocketSignalManagerMonitor } from './websocket-signal-manager-monitor';\n\nconst MAX_SERVER_FAILURES = 5;\nconst WSS_SIGNAL_SERVER_REBOOT_DELAY = 3_000;\n\n/**\n * Manages connection to multiple Signal Servers over WebSocket\n * TODO(mykola): Delete.\n * @deprecated\n */\nexport class WebsocketSignalManager extends Resource implements SignalManager {\n private readonly _servers = new Map<string, SignalClientMethods>();\n private readonly _monitor = new WebsocketSignalManagerMonitor();\n\n /**\n * Used to avoid logging failed server restarts more than once until the server actually recovers.\n */\n private readonly _failedServersBitfield: Uint8Array;\n\n readonly failureCount = new Map<string, number>();\n readonly statusChanged = new Event<SignalStatus[]>();\n readonly swarmEvent = new Event<SwarmEvent>();\n\n readonly onMessage = new Event<Message>();\n\n private readonly _instanceId = PublicKey.random().toHex();\n\n constructor(\n private readonly _hosts: Runtime.Services.Signal[],\n private readonly _getMetadata?: () => any,\n ) {\n super();\n log('Created WebsocketSignalManager', { hosts: this._hosts });\n for (const host of this._hosts) {\n if (this._servers.has(host.server)) {\n continue;\n }\n\n // TODO(burdon): Create factory to support different variants.\n const server = new SignalClient(host.server, this._getMetadata);\n server.swarmEvent.on((data) => this.swarmEvent.emit(data));\n server.onMessage.on((data) => this.onMessage.emit(data));\n\n server.statusChanged.on(() => this.statusChanged.emit(this.getStatus()));\n\n this._servers.set(host.server, server);\n this.failureCount.set(host.server, 0);\n }\n this._failedServersBitfield = BitField.zeros(this._hosts.length);\n }\n\n protected override async _open(): Promise<void> {\n log('open signal manager', { hosts: this._hosts });\n log.trace('dxos.mesh.websocket-signal-manager.open', trace.begin({ id: this._instanceId }));\n\n await safeAwaitAll(this._servers.values(), (server) => server.open());\n\n log.trace('dxos.mesh.websocket-signal-manager.open', trace.end({ id: this._instanceId }));\n }\n\n protected override async _close(): Promise<void> {\n await safeAwaitAll(this._servers.values(), (server) => server.close());\n }\n\n async restartServer(serverName: string): Promise<void> {\n log('restarting server', { serverName });\n invariant(this._lifecycleState === LifecycleState.OPEN);\n\n const server = this._servers.get(serverName);\n invariant(server, 'server not found');\n\n await server.close();\n await sleep(WSS_SIGNAL_SERVER_REBOOT_DELAY);\n await server.open();\n }\n\n getStatus(): SignalStatus[] {\n return Array.from(this._servers.values()).map((server) => server.getStatus());\n }\n\n @synchronized\n async join({ topic, peer }: JoinRequest): Promise<void> {\n log('join', { topic, peer });\n invariant(this._lifecycleState === LifecycleState.OPEN);\n await this._forEachServer((server) => server.join({ topic, peer }));\n }\n\n @synchronized\n async leave({ topic, peer }: LeaveRequest): Promise<void> {\n log('leaving', { topic, peer });\n invariant(this._lifecycleState === LifecycleState.OPEN);\n await this._forEachServer((server) => server.leave({ topic, peer }));\n }\n\n async query({ topic }: QueryRequest): Promise<SwarmResponse> {\n throw new Error('Not implemented');\n }\n\n async sendMessage({ author, recipient, payload }: Message): Promise<void> {\n log('signal', { recipient });\n invariant(this._lifecycleState === LifecycleState.OPEN);\n\n void this._forEachServer(async (server, serverName, index) => {\n void server\n .sendMessage({ author, recipient, payload })\n .then(() => this._clearServerFailedFlag(serverName, index))\n .catch((err) => {\n if (err instanceof RateLimitExceededError) {\n log.info('WSS rate limit exceeded', { err });\n this._monitor.recordRateLimitExceeded();\n } else if (err instanceof TimeoutError || err.constructor.name === 'TimeoutError') {\n log.info('WSS sendMessage timeout', { err });\n void this.checkServerFailure(serverName, index);\n } else {\n log.warn(`error sending to ${serverName}`, { err });\n void this.checkServerFailure(serverName, index);\n }\n });\n });\n }\n\n @synchronized\n async checkServerFailure(serverName: string, index: number): Promise<void> {\n const failureCount = this.failureCount.get(serverName!) ?? 0;\n const isRestartRequired = failureCount > MAX_SERVER_FAILURES;\n this._monitor.recordServerFailure({ serverName, willRestart: isRestartRequired });\n if (isRestartRequired) {\n if (!BitField.get(this._failedServersBitfield, index)) {\n log.warn('too many failures for ws-server, restarting', { serverName, failureCount });\n BitField.set(this._failedServersBitfield, index, true);\n }\n await this.restartServer(serverName!);\n this.failureCount.set(serverName!, 0);\n return;\n }\n\n this.failureCount.set(serverName!, (this.failureCount.get(serverName!) ?? 0) + 1);\n }\n\n private _clearServerFailedFlag(serverName: string, index: number): void {\n if (BitField.get(this._failedServersBitfield, index)) {\n log.info('server connection restored', { serverName });\n BitField.set(this._failedServersBitfield, index, false);\n this.failureCount.set(serverName!, 0);\n }\n }\n\n async subscribeMessages(peer: PeerInfo): Promise<void> {\n log('subscribed for message stream', { peer });\n invariant(this._lifecycleState === LifecycleState.OPEN);\n\n await this._forEachServer(async (server) => server.subscribeMessages(peer));\n }\n\n async unsubscribeMessages(peer: PeerInfo): Promise<void> {\n log('subscribed for message stream', { peer });\n invariant(this._lifecycleState === LifecycleState.OPEN);\n\n await this._forEachServer(async (server) => server.unsubscribeMessages(peer));\n }\n\n private async _forEachServer<ReturnType>(\n fn: (server: SignalMethods, serverName: string, index: number) => Promise<ReturnType>,\n ): Promise<ReturnType[]> {\n return Promise.all(\n Array.from(this._servers.entries()).map(([serverName, server], idx) => fn(server, serverName, idx)),\n );\n }\n}\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { trace } from '@dxos/tracing';\n\nexport class WebsocketSignalManagerMonitor {\n public recordRateLimitExceeded(): void {\n trace.metrics.increment('dxos.mesh.signal.signal-manager.rate-limit-hit', 1);\n }\n\n public recordServerFailure(params: { serverName: string; willRestart: boolean }): void {\n trace.metrics.increment('dxos.mesh.signal.signal-manager.server-failure', 1, {\n tags: {\n server: params.serverName,\n restarted: params.willRestart,\n },\n });\n }\n}\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { Event, scheduleMicroTask } from '@dxos/async';\nimport { Resource, cancelWithContext } from '@dxos/context';\nimport { type EdgeConnection, EdgeIdentityChangedError, protocol } from '@dxos/edge-client';\nimport { invariant } from '@dxos/invariant';\nimport { PublicKey } from '@dxos/keys';\nimport { log } from '@dxos/log';\nimport { EdgeService } from '@dxos/protocols';\nimport { type buf, bufWkt } from '@dxos/protocols/buf';\nimport {\n type Message as EdgeMessage,\n type PeerSchema,\n SwarmRequest_Action as SwarmRequestAction,\n SwarmRequestSchema,\n SwarmResponseSchema,\n} from '@dxos/protocols/buf/dxos/edge/messenger_pb';\nimport { type SwarmResponse } from '@dxos/protocols/proto/dxos/edge/messenger';\nimport { ComplexMap, ComplexSet } from '@dxos/util';\n\nimport { type Message, type PeerInfo, PeerInfoHash, type SwarmEvent } from '../signal-methods';\n\nimport { type SignalManager } from './signal-manager';\n\nexport class EdgeSignalManager extends Resource implements SignalManager {\n /**\n * @deprecated\n */\n public swarmEvent = new Event<SwarmEvent>();\n public swarmState = new Event<SwarmResponse>();\n public onMessage = new Event<Message>();\n\n /**\n * Swarm key -> { peer: <own state payload>, joinedPeers: <state of swarm> }.\n */\n // TODO(mykola): This class should not contain swarm state joinedPeers. Temporary before network-manager API changes to accept list of peers.\n private readonly _swarmPeers = new ComplexMap<\n PublicKey,\n { lastState?: Uint8Array; joinedPeers: ComplexSet<PeerInfo> }\n >(PublicKey.hash);\n\n private readonly _edgeConnection: EdgeConnection;\n\n constructor({ edgeConnection }: { edgeConnection: EdgeConnection }) {\n super();\n this._edgeConnection = edgeConnection;\n }\n\n protected override async _open(): Promise<void> {\n this._ctx.onDispose(this._edgeConnection.onMessage((message) => this._onMessage(message)));\n this._ctx.onDispose(\n this._edgeConnection.onReconnected(() => {\n scheduleMicroTask(this._ctx, () => this._rejoinAllSwarms());\n }),\n );\n }\n\n /**\n * Warning: PeerInfo is inferred from edgeConnection.\n */\n async join({ topic, peer }: { topic: PublicKey; peer: PeerInfo }): Promise<void> {\n if (!this._matchSelfPeerInfo(peer)) {\n // NOTE: Could only join swarm with the same peer info as the edge connection.\n log.warn('ignoring peer info on join request', {\n peer,\n expected: {\n peerKey: this._edgeConnection.peerKey,\n identityKey: this._edgeConnection.identityKey,\n },\n });\n\n peer.identityKey = this._edgeConnection.identityKey;\n peer.peerKey = this._edgeConnection.peerKey;\n }\n\n this._swarmPeers.set(topic, { lastState: peer.state, joinedPeers: new ComplexSet<PeerInfo>(PeerInfoHash) });\n await this._edgeConnection.send(\n protocol.createMessage(SwarmRequestSchema, {\n serviceId: EdgeService.SWARM,\n source: createMessageSource(topic, peer),\n payload: { action: SwarmRequestAction.JOIN, swarmKeys: [topic.toHex()] },\n }),\n );\n }\n\n async leave({ topic, peer }: { topic: PublicKey; peer: PeerInfo }): Promise<void> {\n this._swarmPeers.delete(topic);\n try {\n await this._edgeConnection.send(\n protocol.createMessage(SwarmRequestSchema, {\n serviceId: EdgeService.SWARM,\n source: createMessageSource(topic, peer),\n payload: { action: SwarmRequestAction.LEAVE, swarmKeys: [topic.toHex()] },\n }),\n );\n } catch (err) {\n if (err instanceof EdgeIdentityChangedError) {\n // Note: On edge identity change, the connection is closed and EDGE will remove us from the swarm.\n // So we should just delete the swarm from _swarmPeers.\n return;\n }\n throw err;\n }\n }\n\n async query({ topic }: { topic: PublicKey }): Promise<SwarmResponse> {\n const response = cancelWithContext(\n this._ctx,\n this.swarmState.waitFor((state) => state.swarmKey === topic.toHex()),\n );\n\n await this._edgeConnection.send(\n protocol.createMessage(SwarmRequestSchema, {\n serviceId: EdgeService.SWARM,\n source: createMessageSource(topic, {\n peerKey: this._edgeConnection.peerKey,\n identityKey: this._edgeConnection.identityKey,\n }),\n payload: { action: SwarmRequestAction.INFO, swarmKeys: [topic.toHex()] },\n }),\n );\n\n return response;\n }\n\n async sendMessage(message: Message): Promise<void> {\n if (!this._matchSelfPeerInfo(message.author)) {\n // NOTE: Could only join swarm with the same peer info as the edge connection.\n log.warn('ignoring author on send request', {\n author: message.author,\n expected: { peerKey: this._edgeConnection.peerKey, identityKey: this._edgeConnection.identityKey },\n });\n }\n\n await this._edgeConnection.send(\n protocol.createMessage(bufWkt.AnySchema, {\n serviceId: EdgeService.SIGNAL,\n source: message.author,\n target: [message.recipient],\n payload: { typeUrl: message.payload.type_url, value: message.payload.value },\n }),\n );\n }\n\n async subscribeMessages(peerInfo: PeerInfo): Promise<void> {\n // No-op.\n }\n\n async unsubscribeMessages(peerInfo: PeerInfo): Promise<void> {\n // No-op.\n }\n\n private _onMessage(message: EdgeMessage): void {\n switch (message.serviceId) {\n case EdgeService.SWARM: {\n this._processSwarmResponse(message);\n break;\n }\n case EdgeService.SIGNAL: {\n this._processMessage(message);\n }\n }\n }\n\n private _processSwarmResponse(message: EdgeMessage): void {\n invariant(protocol.getPayloadType(message) === SwarmResponseSchema.typeName, 'Wrong payload type');\n const payload = protocol.getPayload(message, SwarmResponseSchema);\n this.swarmState.emit(payload);\n const topic = PublicKey.from(payload.swarmKey);\n if (!this._swarmPeers.has(topic)) {\n return;\n }\n\n const { joinedPeers: oldPeers } = this._swarmPeers.get(topic)!;\n const timestamp = message.timestamp ? new Date(Date.parse(message.timestamp)) : new Date();\n const newPeers = new ComplexSet<PeerInfo>(PeerInfoHash, payload.peers);\n\n // Emit new available peers in the swarm.\n for (const peer of newPeers) {\n if (oldPeers.has(peer)) {\n continue;\n }\n this.swarmEvent.emit({\n topic,\n peerAvailable: { peer, since: timestamp },\n });\n }\n\n // Emit peer that left the swarm.\n for (const peer of oldPeers) {\n if (newPeers.has(peer)) {\n continue;\n }\n this.swarmEvent.emit({\n topic,\n peerLeft: { peer },\n });\n }\n\n this._swarmPeers.get(topic)!.joinedPeers = newPeers;\n }\n\n private _processMessage(message: EdgeMessage): void {\n invariant(protocol.getPayloadType(message) === bufWkt.AnySchema.typeName, 'Wrong payload type');\n const payload = protocol.getPayload(message, bufWkt.AnySchema);\n invariant(message.source, 'source is missing');\n invariant(message.target, 'target is missing');\n invariant(message.target.length === 1, 'target should have exactly one item');\n\n this.onMessage.emit({\n author: message.source,\n recipient: message.target[0],\n payload: {\n type_url: payload.typeUrl,\n value: payload.value,\n },\n });\n }\n\n private _matchSelfPeerInfo(peer: PeerInfo): boolean {\n return (\n peer && (peer.peerKey === this._edgeConnection.peerKey || peer.identityKey === this._edgeConnection.identityKey)\n );\n }\n\n private async _rejoinAllSwarms(): Promise<void> {\n log('rejoin swarms', { swarms: Array.from(this._swarmPeers.keys()) });\n for (const [topic, { lastState }] of this._swarmPeers.entries()) {\n await this.join({\n topic,\n peer: {\n peerKey: this._edgeConnection.peerKey,\n identityKey: this._edgeConnection.identityKey,\n state: lastState,\n },\n });\n }\n }\n}\n\nconst createMessageSource = (topic: PublicKey, peerInfo: PeerInfo): buf.MessageInitShape<typeof PeerSchema> => {\n return {\n swarmKey: topic.toHex(),\n ...peerInfo,\n };\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { invariant } from '@dxos/invariant';\nimport { log } from '@dxos/log';\nimport { type DevicesService, type IdentityService } from '@dxos/protocols/proto/dxos/client/services';\nimport { DeviceKind } from '@dxos/protocols/proto/dxos/client/services';\n\nexport const setIdentityTags = ({\n identityService,\n devicesService,\n setTag,\n}: {\n identityService: IdentityService;\n devicesService: DevicesService;\n setTag: (k: string, v: string) => void;\n}) => {\n identityService.queryIdentity().subscribe((idqr) => {\n if (!idqr?.identity?.identityKey) {\n log('empty response from identity service', { idqr });\n return;\n }\n\n setTag('identityKey', idqr.identity.identityKey.truncate());\n });\n\n devicesService.queryDevices().subscribe((dqr) => {\n if (!dqr || !dqr.devices || dqr.devices.length === 0) {\n log('empty response from device service', { device: dqr });\n return;\n }\n invariant(dqr, 'empty response from device service');\n\n const thisDevice = dqr.devices.find((device) => device.kind === DeviceKind.CURRENT);\n if (!thisDevice) {\n log('no current device', { device: dqr });\n return;\n }\n setTag('deviceKey', thisDevice.deviceKey.truncate());\n });\n};\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["TimeoutError", "scheduleExponentialBackoffTaskInterval", "scheduleTask", "scheduleTaskInterval", "Context", "invariant", "PublicKey", "log", "ProtocolTimeoutError", "trace", "schema", "ComplexMap", "ComplexSet", "trace", "MessengerMonitor", "recordMessageAckFailed", "trace", "metrics", "increment", "recordReliableMessage", "params", "tags", "success", "sent", "attempts", "sendAttempts", "MESSAGE_TIMEOUT", "ReliablePayload", "schema", "getCodecForType", "Acknowledgement", "RECEIVED_MESSAGES_GC_INTERVAL", "Messenger", "open", "_closed", "traceId", "PublicKey", "random", "toHex", "log", "trace", "begin", "id", "_ctx", "Context", "onError", "err", "catch", "onDispose", "_signalManager", "onMessage", "on", "message", "from", "author", "_handleMessage", "scheduleTaskInterval", "_performGc", "end", "close", "dispose", "sendMessage", "recipient", "payload", "invariant", "messageContext", "derive", "reliablePayload", "messageId", "_onAckCallbacks", "has", "messageReceived", "timeoutHit", "sendAttempts", "promise", "Promise", "resolve", "reject", "scheduleExponentialBackoffTaskInterval", "_encodeAndSend", "_retryDelay", "scheduleTask", "delete", "ProtocolTimeoutError", "TimeoutError", "MESSAGE_TIMEOUT", "_monitor", "recordReliableMessage", "sent", "set", "listen", "peer", "payloadType", "subscribeMessages", "listeners", "peerKey", "_defaultListeners", "get", "Set", "_listeners", "peerId", "add", "unsubscribe", "type_url", "value", "encode", "preserveAny", "_handleReliablePayload", "_handleAcknowledgement", "decode", "_sendAcknowledgement", "recordMessageAckFailed", "_receivedMessages", "_callListeners", "to", "defaultListenerMap", "listener", "listenerMap", "start", "performance", "now", "key", "_toClear", "keys", "clear", "elapsed", "warn", "signalManager", "retryDelay", "MessengerMonitor", "ComplexMap", "Map", "hash", "ComplexSet", "DeferredTask", "Event", "Trigger", "scheduleTask", "scheduleTaskInterval", "sleep", "Resource", "cancelWithContext", "invariant", "PublicKey", "log", "trace", "SignalState", "trace", "SignalClientMonitor", "getRecordedTimestamps", "connectionStarted", "_connectionStarted", "lastStateChange", "_lastStateChange", "recordStateChangeTime", "Date", "recordConnectionStartTime", "recordReconnect", "params", "_performance", "reconnectCounter", "trace", "metrics", "increment", "tags", "success", "recordJoin", "joinCounter", "recordLeave", "leaveCounter", "recordMessageReceived", "message", "receivedMessages", "createIdentityTags", "distribution", "getByteCount", "recordMessageSending", "sendMessage", "sentMessages", "reqStart", "now", "reqDuration", "err", "recordStreamCloseErrors", "count", "recordReconciliation", "_define_property", "author", "peerKey", "length", "recipient", "payload", "type_url", "value", "peer", "Event", "asyncTimeout", "cancelWithContext", "PublicKey", "log", "ComplexMap", "ComplexSet", "safeAwaitAll", "SignalLocalState", "safeCloseStreams", "streams", "_swarmStreams", "values", "concat", "messageStreams", "clear", "failureCount", "s", "close", "length", "join", "topic", "peerId", "_joinedTopics", "add", "leave", "get", "delete", "subscribeMessages", "_subscribedMessages", "unsubscribeMessages", "reconcile", "ctx", "client", "_reconcileSwarmSubscriptions", "_reconcileMessageSubscriptions", "reconciled", "emit", "keys", "has", "swarmStream", "subscribe", "swarmEvent", "event", "peerAvailable", "peer", "peerKey", "from", "toHex", "peerLeft", "_onSwarmEvent", "set", "messageStream", "receiveMessages", "signalMessage", "message", "author", "recipient", "payload", "_onMessage", "_define_property", "key", "WebSocket", "TimeoutError", "Trigger", "scheduleTaskInterval", "Context", "invariant", "PublicKey", "log", "trace", "schema", "createProtoRpcPeer", "trace", "SignalRpcClientMonitor", "recordClientCloseFailure", "params", "trace", "metrics", "increment", "tags", "reason", "failureReason", "SIGNAL_KEEPALIVE_INTERVAL", "SignalRPCClient", "close", "_closed", "_keepaliveCtx", "dispose", "_safeCloseRpc", "_socket", "readyState", "WebSocket", "OPEN", "CONNECTING", "_closeComplete", "wait", "timeout", "err", "failureReason", "TimeoutError", "name", "_monitor", "recordClientCloseFailure", "join", "topic", "peerId", "log", "metadata", "_callbacks", "getMetadata", "invariant", "_connectTrigger", "swarmStream", "_rpc", "rpc", "Signal", "swarm", "asUint8Array", "peer", "waitUntilReady", "receiveMessages", "messageStream", "sendMessage", "author", "recipient", "payload", "reset", "catch", "url", "callbacks", "_define_property", "Trigger", "_url", "SignalRpcClientMonitor", "traceId", "PublicKey", "random", "toHex", "trace", "begin", "id", "createProtoRpcPeer", "requested", "schema", "getService", "noHandshake", "port", "send", "msg", "warn", "subscribe", "cb", "onmessage", "Blob", "data", "Buffer", "from", "arrayBuffer", "encodingOptions", "preserveAny", "onopen", "open", "onConnected", "wake", "Context", "scheduleTaskInterval", "onError", "onclose", "onDisconnected", "onerror", "event", "error", "Error", "message", "type", "end", "DEFAULT_RECONNECT_TIMEOUT", "MAX_RECONNECT_TIMEOUT", "ERROR_RECONCILE_DELAY", "RECONCILE_INTERVAL", "SignalClient", "Resource", "_open", "log", "trace", "begin", "id", "_instanceId", "SignalState", "CONNECTED", "CONNECTING", "includes", "_state", "_setState", "_reconcileTask", "DeferredTask", "_ctx", "cancelWithContext", "_connectionCtx", "_clientReady", "wait", "timeout", "invariant", "localState", "reconcile", "_client", "_monitor", "recordReconciliation", "success", "_lastReconciliationFailed", "err", "scheduleTaskInterval", "schedule", "_reconnectTask", "_reconnect", "recordReconnect", "_createClient", "end", "_catch", "CLOSED", "disposed", "warn", "_scheduleReconcileAfterError", "_close", "_safeResetClient", "getStatus", "host", "_host", "state", "error", "_lastError", "message", "reconnectIn", "_reconnectAfter", "getRecordedTimestamps", "join", "args", "topic", "peerId", "peer", "peerKey", "recordJoin", "PublicKey", "from", "leave", "recordLeave", "query", "params", "Error", "sendMessage", "msg", "recordMessageSending", "author", "recipient", "payload", "subscribeMessages", "unsubscribeMessages", "scheduleTask", "recordConnectionStartTime", "derive", "onDispose", "failureCount", "safeCloseStreams", "recordStreamCloseErrors", "client", "SignalRPCClient", "url", "callbacks", "onConnected", "_onConnected", "onDisconnected", "ERROR", "DISCONNECTED", "_onDisconnected", "onError", "getMetadata", "_getMetadata", "undefined", "RECONNECTING", "info", "sleep", "wake", "options", "_updateReconnectTimeout", "newState", "recordStateChangeTime", "status", "statusChanged", "emit", "Math", "min", "dispose", "reset", "close", "catch", "_define_property", "onMessage", "swarmEvent", "SignalClientMonitor", "Trigger", "random", "toHex", "Event", "startsWith", "SignalLocalState", "recordMessageReceived", "event", "PeerInfoHash", "peerKey", "Event", "Trigger", "Context", "invariant", "PublicKey", "log", "schema", "ComplexMap", "ComplexSet", "MemorySignalManagerContext", "_define_property", "swarmEvent", "Event", "swarms", "ComplexMap", "PublicKey", "hash", "connections", "PeerInfoHash", "MemorySignalManager", "open", "_ctx", "disposed", "Context", "onDispose", "_context", "on", "data", "emit", "Promise", "all", "_joinedSwarms", "values", "map", "value", "join", "close", "joinedSwarmsCopy", "ComplexSet", "topic", "peer", "toHex", "peerKey", "leave", "dispose", "getStatus", "invariant", "add", "has", "set", "get", "peerAvailable", "since", "Date", "peers", "Array", "from", "forEach", "delete", "peerLeft", "query", "request", "Error", "sendMessage", "author", "recipient", "payload", "log", "dec", "_freezeTrigger", "wait", "remote", "warn", "then", "onMessage", "catch", "err", "error", "subscribeMessages", "peerInfo", "unsubscribeMessages", "freeze", "reset", "unfreeze", "wake", "statusChanged", "Trigger", "type_url", "endsWith", "relPayload", "schema", "getCodecForType", "decode", "Object", "keys", "sessionId", "Event", "sleep", "synchronized", "LifecycleState", "Resource", "invariant", "PublicKey", "log", "RateLimitExceededError", "TimeoutError", "trace", "BitField", "safeAwaitAll", "trace", "WebsocketSignalManagerMonitor", "recordRateLimitExceeded", "trace", "metrics", "increment", "recordServerFailure", "params", "tags", "server", "serverName", "restarted", "willRestart", "MAX_SERVER_FAILURES", "WSS_SIGNAL_SERVER_REBOOT_DELAY", "WebsocketSignalManager", "Resource", "_open", "log", "hosts", "_hosts", "trace", "begin", "id", "_instanceId", "safeAwaitAll", "_servers", "values", "server", "open", "end", "_close", "close", "restartServer", "serverName", "invariant", "_lifecycleState", "LifecycleState", "OPEN", "get", "sleep", "getStatus", "Array", "from", "map", "join", "topic", "peer", "_forEachServer", "leave", "query", "Error", "sendMessage", "author", "recipient", "payload", "index", "then", "_clearServerFailedFlag", "catch", "err", "RateLimitExceededError", "info", "_monitor", "recordRateLimitExceeded", "TimeoutError", "name", "checkServerFailure", "warn", "failureCount", "isRestartRequired", "recordServerFailure", "willRestart", "BitField", "_failedServersBitfield", "set", "subscribeMessages", "unsubscribeMessages", "fn", "Promise", "all", "entries", "idx", "_getMetadata", "_define_property", "statusChanged", "swarmEvent", "onMessage", "Map", "WebsocketSignalManagerMonitor", "Event", "PublicKey", "random", "toHex", "host", "has", "SignalClient", "on", "data", "emit", "zeros", "length", "Event", "scheduleMicroTask", "Resource", "cancelWithContext", "EdgeIdentityChangedError", "protocol", "invariant", "PublicKey", "log", "EdgeService", "bufWkt", "SwarmRequest_Action", "SwarmRequestAction", "SwarmRequestSchema", "SwarmResponseSchema", "ComplexMap", "ComplexSet", "EdgeSignalManager", "Resource", "_open", "_ctx", "onDispose", "_edgeConnection", "onMessage", "message", "_onMessage", "onReconnected", "scheduleMicroTask", "_rejoinAllSwarms", "join", "topic", "peer", "_matchSelfPeerInfo", "log", "warn", "expected", "peerKey", "identityKey", "_swarmPeers", "set", "lastState", "state", "joinedPeers", "ComplexSet", "PeerInfoHash", "send", "protocol", "createMessage", "SwarmRequestSchema", "serviceId", "EdgeService", "SWARM", "source", "createMessageSource", "payload", "action", "SwarmRequestAction", "JOIN", "swarmKeys", "toHex", "leave", "delete", "LEAVE", "err", "EdgeIdentityChangedError", "query", "response", "cancelWithContext", "swarmState", "waitFor", "swarmKey", "INFO", "sendMessage", "author", "bufWkt", "AnySchema", "SIGNAL", "target", "recipient", "typeUrl", "type_url", "value", "subscribeMessages", "peerInfo", "unsubscribeMessages", "_processSwarmResponse", "_processMessage", "invariant", "getPayloadType", "SwarmResponseSchema", "typeName", "getPayload", "emit", "PublicKey", "from", "has", "oldPeers", "get", "timestamp", "Date", "parse", "newPeers", "peers", "swarmEvent", "peerAvailable", "since", "peerLeft", "length", "swarms", "Array", "keys", "entries", "edgeConnection", "_define_property", "Event", "ComplexMap", "hash", "invariant", "log", "DeviceKind", "setIdentityTags", "identityService", "devicesService", "setTag", "queryIdentity", "subscribe", "idqr", "identity", "identityKey", "truncate", "queryDevices", "dqr", "devices", "length", "device", "thisDevice", "find", "kind", "CURRENT", "deviceKey"]
|
|
5
|
+
"mappings": ";;;AAIA,SAASA,cAAcC,wCAAwCC,cAAcC,4BAA4B;AAEzG,SAASC,eAAe;AACxB,SAASC,iBAAiB;AAC1B,SAASC,iBAAiB;AAC1B,SAASC,WAAW;AACpB,SAASP,gBAAgBQ,sBAAsBC,SAAAA,cAAa;AAC5D,SAASC,cAAc;AAEvB,SAASC,YAAYC,kBAAkB;;;ACTvC,SAASC,aAAa;AAEf,IAAMC,mBAAN,MAAMA;EACJC,yBAA+B;AACpCC,UAAMC,QAAQC,UAAU,yCAAyC,CAAA;EACnE;EAEOC,sBAAsBC,QAAuD;AAClFJ,UAAMC,QAAQC,UAAU,4CAA4C,GAAG;MACrEG,MAAM;QACJC,SAASF,OAAOG;QAChBC,UAAUJ,OAAOK;MACnB;IACF,CAAA;EACF;AACF;;;ACZO,IAAMC,kBAAkB;;;;AFoB/B,IAAMC,kBAAkBC,OAAOC,gBAAgB,qCAAA;AAC/C,IAAMC,kBAAkBF,OAAOC,gBAAgB,qCAAA;AAE/C,IAAME,gCAAgC;AAK/B,IAAMC,YAAN,MAAMA;EACMC,WAAW,IAAIC,iBAAAA;EACfC;;EAEAC,aAAa,IAAIC,WAChC,CAAC,EAAEC,QAAQC,YAAW,MAAOD,SAASC,WAAAA;;EAIvBC,oBAAoB,oBAAIC,IAAAA;EAExBC,kBAAkB,IAAIL,WAAkCM,UAAUC,IAAI;EAEtEC,oBAAoB,IAAIC,WAAsBH,UAAUC,IAAI;;;;EAK5DG,WAAW,IAAID,WAAsBH,UAAUC,IAAI;EAE5DI;EACAC,UAAU;EACDC;EAEjB,YAAY,EAAEC,eAAeC,aAAa,IAAI,GAAsB;AAClE,SAAKjB,iBAAiBgB;AACtB,SAAKD,cAAcE;AAEnB,SAAKC,KAAI;EACX;EAEAA,OAAa;AACX,QAAI,CAAC,KAAKJ,SAAS;AACjB;IACF;AACA,UAAMK,UAAUX,UAAUY,OAAM,EAAGC,MAAK;AACxCC,QAAIC,MAAM,4BAA4BA,OAAMC,MAAM;MAAEC,IAAIN;IAAQ,CAAA,GAAA;;;;;;AAChE,SAAKN,OAAO,IAAIa,QAAQ;MACtBC,SAAS,CAACC,QAAQN,IAAIO,MAAMD,KAAAA,QAAAA;;;;;;IAC9B,GAAA;;;;AACA,SAAKf,KAAKiB,UACR,KAAK9B,eAAe+B,UAAUC,GAAG,OAAOC,YAAAA;AACtCX,UAAI,oBAAoB;QAAEY,MAAMD,QAAQE;MAAO,GAAA;;;;;;AAC/C,YAAM,KAAKC,eAAeH,OAAAA;IAC5B,CAAA,CAAA;AAIFI,yBACE,KAAKxB,MACL,YAAA;AACE,WAAKyB,WAAU;IACjB,GACA1C,6BAAAA;AAGF,SAAKkB,UAAU;AACfQ,QAAIC,MAAM,4BAA4BA,OAAMgB,IAAI;MAAEd,IAAIN;IAAQ,CAAA,GAAA;;;;;;EAChE;EAEA,MAAMqB,QAAuB;AAC3B,QAAI,KAAK1B,SAAS;AAChB;IACF;AACA,SAAKA,UAAU;AACf,UAAM,KAAKD,KAAK4B,QAAO;EACzB;EAEA,MAAMC,YAAY,EAAEP,QAAQQ,WAAWC,QAAO,GAA4B;AACxEC,cAAU,CAAC,KAAK/B,SAAS,UAAA;;;;;;;;;AACzB,UAAMgC,iBAAiB,KAAKjC,KAAKkC,OAAM;AAEvC,UAAMC,kBAAmC;MACvCC,WAAWzC,UAAUY,OAAM;MAC3BwB;IACF;AACAC,cAAU,CAAC,KAAKtC,gBAAgB2C,IAAIF,gBAAgBC,SAAS,GAAA,QAAA;;;;;;;;;AAC7D3B,QAAI,gBAAgB;MAAE2B,WAAWD,gBAAgBC;MAAWd;MAAQQ;IAAU,GAAA;;;;;;AAE9E,QAAIQ;AACJ,QAAIC;AACJ,QAAIC,eAAe;AAEnB,UAAMC,UAAU,IAAIC,QAAc,CAACC,SAASC,WAAAA;AAC1CN,wBAAkBK;AAClBJ,mBAAaK;IACf,CAAA;AAGAC,2CACEZ,gBACA,YAAA;AACExB,UAAI,oBAAoB;QAAE2B,WAAWD,gBAAgBC;MAAU,GAAA;;;;;;AAC/DI;AACA,YAAM,KAAKM,eAAe;QAAExB;QAAQQ;QAAWK;MAAgB,CAAA,EAAGnB,MAAM,CAACD,QACvEN,IAAI,0BAA0B;QAAEM;MAAI,GAAA;;;;;;IAExC,GACA,KAAKb,WAAW;AAGlB6C,iBACEd,gBACA,MAAA;AACExB,UAAI,yBAAyB;QAAE2B,WAAWD,gBAAgBC;MAAU,GAAA;;;;;;AACpE,WAAK1C,gBAAgBsD,OAAOb,gBAAgBC,SAAS;AACrDG,iBACE,IAAIU,qBACF,mCACA,IAAIC,aAAaC,iBAAiB,uBAAA,CAAA,CAAA;AAGtC,WAAKlB,eAAeL,QAAO;AAC3B,WAAK3C,SAASmE,sBAAsB;QAAEZ;QAAca,MAAM;MAAM,CAAA;IAClE,GACAF,eAAAA;AAGF,SAAKzD,gBAAgB4D,IAAInB,gBAAgBC,WAAW,MAAA;AAClDE,sBAAAA;AACA,WAAK5C,gBAAgBsD,OAAOb,gBAAgBC,SAAS;AACrD,WAAKH,eAAeL,QAAO;AAC3B,WAAK3C,SAASmE,sBAAsB;QAAEZ;QAAca,MAAM;MAAK,CAAA;IACjE,CAAA;AAEA,UAAM,KAAKP,eAAe;MAAExB;MAAQQ;MAAWK;IAAgB,CAAA;AAC/D,WAAOM;EACT;;;;;EAMA,MAAMc,OAAO,EACXC,MACAjE,aACA2B,UAAS,GAKkB;AAC3Bc,cAAU,CAAC,KAAK/B,SAAS,UAAA;;;;;;;;;AAEzB,UAAM,KAAKd,eAAesE,kBAAkBD,IAAAA;AAC5C,QAAIE;AACJ1B,cAAUwB,KAAKG,SAAS,wBAAA;;;;;;;;;AAExB,QAAI,CAACpE,aAAa;AAChBmE,kBAAY,KAAKlE,kBAAkBoE,IAAIJ,KAAKG,OAAO;AACnD,UAAI,CAACD,WAAW;AACdA,oBAAY,oBAAIG,IAAAA;AAChB,aAAKrE,kBAAkB8D,IAAIE,KAAKG,SAASD,SAAAA;MAC3C;IACF,OAAO;AACLA,kBAAY,KAAKtE,WAAWwE,IAAI;QAAEtE,QAAQkE,KAAKG;QAASpE;MAAY,CAAA;AACpE,UAAI,CAACmE,WAAW;AACdA,oBAAY,oBAAIG,IAAAA;AAChB,aAAKzE,WAAWkE,IAAI;UAAEhE,QAAQkE,KAAKG;UAASpE;QAAY,GAAGmE,SAAAA;MAC7D;IACF;AAEAA,cAAUI,IAAI5C,SAAAA;AAEd,WAAO;MACL6C,aAAa,YAAA;AACXL,kBAAWV,OAAO9B,SAAAA;MACpB;IACF;EACF;EAEA,MAAc4B,eAAe,EAC3BxB,QACAQ,WACAK,gBAAe,GAKC;AAChB,UAAM,KAAKhD,eAAe0C,YAAY;MACpCP;MACAQ;MACAC,SAAS;QACPiC,UAAU;QACVC,OAAOtF,gBAAgBuF,OAAO/B,iBAAiB;UAAEgC,aAAa;QAAK,CAAA;MACrE;IACF,CAAA;EACF;EAEA,MAAc5C,eAAeH,SAAiC;AAC5D,YAAQA,QAAQW,QAAQiC,UAAQ;MAC9B,KAAK,uCAAuC;AAC1C,cAAM,KAAKI,uBAAuBhD,OAAAA;AAClC;MACF;MACA,KAAK,uCAAuC;AAC1C,cAAM,KAAKiD,uBAAuB;UAAEtC,SAASX,QAAQW;QAAQ,CAAA;AAC7D;MACF;IACF;EACF;EAEA,MAAcqC,uBAAuB,EAAE9C,QAAQQ,WAAWC,QAAO,GAA4B;AAC3FC,cAAUD,QAAQiC,aAAa,uCAAA,QAAA;;;;;;;;;AAC/B,UAAM7B,kBAAmCxD,gBAAgB2F,OAAOvC,QAAQkC,OAAO;MAAEE,aAAa;IAAK,CAAA;AAEnG1D,QAAI,oBAAoB;MAAE2B,WAAWD,gBAAgBC;IAAU,GAAA;;;;;;AAE/D,QAAI;AACF,YAAM,KAAKmC,qBAAqB;QAC9BjD;QACAQ;QACAM,WAAWD,gBAAgBC;MAC7B,CAAA;IACF,SAASrB,KAAK;AACZ,WAAK9B,SAASuF,uBAAsB;AACpC,YAAMzD;IACR;AAGA,QAAI,KAAKlB,kBAAkBwC,IAAIF,gBAAgBC,SAAS,GAAI;AAC1D;IACF;AAEA,SAAKvC,kBAAkBiE,IAAI3B,gBAAgBC,SAAS;AAEpD,UAAM,KAAKqC,eAAe;MACxBnD;MACAQ;MACAC,SAASI,gBAAgBJ;IAC3B,CAAA;EACF;EAEA,MAAcsC,uBAAuB,EAAEtC,QAAO,GAAqC;AACjFC,cAAUD,QAAQiC,aAAa,uCAAA,QAAA;;;;;;;;;AAC/B,SAAKtE,gBAAgBkE,IAAI9E,gBAAgBwF,OAAOvC,QAAQkC,KAAK,EAAE7B,SAAS,IAAA;EAC1E;EAEA,MAAcmC,qBAAqB,EACjCjD,QACAQ,WACAM,UAAS,GAKO;AAChB3B,QAAI,eAAe;MAAE2B;MAAWf,MAAMS;MAAW4C,IAAIpD;IAAO,GAAA;;;;;;AAE5D,UAAM,KAAKnC,eAAe0C,YAAY;MACpCP,QAAQQ;MACRA,WAAWR;MACXS,SAAS;QACPiC,UAAU;QACVC,OAAOnF,gBAAgBoF,OAAO;UAAE9B;QAAU,CAAA;MAC5C;IACF,CAAA;EACF;EAEA,MAAcqC,eAAerD,SAAiC;AAC5D;AACEY,gBAAUZ,QAAQU,UAAU6B,SAAS,wBAAA;;;;;;;;;AACrC,YAAMgB,qBAAqB,KAAKnF,kBAAkBoE,IAAIxC,QAAQU,UAAU6B,OAAO;AAC/E,UAAIgB,oBAAoB;AACtB,mBAAWC,YAAYD,oBAAoB;AACzC,gBAAMC,SAASxD,OAAAA;QACjB;MACF;IACF;AAEA;AACE,YAAMyD,cAAc,KAAKzF,WAAWwE,IAAI;QACtCtE,QAAQ8B,QAAQU,UAAU6B;QAC1BpE,aAAa6B,QAAQW,QAAQiC;MAC/B,CAAA;AACA,UAAIa,aAAa;AACf,mBAAWD,YAAYC,aAAa;AAClC,gBAAMD,SAASxD,OAAAA;QACjB;MACF;IACF;EACF;EAEQK,aAAmB;AACzB,UAAMqD,QAAQC,YAAYC,IAAG;AAE7B,eAAWC,OAAO,KAAKlF,SAASmF,KAAI,GAAI;AACtC,WAAKrF,kBAAkBmD,OAAOiC,GAAAA;IAChC;AACA,SAAKlF,SAASoF,MAAK;AACnB,eAAWF,OAAO,KAAKpF,kBAAkBqF,KAAI,GAAI;AAC/C,WAAKnF,SAAS+D,IAAImB,GAAAA;IACpB;AAEA,UAAMG,UAAUL,YAAYC,IAAG,IAAKF;AACpC,QAAIM,UAAU,KAAK;AACjB3E,UAAI4E,KAAK,oBAAoB;QAAED;MAAQ,GAAA;;;;;;IACzC;EACF;AACF;;;AG3UA,SAASE,cAAcC,SAAAA,QAAOC,WAAAA,UAASC,gBAAAA,eAAcC,wBAAAA,uBAAsBC,aAAa;AACxF,SAAuBC,UAAUC,qBAAAA,0BAAyB;AAC1D,SAASC,aAAAA,kBAAiB;AAC1B,SAASC,aAAAA,kBAAiB;AAC1B,SAASC,OAAAA,YAAW;AACpB,SAASC,SAAAA,cAAa;AAGtB,SAASC,mBAAmB;;;ACR5B,SAASC,SAAAA,cAAa;AAIf,IAAMC,sBAAN,MAAMA;EACMC,eAAe;IAC9BC,cAAc;IACdC,kBAAkB;IAClBC,kBAAkB;IAClBC,aAAa;IACbC,cAAc;EAChB;;;;EAKQC,qBAAqB,oBAAIC,KAAAA;;;;EAIzBC,mBAAmB,oBAAID,KAAAA;EAExBE,wBAA4E;AACjF,WAAO;MACLC,mBAAmB,KAAKJ;MACxBK,iBAAiB,KAAKH;IACxB;EACF;EAEOI,wBAA8B;AACnC,SAAKJ,mBAAmB,oBAAID,KAAAA;EAC9B;EAEOM,4BAAkC;AACvC,SAAKP,qBAAqB,oBAAIC,KAAAA;EAChC;EAEOO,gBAAgBC,QAAoC;AACzD,SAAKf,aAAaG;AAClBa,IAAAA,OAAMC,QAAQC,UAAU,4CAA4C,GAAG;MACrEC,MAAM;QACJC,SAASL,OAAOK;MAClB;IACF,CAAA;EACF;EAEOC,aAAmB;AACxB,SAAKrB,aAAaI;EACpB;EAEOkB,cAAoB;AACzB,SAAKtB,aAAaK;EACpB;EAEOkB,sBAAsBC,SAAwB;AACnD,SAAKxB,aAAaE;AAClBc,IAAAA,OAAMC,QAAQC,UAAU,iDAAiD,GAAG;MAC1EC,MAAMM,mBAAmBD,OAAAA;IAC3B,CAAA;AACAR,IAAAA,OAAMC,QAAQS,aAAa,2CAA2CC,aAAaH,OAAAA,GAAU;MAC3FL,MAAMM,mBAAmBD,OAAAA;IAC3B,CAAA;EACF;EAEA,MAAaI,qBAAqBJ,SAAkBK,aAAiD;AACnG,SAAK7B,aAAaC;AAClB,UAAMkB,OAAOM,mBAAmBD,OAAAA;AAChC,QAAIJ,UAAU;AACd,QAAI;AACF,YAAMU,WAAWvB,KAAKwB,IAAG;AACzB,YAAMF,YAAAA;AACN,YAAMG,cAAczB,KAAKwB,IAAG,IAAKD;AACjCd,MAAAA,OAAMC,QAAQS,aAAa,gDAAgDM,aAAa;QAAEb;MAAK,CAAA;AAC/FH,MAAAA,OAAMC,QAAQS,aAAa,4CAA4CC,aAAaH,OAAAA,GAAU;QAAEL;MAAK,CAAA;IACvG,SAASc,KAAK;AACZb,gBAAU;IACZ;AACAJ,IAAAA,OAAMC,QAAQC,UAAU,6CAA6C,GAAG;MACtEC,MAAM;QAAE,GAAGA;QAAMC;MAAQ;IAC3B,CAAA;EACF;EAEOc,wBAAwBC,OAAqB;AAClDnB,IAAAA,OAAMC,QAAQC,UAAU,sDAAsDiB,KAAAA;EAChF;EAEOC,qBAAqBrB,QAAoC;AAC9DC,IAAAA,OAAMC,QAAQC,UAAU,iDAAiD,GAAG;MAC1EC,MAAM;QACJC,SAASL,OAAOK;MAClB;IACF,CAAA;EACF;AACF;AAEA,IAAMO,eAAe,CAACH,YAAAA;AACpB,SACEA,QAAQa,OAAOC,QAAQC,SACvBf,QAAQgB,UAAUF,QAAQC,SAC1Bf,QAAQiB,QAAQC,SAASH,SACzBf,QAAQiB,QAAQE,MAAMJ;AAE1B;AAEA,IAAMd,qBAAqB,CAACD,YAAAA;AAC1B,SAAO;IAAEoB,MAAMpB,QAAQa,OAAOC;EAAQ;AACxC;;;AC1GA,SAASO,OAAOC,oBAAoB;AAEpC,SAAuBC,yBAAyB;AAChD,SAASC,aAAAA,kBAAiB;AAC1B,SAASC,OAAAA,YAAW;AAKpB,SAASC,cAAAA,aAAYC,cAAAA,aAAYC,oBAAoB;;AAM9C,IAAMC,mBAAN,MAAMA;;;;;;EAIMC,gBAAgB,IAAIJ,YACnC,CAAC,EAAEK,OAAOC,OAAM,MAAOD,MAAME,MAAK,IAAKD,OAAOC,MAAK,CAAA;;;;EAMpCC,gBAAgB,IAAIP,YACnC,CAAC,EAAEI,OAAOC,OAAM,MAAOD,MAAME,MAAK,IAAKD,OAAOC,MAAK,CAAA;;;;EAMpCE,sBAAsB,IAAIR,YAAkC,CAAC,EAAEK,OAAM,MAAOA,OAAOC,MAAK,CAAA;;;;;EAMhGG,iBAAiB,IAAIV,YAA6C,CAACW,QAAQA,IAAIJ,MAAK,CAAA;;;;;EAMpFK,aAAa,IAAIjB,MAAAA;EAE1B,YACmBkB,YACAC,eACjB;SAFiBD,aAAAA;SACAC,gBAAAA;EAChB;EAEH,MAAMC,mBAAsD;AAC1D,UAAMC,UAAW;SAAI,KAAKZ,cAAca,OAAM;MAAsBC,OAAO;SAAI,KAAKR,eAAeO,OAAM;KAAG;AAC5G,SAAKb,cAAce,MAAK;AACxB,SAAKT,eAAeS,MAAK;AACzB,UAAMC,gBAAgB,MAAMlB,aAAac,SAAS,CAACK,MAAMA,EAAEC,MAAK,CAAA,GAAKC;AACrE,WAAO;MAAEH;IAAa;EACxB;EAEAI,KAAK,EAAEnB,OAAOC,OAAM,GAAmD;AACrE,SAAKE,cAAciB,IAAI;MAAEpB;MAAOC;IAAO,CAAA;EACzC;EAEAoB,MAAM,EAAErB,OAAOC,OAAM,GAAmD;AACtE,SAAK,KAAKF,cAAcuB,IAAI;MAAEtB;MAAOC;IAAO,CAAA,GAAIgB,MAAAA;AAChD,SAAKlB,cAAcwB,OAAO;MAAEvB;MAAOC;IAAO,CAAA;AAC1C,SAAKE,cAAcoB,OAAO;MAAEvB;MAAOC;IAAO,CAAA;EAC5C;EAEAuB,kBAAkBvB,QAAyB;AACzC,SAAKG,oBAAoBgB,IAAI;MAAEnB;IAAO,CAAA;EACxC;EAEAwB,oBAAoBxB,QAAyB;AAC3CP,IAAAA,KAAI,+BAA+B;MAAEO;IAAO,GAAA;;;;;;AAC5C,SAAKG,oBAAoBmB,OAAO;MAAEtB;IAAO,CAAA;AACzC,SAAK,KAAKI,eAAeiB,IAAIrB,MAAAA,GAASgB,MAAAA;AACtC,SAAKZ,eAAekB,OAAOtB,MAAAA;EAC7B;EAEA,MAAayB,UAAUC,KAAcC,QAAwC;AAC3E,UAAM,KAAKC,6BAA6BF,KAAKC,MAAAA;AAC7C,UAAM,KAAKE,+BAA+BH,KAAKC,MAAAA;AAC/C,SAAKrB,WAAWwB,KAAI;EACtB;EAEA,MAAcF,6BAA6BF,KAAcC,QAAwC;AAE/F,eAAW,EAAE5B,OAAOC,OAAM,KAAM,KAAKF,cAAciC,KAAI,GAAI;AAEzD,UAAI,KAAK7B,cAAc8B,IAAI;QAAEjC;QAAOC;MAAO,CAAA,GAAI;AAC7C;MACF;AAEA,WAAK,KAAKF,cAAcuB,IAAI;QAAEtB;QAAOC;MAAO,CAAA,GAAIgB,MAAAA;AAChD,WAAKlB,cAAcwB,OAAO;QAAEvB;QAAOC;MAAO,CAAA;IAC5C;AAGA,eAAW,EAAED,OAAOC,OAAM,KAAM,KAAKE,cAAcS,OAAM,GAAI;AAE3D,UAAI,KAAKb,cAAckC,IAAI;QAAEjC;QAAOC;MAAO,CAAA,GAAI;AAC7C;MACF;AAEA,YAAMiC,cAAc,MAAM3C,aAAaC,kBAAkBmC,KAAKC,OAAOT,KAAK;QAAEnB;QAAOC;MAAO,CAAA,CAAA,GAAK,GAAA;AAG/FiC,kBAAYC,UAAU,OAAOC,eAAAA;AAC3B,YAAI,KAAKjC,cAAc8B,IAAI;UAAEjC;UAAOC;QAAO,CAAA,GAAI;AAC7CP,UAAAA,KAAI,eAAe;YAAE0C;UAAW,GAAA;;;;;;AAChC,gBAAMC,QAAoBD,WAAWE,gBACjC;YACEtC;YACAsC,eAAe;cACb,GAAGF,WAAWE;cACdC,MAAM;gBAAEC,SAAS/C,WAAUgD,KAAKL,WAAWE,cAAcC,IAAI,EAAErC,MAAK;cAAG;YACzE;UACF,IACA;YACEF;YACA0C,UAAU;cACR,GAAGN,WAAWM;cACdH,MAAM;gBAAEC,SAAS/C,WAAUgD,KAAKL,WAAWM,SAAUH,IAAI,EAAErC,MAAK;cAAG;YACrE;UACF;AACJ,gBAAM,KAAKO,cAAc4B,KAAAA;QAC3B;MACF,CAAA;AAGA,WAAKtC,cAAc4C,IAAI;QAAE3C;QAAOC;MAAO,GAAGiC,WAAAA;IAC5C;EACF;EAEA,MAAcJ,+BAA+BH,KAAcC,QAAwC;AAEjG,eAAW3B,UAAU,KAAKI,eAAe2B,KAAI,GAAI;AAE/C,UAAI,KAAK5B,oBAAoB6B,IAAI;QAAEhC;MAAO,CAAA,GAAI;AAC5C;MACF;AAEA,WAAK,KAAKI,eAAeiB,IAAIrB,MAAAA,GAASgB,MAAAA;AACtC,WAAKZ,eAAekB,OAAOtB,MAAAA;IAC7B;AAGA,eAAW,EAAEA,OAAM,KAAM,KAAKG,oBAAoBQ,OAAM,GAAI;AAC1D,UAAI,KAAKP,eAAe4B,IAAIhC,MAAAA,GAAS;AACnC;MACF;AAEA,YAAM2C,gBAAgB,MAAMrD,aAAaC,kBAAkBmC,KAAKC,OAAOiB,gBAAgB5C,MAAAA,CAAAA,GAAU,GAAA;AACjG2C,oBAAcT,UAAU,OAAOW,kBAAAA;AAC7B,YAAI,KAAK1C,oBAAoB6B,IAAI;UAAEhC;QAAO,CAAA,GAAI;AAC5C,gBAAM8C,UAAmB;YACvBC,QAAQ;cAAER,SAAS/C,WAAUgD,KAAKK,cAAcE,MAAM,EAAE9C,MAAK;YAAG;YAChE+C,WAAW;cAAET,SAAS/C,WAAUgD,KAAKK,cAAcG,SAAS,EAAE/C,MAAK;YAAG;YACtEgD,SAASJ,cAAcI;UACzB;AACA,gBAAM,KAAK1C,WAAWuC,OAAAA;QACxB;MACF,CAAA;AAGA,WAAK1C,eAAesC,IAAI1C,QAAQ2C,aAAAA;IAClC;EACF;AACF;;;AC1KA,OAAOO,eAAe;AAEtB,SAASC,gBAAAA,eAAcC,SAASC,wBAAAA,6BAA4B;AAE5D,SAASC,WAAAA,gBAAe;AACxB,SAASC,aAAAA,kBAAiB;AAC1B,SAASC,aAAAA,kBAAiB;AAC1B,SAASC,OAAAA,YAAW;AACpB,SAASC,SAAAA,cAAa;AACtB,SAASC,UAAAA,eAAc;AAEvB,SAA4BC,0BAA0B;;;ACXtD,SAASC,SAAAA,cAAa;AAEf,IAAMC,yBAAN,MAAMA;EACJC,yBAAyBC,QAAyC;AACvEC,IAAAA,OAAMC,QAAQC,UAAU,oDAAoD,GAAG;MAC7EC,MAAM;QACJC,QAAQL,OAAOM;MACjB;IACF,CAAA;EACF;AACF;;;;ADKA,IAAMC,4BAA4B;AA6B3B,IAAMC,kBAAN,MAAMA;EACMC;EACAC;EACAC,kBAAkB,IAAIC,QAAAA;EAE/BC;EAEAC,UAAU;EAEDC;EACAC;EACAC,iBAAiB,IAAIL,QAAAA;EAErBM,WAAW,IAAIC,uBAAAA;EAEhC,YAAY,EAAEC,KAAKC,YAAY,CAAC,EAAC,GAA2B;AAC1D,UAAMC,UAAUC,WAAUC,OAAM,EAAGC,MAAK;AACxCC,IAAAA,KAAIC,MAAM,2CAA2CA,OAAMC,MAAM;MAAEC,IAAIP;IAAQ,CAAA,GAAA;;;;;;AAC/E,SAAKP,OAAOK;AACZ,SAAKJ,aAAaK;AAClB,SAAKZ,UAAU,IAAIqB,UAAU,KAAKf,IAAI;AAEtC,SAAKL,OAAOqB,mBAAmB;MAC7BC,WAAW;QACTC,QAAQC,QAAOC,WAAW,yBAAA;MAC5B;MACAC,aAAa;MACbC,MAAM;QACJC,MAAM,CAACC,QAAAA;AACL,cAAI,KAAKzB,SAAS;AAEhB;UACF;AACA,cAAI;AACF,iBAAKL,QAAS6B,KAAKC,GAAAA;UACrB,SAASC,KAAK;AACZd,YAAAA,KAAIe,KAAK,cAAcD,KAAAA;;;;;;UACzB;QACF;QACAE,WAAW,CAACC,OAAAA;AACV,eAAKlC,QAASmC,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,SAAK1C,QAAQ2C,SAAS,YAAA;AACpB,UAAI;AACF,cAAM,KAAK1C,KAAM2C,KAAI;AACrB,YAAI,KAAKvC,SAAS;AAChB,gBAAM,KAAKwC,cAAa;AACxB;QACF;AACA5B,QAAAA,KAAI,YAAY,KAAKX,IAAI,IAAE,QAAA;;;;;;AAC3B,aAAKC,WAAWuC,cAAW;AAC3B,aAAK5C,gBAAgB6C,KAAI;AACzB,aAAK3C,gBAAgB,IAAI4C,SAAAA,QAAAA;;;;AACzBC,QAAAA,sBACE,KAAK7C,eACL,YAAA;AAKE,eAAKJ,SAAS6B,KAAK,UAAA;QACrB,GACA/B,yBAAAA;MAEJ,SAASiC,KAAU;AACjB,aAAKxB,WAAW2C,UAAUnB,GAAAA;AAC1B,aAAK/B,QAAQmD,MAAK;AAClB,aAAK9C,UAAU;MACjB;IACF;AAEA,SAAKL,QAAQoD,UAAU,YAAA;AACrBnC,MAAAA,KAAI,gBAAgB,KAAKX,IAAI,IAAE,QAAA;;;;;;AAC/B,WAAKC,WAAW8C,iBAAc;AAC9B,WAAK7C,eAAeuC,KAAI;AACxB,YAAM,KAAKI,MAAK;IAClB;AAEA,SAAKnD,QAAQsD,UAAU,OAAOC,UAAAA;AAC5B,UAAI,KAAKlD,SAAS;AAChB,aAAKL,QAAQmD,MAAK;AAClB;MACF;AACA,WAAK9C,UAAU;AAEf,WAAKE,WAAW2C,UAAUK,MAAMC,SAAS,IAAIC,MAAMF,MAAMG,OAAO,CAAA;AAChE,YAAM,KAAKb,cAAa;AAExB5B,MAAAA,KAAIe,KAAK,UAAUuB,MAAMI,QAAQ,SAAA,UAAmB;QAAED,SAASH,MAAMG;QAAS/C,KAAK,KAAKL;MAAK,GAAA;;;;;;IAC/F;AAEAW,IAAAA,KAAIC,MAAM,2CAA2CA,OAAM0C,IAAI;MAAExC,IAAIP;IAAQ,CAAA,GAAA;;;;;;EAC/E;EAEA,MAAMsC,QAAuB;AAC3B,QAAI,KAAK9C,SAAS;AAChB;IACF;AACA,SAAKA,UAAU;AAEf,UAAM,KAAKD,eAAeyD,QAAAA;AAC1B,QAAI;AACF,YAAM,KAAKhB,cAAa;AAExB,UAAI,KAAK7C,QAAQ8D,eAAezC,UAAU0C,QAAQ,KAAK/D,QAAQ8D,eAAezC,UAAU2C,YAAY;AAElG,aAAKhE,QAAQmD,MAAK;MACpB;AAEA,YAAM,KAAK3C,eAAeyD,KAAK;QAAEC,SAAS;MAAM,CAAA;IAClD,SAASnC,KAAK;AACZ,YAAMoC,gBAAgBpC,eAAeqC,gBAAe,YAAarC,KAAK,aAAasC,QAAQ;AAC3F,WAAK5D,SAAS6D,yBAAyB;QAAEH;MAAc,CAAA;IACzD;EACF;EAEA,MAAMI,KAAK,EAAEC,OAAOC,OAAM,GAA6C;AACrExD,IAAAA,KAAI,QAAQ;MAAEuD;MAAOC;MAAQC,UAAU,KAAKnE,YAAYoE,cAAAA;IAAgB,GAAA;;;;;;AACxEC,IAAAA,WAAU,CAAC,KAAKvE,SAAS,6BAAA;;;;;;;;;AACzB,UAAM,KAAKH,gBAAgB+D,KAAI;AAC/B,UAAMY,cAAc,KAAK5E,KAAK6E,IAAItD,OAAO+C,KAAK;MAC5CQ,OAAOP,MAAMQ,aAAY;MACzBC,MAAMR,OAAOO,aAAY;MACzBN,UAAU,KAAKnE,YAAYoE,cAAAA;IAC7B,CAAA;AACA,UAAME,YAAYK,eAAc;AAChC,WAAOL;EACT;EAEA,MAAMM,gBAAgBV,QAAmD;AACvExD,IAAAA,KAAI,mBAAmB;MAAEwD;IAAO,GAAA;;;;;;AAChCG,IAAAA,WAAU,CAAC,KAAKvE,SAAS,6BAAA;;;;;;;;;AACzB,UAAM,KAAKH,gBAAgB+D,KAAI;AAC/B,UAAMmB,gBAAgB,KAAKnF,KAAK6E,IAAItD,OAAO2D,gBAAgB;MACzDF,MAAMR,OAAOO,aAAY;IAC3B,CAAA;AACA,UAAMI,cAAcF,eAAc;AAClC,WAAOE;EACT;EAEA,MAAMC,YAAY,EAChBC,QACAC,WACAC,QAAO,GAKS;AAChBvE,IAAAA,KAAI,eAAe;MAAEqE;MAAQC;MAAWC;MAASd,UAAU,KAAKnE,YAAYoE,cAAAA;IAAgB,GAAA;;;;;;AAC5FC,IAAAA,WAAU,CAAC,KAAKvE,SAAS,6BAAA;;;;;;;;;AACzB,UAAM,KAAKH,gBAAgB+D,KAAI;AAC/B,UAAM,KAAKhE,KAAK6E,IAAItD,OAAO6D,YAAY;MACrCC,QAAQA,OAAON,aAAY;MAC3BO,WAAWA,UAAUP,aAAY;MACjCQ;MACAd,UAAU,KAAKnE,YAAYoE,cAAAA;IAC7B,CAAA;EACF;EAEA,MAAc9B,gBAA+B;AAC3C,QAAI;AACF,WAAK3C,gBAAgBuF,MAAK;AAC1B,YAAM,KAAKxF,KAAKkD,MAAK;IACvB,SAASpB,KAAK;AACZd,MAAAA,KAAIyE,MAAM3D,KAAAA,QAAAA;;;;;;IACZ;EACF;AACF;;;;AH1MA,IAAM4D,4BAA4B;AAClC,IAAMC,wBAAwB;AAC9B,IAAMC,wBAAwB;AAC9B,IAAMC,qBAAqB;AAWpB,IAAMC,eAAN,cAA2BC,SAAAA;;;EACfC,WAAW,IAAIC,oBAAAA;EAExBC,SAASC,YAAYC;EACrBC;EACAC,4BAA4B;EAEnBC,eAAe,IAAIC,SAAAA;EAC5BC;EACAC;EAEAC;EACAC;;;;EAKAC,kBAAkBnB;EAEToB,cAAcC,WAAUC,OAAM,EAAGC,MAAK;;;;EAK9CC;EAEAC,gBAAgB,IAAIC,OAAAA;EAEbC,YAAY,IAAID,OAAAA;EAChBE,aAAa,IAAIF,OAAAA;;;;;;;EAQjC,YACmBG,OACAC,cACjB;AACA,UAAK,GAAA,KAHYD,QAAAA,OAAAA,KACAC,eAAAA;AAGjB,QAAI,CAAC,KAAKD,MAAME,WAAW,QAAA,KAAa,CAAC,KAAKF,MAAME,WAAW,OAAA,GAAU;AACvE,YAAM,IAAIC,MAAM,qDAAqD,KAAKH,KAAK,EAAE;IACnF;AAEA,SAAKL,aAAa,IAAIS,iBACpB,OAAOC,YAAAA;AACL,WAAK5B,SAAS6B,sBAAsBD,OAAAA;AACpC,WAAKP,UAAUS,KAAKF,OAAAA;IACtB,GACA,OAAOG,UAAU,KAAKT,WAAWQ,KAAKC,KAAAA,CAAAA;EAE1C;EAEA,MAAyBC,QAAuB;AAC9CC,IAAAA,KAAIC,MAAM,gCAAgCA,OAAMC,MAAM;MAAEC,IAAI,KAAKtB;IAAY,CAAA,GAAA;;;;;;AAE7E,QAAI;MAACX,YAAYkC;MAAWlC,YAAYmC;MAAYC,SAAS,KAAKrC,MAAM,GAAG;AACzE;IACF;AACA,SAAKsC,UAAUrC,YAAYmC,UAAU;AAErC,SAAK3B,iBAAiB,IAAI8B,aAAa,KAAKC,MAAM,YAAA;AAChD,UAAI;AACF,cAAMC,mBAAkB,KAAKlC,gBAAiB,KAAKF,aAAaqC,KAAK;UAAEC,SAAS;QAAM,CAAA,CAAA;AACtFC,QAAAA,WAAU,KAAK5C,WAAWC,YAAYkC,WAAW,kCAAA;;;;;;;;;AACjD,cAAM,KAAKnB,WAAW6B,UAAU,KAAKtC,gBAAiB,KAAKC,OAAO;AAClE,aAAKV,SAASgD,qBAAqB;UAAEC,SAAS;QAAK,CAAA;AACnD,aAAK3C,4BAA4B;MACnC,SAAS4C,KAAK;AACZ,aAAK5C,4BAA4B;AACjC,aAAKN,SAASgD,qBAAqB;UAAEC,SAAS;QAAM,CAAA;AACpD,cAAMC;MACR;IACF,CAAA;AAGAC,IAAAA,sBACE,KAAKT,MACL,YAAA;AACE,UAAI,KAAKxC,WAAWC,YAAYkC,WAAW;AACzC,aAAK1B,eAAgByC,SAAQ;MAC/B;IACF,GACAvD,kBAAAA;AAGF,SAAKe,iBAAiB,IAAI6B,aAAa,KAAKC,MAAM,YAAA;AAChD,UAAI;AACF,cAAM,KAAKW,WAAU;AACrB,aAAKrD,SAASsD,gBAAgB;UAAEL,SAAS;QAAK,CAAA;MAChD,SAASC,KAAK;AACZ,aAAKlD,SAASsD,gBAAgB;UAAEL,SAAS;QAAM,CAAA;AAC/C,cAAMC;MACR;IACF,CAAA;AAEA,SAAKK,cAAa;AAClBtB,IAAAA,KAAIC,MAAM,gCAAgCA,OAAMsB,IAAI;MAAEpB,IAAI,KAAKtB;IAAY,CAAA,GAAA;;;;;;EAC7E;EAEA,MAAyB2C,OAAOP,KAA2B;AACzD,QAAI,KAAKhD,WAAWC,YAAYC,UAAU,KAAKsC,KAAKgB,UAAU;AAC5D;IACF;AAEA,QAAI,KAAKxD,WAAWC,YAAYkC,aAAa,CAAC,KAAK/B,2BAA2B;AAC5E2B,MAAAA,KAAI0B,KAAK,uBAAuBT,KAAAA;;;;;;IAClC;AACA,SAAKU,6BAA4B;EACnC;EAEA,MAAyBC,SAAwB;AAC/C5B,IAAAA,KAAI,cAAA,QAAA;;;;;;AACJ,QAAI;MAAC9B,YAAYC;MAAQmC,SAAS,KAAKrC,MAAM,GAAG;AAC9C;IACF;AAEA,SAAKsC,UAAUrC,YAAYC,MAAM;AACjC,UAAM,KAAK0D,iBAAgB;AAE3B7B,IAAAA,KAAI,UAAA,QAAA;;;;;;EACN;EAEA8B,YAA0B;AACxB,WAAO;MACLC,MAAM,KAAKzC;MACX0C,OAAO,KAAK/D;MACZgE,OAAO,KAAK7D,YAAYuB;MACxBuC,aAAa,KAAKtD;MAClB,GAAG,KAAKb,SAASoE,sBAAqB;IACxC;EACF;EAEA,MAAMC,KAAKC,MAAkC;AAC3CrC,IAAAA,KAAI,WAAW;MAAEsC,OAAOD,KAAKC;MAAOC,QAAQF,KAAKG,KAAKC;IAAQ,GAAA;;;;;;AAC9D,SAAK1E,SAAS2E,WAAU;AACxB,SAAKzD,WAAWmD,KAAK;MAAEE,OAAOD,KAAKC;MAAOC,QAAQzD,WAAU6D,KAAKN,KAAKG,KAAKC,OAAO;IAAE,CAAA;AACpF,SAAK/D,gBAAgByC,SAAAA;EACvB;EAEA,MAAMyB,MAAMP,MAAmC;AAC7CrC,IAAAA,KAAI,WAAW;MAAEsC,OAAOD,KAAKC;MAAOC,QAAQF,KAAKG,KAAKC;IAAQ,GAAA;;;;;;AAC9D,SAAK1E,SAAS8E,YAAW;AACzB,SAAK5D,WAAW2D,MAAM;MAAEN,OAAOD,KAAKC;MAAOC,QAAQzD,WAAU6D,KAAKN,KAAKG,KAAKC,OAAO;IAAE,CAAA;EACvF;EAEA,MAAMK,MAAMC,QAA8C;AACxD,UAAM,IAAItD,MAAM,iBAAA;EAClB;EAEA,MAAMuD,YAAYC,KAA6B;AAC7C,WAAO,KAAKlF,SAASmF,qBAAqBD,KAAK,YAAA;AAC7C,YAAM,KAAK3E,aAAaqC,KAAI;AAC5BE,MAAAA,WAAU,KAAK5C,WAAWC,YAAYkC,WAAW,kCAAA;;;;;;;;;AACjDS,MAAAA,WAAUoC,IAAIE,OAAOV,SAAS,uBAAA;;;;;;;;;AAC9B5B,MAAAA,WAAUoC,IAAIG,UAAUX,SAAS,0BAAA;;;;;;;;;AACjC,YAAM,KAAKhE,QAASuE,YAAY;QAC9BG,QAAQrE,WAAU6D,KAAKM,IAAIE,OAAOV,OAAO;QACzCW,WAAWtE,WAAU6D,KAAKM,IAAIG,UAAUX,OAAO;QAC/CY,SAASJ,IAAII;MACf,CAAA;IACF,CAAA;EACF;EAEA,MAAMC,kBAAkBd,MAA+B;AACrD3B,IAAAA,WAAU2B,KAAKC,SAAS,qBAAA;;;;;;;;;AACxBzC,IAAAA,KAAI,2BAA2B;MAAEwC;IAAK,GAAA;;;;;;AACtC,SAAKvD,WAAWqE,kBAAkBxE,WAAU6D,KAAKH,KAAKC,OAAO,CAAA;AAC7D,SAAK/D,gBAAgByC,SAAAA;EACvB;EAEA,MAAMoC,oBAAoBf,MAA+B;AACvD3B,IAAAA,WAAU2B,KAAKC,SAAS,qBAAA;;;;;;;;;AACxBzC,IAAAA,KAAI,+BAA+B;MAAEwC;IAAK,GAAA;;;;;;AAC1C,SAAKvD,WAAWsE,oBAAoBzE,WAAU6D,KAAKH,KAAKC,OAAO,CAAA;EACjE;EAEQd,+BAAqC;AAC3C6B,IAAAA,cAAa,KAAK/C,MAAM,MAAM,KAAK/B,eAAgByC,SAAQ,GAAIxD,qBAAAA;EACjE;EAEQ2D,gBAAsB;AAC5BtB,IAAAA,KAAI,mBAAmB;MAAE+B,MAAM,KAAKzC;MAAO0C,OAAO,KAAK/D;IAAO,GAAA;;;;;;AAC9D4C,IAAAA,WAAU,CAAC,KAAKpC,SAAS,0BAAA;;;;;;;;;AAEzB,SAAKV,SAAS0F,0BAAyB;AAGvC,SAAKjF,iBAAiB,KAAKiC,KAAKiD,OAAM;AACtC,SAAKlF,eAAemF,UAAU,YAAA;AAC5B3D,MAAAA,KAAI,+BAAA,QAAA;;;;;;AACJ,YAAM,EAAE4D,aAAY,IAAK,MAAM,KAAK3E,WAAW4E,iBAAgB;AAC/D,WAAK9F,SAAS+F,wBAAwBF,YAAAA;IACxC,CAAA;AAEA,QAAI;AACF,YAAMG,SAAS,IAAIC,gBAAgB;QACjCC,KAAK,KAAK3E;QACV4E,WAAW;UACTC,aAAa,MAAA;AACX,gBAAIJ,WAAW,KAAKtF,SAAS;AAC3BuB,cAAAA,KAAI,oBAAA,QAAA;;;;;;AACJ,mBAAKoE,aAAY;YACnB;UACF;UAEAC,gBAAgB,MAAA;AACd,gBAAIN,WAAW,KAAKtF,SAAS;AAC3B;YACF;AACAuB,YAAAA,KAAI,uBAAuB;cAAEgC,OAAO,KAAK/D;YAAO,GAAA;;;;;;AAChD,gBAAI,KAAKA,WAAWC,YAAYoG,OAAO;AAGrC,mBAAK/D,UAAUrC,YAAYqG,YAAY;YACzC,OAAO;AACL,mBAAKC,gBAAe;YACtB;UACF;UAEAC,SAAS,CAACxC,UAAAA;AACR,gBAAI8B,WAAW,KAAKtF,SAAS;AAC3BuB,cAAAA,KAAI,gBAAgB;gBAAEiC;gBAAOD,OAAO,KAAK/D;cAAO,GAAA;;;;;;AAChD,mBAAKuG,gBAAgB;gBAAEvC;cAAM,CAAA;YAC/B;UACF;UACAyC,aAAa,KAAKnF;QACpB;MACF,CAAA;AACA,WAAKd,UAAUsF;IACjB,SAAS9B,OAAY;AACnB,WAAKxD,UAAUkG;AACf,WAAKH,gBAAgB;QAAEvC;MAAM,CAAA;IAC/B;EACF;EAEA,MAAcb,aAA4B;AACxCpB,IAAAA,KAAI,mBAAmB,KAAKpB,eAAe,MAAM;MAAEoD,OAAO,KAAK/D;IAAO,GAAA;;;;;;AAEtE,QAAI,KAAKA,WAAWC,YAAY0G,cAAc;AAC5C5E,MAAAA,KAAI6E,KAAK,oCAAA,QAAA;;;;;;AACT;IACF;AACA,QAAI,KAAK5G,WAAWC,YAAYC,QAAQ;AACtC;IACF;AACA,SAAKoC,UAAUrC,YAAY0G,YAAY;AAEvC,UAAM,KAAK/C,iBAAgB;AAE3B,UAAMnB,mBAAkB,KAAKD,MAAOqE,MAAM,KAAKlG,eAAe,CAAA;AAE9D,SAAK0C,cAAa;EACpB;EAEQ8C,eAAqB;AAC3B,SAAKhG,aAAauG;AAClB,SAAKtG,4BAA4B;AACjC,SAAKO,kBAAkBnB;AACvB,SAAK8C,UAAUrC,YAAYkC,SAAS;AACpC,SAAK9B,aAAayG,KAAI;AACtB,SAAKrG,eAAgByC,SAAQ;EAC/B;EAEQqD,gBAAgBQ,SAAkC;AACxD,SAAKC,wBAAuB;AAC5B,QAAI,KAAKhH,WAAWC,YAAYC,QAAQ;AACtC;IACF;AACA,QAAI6G,SAAS/C,OAAO;AAClB,WAAK7D,aAAa4G,QAAQ/C;AAC1B,WAAK1B,UAAUrC,YAAYoG,KAAK;IAClC,OAAO;AACL,WAAK/D,UAAUrC,YAAYqG,YAAY;IACzC;AACA,SAAK5F,eAAgBwC,SAAQ;EAC/B;EAEQZ,UAAU2E,UAA6B;AAC7C,SAAKjH,SAASiH;AACd,SAAKnH,SAASoH,sBAAqB;AACnCnF,IAAAA,KAAI,wBAAwB;MAAEoF,QAAQ,KAAKtD,UAAS;IAAG,GAAA;;;;;;AACvD,SAAK5C,cAAcW,KAAK,KAAKiC,UAAS,CAAA;EACxC;EAEQmD,0BAAgC;AACtC,QAAI,KAAKhH,WAAWC,YAAYkC,aAAa,KAAKnC,WAAWC,YAAYmC,YAAY;AACnF,WAAKzB,mBAAmB;AACxB,WAAKA,kBAAkByG,KAAKC,IAAI,KAAK1G,iBAAiBlB,qBAAAA;IACxD;EACF;EAEA,MAAcmE,mBAAkC;AAC9C,UAAM,KAAKrD,gBAAgB+G,QAAAA;AAC3B,SAAK/G,iBAAiBmG;AAEtB,SAAKrG,aAAakH,MAAK;AACvB,UAAM,KAAK/G,SAASgH,MAAAA,EAAQC,MAAM,MAAA;IAAO,CAAA;AACzC,SAAKjH,UAAUkG;EACjB;AACF;;;AKpUO,IAAMgB,eAAe,CAAC,EAAEC,QAAO,MAAiBA;;;ACdvD,SAASC,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;AAGvB,SAASC,cAAAA,aAAYC,cAAAA,mBAAkB;;AAShC,IAAMC,6BAAN,MAAMA;;EAEFC,aAAa,IAAIC,OAAAA;;EAGjBC,SAAS,IAAIC,YAA4CC,WAAUC,IAAI;;EAGvEC,cAAc,IAAIH,YAA0CI,YAAAA;AACvE;AAKO,IAAMC,sBAAN,MAAMA;;EACFC,gBAAgB,IAAIR,OAAAA;EACpBD,aAAa,IAAIC,OAAAA;EAEjBS,YAAY,IAAIT,OAAAA;;EAGjBU,gBAAgB,IAAIC,YAC1B,CAAC,EAAEC,OAAOC,KAAI,MAAOD,MAAME,MAAK,IAAKD,KAAKE,OAAO;EAG3CC;;EAGSC,iBAAiB,IAAIC,SAAAA,EAAUC,KAAI;EAEpD,YAA6BC,UAAsC;SAAtCA,WAAAA;AAC3B,SAAKJ,OAAO,IAAIK,SAAAA,QAAAA;;;;AAEhB,SAAKL,KAAKM,UAAU,KAAKF,SAASrB,WAAWwB,GAAG,CAACC,SAAS,KAAKzB,WAAW0B,KAAKD,IAAAA,CAAAA,CAAAA;EACjF;EAEA,MAAME,OAAsB;AAC1B,QAAI,CAAC,KAAKV,KAAKW,UAAU;AACvB;IACF;AACA,SAAKX,OAAO,IAAIK,SAAAA,QAAAA;;;;AAChB,SAAKL,KAAKM,UAAU,KAAKF,SAASrB,WAAWwB,GAAG,CAACC,SAAS,KAAKzB,WAAW0B,KAAKD,IAAAA,CAAAA,CAAAA;AAE/E,UAAMI,QAAQC,IAAI;SAAI,KAAKnB,cAAcoB,OAAM;MAAIC,IAAI,CAACC,UAAU,KAAKC,KAAKD,KAAAA,CAAAA,CAAAA;EAC9E;EAEA,MAAME,QAAuB;AAC3B,QAAI,KAAKlB,KAAKW,UAAU;AACtB;IACF;AAEA,UAAMQ,mBAAmB,IAAIxB,YAC3B,CAAC,EAAEC,OAAOC,KAAI,MAAOD,MAAME,MAAK,IAAKD,KAAKE,SAC1C;SAAI,KAAKL,cAAcoB,OAAM;KAAG;AAGlC,UAAMF,QAAQC,IAAI;SAAI,KAAKnB,cAAcoB,OAAM;MAAIC,IAAI,CAACC,UAAU,KAAKI,MAAMJ,KAAAA,CAAAA,CAAAA;AAG7E,SAAKtB,gBAAgByB;AAErB,UAAM,KAAKnB,KAAKqB,QAAO;EACzB;EAEAC,YAA4B;AAC1B,WAAO,CAAA;EACT;EAEA,MAAML,KAAK,EAAErB,OAAOC,KAAI,GAAyD;AAC/E0B,IAAAA,WAAU,CAAC,KAAKvB,KAAKW,UAAU,UAAA;;;;;;;;;AAE/B,SAAKjB,cAAc8B,IAAI;MAAE5B;MAAOC;IAAK,CAAA;AAErC,QAAI,CAAC,KAAKO,SAASnB,OAAOwC,IAAI7B,KAAAA,GAAQ;AACpC,WAAKQ,SAASnB,OAAOyC,IAAI9B,OAAO,IAAID,YAAWL,YAAAA,CAAAA;IACjD;AAEA,SAAKc,SAASnB,OAAO0C,IAAI/B,KAAAA,EAAQ4B,IAAI3B,IAAAA;AACrC,SAAKO,SAASrB,WAAW0B,KAAK;MAC5Bb;MACAgC,eAAe;QACb/B;QACAgC,OAAO,oBAAIC,KAAAA;MACb;IACF,CAAA;AAGA,eAAW,CAAClC,QAAOmC,KAAAA,KAAU,KAAK3B,SAASnB,QAAQ;AACjD+C,YAAMC,KAAKF,KAAAA,EAAOG,QAAQ,CAACrC,UAAAA;AACzB,aAAKd,WAAW0B,KAAK;UACnBb,OAAAA;UACAgC,eAAe;YACb/B,MAAAA;YACAgC,OAAO,oBAAIC,KAAAA;UACb;QACF,CAAA;MACF,CAAA;IACF;EACF;EAEA,MAAMV,MAAM,EAAExB,OAAOC,KAAI,GAAyD;AAChF0B,IAAAA,WAAU,CAAC,KAAKvB,KAAKW,UAAU,UAAA;;;;;;;;;AAE/B,SAAKjB,cAAcyC,OAAO;MAAEvC;MAAOC;IAAK,CAAA;AAExC,QAAI,CAAC,KAAKO,SAASnB,OAAOwC,IAAI7B,KAAAA,GAAQ;AACpC,WAAKQ,SAASnB,OAAOyC,IAAI9B,OAAO,IAAID,YAAWL,YAAAA,CAAAA;IACjD;AAEA,SAAKc,SAASnB,OAAO0C,IAAI/B,KAAAA,EAAQuC,OAAOtC,IAAAA;AAExC,UAAMd,aAAyB;MAC7Ba;MACAwC,UAAU;QACRvC;MACF;IACF;AAEA,SAAKO,SAASrB,WAAW0B,KAAK1B,UAAAA;EAChC;EAEA,MAAMsD,MAAMC,SAA+C;AACzD,UAAM,IAAIC,MAAM,iBAAA;EAClB;EAEA,MAAMC,YAAY,EAChBC,QACAC,WACAC,QAAO,GAKS;AAChBC,IAAAA,KAAI,gBAAgB;MAAEH;MAAQC;MAAW,GAAGG,IAAIF,OAAAA;IAAS,GAAA;;;;;;AAEzDpB,IAAAA,WAAUmB,WAAAA,QAAAA;;;;;;;;;AACVnB,IAAAA,WAAU,CAAC,KAAKvB,KAAKW,UAAU,UAAA;;;;;;;;;AAE/B,UAAM,KAAKV,eAAe6C,KAAI;AAE9B,UAAMC,SAAS,KAAK3C,SAASf,YAAYsC,IAAIe,SAAAA;AAC7C,QAAI,CAACK,QAAQ;AACXH,MAAAA,KAAII,KAAK,4CAA4C;QAAEP;QAAQC;MAAU,GAAA;;;;;;AACzE;IACF;AAEA,QAAIK,OAAO/C,KAAKW,UAAU;AACxBiC,MAAAA,KAAII,KAAK,yBAAyB;QAAEP;QAAQC;MAAU,GAAA;;;;;;AACtD;IACF;AAEAK,WAAO9C,eACJ6C,KAAI,EACJG,KAAK,MAAA;AACJ,UAAIF,OAAO/C,KAAKW,UAAU;AACxBiC,QAAAA,KAAII,KAAK,yBAAyB;UAAEP;UAAQC;QAAU,GAAA;;;;;;AACtD;MACF;AAEAE,MAAAA,KAAI,mBAAmB;QAAEH;QAAQC;QAAW,GAAGG,IAAIF,OAAAA;MAAS,GAAA;;;;;;AAE5DI,aAAOtD,UAAUgB,KAAK;QAAEgC;QAAQC;QAAWC;MAAQ,CAAA;IACrD,CAAA,EACCO,MAAM,CAACC,QAAAA;AACNP,MAAAA,KAAIQ,MAAM,kCAAkC;QAAED;MAAI,GAAA;;;;;;IACpD,CAAA;EACJ;EAEA,MAAME,kBAAkBC,UAAmC;AACzDV,IAAAA,KAAI,eAAe;MAAEU;IAAS,GAAA;;;;;;AAC9B,SAAKlD,SAASf,YAAYqC,IAAI4B,UAAU,IAAI;EAC9C;EAEA,MAAMC,oBAAoBD,UAAmC;AAC3DV,IAAAA,KAAI,iBAAiB;MAAEU;IAAS,GAAA;;;;;;AAChC,SAAKlD,SAASf,YAAY8C,OAAOmB,QAAAA;EACnC;EAEAE,SAAe;AACb,SAAKvD,eAAewD,MAAK;EAC3B;EAEAC,WAAiB;AACf,SAAKzD,eAAeE,KAAI;EAC1B;AACF;AACA,IAAM0C,MAAM,CAACF,YAAAA;AACX,MAAI,CAACA,QAAQgB,SAASC,SAAS,iBAAA,GAAoB;AACjD,WAAO,CAAC;EACV;AAEA,QAAMC,aAAaC,QAAOC,gBAAgB,qCAAA,EAAuCC,OAAOrB,QAAQ3B,KAAK;AAErG,MAAI,OAAO6C,YAAYlB,SAASnC,SAAS,UAAU;AACjD,WAAO;MAAEmC,SAASsB,OAAOC,KAAKL,YAAYlB,SAASnC,IAAAA,EAAM,CAAA;MAAI2D,WAAWN,YAAYlB,SAASwB;IAAU;EACzG;AAEA,SAAO,CAAC;AACV;;;ACzNA,SAASC,SAAAA,QAAOC,SAAAA,QAAOC,oBAAoB;AAC3C,SAASC,gBAAgBC,YAAAA,iBAAgB;AACzC,SAASC,aAAAA,kBAAiB;AAC1B,SAASC,aAAAA,kBAAiB;AAC1B,SAASC,OAAAA,YAAW;AACpB,SAASC,wBAAwBC,gBAAAA,eAAcC,SAAAA,cAAa;AAI5D,SAASC,UAAUC,gBAAAA,qBAAoB;;;ACTvC,SAASC,SAAAA,cAAa;AAEf,IAAMC,gCAAN,MAAMA;EACJC,0BAAgC;AACrCC,IAAAA,OAAMC,QAAQC,UAAU,kDAAkD,CAAA;EAC5E;EAEOC,oBAAoBC,QAA4D;AACrFJ,IAAAA,OAAMC,QAAQC,UAAU,kDAAkD,GAAG;MAC3EG,MAAM;QACJC,QAAQF,OAAOG;QACfC,WAAWJ,OAAOK;MACpB;IACF,CAAA;EACF;AACF;;;;;;;;;;ADSA,IAAMC,sBAAsB;AAC5B,IAAMC,iCAAiC;AAOhC,IAAMC,yBAAN,cAAqCC,UAAAA;;;EACzBC,WAAW,oBAAIC,IAAAA;EACfC,WAAW,IAAIC,8BAAAA;;;;EAKfC;EAERC,eAAe,oBAAIJ,IAAAA;EACnBK,gBAAgB,IAAIC,OAAAA;EACpBC,aAAa,IAAID,OAAAA;EAEjBE,YAAY,IAAIF,OAAAA;EAERG,cAAcC,WAAUC,OAAM,EAAGC,MAAK;EAEvD,YACmBC,QACAC,cACjB;AACA,UAAK,GAAA,KAHYD,SAAAA,QAAAA,KACAC,eAAAA;AAGjBC,IAAAA,KAAI,kCAAkC;MAAEC,OAAO,KAAKH;IAAO,GAAA;;;;;;AAC3D,eAAWI,QAAQ,KAAKJ,QAAQ;AAC9B,UAAI,KAAKd,SAASmB,IAAID,KAAKE,MAAM,GAAG;AAClC;MACF;AAGA,YAAMA,SAAS,IAAIC,aAAaH,KAAKE,QAAQ,KAAKL,YAAY;AAC9DK,aAAOZ,WAAWc,GAAG,CAACC,SAAS,KAAKf,WAAWgB,KAAKD,IAAAA,CAAAA;AACpDH,aAAOX,UAAUa,GAAG,CAACC,SAAS,KAAKd,UAAUe,KAAKD,IAAAA,CAAAA;AAElDH,aAAOd,cAAcgB,GAAG,MAAM,KAAKhB,cAAckB,KAAK,KAAKC,UAAS,CAAA,CAAA;AAEpE,WAAKzB,SAAS0B,IAAIR,KAAKE,QAAQA,MAAAA;AAC/B,WAAKf,aAAaqB,IAAIR,KAAKE,QAAQ,CAAA;IACrC;AACA,SAAKhB,yBAAyBuB,SAASC,MAAM,KAAKd,OAAOe,MAAM;EACjE;EAEA,MAAyBC,QAAuB;AAC9Cd,IAAAA,KAAI,uBAAuB;MAAEC,OAAO,KAAKH;IAAO,GAAA;;;;;;AAChDE,IAAAA,KAAIe,MAAM,2CAA2CA,OAAMC,MAAM;MAAEC,IAAI,KAAKvB;IAAY,CAAA,GAAA;;;;;;AAExF,UAAMwB,cAAa,KAAKlC,SAASmC,OAAM,GAAI,CAACf,WAAWA,OAAOgB,KAAI,CAAA;AAElEpB,IAAAA,KAAIe,MAAM,2CAA2CA,OAAMM,IAAI;MAAEJ,IAAI,KAAKvB;IAAY,CAAA,GAAA;;;;;;EACxF;EAEA,MAAyB4B,SAAwB;AAC/C,UAAMJ,cAAa,KAAKlC,SAASmC,OAAM,GAAI,CAACf,WAAWA,OAAOmB,MAAK,CAAA;EACrE;EAEA,MAAMC,cAAcC,YAAmC;AACrDzB,IAAAA,KAAI,qBAAqB;MAAEyB;IAAW,GAAA;;;;;;AACtCC,IAAAA,WAAU,KAAKC,oBAAoBC,eAAeC,MAAI,QAAA;;;;;;;;;AAEtD,UAAMzB,SAAS,KAAKpB,SAAS8C,IAAIL,UAAAA;AACjCC,IAAAA,WAAUtB,QAAQ,oBAAA;;;;;;;;;AAElB,UAAMA,OAAOmB,MAAK;AAClB,UAAMQ,OAAMlD,8BAAAA;AACZ,UAAMuB,OAAOgB,KAAI;EACnB;EAEAX,YAA4B;AAC1B,WAAOuB,MAAMC,KAAK,KAAKjD,SAASmC,OAAM,CAAA,EAAIe,IAAI,CAAC9B,WAAWA,OAAOK,UAAS,CAAA;EAC5E;EAEA,MACM0B,KAAK,EAAEC,OAAOC,KAAI,GAAgC;AACtDrC,IAAAA,KAAI,QAAQ;MAAEoC;MAAOC;IAAK,GAAA;;;;;;AAC1BX,IAAAA,WAAU,KAAKC,oBAAoBC,eAAeC,MAAI,QAAA;;;;;;;;;AACtD,UAAM,KAAKS,eAAe,CAAClC,WAAWA,OAAO+B,KAAK;MAAEC;MAAOC;IAAK,CAAA,CAAA;EAClE;EAEA,MACME,MAAM,EAAEH,OAAOC,KAAI,GAAiC;AACxDrC,IAAAA,KAAI,WAAW;MAAEoC;MAAOC;IAAK,GAAA;;;;;;AAC7BX,IAAAA,WAAU,KAAKC,oBAAoBC,eAAeC,MAAI,QAAA;;;;;;;;;AACtD,UAAM,KAAKS,eAAe,CAAClC,WAAWA,OAAOmC,MAAM;MAAEH;MAAOC;IAAK,CAAA,CAAA;EACnE;EAEA,MAAMG,MAAM,EAAEJ,MAAK,GAA0C;AAC3D,UAAM,IAAIK,MAAM,iBAAA;EAClB;EAEA,MAAMC,YAAY,EAAEC,QAAQC,WAAWC,QAAO,GAA4B;AACxE7C,IAAAA,KAAI,UAAU;MAAE4C;IAAU,GAAA;;;;;;AAC1BlB,IAAAA,WAAU,KAAKC,oBAAoBC,eAAeC,MAAI,QAAA;;;;;;;;;AAEtD,SAAK,KAAKS,eAAe,OAAOlC,QAAQqB,YAAYqB,UAAAA;AAClD,WAAK1C,OACFsC,YAAY;QAAEC;QAAQC;QAAWC;MAAQ,CAAA,EACzCE,KAAK,MAAM,KAAKC,uBAAuBvB,YAAYqB,KAAAA,CAAAA,EACnDG,MAAM,CAACC,QAAAA;AACN,YAAIA,eAAeC,wBAAwB;AACzCnD,UAAAA,KAAIoD,KAAK,2BAA2B;YAAEF;UAAI,GAAA;;;;;;AAC1C,eAAKhE,SAASmE,wBAAuB;QACvC,WAAWH,eAAeI,iBAAgBJ,IAAI,YAAYK,SAAS,gBAAgB;AACjFvD,UAAAA,KAAIoD,KAAK,2BAA2B;YAAEF;UAAI,GAAA;;;;;;AAC1C,eAAK,KAAKM,mBAAmB/B,YAAYqB,KAAAA;QAC3C,OAAO;AACL9C,UAAAA,KAAIyD,KAAK,oBAAoBhC,UAAAA,IAAc;YAAEyB;UAAI,GAAA;;;;;;AACjD,eAAK,KAAKM,mBAAmB/B,YAAYqB,KAAAA;QAC3C;MACF,CAAA;IACJ,CAAA;EACF;EAEA,MACMU,mBAAmB/B,YAAoBqB,OAA8B;AACzE,UAAMzD,eAAe,KAAKA,aAAayC,IAAIL,UAAAA,KAAgB;AAC3D,UAAMiC,oBAAoBrE,eAAeT;AACzC,SAAKM,SAASyE,oBAAoB;MAAElC;MAAYmC,aAAaF;IAAkB,CAAA;AAC/E,QAAIA,mBAAmB;AACrB,UAAI,CAAC/C,SAASmB,IAAI,KAAK1C,wBAAwB0D,KAAAA,GAAQ;AACrD9C,QAAAA,KAAIyD,KAAK,+CAA+C;UAAEhC;UAAYpC;QAAa,GAAA;;;;;;AACnFsB,iBAASD,IAAI,KAAKtB,wBAAwB0D,OAAO,IAAA;MACnD;AACA,YAAM,KAAKtB,cAAcC,UAAAA;AACzB,WAAKpC,aAAaqB,IAAIe,YAAa,CAAA;AACnC;IACF;AAEA,SAAKpC,aAAaqB,IAAIe,aAAc,KAAKpC,aAAayC,IAAIL,UAAAA,KAAgB,KAAK,CAAA;EACjF;EAEQuB,uBAAuBvB,YAAoBqB,OAAqB;AACtE,QAAInC,SAASmB,IAAI,KAAK1C,wBAAwB0D,KAAAA,GAAQ;AACpD9C,MAAAA,KAAIoD,KAAK,8BAA8B;QAAE3B;MAAW,GAAA;;;;;;AACpDd,eAASD,IAAI,KAAKtB,wBAAwB0D,OAAO,KAAA;AACjD,WAAKzD,aAAaqB,IAAIe,YAAa,CAAA;IACrC;EACF;EAEA,MAAMoC,kBAAkBxB,MAA+B;AACrDrC,IAAAA,KAAI,iCAAiC;MAAEqC;IAAK,GAAA;;;;;;AAC5CX,IAAAA,WAAU,KAAKC,oBAAoBC,eAAeC,MAAI,QAAA;;;;;;;;;AAEtD,UAAM,KAAKS,eAAe,OAAOlC,WAAWA,OAAOyD,kBAAkBxB,IAAAA,CAAAA;EACvE;EAEA,MAAMyB,oBAAoBzB,MAA+B;AACvDrC,IAAAA,KAAI,iCAAiC;MAAEqC;IAAK,GAAA;;;;;;AAC5CX,IAAAA,WAAU,KAAKC,oBAAoBC,eAAeC,MAAI,QAAA;;;;;;;;;AAEtD,UAAM,KAAKS,eAAe,OAAOlC,WAAWA,OAAO0D,oBAAoBzB,IAAAA,CAAAA;EACzE;EAEA,MAAcC,eACZyB,IACuB;AACvB,WAAOC,QAAQC,IACbjC,MAAMC,KAAK,KAAKjD,SAASkF,QAAO,CAAA,EAAIhC,IAAI,CAAC,CAACT,YAAYrB,MAAAA,GAAS+D,QAAQJ,GAAG3D,QAAQqB,YAAY0C,GAAAA,CAAAA,CAAAA;EAElG;AACF;;;;;;;;;;;;AE9LA,SAASC,SAAAA,QAAOC,yBAAyB;AACzC,SAASC,YAAAA,WAAUC,qBAAAA,0BAAyB;AAC5C,SAA8BC,0BAA0BC,gBAAgB;AACxE,SAASC,aAAAA,kBAAiB;AAC1B,SAASC,aAAAA,kBAAiB;AAC1B,SAASC,OAAAA,YAAW;AACpB,SAASC,mBAAmB;AAC5B,SAAmBC,cAAc;AACjC,SAGEC,uBAAuBC,oBACvBC,oBACAC,2BACK;AAEP,SAASC,cAAAA,aAAYC,cAAAA,mBAAkB;;AAMhC,IAAMC,oBAAN,cAAgCC,UAAAA;;;;EAI9BC,aAAa,IAAIC,OAAAA;EACjBC,aAAa,IAAID,OAAAA;EACjBE,YAAY,IAAIF,OAAAA;;;;;EAMNG,cAAc,IAAIC,YAGjCC,WAAUC,IAAI;EAECC;EAEjB,YAAY,EAAEC,eAAc,GAAwC;AAClE,UAAK;AACL,SAAKD,kBAAkBC;EACzB;EAEA,MAAyBC,QAAuB;AAC9C,SAAKC,KAAKC,UAAU,KAAKJ,gBAAgBL,UAAU,CAACU,YAAY,KAAKC,WAAWD,OAAAA,CAAAA,CAAAA;AAChF,SAAKF,KAAKC,UACR,KAAKJ,gBAAgBO,cAAc,MAAA;AACjCC,wBAAkB,KAAKL,MAAM,MAAM,KAAKM,iBAAgB,CAAA;IAC1D,CAAA,CAAA;EAEJ;;;;EAKA,MAAMC,KAAK,EAAEC,OAAOC,KAAI,GAAyD;AAC/E,QAAI,CAAC,KAAKC,mBAAmBD,IAAAA,GAAO;AAElCE,MAAAA,KAAIC,KAAK,sCAAsC;QAC7CH;QACAI,UAAU;UACRC,SAAS,KAAKjB,gBAAgBiB;UAC9BC,aAAa,KAAKlB,gBAAgBkB;QACpC;MACF,GAAA;;;;;;AAEAN,WAAKM,cAAc,KAAKlB,gBAAgBkB;AACxCN,WAAKK,UAAU,KAAKjB,gBAAgBiB;IACtC;AAEA,SAAKrB,YAAYuB,IAAIR,OAAO;MAAES,WAAWR,KAAKS;MAAOC,aAAa,IAAIC,YAAqBC,YAAAA;IAAc,CAAA;AACzG,UAAM,KAAKxB,gBAAgByB,KACzBC,SAASC,cAAcC,oBAAoB;MACzCC,WAAWC,YAAYC;MACvBC,QAAQC,oBAAoBtB,OAAOC,IAAAA;MACnCsB,SAAS;QAAEC,QAAQC,mBAAmBC;QAAMC,WAAW;UAAC3B,MAAM4B,MAAK;;MAAI;IACzE,CAAA,CAAA;EAEJ;EAEA,MAAMC,MAAM,EAAE7B,OAAOC,KAAI,GAAyD;AAChF,SAAKhB,YAAY6C,OAAO9B,KAAAA;AACxB,QAAI;AACF,YAAM,KAAKX,gBAAgByB,KACzBC,SAASC,cAAcC,oBAAoB;QACzCC,WAAWC,YAAYC;QACvBC,QAAQC,oBAAoBtB,OAAOC,IAAAA;QACnCsB,SAAS;UAAEC,QAAQC,mBAAmBM;UAAOJ,WAAW;YAAC3B,MAAM4B,MAAK;;QAAI;MAC1E,CAAA,CAAA;IAEJ,SAASI,KAAK;AACZ,UAAIA,eAAeC,0BAA0B;AAG3C;MACF;AACA,YAAMD;IACR;EACF;EAEA,MAAME,MAAM,EAAElC,MAAK,GAAkD;AACnE,UAAMmC,WAAWC,mBACf,KAAK5C,MACL,KAAKT,WAAWsD,QAAQ,CAAC3B,UAAUA,MAAM4B,aAAatC,MAAM4B,MAAK,CAAA,CAAA;AAGnE,UAAM,KAAKvC,gBAAgByB,KACzBC,SAASC,cAAcC,oBAAoB;MACzCC,WAAWC,YAAYC;MACvBC,QAAQC,oBAAoBtB,OAAO;QACjCM,SAAS,KAAKjB,gBAAgBiB;QAC9BC,aAAa,KAAKlB,gBAAgBkB;MACpC,CAAA;MACAgB,SAAS;QAAEC,QAAQC,mBAAmBc;QAAMZ,WAAW;UAAC3B,MAAM4B,MAAK;;MAAI;IACzE,CAAA,CAAA;AAGF,WAAOO;EACT;EAEA,MAAMK,YAAY9C,SAAiC;AACjD,QAAI,CAAC,KAAKQ,mBAAmBR,QAAQ+C,MAAM,GAAG;AAE5CtC,MAAAA,KAAIC,KAAK,mCAAmC;QAC1CqC,QAAQ/C,QAAQ+C;QAChBpC,UAAU;UAAEC,SAAS,KAAKjB,gBAAgBiB;UAASC,aAAa,KAAKlB,gBAAgBkB;QAAY;MACnG,GAAA;;;;;;IACF;AAEA,UAAM,KAAKlB,gBAAgByB,KACzBC,SAASC,cAAc0B,OAAOC,WAAW;MACvCzB,WAAWC,YAAYyB;MACvBvB,QAAQ3B,QAAQ+C;MAChBI,QAAQ;QAACnD,QAAQoD;;MACjBvB,SAAS;QAAEwB,SAASrD,QAAQ6B,QAAQyB;QAAUC,OAAOvD,QAAQ6B,QAAQ0B;MAAM;IAC7E,CAAA,CAAA;EAEJ;EAEA,MAAMC,kBAAkBC,UAAmC;EAE3D;EAEA,MAAMC,oBAAoBD,UAAmC;EAE7D;EAEQxD,WAAWD,SAA4B;AAC7C,YAAQA,QAAQwB,WAAS;MACvB,KAAKC,YAAYC,OAAO;AACtB,aAAKiC,sBAAsB3D,OAAAA;AAC3B;MACF;MACA,KAAKyB,YAAYyB,QAAQ;AACvB,aAAKU,gBAAgB5D,OAAAA;MACvB;IACF;EACF;EAEQ2D,sBAAsB3D,SAA4B;AACxD6D,IAAAA,WAAUxC,SAASyC,eAAe9D,OAAAA,MAAa+D,oBAAoBC,UAAU,sBAAA;;;;;;;;;AAC7E,UAAMnC,UAAUR,SAAS4C,WAAWjE,SAAS+D,mBAAAA;AAC7C,SAAK1E,WAAW6E,KAAKrC,OAAAA;AACrB,UAAMvB,QAAQb,WAAU0E,KAAKtC,QAAQe,QAAQ;AAC7C,QAAI,CAAC,KAAKrD,YAAY6E,IAAI9D,KAAAA,GAAQ;AAChC;IACF;AAEA,UAAM,EAAEW,aAAaoD,SAAQ,IAAK,KAAK9E,YAAY+E,IAAIhE,KAAAA;AACvD,UAAMiE,YAAYvE,QAAQuE,YAAY,IAAIC,KAAKA,KAAKC,MAAMzE,QAAQuE,SAAS,CAAA,IAAK,oBAAIC,KAAAA;AACpF,UAAME,WAAW,IAAIxD,YAAqBC,cAAcU,QAAQ8C,KAAK;AAGrE,eAAWpE,QAAQmE,UAAU;AAC3B,UAAIL,SAASD,IAAI7D,IAAAA,GAAO;AACtB;MACF;AACA,WAAKpB,WAAW+E,KAAK;QACnB5D;QACAsE,eAAe;UAAErE;UAAMsE,OAAON;QAAU;MAC1C,CAAA;IACF;AAGA,eAAWhE,QAAQ8D,UAAU;AAC3B,UAAIK,SAASN,IAAI7D,IAAAA,GAAO;AACtB;MACF;AACA,WAAKpB,WAAW+E,KAAK;QACnB5D;QACAwE,UAAU;UAAEvE;QAAK;MACnB,CAAA;IACF;AAEA,SAAKhB,YAAY+E,IAAIhE,KAAAA,EAAQW,cAAcyD;EAC7C;EAEQd,gBAAgB5D,SAA4B;AAClD6D,IAAAA,WAAUxC,SAASyC,eAAe9D,OAAAA,MAAagD,OAAOC,UAAUe,UAAU,sBAAA;;;;;;;;;AAC1E,UAAMnC,UAAUR,SAAS4C,WAAWjE,SAASgD,OAAOC,SAAS;AAC7DY,IAAAA,WAAU7D,QAAQ2B,QAAQ,qBAAA;;;;;;;;;AAC1BkC,IAAAA,WAAU7D,QAAQmD,QAAQ,qBAAA;;;;;;;;;AAC1BU,IAAAA,WAAU7D,QAAQmD,OAAO4B,WAAW,GAAG,uCAAA;;;;;;;;;AAEvC,SAAKzF,UAAU4E,KAAK;MAClBnB,QAAQ/C,QAAQ2B;MAChByB,WAAWpD,QAAQmD,OAAO,CAAA;MAC1BtB,SAAS;QACPyB,UAAUzB,QAAQwB;QAClBE,OAAO1B,QAAQ0B;MACjB;IACF,CAAA;EACF;EAEQ/C,mBAAmBD,MAAyB;AAClD,WACEA,SAASA,KAAKK,YAAY,KAAKjB,gBAAgBiB,WAAWL,KAAKM,gBAAgB,KAAKlB,gBAAgBkB;EAExG;EAEA,MAAcT,mBAAkC;AAC9CK,IAAAA,KAAI,iBAAiB;MAAEuE,QAAQC,MAAMd,KAAK,KAAK5E,YAAY2F,KAAI,CAAA;IAAI,GAAA;;;;;;AACnE,eAAW,CAAC5E,OAAO,EAAES,UAAS,CAAE,KAAK,KAAKxB,YAAY4F,QAAO,GAAI;AAC/D,YAAM,KAAK9E,KAAK;QACdC;QACAC,MAAM;UACJK,SAAS,KAAKjB,gBAAgBiB;UAC9BC,aAAa,KAAKlB,gBAAgBkB;UAClCG,OAAOD;QACT;MACF,CAAA;IACF;EACF;AACF;AAEA,IAAMa,sBAAsB,CAACtB,OAAkBmD,aAAAA;AAC7C,SAAO;IACLb,UAAUtC,MAAM4B,MAAK;IACrB,GAAGuB;EACL;AACF;;;ACnPA,SAAS2B,aAAAA,kBAAiB;AAC1B,SAASC,OAAAA,YAAW;AAEpB,SAASC,kBAAkB;;AAEpB,IAAMC,kBAAkB,CAAC,EAC9BC,iBACAC,gBACAC,OAAM,MAKP;AACCF,kBAAgBG,cAAa,EAAGC,UAAU,CAACC,SAAAA;AACzC,QAAI,CAACA,MAAMC,UAAUC,aAAa;AAChCV,MAAAA,KAAI,wCAAwC;QAAEQ;MAAK,GAAA;;;;;;AACnD;IACF;AAEAH,WAAO,eAAeG,KAAKC,SAASC,YAAYC,SAAQ,CAAA;EAC1D,CAAA;AAEAP,iBAAeQ,aAAY,EAAGL,UAAU,CAACM,QAAAA;AACvC,QAAI,CAACA,OAAO,CAACA,IAAIC,WAAWD,IAAIC,QAAQC,WAAW,GAAG;AACpDf,MAAAA,KAAI,sCAAsC;QAAEgB,QAAQH;MAAI,GAAA;;;;;;AACxD;IACF;AACAd,IAAAA,WAAUc,KAAK,sCAAA;;;;;;;;;AAEf,UAAMI,aAAaJ,IAAIC,QAAQI,KAAK,CAACF,WAAWA,OAAOG,SAASlB,WAAWmB,OAAO;AAClF,QAAI,CAACH,YAAY;AACfjB,MAAAA,KAAI,qBAAqB;QAAEgB,QAAQH;MAAI,GAAA;;;;;;AACvC;IACF;AACAR,WAAO,aAAaY,WAAWI,UAAUV,SAAQ,CAAA;EACnD,CAAA;AACF;",
|
|
6
|
+
"names": ["TimeoutError", "scheduleExponentialBackoffTaskInterval", "scheduleTask", "scheduleTaskInterval", "Context", "invariant", "PublicKey", "log", "ProtocolTimeoutError", "trace", "schema", "ComplexMap", "ComplexSet", "trace", "MessengerMonitor", "recordMessageAckFailed", "trace", "metrics", "increment", "recordReliableMessage", "params", "tags", "success", "sent", "attempts", "sendAttempts", "MESSAGE_TIMEOUT", "ReliablePayload", "schema", "getCodecForType", "Acknowledgement", "RECEIVED_MESSAGES_GC_INTERVAL", "Messenger", "_monitor", "MessengerMonitor", "_signalManager", "_listeners", "ComplexMap", "peerId", "payloadType", "_defaultListeners", "Map", "_onAckCallbacks", "PublicKey", "hash", "_receivedMessages", "ComplexSet", "_toClear", "_ctx", "_closed", "_retryDelay", "signalManager", "retryDelay", "open", "traceId", "random", "toHex", "log", "trace", "begin", "id", "Context", "onError", "err", "catch", "onDispose", "onMessage", "on", "message", "from", "author", "_handleMessage", "scheduleTaskInterval", "_performGc", "end", "close", "dispose", "sendMessage", "recipient", "payload", "invariant", "messageContext", "derive", "reliablePayload", "messageId", "has", "messageReceived", "timeoutHit", "sendAttempts", "promise", "Promise", "resolve", "reject", "scheduleExponentialBackoffTaskInterval", "_encodeAndSend", "scheduleTask", "delete", "ProtocolTimeoutError", "TimeoutError", "MESSAGE_TIMEOUT", "recordReliableMessage", "sent", "set", "listen", "peer", "subscribeMessages", "listeners", "peerKey", "get", "Set", "add", "unsubscribe", "type_url", "value", "encode", "preserveAny", "_handleReliablePayload", "_handleAcknowledgement", "decode", "_sendAcknowledgement", "recordMessageAckFailed", "_callListeners", "to", "defaultListenerMap", "listener", "listenerMap", "start", "performance", "now", "key", "keys", "clear", "elapsed", "warn", "DeferredTask", "Event", "Trigger", "scheduleTask", "scheduleTaskInterval", "sleep", "Resource", "cancelWithContext", "invariant", "PublicKey", "log", "trace", "SignalState", "trace", "SignalClientMonitor", "_performance", "sentMessages", "receivedMessages", "reconnectCounter", "joinCounter", "leaveCounter", "_connectionStarted", "Date", "_lastStateChange", "getRecordedTimestamps", "connectionStarted", "lastStateChange", "recordStateChangeTime", "recordConnectionStartTime", "recordReconnect", "params", "trace", "metrics", "increment", "tags", "success", "recordJoin", "recordLeave", "recordMessageReceived", "message", "createIdentityTags", "distribution", "getByteCount", "recordMessageSending", "sendMessage", "reqStart", "now", "reqDuration", "err", "recordStreamCloseErrors", "count", "recordReconciliation", "author", "peerKey", "length", "recipient", "payload", "type_url", "value", "peer", "Event", "asyncTimeout", "cancelWithContext", "PublicKey", "log", "ComplexMap", "ComplexSet", "safeAwaitAll", "SignalLocalState", "_swarmStreams", "topic", "peerId", "toHex", "_joinedTopics", "_subscribedMessages", "messageStreams", "key", "reconciled", "_onMessage", "_onSwarmEvent", "safeCloseStreams", "streams", "values", "concat", "clear", "failureCount", "s", "close", "length", "join", "add", "leave", "get", "delete", "subscribeMessages", "unsubscribeMessages", "reconcile", "ctx", "client", "_reconcileSwarmSubscriptions", "_reconcileMessageSubscriptions", "emit", "keys", "has", "swarmStream", "subscribe", "swarmEvent", "event", "peerAvailable", "peer", "peerKey", "from", "peerLeft", "set", "messageStream", "receiveMessages", "signalMessage", "message", "author", "recipient", "payload", "WebSocket", "TimeoutError", "Trigger", "scheduleTaskInterval", "Context", "invariant", "PublicKey", "log", "trace", "schema", "createProtoRpcPeer", "trace", "SignalRpcClientMonitor", "recordClientCloseFailure", "params", "trace", "metrics", "increment", "tags", "reason", "failureReason", "SIGNAL_KEEPALIVE_INTERVAL", "SignalRPCClient", "_socket", "_rpc", "_connectTrigger", "Trigger", "_keepaliveCtx", "_closed", "_url", "_callbacks", "_closeComplete", "_monitor", "SignalRpcClientMonitor", "url", "callbacks", "traceId", "PublicKey", "random", "toHex", "log", "trace", "begin", "id", "WebSocket", "createProtoRpcPeer", "requested", "Signal", "schema", "getService", "noHandshake", "port", "send", "msg", "err", "warn", "subscribe", "cb", "onmessage", "Blob", "data", "Buffer", "from", "arrayBuffer", "encodingOptions", "preserveAny", "onopen", "open", "_safeCloseRpc", "onConnected", "wake", "Context", "scheduleTaskInterval", "onError", "close", "onclose", "onDisconnected", "onerror", "event", "error", "Error", "message", "type", "end", "dispose", "readyState", "OPEN", "CONNECTING", "wait", "timeout", "failureReason", "TimeoutError", "name", "recordClientCloseFailure", "join", "topic", "peerId", "metadata", "getMetadata", "invariant", "swarmStream", "rpc", "swarm", "asUint8Array", "peer", "waitUntilReady", "receiveMessages", "messageStream", "sendMessage", "author", "recipient", "payload", "reset", "catch", "DEFAULT_RECONNECT_TIMEOUT", "MAX_RECONNECT_TIMEOUT", "ERROR_RECONCILE_DELAY", "RECONCILE_INTERVAL", "SignalClient", "Resource", "_monitor", "SignalClientMonitor", "_state", "SignalState", "CLOSED", "_lastError", "_lastReconciliationFailed", "_clientReady", "Trigger", "_connectionCtx", "_client", "_reconcileTask", "_reconnectTask", "_reconnectAfter", "_instanceId", "PublicKey", "random", "toHex", "localState", "statusChanged", "Event", "onMessage", "swarmEvent", "_host", "_getMetadata", "startsWith", "Error", "SignalLocalState", "message", "recordMessageReceived", "emit", "event", "_open", "log", "trace", "begin", "id", "CONNECTED", "CONNECTING", "includes", "_setState", "DeferredTask", "_ctx", "cancelWithContext", "wait", "timeout", "invariant", "reconcile", "recordReconciliation", "success", "err", "scheduleTaskInterval", "schedule", "_reconnect", "recordReconnect", "_createClient", "end", "_catch", "disposed", "warn", "_scheduleReconcileAfterError", "_close", "_safeResetClient", "getStatus", "host", "state", "error", "reconnectIn", "getRecordedTimestamps", "join", "args", "topic", "peerId", "peer", "peerKey", "recordJoin", "from", "leave", "recordLeave", "query", "params", "sendMessage", "msg", "recordMessageSending", "author", "recipient", "payload", "subscribeMessages", "unsubscribeMessages", "scheduleTask", "recordConnectionStartTime", "derive", "onDispose", "failureCount", "safeCloseStreams", "recordStreamCloseErrors", "client", "SignalRPCClient", "url", "callbacks", "onConnected", "_onConnected", "onDisconnected", "ERROR", "DISCONNECTED", "_onDisconnected", "onError", "getMetadata", "undefined", "RECONNECTING", "info", "sleep", "wake", "options", "_updateReconnectTimeout", "newState", "recordStateChangeTime", "status", "Math", "min", "dispose", "reset", "close", "catch", "PeerInfoHash", "peerKey", "Event", "Trigger", "Context", "invariant", "PublicKey", "log", "schema", "ComplexMap", "ComplexSet", "MemorySignalManagerContext", "swarmEvent", "Event", "swarms", "ComplexMap", "PublicKey", "hash", "connections", "PeerInfoHash", "MemorySignalManager", "statusChanged", "onMessage", "_joinedSwarms", "ComplexSet", "topic", "peer", "toHex", "peerKey", "_ctx", "_freezeTrigger", "Trigger", "wake", "_context", "Context", "onDispose", "on", "data", "emit", "open", "disposed", "Promise", "all", "values", "map", "value", "join", "close", "joinedSwarmsCopy", "leave", "dispose", "getStatus", "invariant", "add", "has", "set", "get", "peerAvailable", "since", "Date", "peers", "Array", "from", "forEach", "delete", "peerLeft", "query", "request", "Error", "sendMessage", "author", "recipient", "payload", "log", "dec", "wait", "remote", "warn", "then", "catch", "err", "error", "subscribeMessages", "peerInfo", "unsubscribeMessages", "freeze", "reset", "unfreeze", "type_url", "endsWith", "relPayload", "schema", "getCodecForType", "decode", "Object", "keys", "sessionId", "Event", "sleep", "synchronized", "LifecycleState", "Resource", "invariant", "PublicKey", "log", "RateLimitExceededError", "TimeoutError", "trace", "BitField", "safeAwaitAll", "trace", "WebsocketSignalManagerMonitor", "recordRateLimitExceeded", "trace", "metrics", "increment", "recordServerFailure", "params", "tags", "server", "serverName", "restarted", "willRestart", "MAX_SERVER_FAILURES", "WSS_SIGNAL_SERVER_REBOOT_DELAY", "WebsocketSignalManager", "Resource", "_servers", "Map", "_monitor", "WebsocketSignalManagerMonitor", "_failedServersBitfield", "failureCount", "statusChanged", "Event", "swarmEvent", "onMessage", "_instanceId", "PublicKey", "random", "toHex", "_hosts", "_getMetadata", "log", "hosts", "host", "has", "server", "SignalClient", "on", "data", "emit", "getStatus", "set", "BitField", "zeros", "length", "_open", "trace", "begin", "id", "safeAwaitAll", "values", "open", "end", "_close", "close", "restartServer", "serverName", "invariant", "_lifecycleState", "LifecycleState", "OPEN", "get", "sleep", "Array", "from", "map", "join", "topic", "peer", "_forEachServer", "leave", "query", "Error", "sendMessage", "author", "recipient", "payload", "index", "then", "_clearServerFailedFlag", "catch", "err", "RateLimitExceededError", "info", "recordRateLimitExceeded", "TimeoutError", "name", "checkServerFailure", "warn", "isRestartRequired", "recordServerFailure", "willRestart", "subscribeMessages", "unsubscribeMessages", "fn", "Promise", "all", "entries", "idx", "Event", "scheduleMicroTask", "Resource", "cancelWithContext", "EdgeIdentityChangedError", "protocol", "invariant", "PublicKey", "log", "EdgeService", "bufWkt", "SwarmRequest_Action", "SwarmRequestAction", "SwarmRequestSchema", "SwarmResponseSchema", "ComplexMap", "ComplexSet", "EdgeSignalManager", "Resource", "swarmEvent", "Event", "swarmState", "onMessage", "_swarmPeers", "ComplexMap", "PublicKey", "hash", "_edgeConnection", "edgeConnection", "_open", "_ctx", "onDispose", "message", "_onMessage", "onReconnected", "scheduleMicroTask", "_rejoinAllSwarms", "join", "topic", "peer", "_matchSelfPeerInfo", "log", "warn", "expected", "peerKey", "identityKey", "set", "lastState", "state", "joinedPeers", "ComplexSet", "PeerInfoHash", "send", "protocol", "createMessage", "SwarmRequestSchema", "serviceId", "EdgeService", "SWARM", "source", "createMessageSource", "payload", "action", "SwarmRequestAction", "JOIN", "swarmKeys", "toHex", "leave", "delete", "LEAVE", "err", "EdgeIdentityChangedError", "query", "response", "cancelWithContext", "waitFor", "swarmKey", "INFO", "sendMessage", "author", "bufWkt", "AnySchema", "SIGNAL", "target", "recipient", "typeUrl", "type_url", "value", "subscribeMessages", "peerInfo", "unsubscribeMessages", "_processSwarmResponse", "_processMessage", "invariant", "getPayloadType", "SwarmResponseSchema", "typeName", "getPayload", "emit", "from", "has", "oldPeers", "get", "timestamp", "Date", "parse", "newPeers", "peers", "peerAvailable", "since", "peerLeft", "length", "swarms", "Array", "keys", "entries", "invariant", "log", "DeviceKind", "setIdentityTags", "identityService", "devicesService", "setTag", "queryIdentity", "subscribe", "idqr", "identity", "identityKey", "truncate", "queryDevices", "dqr", "devices", "length", "device", "thisDevice", "find", "kind", "CURRENT", "deviceKey"]
|
|
7
7
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"inputs":{"src/messenger-monitor.ts":{"bytes":2027,"imports":[{"path":"@dxos/tracing","kind":"import-statement","external":true}],"format":"esm"},"src/timeouts.ts":{"bytes":642,"imports":[],"format":"esm"},"src/messenger.ts":{"bytes":37788,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/protocols/proto","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"src/messenger-monitor.ts","kind":"import-statement","original":"./messenger-monitor"},{"path":"src/timeouts.ts","kind":"import-statement","original":"./timeouts"}],"format":"esm"},"src/signal-client/signal-client-monitor.ts":{"bytes":11484,"imports":[{"path":"@dxos/tracing","kind":"import-statement","external":true}],"format":"esm"},"src/signal-client/signal-local-state.ts":{"bytes":22868,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true}],"format":"esm"},"src/signal-client/signal-rpc-client-monitor.ts":{"bytes":1561,"imports":[{"path":"@dxos/tracing","kind":"import-statement","external":true}],"format":"esm"},"src/signal-client/signal-rpc-client.ts":{"bytes":26598,"imports":[{"path":"isomorphic-ws","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/protocols/proto","kind":"import-statement","external":true},{"path":"@dxos/rpc","kind":"import-statement","external":true},{"path":"src/signal-client/signal-rpc-client-monitor.ts","kind":"import-statement","original":"./signal-rpc-client-monitor"}],"format":"esm"},"src/signal-client/signal-client.ts":{"bytes":45045,"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":"src/signal-client/signal-client-monitor.ts","kind":"import-statement","original":"./signal-client-monitor"},{"path":"src/signal-client/signal-local-state.ts","kind":"import-statement","original":"./signal-local-state"},{"path":"src/signal-client/signal-rpc-client.ts","kind":"import-statement","original":"./signal-rpc-client"}],"format":"esm"},"src/signal-client/index.ts":{"bytes":486,"imports":[{"path":"src/signal-client/signal-client.ts","kind":"import-statement","original":"./signal-client"}],"format":"esm"},"src/signal-methods.ts":{"bytes":3512,"imports":[],"format":"esm"},"src/signal-manager/memory-signal-manager.ts":{"bytes":25126,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols/proto","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"src/signal-methods.ts","kind":"import-statement","original":"../signal-methods"}],"format":"esm"},"src/signal-manager/websocket-signal-manager-monitor.ts":{"bytes":2181,"imports":[{"path":"@dxos/tracing","kind":"import-statement","external":true}],"format":"esm"},"src/signal-manager/websocket-signal-manager.ts":{"bytes":30236,"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":"src/signal-client/index.ts","kind":"import-statement","original":"../signal-client"},{"path":"src/signal-manager/websocket-signal-manager-monitor.ts","kind":"import-statement","original":"./websocket-signal-manager-monitor"}],"format":"esm"},"src/signal-manager/edge-signal-manager.ts":{"bytes":30615,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/edge-client","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/protocols/buf","kind":"import-statement","external":true},{"path":"@dxos/protocols/buf/dxos/edge/messenger_pb","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"src/signal-methods.ts","kind":"import-statement","original":"../signal-methods"}],"format":"esm"},"src/signal-manager/utils.ts":{"bytes":5134,"imports":[{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols/proto/dxos/client/services","kind":"import-statement","external":true}],"format":"esm"},"src/signal-manager/index.ts":{"bytes":883,"imports":[{"path":"src/signal-manager/memory-signal-manager.ts","kind":"import-statement","original":"./memory-signal-manager"},{"path":"src/signal-manager/websocket-signal-manager.ts","kind":"import-statement","original":"./websocket-signal-manager"},{"path":"src/signal-manager/edge-signal-manager.ts","kind":"import-statement","original":"./edge-signal-manager"},{"path":"src/signal-manager/utils.ts","kind":"import-statement","original":"./utils"}],"format":"esm"},"src/index.ts":{"bytes":769,"imports":[{"path":"src/messenger.ts","kind":"import-statement","original":"./messenger"},{"path":"src/signal-client/index.ts","kind":"import-statement","original":"./signal-client"},{"path":"src/signal-manager/index.ts","kind":"import-statement","original":"./signal-manager"},{"path":"src/signal-methods.ts","kind":"import-statement","original":"./signal-methods"}],"format":"esm"},"src/testing/test-messages.ts":{"bytes":2018,"imports":[],"format":"esm"},"src/testing/utils.ts":{"bytes":5844,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"src/testing/test-messages.ts","kind":"import-statement","original":"./test-messages"}],"format":"esm"},"src/testing/test-peer.ts":{"bytes":8024,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/edge-client","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols/buf","kind":"import-statement","external":true},{"path":"src/messenger.ts","kind":"import-statement","original":"../messenger"},{"path":"src/testing/utils.ts","kind":"import-statement","original":"./utils"}],"format":"esm"},"src/testing/test-builder.ts":{"bytes":6060,"imports":[{"path":"src/signal-manager/index.ts","kind":"import-statement","original":"../signal-manager"},{"path":"src/testing/test-peer.ts","kind":"import-statement","original":"./test-peer"}],"format":"esm"},"src/testing/index.ts":{"bytes":750,"imports":[{"path":"src/testing/test-builder.ts","kind":"import-statement","original":"./test-builder"},{"path":"src/testing/test-peer.ts","kind":"import-statement","original":"./test-peer"},{"path":"src/testing/test-messages.ts","kind":"import-statement","original":"./test-messages"},{"path":"src/testing/utils.ts","kind":"import-statement","original":"./utils"}],"format":"esm"}},"outputs":{"dist/lib/browser/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":93},"dist/lib/browser/index.mjs":{"imports":[{"path":"dist/lib/browser/chunk-CD3GXEDZ.mjs","kind":"import-statement"}],"exports":["EdgeSignalManager","MemorySignalManager","MemorySignalManagerContext","Messenger","PeerInfoHash","SignalClient","WebsocketSignalManager","setIdentityTags"],"entryPoint":"src/index.ts","inputs":{"src/index.ts":{"bytesInOutput":0}},"bytes":446},"dist/lib/browser/testing/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":10982},"dist/lib/browser/testing/index.mjs":{"imports":[{"path":"dist/lib/browser/chunk-CD3GXEDZ.mjs","kind":"import-statement"},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/edge-client","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols/buf","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true}],"exports":["PAYLOAD_1","PAYLOAD_2","PAYLOAD_3","TestBuilder","TestPeer","createMessage","expectPeerAvailable","expectPeerLeft","expectReceivedMessage","messageEqual"],"entryPoint":"src/testing/index.ts","inputs":{"src/testing/test-peer.ts":{"bytesInOutput":2125},"src/testing/utils.ts":{"bytesInOutput":1132},"src/testing/test-messages.ts":{"bytesInOutput":330},"src/testing/test-builder.ts":{"bytesInOutput":1389},"src/testing/index.ts":{"bytesInOutput":0}},"bytes":5499},"dist/lib/browser/chunk-CD3GXEDZ.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":114690},"dist/lib/browser/chunk-CD3GXEDZ.mjs":{"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/protocols/proto","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"@dxos/tracing","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/protocols/proto/dxos/mesh/signal","kind":"import-statement","external":true},{"path":"@dxos/tracing","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"isomorphic-ws","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/protocols/proto","kind":"import-statement","external":true},{"path":"@dxos/rpc","kind":"import-statement","external":true},{"path":"@dxos/tracing","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols/proto","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"@dxos/tracing","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/edge-client","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/protocols/buf","kind":"import-statement","external":true},{"path":"@dxos/protocols/buf/dxos/edge/messenger_pb","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols/proto/dxos/client/services","kind":"import-statement","external":true}],"exports":["EdgeSignalManager","MemorySignalManager","MemorySignalManagerContext","Messenger","PeerInfoHash","SignalClient","WebsocketSignalManager","setIdentityTags"],"inputs":{"src/messenger.ts":{"bytesInOutput":10933},"src/messenger-monitor.ts":{"bytesInOutput":392},"src/timeouts.ts":{"bytesInOutput":27},"src/signal-client/signal-client.ts":{"bytesInOutput":13508},"src/signal-client/signal-client-monitor.ts":{"bytesInOutput":3013},"src/signal-client/signal-local-state.ts":{"bytesInOutput":5631},"src/signal-client/signal-rpc-client.ts":{"bytesInOutput":7392},"src/signal-client/signal-rpc-client-monitor.ts":{"bytesInOutput":283},"src/signal-client/index.ts":{"bytesInOutput":0},"src/signal-methods.ts":{"bytesInOutput":45},"src/signal-manager/memory-signal-manager.ts":{"bytesInOutput":7155},"src/signal-manager/websocket-signal-manager.ts":{"bytesInOutput":10118},"src/signal-manager/websocket-signal-manager-monitor.ts":{"bytesInOutput":436},"src/signal-manager/edge-signal-manager.ts":{"bytesInOutput":8441},"src/signal-manager/utils.ts":{"bytesInOutput":1584},"src/signal-manager/index.ts":{"bytesInOutput":0}},"bytes":69921}}}
|
|
1
|
+
{"inputs":{"src/messenger-monitor.ts":{"bytes":2027,"imports":[{"path":"@dxos/tracing","kind":"import-statement","external":true}],"format":"esm"},"src/timeouts.ts":{"bytes":643,"imports":[],"format":"esm"},"src/messenger.ts":{"bytes":37125,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/protocols/proto","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"src/messenger-monitor.ts","kind":"import-statement","original":"./messenger-monitor"},{"path":"src/timeouts.ts","kind":"import-statement","original":"./timeouts"}],"format":"esm"},"src/signal-client/signal-client-monitor.ts":{"bytes":11033,"imports":[{"path":"@dxos/tracing","kind":"import-statement","external":true}],"format":"esm"},"src/signal-client/signal-local-state.ts":{"bytes":22089,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true}],"format":"esm"},"src/signal-client/signal-rpc-client-monitor.ts":{"bytes":1561,"imports":[{"path":"@dxos/tracing","kind":"import-statement","external":true}],"format":"esm"},"src/signal-client/signal-rpc-client.ts":{"bytes":25922,"imports":[{"path":"isomorphic-ws","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/protocols/proto","kind":"import-statement","external":true},{"path":"@dxos/rpc","kind":"import-statement","external":true},{"path":"src/signal-client/signal-rpc-client-monitor.ts","kind":"import-statement","original":"./signal-rpc-client-monitor"}],"format":"esm"},"src/signal-client/signal-client.ts":{"bytes":43780,"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":"src/signal-client/signal-client-monitor.ts","kind":"import-statement","original":"./signal-client-monitor"},{"path":"src/signal-client/signal-local-state.ts","kind":"import-statement","original":"./signal-local-state"},{"path":"src/signal-client/signal-rpc-client.ts","kind":"import-statement","original":"./signal-rpc-client"}],"format":"esm"},"src/signal-client/index.ts":{"bytes":486,"imports":[{"path":"src/signal-client/signal-client.ts","kind":"import-statement","original":"./signal-client"}],"format":"esm"},"src/signal-methods.ts":{"bytes":3512,"imports":[],"format":"esm"},"src/signal-manager/memory-signal-manager.ts":{"bytes":24195,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols/proto","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"src/signal-methods.ts","kind":"import-statement","original":"../signal-methods"}],"format":"esm"},"src/signal-manager/websocket-signal-manager-monitor.ts":{"bytes":2181,"imports":[{"path":"@dxos/tracing","kind":"import-statement","external":true}],"format":"esm"},"src/signal-manager/websocket-signal-manager.ts":{"bytes":29334,"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":"src/signal-client/index.ts","kind":"import-statement","original":"../signal-client"},{"path":"src/signal-manager/websocket-signal-manager-monitor.ts","kind":"import-statement","original":"./websocket-signal-manager-monitor"}],"format":"esm"},"src/signal-manager/edge-signal-manager.ts":{"bytes":30182,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/edge-client","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/protocols/buf","kind":"import-statement","external":true},{"path":"@dxos/protocols/buf/dxos/edge/messenger_pb","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"src/signal-methods.ts","kind":"import-statement","original":"../signal-methods"}],"format":"esm"},"src/signal-manager/utils.ts":{"bytes":5134,"imports":[{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols/proto/dxos/client/services","kind":"import-statement","external":true}],"format":"esm"},"src/signal-manager/index.ts":{"bytes":883,"imports":[{"path":"src/signal-manager/memory-signal-manager.ts","kind":"import-statement","original":"./memory-signal-manager"},{"path":"src/signal-manager/websocket-signal-manager.ts","kind":"import-statement","original":"./websocket-signal-manager"},{"path":"src/signal-manager/edge-signal-manager.ts","kind":"import-statement","original":"./edge-signal-manager"},{"path":"src/signal-manager/utils.ts","kind":"import-statement","original":"./utils"}],"format":"esm"},"src/index.ts":{"bytes":769,"imports":[{"path":"src/messenger.ts","kind":"import-statement","original":"./messenger"},{"path":"src/signal-client/index.ts","kind":"import-statement","original":"./signal-client"},{"path":"src/signal-manager/index.ts","kind":"import-statement","original":"./signal-manager"},{"path":"src/signal-methods.ts","kind":"import-statement","original":"./signal-methods"}],"format":"esm"},"src/testing/test-messages.ts":{"bytes":2018,"imports":[],"format":"esm"},"src/testing/utils.ts":{"bytes":5844,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"src/testing/test-messages.ts","kind":"import-statement","original":"./test-messages"}],"format":"esm"},"src/testing/test-peer.ts":{"bytes":7464,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/edge-client","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols/buf","kind":"import-statement","external":true},{"path":"src/messenger.ts","kind":"import-statement","original":"../messenger"},{"path":"src/testing/utils.ts","kind":"import-statement","original":"./utils"}],"format":"esm"},"src/testing/test-builder.ts":{"bytes":5533,"imports":[{"path":"src/signal-manager/index.ts","kind":"import-statement","original":"../signal-manager"},{"path":"src/testing/test-peer.ts","kind":"import-statement","original":"./test-peer"}],"format":"esm"},"src/testing/index.ts":{"bytes":750,"imports":[{"path":"src/testing/test-builder.ts","kind":"import-statement","original":"./test-builder"},{"path":"src/testing/test-peer.ts","kind":"import-statement","original":"./test-peer"},{"path":"src/testing/test-messages.ts","kind":"import-statement","original":"./test-messages"},{"path":"src/testing/utils.ts","kind":"import-statement","original":"./utils"}],"format":"esm"}},"outputs":{"dist/lib/browser/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":93},"dist/lib/browser/index.mjs":{"imports":[{"path":"dist/lib/browser/chunk-L7NDSF6K.mjs","kind":"import-statement"}],"exports":["EdgeSignalManager","MemorySignalManager","MemorySignalManagerContext","Messenger","PeerInfoHash","SignalClient","WebsocketSignalManager","setIdentityTags"],"entryPoint":"src/index.ts","inputs":{"src/index.ts":{"bytesInOutput":0}},"bytes":446},"dist/lib/browser/testing/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":10740},"dist/lib/browser/testing/index.mjs":{"imports":[{"path":"dist/lib/browser/chunk-L7NDSF6K.mjs","kind":"import-statement"},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/edge-client","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols/buf","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true}],"exports":["PAYLOAD_1","PAYLOAD_2","PAYLOAD_3","TestBuilder","TestPeer","createMessage","expectPeerAvailable","expectPeerLeft","expectReceivedMessage","messageEqual"],"entryPoint":"src/testing/index.ts","inputs":{"src/testing/test-peer.ts":{"bytesInOutput":1682},"src/testing/utils.ts":{"bytesInOutput":1132},"src/testing/test-messages.ts":{"bytesInOutput":330},"src/testing/test-builder.ts":{"bytesInOutput":987},"src/testing/index.ts":{"bytesInOutput":0}},"bytes":4654},"dist/lib/browser/chunk-L7NDSF6K.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":112689},"dist/lib/browser/chunk-L7NDSF6K.mjs":{"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/protocols/proto","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"@dxos/tracing","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/protocols/proto/dxos/mesh/signal","kind":"import-statement","external":true},{"path":"@dxos/tracing","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"isomorphic-ws","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/protocols/proto","kind":"import-statement","external":true},{"path":"@dxos/rpc","kind":"import-statement","external":true},{"path":"@dxos/tracing","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols/proto","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"@dxos/tracing","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/edge-client","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/protocols/buf","kind":"import-statement","external":true},{"path":"@dxos/protocols/buf/dxos/edge/messenger_pb","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols/proto/dxos/client/services","kind":"import-statement","external":true}],"exports":["EdgeSignalManager","MemorySignalManager","MemorySignalManagerContext","Messenger","PeerInfoHash","SignalClient","WebsocketSignalManager","setIdentityTags"],"inputs":{"src/messenger.ts":{"bytesInOutput":10553},"src/messenger-monitor.ts":{"bytesInOutput":392},"src/timeouts.ts":{"bytesInOutput":27},"src/signal-client/signal-client.ts":{"bytesInOutput":12514},"src/signal-client/signal-client-monitor.ts":{"bytesInOutput":2760},"src/signal-client/signal-local-state.ts":{"bytesInOutput":5394},"src/signal-client/signal-rpc-client.ts":{"bytesInOutput":6846},"src/signal-client/signal-rpc-client-monitor.ts":{"bytesInOutput":283},"src/signal-client/index.ts":{"bytesInOutput":0},"src/signal-methods.ts":{"bytesInOutput":45},"src/signal-manager/memory-signal-manager.ts":{"bytesInOutput":6655},"src/signal-manager/websocket-signal-manager.ts":{"bytesInOutput":9413},"src/signal-manager/websocket-signal-manager-monitor.ts":{"bytesInOutput":436},"src/signal-manager/edge-signal-manager.ts":{"bytesInOutput":8049},"src/signal-manager/utils.ts":{"bytesInOutput":1584},"src/signal-manager/index.ts":{"bytesInOutput":0}},"bytes":65914}}}
|