@dxos/network-manager 0.1.14 → 0.1.16

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../../src/home/runner/work/dxos/dxos/packages/core/mesh/network-manager/src/index.ts", "../../../src/home/runner/work/dxos/dxos/packages/core/mesh/network-manager/src/connection-log.ts", "../../../src/swarm/home/runner/work/dxos/dxos/packages/core/mesh/network-manager/src/swarm/connection.ts", "../../../src/swarm/home/runner/work/dxos/dxos/packages/core/mesh/network-manager/src/swarm/swarm.ts", "../../../src/signal/home/runner/work/dxos/dxos/packages/core/mesh/network-manager/src/signal/message-router.ts", "../../../src/swarm/home/runner/work/dxos/dxos/packages/core/mesh/network-manager/src/swarm/peer.ts", "../../../src/swarm/home/runner/work/dxos/dxos/packages/core/mesh/network-manager/src/swarm/swarm-mapper.ts", "../../../src/home/runner/work/dxos/dxos/packages/core/mesh/network-manager/src/network-manager.ts", "../../../src/home/runner/work/dxos/dxos/packages/core/mesh/network-manager/src/protocol-factory.ts", "../../../src/topology/home/runner/work/dxos/dxos/packages/core/mesh/network-manager/src/topology/fully-connected-topology.ts", "../../../src/topology/home/runner/work/dxos/dxos/packages/core/mesh/network-manager/src/topology/mmst-topology.ts", "../../../src/topology/home/runner/work/dxos/dxos/packages/core/mesh/network-manager/src/topology/star-topology.ts", "../../../src/transport/home/runner/work/dxos/dxos/packages/core/mesh/network-manager/src/transport/memory-transport.ts", "../../../src/transport/home/runner/work/dxos/dxos/packages/core/mesh/network-manager/src/transport/webrtc-transport.ts", "../../../src/transport/home/runner/work/dxos/dxos/packages/core/mesh/network-manager/src/transport/webrtc.ts", "../../../src/transport/home/runner/work/dxos/dxos/packages/core/mesh/network-manager/src/transport/webrtc-transport-service.ts", "../../../src/transport/home/runner/work/dxos/dxos/packages/core/mesh/network-manager/src/transport/webrtc-transport-proxy.ts", "../../../src/home/runner/work/dxos/dxos/packages/core/mesh/network-manager/src/wire-protocol.ts"],
4
4
  "sourcesContent": ["//\n// Copyright 2020 DXOS.org\n//\n\nexport * from './connection-log';\nexport * from './network-manager';\nexport * from './protocol-factory';\nexport * from './signal';\nexport * from './swarm';\nexport * from './topology';\nexport * from './transport';\nexport * from './types';\nexport * from './wire-protocol';\n", "//\n// Copyright 2021 DXOS.org\n//\n\nimport { Event } from '@dxos/async';\nimport { raise } from '@dxos/debug';\nimport { PublicKey } from '@dxos/keys';\nimport { SwarmInfo, ConnectionInfo } from '@dxos/protocols/proto/dxos/devtools/swarm';\nimport { ComplexMap } from '@dxos/util';\n\nimport { ConnectionState, Swarm } from './swarm';\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 swarmJoined(swarm: Swarm) {\n const info: SwarmInfo = {\n id: swarm.instanceId,\n topic: swarm.topic,\n isActive: true,\n label: swarm.label,\n connections: []\n };\n\n this._swarms.set(swarm.instanceId, info);\n this.update.emit();\n\n swarm.connectionAdded.on((connection) => {\n const connectionInfo: ConnectionInfo = {\n state: ConnectionState.INITIAL,\n remotePeerId: connection.remoteId,\n sessionId: connection.sessionId,\n transport: connection.transport && Object.getPrototypeOf(connection.transport).constructor.name,\n protocolExtensions: connection.protocol.protocol?.extensionNames,\n events: []\n };\n info.connections!.push(connectionInfo);\n this.update.emit();\n\n connection.stateChanged.on((state) => {\n connectionInfo.state = state;\n connectionInfo.events!.push({\n type: EventType.CONNECTION_STATE_CHANGED,\n newState: state\n });\n this.update.emit();\n });\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 swarmLeft(swarm: Swarm) {\n this.getSwarmInfo(swarm.instanceId).isActive = false;\n this.update.emit();\n }\n}\n", "//\n// Copyright 2021 DXOS.org\n//\n\nimport assert from 'node:assert';\n\nimport { Event, synchronized } from '@dxos/async';\nimport { ErrorStream } from '@dxos/debug';\nimport { PublicKey } from '@dxos/keys';\nimport { log } from '@dxos/log';\nimport { Signal } from '@dxos/protocols/proto/dxos/mesh/swarm';\n\nimport { SignalMessage, SignalMessenger } from '../signal';\nimport { Transport, TransportFactory } from '../transport';\nimport { WireProtocol } from '../wire-protocol';\n\n/**\n * State machine for each connection.\n */\nexport enum ConnectionState {\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 closed.\n */\n CLOSED = 'CLOSED'\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 _state: ConnectionState = ConnectionState.INITIAL;\n private _transport: Transport | undefined;\n private _bufferedSignals: Signal[] = [];\n\n readonly stateChanged = new Event<ConnectionState>();\n readonly errors = new ErrorStream();\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 ) {}\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 // TODO(burdon): Make async?\n openConnection() {\n assert(this._state === ConnectionState.INITIAL, 'Invalid state.');\n this._changeState(ConnectionState.CONNECTING);\n\n // TODO(dmaretskyi): Initialize only after the transport has established connection.\n this._protocol.initialize().catch((err) => {\n this.errors.raise(err);\n });\n\n assert(!this._transport);\n this._transport = this._transportFactory.createTransport({\n initiator: this.initiator,\n stream: this._protocol.stream,\n sendSignal: async (signal) => {\n await this._signalMessaging.signal({\n author: this.ownId,\n recipient: this.remoteId,\n sessionId: this.sessionId,\n topic: this.topic,\n data: { signal }\n });\n }\n });\n\n this._transport.connected.once(() => {\n this._changeState(ConnectionState.CONNECTED);\n });\n\n this._transport.closed.once(() => {\n this._transport = undefined;\n this.close().catch((err) => this.errors.raise(err));\n });\n\n this._transport.errors.pipeTo(this.errors);\n\n // Replay signals that were received before transport was created.\n for (const signal of this._bufferedSignals) {\n void this._transport.signal(signal); // TODO(burdon): Remove async?\n }\n\n this._bufferedSignals = [];\n }\n\n @synchronized\n async close() {\n if (this._state === ConnectionState.CLOSED) {\n return;\n }\n\n log('closing...', { peerId: this.ownId });\n\n try {\n // Gracefully close the stream flushing any unsent data packets.\n await this._protocol.destroy();\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 log('closed', { peerId: this.ownId });\n this._changeState(ConnectionState.CLOSED);\n }\n\n async signal(msg: SignalMessage) {\n assert(msg.sessionId);\n if (!msg.sessionId.equals(this.sessionId)) {\n log('dropping signal for incorrect session id');\n return;\n }\n assert(msg.data.signal);\n assert(msg.author?.equals(this.remoteId));\n assert(msg.recipient?.equals(this.ownId));\n\n if (this._state === ConnectionState.INITIAL) {\n log('buffered signal', { peerId: this.ownId, remoteId: this.remoteId, msg: msg.data });\n this._bufferedSignals.push(msg.data.signal);\n return;\n }\n\n assert(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(msg.data.signal);\n }\n\n private _changeState(state: ConnectionState): void {\n assert(state !== this._state, 'Already in this state.');\n this._state = state;\n this.stateChanged.emit(state);\n }\n}\n", "//\n// Copyright 2020 DXOS.org\n//\n\nimport assert from 'node:assert';\n\nimport { Event, scheduleTask, sleep } from '@dxos/async';\nimport { Context } from '@dxos/context';\nimport { ErrorStream } from '@dxos/debug';\nimport { PublicKey } from '@dxos/keys';\nimport { log, logInfo } from '@dxos/log';\nimport { Messenger } from '@dxos/messaging';\nimport { SwarmEvent } from '@dxos/protocols/proto/dxos/mesh/signal';\nimport { Answer } from '@dxos/protocols/proto/dxos/mesh/swarm';\nimport { ComplexMap, isNotNullOrUndefined } from '@dxos/util';\n\nimport { MessageRouter, OfferMessage, SignalMessage } from '../signal';\nimport { SwarmController, Topology } from '../topology';\nimport { TransportFactory } from '../transport';\nimport { Topic } from '../types';\nimport { WireProtocolProvider } from '../wire-protocol';\nimport { Connection } from './connection';\nimport { Peer } from './peer';\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 _peers = new ComplexMap<PublicKey, Peer>(PublicKey.hash);\n\n private readonly _swarmMessenger: MessageRouter;\n\n private _ctx = new Context();\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();\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 ) {\n log('creating swarm', { peerId: _ownPeerId });\n _topology.init(this._getSwarmController());\n\n this._swarmMessenger = new MessageRouter({\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\n this._messenger\n .listen({\n peerId: this._ownPeerId,\n payloadType: 'dxos.mesh.swarm.SwarmMessage',\n onMessage: async (message) => await this._swarmMessenger.receiveMessage(message)\n })\n .catch((error) => log.catch(error));\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 // TODO(burdon): async open?\n async destroy() {\n log('destroying...');\n await this._ctx.dispose();\n await this._topology.destroy();\n await Promise.all(Array.from(this._peers.keys()).map((key) => this._destroyPeer(key)));\n log('destroyed');\n }\n\n async setTopology(topology: Topology) {\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 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 {\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);\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 void this._destroyPeer(peerId);\n }\n },\n onAccepted: () => {\n this._topology.update();\n },\n onOffer: (remoteId) => {\n return this._topology.onOffer(remoteId);\n }\n }\n );\n this._peers.set(peerId, peer);\n }\n\n return peer;\n }\n\n private async _destroyPeer(peerId: PublicKey) {\n assert(this._peers.has(peerId));\n await this._peers.get(peerId)!.destroy();\n this._peers.delete(peerId);\n }\n\n onSwarmEvent(swarmEvent: SwarmEvent) {\n log('swarm event', { swarmEvent }); // TODO(burdon): Stringify.\n if (this._ctx.disposed) {\n log.warn('ignored for destroyed 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) {\n void this._destroyPeer(peer.id);\n }\n }\n }\n\n this._topology.update();\n }\n\n async onOffer(message: OfferMessage): Promise<Answer> {\n log('offer', { message });\n if (this._ctx.disposed) {\n log.info('ignored for destroyed swarm');\n return { accept: false };\n }\n\n // Id of the peer offering us the connection.\n assert(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 destroyed swarm');\n return;\n }\n assert(\n message.recipient?.equals(this._ownPeerId),\n `Invalid signal peer id expected=${this.ownPeerId}, actual=${message.recipient}`\n );\n assert(message.topic?.equals(this._topic));\n assert(message.author);\n\n const peer = this._getOrCreatePeer(message.author);\n await peer.onSignal(message);\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)\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.warn('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 // 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(INITIATION_DELAY);\n }\n if (this._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 2020 DXOS.org\n//\n\nimport assert from 'node:assert';\n\nimport { Any } from '@dxos/codec-protobuf';\nimport { PublicKey } from '@dxos/keys';\nimport { log } from '@dxos/log';\nimport { schema } from '@dxos/protocols';\nimport { Answer, SwarmMessage } from '@dxos/protocols/proto/dxos/mesh/swarm';\nimport { ComplexMap, MakeOptional } from '@dxos/util';\n\nimport { OfferMessage, SignalMessage, SignalMessenger } from './signal-messenger';\n\ninterface OfferRecord {\n resolve: (answer: Answer) => void;\n reject: (error?: Error) => void;\n}\n\ninterface MessageRouterOptions {\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\n/**\n * Adds offer/answer and signal interfaces.\n */\nexport class MessageRouter implements SignalMessenger {\n private readonly _onSignal: (message: SignalMessage) => Promise<void>;\n private readonly _sendMessage: (msg: { author: PublicKey; recipient: PublicKey; payload: Any }) => Promise<void>;\n\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 }: MessageRouterOptions) {\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 = schema.getCodecForType('dxos.mesh.swarm.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 }\n }\n\n async signal(message: SignalMessage): Promise<void> {\n assert(message.data?.signal);\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, reject });\n return this._sendReliableMessage({\n author: message.author,\n recipient: message.recipient,\n message: networkMessage\n });\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._encodeAndSend({ author, recipient, message: networkMessage });\n }\n\n private async _encodeAndSend({\n author,\n recipient,\n message\n }: {\n author: PublicKey;\n recipient: PublicKey;\n message: SwarmMessage;\n }) {\n await this._sendMessage({\n author,\n recipient,\n payload: {\n type_url: 'dxos.mesh.swarm.SwarmMessage',\n value: schema.getCodecForType('dxos.mesh.swarm.SwarmMessage').encode(message)\n }\n });\n }\n\n private async _resolveAnswers(message: SwarmMessage): Promise<void> {\n assert(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 assert(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 assert(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 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 }\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 assert(message.messageId);\n assert(message.data.signal, 'No Signal');\n const signalMessage: SignalMessage = {\n author,\n recipient,\n ...message,\n data: { signal: message.data.signal }\n };\n\n await this._onSignal(signalMessage);\n }\n}\n", "//\n// Copyright 2022 DXOS.org\n//\n\nimport assert from 'node:assert';\n\nimport { synchronized } from '@dxos/async';\nimport { PublicKey } from '@dxos/keys';\nimport { log } from '@dxos/log';\nimport { Answer } from '@dxos/protocols/proto/dxos/mesh/swarm';\n\nimport { OfferMessage, SignalMessage, SignalMessenger } from '../signal';\nimport { TransportFactory } from '../transport';\nimport { WireProtocolProvider } from '../wire-protocol';\nimport { Connection, ConnectionState } from './connection';\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/**\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 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 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 _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 // 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 log.info(\"closing local connection and accepting remote peer's offer\", {\n id: this.id,\n topic: this.topic,\n peerId: this.localPeerId\n });\n\n if (this.connection) {\n // Close our connection and accept remote peer's connection.\n await this.closeConnection();\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 assert(message.sessionId);\n const connection = this._createConnection(false, message.sessionId);\n try {\n connection.openConnection();\n } catch (err: any) {\n log.warn('connection error', { topic: this.topic, peerId: this.localPeerId, remoteId: this.id, err });\n // Calls `onStateChange` with CLOSED state.\n await this.closeConnection();\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 assert(!this.initiating, 'Initiation in progress.');\n assert(!this.connection, 'Already connected.');\n const sessionId = PublicKey.random();\n log('initiating...', { id: this.id, topic: this.topic, peerId: this.id, sessionId });\n const connection = this._createConnection(true, sessionId);\n this.initiating = true;\n\n try {\n const 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\n if (!answer.accept) {\n this._callbacks.onRejected();\n return;\n }\n connection.openConnection();\n this._callbacks.onAccepted();\n } catch (err: any) {\n log.warn('initiation error', { topic: this.topic, peerId: this.localPeerId, remoteId: this.id, err });\n // Calls `onStateChange` with CLOSED state.\n await this.closeConnection();\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 assert(!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 this._callbacks.onInitiated(connection);\n connection.stateChanged.on((state) => {\n switch (state) {\n case ConnectionState.CONNECTED: {\n this._callbacks.onConnected();\n break;\n }\n\n case ConnectionState.CLOSED: {\n log('connection closed', { topic: this.topic, peerId: this.localPeerId, remoteId: this.id, initiator });\n assert(this.connection === connection, 'Connection mismatch (race condition).');\n\n this.connection = undefined;\n this._callbacks.onDisconnected();\n break;\n }\n }\n });\n connection.errors.handle((err) => {\n log.warn('connection error', { topic: this.topic, peerId: this.localPeerId, remoteId: this.id, initiator, err });\n\n // Calls `onStateChange` with CLOSED state.\n void this.closeConnection().catch(() => {\n log.catch(err);\n });\n });\n\n this.connection = connection;\n\n return connection;\n }\n\n async closeConnection() {\n if (!this.connection) {\n return;\n }\n const connection = this.connection;\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();\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 await this.connection.signal(message);\n }\n\n @synchronized\n async destroy() {\n log('Destroying peer', { peerId: this.id, topic: this.topic });\n\n // Won't throw.\n await this?.connection?.close();\n }\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 { PresencePlugin } from '@dxos/protocol-plugin-presence';\nimport { ComplexMap } from '@dxos/util';\n\nimport { ConnectionState } from './connection';\nimport { 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 // prettier-ignore\n constructor(\n private readonly _swarm: Swarm,\n private readonly _presence: PresencePlugin | undefined\n ) {\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 2020 DXOS.org\n//\n\nimport assert from 'node:assert';\n\nimport { Event } from '@dxos/async';\nimport { PublicKey } from '@dxos/keys';\nimport { log } from '@dxos/log';\nimport { Messenger, SignalManager } from '@dxos/messaging';\nimport { ComplexMap } from '@dxos/util';\n\nimport { ConnectionLog } from './connection-log';\nimport { SignalConnection } from './signal';\nimport { Swarm, SwarmMapper } from './swarm';\nimport { Topology } from './topology';\nimport { TransportFactory } from './transport';\nimport { WireProtocolProvider } from './wire-protocol';\n\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 * Presence plugin for network mapping, if exists.\n */\n // TODO(dmaretskyi): Remove this dependency.\n presence?: any;\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 private 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 _connectionLog?: ConnectionLog;\n\n public readonly topicsUpdated = new Event<void>();\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 // 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 // TODO(burdon): Remove access (Devtools only).\n get signalManager() {\n return this._signalManager;\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 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._signalManager.destroy();\n }\n\n /**\n * Join the swarm.\n */\n // TODO(burdon): Join/Open? Swarm abstraction?\n async joinSwarm({\n topic,\n peerId,\n topology,\n protocolProvider: protocol,\n presence,\n label\n }: SwarmOptions): Promise<SwarmConnection> {\n assert(PublicKey.isPublicKey(topic));\n assert(PublicKey.isPublicKey(peerId));\n assert(topology);\n assert(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(topic, peerId, topology, protocol, this._messenger, this._transportFactory, label);\n swarm.errors.handle((error) => {\n log('swarm error', { error });\n });\n\n this._swarms.set(topic, swarm);\n this._signalConnection.join({ topic, peerId }).catch((error) => log.catch(error));\n this._mappers.set(topic, new SwarmMapper(swarm, presence));\n\n this.topicsUpdated.emit();\n this._connectionLog?.swarmJoined(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) });\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?.swarmLeft(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", "//\n// Copyright 2020 DXOS.org\n//\n\nimport assert from 'node:assert';\n\nimport { discoveryKey } from '@dxos/crypto';\nimport { PublicKey } from '@dxos/keys';\nimport { log } from '@dxos/log';\nimport { Extension, Protocol } from '@dxos/mesh-protocol';\n\ninterface ProtocolFactoryOptions {\n plugins: any[];\n getTopics: () => Buffer[];\n session: Record<string, any>;\n}\n\n/**\n * @deprecated Replaced by WireProtocolProvider.\n */\nexport type MeshProtocolProvider = (params: { channel: Buffer; initiator: boolean }) => Protocol;\n\n/**\n * Returns a function that takes a channel parameter, returns a Protocol object\n * with its context set to channel, plugins from plugins parameter and session\n * set to session parameter.\n *\n * @param plugins array of Protocol plugin objects to add to created Protocol objects\n * @param getTopics retrieve a list of known topic keys to encrypt by public key.\n * @deprecated Use `createProtocolFactory`.\n */\nexport const protocolFactory = ({\n session = {},\n plugins = [],\n getTopics\n}: ProtocolFactoryOptions): MeshProtocolProvider => {\n assert(getTopics);\n\n // eslint-disable-next-line no-unused-vars\n return ({ channel, initiator }) => {\n log('creating protocol');\n const protocol = new Protocol({\n streamOptions: { live: true },\n discoveryToPublicKey: (dk) => {\n const publicKey = getTopics().find((topic) => discoveryKey(topic).equals(dk));\n if (publicKey) {\n protocol.setContext({ topic: PublicKey.stringify(publicKey) });\n }\n\n assert(publicKey, 'PublicKey not found in discovery.');\n return publicKey;\n },\n initiator,\n userSession: session,\n discoveryKey: channel\n });\n\n protocol.setExtensions(plugins.map((plugin) => plugin.createExtension())).init();\n return protocol;\n };\n};\n\nexport interface Plugin {\n createExtension: () => Extension;\n}\n\nexport const createProtocolFactory = (topic: PublicKey, peerId: PublicKey, plugins: Plugin[]) =>\n protocolFactory({\n getTopics: () => [topic.asBuffer()],\n session: { peerId: PublicKey.stringify(peerId.asBuffer()) },\n plugins\n });\n\n/**\n * Creates a ProtocolProvider for simple transport connections with only one protocol plugin.\n * @deprecated Use `createProtocolFactory`.\n */\nexport const transportProtocolProvider = (\n rendezvousKey: Buffer,\n peerId: Buffer,\n protocolPlugin: any\n): MeshProtocolProvider => {\n return protocolFactory({\n getTopics: () => [rendezvousKey],\n session: { peerId: PublicKey.stringify(peerId) },\n plugins: [protocolPlugin]\n });\n};\n", "//\n// Copyright 2020 DXOS.org\n//\n\nimport assert from 'node:assert';\n\nimport { PublicKey } from '@dxos/keys';\n\nimport { SwarmController, 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 assert(!this._controller, 'Already initialized');\n this._controller = controller;\n }\n\n update(): void {\n assert(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 assert from 'node:assert';\nimport distance from 'xor-distance';\n\nimport { PublicKey } from '@dxos/keys';\nimport { log } from '@dxos/log';\n\nimport { SwarmController, Topology } from './topology';\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 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 assert(!this._controller, 'Already initialized');\n this._controller = controller;\n }\n\n update(): void {\n assert(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 assert(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 assert(this._controller, 'Not initialized');\n const { connected, candidates, ownPeerId } = this._controller.getState();\n\n if (connected.length > this._maxPeers) {\n // Disconnect extra peers.\n const sorted = sortByXorDistance(connected, ownPeerId)\n .reverse()\n .slice(0, this._maxPeers - connected.length);\n for (const peer of sorted) {\n log(`Disconnect ${peer}.`);\n this._controller.disconnect(peer);\n }\n } else if (connected.length < this._originateConnections) {\n // Connect new peers to reach desired quota.\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 for (const peer of sorted) {\n log(`Connect ${peer}.`);\n this._controller.connect(peer);\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 assert from 'node:assert';\n\nimport { PublicKey } from '@dxos/keys';\nimport { log } from '@dxos/log';\n\nimport { SwarmController, Topology } from './topology';\n\nexport class StarTopology implements Topology {\n private _controller?: SwarmController;\n\n // prettier-ignore\n constructor(\n private readonly _centralPeer: PublicKey\n ) {}\n\n toString() {\n return `StarTopology(${this._centralPeer.truncate()})`;\n }\n\n init(controller: SwarmController): void {\n assert(!this._controller, 'Already initialized.');\n this._controller = controller;\n }\n\n update(): void {\n assert(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 assert(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 assert from 'node:assert';\nimport { Transform } from 'node:stream';\n\nimport { Event, Trigger } from '@dxos/async';\nimport { ErrorStream } from '@dxos/debug';\nimport { PublicKey } from '@dxos/keys';\nimport { log } from '@dxos/log';\nimport { Signal } from '@dxos/protocols/proto/dxos/mesh/swarm';\nimport { ComplexMap } from '@dxos/util';\n\nimport { Transport, TransportFactory, TransportOptions } 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 private readonly _id = PublicKey.random(); // TODO(burdon): Rename peerId? (Use local/remote labels in logs).\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 private _remoteId!: PublicKey;\n private _remoteConnection?: MemoryTransport;\n\n constructor(private readonly options: TransportOptions) {\n log('creating', { id: this._id });\n\n assert(!MemoryTransport._connections.has(this._id), 'Duplicate memory connection');\n MemoryTransport._connections.set(this._id, 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', { transportId: this._id });\n void this.options.sendSignal({\n payload: { transportId: this._id.toHex() }\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._remoteId = remoteId;\n this._remoteConnection = MemoryTransport._connections.get(this._remoteId);\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 assert(!this._remoteConnection._remoteConnection, new Error(`Remote already connected: ${this._remoteId}`));\n this._remoteConnection._remoteConnection = this;\n this._remoteConnection._remoteId = this._id;\n\n log('connected', { id: this._id, remote: this._remoteId });\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', { id: this._id });\n this._destroyed = true;\n\n MemoryTransport._connections.delete(this._id);\n if (this._remoteConnection) {\n log('closing', { id: this._remoteId });\n this._remoteConnection._destroyed = true;\n MemoryTransport._connections.delete(this._remoteId);\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._outgoingDelay.unpipe();\n this._incomingDelay.unpipe();\n\n this._remoteConnection.closed.emit();\n this._remoteConnection._remoteConnection = undefined;\n this._remoteConnection = undefined;\n log('closed', { id: this._remoteId });\n }\n\n this.closed.emit();\n log('closed', { id: this._id });\n }\n\n signal(signal: Signal) {\n const { payload: json } = signal;\n if (json && json.transportId) {\n // TODO(burdon): Check open?\n const transportId = json.transportId as string;\n if (transportId) {\n const remoteId = PublicKey.fromHex(transportId);\n log('received signal', { id: this._id, remoteId });\n this._remote.wake(remoteId);\n }\n }\n }\n}\n", "//\n// Copyright 2020 DXOS.org\n//\n\nimport assert from 'node:assert';\nimport SimplePeerConstructor, { Instance as SimplePeer } from 'simple-peer';\n\nimport { Event } from '@dxos/async';\nimport { ErrorStream, raise } from '@dxos/debug';\nimport { log } from '@dxos/log';\nimport { Signal } from '@dxos/protocols/proto/dxos/mesh/swarm';\n\nimport { Transport, TransportFactory } from './transport';\nimport { wrtc } from './webrtc';\n\nexport type WebRTCTransportParams = {\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 WebRTCTransport implements Transport {\n private readonly _peer: SimplePeer;\n\n readonly closed = new Event();\n readonly connected = new Event();\n readonly errors = new ErrorStream();\n\n constructor(private readonly params: WebRTCTransportParams) {\n log('created connection', params);\n this._peer = new SimplePeerConstructor({\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.connected.emit();\n });\n\n this._peer.on('close', async () => {\n log('closed');\n await this._disconnectStreams();\n this.closed.emit();\n });\n\n this._peer.on('error', async (err) => {\n this.errors.raise(err);\n await this.destroy();\n });\n }\n\n async destroy() {\n log('closing...');\n await this._disconnectStreams();\n this._peer!.destroy();\n this.closed.emit();\n log('closed');\n }\n\n signal(signal: Signal) {\n assert(this._peer, 'Connection not ready to accept signals.');\n assert(signal.payload.data, 'Signal message must contain signal data.');\n this._peer.signal(signal.payload.data);\n }\n\n private async _disconnectStreams() {\n // TODO(rzadp): Find a way of unpiping this?\n this.params.stream.unpipe?.(this._peer)?.unpipe?.(this.params.stream);\n }\n}\n\n// TODO(dmaretskyi): Convert to class.\nexport const createWebRTCTransportFactory = (webrtcConfig?: any): TransportFactory => ({\n createTransport: (params) =>\n new WebRTCTransport({\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 assert from 'node:assert';\nimport { Duplex } from 'node:stream';\n\nimport { Stream } from '@dxos/codec-protobuf';\nimport { PublicKey } from '@dxos/keys';\nimport { log } from '@dxos/log';\nimport {\n BridgeService,\n ConnectionRequest,\n SignalRequest,\n DataRequest,\n BridgeEvent,\n ConnectionState,\n CloseRequest\n} from '@dxos/protocols/proto/dxos/mesh/bridge';\nimport { ComplexMap } from '@dxos/util';\n\nimport { WebRTCTransport } from './webrtc-transport';\n\nexport class WebRTCTransportService implements BridgeService {\n private readonly transports = new ComplexMap<PublicKey, { transport: WebRTCTransport; stream: Duplex }>(\n PublicKey.hash\n );\n\n // prettier-ignore\n constructor(\n private readonly _webrtcConfig?: any\n ) {}\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 write: function (chunk, _, callback) {\n next({ data: { payload: chunk } });\n callback();\n }\n });\n\n const transport = new WebRTCTransport({\n initiator: request.initiator,\n stream: duplex,\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 ready();\n this.transports.set(request.proxyId, { transport, stream: duplex });\n });\n\n return rpcStream;\n }\n\n async sendSignal({ proxyId, signal }: SignalRequest): Promise<void> {\n assert(this.transports.has(proxyId));\n await this.transports.get(proxyId)!.transport.signal(signal);\n }\n\n async sendData({ proxyId, payload }: DataRequest): Promise<void> {\n assert(this.transports.has(proxyId));\n await this.transports.get(proxyId)!.stream.push(payload);\n }\n\n async close({ proxyId }: CloseRequest) {\n await this.transports.get(proxyId)?.transport.destroy();\n await this.transports.get(proxyId)?.stream.end();\n this.transports.delete(proxyId);\n log('Closed.');\n }\n}\n", "//\n// Copyright 2022 DXOS.org\n//\n\nimport assert from 'node:assert';\n\nimport { Event } from '@dxos/async';\nimport { Stream } from '@dxos/codec-protobuf';\nimport { ErrorStream } from '@dxos/debug';\nimport { PublicKey } from '@dxos/keys';\nimport { log } from '@dxos/log';\nimport { ConnectionState, BridgeEvent, BridgeService } from '@dxos/protocols/proto/dxos/mesh/bridge';\nimport { Signal } from '@dxos/protocols/proto/dxos/mesh/swarm';\n\nimport { Transport, TransportFactory, TransportOptions } from './transport';\n\nexport type WebRTCTransportProxyParams = {\n initiator: boolean;\n stream: NodeJS.ReadWriteStream;\n bridgeService: BridgeService;\n sendSignal: (signal: Signal) => Promise<void>;\n};\n\nexport class WebRTCTransportProxy implements Transport {\n readonly closed = new Event();\n private _closed = false;\n readonly connected = new Event();\n\n readonly errors = new ErrorStream();\n\n private _serviceStream!: Stream<BridgeEvent>;\n private readonly _proxyId = PublicKey.random();\n\n // prettier-ignore\n constructor(\n private readonly _params: WebRTCTransportProxyParams\n ) {\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('WebRTCTransportProxy: 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 this._params.stream.on('data', async (data: Uint8Array) => {\n try {\n await this._params.bridgeService.sendData({\n proxyId: this._proxyId,\n payload: data\n });\n } catch (err: any) {\n log.catch(err);\n }\n });\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(new Error(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(Buffer.from(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(err));\n }\n\n // TODO(burdon): Move open from constructor.\n async destroy(): Promise<void> {\n if (this._closed) {\n return;\n }\n\n 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 this._serviceStream.close();\n this.closed.emit();\n this._closed = true;\n }\n}\n\n// TODO(burdon): Why is this named Proxy?\nexport class WebRTCTransportProxyFactory implements TransportFactory {\n private _bridgeService: BridgeService | undefined;\n private _connections = new Set<WebRTCTransportProxy>();\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 assert(this._bridgeService, 'WebRTCTransportProxyFactory is not ready to open connections');\n\n const transport = new WebRTCTransportProxy({\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// Copyright 2022 DXOS.org\n//\n\nimport { Duplex } from 'node:stream';\n\nimport { discoveryKey } from '@dxos/crypto';\nimport { PublicKey } from '@dxos/keys';\nimport { Protocol } from '@dxos/mesh-protocol';\nimport { Teleport } from '@dxos/teleport';\n\nimport { MeshProtocolProvider } from './protocol-factory';\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 /**\n * @deprecated Only for devtools comapatibility.\n */\n protocol?: Protocol;\n\n initialize(): Promise<void>;\n destroy(): Promise<void>;\n}\n\n/**\n * @deprecated\n */\nexport const adaptProtocolProvider =\n (factory: MeshProtocolProvider): WireProtocolProvider =>\n ({ initiator, localPeerId, remotePeerId, topic }) => {\n const protocol = factory({ channel: discoveryKey(topic), initiator });\n return {\n initialize: () => protocol.open(),\n destroy: () => protocol.close(),\n stream: protocol.stream,\n protocol\n };\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 initialize: async () => {\n await teleport.open();\n await onConnection(teleport);\n },\n destroy: async () => {\n await teleport.close();\n }\n };\n };\n};\n"],
