@dxos/messaging 0.8.4-main.72ec0f3 → 0.8.4-main.74a063c4e0
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/neutral/chunk-ZNKR3G44.mjs +694 -0
- package/dist/lib/neutral/chunk-ZNKR3G44.mjs.map +7 -0
- package/dist/lib/{browser/chunk-L7NDSF6K.mjs → neutral/index.mjs} +315 -992
- package/dist/lib/neutral/index.mjs.map +7 -0
- package/dist/lib/{browser → neutral}/meta.json +1 -1
- package/dist/lib/{browser → neutral}/testing/index.mjs +4 -4
- package/dist/lib/neutral/testing/index.mjs.map +7 -0
- package/dist/types/src/messenger.blueprint-test.d.ts.map +1 -1
- package/dist/types/src/messenger.d.ts +2 -1
- package/dist/types/src/messenger.d.ts.map +1 -1
- package/dist/types/src/signal-client/signal-client.d.ts +5 -5
- package/dist/types/src/signal-client/signal-client.d.ts.map +1 -1
- package/dist/types/src/signal-client/signal-local-state.d.ts.map +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/src/signal-manager/edge-signal-manager.d.ts +5 -5
- package/dist/types/src/signal-manager/edge-signal-manager.d.ts.map +1 -1
- package/dist/types/src/signal-manager/memory-signal-manager.d.ts +5 -4
- package/dist/types/src/signal-manager/memory-signal-manager.d.ts.map +1 -1
- package/dist/types/src/signal-manager/websocket-signal-manager.d.ts +5 -5
- package/dist/types/src/signal-manager/websocket-signal-manager.d.ts.map +1 -1
- package/dist/types/src/signal-methods.d.ts +5 -5
- package/dist/types/src/signal-methods.d.ts.map +1 -1
- package/dist/types/src/testing/test-builder.d.ts.map +1 -1
- package/dist/types/src/testing/test-peer.d.ts.map +1 -1
- package/dist/types/src/testing/utils.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +24 -22
- package/src/messenger.blueprint-test.ts +13 -12
- package/src/messenger.ts +34 -28
- package/src/signal-client/signal-client.node.test.ts +9 -9
- package/src/signal-client/signal-client.ts +4 -5
- package/src/signal-client/signal-local-state.ts +0 -1
- package/src/signal-client/signal-rpc-client.ts +2 -2
- package/src/signal-manager/edge-signal-manager.ts +10 -7
- package/src/signal-manager/memory-signal-manager.ts +17 -15
- package/src/signal-manager/websocket-signal-manager.node.test.ts +13 -13
- package/src/signal-manager/websocket-signal-manager.ts +8 -9
- package/src/signal-methods.ts +5 -5
- package/src/testing/test-builder.ts +4 -3
- package/src/testing/test-peer.ts +0 -1
- package/src/testing/utils.ts +0 -1
- package/dist/lib/browser/chunk-L7NDSF6K.mjs.map +0 -7
- package/dist/lib/browser/index.mjs +0 -22
- package/dist/lib/browser/index.mjs.map +0 -7
- package/dist/lib/browser/testing/index.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
- package/dist/lib/node-esm/index.mjs +0 -22
- package/dist/lib/node-esm/index.mjs.map +0 -7
- package/dist/lib/node-esm/meta.json +0 -1
- package/dist/lib/node-esm/testing/index.mjs +0 -149
- package/dist/lib/node-esm/testing/index.mjs.map +0 -7
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
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';\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(_ctx: Context, 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(_ctx: Context, 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(_ctx: Context, params: QueryRequest): Promise<SwarmResponse> {\n throw new Error('Not implemented');\n }\n\n async sendMessage(_ctx: Context, 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';\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 { type Context, 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';\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(_ctx: Context, { topic, peer }: JoinRequest): Promise<void> {\n log('join', { topic, peer });\n invariant(this._lifecycleState === LifecycleState.OPEN);\n await this._forEachServer((server) => server.join(_ctx, { topic, peer }));\n }\n\n @synchronized\n async leave(_ctx: Context, { topic, peer }: LeaveRequest): Promise<void> {\n log('leaving', { topic, peer });\n invariant(this._lifecycleState === LifecycleState.OPEN);\n await this._forEachServer((server) => server.leave(_ctx, { topic, peer }));\n }\n\n async query(_ctx: Context, { topic }: QueryRequest): Promise<SwarmResponse> {\n throw new Error('Not implemented');\n }\n\n async sendMessage(_ctx: Context, { 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(_ctx, { 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 { type Context, 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';\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(ctx: Context, { 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 ctx,\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(ctx: Context, { topic, peer }: { topic: PublicKey; peer: PeerInfo }): Promise<void> {\n this._swarmPeers.delete(topic);\n try {\n await this._edgeConnection.send(\n ctx,\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(ctx: Context, { 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 ctx,\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(ctx: Context, 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 ctx,\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(this._ctx, {\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", "_ctx", "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", "ctx", "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
|
+
}
|
|
@@ -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/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}}}
|
|
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":37591,"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":43952,"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":3608,"imports":[],"format":"esm"},"src/signal-manager/memory-signal-manager.ts":{"bytes":24505,"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":29592,"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":30553,"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":5655,"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/neutral/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":80466},"dist/lib/neutral/index.mjs":{"imports":[{"path":"dist/lib/neutral/chunk-ZNKR3G44.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":12520},"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":9455},"src/signal-manager/websocket-signal-manager-monitor.ts":{"bytesInOutput":436},"src/signal-manager/edge-signal-manager.ts":{"bytesInOutput":8100},"src/signal-manager/utils.ts":{"bytesInOutput":1584}},"bytes":48118},"dist/lib/neutral/testing/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":10822},"dist/lib/neutral/testing/index.mjs":{"imports":[{"path":"dist/lib/neutral/chunk-ZNKR3G44.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":997},"src/testing/index.ts":{"bytesInOutput":0}},"bytes":4664},"dist/lib/neutral/chunk-ZNKR3G44.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":33051},"dist/lib/neutral/chunk-ZNKR3G44.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":10641},"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":6674}},"bytes":18115}}}
|
|
@@ -3,7 +3,7 @@ import {
|
|
|
3
3
|
MemorySignalManager,
|
|
4
4
|
MemorySignalManagerContext,
|
|
5
5
|
Messenger
|
|
6
|
-
} from "../chunk-
|
|
6
|
+
} from "../chunk-ZNKR3G44.mjs";
|
|
7
7
|
|
|
8
8
|
// src/testing/test-peer.ts
|
|
9
9
|
import { Event } from "@dxos/async";
|
|
@@ -88,7 +88,7 @@ var TestPeer = class extends Resource {
|
|
|
88
88
|
}
|
|
89
89
|
}).catch((err) => log.catch(err, void 0, {
|
|
90
90
|
F: __dxlog_file,
|
|
91
|
-
L:
|
|
91
|
+
L: 57,
|
|
92
92
|
S: this,
|
|
93
93
|
C: (f, a) => f(...a)
|
|
94
94
|
}));
|
|
@@ -111,9 +111,9 @@ var TestBuilder = class {
|
|
|
111
111
|
const signalManager = await this.options.signalManagerFactory?.(peer) ?? new MemorySignalManager(this._signalContext);
|
|
112
112
|
if (this.options.messageDisruption) {
|
|
113
113
|
const trueSend = signalManager.sendMessage.bind(signalManager);
|
|
114
|
-
signalManager.sendMessage = async (message) => {
|
|
114
|
+
signalManager.sendMessage = async (ctx, message) => {
|
|
115
115
|
for (const msg of this.options.messageDisruption(message)) {
|
|
116
|
-
await trueSend(msg);
|
|
116
|
+
await trueSend(ctx, msg);
|
|
117
117
|
}
|
|
118
118
|
};
|
|
119
119
|
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../src/testing/test-peer.ts", "../../../../src/testing/utils.ts", "../../../../src/testing/test-messages.ts", "../../../../src/testing/test-builder.ts"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2022 DXOS.org\n//\n\nimport { Event } from '@dxos/async';\nimport { Resource } from '@dxos/context';\nimport { PeerSchema } from '@dxos/edge-client';\nimport { PublicKey } from '@dxos/keys';\nimport { log } from '@dxos/log';\nimport { buf } from '@dxos/protocols/buf';\n\nimport { Messenger } from '../messenger';\nimport { type SignalManager } from '../signal-manager';\nimport { type Message, type PeerInfo } from '../signal-methods';\nimport { type TestBuilder } from './test-builder';\nimport { expectPeerAvailable, expectPeerLeft, expectReceivedMessage } from './utils';\n\nexport class TestPeer extends Resource {\n public peerId = PublicKey.random();\n public signalManager!: SignalManager;\n public messenger!: Messenger;\n public defaultReceived = new Event<Message>();\n\n constructor(private readonly testBuilder: TestBuilder) {\n super();\n }\n\n get peerInfo(): PeerInfo {\n return buf.create(PeerSchema, { peerKey: this.peerId.toHex(), identityKey: this.peerId.toHex() });\n }\n\n async waitTillReceive(message: Message): Promise<Message> {\n return expectReceivedMessage(this.defaultReceived, message);\n }\n\n async waitForPeerAvailable(topic: PublicKey, peer: PeerInfo) {\n return expectPeerAvailable(this.signalManager, topic, peer);\n }\n\n async waitForPeerLeft(topic: PublicKey, peer: PeerInfo) {\n return expectPeerLeft(this.signalManager, topic, peer);\n }\n\n protected override async _open(): Promise<void> {\n this.signalManager = await this.testBuilder.createSignalManager(this);\n this.messenger = new Messenger({ signalManager: this.signalManager, retryDelay: 300 });\n\n await this.signalManager.open();\n this.messenger.open();\n await this.messenger\n .listen({\n peer: this.peerInfo,\n onMessage: async (msg) => {\n this.defaultReceived.emit(msg);\n },\n })\n .catch((err) => log.catch(err));\n }\n\n protected override async _close(): Promise<void> {\n await this.messenger.close();\n await this.signalManager.close();\n }\n}\n", "//\n// Copyright 2022 DXOS.org\n//\n\nimport { type Event, asyncTimeout } from '@dxos/async';\nimport { type Any } from '@dxos/codec-protobuf';\nimport { PublicKey } from '@dxos/keys';\n\nimport { type Message, type PeerInfo, type SignalMethods } from '../signal-methods';\nimport { PAYLOAD_1 } from './test-messages';\n\nexport const expectPeerAvailable = (client: SignalMethods, expectedTopic: PublicKey, peer: PeerInfo) =>\n asyncTimeout(\n client.swarmEvent.waitFor(\n ({ peerAvailable, topic }) =>\n !!peerAvailable && peer.peerKey === peerAvailable.peer.peerKey && expectedTopic.equals(topic),\n ),\n 6000,\n );\n\nexport const expectPeerLeft = (client: SignalMethods, expectedTopic: PublicKey, peer: PeerInfo) =>\n asyncTimeout(\n client.swarmEvent.waitFor(\n ({ peerLeft, topic }) => !!peerLeft && peer.peerKey === peerLeft.peer.peerKey && expectedTopic.equals(topic),\n ),\n 6000,\n );\n\nexport const expectReceivedMessage = (event: Event<Message>, expectedMessage: Message) => {\n return asyncTimeout(\n event.waitFor(\n (msg) =>\n msg.author.peerKey === expectedMessage.author.peerKey &&\n msg.recipient.peerKey === expectedMessage.recipient.peerKey &&\n PublicKey.from(msg.payload.value).equals(expectedMessage.payload.value),\n ),\n 5000,\n );\n};\n\nexport const createMessage = (author: PeerInfo, recipient: PeerInfo, payload: Any = PAYLOAD_1): Message => ({\n author,\n recipient,\n payload,\n});\n\nexport const messageEqual = (msg1: Message, msg2: Message) =>\n msg1.author.peerKey === msg2.author.peerKey &&\n msg1.recipient.peerKey === msg2.recipient.peerKey &&\n PublicKey.from(msg1.payload.value).equals(msg2.payload.value);\n", "//\n// Copyright 2022 DXOS.org\n//\n\nimport { type TaggedType } from '@dxos/codec-protobuf';\nimport { type TYPES } from '@dxos/protocols/proto';\n\nexport const PAYLOAD_1: TaggedType<TYPES, 'google.protobuf.Any'> = {\n '@type': 'google.protobuf.Any',\n type_url: 'dxos.Example1',\n value: Buffer.from('1'),\n};\n\nexport const PAYLOAD_2: TaggedType<TYPES, 'google.protobuf.Any'> = {\n '@type': 'google.protobuf.Any',\n type_url: 'dxos.Example2',\n value: Buffer.from('2'),\n};\n\nexport const PAYLOAD_3: TaggedType<TYPES, 'google.protobuf.Any'> = {\n '@type': 'google.protobuf.Any',\n type_url: 'dxos.Example3',\n value: Buffer.from('3'),\n};\n", "//\n// Copyright 2022 DXOS.org\n//\n\nimport { type Context } from '@dxos/context';\n\nimport { MemorySignalManager, MemorySignalManagerContext, type SignalManager } from '../signal-manager';\nimport { type Message } from '../signal-methods';\nimport { TestPeer } from './test-peer';\n\nexport type TestBuilderOptions = {\n signalManagerFactory?: (peer: TestPeer) => Promise<SignalManager>;\n messageDisruption?: (msg: Message) => Message[];\n};\n\nexport class TestBuilder {\n private _signalContext = new MemorySignalManagerContext();\n private readonly _peers: TestPeer[] = [];\n\n constructor(public options: TestBuilderOptions) {}\n\n async createSignalManager(peer: TestPeer): Promise<SignalManager> {\n const signalManager =\n (await this.options.signalManagerFactory?.(peer)) ?? new MemorySignalManager(this._signalContext);\n\n if (this.options.messageDisruption) {\n // Imitates signal network disruptions (e. g. message doubling, ).\n const trueSend = signalManager.sendMessage.bind(signalManager);\n signalManager.sendMessage = async (ctx: Context, message: Message) => {\n for (const msg of this.options.messageDisruption!(message)) {\n await trueSend(ctx, msg);\n }\n };\n }\n\n return signalManager;\n }\n\n async createPeer(): Promise<TestPeer> {\n const peer = new TestPeer(this);\n await peer.open();\n this._peers.push(peer);\n return peer;\n }\n\n async createPeers(count: number): Promise<TestPeer[]> {\n return Promise.all(Array.from({ length: count }, () => this.createPeer()));\n }\n\n async close(): Promise<void> {\n await Promise.all(this._peers.map((peer) => peer.close()));\n }\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["Event", "Resource", "PeerSchema", "PublicKey", "log", "buf", "asyncTimeout", "PublicKey", "PAYLOAD_1", "type_url", "value", "Buffer", "from", "PAYLOAD_2", "PAYLOAD_3", "expectPeerAvailable", "client", "expectedTopic", "peer", "asyncTimeout", "swarmEvent", "waitFor", "peerAvailable", "topic", "peerKey", "equals", "expectPeerLeft", "peerLeft", "expectReceivedMessage", "event", "expectedMessage", "msg", "author", "recipient", "PublicKey", "from", "payload", "value", "createMessage", "PAYLOAD_1", "messageEqual", "msg1", "msg2", "TestPeer", "Resource", "peerId", "PublicKey", "random", "signalManager", "messenger", "defaultReceived", "Event", "testBuilder", "peerInfo", "buf", "create", "PeerSchema", "peerKey", "toHex", "identityKey", "waitTillReceive", "message", "expectReceivedMessage", "waitForPeerAvailable", "topic", "peer", "expectPeerAvailable", "waitForPeerLeft", "expectPeerLeft", "_open", "createSignalManager", "Messenger", "retryDelay", "open", "listen", "onMessage", "msg", "emit", "catch", "err", "log", "_close", "close", "TestBuilder", "_signalContext", "MemorySignalManagerContext", "_peers", "options", "createSignalManager", "peer", "signalManager", "signalManagerFactory", "MemorySignalManager", "messageDisruption", "trueSend", "sendMessage", "bind", "ctx", "message", "msg", "createPeer", "TestPeer", "open", "push", "createPeers", "count", "Promise", "all", "Array", "from", "length", "close", "map"]
|
|
7
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"messenger.blueprint-test.d.ts","sourceRoot":"","sources":["../../../src/messenger.blueprint-test.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"messenger.blueprint-test.d.ts","sourceRoot":"","sources":["../../../src/messenger.blueprint-test.ts"],"names":[],"mappings":"AAYA,OAAO,EAAmC,WAAW,EAAgB,MAAM,WAAW,CAAC;AAEvF,eAAO,MAAM,cAAc,GAAI,sBAAsB,WAAW,CAAC,qBAAqB,CAAC,SAoUtF,CAAC"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { Context } from '@dxos/context';
|
|
1
2
|
import { type SignalManager } from './signal-manager';
|
|
2
3
|
import { type Message, type PeerInfo } from './signal-methods';
|
|
3
4
|
export type OnMessage = (params: Message) => Promise<void>;
|
|
@@ -25,7 +26,7 @@ export declare class Messenger {
|
|
|
25
26
|
constructor({ signalManager, retryDelay }: MessengerOptions);
|
|
26
27
|
open(): void;
|
|
27
28
|
close(): Promise<void>;
|
|
28
|
-
sendMessage({ author, recipient, payload }: Message): Promise<void>;
|
|
29
|
+
sendMessage(ctx: Context, { author, recipient, payload }: Message): Promise<void>;
|
|
29
30
|
/**
|
|
30
31
|
* Subscribes onMessage function to messages that contains payload with payloadType.
|
|
31
32
|
* @param payloadType if not specified, onMessage will be subscribed to all types of messages.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"messenger.d.ts","sourceRoot":"","sources":["../../../src/messenger.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"messenger.d.ts","sourceRoot":"","sources":["../../../src/messenger.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAUxC,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,KAAK,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAG/D,MAAM,MAAM,SAAS,GAAG,CAAC,MAAM,EAAE,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;AAE3D,MAAM,WAAW,gBAAgB;IAC/B,aAAa,EAAE,aAAa,CAAC;IAC7B,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAOD;;GAEG;AACH,qBAAa,SAAS;IACpB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA0B;IACnD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAgB;IAE/C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAEzB;IAGF,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAqC;IAEvE,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAyD;IAEzF,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAA6C;IAE/E;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA6C;IAEtE,OAAO,CAAC,IAAI,CAAW;IACvB,OAAO,CAAC,OAAO,CAAQ;IACvB,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;gBAEzB,EAAE,aAAa,EAAE,UAAiB,EAAE,EAAE,gBAAgB;IAOlE,IAAI,IAAI,IAAI;IA6BN,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAQtB,WAAW,CAAC,GAAG,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IA6DvF;;;OAGG;IACG,MAAM,CAAC,EACX,IAAI,EACJ,WAAW,EACX,SAAS,GACV,EAAE;QACD,IAAI,EAAE,QAAQ,CAAC;QACf,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,SAAS,EAAE,SAAS,CAAC;KACtB,GAAG,OAAO,CAAC,eAAe,CAAC;YA8Bd,cAAc;YAsBd,cAAc;YAad,sBAAsB;YA+BtB,sBAAsB;YAKtB,oBAAoB;YAwBpB,cAAc;IAwB5B,OAAO,CAAC,UAAU;CAgBnB;AAED,MAAM,WAAW,eAAe;IAC9B,WAAW,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAClC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Event } from '@dxos/async';
|
|
2
|
-
import { Resource } from '@dxos/context';
|
|
2
|
+
import { type Context, Resource } from '@dxos/context';
|
|
3
3
|
import { type SwarmResponse } from '@dxos/protocols/proto/dxos/edge/messenger';
|
|
4
4
|
import { type JoinRequest, type LeaveRequest, type QueryRequest } from '@dxos/protocols/proto/dxos/edge/signal';
|
|
5
5
|
import { type Message, type PeerInfo, type SignalClientMethods, type SignalStatus, type SwarmEvent } from '../signal-methods';
|
|
@@ -42,10 +42,10 @@ export declare class SignalClient extends Resource implements SignalClientMethod
|
|
|
42
42
|
protected _catch(err: Error): Promise<void>;
|
|
43
43
|
protected _close(): Promise<void>;
|
|
44
44
|
getStatus(): SignalStatus;
|
|
45
|
-
join(args: JoinRequest): Promise<void>;
|
|
46
|
-
leave(args: LeaveRequest): Promise<void>;
|
|
47
|
-
query(params: QueryRequest): Promise<SwarmResponse>;
|
|
48
|
-
sendMessage(msg: Message): Promise<void>;
|
|
45
|
+
join(_ctx: Context, args: JoinRequest): Promise<void>;
|
|
46
|
+
leave(_ctx: Context, args: LeaveRequest): Promise<void>;
|
|
47
|
+
query(_ctx: Context, params: QueryRequest): Promise<SwarmResponse>;
|
|
48
|
+
sendMessage(_ctx: Context, msg: Message): Promise<void>;
|
|
49
49
|
subscribeMessages(peer: PeerInfo): Promise<void>;
|
|
50
50
|
unsubscribeMessages(peer: PeerInfo): Promise<void>;
|
|
51
51
|
private _scheduleReconcileAfterError;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"signal-client.d.ts","sourceRoot":"","sources":["../../../../src/signal-client/signal-client.ts"],"names":[],"mappings":"AAIA,OAAO,EAAgB,KAAK,EAAsD,MAAM,aAAa,CAAC;AACtG,OAAO,
|
|
1
|
+
{"version":3,"file":"signal-client.d.ts","sourceRoot":"","sources":["../../../../src/signal-client/signal-client.ts"],"names":[],"mappings":"AAIA,OAAO,EAAgB,KAAK,EAAsD,MAAM,aAAa,CAAC;AACtG,OAAO,EAAE,KAAK,OAAO,EAAE,QAAQ,EAAqB,MAAM,eAAe,CAAC;AAK1E,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,2CAA2C,CAAC;AAC/E,OAAO,EAAE,KAAK,WAAW,EAAE,KAAK,YAAY,EAAE,KAAK,YAAY,EAAE,MAAM,wCAAwC,CAAC;AAGhH,OAAO,EACL,KAAK,OAAO,EACZ,KAAK,QAAQ,EACb,KAAK,mBAAmB,EACxB,KAAK,YAAY,EACjB,KAAK,UAAU,EAChB,MAAM,mBAAmB,CAAC;AAU3B;;;;;;;GAOG;AAEH,qBAAa,YAAa,SAAQ,QAAS,YAAW,mBAAmB;IAsCrE,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC;IAtChC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA6B;IAEtD,OAAO,CAAC,MAAM,CAAsB;IACpC,OAAO,CAAC,UAAU,CAAC,CAAQ;IAC3B,OAAO,CAAC,yBAAyB,CAAS;IAE1C,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAiB;IAC9C,OAAO,CAAC,cAAc,CAAC,CAAU;IACjC,OAAO,CAAC,OAAO,CAAC,CAAkB;IAElC,OAAO,CAAC,cAAc,CAAC,CAAe;IACtC,OAAO,CAAC,cAAc,CAAC,CAAe;IAEtC;;OAEG;IACH,OAAO,CAAC,eAAe,CAA6B;IAEpD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA8B;IAO1D,QAAQ,CAAC,aAAa,sBAA6B;IAEnD,SAAgB,SAAS,iBAAwB;IACjD,SAAgB,UAAU,oBAA2B;IAErD;;;;;OAKG;gBAEgB,KAAK,EAAE,MAAM,EACb,YAAY,CAAC,GAAE,MAAM,GAAG,aAAA;cAgBlB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;cA+CtB,MAAM,CAAC,GAAG,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC;cAWjC,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAYhD,SAAS,IAAI,YAAY;IAUnB,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAOrD,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAMvD,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,aAAa,CAAC;IAIlE,WAAW,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAcvD,iBAAiB,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAOhD,mBAAmB,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAMxD,OAAO,CAAC,4BAA4B;IAIpC,OAAO,CAAC,aAAa;YAuDP,UAAU;IAmBxB,OAAO,CAAC,YAAY;IASpB,OAAO,CAAC,eAAe;IAcvB,OAAO,CAAC,SAAS;IAOjB,OAAO,CAAC,uBAAuB;YAOjB,gBAAgB;CAQ/B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"signal-local-state.d.ts","sourceRoot":"","sources":["../../../../src/signal-client/signal-local-state.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,KAAK,OAAO,EAAqB,MAAM,eAAe,CAAC;AAChE,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAQvC,OAAO,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"signal-local-state.d.ts","sourceRoot":"","sources":["../../../../src/signal-client/signal-local-state.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,KAAK,OAAO,EAAqB,MAAM,eAAe,CAAC;AAChE,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAQvC,OAAO,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC7D,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAE3D,qBAAa,gBAAgB;IAiCzB,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,aAAa;IAjChC;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,aAAa,CAE5B;IAEF;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,aAAa,CAE5B;IAEF;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAyE;gBAe1F,UAAU,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,EAC9C,aAAa,EAAE,CAAC,MAAM,EAAE,UAAU,KAAK,OAAO,CAAC,IAAI,CAAC;IAGjE,gBAAgB,IAAI,OAAO,CAAC;QAAE,YAAY,EAAE,MAAM,CAAA;KAAE,CAAC;IAQ3D,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;QAAE,KAAK,EAAE,SAAS,CAAC;QAAC,MAAM,EAAE,SAAS,CAAA;KAAE,GAAG,IAAI;IAItE,KAAK,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;QAAE,KAAK,EAAE,SAAS,CAAC;QAAC,MAAM,EAAE,SAAS,CAAA;KAAE,GAAG,IAAI;IAMvE,iBAAiB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI;IAI1C,mBAAmB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI;IAO/B,SAAS,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;YAM9D,4BAA4B;YAiD5B,8BAA8B;CAkC7C"}
|
|
@@ -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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Event } from '@dxos/async';
|
|
2
|
-
import { Resource } from '@dxos/context';
|
|
2
|
+
import { type Context, Resource } from '@dxos/context';
|
|
3
3
|
import { type EdgeConnection } from '@dxos/edge-client';
|
|
4
4
|
import { PublicKey } from '@dxos/keys';
|
|
5
5
|
import { type SwarmResponse } from '@dxos/protocols/proto/dxos/edge/messenger';
|
|
@@ -24,18 +24,18 @@ export declare class EdgeSignalManager extends Resource implements SignalManager
|
|
|
24
24
|
/**
|
|
25
25
|
* Warning: PeerInfo is inferred from edgeConnection.
|
|
26
26
|
*/
|
|
27
|
-
join({ topic, peer }: {
|
|
27
|
+
join(ctx: Context, { topic, peer }: {
|
|
28
28
|
topic: PublicKey;
|
|
29
29
|
peer: PeerInfo;
|
|
30
30
|
}): Promise<void>;
|
|
31
|
-
leave({ topic, peer }: {
|
|
31
|
+
leave(ctx: Context, { topic, peer }: {
|
|
32
32
|
topic: PublicKey;
|
|
33
33
|
peer: PeerInfo;
|
|
34
34
|
}): Promise<void>;
|
|
35
|
-
query({ topic }: {
|
|
35
|
+
query(ctx: Context, { topic }: {
|
|
36
36
|
topic: PublicKey;
|
|
37
37
|
}): Promise<SwarmResponse>;
|
|
38
|
-
sendMessage(message: Message): Promise<void>;
|
|
38
|
+
sendMessage(ctx: Context, message: Message): Promise<void>;
|
|
39
39
|
subscribeMessages(peerInfo: PeerInfo): Promise<void>;
|
|
40
40
|
unsubscribeMessages(peerInfo: PeerInfo): Promise<void>;
|
|
41
41
|
private _onMessage;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"edge-signal-manager.d.ts","sourceRoot":"","sources":["../../../../src/signal-manager/edge-signal-manager.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,EAAqB,MAAM,aAAa,CAAC;AACvD,OAAO,EAAE,QAAQ,EAAqB,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"edge-signal-manager.d.ts","sourceRoot":"","sources":["../../../../src/signal-manager/edge-signal-manager.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,EAAqB,MAAM,aAAa,CAAC;AACvD,OAAO,EAAE,KAAK,OAAO,EAAE,QAAQ,EAAqB,MAAM,eAAe,CAAC;AAC1E,OAAO,EAAE,KAAK,cAAc,EAAsC,MAAM,mBAAmB,CAAC;AAE5F,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAWvC,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,2CAA2C,CAAC;AAG/E,OAAO,EAAE,KAAK,OAAO,EAAE,KAAK,QAAQ,EAAgB,KAAK,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/F,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEtD,qBAAa,iBAAkB,SAAQ,QAAS,YAAW,aAAa;IACtE;;OAEG;IACI,UAAU,oBAA2B;IACrC,UAAU,uBAA8B;IACxC,SAAS,iBAAwB;IAExC;;OAEG;IAEH,OAAO,CAAC,QAAQ,CAAC,WAAW,CAGV;IAElB,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAiB;gBAErC,EAAE,cAAc,EAAE,EAAE;QAAE,cAAc,EAAE,cAAc,CAAA;KAAE;cAKzC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAS/C;;OAEG;IACG,IAAI,CAAC,GAAG,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QAAE,KAAK,EAAE,SAAS,CAAC;QAAC,IAAI,EAAE,QAAQ,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IA0BxF,KAAK,CAAC,GAAG,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QAAE,KAAK,EAAE,SAAS,CAAC;QAAC,IAAI,EAAE,QAAQ,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAqBzF,KAAK,CAAC,GAAG,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,EAAE;QAAE,KAAK,EAAE,SAAS,CAAA;KAAE,GAAG,OAAO,CAAC,aAAa,CAAC;IAqB5E,WAAW,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAoB1D,iBAAiB,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAIpD,mBAAmB,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAI5D,OAAO,CAAC,UAAU;IAYlB,OAAO,CAAC,qBAAqB;IAsC7B,OAAO,CAAC,eAAe;IAiBvB,OAAO,CAAC,kBAAkB;YAMZ,gBAAgB;CAa/B"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { Event } from '@dxos/async';
|
|
2
2
|
import { type Any } from '@dxos/codec-protobuf';
|
|
3
|
+
import { Context } from '@dxos/context';
|
|
3
4
|
import { PublicKey } from '@dxos/keys';
|
|
4
5
|
import { type SwarmResponse } from '@dxos/protocols/proto/dxos/edge/messenger';
|
|
5
6
|
import { type QueryRequest } from '@dxos/protocols/proto/dxos/edge/signal';
|
|
@@ -30,16 +31,16 @@ export declare class MemorySignalManager implements SignalManager {
|
|
|
30
31
|
open(): Promise<void>;
|
|
31
32
|
close(): Promise<void>;
|
|
32
33
|
getStatus(): SignalStatus[];
|
|
33
|
-
join({ topic, peer }: {
|
|
34
|
+
join(_ctx: Context, { topic, peer }: {
|
|
34
35
|
topic: PublicKey;
|
|
35
36
|
peer: PeerInfo;
|
|
36
37
|
}): Promise<void>;
|
|
37
|
-
leave({ topic, peer }: {
|
|
38
|
+
leave(_ctx: Context, { topic, peer }: {
|
|
38
39
|
topic: PublicKey;
|
|
39
40
|
peer: PeerInfo;
|
|
40
41
|
}): Promise<void>;
|
|
41
|
-
query(request: QueryRequest): Promise<SwarmResponse>;
|
|
42
|
-
sendMessage({ author, recipient, payload, }: {
|
|
42
|
+
query(_ctx: Context, request: QueryRequest): Promise<SwarmResponse>;
|
|
43
|
+
sendMessage(_ctx: Context, { author, recipient, payload, }: {
|
|
43
44
|
author: PeerInfo;
|
|
44
45
|
recipient: PeerInfo;
|
|
45
46
|
payload: Any;
|