@dxos/network-manager 0.3.9-main.604ae36 → 0.3.9-main.622f05b
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/lib/browser/{chunk-7JESB3AJ.mjs → chunk-XF474R3E.mjs} +10 -2
- package/dist/lib/browser/{chunk-7JESB3AJ.mjs.map → chunk-XF474R3E.mjs.map} +1 -1
- package/dist/lib/browser/index.mjs +1 -1
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/testing/index.mjs +3 -2
- package/dist/lib/browser/testing/index.mjs.map +1 -1
- package/package.json +17 -17
|
@@ -7,6 +7,13 @@ var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require
|
|
|
7
7
|
throw Error('Dynamic require of "' + x + '" is not supported');
|
|
8
8
|
});
|
|
9
9
|
|
|
10
|
+
// inject-globals:@inject-globals
|
|
11
|
+
import {
|
|
12
|
+
global,
|
|
13
|
+
Buffer as Buffer2,
|
|
14
|
+
process
|
|
15
|
+
} from "@dxos/node-std/inject-globals";
|
|
16
|
+
|
|
10
17
|
// packages/core/mesh/network-manager/src/swarm/connection.ts
|
|
11
18
|
import { DeferredTask, Event, sleep, scheduleTask, scheduleTaskInterval, synchronized } from "@dxos/async";
|
|
12
19
|
import { Context, cancelWithContext } from "@dxos/context";
|
|
@@ -3707,7 +3714,7 @@ var LibDataChannelTransport = class {
|
|
|
3707
3714
|
this._channel.onmessage = (event) => {
|
|
3708
3715
|
let data = event.data;
|
|
3709
3716
|
if (data instanceof ArrayBuffer) {
|
|
3710
|
-
data =
|
|
3717
|
+
data = Buffer2.from(data);
|
|
3711
3718
|
}
|
|
3712
3719
|
this._stream.push(data);
|
|
3713
3720
|
};
|
|
@@ -3940,6 +3947,7 @@ var createTeleportProtocolFactory = (onConnection) => {
|
|
|
3940
3947
|
};
|
|
3941
3948
|
|
|
3942
3949
|
export {
|
|
3950
|
+
process,
|
|
3943
3951
|
ConnectionState,
|
|
3944
3952
|
Connection,
|
|
3945
3953
|
SwarmMessenger,
|
|
@@ -3967,4 +3975,4 @@ export {
|
|
|
3967
3975
|
TcpTransport,
|
|
3968
3976
|
createTeleportProtocolFactory
|
|
3969
3977
|
};
|
|
3970
|
-
//# sourceMappingURL=chunk-
|
|
3978
|
+
//# sourceMappingURL=chunk-XF474R3E.mjs.map
|
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/swarm/connection.ts", "../../../src/signal/swarm-messenger.ts", "../../../src/swarm/swarm.ts", "../../../src/swarm/peer.ts", "../../../src/swarm/swarm-mapper.ts", "../../../src/swarm/connection-limiter.ts", "../../../src/connection-log.ts", "../../../src/network-manager.ts", "../../../src/topology/fully-connected-topology.ts", "../../../src/topology/mmst-topology.ts", "../../../src/topology/star-topology.ts", "../../../src/transport/memory-transport.ts", "../../../src/transport/transport.ts", "../../../src/transport/simplepeer-transport.ts", "../../../src/transport/webrtc.ts", "../../../src/transport/simplepeer-transport-service.ts", "../../../src/transport/simplepeer-transport-proxy.ts", "../../../src/transport/libdatachannel-transport.ts", "../../../src/transport/tcp-transport.browser.ts", "../../../src/wire-protocol.ts"],
|
|
4
4
|
"sourcesContent": ["//\n// Copyright 2021 DXOS.org\n//\n\nimport { DeferredTask, Event, sleep, scheduleTask, scheduleTaskInterval, synchronized } from '@dxos/async';\nimport { Context, cancelWithContext } from '@dxos/context';\nimport { ErrorStream } from '@dxos/debug';\nimport { invariant } from '@dxos/invariant';\nimport { PublicKey } from '@dxos/keys';\nimport { log, logInfo } from '@dxos/log';\nimport {\n CancelledError,\n ProtocolError,\n ConnectionResetError,\n ConnectivityError,\n TimeoutError,\n UnknownProtocolError,\n trace,\n} from '@dxos/protocols';\nimport { type Signal } from '@dxos/protocols/proto/dxos/mesh/swarm';\n\nimport { type SignalMessage, type SignalMessenger } from '../signal';\nimport { type Transport, type TransportFactory, type TransportStats } from '../transport';\nimport { type WireProtocol } from '../wire-protocol';\n\n/**\n * How long to wait before sending the signal in case we receive another signal.\n * This value is increased exponentially.\n */\nconst STARTING_SIGNALLING_DELAY = 10;\n\n/**\n * How long to wait for the transport to establish connectivity, i.e. for the connection to move between CONNECTING and CONNECTED.\n */\nconst TRANSPORT_CONNECTION_TIMEOUT = 10_000;\n\nconst TRANSPORT_STATS_INTERVAL = 5_000;\n\n/**\n * Maximum delay between signal batches.\n */\nconst MAX_SIGNALLING_DELAY = 300;\n\ninterface ConnectionCallbacks {\n /**\n * Connection opened.\n */\n onConnected?: () => void;\n\n /**\n * Connection closed.\n */\n onClosed?: (err?: Error) => void;\n}\n\n/**\n * State machine for each connection.\n */\nexport enum ConnectionState {\n /**\n * Connection is created, but not yet passed through the connection limiter.\n */\n CREATED = 'CREATED',\n\n /**\n * Initial state. Connection is registered but no attempt to connect to the remote peer has been performed.\n * Might mean that we are waiting for the answer signal from the remote peer.\n */\n INITIAL = 'INITIAL',\n\n /**\n * Trying to establish connection.\n */\n CONNECTING = 'CONNECTING',\n\n /**\n * Connection is established.\n */\n CONNECTED = 'CONNECTED',\n\n /**\n * Connection is being closed.\n */\n CLOSING = 'CLOSING',\n\n /**\n * Connection closed.\n */\n CLOSED = 'CLOSED',\n\n ABORTING = 'ABORTING',\n ABORTED = 'ABORTED',\n}\n\n/**\n * Represents a connection to a remote peer.\n * Owns a transport paired together with a wire-protocol.\n */\nexport class Connection {\n private readonly _ctx = new Context();\n private connectedTimeoutContext = new Context();\n\n private _state: ConnectionState = ConnectionState.CREATED;\n private _transport: Transport | undefined;\n closeReason?: string;\n\n private _incomingSignalBuffer: Signal[] = [];\n private _outgoingSignalBuffer: Signal[] = [];\n\n readonly stateChanged = new Event<ConnectionState>();\n readonly errors = new ErrorStream();\n\n public _instanceId = PublicKey.random().toHex();\n\n public readonly transportStats = new Event<TransportStats>();\n\n private readonly _signalSendTask = new DeferredTask(this._ctx, async () => {\n await this._flushSignalBuffer();\n });\n\n private _signallingDelay = STARTING_SIGNALLING_DELAY;\n\n constructor(\n public readonly topic: PublicKey,\n public readonly ownId: PublicKey, // TODO(burdon): peerID?\n public readonly remoteId: PublicKey,\n public readonly sessionId: PublicKey,\n public readonly initiator: boolean,\n private readonly _signalMessaging: SignalMessenger,\n private readonly _protocol: WireProtocol,\n private readonly _transportFactory: TransportFactory,\n private readonly _callbacks?: ConnectionCallbacks,\n ) {\n log.trace('dxos.mesh.connection.construct', {\n sessionId: this.sessionId,\n topic: this.topic,\n localPeerId: this.ownId,\n remotePeerId: this.remoteId,\n initiator: this.initiator,\n });\n }\n\n @logInfo\n get sessionIdString(): string {\n return this.sessionId.truncate();\n }\n\n get state() {\n return this._state;\n }\n\n get transport() {\n return this._transport;\n }\n\n get protocol() {\n return this._protocol;\n }\n\n /**\n * Create an underlying transport and prepares it for the connection.\n */\n async openConnection() {\n invariant(this._state === ConnectionState.INITIAL, 'Invalid state.');\n log.trace('dxos.mesh.connection.open-connection', trace.begin({ id: this._instanceId }));\n log.trace('dxos.mesh.connection.open', {\n sessionId: this.sessionId,\n topic: this.topic,\n localPeerId: this.ownId,\n remotePeerId: this.remoteId,\n initiator: this.initiator,\n });\n\n this._changeState(ConnectionState.CONNECTING);\n\n // TODO(dmaretskyi): Initialize only after the transport has established connection.\n this._protocol.open(this.sessionId).catch((err) => {\n this.errors.raise(err);\n });\n\n // TODO(dmaretskyi): Piped streams should do this automatically, but it break's without this code.\n this._protocol.stream.on('close', () => {\n log('protocol stream closed');\n this.close(new ProtocolError('protocol stream closed')).catch((err) => this.errors.raise(err));\n });\n\n scheduleTask(\n this.connectedTimeoutContext,\n async () => {\n log.info(`timeout waiting ${TRANSPORT_CONNECTION_TIMEOUT / 1000}s for transport to connect, aborting`);\n await this.abort(new TimeoutError(`${TRANSPORT_CONNECTION_TIMEOUT / 1000}s for transport to connect`)).catch(\n (err) => this.errors.raise(err),\n );\n },\n TRANSPORT_CONNECTION_TIMEOUT,\n );\n\n invariant(!this._transport);\n this._transport = this._transportFactory.createTransport({\n initiator: this.initiator,\n stream: this._protocol.stream,\n sendSignal: async (signal) => this._sendSignal(signal),\n sessionId: this.sessionId,\n });\n\n this._transport.connected.once(async () => {\n this._changeState(ConnectionState.CONNECTED);\n await this.connectedTimeoutContext.dispose();\n this._callbacks?.onConnected?.();\n\n scheduleTaskInterval(this._ctx, async () => this._emitTransportStats(), TRANSPORT_STATS_INTERVAL);\n });\n\n this._transport.closed.once(() => {\n this._transport = undefined;\n log('abort triggered by transport close');\n this.abort().catch((err) => this.errors.raise(err));\n });\n\n this._transport.errors.handle(async (err) => {\n log('transport error:', { err });\n if (!this.closeReason) {\n this.closeReason = err?.message;\n }\n\n // TODO(nf): fix ErrorStream so instanceof works here\n if (err instanceof ConnectionResetError) {\n log.info('aborting due to transport ConnectionResetError');\n this.abort().catch((err) => this.errors.raise(err));\n } else if (err instanceof ConnectivityError) {\n log.info('aborting due to transport ConnectivityError');\n this.abort().catch((err) => this.errors.raise(err));\n } else if (err instanceof UnknownProtocolError) {\n log.warn('unsure what to do with UnknownProtocolError, will keep on truckin', { err });\n }\n\n if (this._state !== ConnectionState.CLOSED && this._state !== ConnectionState.CLOSING) {\n await this.connectedTimeoutContext.dispose();\n this.errors.raise(err);\n }\n });\n\n // Replay signals that were received before transport was created.\n for (const signal of this._incomingSignalBuffer) {\n void this._transport.signal(signal); // TODO(burdon): Remove async?\n }\n\n this._incomingSignalBuffer = [];\n\n log.trace('dxos.mesh.connection.open-connection', trace.end({ id: this._instanceId }));\n }\n\n @synchronized\n // TODO(nf): make the caller responsible for recording the reason and determining flow control.\n // TODO(nf): make abort cancel an existing close in progress.\n async abort(err?: Error) {\n log('aborting...', { err });\n if (this._state === ConnectionState.CLOSED || this._state === ConnectionState.ABORTED) {\n log(`abort ignored: already ${this._state}`, this.closeReason);\n return;\n }\n\n await this.connectedTimeoutContext.dispose();\n this._changeState(ConnectionState.ABORTING);\n if (!this.closeReason) {\n this.closeReason = err?.message;\n }\n\n await this._ctx.dispose();\n\n try {\n // Forcefully close the stream flushing any unsent data packets.\n log('aborting protocol... ');\n await this._protocol.abort();\n } catch (err: any) {\n log.catch(err);\n }\n\n try {\n // After the transport is closed streams are disconnected.\n await this._transport?.destroy();\n } catch (err: any) {\n log.catch(err);\n }\n\n try {\n this._callbacks?.onClosed?.(err);\n } catch (err) {\n log.catch(err);\n }\n this._changeState(ConnectionState.ABORTED);\n }\n\n @synchronized\n async close(err?: Error) {\n if (!this.closeReason) {\n this.closeReason = err?.message;\n } else {\n this.closeReason += `; ${err?.message}`;\n }\n if (\n this._state === ConnectionState.CLOSED ||\n this._state === ConnectionState.ABORTING ||\n this._state === ConnectionState.ABORTED\n ) {\n return;\n }\n const lastState = this._state;\n this._changeState(ConnectionState.CLOSING);\n\n await this.connectedTimeoutContext.dispose();\n await this._ctx.dispose();\n\n log('closing...', { peerId: this.ownId });\n\n if (lastState === ConnectionState.CONNECTED) {\n try {\n // Gracefully close the stream flushing any unsent data packets.\n await this._protocol.close();\n } catch (err: any) {\n log.catch(err);\n }\n\n try {\n // After the transport is closed streams are disconnected.\n await this._transport?.destroy();\n } catch (err: any) {\n log.catch(err);\n }\n } else {\n log.info(`graceful close requested when we were in ${lastState} state? aborting`);\n try {\n await this._protocol.abort();\n } catch (err: any) {\n log.catch(err);\n }\n try {\n await this._transport?.destroy();\n } catch (err: any) {\n log.catch(err);\n }\n }\n\n log('closed', { peerId: this.ownId });\n this._changeState(ConnectionState.CLOSED);\n this._callbacks?.onClosed?.(err);\n }\n\n private _sendSignal(signal: Signal) {\n this._outgoingSignalBuffer.push(signal);\n this._signalSendTask.schedule();\n }\n\n private async _flushSignalBuffer() {\n if (this._outgoingSignalBuffer.length === 0) {\n return;\n }\n\n try {\n if (process.env.NODE_ENV !== 'test') {\n await cancelWithContext(this._ctx, sleep(this._signallingDelay));\n this._signallingDelay = Math.min(this._signallingDelay * 2, MAX_SIGNALLING_DELAY);\n }\n\n const signals = [...this._outgoingSignalBuffer];\n this._outgoingSignalBuffer.length = 0;\n\n await this._signalMessaging.signal({\n author: this.ownId,\n recipient: this.remoteId,\n sessionId: this.sessionId,\n topic: this.topic,\n data: { signalBatch: { signals } },\n });\n } catch (err) {\n // TODO(nf): determine why instanceof doesn't work here\n if (err instanceof CancelledError || (err instanceof Error && err.message?.includes('CANCELLED'))) {\n return;\n }\n\n // If signal fails treat connection as failed\n log.info('signal message failed to deliver', { err });\n await this.close(new ConnectivityError('signal message failed to deliver', err));\n }\n }\n\n /**\n * Receive a signal from the remote peer.\n */\n async signal(msg: SignalMessage) {\n invariant(msg.sessionId);\n if (!msg.sessionId.equals(this.sessionId)) {\n log('dropping signal for incorrect session id');\n return;\n }\n invariant(msg.data.signal || msg.data.signalBatch);\n invariant(msg.author?.equals(this.remoteId));\n invariant(msg.recipient?.equals(this.ownId));\n\n const signals = msg.data.signalBatch ? msg.data.signalBatch.signals ?? [] : [msg.data.signal];\n for (const signal of signals) {\n if (!signal) {\n continue;\n }\n\n if ([ConnectionState.CREATED, ConnectionState.INITIAL].includes(this.state)) {\n log('buffered signal', { peerId: this.ownId, remoteId: this.remoteId, msg: msg.data });\n this._incomingSignalBuffer.push(signal);\n } else {\n invariant(this._transport, 'Connection not ready to accept signals.');\n log('received signal', { peerId: this.ownId, remoteId: this.remoteId, msg: msg.data });\n await this._transport.signal(signal);\n }\n }\n }\n\n initiate() {\n this._changeState(ConnectionState.INITIAL);\n }\n\n private _changeState(state: ConnectionState): void {\n log('stateChanged', { from: this._state, to: state, peerId: this.ownId });\n invariant(state !== this._state, 'Already in this state.');\n this._state = state;\n this.stateChanged.emit(state);\n }\n\n private async _emitTransportStats() {\n const stats = await this.transport?.getStats();\n if (stats) {\n this.transportStats.emit(stats);\n }\n }\n}\n", "//\n// Copyright 2020 DXOS.org\n//\n\nimport { type Any } from '@dxos/codec-protobuf';\nimport { Context } from '@dxos/context';\nimport { invariant } from '@dxos/invariant';\nimport { PublicKey } from '@dxos/keys';\nimport { log } from '@dxos/log';\nimport { schema, TimeoutError } from '@dxos/protocols';\nimport { type Answer, SwarmMessage } from '@dxos/protocols/proto/dxos/mesh/swarm';\nimport { ComplexMap, type MakeOptional } from '@dxos/util';\n\nimport { type OfferMessage, type SignalMessage, type SignalMessenger } from './signal-messenger';\n\ninterface OfferRecord {\n resolve: (answer: Answer) => void;\n}\n\nexport type SwarmMessengerOptions = {\n sendMessage: (params: { author: PublicKey; recipient: PublicKey; payload: Any }) => Promise<void>;\n onOffer: (message: OfferMessage) => Promise<Answer>;\n onSignal: (message: SignalMessage) => Promise<void>;\n topic: PublicKey;\n};\n\nconst SwarmMessage = schema.getCodecForType('dxos.mesh.swarm.SwarmMessage');\n\n/**\n * Adds offer/answer and signal interfaces.\n */\nexport class SwarmMessenger implements SignalMessenger {\n private readonly _ctx = new Context();\n\n private readonly _sendMessage: (msg: { author: PublicKey; recipient: PublicKey; payload: Any }) => Promise<void>;\n private readonly _onSignal: (message: SignalMessage) => Promise<void>;\n private readonly _onOffer: (message: OfferMessage) => Promise<Answer>;\n private readonly _topic: PublicKey;\n\n private readonly _offerRecords: ComplexMap<PublicKey, OfferRecord> = new ComplexMap((key) => key.toHex());\n\n constructor({ sendMessage, onSignal, onOffer, topic }: SwarmMessengerOptions) {\n this._sendMessage = sendMessage;\n this._onSignal = onSignal;\n this._onOffer = onOffer;\n this._topic = topic;\n }\n\n async receiveMessage({\n author,\n recipient,\n payload,\n }: {\n author: PublicKey;\n recipient: PublicKey;\n payload: Any;\n }): Promise<void> {\n if (payload.type_url !== 'dxos.mesh.swarm.SwarmMessage') {\n // Ignore not swarm messages.\n return;\n }\n const message: SwarmMessage = SwarmMessage.decode(payload.value);\n\n if (!this._topic.equals(message.topic)) {\n // Ignore messages from wrong topics.\n return;\n }\n\n log('received', { from: author, to: recipient, msg: message });\n\n if (message.data?.offer) {\n await this._handleOffer({ author, recipient, message });\n } else if (message.data?.answer) {\n await this._resolveAnswers(message);\n } else if (message.data?.signal) {\n await this._handleSignal({ author, recipient, message });\n } else if (message.data?.signalBatch) {\n await this._handleSignal({ author, recipient, message });\n } else {\n log.warn('unknown message', { message });\n }\n }\n\n async signal(message: SignalMessage): Promise<void> {\n invariant(message.data?.signal || message.data?.signalBatch, 'Invalid message');\n await this._sendReliableMessage({\n author: message.author,\n recipient: message.recipient,\n message,\n });\n }\n\n async offer(message: OfferMessage): Promise<Answer> {\n const networkMessage: SwarmMessage = {\n ...message,\n messageId: PublicKey.random(),\n };\n return new Promise<Answer>((resolve, reject) => {\n this._offerRecords.set(networkMessage.messageId!, { resolve });\n this._sendReliableMessage({\n author: message.author,\n recipient: message.recipient,\n message: networkMessage,\n }).catch((err) => reject(err));\n });\n }\n\n private async _sendReliableMessage({\n author,\n recipient,\n message,\n }: {\n author: PublicKey;\n recipient: PublicKey;\n message: MakeOptional<SwarmMessage, 'messageId'>;\n }): Promise<void> {\n const networkMessage: SwarmMessage = {\n ...message,\n // Setting unique message_id if it not specified yet.\n messageId: message.messageId ?? PublicKey.random(),\n };\n\n log('sending', { from: author, to: recipient, msg: networkMessage });\n await this._sendMessage({\n author,\n recipient,\n payload: {\n type_url: 'dxos.mesh.swarm.SwarmMessage',\n value: SwarmMessage.encode(networkMessage),\n },\n });\n }\n\n private async _resolveAnswers(message: SwarmMessage): Promise<void> {\n invariant(message.data?.answer?.offerMessageId, 'No offerMessageId');\n const offerRecord = this._offerRecords.get(message.data.answer.offerMessageId);\n if (offerRecord) {\n this._offerRecords.delete(message.data.answer.offerMessageId);\n invariant(message.data?.answer, 'No answer');\n log('resolving', { answer: message.data.answer });\n offerRecord.resolve(message.data.answer);\n }\n }\n\n private async _handleOffer({\n author,\n recipient,\n message,\n }: {\n author: PublicKey;\n recipient: PublicKey;\n message: SwarmMessage;\n }): Promise<void> {\n invariant(message.data.offer, 'No offer');\n const offerMessage: OfferMessage = {\n author,\n recipient,\n ...message,\n data: { offer: message.data.offer },\n };\n const answer = await this._onOffer(offerMessage);\n answer.offerMessageId = message.messageId;\n try {\n await this._sendReliableMessage({\n author: recipient,\n recipient: author,\n message: {\n topic: message.topic,\n sessionId: message.sessionId,\n data: { answer },\n },\n });\n } catch (err) {\n if (err instanceof TimeoutError) {\n log.info('timeout sending answer to offer', { err });\n } else {\n log.info('error sending answer to offer', { err });\n }\n }\n }\n\n private async _handleSignal({\n author,\n recipient,\n message,\n }: {\n author: PublicKey;\n recipient: PublicKey;\n message: SwarmMessage;\n }): Promise<void> {\n invariant(message.messageId);\n invariant(message.data.signal || message.data.signalBatch, 'Invalid message');\n const signalMessage: SignalMessage = {\n author,\n recipient,\n ...message,\n data: {\n signal: message.data.signal,\n signalBatch: message.data.signalBatch,\n },\n };\n\n await this._onSignal(signalMessage);\n }\n}\n", "//\n// Copyright 2020 DXOS.org\n//\n\nimport { Event, scheduleTask, sleep, synchronized } from '@dxos/async';\nimport { Context } from '@dxos/context';\nimport { ErrorStream } from '@dxos/debug';\nimport { invariant } from '@dxos/invariant';\nimport { PublicKey } from '@dxos/keys';\nimport { log, logInfo } from '@dxos/log';\nimport { type ListeningHandle, type Messenger } from '@dxos/messaging';\nimport { trace } from '@dxos/protocols';\nimport { type SwarmEvent } from '@dxos/protocols/proto/dxos/mesh/signal';\nimport { type Answer } from '@dxos/protocols/proto/dxos/mesh/swarm';\nimport { ComplexMap, isNotNullOrUndefined } from '@dxos/util';\n\nimport { type Connection, ConnectionState } from './connection';\nimport { type ConnectionLimiter } from './connection-limiter';\nimport { Peer } from './peer';\nimport { SwarmMessenger, type OfferMessage, type SignalMessage } from '../signal';\nimport { type SwarmController, type Topology } from '../topology';\nimport { type TransportFactory } from '../transport';\nimport { type Topic } from '../types';\nimport { type WireProtocolProvider } from '../wire-protocol';\n\nconst INITIATION_DELAY = 100;\n\n// TODO(burdon): Factor out.\nconst getClassName = (obj: any) => Object.getPrototypeOf(obj).constructor.name;\n\n/**\n * A single peer's view of the swarm.\n * Manages a set of connections implemented by simple-peer instances.\n * Routes signal events and maintains swarm topology.\n */\nexport class Swarm {\n private readonly _swarmMessenger: SwarmMessenger;\n\n private _ctx = new Context();\n\n private _listeningHandle?: ListeningHandle = undefined;\n\n /**\n * @internal\n */\n readonly _peers = new ComplexMap<PublicKey, Peer>(PublicKey.hash);\n\n /**\n * Unique id of the swarm, local to the current peer, generated when swarm is joined.\n */\n @logInfo\n readonly _instanceId = PublicKey.random().toHex();\n\n /**\n * New connection to a peer is started.\n * @internal\n */\n readonly connectionAdded = new Event<Connection>();\n\n /**\n * Connection to a peer is dropped.\n * @internal\n */\n readonly disconnected = new Event<PublicKey>();\n\n /**\n * Connection is established to a new peer.\n * @internal\n */\n readonly connected = new Event<PublicKey>();\n\n readonly errors = new ErrorStream();\n\n // TODO(burdon): Swarm => Peer.create/destroy =< Connection.open/close\n\n // TODO(burdon): Split up properties.\n constructor(\n private readonly _topic: PublicKey,\n private readonly _ownPeerId: PublicKey,\n private _topology: Topology,\n private readonly _protocolProvider: WireProtocolProvider,\n private readonly _messenger: Messenger,\n private readonly _transportFactory: TransportFactory,\n private readonly _label: string | undefined,\n private readonly _connectionLimiter: ConnectionLimiter,\n private readonly _initiationDelay = INITIATION_DELAY,\n ) {\n log.trace(\n 'dxos.mesh.swarm.constructor',\n trace.begin({ id: this._instanceId, data: { topic: this._topic.toHex(), peerId: this._ownPeerId.toHex() } }),\n );\n log('creating swarm', { peerId: _ownPeerId });\n _topology.init(this._getSwarmController());\n\n this._swarmMessenger = new SwarmMessenger({\n sendMessage: async (msg) => await this._messenger.sendMessage(msg),\n onSignal: async (msg) => await this.onSignal(msg),\n onOffer: async (msg) => await this.onOffer(msg),\n topic: this._topic,\n });\n log.trace('dxos.mesh.swarm.constructor', trace.end({ id: this._instanceId }));\n }\n\n get connections() {\n return Array.from(this._peers.values())\n .map((peer) => peer.connection)\n .filter(isNotNullOrUndefined);\n }\n\n @logInfo\n get ownPeerId() {\n return this._ownPeerId;\n }\n\n /**\n * Custom label assigned to this swarm. Used in devtools to display human-readable names for swarms.\n */\n get label(): string | undefined {\n return this._label;\n }\n\n @logInfo\n get topic(): Topic {\n return this._topic;\n }\n\n async open() {\n invariant(!this._listeningHandle);\n this._listeningHandle = await this._messenger.listen({\n peerId: this._ownPeerId,\n payloadType: 'dxos.mesh.swarm.SwarmMessage',\n onMessage: async (message) => {\n await this._swarmMessenger\n .receiveMessage(message)\n // TODO(nf): discriminate between errors\n .catch((err) => log.info('Error while receiving message', { err }));\n },\n });\n }\n\n async destroy() {\n log('destroying...');\n await this._listeningHandle?.unsubscribe();\n this._listeningHandle = undefined;\n\n await this._ctx.dispose();\n await this._topology.destroy();\n await Promise.all(Array.from(this._peers.keys()).map((key) => this._destroyPeer(key, 'swarm destroyed')));\n log('destroyed');\n }\n\n async setTopology(topology: Topology) {\n invariant(!this._ctx.disposed, 'Swarm is offline');\n if (topology === this._topology) {\n return;\n }\n log('setting topology', {\n previous: getClassName(this._topology),\n topology: getClassName(topology),\n });\n\n await this._topology.destroy();\n this._topology = topology;\n this._topology.init(this._getSwarmController());\n this._topology.update();\n }\n\n @synchronized\n onSwarmEvent(swarmEvent: SwarmEvent) {\n log('swarm event', { swarmEvent }); // TODO(burdon): Stringify.\n\n if (this._ctx.disposed) {\n log('swarm event ignored for disposed swarm');\n return;\n }\n\n if (swarmEvent.peerAvailable) {\n const peerId = PublicKey.from(swarmEvent.peerAvailable.peer);\n log('new peer', { peerId });\n if (!peerId.equals(this._ownPeerId)) {\n const peer = this._getOrCreatePeer(peerId);\n peer.advertizing = true;\n }\n } else if (swarmEvent.peerLeft) {\n const peer = this._peers.get(PublicKey.from(swarmEvent.peerLeft.peer));\n if (peer) {\n peer.advertizing = false;\n if (peer.connection?.state !== ConnectionState.CONNECTED) {\n // Destroy peer only if there is no p2p-connection established\n void this._destroyPeer(peer.id, 'peer left').catch((err) => log.catch(err));\n }\n } else {\n log('received peerLeft but no peer found', { peer: swarmEvent.peerLeft.peer });\n }\n }\n\n this._topology.update();\n }\n\n @synchronized\n async onOffer(message: OfferMessage): Promise<Answer> {\n log('offer', { message });\n if (this._ctx.disposed) {\n log('ignored for disposed swarm');\n return { accept: false };\n }\n\n // Id of the peer offering us the connection.\n invariant(message.author);\n if (!message.recipient?.equals(this._ownPeerId)) {\n log('rejecting offer with incorrect peerId', { message });\n return { accept: false };\n }\n if (!message.topic?.equals(this._topic)) {\n log('rejecting offer with incorrect topic', { message });\n return { accept: false };\n }\n\n const peer = this._getOrCreatePeer(message.author);\n const answer = await peer.onOffer(message);\n this._topology.update();\n return answer;\n }\n\n async onSignal(message: SignalMessage): Promise<void> {\n log('signal', { message });\n if (this._ctx.disposed) {\n log.info('ignored for offline swarm');\n return;\n }\n invariant(\n message.recipient?.equals(this._ownPeerId),\n `Invalid signal peer id expected=${this.ownPeerId}, actual=${message.recipient}`,\n );\n invariant(message.topic?.equals(this._topic));\n invariant(message.author);\n\n const peer = this._getOrCreatePeer(message.author);\n await peer.onSignal(message);\n }\n\n // For debug purposes\n @synchronized\n async goOffline() {\n await this._ctx.dispose();\n await Promise.all([...this._peers.keys()].map((peerId) => this._destroyPeer(peerId, 'goOffline')));\n }\n\n // For debug purposes\n @synchronized\n async goOnline() {\n this._ctx = new Context();\n }\n\n private _getOrCreatePeer(peerId: PublicKey): Peer {\n let peer = this._peers.get(peerId);\n if (!peer) {\n peer = new Peer(\n peerId,\n this._topic,\n this._ownPeerId,\n this._swarmMessenger,\n this._protocolProvider,\n this._transportFactory,\n this._connectionLimiter,\n {\n onInitiated: (connection) => {\n this.connectionAdded.emit(connection);\n },\n onConnected: () => {\n this.connected.emit(peerId);\n },\n onDisconnected: async () => {\n if (!peer!.advertizing) {\n await this._destroyPeer(peer!.id, 'peer disconnected');\n }\n\n this.disconnected.emit(peerId);\n this._topology.update();\n },\n onRejected: () => {\n // If the peer rejected our connection remove it from the set of candidates.\n // TODO(dmaretskyi): Set flag instead.\n if (this._peers.has(peerId)) {\n log('peer rejected connection', { peerId });\n void this._destroyPeer(peerId, 'peer rejected connection');\n }\n },\n onAccepted: () => {\n this._topology.update();\n },\n onOffer: (remoteId) => {\n return this._topology.onOffer(remoteId);\n },\n onPeerAvailable: () => {\n this._topology.update();\n },\n },\n );\n this._peers.set(peerId, peer);\n }\n\n return peer;\n }\n\n private async _destroyPeer(peerId: PublicKey, reason?: string) {\n invariant(this._peers.has(peerId));\n await this._peers.get(peerId)!.destroy(new Error(reason));\n this._peers.delete(peerId);\n }\n\n private _getSwarmController(): SwarmController {\n return {\n getState: () => ({\n ownPeerId: this._ownPeerId,\n connected: Array.from(this._peers.values())\n .filter((peer) => peer.connection)\n .map((peer) => peer.id),\n candidates: Array.from(this._peers.values())\n .filter((peer) => !peer.connection && peer.advertizing && peer.availableToConnect)\n .map((peer) => peer.id),\n }),\n connect: (peer) => {\n if (this._ctx.disposed) {\n return;\n }\n\n // Run in a separate non-blocking task.\n scheduleTask(this._ctx, async () => {\n try {\n await this._initiateConnection(peer);\n } catch (err: any) {\n log('initiation error', err);\n }\n });\n },\n disconnect: async (peer) => {\n if (this._ctx.disposed) {\n return;\n }\n\n // Run in a separate non-blocking task.\n scheduleTask(this._ctx, async () => {\n await this._closeConnection(peer);\n this._topology.update();\n });\n },\n };\n }\n\n /**\n * Creates a connection then sends message over signal network.\n */\n private async _initiateConnection(remoteId: PublicKey) {\n const ctx = this._ctx; // Copy to avoid getting reset while sleeping.\n\n // It is likely that the other peer will also try to connect to us at the same time.\n // If our peerId is higher, we will wait for a bit so that other peer has a chance to connect first.\n if (remoteId.toHex() < this._ownPeerId.toHex()) {\n log('initiation delay', { remoteId });\n await sleep(this._initiationDelay);\n }\n if (ctx.disposed) {\n return;\n }\n\n const peer = this._getOrCreatePeer(remoteId);\n\n if (peer.connection) {\n // Do nothing if peer is already connected.\n return;\n }\n\n log('initiating connection...', { remoteId });\n await peer.initiateConnection();\n this._topology.update();\n log('initiated', { remoteId });\n }\n\n private async _closeConnection(peerId: PublicKey) {\n const peer = this._peers.get(peerId);\n if (!peer) {\n return;\n }\n\n await peer.closeConnection();\n }\n}\n", "//\n// Copyright 2022 DXOS.org\n//\n\nimport { Event, scheduleTask, synchronized } from '@dxos/async';\nimport { Context } from '@dxos/context';\nimport { invariant } from '@dxos/invariant';\nimport { PublicKey } from '@dxos/keys';\nimport { log } from '@dxos/log';\nimport { CancelledError, SystemError } from '@dxos/protocols';\nimport { type Answer } from '@dxos/protocols/proto/dxos/mesh/swarm';\n\nimport { Connection, ConnectionState } from './connection';\nimport { type ConnectionLimiter } from './connection-limiter';\nimport { type OfferMessage, type SignalMessage, type SignalMessenger } from '../signal';\nimport { type TransportFactory } from '../transport';\nimport { type WireProtocolProvider } from '../wire-protocol';\n\nexport class ConnectionDisplacedError extends SystemError {\n constructor() {\n super('Connection displaced by remote initiator.');\n }\n}\n\ninterface PeerCallbacks {\n /**\n * Connection attempt initiated.\n */\n onInitiated: (connection: Connection) => void;\n\n /**\n * Connection opened.\n */\n onConnected: () => void;\n\n /**\n * Connection closed.\n */\n onDisconnected: () => void;\n\n /**\n * Peer accepted our offer to connect.\n */\n onAccepted: () => void;\n\n /**\n * Peer rejected our offer to connect.\n */\n onRejected: () => void;\n\n /**\n * Returns true if the remote peer's offer should be accepted.\n */\n onOffer: (remoteId: PublicKey) => Promise<boolean>;\n\n /**\n * Peer is available to connect.\n */\n onPeerAvailable: () => void;\n}\n\n/**\n * Minimum time the connection needs to be open to not incur a cool-down timer for this peer after the connection closes.\n */\nconst CONNECTION_COUNTS_STABLE_AFTER = 5_000;\n\n/**\n * State of remote peer during the lifetime of a swarm connection.\n * Can open and close multiple connections to the remote peer.\n */\nexport class Peer {\n /**\n * Will be available to connect after this time.\n */\n private _availableAfter = 0;\n public availableToConnect = true;\n private _lastConnectionTime?: number;\n\n private readonly _ctx = new Context();\n private _connectionCtx?: Context;\n\n public connection?: Connection;\n\n /**\n * Whether the peer is currently advertizing itself on the signal-network.\n */\n public advertizing = false;\n\n public initiating = false;\n\n public readonly connectionDisplaced = new Event<Connection>();\n\n // TODO(burdon): Convert to map?\n constructor(\n public readonly id: PublicKey,\n public readonly topic: PublicKey,\n public readonly localPeerId: PublicKey,\n private readonly _signalMessaging: SignalMessenger,\n private readonly _protocolProvider: WireProtocolProvider,\n private readonly _transportFactory: TransportFactory,\n private readonly _connectionLimiter: ConnectionLimiter,\n private readonly _callbacks: PeerCallbacks,\n ) {}\n\n /**\n * Respond to remote offer.\n */\n async onOffer(message: OfferMessage): Promise<Answer> {\n const remoteId = message.author;\n\n if (\n this.connection &&\n ![ConnectionState.CREATED, ConnectionState.INITIAL, ConnectionState.CONNECTING].includes(this.connection.state)\n ) {\n log.info(`received offer when connection already in ${this.connection.state} state`);\n return { accept: false };\n }\n // Check if we are already trying to connect to that peer.\n if (this.connection || this.initiating) {\n // Peer with the highest Id closes its connection, and accepts remote peer's offer.\n if (remoteId.toHex() < this.localPeerId.toHex()) {\n // TODO(burdon): Too verbose.\n // TODO(nf): gets stuck when remote connection is aborted (i.e. closed tab)\n log('close local connection', {\n localPeerId: this.id,\n topic: this.topic,\n remotePeerId: this.localPeerId,\n sessionId: this.connection?.sessionId,\n });\n\n if (this.connection) {\n // Close our connection and accept remote peer's connection.\n await this.closeConnection(new ConnectionDisplacedError());\n }\n } else {\n // Continue with our origination attempt, the remote peer will close it's connection and accept ours.\n return { accept: false };\n }\n }\n\n if (await this._callbacks.onOffer(remoteId)) {\n if (!this.connection) {\n // Connection might have been already established.\n invariant(message.sessionId);\n const connection = this._createConnection(false, message.sessionId);\n\n try {\n await this._connectionLimiter.connecting(message.sessionId);\n connection.initiate();\n\n await connection.openConnection();\n } catch (err: any) {\n if (!(err instanceof CancelledError)) {\n log.info('connection error', { topic: this.topic, peerId: this.localPeerId, remoteId: this.id, err });\n }\n\n // Calls `onStateChange` with CLOSED state.\n await this.closeConnection(err);\n }\n\n return { accept: true };\n }\n }\n return { accept: false };\n }\n\n /**\n * Initiate a connection to the remote peer.\n */\n async initiateConnection() {\n invariant(!this.initiating, 'Initiation in progress.');\n invariant(!this.connection, 'Already connected.');\n const sessionId = PublicKey.random();\n log('initiating...', { id: this.id, topic: this.topic, peerId: this.id, sessionId });\n\n const connection = this._createConnection(true, sessionId);\n this.initiating = true;\n\n let answer: Answer;\n try {\n await this._connectionLimiter.connecting(sessionId);\n connection.initiate();\n\n answer = await this._signalMessaging.offer({\n author: this.localPeerId,\n recipient: this.id,\n sessionId,\n topic: this.topic,\n data: { offer: {} },\n });\n log('received', { answer, topic: this.topic, ownId: this.localPeerId, remoteId: this.id });\n if (connection.state !== ConnectionState.INITIAL) {\n log('ignoring response');\n return;\n }\n } catch (err: any) {\n log('initiation error: send offer', { err, topic: this.topic, peerId: this.localPeerId, remoteId: this.id });\n await connection.abort(err);\n throw err;\n } finally {\n this.initiating = false;\n }\n\n try {\n if (!answer.accept) {\n this._callbacks.onRejected();\n return;\n }\n } catch (err: any) {\n log('initiation error: accept answer', {\n err,\n topic: this.topic,\n peerId: this.localPeerId,\n remoteId: this.id,\n });\n await connection.abort(err);\n throw err;\n } finally {\n this.initiating = false;\n }\n\n try {\n log('opening connection as initiator');\n await connection.openConnection();\n this._callbacks.onAccepted();\n } catch (err: any) {\n log('initiation error: open connection', {\n err,\n topic: this.topic,\n peerId: this.localPeerId,\n remoteId: this.id,\n });\n // TODO(nf): unsure when this will be called and the connection won't abort itself. but if it does fall through we should probably abort and not close.\n log.warn('closing connection due to unhandled error on openConnection', { err });\n // Calls `onStateChange` with CLOSED state.\n await this.closeConnection(err);\n throw err;\n } finally {\n this.initiating = false;\n }\n }\n\n /**\n * Create new connection.\n * Either we're initiating a connection or creating one in response to an offer from the other peer.\n */\n private _createConnection(initiator: boolean, sessionId: PublicKey) {\n log('creating connection', {\n topic: this.topic,\n peerId: this.localPeerId,\n remoteId: this.id,\n initiator,\n sessionId,\n });\n invariant(!this.connection, 'Already connected.');\n\n const connection = new Connection(\n this.topic,\n this.localPeerId,\n this.id,\n sessionId,\n initiator,\n this._signalMessaging,\n // TODO(dmaretskyi): Init only when connection is established.\n this._protocolProvider({ initiator, localPeerId: this.localPeerId, remotePeerId: this.id, topic: this.topic }),\n this._transportFactory,\n {\n onConnected: () => {\n this.availableToConnect = true;\n this._lastConnectionTime = Date.now();\n this._callbacks.onConnected();\n\n this._connectionLimiter.doneConnecting(sessionId);\n log.trace('dxos.mesh.connection.connected', {\n topic: this.topic,\n localPeerId: this.localPeerId,\n remotePeerId: this.id,\n sessionId,\n initiator,\n });\n },\n onClosed: (err) => {\n log('connection closed', { topic: this.topic, peerId: this.localPeerId, remoteId: this.id, initiator });\n\n // Make sure none of the connections are stuck in the limiter.\n this._connectionLimiter.doneConnecting(sessionId);\n\n invariant(this.connection === connection, 'Connection mismatch (race condition).');\n\n log.trace('dxos.mesh.connection.closed', {\n topic: this.topic,\n localPeerId: this.localPeerId,\n remotePeerId: this.id,\n sessionId,\n initiator,\n });\n\n if (err instanceof ConnectionDisplacedError) {\n this.connectionDisplaced.emit(this.connection);\n } else {\n if (this._lastConnectionTime && this._lastConnectionTime + CONNECTION_COUNTS_STABLE_AFTER < Date.now()) {\n // If we're closing the connection, and it has been connected for a while, reset the backoff.\n this._availableAfter = 0;\n } else {\n this.availableToConnect = false;\n this._availableAfter = increaseInterval(this._availableAfter);\n }\n this._callbacks.onDisconnected();\n\n scheduleTask(\n this._connectionCtx!,\n () => {\n this.availableToConnect = true;\n this._callbacks.onPeerAvailable();\n },\n this._availableAfter,\n );\n }\n\n this.connection = undefined;\n },\n },\n );\n this._callbacks.onInitiated(connection);\n\n void this._connectionCtx?.dispose();\n this._connectionCtx = this._ctx.derive();\n\n connection.errors.handle((err) => {\n log.info('connection error, closing', {\n topic: this.topic,\n peerId: this.localPeerId,\n remoteId: this.id,\n initiator,\n err,\n });\n log.trace('dxos.mesh.connection.error', {\n topic: this.topic,\n localPeerId: this.localPeerId,\n remotePeerId: this.id,\n sessionId,\n initiator,\n err,\n });\n\n // Calls `onStateChange` with CLOSED state.\n void this.closeConnection(err);\n });\n\n this.connection = connection;\n\n return connection;\n }\n\n async closeConnection(err?: Error) {\n if (!this.connection) {\n return;\n }\n\n const connection = this.connection;\n\n log('closing...', { peerId: this.id, sessionId: connection.sessionId });\n\n // Triggers `onStateChange` callback which will clean up the connection.\n // Won't throw.\n await connection.close(err);\n\n log('closed', { peerId: this.id, sessionId: connection.sessionId });\n }\n\n async onSignal(message: SignalMessage) {\n if (!this.connection) {\n log('dropping signal message for non-existent connection', { message });\n return;\n }\n\n await this.connection.signal(message);\n }\n\n @synchronized\n async destroy(reason?: Error) {\n await this._ctx.dispose();\n log('Destroying peer', { peerId: this.id, topic: this.topic });\n\n // Won't throw.\n await this?.connection?.close(reason);\n }\n}\n\nconst increaseInterval = (interval: number) => {\n if (interval === 0) {\n return 50;\n } else if (interval < 500) {\n return 500;\n } else if (interval < 1000) {\n return 1000;\n } else if (interval < 5_000) {\n return 5_000;\n }\n return 10_000;\n};\n", "//\n// Copyright 2020 DXOS.org\n//\n\nimport { Event, EventSubscriptions } from '@dxos/async';\nimport { PublicKey } from '@dxos/keys';\nimport { log } from '@dxos/log';\nimport { ComplexMap } from '@dxos/util';\n\nimport { type ConnectionState } from './connection';\nimport { type Swarm } from './swarm';\n\n/**\n * State of the connection to the remote peer with additional info derived from network mapping.\n */\nexport type PeerState = ConnectionState | 'INDIRECTLY_CONNECTED' | 'ME';\n\n/**\n * Information about remote peer, directly or indirectly connected.\n */\nexport interface PeerInfo {\n id: PublicKey;\n state: PeerState;\n connections: PublicKey[];\n}\n\ntype Unsubscribe = () => void;\n\nexport class SwarmMapper {\n private readonly _subscriptions = new EventSubscriptions();\n private readonly _connectionSubscriptions = new ComplexMap<PublicKey, Unsubscribe>(PublicKey.hash);\n private readonly _peers = new ComplexMap<PublicKey, PeerInfo>(PublicKey.hash);\n\n readonly mapUpdated = new Event<PeerInfo[]>();\n\n get peers(): PeerInfo[] {\n return Array.from(this._peers.values());\n }\n\n constructor(private readonly _swarm: Swarm) {\n this._subscriptions.add(\n _swarm.connectionAdded.on((connection) => {\n this._update();\n this._connectionSubscriptions.set(\n connection.remoteId,\n connection.stateChanged.on(() => {\n this._update();\n }),\n );\n }),\n );\n\n this._subscriptions.add(\n _swarm.disconnected.on((peerId) => {\n this._connectionSubscriptions.get(peerId)?.();\n this._connectionSubscriptions.delete(peerId);\n this._update();\n }),\n );\n\n // if (_presence) {\n // this._subscriptions.add(_presence.graphUpdated.on(() => {\n // this._update();\n // }));\n // }\n\n // TODO(burdon): Do not call from constructor.\n this._update();\n }\n\n private _update() {\n log('updating swarm');\n\n this._peers.clear();\n this._peers.set(this._swarm.ownPeerId, {\n id: this._swarm.ownPeerId,\n state: 'ME', // TODO(burdon): Enum (rename \"local\").\n connections: [],\n });\n\n for (const connection of this._swarm.connections) {\n this._peers.set(connection.remoteId, {\n id: connection.remoteId,\n state: connection.state,\n connections: [this._swarm.ownPeerId],\n });\n }\n\n // if (this._presence) {\n // this._presence.graph.forEachNode((node: any) => {\n // const id = PublicKey.fromHex(node.id);\n // if (this._peers.has(id)) {\n // return;\n // }\n\n // this._peers.set(id, {\n // id,\n // state: 'INDIRECTLY_CONNECTED',\n // connections: []\n // });\n // });\n\n // this._presence.graph.forEachLink((link: any) => {\n // const from = PublicKey.from(link.fromId);\n // const to = PublicKey.from(link.toId);\n // // Ignore connections to self, they are already handled.\n // if (!from.equals(this._swarm.ownPeerId) && !to.equals(this._swarm.ownPeerId)) {\n // this._peers.get(from)!.connections.push(to);\n // }\n // });\n // }\n\n log('graph changed', {\n directConnections: this._swarm.connections.length,\n totalPeersInSwarm: this._peers.size,\n });\n\n this.mapUpdated.emit(Array.from(this._peers.values()));\n }\n\n // TODO(burdon): Async open/close.\n destroy() {\n Array.from(this._connectionSubscriptions.values()).forEach((cb) => cb());\n this._subscriptions.clear();\n }\n}\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { DeferredTask } from '@dxos/async';\nimport { Context } from '@dxos/context';\nimport { invariant } from '@dxos/invariant';\nimport { PublicKey } from '@dxos/keys';\nimport { log } from '@dxos/log';\nimport { CancelledError } from '@dxos/protocols';\nimport { ComplexMap } from '@dxos/util';\n\nexport const MAX_CONCURRENT_INITIATING_CONNECTIONS = 50;\n\nexport type ConnectionLimiterOptions = {\n maxConcurrentInitConnections?: number;\n};\n\n/**\n * Limits the amount of concurrent connections with 'CONNECTING' state.\n */\nexport class ConnectionLimiter {\n private readonly _ctx = new Context();\n private readonly _maxConcurrentInitConnections;\n /**\n * Queue of promises to resolve when initiating connections amount is below the limit.\n */\n private readonly _waitingPromises = new ComplexMap<PublicKey, { resolve: () => void; reject: (err: Error) => void }>(\n PublicKey.hash,\n );\n\n resolveWaitingPromises = new DeferredTask(this._ctx, async () => {\n Array.from(this._waitingPromises.values())\n .slice(0, this._maxConcurrentInitConnections)\n .forEach(({ resolve }) => {\n resolve();\n });\n });\n\n constructor({ maxConcurrentInitConnections = MAX_CONCURRENT_INITIATING_CONNECTIONS }: ConnectionLimiterOptions = {}) {\n this._maxConcurrentInitConnections = maxConcurrentInitConnections;\n }\n\n /**\n * @returns Promise that resolves in queue when connections amount with 'CONNECTING' state is below the limit.\n */\n async connecting(sessionId: PublicKey): Promise<void> {\n invariant(!this._waitingPromises.has(sessionId), 'Peer is already waiting for connection');\n log('waiting', { sessionId });\n await new Promise<void>((resolve, reject) => {\n this._waitingPromises.set(sessionId, {\n resolve,\n reject,\n });\n this.resolveWaitingPromises.schedule();\n });\n log('allow', { sessionId });\n }\n\n /**\n * Rejects promise returned by `connecting` method.\n */\n doneConnecting(sessionId: PublicKey) {\n log('done', { sessionId });\n if (!this._waitingPromises.has(sessionId)) {\n return;\n }\n this._waitingPromises.get(sessionId)!.reject(new CancelledError());\n this._waitingPromises.delete(sessionId);\n this.resolveWaitingPromises.schedule();\n }\n}\n", "//\n// Copyright 2021 DXOS.org\n//\n\nimport { Event } from '@dxos/async';\nimport { raise } from '@dxos/debug';\nimport { PublicKey } from '@dxos/keys';\nimport { type SwarmInfo, type ConnectionInfo } from '@dxos/protocols/proto/dxos/devtools/swarm';\nimport { type MuxerStats } from '@dxos/teleport';\nimport { ComplexMap } from '@dxos/util';\n\nimport { ConnectionState, type Swarm } from './swarm';\nimport { type WireProtocol } from './wire-protocol';\n\nconst CONNECTION_GC_THRESHOLD = 1000 * 60 * 15;\n\nexport enum EventType {\n CONNECTION_STATE_CHANGED = 'CONNECTION_STATE_CHANGED',\n PROTOCOL_ERROR = 'PROTOCOL_ERROR',\n PROTOCOL_EXTENSIONS_INITIALIZED = 'PROTOCOL_EXTENSIONS_INITIALIZED',\n PROTOCOL_EXTENSIONS_HANDSHAKE = 'PROTOCOL_EXTENSIONS_HANDSHAKE',\n PROTOCOL_HANDSHAKE = 'PROTOCOL_HANDSHAKE',\n}\n\nexport class ConnectionLog {\n /**\n * SwarmId => info\n */\n private readonly _swarms = new ComplexMap<PublicKey, SwarmInfo>(PublicKey.hash);\n\n readonly update = new Event();\n\n getSwarmInfo(swarmId: PublicKey) {\n return this._swarms.get(swarmId) ?? raise(new Error(`Swarm not found: ${swarmId}`));\n }\n\n get swarms(): SwarmInfo[] {\n return Array.from(this._swarms.values());\n }\n\n joinedSwarm(swarm: Swarm) {\n const info: SwarmInfo = {\n id: PublicKey.from(swarm._instanceId),\n topic: swarm.topic,\n isActive: true,\n label: swarm.label,\n connections: [],\n };\n\n this._swarms.set(PublicKey.from(swarm._instanceId), info);\n this.update.emit();\n\n swarm.connectionAdded.on((connection) => {\n const connectionInfo: ConnectionInfo = {\n state: ConnectionState.CREATED,\n closeReason: connection.closeReason,\n remotePeerId: connection.remoteId,\n sessionId: connection.sessionId,\n transport: connection.transport && Object.getPrototypeOf(connection.transport).constructor.name,\n protocolExtensions: [], // TODO(dmaretskyi): Fix.\n events: [],\n lastUpdate: new Date(),\n };\n info.connections!.push(connectionInfo);\n this.update.emit();\n\n connection.stateChanged.on(async (state) => {\n connectionInfo.state = state;\n connectionInfo.closeReason = connection.closeReason;\n connectionInfo.lastUpdate = new Date();\n connectionInfo.events!.push({\n type: EventType.CONNECTION_STATE_CHANGED,\n newState: state,\n });\n\n if (state === ConnectionState.CONNECTED) {\n const details = await connection.transport?.getDetails();\n connectionInfo.transportDetails = details;\n }\n\n this.update.emit();\n });\n\n (connection.protocol as WireProtocol & { stats: Event<MuxerStats> })?.stats?.on((stats) => {\n connectionInfo.readBufferSize = stats.readBufferSize;\n connectionInfo.writeBufferSize = stats.writeBufferSize;\n connectionInfo.streams = stats.channels;\n connectionInfo.lastUpdate = new Date();\n this.update.emit();\n });\n\n connection.transportStats?.on((stats) => {\n connectionInfo.transportBytesSent = stats.bytesSent;\n connectionInfo.transportBytesReceived = stats.bytesReceived;\n connectionInfo.transportPacketsSent = stats.packetsSent;\n connectionInfo.transportPacketsReceived = stats.packetsReceived;\n });\n\n gcSwarm(info);\n\n // connection.protocol.protocol?.error.on((error) => {\n // connectionInfo.events!.push({\n // type: EventType.PROTOCOL_ERROR,\n // error: error.stack ?? error.message\n // });\n // this.update.emit();\n // });\n // connection.protocol.protocol?.extensionsInitialized.on(() => {\n // connectionInfo.events!.push({\n // type: EventType.PROTOCOL_EXTENSIONS_INITIALIZED\n // });\n // this.update.emit();\n // });\n // connection.protocol.protocol?.extensionsHandshake.on(() => {\n // connectionInfo.events!.push({\n // type: EventType.PROTOCOL_EXTENSIONS_HANDSHAKE\n // });\n // this.update.emit();\n // });\n // connection.protocol.protocol?.handshake.on(() => {\n // connectionInfo.events!.push({\n // type: EventType.PROTOCOL_HANDSHAKE\n // });\n // this.update.emit();\n // });\n });\n }\n\n leftSwarm(swarm: Swarm) {\n this.getSwarmInfo(PublicKey.from(swarm._instanceId)).isActive = false;\n this.update.emit();\n }\n}\n\nconst gcSwarm = (swarm: SwarmInfo) => {\n swarm.connections = swarm.connections?.filter((connection) => {\n return connection.lastUpdate ? Date.now() - connection.lastUpdate.getTime() < CONNECTION_GC_THRESHOLD : true;\n });\n};\n", "//\n// Copyright 2020 DXOS.org\n//\n\nimport { Event } from '@dxos/async';\nimport { invariant } from '@dxos/invariant';\nimport { PublicKey } from '@dxos/keys';\nimport { log } from '@dxos/log';\nimport { Messenger, type SignalManager } from '@dxos/messaging';\nimport { trace } from '@dxos/protocols';\nimport { ConnectionState } from '@dxos/protocols/proto/dxos/client/services';\nimport { ComplexMap } from '@dxos/util';\n\nimport { ConnectionLog } from './connection-log';\nimport { type SignalConnection } from './signal';\nimport { Swarm, SwarmMapper, ConnectionLimiter } from './swarm';\nimport { type Topology } from './topology';\nimport { type TransportFactory } from './transport';\nimport { type WireProtocolProvider } from './wire-protocol';\n/**\n * Represents a single connection to a remote peer.\n */\nexport type SwarmConnection = {\n close(): Promise<void>;\n};\n\n// TODO(burdon): Add timeout.\nexport type SwarmOptions = {\n /**\n * Swarm topic.\n */\n topic: PublicKey;\n\n /**\n * This node's peer id.\n */\n peerId: PublicKey;\n\n /**\n * Protocol to use for every connection.\n */\n protocolProvider: WireProtocolProvider;\n\n /**\n * Requested topology. Must be a new instance for every swarm.\n */\n topology?: Topology;\n\n /**\n * Custom label assigned to this swarm.\n * Used in devtools to display human-readable names for swarms.\n */\n label?: string;\n};\n\nexport type NetworkManagerOptions = {\n transportFactory: TransportFactory;\n signalManager: SignalManager;\n log?: boolean; // Log to devtools.\n};\n\n/**\n * Manages connection to the swarm.\n */\n// TODO(dmaretskyi): Rename SwarmManager.\nexport class NetworkManager {\n /**\n * @internal\n */\n readonly _swarms = new ComplexMap<PublicKey, Swarm>(PublicKey.hash);\n private readonly _mappers = new ComplexMap<PublicKey, SwarmMapper>(PublicKey.hash);\n\n private readonly _transportFactory: TransportFactory;\n private readonly _signalManager: SignalManager;\n private readonly _messenger: Messenger;\n private readonly _signalConnection: SignalConnection;\n private readonly _connectionLimiter: ConnectionLimiter;\n\n private _connectionState = ConnectionState.ONLINE;\n public readonly connectionStateChanged = new Event<ConnectionState>();\n\n private readonly _connectionLog?: ConnectionLog;\n\n public readonly topicsUpdated = new Event<void>();\n\n private readonly _instanceId = PublicKey.random().toHex();\n\n constructor({ transportFactory, signalManager, log }: NetworkManagerOptions) {\n this._transportFactory = transportFactory;\n\n // Listen for signal manager events.\n this._signalManager = signalManager;\n this._signalManager.swarmEvent.on(({ topic, swarmEvent: event }) => this._swarms.get(topic)?.onSwarmEvent(event));\n this._messenger = new Messenger({ signalManager: this._signalManager });\n this._signalConnection = {\n join: (opts) => this._signalManager.join(opts),\n leave: (opts) => this._signalManager.leave(opts),\n };\n\n this._connectionLimiter = new ConnectionLimiter();\n // TODO(burdon): Inject listener (generic pattern).\n if (log) {\n this._connectionLog = new ConnectionLog();\n }\n }\n\n // TODO(burdon): Remove access (Devtools only).\n get connectionLog() {\n return this._connectionLog;\n }\n\n get connectionState() {\n return this._connectionState;\n }\n\n // TODO(burdon): Reconcile with \"discovery_key\".\n get topics() {\n return Array.from(this._swarms.keys());\n }\n\n getSwarmMap(topic: PublicKey): SwarmMapper | undefined {\n return this._mappers.get(topic);\n }\n\n getSwarm(topic: PublicKey): Swarm | undefined {\n return this._swarms.get(topic);\n }\n\n async open() {\n log.trace('dxos.mesh.network-manager.open', trace.begin({ id: this._instanceId }));\n await this._messenger.open();\n await this._signalManager.open();\n log.trace('dxos.mesh.network-manager.open', trace.end({ id: this._instanceId }));\n }\n\n async close() {\n for (const topic of this._swarms.keys()) {\n await this.leaveSwarm(topic).catch((err) => {\n log(err);\n });\n }\n\n await this._messenger.close();\n await this._signalManager.close();\n }\n\n /**\n * Join the swarm.\n */\n async joinSwarm({\n topic,\n peerId,\n topology,\n protocolProvider: protocol,\n label,\n }: SwarmOptions): Promise<SwarmConnection> {\n invariant(PublicKey.isPublicKey(topic));\n invariant(PublicKey.isPublicKey(peerId));\n invariant(topology);\n invariant(typeof protocol === 'function');\n if (this._swarms.has(topic)) {\n throw new Error(`Already connected to swarm: ${PublicKey.from(topic)}`);\n }\n\n log('joining', { topic: PublicKey.from(topic), peerId, topology: topology.toString() }); // TODO(burdon): Log peerId.\n const swarm = new Swarm(\n topic,\n peerId,\n topology,\n protocol,\n this._messenger,\n this._transportFactory,\n label,\n this._connectionLimiter,\n );\n\n swarm.errors.handle((error) => {\n log('swarm error', { error });\n });\n\n this._swarms.set(topic, swarm);\n this._mappers.set(topic, new SwarmMapper(swarm));\n\n // Open before joining.\n await swarm.open();\n\n this._signalConnection.join({ topic, peerId }).catch((error) => log.catch(error));\n\n this.topicsUpdated.emit();\n this._connectionLog?.joinedSwarm(swarm);\n log('joined', { topic: PublicKey.from(topic), count: this._swarms.size });\n\n return {\n close: () => this.leaveSwarm(topic),\n };\n }\n\n /**\n * Close the connection.\n */\n async leaveSwarm(topic: PublicKey) {\n if (!this._swarms.has(topic)) {\n // log.warn('swarm not open', { topic: PublicKey.from(topic).truncate() });\n return;\n }\n\n log('leaving', { topic: PublicKey.from(topic) });\n const swarm = this._swarms.get(topic)!;\n await this._signalConnection.leave({ topic, peerId: swarm.ownPeerId });\n\n const map = this._mappers.get(topic)!;\n map.destroy();\n this._mappers.delete(topic);\n\n this._connectionLog?.leftSwarm(swarm);\n\n await swarm.destroy();\n this._swarms.delete(topic);\n\n await this.topicsUpdated.emit();\n log('left', { topic: PublicKey.from(topic), count: this._swarms.size });\n }\n\n async setConnectionState(state: ConnectionState) {\n if (state === this._connectionState) {\n return;\n }\n\n switch (state) {\n case ConnectionState.OFFLINE: {\n this._connectionState = state;\n // go offline\n await Promise.all([...this._swarms.values()].map((swarm) => swarm.goOffline()));\n await this._messenger.close();\n await this._signalManager.close();\n break;\n }\n case ConnectionState.ONLINE: {\n this._connectionState = state;\n // go online\n this._messenger.open();\n await Promise.all([...this._swarms.values()].map((swarm) => swarm.goOnline()));\n await this._signalManager.open();\n break;\n }\n }\n\n this.connectionStateChanged.emit(this._connectionState);\n }\n}\n", "//\n// Copyright 2020 DXOS.org\n//\n\nimport { invariant } from '@dxos/invariant';\nimport { type PublicKey } from '@dxos/keys';\n\nimport { type SwarmController, type Topology } from './topology';\n\nexport class FullyConnectedTopology implements Topology {\n private _controller?: SwarmController;\n\n toString() {\n return 'FullyConnectedTopology';\n }\n\n init(controller: SwarmController): void {\n invariant(!this._controller, 'Already initialized');\n this._controller = controller;\n }\n\n update(): void {\n invariant(this._controller, 'Not initialized');\n const { candidates: discovered } = this._controller.getState();\n for (const peer of discovered) {\n // TODO(burdon): Back-off.\n this._controller.connect(peer);\n }\n }\n\n async onOffer(peer: PublicKey): Promise<boolean> {\n return true;\n }\n\n async destroy(): Promise<void> {\n // Nothing to do.\n }\n}\n", "//\n// Copyright 2020 DXOS.org\n//\n\nimport distance from 'xor-distance';\n\nimport { invariant } from '@dxos/invariant';\nimport { type PublicKey } from '@dxos/keys';\nimport { log } from '@dxos/log';\n\nimport { type SwarmController, type Topology } from './topology';\n\nconst MIN_UPDATE_INTERVAL = 1000 * 10;\nconst MAX_CHANGES_PER_UPDATE = 1;\n\nexport interface MMSTTopologyOptions {\n /**\n * Number of connections the peer will originate by itself.\n */\n originateConnections?: number;\n\n /**\n * Maximum number of connections allowed, all other connections will be dropped.\n */\n maxPeers?: number;\n\n /**\n * Size of random sample from which peer candidates are selected.\n */\n sampleSize?: number;\n}\n\nexport class MMSTTopology implements Topology {\n private readonly _originateConnections: number;\n private readonly _maxPeers: number;\n private readonly _sampleSize: number;\n\n private _controller?: SwarmController;\n\n private _sampleCollected = false;\n\n private _lastAction = new Date(0);\n\n constructor({ originateConnections = 2, maxPeers = 4, sampleSize = 10 }: MMSTTopologyOptions = {}) {\n this._originateConnections = originateConnections;\n this._maxPeers = maxPeers;\n this._sampleSize = sampleSize;\n }\n\n init(controller: SwarmController): void {\n invariant(!this._controller, 'Already initialized');\n this._controller = controller;\n }\n\n update(): void {\n invariant(this._controller, 'Not initialized');\n const { connected, candidates } = this._controller.getState();\n // Run the algorithms if we have first candidates, ran it before, or have more connections than needed.\n if (this._sampleCollected || connected.length > this._maxPeers || candidates.length > 0) {\n log('Running the algorithm.');\n this._sampleCollected = true;\n this._runAlgorithm();\n }\n }\n\n async onOffer(peer: PublicKey): Promise<boolean> {\n invariant(this._controller, 'Not initialized');\n const { connected } = this._controller.getState();\n const accept = connected.length < this._maxPeers;\n log(`Offer ${peer} accept=${accept}`);\n return accept;\n }\n\n async destroy(): Promise<void> {\n // Nothing to do.\n }\n\n private _runAlgorithm() {\n invariant(this._controller, 'Not initialized');\n const { connected, candidates, ownPeerId } = this._controller.getState();\n\n // TODO(nf): does this rate limiting/flap dampening logic belong here or in the SwarmController?\n if (connected.length > this._maxPeers) {\n // Disconnect extra peers.\n log(`disconnect ${connected.length - this._maxPeers} peers.`);\n const sorted = sortByXorDistance(connected, ownPeerId)\n .reverse()\n .slice(0, this._maxPeers - connected.length);\n invariant(sorted.length === 0);\n\n if (sorted.length > MAX_CHANGES_PER_UPDATE) {\n log(`want to disconnect ${sorted.length} peers but limited to ${MAX_CHANGES_PER_UPDATE}`);\n }\n\n if (Date.now() - this._lastAction.getTime() > MIN_UPDATE_INTERVAL) {\n for (const peer of sorted.slice(0, MAX_CHANGES_PER_UPDATE)) {\n log(`Disconnect ${peer}.`);\n this._controller.disconnect(peer);\n }\n this._lastAction = new Date();\n } else {\n log('rate limited discconnect');\n }\n } else if (connected.length < this._originateConnections) {\n // Connect new peers to reach desired quota.\n log(`connect ${this._originateConnections - connected.length} peers.`);\n const sample = candidates.sort(() => Math.random() - 0.5).slice(0, this._sampleSize);\n const sorted = sortByXorDistance(sample, ownPeerId).slice(0, this._originateConnections - connected.length);\n\n if (sorted.length > MAX_CHANGES_PER_UPDATE) {\n log(`want to connect ${sorted.length} peers but limited to ${MAX_CHANGES_PER_UPDATE}`);\n }\n if (Date.now() - this._lastAction.getTime() > MIN_UPDATE_INTERVAL) {\n for (const peer of sorted.slice(0, MAX_CHANGES_PER_UPDATE)) {\n log(`Connect ${peer}.`);\n this._controller.connect(peer);\n }\n this._lastAction = new Date();\n } else {\n log('rate limited connect');\n }\n }\n }\n\n toString() {\n return 'MMSTTopology';\n }\n}\n\nconst sortByXorDistance = (keys: PublicKey[], reference: PublicKey): PublicKey[] =>\n keys.sort((a, b) =>\n distance.gt(distance(a.asBuffer(), reference.asBuffer()), distance(b.asBuffer(), reference.asBuffer())),\n );\n", "//\n// Copyright 2020 DXOS.org\n//\n\nimport { invariant } from '@dxos/invariant';\nimport { type PublicKey } from '@dxos/keys';\nimport { log } from '@dxos/log';\n\nimport { type SwarmController, type Topology } from './topology';\n\nexport class StarTopology implements Topology {\n private _controller?: SwarmController;\n\n constructor(private readonly _centralPeer: PublicKey) {}\n\n toString() {\n return `StarTopology(${this._centralPeer.truncate()})`;\n }\n\n init(controller: SwarmController): void {\n invariant(!this._controller, 'Already initialized.');\n this._controller = controller;\n }\n\n update(): void {\n invariant(this._controller, 'Not initialized.');\n const { candidates, connected, ownPeerId } = this._controller.getState();\n if (!ownPeerId.equals(this._centralPeer)) {\n log('leaf peer dropping all connections apart from central peer.');\n\n // Drop all connections other than central peer.\n for (const peer of connected) {\n if (!peer.equals(this._centralPeer)) {\n log('dropping connection', { peer });\n this._controller.disconnect(peer);\n }\n }\n }\n\n for (const peer of candidates) {\n // Connect to central peer.\n if (peer.equals(this._centralPeer) || ownPeerId.equals(this._centralPeer)) {\n log('connecting to peer', { peer });\n this._controller.connect(peer);\n }\n }\n }\n\n async onOffer(peer: PublicKey): Promise<boolean> {\n invariant(this._controller, 'Not initialized.');\n const { ownPeerId } = this._controller.getState();\n log('offer', {\n peer,\n isCentral: peer.equals(this._centralPeer),\n isSelfCentral: ownPeerId.equals(this._centralPeer),\n });\n return ownPeerId.equals(this._centralPeer) || peer.equals(this._centralPeer);\n }\n\n async destroy(): Promise<void> {\n // Nothing to do.\n }\n}\n", "//\n// Copyright 2020 DXOS.org\n//\n\nimport { Transform } from 'node:stream';\n\nimport { Event, Trigger } from '@dxos/async';\nimport { ErrorStream } from '@dxos/debug';\nimport { invariant } from '@dxos/invariant';\nimport { PublicKey } from '@dxos/keys';\nimport { log, logInfo } from '@dxos/log';\nimport { type Signal } from '@dxos/protocols/proto/dxos/mesh/swarm';\nimport { ComplexMap } from '@dxos/util';\n\nimport { type Transport, type TransportFactory, type TransportOptions, type TransportStats } from './transport';\n\n// TODO(burdon): Make configurable.\n// Delay (in milliseconds) for data being sent through in-memory connections to simulate network latency.\nconst MEMORY_TRANSPORT_DELAY = 1;\n\n/**\n * Creates a binary stream that delays data being sent through the stream by the specified amount of time.\n */\nconst createStreamDelay = (delay: number): NodeJS.ReadWriteStream => {\n return new Transform({\n objectMode: true,\n transform: (chunk, _, cb) => {\n setTimeout(() => cb(null, chunk), delay); // TODO(burdon): Randomize.\n },\n });\n};\n\nexport const MemoryTransportFactory: TransportFactory = {\n createTransport: (params) => new MemoryTransport(params),\n};\n\n/**\n * Fake transport.\n */\nexport class MemoryTransport implements Transport {\n // TODO(burdon): Remove static properties (inject context into constructor).\n private static readonly _connections = new ComplexMap<PublicKey, MemoryTransport>(PublicKey.hash);\n\n public readonly closed = new Event<void>();\n public readonly connected = new Event<void>();\n public readonly errors = new ErrorStream();\n\n @logInfo\n private readonly _instanceId = PublicKey.random(); // TODO(burdon): Rename peerId? (Use local/remote labels in logs).\n\n private readonly _remote = new Trigger<PublicKey>();\n\n private readonly _outgoingDelay = createStreamDelay(MEMORY_TRANSPORT_DELAY);\n private readonly _incomingDelay = createStreamDelay(MEMORY_TRANSPORT_DELAY);\n\n private _destroyed = false;\n\n @logInfo\n private _remoteInstanceId!: PublicKey;\n\n private _remoteConnection?: MemoryTransport;\n\n constructor(private readonly options: TransportOptions) {\n log('creating');\n\n invariant(!MemoryTransport._connections.has(this._instanceId), 'Duplicate memory connection');\n MemoryTransport._connections.set(this._instanceId, this);\n\n // Initiator will send a signal, the receiver will receive the unique ID and connect the streams.\n if (this.options.initiator) {\n // prettier-ignore\n setTimeout(async () => {\n log('sending signal');\n void this.options.sendSignal({\n payload: { transportId: this._instanceId.toHex() }\n }).catch(err => {\n if (!this._destroyed) {\n this.errors.raise(err);\n }\n });\n });\n } else {\n this._remote\n .wait({ timeout: this.options.timeout ?? 1000 })\n .then((remoteId) => {\n if (this._destroyed) {\n return;\n }\n\n this._remoteInstanceId = remoteId;\n this._remoteConnection = MemoryTransport._connections.get(this._remoteInstanceId);\n if (!this._remoteConnection) {\n // Remote connection was destroyed before we could connect.\n this._destroyed = true;\n this.closed.emit();\n return;\n }\n\n invariant(!this._remoteConnection._remoteConnection, `Remote already connected: ${this._remoteInstanceId}`);\n this._remoteConnection._remoteConnection = this;\n this._remoteConnection._remoteInstanceId = this._instanceId;\n\n log('connected');\n this.options.stream\n .pipe(this._outgoingDelay)\n .pipe(this._remoteConnection.options.stream)\n .pipe(this._incomingDelay)\n .pipe(this.options.stream);\n\n this.connected.emit();\n this._remoteConnection.connected.emit();\n })\n .catch((err) => {\n if (this._destroyed) {\n return;\n }\n\n this.errors.raise(err);\n });\n }\n }\n\n async destroy(): Promise<void> {\n log('closing');\n this._destroyed = true;\n\n MemoryTransport._connections.delete(this._instanceId);\n if (this._remoteConnection) {\n log('closing');\n this._remoteConnection._destroyed = true;\n MemoryTransport._connections.delete(this._remoteInstanceId);\n\n // TODO(dmaretskyi): Hypercore streams do not seem to have the unpipe method.\n // NOTE(burdon): Using readable-stream.wrap() might help (see feed-store).\n // code this._stream\n // code .unpipe(this._outgoingDelay)\n // code .unpipe(this._remoteConnection._stream)\n // code .unpipe(this._incomingDelay)\n // code .unpipe(this._stream);\n\n this.options.stream.unpipe(this._incomingDelay);\n this._incomingDelay.unpipe(this._remoteConnection.options.stream);\n this._remoteConnection.options.stream.unpipe(this._outgoingDelay);\n this._outgoingDelay.unpipe(this.options.stream);\n this.options.stream.unpipe(this._outgoingDelay);\n\n this._remoteConnection.closed.emit();\n this._remoteConnection._remoteConnection = undefined;\n this._remoteConnection = undefined;\n log('closed');\n }\n\n this.closed.emit();\n log('closed');\n }\n\n signal({ payload }: Signal) {\n log('received signal', { payload });\n if (!payload?.transportId) {\n return;\n }\n // TODO(burdon): Check open?\n const transportId = payload.transportId as string;\n if (transportId) {\n const remoteId = PublicKey.fromHex(transportId);\n this._remote.wake(remoteId);\n }\n }\n\n async getDetails(): Promise<string> {\n return this._instanceId.toHex();\n }\n\n async getStats(): Promise<TransportStats> {\n return {\n bytesSent: 0,\n bytesReceived: 0,\n packetsSent: 0,\n packetsReceived: 0,\n };\n }\n}\n", "//\n// Copyright 2020 DXOS.org\n//\n\nimport { type Event } from '@dxos/async';\nimport { type ErrorStream } from '@dxos/debug';\nimport { type PublicKey } from '@dxos/keys';\nimport { type Signal } from '@dxos/protocols/proto/dxos/mesh/swarm';\n\nexport enum TransportKind {\n SIMPLE_PEER = 'SIMPLE_PEER',\n LIBDATACHANNEL = 'LIBDATACHANNEL',\n SIMPLE_PEER_PROXY = 'SIMPLE_PEER_PROXY',\n MEMORY = 'MEMORY',\n TCP = 'TCP',\n}\n\n/**\n * Abstraction over a P2P connection transport. Currently either WebRTC or in-memory.\n */\nexport interface Transport {\n closed: Event;\n connected: Event;\n errors: ErrorStream;\n\n /**\n * Transport-specfic stats.\n */\n getStats(): Promise<TransportStats>;\n /**\n * Transport-specfic connection details.\n */\n getDetails(): Promise<string>;\n destroy(): Promise<void>;\n signal(signal: Signal): void;\n}\n\nexport type TransportOptions = {\n /**\n * Did local node initiate this connection.\n */\n initiator: boolean;\n\n /**\n * Wire protocol.\n */\n stream: NodeJS.ReadWriteStream;\n\n /**\n * Send a signal message to remote peer.\n */\n sendSignal: (signal: Signal) => Promise<void>; // TODO(burdon): Remove async?\n\n timeout?: number;\n\n sessionId?: PublicKey;\n};\n\n/**\n *\n */\nexport interface TransportFactory {\n createTransport(options: TransportOptions): Transport;\n}\n\nexport type TransportStats = {\n bytesSent: number;\n bytesReceived: number;\n packetsSent: number;\n packetsReceived: number;\n rawStats?: any;\n};\n", "/* eslint-disable no-fallthrough */\n//\n// Copyright 2020 DXOS.org\n//\n\nimport SimplePeerConstructor, { type Instance as SimplePeer } from 'simple-peer';\nimport invariant from 'tiny-invariant';\n\nimport { Event } from '@dxos/async';\nimport { ErrorStream, raise } from '@dxos/debug';\nimport { PublicKey } from '@dxos/keys';\nimport { log } from '@dxos/log';\nimport { ConnectionResetError, ConnectivityError, ProtocolError, UnknownProtocolError, trace } from '@dxos/protocols';\nimport { type Signal } from '@dxos/protocols/proto/dxos/mesh/swarm';\n\nimport { type Transport, type TransportFactory, type TransportStats } from './transport';\nimport { wrtc } from './webrtc';\n\nexport type SimplePeerTransportParams = {\n initiator: boolean;\n stream: NodeJS.ReadWriteStream;\n webrtcConfig?: any;\n sendSignal: (signal: Signal) => Promise<void>;\n};\n\n/**\n * Implements Transport for WebRTC. Uses simple-peer under the hood.\n */\nexport class SimplePeerTransport implements Transport {\n private readonly _peer: SimplePeer;\n private _closed = false;\n private _piped = false;\n\n readonly closed = new Event();\n readonly connected = new Event();\n readonly errors = new ErrorStream();\n\n private readonly _instanceId = PublicKey.random().toHex();\n\n /**\n * @params opts.config formatted as per https://developer.mozilla.org/en-US/docs/Web/API/RTCPeerConnection/RTCPeerConnection\n */\n constructor(private readonly params: SimplePeerTransportParams) {\n log.trace('dxos.mesh.webrtc-transport.constructor', trace.begin({ id: this._instanceId }));\n log('created connection', params);\n this._peer = new SimplePeerConstructor({\n channelName: 'dxos.mesh.transport',\n initiator: this.params.initiator,\n wrtc: SimplePeerConstructor.WEBRTC_SUPPORT ? undefined : wrtc ?? raise(new Error('wrtc not available')),\n config: this.params.webrtcConfig,\n });\n\n this._peer.on('signal', async (data) => {\n log('signal', data);\n await this.params.sendSignal({ payload: { data } });\n });\n\n this._peer.on('connect', () => {\n log('connected');\n this.params.stream.pipe(this._peer!).pipe(this.params.stream);\n this._piped = true;\n this.connected.emit();\n });\n\n this._peer.on('close', async () => {\n log('closed');\n await this.destroy();\n });\n\n this._peer.on('error', async (err) => {\n // https://developer.mozilla.org/en-US/docs/Web/API/RTCError\n if (typeof RTCError !== 'undefined' && err instanceof RTCError) {\n // Sent when connection is unexpectedly severed\n if (err.errorDetail === 'sctp-failure') {\n this.errors.raise(new ConnectionResetError('sctp-failure from RTCError', err));\n } else {\n log.info('unknown RTCError', { err });\n this.errors.raise(new UnknownProtocolError('unknown RTCError', err));\n }\n // catch more generic simple-peer errors: https://github.com/feross/simple-peer/blob/master/README.md#error-codes\n } else if ('code' in err) {\n log.info('simple-peer error', err);\n switch (err.code) {\n case 'ERR_WEBRTC_SUPPORT':\n this.errors.raise(new ProtocolError('WebRTC not supported', err));\n break;\n case 'ERR_SIGNALING':\n this.errors.raise(new ConnectivityError('signaling failure', err));\n break;\n case 'ERR_ICE_CONNECTION_FAILURE':\n case 'ERR_DATA_CHANNEL':\n case 'ERR_CONNECTION_FAILURE':\n this.errors.raise(new ConnectivityError('unknown communication failure', err));\n break;\n // errors due to library issues or improper API usage\n case 'ERR_CREATE_OFFER':\n case 'ERR_CREATE_ANSWER':\n case 'ERR_SET_LOCAL_DESCRIPTION':\n case 'ERR_SET_REMOTE_DESCRIPTION':\n case 'ERR_ADD_ICE_CANDIDATE':\n this.errors.raise(new UnknownProtocolError('unknown simple-peer library failure', err));\n break;\n default:\n this.errors.raise(new Error('unknown simple-peer error'));\n break;\n }\n } else {\n log.info('unknown peer connection error', err);\n this.errors.raise(err);\n }\n\n // Try to gather additional information about the connection.\n try {\n if (typeof (this._peer as any)?._pc?.getStats === 'function') {\n (this._peer as any)._pc.getStats().then((stats: any) => {\n log.info('report after webrtc error', {\n config: this.params.webrtcConfig,\n stats: Object.fromEntries((stats as any).entries()),\n });\n });\n }\n } catch (err) {\n log.catch(err);\n }\n\n await this.destroy();\n });\n\n log.trace('dxos.mesh.webrtc-transport.constructor', trace.end({ id: this._instanceId }));\n }\n\n async getStats(): Promise<TransportStats> {\n const stats = await this._getStats();\n if (!stats) {\n return {\n bytesSent: 0,\n bytesReceived: 0,\n packetsSent: 0,\n packetsReceived: 0,\n rawStats: {},\n };\n }\n\n // TODO(nf): transport or candidatePair?\n return {\n bytesSent: stats.transport.bytesSent,\n bytesReceived: stats.transport.bytesReceived,\n packetsSent: stats.transport.packetsSent,\n packetsReceived: stats.transport.packetsReceived,\n rawStats: stats.raw,\n };\n }\n\n async _getStats(): Promise<any> {\n if (typeof (this._peer as any)?._pc?.getStats !== 'function') {\n return null;\n }\n return await (this._peer as any)._pc.getStats().then((stats: any) => {\n const statsEntries = Array.from(stats.entries() as any[]);\n const transport = statsEntries.filter((s: any) => s[1].type === 'transport')[0][1];\n const candidatePair = statsEntries.filter((s: any) => s[0] === transport.selectedCandidatePairId);\n let selectedCandidatePair: any;\n let remoteCandidate: any;\n if (candidatePair.length > 0) {\n selectedCandidatePair = candidatePair[0][1];\n remoteCandidate = statsEntries.filter((s: any) => s[0] === selectedCandidatePair.remoteCandidateId)[0][1];\n }\n return {\n datachannel: statsEntries.filter((s: any) => s[1].type === 'data-channel')[0][1],\n transport,\n selectedCandidatePair,\n remoteCandidate,\n raw: Object.fromEntries(stats.entries()),\n };\n });\n }\n\n async getDetails(): Promise<string> {\n const stats = await this._getStats();\n const rc = stats?.remoteCandidate;\n if (!rc) {\n return 'unavailable';\n }\n\n if (rc.candidateType === 'relay') {\n return `${rc.ip}:${rc.port}/${rc.protocol} relay for ${rc.relatedAddress}:${rc.relatedPort}`;\n }\n return `${rc.ip}:${rc.port}/${rc.protocol} ${rc.candidateType}`;\n }\n\n async destroy() {\n log('closing...');\n if (this._closed) {\n return;\n }\n this._disconnectStreams();\n this._peer!.destroy();\n this._closed = true;\n this.closed.emit();\n log('closed');\n }\n\n signal(signal: Signal) {\n if (this._closed) {\n return; // Ignore signals after close.\n }\n\n invariant(signal.payload.data, 'Signal message must contain signal data.');\n this._peer.signal(signal.payload.data);\n }\n\n private _disconnectStreams() {\n // TODO(rzadp): Find a way of unpiping this?\n if (this._piped) {\n this.params.stream.unpipe?.(this._peer)?.unpipe?.(this.params.stream);\n }\n }\n}\n\nexport const createSimplePeerTransportFactory = (webrtcConfig?: any): TransportFactory => ({\n createTransport: (params) =>\n new SimplePeerTransport({\n ...params,\n webrtcConfig,\n }),\n});\n", "//\n// Copyright 2022 DXOS.org\n//\n\n/**\n * Will be null if WebRTC is not available in this environment.\n */\nlet wrtc: any = null;\n\n// Try to load WebRTC if available. This will fail in the shared-worker context.\ntry {\n wrtc = require('@koush/wrtc');\n} catch {}\n\nexport { wrtc };\n", "//\n// Copyright 2022 DXOS.org\n//\n\nimport { Duplex } from 'node:stream';\n\nimport { Stream } from '@dxos/codec-protobuf';\nimport { invariant } from '@dxos/invariant';\nimport { PublicKey } from '@dxos/keys';\nimport { log } from '@dxos/log';\nimport {\n type BridgeService,\n type ConnectionRequest,\n type SignalRequest,\n type DataRequest,\n type BridgeEvent,\n ConnectionState,\n type CloseRequest,\n type DetailsRequest,\n type DetailsResponse,\n type StatsRequest,\n type StatsResponse,\n} from '@dxos/protocols/proto/dxos/mesh/bridge';\nimport { ComplexMap } from '@dxos/util';\n\nimport { SimplePeerTransport } from './simplepeer-transport';\n\ntype TransportState = {\n transport: SimplePeerTransport;\n stream: Duplex;\n writeCallbacks: (() => void)[];\n state: 'OPEN' | 'CLOSED';\n};\n\nexport class SimplePeerTransportService implements BridgeService {\n private readonly transports = new ComplexMap<PublicKey, TransportState>(PublicKey.hash);\n\n constructor(private readonly _webrtcConfig?: any) {}\n\n open(request: ConnectionRequest): Stream<BridgeEvent> {\n const rpcStream: Stream<BridgeEvent> = new Stream(({ ready, next, close }) => {\n const duplex: Duplex = new Duplex({\n read: () => {\n const callbacks = [...transportState.writeCallbacks];\n transportState.writeCallbacks.length = 0;\n for (const cb of callbacks) {\n cb();\n }\n },\n write: function (chunk, _, callback) {\n next({ data: { payload: chunk } });\n callback();\n },\n });\n\n const transport = new SimplePeerTransport({\n initiator: request.initiator,\n stream: duplex,\n webrtcConfig: this._webrtcConfig,\n sendSignal: async (signal) => {\n next({\n signal: { payload: signal },\n });\n },\n });\n\n next({\n connection: {\n state: ConnectionState.CONNECTING,\n },\n });\n\n transport.connected.on(() => {\n next({\n connection: {\n state: ConnectionState.CONNECTED,\n },\n });\n });\n\n transport.errors.handle((err) => {\n next({\n connection: {\n state: ConnectionState.CLOSED,\n error: err.toString(),\n },\n });\n close(err);\n });\n\n transport.closed.on(() => {\n next({\n connection: {\n state: ConnectionState.CLOSED,\n },\n });\n close();\n });\n\n const transportState: TransportState = {\n transport,\n stream: duplex,\n writeCallbacks: [],\n state: 'OPEN',\n };\n\n ready();\n\n this.transports.set(request.proxyId, transportState);\n });\n\n return rpcStream;\n }\n\n async sendSignal({ proxyId, signal }: SignalRequest): Promise<void> {\n invariant(this.transports.has(proxyId));\n await this.transports.get(proxyId)!.transport.signal(signal);\n }\n\n async getDetails({ proxyId }: DetailsRequest): Promise<DetailsResponse> {\n invariant(this.transports.has(proxyId));\n return { details: await this.transports.get(proxyId)!.transport.getDetails() };\n }\n\n async getStats({ proxyId }: StatsRequest): Promise<StatsResponse> {\n invariant(this.transports.has(proxyId));\n return { stats: await this.transports.get(proxyId)!.transport.getStats() };\n }\n\n async sendData({ proxyId, payload }: DataRequest): Promise<void> {\n if (this.transports.get(proxyId)?.state !== 'OPEN') {\n log.debug('transport is closed');\n }\n invariant(this.transports.has(proxyId));\n const state = this.transports.get(proxyId)!;\n const bufferHasSpace = state.stream.push(payload);\n if (!bufferHasSpace) {\n await new Promise<void>((resolve) => {\n state.writeCallbacks.push(resolve);\n });\n }\n }\n\n async close({ proxyId }: CloseRequest) {\n await this.transports.get(proxyId)?.transport.destroy();\n await this.transports.get(proxyId)?.stream.end();\n if (this.transports.get(proxyId)) {\n this.transports.get(proxyId)!.state = 'CLOSED';\n }\n log('Closed.');\n }\n}\n", "//\n// Copyright 2022 DXOS.org\n//\n\nimport { Writable } from 'node:stream';\n\nimport { Event, scheduleTask } from '@dxos/async';\nimport { type Stream } from '@dxos/codec-protobuf';\nimport { Context } from '@dxos/context';\nimport { ErrorStream } from '@dxos/debug';\nimport { invariant } from '@dxos/invariant';\nimport { PublicKey } from '@dxos/keys';\nimport { log } from '@dxos/log';\nimport {\n ConnectionResetError,\n TimeoutError,\n ProtocolError,\n ConnectivityError,\n UnknownProtocolError,\n} from '@dxos/protocols';\nimport { ConnectionState, type BridgeEvent, type BridgeService } from '@dxos/protocols/proto/dxos/mesh/bridge';\nimport { type Signal } from '@dxos/protocols/proto/dxos/mesh/swarm';\nimport { arrayToBuffer } from '@dxos/util';\n\nimport { type Transport, type TransportFactory, type TransportOptions, type TransportStats } from './transport';\n\nconst RESP_MIN_THRESHOLD = 500;\nconst TIMEOUT_THRESHOLD = 10;\n\nexport type SimplePeerTransportProxyParams = {\n initiator: boolean;\n stream: NodeJS.ReadWriteStream;\n bridgeService: BridgeService;\n // TODO(burdon): Rename onSignal.\n sendSignal: (signal: Signal) => Promise<void>;\n};\n\nexport class SimplePeerTransportProxy implements Transport {\n private readonly _proxyId = PublicKey.random();\n private readonly _ctx = new Context();\n private _timeoutCount = 0;\n\n readonly closed = new Event();\n readonly connected = new Event();\n readonly errors = new ErrorStream();\n\n private _closed = false;\n private _serviceStream!: Stream<BridgeEvent>;\n\n constructor(private readonly _params: SimplePeerTransportProxyParams) {\n this._serviceStream = this._params.bridgeService.open({\n proxyId: this._proxyId,\n initiator: this._params.initiator,\n });\n\n this._serviceStream.waitUntilReady().then(\n () => {\n this._serviceStream.subscribe(async (event: BridgeEvent) => {\n log('SimplePeerTransportProxy: event', event);\n if (event.connection) {\n await this._handleConnection(event.connection);\n } else if (event.data) {\n this._handleData(event.data);\n } else if (event.signal) {\n await this._handleSignal(event.signal);\n }\n });\n\n const proxyStream = new Writable({\n write: (chunk, _, callback) => {\n const then = performance.now();\n this._params.bridgeService\n .sendData({\n proxyId: this._proxyId,\n payload: chunk,\n })\n .then(\n () => {\n if (performance.now() - then > RESP_MIN_THRESHOLD) {\n log('slow response, delaying callback');\n scheduleTask(this._ctx, () => callback(), RESP_MIN_THRESHOLD);\n } else {\n callback();\n }\n this._timeoutCount = 0;\n },\n (err: any) => {\n if (err instanceof TimeoutError || err.constructor.name === 'TimeoutError') {\n if (this._timeoutCount++ > TIMEOUT_THRESHOLD) {\n throw new TimeoutError(`too many timeoutes (${this._timeoutCount} > ${TIMEOUT_THRESHOLD}`);\n } else {\n log('timeout error, but still invoking callback');\n callback();\n }\n } else {\n log.catch(err);\n }\n },\n );\n },\n });\n\n proxyStream.on('error', (err) => {\n log('proxystream error', { err });\n });\n\n this._params.stream.pipe(proxyStream);\n },\n (error) => log.catch(error),\n );\n }\n\n private async _handleConnection(connectionEvent: BridgeEvent.ConnectionEvent): Promise<void> {\n if (connectionEvent.error) {\n this.errors.raise(decodeError(connectionEvent.error));\n }\n\n switch (connectionEvent.state) {\n case ConnectionState.CONNECTED: {\n this.connected.emit();\n break;\n }\n case ConnectionState.CLOSED: {\n await this.destroy();\n break;\n }\n }\n }\n\n private _handleData(dataEvent: BridgeEvent.DataEvent) {\n // NOTE: This must be a Buffer otherwise hypercore-protocol breaks.\n this._params.stream.write(arrayToBuffer(dataEvent.payload));\n }\n\n private async _handleSignal(signalEvent: BridgeEvent.SignalEvent) {\n await this._params.sendSignal(signalEvent.payload);\n }\n\n signal(signal: Signal): void {\n this._params.bridgeService\n .sendSignal({\n proxyId: this._proxyId,\n signal,\n })\n .catch((err) => this.errors.raise(decodeError(err)));\n }\n\n async getDetails(): Promise<string> {\n return (await this._params.bridgeService.getDetails({ proxyId: this._proxyId })).details;\n }\n\n async getStats(): Promise<TransportStats> {\n return (await this._params.bridgeService.getStats({ proxyId: this._proxyId })).stats as TransportStats;\n }\n\n // TODO(burdon): Move open from constructor.\n async destroy(): Promise<void> {\n await this._ctx.dispose();\n if (this._closed) {\n return;\n }\n\n await this._serviceStream.close();\n\n try {\n await this._params.bridgeService.close({ proxyId: this._proxyId });\n } catch (err: any) {\n log.catch(err);\n }\n\n this.closed.emit();\n this._closed = true;\n }\n\n /**\n * Called when underlying proxy service becomes unavailable.\n */\n // TODO(burdon): Option on close method.\n forceClose() {\n void this._serviceStream.close();\n this.closed.emit();\n this._closed = true;\n }\n}\n\n// TODO(burdon): Why is this named Proxy?\nexport class SimplePeerTransportProxyFactory implements TransportFactory {\n private _bridgeService: BridgeService | undefined;\n private _connections = new Set<SimplePeerTransportProxy>();\n\n /**\n * Sets the current BridgeService to be used to open connections.\n * Calling this method will close any existing connections.\n */\n setBridgeService(bridgeService: BridgeService | undefined): this {\n this._bridgeService = bridgeService;\n for (const connection of this._connections) {\n connection.forceClose();\n }\n\n return this;\n }\n\n createTransport(options: TransportOptions): Transport {\n invariant(this._bridgeService, 'SimplePeerTransportProxyFactory is not ready to open connections');\n\n const transport = new SimplePeerTransportProxy({\n ...options,\n bridgeService: this._bridgeService,\n });\n\n this._connections.add(transport);\n transport.closed.on(() => this._connections.delete(transport));\n\n return transport;\n }\n}\n\n// TODO(nf): fix so Errors crossing RPC boundary preserve class\nconst decodeError = (err: Error | string) => {\n const message = typeof err === 'string' ? err : err.message;\n\n if (message.includes('CONNECTION_RESET')) {\n return new ConnectionResetError(message);\n } else if (message.includes('TIMEOUT')) {\n return new TimeoutError(message);\n } else if (message.includes('PROTOCOL_ERROR')) {\n return new ProtocolError(message);\n } else if (message.includes('CONNECTIVITY_ERROR')) {\n return new ConnectivityError(message);\n } else if (message.includes('UNKNOWN_PROTOCOL_ERROR')) {\n return new UnknownProtocolError(message);\n } else {\n return typeof err === 'string' ? new Error(err) : err;\n }\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { Duplex } from 'stream';\n\nimport { Event, Trigger, synchronized } from '@dxos/async';\nimport { ErrorStream } from '@dxos/debug';\nimport { log } from '@dxos/log';\nimport { type Signal } from '@dxos/protocols/proto/dxos/mesh/swarm';\n\nimport { type Transport, type TransportFactory, type TransportStats } from './transport';\n\nexport type LibDataChannelTransportParams = {\n initiator: boolean;\n stream: NodeJS.ReadWriteStream;\n webrtcConfig?: RTCConfiguration;\n sendSignal: (signal: Signal) => Promise<void>;\n};\n\nconst DATACHANNEL_LABEL = 'dxos.mesh.transport';\nconst MAX_BUFFERED_AMOUNT = 64 * 1024;\n\n// https://viblast.com/blog/2015/2/5/webrtc-data-channel-message-size/\nconst MAX_MESSAGE_SIZE = 64 * 1024;\n\n/**\n * Transport\n */\nexport class LibDataChannelTransport implements Transport {\n private _closed = false;\n readonly closed = new Event();\n private _connected = false;\n readonly connected = new Event();\n readonly errors = new ErrorStream();\n private readonly _peer: Promise<RTCPeerConnection>;\n private _channel!: RTCDataChannel;\n private _stream!: Duplex;\n\n private readonly _readyForCandidates = new Trigger();\n private _writeCallback: (() => void) | null = null;\n\n constructor(private readonly params: LibDataChannelTransportParams) {\n this._peer = (async () => {\n /* eslint-disable @typescript-eslint/consistent-type-imports */\n const { RTCPeerConnection } = (await importESM('node-datachannel/polyfill'))\n .default as typeof import('node-datachannel/polyfill');\n /* eslint-enable @typescript-eslint/consistent-type-imports */\n if (this._closed) {\n this.errors.raise(new Error('connection already closed'));\n }\n // workaround https://github.com/murat-dogan/node-datachannel/pull/207\n if (params.webrtcConfig) {\n params.webrtcConfig.iceServers = params.webrtcConfig.iceServers ?? [];\n } else {\n params.webrtcConfig = { iceServers: [] };\n }\n const peer = new RTCPeerConnection(params.webrtcConfig);\n\n peer.onicecandidateerror = (event) => {\n log.error('peer.onicecandidateerror', { event });\n };\n\n peer.onconnectionstatechange = (event) => {\n log.debug('peer.onconnectionstatechange', {\n event,\n peerConnectionState: peer.connectionState,\n transportConnectionState: this._connected,\n });\n // TODO(nf): throw error if datachannel does not connect after some time?\n };\n\n peer.onicecandidate = async (event) => {\n log.debug('peer.onicecandidate', { event });\n if (event.candidate) {\n try {\n await params.sendSignal({\n payload: {\n data: {\n type: 'candidate',\n candidate: {\n candidate: event.candidate.candidate,\n // these fields never seem to be not null, but connecting to Chrome doesn't work if they are\n sdpMLineIndex: event.candidate.sdpMLineIndex ?? 0,\n sdpMid: event.candidate.sdpMid ?? 0,\n },\n },\n },\n });\n } catch (err) {\n log.info('signaling errror', { err });\n }\n }\n };\n\n if (params.initiator) {\n peer\n .createOffer()\n .then(async (offer) => {\n if (this._closed) {\n return;\n }\n if (peer.connectionState !== 'connecting') {\n log.error('i am initiator but peer not in state connecting', { peer });\n this.errors.raise(new Error('invalid state: peer is initiator, but other peer not in state connecting'));\n }\n log.debug(`im the initiator, creating offer, peer is in state ${peer.connectionState}`, { offer });\n await peer.setLocalDescription(offer);\n await params.sendSignal({ payload: { data: { type: offer.type, sdp: offer.sdp } } });\n return offer;\n })\n .catch((err) => {\n this.errors.raise(err);\n });\n this.handleChannel(peer.createDataChannel(DATACHANNEL_LABEL));\n log.debug('created data channel');\n peer.ondatachannel = (event) => {\n this.errors.raise(new Error('got ondatachannel when i am the initiator?'));\n };\n } else {\n peer.ondatachannel = (event) => {\n log.debug('peer.ondatachannel (non-initiator)', { event });\n // TODO(nf): should the label contain some identifier?\n if (event.channel.label !== DATACHANNEL_LABEL) {\n this.errors.raise(new Error(`unexpected channel label ${event.channel.label}`));\n }\n this.handleChannel(event.channel);\n };\n }\n\n return peer;\n })();\n }\n\n private handleChannel(dataChannel: RTCDataChannel) {\n this._channel = dataChannel;\n this._channel.onopen = () => {\n log.debug('dataChannel.onopen');\n const duplex = new Duplex({\n read: () => {},\n write: async (chunk, encoding, callback) => {\n // todo wait to open\n\n if (chunk.length > MAX_MESSAGE_SIZE) {\n this.errors.raise(new Error(`message too large: ${chunk.length} > ${MAX_MESSAGE_SIZE}`));\n }\n try {\n dataChannel.send(chunk);\n } catch (err: any) {\n this.errors.raise(err);\n await this._close();\n }\n if (this._channel.bufferedAmount > MAX_BUFFERED_AMOUNT) {\n if (this._writeCallback !== null) {\n log.error(\"consumer trying to write before we're ready for more data\");\n }\n this._writeCallback = callback;\n } else {\n callback();\n }\n },\n });\n\n duplex.pipe(this.params.stream).pipe(duplex);\n this._stream = duplex;\n this._connected = true;\n this.connected.emit();\n };\n\n this._channel.onerror = async (err) => {\n this.errors.raise(new Error('channel error: ' + err.toString()));\n await this._close();\n };\n this._channel.onclose = async (err) => {\n log.info('channel onclose', { err });\n await this._close();\n };\n this._channel.onmessage = (event) => {\n let data = event.data;\n if (data instanceof ArrayBuffer) {\n data = Buffer.from(data);\n }\n this._stream.push(data);\n };\n\n this._channel.onbufferedamountlow = () => {\n const cb = this._writeCallback;\n this._writeCallback = null;\n cb?.();\n };\n }\n\n @synchronized\n private async _close() {\n if (this._closed) {\n return;\n }\n await this._disconnectStreams();\n const peer = await this._peer;\n try {\n peer.close();\n } catch (err: any) {\n this.errors.raise(err);\n }\n this._closed = true;\n this.closed.emit();\n }\n\n signal(signal: Signal): void {\n this._peer\n .then(async (peer) => {\n const data = signal.payload.data;\n switch (data.type) {\n case 'offer': {\n if ((await this._peer).connectionState !== 'new') {\n log.error('received offer but peer not in state new', { peer });\n this.errors.raise(new Error('invalid signalling state: received offer when peer is not in state new'));\n break;\n }\n try {\n await peer.setRemoteDescription({ type: data.type, sdp: data.sdp });\n const answer = await peer.createAnswer();\n await peer.setLocalDescription(answer);\n await this.params.sendSignal({ payload: { data: { type: answer.type, sdp: answer.sdp } } });\n this._readyForCandidates.wake();\n } catch (err) {\n log.error(\"can't handle offer from signalling server\", { err });\n this.errors.raise(new Error('error handling offer'));\n }\n break;\n }\n\n case 'answer':\n try {\n await peer.setRemoteDescription({ type: data.type, sdp: data.sdp });\n this._readyForCandidates.wake();\n } catch (err) {\n log.error(\"can't handle answer from signalling server\", { err });\n this.errors.raise(new Error('error handling answer'));\n }\n break;\n\n case 'candidate':\n await this._readyForCandidates.wait();\n await peer.addIceCandidate({ candidate: data.candidate.candidate });\n break;\n\n default:\n log.error('unhandled signal type', { type: data.type, signal });\n this.errors.raise(new Error(`unhandled signal type ${data.type}`));\n }\n })\n .catch((err) => {\n log.catch(err);\n });\n }\n\n async getDetails(): Promise<string> {\n const stats = await this._getStats();\n const rc = stats?.remoteCandidate;\n if (!rc) {\n return 'unavailable';\n }\n\n if (rc.candidateType === 'relay') {\n return `${rc.ip}:${rc.port} relay for ${rc.relatedAddress}:${rc.relatedPort}`;\n }\n return `${rc.ip}:${rc.port} ${rc.candidateType}`;\n }\n\n async _getStats(): Promise<any> {\n return this._peer.then(async (peer) => {\n const stats = await peer.getStats();\n\n const statsEntries = Array.from((stats as any).entries() as any[]);\n const transport = statsEntries.filter((s) => s[1].type === 'transport')[0][1];\n const candidatePair = statsEntries.filter((s: any) => s[0] === transport.selectedCandidatePairId);\n let selectedCandidatePair: any;\n let remoteCandidate: any;\n if (candidatePair.length > 0) {\n selectedCandidatePair = candidatePair[0][1];\n remoteCandidate = statsEntries.filter((s: any) => s[0] === selectedCandidatePair.remoteCandidateId)[0][1];\n }\n\n return {\n transport,\n selectedCandidatePair,\n remoteCandidate,\n raw: Object.fromEntries(stats as any),\n };\n });\n }\n\n async getStats(): Promise<TransportStats> {\n const stats = await this._getStats();\n if (!stats) {\n return {\n bytesSent: 0,\n bytesReceived: 0,\n packetsSent: 0,\n packetsReceived: 0,\n rawStats: {},\n };\n }\n\n return {\n bytesSent: stats.transport.bytesSent,\n bytesReceived: stats.transport.bytesReceived,\n packetsSent: 0,\n packetsReceived: 0,\n rawStats: stats.raw,\n };\n }\n\n // TODO(nf): add classmethod to call node-datachannel.cleanup() when all instances have been destroyed?\n async destroy(): Promise<void> {\n await this._close();\n }\n\n private async _disconnectStreams() {\n this.params.stream.unpipe?.(this._stream)?.unpipe?.(this.params.stream);\n }\n}\n\nexport const createLibDataChannelTransportFactory = (webrtcConfig?: any): TransportFactory => ({\n createTransport: (params) =>\n new LibDataChannelTransport({\n ...params,\n webrtcConfig,\n }),\n});\n\n// eslint-disable-next-line no-new-func\nconst importESM = Function('path', 'return import(path)');\n", "//\n// Copyright 2020 DXOS.org\n//\n\nimport { Event } from '@dxos/async';\nimport { ErrorStream } from '@dxos/debug';\n\nimport { type Transport, type TransportFactory, type TransportStats } from './transport';\n\n// NOTE: Browser stub.\n\nexport const TcpTransportFactory: TransportFactory = {\n createTransport: () => new TcpTransport(),\n};\n\nexport class TcpTransport implements Transport {\n public readonly closed = new Event<void>();\n public readonly connected = new Event<void>();\n public readonly errors = new ErrorStream();\n\n async destroy() {\n throw new Error('Method not implemented.');\n }\n\n signal() {\n throw new Error('Method not implemented.');\n }\n\n async getStats(): Promise<TransportStats> {\n throw new Error('Method not implemented.');\n }\n\n async getDetails(): Promise<string> {\n throw new Error('Method not implemented.');\n }\n}\n", "//\n// Copyright 2022 DXOS.org\n//\n\nimport { type Duplex } from 'node:stream';\n\nimport { type PublicKey } from '@dxos/keys';\nimport { Teleport } from '@dxos/teleport';\n\nexport type WireProtocolParams = {\n initiator: boolean;\n localPeerId: PublicKey;\n remotePeerId: PublicKey;\n topic: PublicKey;\n};\n\nexport type WireProtocolProvider = (params: WireProtocolParams) => WireProtocol;\n\n/**\n * Application-specific network protocol that is used when a connection to a peer is established.\n * Will implement high-level logic, like replication, authentication, etc.\n */\nexport interface WireProtocol {\n stream: Duplex;\n\n open(sessionId?: PublicKey): Promise<void>;\n close(): Promise<void>;\n abort(): Promise<void>;\n}\n\n/**\n * Create a wire-protocol provider backed by a teleport instance.\n * @param onConnection Called after teleport is initialized for the session. Protocol extensions could be attached here.\n * @returns\n */\nexport const createTeleportProtocolFactory = (\n onConnection: (teleport: Teleport) => Promise<void>,\n): WireProtocolProvider => {\n return (params) => {\n const teleport = new Teleport(params);\n return {\n stream: teleport.stream,\n open: async (sessionId?: PublicKey) => {\n await teleport.open(sessionId);\n await onConnection(teleport);\n },\n close: async () => {\n await teleport.close();\n },\n abort: async () => {\n await teleport.abort();\n },\n };\n };\n};\n"],
|
|
5
|
-
"mappings": "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",
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["DeferredTask", "Event", "sleep", "scheduleTask", "scheduleTaskInterval", "synchronized", "Context", "cancelWithContext", "ErrorStream", "invariant", "PublicKey", "log", "logInfo", "CancelledError", "ProtocolError", "ConnectionResetError", "ConnectivityError", "TimeoutError", "UnknownProtocolError", "trace", "STARTING_SIGNALLING_DELAY", "TRANSPORT_CONNECTION_TIMEOUT", "TRANSPORT_STATS_INTERVAL", "MAX_SIGNALLING_DELAY", "ConnectionState", "CREATED", "INITIAL", "CONNECTING", "CONNECTED", "CLOSING", "CLOSED", "ABORTING", "ABORTED", "Connection", "constructor", "topic", "ownId", "remoteId", "sessionId", "initiator", "_signalMessaging", "_protocol", "_transportFactory", "_callbacks", "_ctx", "connectedTimeoutContext", "_state", "_incomingSignalBuffer", "_outgoingSignalBuffer", "stateChanged", "errors", "_instanceId", "random", "toHex", "transportStats", "_signalSendTask", "_flushSignalBuffer", "_signallingDelay", "localPeerId", "remotePeerId", "sessionIdString", "truncate", "state", "transport", "_transport", "protocol", "openConnection", "begin", "id", "_changeState", "open", "catch", "err", "raise", "stream", "on", "close", "info", "abort", "createTransport", "sendSignal", "signal", "_sendSignal", "connected", "once", "dispose", "onConnected", "_emitTransportStats", "closed", "undefined", "handle", "closeReason", "message", "warn", "end", "destroy", "onClosed", "lastState", "peerId", "push", "schedule", "length", "process", "Math", "min", "signals", "author", "recipient", "data", "signalBatch", "Error", "includes", "msg", "equals", "initiate", "from", "to", "emit", "stats", "getStats", "Context", "invariant", "PublicKey", "log", "schema", "TimeoutError", "ComplexMap", "SwarmMessage", "getCodecForType", "SwarmMessenger", "constructor", "sendMessage", "onSignal", "onOffer", "topic", "_ctx", "_offerRecords", "key", "toHex", "_sendMessage", "_onSignal", "_onOffer", "_topic", "receiveMessage", "author", "recipient", "payload", "type_url", "message", "decode", "value", "equals", "from", "to", "msg", "data", "offer", "_handleOffer", "answer", "_resolveAnswers", "signal", "_handleSignal", "signalBatch", "warn", "_sendReliableMessage", "networkMessage", "messageId", "random", "Promise", "resolve", "reject", "set", "catch", "err", "encode", "offerMessageId", "offerRecord", "get", "delete", "offerMessage", "sessionId", "info", "signalMessage", "Event", "scheduleTask", "sleep", "synchronized", "Context", "ErrorStream", "invariant", "PublicKey", "log", "logInfo", "trace", "ComplexMap", "isNotNullOrUndefined", "Event", "scheduleTask", "synchronized", "Context", "invariant", "PublicKey", "log", "CancelledError", "SystemError", "ConnectionDisplacedError", "SystemError", "constructor", "CONNECTION_COUNTS_STABLE_AFTER", "Peer", "id", "topic", "localPeerId", "_signalMessaging", "_protocolProvider", "_transportFactory", "_connectionLimiter", "_callbacks", "_availableAfter", "availableToConnect", "_ctx", "Context", "advertizing", "initiating", "connectionDisplaced", "Event", "onOffer", "message", "remoteId", "author", "connection", "ConnectionState", "CREATED", "INITIAL", "CONNECTING", "includes", "state", "log", "info", "accept", "toHex", "remotePeerId", "sessionId", "closeConnection", "invariant", "_createConnection", "connecting", "initiate", "openConnection", "err", "CancelledError", "peerId", "initiateConnection", "PublicKey", "random", "answer", "offer", "recipient", "data", "ownId", "abort", "onRejected", "onAccepted", "warn", "initiator", "Connection", "onConnected", "_lastConnectionTime", "Date", "now", "doneConnecting", "trace", "onClosed", "emit", "increaseInterval", "onDisconnected", "scheduleTask", "_connectionCtx", "onPeerAvailable", "undefined", "onInitiated", "dispose", "derive", "errors", "handle", "close", "onSignal", "signal", "destroy", "reason", "synchronized", "interval", "INITIATION_DELAY", "getClassName", "obj", "Object", "getPrototypeOf", "constructor", "name", "Swarm", "_topic", "_ownPeerId", "_topology", "_protocolProvider", "_messenger", "_transportFactory", "_label", "_connectionLimiter", "_initiationDelay", "_ctx", "Context", "_listeningHandle", "undefined", "_peers", "ComplexMap", "PublicKey", "hash", "_instanceId", "random", "toHex", "connectionAdded", "Event", "disconnected", "connected", "errors", "ErrorStream", "log", "trace", "begin", "id", "data", "topic", "peerId", "init", "_getSwarmController", "_swarmMessenger", "SwarmMessenger", "sendMessage", "msg", "onSignal", "onOffer", "end", "connections", "Array", "from", "values", "map", "peer", "connection", "filter", "isNotNullOrUndefined", "ownPeerId", "label", "open", "invariant", "listen", "payloadType", "onMessage", "message", "receiveMessage", "catch", "err", "info", "destroy", "unsubscribe", "dispose", "Promise", "all", "keys", "key", "_destroyPeer", "setTopology", "topology", "disposed", "previous", "update", "onSwarmEvent", "swarmEvent", "peerAvailable", "equals", "_getOrCreatePeer", "advertizing", "peerLeft", "get", "state", "ConnectionState", "CONNECTED", "accept", "author", "recipient", "answer", "goOffline", "goOnline", "Peer", "onInitiated", "emit", "onConnected", "onDisconnected", "onRejected", "has", "onAccepted", "remoteId", "onPeerAvailable", "set", "reason", "Error", "delete", "getState", "candidates", "availableToConnect", "connect", "scheduleTask", "_initiateConnection", "disconnect", "_closeConnection", "ctx", "sleep", "initiateConnection", "closeConnection", "logInfo", "synchronized", "Event", "EventSubscriptions", "PublicKey", "log", "ComplexMap", "SwarmMapper", "peers", "Array", "from", "_peers", "values", "constructor", "_swarm", "_subscriptions", "_connectionSubscriptions", "hash", "mapUpdated", "add", "connectionAdded", "on", "connection", "_update", "set", "remoteId", "stateChanged", "disconnected", "peerId", "get", "delete", "clear", "ownPeerId", "id", "state", "connections", "directConnections", "length", "totalPeersInSwarm", "size", "emit", "destroy", "forEach", "cb", "DeferredTask", "Context", "invariant", "PublicKey", "log", "CancelledError", "ComplexMap", "MAX_CONCURRENT_INITIATING_CONNECTIONS", "ConnectionLimiter", "constructor", "maxConcurrentInitConnections", "_ctx", "_waitingPromises", "hash", "resolveWaitingPromises", "Array", "from", "values", "slice", "_maxConcurrentInitConnections", "forEach", "resolve", "connecting", "sessionId", "has", "Promise", "reject", "set", "schedule", "doneConnecting", "get", "delete", "Event", "raise", "PublicKey", "ComplexMap", "CONNECTION_GC_THRESHOLD", "EventType", "CONNECTION_STATE_CHANGED", "PROTOCOL_ERROR", "PROTOCOL_EXTENSIONS_INITIALIZED", "PROTOCOL_EXTENSIONS_HANDSHAKE", "PROTOCOL_HANDSHAKE", "ConnectionLog", "_swarms", "ComplexMap", "PublicKey", "hash", "update", "Event", "getSwarmInfo", "swarmId", "get", "raise", "Error", "swarms", "Array", "from", "values", "joinedSwarm", "swarm", "info", "id", "_instanceId", "topic", "isActive", "label", "connections", "set", "emit", "connectionAdded", "on", "connection", "connectionInfo", "state", "ConnectionState", "CREATED", "closeReason", "remotePeerId", "remoteId", "sessionId", "transport", "Object", "getPrototypeOf", "constructor", "name", "protocolExtensions", "events", "lastUpdate", "Date", "push", "stateChanged", "type", "newState", "CONNECTED", "details", "getDetails", "transportDetails", "protocol", "stats", "readBufferSize", "writeBufferSize", "streams", "channels", "transportStats", "transportBytesSent", "bytesSent", "transportBytesReceived", "bytesReceived", "transportPacketsSent", "packetsSent", "transportPacketsReceived", "packetsReceived", "gcSwarm", "leftSwarm", "filter", "now", "getTime", "Event", "invariant", "PublicKey", "log", "Messenger", "trace", "ConnectionState", "ComplexMap", "NetworkManager", "constructor", "transportFactory", "signalManager", "log", "_swarms", "ComplexMap", "PublicKey", "hash", "_mappers", "_connectionState", "ConnectionState", "ONLINE", "connectionStateChanged", "Event", "topicsUpdated", "_instanceId", "random", "toHex", "_transportFactory", "_signalManager", "swarmEvent", "on", "topic", "event", "get", "onSwarmEvent", "_messenger", "Messenger", "_signalConnection", "join", "opts", "leave", "_connectionLimiter", "ConnectionLimiter", "_connectionLog", "ConnectionLog", "connectionLog", "connectionState", "topics", "Array", "from", "keys", "getSwarmMap", "getSwarm", "open", "trace", "begin", "id", "end", "close", "leaveSwarm", "catch", "err", "joinSwarm", "peerId", "topology", "protocolProvider", "protocol", "label", "invariant", "isPublicKey", "has", "Error", "toString", "swarm", "Swarm", "errors", "handle", "error", "set", "SwarmMapper", "emit", "joinedSwarm", "count", "size", "ownPeerId", "map", "destroy", "delete", "leftSwarm", "setConnectionState", "state", "OFFLINE", "Promise", "all", "values", "goOffline", "goOnline", "invariant", "FullyConnectedTopology", "toString", "init", "controller", "_controller", "update", "candidates", "discovered", "getState", "peer", "connect", "onOffer", "destroy", "distance", "invariant", "log", "MIN_UPDATE_INTERVAL", "MAX_CHANGES_PER_UPDATE", "MMSTTopology", "constructor", "originateConnections", "maxPeers", "sampleSize", "_sampleCollected", "_lastAction", "Date", "_originateConnections", "_maxPeers", "_sampleSize", "init", "controller", "_controller", "update", "connected", "candidates", "getState", "length", "_runAlgorithm", "onOffer", "peer", "accept", "destroy", "ownPeerId", "sorted", "sortByXorDistance", "reverse", "slice", "now", "getTime", "disconnect", "sample", "sort", "Math", "random", "connect", "toString", "keys", "reference", "a", "b", "gt", "asBuffer", "invariant", "log", "StarTopology", "constructor", "_centralPeer", "toString", "truncate", "init", "controller", "_controller", "update", "candidates", "connected", "ownPeerId", "getState", "equals", "peer", "disconnect", "connect", "onOffer", "isCentral", "isSelfCentral", "destroy", "Transform", "Event", "Trigger", "ErrorStream", "invariant", "PublicKey", "log", "logInfo", "ComplexMap", "MEMORY_TRANSPORT_DELAY", "createStreamDelay", "delay", "objectMode", "transform", "chunk", "_", "cb", "setTimeout", "MemoryTransportFactory", "createTransport", "params", "MemoryTransport", "_connections", "hash", "constructor", "options", "closed", "connected", "errors", "_instanceId", "random", "_remote", "_outgoingDelay", "_incomingDelay", "_destroyed", "has", "set", "initiator", "sendSignal", "payload", "transportId", "toHex", "catch", "err", "raise", "wait", "timeout", "then", "remoteId", "_remoteInstanceId", "_remoteConnection", "get", "emit", "stream", "pipe", "destroy", "delete", "unpipe", "undefined", "signal", "fromHex", "wake", "getDetails", "getStats", "bytesSent", "bytesReceived", "packetsSent", "packetsReceived", "TransportKind", "SIMPLE_PEER", "LIBDATACHANNEL", "SIMPLE_PEER_PROXY", "MEMORY", "TCP", "SimplePeerConstructor", "invariant", "Event", "ErrorStream", "raise", "PublicKey", "log", "ConnectionResetError", "ConnectivityError", "ProtocolError", "UnknownProtocolError", "trace", "wrtc", "require", "SimplePeerTransport", "constructor", "params", "_closed", "_piped", "closed", "Event", "connected", "errors", "ErrorStream", "_instanceId", "PublicKey", "random", "toHex", "log", "trace", "begin", "id", "_peer", "SimplePeerConstructor", "channelName", "initiator", "wrtc", "WEBRTC_SUPPORT", "undefined", "raise", "Error", "config", "webrtcConfig", "on", "data", "sendSignal", "payload", "stream", "pipe", "emit", "destroy", "err", "RTCError", "errorDetail", "ConnectionResetError", "info", "UnknownProtocolError", "code", "ProtocolError", "ConnectivityError", "_pc", "getStats", "then", "stats", "Object", "fromEntries", "entries", "catch", "end", "_getStats", "bytesSent", "bytesReceived", "packetsSent", "packetsReceived", "rawStats", "transport", "raw", "statsEntries", "Array", "from", "filter", "s", "type", "candidatePair", "selectedCandidatePairId", "selectedCandidatePair", "remoteCandidate", "length", "remoteCandidateId", "datachannel", "getDetails", "rc", "candidateType", "ip", "port", "protocol", "relatedAddress", "relatedPort", "_disconnectStreams", "signal", "invariant", "unpipe", "createSimplePeerTransportFactory", "createTransport", "Duplex", "Stream", "invariant", "PublicKey", "log", "ConnectionState", "ComplexMap", "SimplePeerTransportService", "constructor", "_webrtcConfig", "transports", "ComplexMap", "PublicKey", "hash", "open", "request", "rpcStream", "Stream", "ready", "next", "close", "duplex", "Duplex", "read", "callbacks", "transportState", "writeCallbacks", "length", "cb", "write", "chunk", "_", "callback", "data", "payload", "transport", "SimplePeerTransport", "initiator", "stream", "webrtcConfig", "sendSignal", "signal", "connection", "state", "ConnectionState", "CONNECTING", "connected", "on", "CONNECTED", "errors", "handle", "err", "CLOSED", "error", "toString", "closed", "set", "proxyId", "invariant", "has", "get", "getDetails", "details", "getStats", "stats", "sendData", "log", "debug", "bufferHasSpace", "push", "Promise", "resolve", "destroy", "end", "Writable", "Event", "scheduleTask", "Context", "ErrorStream", "invariant", "PublicKey", "log", "ConnectionResetError", "TimeoutError", "ProtocolError", "ConnectivityError", "UnknownProtocolError", "ConnectionState", "arrayToBuffer", "RESP_MIN_THRESHOLD", "TIMEOUT_THRESHOLD", "SimplePeerTransportProxy", "constructor", "_params", "_proxyId", "random", "_ctx", "_timeoutCount", "closed", "connected", "errors", "_closed", "_serviceStream", "bridgeService", "open", "proxyId", "initiator", "waitUntilReady", "then", "subscribe", "event", "connection", "_handleConnection", "data", "_handleData", "signal", "_handleSignal", "proxyStream", "write", "chunk", "_", "callback", "performance", "now", "sendData", "payload", "err", "name", "catch", "on", "stream", "pipe", "error", "connectionEvent", "raise", "decodeError", "state", "CONNECTED", "emit", "CLOSED", "destroy", "dataEvent", "signalEvent", "sendSignal", "getDetails", "details", "getStats", "stats", "dispose", "close", "forceClose", "SimplePeerTransportProxyFactory", "_connections", "Set", "setBridgeService", "_bridgeService", "createTransport", "options", "transport", "add", "delete", "message", "includes", "Error", "Duplex", "Event", "Trigger", "synchronized", "ErrorStream", "log", "DATACHANNEL_LABEL", "MAX_BUFFERED_AMOUNT", "MAX_MESSAGE_SIZE", "LibDataChannelTransport", "constructor", "params", "_closed", "closed", "_connected", "connected", "errors", "_readyForCandidates", "_writeCallback", "_peer", "RTCPeerConnection", "importESM", "default", "raise", "Error", "webrtcConfig", "iceServers", "peer", "onicecandidateerror", "event", "error", "onconnectionstatechange", "debug", "peerConnectionState", "connectionState", "transportConnectionState", "onicecandidate", "candidate", "sendSignal", "payload", "data", "type", "sdpMLineIndex", "sdpMid", "err", "info", "initiator", "createOffer", "then", "offer", "setLocalDescription", "sdp", "catch", "handleChannel", "createDataChannel", "ondatachannel", "channel", "label", "dataChannel", "_channel", "onopen", "duplex", "read", "write", "chunk", "encoding", "callback", "length", "send", "_close", "bufferedAmount", "pipe", "stream", "_stream", "emit", "onerror", "toString", "onclose", "onmessage", "ArrayBuffer", "Buffer", "from", "push", "onbufferedamountlow", "cb", "_disconnectStreams", "close", "signal", "setRemoteDescription", "answer", "createAnswer", "wake", "wait", "addIceCandidate", "getDetails", "stats", "_getStats", "rc", "remoteCandidate", "candidateType", "ip", "port", "relatedAddress", "relatedPort", "getStats", "statsEntries", "Array", "entries", "transport", "filter", "s", "candidatePair", "selectedCandidatePairId", "selectedCandidatePair", "remoteCandidateId", "raw", "Object", "fromEntries", "bytesSent", "bytesReceived", "packetsSent", "packetsReceived", "rawStats", "destroy", "unpipe", "createLibDataChannelTransportFactory", "createTransport", "Function", "Event", "ErrorStream", "TcpTransportFactory", "createTransport", "TcpTransport", "closed", "Event", "connected", "errors", "ErrorStream", "destroy", "Error", "signal", "getStats", "getDetails", "Teleport", "createTeleportProtocolFactory", "onConnection", "params", "teleport", "Teleport", "stream", "open", "sessionId", "close", "abort"]
|
|
7
7
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"inputs":{"packages/core/mesh/network-manager/src/swarm/connection.ts":{"bytes":52731,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/debug","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}],"format":"esm"},"packages/core/mesh/network-manager/src/swarm/peer.ts":{"bytes":45750,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"packages/core/mesh/network-manager/src/swarm/connection.ts","kind":"import-statement","original":"./connection"}],"format":"esm"},"packages/core/mesh/network-manager/src/signal/swarm-messenger.ts":{"bytes":22088,"imports":[{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/network-manager/src/signal/signal-connection.ts":{"bytes":1065,"imports":[],"format":"esm"},"packages/core/mesh/network-manager/src/signal/signal-messenger.ts":{"bytes":1488,"imports":[],"format":"esm"},"packages/core/mesh/network-manager/src/signal/index.ts":{"bytes":721,"imports":[{"path":"packages/core/mesh/network-manager/src/signal/swarm-messenger.ts","kind":"import-statement","original":"./swarm-messenger"},{"path":"packages/core/mesh/network-manager/src/signal/signal-connection.ts","kind":"import-statement","original":"./signal-connection"},{"path":"packages/core/mesh/network-manager/src/signal/signal-messenger.ts","kind":"import-statement","original":"./signal-messenger"}],"format":"esm"},"packages/core/mesh/network-manager/src/swarm/swarm.ts":{"bytes":47559,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"packages/core/mesh/network-manager/src/swarm/connection.ts","kind":"import-statement","original":"./connection"},{"path":"packages/core/mesh/network-manager/src/swarm/peer.ts","kind":"import-statement","original":"./peer"},{"path":"packages/core/mesh/network-manager/src/signal/index.ts","kind":"import-statement","original":"../signal"}],"format":"esm"},"packages/core/mesh/network-manager/src/swarm/swarm-mapper.ts":{"bytes":11818,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/network-manager/src/swarm/connection-limiter.ts":{"bytes":8422,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/network-manager/src/swarm/index.ts":{"bytes":781,"imports":[{"path":"packages/core/mesh/network-manager/src/swarm/connection.ts","kind":"import-statement","original":"./connection"},{"path":"packages/core/mesh/network-manager/src/swarm/swarm.ts","kind":"import-statement","original":"./swarm"},{"path":"packages/core/mesh/network-manager/src/swarm/swarm-mapper.ts","kind":"import-statement","original":"./swarm-mapper"},{"path":"packages/core/mesh/network-manager/src/swarm/connection-limiter.ts","kind":"import-statement","original":"./connection-limiter"}],"format":"esm"},"packages/core/mesh/network-manager/src/connection-log.ts":{"bytes":16411,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"packages/core/mesh/network-manager/src/swarm/index.ts","kind":"import-statement","original":"./swarm"}],"format":"esm"},"packages/core/mesh/network-manager/src/network-manager.ts":{"bytes":25619,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/messaging","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/protocols/proto/dxos/client/services","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"packages/core/mesh/network-manager/src/connection-log.ts","kind":"import-statement","original":"./connection-log"},{"path":"packages/core/mesh/network-manager/src/swarm/index.ts","kind":"import-statement","original":"./swarm"}],"format":"esm"},"packages/core/mesh/network-manager/src/topology/fully-connected-topology.ts":{"bytes":3537,"imports":[{"path":"@dxos/invariant","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/network-manager/src/topology/mmst-topology.ts":{"bytes":17549,"imports":[{"path":"xor-distance","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/network-manager/src/topology/star-topology.ts":{"bytes":8020,"imports":[{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/network-manager/src/topology/topology.ts":{"bytes":2146,"imports":[],"format":"esm"},"packages/core/mesh/network-manager/src/topology/index.ts":{"bytes":817,"imports":[{"path":"packages/core/mesh/network-manager/src/topology/fully-connected-topology.ts","kind":"import-statement","original":"./fully-connected-topology"},{"path":"packages/core/mesh/network-manager/src/topology/mmst-topology.ts","kind":"import-statement","original":"./mmst-topology"},{"path":"packages/core/mesh/network-manager/src/topology/star-topology.ts","kind":"import-statement","original":"./star-topology"},{"path":"packages/core/mesh/network-manager/src/topology/topology.ts","kind":"import-statement","original":"./topology"}],"format":"esm"},"packages/core/mesh/network-manager/src/transport/memory-transport.ts":{"bytes":22755,"imports":[{"path":"@dxos/node-std/stream","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/debug","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/util","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/network-manager/src/transport/transport.ts":{"bytes":3002,"imports":[],"format":"esm"},"packages/core/mesh/network-manager/src/transport/webrtc.ts":{"bytes":1149,"imports":[{"path":"@koush/wrtc","kind":"require-call","external":true}],"format":"esm"},"packages/core/mesh/network-manager/src/transport/simplepeer-transport.ts":{"bytes":29124,"imports":[{"path":"simple-peer","kind":"import-statement","external":true},{"path":"tiny-invariant","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"packages/core/mesh/network-manager/src/transport/webrtc.ts","kind":"import-statement","original":"./webrtc"}],"format":"esm"},"packages/core/mesh/network-manager/src/transport/simplepeer-transport-service.ts":{"bytes":15953,"imports":[{"path":"@dxos/node-std/stream","kind":"import-statement","external":true},{"path":"@dxos/codec-protobuf","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/dxos/mesh/bridge","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"packages/core/mesh/network-manager/src/transport/simplepeer-transport.ts","kind":"import-statement","original":"./simplepeer-transport"}],"format":"esm"},"packages/core/mesh/network-manager/src/transport/simplepeer-transport-proxy.ts":{"bytes":26542,"imports":[{"path":"@dxos/node-std/stream","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/debug","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/bridge","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/network-manager/src/transport/libdatachannel-transport.ts":{"bytes":44570,"imports":[{"path":"stream","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/network-manager/src/transport/tcp-transport.browser.ts":{"bytes":2921,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/network-manager/src/transport/index.ts":{"bytes":1216,"imports":[{"path":"packages/core/mesh/network-manager/src/transport/memory-transport.ts","kind":"import-statement","original":"./memory-transport"},{"path":"packages/core/mesh/network-manager/src/transport/transport.ts","kind":"import-statement","original":"./transport"},{"path":"packages/core/mesh/network-manager/src/transport/simplepeer-transport.ts","kind":"import-statement","original":"./simplepeer-transport"},{"path":"packages/core/mesh/network-manager/src/transport/simplepeer-transport-service.ts","kind":"import-statement","original":"./simplepeer-transport-service"},{"path":"packages/core/mesh/network-manager/src/transport/simplepeer-transport-proxy.ts","kind":"import-statement","original":"./simplepeer-transport-proxy"},{"path":"packages/core/mesh/network-manager/src/transport/libdatachannel-transport.ts","kind":"import-statement","original":"./libdatachannel-transport"},{"path":"packages/core/mesh/network-manager/src/transport/tcp-transport.browser.ts","kind":"import-statement","original":"./tcp-transport"}],"format":"esm"},"packages/core/mesh/network-manager/src/types.ts":{"bytes":558,"imports":[],"format":"esm"},"packages/core/mesh/network-manager/src/wire-protocol.ts":{"bytes":3731,"imports":[{"path":"@dxos/teleport","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/network-manager/src/index.ts":{"bytes":1125,"imports":[{"path":"packages/core/mesh/network-manager/src/connection-log.ts","kind":"import-statement","original":"./connection-log"},{"path":"packages/core/mesh/network-manager/src/network-manager.ts","kind":"import-statement","original":"./network-manager"},{"path":"packages/core/mesh/network-manager/src/signal/index.ts","kind":"import-statement","original":"./signal"},{"path":"packages/core/mesh/network-manager/src/swarm/index.ts","kind":"import-statement","original":"./swarm"},{"path":"packages/core/mesh/network-manager/src/topology/index.ts","kind":"import-statement","original":"./topology"},{"path":"packages/core/mesh/network-manager/src/transport/index.ts","kind":"import-statement","original":"./transport"},{"path":"packages/core/mesh/network-manager/src/types.ts","kind":"import-statement","original":"./types"},{"path":"packages/core/mesh/network-manager/src/wire-protocol.ts","kind":"import-statement","original":"./wire-protocol"}],"format":"esm"},"packages/core/mesh/network-manager/src/testing/test-wire-protocol.ts":{"bytes":12748,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/teleport","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"packages/core/mesh/network-manager/src/wire-protocol.ts","kind":"import-statement","original":"../wire-protocol"}],"format":"esm"},"packages/core/mesh/network-manager/src/testing/test-builder.ts":{"bytes":26127,"imports":[{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/messaging","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/protocols/proto/dxos/client/services","kind":"import-statement","external":true},{"path":"@dxos/rpc","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"packages/core/mesh/network-manager/src/testing/test-wire-protocol.ts","kind":"import-statement","original":"./test-wire-protocol"},{"path":"packages/core/mesh/network-manager/src/network-manager.ts","kind":"import-statement","original":"../network-manager"},{"path":"packages/core/mesh/network-manager/src/topology/index.ts","kind":"import-statement","original":"../topology"},{"path":"packages/core/mesh/network-manager/src/transport/index.ts","kind":"import-statement","original":"../transport"},{"path":"packages/core/mesh/network-manager/src/transport/tcp-transport.browser.ts","kind":"import-statement","original":"../transport/tcp-transport"}],"format":"esm"},"packages/core/mesh/network-manager/src/testing/index.ts":{"bytes":494,"imports":[{"path":"packages/core/mesh/network-manager/src/testing/test-builder.ts","kind":"import-statement","original":"./test-builder"}],"format":"esm"}},"outputs":{"packages/core/mesh/network-manager/dist/lib/browser/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":93},"packages/core/mesh/network-manager/dist/lib/browser/index.mjs":{"imports":[{"path":"packages/core/mesh/network-manager/dist/lib/browser/chunk-7JESB3AJ.mjs","kind":"import-statement"}],"exports":["Connection","ConnectionLimiter","ConnectionLog","ConnectionState","EventType","FullyConnectedTopology","LibDataChannelTransport","MAX_CONCURRENT_INITIATING_CONNECTIONS","MMSTTopology","MemoryTransport","MemoryTransportFactory","NetworkManager","SimplePeerTransport","SimplePeerTransportProxy","SimplePeerTransportProxyFactory","SimplePeerTransportService","StarTopology","Swarm","SwarmMapper","SwarmMessenger","TcpTransport","TcpTransportFactory","TransportKind","createLibDataChannelTransportFactory","createSimplePeerTransportFactory","createTeleportProtocolFactory"],"entryPoint":"packages/core/mesh/network-manager/src/index.ts","inputs":{"packages/core/mesh/network-manager/src/index.ts":{"bytesInOutput":0}},"bytes":1310},"packages/core/mesh/network-manager/dist/lib/browser/testing/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":18884},"packages/core/mesh/network-manager/dist/lib/browser/testing/index.mjs":{"imports":[{"path":"packages/core/mesh/network-manager/dist/lib/browser/chunk-7JESB3AJ.mjs","kind":"import-statement"},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/messaging","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/protocols/proto/dxos/client/services","kind":"import-statement","external":true},{"path":"@dxos/rpc","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/teleport","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true}],"exports":["TEST_SIGNAL_HOSTS","TestBuilder","TestPeer","TestSwarmConnection"],"entryPoint":"packages/core/mesh/network-manager/src/testing/index.ts","inputs":{"packages/core/mesh/network-manager/src/testing/test-builder.ts":{"bytesInOutput":6036},"packages/core/mesh/network-manager/src/testing/test-wire-protocol.ts":{"bytesInOutput":3230},"packages/core/mesh/network-manager/src/testing/index.ts":{"bytesInOutput":0}},"bytes":9947},"packages/core/mesh/network-manager/dist/lib/browser/chunk-7JESB3AJ.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":185338},"packages/core/mesh/network-manager/dist/lib/browser/chunk-7JESB3AJ.mjs":{"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/debug","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/context","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/async","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":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/messaging","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/protocols/proto/dxos/client/services","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"xor-distance","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/node-std/stream","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/debug","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/util","kind":"import-statement","external":true},{"path":"simple-peer","kind":"import-statement","external":true},{"path":"tiny-invariant","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/debug","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":"@koush/wrtc","kind":"require-call","external":true},{"path":"@dxos/node-std/stream","kind":"import-statement","external":true},{"path":"@dxos/codec-protobuf","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/dxos/mesh/bridge","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"@dxos/node-std/stream","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/debug","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/bridge","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"stream","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@dxos/teleport","kind":"import-statement","external":true}],"exports":["Connection","ConnectionLimiter","ConnectionLog","ConnectionState","EventType","FullyConnectedTopology","LibDataChannelTransport","MAX_CONCURRENT_INITIATING_CONNECTIONS","MMSTTopology","MemoryTransport","MemoryTransportFactory","NetworkManager","SimplePeerTransport","SimplePeerTransportProxy","SimplePeerTransportProxyFactory","SimplePeerTransportService","StarTopology","Swarm","SwarmMapper","SwarmMessenger","TcpTransport","TcpTransportFactory","TransportKind","createLibDataChannelTransportFactory","createSimplePeerTransportFactory","createTeleportProtocolFactory"],"inputs":{"packages/core/mesh/network-manager/src/swarm/connection.ts":{"bytesInOutput":16044},"packages/core/mesh/network-manager/src/signal/swarm-messenger.ts":{"bytesInOutput":6184},"packages/core/mesh/network-manager/src/signal/index.ts":{"bytesInOutput":0},"packages/core/mesh/network-manager/src/swarm/swarm.ts":{"bytesInOutput":13937},"packages/core/mesh/network-manager/src/swarm/peer.ts":{"bytesInOutput":13177},"packages/core/mesh/network-manager/src/swarm/swarm-mapper.ts":{"bytesInOutput":2135},"packages/core/mesh/network-manager/src/swarm/connection-limiter.ts":{"bytesInOutput":2545},"packages/core/mesh/network-manager/src/swarm/index.ts":{"bytesInOutput":0},"packages/core/mesh/network-manager/src/connection-log.ts":{"bytesInOutput":3421},"packages/core/mesh/network-manager/src/network-manager.ts":{"bytesInOutput":6514},"packages/core/mesh/network-manager/src/topology/fully-connected-topology.ts":{"bytesInOutput":965},"packages/core/mesh/network-manager/src/topology/mmst-topology.ts":{"bytesInOutput":5233},"packages/core/mesh/network-manager/src/topology/star-topology.ts":{"bytesInOutput":2484},"packages/core/mesh/network-manager/src/topology/index.ts":{"bytesInOutput":0},"packages/core/mesh/network-manager/src/transport/memory-transport.ts":{"bytesInOutput":6354},"packages/core/mesh/network-manager/src/transport/transport.ts":{"bytesInOutput":327},"packages/core/mesh/network-manager/src/transport/simplepeer-transport.ts":{"bytesInOutput":7967},"packages/core/mesh/network-manager/src/transport/webrtc.ts":{"bytesInOutput":70},"packages/core/mesh/network-manager/src/transport/simplepeer-transport-service.ts":{"bytesInOutput":4413},"packages/core/mesh/network-manager/src/transport/simplepeer-transport-proxy.ts":{"bytesInOutput":7283},"packages/core/mesh/network-manager/src/transport/libdatachannel-transport.ts":{"bytesInOutput":12754},"packages/core/mesh/network-manager/src/transport/tcp-transport.browser.ts":{"bytesInOutput":626},"packages/core/mesh/network-manager/src/transport/index.ts":{"bytesInOutput":0},"packages/core/mesh/network-manager/src/wire-protocol.ts":{"bytesInOutput":481}},"bytes":115493}}}
|
|
1
|
+
{"inputs":{"inject-globals:@inject-globals":{"bytes":384,"imports":[{"path":"@dxos/node-std/inject-globals","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/network-manager/src/swarm/connection.ts":{"bytes":52731,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/debug","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":"@inject-globals","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/network-manager/src/swarm/peer.ts":{"bytes":45750,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"packages/core/mesh/network-manager/src/swarm/connection.ts","kind":"import-statement","original":"./connection"},{"path":"@inject-globals","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/network-manager/src/signal/swarm-messenger.ts":{"bytes":22088,"imports":[{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"@inject-globals","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/network-manager/src/signal/signal-connection.ts":{"bytes":1065,"imports":[{"path":"@inject-globals","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/network-manager/src/signal/signal-messenger.ts":{"bytes":1488,"imports":[{"path":"@inject-globals","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/network-manager/src/signal/index.ts":{"bytes":721,"imports":[{"path":"packages/core/mesh/network-manager/src/signal/swarm-messenger.ts","kind":"import-statement","original":"./swarm-messenger"},{"path":"packages/core/mesh/network-manager/src/signal/signal-connection.ts","kind":"import-statement","original":"./signal-connection"},{"path":"packages/core/mesh/network-manager/src/signal/signal-messenger.ts","kind":"import-statement","original":"./signal-messenger"},{"path":"@inject-globals","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/network-manager/src/swarm/swarm.ts":{"bytes":47559,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"packages/core/mesh/network-manager/src/swarm/connection.ts","kind":"import-statement","original":"./connection"},{"path":"packages/core/mesh/network-manager/src/swarm/peer.ts","kind":"import-statement","original":"./peer"},{"path":"packages/core/mesh/network-manager/src/signal/index.ts","kind":"import-statement","original":"../signal"},{"path":"@inject-globals","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/network-manager/src/swarm/swarm-mapper.ts":{"bytes":11818,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"@inject-globals","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/network-manager/src/swarm/connection-limiter.ts":{"bytes":8422,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"@inject-globals","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/network-manager/src/swarm/index.ts":{"bytes":781,"imports":[{"path":"packages/core/mesh/network-manager/src/swarm/connection.ts","kind":"import-statement","original":"./connection"},{"path":"packages/core/mesh/network-manager/src/swarm/swarm.ts","kind":"import-statement","original":"./swarm"},{"path":"packages/core/mesh/network-manager/src/swarm/swarm-mapper.ts","kind":"import-statement","original":"./swarm-mapper"},{"path":"packages/core/mesh/network-manager/src/swarm/connection-limiter.ts","kind":"import-statement","original":"./connection-limiter"},{"path":"@inject-globals","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/network-manager/src/connection-log.ts":{"bytes":16411,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"packages/core/mesh/network-manager/src/swarm/index.ts","kind":"import-statement","original":"./swarm"},{"path":"@inject-globals","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/network-manager/src/network-manager.ts":{"bytes":25619,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/messaging","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/protocols/proto/dxos/client/services","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"packages/core/mesh/network-manager/src/connection-log.ts","kind":"import-statement","original":"./connection-log"},{"path":"packages/core/mesh/network-manager/src/swarm/index.ts","kind":"import-statement","original":"./swarm"},{"path":"@inject-globals","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/network-manager/src/topology/fully-connected-topology.ts":{"bytes":3537,"imports":[{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@inject-globals","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/network-manager/src/topology/mmst-topology.ts":{"bytes":17549,"imports":[{"path":"xor-distance","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@inject-globals","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/network-manager/src/topology/star-topology.ts":{"bytes":8020,"imports":[{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@inject-globals","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/network-manager/src/topology/topology.ts":{"bytes":2146,"imports":[{"path":"@inject-globals","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/network-manager/src/topology/index.ts":{"bytes":817,"imports":[{"path":"packages/core/mesh/network-manager/src/topology/fully-connected-topology.ts","kind":"import-statement","original":"./fully-connected-topology"},{"path":"packages/core/mesh/network-manager/src/topology/mmst-topology.ts","kind":"import-statement","original":"./mmst-topology"},{"path":"packages/core/mesh/network-manager/src/topology/star-topology.ts","kind":"import-statement","original":"./star-topology"},{"path":"packages/core/mesh/network-manager/src/topology/topology.ts","kind":"import-statement","original":"./topology"},{"path":"@inject-globals","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/network-manager/src/transport/memory-transport.ts":{"bytes":22755,"imports":[{"path":"@dxos/node-std/stream","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/debug","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/util","kind":"import-statement","external":true},{"path":"@inject-globals","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/network-manager/src/transport/transport.ts":{"bytes":3002,"imports":[{"path":"@inject-globals","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/network-manager/src/transport/webrtc.ts":{"bytes":1149,"imports":[{"path":"@inject-globals","kind":"import-statement","external":true},{"path":"@koush/wrtc","kind":"require-call","external":true}],"format":"esm"},"packages/core/mesh/network-manager/src/transport/simplepeer-transport.ts":{"bytes":29124,"imports":[{"path":"simple-peer","kind":"import-statement","external":true},{"path":"tiny-invariant","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"packages/core/mesh/network-manager/src/transport/webrtc.ts","kind":"import-statement","original":"./webrtc"},{"path":"@inject-globals","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/network-manager/src/transport/simplepeer-transport-service.ts":{"bytes":15953,"imports":[{"path":"@dxos/node-std/stream","kind":"import-statement","external":true},{"path":"@dxos/codec-protobuf","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/dxos/mesh/bridge","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"packages/core/mesh/network-manager/src/transport/simplepeer-transport.ts","kind":"import-statement","original":"./simplepeer-transport"},{"path":"@inject-globals","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/network-manager/src/transport/simplepeer-transport-proxy.ts":{"bytes":26542,"imports":[{"path":"@dxos/node-std/stream","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/debug","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/bridge","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"@inject-globals","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/network-manager/src/transport/libdatachannel-transport.ts":{"bytes":44570,"imports":[{"path":"stream","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@inject-globals","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/network-manager/src/transport/tcp-transport.browser.ts":{"bytes":2921,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@inject-globals","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/network-manager/src/transport/index.ts":{"bytes":1216,"imports":[{"path":"packages/core/mesh/network-manager/src/transport/memory-transport.ts","kind":"import-statement","original":"./memory-transport"},{"path":"packages/core/mesh/network-manager/src/transport/transport.ts","kind":"import-statement","original":"./transport"},{"path":"packages/core/mesh/network-manager/src/transport/simplepeer-transport.ts","kind":"import-statement","original":"./simplepeer-transport"},{"path":"packages/core/mesh/network-manager/src/transport/simplepeer-transport-service.ts","kind":"import-statement","original":"./simplepeer-transport-service"},{"path":"packages/core/mesh/network-manager/src/transport/simplepeer-transport-proxy.ts","kind":"import-statement","original":"./simplepeer-transport-proxy"},{"path":"packages/core/mesh/network-manager/src/transport/libdatachannel-transport.ts","kind":"import-statement","original":"./libdatachannel-transport"},{"path":"packages/core/mesh/network-manager/src/transport/tcp-transport.browser.ts","kind":"import-statement","original":"./tcp-transport"},{"path":"@inject-globals","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/network-manager/src/types.ts":{"bytes":558,"imports":[{"path":"@inject-globals","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/network-manager/src/wire-protocol.ts":{"bytes":3731,"imports":[{"path":"@dxos/teleport","kind":"import-statement","external":true},{"path":"@inject-globals","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/network-manager/src/index.ts":{"bytes":1125,"imports":[{"path":"packages/core/mesh/network-manager/src/connection-log.ts","kind":"import-statement","original":"./connection-log"},{"path":"packages/core/mesh/network-manager/src/network-manager.ts","kind":"import-statement","original":"./network-manager"},{"path":"packages/core/mesh/network-manager/src/signal/index.ts","kind":"import-statement","original":"./signal"},{"path":"packages/core/mesh/network-manager/src/swarm/index.ts","kind":"import-statement","original":"./swarm"},{"path":"packages/core/mesh/network-manager/src/topology/index.ts","kind":"import-statement","original":"./topology"},{"path":"packages/core/mesh/network-manager/src/transport/index.ts","kind":"import-statement","original":"./transport"},{"path":"packages/core/mesh/network-manager/src/types.ts","kind":"import-statement","original":"./types"},{"path":"packages/core/mesh/network-manager/src/wire-protocol.ts","kind":"import-statement","original":"./wire-protocol"},{"path":"@inject-globals","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/network-manager/src/testing/test-wire-protocol.ts":{"bytes":12748,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/teleport","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"packages/core/mesh/network-manager/src/wire-protocol.ts","kind":"import-statement","original":"../wire-protocol"},{"path":"@inject-globals","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/network-manager/src/testing/test-builder.ts":{"bytes":26127,"imports":[{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/messaging","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/protocols/proto/dxos/client/services","kind":"import-statement","external":true},{"path":"@dxos/rpc","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"packages/core/mesh/network-manager/src/testing/test-wire-protocol.ts","kind":"import-statement","original":"./test-wire-protocol"},{"path":"packages/core/mesh/network-manager/src/network-manager.ts","kind":"import-statement","original":"../network-manager"},{"path":"packages/core/mesh/network-manager/src/topology/index.ts","kind":"import-statement","original":"../topology"},{"path":"packages/core/mesh/network-manager/src/transport/index.ts","kind":"import-statement","original":"../transport"},{"path":"packages/core/mesh/network-manager/src/transport/tcp-transport.browser.ts","kind":"import-statement","original":"../transport/tcp-transport"},{"path":"@inject-globals","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/network-manager/src/testing/index.ts":{"bytes":494,"imports":[{"path":"packages/core/mesh/network-manager/src/testing/test-builder.ts","kind":"import-statement","original":"./test-builder"},{"path":"@inject-globals","kind":"import-statement","external":true}],"format":"esm"}},"outputs":{"packages/core/mesh/network-manager/dist/lib/browser/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":93},"packages/core/mesh/network-manager/dist/lib/browser/index.mjs":{"imports":[{"path":"packages/core/mesh/network-manager/dist/lib/browser/chunk-XF474R3E.mjs","kind":"import-statement"}],"exports":["Connection","ConnectionLimiter","ConnectionLog","ConnectionState","EventType","FullyConnectedTopology","LibDataChannelTransport","MAX_CONCURRENT_INITIATING_CONNECTIONS","MMSTTopology","MemoryTransport","MemoryTransportFactory","NetworkManager","SimplePeerTransport","SimplePeerTransportProxy","SimplePeerTransportProxyFactory","SimplePeerTransportService","StarTopology","Swarm","SwarmMapper","SwarmMessenger","TcpTransport","TcpTransportFactory","TransportKind","createLibDataChannelTransportFactory","createSimplePeerTransportFactory","createTeleportProtocolFactory"],"entryPoint":"packages/core/mesh/network-manager/src/index.ts","inputs":{"packages/core/mesh/network-manager/src/index.ts":{"bytesInOutput":0}},"bytes":1310},"packages/core/mesh/network-manager/dist/lib/browser/testing/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":18885},"packages/core/mesh/network-manager/dist/lib/browser/testing/index.mjs":{"imports":[{"path":"packages/core/mesh/network-manager/dist/lib/browser/chunk-XF474R3E.mjs","kind":"import-statement"},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/messaging","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/protocols/proto/dxos/client/services","kind":"import-statement","external":true},{"path":"@dxos/rpc","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/teleport","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true}],"exports":["TEST_SIGNAL_HOSTS","TestBuilder","TestPeer","TestSwarmConnection"],"entryPoint":"packages/core/mesh/network-manager/src/testing/index.ts","inputs":{"packages/core/mesh/network-manager/src/testing/test-builder.ts":{"bytesInOutput":6036},"packages/core/mesh/network-manager/src/testing/test-wire-protocol.ts":{"bytesInOutput":3230},"packages/core/mesh/network-manager/src/testing/index.ts":{"bytesInOutput":0}},"bytes":9958},"packages/core/mesh/network-manager/dist/lib/browser/chunk-XF474R3E.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":185345},"packages/core/mesh/network-manager/dist/lib/browser/chunk-XF474R3E.mjs":{"imports":[{"path":"@dxos/node-std/inject-globals","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/debug","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/context","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/async","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":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/messaging","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/protocols/proto/dxos/client/services","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"xor-distance","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/node-std/stream","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/debug","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/util","kind":"import-statement","external":true},{"path":"simple-peer","kind":"import-statement","external":true},{"path":"tiny-invariant","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/debug","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":"@koush/wrtc","kind":"require-call","external":true},{"path":"@dxos/node-std/stream","kind":"import-statement","external":true},{"path":"@dxos/codec-protobuf","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/dxos/mesh/bridge","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"@dxos/node-std/stream","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/debug","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/bridge","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"stream","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@dxos/teleport","kind":"import-statement","external":true}],"exports":["Connection","ConnectionLimiter","ConnectionLog","ConnectionState","EventType","FullyConnectedTopology","LibDataChannelTransport","MAX_CONCURRENT_INITIATING_CONNECTIONS","MMSTTopology","MemoryTransport","MemoryTransportFactory","NetworkManager","SimplePeerTransport","SimplePeerTransportProxy","SimplePeerTransportProxyFactory","SimplePeerTransportService","StarTopology","Swarm","SwarmMapper","SwarmMessenger","TcpTransport","TcpTransportFactory","TransportKind","createLibDataChannelTransportFactory","createSimplePeerTransportFactory","createTeleportProtocolFactory","process"],"inputs":{"inject-globals:@inject-globals":{"bytesInOutput":90},"packages/core/mesh/network-manager/src/swarm/connection.ts":{"bytesInOutput":16044},"packages/core/mesh/network-manager/src/signal/swarm-messenger.ts":{"bytesInOutput":6184},"packages/core/mesh/network-manager/src/signal/index.ts":{"bytesInOutput":0},"packages/core/mesh/network-manager/src/swarm/swarm.ts":{"bytesInOutput":13937},"packages/core/mesh/network-manager/src/swarm/peer.ts":{"bytesInOutput":13177},"packages/core/mesh/network-manager/src/swarm/swarm-mapper.ts":{"bytesInOutput":2135},"packages/core/mesh/network-manager/src/swarm/connection-limiter.ts":{"bytesInOutput":2545},"packages/core/mesh/network-manager/src/swarm/index.ts":{"bytesInOutput":0},"packages/core/mesh/network-manager/src/connection-log.ts":{"bytesInOutput":3421},"packages/core/mesh/network-manager/src/network-manager.ts":{"bytesInOutput":6514},"packages/core/mesh/network-manager/src/topology/fully-connected-topology.ts":{"bytesInOutput":965},"packages/core/mesh/network-manager/src/topology/mmst-topology.ts":{"bytesInOutput":5233},"packages/core/mesh/network-manager/src/topology/star-topology.ts":{"bytesInOutput":2484},"packages/core/mesh/network-manager/src/topology/index.ts":{"bytesInOutput":0},"packages/core/mesh/network-manager/src/transport/memory-transport.ts":{"bytesInOutput":6354},"packages/core/mesh/network-manager/src/transport/transport.ts":{"bytesInOutput":327},"packages/core/mesh/network-manager/src/transport/simplepeer-transport.ts":{"bytesInOutput":7967},"packages/core/mesh/network-manager/src/transport/webrtc.ts":{"bytesInOutput":70},"packages/core/mesh/network-manager/src/transport/simplepeer-transport-service.ts":{"bytesInOutput":4413},"packages/core/mesh/network-manager/src/transport/simplepeer-transport-proxy.ts":{"bytesInOutput":7283},"packages/core/mesh/network-manager/src/transport/libdatachannel-transport.ts":{"bytesInOutput":12755},"packages/core/mesh/network-manager/src/transport/tcp-transport.browser.ts":{"bytesInOutput":626},"packages/core/mesh/network-manager/src/transport/index.ts":{"bytesInOutput":0},"packages/core/mesh/network-manager/src/wire-protocol.ts":{"bytesInOutput":481}},"bytes":115630}}}
|
|
@@ -9,8 +9,9 @@ import {
|
|
|
9
9
|
TransportKind,
|
|
10
10
|
createLibDataChannelTransportFactory,
|
|
11
11
|
createSimplePeerTransportFactory,
|
|
12
|
-
createTeleportProtocolFactory
|
|
13
|
-
|
|
12
|
+
createTeleportProtocolFactory,
|
|
13
|
+
process
|
|
14
|
+
} from "../chunk-XF474R3E.mjs";
|
|
14
15
|
|
|
15
16
|
// packages/core/mesh/network-manager/src/testing/test-builder.ts
|
|
16
17
|
import { PublicKey as PublicKey2 } from "@dxos/keys";
|
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../src/testing/test-builder.ts", "../../../../src/testing/test-wire-protocol.ts"],
|
|
4
4
|
"sourcesContent": ["//\n// Copyright 2022 DXOS.org\n//\n\nimport { PublicKey } from '@dxos/keys';\nimport { log } from '@dxos/log';\nimport {\n MemorySignalManager,\n MemorySignalManagerContext,\n type SignalManager,\n WebsocketSignalManager,\n} from '@dxos/messaging';\nimport { schema } from '@dxos/protocols';\nimport { ConnectionState } from '@dxos/protocols/proto/dxos/client/services';\nimport { type Runtime } from '@dxos/protocols/proto/dxos/config';\nimport { createLinkedPorts, createProtoRpcPeer, type ProtoRpcPeer } from '@dxos/rpc';\nimport { ComplexMap } from '@dxos/util';\n\nimport { TestWireProtocol, type TestTeleportExtensionFactory } from './test-wire-protocol';\nimport { NetworkManager } from '../network-manager';\nimport { FullyConnectedTopology } from '../topology';\nimport {\n MemoryTransportFactory,\n type TransportFactory,\n SimplePeerTransportProxyFactory,\n SimplePeerTransportService,\n createSimplePeerTransportFactory,\n createLibDataChannelTransportFactory,\n TransportKind,\n} from '../transport';\nimport { TcpTransportFactory } from '../transport/tcp-transport';\n\n// Signal server will be started by the setup script.\nconst port = process.env.SIGNAL_PORT ?? 4000;\nexport const TEST_SIGNAL_HOSTS: Runtime.Services.Signal[] = [\n { server: `ws://localhost:${port}/.well-known/dx/signal` },\n];\n\nexport type TestBuilderOptions = {\n signalHosts?: Runtime.Services.Signal[];\n bridge?: boolean;\n transport?: TransportKind;\n};\n\n/**\n * Builder used to construct networks and peers.\n */\nexport class TestBuilder {\n private _signalContext = new MemorySignalManagerContext();\n\n constructor(public readonly options: TestBuilderOptions = {}) {}\n\n createSignalManager() {\n if (this.options.signalHosts) {\n return new WebsocketSignalManager(this.options.signalHosts);\n }\n\n return new MemorySignalManager(this._signalContext);\n }\n\n createPeer(peerId: PublicKey = PublicKey.random()) {\n return new TestPeer(this, peerId, this.options.transport);\n }\n}\n\n/**\n * Testing network peer.\n */\nexport class TestPeer {\n private readonly _swarms = new ComplexMap<PublicKey, TestSwarmConnection>(PublicKey.hash);\n\n /**\n * @internal\n */\n readonly _signalManager: SignalManager;\n\n /**\n * @internal\n */\n readonly _networkManager: NetworkManager;\n\n private _proxy?: ProtoRpcPeer<any>;\n private _service?: ProtoRpcPeer<any>;\n\n constructor(\n private readonly testBuilder: TestBuilder,\n public readonly peerId: PublicKey,\n public readonly transport?: TransportKind,\n ) {\n this._signalManager = this.testBuilder.createSignalManager();\n if (!transport) {\n if (this.testBuilder.options.signalHosts) {\n transport = TransportKind.SIMPLE_PEER;\n } else {\n transport = TransportKind.MEMORY;\n }\n }\n this._networkManager = this.createNetworkManager(transport);\n }\n\n // TODO(burdon): Move to TestBuilder.\n createNetworkManager(transport: TransportKind) {\n let transportFactory: TransportFactory;\n if (this.testBuilder.options.signalHosts) {\n log.info(`using ${transport} transport with signal server.`);\n switch (transport) {\n case TransportKind.MEMORY:\n throw new Error('Memory transport not supported with signal server.');\n case TransportKind.TCP:\n transportFactory = TcpTransportFactory;\n break;\n case TransportKind.SIMPLE_PEER:\n transportFactory = createSimplePeerTransportFactory();\n break;\n case TransportKind.LIBDATACHANNEL:\n transportFactory = createLibDataChannelTransportFactory();\n break;\n case TransportKind.SIMPLE_PEER_PROXY:\n {\n // Simulates bridge to shared worker.\n const [proxyPort, servicePort] = createLinkedPorts();\n\n this._proxy = createProtoRpcPeer({\n port: proxyPort,\n requested: {\n BridgeService: schema.getService('dxos.mesh.bridge.BridgeService'),\n },\n noHandshake: true,\n encodingOptions: {\n preserveAny: true,\n },\n });\n\n this._service = createProtoRpcPeer({\n port: servicePort,\n exposed: {\n BridgeService: schema.getService('dxos.mesh.bridge.BridgeService'),\n },\n handlers: { BridgeService: new SimplePeerTransportService() },\n noHandshake: true,\n encodingOptions: {\n preserveAny: true,\n },\n });\n\n transportFactory = new SimplePeerTransportProxyFactory().setBridgeService(this._proxy.rpc.BridgeService);\n }\n break;\n default:\n throw new Error(`Unsupported transport: ${transport}`);\n }\n } else {\n if (transport !== TransportKind.MEMORY && transport !== TransportKind.TCP) {\n log.warn(`specified transport ${transport} but no signalling configured, using memory transport instead`);\n }\n log.info(`using ${transport} transport without signal server.`);\n transportFactory = MemoryTransportFactory;\n }\n\n return new NetworkManager({\n signalManager: this._signalManager,\n transportFactory,\n });\n }\n\n async open() {\n await this._networkManager.open();\n await this._proxy?.open();\n await this._service?.open();\n }\n\n async close() {\n await Promise.all(Array.from(this._swarms.values()).map((swarm) => swarm.leave()));\n this._swarms.clear();\n\n await this._proxy?.close();\n await this._service?.close();\n await this._networkManager.close();\n }\n\n getSwarm(topic: PublicKey): TestSwarmConnection {\n const swarm = this._swarms.get(topic);\n if (!swarm) {\n throw new Error(`Swarm not found for topic: ${topic}`);\n }\n\n return swarm;\n }\n\n createSwarm(topic: PublicKey, extensionFactory: TestTeleportExtensionFactory = () => []): TestSwarmConnection {\n // TODO(burdon): Multiple.\n // if (this._swarms.get(topic)) {\n // throw new Error(`Swarm already exists for topic: ${topic.truncate()}`);\n // }\n\n const swarm = new TestSwarmConnection(this, topic, extensionFactory);\n this._swarms.set(topic, swarm);\n return swarm;\n }\n\n async goOffline() {\n await this._networkManager.setConnectionState(ConnectionState.OFFLINE);\n }\n\n async goOnline() {\n await this._networkManager.setConnectionState(ConnectionState.ONLINE);\n }\n}\n\n// TODO(burdon): Reconcile with new Swarm concept.\nexport class TestSwarmConnection {\n protocol: TestWireProtocol;\n\n constructor(\n readonly peer: TestPeer,\n readonly topic: PublicKey,\n readonly extensionFactory: TestTeleportExtensionFactory,\n ) {\n // TODO(burdon): Configure plugins.\n // TODO(burdon): Prevent reuse?\n this.protocol = new TestWireProtocol(this.peer.peerId, this.extensionFactory);\n }\n\n // TODO(burdon): Need to create new plugin instance per swarm?\n // If so, then perhaps joinSwarm should return swarm object with access to plugins.\n async join(topology = new FullyConnectedTopology()) {\n await this.peer._networkManager.joinSwarm({\n topic: this.topic,\n peerId: this.peer.peerId,\n protocolProvider: this.protocol.factory,\n topology,\n });\n\n return this;\n }\n\n async leave() {\n await this.peer._networkManager.leaveSwarm(this.topic);\n return this;\n }\n}\n", "//\n// Copyright 2022 DXOS.org\n//\n\nimport { asyncTimeout, Event } from '@dxos/async';\nimport { PublicKey } from '@dxos/keys';\nimport { log } from '@dxos/log';\nimport { TestExtension, TestExtensionWithStreams } from '@dxos/teleport';\nimport type { TestStreamStats, TeleportExtension } from '@dxos/teleport';\nimport { ComplexMap } from '@dxos/util';\n\nimport { createTeleportProtocolFactory } from '../wire-protocol';\n\nexport type TestTeleportExtension = {\n name: string;\n extension: TeleportExtension;\n};\n\nexport type TestTeleportExtensionFactory = () => TestTeleportExtension[];\n\nexport class TestWireProtocol {\n public readonly connections = new ComplexMap<PublicKey, TestExtension>(PublicKey.hash);\n public readonly streamConnections = new ComplexMap<PublicKey, TestExtensionWithStreams>(PublicKey.hash);\n\n public readonly connected = new Event<PublicKey>();\n public readonly disconnected = new Event<PublicKey>();\n\n public readonly otherConnections = new ComplexMap<{ remotePeerId: PublicKey; extension: string }, TeleportExtension>(\n ({ remotePeerId, extension }) => remotePeerId.toHex() + extension,\n );\n\n constructor(\n public readonly peerId: PublicKey,\n private readonly _extensionFactory: TestTeleportExtensionFactory = () => [],\n ) {}\n\n readonly factory = createTeleportProtocolFactory(async (teleport) => {\n log('create', { remotePeerId: teleport.remotePeerId });\n const extension = new TestExtension({\n onClose: async () => {\n this.connections.delete(teleport.remotePeerId);\n this.disconnected.emit(teleport.remotePeerId);\n },\n });\n this.connections.set(teleport.remotePeerId, extension);\n teleport.addExtension('test', extension);\n this.connected.emit(teleport.remotePeerId);\n\n const streamExtension = new TestExtensionWithStreams({\n onClose: async () => {\n this.streamConnections.delete(teleport.remotePeerId);\n },\n });\n this.streamConnections.set(teleport.remotePeerId, streamExtension);\n teleport.addExtension('test-stream', streamExtension);\n\n for (const { name, extension } of this._extensionFactory()) {\n this.otherConnections.set({ remotePeerId: teleport.remotePeerId, extension: name }, extension);\n teleport.addExtension(name, extension);\n }\n });\n\n async waitForConnection(peerId: PublicKey) {\n if (this.connections.has(peerId)) {\n return this.connections.get(peerId)!;\n }\n log('waitForConnection', { peerId });\n await asyncTimeout(\n this.connected.waitFor((connectedId) => connectedId.equals(peerId)),\n // TODO(nf): Make this configurable.\n 10_000,\n );\n return this.connections.get(peerId)!;\n }\n\n async testConnection(peerId: PublicKey, message?: string) {\n const connection = await this.waitForConnection(peerId);\n await connection.test(message);\n }\n\n async openStream(\n peerId: PublicKey,\n streamTag: string,\n streamLoadInterval: number,\n streamLoadChunkSize: number,\n ): Promise<string> {\n if (!this.streamConnections.has(peerId)) {\n throw new Error('Connection does not exist.');\n }\n const connection = this.streamConnections.get(peerId)!;\n return connection.addNewStream(streamLoadInterval, streamLoadChunkSize, streamTag);\n }\n\n async closeStream(peerId: PublicKey, streamTag: string): Promise<TestStreamStats> {\n if (!this.streamConnections.has(peerId)) {\n throw new Error('Connection does not exist.');\n }\n const connection = this.streamConnections.get(peerId)!;\n return connection.closeStream(streamTag);\n }\n}\n"],
|
|
5
|
-
"mappings": "
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["PublicKey", "log", "MemorySignalManager", "MemorySignalManagerContext", "WebsocketSignalManager", "schema", "ConnectionState", "createLinkedPorts", "createProtoRpcPeer", "ComplexMap", "asyncTimeout", "Event", "PublicKey", "log", "TestExtension", "TestExtensionWithStreams", "ComplexMap", "TestWireProtocol", "constructor", "peerId", "_extensionFactory", "connections", "ComplexMap", "PublicKey", "hash", "streamConnections", "connected", "Event", "disconnected", "otherConnections", "remotePeerId", "extension", "toHex", "factory", "createTeleportProtocolFactory", "teleport", "log", "TestExtension", "onClose", "delete", "emit", "set", "addExtension", "streamExtension", "TestExtensionWithStreams", "name", "waitForConnection", "has", "get", "asyncTimeout", "waitFor", "connectedId", "equals", "testConnection", "message", "connection", "test", "openStream", "streamTag", "streamLoadInterval", "streamLoadChunkSize", "Error", "addNewStream", "closeStream", "port", "process", "env", "SIGNAL_PORT", "TEST_SIGNAL_HOSTS", "server", "TestBuilder", "constructor", "options", "_signalContext", "MemorySignalManagerContext", "createSignalManager", "signalHosts", "WebsocketSignalManager", "MemorySignalManager", "createPeer", "peerId", "PublicKey", "random", "TestPeer", "transport", "testBuilder", "_swarms", "ComplexMap", "hash", "_signalManager", "TransportKind", "SIMPLE_PEER", "MEMORY", "_networkManager", "createNetworkManager", "transportFactory", "log", "info", "Error", "TCP", "TcpTransportFactory", "createSimplePeerTransportFactory", "LIBDATACHANNEL", "createLibDataChannelTransportFactory", "SIMPLE_PEER_PROXY", "proxyPort", "servicePort", "createLinkedPorts", "_proxy", "createProtoRpcPeer", "requested", "BridgeService", "schema", "getService", "noHandshake", "encodingOptions", "preserveAny", "_service", "exposed", "handlers", "SimplePeerTransportService", "SimplePeerTransportProxyFactory", "setBridgeService", "rpc", "warn", "MemoryTransportFactory", "NetworkManager", "signalManager", "open", "close", "Promise", "all", "Array", "from", "values", "map", "swarm", "leave", "clear", "getSwarm", "topic", "get", "createSwarm", "extensionFactory", "TestSwarmConnection", "set", "goOffline", "setConnectionState", "ConnectionState", "OFFLINE", "goOnline", "ONLINE", "peer", "protocol", "TestWireProtocol", "join", "topology", "FullyConnectedTopology", "joinSwarm", "protocolProvider", "factory", "leaveSwarm"]
|
|
7
7
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dxos/network-manager",
|
|
3
|
-
"version": "0.3.9-main.
|
|
3
|
+
"version": "0.3.9-main.622f05b",
|
|
4
4
|
"description": "Network Manager",
|
|
5
5
|
"homepage": "https://dxos.org",
|
|
6
6
|
"bugs": "https://github.com/dxos/dxos/issues",
|
|
@@ -31,21 +31,21 @@
|
|
|
31
31
|
"tiny-invariant": "^1.3.1",
|
|
32
32
|
"ws": "^8.14.2",
|
|
33
33
|
"xor-distance": "^2.0.0",
|
|
34
|
-
"@dxos/async": "0.3.9-main.
|
|
35
|
-
"@dxos/codec-protobuf": "0.3.9-main.
|
|
36
|
-
"@dxos/context": "0.3.9-main.
|
|
37
|
-
"@dxos/credentials": "0.3.9-main.
|
|
38
|
-
"@dxos/crypto": "0.3.9-main.
|
|
39
|
-
"@dxos/
|
|
40
|
-
"@dxos/
|
|
41
|
-
"@dxos/
|
|
42
|
-
"@dxos/log": "0.3.9-main.
|
|
43
|
-
"@dxos/messaging": "0.3.9-main.
|
|
44
|
-
"@dxos/protocols": "0.3.9-main.
|
|
45
|
-
"@dxos/
|
|
46
|
-
"@dxos/
|
|
47
|
-
"@dxos/teleport": "0.3.9-main.
|
|
48
|
-
"@dxos/util": "0.3.9-main.
|
|
34
|
+
"@dxos/async": "0.3.9-main.622f05b",
|
|
35
|
+
"@dxos/codec-protobuf": "0.3.9-main.622f05b",
|
|
36
|
+
"@dxos/context": "0.3.9-main.622f05b",
|
|
37
|
+
"@dxos/credentials": "0.3.9-main.622f05b",
|
|
38
|
+
"@dxos/crypto": "0.3.9-main.622f05b",
|
|
39
|
+
"@dxos/invariant": "0.3.9-main.622f05b",
|
|
40
|
+
"@dxos/keys": "0.3.9-main.622f05b",
|
|
41
|
+
"@dxos/debug": "0.3.9-main.622f05b",
|
|
42
|
+
"@dxos/log": "0.3.9-main.622f05b",
|
|
43
|
+
"@dxos/messaging": "0.3.9-main.622f05b",
|
|
44
|
+
"@dxos/protocols": "0.3.9-main.622f05b",
|
|
45
|
+
"@dxos/node-std": "0.3.9-main.622f05b",
|
|
46
|
+
"@dxos/rpc": "0.3.9-main.622f05b",
|
|
47
|
+
"@dxos/teleport": "0.3.9-main.622f05b",
|
|
48
|
+
"@dxos/util": "0.3.9-main.622f05b"
|
|
49
49
|
},
|
|
50
50
|
"devDependencies": {
|
|
51
51
|
"@swc-node/register": "1.5.4",
|
|
@@ -55,7 +55,7 @@
|
|
|
55
55
|
"earljs": "~0.1.10",
|
|
56
56
|
"fast-check": "~3.3.0",
|
|
57
57
|
"typescript": "^5.2.2",
|
|
58
|
-
"@dxos/signal": "0.3.9-main.
|
|
58
|
+
"@dxos/signal": "0.3.9-main.622f05b"
|
|
59
59
|
},
|
|
60
60
|
"publishConfig": {
|
|
61
61
|
"access": "public"
|