5
- "mappings": "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",
5
+ "mappings": "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",
6
6
  "names": ["import_async", "import_debug", "import_keys", "import_util", "ConnectionState", "INITIAL", "CONNECTING", "CONNECTED", "CLOSED", "Connection", "constructor", "topic", "ownId", "remoteId", "sessionId", "initiator", "_signalMessaging", "_protocol", "_transportFactory", "_state", "_bufferedSignals", "stateChanged", "Event", "errors", "ErrorStream", "state", "transport", "_transport", "protocol", "openConnection", "assert", "_changeState", "initialize", "catch", "err", "raise", "createTransport", "stream", "sendSignal", "signal", "author", "recipient", "data", "connected", "once", "closed", "undefined", "close", "pipeTo", "log", "peerId", "destroy", "msg", "equals", "push", "emit", "synchronized", "import_node_assert", "import_async", "import_debug", "import_keys", "import_log", "import_util", "import_node_assert", "import_log", "MessageRouter", "constructor", "sendMessage", "onSignal", "onOffer", "topic", "_offerRecords", "ComplexMap", "key", "toHex", "_sendMessage", "_onSignal", "_onOffer", "_topic", "receiveMessage", "author", "recipient", "payload", "type_url", "message", "schema", "getCodecForType", "decode", "value", "equals", "log", "from", "to", "msg", "data", "offer", "_handleOffer", "answer", "_resolveAnswers", "signal", "_handleSignal", "assert", "_sendReliableMessage", "networkMessage", "messageId", "PublicKey", "random", "Promise", "resolve", "reject", "set", "_encodeAndSend", "encode", "offerMessageId", "offerRecord", "get", "delete", "offerMessage", "sessionId", "signalMessage", "import_node_assert", "import_async", "import_keys", "import_log", "__decorate", "Peer", "constructor", "id", "topic", "localPeerId", "_signalMessaging", "_protocolProvider", "_transportFactory", "_callbacks", "advertizing", "initiating", "onOffer", "message", "remoteId", "author", "connection", "toHex", "log", "info", "peerId", "closeConnection", "accept", "assert", "sessionId", "_createConnection", "openConnection", "err", "warn", "initiateConnection", "PublicKey", "random", "answer", "offer", "recipient", "data", "ownId", "state", "ConnectionState", "INITIAL", "onRejected", "onAccepted", "initiator", "Connection", "remotePeerId", "onInitiated", "stateChanged", "on", "CONNECTED", "onConnected", "CLOSED", "undefined", "onDisconnected", "errors", "handle", "catch", "close", "onSignal", "signal", "destroy", "synchronized", "__decorate", "INITIATION_DELAY", "getClassName", "obj", "Object", "getPrototypeOf", "constructor", "name", "Swarm", "_topic", "_ownPeerId", "_topology", "_protocolProvider", "_messenger", "_transportFactory", "_label", "_peers", "ComplexMap", "PublicKey", "hash", "_ctx", "Context", "connectionAdded", "Event", "disconnected", "connected", "errors", "ErrorStream", "instanceId", "random", "log", "peerId", "init", "_getSwarmController", "_swarmMessenger", "MessageRouter", "sendMessage", "msg", "onSignal", "onOffer", "topic", "listen", "payloadType", "onMessage", "message", "receiveMessage", "catch", "error", "connections", "Array", "from", "values", "map", "peer", "connection", "filter", "isNotNullOrUndefined", "ownPeerId", "label", "destroy", "dispose", "Promise", "all", "keys", "key", "_destroyPeer", "setTopology", "topology", "previous", "update", "_getOrCreatePeer", "get", "Peer", "onInitiated", "emit", "onConnected", "onDisconnected", "advertizing", "id", "onRejected", "has", "onAccepted", "remoteId", "set", "assert", "delete", "onSwarmEvent", "swarmEvent", "disposed", "warn", "peerAvailable", "equals", "peerLeft", "info", "accept", "author", "recipient", "answer", "getState", "candidates", "connect", "scheduleTask", "_initiateConnection", "err", "disconnect", "_closeConnection", "toHex", "sleep", "initiateConnection", "closeConnection", "logInfo", "import_async", "import_keys", "import_log", "import_util", "SwarmMapper", "peers", "Array", "from", "_peers", "values", "constructor", "_swarm", "_presence", "_subscriptions", "EventSubscriptions", "_connectionSubscriptions", "ComplexMap", "PublicKey", "hash", "mapUpdated", "Event", "add", "connectionAdded", "on", "connection", "_update", "set", "remoteId", "stateChanged", "disconnected", "peerId", "get", "delete", "graphUpdated", "log", "clear", "ownPeerId", "id", "state", "connections", "graph", "forEachNode", "node", "fromHex", "has", "forEachLink", "link", "fromId", "to", "toId", "equals", "push", "directConnections", "length", "totalPeersInSwarm", "size", "emit", "destroy", "forEach", "cb", "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", "swarmJoined", "swarm", "info", "id", "instanceId", "topic", "isActive", "label", "connections", "set", "emit", "connectionAdded", "on", "connection", "connectionInfo", "state", "ConnectionState", "INITIAL", "remotePeerId", "remoteId", "sessionId", "transport", "Object", "getPrototypeOf", "constructor", "name", "protocolExtensions", "protocol", "extensionNames", "events", "push", "stateChanged", "type", "newState", "error", "_a", "stack", "message", "extensionsInitialized", "extensionsHandshake", "handshake", "swarmLeft", "import_node_assert", "import_async", "import_keys", "import_log", "import_util", "NetworkManager", "constructor", "transportFactory", "signalManager", "log", "_swarms", "ComplexMap", "PublicKey", "hash", "_mappers", "topicsUpdated", "Event", "_transportFactory", "_signalManager", "swarmEvent", "on", "topic", "event", "get", "onSwarmEvent", "_messenger", "Messenger", "_signalConnection", "join", "opts", "leave", "_connectionLog", "ConnectionLog", "connectionLog", "topics", "Array", "from", "keys", "getSwarmMap", "getSwarm", "close", "leaveSwarm", "catch", "err", "destroy", "joinSwarm", "peerId", "topology", "protocolProvider", "protocol", "presence", "label", "assert", "isPublicKey", "has", "Error", "toString", "swarm", "Swarm", "errors", "handle", "error", "set", "SwarmMapper", "emit", "swarmJoined", "count", "size", "warn", "ownPeerId", "map", "delete", "swarmLeft", "import_node_assert", "import_keys", "import_log", "protocolFactory", "session", "plugins", "getTopics", "assert", "channel", "initiator", "log", "protocol", "Protocol", "streamOptions", "live", "discoveryToPublicKey", "dk", "publicKey", "find", "topic", "discoveryKey", "equals", "setContext", "PublicKey", "stringify", "userSession", "setExtensions", "map", "plugin", "createExtension", "init", "createProtocolFactory", "peerId", "asBuffer", "transportProtocolProvider", "rendezvousKey", "protocolPlugin", "import_node_assert", "FullyConnectedTopology", "toString", "init", "controller", "assert", "_controller", "update", "candidates", "discovered", "getState", "peer", "connect", "onOffer", "destroy", "import_node_assert", "import_log", "MMSTTopology", "constructor", "originateConnections", "maxPeers", "sampleSize", "_sampleCollected", "_originateConnections", "_maxPeers", "_sampleSize", "init", "controller", "assert", "_controller", "update", "connected", "candidates", "getState", "length", "log", "_runAlgorithm", "onOffer", "peer", "accept", "destroy", "ownPeerId", "sorted", "sortByXorDistance", "reverse", "slice", "disconnect", "sample", "sort", "Math", "random", "connect", "toString", "keys", "reference", "a", "b", "distance", "gt", "asBuffer", "import_node_assert", "import_log", "StarTopology", "constructor", "_centralPeer", "toString", "truncate", "init", "controller", "assert", "_controller", "update", "candidates", "connected", "ownPeerId", "getState", "equals", "log", "peer", "disconnect", "connect", "onOffer", "isCentral", "isSelfCentral", "destroy", "import_node_assert", "import_async", "import_debug", "import_keys", "import_log", "import_util", "MEMORY_TRANSPORT_DELAY", "createStreamDelay", "delay", "Transform", "objectMode", "transform", "chunk", "_", "cb", "setTimeout", "MemoryTransportFactory", "createTransport", "params", "MemoryTransport", "constructor", "options", "closed", "Event", "connected", "errors", "ErrorStream", "_id", "PublicKey", "random", "_remote", "Trigger", "_outgoingDelay", "_incomingDelay", "_destroyed", "log", "id", "assert", "_connections", "has", "set", "initiator", "transportId", "sendSignal", "payload", "toHex", "wait", "timeout", "then", "remoteId", "_remoteId", "_remoteConnection", "get", "emit", "Error", "remote", "stream", "pipe", "catch", "err", "raise", "destroy", "delete", "unpipe", "undefined", "signal", "json", "fromHex", "wake", "ComplexMap", "hash", "import_node_assert", "import_async", "import_debug", "import_log", "wrtc", "require", "WebRTCTransport", "constructor", "params", "closed", "Event", "connected", "errors", "ErrorStream", "log", "_peer", "SimplePeerConstructor", "initiator", "wrtc", "WEBRTC_SUPPORT", "undefined", "raise", "Error", "config", "webrtcConfig", "on", "data", "sendSignal", "payload", "stream", "pipe", "emit", "_disconnectStreams", "err", "destroy", "signal", "assert", "unpipe", "createWebRTCTransportFactory", "createTransport", "import_node_assert", "import_node_stream", "import_keys", "import_log", "import_util", "WebRTCTransportService", "constructor", "_webrtcConfig", "transports", "ComplexMap", "PublicKey", "hash", "open", "request", "rpcStream", "Stream", "ready", "next", "close", "duplex", "Duplex", "read", "write", "chunk", "_", "callback", "data", "payload", "transport", "WebRTCTransport", "initiator", "stream", "sendSignal", "signal", "connection", "state", "ConnectionState", "CONNECTING", "connected", "on", "CONNECTED", "errors", "handle", "err", "CLOSED", "error", "toString", "closed", "set", "proxyId", "assert", "has", "get", "sendData", "push", "destroy", "end", "delete", "log", "import_node_assert", "import_async", "import_debug", "import_keys", "import_log", "import_bridge", "WebRTCTransportProxy", "constructor", "_params", "closed", "Event", "_closed", "connected", "errors", "ErrorStream", "_proxyId", "PublicKey", "random", "_serviceStream", "bridgeService", "open", "proxyId", "initiator", "waitUntilReady", "then", "subscribe", "event", "log", "connection", "_handleConnection", "data", "_handleData", "signal", "_handleSignal", "stream", "on", "sendData", "payload", "err", "catch", "error", "connectionEvent", "raise", "Error", "state", "ConnectionState", "CONNECTED", "emit", "CLOSED", "destroy", "dataEvent", "write", "Buffer", "from", "signalEvent", "sendSignal", "close", "forceClose", "WebRTCTransportProxyFactory", "_connections", "Set", "setBridgeService", "_bridgeService", "createTransport", "options", "assert", "transport", "add", "delete", "import_crypto", "adaptProtocolProvider", "factory", "initiator", "localPeerId", "remotePeerId", "topic", "protocol", "channel", "discoveryKey", "initialize", "open", "destroy", "close", "stream", "createTeleportProtocolFactory", "onConnection", "params", "teleport", "Teleport"]
