@dxos/teleport 0.5.9-main.df0042a → 0.5.9-main.e9b9049

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.
@@ -41,6 +41,9 @@ var ControlExtension = class {
41
41
  onError: (err) => {
42
42
  this._extensionContext.close(err);
43
43
  }
44
+ }, {
45
+ F: __dxlog_file,
46
+ L: 30
44
47
  });
45
48
  this.onExtensionRegistered = new Callback();
46
49
  }
@@ -578,7 +581,10 @@ var Muxer = class {
578
581
  this._balancer = new Balancer(SYSTEM_CHANNEL_ID);
579
582
  this._channelsByLocalId = /* @__PURE__ */ new Map();
580
583
  this._channelsByTag = /* @__PURE__ */ new Map();
581
- this._ctx = new Context2();
584
+ this._ctx = new Context2(void 0, {
585
+ F: __dxlog_file4,
586
+ L: 107
587
+ });
582
588
  this._nextId = 1;
583
589
  this._closing = false;
584
590
  this._destroying = false;
@@ -1049,6 +1055,9 @@ var Teleport = class {
1049
1055
  });
1050
1056
  });
1051
1057
  }
1058
+ }, {
1059
+ F: __dxlog_file5,
1060
+ L: 38
1052
1061
  });
1053
1062
  this._muxer = new Muxer();
1054
1063
  this._extensions = /* @__PURE__ */ new Map();
@@ -1966,4 +1975,4 @@ export {
1966
1975
  TestExtension,
1967
1976
  TestExtensionWithStreams
1968
1977
  };
