@dxos/teleport 0.10.0 → 0.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/lib/neutral/{chunk-I37MUX43.mjs → chunk-7OL3IB7N.mjs} +65 -47
- package/dist/lib/neutral/{chunk-I37MUX43.mjs.map → chunk-7OL3IB7N.mjs.map} +1 -1
- package/dist/lib/neutral/index.mjs +1 -1
- package/dist/lib/neutral/meta.json +1 -1
- package/dist/lib/neutral/testing/index.mjs +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +12 -12
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../../../node_modules/.pnpm/varint@6.0.0/node_modules/varint/encode.js", "../../../../../../../node_modules/.pnpm/varint@6.0.0/node_modules/varint/decode.js", "../../../../../../../node_modules/.pnpm/varint@6.0.0/node_modules/varint/length.js", "../../../../../../../node_modules/.pnpm/varint@6.0.0/node_modules/varint/index.js", "../../../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": ["module.exports = encode\n\nvar MSB = 0x80\n , REST = 0x7F\n , MSBALL = ~REST\n , INT = Math.pow(2, 31)\n\nfunction encode(num, out, offset) {\n if (Number.MAX_SAFE_INTEGER && num > Number.MAX_SAFE_INTEGER) {\n encode.bytes = 0\n throw new RangeError('Could not encode varint')\n }\n out = out || []\n offset = offset || 0\n var oldOffset = offset\n\n while(num >= INT) {\n out[offset++] = (num & 0xFF) | MSB\n num /= 128\n }\n while(num & MSBALL) {\n out[offset++] = (num & 0xFF) | MSB\n num >>>= 7\n }\n out[offset] = num | 0\n \n encode.bytes = offset - oldOffset + 1\n \n return out\n}\n", "module.exports = read\n\nvar MSB = 0x80\n , REST = 0x7F\n\nfunction read(buf, offset) {\n var res = 0\n , offset = offset || 0\n , shift = 0\n , counter = offset\n , b\n , l = buf.length\n\n do {\n if (counter >= l || shift > 49) {\n read.bytes = 0\n throw new RangeError('Could not decode varint')\n }\n b = buf[counter++]\n res += shift < 28\n ? (b & REST) << shift\n : (b & REST) * Math.pow(2, shift)\n shift += 7\n } while (b >= MSB)\n\n read.bytes = counter - offset\n\n return res\n}\n", "\nvar N1 = Math.pow(2, 7)\nvar N2 = Math.pow(2, 14)\nvar N3 = Math.pow(2, 21)\nvar N4 = Math.pow(2, 28)\nvar N5 = Math.pow(2, 35)\nvar N6 = Math.pow(2, 42)\nvar N7 = Math.pow(2, 49)\nvar N8 = Math.pow(2, 56)\nvar N9 = Math.pow(2, 63)\n\nmodule.exports = function (value) {\n return (\n value < N1 ? 1\n : value < N2 ? 2\n : value < N3 ? 3\n : value < N4 ? 4\n : value < N5 ? 5\n : value < N6 ? 6\n : value < N7 ? 7\n : value < N8 ? 8\n : value < N9 ? 9\n : 10\n )\n}\n", "module.exports = {\n encode: require('./encode.js')\n , decode: require('./decode.js')\n , encodingLength: require('./length.js')\n}\n", "//\n// Copyright 2022 DXOS.org\n//\n\nimport { type Duplex, pipeline } from 'node:stream';\n\nimport { waitForCondition } from '@dxos/async';\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(): Promise<void> {\n await Promise.all(Array.from(this._peers).map((agent) => agent.destroy()));\n }\n\n async connect(peer1: TestPeer, peer2: TestPeer): Promise<TestConnection[]> {\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): Promise<void> {\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): Promise<void> {}\n protected async onClose(connection: TestConnection): Promise<void> {}\n\n createConnection({ initiator, remotePeerId }: { initiator: boolean; remotePeerId: PublicKey }): TestConnection {\n const connection = new TestConnection(this.peerId, remotePeerId, initiator);\n this.connections.add(connection);\n return connection;\n }\n\n async openConnection(connection: TestConnection): Promise<void> {\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): Promise<void> {\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(): Promise<void> {\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 public whenOpen(open: boolean): Promise<boolean> {\n return waitForCondition({ condition: () => this.teleport.isOpen === open });\n }\n}\n", "//\n// Copyright 2022 DXOS.org\n//\n\nimport { type Duplex } from 'node:stream';\n\nimport { type Event, runInContextAsync, scheduleTask, synchronized } from '@dxos/async';\nimport { Context } from '@dxos/context';\nimport { failUndefined } from '@dxos/debug';\nimport { assertArgument, 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 TeleportProps = {\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 log.info('error in teleport context', { 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 public get isOpen() {\n return this._open;\n }\n\n constructor({ initiator, localPeerId, remotePeerId, ...rest }: TeleportProps) {\n assertArgument(typeof initiator === 'boolean', 'initiator');\n assertArgument(PublicKey.isPublicKey(localPeerId), 'localPeerId');\n assertArgument(PublicKey.isPublicKey(remotePeerId), '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({ message: '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()): Promise<void> {\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): Promise<void> {\n // TODO(dmaretskyi): Try soft close.\n await this.destroy(err);\n }\n\n @synchronized\n async abort(err?: Error): Promise<void> {\n if (this._aborting || this._destroying) {\n return;\n }\n this._aborting = true;\n this._open = false;\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): Promise<void> {\n if (this._destroying || this._aborting) {\n return;\n }\n log('destroying teleport...', { extensionsCount: this._extensions.size });\n this._destroying = true;\n this._open = false;\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 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): void {\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): void {\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): Promise<void> {\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 { TimeoutError as AsyncTimeoutError, asyncTimeout, scheduleTaskInterval } from '@dxos/async';\nimport { Context } from '@dxos/context';\nimport { type PublicKey } from '@dxos/keys';\nimport { log } from '@dxos/log';\nimport { RpcClosedError } from '@dxos/protocols';\nimport { schema } from '@dxos/protocols/proto';\nimport { type ControlService } from '@dxos/protocols/proto/dxos/mesh/teleport/control';\nimport { type ProtoRpcPeer, createProtoRpcPeer } 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): Promise<void> {\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(): void {\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(): void {\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(): void {\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 { Event, Trigger, asyncTimeout, scheduleTaskInterval } 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 { TimeoutError } from '@dxos/protocols';\nimport { schema } from '@dxos/protocols/proto';\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 CreateChannelInternalProps = {\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): void {\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): Promise<void> {\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(\n this._dispose(err),\n GRACEFUL_CLOSE_TIMEOUT,\n new TimeoutError({ message: 'gracefully closing muxer' }),\n );\n }\n\n // force close without confirmation\n\n async destroy(err?: Error): Promise<void> {\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): Promise<void> {\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): Promise<void> {\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): Promise<void> {\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: CreateChannelInternalProps): 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): void {\n if (err) {\n log.warn('destroying channel with error', { err });\n }\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(): Promise<void> {\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 varint from 'varint';\n\nimport { Event, type Trigger } 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): void {\n this._channels.push(channel);\n }\n\n pushData(data: Uint8Array, trigger: Trigger, channelId: number): void {\n this._enqueueChunk(data, trigger, channelId);\n this._sendChunks().catch((err) => log.catch(err));\n }\n\n destroy(): void {\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): void {\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(): number {\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): void {\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(): Promise<void> {\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 { Trigger, asyncTimeout } from '@dxos/async';\nimport { invariant } from '@dxos/invariant';\nimport { log } from '@dxos/log';\nimport { schema } from '@dxos/protocols/proto';\nimport { type TestService } from '@dxos/protocols/proto/example/testing/rpc';\nimport { type ProtoRpcPeer, createProtoRpcPeer } 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): Promise<void> {\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): Promise<void> {\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): Promise<void> {\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'): Promise<void> {\n await this.open.wait({ timeout: 2000 });\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): Promise<void> {\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/proto';\nimport { type TestServiceWithStreams } from '@dxos/protocols/proto/example/testing/rpc';\nimport { type ProtoRpcPeer, createProtoRpcPeer } 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): Promise<void> {\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): Promise<void> {\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): Promise<void> {\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): Promise<void> {\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): Promise<void> {\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.Timeout;\n startTimestamp?: number;\n reportingTimer?: NodeJS.Timeout;\n};\n"],
|
|
5
|
-
"mappings": "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",
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA,WAAO,UAAU;AAEjB,QAAI,MAAM;AAAV,QACI,OAAO;AADX,QAEI,SAAS,CAAC;AAFd,QAGI,MAAM,KAAK,IAAI,GAAG,EAAE;AAExB,aAAS,OAAO,KAAK,KAAK,QAAQ;AAChC,UAAI,OAAO,oBAAoB,MAAM,OAAO,kBAAkB;AAC5D,eAAO,QAAQ;AACf,cAAM,IAAI,WAAW,yBAAyB;AAAA,MAChD;AACA,YAAM,OAAO,CAAC;AACd,eAAS,UAAU;AACnB,UAAI,YAAY;AAEhB,aAAM,OAAO,KAAK;AAChB,YAAI,QAAQ,IAAK,MAAM,MAAQ;AAC/B,eAAO;AAAA,MACT;AACA,aAAM,MAAM,QAAQ;AAClB,YAAI,QAAQ,IAAK,MAAM,MAAQ;AAC/B,iBAAS;AAAA,MACX;AACA,UAAI,MAAM,IAAI,MAAM;AAEpB,aAAO,QAAQ,SAAS,YAAY;AAEpC,aAAO;AAAA,IACT;AAAA;AAAA;;;AC7BA;AAAA;AAAA,WAAO,UAAU;AAEjB,QAAI,MAAM;AAAV,QACI,OAAO;AAEX,aAAS,KAAK,KAAK,QAAQ;AACzB,UAAI,MAAS,GACT,SAAS,UAAU,GACnB,QAAS,GACT,UAAU,QACV,GACA,IAAI,IAAI;AAEZ,SAAG;AACD,YAAI,WAAW,KAAK,QAAQ,IAAI;AAC9B,eAAK,QAAQ;AACb,gBAAM,IAAI,WAAW,yBAAyB;AAAA,QAChD;AACA,YAAI,IAAI,SAAS;AACjB,eAAO,QAAQ,MACV,IAAI,SAAS,SACb,IAAI,QAAQ,KAAK,IAAI,GAAG,KAAK;AAClC,iBAAS;AAAA,MACX,SAAS,KAAK;AAEd,WAAK,QAAQ,UAAU;AAEvB,aAAO;AAAA,IACT;AAAA;AAAA;;;AC5BA;AAAA;AACA,QAAI,KAAK,KAAK,IAAI,GAAI,CAAC;AACvB,QAAI,KAAK,KAAK,IAAI,GAAG,EAAE;AACvB,QAAI,KAAK,KAAK,IAAI,GAAG,EAAE;AACvB,QAAI,KAAK,KAAK,IAAI,GAAG,EAAE;AACvB,QAAI,KAAK,KAAK,IAAI,GAAG,EAAE;AACvB,QAAI,KAAK,KAAK,IAAI,GAAG,EAAE;AACvB,QAAI,KAAK,KAAK,IAAI,GAAG,EAAE;AACvB,QAAI,KAAK,KAAK,IAAI,GAAG,EAAE;AACvB,QAAI,KAAK,KAAK,IAAI,GAAG,EAAE;AAEvB,WAAO,UAAU,SAAU,OAAO;AAChC,aACE,QAAQ,KAAK,IACb,QAAQ,KAAK,IACb,QAAQ,KAAK,IACb,QAAQ,KAAK,IACb,QAAQ,KAAK,IACb,QAAQ,KAAK,IACb,QAAQ,KAAK,IACb,QAAQ,KAAK,IACb,QAAQ,KAAK,IACA;AAAA,IAEjB;AAAA;AAAA;;;ACxBA;AAAA;AAAA,WAAO,UAAU;AAAA,MACb,QAAQ;AAAA,MACR,QAAQ;AAAA,MACR,gBAAgB;AAAA,IACpB;AAAA;AAAA;;;ACAA,SAAsBA,gBAAgB;AAEtC,SAASC,wBAAwB;AACjC,SAASC,aAAAA,kBAAiB;AAC1B,SAASC,aAAAA,kBAAiB;AAC1B,SAASC,OAAAA,YAAW;;;ACFpB,SAASC,mBAAe,cAAgB,oBAAA;AACxC,SAASC,WAAAA,gBAAa;AACtB,SAASC,iBAAAA,sBAAgBC;AACzB,SAASC,gBAAS,aAAAD,kBAAqB;AACvC,SAASE,iBAAY;AACrB,SAASC,OAAAA,MAAAA,WAAAA,gBAAgBC;AAEzB,SAASC,kBAAAA,iBAAgB,gBAAAD,qBAAQ;;;ACVjC,SAASE,gBAAgBC,mBAAmBC,cAAcC,4BAA4B;AACtF,SAASC,eAAe;AAExB,SAASC,WAAW;AACpB,SAASC,sBAAsB;AAC/B,SAASC,cAAc;AAEvB,SAA4BC,0BAA0B;AACtD,SAASC,gBAAgB;AAIzB,IAAA,eAAMC;AAaN,IAAA,4BAAaC;;;;EACMC;;aAEb,QAAKC;IACP,SAAA,CAAA,QAAA;AACC,WAAA,kBAAA,MAAA,GAAA;IAEaC;EAERD,GAAAA,EAAAA,YAAAA,YAAqC,GAAA,cAAA,GAAA,GAAA,CAAA;EACrCE,wBAAiD,IAAA,SAAA;EAEzD;;cAEmBC,MAAAA,aAAAA,cAAAA;SACAC,OAAAA;AAChB,SAAA,cAAA;AAEH,SAAMC,eAAkBC;;0BAC0BA,MAAAA;AAAK,UAAA,KAAA,KAAA,IAAA,QAAA,kBAAA;MACvD;IAEA,CAAA;;QAGE,OAAS,kBAAGX;SACVY,oBAAW;gBACTC,mBAAgBC;MAClB,WAAA;QACAC,SAAS,OAAA,WAAA,2CAAA;;MAET,SAAA;QACAC,SAAU,OAAA,WAAA,2CAAA;;gBAENN;iBACE;UACF,mBAAA,OAAA,YAAA;AACAO,iBAAAA,sBAAkBC,KAAAA,QAAAA,IAAAA;;qBAEdrB,OAAI,YAAA;uCACUsB;kBACZX,8BAA8BY;gBAC9BX,IAAAA,QAAAA;gBACF,aAAA,KAAA,YAAA,SAAA;gBACF,cAAA,KAAA,aAAA,SAAA;cACA,GAAA,EAAO,YAAA,YAAA,GAAA,cAAA,GAAA,IAAA,GAAA,KAAA,CAAA;;AAEP,mBAAA;cACF,kBAAA,QAAA;YACF;UACF;QACAY;;MAEA,MAAA,MAAA,iBAAA,WAAA,OAAA;QACAC,aAAcC;MAChB,CAAA;MAEA,SAAWhB,KAAKiB,KAAI;IAEpB7B,CAAAA;UAGI,KAAM8B,KAAAA,KAAQ;yBACV,KAAA,MAAA,YAAA;YACF,QAAMC,oBAAO,KAAMhC;;AACyC,cAC1D,OAAS,MAACiC,aAAgB,KAAA,KAAA,IAAA,QAAA,UAAA;UAE5B,kBAAoB;QACpB,CAAA,GAAA,KAAA,KAAA,gBAAA;AACA,cAAID,MAAKP,KAAAA,IAAAA;iBAOLtB,4BAAU,MAAA;oBACR+B,KAAKC,iBAAWV,QAAgB,KAACW,4BAAO,KAAA,KAAA,mBAAA,4BAAA,KAAA,KAAA,mBAAA,IAAA;gBACxCtB,KAAAA,gCAA8BY,4BAAQ,GAAA,KAAA;cACtCX,KAAAA,MAAAA,KAAc,iBAAkBW,QAAQ;cAC1C,aAAA,KAAA,YAAA,SAAA;cACK,cAAA,KAAA,aAAA,SAAA;YACL,GAAA,EAAA,YAAIW,YAAAA,GAAuB,cAAA,GAAA,IAAA,GAAA,KAAA,CAAA;;uCAEPZ;kBAChBX,iBAAiB;gBACjBC,KAAAA,MAAAA,KAAc,iBAAkBW,QAAQ;gBAC1C,aAAA,KAAA,YAAA,SAAA;gBACF,cAAA,KAAA,aAAA,SAAA;cACF,GAAA,EAAA,YAAA,YAAA,GAAA,cAAA,GAAA,IAAA,GAAA,KAAA,CAAA;YACF;UACA;QACA;eACIY,KAAAA;cACF,MAAA,KAAA,IAAA;YACAnC,eAAI,gBAAA;AAEJ,cAAA,wCAAA,QAAA,EAAA,YAAA,YAAA,GAAA,cAAA,GAAA,IAAA,GAAA,KAAA,CAAA;AACF,eAAA,kBAAA,MAAA,GAAA;AACImC;;2BAC8CA,mBAAAA;cAAKC,0CAA0B;YAAG;YAC9E,OAAMC,MAAAA,MAAUF,QAAAA;UACtB,GAAA,EAAO,YAAA,YAAA,GAAA,cAAA,GAAA,KAAA,GAAA,KAAA,CAAA;AACLnC,eAAIsC,KAAK,UAAA,GAAA;;cAAqDF,KAAAA,8CAA0B;YAAG;YACvF,OAAMC,MAAAA,MAAUF,QAAAA;UACtB,GAAA,EAAA,YAAA,YAAA,GAAA,cAAA,GAAA,KAAA,GAAA,KAAA,CAAA;AACF,eAAA,KAAA,UAAA,GAAA;QAEGT;MAET;IAEA,GAAMa,KAAAA,KAAmB,iBAAiB;;QAExC,QAAU,KAAK;AACjB,UAAA,KAAA,KAAA,QAAA;AAEA,UAAMC,KAAQL,KAAwC,MAAA;;QAEpD,QAAU,KAAK;AACjB,UAAA,KAAA,KAAA,QAAA;AACF,UAAA,KAAA,KAAA,MAAA;;;;;ACnJA,SAASM,cAAc;AAEvB,SAASC,aAAa;AACtB,SAASC,iBAAiB;AAC1B,SAASC,OAAAA,YAAW;AAIpB,IAAAC,gBAAMC;;AAQIC,IAAyCC,SAAzCD,MAAyCC;;EAEzCC,aAAmBD;EACnBE,eAAAA;EAEAC,UAAAA;EACAC,iBAAiB,CAAA;EAEjBC,aAAY;EAEXC,iBAAYZ;EAErB,YAAA;EACiBa,QAAAA,IAAU,MAAId;;YAEvB,IAAA,OAAA;gBACCe;IACP,MAAA,MAAA;AACAC,WAAQC,sBAAiBC;;WAGvB,CAAI,OAACP,UAAc,aAAUQ;AAE7B,gBAASX,CAAAA,KAAO,cAASA,oDAAoB,EAAA,YAAA,YAAA,GAAAJ,eAAA,GAAA,IAAA,GAAA,MAAA,GAAA,CAAA,sBAAA,oDAAA,EAAA,CAAA;WAC3C,kBAAegB,MAAOC;eAAQ,WAAY,KAAA,QAAA,SAAA,GAAA;aAAEJ,UAAAA,OAAAA,OAAAA;UAAM,KAAA;UAC7C;QACL,CAAA;MACF,OAAA;AAEI,aAAKX,UAAU;;UAEjBY,KAAAA,YAAAA;AACF,aAAO,WAAA;AACL,iBAAKI;;aAEH,eAAe,MAAA;AAEfJ,eAAAA,WAAAA;AACF,eAAA,eAAA;AACF,mBAAA;QACF;MACC;IAEaK;;;UAGZ,CAAA,YAAWC;aAET,IAAKd,QAAU,CAAA,YAAUS;AACzB,cAAKP,QAAS,YAAQE,OAAQW;AAC9B,aAAK,cAAc,MAAE;aACnB,YAAKhB,KAAAA,QAAoBiB,KAAAA,KAAAA;AAC3B,YAAA,CAAA,KAAO,WAAA;AACLA,eAAAA,eAAAA,KAAAA,OAAAA;QACF,OAAA;AACF,kBAAA;QACF;MACAC,CAAAA;;eAEOrB,CAAAA,aAAaY;AAClB,gBAAKI,CAAAA,KAAAA,YAAY,4CAAA,EAAA,YAAA,YAAA,GAAAlB,eAAA,GAAA,IAAA,GAAA,MAAA,GAAA,CAAA,oBAAA,4CAAA,EAAA,CAAA;AACjB,WAAA,aAAO;WACL,eAAe;AACjB,aAAA,MAAA;AACF,aAAA,aAAA;MACA;IAEEwB;;EAEJ,IAAA,SAAA;AAEIC,WAAAA,KAAY;;EAEhB,IAAA,YAAA;AAEIC,WAAAA,KAAAA;;EAEJ,IAAA,gBAAA;AAEIC,WAAAA,KAAW;;EAEf,IAAA,WAAA;AAEQhB,WAAAA,KAAAA;;0BAEa;AACnB,UAAKH,gBAAY,KAAA;AACjB,SAAKC,iBAAU,CAAA;AACfmB,SAAAA,YAAcC;AAChB,SAAA,MAAA,KAAA;AAEA,kBAAA,QAAA,CAAA,OAAA,GAAA,CAAA;;;;;eAKSC;QACL,SAAMC;WAEN,SAAKA,KAAO,QAAA,QAAA;YACV,QAAO,YAAA,KAAA,SAAA,MAAA;AACT,UAAA,CAAA,OAAA;AACAD;MACA;AACA,gBAAA,MAAA;AAIEA,WAAAA,WAAc1B,MAASW,OAAM;;QAE/B,SAAKX,KAAO,QAAQA,QAAS4B;AAE7B,WAAK5B,UAAUD,KAAAA,QAAAA,SAAAA,MAAAA;IACjB,OAAA;AACF,WAAA,UAAA;IAEA8B;;YAEM;AAEJ,QAAA,KAAA,QAAA,iBAAA,GAAA;AACI,MAAAlC,KAAI,oEAA6B,QAAA,EAAA,YAAA,YAAA,GAAAC,eAAA,GAAA,KAAA,GAAA,KAAA,CAAA;;AAErC,QAAA,KAAA,QAAA,iBAAA,GAAA;AACI,MAAAD,KAACW,KAAQuB,qEAAO,QAAA,EAAA,YAAA,YAAA,GAAAjC,eAAA,GAAA,KAAA,GAAA,KAAA,CAAA;IACtB;AACF,SAAA,QAAA,QAAA;EAEA;;AAKI,IAAA,cAAA,CAAA,QAAA,WAAA;MACA,OAAOG,SAAAA,SAAAA,mBAAAA;AAGT,WAAM+B;EACN;AAEA,QAAIC,cAAgBL,OAAAA,aAASM,MAAe;QAC1C,gBAAA,oBAAsC;MACtC,OAAOjC,SAAAA,SAAAA,eAAAA;AAGT,WAAMkC;EAEN;QACEA,UAAAA,OAAAA,SAAAA,SAAAA,mBAAAA,SAAAA,aAAAA;SACAD;IACF;IACA;EAEF;;AAEEL,IAAMO,cAAcD,CAAAA,YAAc;AAClCN,QAAMQ,QAAIF,OAASpC,YAAAA,oBAAAA,QAAAA,MAAAA;AACnB,QAAA,cAAO8B,QAAAA,QAAAA,CAAAA;AACP,QAAA,IAAA,SAAA,iBAAA;;;;;AC5KF,SAASS,UAAAA,eAAc;AACvB,SAASC,SAAAA,QAAO,SAAQ,gBAAAC,eAAA,wBAAAC,6BAAgB;AACxC,SAASC,WAAAA,gBAAa;AACtB,SAASC,qBAAiB;AAE1B,SAASC,aAAAA,kBAAY;AACrB,SAASC,OAAAA,MAAAA,eAAoB;AAC7B,SAASC,oBAAc;AAIvB,SAASC,UAAAA,eAAQ;;;ACbjB,oBAAmB;AAEnB,SAASC,SAAAA,cAA2B;AACpC,SAASC,aAAAA,kBAAiB;AAC1B,SAASC,OAAAA,YAAW;AAIpB,IAAAC,gBAAMC;;AAyBIC,IAAAA,WAAAA,MAAqB;EACrBC;EAESC,mBAAcC;EAC/B,YAAA,CAAA;EACiBC,UAAAA,IAAAA,OAAiDC;;EAG1DC,eAAW,oBAAM,IAAA;EAClBC,kBAAe,oBAAIC,IAAAA;EACVC,WAAS;EAEzB,eAA6BC,IAAAA,OAAqB;WAArBA,KAAAA,QAAAA;cACtBT,eAAeS;AAEpB,SAAA,gBAAA;AACA,SAAKR,UAAQS,KAAKC,aAAeC;AAG/BC,SAAAA,QAAY,KAAA,UAAA,KAAA,wBAAA,KAAA,IAAA,CAAA;;EAEhB,IAAA,YAAA;AAEIC,WAAAA,KAAAA,QAAgB;;EAEpB,IAAA,gBAAA;AAEIC,WAAAA,KAAAA,QAAe;;EAEnB,IAAA,eAAA;AAEAC,WAAWC,KAAAA,aAAuB;;EAElC,WAAA,SAAA;AAEAC,SAASC,UAAkBC,KAAkBC,OAAAA;;WAEtCC,MAAAA,SAAcC,WAAOC;AAC5B,SAAA,cAAA,MAAA,SAAA,SAAA;AAEAC,SAAAA,YAAgB,EAAA,MAAA,CAAA,QAAAC,KAAA,MAAA,KAAA,QAAA,EAAA,YAAA,YAAA,GAAA7B,eAAA,GAAA,IAAA,GAAA,KAAA,CAAA,CAAA;;YAEZ6B;AACF,QAAA,KAAA,aAAA,SAAA,GAAA;AACI,MAAAA,KAACvB,KAAAA,0CAAkB,QAAA,EAAA,YAAA,YAAA,GAAAN,eAAA,GAAA,IAAA,GAAA,KAAA,CAAA;IACvB;AACF,SAAA,aAAA,MAAA;AAEQe,SAAAA,QAAAA,QAAwBe;;0BAEpBC,KAAe;UACvB,EAAIC,WAAMC,YAASC,MAAa,IAAA,YAAA,KAAA,CAAAV,eAAA,CAAA,KAAA,gBAAA,IAAAA,UAAA,CAAA;cAC9B,gBAAKO,IAAgBI,SAAIX,GAAAA;gBACvBY,SAAQC,YAAYL;aACpBM,gBAAWJ,IAAAA,WAAAA;UACb,QAAA,OAAA,KAAA,KAAA;UACK,WAAA;QACL,CAAA;MACF,OAAA;AACK,aAAA,aAAA,KAAA,KAAA;MACL;WACAK;YAAsCA,gBAAcH,KAAM,gBAAA,IAAA,SAAA;oBAAEJ,SAAAA,OAAAA,OAAAA;QAAM,cAAA;QAC9DO;;AAEJ,UAAA,cAAA,OAAA,SAAA,cAAA,WAAA;AACA;MACA;AACA,YAAK9B,OAAAA,cAAkBqB;AACzB,WAAA,gBAAA,OAAA,SAAA;AACF,WAAA,aAAA,KAAAA,IAAA;IAEQU;;qBAEO;AACb,QAAA,KAAA,aAAA,IAAA,KAAA,aAAA,GAAA;AAEA,aAAMC,KAAQ;IACd;AAEA,UAAA,QAAYtC,KAAAA;AACd,SAAA,oBAAA,KAAA,mBAAA,KAAA,KAAA,UAAA;AAEQuC,WAAAA,KAAcpB,UAAkBC,KAAkBC;;gBAEhD,MAAImB,SAAO,WAAA;AACnB,QAAA,CAAA,KAAA,UAAA,SAAA,SAAA,GAAA;AAEI,YAAMrC,IAAAA,MAAAA,mBAA6B,SAAA,EAAA;;AAEvC,QAAA,CAAA,KAAA,aAAA,IAAA,SAAA,GAAA;AAEA,WAAMsC,aAAa,IAAKtC,WAAauC,CAAAA,CAAAA;IAErC;AACA,UAAK,aAAaC,KAAMxB,aAAawB,IAAAA,SAAO7C;UAC1C8C,SAAW,CAACzB;AACd,aAAA,MAAA,GAAA,MAAA,KAAA,QAAA,OAAA,gBAAA;AAEAyB,aAAOC,KAAShB,KAAAA,SAAOS,KAAAA,MAAAA,cAAAA,CAAAA;;mBAEnBT,CAAAA,OAAAA,UAAAA;YACAR,MAAAA,YAAAA;QACAU;QACF;QACAU,YAAgB,UAAA,IAAA,KAAA,SAAA;;iBAAOrB,KAASkB;QAAkD;QACpF,SAAA,UAAA,OAAA,SAAA,IAAA,UAAA;MACF,CAAA;IAEA,CAAA;EAEQQ;;kBAEM3C;QACV;WACA,KAAMsC,aAAa,OAAKtC,GAAAA;AACxB,YAAKsC,YAAY,KAAA,iBAAA;YACf,aAAA,KAAA,aAAA,IAAA,SAAA;AACF,UAAA,CAAA,YAAA;AAEAZ;MACA;cACE,WAAA,MAAA;AACF,UAAA,CAAA,OAAA;AACIY;;AAEJ,UAAA,WAAA,WAAA,GAAA;AACA,aAAOZ,aAAAA,OAAAA,SAAAA;MACT;AACA,aAAO;IACT;AAEA,WAAcP;;sBAEV;AACF,QAAA,KAAA,UAAA;AACI;IACJ;AACAO,SAAAA,WAAaiB;AACb,QAAA;YACE,KAAA,cAAA;WACA,OAAK;UAEH,CAAA,KAAM,QAAK7C,UAAa;AACxByB,QAAAA,KAAI,mBAAA,QAAA,EAAA,YAAA,YAAA,GAAA7B,eAAA,GAAA,KAAA,GAAA,KAAA,CAAA;AACN,cAAA,KAAA,QAAA,MAAA,aAAA,CAAA;AACI,QAAA6B,KAAA,oBAAA,QAAA,EAAA,YAAA,YAAA,GAAA7B,eAAA,GAAA,KAAA,GAAA,KAAA,CAAA;;UAEFgC;AACA,cAAOL,KAAU,QAAA,KAAA,KAAA,MAAA,GAAA;AACjBE,cAAI,SAAA,KAAA;eAAyBF,KAAAA;AAAI,QAAAE,KAAA,uBAAA;UACjCG;QACF,GAAA,EAAA,YAAA,YAAA,GAAAhC,eAAA,GAAA,KAAA,GAAA,KAAA,CAAA;AACAgC,cAAQ,SAAKiB,MAAAA,GAAa;MAC5B;AACAC,cAAU,KAAK5C,cAAa6C;IAC5B;AACF,IAAAD,WAAA,KAAA,aAAA,SAAA,GAAA,yBAAA,EAAA,YAAA,YAAA,GAAAlD,eAAA,GAAA,KAAA,GAAA,MAAA,GAAA,CAAA,gCAAA,yBAAA,EAAA,CAAA;AACF,SAAA,WAAA;EAEA;;AAEE,IAAMoD,cAAAA,CAAAA,EAAmBlB,WAAAA,YAAoBmB,MAAAA,MAAc;AAC3D,QAAMC,mBAAiBC,cAAAA,QAAAA,eAAYC,SAAmBJ;AACtDK,QAAAA,mBAAyBH,aAAAA,cAAAA,QAAAA,eAAAA,UAAAA,IAAAA;AACzB,QAAIpB,UAAY,OAAA,YAAA,mBAAA,mBAAA,MAAA,MAAA;wBACduB,OAAOC,WAAOxB,OAAYoB;AAC5B,MAAA,YAAA;AACAA,kBAAAA,QAAW,OAACtB,YAAOwB,SAAmBJ,gBAAAA;EACtC;AACA,UAAA,IAAA,OAAA,mBAAA,gBAAA;AAEF,SAAO;;AAEL,IAAIlB,cAAAA,CAAAA,MAAAA,eAAAA;AACJ,QAAIyB,YAASF,cAAAA,QAAOG,OAAY,IAAA;AAEhC,MAAIC;MACF3B,SAAAA,cAAAA,QAAauB,OAAOG;MACpBD,WAAUF,SAAOG,GAAM;AACzB,iBAAA,cAAAH,QAAA,OAAA,MAAA,MAAA;AAEA,cAAcnC,cAAAA,QAAKwC,OAASH;EAE5B;QAASnC,QAAAA,KAAAA,SAAAA,MAAAA;SAAWU;IAAYF;IAAM;IACtC;;;;;;;;;;;;;;;;;;AD7NF;AAsBA,IAAM+B,UAAAA,QAAAA,gBAA+B,yBAAA;AACrC,IAAMC,+BAA+B;AA0BrC,IAAMC,+BAAiB;AACvB,IAAMC,iBAAAA;AACN,IAAMC,sBAAoB;AAC1B,IAAMC,oBAAAA;AAyCN,IAAA,yBAAA;AAWmBC,IAAY,QAAZA,MAAgBC;EAChBC,YAAAA,IAAAA,SAAyBC,iBAAuB;EAChDC,qBAAqBD,oBAAAA,IAAuB;EAC5CE,iBAAWC,oBAAU,IAAA;EAC9BC,OAAAA,IAAuBD,SAAA,QAAA,EAAA,YAAA,YAAA,GAAAE,eAAA,GAAA,GAAA,CAAA;EAEvBC;EAEAC,UAAAA;EACAC,WAAAA;EACAC,cAAY;EAEZC,YAAAA;EACSC,aAAAA;EAEVC,oBAAkBC,oBAAAA,IAA2B;EAC7CC,cAAAA,IAAeD,OAAIA;EAEVE,eAAclB,IAAAA,OAAUkB;EAExC,SAAA,KAAc,UAAA;gBACZ;SAEE,UAAWC,aAAAA,GAAeC,OAAQC,QAAM;AAC1C,YAAA,KAAA,eAAA,QAAA,OAAA,GAAA,CAAA;IACF,CAAA;EAEAC;eACOf,WAAagB;AACpB,SAAA,aAAA;EAEA;MAEE,kBAAYhB;AACd,WAAA,KAAA,aAAA,KAAA,WAAA,SAAA,IAAA;EAEA;;;;;;;QAOE,aAAgB,KAAKiB,OAAAA,CAAAA,GAAAA;UACnBC,UAAAA,KAAAA,mBAAAA;MACAC;MACF,aAAA,KAAA;IACAC,CAAAA;AAEA,IAAAA,WAAMT,CAAAA,QAAaU,MAAAA,yBAAO,GAAA,IAAA,EAAA,YAAA,YAAA,GAAApB,eAAA,GAAA,IAAA,GAAA,MAAA,GAAA,CAAA,iBAAA,gCAAA,EAAA,CAAA;UACxBqB,SAAQC,IAAMC,QAAAA;aACZ,CAAI,MAACC,UAAUC,aACZC;AAEH,aAAA,UAAA,SAAA,IAAA,EAAA,KAAA,MAAA,SAAA,CAAA,EAAA,MAAA,QAAiE;MAEnEC;MACF,MAAA,MAAA;MAAA;IAEAF,CAAAA;YACEA,OAAQG,CAAAA,SAAMC;AACdnB,cAAOoB,MAAKR,iBAAAA,KAAAA;AACd,aAAA,KAAA,IAAA;IACAG;YACE,UAAA,CAAA,QAAA;UAEE,KAAIf;YACFA,OAAOqB,UAAQC,OAAAA,EAAAA,SAAAA,GAAAA;AACjB,iBAAO,QAAA,GAAA;eACLtB;AACF,iBAAA,QAAA;QACF;aACEA;AACF,eAAA,QAAA;MACF;IAEA;QAEE;YAEIuB,KAAAA,aAAa;qBACPR;UACJR,IAAAA,QAAKQ;UACLP,KAAAA,QAAaO;UACf,aAAA,QAAA;QAEFnC;MAEF,GAAA,iBAAiB;aACZ4C,KAAAA;AACL,WAAA,gBAAMF,SAAAA,GAAAA;AACR,YAAA;IAEA;AACF,WAAA;EAEA;;;;;;;QAOE,WAAMP,KAAc,OAACT,CAAAA,GAAAA;UACnBC,UAAAA,KAAAA,mBAAAA;MACAC;MACF,aAAA,KAAA;IACAC,CAAAA;AAEA,IAAAA,WAAA,CAAA,QAAA,MAAA,yBAAA,GAAA,IAAA,EAAA,YAAmE,YAAA,GAAAnB,eAAA,GAAA,KAAA,GAAA,MAAA,GAAA,CAAA,iBAAA,gCAAA,EAAA,CAAA;AAEnE,QAAImC,gBAAAA,CAAAA;AAEJV,QAAAA;YACEA,OAAQG,CAAAA,SAAMC;AACd,cAAIM,MAAU,iBAAA,KAAA;UACZA,UAASb;AACX,iBAAO,IAAA;aACLc;AACF,sBAAA,KAAA,IAAA;MACF;IAEA;UACEC,OAAM;YACJ,OAAM,MAAKb,YAAUC;AACrB,cAAA,KAAA,UAAA,SAA+B,MAAA,OAAA;MAGjCa;iBACEnB,CAAAA,OAAWgB;AACXA,QAAAA,WAAAA,CAAWI,UAAAA,kCAAAA,EAAAA,YAAAA,YAAAA,GAAAA,eAAAA,GAAAA,KAAAA,GAAAA,MAAAA,GAAAA,CAAAA,aAAAA,kCAAAA,EAAAA,CAAAA;AACX,mBAAWjB;mBACNA,QAAAA,eAAAA;AACL,aAAA,IAAA;QACAc;AACF,wBAAA,CAAA;MACF;IAEA;QAEE;YAEIH,KAAAA,aAAa;qBACPR;UACJR,IAAAA,QAAKQ;UACLP,KAAAA,QAAaO;UACf,aAAA,QAAA;QAEFnC;MAEF,GAAA,iBAAiB;aACZ4C,KAAAA;AACL,WAAA,gBAAMF,SAAAA,GAAAA;AACR,YAAA;IAEA;AACF,WAAA;EAEA;;QAGE,MAAQ,KAAC7B;QACPqC,KAAI,aAAA;AACJ,MAAAA,KAAA,uDAAA,QAAA,EAAA,YAAA,YAAA,GAAAxC,eAAA,GAAA,KAAA,GAAA,KAAA,CAAA;AACF;IACA;QACEwC,KAAI,UAAA;AACJ,MAAAA,KAAA,oDAAA,QAAA,EAAA,YAAA,YAAA,GAAAxC,eAAA,GAAA,KAAA,GAAA,KAAA,CAAA;AACF;IAEA;AAEA,SAAA,WAAWyC;UAEPC,KAAO,aAAA;aACLC;QACF,OAAA,KAAA;MAEFrD;0BAGI,4BAA+B,EAAA,MAAA,OAAA0C,SAAA;WAAEA,+BAAAA;QAAI,KAAAA;MAEzC,GAAA,EAAA,YAAWY,YAASZ,GAAAA,eAAAA,GAAAA,KAAAA,GAAAA,KAAAA,CAAAA;AACtB,YAAA,KAAA,SAAAA,IAAA;IAEA,CAAA;UAIqBa,cAAS,KAAA,SAAA,GAAA,GAAA,wBAAA,IAAA,aAAA;MAA2B,SAAA;IAE3D,CAAA,CAAA;EAEA;;QAGE,QAAS1C,KAAAA;QACPqC,KAAI,aAAA;AACJ,MAAAA,KAAA,gDAAA,QAAA,EAAA,YAAA,YAAA,GAAAxC,eAAA,GAAA,KAAA,GAAA,KAAA,CAAA;AACF;IACA;AACA,SAAK,cAAU8C;AACf,SAAI,KAAK5C,KAAAA,QAAU;QACjBsC,KAAI,UAAA;AACJ,MAAAA,KAAI,qCAAY,QAAA,EAAA,YAAA,YAAA,GAAAxC,eAAA,GAAA,KAAA,GAAA,KAAA,CAAA;AAClB,WAAO,WAAA;WACL;YAII0C,KAAO,aAAA;eACLC;UACF,OAAA,KAAA;QAEFrD;0BAEI,EAAA,MAAA,OAAA0C,SAAA;aAA0CA,wCAAAA;UAAI,KAAAA;QACpD,GAAA,EAAA,YAAA,YAAA,GAAAhC,eAAA,GAAA,KAAA,GAAA,KAAA,CAAA;MACF,CAAA;IAEA;SACEwC,SAAI,GAAA,EAAA,MAAA,CAAAR,SAAA;WAAmCA,iCAAAA;QAAI,KAAAA;MAC7C,GAAA,EAAA,YAAA,YAAA,GAAAhC,eAAA,GAAA,KAAA,GAAA,KAAA,CAAA;IACF,CAAA;EAEA;;QAGE,SAASI,KAAAA;QACPoC,KAAI,WAAA;AACJ,MAAAA,KAAA,+CAAA,QAAA,EAAA,YAAA,YAAA,GAAAxC,eAAA,GAAA,KAAA,GAAA,KAAA,CAAA;AACF;IAEA;AAEA,SAAA,KAAU,KAACR,QAAUuC;AAErB,UAAK,KAAMN,UAAAA,QAAgB7B;eACzB6B,WAAkBO,KAAAA,eAAAA,OAAAA,GAAAA;AACpB,cAAA,UAAA,GAAA;IACA;AACA,SAAA,YAAWe;AAEX,UAAKxC,KAAAA,WAAiByB;AAEtB,SAAA,YAAA,KAAA,GAAuB;AAEvB,SAAKpC,mBAAeoD,MAAK;AAC3B,SAAA,eAAA,MAAA;EAEA;QACE,eAAS5C,KAAW;QAClBoC,KAAIS,WAAK;WAAqCC,KAAAA,mCAAAA;QAAI;MAClD,GAAA,EAAA,YAAA,YAAA,GAAAlD,eAAA,GAAA,KAAA,GAAA,KAAA,CAAA;AACF;IAEA;QACE,IAAI,OAAME;UACRsC,CAAAA,KAAI,UAAA;AACJ,QAAAA,KAAA,yDAA2B,QAAA,EAAA,YAAA,YAAA,GAAAxC,eAAA,GAAA,KAAA,GAAA,KAAA,CAAA;AAC7B,cAAO,KAAA,MAAA,IAAA,MAAA,qBAAA,CAAA;aACLwC;AACF,QAAAA,KAAA,6CAAA,QAAA,EAAA,YAAA,YAAA,GAAAxC,eAAA,GAAA,KAAA,GAAA,KAAA,CAAA;MAEA;AACF;IAEA;QACE,IAAA,aAAgB;YACdiB,UAASgB,KAAAA,mBAAe;QACxBf,KAAAA,IAAAA,YAAiBe;QACnB,aAAA,IAAA,YAAA;MACAR,CAAAA;AAEA,cAAA,WAAA,IAAA,YAA2B;iBAEnB,QAAKgB,QAAY,QACrB;cACEnB,KAAM,aAAA;gBACJ6B;YACA7B,WAAAA,QAAAA;YACF;UAEFG;QAEJ,GAAA,QAAA,EAAA;MACAA;AACF,cAAWyB,SAAU,CAAA;eACbxC,IAAAA,MAAS;AACf,YAAKA,SAAOoB,KAAM,mBAAA,IAAA,IAAA,KAAA,SAAA,KAAA,cAAA;UAChBU,CAAAA,OAAQ,MAAC;aAAoDvB,KAAKP,kDAAU;UAAC,KAAA,OAAA;QAC7E,GAAA,EAAA,YAAA,YAAA,GAAAV,eAAA,GAAA,KAAA,GAAA,KAAA,CAAA;AACF;MACAU;AACF,aAAA,KAAA,IAAA,KAAA,IAAA;IACF;EAEA;QACE,aAASN,KAAW,YAAA,IAAA,UAAA,8BAAA;QAClB,KAAA,WAAA;AAEF;IACA;QACE;AACA,YAAKZ,UAAU4D,IAAAA,QAASxC;AACxB,WAAA,UAAcyC,SAAK,QAAA,OAAA,GAAA,GAAA,SAAA,SAAA;YAAEC,QAAAA,KAAAA;QAAQ;MAC7B,CAAA;aACA,KAAU;AACZ,YAAA,KAAA,QAAA,GAAA;IACF;EAEQtC;qBACGpB,QAAc;QACrB2D,KAAAA,eAAAA,SAA0B1D,GAAM;AAClC,MAAA0D,sBAAA,KAAA,MAAA,YAAA,KAAA,WAAA,GAAA,cAAA;IACA;AACA,QAAI,UAAU,KAAA,eAAA,IAAA,OAAA,GAAA;QACZ9B,CAAAA,SAAU;gBACJ;QACJ+B,IAAAA,KAAAA;QACAvC,UAAKwC;QACLvC,KAAAA,OAAAA;QACAwC,aAAU,OAAA;QACV5B,QAAM,CAAA;QACNC,MAAAA;QACAH,SAAO;eACL+B;UACA9B,WAAAA;UACF,eAAA;QACF;MACA;AACA,WAAKnC,eAAAA,IAAmBkE,QAAInC,KAAQoC,OAAIpC;AACxC,WAAKjC,mBAAUsE,IAAWrC,QAAU,IAAA,OAAA;AACtC,WAAA,UAAA,WAAA,QAAA,EAAA;IAEA;AACF,WAAA;EAEA;QACE,UAASsC,SAAS1E,MAAAA,SAAAA;QAChBmD,KAAIS,SAAK,qBAAA;WAA2Ce,KAAAA,yCAAiB;QAAEC,MAAAA,KAAW5E;QAAoB,WAAA;MACxG,GAAA,EAAA,YAAA,YAAA,GAAAW,eAAA,GAAA,KAAA,GAAA,KAAA,CAAA;IAEAyB;AACA,YAAIA,MAAQ+B,aAAa,KAAM;QAC7B,QAAA,aAAA,MAAA;AAEA,cAAA,OAAA,KAAA,IAAA;AACF;IACA;UAEIlC,KAAM,aAAA;YACJ6B;QACA7B,WAAAA,QAAAA;QACF;MAEFG;IAGJ,GAAA,QAAA,IAAA,OAAA;EAEQS;kBACG,SAAA,KAAA;QACPM,KAAIS;WAAwCjB,KAAAA,iCAAAA;QAAI;MAClD,GAAA,EAAA,YAAA,YAAA,GAAAhC,eAAA,GAAA,KAAA,GAAA,KAAA,CAAA;IACA;QACEyB,QAAQM,SAAQC;AAClB,cAAA,QAAA,GAAA;IAEA;AACA,SAAKpC,mBAAesE,OAAOzC,QAAW,EAAA;AACxC,SAAA,eAAA,OAAA,QAAA,GAAA;EAEA;QACE,aAASrB;QACP,KAAK,aAAKC,KAAY,aAAA;UACpB,CAAA,KAAA,YAAA;AACF;MAEA;AAEA,YAAKA,YAAa8D,KAAAA;AAElBC,WAAAA,aAAUC;AACVD,gBAAUE,iBAAe;AACzB,gBAAK,kBAAqBC;iBACtBD,KAAAA,UAAkB,UAAA;AACtB,UAAA,kBAAA;MACA;AAEA,WAAKhE,aAAAA,KAAkB0C,SAAK;AAC5B,WAAA,kBAAA,MAAA;AACF;IAEA;AACA,UAAMnB,YAAAA,KAAgB,UAAKrC;AAE3B,UAAMgF,gBAAc,KAAA,UAAA;AACpB,UAAMC,MAAAA,KAAW,IAAI;AACrB,UAAMC,WAAAA,KAAAA,cAAuBC,MAA2BC,KACtDA,WACI,aAAA,MAAA;gCACiBH,CAAAA,SAAYE,SAAQhB,OAAS;MAC5CkB,eAAAA,YAAmBJ,QAAYE,YAAQ9C,KAAa,aAAQA,WAAY;MAE1E,mBAAC,YAAA,QAAA,gBAAA,KAAA,iBAAA,WAAA;IAEH,IAACxB,CAAAA;SACHyE,aAAWN;MACXD,WAAUQ;gBACFnD,MAAAA,KAAoC,KAAA,eAAA,OAAA,CAAA,EAAA,IAAA,CAAA,YAAA;cACxCiC,QAAIpC;UACJR,IAAAA,QAAKQ;UACLP,KAAAA,QAAaO;UACb6C,aAAAA,QAAiB7C;UACjBkC,iBAAWlC,QAAckC,OAAAA;UACzB9B,WAAAA,QAAeJ,MAAQG;UACvB,eAAG8C,QAAoBjD,MAAAA;UACzB,GAAA,oBAAA,QAAA,OAAA,KAAA,kBAAA,IAAA,QAAA,EAAA,CAAA;QAEA;AACA,aAAA,kBAAOG,IAAAA,QAAAA,IAAAA,KAAAA;AACT,eAAA;MACA+B,CAAAA;MACA9B;MACA;6BAAyB8B;QAAW9B;QAAiB;MACrDwC,GAAAA,KAAAA,UAAgB;MAChBC,gBAAAA,KAAqB,UAAU,OAAO;MACxC,iBAAA,KAAA,UAAA,OAAA;IAEA;AACF,SAAA,aAAA,KAAA,KAAA,UAAA;EACF;;;;;;;AHzhBA,IAAEU,gBAAA;;;;;;;;;;;;;AAMF;AAoBA,IAAMC,6BAA4B;AAElC,IAAA,4BAAA;AAIkBC,IAAmB,WAAnBA,MAAmB;EACnBC;EACAC;EACTC;EAEUC;SACfC,IAAAA,SAAUC;aACJC,CAAAA,QAAK;WAA+BD,KAAAA,6BAAAA;QAAI;MAC5C,GAAA,EAAA,YAAUE,YAAaC,GAAAA,eAAM,GAAA,IAAA,GAAA,KAAA,CAAA;WAC3BC,KAAIC,QAAM,GAAA,EAAA,MAAA,MAAA;AACZ,QAAAD,KAAA,MAAA,wBAAA,KAAA,EAAA,YAAA,YAAA,GAAAZ,eAAA,GAAA,IAAA,GAAA,KAAA,CAAA;MACF,CAAA;IACC;EAEcc,GAAAA,EAAAA,YAAaC,YAAQ,GAAAf,eAAA,GAAA,GAAA,CAAA;EAErBgB,SAAS,IAAA,MAAA;EAETC;EACAC,cAAAA,oBAAAA,IAAoB;EAE7BC,oBAAc,oBAAA,IAAA;EACdC,QAAAA;EACAC,cAAY;EAEpB,YAAWC;MACT,SAAO;AACT,WAAA,KAAA;EAEA;cACEC,EAAAA,WAAe,aAAOrB,cAAyB,GAAA,KAAA,GAAA;AAC/CqB,mBAAeC,OAAAA,cAAqB,WAACrB,WAAc;AACnDoB,mBAAeC,UAAUC,YAAYrB,WAAAA,GAAAA,aAAe;AACpD,mBAAc,UAAGF,YAAAA,YAAAA,GAAAA,cAAAA;AACjB,SAAKC,YAAW;AAChB,SAAKC,cAAY;AAEjB,SAAKY,eAAeU;SAEhBC,WAAAA,IAAAA,iBAAwBC;MACxBC,mBAAkBC,KAAKC,4BAA2B9B;MAClD+B,kBAAW,KAAA,2BAAA;iBACL,MAAKZ;YACP,KAAA,eAAA,KAAA,WAAA;AACF;QACAR;AACA,QAAAA,KAAI,KAACqB,uDAAuB,QAAA,EAAA,YAAA,YAAA,GAAAjC,eAAA,GAAA,IAAA,GAAA,KAAA,CAAA;aAAEkC,MAAAA,IAASC,cAAA;UAAwBxB,SAAOH;QACxE,CAAA,CAAA,EAAA,MAAA,CAAA,QAAAI,KAAA,MAAA,KAAA,QAAA,EAAA,YAAA,YAAA,GAAAZ,eAAA,GAAA,IAAA,GAAA,KAAA,CAAA,CAAA;MAEF;IAIF,GAAA,KAAKgB,aAASoB,KAAAA,YAAsBC;SAClCzB,SAAI,sBAAoB,IAAA,OAAA,SAAA;WAAE0B,oBAAAA;QAAK;MAC/BC,GAAAA,EAAAA,YAAW,YAAKrB,GAAAA,eAAsBoB,GAAAA,IAAO,GAAA,KAAA,CAAA;AAC7C,MAAAC,WAAKrB,CAAAA,KAAAA,kBAAsBoB,IAAAA,IAAAA,GAAAA,mCAAAA,EAAAA,YAAAA,YAAAA,GAAAA,eAAAA,GAAAA,IAAAA,GAAAA,MAAAA,GAAAA,CAAAA,qCAAAA,mCAAAA,EAAAA,CAAAA;AAE3B,WAAI,kBAAiBE,IAAIF,IAAAA;UACvB,KAAI,YAAA,IAAA,IAAA,GAAA;YACF;AACA,gBAAO9B,KAAU,eAAA,IAAA;iBACjB,KAAU;AACZ,gBAAA,KAAA,QAAA,GAAA;QACF;MACF;IAEA,CAAA;;WAGI,OAAQ,OAACY,GAAAA,SAAe,YAAKC;YAC3BT,KAAI,eAAA,KAAA,WAAA;AACJ,UAAAA,KAAA,2FAAA,QAAA,EAAA,YAAA,YAAA,GAAAZ,eAAA,GAAA,IAAA,GAAA,KAAA,CAAA;AACF;QACA;AACF,cAAA,KAAA,QAAA;MAEA,CAAA;WACE,OAAM,OAAKU,GAAO,SAACF,OAAAA,QAAAA;AACrB,cAAA,KAAA,QAAA,GAAA;MACF,CAAA;IAEA;SAEEI,OAAI6B,aAAM,GAAA,CAAA,UAAA;WACRtC,MAAAA,4BAAAA;QACAC;QACAsC;QACAC,WAAAA,MAAeC;QACfC,eAAeD,MAAMC;QACrBC,eAAAA,MAAmBF;QACnBG,mBAAgBA,MAAQ;QAC1B,UAAA,MAAA;MAEA,GAAA,EAAA,YAAgB,YAAA,GAAA/C,eAAA,GAAA,KAAA,GAAA,KAAA,CAAA;IAEpB,CAAA;EAEA;MAEE,kBAAYK;AACd,WAAA,KAAA,aAAA,KAAA,WAAA,SAAA,IAAA;EAEA;MACE,SAAO;AACT,WAAA,KAAA,OAAA;EAEA;MACE,QAAO;AACT,WAAA,KAAA,OAAA;EAEA;;;;QAKE,KAAA,YAAA,UAAwB,OAAA,GAAA;AAExBO,SAAI,aAAA;AACJ,IAAAA,KAAI,QAACoC,QAAa,EAAC,YAAA,YAAA,GAAAhD,eAAmCgB,GAAAA,KAAQ,GAAA,KAAA,CAAA;AAC9D,SAAA,cAAWiC,8BAAe,KAAA,QAAA;AAC1B,UAAK9B,KAAK,eAAG,4BAAA;AACb,SAAKL,QAAOoC;AACd,SAAA,OAAA,aAAA,SAAA;EAEA;QACE,MAAA,KAAA;AAEF,UAAA,KAAA,QAAA,GAAA;EAEA;QAEE,MAAQ,KAAC7B;QACP,KAAA,aAAA,KAAA,aAAA;AACF;IACA;AACA,SAAKF,YAAQ;AAEb,SAAI,QAAS;QACX,KAAA,KAAA,UAAA;AACF;IAEA;AAEA,UAAK,KAAMgC,KAAAA,QAAa;eAClB,aAAA,KAAA,YAAA,OAAA,GAAA;UACF;AACA,cAAO3C,UAAU,QAAA,GAAA;eACbG,MAAMH;AACZ,QAAAI,KAAA,MAAAJ,MAAA,QAAA,EAAA,YAAA,YAAA,GAAAR,eAAA,GAAA,KAAA,GAAA,KAAA,CAAA;MACF;IAEA;AACF,UAAA,KAAA,OAAA,QAAA,GAAA;EAEA;QAGE,QAASoB,KAAAA;QACP,KAAA,eAAA,KAAA,WAAA;AACF;IACAR;SAAgCwC,0BAAsBnC;MAAiB,iBAAA,KAAA,YAAA;IACvE,GAAA,EAAA,YAAKG,YAAc,GAAApB,eAAA,GAAA,KAAA,GAAA,KAAA,CAAA;AACnB,SAAKmB,cAAQ;AAEb,SAAI,QAAS;QACX,KAAA,KAAA,UAAA;AACF;IAEA;AAEA,UAAK,KAAMgC,KAAAA,QAAa;eAClB,aAAA,KAAA,YAAA,OAAA,GAAA;UACFvC;aAA8B0B,wBAAgB;UAAiB,MAAA,UAAA,YAAA;QAC/D,GAAA,EAAA,YAAMa,YAAkB3C,GAAAA,eAAAA,GAAAA,KAAAA,GAAAA,KAAAA,CAAAA;AACxBI,cAAI,UAAA,QAAA,GAAuB;aAAE0B,uBAAgB;UAAiB,MAAA,UAAA,YAAA;QAC9D,GAAA,EAAA,YAAiB,YAAA,GAAAtC,eAAA,GAAA,KAAA,GAAA,KAAA,CAAA;eACbW,MAAMH;AACZ,QAAAI,KAAA,MAAAJ,MAAA,QAAA,EAAA,YAAA,YAAA,GAAAR,eAAA,GAAA,KAAA,GAAA,KAAA,CAAA;MACF;IAEA;AACAY,UAAI,KAAA,OAAA,MAAA;AACN,IAAAA,KAAA,sBAAA,QAAA,EAAA,YAAA,YAAA,GAAAZ,eAAA,GAAA,KAAA,GAAA,KAAA,CAAA;EAEAqD;eACW,MAAM,WAAE;QACf,CAAA,KAAM,OAAIC;AACZ,YAAA,IAAA,MAAA,UAAA;IAEA1C;SAAsB0B,gBAAAA;MAAK;IAC3B,GAAA,EAAA,YAAKU,YAAoBG,GAAAA,eAAAA,GAAAA,KAAAA,GAAAA,KAAAA,CAAAA;AAEzB,SAAA,cAAA,MAAA,SAAA;iBAEM,KAAA,MAAA,YAAA;UACF;AACA,cAAO3C,KAAK,SAAA,kBAAA,IAAA;eACRA,KAAAA;YACF,eAAA+C,iBAAA;AACF;QACA;AACF,cAAA;MACF;IAEA,CAAA;QACE,KAAA,kBAAA,IAAA,IAAA,GAAA;mBAEQ,KAAKN,MAAAA,YAAeX;AAC5B,cAAA,KAAA,eAAA,IAAA;MACF,CAAA;IACF;EAEQU;gBACI,eAAeQ,WAAS;AAClCjB,IAAAA,WAAU,CAAC,cAAKtB,SAAgBwC,GAAAA,GAAAA,0BAAgB,EAAA,YAAA,YAAA,GAAAzD,eAAA,GAAA,KAAA,GAAA,MAAA,GAAA,CAAA,gCAAA,0BAAA,EAAA,CAAA;AAChD,IAAAuC,WAAKtB,CAAAA,KAAW,YAAKwC,IAAAA,aAAeN,GAAAA,4BAAAA,EAAAA,YAAAA,YAAAA,GAAAA,eAAAA,GAAAA,KAAAA,GAAAA,MAAAA,GAAAA,CAAAA,wCAAAA,4BAAAA,EAAAA,CAAAA;AACtC,SAAA,YAAA,IAAA,eAAA,SAAA;EAEA;QACEvC,eAAI,eAAkB;SAAE6C,kBAAAA;MAAc;IACtC,GAAA,EAAA,YAAMN,YAAiBlC,GAAAA,eAAgBwC,GAAAA,KAAAA,GAAAA,KAAAA,CAAAA;AAEvC,UAAMC,YAA4B,KAAA,YAAA,IAAA,aAAA,KAAAC,eAAA;UAChCzD,UAAW;MACXC,WAAAA,KAAa;MACbC,aAAAA,KAAkB;MAClBwD,cAAY,KAAOC;kBACjBtB,OAAWsB,aAAYL,SAAS;AAChC,QAAAjB,WAAO,CAAI,YAAQqB,SAAW,GAAGH,GAAAA,wBAAiBI,EAAAA,YAAeC,YAAAA,GAAAA,eAAAA,GAAAA,KAAAA,GAAAA,MAAAA,GAAAA,CAAAA,8BAAAA,wBAAAA,EAAAA,CAAAA;AACnE,eAAA,KAAA,OAAA,WAAA,GAAA,aAAA,IAAA,WAAA,IAAA,IAAA;MACAC;oBACY,OAACF,aAAYL,SAAS;AAChC,QAAAjB,WAAO,CAAI,YAAQwB,SAAa,GAAGN,GAAAA,wBAAiBI,EAAAA,YAAeC,YAAAA,GAAAA,eAAAA,GAAAA,KAAAA,GAAAA,MAAAA,GAAAA,CAAAA,8BAAAA,wBAAAA,EAAAA,CAAAA;AACrE,eAAA,KAAA,OAAA,aAAA,GAAA,aAAA,IAAA,WAAA,IAAA,IAAA;MACAE;aACE,CAAA,QAAKC;aACH,kBAAiBzD,KAAAA,MAAAA,YAAAA;AACnB,gBAAA,KAAA,MAAA,GAAA;QACF,CAAA;MACF;IAEA;AACAI,UAAI,UAAA,OAAA,OAAoB;SAAE6C,oBAAAA;MAAc;IAC1C,GAAA,EAAA,YAAA,YAAA,GAAAzD,eAAA,GAAA,KAAA,GAAA,KAAA,CAAA;EACF;;;;;;;;;;;;;ADpQA,IAAAkE,gBAAaC;AAGXC,IAAAA,cAAAA,MAA2D;WACzD,oBAAMC,IAAOC;aACRC,MAAOC;AACZ,UAAA,OAAOH,KAAAA,QAAAA;AACT,SAAA,OAAA,IAAA,IAAA;AAECI,WAAAA;;eAEG,MAAWL;AACb,WAAA,MAAA;AACF,YAAA,KAAA,WAAA,IAAA;IAEA;;EAEA,MAAA,UAAA;AAEA,UAAMM,QAAQC,IAAiBC,MAA4C,KAAA,KAAA,MAAA,EAAA,IAAA,CAAA,UAAA,MAAA,QAAA,CAAA,CAAA;;QAEzEC,QAAU,OAAKN,OAAOO;AACtBD,IAAAA,WAAU,UAAKN,OAAWI,QAAAA,EAAAA,YAAAA,YAAAA,GAAAA,eAAAA,GAAAA,IAAAA,GAAAA,MAAAA,GAAAA,CAAAA,mBAAAA,EAAAA,EAAAA,CAAAA;AAE1B,IAAAE,WAAME,KAAAA,OAAcJ,IAAMK,KAAAA,GAAAA,QAAAA,EAAAA,YAAiB,YAAA,GAAAd,eAAA,GAAA,IAAA,GAAA,MAAA,GAAA,CAAA,0BAAA,EAAA,EAAA,CAAA;eAAEe,KAAW,OAAA,IAAA,KAAA,GAAA,QAAA,EAAA,YAAA,YAAA,GAAAf,eAAA,GAAA,IAAA,GAAA,MAAA,GAAA,CAAA,0BAAA,EAAA,EAAA,CAAA;UAAMgB,cAAcN,MAAMO,iBAAM;MAAC,WAAA;MACzF,cAAMC,MAAcR;;UAA2CM,cAAcP,MAAMQ,iBAAM;MAAC,WAAA;MAE1FE,cAAYN,MAAYO;IACxB,CAAA;gBAAyBC,YAAc,SAACR,QAAAA,YAAAA,SAAAA,MAAAA;UAAcH,QAAMW,IAAAA;MAA4B,MAAA,eAAA,WAAA;MAExF,MAAO,eAAA,WAAA;;WAAcH;MAAY;MACnC;IAEA;;QAEEP,WAAU,OAAKN,OAAWI;AAC1BE,IAAAA,WAAU,UAAKN,OAAWI,QAAAA,EAAAA,YAAAA,YAAAA,GAAAA,eAAAA,GAAAA,IAAAA,GAAAA,MAAAA,GAAAA,CAAAA,mBAAAA,EAAAA,EAAAA,CAAAA;AAE1B,IAAAE,WAAME,KAAAA,OAAcS,IAAMC,KAAKd,GAAAA,QAAMe,EAAAA,YAAaC,YAAMC,GAAAA,eACtDA,GAAWV,IAAAA,GAAAA,MAAAA,GAAY,CAACW,0BAAmB,EAAA,EAAA,CAAA;AAE7C,IAAAhB,WAAMO,KAAAA,OAAcI,IAAMC,KAAKb,GAAAA,QAAMc,EAAAA,YAAaC,YAAMC,GAAAA,eACtDA,GAAWV,IAAAA,GAAAA,MAAAA,GAAY,CAACW,0BAAmB,EAAA,EAAA,CAAA;AAG7ChB,UAAAA,cAAUE,MAAAA,KAAAA,MAAAA,WAAAA,EAAAA,KAAAA,CAAAA,eAAAA,WAAAA,aAAAA,OAAAA,MAAAA,MAAAA,CAAAA;AACVF,UAAAA,cAAUO,MAAAA,KAAAA,MAAAA,WAAAA,EAAAA,KAAAA,CAAAA,eAAAA,WAAAA,aAAAA,OAAAA,MAAAA,MAAAA,CAAAA;AAEV,IAAAP,WAAMiB,aAAY,QAAA,EAAA,YAAA,YAAA,GAAA5B,eAAA,GAAA,IAAA,GAAA,MAAA,GAAA,CAAA,eAAA,EAAA,EAAA,CAAA;eAAO6B,aAAAA,QAAgBhB,EAAAA,YAAAA,YAAAA,GAAAA,eAAAA,GAAAA,IAAAA,GAAAA,MAAAA,GAAAA,CAAAA,eAAAA,EAAAA,EAAAA,CAAAA;UAAcH,QAAMmB,IAAAA;MAA6B,MAAA,gBAAA,WAAA;MAC5F,MAAA,gBAAA,WAAA;IACF,CAAA;EAEA;;AACkBL,IAAAA,WAAAA,MAAkBM;EAElC;gBAA4Bb,oBAAAA,IAAAA;EAAyC,YAAA,SAAAc,WAAA,OAAA,GAAA;AAErE,SAAgBC,SAAON;EACvB;EAEAZ,MAAAA,OAAAA,YAAmBC;EAAAA;QACjB,QAAMW,YAAa;EAAIO;mBAClBT,EAAAA,WAAgBE,aAAAA,GAAAA;AACrB,UAAA,aAAOA,IAAAA,eAAAA,KAAAA,QAAAA,cAAAA,SAAAA;AACT,SAAA,YAAA,IAAA,UAAA;AAEA,WAAML;;QAEJ,eAAiBD,YAASc;AAC1B,IAAAvB,WAAU,KAACqB,YAAON,IAAAA,UAAAA,GAAAA,QAAAA,EAAAA,YAAAA,YAAAA,GAAAA,eAAAA,GAAAA,IAAAA,GAAAA,MAAAA,GAAAA,CAAAA,oCAAAA,EAAAA,EAAAA,CAAAA;AACpB,UAAA,WAAA,SAAA,KAAAK,WAAA,OAAA,CAAA;AAEA,UAAMF,KAAAA,OAAgBH,UAA0B;;QAE9C,gBAAkB,YAACA;AACnB,IAAAf,WAAMe,KAAAA,YAAoBS,IAAK,UAAA,GAAA,QAAA,EAAA,YAAA,YAAA,GAAAnC,eAAA,GAAA,IAAA,GAAA,MAAA,GAAA,CAAA,oCAAA,EAAA,EAAA,CAAA;AAC/B,UAAKwB,KAAAA,QAAYY,UAAOV;AAC1B,UAAA,WAAA,SAAA,MAAA;AAEA,SAAMW,YAAyB,OAAA,UAAA;;kBAErB;AACR,eAAA,YAAA,KAAA,aAAA;AACF,YAAA,KAAA,gBAAA,QAAA;IACF;EAEA;;kBAEeC,CAAAA,SAAQ,YAAK;WACtBC,SAAUD,SAAAA,CAAAA,QAAAA;AACZ,QAAA,OAAA,IAAA,SAAA,8BAAA;AACF,MAAAC,KAAA,MAAA,KAAA,QAAA,EAAA,YAAA,YAAA,GAAAvC,eAAA,GAAA,IAAA,GAAA,OAAA,CAAA;IACAwC;;WAEID,SAAUD,SAAAA,CAAAA,QAAAA;AACZ,QAAA,OAAA,IAAA,SAAA,8BAAA;AACF,MAAAC,KAAA,MAAA,KAAA,QAAA,EAAA,YAAA,YAAA,GAAAvC,eAAA,GAAA,IAAA,GAAA,OAAA,CAAA;IACF;EAEA,CAAA;;;;EACSoB;EAEP;;cAEkBJ,aAAAA,cAAAA,WAAAA;SACAD,cAAAA;AAEhB,SAAKK,eAAeqB;SAClB1B,YAAAA;SACA2B,WAAAA,IAAAA,SAAAA;MACA1B;MACF;MACF;IAEO2B,CAAAA;;WACqBC,MAAAA;AAA+C,WAAA,iBAAA;MAC3E,WAAA,MAAA,KAAA,SAAA,WAAA;IACF,CAAA;;;;;AMlIA,SAASC,WAAAA,UAASC,gBAAAA,qBAAoB;AACtC,SAASC,aAAAA,kBAAiB;AAC1B,SAASC,OAAAA,YAAW;AACpB,SAASC,UAAAA,eAAc;AAEvB,SAA4BC,sBAAAA,2BAA0B;AAUtD,IAAAC,gBAAaC;AACKC,IAAO,gBAAPA,MAAqB;EACrBC;EACAC,OAAAA,IAAUV,SAAIA;EACvBW,SAAAA,IAAAA,SAA+C;EAC9CC,UAAkD,IAAAZ,SAAA;EAE1D;;EAAqE,YAAA,YAAA,CAAA,GAAA;AAEjEa,SAAAA,YAAe;;EAEnB,IAAA,eAAA;AAEA,WAAMC,KAAOC,kBAA0C;;eACrCC,SAAaD;SAAqBF,UAAAA;MAAmC,aAAA,QAAA;MACjF,cAACF,QAAmBI;IACxB,GAAA,EAAA,YAAYV,YAAAA,GAAAA,eAA+E,GAAA,IAAA,GAAA,KAAA,CAAA;SACzFY,mBAAoBC;gBAClBC,oBAAa;MACf,MAAA,MAAA,QAAA,WAAA,OAAA;QACAC,aAAW;;MAEX,WAAA;QACAC,aAASjB,QAAA,WAAA,iCAAA;;MAET,SAAA;QACAkB,aAAUlB,QAAA,WAAA,iCAAA;;gBAENmB;qBACQ;UACR,UAAA,OAAA,YAAA;;oBAGIC,OAAMC,YAAY;AACpB,mBAAA;cACF,MAAA,QAAA;YACF;UACF;QACAC;MACF;MAEA,SAAWd;IACX,CAAA;AAEA,UAAKJ,KAAKmB,KAAI,KAAA;AAChB,UAAA,KAAA,UAAA,SAAA;AAEA,SAAMC,KAAQC,KAA4B;;gBACvBA,KAAAA;AAAI,IAAA1B,KAAA,WAAA;MACrB;IACA,GAAA,EAAA,YAAYwB,YAAI,GAAArB,eAAA,GAAA,IAAA,GAAA,KAAA,CAAA;AAChB,UAAM,KAAKM,UAAMkB,UAAAA;AACnB,SAAA,OAAA,KAAA;AAEA,UAAMC,KAAQF,MAA4B,MAAA;;gBACvBA,KAAAA;AAAI,IAAA1B,KAAA,WAAA;MACrB;IACA,GAAA,EAAA,YAAawB,YAAI,GAAArB,eAAA,GAAA,IAAA,GAAA,KAAA,CAAA;AACjB,UAAM,KAAKM,UAAMoB,UAAAA;AACnB,SAAA,QAAA,KAAA;AAEA,UAAMC,KAAKC,MAAU,MAAM;;aACFR,UAAS,QAAA;AAAK,UAAA,KAAA,KAAA,KAAA;MACrC,SAAY;;AAAsE,UAAI,MAAA,MAAAzB,cAAA,KAAA,KAAA,IAAA,YAAA,SAAA;MACtFC,MAAUiC;IACZ,CAAA,GAAA,IAAA;AAEA,IAAAjC,WAAA,IAAA,SAAA,SAAA,QAAA,EAAA,YAAA,YAAA,GAAAI,eAAA,GAAA,IAAA,GAAA,MAAA,GAAA,CAAA,wBAAA,EAAA,EAAA,CAAA;;;;;EAKA,MAAA,gBAAA,KAAA;AACF,SAAA,kBAAA,MAAA,GAAA;;;;;ACxFA,SAAS8B,mBAAmB;AAG5B,SAASC,WAAAA,gBAAe;AACxB,SAASC,aAAAA,kBAAiB;AAC1B,SAASC,OAAAA,YAAW;AACpB,SAASC,UAAAA,eAAc;AAEvB,SAA4BC,sBAAAA,2BAA0B;AAUtD,IAAAC,gBAAaC;AACKC,IAAO,2BAAPA,MAAqB;EACrBC;EACAC,OAAAA,IAAUT,SAAIA;EACbU,SAAAA,IAAWV,SAA8B;EAEnDW,UAAAA,IAAAA,SAA+C;EAC9CC,WAAwE,oBAAA,IAAA;EAEhF;;EAAgF,YAAA,YAAA,CAAA,GAAA;AAE5EC,SAAAA,YAAe;;EAEnB,IAAA,eAAA;AAEA,WAAcC,KAAAA,kBAA+BC;;QAG3C,YAAMC,WAAgB,WAAWL,GAAAA,YAAkBM,MAAAA;eACjDC,CAAAA,KAAAA,SAAa,IAAA,SAAA,GAAA,0BAAA,SAAA,IAAA,EAAA,YAAA,YAAA,GAAAb,eAAA,GAAA,IAAA,GAAA,MAAA,GAAA,CAAA,iCAAA,uCAAA,EAAA,CAAA;AACf,UAAA,gBAAA,MAAA,KAAA,iBAAA,aAAA,WAAA;MAEA,aAAMc;;UAEJC,cAAW;MACXC;MACAC,WAAAA;MACAC,eAAe;MACfC,YAAAA;MACF,eAAA;MAEA,gBAAkB,KAAA,IAAA;;sBAERC,MAAQ1B;kBAGXiB,QAAAA,WAAoBS,MAAAA;cACnB,QAAU,YAAA,SAAA;2BACRN,MAAYC,OAAS,UAAUM,CAAAA,QAAM;AACvC,cAAA,CAAA,KAAO;AACLP,wBAAYG,aAAU,MAAI;UAC5B,OAAA;AAEF,wBAAA,cAAA;UACAN;QACF,CAAA,GAAA;AACEW,wBAAQC,KAASC,SAAAA,SAAAA;QACnB,OAAA;AACCd,kBAAAA,SAAAA,SAAAA;QACL;MAEAc,GAAAA,QAAAA;IAEA;AAEAb,cAAAA;SACEG,SAAAA,IAAYE,WAAa,WAASK;AACpC,kBAAA,GAAA,QAAA,CAAA,SAAA;AAEAV,kBAAgB,iBAAWc,KAAAA;;AAE3B,kBAAA,GAAA,SAAA,CAAA,QAAA;AAEAd,kBAAgB,iBAAU;;AAE1B,kBAAA,GAAA,SAAA,MAAA;AAEAG,oBAAYY,mBAAiBC;;gBAE3B,iBAAA,YAAA,MAAA;AACA9B,YAAI+B,EAAAA,WAAM,eAAA,YAA0B,cAAA,IAAA;WAElCb,MAAAA,0BAAAA;QACAC;QACAC;QACAC;QACAW;QACAC;QACF,MAAA,KAAA,kBAAA;QACC,IAAA,KAAA,kBAAA;MACL,GAAA,EAAA,YAAA,YAAA,GAAA9B,eAAA,GAAA,IAAA,GAAA,KAAA,CAAA;IAEQ+B,GAAAA,GAAAA;;eAGAC,WAAc3B;AAEpB4B,IAAAA,WAAAA,KAAaD,SAAOE,IAAK,SAAA,GAAA,0BAAA,SAAA,IAAA,EAAA,YAAA,YAAA,GAAAlC,eAAA,GAAA,IAAA,GAAA,MAAA,GAAA,CAAA,gCAAA,uCAAA,EAAA,CAAA;AACzBiC,UAAAA,SAAaD,KAAON,SAAAA,IAAAA,SAAc;AAElC,iBAAQX,OAAWC,KAAAA;AAEnBgB,iBAAOrB,OAAa,cAAQ;AAC5B,UAAKN,EAAAA,WAAS8B,eAAOC,YAAAA,eAAAA,eAAAA,IAAAA;AAErB,WAAO,cAAA,QAAA;SACLrB,SAAAA,OAAAA,SAAAA;WACAC;MACAC;MACAC;MACAmB;MACF;MACF,aAAA,KAAA,IAAA,KAAA,kBAAA;IAEA;;eACkBC,SAAaC;SAAqB/B,UAAAA;MAAmC,aAAA,QAAA;MACjF,cAACF,QAAmBiC;IACxB,GAAA,EAAA,YAAYxC,YAAAA,GAAAA,eAGV,GAAA,IAAA,GAAA,KAAA,CAAA;SACAyC,mBAAoBC;gBAClB5B,oBAAa;MACf,MAAA,MAAA,QAAA,WAAA,OAAA;QACA6B,aAAW;;MAEX,WAAA;QACAC,wBAAS7C,QAAA,WAAA,4CAAA;;MAET,SAAA;QACA8C,wBAAU9C,QAAA,WAAA,4CAAA;;gBAEN+C;gCACgBT;6BAEH3B,OAAW,YAAC2B;AAEvB,kBAAA,EAAO,MAAA,WAAA,oBAAA,oBAAA,IAAA;kBACLU,KAAMV,YAAAA,WAAAA,oBAAAA,mBAAAA;AACR,mBAAA;cACF,MAAA;YACAW;;2BAEUhC,OAAWC,YAAAA;AAEnB,kBAAA,YAAO,QAAA;kBACL8B,EAAAA,WAAMV,eAAAA,YAAAA,eAAAA,YAAAA,IAAAA,KAAAA,aAAAA,SAAAA;mBACNrB;cACAC,MAAAA;cACAC;cACAC;cACAmB;cACF;cACF;YACF;UACF;QACAW;MACF;MAEA,SAAWzC;IACX,CAAA;AAEA,UAAKL,KAAK+C,KAAI,KAAA;AAChB,UAAA,KAAA,UAAA,SAAA;AAEA,SAAMC,KAAQzB,KAA4B;;gBACvBA,KAAAA;AAAI,IAAA5B,KAAA,WAAA;MACrB;IACA,GAAA,EAAA,YAAYoD,YAAI,GAAAjD,eAAA,GAAA,KAAA,GAAA,KAAA,CAAA;AAChB,UAAK,KAAM,UAACoC,UAAkB;SAC5BvC,OAAI,KAAA;eAAoBuC,CAAAA,WAAAA,MAAAA,KAAAA,OAAAA,QAAAA,KAAAA,QAAAA,GAAAA;AAAU,MAAAvC,KAAA,kBAAA;QAClCoC;MACAD,GAAAA,EAAAA,YAAOrB,YAAcwC,GAAAA,eAAO,GAAA,KAAA,GAAA,KAAA,CAAA;AAC9B,mBAAA,OAAA,QAAA;AACA,aAAW5C,cAAM6C,QAAAA;IACnB;AAEA,UAAMC,KAAQ5B,MAA4B,MAAA;;gBACvBA,KAAAA;AAAI,IAAA5B,KAAA,WAAA;MACrB;IACA,GAAA,EAAA,YAAaoD,YAAI,GAAAjD,eAAA,GAAA,KAAA,GAAA,KAAA,CAAA;AACjB,UAAM,KAAKO,UAAM+C,UAAAA;AACnB,SAAA,QAAA,KAAA;AAEA,UAAMC,KAAAA,MAAaC,MAAAA;;qBACe,oBAAA,qBAAA,WAAA;AAAK,UAAA,KAAA,KAAA,KAAA;MACjC,SAACpB;;AAEL,QAAA,CAAA,WAAA;AACA,kBAAc,UAAS,YAAcqB,CAAAA,EAAAA,SAAAA,KAAAA,CAAAA;;UAEnCD,EAAAA,KAAAA,IAAAA,MAAAA,KAAAA,KAAAA,IAAAA,uBAAAA,kBAAAA;MACAE,MAAAA;MACF;MACA9D;IAEA,CAAA;AACA,IAAAA,WAAOwC,SAAAA,WAAAA,QAAAA,EAAAA,YAAAA,YAAAA,GAAAA,eAAAA,GAAAA,KAAAA,GAAAA,MAAAA,GAAAA,CAAAA,sBAAAA,EAAAA,EAAAA,CAAAA;AACT,UAAA,KAAA,YAAA,WAAA,oBAAA,mBAAA;AAEA,WAAMuB;;oBAC4B,WAAA;AAAK,UAAA,KAAA,KAAA,KAAA;MACrC,SAAY;;AAGV,UAAA,EAAA,MAAA,WAAA,eAAA,YAAA,eAAA,YAAA,IAAA,MAAA,KAAA,KAAA,IAAA,uBAAA,gBAAA;MAEF/D,MAAUkD;IAEV,CAAA;AAEA,IAAAlD,WAAO,SAAA,WAAA,QAAA,EAAA,YAAA,YAAA,GAAAI,eAAA,GAAA,KAAA,GAAA,MAAA,GAAA,CAAA,sBAAA,EAAA,EAAA,CAAA;UACLoC,QAAAA,KAAAA,aAAAA,SAAAA;WACAwB;;aAEEC;;gBAEE7C;UACAC;UACAC;UACAmB;UACF;UACF;QACF;MACF;IAEA;;;;;EAKA,MAAA,gBAAA,KAAA;AACF,SAAA,kBAAA,MAAA,GAAA;;;",
|
|
6
6
|
"names": ["pipeline", "waitForCondition", "invariant", "PublicKey", "log", "Context", "failUndefined", "assertArgument", "invariant", "PublicKey", "log", "RpcClosedError", "TimeoutError", "ControlExtension", "TimeoutError", "AsyncTimeoutError", "asyncTimeout", "scheduleTaskInterval", "Context", "log", "RpcClosedError", "schema", "createProtoRpcPeer", "Callback", "HEARTBEAT_RTT_WARN_THRESH", "ControlExtension", "_ctx", "_extensionContext", "onExtensionRegistered", "_rpc", "localPeerId", "remotePeerId", "registerExtension", "name", "requested", "Control", "getService", "exposed", "handlers", "heartbeat", "request", "requestTimestamp", "truncate", "port", "timeout", "opts", "open", "reqTS", "resp", "heartbeatTimeout", "rtt", "now", "getTime", "DEBUG_PRINT_HEARTBEAT", "err", "delay", "onTimeout", "info", "onClose", "onAbort", "Duplex", "Event", "invariant", "log", "__dxlog_file", "FRAME_LENGTH_SIZE", "_messageCb", "undefined", "_buffer", "_sendCallbacks", "_bytesSent", "_bytesReceived", "_writable", "drain", "_stream", "_processResponseQueue", "write", "chunk", "callback", "length", "Buffer", "concat", "_subscribeCb", "port", "Promise", "push", "resolve", "subscribe", "stream", "bytesSent", "bytesReceived", "writable", "responseQueue", "forEach", "offset", "frame", "subarray", "destroy", "frameLength", "buffer", "bytesConsumed", "payload", "writeUInt16BE", "set", "Event", "Context", "asyncTimeout", "scheduleTaskInterval", "failUndefined", "invariant", "log", "TimeoutError", "schema", "Balancer", "Event", "invariant", "log", "__dxlog_file", "MAX_CHUNK_SIZE", "_lastCallerIndex", "_channels", "_framer", "Framer", "_sendBuffers", "Map", "_sending", "incomingData", "Event", "stream", "_sysChannelId", "port", "subscribe", "_processIncomingMessage", "bytesSent", "bytesReceived", "buffersCount", "addChannel", "channel", "pushData", "data", "trigger", "channelId", "_sendChunks", "catch", "err", "destroy", "log", "msg", "_receiveBuffers", "chunk", "length", "dataLength", "set", "buffer", "Buffer", "msgLength", "channelBuffer", "_getNextCallerId", "index", "_enqueueChunk", "Error", "sendBuffer", "get", "idx", "chunks", "forEach", "_getNextChunk", "invariant", "size", "dataLengthLength", "encodingLength", "message", "allocUnsafe", "channelTagLength", "varint", "encode", "offset", "decode", "withLength", "subarray", "DEFAULT_SEND_COMMAND_TIMEOUT", "DESTROY_COMMAND_SEND_TIMEOUT", "STATS_INTERVAL", "MAX_SAFE_FRAME_SIZE", "SYSTEM_CHANNEL_ID", "GRACEFUL_CLOSE_TIMEOUT", "_balancer", "Balancer", "_channelsByLocalId", "Map", "_channelsByTag", "_ctx", "Context", "_sessionId", "__dxlog_file", "_nextId", "_closing", "_destroying", "_disposed", "_lastStats", "_lastChannelStats", "afterClosed", "Event", "statsUpdated", "stream", "_handleCommand", "Command", "decode", "setSessionId", "sessionId", "_getOrCreateStream", "tag", "contentType", "invariant", "Duplex", "write", "data", "encoding", "_sendData", "channel", "then", "read", "stats", "bytesReceived", "push", "destroy", "err", "openChannel", "_destroyChannel", "callback", "inboundBuffer", "send", "subscribe", "cb", "log", "_sendCommand", "close", "error", "_dispose", "message", "dispose", "_emitStats", "clear", "warn", "cmd", "channelId", "pushData", "wait", "timeout", "scheduleTaskInterval", "remoteId", "params", "buffer", "bytesSent", "set", "id", "addChannel", "length", "size", "threshold", "delete", "undefined", "lastStats", "readBufferSize", "writeBufferSize", "channels", "now", "interval", "calculateThroughput", "current", "last", "bytesReceivedRate", "timestamp", "Array", "__dxlog_file", "CONTROL_HEARTBEAT_TIMEOUT", "initiator", "localPeerId", "remotePeerId", "_sessionId", "_ctx", "onError", "err", "info", "destroy", "catch", "log", "error", "_muxer", "Muxer", "_control", "_extensions", "_remoteExtensions", "_open", "_destroying", "_aborting", "isOpen", "assertArgument", "PublicKey", "isPublicKey", "ControlExtension", "heartbeatInterval", "controlHeartbeatInterval", "heartbeatTimeout", "rest", "controlHeartbeatTimeout", "onTimeout", "abort", "message", "TimeoutError", "onExtensionRegistered", "set", "name", "invariant", "has", "trace", "bytesSent", "bytesSentRate", "stats", "bytesReceived", "bytesReceivedRate", "channels", "_setExtension", "_openExtension", "setSessionId", "extension", "extensionsCount", "addExtension", "Error", "RpcClosedError", "includes", "extensionName", "context", "failUndefined", "createPort", "channelName", "opts", "createStream", "close", "runInContextAsync", "__dxlog_file", "TestBuilder", "createPeer", "peer", "opts", "_peers", "add", "createPeers", "connect", "peer1", "peer2", "invariant", "has", "connection1", "createConnection", "initiator", "remotePeerId", "peerId", "connection2", "pipeStreams", "teleport", "openConnection", "Array", "from", "connections", "find", "connection", "equals", "Promise", "closeConnection", "Set", "PublicKey", "onOpen", "TestConnection", "open", "close", "delete", "destroy", "err", "log", "pipeline", "Teleport", "localPeerId", "whenOpen", "condition", "Trigger", "asyncTimeout", "invariant", "log", "schema", "createProtoRpcPeer", "__dxlog_file", "TestExtension", "open", "closed", "aborted", "extensionContext", "_rpc", "remotePeerId", "onOpen", "context", "localPeerId", "port", "createPort", "contentType", "requested", "exposed", "handlers", "voidCall", "data", "request", "timeout", "wake", "onClose", "err", "close", "onAbort", "abort", "test", "message", "res", "randomBytes", "Trigger", "invariant", "log", "schema", "createProtoRpcPeer", "__dxlog_file", "TestExtensionWithStreams", "open", "closed", "aborted", "_streams", "extensionContext", "_rpc", "remotePeerId", "_openStream", "interval", "networkStream", "createStream", "contentType", "streamEntry", "bytesSent", "bytesReceived", "sendErrors", "receiveErrors", "startTimestamp", "chunk", "length", "process", "nextTick", "pushChunk", "err", "reportingTimer", "setInterval", "trace", "from", "to", "_closeStream", "stream", "clearTimeout", "timer", "delete", "streamTag", "runningTime", "localPeerId", "context", "port", "createPort", "requested", "exposed", "handlers", "requestTestStream", "data", "closeTestStream", "timeout", "wake", "onClose", "destroy", "close", "onAbort", "abort", "addNewStream", "streamLoadInterval", "TestServiceWithStreams", "streamLoadChunkSize", "closeStream", "stats", "remote"]
|
|
7
7
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"inputs":{"src/muxing/framer.ts":{"bytes":17733,"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}],"format":"esm"},"../../../../node_modules/.pnpm/varint@6.0.0/node_modules/varint/encode.js":{"bytes":595,"imports":[],"format":"cjs"},"../../../../node_modules/.pnpm/varint@6.0.0/node_modules/varint/decode.js":{"bytes":522,"imports":[],"format":"cjs"},"../../../../node_modules/.pnpm/varint@6.0.0/node_modules/varint/length.js":{"bytes":471,"imports":[],"format":"cjs"},"../../../../node_modules/.pnpm/varint@6.0.0/node_modules/varint/index.js":{"bytes":134,"imports":[{"path":"../../../../node_modules/.pnpm/varint@6.0.0/node_modules/varint/encode.js","kind":"require-call","original":"./encode.js"},{"path":"../../../../node_modules/.pnpm/varint@6.0.0/node_modules/varint/decode.js","kind":"require-call","original":"./decode.js"},{"path":"../../../../node_modules/.pnpm/varint@6.0.0/node_modules/varint/length.js","kind":"require-call","original":"./length.js"}],"format":"cjs"},"src/muxing/balancer.ts":{"bytes":22996,"imports":[{"path":"../../../../node_modules/.pnpm/varint@6.0.0/node_modules/varint/index.js","kind":"import-statement","original":"varint"},{"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":"src/muxing/framer.ts","kind":"import-statement","original":"./framer"}],"format":"esm"},"src/muxing/muxer.ts":{"bytes":50409,"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":"@dxos/protocols/proto","kind":"import-statement","external":true},{"path":"src/muxing/balancer.ts","kind":"import-statement","original":"./balancer"}],"format":"esm"},"src/muxing/index.ts":{"bytes":499,"imports":[{"path":"src/muxing/framer.ts","kind":"import-statement","original":"./framer"},{"path":"src/muxing/muxer.ts","kind":"import-statement","original":"./muxer"}],"format":"esm"},"src/control-extension.ts":{"bytes":17729,"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/protocols/proto","kind":"import-statement","external":true},{"path":"@dxos/rpc","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true}],"format":"esm"},"src/teleport.ts":{"bytes":31532,"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":"src/control-extension.ts","kind":"import-statement","original":"./control-extension"},{"path":"src/muxing/index.ts","kind":"import-statement","original":"./muxing"}],"format":"esm"},"src/testing/test-builder.ts":{"bytes":15366,"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/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"src/teleport.ts","kind":"import-statement","original":"../teleport"}],"format":"esm"},"src/testing/test-extension.ts":{"bytes":9626,"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/proto","kind":"import-statement","external":true},{"path":"@dxos/rpc","kind":"import-statement","external":true}],"format":"esm"},"src/testing/test-extension-with-streams.ts":{"bytes":26256,"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/proto","kind":"import-statement","external":true},{"path":"@dxos/rpc","kind":"import-statement","external":true}],"format":"esm"},"src/testing/index.ts":{"bytes":629,"imports":[{"path":"src/testing/test-builder.ts","kind":"import-statement","original":"./test-builder"},{"path":"src/testing/test-extension.ts","kind":"import-statement","original":"./test-extension"},{"path":"src/testing/test-extension-with-streams.ts","kind":"import-statement","original":"./test-extension-with-streams"}],"format":"esm"},"src/rpc-extension.ts":{"bytes":5882,"imports":[{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/rpc","kind":"import-statement","external":true}],"format":"esm"},"src/index.ts":{"bytes":646,"imports":[{"path":"src/muxing/index.ts","kind":"import-statement","original":"./muxing"},{"path":"src/teleport.ts","kind":"import-statement","original":"./teleport"},{"path":"src/testing/index.ts","kind":"import-statement","original":"./testing"},{"path":"src/rpc-extension.ts","kind":"import-statement","original":"./rpc-extension"}],"format":"esm"}},"outputs":{"dist/lib/neutral/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":2925},"dist/lib/neutral/index.mjs":{"imports":[{"path":"dist/lib/neutral/chunk-I37MUX43.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":"src/index.ts","inputs":{"src/index.ts":{"bytesInOutput":0},"src/rpc-extension.ts":{"bytesInOutput":1398}},"bytes":1859},"dist/lib/neutral/testing/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":93},"dist/lib/neutral/testing/index.mjs":{"imports":[{"path":"dist/lib/neutral/chunk-I37MUX43.mjs","kind":"import-statement"}],"exports":["TestBuilder","TestConnection","TestExtension","TestExtensionWithStreams","TestPeer"],"entryPoint":"src/testing/index.ts","inputs":{},"bytes":299},"dist/lib/neutral/chunk-I37MUX43.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":96908},"dist/lib/neutral/chunk-I37MUX43.mjs":{"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/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/protocols/proto","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":"@dxos/protocols/proto","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/proto","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/proto","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":{"../../../../node_modules/.pnpm/varint@6.0.0/node_modules/varint/encode.js":{"bytesInOutput":836},"../../../../node_modules/.pnpm/varint@6.0.0/node_modules/varint/decode.js":{"bytesInOutput":693},"../../../../node_modules/.pnpm/varint@6.0.0/node_modules/varint/length.js":{"bytesInOutput":624},"../../../../node_modules/.pnpm/varint@6.0.0/node_modules/varint/index.js":{"bytesInOutput":271},"src/testing/test-builder.ts":{"bytesInOutput":4783},"src/teleport.ts":{"bytesInOutput":9450},"src/control-extension.ts":{"bytesInOutput":4608},"src/muxing/framer.ts":{"bytesInOutput":4230},"src/muxing/muxer.ts":{"bytesInOutput":13088},"src/muxing/balancer.ts":{"bytesInOutput":5961},"src/testing/index.ts":{"bytesInOutput":0},"src/testing/test-extension.ts":{"bytesInOutput":2568},"src/testing/test-extension-with-streams.ts":{"bytesInOutput":7096}},"bytes":56393}}}
|
|
1
|
+
{"inputs":{"src/muxing/framer.ts":{"bytes":17733,"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}],"format":"esm"},"../../../../node_modules/.pnpm/varint@6.0.0/node_modules/varint/encode.js":{"bytes":595,"imports":[],"format":"cjs"},"../../../../node_modules/.pnpm/varint@6.0.0/node_modules/varint/decode.js":{"bytes":522,"imports":[],"format":"cjs"},"../../../../node_modules/.pnpm/varint@6.0.0/node_modules/varint/length.js":{"bytes":471,"imports":[],"format":"cjs"},"../../../../node_modules/.pnpm/varint@6.0.0/node_modules/varint/index.js":{"bytes":134,"imports":[{"path":"../../../../node_modules/.pnpm/varint@6.0.0/node_modules/varint/encode.js","kind":"require-call","original":"./encode.js"},{"path":"../../../../node_modules/.pnpm/varint@6.0.0/node_modules/varint/decode.js","kind":"require-call","original":"./decode.js"},{"path":"../../../../node_modules/.pnpm/varint@6.0.0/node_modules/varint/length.js","kind":"require-call","original":"./length.js"}],"format":"cjs"},"src/muxing/balancer.ts":{"bytes":22996,"imports":[{"path":"../../../../node_modules/.pnpm/varint@6.0.0/node_modules/varint/index.js","kind":"import-statement","original":"varint"},{"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":"src/muxing/framer.ts","kind":"import-statement","original":"./framer"}],"format":"esm"},"src/muxing/muxer.ts":{"bytes":50501,"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":"@dxos/protocols/proto","kind":"import-statement","external":true},{"path":"src/muxing/balancer.ts","kind":"import-statement","original":"./balancer"}],"format":"esm"},"src/muxing/index.ts":{"bytes":499,"imports":[{"path":"src/muxing/framer.ts","kind":"import-statement","original":"./framer"},{"path":"src/muxing/muxer.ts","kind":"import-statement","original":"./muxer"}],"format":"esm"},"src/control-extension.ts":{"bytes":17729,"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/protocols/proto","kind":"import-statement","external":true},{"path":"@dxos/rpc","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true}],"format":"esm"},"src/teleport.ts":{"bytes":31625,"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":"src/control-extension.ts","kind":"import-statement","original":"./control-extension"},{"path":"src/muxing/index.ts","kind":"import-statement","original":"./muxing"}],"format":"esm"},"src/testing/test-builder.ts":{"bytes":15366,"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/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"src/teleport.ts","kind":"import-statement","original":"../teleport"}],"format":"esm"},"src/testing/test-extension.ts":{"bytes":9626,"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/proto","kind":"import-statement","external":true},{"path":"@dxos/rpc","kind":"import-statement","external":true}],"format":"esm"},"src/testing/test-extension-with-streams.ts":{"bytes":26256,"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/proto","kind":"import-statement","external":true},{"path":"@dxos/rpc","kind":"import-statement","external":true}],"format":"esm"},"src/testing/index.ts":{"bytes":629,"imports":[{"path":"src/testing/test-builder.ts","kind":"import-statement","original":"./test-builder"},{"path":"src/testing/test-extension.ts","kind":"import-statement","original":"./test-extension"},{"path":"src/testing/test-extension-with-streams.ts","kind":"import-statement","original":"./test-extension-with-streams"}],"format":"esm"},"src/rpc-extension.ts":{"bytes":5882,"imports":[{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/rpc","kind":"import-statement","external":true}],"format":"esm"},"src/index.ts":{"bytes":646,"imports":[{"path":"src/muxing/index.ts","kind":"import-statement","original":"./muxing"},{"path":"src/teleport.ts","kind":"import-statement","original":"./teleport"},{"path":"src/testing/index.ts","kind":"import-statement","original":"./testing"},{"path":"src/rpc-extension.ts","kind":"import-statement","original":"./rpc-extension"}],"format":"esm"}},"outputs":{"dist/lib/neutral/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":2925},"dist/lib/neutral/index.mjs":{"imports":[{"path":"dist/lib/neutral/chunk-7OL3IB7N.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":"src/index.ts","inputs":{"src/index.ts":{"bytesInOutput":0},"src/rpc-extension.ts":{"bytesInOutput":1398}},"bytes":1859},"dist/lib/neutral/testing/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":93},"dist/lib/neutral/testing/index.mjs":{"imports":[{"path":"dist/lib/neutral/chunk-7OL3IB7N.mjs","kind":"import-statement"}],"exports":["TestBuilder","TestConnection","TestExtension","TestExtensionWithStreams","TestPeer"],"entryPoint":"src/testing/index.ts","inputs":{},"bytes":299},"dist/lib/neutral/chunk-7OL3IB7N.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":96926},"dist/lib/neutral/chunk-7OL3IB7N.mjs":{"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/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/protocols/proto","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":"@dxos/protocols/proto","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/proto","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/proto","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":{"../../../../node_modules/.pnpm/varint@6.0.0/node_modules/varint/encode.js":{"bytesInOutput":836},"../../../../node_modules/.pnpm/varint@6.0.0/node_modules/varint/decode.js":{"bytesInOutput":693},"../../../../node_modules/.pnpm/varint@6.0.0/node_modules/varint/length.js":{"bytesInOutput":624},"../../../../node_modules/.pnpm/varint@6.0.0/node_modules/varint/index.js":{"bytesInOutput":271},"src/testing/test-builder.ts":{"bytesInOutput":4783},"src/teleport.ts":{"bytesInOutput":9501},"src/control-extension.ts":{"bytesInOutput":4608},"src/muxing/framer.ts":{"bytesInOutput":4230},"src/muxing/muxer.ts":{"bytesInOutput":13138},"src/muxing/balancer.ts":{"bytesInOutput":5961},"src/testing/index.ts":{"bytesInOutput":0},"src/testing/test-extension.ts":{"bytesInOutput":2568},"src/testing/test-extension-with-streams.ts":{"bytesInOutput":7096}},"bytes":56546}}}
|