7
7
  }
@@ -1 +1 @@
1
- {"inputs":{"packages/core/mesh/network-manager/src/swarm/connection.ts":{"bytes":19345,"imports":[]},"packages/core/mesh/network-manager/src/signal/message-router.ts":{"bytes":18604,"imports":[]},"packages/core/mesh/network-manager/src/signal/signal-connection.ts":{"bytes":1040,"imports":[]},"packages/core/mesh/network-manager/src/signal/signal-messenger.ts":{"bytes":1436,"imports":[]},"packages/core/mesh/network-manager/src/signal/index.ts":{"bytes":711,"imports":[{"path":"packages/core/mesh/network-manager/src/signal/message-router.ts","kind":"import-statement"},{"path":"packages/core/mesh/network-manager/src/signal/signal-connection.ts","kind":"import-statement"},{"path":"packages/core/mesh/network-manager/src/signal/signal-messenger.ts","kind":"import-statement"}]},"packages/core/mesh/network-manager/src/swarm/peer.ts":{"bytes":28664,"imports":[{"path":"packages/core/mesh/network-manager/src/swarm/connection.ts","kind":"import-statement"}]},"packages/core/mesh/network-manager/src/swarm/swarm.ts":{"bytes":38970,"imports":[{"path":"packages/core/mesh/network-manager/src/signal/index.ts","kind":"import-statement"},{"path":"packages/core/mesh/network-manager/src/swarm/peer.ts","kind":"import-statement"}]},"packages/core/mesh/network-manager/src/swarm/swarm-mapper.ts":{"bytes":12888,"imports":[]},"packages/core/mesh/network-manager/src/swarm/index.ts":{"bytes":659,"imports":[{"path":"packages/core/mesh/network-manager/src/swarm/connection.ts","kind":"import-statement"},{"path":"packages/core/mesh/network-manager/src/swarm/swarm.ts","kind":"import-statement"},{"path":"packages/core/mesh/network-manager/src/swarm/swarm-mapper.ts","kind":"import-statement"}]},"packages/core/mesh/network-manager/src/connection-log.ts":{"bytes":11783,"imports":[{"path":"packages/core/mesh/network-manager/src/swarm/index.ts","kind":"import-statement"}]},"packages/core/mesh/network-manager/src/network-manager.ts":{"bytes":19386,"imports":[{"path":"packages/core/mesh/network-manager/src/connection-log.ts","kind":"import-statement"},{"path":"packages/core/mesh/network-manager/src/swarm/index.ts","kind":"import-statement"}]},"packages/core/mesh/network-manager/src/protocol-factory.ts":{"bytes":8502,"imports":[]},"packages/core/mesh/network-manager/src/topology/fully-connected-topology.ts":{"bytes":3023,"imports":[]},"packages/core/mesh/network-manager/src/topology/mmst-topology.ts":{"bytes":11622,"imports":[]},"packages/core/mesh/network-manager/src/topology/star-topology.ts":{"bytes":7788,"imports":[]},"packages/core/mesh/network-manager/src/topology/topology.ts":{"bytes":2132,"imports":[]},"packages/core/mesh/network-manager/src/topology/index.ts":{"bytes":810,"imports":[{"path":"packages/core/mesh/network-manager/src/topology/fully-connected-topology.ts","kind":"import-statement"},{"path":"packages/core/mesh/network-manager/src/topology/mmst-topology.ts","kind":"import-statement"},{"path":"packages/core/mesh/network-manager/src/topology/star-topology.ts","kind":"import-statement"},{"path":"packages/core/mesh/network-manager/src/topology/topology.ts","kind":"import-statement"}]},"packages/core/mesh/network-manager/src/transport/memory-transport.ts":{"bytes":20562,"imports":[]},"packages/core/mesh/network-manager/src/transport/transport.ts":{"bytes":1596,"imports":[]},"packages/core/mesh/network-manager/src/transport/webrtc.ts":{"bytes":1148,"imports":[]},"packages/core/mesh/network-manager/src/transport/webrtc-transport.ts":{"bytes":10429,"imports":[{"path":"packages/core/mesh/network-manager/src/transport/webrtc.ts","kind":"import-statement"}]},"packages/core/mesh/network-manager/src/transport/webrtc-transport-service.ts":{"bytes":10580,"imports":[{"path":"packages/core/mesh/network-manager/src/transport/webrtc-transport.ts","kind":"import-statement"}]},"packages/core/mesh/network-manager/src/transport/webrtc-transport-proxy.ts":{"bytes":16644,"imports":[]},"packages/core/mesh/network-manager/src/transport/index.ts":{"bytes":951,"imports":[{"path":"packages/core/mesh/network-manager/src/transport/memory-transport.ts","kind":"import-statement"},{"path":"packages/core/mesh/network-manager/src/transport/transport.ts","kind":"import-statement"},{"path":"packages/core/mesh/network-manager/src/transport/webrtc-transport.ts","kind":"import-statement"},{"path":"packages/core/mesh/network-manager/src/transport/webrtc-transport-service.ts","kind":"import-statement"},{"path":"packages/core/mesh/network-manager/src/transport/webrtc-transport-proxy.ts","kind":"import-statement"}]},"packages/core/mesh/network-manager/src/types.ts":{"bytes":540,"imports":[]},"packages/core/mesh/network-manager/src/wire-protocol.ts":{"bytes":5302,"imports":[]},"packages/core/mesh/network-manager/src/index.ts":{"bytes":1223,"imports":[{"path":"packages/core/mesh/network-manager/src/connection-log.ts","kind":"import-statement"},{"path":"packages/core/mesh/network-manager/src/network-manager.ts","kind":"import-statement"},{"path":"packages/core/mesh/network-manager/src/protocol-factory.ts","kind":"import-statement"},{"path":"packages/core/mesh/network-manager/src/signal/index.ts","kind":"import-statement"},{"path":"packages/core/mesh/network-manager/src/swarm/index.ts","kind":"import-statement"},{"path":"packages/core/mesh/network-manager/src/topology/index.ts","kind":"import-statement"},{"path":"packages/core/mesh/network-manager/src/transport/index.ts","kind":"import-statement"},{"path":"packages/core/mesh/network-manager/src/types.ts","kind":"import-statement"},{"path":"packages/core/mesh/network-manager/src/wire-protocol.ts","kind":"import-statement"}]},"packages/core/mesh/network-manager/src/testing/test-protocol.ts":{"bytes":18746,"imports":[{"path":"packages/core/mesh/network-manager/src/protocol-factory.ts","kind":"import-statement"}]},"packages/core/mesh/network-manager/src/testing/test-builder.ts":{"bytes":18208,"imports":[{"path":"packages/core/mesh/network-manager/src/network-manager.ts","kind":"import-statement"},{"path":"packages/core/mesh/network-manager/src/topology/index.ts","kind":"import-statement"},{"path":"packages/core/mesh/network-manager/src/transport/index.ts","kind":"import-statement"},{"path":"packages/core/mesh/network-manager/src/wire-protocol.ts","kind":"import-statement"},{"path":"packages/core/mesh/network-manager/src/testing/test-protocol.ts","kind":"import-statement"}]},"packages/core/mesh/network-manager/src/testing/index.ts":{"bytes":589,"imports":[{"path":"packages/core/mesh/network-manager/src/testing/test-builder.ts","kind":"import-statement"},{"path":"packages/core/mesh/network-manager/src/testing/test-protocol.ts","kind":"import-statement"}]}},"outputs":{"packages/core/mesh/network-manager/dist/lib/node/index.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":115246},"packages/core/mesh/network-manager/dist/lib/node/index.cjs":{"imports":[],"exports":[],"entryPoint":"packages/core/mesh/network-manager/src/index.ts","inputs":{"packages/core/mesh/network-manager/src/index.ts":{"bytesInOutput":1161},"packages/core/mesh/network-manager/src/connection-log.ts":{"bytesInOutput":3149},"packages/core/mesh/network-manager/src/swarm/connection.ts":{"bytesInOutput":6052},"packages/core/mesh/network-manager/src/swarm/index.ts":{"bytesInOutput":0},"packages/core/mesh/network-manager/src/swarm/swarm.ts":{"bytesInOutput":12122},"packages/core/mesh/network-manager/src/signal/message-router.ts":{"bytesInOutput":5013},"packages/core/mesh/network-manager/src/signal/index.ts":{"bytesInOutput":0},"packages/core/mesh/network-manager/src/swarm/peer.ts":{"bytesInOutput":9030},"packages/core/mesh/network-manager/src/swarm/swarm-mapper.ts":{"bytesInOutput":3111},"packages/core/mesh/network-manager/src/network-manager.ts":{"bytesInOutput":5410},"packages/core/mesh/network-manager/src/protocol-factory.ts":{"bytesInOutput":1851},"packages/core/mesh/network-manager/src/topology/fully-connected-topology.ts":{"bytesInOutput":605},"packages/core/mesh/network-manager/src/topology/index.ts":{"bytesInOutput":0},"packages/core/mesh/network-manager/src/topology/mmst-topology.ts":{"bytesInOutput":3250},"packages/core/mesh/network-manager/src/topology/star-topology.ts":{"bytesInOutput":2471},"packages/core/mesh/network-manager/src/transport/memory-transport.ts":{"bytesInOutput":5766},"packages/core/mesh/network-manager/src/transport/index.ts":{"bytesInOutput":0},"packages/core/mesh/network-manager/src/transport/webrtc-transport.ts":{"bytesInOutput":3503},"packages/core/mesh/network-manager/src/transport/webrtc.ts":{"bytesInOutput":72},"packages/core/mesh/network-manager/src/transport/webrtc-transport-service.ts":{"bytesInOutput":2889},"packages/core/mesh/network-manager/src/transport/webrtc-transport-proxy.ts":{"bytesInOutput":4264},"packages/core/mesh/network-manager/src/wire-protocol.ts":{"bytesInOutput":807}},"bytes":73637},"packages/core/mesh/network-manager/dist/lib/node/testing/index.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":128345},"packages/core/mesh/network-manager/dist/lib/node/testing/index.cjs":{"imports":[],"exports":[],"entryPoint":"packages/core/mesh/network-manager/src/testing/index.ts","inputs":{"packages/core/mesh/network-manager/src/testing/index.ts":{"bytesInOutput":389},"packages/core/mesh/network-manager/src/testing/test-builder.ts":{"bytesInOutput":3808},"packages/core/mesh/network-manager/src/network-manager.ts":{"bytesInOutput":5410},"packages/core/mesh/network-manager/src/connection-log.ts":{"bytesInOutput":3149},"packages/core/mesh/network-manager/src/swarm/connection.ts":{"bytesInOutput":6052},"packages/core/mesh/network-manager/src/swarm/index.ts":{"bytesInOutput":0},"packages/core/mesh/network-manager/src/swarm/swarm.ts":{"bytesInOutput":12122},"packages/core/mesh/network-manager/src/signal/message-router.ts":{"bytesInOutput":5013},"packages/core/mesh/network-manager/src/signal/index.ts":{"bytesInOutput":0},"packages/core/mesh/network-manager/src/swarm/peer.ts":{"bytesInOutput":9030},"packages/core/mesh/network-manager/src/swarm/swarm-mapper.ts":{"bytesInOutput":3111},"packages/core/mesh/network-manager/src/topology/fully-connected-topology.ts":{"bytesInOutput":605},"packages/core/mesh/network-manager/src/topology/index.ts":{"bytesInOutput":0},"packages/core/mesh/network-manager/src/topology/mmst-topology.ts":{"bytesInOutput":100},"packages/core/mesh/network-manager/src/topology/star-topology.ts":{"bytesInOutput":40},"packages/core/mesh/network-manager/src/transport/memory-transport.ts":{"bytesInOutput":5754},"packages/core/mesh/network-manager/src/transport/index.ts":{"bytesInOutput":0},"packages/core/mesh/network-manager/src/transport/webrtc-transport.ts":{"bytesInOutput":3350},"packages/core/mesh/network-manager/src/transport/webrtc.ts":{"bytesInOutput":72},"packages/core/mesh/network-manager/src/transport/webrtc-transport-service.ts":{"bytesInOutput":2886},"packages/core/mesh/network-manager/src/transport/webrtc-transport-proxy.ts":{"bytesInOutput":4262},"packages/core/mesh/network-manager/src/wire-protocol.ts":{"bytesInOutput":429},"packages/core/mesh/network-manager/src/testing/test-protocol.ts":{"bytesInOutput":4656},"packages/core/mesh/network-manager/src/protocol-factory.ts":{"bytesInOutput":1361}},"bytes":74690}}}
1
+ {"inputs":{"packages/core/mesh/network-manager/src/swarm/connection.ts":{"bytes":19345,"imports":[]},"packages/core/mesh/network-manager/src/signal/message-router.ts":{"bytes":18604,"imports":[]},"packages/core/mesh/network-manager/src/signal/signal-connection.ts":{"bytes":1040,"imports":[]},"packages/core/mesh/network-manager/src/signal/signal-messenger.ts":{"bytes":1436,"imports":[]},"packages/core/mesh/network-manager/src/signal/index.ts":{"bytes":711,"imports":[{"path":"packages/core/mesh/network-manager/src/signal/message-router.ts","kind":"import-statement"},{"path":"packages/core/mesh/network-manager/src/signal/signal-connection.ts","kind":"import-statement"},{"path":"packages/core/mesh/network-manager/src/signal/signal-messenger.ts","kind":"import-statement"}]},"packages/core/mesh/network-manager/src/swarm/peer.ts":{"bytes":28664,"imports":[{"path":"packages/core/mesh/network-manager/src/swarm/connection.ts","kind":"import-statement"}]},"packages/core/mesh/network-manager/src/swarm/swarm.ts":{"bytes":38970,"imports":[{"path":"packages/core/mesh/network-manager/src/signal/index.ts","kind":"import-statement"},{"path":"packages/core/mesh/network-manager/src/swarm/peer.ts","kind":"import-statement"}]},"packages/core/mesh/network-manager/src/swarm/swarm-mapper.ts":{"bytes":12888,"imports":[]},"packages/core/mesh/network-manager/src/swarm/index.ts":{"bytes":659,"imports":[{"path":"packages/core/mesh/network-manager/src/swarm/connection.ts","kind":"import-statement"},{"path":"packages/core/mesh/network-manager/src/swarm/swarm.ts","kind":"import-statement"},{"path":"packages/core/mesh/network-manager/src/swarm/swarm-mapper.ts","kind":"import-statement"}]},"packages/core/mesh/network-manager/src/connection-log.ts":{"bytes":11783,"imports":[{"path":"packages/core/mesh/network-manager/src/swarm/index.ts","kind":"import-statement"}]},"packages/core/mesh/network-manager/src/network-manager.ts":{"bytes":19386,"imports":[{"path":"packages/core/mesh/network-manager/src/connection-log.ts","kind":"import-statement"},{"path":"packages/core/mesh/network-manager/src/swarm/index.ts","kind":"import-statement"}]},"packages/core/mesh/network-manager/src/protocol-factory.ts":{"bytes":8502,"imports":[]},"packages/core/mesh/network-manager/src/topology/fully-connected-topology.ts":{"bytes":3023,"imports":[]},"packages/core/mesh/network-manager/src/topology/mmst-topology.ts":{"bytes":11622,"imports":[]},"packages/core/mesh/network-manager/src/topology/star-topology.ts":{"bytes":7788,"imports":[]},"packages/core/mesh/network-manager/src/topology/topology.ts":{"bytes":2132,"imports":[]},"packages/core/mesh/network-manager/src/topology/index.ts":{"bytes":810,"imports":[{"path":"packages/core/mesh/network-manager/src/topology/fully-connected-topology.ts","kind":"import-statement"},{"path":"packages/core/mesh/network-manager/src/topology/mmst-topology.ts","kind":"import-statement"},{"path":"packages/core/mesh/network-manager/src/topology/star-topology.ts","kind":"import-statement"},{"path":"packages/core/mesh/network-manager/src/topology/topology.ts","kind":"import-statement"}]},"packages/core/mesh/network-manager/src/transport/memory-transport.ts":{"bytes":20562,"imports":[]},"packages/core/mesh/network-manager/src/transport/transport.ts":{"bytes":1596,"imports":[]},"packages/core/mesh/network-manager/src/transport/webrtc.ts":{"bytes":1148,"imports":[]},"packages/core/mesh/network-manager/src/transport/webrtc-transport.ts":{"bytes":10429,"imports":[{"path":"packages/core/mesh/network-manager/src/transport/webrtc.ts","kind":"import-statement"}]},"packages/core/mesh/network-manager/src/transport/webrtc-transport-service.ts":{"bytes":10580,"imports":[{"path":"packages/core/mesh/network-manager/src/transport/webrtc-transport.ts","kind":"import-statement"}]},"packages/core/mesh/network-manager/src/transport/webrtc-transport-proxy.ts":{"bytes":16644,"imports":[]},"packages/core/mesh/network-manager/src/transport/index.ts":{"bytes":951,"imports":[{"path":"packages/core/mesh/network-manager/src/transport/memory-transport.ts","kind":"import-statement"},{"path":"packages/core/mesh/network-manager/src/transport/transport.ts","kind":"import-statement"},{"path":"packages/core/mesh/network-manager/src/transport/webrtc-transport.ts","kind":"import-statement"},{"path":"packages/core/mesh/network-manager/src/transport/webrtc-transport-service.ts","kind":"import-statement"},{"path":"packages/core/mesh/network-manager/src/transport/webrtc-transport-proxy.ts","kind":"import-statement"}]},"packages/core/mesh/network-manager/src/types.ts":{"bytes":540,"imports":[]},"packages/core/mesh/network-manager/src/wire-protocol.ts":{"bytes":5302,"imports":[]},"packages/core/mesh/network-manager/src/index.ts":{"bytes":1223,"imports":[{"path":"packages/core/mesh/network-manager/src/connection-log.ts","kind":"import-statement"},{"path":"packages/core/mesh/network-manager/src/network-manager.ts","kind":"import-statement"},{"path":"packages/core/mesh/network-manager/src/protocol-factory.ts","kind":"import-statement"},{"path":"packages/core/mesh/network-manager/src/signal/index.ts","kind":"import-statement"},{"path":"packages/core/mesh/network-manager/src/swarm/index.ts","kind":"import-statement"},{"path":"packages/core/mesh/network-manager/src/topology/index.ts","kind":"import-statement"},{"path":"packages/core/mesh/network-manager/src/transport/index.ts","kind":"import-statement"},{"path":"packages/core/mesh/network-manager/src/types.ts","kind":"import-statement"},{"path":"packages/core/mesh/network-manager/src/wire-protocol.ts","kind":"import-statement"}]},"packages/core/mesh/network-manager/src/testing/test-protocol.ts":{"bytes":18746,"imports":[{"path":"packages/core/mesh/network-manager/src/protocol-factory.ts","kind":"import-statement"}]},"packages/core/mesh/network-manager/src/testing/test-builder.ts":{"bytes":18208,"imports":[{"path":"packages/core/mesh/network-manager/src/network-manager.ts","kind":"import-statement"},{"path":"packages/core/mesh/network-manager/src/topology/index.ts","kind":"import-statement"},{"path":"packages/core/mesh/network-manager/src/transport/index.ts","kind":"import-statement"},{"path":"packages/core/mesh/network-manager/src/wire-protocol.ts","kind":"import-statement"},{"path":"packages/core/mesh/network-manager/src/testing/test-protocol.ts","kind":"import-statement"}]},"packages/core/mesh/network-manager/src/testing/index.ts":{"bytes":589,"imports":[{"path":"packages/core/mesh/network-manager/src/testing/test-builder.ts","kind":"import-statement"},{"path":"packages/core/mesh/network-manager/src/testing/test-protocol.ts","kind":"import-statement"}]}},"outputs":{"packages/core/mesh/network-manager/dist/lib/node/index.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":115285},"packages/core/mesh/network-manager/dist/lib/node/index.cjs":{"imports":[],"exports":[],"entryPoint":"packages/core/mesh/network-manager/src/index.ts","inputs":{"packages/core/mesh/network-manager/src/index.ts":{"bytesInOutput":1161},"packages/core/mesh/network-manager/src/connection-log.ts":{"bytesInOutput":3149},"packages/core/mesh/network-manager/src/swarm/connection.ts":{"bytesInOutput":6052},"packages/core/mesh/network-manager/src/swarm/index.ts":{"bytesInOutput":0},"packages/core/mesh/network-manager/src/swarm/swarm.ts":{"bytesInOutput":12122},"packages/core/mesh/network-manager/src/signal/message-router.ts":{"bytesInOutput":5013},"packages/core/mesh/network-manager/src/signal/index.ts":{"bytesInOutput":0},"packages/core/mesh/network-manager/src/swarm/peer.ts":{"bytesInOutput":9030},"packages/core/mesh/network-manager/src/swarm/swarm-mapper.ts":{"bytesInOutput":3111},"packages/core/mesh/network-manager/src/network-manager.ts":{"bytesInOutput":5410},"packages/core/mesh/network-manager/src/protocol-factory.ts":{"bytesInOutput":1851},"packages/core/mesh/network-manager/src/topology/fully-connected-topology.ts":{"bytesInOutput":605},"packages/core/mesh/network-manager/src/topology/index.ts":{"bytesInOutput":0},"packages/core/mesh/network-manager/src/topology/mmst-topology.ts":{"bytesInOutput":3250},"packages/core/mesh/network-manager/src/topology/star-topology.ts":{"bytesInOutput":2471},"packages/core/mesh/network-manager/src/transport/memory-transport.ts":{"bytesInOutput":5766},"packages/core/mesh/network-manager/src/transport/index.ts":{"bytesInOutput":0},"packages/core/mesh/network-manager/src/transport/webrtc-transport.ts":{"bytesInOutput":3503},"packages/core/mesh/network-manager/src/transport/webrtc.ts":{"bytesInOutput":72},"packages/core/mesh/network-manager/src/transport/webrtc-transport-service.ts":{"bytesInOutput":2889},"packages/core/mesh/network-manager/src/transport/webrtc-transport-proxy.ts":{"bytesInOutput":4264},"packages/core/mesh/network-manager/src/wire-protocol.ts":{"bytesInOutput":807}},"bytes":73637},"packages/core/mesh/network-manager/dist/lib/node/testing/index.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":128384},"packages/core/mesh/network-manager/dist/lib/node/testing/index.cjs":{"imports":[],"exports":[],"entryPoint":"packages/core/mesh/network-manager/src/testing/index.ts","inputs":{"packages/core/mesh/network-manager/src/testing/index.ts":{"bytesInOutput":389},"packages/core/mesh/network-manager/src/testing/test-builder.ts":{"bytesInOutput":3808},"packages/core/mesh/network-manager/src/network-manager.ts":{"bytesInOutput":5410},"packages/core/mesh/network-manager/src/connection-log.ts":{"bytesInOutput":3149},"packages/core/mesh/network-manager/src/swarm/connection.ts":{"bytesInOutput":6052},"packages/core/mesh/network-manager/src/swarm/index.ts":{"bytesInOutput":0},"packages/core/mesh/network-manager/src/swarm/swarm.ts":{"bytesInOutput":12122},"packages/core/mesh/network-manager/src/signal/message-router.ts":{"bytesInOutput":5013},"packages/core/mesh/network-manager/src/signal/index.ts":{"bytesInOutput":0},"packages/core/mesh/network-manager/src/swarm/peer.ts":{"bytesInOutput":9030},"packages/core/mesh/network-manager/src/swarm/swarm-mapper.ts":{"bytesInOutput":3111},"packages/core/mesh/network-manager/src/topology/fully-connected-topology.ts":{"bytesInOutput":605},"packages/core/mesh/network-manager/src/topology/index.ts":{"bytesInOutput":0},"packages/core/mesh/network-manager/src/topology/mmst-topology.ts":{"bytesInOutput":100},"packages/core/mesh/network-manager/src/topology/star-topology.ts":{"bytesInOutput":40},"packages/core/mesh/network-manager/src/transport/memory-transport.ts":{"bytesInOutput":5754},"packages/core/mesh/network-manager/src/transport/index.ts":{"bytesInOutput":0},"packages/core/mesh/network-manager/src/transport/webrtc-transport.ts":{"bytesInOutput":3350},"packages/core/mesh/network-manager/src/transport/webrtc.ts":{"bytesInOutput":72},"packages/core/mesh/network-manager/src/transport/webrtc-transport-service.ts":{"bytesInOutput":2886},"packages/core/mesh/network-manager/src/transport/webrtc-transport-proxy.ts":{"bytesInOutput":4262},"packages/core/mesh/network-manager/src/wire-protocol.ts":{"bytesInOutput":429},"packages/core/mesh/network-manager/src/testing/test-protocol.ts":{"bytesInOutput":4656},"packages/core/mesh/network-manager/src/protocol-factory.ts":{"bytesInOutput":1361}},"bytes":74690}}}