1969
- //# sourceMappingURL=chunk-Q7AG3VZL.mjs.map
1978
+ //# sourceMappingURL=chunk-A2USJKIQ.mjs.map
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../../src/testing/test-builder.ts", "../../../src/teleport.ts", "../../../src/control-extension.ts", "../../../src/muxing/framer.ts", "../../../src/muxing/muxer.ts", "../../../src/muxing/balancer.ts", "../../../src/testing/test-extension.ts", "../../../src/testing/test-extension-with-streams.ts"],
4
4
  "sourcesContent": ["//\n// Copyright 2022 DXOS.org\n//\n\nimport { type Duplex, pipeline } from 'node:stream';\n\nimport { invariant } from '@dxos/invariant';\nimport { PublicKey } from '@dxos/keys';\nimport { log } from '@dxos/log';\n\nimport { Teleport } from '../teleport';\n\ntype CreatePeerOpts<T extends TestPeer> = {\n factory: () => T;\n};\n\nexport class TestBuilder {\n private readonly _peers = new Set<TestPeer>();\n\n createPeer<T extends TestPeer>(opts: CreatePeerOpts<T>): T {\n const peer = opts.factory();\n this._peers.add(peer);\n return peer;\n }\n\n *createPeers<T extends TestPeer>(opts: CreatePeerOpts<T>): Generator<T> {\n while (true) {\n yield this.createPeer(opts);\n }\n }\n\n async destroy() {\n await Promise.all(Array.from(this._peers).map((agent) => agent.destroy()));\n }\n\n async connect(peer1: TestPeer, peer2: TestPeer) {\n invariant(peer1 !== peer2);\n invariant(this._peers.has(peer1));\n invariant(this._peers.has(peer1));\n\n const connection1 = peer1.createConnection({ initiator: true, remotePeerId: peer2.peerId });\n const connection2 = peer2.createConnection({ initiator: false, remotePeerId: peer1.peerId });\n\n pipeStreams(connection1.teleport.stream, connection2.teleport.stream);\n await Promise.all([peer1.openConnection(connection1), peer2.openConnection(connection2)]);\n\n return [connection1, connection2];\n }\n\n async disconnect(peer1: TestPeer, peer2: TestPeer) {\n invariant(peer1 !== peer2);\n invariant(this._peers.has(peer1));\n invariant(this._peers.has(peer1));\n\n const connection1 = Array.from(peer1.connections).find((connection) =>\n connection.remotePeerId.equals(peer2.peerId),\n );\n const connection2 = Array.from(peer2.connections).find((connection) =>\n connection.remotePeerId.equals(peer1.peerId),\n );\n\n invariant(connection1);\n invariant(connection2);\n\n await Promise.all([peer1.closeConnection(connection1), peer2.closeConnection(connection2)]);\n }\n}\n\nexport class TestPeer {\n public readonly connections = new Set<TestConnection>();\n\n constructor(public readonly peerId: PublicKey = PublicKey.random()) {}\n\n protected async onOpen(connection: TestConnection) {}\n protected async onClose(connection: TestConnection) {}\n\n createConnection({ initiator, remotePeerId }: { initiator: boolean; remotePeerId: PublicKey }) {\n const connection = new TestConnection(this.peerId, remotePeerId, initiator);\n this.connections.add(connection);\n return connection;\n }\n\n async openConnection(connection: TestConnection) {\n invariant(this.connections.has(connection));\n await connection.teleport.open(PublicKey.random());\n await this.onOpen(connection);\n }\n\n async closeConnection(connection: TestConnection) {\n invariant(this.connections.has(connection));\n await this.onClose(connection);\n await connection.teleport.close();\n this.connections.delete(connection);\n }\n\n async destroy() {\n for (const teleport of this.connections) {\n await this.closeConnection(teleport);\n }\n }\n}\n\nconst pipeStreams = (stream1: Duplex, stream2: Duplex) => {\n pipeline(stream1, stream2, (err) => {\n if (err && err.code !== 'ERR_STREAM_PREMATURE_CLOSE') {\n log.catch(err);\n }\n });\n pipeline(stream2, stream1, (err) => {\n if (err && err.code !== 'ERR_STREAM_PREMATURE_CLOSE') {\n log.catch(err);\n }\n });\n};\n\nexport class TestConnection {\n public teleport: Teleport;\n\n constructor(\n public readonly localPeerId: PublicKey,\n public readonly remotePeerId: PublicKey,\n public readonly initiator: boolean,\n ) {\n this.teleport = new Teleport({\n initiator,\n localPeerId,\n remotePeerId,\n });\n }\n}\n", "//\n// Copyright 2022 DXOS.org\n//\n\nimport { type Duplex } from 'node:stream';\n\nimport { runInContextAsync, synchronized, scheduleTask, type Event } from '@dxos/async';\nimport { Context } from '@dxos/context';\nimport { failUndefined } from '@dxos/debug';\nimport { invariant } from '@dxos/invariant';\nimport { PublicKey } from '@dxos/keys';\nimport { log, logInfo } from '@dxos/log';\nimport { RpcClosedError, TimeoutError } from '@dxos/protocols';\n\nimport { ControlExtension } from './control-extension';\nimport { type CreateChannelOpts, Muxer, type MuxerStats, type RpcPort } from './muxing';\n\nexport type TeleportParams = {\n initiator: boolean;\n localPeerId: PublicKey;\n remotePeerId: PublicKey;\n controlHeartbeatInterval?: number;\n controlHeartbeatTimeout?: number;\n};\n\nconst CONTROL_HEARTBEAT_INTERVAL = 10_000;\nconst CONTROL_HEARTBEAT_TIMEOUT = 60_000;\n\n/**\n * TODO(burdon): Comment: what is this?\n */\nexport class Teleport {\n public readonly initiator: boolean;\n public readonly localPeerId: PublicKey;\n public readonly remotePeerId: PublicKey;\n public _sessionId?: PublicKey;\n\n private readonly _ctx = new Context({\n onError: (err) => {\n void this.destroy(err).catch(() => {\n log.error('Error during destroy', err);\n });\n },\n });\n\n private readonly _muxer = new Muxer();\n\n private readonly _control;\n\n private readonly _extensions = new Map<string, TeleportExtension>();\n private readonly _remoteExtensions = new Set<string>();\n\n private _open = false;\n private _destroying = false;\n private _aborting = false;\n\n constructor({ initiator, localPeerId, remotePeerId, ...rest }: TeleportParams) {\n invariant(typeof initiator === 'boolean');\n invariant(PublicKey.isPublicKey(localPeerId));\n invariant(PublicKey.isPublicKey(remotePeerId));\n this.initiator = initiator;\n this.localPeerId = localPeerId;\n this.remotePeerId = remotePeerId;\n\n this._control = new ControlExtension(\n {\n heartbeatInterval: rest.controlHeartbeatInterval ?? CONTROL_HEARTBEAT_INTERVAL,\n heartbeatTimeout: rest.controlHeartbeatTimeout ?? CONTROL_HEARTBEAT_TIMEOUT,\n onTimeout: () => {\n if (this._destroying || this._aborting) {\n return;\n }\n log.info('abort teleport due to onTimeout in ControlExtension');\n this.abort(new TimeoutError('control extension')).catch((err) => log.catch(err));\n },\n },\n this.localPeerId,\n this.remotePeerId,\n );\n\n this._control.onExtensionRegistered.set(async (name) => {\n log('remote extension', { name });\n invariant(!this._remoteExtensions.has(name), 'Remote extension already exists');\n this._remoteExtensions.add(name);\n\n if (this._extensions.has(name)) {\n try {\n await this._openExtension(name);\n } catch (err: any) {\n await this.destroy(err);\n }\n }\n });\n\n {\n // Destroy Teleport when the stream is closed.\n this._muxer.stream.on('close', async () => {\n if (this._destroying || this._aborting) {\n log('destroy teleport due to muxer stream close, skipping due to already destroying/aborting');\n return;\n }\n await this.destroy();\n });\n\n this._muxer.stream.on('error', async (err) => {\n await this.destroy(err);\n });\n }\n\n // let last: MuxerStats | undefined;\n this._muxer.statsUpdated.on((stats) => {\n log.trace('dxos.mesh.teleport.stats', {\n localPeerId,\n remotePeerId,\n bytesSent: stats.bytesSent,\n bytesSentRate: stats.bytesSentRate,\n bytesReceived: stats.bytesReceived,\n bytesReceivedRate: stats.bytesReceivedRate,\n channels: stats.channels,\n });\n\n // last = stats;\n });\n }\n\n @logInfo\n get sessionIdString(): string {\n return this._sessionId ? this._sessionId.truncate() : 'none';\n }\n\n get stream(): Duplex {\n return this._muxer.stream;\n }\n\n get stats(): Event<MuxerStats> {\n return this._muxer.statsUpdated;\n }\n\n /**\n * Blocks until the handshake is complete.\n */\n\n async open(sessionId: PublicKey = PublicKey.random()) {\n // invariant(sessionId);\n this._sessionId = sessionId;\n log('open');\n this._setExtension('dxos.mesh.teleport.control', this._control);\n await this._openExtension('dxos.mesh.teleport.control');\n this._open = true;\n this._muxer.setSessionId(sessionId);\n }\n\n async close(err?: Error) {\n // TODO(dmaretskyi): Try soft close.\n await this.destroy(err);\n }\n\n @synchronized\n async abort(err?: Error) {\n if (this._aborting || this._destroying) {\n return;\n }\n this._aborting = true;\n\n if (this._ctx.disposed) {\n return;\n }\n\n await this._ctx.dispose();\n\n for (const extension of this._extensions.values()) {\n try {\n await extension.onAbort(err);\n } catch (err: any) {\n log.catch(err);\n }\n }\n\n await this._muxer.destroy(err);\n }\n\n @synchronized\n // TODO(nf): analyze callers and consider abort instead\n async destroy(err?: Error) {\n if (this._destroying || this._aborting) {\n return;\n }\n log('destroying teleport...', { extensionsCount: this._extensions.size });\n this._destroying = true;\n if (this._ctx.disposed) {\n return;\n }\n\n await this._ctx.dispose();\n\n for (const extension of this._extensions.values()) {\n try {\n log('destroying extension', { name: extension.constructor.name });\n await extension.onClose(err);\n log('destroyed extension', { name: extension.constructor.name });\n } catch (err: any) {\n log.catch(err);\n }\n }\n\n await this._muxer.close();\n log('teleport destroyed');\n }\n\n addExtension(name: string, extension: TeleportExtension) {\n if (!this._open) {\n throw new Error('Not open');\n }\n\n log('addExtension', { name });\n this._setExtension(name, extension);\n\n // Perform the registration in a separate tick as this might block while the remote side is opening the extension.\n scheduleTask(this._ctx, async () => {\n try {\n await this._control.registerExtension(name);\n } catch (err) {\n if (err instanceof RpcClosedError) {\n return;\n }\n throw err;\n }\n });\n\n if (this._remoteExtensions.has(name)) {\n // Open the extension in a separate tick.\n scheduleTask(this._ctx, async () => {\n await this._openExtension(name);\n });\n }\n }\n\n private _setExtension(extensionName: string, extension: TeleportExtension) {\n invariant(!extensionName.includes('/'), 'Invalid extension name');\n invariant(!this._extensions.has(extensionName), 'Extension already exists');\n this._extensions.set(extensionName, extension);\n }\n\n private async _openExtension(extensionName: string) {\n log('open extension', { extensionName });\n const extension = this._extensions.get(extensionName) ?? failUndefined();\n\n const context: ExtensionContext = {\n initiator: this.initiator,\n localPeerId: this.localPeerId,\n remotePeerId: this.remotePeerId,\n createPort: async (channelName: string, opts?: CreateChannelOpts) => {\n invariant(!channelName.includes('/'), 'Invalid channel name');\n return this._muxer.createPort(`${extensionName}/${channelName}`, opts);\n },\n createStream: async (channelName: string, opts?: CreateChannelOpts) => {\n invariant(!channelName.includes('/'), 'Invalid channel name');\n return this._muxer.createStream(`${extensionName}/${channelName}`, opts);\n },\n close: (err) => {\n void runInContextAsync(this._ctx, async () => {\n await this.close(err);\n });\n },\n };\n\n await extension.onOpen(context);\n log('extension opened', { extensionName });\n }\n}\n\nexport type ExtensionContext = {\n /**\n * One of the peers will be designated an initiator.\n */\n initiator: boolean;\n localPeerId: PublicKey;\n remotePeerId: PublicKey;\n createStream(tag: string, opts?: CreateChannelOpts): Promise<Duplex>;\n createPort(tag: string, opts?: CreateChannelOpts): Promise<RpcPort>;\n close(err?: Error): void;\n};\n\nexport interface TeleportExtension {\n onOpen(context: ExtensionContext): Promise<void>;\n onClose(err?: Error): Promise<void>;\n onAbort(err?: Error): Promise<void>;\n}\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { asyncTimeout, scheduleTaskInterval, TimeoutError as AsyncTimeoutError } from '@dxos/async';\nimport { Context } from '@dxos/context';\nimport { type PublicKey } from '@dxos/keys';\nimport { log } from '@dxos/log';\nimport { schema, RpcClosedError } from '@dxos/protocols';\nimport { type ControlService } from '@dxos/protocols/proto/dxos/mesh/teleport/control';\nimport { createProtoRpcPeer, type ProtoRpcPeer } from '@dxos/rpc';\nimport { Callback } from '@dxos/util';\n\nimport { type ExtensionContext, type TeleportExtension } from './teleport';\n\nconst HEARTBEAT_RTT_WARN_THRESH = 10_000;\nconst DEBUG_PRINT_HEARTBEAT = false; // very noisy\n\ntype ControlRpcBundle = {\n Control: ControlService;\n};\n\ntype ControlExtensionOpts = {\n heartbeatInterval: number;\n heartbeatTimeout: number;\n onTimeout: (err: any) => void;\n};\n\nexport class ControlExtension implements TeleportExtension {\n private readonly _ctx = new Context({\n onError: (err) => {\n this._extensionContext.close(err);\n },\n });\n\n public readonly onExtensionRegistered = new Callback<(extensionName: string) => void>();\n\n private _extensionContext!: ExtensionContext;\n private _rpc!: ProtoRpcPeer<{ Control: ControlService }>;\n\n constructor(\n private readonly opts: ControlExtensionOpts,\n private readonly localPeerId: PublicKey,\n private readonly remotePeerId: PublicKey,\n ) {}\n\n async registerExtension(name: string) {\n await this._rpc.rpc.Control.registerExtension({ name });\n }\n\n async onOpen(extensionContext: ExtensionContext): Promise<void> {\n this._extensionContext = extensionContext;\n\n this._rpc = createProtoRpcPeer<ControlRpcBundle, ControlRpcBundle>({\n requested: {\n Control: schema.getService('dxos.mesh.teleport.control.ControlService'),\n },\n exposed: {\n Control: schema.getService('dxos.mesh.teleport.control.ControlService'),\n },\n handlers: {\n Control: {\n registerExtension: async (request) => {\n this.onExtensionRegistered.call(request.name);\n },\n heartbeat: async (request) => {\n if (DEBUG_PRINT_HEARTBEAT) {\n log('received heartbeat request', {\n ts: request.requestTimestamp,\n localPeerId: this.localPeerId.truncate(),\n remotePeerId: this.remotePeerId.truncate(),\n });\n }\n return {\n requestTimestamp: request.requestTimestamp,\n };\n },\n },\n },\n port: await extensionContext.createPort('rpc', {\n contentType: 'application/x-protobuf; messageType=\"dxos.rpc.Message\"',\n }),\n timeout: this.opts.heartbeatTimeout,\n });\n\n await this._rpc.open();\n\n scheduleTaskInterval(\n this._ctx,\n async () => {\n const reqTS = new Date();\n try {\n const resp = await asyncTimeout(\n this._rpc.rpc.Control.heartbeat({ requestTimestamp: reqTS }),\n this.opts.heartbeatTimeout,\n );\n const now = Date.now();\n // TODO(nf): properly instrument\n if (resp.requestTimestamp instanceof Date) {\n if (\n now - resp.requestTimestamp.getTime() >\n (HEARTBEAT_RTT_WARN_THRESH < this.opts.heartbeatTimeout\n ? HEARTBEAT_RTT_WARN_THRESH\n : this.opts.heartbeatTimeout / 2)\n ) {\n log.warn(`heartbeat RTT for Teleport > ${HEARTBEAT_RTT_WARN_THRESH / 1000}s`, {\n rtt: now - resp.requestTimestamp.getTime(),\n localPeerId: this.localPeerId.truncate(),\n remotePeerId: this.remotePeerId.truncate(),\n });\n } else {\n if (DEBUG_PRINT_HEARTBEAT) {\n log('heartbeat RTT', {\n rtt: now - resp.requestTimestamp.getTime(),\n localPeerId: this.localPeerId.truncate(),\n remotePeerId: this.remotePeerId.truncate(),\n });\n }\n }\n }\n } catch (err: any) {\n const now = Date.now();\n if (err instanceof RpcClosedError) {\n // TODO: expose 'closed' event in Rpc peer to close context as soon the the peer gets closed\n log('ignoring RpcClosedError in heartbeat');\n this._extensionContext.close(err);\n return;\n }\n if (err instanceof AsyncTimeoutError) {\n log('timeout waiting for heartbeat response', { err, delay: now - reqTS.getTime() });\n this.opts.onTimeout(err);\n } else {\n log.info('other error waiting for heartbeat response', { err, delay: now - reqTS.getTime() });\n this.opts.onTimeout(err);\n }\n }\n },\n this.opts.heartbeatInterval,\n );\n }\n\n async onClose(err?: Error): Promise<void> {\n await this._ctx.dispose();\n await this._rpc.close();\n }\n\n async onAbort(err?: Error | undefined): Promise<void> {\n await this._ctx.dispose();\n await this._rpc.abort();\n }\n}\n", "//\n// Copyright 2022 DXOS.org\n//\n\nimport { Duplex } from 'node:stream';\n\nimport { Event } from '@dxos/async';\nimport { invariant } from '@dxos/invariant';\nimport { log } from '@dxos/log';\n\nimport { type RpcPort } from './rpc-port';\n\nconst FRAME_LENGTH_SIZE = 2;\n\n/**\n * Converts a stream of binary messages into a framed RpcPort.\n * Buffers are written prefixed by their length encoded as a varint.\n */\nexport class Framer {\n // private readonly _tagBuffer = Buffer.alloc(4)\n private _messageCb?: (msg: Uint8Array) => void = undefined;\n private _subscribeCb?: () => void = undefined;\n private _buffer?: Buffer = undefined; // The rest of the bytes from the previous write call.\n private _sendCallbacks: (() => void)[] = [];\n\n private _bytesSent = 0;\n private _bytesReceived = 0;\n\n private _writable = true;\n\n readonly drain = new Event();\n\n // TODO(egorgripasov): Consider using a Transform stream if it provides better backpressure handling.\n private readonly _stream = new Duplex({\n objectMode: false,\n read: () => {\n this._processResponseQueue();\n },\n write: (chunk, encoding, callback) => {\n invariant(!this._subscribeCb, 'Internal Framer bug. Concurrent writes detected.');\n\n this._bytesReceived += chunk.length;\n\n if (this._buffer && this._buffer.length > 0) {\n this._buffer = Buffer.concat([this._buffer, chunk]);\n } else {\n this._buffer = chunk;\n }\n\n if (this._messageCb) {\n this._popFrames();\n callback();\n } else {\n this._subscribeCb = () => {\n // Schedule the processing of the chunk after the peer subscribes to the messages.\n this._popFrames();\n this._subscribeCb = undefined;\n callback();\n };\n }\n },\n });\n\n public readonly port: RpcPort = {\n send: (message) => {\n // log('write', { len: message.length, frame: Buffer.from(message).toString('hex') })\n return new Promise<void>((resolve) => {\n const frame = encodeFrame(message);\n this._bytesSent += frame.length;\n this._writable = this._stream.push(frame);\n if (!this._writable) {\n this._sendCallbacks.push(resolve);\n } else {\n resolve();\n }\n });\n },\n subscribe: (callback) => {\n invariant(!this._messageCb, 'Rpc port already has a message listener.');\n this._messageCb = callback;\n this._subscribeCb?.();\n return () => {\n this._messageCb = undefined;\n };\n },\n };\n\n get stream(): Duplex {\n return this._stream;\n }\n\n get bytesSent() {\n return this._bytesSent;\n }\n\n get bytesReceived() {\n return this._bytesReceived;\n }\n\n get writable() {\n return this._writable;\n }\n\n private _processResponseQueue() {\n const responseQueue = this._sendCallbacks;\n this._sendCallbacks = [];\n this._writable = true;\n this.drain.emit();\n responseQueue.forEach((cb) => cb());\n }\n\n /**\n * Attempts to pop frames from the buffer and call the message callback.\n */\n private _popFrames() {\n let offset = 0;\n while (offset < this._buffer!.length) {\n const frame = decodeFrame(this._buffer!, offset);\n\n if (!frame) {\n break; // Couldn't read frame but there are still bytes left in the buffer.\n }\n offset += frame.bytesConsumed;\n // TODO(dmaretskyi): Possible bug if the peer unsubscribes while we're reading frames.\n // log('read', { len: frame.payload.length, frame: Buffer.from(frame.payload).toString('hex') })\n this._messageCb!(frame.payload);\n }\n\n if (offset < this._buffer!.length) {\n // Save the rest of the bytes for the next write call.\n this._buffer = this._buffer!.subarray(offset);\n } else {\n this._buffer = undefined;\n }\n }\n\n destroy() {\n // TODO(dmaretskyi): Call stream.end() instead?\n if (this._stream.readableLength > 0) {\n log('framer destroyed while there are still read bytes in the buffer.');\n }\n if (this._stream.writableLength > 0) {\n log.warn('framer destroyed while there are still write bytes in the buffer.');\n }\n this._stream.destroy();\n }\n}\n\n/**\n * Attempts to read a frame from the input buffer.\n */\nexport const decodeFrame = (buffer: Buffer, offset: number): { payload: Buffer; bytesConsumed: number } | undefined => {\n if (buffer.length < offset + FRAME_LENGTH_SIZE) {\n // Not enough bytes to read the frame length.\n return undefined;\n }\n\n const frameLength = buffer.readUInt16BE(offset);\n const bytesConsumed = FRAME_LENGTH_SIZE + frameLength;\n\n if (buffer.length < offset + bytesConsumed) {\n // Not enough bytes to read the frame.\n return undefined;\n }\n\n const payload = buffer.subarray(offset + FRAME_LENGTH_SIZE, offset + bytesConsumed);\n\n return {\n payload,\n bytesConsumed,\n };\n};\n\nexport const encodeFrame = (payload: Uint8Array): Buffer => {\n const frame = Buffer.allocUnsafe(FRAME_LENGTH_SIZE + payload.length);\n frame.writeUInt16BE(payload.length, 0);\n frame.set(payload, FRAME_LENGTH_SIZE);\n return frame;\n};\n", "//\n// Copyright 2022 DXOS.org\n//\n\nimport { Duplex } from 'node:stream';\n\nimport { scheduleTaskInterval, Event, Trigger, asyncTimeout } from '@dxos/async';\nimport { Context } from '@dxos/context';\nimport { failUndefined } from '@dxos/debug';\nimport { invariant } from '@dxos/invariant';\nimport { type PublicKey } from '@dxos/keys';\nimport { log, logInfo } from '@dxos/log';\nimport { schema, TimeoutError } from '@dxos/protocols';\nimport { type ConnectionInfo } from '@dxos/protocols/proto/dxos/devtools/swarm';\nimport { type Command } from '@dxos/protocols/proto/dxos/mesh/muxer';\n\nimport { Balancer } from './balancer';\nimport { type RpcPort } from './rpc-port';\n\nconst Command = schema.getCodecForType('dxos.mesh.muxer.Command');\n\nconst DEFAULT_SEND_COMMAND_TIMEOUT = 60_000;\nconst DESTROY_COMMAND_SEND_TIMEOUT = 5_000;\n\nexport type CleanupCb = void | (() => void);\n\nexport type CreateChannelOpts = {\n /**\n * MIME type of the wire content.\n *\n * Examples:\n * - application/octet-stream\n * - application/x-protobuf; messageType=\"dxos.rpc.Message\"\n */\n contentType?: string;\n};\n\nexport type MuxerStats = {\n timestamp: number;\n channels: ConnectionInfo.StreamStats[];\n bytesSent: number;\n bytesReceived: number;\n bytesSentRate?: number;\n bytesReceivedRate?: number;\n readBufferSize?: number;\n writeBufferSize?: number;\n};\n\nconst STATS_INTERVAL = 1_000;\nconst MAX_SAFE_FRAME_SIZE = 1_000_000;\nconst SYSTEM_CHANNEL_ID = 0;\nconst GRACEFUL_CLOSE_TIMEOUT = 3_000;\n\ntype Channel = {\n /**\n * Our local channel ID.\n * Incoming Data commands will have this ID.\n */\n id: number;\n tag: string;\n\n /**\n * Remote id is set when we receive an OpenChannel command.\n * The originating Data commands should carry this id.\n */\n remoteId: null | number;\n\n contentType?: string;\n\n /**\n * Send buffer.\n */\n buffer: Uint8Array[];\n\n /**\n * Set when we initialize a NodeJS stream or an RPC port consuming the channel.\n */\n push: null | ((data: Uint8Array) => void);\n\n destroy: null | ((err?: Error) => void);\n\n stats: {\n bytesSent: number;\n bytesReceived: number;\n };\n};\n\ntype CreateChannelInternalParams = {\n tag: string;\n contentType?: string;\n};\n\n/**\n * Channel based multiplexer.\n *\n * Can be used to open a number of channels represented by streams or RPC ports.\n * Performs framing for RPC ports.\n * Will buffer data until the remote peer opens the channel.\n *\n * The API will not advertise channels that as they are opened by the remote peer.\n * A higher level API (could be build on top of this muxer) for channel discovery is required.\n */\nexport class Muxer {\n private readonly _balancer = new Balancer(SYSTEM_CHANNEL_ID);\n private readonly _channelsByLocalId = new Map<number, Channel>();\n private readonly _channelsByTag = new Map<string, Channel>();\n private readonly _ctx = new Context();\n private _sessionId?: PublicKey;\n\n private _nextId = 1;\n\n private _closing = false;\n private _destroying = false;\n private _disposed = false;\n\n private _lastStats?: MuxerStats = undefined;\n private readonly _lastChannelStats = new Map<number, Channel['stats']>();\n\n public afterClosed = new Event<Error | undefined>();\n public statsUpdated = new Event<MuxerStats>();\n\n public readonly stream = this._balancer.stream;\n\n constructor() {\n // Add a channel for control messages.\n this._balancer.incomingData.on(async (msg) => {\n await this._handleCommand(Command.decode(msg));\n });\n }\n\n setSessionId(sessionId: PublicKey) {\n this._sessionId = sessionId;\n }\n\n @logInfo\n get sessionIdString(): string {\n return this._sessionId ? this._sessionId.truncate() : 'none';\n }\n\n /**\n * Creates a duplex Node.js-style stream.\n * The remote peer is expected to call `createStream` with the same tag.\n * The stream is immediately readable and writable.\n * NOTE: The data will be buffered until the stream is opened remotely with the same tag (may cause a memory leak).\n */\n async createStream(tag: string, opts: CreateChannelOpts = {}): Promise<Duplex> {\n const channel = this._getOrCreateStream({\n tag,\n contentType: opts.contentType,\n });\n invariant(!channel.push, `Channel already open: ${tag}`);\n\n const stream = new Duplex({\n write: (data, encoding, callback) => {\n this._sendData(channel, data)\n .then(() => callback())\n .catch(callback);\n // TODO(dmaretskyi): Should we error if sending data has errored?\n },\n read: () => {}, // No-op. We will push data when we receive it.\n });\n\n channel.push = (data) => {\n channel.stats.bytesReceived += data.length;\n stream.push(data);\n };\n channel.destroy = (err) => {\n // TODO(dmaretskyi): Call stream.end() instead?\n if (err) {\n if (stream.listeners('error').length > 0) {\n stream.destroy(err);\n } else {\n stream.destroy();\n }\n } else {\n stream.destroy();\n }\n };\n\n // NOTE: Make sure channel.push is set before sending the command.\n try {\n await this._sendCommand(\n {\n openChannel: {\n id: channel.id,\n tag: channel.tag,\n contentType: channel.contentType,\n },\n },\n SYSTEM_CHANNEL_ID,\n );\n } catch (err: any) {\n this._destroyChannel(channel, err);\n throw err;\n }\n\n return stream;\n }\n\n /**\n * Creates an RPC port.\n * The remote peer is expected to call `createPort` with the same tag.\n * The port is immediately usable.\n * NOTE: The data will be buffered until the stream is opened remotely with the same tag (may cause a memory leak).\n */\n async createPort(tag: string, opts: CreateChannelOpts = {}): Promise<RpcPort> {\n const channel = this._getOrCreateStream({\n tag,\n contentType: opts.contentType,\n });\n invariant(!channel.push, `Channel already open: ${tag}`);\n\n // We need to buffer incoming data until the port is subscribed to.\n let inboundBuffer: Uint8Array[] = [];\n let callback: ((data: Uint8Array) => void) | undefined;\n\n channel.push = (data) => {\n channel.stats.bytesReceived += data.length;\n if (callback) {\n callback(data);\n } else {\n inboundBuffer.push(data);\n }\n };\n\n const port: RpcPort = {\n send: async (data: Uint8Array, timeout?: number) => {\n await this._sendData(channel, data, timeout);\n // TODO(dmaretskyi): Debugging.\n // appendFileSync('log.json', JSON.stringify(schema.getCodecForType('dxos.rpc.RpcMessage').decode(data), null, 2) + '\\n')\n },\n subscribe: (cb: (data: Uint8Array) => void) => {\n invariant(!callback, 'Only one subscriber is allowed');\n callback = cb;\n for (const data of inboundBuffer) {\n cb(data);\n }\n inboundBuffer = [];\n },\n };\n\n // NOTE: Make sure channel.push is set before sending the command.\n try {\n await this._sendCommand(\n {\n openChannel: {\n id: channel.id,\n tag: channel.tag,\n contentType: channel.contentType,\n },\n },\n SYSTEM_CHANNEL_ID,\n );\n } catch (err: any) {\n this._destroyChannel(channel, err);\n throw err;\n }\n\n return port;\n }\n\n // initiate graceful close\n\n async close(err?: Error) {\n if (this._destroying) {\n log('already destroying, ignoring graceful close request');\n return;\n }\n if (this._closing) {\n log('already closing, ignoring graceful close request');\n return;\n }\n\n this._closing = true;\n\n await this._sendCommand(\n {\n close: {\n error: err?.message,\n },\n },\n SYSTEM_CHANNEL_ID,\n DESTROY_COMMAND_SEND_TIMEOUT,\n ).catch(async (err: any) => {\n log('error sending close command', { err });\n\n await this._dispose(err);\n });\n\n // don't return until close is complete or timeout\n await asyncTimeout(this._dispose(err), GRACEFUL_CLOSE_TIMEOUT, new TimeoutError('gracefully closing muxer'));\n }\n\n // force close without confirmation\n\n async destroy(err?: Error) {\n if (this._destroying) {\n log('already destroying, ignoring destroy request');\n return;\n }\n this._destroying = true;\n void this._ctx.dispose();\n if (this._closing) {\n log('destroy cancelling graceful close');\n this._closing = false;\n } else {\n // as a courtesy to the peer, send destroy command but ignore errors sending\n\n await this._sendCommand(\n {\n close: {\n error: err?.message,\n },\n },\n SYSTEM_CHANNEL_ID,\n ).catch(async (err: any) => {\n log('error sending courtesy close command', { err });\n });\n }\n\n this._dispose(err).catch((err) => {\n log('error disposing after destroy', { err });\n });\n }\n\n // complete the termination, graceful or otherwise\n\n async _dispose(err?: Error) {\n if (this._disposed) {\n log('already destroyed, ignoring dispose request');\n return;\n }\n\n void this._ctx.dispose();\n\n await this._balancer.destroy();\n\n for (const channel of this._channelsByTag.values()) {\n channel.destroy?.(err);\n }\n this._disposed = true;\n await this._emitStats();\n\n this.afterClosed.emit(err);\n\n // Make it easy for GC.\n this._channelsByLocalId.clear();\n this._channelsByTag.clear();\n }\n\n private async _handleCommand(cmd: Command) {\n if (this._disposed) {\n log.warn('Received command after disposed', { cmd });\n return;\n }\n\n if (cmd.close) {\n if (!this._closing) {\n log('received peer close, initiating my own graceful close');\n await this.close(new Error('received peer close'));\n } else {\n log('received close from peer, already closing');\n }\n\n return;\n }\n\n if (cmd.openChannel) {\n const channel = this._getOrCreateStream({\n tag: cmd.openChannel.tag,\n contentType: cmd.openChannel.contentType,\n });\n channel.remoteId = cmd.openChannel.id;\n\n // Flush any buffered data.\n for (const data of channel.buffer) {\n await this._sendCommand(\n {\n data: {\n channelId: channel.remoteId!,\n data,\n },\n },\n channel.id,\n );\n }\n channel.buffer = [];\n } else if (cmd.data) {\n const stream = this._channelsByLocalId.get(cmd.data.channelId) ?? failUndefined();\n if (!stream.push) {\n log.warn('Received data for channel before it was opened', { tag: stream.tag });\n return;\n }\n stream.push(cmd.data.data);\n }\n }\n\n private async _sendCommand(cmd: Command, channelId = -1, timeout = DEFAULT_SEND_COMMAND_TIMEOUT) {\n if (this._disposed) {\n log.info('ignoring sendCommand after disposed', { cmd });\n return;\n }\n try {\n const trigger = new Trigger<void>();\n this._balancer.pushData(Command.encode(cmd), trigger, channelId);\n await trigger.wait({ timeout });\n } catch (err: any) {\n await this.destroy(err);\n }\n }\n\n private _getOrCreateStream(params: CreateChannelInternalParams): Channel {\n if (this._channelsByTag.size === 0) {\n scheduleTaskInterval(this._ctx, async () => this._emitStats(), STATS_INTERVAL);\n }\n let channel = this._channelsByTag.get(params.tag);\n if (!channel) {\n channel = {\n id: this._nextId++,\n remoteId: null,\n tag: params.tag,\n contentType: params.contentType,\n buffer: [],\n push: null,\n destroy: null,\n stats: {\n bytesSent: 0,\n bytesReceived: 0,\n },\n };\n this._channelsByTag.set(channel.tag, channel);\n this._channelsByLocalId.set(channel.id, channel);\n this._balancer.addChannel(channel.id);\n }\n\n return channel;\n }\n\n private async _sendData(channel: Channel, data: Uint8Array, timeout?: number): Promise<void> {\n if (data.length > MAX_SAFE_FRAME_SIZE) {\n log.warn('frame size exceeds maximum safe value', { size: data.length, threshold: MAX_SAFE_FRAME_SIZE });\n }\n\n channel.stats.bytesSent += data.length;\n if (channel.remoteId === null) {\n // Remote side has not opened the channel yet.\n channel.buffer.push(data);\n return;\n }\n await this._sendCommand(\n {\n data: {\n channelId: channel.remoteId,\n data,\n },\n },\n channel.id,\n timeout,\n );\n }\n\n private _destroyChannel(channel: Channel, err?: Error) {\n if (channel.destroy) {\n channel.destroy(err);\n }\n\n this._channelsByLocalId.delete(channel.id);\n this._channelsByTag.delete(channel.tag);\n }\n\n private async _emitStats() {\n if (this._disposed || this._destroying) {\n if (!this._lastStats) {\n return;\n }\n\n // zero out counting stats to not skew metrics.\n const lastStats = this._lastStats;\n this._lastStats = undefined;\n\n lastStats.readBufferSize = 0;\n lastStats.writeBufferSize = 0;\n for (const c of lastStats.channels) {\n c.writeBufferSize = 0;\n }\n this.statsUpdated.emit(lastStats);\n\n this._lastChannelStats.clear();\n return;\n }\n\n const bytesSent = this._balancer.bytesSent;\n const bytesReceived = this._balancer.bytesReceived;\n\n const now = Date.now();\n const interval = this._lastStats ? (now - this._lastStats.timestamp) / 1_000 : 0;\n const calculateThroughput = (current: Channel['stats'], last: Channel['stats'] | undefined) =>\n last\n ? {\n bytesSentRate: interval ? (current.bytesSent - last.bytesSent) / interval : undefined,\n bytesReceivedRate: interval ? (current.bytesReceived - last.bytesReceived) / interval : undefined,\n }\n : {};\n\n this._lastStats = {\n timestamp: now,\n channels: Array.from(this._channelsByTag.values()).map((channel) => {\n const stats: ConnectionInfo.StreamStats = {\n id: channel.id,\n tag: channel.tag,\n contentType: channel.contentType,\n writeBufferSize: channel.buffer.length,\n bytesSent: channel.stats.bytesSent,\n bytesReceived: channel.stats.bytesReceived,\n ...calculateThroughput(channel.stats, this._lastChannelStats.get(channel.id)),\n };\n\n this._lastChannelStats.set(channel.id, stats);\n return stats;\n }),\n bytesSent,\n bytesReceived,\n ...calculateThroughput({ bytesSent, bytesReceived }, this._lastStats),\n readBufferSize: this._balancer.stream.readableLength,\n writeBufferSize: this._balancer.stream.writableLength,\n };\n\n this.statsUpdated.emit(this._lastStats);\n }\n}\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport * as varint from 'varint';\n\nimport { type Trigger, Event } from '@dxos/async';\nimport { invariant } from '@dxos/invariant';\nimport { log } from '@dxos/log';\n\nimport { Framer } from './framer';\n\nconst MAX_CHUNK_SIZE = 8192;\n\ntype Chunk = {\n chunk: Uint8Array;\n channelId: number;\n dataLength?: number;\n};\n\ntype ChunkEnvelope = {\n msg: Buffer;\n trigger?: Trigger;\n};\n\ntype ChannelBuffer = {\n buffer: Buffer;\n msgLength: number;\n};\n\n/**\n * Load balancer for handling asynchronous calls from multiple channels.\n *\n * Manages a queue of calls from different channels and ensures that the calls\n * are processed in a balanced manner in a round-robin fashion.\n */\nexport class Balancer {\n private _lastCallerIndex = 0;\n private _channels: number[] = [];\n\n private readonly _framer = new Framer();\n // TODO(egorgripasov): Will cause a memory leak if channels do not appreciate the backpressure.\n private readonly _sendBuffers: Map<number, ChunkEnvelope[]> = new Map();\n private readonly _receiveBuffers = new Map<number, ChannelBuffer>();\n\n private _sending = false;\n public incomingData = new Event<Uint8Array>();\n public readonly stream = this._framer.stream;\n\n constructor(private readonly _sysChannelId: number) {\n this._channels.push(_sysChannelId);\n\n // Handle incoming messages.\n this._framer.port.subscribe(this._processIncomingMessage.bind(this));\n }\n\n get bytesSent() {\n return this._framer.bytesSent;\n }\n\n get bytesReceived() {\n return this._framer.bytesReceived;\n }\n\n get buffersCount() {\n return this._sendBuffers.size;\n }\n\n addChannel(channel: number) {\n this._channels.push(channel);\n }\n\n pushData(data: Uint8Array, trigger: Trigger, channelId: number) {\n this._enqueueChunk(data, trigger, channelId);\n this._sendChunks().catch((err) => log.catch(err));\n }\n\n destroy() {\n if (this._sendBuffers.size !== 0) {\n log.info('destroying balancer with pending calls');\n }\n this._sendBuffers.clear();\n this._framer.destroy();\n }\n\n private _processIncomingMessage(msg: Uint8Array) {\n const { channelId, dataLength, chunk } = decodeChunk(msg, (channelId) => !this._receiveBuffers.has(channelId));\n if (!this._receiveBuffers.has(channelId)) {\n if (chunk.length < dataLength!) {\n this._receiveBuffers.set(channelId, {\n buffer: Buffer.from(chunk),\n msgLength: dataLength!,\n });\n } else {\n this.incomingData.emit(chunk);\n }\n } else {\n const channelBuffer = this._receiveBuffers.get(channelId)!;\n channelBuffer.buffer = Buffer.concat([channelBuffer.buffer, chunk]);\n if (channelBuffer.buffer.length < channelBuffer.msgLength) {\n return;\n }\n const msg = channelBuffer.buffer;\n this._receiveBuffers.delete(channelId);\n this.incomingData.emit(msg);\n }\n }\n\n private _getNextCallerId() {\n if (this._sendBuffers.has(this._sysChannelId)) {\n return this._sysChannelId;\n }\n\n const index = this._lastCallerIndex;\n this._lastCallerIndex = (this._lastCallerIndex + 1) % this._channels.length;\n\n return this._channels[index];\n }\n\n private _enqueueChunk(data: Uint8Array, trigger: Trigger, channelId: number) {\n if (!this._channels.includes(channelId)) {\n throw new Error(`Unknown channel ${channelId}`);\n }\n\n if (!this._sendBuffers.has(channelId)) {\n this._sendBuffers.set(channelId, []);\n }\n\n const sendBuffer = this._sendBuffers.get(channelId)!;\n\n const chunks = [];\n for (let idx = 0; idx < data.length; idx += MAX_CHUNK_SIZE) {\n chunks.push(data.subarray(idx, idx + MAX_CHUNK_SIZE));\n }\n\n chunks.forEach((chunk, index) => {\n const msg = encodeChunk({\n chunk,\n channelId,\n dataLength: index === 0 ? data.length : undefined,\n });\n sendBuffer.push({ msg, trigger: index === chunks.length - 1 ? trigger : undefined });\n });\n }\n\n // get the next chunk or null if there are no chunks remaining\n\n private _getNextChunk(): ChunkEnvelope | null {\n let chunk;\n while (this._sendBuffers.size > 0) {\n const channelId = this._getNextCallerId();\n const sendBuffer = this._sendBuffers.get(channelId);\n if (!sendBuffer) {\n continue;\n }\n\n chunk = sendBuffer.shift();\n if (!chunk) {\n continue;\n }\n if (sendBuffer.length === 0) {\n this._sendBuffers.delete(channelId);\n }\n return chunk;\n }\n return null;\n }\n\n private async _sendChunks() {\n if (this._sending) {\n return;\n }\n this._sending = true;\n let chunk: ChunkEnvelope | null;\n chunk = this._getNextChunk();\n while (chunk) {\n // TODO(nf): determine whether this is needed since we await the chunk send\n if (!this._framer.writable) {\n log('PAUSE for drain');\n await this._framer.drain.waitForCount(1);\n log('RESUME for drain');\n }\n try {\n await this._framer.port.send(chunk.msg);\n chunk.trigger?.wake();\n } catch (err: any) {\n log('Error sending chunk', { err });\n chunk.trigger?.throw(err);\n }\n chunk = this._getNextChunk();\n }\n invariant(this._sendBuffers.size === 0, 'sendBuffers not empty');\n this._sending = false;\n }\n}\n\nexport const encodeChunk = ({ channelId, dataLength, chunk }: Chunk): Buffer => {\n const channelTagLength = varint.encodingLength(channelId);\n const dataLengthLength = dataLength ? varint.encodingLength(dataLength) : 0;\n const message = Buffer.allocUnsafe(channelTagLength + dataLengthLength + chunk.length);\n varint.encode(channelId, message);\n if (dataLength) {\n varint.encode(dataLength, message, channelTagLength);\n }\n message.set(chunk, channelTagLength + dataLengthLength);\n return message;\n};\n\nexport const decodeChunk = (data: Uint8Array, withLength: (channelId: number) => boolean): Chunk => {\n const channelId = varint.decode(data);\n let dataLength: number | undefined;\n let offset = varint.decode.bytes;\n\n if (withLength(channelId)) {\n dataLength = varint.decode(data, offset);\n offset += varint.decode.bytes;\n }\n\n const chunk = data.subarray(offset);\n\n return { channelId, dataLength, chunk };\n};\n", "//\n// Copyright 2022 DXOS.org\n//\n\nimport { asyncTimeout, Trigger } from '@dxos/async';\nimport { invariant } from '@dxos/invariant';\nimport { log } from '@dxos/log';\nimport { schema } from '@dxos/protocols';\nimport { type TestService } from '@dxos/protocols/proto/example/testing/rpc';\nimport { createProtoRpcPeer, type ProtoRpcPeer } from '@dxos/rpc';\n\nimport { type ExtensionContext, type TeleportExtension } from '../teleport';\n\ninterface TestExtensionCallbacks {\n onOpen?: () => Promise<void>;\n onClose?: () => Promise<void>;\n onAbort?: () => Promise<void>;\n}\n\nexport class TestExtension implements TeleportExtension {\n public readonly open = new Trigger();\n public readonly closed = new Trigger();\n public readonly aborted = new Trigger();\n public extensionContext: ExtensionContext | undefined;\n private _rpc!: ProtoRpcPeer<{ TestService: TestService }>;\n\n constructor(public readonly callbacks: TestExtensionCallbacks = {}) {}\n\n get remotePeerId() {\n return this.extensionContext?.remotePeerId;\n }\n\n async onOpen(context: ExtensionContext) {\n log('onOpen', { localPeerId: context.localPeerId, remotePeerId: context.remotePeerId });\n this.extensionContext = context;\n this._rpc = createProtoRpcPeer<{ TestService: TestService }, { TestService: TestService }>({\n port: await context.createPort('rpc', {\n contentType: 'application/x-protobuf; messageType=\"dxos.rpc.Message\"',\n }),\n requested: {\n TestService: schema.getService('example.testing.rpc.TestService'),\n },\n exposed: {\n TestService: schema.getService('example.testing.rpc.TestService'),\n },\n handlers: {\n TestService: {\n voidCall: async (request) => {\n // Ok.\n },\n testCall: async (request) => {\n return {\n data: request.data,\n };\n },\n },\n },\n timeout: 2000,\n });\n\n await this._rpc.open();\n await this.callbacks.onOpen?.();\n\n this.open.wake();\n }\n\n async onClose(err?: Error) {\n log('onClose', { err });\n await this.callbacks.onClose?.();\n this.closed.wake();\n await this._rpc?.close();\n }\n\n async onAbort(err?: Error) {\n log('onAbort', { err });\n await this.callbacks.onAbort?.();\n this.aborted.wake();\n await this._rpc?.abort();\n }\n\n async test(message = 'test') {\n await this.open.wait({ timeout: 1500 });\n const res = await asyncTimeout(this._rpc.rpc.TestService.testCall({ data: message }), 1500);\n invariant(res.data === message);\n }\n\n /**\n * Force-close the connection.\n */\n async closeConnection(err?: Error) {\n this.extensionContext?.close(err);\n }\n}\n", "//\n// Copyright 2022 DXOS.org\n//\n\nimport { randomBytes } from 'node:crypto';\nimport { type Duplex } from 'node:stream';\n\nimport { Trigger } from '@dxos/async';\nimport { invariant } from '@dxos/invariant';\nimport { log } from '@dxos/log';\nimport { schema } from '@dxos/protocols';\nimport { type TestServiceWithStreams } from '@dxos/protocols/proto/example/testing/rpc';\nimport { createProtoRpcPeer, type ProtoRpcPeer } from '@dxos/rpc';\n\nimport { type ExtensionContext, type TeleportExtension } from '../teleport';\n\ninterface TestExtensionWithStreamsCallbacks {\n onOpen?: () => Promise<void>;\n onClose?: () => Promise<void>;\n onAbort?: () => Promise<void>;\n}\n\nexport class TestExtensionWithStreams implements TeleportExtension {\n public readonly open = new Trigger();\n public readonly closed = new Trigger();\n public readonly aborted = new Trigger();\n private readonly _streams = new Map<string, TestStream>();\n\n public extensionContext: ExtensionContext | undefined;\n private _rpc!: ProtoRpcPeer<{ TestServiceWithStreams: TestServiceWithStreams }>;\n\n constructor(public readonly callbacks: TestExtensionWithStreamsCallbacks = {}) {}\n\n get remotePeerId() {\n return this.extensionContext?.remotePeerId;\n }\n\n private async _openStream(streamTag: string, interval = 5, chunkSize = 2048) {\n invariant(!this._streams.has(streamTag), `Stream already exists: ${streamTag}`);\n\n const networkStream = await this.extensionContext!.createStream(streamTag, {\n contentType: 'application/x-test-stream',\n });\n\n const streamEntry: TestStream = {\n networkStream,\n bytesSent: 0,\n bytesReceived: 0,\n sendErrors: 0,\n receiveErrors: 0,\n startTimestamp: Date.now(),\n };\n\n const pushChunk = () => {\n streamEntry.timer = setTimeout(() => {\n const chunk = randomBytes(chunkSize);\n\n if (\n !networkStream.write(chunk, 'binary', (err) => {\n if (!err) {\n streamEntry.bytesSent += chunk.length;\n } else {\n streamEntry.sendErrors += 1;\n }\n })\n ) {\n networkStream.once('drain', pushChunk);\n } else {\n process.nextTick(pushChunk);\n }\n }, interval);\n };\n\n pushChunk();\n\n this._streams.set(streamTag, streamEntry);\n\n networkStream.on('data', (data) => {\n streamEntry.bytesReceived += data.length;\n });\n\n networkStream.on('error', (err) => {\n streamEntry.receiveErrors += 1;\n });\n\n networkStream.on('close', () => {\n networkStream.removeAllListeners();\n });\n\n streamEntry.reportingTimer = setInterval(() => {\n const { bytesSent, bytesReceived, sendErrors, receiveErrors } = streamEntry;\n // log.info('stream stats', { streamTag, bytesSent, bytesReceived, sendErrors, receiveErrors });\n log.trace('dxos.test.stream-stats', {\n streamTag,\n bytesSent,\n bytesReceived,\n sendErrors,\n receiveErrors,\n from: this.extensionContext?.localPeerId,\n to: this.extensionContext?.remotePeerId,\n });\n }, 100);\n }\n\n private _closeStream(streamTag: string): Stats {\n invariant(this._streams.has(streamTag), `Stream does not exist: ${streamTag}`);\n\n const stream = this._streams.get(streamTag)!;\n\n clearTimeout(stream.timer);\n clearTimeout(stream.reportingTimer);\n\n const { bytesSent, bytesReceived, sendErrors, receiveErrors, startTimestamp } = stream;\n\n stream.networkStream.destroy();\n this._streams.delete(streamTag);\n\n return {\n bytesSent,\n bytesReceived,\n sendErrors,\n receiveErrors,\n runningTime: Date.now() - (startTimestamp ?? 0),\n };\n }\n\n async onOpen(context: ExtensionContext) {\n log('onOpen', { localPeerId: context.localPeerId, remotePeerId: context.remotePeerId });\n this.extensionContext = context;\n this._rpc = createProtoRpcPeer<\n { TestServiceWithStreams: TestServiceWithStreams },\n { TestServiceWithStreams: TestServiceWithStreams }\n >({\n port: await context.createPort('rpc', {\n contentType: 'application/x-protobuf; messageType=\"dxos.rpc.Message\"',\n }),\n requested: {\n TestServiceWithStreams: schema.getService('example.testing.rpc.TestServiceWithStreams'),\n },\n exposed: {\n TestServiceWithStreams: schema.getService('example.testing.rpc.TestServiceWithStreams'),\n },\n handlers: {\n TestServiceWithStreams: {\n requestTestStream: async (request) => {\n const { data: streamTag, streamLoadInterval, streamLoadChunkSize } = request;\n\n await this._openStream(streamTag, streamLoadInterval, streamLoadChunkSize);\n\n return {\n data: streamTag,\n };\n },\n closeTestStream: async (request) => {\n const streamTag = request.data;\n const { bytesSent, bytesReceived, sendErrors, receiveErrors, runningTime } = this._closeStream(streamTag);\n\n return {\n data: streamTag,\n bytesSent,\n bytesReceived,\n sendErrors,\n receiveErrors,\n runningTime,\n };\n },\n },\n },\n timeout: 2000,\n });\n\n await this._rpc.open();\n await this.callbacks.onOpen?.();\n\n this.open.wake();\n }\n\n async onClose(err?: Error) {\n log('onClose', { err });\n await this.callbacks.onClose?.();\n this.closed.wake();\n for (const [streamTag, stream] of Object.entries(this._streams)) {\n log('closing stream', { streamTag });\n clearTimeout(stream.interval);\n stream.networkStream.destroy();\n }\n await this._rpc?.close();\n }\n\n async onAbort(err?: Error) {\n log('onAbort', { err });\n await this.callbacks.onAbort?.();\n this.aborted.wake();\n await this._rpc?.abort();\n }\n\n async addNewStream(streamLoadInterval: number, streamLoadChunkSize: number, streamTag?: string): Promise<string> {\n await this.open.wait({ timeout: 1500 });\n if (!streamTag) {\n streamTag = `stream-${randomBytes(4).toString('hex')}`;\n }\n const { data } = await this._rpc.rpc.TestServiceWithStreams.requestTestStream({\n data: streamTag,\n streamLoadInterval,\n streamLoadChunkSize,\n });\n invariant(data === streamTag);\n\n await this._openStream(streamTag, streamLoadInterval, streamLoadChunkSize);\n return streamTag;\n }\n\n async closeStream(streamTag: string): Promise<TestStreamStats> {\n await this.open.wait({ timeout: 1500 });\n const { data, bytesSent, bytesReceived, sendErrors, receiveErrors, runningTime } =\n await this._rpc.rpc.TestServiceWithStreams.closeTestStream({\n data: streamTag,\n });\n\n invariant(data === streamTag);\n\n const local = this._closeStream(streamTag);\n\n return {\n streamTag,\n stats: {\n local,\n remote: {\n bytesSent,\n bytesReceived,\n sendErrors,\n receiveErrors,\n runningTime,\n },\n },\n };\n }\n\n /**\n * Force-close the connection.\n */\n async closeConnection(err?: Error) {\n this.extensionContext?.close(err);\n }\n}\n\ntype Stats = {\n bytesSent: number;\n bytesReceived: number;\n sendErrors: number;\n receiveErrors: number;\n runningTime: number;\n};\n\nexport type TestStreamStats = {\n streamTag: string;\n stats: {\n local: Stats;\n remote: Stats;\n };\n};\n\ntype TestStream = {\n networkStream: Duplex;\n bytesSent: number;\n bytesReceived: number;\n sendErrors: number;\n receiveErrors: number;\n timer?: NodeJS.Timer;\n startTimestamp?: number;\n reportingTimer?: NodeJS.Timer;\n};\n"],
