@dxos/messaging 0.8.4-main.ae835ea → 0.8.4-main.bc674ce
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-5MOQVHHI.mjs +694 -0
- package/dist/lib/browser/chunk-5MOQVHHI.mjs.map +7 -0
- package/dist/lib/browser/index.mjs +1687 -6
- package/dist/lib/browser/index.mjs.map +4 -4
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/testing/index.mjs +1 -1
- package/dist/lib/node-esm/chunk-HBWHJFJZ.mjs +694 -0
- package/dist/lib/node-esm/chunk-HBWHJFJZ.mjs.map +7 -0
- package/dist/lib/node-esm/index.mjs +1687 -6
- package/dist/lib/node-esm/index.mjs.map +4 -4
- package/dist/lib/node-esm/meta.json +1 -1
- package/dist/lib/node-esm/testing/index.mjs +1 -1
- package/dist/types/src/signal-client/signal-rpc-client.d.ts +2 -2
- package/dist/types/src/signal-client/signal-rpc-client.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +21 -17
- package/src/messenger.ts +4 -4
- package/src/signal-client/signal-rpc-client.ts +2 -2
- package/dist/lib/browser/chunk-L7NDSF6K.mjs +0 -2380
- package/dist/lib/browser/chunk-L7NDSF6K.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-PVWR5V42.mjs +0 -2380
- package/dist/lib/node-esm/chunk-PVWR5V42.mjs.map +0 -7
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": [],
|
|
4
|
-
"sourcesContent": [],
|
|
5
|
-
"mappings": "",
|
|
6
|
-
"names": []
|
|
3
|
+
"sources": ["../../../src/signal-client/signal-client.ts", "../../../src/signal-client/signal-client-monitor.ts", "../../../src/signal-client/signal-local-state.ts", "../../../src/signal-client/signal-rpc-client.ts", "../../../src/signal-client/signal-rpc-client-monitor.ts", "../../../src/signal-manager/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
|
+
"sourcesContent": ["//\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 SignalRPCClientProps = {\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 = {} }: SignalRPCClientProps) {\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 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": ["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", "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":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/node-esm/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":93},"dist/lib/node-esm/index.mjs":{"imports":[{"path":"dist/lib/node-esm/chunk-PVWR5V42.mjs","kind":"import-statement"}],"exports":["EdgeSignalManager","MemorySignalManager","MemorySignalManagerContext","Messenger","PeerInfoHash","SignalClient","WebsocketSignalManager","setIdentityTags"],"entryPoint":"src/index.ts","inputs":{"src/index.ts":{"bytesInOutput":0}},"bytes":505},"dist/lib/node-esm/testing/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":10740},"dist/lib/node-esm/testing/index.mjs":{"imports":[{"path":"dist/lib/node-esm/chunk-PVWR5V42.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":4713},"dist/lib/node-esm/chunk-PVWR5V42.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":112689},"dist/lib/node-esm/chunk-PVWR5V42.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":65973}}}
|
|
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":37261,"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":25918,"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/node-esm/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":80036},"dist/lib/node-esm/index.mjs":{"imports":[{"path":"dist/lib/node-esm/chunk-HBWHJFJZ.mjs","kind":"import-statement"},{"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","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"],"entryPoint":"src/index.ts","inputs":{"src/index.ts":{"bytesInOutput":0},"src/signal-client/signal-client.ts":{"bytesInOutput":12496},"src/signal-client/signal-client-monitor.ts":{"bytesInOutput":2742},"src/signal-client/signal-local-state.ts":{"bytesInOutput":5329},"src/signal-client/signal-rpc-client.ts":{"bytesInOutput":6760},"src/signal-client/signal-rpc-client-monitor.ts":{"bytesInOutput":283},"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}},"bytes":48060},"dist/lib/node-esm/testing/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":10740},"dist/lib/node-esm/testing/index.mjs":{"imports":[{"path":"dist/lib/node-esm/chunk-HBWHJFJZ.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":4713},"dist/lib/node-esm/chunk-HBWHJFJZ.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":32623},"dist/lib/node-esm/chunk-HBWHJFJZ.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/proto","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true}],"exports":["MemorySignalManager","MemorySignalManagerContext","Messenger","PeerInfoHash"],"inputs":{"src/messenger.ts":{"bytesInOutput":10595},"src/messenger-monitor.ts":{"bytesInOutput":392},"src/timeouts.ts":{"bytesInOutput":27},"src/signal-methods.ts":{"bytesInOutput":45},"src/signal-manager/memory-signal-manager.ts":{"bytesInOutput":6628}},"bytes":18082}}}
|
|
@@ -11,7 +11,7 @@ export type SignalCallbacks = {
|
|
|
11
11
|
onError?: (error: Error) => void;
|
|
12
12
|
getMetadata?: () => any;
|
|
13
13
|
};
|
|
14
|
-
export type
|
|
14
|
+
export type SignalRPCClientProps = {
|
|
15
15
|
url: string;
|
|
16
16
|
callbacks?: SignalCallbacks;
|
|
17
17
|
};
|
|
@@ -30,7 +30,7 @@ export declare class SignalRPCClient {
|
|
|
30
30
|
private readonly _callbacks;
|
|
31
31
|
private readonly _closeComplete;
|
|
32
32
|
private readonly _monitor;
|
|
33
|
-
constructor({ url, callbacks }:
|
|
33
|
+
constructor({ url, callbacks }: SignalRPCClientProps);
|
|
34
34
|
close(): Promise<void>;
|
|
35
35
|
join({ topic, peerId }: {
|
|
36
36
|
topic: PublicKey;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"signal-rpc-client.d.ts","sourceRoot":"","sources":["../../../../src/signal-client/signal-rpc-client.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,KAAK,GAAG,EAAE,KAAK,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAG7D,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAIvC,OAAO,EAAe,KAAK,OAAO,IAAI,aAAa,EAAE,MAAM,wCAAwC,CAAC;AAWpG,MAAM,MAAM,eAAe,GAAG;IAC5B,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;IAEzB;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,IAAI,CAAC;IAE5B,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IACjC,WAAW,CAAC,EAAE,MAAM,GAAG,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,
|
|
1
|
+
{"version":3,"file":"signal-rpc-client.d.ts","sourceRoot":"","sources":["../../../../src/signal-client/signal-rpc-client.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,KAAK,GAAG,EAAE,KAAK,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAG7D,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAIvC,OAAO,EAAe,KAAK,OAAO,IAAI,aAAa,EAAE,MAAM,wCAAwC,CAAC;AAWpG,MAAM,MAAM,eAAe,GAAG;IAC5B,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;IAEzB;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,IAAI,CAAC;IAE5B,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IACjC,WAAW,CAAC,EAAE,MAAM,GAAG,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,CAAC,EAAE,eAAe,CAAC;CAC7B,CAAC;AAEF;;;;GAIG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAY;IACpC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAyB;IAC9C,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAiB;IAEjD,OAAO,CAAC,aAAa,CAAC,CAAU;IAEhC,OAAO,CAAC,OAAO,CAAS;IAExB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAS;IAC9B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAkB;IAC7C,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAiB;IAEhD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAgC;gBAE7C,EAAE,GAAG,EAAE,SAAc,EAAE,EAAE,oBAAoB;IA2FnD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAsBtB,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;QAAE,KAAK,EAAE,SAAS,CAAC;QAAC,MAAM,EAAE,SAAS,CAAA;KAAE;IAa/D,eAAe,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;IAWlE,WAAW,CAAC,EAChB,MAAM,EACN,SAAS,EACT,OAAO,GACR,EAAE;QACD,MAAM,EAAE,SAAS,CAAC;QAClB,SAAS,EAAE,SAAS,CAAC;QACrB,OAAO,EAAE,GAAG,CAAC;KACd,GAAG,OAAO,CAAC,IAAI,CAAC;YAYH,aAAa;CAQ5B"}
|