5
- "mappings": ";;;;;;;;;;AAIA,SAAsBA,gBAAgB;AAEtC,SAASC,aAAAA,kBAAiB;AAC1B,SAASC,aAAAA,kBAAiB;AAC1B,SAASC,OAAAA,YAAW;;;ACFpB,SAASC,mBAAmBC,cAAcC,oBAAgC;AAC1E,SAASC,WAAAA,gBAAe;AACxB,SAASC,iBAAAA,sBAAqB;AAC9B,SAASC,aAAAA,kBAAiB;AAC1B,SAASC,iBAAiB;AAC1B,SAASC,OAAAA,MAAKC,WAAAA,gBAAe;AAC7B,SAASC,kBAAAA,iBAAgBC,gBAAAA,qBAAoB;;;ACR7C,SAASC,cAAcC,sBAAsBC,gBAAgBC,yBAAyB;AACtF,SAASC,eAAe;AAExB,SAASC,WAAW;AACpB,SAASC,QAAQC,sBAAsB;AAEvC,SAASC,0BAA6C;AACtD,SAASC,gBAAgB;;AAIzB,IAAMC,4BAA4B;AAClC,IAAMC,wBAAwB;AAYvB,IAAMC,mBAAN,MAAMA;EAYXC,YACmBC,MACAC,aACAC,cACjB;SAHiBF,OAAAA;SACAC,cAAAA;SACAC,eAAAA;SAdFC,OAAO,IAAIb,QAAQ;MAClCc,SAAS,CAACC,QAAAA;AACR,aAAKC,kBAAkBC,MAAMF,GAAAA;MAC/B;IACF,CAAA;SAEgBG,wBAAwB,IAAIb,SAAAA;EASzC;EAEH,MAAMc,kBAAkBC,MAAc;AACpC,UAAM,KAAKC,KAAKC,IAAIC,QAAQJ,kBAAkB;MAAEC;IAAK,CAAA;EACvD;EAEA,MAAMI,OAAOC,kBAAmD;AAC9D,SAAKT,oBAAoBS;AAEzB,SAAKJ,OAAOjB,mBAAuD;MACjEsB,WAAW;QACTH,SAASrB,OAAOyB,WAAW,2CAAA;MAC7B;MACAC,SAAS;QACPL,SAASrB,OAAOyB,WAAW,2CAAA;MAC7B;MACAE,UAAU;QACRN,SAAS;UACPJ,mBAAmB,OAAOW,YAAAA;AACxB,iBAAKZ,sBAAsBa,KAAKD,QAAQV,IAAI;UAC9C;UACAY,WAAW,OAAOF,YAAAA;AAChB,gBAAIvB,uBAAuB;AACzBN,kBAAI,8BAA8B;gBAChCgC,IAAIH,QAAQI;gBACZvB,aAAa,KAAKA,YAAYwB,SAAQ;gBACtCvB,cAAc,KAAKA,aAAauB,SAAQ;cAC1C,GAAA;;;;;;YACF;AACA,mBAAO;cACLD,kBAAkBJ,QAAQI;YAC5B;UACF;QACF;MACF;MACAE,MAAM,MAAMX,iBAAiBY,WAAW,OAAO;QAC7CC,aAAa;MACf,CAAA;MACAC,SAAS,KAAK7B,KAAK8B;IACrB,CAAA;AAEA,UAAM,KAAKnB,KAAKoB,KAAI;AAEpB5C,yBACE,KAAKgB,MACL,YAAA;AACE,YAAM6B,QAAQ,oBAAIC,KAAAA;AAClB,UAAI;AACF,cAAMC,OAAO,MAAMhD,aACjB,KAAKyB,KAAKC,IAAIC,QAAQS,UAAU;UAAEE,kBAAkBQ;QAAM,CAAA,GAC1D,KAAKhC,KAAK8B,gBAAgB;AAE5B,cAAMK,MAAMF,KAAKE,IAAG;AAEpB,YAAID,KAAKV,4BAA4BS,MAAM;AACzC,cACEE,MAAMD,KAAKV,iBAAiBY,QAAO,KAClCxC,4BAA4B,KAAKI,KAAK8B,mBACnClC,4BACA,KAAKI,KAAK8B,mBAAmB,IACjC;AACAvC,gBAAI8C,KAAK,gCAAgCzC,4BAA4B,GAAA,KAAS;cAC5E0C,KAAKH,MAAMD,KAAKV,iBAAiBY,QAAO;cACxCnC,aAAa,KAAKA,YAAYwB,SAAQ;cACtCvB,cAAc,KAAKA,aAAauB,SAAQ;YAC1C,GAAA;;;;;;UACF,OAAO;AACL,gBAAI5B,uBAAuB;AACzBN,kBAAI,iBAAiB;gBACnB+C,KAAKH,MAAMD,KAAKV,iBAAiBY,QAAO;gBACxCnC,aAAa,KAAKA,YAAYwB,SAAQ;gBACtCvB,cAAc,KAAKA,aAAauB,SAAQ;cAC1C,GAAA;;;;;;YACF;UACF;QACF;MACF,SAASpB,KAAU;AACjB,cAAM8B,MAAMF,KAAKE,IAAG;AACpB,YAAI9B,eAAeZ,gBAAgB;AAEjCF,cAAI,wCAAA,QAAA;;;;;;AACJ,eAAKe,kBAAkBC,MAAMF,GAAAA;AAC7B;QACF;AACA,YAAIA,eAAehB,mBAAmB;AACpCE,cAAI,0CAA0C;YAAEc;YAAKkC,OAAOJ,MAAMH,MAAMI,QAAO;UAAG,GAAA;;;;;;AAClF,eAAKpC,KAAKwC,UAAUnC,GAAAA;QACtB,OAAO;AACLd,cAAIkD,KAAK,8CAA8C;YAAEpC;YAAKkC,OAAOJ,MAAMH,MAAMI,QAAO;UAAG,GAAA;;;;;;AAC3F,eAAKpC,KAAKwC,UAAUnC,GAAAA;QACtB;MACF;IACF,GACA,KAAKL,KAAK0C,iBAAiB;EAE/B;EAEA,MAAMC,QAAQtC,KAA4B;AACxC,UAAM,KAAKF,KAAKyC,QAAO;AACvB,UAAM,KAAKjC,KAAKJ,MAAK;EACvB;EAEA,MAAMsC,QAAQxC,KAAwC;AACpD,UAAM,KAAKF,KAAKyC,QAAO;AACvB,UAAM,KAAKjC,KAAKmC,MAAK;EACvB;AACF;;;AClJA,SAASC,cAAc;AAEvB,SAASC,aAAa;AACtB,SAASC,iBAAiB;AAC1B,SAASC,OAAAA,YAAW;;AAIpB,IAAMC,oBAAoB;AAMnB,IAAMC,SAAN,MAAMA;EAAN;AAEGC;sBAAyCC;AACzCC,wBAA4BD;AAC5BE,mBAAmBF;AACnBG,0BAAiC,CAAA;AAEjCC,sBAAa;AACbC,0BAAiB;AAEjBC,qBAAY;AAEXC,iBAAQ,IAAIb,MAAAA;AAGJc;mBAAU,IAAIf,OAAO;MACpCgB,YAAY;MACZC,MAAM,MAAA;AACJ,aAAKC,sBAAqB;MAC5B;MACAC,OAAO,CAACC,OAAOC,UAAUC,aAAAA;AACvBpB,kBAAU,CAAC,KAAKM,cAAc,oDAAA;;;;;;;;;AAE9B,aAAKI,kBAAkBQ,MAAMG;AAE7B,YAAI,KAAKd,WAAW,KAAKA,QAAQc,SAAS,GAAG;AAC3C,eAAKd,UAAUe,OAAOC,OAAO;YAAC,KAAKhB;YAASW;WAAM;QACpD,OAAO;AACL,eAAKX,UAAUW;QACjB;AAEA,YAAI,KAAKd,YAAY;AACnB,eAAKoB,WAAU;AACfJ,mBAAAA;QACF,OAAO;AACL,eAAKd,eAAe,MAAA;AAElB,iBAAKkB,WAAU;AACf,iBAAKlB,eAAeD;AACpBe,qBAAAA;UACF;QACF;MACF;IACF,CAAA;AAEgBK,gBAAgB;MAC9BC,MAAM,CAACC,YAAAA;AAEL,eAAO,IAAIC,QAAc,CAACC,YAAAA;AACxB,gBAAMC,QAAQC,YAAYJ,OAAAA;AAC1B,eAAKlB,cAAcqB,MAAMT;AACzB,eAAKV,YAAY,KAAKE,QAAQmB,KAAKF,KAAAA;AACnC,cAAI,CAAC,KAAKnB,WAAW;AACnB,iBAAKH,eAAewB,KAAKH,OAAAA;UAC3B,OAAO;AACLA,oBAAAA;UACF;QACF,CAAA;MACF;MACAI,WAAW,CAACb,aAAAA;AACVpB,kBAAU,CAAC,KAAKI,YAAY,4CAAA;;;;;;;;;AAC5B,aAAKA,aAAagB;AAClB,aAAKd,eAAY;AACjB,eAAO,MAAA;AACL,eAAKF,aAAaC;QACpB;MACF;IACF;;EAEA,IAAI6B,SAAiB;AACnB,WAAO,KAAKrB;EACd;EAEA,IAAIsB,YAAY;AACd,WAAO,KAAK1B;EACd;EAEA,IAAI2B,gBAAgB;AAClB,WAAO,KAAK1B;EACd;EAEA,IAAI2B,WAAW;AACb,WAAO,KAAK1B;EACd;EAEQK,wBAAwB;AAC9B,UAAMsB,gBAAgB,KAAK9B;AAC3B,SAAKA,iBAAiB,CAAA;AACtB,SAAKG,YAAY;AACjB,SAAKC,MAAM2B,KAAI;AACfD,kBAAcE,QAAQ,CAACC,OAAOA,GAAAA,CAAAA;EAChC;;;;EAKQjB,aAAa;AACnB,QAAIkB,SAAS;AACb,WAAOA,SAAS,KAAKnC,QAASc,QAAQ;AACpC,YAAMS,QAAQa,YAAY,KAAKpC,SAAUmC,MAAAA;AAEzC,UAAI,CAACZ,OAAO;AACV;MACF;AACAY,gBAAUZ,MAAMc;AAGhB,WAAKxC,WAAY0B,MAAMe,OAAO;IAChC;AAEA,QAAIH,SAAS,KAAKnC,QAASc,QAAQ;AAEjC,WAAKd,UAAU,KAAKA,QAASuC,SAASJ,MAAAA;IACxC,OAAO;AACL,WAAKnC,UAAUF;IACjB;EACF;EAEA0C,UAAU;AAER,QAAI,KAAKlC,QAAQmC,iBAAiB,GAAG;AACnC/C,MAAAA,KAAI,oEAAA,QAAA;;;;;;IACN;AACA,QAAI,KAAKY,QAAQoC,iBAAiB,GAAG;AACnChD,MAAAA,KAAIiD,KAAK,qEAAA,QAAA;;;;;;IACX;AACA,SAAKrC,QAAQkC,QAAO;EACtB;AACF;AAKO,IAAMJ,cAAc,CAACQ,QAAgBT,WAAAA;AAC1C,MAAIS,OAAO9B,SAASqB,SAASxC,mBAAmB;AAE9C,WAAOG;EACT;AAEA,QAAM+C,cAAcD,OAAOE,aAAaX,MAAAA;AACxC,QAAME,gBAAgB1C,oBAAoBkD;AAE1C,MAAID,OAAO9B,SAASqB,SAASE,eAAe;AAE1C,WAAOvC;EACT;AAEA,QAAMwC,UAAUM,OAAOL,SAASJ,SAASxC,mBAAmBwC,SAASE,aAAAA;AAErE,SAAO;IACLC;IACAD;EACF;AACF;AAEO,IAAMb,cAAc,CAACc,YAAAA;AAC1B,QAAMf,QAAQR,OAAOgC,YAAYpD,oBAAoB2C,QAAQxB,MAAM;AACnES,QAAMyB,cAAcV,QAAQxB,QAAQ,CAAA;AACpCS,QAAM0B,IAAIX,SAAS3C,iBAAAA;AACnB,SAAO4B;AACT;;;AC9KA,SAAS2B,UAAAA,eAAc;AAEvB,SAASC,wBAAAA,uBAAsBC,SAAAA,QAAOC,SAASC,gBAAAA,qBAAoB;AACnE,SAASC,WAAAA,gBAAe;AACxB,SAASC,qBAAqB;AAC9B,SAASC,aAAAA,kBAAiB;AAE1B,SAASC,OAAAA,MAAKC,eAAe;AAC7B,SAASC,UAAAA,SAAQC,oBAAoB;;;ACRrC,YAAYC,YAAY;AAExB,SAAuBC,SAAAA,cAAa;AACpC,SAASC,aAAAA,kBAAiB;AAC1B,SAASC,OAAAA,YAAW;;AAIpB,IAAMC,iBAAiB;AAwBhB,IAAMC,WAAN,MAAMA;EAaXC,YAA6BC,eAAuB;SAAvBA,gBAAAA;SAZrBC,mBAAmB;SACnBC,YAAsB,CAAA;SAEbC,UAAU,IAAIC,OAAAA;SAEdC,eAA6C,oBAAIC,IAAAA;SACjDC,kBAAkB,oBAAID,IAAAA;SAE/BE,WAAW;SACZC,eAAe,IAAIC,OAAAA;SACVC,SAAS,KAAKR,QAAQQ;AAGpC,SAAKT,UAAUU,KAAKZ,aAAAA;AAGpB,SAAKG,QAAQU,KAAKC,UAAU,KAAKC,wBAAwBC,KAAK,IAAI,CAAA;EACpE;EAEA,IAAIC,YAAY;AACd,WAAO,KAAKd,QAAQc;EACtB;EAEA,IAAIC,gBAAgB;AAClB,WAAO,KAAKf,QAAQe;EACtB;EAEA,IAAIC,eAAe;AACjB,WAAO,KAAKd,aAAae;EAC3B;EAEAC,WAAWC,SAAiB;AAC1B,SAAKpB,UAAUU,KAAKU,OAAAA;EACtB;EAEAC,SAASC,MAAkBC,SAAkBC,WAAmB;AAC9D,SAAKC,cAAcH,MAAMC,SAASC,SAAAA;AAClC,SAAKE,YAAW,EAAGC,MAAM,CAACC,QAAQC,KAAIF,MAAMC,KAAAA,QAAAA;;;;;;EAC9C;EAEAE,UAAU;AACR,QAAI,KAAK3B,aAAae,SAAS,GAAG;AAChCW,MAAAA,KAAIE,KAAK,0CAAA,QAAA;;;;;;IACX;AACA,SAAK5B,aAAa6B,MAAK;AACvB,SAAK/B,QAAQ6B,QAAO;EACtB;EAEQjB,wBAAwBoB,KAAiB;AAC/C,UAAM,EAAET,WAAWU,YAAYC,MAAK,IAAKC,YAAYH,KAAK,CAACT,eAAc,CAAC,KAAKnB,gBAAgBgC,IAAIb,UAAAA,CAAAA;AACnG,QAAI,CAAC,KAAKnB,gBAAgBgC,IAAIb,SAAAA,GAAY;AACxC,UAAIW,MAAMG,SAASJ,YAAa;AAC9B,aAAK7B,gBAAgBkC,IAAIf,WAAW;UAClCgB,QAAQC,OAAOC,KAAKP,KAAAA;UACpBQ,WAAWT;QACb,CAAA;MACF,OAAO;AACL,aAAK3B,aAAaqC,KAAKT,KAAAA;MACzB;IACF,OAAO;AACL,YAAMU,gBAAgB,KAAKxC,gBAAgByC,IAAItB,SAAAA;AAC/CqB,oBAAcL,SAASC,OAAOM,OAAO;QAACF,cAAcL;QAAQL;OAAM;AAClE,UAAIU,cAAcL,OAAOF,SAASO,cAAcF,WAAW;AACzD;MACF;AACA,YAAMV,OAAMY,cAAcL;AAC1B,WAAKnC,gBAAgB2C,OAAOxB,SAAAA;AAC5B,WAAKjB,aAAaqC,KAAKX,IAAAA;IACzB;EACF;EAEQgB,mBAAmB;AACzB,QAAI,KAAK9C,aAAakC,IAAI,KAAKvC,aAAa,GAAG;AAC7C,aAAO,KAAKA;IACd;AAEA,UAAMoD,QAAQ,KAAKnD;AACnB,SAAKA,oBAAoB,KAAKA,mBAAmB,KAAK,KAAKC,UAAUsC;AAErE,WAAO,KAAKtC,UAAUkD,KAAAA;EACxB;EAEQzB,cAAcH,MAAkBC,SAAkBC,WAAmB;AAC3E,QAAI,CAAC,KAAKxB,UAAUmD,SAAS3B,SAAAA,GAAY;AACvC,YAAM,IAAI4B,MAAM,mBAAmB5B,SAAAA,EAAW;IAChD;AAEA,QAAI,CAAC,KAAKrB,aAAakC,IAAIb,SAAAA,GAAY;AACrC,WAAKrB,aAAaoC,IAAIf,WAAW,CAAA,CAAE;IACrC;AAEA,UAAM6B,aAAa,KAAKlD,aAAa2C,IAAItB,SAAAA;AAEzC,UAAM8B,SAAS,CAAA;AACf,aAASC,MAAM,GAAGA,MAAMjC,KAAKgB,QAAQiB,OAAO5D,gBAAgB;AAC1D2D,aAAO5C,KAAKY,KAAKkC,SAASD,KAAKA,MAAM5D,cAAAA,CAAAA;IACvC;AAEA2D,WAAOG,QAAQ,CAACtB,OAAOe,UAAAA;AACrB,YAAMjB,MAAMyB,YAAY;QACtBvB;QACAX;QACAU,YAAYgB,UAAU,IAAI5B,KAAKgB,SAASqB;MAC1C,CAAA;AACAN,iBAAW3C,KAAK;QAAEuB;QAAKV,SAAS2B,UAAUI,OAAOhB,SAAS,IAAIf,UAAUoC;MAAU,CAAA;IACpF,CAAA;EACF;;EAIQC,gBAAsC;AAC5C,QAAIzB;AACJ,WAAO,KAAKhC,aAAae,OAAO,GAAG;AACjC,YAAMM,YAAY,KAAKyB,iBAAgB;AACvC,YAAMI,aAAa,KAAKlD,aAAa2C,IAAItB,SAAAA;AACzC,UAAI,CAAC6B,YAAY;AACf;MACF;AAEAlB,cAAQkB,WAAWQ,MAAK;AACxB,UAAI,CAAC1B,OAAO;AACV;MACF;AACA,UAAIkB,WAAWf,WAAW,GAAG;AAC3B,aAAKnC,aAAa6C,OAAOxB,SAAAA;MAC3B;AACA,aAAOW;IACT;AACA,WAAO;EACT;EAEA,MAAcT,cAAc;AAC1B,QAAI,KAAKpB,UAAU;AACjB;IACF;AACA,SAAKA,WAAW;AAChB,QAAI6B;AACJA,YAAQ,KAAKyB,cAAa;AAC1B,WAAOzB,OAAO;AAEZ,UAAI,CAAC,KAAKlC,QAAQ6D,UAAU;AAC1BjC,QAAAA,KAAI,mBAAA,QAAA;;;;;;AACJ,cAAM,KAAK5B,QAAQ8D,MAAMC,aAAa,CAAA;AACtCnC,QAAAA,KAAI,oBAAA,QAAA;;;;;;MACN;AACA,UAAI;AACF,cAAM,KAAK5B,QAAQU,KAAKsD,KAAK9B,MAAMF,GAAG;AACtCE,cAAMZ,SAAS2C,KAAAA;MACjB,SAAStC,KAAU;AACjBC,QAAAA,KAAI,uBAAuB;UAAED;QAAI,GAAA;;;;;;AACjCO,cAAMZ,SAAS4C,MAAMvC,GAAAA;MACvB;AACAO,cAAQ,KAAKyB,cAAa;IAC5B;AACAQ,IAAAA,WAAU,KAAKjE,aAAae,SAAS,GAAG,yBAAA;;;;;;;;;AACxC,SAAKZ,WAAW;EAClB;AACF;AAEO,IAAMoD,cAAc,CAAC,EAAElC,WAAWU,YAAYC,MAAK,MAAS;AACjE,QAAMkC,mBAA0BC,sBAAe9C,SAAAA;AAC/C,QAAM+C,mBAAmBrC,aAAoBoC,sBAAepC,UAAAA,IAAc;AAC1E,QAAMsC,UAAU/B,OAAOgC,YAAYJ,mBAAmBE,mBAAmBpC,MAAMG,MAAM;AACrFoC,EAAOC,cAAOnD,WAAWgD,OAAAA;AACzB,MAAItC,YAAY;AACdwC,IAAOC,cAAOzC,YAAYsC,SAASH,gBAAAA;EACrC;AACAG,UAAQjC,IAAIJ,OAAOkC,mBAAmBE,gBAAAA;AACtC,SAAOC;AACT;AAEO,IAAMpC,cAAc,CAACd,MAAkBsD,eAAAA;AAC5C,QAAMpD,YAAmBqD,cAAOvD,IAAAA;AAChC,MAAIY;AACJ,MAAI4C,SAAgBD,cAAOE;AAE3B,MAAIH,WAAWpD,SAAAA,GAAY;AACzBU,iBAAoB2C,cAAOvD,MAAMwD,MAAAA;AACjCA,cAAiBD,cAAOE;EAC1B;AAEA,QAAM5C,QAAQb,KAAKkC,SAASsB,MAAAA;AAE5B,SAAO;IAAEtD;IAAWU;IAAYC;EAAM;AACxC;;;;;;;;;;;;;;AD1MA,IAAM6C,UAAUC,QAAOC,gBAAgB,yBAAA;AAEvC,IAAMC,+BAA+B;AACrC,IAAMC,+BAA+B;AA0BrC,IAAMC,iBAAiB;AACvB,IAAMC,sBAAsB;AAC5B,IAAMC,oBAAoB;AAC1B,IAAMC,yBAAyB;AAmDxB,IAAMC,QAAN,MAAMA;EAqBXC,cAAc;AApBGC,qBAAY,IAAIC,SAASL,iBAAAA;AACzBM,8BAAqB,oBAAIC,IAAAA;AACzBC,0BAAiB,oBAAID,IAAAA;AACrBE,gBAAO,IAAIC,SAAAA;AAGpBC,mBAAU;AAEVC,oBAAW;AACXC,uBAAc;AACdC,qBAAY;AAEZC,sBAA0BC;AACjBC,6BAAoB,oBAAIV,IAAAA;AAElCW,uBAAc,IAAIC,OAAAA;AAClBC,wBAAe,IAAID,OAAAA;AAEVE,kBAAS,KAAKjB,UAAUiB;AAItC,SAAKjB,UAAUkB,aAAaC,GAAG,OAAOC,QAAAA;AACpC,YAAM,KAAKC,eAAehC,QAAQiC,OAAOF,GAAAA,CAAAA;IAC3C,CAAA;EACF;EAEAG,aAAaC,WAAsB;AACjC,SAAKC,aAAaD;EACpB;EAEA,IACIE,kBAA0B;AAC5B,WAAO,KAAKD,aAAa,KAAKA,WAAWE,SAAQ,IAAK;EACxD;;;;;;;EAQA,MAAMC,aAAaC,KAAaC,OAA0B,CAAC,GAAoB;AAC7E,UAAMC,UAAU,KAAKC,mBAAmB;MACtCH;MACAI,aAAaH,KAAKG;IACpB,CAAA;AACAC,IAAAA,WAAU,CAACH,QAAQI,MAAM,yBAAyBN,GAAAA,IAAK;;;;;;;;;AAEvD,UAAMZ,SAAS,IAAImB,QAAO;MACxBC,OAAO,CAACC,MAAMC,UAAUC,aAAAA;AACtB,aAAKC,UAAUV,SAASO,IAAAA,EACrBI,KAAK,MAAMF,SAAAA,CAAAA,EACXG,MAAMH,QAAAA;MAEX;MACAI,MAAM,MAAA;MAAO;IACf,CAAA;AAEAb,YAAQI,OAAO,CAACG,SAAAA;AACdP,cAAQc,MAAMC,iBAAiBR,KAAKS;AACpC9B,aAAOkB,KAAKG,IAAAA;IACd;AACAP,YAAQiB,UAAU,CAACC,QAAAA;AAEjB,UAAIA,KAAK;AACP,YAAIhC,OAAOiC,UAAU,OAAA,EAASH,SAAS,GAAG;AACxC9B,iBAAO+B,QAAQC,GAAAA;QACjB,OAAO;AACLhC,iBAAO+B,QAAO;QAChB;MACF,OAAO;AACL/B,eAAO+B,QAAO;MAChB;IACF;AAGA,QAAI;AACF,YAAM,KAAKG,aACT;QACEC,aAAa;UACXC,IAAItB,QAAQsB;UACZxB,KAAKE,QAAQF;UACbI,aAAaF,QAAQE;QACvB;MACF,GACArC,iBAAAA;IAEJ,SAASqD,KAAU;AACjB,WAAKK,gBAAgBvB,SAASkB,GAAAA;AAC9B,YAAMA;IACR;AAEA,WAAOhC;EACT;;;;;;;EAQA,MAAMsC,WAAW1B,KAAaC,OAA0B,CAAC,GAAqB;AAC5E,UAAMC,UAAU,KAAKC,mBAAmB;MACtCH;MACAI,aAAaH,KAAKG;IACpB,CAAA;AACAC,IAAAA,WAAU,CAACH,QAAQI,MAAM,yBAAyBN,GAAAA,IAAK;;;;;;;;;AAGvD,QAAI2B,gBAA8B,CAAA;AAClC,QAAIhB;AAEJT,YAAQI,OAAO,CAACG,SAAAA;AACdP,cAAQc,MAAMC,iBAAiBR,KAAKS;AACpC,UAAIP,UAAU;AACZA,iBAASF,IAAAA;MACX,OAAO;AACLkB,sBAAcrB,KAAKG,IAAAA;MACrB;IACF;AAEA,UAAMmB,OAAgB;MACpBC,MAAM,OAAOpB,MAAkBqB,YAAAA;AAC7B,cAAM,KAAKlB,UAAUV,SAASO,MAAMqB,OAAAA;MAGtC;MACAC,WAAW,CAACC,OAAAA;AACV3B,QAAAA,WAAU,CAACM,UAAU,kCAAA;;;;;;;;;AACrBA,mBAAWqB;AACX,mBAAWvB,QAAQkB,eAAe;AAChCK,aAAGvB,IAAAA;QACL;AACAkB,wBAAgB,CAAA;MAClB;IACF;AAGA,QAAI;AACF,YAAM,KAAKL,aACT;QACEC,aAAa;UACXC,IAAItB,QAAQsB;UACZxB,KAAKE,QAAQF;UACbI,aAAaF,QAAQE;QACvB;MACF,GACArC,iBAAAA;IAEJ,SAASqD,KAAU;AACjB,WAAKK,gBAAgBvB,SAASkB,GAAAA;AAC9B,YAAMA;IACR;AAEA,WAAOQ;EACT;;EAIA,MAAMK,MAAMb,KAAa;AACvB,QAAI,KAAKxC,aAAa;AACpBsD,MAAAA,KAAI,uDAAA,QAAA;;;;;;AACJ;IACF;AACA,QAAI,KAAKvD,UAAU;AACjBuD,MAAAA,KAAI,oDAAA,QAAA;;;;;;AACJ;IACF;AAEA,SAAKvD,WAAW;AAEhB,UAAM,KAAK2C,aACT;MACEW,OAAO;QACLE,OAAOf,KAAKgB;MACd;IACF,GACArE,mBACAH,4BAAAA,EACAkD,MAAM,OAAOM,SAAAA;AACbc,MAAAA,KAAI,+BAA+B;QAAEd,KAAAA;MAAI,GAAA;;;;;;AAEzC,YAAM,KAAKiB,SAASjB,IAAAA;IACtB,CAAA;AAGA,UAAMkB,cAAa,KAAKD,SAASjB,GAAAA,GAAMpD,wBAAwB,IAAIuE,aAAa,0BAAA,CAAA;EAClF;;EAIA,MAAMpB,QAAQC,KAAa;AACzB,QAAI,KAAKxC,aAAa;AACpBsD,MAAAA,KAAI,gDAAA,QAAA;;;;;;AACJ;IACF;AACA,SAAKtD,cAAc;AACnB,SAAK,KAAKJ,KAAKgE,QAAO;AACtB,QAAI,KAAK7D,UAAU;AACjBuD,MAAAA,KAAI,qCAAA,QAAA;;;;;;AACJ,WAAKvD,WAAW;IAClB,OAAO;AAGL,YAAM,KAAK2C,aACT;QACEW,OAAO;UACLE,OAAOf,KAAKgB;QACd;MACF,GACArE,iBAAAA,EACA+C,MAAM,OAAOM,SAAAA;AACbc,QAAAA,KAAI,wCAAwC;UAAEd,KAAAA;QAAI,GAAA;;;;;;MACpD,CAAA;IACF;AAEA,SAAKiB,SAASjB,GAAAA,EAAKN,MAAM,CAACM,SAAAA;AACxBc,MAAAA,KAAI,iCAAiC;QAAEd,KAAAA;MAAI,GAAA;;;;;;IAC7C,CAAA;EACF;;EAIA,MAAMiB,SAASjB,KAAa;AAC1B,QAAI,KAAKvC,WAAW;AAClBqD,MAAAA,KAAI,+CAAA,QAAA;;;;;;AACJ;IACF;AAEA,SAAK,KAAK1D,KAAKgE,QAAO;AAEtB,UAAM,KAAKrE,UAAUgD,QAAO;AAE5B,eAAWjB,WAAW,KAAK3B,eAAekE,OAAM,GAAI;AAClDvC,cAAQiB,UAAUC,GAAAA;IACpB;AACA,SAAKvC,YAAY;AACjB,UAAM,KAAK6D,WAAU;AAErB,SAAKzD,YAAY0D,KAAKvB,GAAAA;AAGtB,SAAK/C,mBAAmBuE,MAAK;AAC7B,SAAKrE,eAAeqE,MAAK;EAC3B;EAEA,MAAcpD,eAAeqD,KAAc;AACzC,QAAI,KAAKhE,WAAW;AAClBqD,MAAAA,KAAIY,KAAK,mCAAmC;QAAED;MAAI,GAAA;;;;;;AAClD;IACF;AAEA,QAAIA,IAAIZ,OAAO;AACb,UAAI,CAAC,KAAKtD,UAAU;AAClBuD,QAAAA,KAAI,yDAAA,QAAA;;;;;;AACJ,cAAM,KAAKD,MAAM,IAAIc,MAAM,qBAAA,CAAA;MAC7B,OAAO;AACLb,QAAAA,KAAI,6CAAA,QAAA;;;;;;MACN;AAEA;IACF;AAEA,QAAIW,IAAItB,aAAa;AACnB,YAAMrB,UAAU,KAAKC,mBAAmB;QACtCH,KAAK6C,IAAItB,YAAYvB;QACrBI,aAAayC,IAAItB,YAAYnB;MAC/B,CAAA;AACAF,cAAQ8C,WAAWH,IAAItB,YAAYC;AAGnC,iBAAWf,QAAQP,QAAQ+C,QAAQ;AACjC,cAAM,KAAK3B,aACT;UACEb,MAAM;YACJyC,WAAWhD,QAAQ8C;YACnBvC;UACF;QACF,GACAP,QAAQsB,EAAE;MAEd;AACAtB,cAAQ+C,SAAS,CAAA;IACnB,WAAWJ,IAAIpC,MAAM;AACnB,YAAMrB,SAAS,KAAKf,mBAAmB8E,IAAIN,IAAIpC,KAAKyC,SAAS,KAAKE,cAAAA;AAClE,UAAI,CAAChE,OAAOkB,MAAM;AAChB4B,QAAAA,KAAIY,KAAK,kDAAkD;UAAE9C,KAAKZ,OAAOY;QAAI,GAAA;;;;;;AAC7E;MACF;AACAZ,aAAOkB,KAAKuC,IAAIpC,KAAKA,IAAI;IAC3B;EACF;EAEA,MAAca,aAAauB,KAAcK,YAAY,IAAIpB,UAAUnE,8BAA8B;AAC/F,QAAI,KAAKkB,WAAW;AAClBqD,MAAAA,KAAImB,KAAK,uCAAuC;QAAER;MAAI,GAAA;;;;;;AACtD;IACF;AACA,QAAI;AACF,YAAMS,UAAU,IAAIC,QAAAA;AACpB,WAAKpF,UAAUqF,SAAShG,QAAQiG,OAAOZ,GAAAA,GAAMS,SAASJ,SAAAA;AACtD,YAAMI,QAAQI,KAAK;QAAE5B;MAAQ,CAAA;IAC/B,SAASV,KAAU;AACjB,YAAM,KAAKD,QAAQC,GAAAA;IACrB;EACF;EAEQjB,mBAAmBwD,QAA8C;AACvE,QAAI,KAAKpF,eAAeqF,SAAS,GAAG;AAClCC,MAAAA,sBAAqB,KAAKrF,MAAM,YAAY,KAAKkE,WAAU,GAAI7E,cAAAA;IACjE;AACA,QAAIqC,UAAU,KAAK3B,eAAe4E,IAAIQ,OAAO3D,GAAG;AAChD,QAAI,CAACE,SAAS;AACZA,gBAAU;QACRsB,IAAI,KAAK9C;QACTsE,UAAU;QACVhD,KAAK2D,OAAO3D;QACZI,aAAauD,OAAOvD;QACpB6C,QAAQ,CAAA;QACR3C,MAAM;QACNa,SAAS;QACTH,OAAO;UACL8C,WAAW;UACX7C,eAAe;QACjB;MACF;AACA,WAAK1C,eAAewF,IAAI7D,QAAQF,KAAKE,OAAAA;AACrC,WAAK7B,mBAAmB0F,IAAI7D,QAAQsB,IAAItB,OAAAA;AACxC,WAAK/B,UAAU6F,WAAW9D,QAAQsB,EAAE;IACtC;AAEA,WAAOtB;EACT;EAEA,MAAcU,UAAUV,SAAkBO,MAAkBqB,SAAiC;AAC3F,QAAIrB,KAAKS,SAASpD,qBAAqB;AACrCoE,MAAAA,KAAIY,KAAK,yCAAyC;QAAEc,MAAMnD,KAAKS;QAAQ+C,WAAWnG;MAAoB,GAAA;;;;;;IACxG;AAEAoC,YAAQc,MAAM8C,aAAarD,KAAKS;AAChC,QAAIhB,QAAQ8C,aAAa,MAAM;AAE7B9C,cAAQ+C,OAAO3C,KAAKG,IAAAA;AACpB;IACF;AACA,UAAM,KAAKa,aACT;MACEb,MAAM;QACJyC,WAAWhD,QAAQ8C;QACnBvC;MACF;IACF,GACAP,QAAQsB,IACRM,OAAAA;EAEJ;EAEQL,gBAAgBvB,SAAkBkB,KAAa;AACrD,QAAIlB,QAAQiB,SAAS;AACnBjB,cAAQiB,QAAQC,GAAAA;IAClB;AAEA,SAAK/C,mBAAmB6F,OAAOhE,QAAQsB,EAAE;AACzC,SAAKjD,eAAe2F,OAAOhE,QAAQF,GAAG;EACxC;EAEA,MAAc0C,aAAa;AACzB,QAAI,KAAK7D,aAAa,KAAKD,aAAa;AACtC,UAAI,CAAC,KAAKE,YAAY;AACpB;MACF;AAGA,YAAMqF,YAAY,KAAKrF;AACvB,WAAKA,aAAaC;AAElBoF,gBAAUC,iBAAiB;AAC3BD,gBAAUE,kBAAkB;AAC5B,iBAAWC,KAAKH,UAAUI,UAAU;AAClCD,UAAED,kBAAkB;MACtB;AACA,WAAKlF,aAAawD,KAAKwB,SAAAA;AAEvB,WAAKnF,kBAAkB4D,MAAK;AAC5B;IACF;AAEA,UAAMkB,YAAY,KAAK3F,UAAU2F;AACjC,UAAM7C,gBAAgB,KAAK9C,UAAU8C;AAErC,UAAMuD,MAAMC,KAAKD,IAAG;AACpB,UAAME,WAAW,KAAK5F,cAAc0F,MAAM,KAAK1F,WAAW6F,aAAa,MAAQ;AAC/E,UAAMC,sBAAsB,CAACC,SAA2BC,SACtDA,OACI;MACEC,eAAeL,YAAYG,QAAQf,YAAYgB,KAAKhB,aAAaY,WAAW3F;MAC5EiG,mBAAmBN,YAAYG,QAAQ5D,gBAAgB6D,KAAK7D,iBAAiByD,WAAW3F;IAC1F,IACA,CAAC;AAEP,SAAKD,aAAa;MAChB6F,WAAWH;MACXD,UAAUU,MAAMC,KAAK,KAAK3G,eAAekE,OAAM,CAAA,EAAI0C,IAAI,CAACjF,YAAAA;AACtD,cAAMc,QAAoC;UACxCQ,IAAItB,QAAQsB;UACZxB,KAAKE,QAAQF;UACbI,aAAaF,QAAQE;UACrBiE,iBAAiBnE,QAAQ+C,OAAO/B;UAChC4C,WAAW5D,QAAQc,MAAM8C;UACzB7C,eAAef,QAAQc,MAAMC;UAC7B,GAAG2D,oBAAoB1E,QAAQc,OAAO,KAAKhC,kBAAkBmE,IAAIjD,QAAQsB,EAAE,CAAA;QAC7E;AAEA,aAAKxC,kBAAkB+E,IAAI7D,QAAQsB,IAAIR,KAAAA;AACvC,eAAOA;MACT,CAAA;MACA8C;MACA7C;MACA,GAAG2D,oBAAoB;QAAEd;QAAW7C;MAAc,GAAG,KAAKnC,UAAU;MACpEsF,gBAAgB,KAAKjG,UAAUiB,OAAOgG;MACtCf,iBAAiB,KAAKlG,UAAUiB,OAAOiG;IACzC;AAEA,SAAKlG,aAAawD,KAAK,KAAK7D,UAAU;EACxC;AACF;;EA3YGwG;GAhCUrH,MAAAA,WAAAA,mBAAAA,IAAAA;;;;;;;;;;;;;;AH7Eb,IAAMsH,6BAA6B;AACnC,IAAMC,4BAA4B;AAK3B,IAAMC,WAAN,MAAMA;EAyBXC,YAAY,EAAEC,WAAWC,aAAaC,cAAc,GAAGC,KAAAA,GAAwB;AAnB9DC,gBAAO,IAAIC,SAAQ;MAClCC,SAAS,CAACC,QAAAA;AACR,aAAK,KAAKC,QAAQD,GAAAA,EAAKE,MAAM,MAAA;AAC3BC,UAAAA,KAAIC,MAAM,wBAAwBJ,KAAAA;;;;;;QACpC,CAAA;MACF;IACF,CAAA;AAEiBK,kBAAS,IAAIC,MAAAA;AAIbC,uBAAc,oBAAIC,IAAAA;AAClBC,6BAAoB,oBAAIC,IAAAA;AAEjCC,iBAAQ;AACRC,uBAAc;AACdC,qBAAY;AAGlBC,IAAAA,WAAU,OAAOrB,cAAc,WAAA,QAAA;;;;;;;;;AAC/BqB,IAAAA,WAAUC,UAAUC,YAAYtB,WAAAA,GAAAA,QAAAA;;;;;;;;;AAChCoB,IAAAA,WAAUC,UAAUC,YAAYrB,YAAAA,GAAAA,QAAAA;;;;;;;;;AAChC,SAAKF,YAAYA;AACjB,SAAKC,cAAcA;AACnB,SAAKC,eAAeA;AAEpB,SAAKsB,WAAW,IAAIC,iBAClB;MACEC,mBAAmBvB,KAAKwB,4BAA4B/B;MACpDgC,kBAAkBzB,KAAK0B,2BAA2BhC;MAClDiC,WAAW,MAAA;AACT,YAAI,KAAKX,eAAe,KAAKC,WAAW;AACtC;QACF;AACAV,QAAAA,KAAIqB,KAAK,uDAAA,QAAA;;;;;;AACT,aAAKC,MAAM,IAAIC,cAAa,mBAAA,CAAA,EAAsBxB,MAAM,CAACF,QAAQG,KAAID,MAAMF,KAAAA,QAAAA;;;;;;MAC7E;IACF,GACA,KAAKN,aACL,KAAKC,YAAY;AAGnB,SAAKsB,SAASU,sBAAsBC,IAAI,OAAOC,SAAAA;AAC7C1B,MAAAA,KAAI,oBAAoB;QAAE0B;MAAK,GAAA;;;;;;AAC/Bf,MAAAA,WAAU,CAAC,KAAKL,kBAAkBqB,IAAID,IAAAA,GAAO,mCAAA;;;;;;;;;AAC7C,WAAKpB,kBAAkBsB,IAAIF,IAAAA;AAE3B,UAAI,KAAKtB,YAAYuB,IAAID,IAAAA,GAAO;AAC9B,YAAI;AACF,gBAAM,KAAKG,eAAeH,IAAAA;QAC5B,SAAS7B,KAAU;AACjB,gBAAM,KAAKC,QAAQD,GAAAA;QACrB;MACF;IACF,CAAA;AAEA;AAEE,WAAKK,OAAO4B,OAAOC,GAAG,SAAS,YAAA;AAC7B,YAAI,KAAKtB,eAAe,KAAKC,WAAW;AACtCV,UAAAA,KAAI,2FAAA,QAAA;;;;;;AACJ;QACF;AACA,cAAM,KAAKF,QAAO;MACpB,CAAA;AAEA,WAAKI,OAAO4B,OAAOC,GAAG,SAAS,OAAOlC,QAAAA;AACpC,cAAM,KAAKC,QAAQD,GAAAA;MACrB,CAAA;IACF;AAGA,SAAKK,OAAO8B,aAAaD,GAAG,CAACE,UAAAA;AAC3BjC,MAAAA,KAAIkC,MAAM,4BAA4B;QACpC3C;QACAC;QACA2C,WAAWF,MAAME;QACjBC,eAAeH,MAAMG;QACrBC,eAAeJ,MAAMI;QACrBC,mBAAmBL,MAAMK;QACzBC,UAAUN,MAAMM;MAClB,GAAA;;;;;;IAGF,CAAA;EACF;EAEA,IACIC,kBAA0B;AAC5B,WAAO,KAAKC,aAAa,KAAKA,WAAWC,SAAQ,IAAK;EACxD;EAEA,IAAIZ,SAAiB;AACnB,WAAO,KAAK5B,OAAO4B;EACrB;EAEA,IAAIG,QAA2B;AAC7B,WAAO,KAAK/B,OAAO8B;EACrB;;;;EAMA,MAAMW,KAAKC,YAAuBhC,UAAUiC,OAAM,GAAI;AAEpD,SAAKJ,aAAaG;AAClB5C,IAAAA,KAAI,QAAA,QAAA;;;;;;AACJ,SAAK8C,cAAc,8BAA8B,KAAKhC,QAAQ;AAC9D,UAAM,KAAKe,eAAe,4BAAA;AAC1B,SAAKrB,QAAQ;AACb,SAAKN,OAAO6C,aAAaH,SAAAA;EAC3B;EAEA,MAAMI,MAAMnD,KAAa;AAEvB,UAAM,KAAKC,QAAQD,GAAAA;EACrB;EAEA,MACMyB,MAAMzB,KAAa;AACvB,QAAI,KAAKa,aAAa,KAAKD,aAAa;AACtC;IACF;AACA,SAAKC,YAAY;AAEjB,QAAI,KAAKhB,KAAKuD,UAAU;AACtB;IACF;AAEA,UAAM,KAAKvD,KAAKwD,QAAO;AAEvB,eAAWC,aAAa,KAAK/C,YAAYgD,OAAM,GAAI;AACjD,UAAI;AACF,cAAMD,UAAUE,QAAQxD,GAAAA;MAC1B,SAASA,MAAU;AACjBG,QAAAA,KAAID,MAAMF,MAAAA,QAAAA;;;;;;MACZ;IACF;AAEA,UAAM,KAAKK,OAAOJ,QAAQD,GAAAA;EAC5B;EAEA,MAEMC,QAAQD,KAAa;AACzB,QAAI,KAAKY,eAAe,KAAKC,WAAW;AACtC;IACF;AACAV,IAAAA,KAAI,0BAA0B;MAAEsD,iBAAiB,KAAKlD,YAAYmD;IAAK,GAAA;;;;;;AACvE,SAAK9C,cAAc;AACnB,QAAI,KAAKf,KAAKuD,UAAU;AACtB;IACF;AAEA,UAAM,KAAKvD,KAAKwD,QAAO;AAEvB,eAAWC,aAAa,KAAK/C,YAAYgD,OAAM,GAAI;AACjD,UAAI;AACFpD,QAAAA,KAAI,wBAAwB;UAAE0B,MAAMyB,UAAU9D,YAAYqC;QAAK,GAAA;;;;;;AAC/D,cAAMyB,UAAUK,QAAQ3D,GAAAA;AACxBG,QAAAA,KAAI,uBAAuB;UAAE0B,MAAMyB,UAAU9D,YAAYqC;QAAK,GAAA;;;;;;MAChE,SAAS7B,MAAU;AACjBG,QAAAA,KAAID,MAAMF,MAAAA,QAAAA;;;;;;MACZ;IACF;AAEA,UAAM,KAAKK,OAAO8C,MAAK;AACvBhD,IAAAA,KAAI,sBAAA,QAAA;;;;;;EACN;EAEAyD,aAAa/B,MAAcyB,WAA8B;AACvD,QAAI,CAAC,KAAK3C,OAAO;AACf,YAAM,IAAIkD,MAAM,UAAA;IAClB;AAEA1D,IAAAA,KAAI,gBAAgB;MAAE0B;IAAK,GAAA;;;;;;AAC3B,SAAKoB,cAAcpB,MAAMyB,SAAAA;AAGzBQ,iBAAa,KAAKjE,MAAM,YAAA;AACtB,UAAI;AACF,cAAM,KAAKoB,SAAS8C,kBAAkBlC,IAAAA;MACxC,SAAS7B,KAAK;AACZ,YAAIA,eAAegE,iBAAgB;AACjC;QACF;AACA,cAAMhE;MACR;IACF,CAAA;AAEA,QAAI,KAAKS,kBAAkBqB,IAAID,IAAAA,GAAO;AAEpCiC,mBAAa,KAAKjE,MAAM,YAAA;AACtB,cAAM,KAAKmC,eAAeH,IAAAA;MAC5B,CAAA;IACF;EACF;EAEQoB,cAAcgB,eAAuBX,WAA8B;AACzExC,IAAAA,WAAU,CAACmD,cAAcC,SAAS,GAAA,GAAM,0BAAA;;;;;;;;;AACxCpD,IAAAA,WAAU,CAAC,KAAKP,YAAYuB,IAAImC,aAAAA,GAAgB,4BAAA;;;;;;;;;AAChD,SAAK1D,YAAYqB,IAAIqC,eAAeX,SAAAA;EACtC;EAEA,MAActB,eAAeiC,eAAuB;AAClD9D,IAAAA,KAAI,kBAAkB;MAAE8D;IAAc,GAAA;;;;;;AACtC,UAAMX,YAAY,KAAK/C,YAAY4D,IAAIF,aAAAA,KAAkBG,eAAAA;AAEzD,UAAMC,UAA4B;MAChC5E,WAAW,KAAKA;MAChBC,aAAa,KAAKA;MAClBC,cAAc,KAAKA;MACnB2E,YAAY,OAAOC,aAAqBC,SAAAA;AACtC1D,QAAAA,WAAU,CAACyD,YAAYL,SAAS,GAAA,GAAM,wBAAA;;;;;;;;;AACtC,eAAO,KAAK7D,OAAOiE,WAAW,GAAGL,aAAAA,IAAiBM,WAAAA,IAAeC,IAAAA;MACnE;MACAC,cAAc,OAAOF,aAAqBC,SAAAA;AACxC1D,QAAAA,WAAU,CAACyD,YAAYL,SAAS,GAAA,GAAM,wBAAA;;;;;;;;;AACtC,eAAO,KAAK7D,OAAOoE,aAAa,GAAGR,aAAAA,IAAiBM,WAAAA,IAAeC,IAAAA;MACrE;MACArB,OAAO,CAACnD,QAAAA;AACN,aAAK0E,kBAAkB,KAAK7E,MAAM,YAAA;AAChC,gBAAM,KAAKsD,MAAMnD,GAAAA;QACnB,CAAA;MACF;IACF;AAEA,UAAMsD,UAAUqB,OAAON,OAAAA;AACvBlE,IAAAA,KAAI,oBAAoB;MAAE8D;IAAc,GAAA;;;;;;EAC1C;AACF;;EAhJGW;GA9FUrF,SAAAA,WAAAA,mBAAAA,IAAAA;;EA8HVsF;GA9HUtF,SAAAA,WAAAA,SAAAA,IAAAA;;EAsJVsF;GAtJUtF,SAAAA,WAAAA,WAAAA,IAAAA;;;;ADfN,IAAMuF,cAAN,MAAMA;EAAN;AACYC,kBAAS,oBAAIC,IAAAA;;EAE9BC,WAA+BC,MAA4B;AACzD,UAAMC,OAAOD,KAAKE,QAAO;AACzB,SAAKL,OAAOM,IAAIF,IAAAA;AAChB,WAAOA;EACT;EAEA,CAACG,YAAgCJ,MAAuC;AACtE,WAAO,MAAM;AACX,YAAM,KAAKD,WAAWC,IAAAA;IACxB;EACF;EAEA,MAAMK,UAAU;AACd,UAAMC,QAAQC,IAAIC,MAAMC,KAAK,KAAKZ,MAAM,EAAEa,IAAI,CAACC,UAAUA,MAAMN,QAAO,CAAA,CAAA;EACxE;EAEA,MAAMO,QAAQC,OAAiBC,OAAiB;AAC9CC,IAAAA,WAAUF,UAAUC,OAAAA,QAAAA;;;;;;;;;AACpBC,IAAAA,WAAU,KAAKlB,OAAOmB,IAAIH,KAAAA,GAAAA,QAAAA;;;;;;;;;AAC1BE,IAAAA,WAAU,KAAKlB,OAAOmB,IAAIH,KAAAA,GAAAA,QAAAA;;;;;;;;;AAE1B,UAAMI,cAAcJ,MAAMK,iBAAiB;MAAEC,WAAW;MAAMC,cAAcN,MAAMO;IAAO,CAAA;AACzF,UAAMC,cAAcR,MAAMI,iBAAiB;MAAEC,WAAW;MAAOC,cAAcP,MAAMQ;IAAO,CAAA;AAE1FE,gBAAYN,YAAYO,SAASC,QAAQH,YAAYE,SAASC,MAAM;AACpE,UAAMnB,QAAQC,IAAI;MAACM,MAAMa,eAAeT,WAAAA;MAAcH,MAAMY,eAAeJ,WAAAA;KAAa;AAExF,WAAO;MAACL;MAAaK;;EACvB;EAEA,MAAMK,WAAWd,OAAiBC,OAAiB;AACjDC,IAAAA,WAAUF,UAAUC,OAAAA,QAAAA;;;;;;;;;AACpBC,IAAAA,WAAU,KAAKlB,OAAOmB,IAAIH,KAAAA,GAAAA,QAAAA;;;;;;;;;AAC1BE,IAAAA,WAAU,KAAKlB,OAAOmB,IAAIH,KAAAA,GAAAA,QAAAA;;;;;;;;;AAE1B,UAAMI,cAAcT,MAAMC,KAAKI,MAAMe,WAAW,EAAEC,KAAK,CAACC,eACtDA,WAAWV,aAAaW,OAAOjB,MAAMO,MAAM,CAAA;AAE7C,UAAMC,cAAcd,MAAMC,KAAKK,MAAMc,WAAW,EAAEC,KAAK,CAACC,eACtDA,WAAWV,aAAaW,OAAOlB,MAAMQ,MAAM,CAAA;AAG7CN,IAAAA,WAAUE,aAAAA,QAAAA;;;;;;;;;AACVF,IAAAA,WAAUO,aAAAA,QAAAA;;;;;;;;;AAEV,UAAMhB,QAAQC,IAAI;MAACM,MAAMmB,gBAAgBf,WAAAA;MAAcH,MAAMkB,gBAAgBV,WAAAA;KAAa;EAC5F;AACF;AAEO,IAAMW,WAAN,MAAMA;EAGXC,YAA4Bb,SAAoBc,WAAUC,OAAM,GAAI;SAAxCf,SAAAA;SAFZO,cAAc,oBAAI9B,IAAAA;EAEmC;EAErE,MAAgBuC,OAAOP,YAA4B;EAAC;EACpD,MAAgBQ,QAAQR,YAA4B;EAAC;EAErDZ,iBAAiB,EAAEC,WAAWC,aAAY,GAAqD;AAC7F,UAAMU,aAAa,IAAIS,eAAe,KAAKlB,QAAQD,cAAcD,SAAAA;AACjE,SAAKS,YAAYzB,IAAI2B,UAAAA;AACrB,WAAOA;EACT;EAEA,MAAMJ,eAAeI,YAA4B;AAC/Cf,IAAAA,WAAU,KAAKa,YAAYZ,IAAIc,UAAAA,GAAAA,QAAAA;;;;;;;;;AAC/B,UAAMA,WAAWN,SAASgB,KAAKL,WAAUC,OAAM,CAAA;AAC/C,UAAM,KAAKC,OAAOP,UAAAA;EACpB;EAEA,MAAME,gBAAgBF,YAA4B;AAChDf,IAAAA,WAAU,KAAKa,YAAYZ,IAAIc,UAAAA,GAAAA,QAAAA;;;;;;;;;AAC/B,UAAM,KAAKQ,QAAQR,UAAAA;AACnB,UAAMA,WAAWN,SAASiB,MAAK;AAC/B,SAAKb,YAAYc,OAAOZ,UAAAA;EAC1B;EAEA,MAAMzB,UAAU;AACd,eAAWmB,YAAY,KAAKI,aAAa;AACvC,YAAM,KAAKI,gBAAgBR,QAAAA;IAC7B;EACF;AACF;AAEA,IAAMD,cAAc,CAACoB,SAAiBC,YAAAA;AACpCC,WAASF,SAASC,SAAS,CAACE,QAAAA;AAC1B,QAAIA,OAAOA,IAAIC,SAAS,8BAA8B;AACpDC,MAAAA,KAAIC,MAAMH,KAAAA,QAAAA;;;;;;IACZ;EACF,CAAA;AACAD,WAASD,SAASD,SAAS,CAACG,QAAAA;AAC1B,QAAIA,OAAOA,IAAIC,SAAS,8BAA8B;AACpDC,MAAAA,KAAIC,MAAMH,KAAAA,QAAAA;;;;;;IACZ;EACF,CAAA;AACF;AAEO,IAAMP,iBAAN,MAAMA;EAGXL,YACkBgB,aACA9B,cACAD,WAChB;SAHgB+B,cAAAA;SACA9B,eAAAA;SACAD,YAAAA;AAEhB,SAAKK,WAAW,IAAI2B,SAAS;MAC3BhC;MACA+B;MACA9B;IACF,CAAA;EACF;AACF;;;AM7HA,SAASgC,gBAAAA,eAAcC,WAAAA,gBAAe;AACtC,SAASC,aAAAA,kBAAiB;AAC1B,SAASC,OAAAA,YAAW;AACpB,SAASC,UAAAA,eAAc;AAEvB,SAASC,sBAAAA,2BAA6C;;AAU/C,IAAMC,gBAAN,MAAMA;EAOXC,YAA4BC,YAAoC,CAAC,GAAG;SAAxCA,YAAAA;SANZC,OAAO,IAAIR,SAAAA;SACXS,SAAS,IAAIT,SAAAA;SACbU,UAAU,IAAIV,SAAAA;EAIuC;EAErE,IAAIW,eAAe;AACjB,WAAO,KAAKC,kBAAkBD;EAChC;EAEA,MAAME,OAAOC,SAA2B;AACtCZ,IAAAA,KAAI,UAAU;MAAEa,aAAaD,QAAQC;MAAaJ,cAAcG,QAAQH;IAAa,GAAA;;;;;;AACrF,SAAKC,mBAAmBE;AACxB,SAAKE,OAAOZ,oBAA+E;MACzFa,MAAM,MAAMH,QAAQI,WAAW,OAAO;QACpCC,aAAa;MACf,CAAA;MACAC,WAAW;QACTC,aAAalB,QAAOmB,WAAW,iCAAA;MACjC;MACAC,SAAS;QACPF,aAAalB,QAAOmB,WAAW,iCAAA;MACjC;MACAE,UAAU;QACRH,aAAa;UACXI,UAAU,OAAOC,YAAAA;UAEjB;UACAC,UAAU,OAAOD,YAAAA;AACf,mBAAO;cACLE,MAAMF,QAAQE;YAChB;UACF;QACF;MACF;MACAC,SAAS;IACX,CAAA;AAEA,UAAM,KAAKb,KAAKR,KAAI;AACpB,UAAM,KAAKD,UAAUM,SAAM;AAE3B,SAAKL,KAAKsB,KAAI;EAChB;EAEA,MAAMC,QAAQC,KAAa;AACzB9B,IAAAA,KAAI,WAAW;MAAE8B;IAAI,GAAA;;;;;;AACrB,UAAM,KAAKzB,UAAUwB,UAAO;AAC5B,SAAKtB,OAAOqB,KAAI;AAChB,UAAM,KAAKd,MAAMiB,MAAAA;EACnB;EAEA,MAAMC,QAAQF,KAAa;AACzB9B,IAAAA,KAAI,WAAW;MAAE8B;IAAI,GAAA;;;;;;AACrB,UAAM,KAAKzB,UAAU2B,UAAO;AAC5B,SAAKxB,QAAQoB,KAAI;AACjB,UAAM,KAAKd,MAAMmB,MAAAA;EACnB;EAEA,MAAMC,KAAKC,UAAU,QAAQ;AAC3B,UAAM,KAAK7B,KAAK8B,KAAK;MAAET,SAAS;IAAK,CAAA;AACrC,UAAMU,MAAM,MAAMxC,cAAa,KAAKiB,KAAKwB,IAAInB,YAAYM,SAAS;MAAEC,MAAMS;IAAQ,CAAA,GAAI,IAAA;AACtFpC,IAAAA,WAAUsC,IAAIX,SAASS,SAAAA,QAAAA;;;;;;;;;EACzB;;;;EAKA,MAAMI,gBAAgBT,KAAa;AACjC,SAAKpB,kBAAkBqB,MAAMD,GAAAA;EAC/B;AACF;;;ACxFA,SAASU,mBAAmB;AAG5B,SAASC,WAAAA,gBAAe;AACxB,SAASC,aAAAA,kBAAiB;AAC1B,SAASC,OAAAA,YAAW;AACpB,SAASC,UAAAA,eAAc;AAEvB,SAASC,sBAAAA,2BAA6C;;AAU/C,IAAMC,2BAAN,MAAMA;EASXC,YAA4BC,YAA+C,CAAC,GAAG;SAAnDA,YAAAA;SARZC,OAAO,IAAIR,SAAAA;SACXS,SAAS,IAAIT,SAAAA;SACbU,UAAU,IAAIV,SAAAA;SACbW,WAAW,oBAAIC,IAAAA;EAKgD;EAEhF,IAAIC,eAAe;AACjB,WAAO,KAAKC,kBAAkBD;EAChC;EAEA,MAAcE,YAAYC,WAAmBC,WAAW,GAAGC,YAAY,MAAM;AAC3EjB,IAAAA,WAAU,CAAC,KAAKU,SAASQ,IAAIH,SAAAA,GAAY,0BAA0BA,SAAAA,IAAW;;;;;;;;;AAE9E,UAAMI,gBAAgB,MAAM,KAAKN,iBAAkBO,aAAaL,WAAW;MACzEM,aAAa;IACf,CAAA;AAEA,UAAMC,cAA0B;MAC9BH;MACAI,WAAW;MACXC,eAAe;MACfC,YAAY;MACZC,eAAe;MACfC,gBAAgBC,KAAKC,IAAG;IAC1B;AAEA,UAAMC,YAAY,MAAA;AAChBR,kBAAYS,QAAQC,WAAW,MAAA;AAC7B,cAAMC,QAAQnC,YAAYmB,SAAAA;AAE1B,YACE,CAACE,cAAce,MAAMD,OAAO,UAAU,CAACE,QAAAA;AACrC,cAAI,CAACA,KAAK;AACRb,wBAAYC,aAAaU,MAAMG;UACjC,OAAO;AACLd,wBAAYG,cAAc;UAC5B;QACF,CAAA,GACA;AACAN,wBAAckB,KAAK,SAASP,SAAAA;QAC9B,OAAO;AACLQ,kBAAQC,SAAST,SAAAA;QACnB;MACF,GAAGd,QAAAA;IACL;AAEAc,cAAAA;AAEA,SAAKpB,SAAS8B,IAAIzB,WAAWO,WAAAA;AAE7BH,kBAAcsB,GAAG,QAAQ,CAACC,SAAAA;AACxBpB,kBAAYE,iBAAiBkB,KAAKN;IACpC,CAAA;AAEAjB,kBAAcsB,GAAG,SAAS,CAACN,QAAAA;AACzBb,kBAAYI,iBAAiB;IAC/B,CAAA;AAEAP,kBAAcsB,GAAG,SAAS,MAAA;AACxBtB,oBAAcwB,mBAAkB;IAClC,CAAA;AAEArB,gBAAYsB,iBAAiBC,YAAY,MAAA;AACvC,YAAM,EAAEtB,WAAWC,eAAeC,YAAYC,cAAa,IAAKJ;AAEhErB,MAAAA,KAAI6C,MAAM,0BAA0B;QAClC/B;QACAQ;QACAC;QACAC;QACAC;QACAqB,MAAM,KAAKlC,kBAAkBmC;QAC7BC,IAAI,KAAKpC,kBAAkBD;MAC7B,GAAA;;;;;;IACF,GAAG,GAAA;EACL;EAEQsC,aAAanC,WAA0B;AAC7Cf,IAAAA,WAAU,KAAKU,SAASQ,IAAIH,SAAAA,GAAY,0BAA0BA,SAAAA,IAAW;;;;;;;;;AAE7E,UAAMoC,SAAS,KAAKzC,SAAS0C,IAAIrC,SAAAA;AAEjCsC,iBAAaF,OAAOpB,KAAK;AACzBsB,iBAAaF,OAAOP,cAAc;AAElC,UAAM,EAAErB,WAAWC,eAAeC,YAAYC,eAAeC,eAAc,IAAKwB;AAEhFA,WAAOhC,cAAcmC,QAAO;AAC5B,SAAK5C,SAAS6C,OAAOxC,SAAAA;AAErB,WAAO;MACLQ;MACAC;MACAC;MACAC;MACA8B,aAAa5B,KAAKC,IAAG,KAAMF,kBAAkB;IAC/C;EACF;EAEA,MAAM8B,OAAOC,SAA2B;AACtCzD,IAAAA,KAAI,UAAU;MAAE+C,aAAaU,QAAQV;MAAapC,cAAc8C,QAAQ9C;IAAa,GAAA;;;;;;AACrF,SAAKC,mBAAmB6C;AACxB,SAAKC,OAAOxD,oBAGV;MACAyD,MAAM,MAAMF,QAAQG,WAAW,OAAO;QACpCxC,aAAa;MACf,CAAA;MACAyC,WAAW;QACTC,wBAAwB7D,QAAO8D,WAAW,4CAAA;MAC5C;MACAC,SAAS;QACPF,wBAAwB7D,QAAO8D,WAAW,4CAAA;MAC5C;MACAE,UAAU;QACRH,wBAAwB;UACtBI,mBAAmB,OAAOC,YAAAA;AACxB,kBAAM,EAAE1B,MAAM3B,WAAWsD,oBAAoBC,oBAAmB,IAAKF;AAErE,kBAAM,KAAKtD,YAAYC,WAAWsD,oBAAoBC,mBAAAA;AAEtD,mBAAO;cACL5B,MAAM3B;YACR;UACF;UACAwD,iBAAiB,OAAOH,YAAAA;AACtB,kBAAMrD,YAAYqD,QAAQ1B;AAC1B,kBAAM,EAAEnB,WAAWC,eAAeC,YAAYC,eAAe8B,YAAW,IAAK,KAAKN,aAAanC,SAAAA;AAE/F,mBAAO;cACL2B,MAAM3B;cACNQ;cACAC;cACAC;cACAC;cACA8B;YACF;UACF;QACF;MACF;MACAgB,SAAS;IACX,CAAA;AAEA,UAAM,KAAKb,KAAKpD,KAAI;AACpB,UAAM,KAAKD,UAAUmD,SAAM;AAE3B,SAAKlD,KAAKkE,KAAI;EAChB;EAEA,MAAMC,QAAQvC,KAAa;AACzBlC,IAAAA,KAAI,WAAW;MAAEkC;IAAI,GAAA;;;;;;AACrB,UAAM,KAAK7B,UAAUoE,UAAO;AAC5B,SAAKlE,OAAOiE,KAAI;AAChB,eAAW,CAAC1D,WAAWoC,MAAAA,KAAWwB,OAAOC,QAAQ,KAAKlE,QAAQ,GAAG;AAC/DT,MAAAA,KAAI,kBAAkB;QAAEc;MAAU,GAAA;;;;;;AAClCsC,mBAAaF,OAAOnC,QAAQ;AAC5BmC,aAAOhC,cAAcmC,QAAO;IAC9B;AACA,UAAM,KAAKK,MAAMkB,MAAAA;EACnB;EAEA,MAAMC,QAAQ3C,KAAa;AACzBlC,IAAAA,KAAI,WAAW;MAAEkC;IAAI,GAAA;;;;;;AACrB,UAAM,KAAK7B,UAAUwE,UAAO;AAC5B,SAAKrE,QAAQgE,KAAI;AACjB,UAAM,KAAKd,MAAMoB,MAAAA;EACnB;EAEA,MAAMC,aAAaX,oBAA4BC,qBAA6BvD,WAAqC;AAC/G,UAAM,KAAKR,KAAK0E,KAAK;MAAET,SAAS;IAAK,CAAA;AACrC,QAAI,CAACzD,WAAW;AACdA,kBAAY,UAAUjB,YAAY,CAAA,EAAGoF,SAAS,KAAA,CAAA;IAChD;AACA,UAAM,EAAExC,KAAI,IAAK,MAAM,KAAKiB,KAAKwB,IAAIpB,uBAAuBI,kBAAkB;MAC5EzB,MAAM3B;MACNsD;MACAC;IACF,CAAA;AACAtE,IAAAA,WAAU0C,SAAS3B,WAAAA,QAAAA;;;;;;;;;AAEnB,UAAM,KAAKD,YAAYC,WAAWsD,oBAAoBC,mBAAAA;AACtD,WAAOvD;EACT;EAEA,MAAMqE,YAAYrE,WAA6C;AAC7D,UAAM,KAAKR,KAAK0E,KAAK;MAAET,SAAS;IAAK,CAAA;AACrC,UAAM,EAAE9B,MAAMnB,WAAWC,eAAeC,YAAYC,eAAe8B,YAAW,IAC5E,MAAM,KAAKG,KAAKwB,IAAIpB,uBAAuBQ,gBAAgB;MACzD7B,MAAM3B;IACR,CAAA;AAEFf,IAAAA,WAAU0C,SAAS3B,WAAAA,QAAAA;;;;;;;;;AAEnB,UAAMsE,QAAQ,KAAKnC,aAAanC,SAAAA;AAEhC,WAAO;MACLA;MACAuE,OAAO;QACLD;QACAE,QAAQ;UACNhE;UACAC;UACAC;UACAC;UACA8B;QACF;MACF;IACF;EACF;;;;EAKA,MAAMgC,gBAAgBrD,KAAa;AACjC,SAAKtB,kBAAkBgE,MAAM1C,GAAAA;EAC/B;AACF;",
5
+ "mappings": "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",
6
6
  "names": ["pipeline", "invariant", "PublicKey", "log", "runInContextAsync", "synchronized", "scheduleTask", "Context", "failUndefined", "invariant", "PublicKey", "log", "logInfo", "RpcClosedError", "TimeoutError", "asyncTimeout", "scheduleTaskInterval", "TimeoutError", "AsyncTimeoutError", "Context", "log", "schema", "RpcClosedError", "createProtoRpcPeer", "Callback", "HEARTBEAT_RTT_WARN_THRESH", "DEBUG_PRINT_HEARTBEAT", "ControlExtension", "constructor", "opts", "localPeerId", "remotePeerId", "_ctx", "onError", "err", "_extensionContext", "close", "onExtensionRegistered", "registerExtension", "name", "_rpc", "rpc", "Control", "onOpen", "extensionContext", "requested", "getService", "exposed", "handlers", "request", "call", "heartbeat", "ts", "requestTimestamp", "truncate", "port", "createPort", "contentType", "timeout", "heartbeatTimeout", "open", "reqTS", "Date", "resp", "now", "getTime", "warn", "rtt", "delay", "onTimeout", "info", "heartbeatInterval", "onClose", "dispose", "onAbort", "abort", "Duplex", "Event", "invariant", "log", "FRAME_LENGTH_SIZE", "Framer", "_messageCb", "undefined", "_subscribeCb", "_buffer", "_sendCallbacks", "_bytesSent", "_bytesReceived", "_writable", "drain", "_stream", "objectMode", "read", "_processResponseQueue", "write", "chunk", "encoding", "callback", "length", "Buffer", "concat", "_popFrames", "port", "send", "message", "Promise", "resolve", "frame", "encodeFrame", "push", "subscribe", "stream", "bytesSent", "bytesReceived", "writable", "responseQueue", "emit", "forEach", "cb", "offset", "decodeFrame", "bytesConsumed", "payload", "subarray", "destroy", "readableLength", "writableLength", "warn", "buffer", "frameLength", "readUInt16BE", "allocUnsafe", "writeUInt16BE", "set", "Duplex", "scheduleTaskInterval", "Event", "Trigger", "asyncTimeout", "Context", "failUndefined", "invariant", "log", "logInfo", "schema", "TimeoutError", "varint", "Event", "invariant", "log", "MAX_CHUNK_SIZE", "Balancer", "constructor", "_sysChannelId", "_lastCallerIndex", "_channels", "_framer", "Framer", "_sendBuffers", "Map", "_receiveBuffers", "_sending", "incomingData", "Event", "stream", "push", "port", "subscribe", "_processIncomingMessage", "bind", "bytesSent", "bytesReceived", "buffersCount", "size", "addChannel", "channel", "pushData", "data", "trigger", "channelId", "_enqueueChunk", "_sendChunks", "catch", "err", "log", "destroy", "info", "clear", "msg", "dataLength", "chunk", "decodeChunk", "has", "length", "set", "buffer", "Buffer", "from", "msgLength", "emit", "channelBuffer", "get", "concat", "delete", "_getNextCallerId", "index", "includes", "Error", "sendBuffer", "chunks", "idx", "subarray", "forEach", "encodeChunk", "undefined", "_getNextChunk", "shift", "writable", "drain", "waitForCount", "send", "wake", "throw", "invariant", "channelTagLength", "encodingLength", "dataLengthLength", "message", "allocUnsafe", "varint", "encode", "withLength", "decode", "offset", "bytes", "Command", "schema", "getCodecForType", "DEFAULT_SEND_COMMAND_TIMEOUT", "DESTROY_COMMAND_SEND_TIMEOUT", "STATS_INTERVAL", "MAX_SAFE_FRAME_SIZE", "SYSTEM_CHANNEL_ID", "GRACEFUL_CLOSE_TIMEOUT", "Muxer", "constructor", "_balancer", "Balancer", "_channelsByLocalId", "Map", "_channelsByTag", "_ctx", "Context", "_nextId", "_closing", "_destroying", "_disposed", "_lastStats", "undefined", "_lastChannelStats", "afterClosed", "Event", "statsUpdated", "stream", "incomingData", "on", "msg", "_handleCommand", "decode", "setSessionId", "sessionId", "_sessionId", "sessionIdString", "truncate", "createStream", "tag", "opts", "channel", "_getOrCreateStream", "contentType", "invariant", "push", "Duplex", "write", "data", "encoding", "callback", "_sendData", "then", "catch", "read", "stats", "bytesReceived", "length", "destroy", "err", "listeners", "_sendCommand", "openChannel", "id", "_destroyChannel", "createPort", "inboundBuffer", "port", "send", "timeout", "subscribe", "cb", "close", "log", "error", "message", "_dispose", "asyncTimeout", "TimeoutError", "dispose", "values", "_emitStats", "emit", "clear", "cmd", "warn", "Error", "remoteId", "buffer", "channelId", "get", "failUndefined", "info", "trigger", "Trigger", "pushData", "encode", "wait", "params", "size", "scheduleTaskInterval", "bytesSent", "set", "addChannel", "threshold", "delete", "lastStats", "readBufferSize", "writeBufferSize", "c", "channels", "now", "Date", "interval", "timestamp", "calculateThroughput", "current", "last", "bytesSentRate", "bytesReceivedRate", "Array", "from", "map", "readableLength", "writableLength", "logInfo", "CONTROL_HEARTBEAT_INTERVAL", "CONTROL_HEARTBEAT_TIMEOUT", "Teleport", "constructor", "initiator", "localPeerId", "remotePeerId", "rest", "_ctx", "Context", "onError", "err", "destroy", "catch", "log", "error", "_muxer", "Muxer", "_extensions", "Map", "_remoteExtensions", "Set", "_open", "_destroying", "_aborting", "invariant", "PublicKey", "isPublicKey", "_control", "ControlExtension", "heartbeatInterval", "controlHeartbeatInterval", "heartbeatTimeout", "controlHeartbeatTimeout", "onTimeout", "info", "abort", "TimeoutError", "onExtensionRegistered", "set", "name", "has", "add", "_openExtension", "stream", "on", "statsUpdated", "stats", "trace", "bytesSent", "bytesSentRate", "bytesReceived", "bytesReceivedRate", "channels", "sessionIdString", "_sessionId", "truncate", "open", "sessionId", "random", "_setExtension", "setSessionId", "close", "disposed", "dispose", "extension", "values", "onAbort", "extensionsCount", "size", "onClose", "addExtension", "Error", "scheduleTask", "registerExtension", "RpcClosedError", "extensionName", "includes", "get", "failUndefined", "context", "createPort", "channelName", "opts", "createStream", "runInContextAsync", "onOpen", "logInfo", "synchronized", "TestBuilder", "_peers", "Set", "createPeer", "opts", "peer", "factory", "add", "createPeers", "destroy", "Promise", "all", "Array", "from", "map", "agent", "connect", "peer1", "peer2", "invariant", "has", "connection1", "createConnection", "initiator", "remotePeerId", "peerId", "connection2", "pipeStreams", "teleport", "stream", "openConnection", "disconnect", "connections", "find", "connection", "equals", "closeConnection", "TestPeer", "constructor", "PublicKey", "random", "onOpen", "onClose", "TestConnection", "open", "close", "delete", "stream1", "stream2", "pipeline", "err", "code", "log", "catch", "localPeerId", "Teleport", "asyncTimeout", "Trigger", "invariant", "log", "schema", "createProtoRpcPeer", "TestExtension", "constructor", "callbacks", "open", "closed", "aborted", "remotePeerId", "extensionContext", "onOpen", "context", "localPeerId", "_rpc", "port", "createPort", "contentType", "requested", "TestService", "getService", "exposed", "handlers", "voidCall", "request", "testCall", "data", "timeout", "wake", "onClose", "err", "close", "onAbort", "abort", "test", "message", "wait", "res", "rpc", "closeConnection", "randomBytes", "Trigger", "invariant", "log", "schema", "createProtoRpcPeer", "TestExtensionWithStreams", "constructor", "callbacks", "open", "closed", "aborted", "_streams", "Map", "remotePeerId", "extensionContext", "_openStream", "streamTag", "interval", "chunkSize", "has", "networkStream", "createStream", "contentType", "streamEntry", "bytesSent", "bytesReceived", "sendErrors", "receiveErrors", "startTimestamp", "Date", "now", "pushChunk", "timer", "setTimeout", "chunk", "write", "err", "length", "once", "process", "nextTick", "set", "on", "data", "removeAllListeners", "reportingTimer", "setInterval", "trace", "from", "localPeerId", "to", "_closeStream", "stream", "get", "clearTimeout", "destroy", "delete", "runningTime", "onOpen", "context", "_rpc", "port", "createPort", "requested", "TestServiceWithStreams", "getService", "exposed", "handlers", "requestTestStream", "request", "streamLoadInterval", "streamLoadChunkSize", "closeTestStream", "timeout", "wake", "onClose", "Object", "entries", "close", "onAbort", "abort", "addNewStream", "wait", "toString", "rpc", "closeStream", "local", "stats", "remote", "closeConnection"]
7
7
  }
@@ -10,7 +10,7 @@ import {
10
10
  TestPeer,
11
11
  decodeFrame,
12
12
  encodeFrame
13
- } from "./chunk-Q7AG3VZL.mjs";
13
+ } from "./chunk-A2USJKIQ.mjs";
14
14
 
15
15
  // packages/core/mesh/teleport/src/rpc-extension.ts
16
16
  import { invariant } from "@dxos/invariant";
@@ -1 +1 @@
1
- {"inputs":{"inject-globals:@inject-globals":{"bytes":384,"imports":[{"path":"@dxos/node-std/inject-globals","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/teleport/src/muxing/framer.ts":{"bytes":18431,"imports":[{"path":"@dxos/node-std/stream","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@inject-globals","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/teleport/src/muxing/balancer.ts":{"bytes":24205,"imports":[{"path":"varint","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"packages/core/mesh/teleport/src/muxing/framer.ts","kind":"import-statement","original":"./framer"},{"path":"@inject-globals","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/teleport/src/muxing/muxer.ts":{"bytes":52190,"imports":[{"path":"@dxos/node-std/stream","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"packages/core/mesh/teleport/src/muxing/balancer.ts","kind":"import-statement","original":"./balancer"},{"path":"@inject-globals","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/teleport/src/muxing/rpc-port.ts":{"bytes":1185,"imports":[{"path":"@inject-globals","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/teleport/src/muxing/index.ts":{"bytes":673,"imports":[{"path":"packages/core/mesh/teleport/src/muxing/framer.ts","kind":"import-statement","original":"./framer"},{"path":"packages/core/mesh/teleport/src/muxing/muxer.ts","kind":"import-statement","original":"./muxer"},{"path":"packages/core/mesh/teleport/src/muxing/rpc-port.ts","kind":"import-statement","original":"./rpc-port"},{"path":"@inject-globals","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/teleport/src/control-extension.ts":{"bytes":18786,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/rpc","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"@inject-globals","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/teleport/src/teleport.ts":{"bytes":33806,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"packages/core/mesh/teleport/src/control-extension.ts","kind":"import-statement","original":"./control-extension"},{"path":"packages/core/mesh/teleport/src/muxing/index.ts","kind":"import-statement","original":"./muxing"},{"path":"@inject-globals","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/teleport/src/testing/test-builder.ts":{"bytes":16052,"imports":[{"path":"@dxos/node-std/stream","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"packages/core/mesh/teleport/src/teleport.ts","kind":"import-statement","original":"../teleport"},{"path":"@inject-globals","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/teleport/src/testing/test-extension.ts":{"bytes":10114,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/rpc","kind":"import-statement","external":true},{"path":"@inject-globals","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/teleport/src/testing/test-extension-with-streams.ts":{"bytes":27483,"imports":[{"path":"@dxos/node-std/crypto","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/rpc","kind":"import-statement","external":true},{"path":"@inject-globals","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/teleport/src/testing/index.ts":{"bytes":760,"imports":[{"path":"packages/core/mesh/teleport/src/testing/test-builder.ts","kind":"import-statement","original":"./test-builder"},{"path":"packages/core/mesh/teleport/src/testing/test-extension.ts","kind":"import-statement","original":"./test-extension"},{"path":"packages/core/mesh/teleport/src/testing/test-extension-with-streams.ts","kind":"import-statement","original":"./test-extension-with-streams"},{"path":"@inject-globals","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/teleport/src/rpc-extension.ts":{"bytes":6169,"imports":[{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/rpc","kind":"import-statement","external":true},{"path":"@inject-globals","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/teleport/src/index.ts":{"bytes":773,"imports":[{"path":"packages/core/mesh/teleport/src/muxing/index.ts","kind":"import-statement","original":"./muxing"},{"path":"packages/core/mesh/teleport/src/teleport.ts","kind":"import-statement","original":"./teleport"},{"path":"packages/core/mesh/teleport/src/testing/index.ts","kind":"import-statement","original":"./testing"},{"path":"packages/core/mesh/teleport/src/rpc-extension.ts","kind":"import-statement","original":"./rpc-extension"},{"path":"@inject-globals","kind":"import-statement","external":true}],"format":"esm"}},"outputs":{"packages/core/mesh/teleport/dist/lib/browser/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":3038},"packages/core/mesh/teleport/dist/lib/browser/index.mjs":{"imports":[{"path":"packages/core/mesh/teleport/dist/lib/browser/chunk-Q7AG3VZL.mjs","kind":"import-statement"},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/rpc","kind":"import-statement","external":true}],"exports":["Framer","Muxer","RpcExtension","Teleport","TestBuilder","TestConnection","TestExtension","TestExtensionWithStreams","TestPeer","decodeFrame","encodeFrame"],"entryPoint":"packages/core/mesh/teleport/src/index.ts","inputs":{"packages/core/mesh/teleport/src/index.ts":{"bytesInOutput":0},"packages/core/mesh/teleport/src/rpc-extension.ts":{"bytesInOutput":1368}},"bytes":1857},"packages/core/mesh/teleport/dist/lib/browser/testing/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":93},"packages/core/mesh/teleport/dist/lib/browser/testing/index.mjs":{"imports":[{"path":"packages/core/mesh/teleport/dist/lib/browser/chunk-Q7AG3VZL.mjs","kind":"import-statement"}],"exports":["TestBuilder","TestConnection","TestExtension","TestExtensionWithStreams","TestPeer"],"entryPoint":"packages/core/mesh/teleport/src/testing/index.ts","inputs":{},"bytes":299},"packages/core/mesh/teleport/dist/lib/browser/chunk-Q7AG3VZL.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":92767},"packages/core/mesh/teleport/dist/lib/browser/chunk-Q7AG3VZL.mjs":{"imports":[{"path":"@dxos/node-std/inject-globals","kind":"import-statement","external":true},{"path":"@dxos/node-std/stream","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/rpc","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"@dxos/node-std/stream","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/node-std/stream","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"varint","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/rpc","kind":"import-statement","external":true},{"path":"@dxos/node-std/crypto","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/rpc","kind":"import-statement","external":true}],"exports":["Framer","Muxer","Teleport","TestBuilder","TestConnection","TestExtension","TestExtensionWithStreams","TestPeer","decodeFrame","encodeFrame"],"inputs":{"inject-globals:@inject-globals":{"bytesInOutput":79},"packages/core/mesh/teleport/src/testing/test-builder.ts":{"bytesInOutput":4958},"packages/core/mesh/teleport/src/teleport.ts":{"bytesInOutput":10366},"packages/core/mesh/teleport/src/control-extension.ts":{"bytesInOutput":4872},"packages/core/mesh/teleport/src/muxing/framer.ts":{"bytesInOutput":4627},"packages/core/mesh/teleport/src/muxing/index.ts":{"bytesInOutput":0},"packages/core/mesh/teleport/src/muxing/muxer.ts":{"bytesInOutput":13724},"packages/core/mesh/teleport/src/muxing/balancer.ts":{"bytesInOutput":6007},"packages/core/mesh/teleport/src/testing/index.ts":{"bytesInOutput":0},"packages/core/mesh/teleport/src/testing/test-extension.ts":{"bytesInOutput":2662},"packages/core/mesh/teleport/src/testing/test-extension-with-streams.ts":{"bytesInOutput":7354}},"bytes":55546}}}
1
+ {"inputs":{"inject-globals:@inject-globals":{"bytes":384,"imports":[{"path":"@dxos/node-std/inject-globals","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/teleport/src/muxing/framer.ts":{"bytes":18431,"imports":[{"path":"@dxos/node-std/stream","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@inject-globals","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/teleport/src/muxing/balancer.ts":{"bytes":24205,"imports":[{"path":"varint","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"packages/core/mesh/teleport/src/muxing/framer.ts","kind":"import-statement","original":"./framer"},{"path":"@inject-globals","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/teleport/src/muxing/muxer.ts":{"bytes":52253,"imports":[{"path":"@dxos/node-std/stream","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"packages/core/mesh/teleport/src/muxing/balancer.ts","kind":"import-statement","original":"./balancer"},{"path":"@inject-globals","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/teleport/src/muxing/rpc-port.ts":{"bytes":1185,"imports":[{"path":"@inject-globals","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/teleport/src/muxing/index.ts":{"bytes":673,"imports":[{"path":"packages/core/mesh/teleport/src/muxing/framer.ts","kind":"import-statement","original":"./framer"},{"path":"packages/core/mesh/teleport/src/muxing/muxer.ts","kind":"import-statement","original":"./muxer"},{"path":"packages/core/mesh/teleport/src/muxing/rpc-port.ts","kind":"import-statement","original":"./rpc-port"},{"path":"@inject-globals","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/teleport/src/control-extension.ts":{"bytes":18854,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/rpc","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"@inject-globals","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/teleport/src/teleport.ts":{"bytes":33862,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"packages/core/mesh/teleport/src/control-extension.ts","kind":"import-statement","original":"./control-extension"},{"path":"packages/core/mesh/teleport/src/muxing/index.ts","kind":"import-statement","original":"./muxing"},{"path":"@inject-globals","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/teleport/src/testing/test-builder.ts":{"bytes":16052,"imports":[{"path":"@dxos/node-std/stream","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"packages/core/mesh/teleport/src/teleport.ts","kind":"import-statement","original":"../teleport"},{"path":"@inject-globals","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/teleport/src/testing/test-extension.ts":{"bytes":10114,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/rpc","kind":"import-statement","external":true},{"path":"@inject-globals","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/teleport/src/testing/test-extension-with-streams.ts":{"bytes":27483,"imports":[{"path":"@dxos/node-std/crypto","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/rpc","kind":"import-statement","external":true},{"path":"@inject-globals","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/teleport/src/testing/index.ts":{"bytes":760,"imports":[{"path":"packages/core/mesh/teleport/src/testing/test-builder.ts","kind":"import-statement","original":"./test-builder"},{"path":"packages/core/mesh/teleport/src/testing/test-extension.ts","kind":"import-statement","original":"./test-extension"},{"path":"packages/core/mesh/teleport/src/testing/test-extension-with-streams.ts","kind":"import-statement","original":"./test-extension-with-streams"},{"path":"@inject-globals","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/teleport/src/rpc-extension.ts":{"bytes":6169,"imports":[{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/rpc","kind":"import-statement","external":true},{"path":"@inject-globals","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/teleport/src/index.ts":{"bytes":773,"imports":[{"path":"packages/core/mesh/teleport/src/muxing/index.ts","kind":"import-statement","original":"./muxing"},{"path":"packages/core/mesh/teleport/src/teleport.ts","kind":"import-statement","original":"./teleport"},{"path":"packages/core/mesh/teleport/src/testing/index.ts","kind":"import-statement","original":"./testing"},{"path":"packages/core/mesh/teleport/src/rpc-extension.ts","kind":"import-statement","original":"./rpc-extension"},{"path":"@inject-globals","kind":"import-statement","external":true}],"format":"esm"}},"outputs":{"packages/core/mesh/teleport/dist/lib/browser/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":3038},"packages/core/mesh/teleport/dist/lib/browser/index.mjs":{"imports":[{"path":"packages/core/mesh/teleport/dist/lib/browser/chunk-A2USJKIQ.mjs","kind":"import-statement"},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/rpc","kind":"import-statement","external":true}],"exports":["Framer","Muxer","RpcExtension","Teleport","TestBuilder","TestConnection","TestExtension","TestExtensionWithStreams","TestPeer","decodeFrame","encodeFrame"],"entryPoint":"packages/core/mesh/teleport/src/index.ts","inputs":{"packages/core/mesh/teleport/src/index.ts":{"bytesInOutput":0},"packages/core/mesh/teleport/src/rpc-extension.ts":{"bytesInOutput":1368}},"bytes":1857},"packages/core/mesh/teleport/dist/lib/browser/testing/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":93},"packages/core/mesh/teleport/dist/lib/browser/testing/index.mjs":{"imports":[{"path":"packages/core/mesh/teleport/dist/lib/browser/chunk-A2USJKIQ.mjs","kind":"import-statement"}],"exports":["TestBuilder","TestConnection","TestExtension","TestExtensionWithStreams","TestPeer"],"entryPoint":"packages/core/mesh/teleport/src/testing/index.ts","inputs":{},"bytes":299},"packages/core/mesh/teleport/dist/lib/browser/chunk-A2USJKIQ.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":92782},"packages/core/mesh/teleport/dist/lib/browser/chunk-A2USJKIQ.mjs":{"imports":[{"path":"@dxos/node-std/inject-globals","kind":"import-statement","external":true},{"path":"@dxos/node-std/stream","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/rpc","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"@dxos/node-std/stream","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/node-std/stream","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"varint","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/rpc","kind":"import-statement","external":true},{"path":"@dxos/node-std/crypto","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/rpc","kind":"import-statement","external":true}],"exports":["Framer","Muxer","Teleport","TestBuilder","TestConnection","TestExtension","TestExtensionWithStreams","TestPeer","decodeFrame","encodeFrame"],"inputs":{"inject-globals:@inject-globals":{"bytesInOutput":79},"packages/core/mesh/teleport/src/testing/test-builder.ts":{"bytesInOutput":4958},"packages/core/mesh/teleport/src/teleport.ts":{"bytesInOutput":10411},"packages/core/mesh/teleport/src/control-extension.ts":{"bytesInOutput":4916},"packages/core/mesh/teleport/src/muxing/framer.ts":{"bytesInOutput":4627},"packages/core/mesh/teleport/src/muxing/index.ts":{"bytesInOutput":0},"packages/core/mesh/teleport/src/muxing/muxer.ts":{"bytesInOutput":13776},"packages/core/mesh/teleport/src/muxing/balancer.ts":{"bytesInOutput":6007},"packages/core/mesh/teleport/src/testing/index.ts":{"bytesInOutput":0},"packages/core/mesh/teleport/src/testing/test-extension.ts":{"bytesInOutput":2662},"packages/core/mesh/teleport/src/testing/test-extension-with-streams.ts":{"bytesInOutput":7354}},"bytes":55687}}}
@@ -5,7 +5,7 @@ import {
5
5
  TestExtension,
6
6
  TestExtensionWithStreams,
7
7
  TestPeer
8
- } from "../chunk-Q7AG3VZL.mjs";
8
+ } from "../chunk-A2USJKIQ.mjs";
9
9
  export {
10
10
  TestBuilder,
11
11
  TestConnection,
@@ -26,8 +26,8 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
26
26
  mod
27
27
  ));
28
28
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
- var chunk_KJ54XLFB_exports = {};
30
- __export(chunk_KJ54XLFB_exports, {
29
+ var chunk_XPYFDE6K_exports = {};
30
+ __export(chunk_XPYFDE6K_exports, {
31
31
  Framer: () => Framer,
32
32
  Muxer: () => Muxer,
33
33
  Teleport: () => Teleport,
@@ -39,7 +39,7 @@ __export(chunk_KJ54XLFB_exports, {
39
39
  decodeFrame: () => decodeFrame,
40
40
  encodeFrame: () => encodeFrame
41
41
  });
42
- module.exports = __toCommonJS(chunk_KJ54XLFB_exports);
42
+ module.exports = __toCommonJS(chunk_XPYFDE6K_exports);
43
43
  var import_node_stream = require("node:stream");
44
44
  var import_invariant = require("@dxos/invariant");
45
45
  var import_keys = require("@dxos/keys");
@@ -95,6 +95,9 @@ var ControlExtension = class {
95
95
  onError: (err) => {
96
96
  this._extensionContext.close(err);
97
97
  }
98
+ }, {
99
+ F: __dxlog_file,
100
+ L: 30
98
101
  });
99
102
  this.onExtensionRegistered = new import_util.Callback();
100
103
  }
@@ -607,7 +610,10 @@ var Muxer = class {
607
610
  this._balancer = new Balancer(SYSTEM_CHANNEL_ID);
608
611
  this._channelsByLocalId = /* @__PURE__ */ new Map();
609
612
  this._channelsByTag = /* @__PURE__ */ new Map();
610
- this._ctx = new import_context3.Context();
613
+ this._ctx = new import_context3.Context(void 0, {
614
+ F: __dxlog_file4,
615
+ L: 107
616
+ });
611
617
  this._nextId = 1;
612
618
  this._closing = false;
613
619
  this._destroying = false;
@@ -1076,6 +1082,9 @@ var Teleport = class {
1076
1082
  });
1077
1083
  });
1078
1084
  }
1085
+ }, {
1086
+ F: __dxlog_file5,
1087
+ L: 38
1079
1088
  });
1080
1089
  this._muxer = new Muxer();
1081
1090
  this._extensions = /* @__PURE__ */ new Map();
@@ -1976,4 +1985,4 @@ var TestExtensionWithStreams = class {
1976
1985
  decodeFrame,
1977
1986
  encodeFrame
1978
1987
  });
1979
- //# sourceMappingURL=chunk-KJ54XLFB.cjs.map
1988
+ //# sourceMappingURL=chunk-XPYFDE6K.cjs.map
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../../src/testing/test-builder.ts", "../../../src/teleport.ts", "../../../src/control-extension.ts", "../../../src/muxing/framer.ts", "../../../src/muxing/muxer.ts", "../../../src/muxing/balancer.ts", "../../../src/testing/test-extension.ts", "../../../src/testing/test-extension-with-streams.ts"],
4
4
  "sourcesContent": ["//\n// Copyright 2022 DXOS.org\n//\n\nimport { type Duplex, pipeline } from 'node:stream';\n\nimport { invariant } from '@dxos/invariant';\nimport { PublicKey } from '@dxos/keys';\nimport { log } from '@dxos/log';\n\nimport { Teleport } from '../teleport';\n\ntype CreatePeerOpts<T extends TestPeer> = {\n factory: () => T;\n};\n\nexport class TestBuilder {\n private readonly _peers = new Set<TestPeer>();\n\n createPeer<T extends TestPeer>(opts: CreatePeerOpts<T>): T {\n const peer = opts.factory();\n this._peers.add(peer);\n return peer;\n }\n\n *createPeers<T extends TestPeer>(opts: CreatePeerOpts<T>): Generator<T> {\n while (true) {\n yield this.createPeer(opts);\n }\n }\n\n async destroy() {\n await Promise.all(Array.from(this._peers).map((agent) => agent.destroy()));\n }\n\n async connect(peer1: TestPeer, peer2: TestPeer) {\n invariant(peer1 !== peer2);\n invariant(this._peers.has(peer1));\n invariant(this._peers.has(peer1));\n\n const connection1 = peer1.createConnection({ initiator: true, remotePeerId: peer2.peerId });\n const connection2 = peer2.createConnection({ initiator: false, remotePeerId: peer1.peerId });\n\n pipeStreams(connection1.teleport.stream, connection2.teleport.stream);\n await Promise.all([peer1.openConnection(connection1), peer2.openConnection(connection2)]);\n\n return [connection1, connection2];\n }\n\n async disconnect(peer1: TestPeer, peer2: TestPeer) {\n invariant(peer1 !== peer2);\n invariant(this._peers.has(peer1));\n invariant(this._peers.has(peer1));\n\n const connection1 = Array.from(peer1.connections).find((connection) =>\n connection.remotePeerId.equals(peer2.peerId),\n );\n const connection2 = Array.from(peer2.connections).find((connection) =>\n connection.remotePeerId.equals(peer1.peerId),\n );\n\n invariant(connection1);\n invariant(connection2);\n\n await Promise.all([peer1.closeConnection(connection1), peer2.closeConnection(connection2)]);\n }\n}\n\nexport class TestPeer {\n public readonly connections = new Set<TestConnection>();\n\n constructor(public readonly peerId: PublicKey = PublicKey.random()) {}\n\n protected async onOpen(connection: TestConnection) {}\n protected async onClose(connection: TestConnection) {}\n\n createConnection({ initiator, remotePeerId }: { initiator: boolean; remotePeerId: PublicKey }) {\n const connection = new TestConnection(this.peerId, remotePeerId, initiator);\n this.connections.add(connection);\n return connection;\n }\n\n async openConnection(connection: TestConnection) {\n invariant(this.connections.has(connection));\n await connection.teleport.open(PublicKey.random());\n await this.onOpen(connection);\n }\n\n async closeConnection(connection: TestConnection) {\n invariant(this.connections.has(connection));\n await this.onClose(connection);\n await connection.teleport.close();\n this.connections.delete(connection);\n }\n\n async destroy() {\n for (const teleport of this.connections) {\n await this.closeConnection(teleport);\n }\n }\n}\n\nconst pipeStreams = (stream1: Duplex, stream2: Duplex) => {\n pipeline(stream1, stream2, (err) => {\n if (err && err.code !== 'ERR_STREAM_PREMATURE_CLOSE') {\n log.catch(err);\n }\n });\n pipeline(stream2, stream1, (err) => {\n if (err && err.code !== 'ERR_STREAM_PREMATURE_CLOSE') {\n log.catch(err);\n }\n });\n};\n\nexport class TestConnection {\n public teleport: Teleport;\n\n constructor(\n public readonly localPeerId: PublicKey,\n public readonly remotePeerId: PublicKey,\n public readonly initiator: boolean,\n ) {\n this.teleport = new Teleport({\n initiator,\n localPeerId,\n remotePeerId,\n });\n }\n}\n", "//\n// Copyright 2022 DXOS.org\n//\n\nimport { type Duplex } from 'node:stream';\n\nimport { runInContextAsync, synchronized, scheduleTask, type Event } from '@dxos/async';\nimport { Context } from '@dxos/context';\nimport { failUndefined } from '@dxos/debug';\nimport { invariant } from '@dxos/invariant';\nimport { PublicKey } from '@dxos/keys';\nimport { log, logInfo } from '@dxos/log';\nimport { RpcClosedError, TimeoutError } from '@dxos/protocols';\n\nimport { ControlExtension } from './control-extension';\nimport { type CreateChannelOpts, Muxer, type MuxerStats, type RpcPort } from './muxing';\n\nexport type TeleportParams = {\n initiator: boolean;\n localPeerId: PublicKey;\n remotePeerId: PublicKey;\n controlHeartbeatInterval?: number;\n controlHeartbeatTimeout?: number;\n};\n\nconst CONTROL_HEARTBEAT_INTERVAL = 10_000;\nconst CONTROL_HEARTBEAT_TIMEOUT = 60_000;\n\n/**\n * TODO(burdon): Comment: what is this?\n */\nexport class Teleport {\n public readonly initiator: boolean;\n public readonly localPeerId: PublicKey;\n public readonly remotePeerId: PublicKey;\n public _sessionId?: PublicKey;\n\n private readonly _ctx = new Context({\n onError: (err) => {\n void this.destroy(err).catch(() => {\n log.error('Error during destroy', err);\n });\n },\n });\n\n private readonly _muxer = new Muxer();\n\n private readonly _control;\n\n private readonly _extensions = new Map<string, TeleportExtension>();\n private readonly _remoteExtensions = new Set<string>();\n\n private _open = false;\n private _destroying = false;\n private _aborting = false;\n\n constructor({ initiator, localPeerId, remotePeerId, ...rest }: TeleportParams) {\n invariant(typeof initiator === 'boolean');\n invariant(PublicKey.isPublicKey(localPeerId));\n invariant(PublicKey.isPublicKey(remotePeerId));\n this.initiator = initiator;\n this.localPeerId = localPeerId;\n this.remotePeerId = remotePeerId;\n\n this._control = new ControlExtension(\n {\n heartbeatInterval: rest.controlHeartbeatInterval ?? CONTROL_HEARTBEAT_INTERVAL,\n heartbeatTimeout: rest.controlHeartbeatTimeout ?? CONTROL_HEARTBEAT_TIMEOUT,\n onTimeout: () => {\n if (this._destroying || this._aborting) {\n return;\n }\n log.info('abort teleport due to onTimeout in ControlExtension');\n this.abort(new TimeoutError('control extension')).catch((err) => log.catch(err));\n },\n },\n this.localPeerId,\n this.remotePeerId,\n );\n\n this._control.onExtensionRegistered.set(async (name) => {\n log('remote extension', { name });\n invariant(!this._remoteExtensions.has(name), 'Remote extension already exists');\n this._remoteExtensions.add(name);\n\n if (this._extensions.has(name)) {\n try {\n await this._openExtension(name);\n } catch (err: any) {\n await this.destroy(err);\n }\n }\n });\n\n {\n // Destroy Teleport when the stream is closed.\n this._muxer.stream.on('close', async () => {\n if (this._destroying || this._aborting) {\n log('destroy teleport due to muxer stream close, skipping due to already destroying/aborting');\n return;\n }\n await this.destroy();\n });\n\n this._muxer.stream.on('error', async (err) => {\n await this.destroy(err);\n });\n }\n\n // let last: MuxerStats | undefined;\n this._muxer.statsUpdated.on((stats) => {\n log.trace('dxos.mesh.teleport.stats', {\n localPeerId,\n remotePeerId,\n bytesSent: stats.bytesSent,\n bytesSentRate: stats.bytesSentRate,\n bytesReceived: stats.bytesReceived,\n bytesReceivedRate: stats.bytesReceivedRate,\n channels: stats.channels,\n });\n\n // last = stats;\n });\n }\n\n @logInfo\n get sessionIdString(): string {\n return this._sessionId ? this._sessionId.truncate() : 'none';\n }\n\n get stream(): Duplex {\n return this._muxer.stream;\n }\n\n get stats(): Event<MuxerStats> {\n return this._muxer.statsUpdated;\n }\n\n /**\n * Blocks until the handshake is complete.\n */\n\n async open(sessionId: PublicKey = PublicKey.random()) {\n // invariant(sessionId);\n this._sessionId = sessionId;\n log('open');\n this._setExtension('dxos.mesh.teleport.control', this._control);\n await this._openExtension('dxos.mesh.teleport.control');\n this._open = true;\n this._muxer.setSessionId(sessionId);\n }\n\n async close(err?: Error) {\n // TODO(dmaretskyi): Try soft close.\n await this.destroy(err);\n }\n\n @synchronized\n async abort(err?: Error) {\n if (this._aborting || this._destroying) {\n return;\n }\n this._aborting = true;\n\n if (this._ctx.disposed) {\n return;\n }\n\n await this._ctx.dispose();\n\n for (const extension of this._extensions.values()) {\n try {\n await extension.onAbort(err);\n } catch (err: any) {\n log.catch(err);\n }\n }\n\n await this._muxer.destroy(err);\n }\n\n @synchronized\n // TODO(nf): analyze callers and consider abort instead\n async destroy(err?: Error) {\n if (this._destroying || this._aborting) {\n return;\n }\n log('destroying teleport...', { extensionsCount: this._extensions.size });\n this._destroying = true;\n if (this._ctx.disposed) {\n return;\n }\n\n await this._ctx.dispose();\n\n for (const extension of this._extensions.values()) {\n try {\n log('destroying extension', { name: extension.constructor.name });\n await extension.onClose(err);\n log('destroyed extension', { name: extension.constructor.name });\n } catch (err: any) {\n log.catch(err);\n }\n }\n\n await this._muxer.close();\n log('teleport destroyed');\n }\n\n addExtension(name: string, extension: TeleportExtension) {\n if (!this._open) {\n throw new Error('Not open');\n }\n\n log('addExtension', { name });\n this._setExtension(name, extension);\n\n // Perform the registration in a separate tick as this might block while the remote side is opening the extension.\n scheduleTask(this._ctx, async () => {\n try {\n await this._control.registerExtension(name);\n } catch (err) {\n if (err instanceof RpcClosedError) {\n return;\n }\n throw err;\n }\n });\n\n if (this._remoteExtensions.has(name)) {\n // Open the extension in a separate tick.\n scheduleTask(this._ctx, async () => {\n await this._openExtension(name);\n });\n }\n }\n\n private _setExtension(extensionName: string, extension: TeleportExtension) {\n invariant(!extensionName.includes('/'), 'Invalid extension name');\n invariant(!this._extensions.has(extensionName), 'Extension already exists');\n this._extensions.set(extensionName, extension);\n }\n\n private async _openExtension(extensionName: string) {\n log('open extension', { extensionName });\n const extension = this._extensions.get(extensionName) ?? failUndefined();\n\n const context: ExtensionContext = {\n initiator: this.initiator,\n localPeerId: this.localPeerId,\n remotePeerId: this.remotePeerId,\n createPort: async (channelName: string, opts?: CreateChannelOpts) => {\n invariant(!channelName.includes('/'), 'Invalid channel name');\n return this._muxer.createPort(`${extensionName}/${channelName}`, opts);\n },\n createStream: async (channelName: string, opts?: CreateChannelOpts) => {\n invariant(!channelName.includes('/'), 'Invalid channel name');\n return this._muxer.createStream(`${extensionName}/${channelName}`, opts);\n },\n close: (err) => {\n void runInContextAsync(this._ctx, async () => {\n await this.close(err);\n });\n },\n };\n\n await extension.onOpen(context);\n log('extension opened', { extensionName });\n }\n}\n\nexport type ExtensionContext = {\n /**\n * One of the peers will be designated an initiator.\n */\n initiator: boolean;\n localPeerId: PublicKey;\n remotePeerId: PublicKey;\n createStream(tag: string, opts?: CreateChannelOpts): Promise<Duplex>;\n createPort(tag: string, opts?: CreateChannelOpts): Promise<RpcPort>;\n close(err?: Error): void;\n};\n\nexport interface TeleportExtension {\n onOpen(context: ExtensionContext): Promise<void>;\n onClose(err?: Error): Promise<void>;\n onAbort(err?: Error): Promise<void>;\n}\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { asyncTimeout, scheduleTaskInterval, TimeoutError as AsyncTimeoutError } from '@dxos/async';\nimport { Context } from '@dxos/context';\nimport { type PublicKey } from '@dxos/keys';\nimport { log } from '@dxos/log';\nimport { schema, RpcClosedError } from '@dxos/protocols';\nimport { type ControlService } from '@dxos/protocols/proto/dxos/mesh/teleport/control';\nimport { createProtoRpcPeer, type ProtoRpcPeer } from '@dxos/rpc';\nimport { Callback } from '@dxos/util';\n\nimport { type ExtensionContext, type TeleportExtension } from './teleport';\n\nconst HEARTBEAT_RTT_WARN_THRESH = 10_000;\nconst DEBUG_PRINT_HEARTBEAT = false; // very noisy\n\ntype ControlRpcBundle = {\n Control: ControlService;\n};\n\ntype ControlExtensionOpts = {\n heartbeatInterval: number;\n heartbeatTimeout: number;\n onTimeout: (err: any) => void;\n};\n\nexport class ControlExtension implements TeleportExtension {\n private readonly _ctx = new Context({\n onError: (err) => {\n this._extensionContext.close(err);\n },\n });\n\n public readonly onExtensionRegistered = new Callback<(extensionName: string) => void>();\n\n private _extensionContext!: ExtensionContext;\n private _rpc!: ProtoRpcPeer<{ Control: ControlService }>;\n\n constructor(\n private readonly opts: ControlExtensionOpts,\n private readonly localPeerId: PublicKey,\n private readonly remotePeerId: PublicKey,\n ) {}\n\n async registerExtension(name: string) {\n await this._rpc.rpc.Control.registerExtension({ name });\n }\n\n async onOpen(extensionContext: ExtensionContext): Promise<void> {\n this._extensionContext = extensionContext;\n\n this._rpc = createProtoRpcPeer<ControlRpcBundle, ControlRpcBundle>({\n requested: {\n Control: schema.getService('dxos.mesh.teleport.control.ControlService'),\n },\n exposed: {\n Control: schema.getService('dxos.mesh.teleport.control.ControlService'),\n },\n handlers: {\n Control: {\n registerExtension: async (request) => {\n this.onExtensionRegistered.call(request.name);\n },\n heartbeat: async (request) => {\n if (DEBUG_PRINT_HEARTBEAT) {\n log('received heartbeat request', {\n ts: request.requestTimestamp,\n localPeerId: this.localPeerId.truncate(),\n remotePeerId: this.remotePeerId.truncate(),\n });\n }\n return {\n requestTimestamp: request.requestTimestamp,\n };\n },\n },\n },\n port: await extensionContext.createPort('rpc', {\n contentType: 'application/x-protobuf; messageType=\"dxos.rpc.Message\"',\n }),\n timeout: this.opts.heartbeatTimeout,\n });\n\n await this._rpc.open();\n\n scheduleTaskInterval(\n this._ctx,\n async () => {\n const reqTS = new Date();\n try {\n const resp = await asyncTimeout(\n this._rpc.rpc.Control.heartbeat({ requestTimestamp: reqTS }),\n this.opts.heartbeatTimeout,\n );\n const now = Date.now();\n // TODO(nf): properly instrument\n if (resp.requestTimestamp instanceof Date) {\n if (\n now - resp.requestTimestamp.getTime() >\n (HEARTBEAT_RTT_WARN_THRESH < this.opts.heartbeatTimeout\n ? HEARTBEAT_RTT_WARN_THRESH\n : this.opts.heartbeatTimeout / 2)\n ) {\n log.warn(`heartbeat RTT for Teleport > ${HEARTBEAT_RTT_WARN_THRESH / 1000}s`, {\n rtt: now - resp.requestTimestamp.getTime(),\n localPeerId: this.localPeerId.truncate(),\n remotePeerId: this.remotePeerId.truncate(),\n });\n } else {\n if (DEBUG_PRINT_HEARTBEAT) {\n log('heartbeat RTT', {\n rtt: now - resp.requestTimestamp.getTime(),\n localPeerId: this.localPeerId.truncate(),\n remotePeerId: this.remotePeerId.truncate(),\n });\n }\n }\n }\n } catch (err: any) {\n const now = Date.now();\n if (err instanceof RpcClosedError) {\n // TODO: expose 'closed' event in Rpc peer to close context as soon the the peer gets closed\n log('ignoring RpcClosedError in heartbeat');\n this._extensionContext.close(err);\n return;\n }\n if (err instanceof AsyncTimeoutError) {\n log('timeout waiting for heartbeat response', { err, delay: now - reqTS.getTime() });\n this.opts.onTimeout(err);\n } else {\n log.info('other error waiting for heartbeat response', { err, delay: now - reqTS.getTime() });\n this.opts.onTimeout(err);\n }\n }\n },\n this.opts.heartbeatInterval,\n );\n }\n\n async onClose(err?: Error): Promise<void> {\n await this._ctx.dispose();\n await this._rpc.close();\n }\n\n async onAbort(err?: Error | undefined): Promise<void> {\n await this._ctx.dispose();\n await this._rpc.abort();\n }\n}\n", "//\n// Copyright 2022 DXOS.org\n//\n\nimport { Duplex } from 'node:stream';\n\nimport { Event } from '@dxos/async';\nimport { invariant } from '@dxos/invariant';\nimport { log } from '@dxos/log';\n\nimport { type RpcPort } from './rpc-port';\n\nconst FRAME_LENGTH_SIZE = 2;\n\n/**\n * Converts a stream of binary messages into a framed RpcPort.\n * Buffers are written prefixed by their length encoded as a varint.\n */\nexport class Framer {\n // private readonly _tagBuffer = Buffer.alloc(4)\n private _messageCb?: (msg: Uint8Array) => void = undefined;\n private _subscribeCb?: () => void = undefined;\n private _buffer?: Buffer = undefined; // The rest of the bytes from the previous write call.\n private _sendCallbacks: (() => void)[] = [];\n\n private _bytesSent = 0;\n private _bytesReceived = 0;\n\n private _writable = true;\n\n readonly drain = new Event();\n\n // TODO(egorgripasov): Consider using a Transform stream if it provides better backpressure handling.\n private readonly _stream = new Duplex({\n objectMode: false,\n read: () => {\n this._processResponseQueue();\n },\n write: (chunk, encoding, callback) => {\n invariant(!this._subscribeCb, 'Internal Framer bug. Concurrent writes detected.');\n\n this._bytesReceived += chunk.length;\n\n if (this._buffer && this._buffer.length > 0) {\n this._buffer = Buffer.concat([this._buffer, chunk]);\n } else {\n this._buffer = chunk;\n }\n\n if (this._messageCb) {\n this._popFrames();\n callback();\n } else {\n this._subscribeCb = () => {\n // Schedule the processing of the chunk after the peer subscribes to the messages.\n this._popFrames();\n this._subscribeCb = undefined;\n callback();\n };\n }\n },\n });\n\n public readonly port: RpcPort = {\n send: (message) => {\n // log('write', { len: message.length, frame: Buffer.from(message).toString('hex') })\n return new Promise<void>((resolve) => {\n const frame = encodeFrame(message);\n this._bytesSent += frame.length;\n this._writable = this._stream.push(frame);\n if (!this._writable) {\n this._sendCallbacks.push(resolve);\n } else {\n resolve();\n }\n });\n },\n subscribe: (callback) => {\n invariant(!this._messageCb, 'Rpc port already has a message listener.');\n this._messageCb = callback;\n this._subscribeCb?.();\n return () => {\n this._messageCb = undefined;\n };\n },\n };\n\n get stream(): Duplex {\n return this._stream;\n }\n\n get bytesSent() {\n return this._bytesSent;\n }\n\n get bytesReceived() {\n return this._bytesReceived;\n }\n\n get writable() {\n return this._writable;\n }\n\n private _processResponseQueue() {\n const responseQueue = this._sendCallbacks;\n this._sendCallbacks = [];\n this._writable = true;\n this.drain.emit();\n responseQueue.forEach((cb) => cb());\n }\n\n /**\n * Attempts to pop frames from the buffer and call the message callback.\n */\n private _popFrames() {\n let offset = 0;\n while (offset < this._buffer!.length) {\n const frame = decodeFrame(this._buffer!, offset);\n\n if (!frame) {\n break; // Couldn't read frame but there are still bytes left in the buffer.\n }\n offset += frame.bytesConsumed;\n // TODO(dmaretskyi): Possible bug if the peer unsubscribes while we're reading frames.\n // log('read', { len: frame.payload.length, frame: Buffer.from(frame.payload).toString('hex') })\n this._messageCb!(frame.payload);\n }\n\n if (offset < this._buffer!.length) {\n // Save the rest of the bytes for the next write call.\n this._buffer = this._buffer!.subarray(offset);\n } else {\n this._buffer = undefined;\n }\n }\n\n destroy() {\n // TODO(dmaretskyi): Call stream.end() instead?\n if (this._stream.readableLength > 0) {\n log('framer destroyed while there are still read bytes in the buffer.');\n }\n if (this._stream.writableLength > 0) {\n log.warn('framer destroyed while there are still write bytes in the buffer.');\n }\n this._stream.destroy();\n }\n}\n\n/**\n * Attempts to read a frame from the input buffer.\n */\nexport const decodeFrame = (buffer: Buffer, offset: number): { payload: Buffer; bytesConsumed: number } | undefined => {\n if (buffer.length < offset + FRAME_LENGTH_SIZE) {\n // Not enough bytes to read the frame length.\n return undefined;\n }\n\n const frameLength = buffer.readUInt16BE(offset);\n const bytesConsumed = FRAME_LENGTH_SIZE + frameLength;\n\n if (buffer.length < offset + bytesConsumed) {\n // Not enough bytes to read the frame.\n return undefined;\n }\n\n const payload = buffer.subarray(offset + FRAME_LENGTH_SIZE, offset + bytesConsumed);\n\n return {\n payload,\n bytesConsumed,\n };\n};\n\nexport const encodeFrame = (payload: Uint8Array): Buffer => {\n const frame = Buffer.allocUnsafe(FRAME_LENGTH_SIZE + payload.length);\n frame.writeUInt16BE(payload.length, 0);\n frame.set(payload, FRAME_LENGTH_SIZE);\n return frame;\n};\n", "//\n// Copyright 2022 DXOS.org\n//\n\nimport { Duplex } from 'node:stream';\n\nimport { scheduleTaskInterval, Event, Trigger, asyncTimeout } from '@dxos/async';\nimport { Context } from '@dxos/context';\nimport { failUndefined } from '@dxos/debug';\nimport { invariant } from '@dxos/invariant';\nimport { type PublicKey } from '@dxos/keys';\nimport { log, logInfo } from '@dxos/log';\nimport { schema, TimeoutError } from '@dxos/protocols';\nimport { type ConnectionInfo } from '@dxos/protocols/proto/dxos/devtools/swarm';\nimport { type Command } from '@dxos/protocols/proto/dxos/mesh/muxer';\n\nimport { Balancer } from './balancer';\nimport { type RpcPort } from './rpc-port';\n\nconst Command = schema.getCodecForType('dxos.mesh.muxer.Command');\n\nconst DEFAULT_SEND_COMMAND_TIMEOUT = 60_000;\nconst DESTROY_COMMAND_SEND_TIMEOUT = 5_000;\n\nexport type CleanupCb = void | (() => void);\n\nexport type CreateChannelOpts = {\n /**\n * MIME type of the wire content.\n *\n * Examples:\n * - application/octet-stream\n * - application/x-protobuf; messageType=\"dxos.rpc.Message\"\n */\n contentType?: string;\n};\n\nexport type MuxerStats = {\n timestamp: number;\n channels: ConnectionInfo.StreamStats[];\n bytesSent: number;\n bytesReceived: number;\n bytesSentRate?: number;\n bytesReceivedRate?: number;\n readBufferSize?: number;\n writeBufferSize?: number;\n};\n\nconst STATS_INTERVAL = 1_000;\nconst MAX_SAFE_FRAME_SIZE = 1_000_000;\nconst SYSTEM_CHANNEL_ID = 0;\nconst GRACEFUL_CLOSE_TIMEOUT = 3_000;\n\ntype Channel = {\n /**\n * Our local channel ID.\n * Incoming Data commands will have this ID.\n */\n id: number;\n tag: string;\n\n /**\n * Remote id is set when we receive an OpenChannel command.\n * The originating Data commands should carry this id.\n */\n remoteId: null | number;\n\n contentType?: string;\n\n /**\n * Send buffer.\n */\n buffer: Uint8Array[];\n\n /**\n * Set when we initialize a NodeJS stream or an RPC port consuming the channel.\n */\n push: null | ((data: Uint8Array) => void);\n\n destroy: null | ((err?: Error) => void);\n\n stats: {\n bytesSent: number;\n bytesReceived: number;\n };\n};\n\ntype CreateChannelInternalParams = {\n tag: string;\n contentType?: string;\n};\n\n/**\n * Channel based multiplexer.\n *\n * Can be used to open a number of channels represented by streams or RPC ports.\n * Performs framing for RPC ports.\n * Will buffer data until the remote peer opens the channel.\n *\n * The API will not advertise channels that as they are opened by the remote peer.\n * A higher level API (could be build on top of this muxer) for channel discovery is required.\n */\nexport class Muxer {\n private readonly _balancer = new Balancer(SYSTEM_CHANNEL_ID);\n private readonly _channelsByLocalId = new Map<number, Channel>();\n private readonly _channelsByTag = new Map<string, Channel>();\n private readonly _ctx = new Context();\n private _sessionId?: PublicKey;\n\n private _nextId = 1;\n\n private _closing = false;\n private _destroying = false;\n private _disposed = false;\n\n private _lastStats?: MuxerStats = undefined;\n private readonly _lastChannelStats = new Map<number, Channel['stats']>();\n\n public afterClosed = new Event<Error | undefined>();\n public statsUpdated = new Event<MuxerStats>();\n\n public readonly stream = this._balancer.stream;\n\n constructor() {\n // Add a channel for control messages.\n this._balancer.incomingData.on(async (msg) => {\n await this._handleCommand(Command.decode(msg));\n });\n }\n\n setSessionId(sessionId: PublicKey) {\n this._sessionId = sessionId;\n }\n\n @logInfo\n get sessionIdString(): string {\n return this._sessionId ? this._sessionId.truncate() : 'none';\n }\n\n /**\n * Creates a duplex Node.js-style stream.\n * The remote peer is expected to call `createStream` with the same tag.\n * The stream is immediately readable and writable.\n * NOTE: The data will be buffered until the stream is opened remotely with the same tag (may cause a memory leak).\n */\n async createStream(tag: string, opts: CreateChannelOpts = {}): Promise<Duplex> {\n const channel = this._getOrCreateStream({\n tag,\n contentType: opts.contentType,\n });\n invariant(!channel.push, `Channel already open: ${tag}`);\n\n const stream = new Duplex({\n write: (data, encoding, callback) => {\n this._sendData(channel, data)\n .then(() => callback())\n .catch(callback);\n // TODO(dmaretskyi): Should we error if sending data has errored?\n },\n read: () => {}, // No-op. We will push data when we receive it.\n });\n\n channel.push = (data) => {\n channel.stats.bytesReceived += data.length;\n stream.push(data);\n };\n channel.destroy = (err) => {\n // TODO(dmaretskyi): Call stream.end() instead?\n if (err) {\n if (stream.listeners('error').length > 0) {\n stream.destroy(err);\n } else {\n stream.destroy();\n }\n } else {\n stream.destroy();\n }\n };\n\n // NOTE: Make sure channel.push is set before sending the command.\n try {\n await this._sendCommand(\n {\n openChannel: {\n id: channel.id,\n tag: channel.tag,\n contentType: channel.contentType,\n },\n },\n SYSTEM_CHANNEL_ID,\n );\n } catch (err: any) {\n this._destroyChannel(channel, err);\n throw err;\n }\n\n return stream;\n }\n\n /**\n * Creates an RPC port.\n * The remote peer is expected to call `createPort` with the same tag.\n * The port is immediately usable.\n * NOTE: The data will be buffered until the stream is opened remotely with the same tag (may cause a memory leak).\n */\n async createPort(tag: string, opts: CreateChannelOpts = {}): Promise<RpcPort> {\n const channel = this._getOrCreateStream({\n tag,\n contentType: opts.contentType,\n });\n invariant(!channel.push, `Channel already open: ${tag}`);\n\n // We need to buffer incoming data until the port is subscribed to.\n let inboundBuffer: Uint8Array[] = [];\n let callback: ((data: Uint8Array) => void) | undefined;\n\n channel.push = (data) => {\n channel.stats.bytesReceived += data.length;\n if (callback) {\n callback(data);\n } else {\n inboundBuffer.push(data);\n }\n };\n\n const port: RpcPort = {\n send: async (data: Uint8Array, timeout?: number) => {\n await this._sendData(channel, data, timeout);\n // TODO(dmaretskyi): Debugging.\n // appendFileSync('log.json', JSON.stringify(schema.getCodecForType('dxos.rpc.RpcMessage').decode(data), null, 2) + '\\n')\n },\n subscribe: (cb: (data: Uint8Array) => void) => {\n invariant(!callback, 'Only one subscriber is allowed');\n callback = cb;\n for (const data of inboundBuffer) {\n cb(data);\n }\n inboundBuffer = [];\n },\n };\n\n // NOTE: Make sure channel.push is set before sending the command.\n try {\n await this._sendCommand(\n {\n openChannel: {\n id: channel.id,\n tag: channel.tag,\n contentType: channel.contentType,\n },\n },\n SYSTEM_CHANNEL_ID,\n );\n } catch (err: any) {\n this._destroyChannel(channel, err);\n throw err;\n }\n\n return port;\n }\n\n // initiate graceful close\n\n async close(err?: Error) {\n if (this._destroying) {\n log('already destroying, ignoring graceful close request');\n return;\n }\n if (this._closing) {\n log('already closing, ignoring graceful close request');\n return;\n }\n\n this._closing = true;\n\n await this._sendCommand(\n {\n close: {\n error: err?.message,\n },\n },\n SYSTEM_CHANNEL_ID,\n DESTROY_COMMAND_SEND_TIMEOUT,\n ).catch(async (err: any) => {\n log('error sending close command', { err });\n\n await this._dispose(err);\n });\n\n // don't return until close is complete or timeout\n await asyncTimeout(this._dispose(err), GRACEFUL_CLOSE_TIMEOUT, new TimeoutError('gracefully closing muxer'));\n }\n\n // force close without confirmation\n\n async destroy(err?: Error) {\n if (this._destroying) {\n log('already destroying, ignoring destroy request');\n return;\n }\n this._destroying = true;\n void this._ctx.dispose();\n if (this._closing) {\n log('destroy cancelling graceful close');\n this._closing = false;\n } else {\n // as a courtesy to the peer, send destroy command but ignore errors sending\n\n await this._sendCommand(\n {\n close: {\n error: err?.message,\n },\n },\n SYSTEM_CHANNEL_ID,\n ).catch(async (err: any) => {\n log('error sending courtesy close command', { err });\n });\n }\n\n this._dispose(err).catch((err) => {\n log('error disposing after destroy', { err });\n });\n }\n\n // complete the termination, graceful or otherwise\n\n async _dispose(err?: Error) {\n if (this._disposed) {\n log('already destroyed, ignoring dispose request');\n return;\n }\n\n void this._ctx.dispose();\n\n await this._balancer.destroy();\n\n for (const channel of this._channelsByTag.values()) {\n channel.destroy?.(err);\n }\n this._disposed = true;\n await this._emitStats();\n\n this.afterClosed.emit(err);\n\n // Make it easy for GC.\n this._channelsByLocalId.clear();\n this._channelsByTag.clear();\n }\n\n private async _handleCommand(cmd: Command) {\n if (this._disposed) {\n log.warn('Received command after disposed', { cmd });\n return;\n }\n\n if (cmd.close) {\n if (!this._closing) {\n log('received peer close, initiating my own graceful close');\n await this.close(new Error('received peer close'));\n } else {\n log('received close from peer, already closing');\n }\n\n return;\n }\n\n if (cmd.openChannel) {\n const channel = this._getOrCreateStream({\n tag: cmd.openChannel.tag,\n contentType: cmd.openChannel.contentType,\n });\n channel.remoteId = cmd.openChannel.id;\n\n // Flush any buffered data.\n for (const data of channel.buffer) {\n await this._sendCommand(\n {\n data: {\n channelId: channel.remoteId!,\n data,\n },\n },\n channel.id,\n );\n }\n channel.buffer = [];\n } else if (cmd.data) {\n const stream = this._channelsByLocalId.get(cmd.data.channelId) ?? failUndefined();\n if (!stream.push) {\n log.warn('Received data for channel before it was opened', { tag: stream.tag });\n return;\n }\n stream.push(cmd.data.data);\n }\n }\n\n private async _sendCommand(cmd: Command, channelId = -1, timeout = DEFAULT_SEND_COMMAND_TIMEOUT) {\n if (this._disposed) {\n log.info('ignoring sendCommand after disposed', { cmd });\n return;\n }\n try {\n const trigger = new Trigger<void>();\n this._balancer.pushData(Command.encode(cmd), trigger, channelId);\n await trigger.wait({ timeout });\n } catch (err: any) {\n await this.destroy(err);\n }\n }\n\n private _getOrCreateStream(params: CreateChannelInternalParams): Channel {\n if (this._channelsByTag.size === 0) {\n scheduleTaskInterval(this._ctx, async () => this._emitStats(), STATS_INTERVAL);\n }\n let channel = this._channelsByTag.get(params.tag);\n if (!channel) {\n channel = {\n id: this._nextId++,\n remoteId: null,\n tag: params.tag,\n contentType: params.contentType,\n buffer: [],\n push: null,\n destroy: null,\n stats: {\n bytesSent: 0,\n bytesReceived: 0,\n },\n };\n this._channelsByTag.set(channel.tag, channel);\n this._channelsByLocalId.set(channel.id, channel);\n this._balancer.addChannel(channel.id);\n }\n\n return channel;\n }\n\n private async _sendData(channel: Channel, data: Uint8Array, timeout?: number): Promise<void> {\n if (data.length > MAX_SAFE_FRAME_SIZE) {\n log.warn('frame size exceeds maximum safe value', { size: data.length, threshold: MAX_SAFE_FRAME_SIZE });\n }\n\n channel.stats.bytesSent += data.length;\n if (channel.remoteId === null) {\n // Remote side has not opened the channel yet.\n channel.buffer.push(data);\n return;\n }\n await this._sendCommand(\n {\n data: {\n channelId: channel.remoteId,\n data,\n },\n },\n channel.id,\n timeout,\n );\n }\n\n private _destroyChannel(channel: Channel, err?: Error) {\n if (channel.destroy) {\n channel.destroy(err);\n }\n\n this._channelsByLocalId.delete(channel.id);\n this._channelsByTag.delete(channel.tag);\n }\n\n private async _emitStats() {\n if (this._disposed || this._destroying) {\n if (!this._lastStats) {\n return;\n }\n\n // zero out counting stats to not skew metrics.\n const lastStats = this._lastStats;\n this._lastStats = undefined;\n\n lastStats.readBufferSize = 0;\n lastStats.writeBufferSize = 0;\n for (const c of lastStats.channels) {\n c.writeBufferSize = 0;\n }\n this.statsUpdated.emit(lastStats);\n\n this._lastChannelStats.clear();\n return;\n }\n\n const bytesSent = this._balancer.bytesSent;\n const bytesReceived = this._balancer.bytesReceived;\n\n const now = Date.now();\n const interval = this._lastStats ? (now - this._lastStats.timestamp) / 1_000 : 0;\n const calculateThroughput = (current: Channel['stats'], last: Channel['stats'] | undefined) =>\n last\n ? {\n bytesSentRate: interval ? (current.bytesSent - last.bytesSent) / interval : undefined,\n bytesReceivedRate: interval ? (current.bytesReceived - last.bytesReceived) / interval : undefined,\n }\n : {};\n\n this._lastStats = {\n timestamp: now,\n channels: Array.from(this._channelsByTag.values()).map((channel) => {\n const stats: ConnectionInfo.StreamStats = {\n id: channel.id,\n tag: channel.tag,\n contentType: channel.contentType,\n writeBufferSize: channel.buffer.length,\n bytesSent: channel.stats.bytesSent,\n bytesReceived: channel.stats.bytesReceived,\n ...calculateThroughput(channel.stats, this._lastChannelStats.get(channel.id)),\n };\n\n this._lastChannelStats.set(channel.id, stats);\n return stats;\n }),\n bytesSent,\n bytesReceived,\n ...calculateThroughput({ bytesSent, bytesReceived }, this._lastStats),\n readBufferSize: this._balancer.stream.readableLength,\n writeBufferSize: this._balancer.stream.writableLength,\n };\n\n this.statsUpdated.emit(this._lastStats);\n }\n}\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport * as varint from 'varint';\n\nimport { type Trigger, Event } from '@dxos/async';\nimport { invariant } from '@dxos/invariant';\nimport { log } from '@dxos/log';\n\nimport { Framer } from './framer';\n\nconst MAX_CHUNK_SIZE = 8192;\n\ntype Chunk = {\n chunk: Uint8Array;\n channelId: number;\n dataLength?: number;\n};\n\ntype ChunkEnvelope = {\n msg: Buffer;\n trigger?: Trigger;\n};\n\ntype ChannelBuffer = {\n buffer: Buffer;\n msgLength: number;\n};\n\n/**\n * Load balancer for handling asynchronous calls from multiple channels.\n *\n * Manages a queue of calls from different channels and ensures that the calls\n * are processed in a balanced manner in a round-robin fashion.\n */\nexport class Balancer {\n private _lastCallerIndex = 0;\n private _channels: number[] = [];\n\n private readonly _framer = new Framer();\n // TODO(egorgripasov): Will cause a memory leak if channels do not appreciate the backpressure.\n private readonly _sendBuffers: Map<number, ChunkEnvelope[]> = new Map();\n private readonly _receiveBuffers = new Map<number, ChannelBuffer>();\n\n private _sending = false;\n public incomingData = new Event<Uint8Array>();\n public readonly stream = this._framer.stream;\n\n constructor(private readonly _sysChannelId: number) {\n this._channels.push(_sysChannelId);\n\n // Handle incoming messages.\n this._framer.port.subscribe(this._processIncomingMessage.bind(this));\n }\n\n get bytesSent() {\n return this._framer.bytesSent;\n }\n\n get bytesReceived() {\n return this._framer.bytesReceived;\n }\n\n get buffersCount() {\n return this._sendBuffers.size;\n }\n\n addChannel(channel: number) {\n this._channels.push(channel);\n }\n\n pushData(data: Uint8Array, trigger: Trigger, channelId: number) {\n this._enqueueChunk(data, trigger, channelId);\n this._sendChunks().catch((err) => log.catch(err));\n }\n\n destroy() {\n if (this._sendBuffers.size !== 0) {\n log.info('destroying balancer with pending calls');\n }\n this._sendBuffers.clear();\n this._framer.destroy();\n }\n\n private _processIncomingMessage(msg: Uint8Array) {\n const { channelId, dataLength, chunk } = decodeChunk(msg, (channelId) => !this._receiveBuffers.has(channelId));\n if (!this._receiveBuffers.has(channelId)) {\n if (chunk.length < dataLength!) {\n this._receiveBuffers.set(channelId, {\n buffer: Buffer.from(chunk),\n msgLength: dataLength!,\n });\n } else {\n this.incomingData.emit(chunk);\n }\n } else {\n const channelBuffer = this._receiveBuffers.get(channelId)!;\n channelBuffer.buffer = Buffer.concat([channelBuffer.buffer, chunk]);\n if (channelBuffer.buffer.length < channelBuffer.msgLength) {\n return;\n }\n const msg = channelBuffer.buffer;\n this._receiveBuffers.delete(channelId);\n this.incomingData.emit(msg);\n }\n }\n\n private _getNextCallerId() {\n if (this._sendBuffers.has(this._sysChannelId)) {\n return this._sysChannelId;\n }\n\n const index = this._lastCallerIndex;\n this._lastCallerIndex = (this._lastCallerIndex + 1) % this._channels.length;\n\n return this._channels[index];\n }\n\n private _enqueueChunk(data: Uint8Array, trigger: Trigger, channelId: number) {\n if (!this._channels.includes(channelId)) {\n throw new Error(`Unknown channel ${channelId}`);\n }\n\n if (!this._sendBuffers.has(channelId)) {\n this._sendBuffers.set(channelId, []);\n }\n\n const sendBuffer = this._sendBuffers.get(channelId)!;\n\n const chunks = [];\n for (let idx = 0; idx < data.length; idx += MAX_CHUNK_SIZE) {\n chunks.push(data.subarray(idx, idx + MAX_CHUNK_SIZE));\n }\n\n chunks.forEach((chunk, index) => {\n const msg = encodeChunk({\n chunk,\n channelId,\n dataLength: index === 0 ? data.length : undefined,\n });\n sendBuffer.push({ msg, trigger: index === chunks.length - 1 ? trigger : undefined });\n });\n }\n\n // get the next chunk or null if there are no chunks remaining\n\n private _getNextChunk(): ChunkEnvelope | null {\n let chunk;\n while (this._sendBuffers.size > 0) {\n const channelId = this._getNextCallerId();\n const sendBuffer = this._sendBuffers.get(channelId);\n if (!sendBuffer) {\n continue;\n }\n\n chunk = sendBuffer.shift();\n if (!chunk) {\n continue;\n }\n if (sendBuffer.length === 0) {\n this._sendBuffers.delete(channelId);\n }\n return chunk;\n }\n return null;\n }\n\n private async _sendChunks() {\n if (this._sending) {\n return;\n }\n this._sending = true;\n let chunk: ChunkEnvelope | null;\n chunk = this._getNextChunk();\n while (chunk) {\n // TODO(nf): determine whether this is needed since we await the chunk send\n if (!this._framer.writable) {\n log('PAUSE for drain');\n await this._framer.drain.waitForCount(1);\n log('RESUME for drain');\n }\n try {\n await this._framer.port.send(chunk.msg);\n chunk.trigger?.wake();\n } catch (err: any) {\n log('Error sending chunk', { err });\n chunk.trigger?.throw(err);\n }\n chunk = this._getNextChunk();\n }\n invariant(this._sendBuffers.size === 0, 'sendBuffers not empty');\n this._sending = false;\n }\n}\n\nexport const encodeChunk = ({ channelId, dataLength, chunk }: Chunk): Buffer => {\n const channelTagLength = varint.encodingLength(channelId);\n const dataLengthLength = dataLength ? varint.encodingLength(dataLength) : 0;\n const message = Buffer.allocUnsafe(channelTagLength + dataLengthLength + chunk.length);\n varint.encode(channelId, message);\n if (dataLength) {\n varint.encode(dataLength, message, channelTagLength);\n }\n message.set(chunk, channelTagLength + dataLengthLength);\n return message;\n};\n\nexport const decodeChunk = (data: Uint8Array, withLength: (channelId: number) => boolean): Chunk => {\n const channelId = varint.decode(data);\n let dataLength: number | undefined;\n let offset = varint.decode.bytes;\n\n if (withLength(channelId)) {\n dataLength = varint.decode(data, offset);\n offset += varint.decode.bytes;\n }\n\n const chunk = data.subarray(offset);\n\n return { channelId, dataLength, chunk };\n};\n", "//\n// Copyright 2022 DXOS.org\n//\n\nimport { asyncTimeout, Trigger } from '@dxos/async';\nimport { invariant } from '@dxos/invariant';\nimport { log } from '@dxos/log';\nimport { schema } from '@dxos/protocols';\nimport { type TestService } from '@dxos/protocols/proto/example/testing/rpc';\nimport { createProtoRpcPeer, type ProtoRpcPeer } from '@dxos/rpc';\n\nimport { type ExtensionContext, type TeleportExtension } from '../teleport';\n\ninterface TestExtensionCallbacks {\n onOpen?: () => Promise<void>;\n onClose?: () => Promise<void>;\n onAbort?: () => Promise<void>;\n}\n\nexport class TestExtension implements TeleportExtension {\n public readonly open = new Trigger();\n public readonly closed = new Trigger();\n public readonly aborted = new Trigger();\n public extensionContext: ExtensionContext | undefined;\n private _rpc!: ProtoRpcPeer<{ TestService: TestService }>;\n\n constructor(public readonly callbacks: TestExtensionCallbacks = {}) {}\n\n get remotePeerId() {\n return this.extensionContext?.remotePeerId;\n }\n\n async onOpen(context: ExtensionContext) {\n log('onOpen', { localPeerId: context.localPeerId, remotePeerId: context.remotePeerId });\n this.extensionContext = context;\n this._rpc = createProtoRpcPeer<{ TestService: TestService }, { TestService: TestService }>({\n port: await context.createPort('rpc', {\n contentType: 'application/x-protobuf; messageType=\"dxos.rpc.Message\"',\n }),\n requested: {\n TestService: schema.getService('example.testing.rpc.TestService'),\n },\n exposed: {\n TestService: schema.getService('example.testing.rpc.TestService'),\n },\n handlers: {\n TestService: {\n voidCall: async (request) => {\n // Ok.\n },\n testCall: async (request) => {\n return {\n data: request.data,\n };\n },\n },\n },\n timeout: 2000,\n });\n\n await this._rpc.open();\n await this.callbacks.onOpen?.();\n\n this.open.wake();\n }\n\n async onClose(err?: Error) {\n log('onClose', { err });\n await this.callbacks.onClose?.();\n this.closed.wake();\n await this._rpc?.close();\n }\n\n async onAbort(err?: Error) {\n log('onAbort', { err });\n await this.callbacks.onAbort?.();\n this.aborted.wake();\n await this._rpc?.abort();\n }\n\n async test(message = 'test') {\n await this.open.wait({ timeout: 1500 });\n const res = await asyncTimeout(this._rpc.rpc.TestService.testCall({ data: message }), 1500);\n invariant(res.data === message);\n }\n\n /**\n * Force-close the connection.\n */\n async closeConnection(err?: Error) {\n this.extensionContext?.close(err);\n }\n}\n", "//\n// Copyright 2022 DXOS.org\n//\n\nimport { randomBytes } from 'node:crypto';\nimport { type Duplex } from 'node:stream';\n\nimport { Trigger } from '@dxos/async';\nimport { invariant } from '@dxos/invariant';\nimport { log } from '@dxos/log';\nimport { schema } from '@dxos/protocols';\nimport { type TestServiceWithStreams } from '@dxos/protocols/proto/example/testing/rpc';\nimport { createProtoRpcPeer, type ProtoRpcPeer } from '@dxos/rpc';\n\nimport { type ExtensionContext, type TeleportExtension } from '../teleport';\n\ninterface TestExtensionWithStreamsCallbacks {\n onOpen?: () => Promise<void>;\n onClose?: () => Promise<void>;\n onAbort?: () => Promise<void>;\n}\n\nexport class TestExtensionWithStreams implements TeleportExtension {\n public readonly open = new Trigger();\n public readonly closed = new Trigger();\n public readonly aborted = new Trigger();\n private readonly _streams = new Map<string, TestStream>();\n\n public extensionContext: ExtensionContext | undefined;\n private _rpc!: ProtoRpcPeer<{ TestServiceWithStreams: TestServiceWithStreams }>;\n\n constructor(public readonly callbacks: TestExtensionWithStreamsCallbacks = {}) {}\n\n get remotePeerId() {\n return this.extensionContext?.remotePeerId;\n }\n\n private async _openStream(streamTag: string, interval = 5, chunkSize = 2048) {\n invariant(!this._streams.has(streamTag), `Stream already exists: ${streamTag}`);\n\n const networkStream = await this.extensionContext!.createStream(streamTag, {\n contentType: 'application/x-test-stream',\n });\n\n const streamEntry: TestStream = {\n networkStream,\n bytesSent: 0,\n bytesReceived: 0,\n sendErrors: 0,\n receiveErrors: 0,\n startTimestamp: Date.now(),\n };\n\n const pushChunk = () => {\n streamEntry.timer = setTimeout(() => {\n const chunk = randomBytes(chunkSize);\n\n if (\n !networkStream.write(chunk, 'binary', (err) => {\n if (!err) {\n streamEntry.bytesSent += chunk.length;\n } else {\n streamEntry.sendErrors += 1;\n }\n })\n ) {\n networkStream.once('drain', pushChunk);\n } else {\n process.nextTick(pushChunk);\n }\n }, interval);\n };\n\n pushChunk();\n\n this._streams.set(streamTag, streamEntry);\n\n networkStream.on('data', (data) => {\n streamEntry.bytesReceived += data.length;\n });\n\n networkStream.on('error', (err) => {\n streamEntry.receiveErrors += 1;\n });\n\n networkStream.on('close', () => {\n networkStream.removeAllListeners();\n });\n\n streamEntry.reportingTimer = setInterval(() => {\n const { bytesSent, bytesReceived, sendErrors, receiveErrors } = streamEntry;\n // log.info('stream stats', { streamTag, bytesSent, bytesReceived, sendErrors, receiveErrors });\n log.trace('dxos.test.stream-stats', {\n streamTag,\n bytesSent,\n bytesReceived,\n sendErrors,\n receiveErrors,\n from: this.extensionContext?.localPeerId,\n to: this.extensionContext?.remotePeerId,\n });\n }, 100);\n }\n\n private _closeStream(streamTag: string): Stats {\n invariant(this._streams.has(streamTag), `Stream does not exist: ${streamTag}`);\n\n const stream = this._streams.get(streamTag)!;\n\n clearTimeout(stream.timer);\n clearTimeout(stream.reportingTimer);\n\n const { bytesSent, bytesReceived, sendErrors, receiveErrors, startTimestamp } = stream;\n\n stream.networkStream.destroy();\n this._streams.delete(streamTag);\n\n return {\n bytesSent,\n bytesReceived,\n sendErrors,\n receiveErrors,\n runningTime: Date.now() - (startTimestamp ?? 0),\n };\n }\n\n async onOpen(context: ExtensionContext) {\n log('onOpen', { localPeerId: context.localPeerId, remotePeerId: context.remotePeerId });\n this.extensionContext = context;\n this._rpc = createProtoRpcPeer<\n { TestServiceWithStreams: TestServiceWithStreams },\n { TestServiceWithStreams: TestServiceWithStreams }\n >({\n port: await context.createPort('rpc', {\n contentType: 'application/x-protobuf; messageType=\"dxos.rpc.Message\"',\n }),\n requested: {\n TestServiceWithStreams: schema.getService('example.testing.rpc.TestServiceWithStreams'),\n },\n exposed: {\n TestServiceWithStreams: schema.getService('example.testing.rpc.TestServiceWithStreams'),\n },\n handlers: {\n TestServiceWithStreams: {\n requestTestStream: async (request) => {\n const { data: streamTag, streamLoadInterval, streamLoadChunkSize } = request;\n\n await this._openStream(streamTag, streamLoadInterval, streamLoadChunkSize);\n\n return {\n data: streamTag,\n };\n },\n closeTestStream: async (request) => {\n const streamTag = request.data;\n const { bytesSent, bytesReceived, sendErrors, receiveErrors, runningTime } = this._closeStream(streamTag);\n\n return {\n data: streamTag,\n bytesSent,\n bytesReceived,\n sendErrors,\n receiveErrors,\n runningTime,\n };\n },\n },\n },\n timeout: 2000,\n });\n\n await this._rpc.open();\n await this.callbacks.onOpen?.();\n\n this.open.wake();\n }\n\n async onClose(err?: Error) {\n log('onClose', { err });\n await this.callbacks.onClose?.();\n this.closed.wake();\n for (const [streamTag, stream] of Object.entries(this._streams)) {\n log('closing stream', { streamTag });\n clearTimeout(stream.interval);\n stream.networkStream.destroy();\n }\n await this._rpc?.close();\n }\n\n async onAbort(err?: Error) {\n log('onAbort', { err });\n await this.callbacks.onAbort?.();\n this.aborted.wake();\n await this._rpc?.abort();\n }\n\n async addNewStream(streamLoadInterval: number, streamLoadChunkSize: number, streamTag?: string): Promise<string> {\n await this.open.wait({ timeout: 1500 });\n if (!streamTag) {\n streamTag = `stream-${randomBytes(4).toString('hex')}`;\n }\n const { data } = await this._rpc.rpc.TestServiceWithStreams.requestTestStream({\n data: streamTag,\n streamLoadInterval,\n streamLoadChunkSize,\n });\n invariant(data === streamTag);\n\n await this._openStream(streamTag, streamLoadInterval, streamLoadChunkSize);\n return streamTag;\n }\n\n async closeStream(streamTag: string): Promise<TestStreamStats> {\n await this.open.wait({ timeout: 1500 });\n const { data, bytesSent, bytesReceived, sendErrors, receiveErrors, runningTime } =\n await this._rpc.rpc.TestServiceWithStreams.closeTestStream({\n data: streamTag,\n });\n\n invariant(data === streamTag);\n\n const local = this._closeStream(streamTag);\n\n return {\n streamTag,\n stats: {\n local,\n remote: {\n bytesSent,\n bytesReceived,\n sendErrors,\n receiveErrors,\n runningTime,\n },\n },\n };\n }\n\n /**\n * Force-close the connection.\n */\n async closeConnection(err?: Error) {\n this.extensionContext?.close(err);\n }\n}\n\ntype Stats = {\n bytesSent: number;\n bytesReceived: number;\n sendErrors: number;\n receiveErrors: number;\n runningTime: number;\n};\n\nexport type TestStreamStats = {\n streamTag: string;\n stats: {\n local: Stats;\n remote: Stats;\n };\n};\n\ntype TestStream = {\n networkStream: Duplex;\n bytesSent: number;\n bytesReceived: number;\n sendErrors: number;\n receiveErrors: number;\n timer?: NodeJS.Timer;\n startTimestamp?: number;\n reportingTimer?: NodeJS.Timer;\n};\n"],
5
- "mappings": "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",
5
+ "mappings": "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",
6
6
  "names": ["import_invariant", "import_keys", "import_log", "import_async", "import_context", "import_protocols", "import_node_stream", "import_debug", "import_rpc", "HEARTBEAT_RTT_WARN_THRESH", "DEBUG_PRINT_HEARTBEAT", "ControlExtension", "constructor", "opts", "localPeerId", "remotePeerId", "_ctx", "Context", "onError", "err", "_extensionContext", "close", "onExtensionRegistered", "Callback", "registerExtension", "name", "_rpc", "rpc", "Control", "onOpen", "extensionContext", "createProtoRpcPeer", "requested", "schema", "getService", "exposed", "handlers", "request", "call", "heartbeat", "log", "ts", "requestTimestamp", "truncate", "port", "createPort", "contentType", "timeout", "heartbeatTimeout", "open", "scheduleTaskInterval", "reqTS", "Date", "resp", "asyncTimeout", "now", "getTime", "warn", "rtt", "RpcClosedError", "AsyncTimeoutError", "delay", "onTimeout", "info", "heartbeatInterval", "onClose", "dispose", "onAbort", "abort", "FRAME_LENGTH_SIZE", "Framer", "undefined", "_subscribeCb", "_buffer", "_sendCallbacks", "_bytesSent", "_bytesReceived", "_writable", "drain", "Event", "Duplex", "objectMode", "read", "_processResponseQueue", "write", "chunk", "encoding", "callback", "invariant", "length", "Buffer", "concat", "_messageCb", "_popFrames", "send", "message", "Promise", "resolve", "frame", "encodeFrame", "_stream", "push", "subscribe", "stream", "bytesSent", "bytesReceived", "writable", "responseQueue", "emit", "forEach", "cb", "offset", "decodeFrame", "bytesConsumed", "payload", "subarray", "destroy", "readableLength", "writableLength", "buffer", "frameLength", "readUInt16BE", "allocUnsafe", "writeUInt16BE", "set", "MAX_CHUNK_SIZE", "Balancer", "_sysChannelId", "_lastCallerIndex", "_channels", "_framer", "_sendBuffers", "Map", "_receiveBuffers", "_sending", "incomingData", "_processIncomingMessage", "bind", "buffersCount", "size", "addChannel", "channel", "pushData", "data", "trigger", "channelId", "_enqueueChunk", "_sendChunks", "catch", "clear", "msg", "dataLength", "decodeChunk", "has", "from", "msgLength", "channelBuffer", "get", "delete", "_getNextCallerId", "index", "includes", "Error", "sendBuffer", "chunks", "idx", "encodeChunk", "_getNextChunk", "shift", "waitForCount", "wake", "throw", "channelTagLength", "encodingLength", "dataLengthLength", "encode", "withLength", "decode", "bytes", "Command", "getCodecForType", "DEFAULT_SEND_COMMAND_TIMEOUT", "DESTROY_COMMAND_SEND_TIMEOUT", "STATS_INTERVAL", "MAX_SAFE_FRAME_SIZE", "SYSTEM_CHANNEL_ID", "GRACEFUL_CLOSE_TIMEOUT", "Muxer", "_balancer", "_channelsByLocalId", "_channelsByTag", "_nextId", "_closing", "_destroying", "_disposed", "_lastStats", "_lastChannelStats", "afterClosed", "statsUpdated", "on", "_handleCommand", "setSessionId", "sessionId", "_sessionId", "sessionIdString", "createStream", "tag", "_getOrCreateStream", "_sendData", "then", "stats", "listeners", "_sendCommand", "openChannel", "id", "_destroyChannel", "inboundBuffer", "error", "_dispose", "TimeoutError", "values", "_emitStats", "cmd", "remoteId", "failUndefined", "Trigger", "wait", "params", "threshold", "lastStats", "readBufferSize", "writeBufferSize", "c", "channels", "interval", "timestamp", "calculateThroughput", "current", "last", "bytesSentRate", "bytesReceivedRate", "Array", "map", "logInfo", "CONTROL_HEARTBEAT_INTERVAL", "CONTROL_HEARTBEAT_TIMEOUT", "Teleport", "initiator", "rest", "_muxer", "_extensions", "_remoteExtensions", "Set", "_open", "_aborting", "PublicKey", "isPublicKey", "_control", "controlHeartbeatInterval", "controlHeartbeatTimeout", "add", "_openExtension", "trace", "random", "_setExtension", "disposed", "extension", "extensionsCount", "addExtension", "scheduleTask", "extensionName", "context", "channelName", "runInContextAsync", "synchronized", "TestBuilder", "_peers", "createPeer", "peer", "factory", "createPeers", "all", "agent", "connect", "peer1", "peer2", "connection1", "createConnection", "peerId", "connection2", "pipeStreams", "teleport", "openConnection", "disconnect", "connections", "find", "connection", "equals", "closeConnection", "TestPeer", "TestConnection", "stream1", "stream2", "pipeline", "code", "TestExtension", "callbacks", "closed", "aborted", "TestService", "voidCall", "testCall", "test", "res", "TestExtensionWithStreams", "_streams", "_openStream", "streamTag", "chunkSize", "networkStream", "streamEntry", "sendErrors", "receiveErrors", "startTimestamp", "pushChunk", "timer", "setTimeout", "randomBytes", "once", "process", "nextTick", "removeAllListeners", "reportingTimer", "setInterval", "to", "_closeStream", "clearTimeout", "runningTime", "TestServiceWithStreams", "requestTestStream", "streamLoadInterval", "streamLoadChunkSize", "closeTestStream", "Object", "entries", "addNewStream", "toString", "closeStream", "local", "remote"]
7
7
  }
@@ -18,20 +18,20 @@ var __copyProps = (to, from, except, desc) => {
18
18
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
19
  var node_exports = {};
20
20
  __export(node_exports, {
21
- Framer: () => import_chunk_KJ54XLFB.Framer,
22
- Muxer: () => import_chunk_KJ54XLFB.Muxer,
21
+ Framer: () => import_chunk_XPYFDE6K.Framer,
22
+ Muxer: () => import_chunk_XPYFDE6K.Muxer,
23
23
  RpcExtension: () => RpcExtension,
24
- Teleport: () => import_chunk_KJ54XLFB.Teleport,
25
- TestBuilder: () => import_chunk_KJ54XLFB.TestBuilder,
26
- TestConnection: () => import_chunk_KJ54XLFB.TestConnection,
27
- TestExtension: () => import_chunk_KJ54XLFB.TestExtension,
28
- TestExtensionWithStreams: () => import_chunk_KJ54XLFB.TestExtensionWithStreams,
29
- TestPeer: () => import_chunk_KJ54XLFB.TestPeer,
30
- decodeFrame: () => import_chunk_KJ54XLFB.decodeFrame,
31
- encodeFrame: () => import_chunk_KJ54XLFB.encodeFrame
24
+ Teleport: () => import_chunk_XPYFDE6K.Teleport,
25
+ TestBuilder: () => import_chunk_XPYFDE6K.TestBuilder,
26
+ TestConnection: () => import_chunk_XPYFDE6K.TestConnection,
27
+ TestExtension: () => import_chunk_XPYFDE6K.TestExtension,
28
+ TestExtensionWithStreams: () => import_chunk_XPYFDE6K.TestExtensionWithStreams,
29
+ TestPeer: () => import_chunk_XPYFDE6K.TestPeer,
30
+ decodeFrame: () => import_chunk_XPYFDE6K.decodeFrame,
31
+ encodeFrame: () => import_chunk_XPYFDE6K.encodeFrame
32
32
  });
33
33
  module.exports = __toCommonJS(node_exports);
34
- var import_chunk_KJ54XLFB = require("./chunk-KJ54XLFB.cjs");
34
+ var import_chunk_XPYFDE6K = require("./chunk-XPYFDE6K.cjs");
35
35
  var import_invariant = require("@dxos/invariant");
36
36
  var import_rpc = require("@dxos/rpc");
37
37
  var __dxlog_file = "/home/runner/work/dxos/dxos/packages/core/mesh/teleport/src/rpc-extension.ts";
@@ -1 +1 @@
1
- {"inputs":{"packages/core/mesh/teleport/src/muxing/framer.ts":{"bytes":18431,"imports":[{"path":"node:stream","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/teleport/src/muxing/balancer.ts":{"bytes":24205,"imports":[{"path":"varint","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"packages/core/mesh/teleport/src/muxing/framer.ts","kind":"import-statement","original":"./framer"}],"format":"esm"},"packages/core/mesh/teleport/src/muxing/muxer.ts":{"bytes":52190,"imports":[{"path":"node:stream","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"packages/core/mesh/teleport/src/muxing/balancer.ts","kind":"import-statement","original":"./balancer"}],"format":"esm"},"packages/core/mesh/teleport/src/muxing/rpc-port.ts":{"bytes":1185,"imports":[],"format":"esm"},"packages/core/mesh/teleport/src/muxing/index.ts":{"bytes":673,"imports":[{"path":"packages/core/mesh/teleport/src/muxing/framer.ts","kind":"import-statement","original":"./framer"},{"path":"packages/core/mesh/teleport/src/muxing/muxer.ts","kind":"import-statement","original":"./muxer"},{"path":"packages/core/mesh/teleport/src/muxing/rpc-port.ts","kind":"import-statement","original":"./rpc-port"}],"format":"esm"},"packages/core/mesh/teleport/src/control-extension.ts":{"bytes":18786,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/rpc","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/teleport/src/teleport.ts":{"bytes":33806,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"packages/core/mesh/teleport/src/control-extension.ts","kind":"import-statement","original":"./control-extension"},{"path":"packages/core/mesh/teleport/src/muxing/index.ts","kind":"import-statement","original":"./muxing"}],"format":"esm"},"packages/core/mesh/teleport/src/testing/test-builder.ts":{"bytes":16052,"imports":[{"path":"node:stream","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"packages/core/mesh/teleport/src/teleport.ts","kind":"import-statement","original":"../teleport"}],"format":"esm"},"packages/core/mesh/teleport/src/testing/test-extension.ts":{"bytes":10114,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/rpc","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/teleport/src/testing/test-extension-with-streams.ts":{"bytes":27483,"imports":[{"path":"node:crypto","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/rpc","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/teleport/src/testing/index.ts":{"bytes":760,"imports":[{"path":"packages/core/mesh/teleport/src/testing/test-builder.ts","kind":"import-statement","original":"./test-builder"},{"path":"packages/core/mesh/teleport/src/testing/test-extension.ts","kind":"import-statement","original":"./test-extension"},{"path":"packages/core/mesh/teleport/src/testing/test-extension-with-streams.ts","kind":"import-statement","original":"./test-extension-with-streams"}],"format":"esm"},"packages/core/mesh/teleport/src/rpc-extension.ts":{"bytes":6169,"imports":[{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/rpc","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/teleport/src/index.ts":{"bytes":773,"imports":[{"path":"packages/core/mesh/teleport/src/muxing/index.ts","kind":"import-statement","original":"./muxing"},{"path":"packages/core/mesh/teleport/src/teleport.ts","kind":"import-statement","original":"./teleport"},{"path":"packages/core/mesh/teleport/src/testing/index.ts","kind":"import-statement","original":"./testing"},{"path":"packages/core/mesh/teleport/src/rpc-extension.ts","kind":"import-statement","original":"./rpc-extension"}],"format":"esm"}},"outputs":{"packages/core/mesh/teleport/dist/lib/node/index.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":3037},"packages/core/mesh/teleport/dist/lib/node/index.cjs":{"imports":[{"path":"packages/core/mesh/teleport/dist/lib/node/chunk-KJ54XLFB.cjs","kind":"import-statement"},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/rpc","kind":"import-statement","external":true}],"exports":["Framer","Muxer","RpcExtension","Teleport","TestBuilder","TestConnection","TestExtension","TestExtensionWithStreams","TestPeer","decodeFrame","encodeFrame"],"entryPoint":"packages/core/mesh/teleport/src/index.ts","inputs":{"packages/core/mesh/teleport/src/index.ts":{"bytesInOutput":0},"packages/core/mesh/teleport/src/rpc-extension.ts":{"bytesInOutput":1368}},"bytes":1824},"packages/core/mesh/teleport/dist/lib/node/testing/index.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":93},"packages/core/mesh/teleport/dist/lib/node/testing/index.cjs":{"imports":[{"path":"packages/core/mesh/teleport/dist/lib/node/chunk-KJ54XLFB.cjs","kind":"import-statement"}],"exports":["TestBuilder","TestConnection","TestExtension","TestExtensionWithStreams","TestPeer"],"entryPoint":"packages/core/mesh/teleport/src/testing/index.ts","inputs":{},"bytes":266},"packages/core/mesh/teleport/dist/lib/node/chunk-KJ54XLFB.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":92758},"packages/core/mesh/teleport/dist/lib/node/chunk-KJ54XLFB.cjs":{"imports":[{"path":"node:stream","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/rpc","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"node:stream","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"node:stream","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"varint","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/rpc","kind":"import-statement","external":true},{"path":"node:crypto","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/rpc","kind":"import-statement","external":true}],"exports":["Framer","Muxer","Teleport","TestBuilder","TestConnection","TestExtension","TestExtensionWithStreams","TestPeer","decodeFrame","encodeFrame"],"inputs":{"packages/core/mesh/teleport/src/testing/test-builder.ts":{"bytesInOutput":4948},"packages/core/mesh/teleport/src/teleport.ts":{"bytesInOutput":10366},"packages/core/mesh/teleport/src/control-extension.ts":{"bytesInOutput":4872},"packages/core/mesh/teleport/src/muxing/framer.ts":{"bytesInOutput":4617},"packages/core/mesh/teleport/src/muxing/index.ts":{"bytesInOutput":0},"packages/core/mesh/teleport/src/muxing/muxer.ts":{"bytesInOutput":13714},"packages/core/mesh/teleport/src/muxing/balancer.ts":{"bytesInOutput":6007},"packages/core/mesh/teleport/src/testing/index.ts":{"bytesInOutput":0},"packages/core/mesh/teleport/src/testing/test-extension.ts":{"bytesInOutput":2662},"packages/core/mesh/teleport/src/testing/test-extension-with-streams.ts":{"bytesInOutput":7344}},"bytes":55358}}}
1
+ {"inputs":{"packages/core/mesh/teleport/src/muxing/framer.ts":{"bytes":18431,"imports":[{"path":"node:stream","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/teleport/src/muxing/balancer.ts":{"bytes":24205,"imports":[{"path":"varint","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"packages/core/mesh/teleport/src/muxing/framer.ts","kind":"import-statement","original":"./framer"}],"format":"esm"},"packages/core/mesh/teleport/src/muxing/muxer.ts":{"bytes":52253,"imports":[{"path":"node:stream","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"packages/core/mesh/teleport/src/muxing/balancer.ts","kind":"import-statement","original":"./balancer"}],"format":"esm"},"packages/core/mesh/teleport/src/muxing/rpc-port.ts":{"bytes":1185,"imports":[],"format":"esm"},"packages/core/mesh/teleport/src/muxing/index.ts":{"bytes":673,"imports":[{"path":"packages/core/mesh/teleport/src/muxing/framer.ts","kind":"import-statement","original":"./framer"},{"path":"packages/core/mesh/teleport/src/muxing/muxer.ts","kind":"import-statement","original":"./muxer"},{"path":"packages/core/mesh/teleport/src/muxing/rpc-port.ts","kind":"import-statement","original":"./rpc-port"}],"format":"esm"},"packages/core/mesh/teleport/src/control-extension.ts":{"bytes":18854,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/rpc","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/teleport/src/teleport.ts":{"bytes":33862,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"packages/core/mesh/teleport/src/control-extension.ts","kind":"import-statement","original":"./control-extension"},{"path":"packages/core/mesh/teleport/src/muxing/index.ts","kind":"import-statement","original":"./muxing"}],"format":"esm"},"packages/core/mesh/teleport/src/testing/test-builder.ts":{"bytes":16052,"imports":[{"path":"node:stream","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"packages/core/mesh/teleport/src/teleport.ts","kind":"import-statement","original":"../teleport"}],"format":"esm"},"packages/core/mesh/teleport/src/testing/test-extension.ts":{"bytes":10114,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/rpc","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/teleport/src/testing/test-extension-with-streams.ts":{"bytes":27483,"imports":[{"path":"node:crypto","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/rpc","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/teleport/src/testing/index.ts":{"bytes":760,"imports":[{"path":"packages/core/mesh/teleport/src/testing/test-builder.ts","kind":"import-statement","original":"./test-builder"},{"path":"packages/core/mesh/teleport/src/testing/test-extension.ts","kind":"import-statement","original":"./test-extension"},{"path":"packages/core/mesh/teleport/src/testing/test-extension-with-streams.ts","kind":"import-statement","original":"./test-extension-with-streams"}],"format":"esm"},"packages/core/mesh/teleport/src/rpc-extension.ts":{"bytes":6169,"imports":[{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/rpc","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/teleport/src/index.ts":{"bytes":773,"imports":[{"path":"packages/core/mesh/teleport/src/muxing/index.ts","kind":"import-statement","original":"./muxing"},{"path":"packages/core/mesh/teleport/src/teleport.ts","kind":"import-statement","original":"./teleport"},{"path":"packages/core/mesh/teleport/src/testing/index.ts","kind":"import-statement","original":"./testing"},{"path":"packages/core/mesh/teleport/src/rpc-extension.ts","kind":"import-statement","original":"./rpc-extension"}],"format":"esm"}},"outputs":{"packages/core/mesh/teleport/dist/lib/node/index.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":3037},"packages/core/mesh/teleport/dist/lib/node/index.cjs":{"imports":[{"path":"packages/core/mesh/teleport/dist/lib/node/chunk-XPYFDE6K.cjs","kind":"import-statement"},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/rpc","kind":"import-statement","external":true}],"exports":["Framer","Muxer","RpcExtension","Teleport","TestBuilder","TestConnection","TestExtension","TestExtensionWithStreams","TestPeer","decodeFrame","encodeFrame"],"entryPoint":"packages/core/mesh/teleport/src/index.ts","inputs":{"packages/core/mesh/teleport/src/index.ts":{"bytesInOutput":0},"packages/core/mesh/teleport/src/rpc-extension.ts":{"bytesInOutput":1368}},"bytes":1824},"packages/core/mesh/teleport/dist/lib/node/testing/index.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":93},"packages/core/mesh/teleport/dist/lib/node/testing/index.cjs":{"imports":[{"path":"packages/core/mesh/teleport/dist/lib/node/chunk-XPYFDE6K.cjs","kind":"import-statement"}],"exports":["TestBuilder","TestConnection","TestExtension","TestExtensionWithStreams","TestPeer"],"entryPoint":"packages/core/mesh/teleport/src/testing/index.ts","inputs":{},"bytes":266},"packages/core/mesh/teleport/dist/lib/node/chunk-XPYFDE6K.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":92773},"packages/core/mesh/teleport/dist/lib/node/chunk-XPYFDE6K.cjs":{"imports":[{"path":"node:stream","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/rpc","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"node:stream","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"node:stream","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"varint","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/rpc","kind":"import-statement","external":true},{"path":"node:crypto","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/rpc","kind":"import-statement","external":true}],"exports":["Framer","Muxer","Teleport","TestBuilder","TestConnection","TestExtension","TestExtensionWithStreams","TestPeer","decodeFrame","encodeFrame"],"inputs":{"packages/core/mesh/teleport/src/testing/test-builder.ts":{"bytesInOutput":4948},"packages/core/mesh/teleport/src/teleport.ts":{"bytesInOutput":10411},"packages/core/mesh/teleport/src/control-extension.ts":{"bytesInOutput":4916},"packages/core/mesh/teleport/src/muxing/framer.ts":{"bytesInOutput":4617},"packages/core/mesh/teleport/src/muxing/index.ts":{"bytesInOutput":0},"packages/core/mesh/teleport/src/muxing/muxer.ts":{"bytesInOutput":13766},"packages/core/mesh/teleport/src/muxing/balancer.ts":{"bytesInOutput":6007},"packages/core/mesh/teleport/src/testing/index.ts":{"bytesInOutput":0},"packages/core/mesh/teleport/src/testing/test-extension.ts":{"bytesInOutput":2662},"packages/core/mesh/teleport/src/testing/test-extension-with-streams.ts":{"bytesInOutput":7344}},"bytes":55499}}}
@@ -18,14 +18,14 @@ var __copyProps = (to, from, except, desc) => {
18
18
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
19
  var testing_exports = {};
20
20
  __export(testing_exports, {
21
- TestBuilder: () => import_chunk_KJ54XLFB.TestBuilder,
22
- TestConnection: () => import_chunk_KJ54XLFB.TestConnection,
23
- TestExtension: () => import_chunk_KJ54XLFB.TestExtension,
24
- TestExtensionWithStreams: () => import_chunk_KJ54XLFB.TestExtensionWithStreams,
25
- TestPeer: () => import_chunk_KJ54XLFB.TestPeer
21
+ TestBuilder: () => import_chunk_XPYFDE6K.TestBuilder,
22
+ TestConnection: () => import_chunk_XPYFDE6K.TestConnection,
23
+ TestExtension: () => import_chunk_XPYFDE6K.TestExtension,
24
+ TestExtensionWithStreams: () => import_chunk_XPYFDE6K.TestExtensionWithStreams,
25
+ TestPeer: () => import_chunk_XPYFDE6K.TestPeer
26
26
  });
27
27
  module.exports = __toCommonJS(testing_exports);
28
- var import_chunk_KJ54XLFB = require("../chunk-KJ54XLFB.cjs");
28
+ var import_chunk_XPYFDE6K = require("../chunk-XPYFDE6K.cjs");
29
29
  // Annotate the CommonJS export names for ESM import in node:
30
30
  0 && (module.exports = {
31
31
  TestBuilder,
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["index.cjs"],
4
- "sourcesContent": ["import {\n TestBuilder,\n TestConnection,\n TestExtension,\n TestExtensionWithStreams,\n TestPeer\n} from \"../chunk-KJ54XLFB.cjs\";\nexport {\n TestBuilder,\n TestConnection,\n TestExtension,\n TestExtensionWithStreams,\n TestPeer\n};\n//# sourceMappingURL=index.cjs.map\n"],
4
+ "sourcesContent": ["import {\n TestBuilder,\n TestConnection,\n TestExtension,\n TestExtensionWithStreams,\n TestPeer\n} from \"../chunk-XPYFDE6K.cjs\";\nexport {\n TestBuilder,\n TestConnection,\n TestExtension,\n TestExtensionWithStreams,\n TestPeer\n};\n//# sourceMappingURL=index.cjs.map\n"],
5
5
  "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,4BAMO;",
6
6
  "names": []
7
7
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dxos/teleport",
3
- "version": "0.5.9-main.df0042a",
3
+ "version": "0.5.9-main.e9b9049",
4
4
  "description": "Stream muxer.",
5
5
  "homepage": "https://dxos.org",
6
6
  "bugs": "https://github.com/dxos/dxos/issues",
@@ -21,23 +21,23 @@
21
21
  "dependencies": {
22
22
  "randombytes": "^2.1.0",
23
23
  "varint": "6.0.0",
24
- "@dxos/async": "0.5.9-main.df0042a",
25
- "@dxos/context": "0.5.9-main.df0042a",
26
- "@dxos/debug": "0.5.9-main.df0042a",
27
- "@dxos/invariant": "0.5.9-main.df0042a",
28
- "@dxos/keys": "0.5.9-main.df0042a",
29
- "@dxos/log": "0.5.9-main.df0042a",
30
- "@dxos/node-std": "0.5.9-main.df0042a",
31
- "@dxos/protocols": "0.5.9-main.df0042a",
32
- "@dxos/rpc": "0.5.9-main.df0042a",
33
- "@dxos/util": "0.5.9-main.df0042a"
24
+ "@dxos/async": "0.5.9-main.e9b9049",
25
+ "@dxos/context": "0.5.9-main.e9b9049",
26
+ "@dxos/invariant": "0.5.9-main.e9b9049",
27
+ "@dxos/debug": "0.5.9-main.e9b9049",
28
+ "@dxos/keys": "0.5.9-main.e9b9049",
29
+ "@dxos/log": "0.5.9-main.e9b9049",
30
+ "@dxos/protocols": "0.5.9-main.e9b9049",
31
+ "@dxos/node-std": "0.5.9-main.e9b9049",
32
+ "@dxos/rpc": "0.5.9-main.e9b9049",
33
+ "@dxos/util": "0.5.9-main.e9b9049"
34
34
  },
35
35
  "devDependencies": {
36
36
  "@types/randombytes": "^2.0.0",
37
37
  "@types/varint": "6.0.0",
38
38
  "typescript": "^5.4.5",
39
39
  "wait-for-expect": "^3.0.2",
40
- "@dxos/async": "0.5.9-main.df0042a"
40
+ "@dxos/async": "0.5.9-main.e9b9049"
41
41
  },
42
42
  "publishConfig": {
43
43
  "access": "public"