@dxos/teleport 0.3.10 → 0.3.11-main.00a28cb

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.
@@ -29,7 +29,7 @@ import { log } from "@dxos/log";
29
29
  import { schema, RpcClosedError } from "@dxos/protocols";
30
30
  import { createProtoRpcPeer } from "@dxos/rpc";
31
31
  import { Callback } from "@dxos/util";
32
- var __dxlog_file = "/home/circleci/project/packages/core/mesh/teleport/src/control-extension.ts";
32
+ var __dxlog_file = "/home/runner/work/dxos/dxos/packages/core/mesh/teleport/src/control-extension.ts";
33
33
  var HEARTBEAT_RTT_WARN_THRESH = 1e4;
34
34
  var ControlExtension = class {
35
35
  constructor(opts, localPeerId, remotePeerId) {
@@ -169,7 +169,7 @@ import { Duplex } from "@dxos/node-std/stream";
169
169
  import { Event } from "@dxos/async";
170
170
  import { invariant } from "@dxos/invariant";
171
171
  import { log as log2 } from "@dxos/log";
172
- var __dxlog_file2 = "/home/circleci/project/packages/core/mesh/teleport/src/muxing/framer.ts";
172
+ var __dxlog_file2 = "/home/runner/work/dxos/dxos/packages/core/mesh/teleport/src/muxing/framer.ts";
173
173
  var FRAME_LENGTH_SIZE = 2;
174
174
  var Framer = class {
175
175
  constructor() {
@@ -344,7 +344,7 @@ import * as varint from "varint";
344
344
  import { Event as Event2 } from "@dxos/async";
345
345
  import { invariant as invariant2 } from "@dxos/invariant";
346
346
  import { log as log3 } from "@dxos/log";
347
- var __dxlog_file3 = "/home/circleci/project/packages/core/mesh/teleport/src/muxing/balancer.ts";
347
+ var __dxlog_file3 = "/home/runner/work/dxos/dxos/packages/core/mesh/teleport/src/muxing/balancer.ts";
348
348
  var MAX_CHUNK_SIZE = 8192;
349
349
  var Balancer = class {
350
350
  constructor(_sysChannelId) {
@@ -559,7 +559,7 @@ function _ts_decorate(decorators, target, key, desc) {
559
559
  r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
560
560
  return c > 3 && r && Object.defineProperty(target, key, r), r;
561
561
  }
562
- var __dxlog_file4 = "/home/circleci/project/packages/core/mesh/teleport/src/muxing/muxer.ts";
562
+ var __dxlog_file4 = "/home/runner/work/dxos/dxos/packages/core/mesh/teleport/src/muxing/muxer.ts";
563
563
  var Command = schema2.getCodecForType("dxos.mesh.muxer.Command");
564
564
  var DEFAULT_SEND_COMMAND_TIMEOUT = 6e4;
565
565
  var DESTROY_COMMAND_SEND_TIMEOUT = 5e3;
@@ -1027,7 +1027,7 @@ function _ts_decorate2(decorators, target, key, desc) {
1027
1027
  r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
1028
1028
  return c > 3 && r && Object.defineProperty(target, key, r), r;
1029
1029
  }
1030
- var __dxlog_file5 = "/home/circleci/project/packages/core/mesh/teleport/src/teleport.ts";
1030
+ var __dxlog_file5 = "/home/runner/work/dxos/dxos/packages/core/mesh/teleport/src/teleport.ts";
1031
1031
  var CONTROL_HEARTBEAT_INTERVAL = 1e4;
1032
1032
  var CONTROL_HEARTBEAT_TIMEOUT = 6e4;
1033
1033
  var Teleport = class {
@@ -1352,7 +1352,7 @@ _ts_decorate2([
1352
1352
  ], Teleport.prototype, "destroy", null);
1353
1353
 
1354
1354
  // packages/core/mesh/teleport/src/testing/test-builder.ts
1355
- var __dxlog_file6 = "/home/circleci/project/packages/core/mesh/teleport/src/testing/test-builder.ts";
1355
+ var __dxlog_file6 = "/home/runner/work/dxos/dxos/packages/core/mesh/teleport/src/testing/test-builder.ts";
1356
1356
  var TestBuilder = class {
1357
1357
  constructor() {
1358
1358
  this._peers = /* @__PURE__ */ new Set();
@@ -1558,7 +1558,7 @@ import { invariant as invariant6 } from "@dxos/invariant";
1558
1558
  import { log as log7 } from "@dxos/log";
1559
1559
  import { schema as schema3 } from "@dxos/protocols";
1560
1560
  import { createProtoRpcPeer as createProtoRpcPeer2 } from "@dxos/rpc";
1561
- var __dxlog_file7 = "/home/circleci/project/packages/core/mesh/teleport/src/testing/test-extension.ts";
1561
+ var __dxlog_file7 = "/home/runner/work/dxos/dxos/packages/core/mesh/teleport/src/testing/test-extension.ts";
1562
1562
  var TestExtension = class {
1563
1563
  constructor(callbacks = {}) {
1564
1564
  this.callbacks = callbacks;
@@ -1665,7 +1665,7 @@ import { invariant as invariant7 } from "@dxos/invariant";
1665
1665
  import { log as log8 } from "@dxos/log";
1666
1666
  import { schema as schema4 } from "@dxos/protocols";
1667
1667
  import { createProtoRpcPeer as createProtoRpcPeer3 } from "@dxos/rpc";
1668
- var __dxlog_file8 = "/home/circleci/project/packages/core/mesh/teleport/src/testing/test-extension-with-streams.ts";
1668
+ var __dxlog_file8 = "/home/runner/work/dxos/dxos/packages/core/mesh/teleport/src/testing/test-extension-with-streams.ts";
1669
1669
  var TestExtensionWithStreams = class {
1670
1670
  constructor(callbacks = {}) {
1671
1671
  this.callbacks = callbacks;
@@ -1930,4 +1930,4 @@ export {
1930
1930
  TestExtension,
1931
1931
  TestExtensionWithStreams
1932
1932
  };
1933
- //# sourceMappingURL=chunk-JBBPEHYE.mjs.map
1933
+ //# sourceMappingURL=chunk-G43TQTXR.mjs.map
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../../src/testing/test-builder.ts", "../../../src/teleport.ts", "../../../src/control-extension.ts", "../../../src/muxing/framer.ts", "../../../src/muxing/muxer.ts", "../../../src/muxing/balancer.ts", "../../../src/testing/test-extension.ts", "../../../src/testing/test-extension-with-streams.ts"],
4
4
  "sourcesContent": ["//\n// Copyright 2022 DXOS.org\n//\n\nimport { type Duplex, pipeline } from 'node:stream';\n\nimport { invariant } from '@dxos/invariant';\nimport { PublicKey } from '@dxos/keys';\nimport { log } from '@dxos/log';\n\nimport { Teleport } from '../teleport';\n\ntype CreatePeerOpts<T extends TestPeer> = {\n factory: () => T;\n};\n\nexport class TestBuilder {\n private readonly _peers = new Set<TestPeer>();\n\n createPeer<T extends TestPeer>(opts: CreatePeerOpts<T>): T {\n const peer = opts.factory();\n this._peers.add(peer);\n return peer;\n }\n\n *createPeers<T extends TestPeer>(opts: CreatePeerOpts<T>): Generator<T> {\n while (true) {\n yield this.createPeer(opts);\n }\n }\n\n async destroy() {\n await Promise.all(Array.from(this._peers).map((agent) => agent.destroy()));\n }\n\n async connect(peer1: TestPeer, peer2: TestPeer) {\n invariant(peer1 !== peer2);\n invariant(this._peers.has(peer1));\n invariant(this._peers.has(peer1));\n\n const connection1 = peer1.createConnection({ initiator: true, remotePeerId: peer2.peerId });\n const connection2 = peer2.createConnection({ initiator: false, remotePeerId: peer1.peerId });\n\n pipeStreams(connection1.teleport.stream, connection2.teleport.stream);\n await Promise.all([peer1.openConnection(connection1), peer2.openConnection(connection2)]);\n\n return [connection1, connection2];\n }\n\n async disconnect(peer1: TestPeer, peer2: TestPeer) {\n invariant(peer1 !== peer2);\n invariant(this._peers.has(peer1));\n invariant(this._peers.has(peer1));\n\n const connection1 = Array.from(peer1.connections).find((connection) =>\n connection.remotePeerId.equals(peer2.peerId),\n );\n const connection2 = Array.from(peer2.connections).find((connection) =>\n connection.remotePeerId.equals(peer1.peerId),\n );\n\n invariant(connection1);\n invariant(connection2);\n\n await Promise.all([peer1.closeConnection(connection1), peer2.closeConnection(connection2)]);\n }\n}\n\nexport class TestPeer {\n public readonly connections = new Set<TestConnection>();\n\n constructor(public readonly peerId: PublicKey = PublicKey.random()) {}\n\n protected async onOpen(connection: TestConnection) {}\n protected async onClose(connection: TestConnection) {}\n\n createConnection({ initiator, remotePeerId }: { initiator: boolean; remotePeerId: PublicKey }) {\n const connection = new TestConnection(this.peerId, remotePeerId, initiator);\n this.connections.add(connection);\n return connection;\n }\n\n async openConnection(connection: TestConnection) {\n invariant(this.connections.has(connection));\n await connection.teleport.open(PublicKey.random());\n await this.onOpen(connection);\n }\n\n async closeConnection(connection: TestConnection) {\n invariant(this.connections.has(connection));\n await this.onClose(connection);\n await connection.teleport.close();\n this.connections.delete(connection);\n }\n\n async destroy() {\n for (const teleport of this.connections) {\n await this.closeConnection(teleport);\n }\n }\n}\n\nconst pipeStreams = (stream1: Duplex, stream2: Duplex) => {\n pipeline(stream1, stream2, (err) => {\n if (err && err.code !== 'ERR_STREAM_PREMATURE_CLOSE') {\n log.catch(err);\n }\n });\n pipeline(stream2, stream1, (err) => {\n if (err && err.code !== 'ERR_STREAM_PREMATURE_CLOSE') {\n log.catch(err);\n }\n });\n};\n\nexport class TestConnection {\n public teleport: Teleport;\n\n constructor(\n public readonly localPeerId: PublicKey,\n public readonly remotePeerId: PublicKey,\n public readonly initiator: boolean,\n ) {\n this.teleport = new Teleport({\n initiator,\n localPeerId,\n remotePeerId,\n });\n }\n}\n", "//\n// Copyright 2022 DXOS.org\n//\n\nimport { type Duplex } from 'node:stream';\n\nimport { runInContextAsync, synchronized, scheduleTask, type Event } from '@dxos/async';\nimport { Context } from '@dxos/context';\nimport { failUndefined } from '@dxos/debug';\nimport { invariant } from '@dxos/invariant';\nimport { PublicKey } from '@dxos/keys';\nimport { log, logInfo } from '@dxos/log';\nimport { RpcClosedError, TimeoutError } from '@dxos/protocols';\n\nimport { ControlExtension } from './control-extension';\nimport { type CreateChannelOpts, Muxer, type MuxerStats, type RpcPort } from './muxing';\n\nexport type TeleportParams = {\n initiator: boolean;\n localPeerId: PublicKey;\n remotePeerId: PublicKey;\n};\n\nconst CONTROL_HEARTBEAT_INTERVAL = 10_000;\nconst CONTROL_HEARTBEAT_TIMEOUT = 60_000;\n\n/**\n * TODO(burdon): Comment: what is this?\n */\nexport class Teleport {\n public readonly initiator: boolean;\n public readonly localPeerId: PublicKey;\n public readonly remotePeerId: PublicKey;\n public _sessionId?: PublicKey;\n\n private readonly _ctx = new Context({\n onError: (err) => {\n void this.destroy(err).catch(() => {\n log.error('Error during destroy', err);\n });\n },\n });\n\n private readonly _muxer = new Muxer();\n\n private readonly _control;\n\n private readonly _extensions = new Map<string, TeleportExtension>();\n private readonly _remoteExtensions = new Set<string>();\n\n private _open = false;\n private _destroying = false;\n private _aborting = false;\n\n constructor({ initiator, localPeerId, remotePeerId }: TeleportParams) {\n invariant(typeof initiator === 'boolean');\n invariant(PublicKey.isPublicKey(localPeerId));\n invariant(PublicKey.isPublicKey(remotePeerId));\n this.initiator = initiator;\n this.localPeerId = localPeerId;\n this.remotePeerId = remotePeerId;\n\n this._control = new ControlExtension(\n {\n heartbeatInterval: CONTROL_HEARTBEAT_INTERVAL,\n heartbeatTimeout: CONTROL_HEARTBEAT_TIMEOUT,\n onTimeout: () => {\n if (this._destroying || this._aborting) {\n return;\n }\n log.info('abort teleport due to onTimeout in ControlExtension');\n this.abort(new TimeoutError('control extension')).catch((err) => log.catch(err));\n },\n },\n this.localPeerId,\n this.remotePeerId,\n );\n\n this._control.onExtensionRegistered.set(async (name) => {\n log('remote extension', { name });\n invariant(!this._remoteExtensions.has(name), 'Remote extension already exists');\n this._remoteExtensions.add(name);\n\n if (this._extensions.has(name)) {\n try {\n await this._openExtension(name);\n } catch (err: any) {\n await this.destroy(err);\n }\n }\n });\n\n {\n // Destroy Teleport when the stream is closed.\n this._muxer.stream.on('close', async () => {\n if (this._destroying || this._aborting) {\n log('destroy teleport due to muxer stream close, skipping due to already destroying/aborting');\n return;\n }\n await this.destroy();\n });\n\n this._muxer.stream.on('error', async (err) => {\n await this.destroy(err);\n });\n }\n\n // let last: MuxerStats | undefined;\n this._muxer.statsUpdated.on((stats) => {\n log.trace('dxos.mesh.teleport.stats', {\n localPeerId,\n remotePeerId,\n bytesSent: stats.bytesSent,\n bytesSentRate: stats.bytesSentRate,\n bytesReceived: stats.bytesReceived,\n bytesReceivedRate: stats.bytesReceivedRate,\n channels: stats.channels,\n });\n\n // last = stats;\n });\n }\n\n @logInfo\n get sessionIdString(): string {\n return this._sessionId ? this._sessionId.truncate() : 'none';\n }\n\n get stream(): Duplex {\n return this._muxer.stream;\n }\n\n get stats(): Event<MuxerStats> {\n return this._muxer.statsUpdated;\n }\n\n /**\n * Blocks until the handshake is complete.\n */\n\n async open(sessionId: PublicKey = PublicKey.random()) {\n // invariant(sessionId);\n this._sessionId = sessionId;\n log('open');\n this._setExtension('dxos.mesh.teleport.control', this._control);\n await this._openExtension('dxos.mesh.teleport.control');\n this._open = true;\n this._muxer.setSessionId(sessionId);\n }\n\n async close(err?: Error) {\n // TODO(dmaretskyi): Try soft close.\n await this.destroy(err);\n }\n\n @synchronized\n async abort(err?: Error) {\n if (this._aborting || this._destroying) {\n return;\n }\n this._aborting = true;\n\n if (this._ctx.disposed) {\n return;\n }\n\n await this._ctx.dispose();\n\n for (const extension of this._extensions.values()) {\n try {\n await extension.onAbort(err);\n } catch (err: any) {\n log.catch(err);\n }\n }\n\n await this._muxer.destroy(err);\n }\n\n @synchronized\n // TODO(nf): analyze callers and consider abort instead\n async destroy(err?: Error) {\n if (this._destroying || this._aborting) {\n return;\n }\n this._destroying = true;\n if (this._ctx.disposed) {\n return;\n }\n\n await this._ctx.dispose();\n\n for (const extension of this._extensions.values()) {\n try {\n await extension.onClose(err);\n } catch (err: any) {\n log.catch(err);\n }\n }\n\n await this._muxer.close();\n }\n\n addExtension(name: string, extension: TeleportExtension) {\n if (!this._open) {\n throw new Error('Not open');\n }\n\n log('addExtension', { name });\n this._setExtension(name, extension);\n\n // Perform the registration in a separate tick as this might block while the remote side is opening the extension.\n scheduleTask(this._ctx, async () => {\n try {\n await this._control.registerExtension(name);\n } catch (err) {\n if (err instanceof RpcClosedError) {\n return;\n }\n throw err;\n }\n });\n\n if (this._remoteExtensions.has(name)) {\n // Open the extension in a separate tick.\n scheduleTask(this._ctx, async () => {\n await this._openExtension(name);\n });\n }\n }\n\n private _setExtension(extensionName: string, extension: TeleportExtension) {\n invariant(!extensionName.includes('/'), 'Invalid extension name');\n invariant(!this._extensions.has(extensionName), 'Extension already exists');\n this._extensions.set(extensionName, extension);\n }\n\n private async _openExtension(extensionName: string) {\n log('open extension', { extensionName });\n const extension = this._extensions.get(extensionName) ?? failUndefined();\n\n const context: ExtensionContext = {\n initiator: this.initiator,\n localPeerId: this.localPeerId,\n remotePeerId: this.remotePeerId,\n createPort: async (channelName: string, opts?: CreateChannelOpts) => {\n invariant(!channelName.includes('/'), 'Invalid channel name');\n return this._muxer.createPort(`${extensionName}/${channelName}`, opts);\n },\n createStream: async (channelName: string, opts?: CreateChannelOpts) => {\n invariant(!channelName.includes('/'), 'Invalid channel name');\n return this._muxer.createStream(`${extensionName}/${channelName}`, opts);\n },\n close: (err) => {\n void runInContextAsync(this._ctx, async () => {\n await this.close(err);\n });\n },\n };\n\n await extension.onOpen(context);\n log('extension opened', { extensionName });\n }\n}\n\nexport type ExtensionContext = {\n /**\n * One of the peers will be designated an initiator.\n */\n initiator: boolean;\n localPeerId: PublicKey;\n remotePeerId: PublicKey;\n createStream(tag: string, opts?: CreateChannelOpts): Promise<Duplex>;\n createPort(tag: string, opts?: CreateChannelOpts): Promise<RpcPort>;\n close(err?: Error): void;\n};\n\nexport interface TeleportExtension {\n onOpen(context: ExtensionContext): Promise<void>;\n onClose(err?: Error): Promise<void>;\n onAbort(err?: Error): Promise<void>;\n}\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { asyncTimeout, scheduleTaskInterval, TimeoutError as AsyncTimeoutError } from '@dxos/async';\nimport { Context } from '@dxos/context';\nimport { type PublicKey } from '@dxos/keys';\nimport { log } from '@dxos/log';\nimport { schema, RpcClosedError } from '@dxos/protocols';\nimport { type ControlService } from '@dxos/protocols/proto/dxos/mesh/teleport/control';\nimport { createProtoRpcPeer, type ProtoRpcPeer } from '@dxos/rpc';\nimport { Callback } from '@dxos/util';\n\nimport { type ExtensionContext, type TeleportExtension } from './teleport';\n\nconst HEARTBEAT_RTT_WARN_THRESH = 10_000;\n\ntype ControlRpcBundle = {\n Control: ControlService;\n};\n\ntype ControlExtensionOpts = {\n heartbeatInterval: number;\n heartbeatTimeout: number;\n onTimeout: (err: any) => void;\n};\n\nexport class ControlExtension implements TeleportExtension {\n private readonly _ctx = new Context({\n onError: (err) => {\n this._extensionContext.close(err);\n },\n });\n\n public readonly onExtensionRegistered = new Callback<(extensionName: string) => void>();\n\n private _extensionContext!: ExtensionContext;\n private _rpc!: ProtoRpcPeer<{ Control: ControlService }>;\n\n constructor(\n private readonly opts: ControlExtensionOpts,\n private readonly localPeerId: PublicKey,\n private readonly remotePeerId: PublicKey,\n ) {}\n\n async registerExtension(name: string) {\n await this._rpc.rpc.Control.registerExtension({ name });\n }\n\n async onOpen(extensionContext: ExtensionContext): Promise<void> {\n this._extensionContext = extensionContext;\n\n this._rpc = createProtoRpcPeer<ControlRpcBundle, ControlRpcBundle>({\n requested: {\n Control: schema.getService('dxos.mesh.teleport.control.ControlService'),\n },\n exposed: {\n Control: schema.getService('dxos.mesh.teleport.control.ControlService'),\n },\n handlers: {\n Control: {\n registerExtension: async (request) => {\n this.onExtensionRegistered.call(request.name);\n },\n heartbeat: async (request) => {\n log('received heartbeat request', {\n ts: request.requestTimestamp,\n localPeerId: this.localPeerId.truncate(),\n remotePeerId: this.remotePeerId.truncate(),\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 log('heartbeat RTT', {\n rtt: now - resp.requestTimestamp.getTime(),\n localPeerId: this.localPeerId.truncate(),\n remotePeerId: this.remotePeerId.truncate(),\n });\n }\n }\n } catch (err: any) {\n const now = Date.now();\n if (err instanceof RpcClosedError) {\n log('ignoring RpcClosedError in heartbeat');\n return;\n }\n if (err instanceof AsyncTimeoutError) {\n log('timeout waiting for heartbeat response', { err, delay: now - reqTS.getTime() });\n this.opts.onTimeout(err);\n } else {\n log.info('other error waiting for heartbeat response', { err, delay: now - reqTS.getTime() });\n this.opts.onTimeout(err);\n }\n }\n },\n this.opts.heartbeatInterval,\n );\n }\n\n async onClose(err?: Error): Promise<void> {\n await this._ctx.dispose();\n await this._rpc.close();\n }\n\n async onAbort(err?: Error | undefined): Promise<void> {\n await this._ctx.dispose();\n await this._rpc.abort();\n }\n}\n", "//\n// Copyright 2022 DXOS.org\n//\n\nimport { Duplex } from 'node:stream';\n\nimport { Event } from '@dxos/async';\nimport { invariant } from '@dxos/invariant';\nimport { log } from '@dxos/log';\n\nimport { type RpcPort } from './rpc-port';\n\nconst FRAME_LENGTH_SIZE = 2;\n\n/**\n * Converts a stream of binary messages into a framed RpcPort.\n * Buffers are written prefixed by their length encoded as a varint.\n */\nexport class Framer {\n // private readonly _tagBuffer = Buffer.alloc(4)\n private _messageCb?: (msg: Uint8Array) => void = undefined;\n private _subscribeCb?: () => void = undefined;\n private _buffer?: Buffer = undefined; // The rest of the bytes from the previous write call.\n private _sendCallbacks: (() => void)[] = [];\n\n private _bytesSent = 0;\n private _bytesReceived = 0;\n\n private _writable = true;\n\n readonly drain = new Event();\n\n // TODO(egorgripasov): Consider using a Transform stream if it provides better backpressure handling.\n private readonly _stream = new Duplex({\n objectMode: false,\n read: () => {\n this._processResponseQueue();\n },\n write: (chunk, encoding, callback) => {\n invariant(!this._subscribeCb, 'Internal Framer bug. Concurrent writes detected.');\n\n this._bytesReceived += chunk.length;\n\n if (this._buffer && this._buffer.length > 0) {\n this._buffer = Buffer.concat([this._buffer, chunk]);\n } else {\n this._buffer = chunk;\n }\n\n if (this._messageCb) {\n this._popFrames();\n callback();\n } else {\n this._subscribeCb = () => {\n // Schedule the processing of the chunk after the peer subscribes to the messages.\n this._popFrames();\n this._subscribeCb = undefined;\n callback();\n };\n }\n },\n });\n\n public readonly port: RpcPort = {\n send: (message) => {\n // log('write', { len: message.length, frame: Buffer.from(message).toString('hex') })\n return new Promise<void>((resolve) => {\n const frame = encodeFrame(message);\n this._bytesSent += frame.length;\n this._writable = this._stream.push(frame);\n if (!this._writable) {\n this._sendCallbacks.push(resolve);\n } else {\n resolve();\n }\n });\n },\n subscribe: (callback) => {\n invariant(!this._messageCb, 'Rpc port already has a message listener.');\n this._messageCb = callback;\n this._subscribeCb?.();\n return () => {\n this._messageCb = undefined;\n };\n },\n };\n\n get stream(): Duplex {\n return this._stream;\n }\n\n get bytesSent() {\n return this._bytesSent;\n }\n\n get bytesReceived() {\n return this._bytesReceived;\n }\n\n get writable() {\n return this._writable;\n }\n\n private _processResponseQueue() {\n const responseQueue = this._sendCallbacks;\n this._sendCallbacks = [];\n this._writable = true;\n this.drain.emit();\n responseQueue.forEach((cb) => cb());\n }\n\n /**\n * Attempts to pop frames from the buffer and call the message callback.\n */\n private _popFrames() {\n let offset = 0;\n while (offset < this._buffer!.length) {\n const frame = decodeFrame(this._buffer!, offset);\n\n if (!frame) {\n break; // Couldn't read frame but there are still bytes left in the buffer.\n }\n offset += frame.bytesConsumed;\n // TODO(dmaretskyi): Possible bug if the peer unsubscribes while we're reading frames.\n // log('read', { len: frame.payload.length, frame: Buffer.from(frame.payload).toString('hex') })\n this._messageCb!(frame.payload);\n }\n\n if (offset < this._buffer!.length) {\n // Save the rest of the bytes for the next write call.\n this._buffer = this._buffer!.subarray(offset);\n } else {\n this._buffer = undefined;\n }\n }\n\n destroy() {\n // TODO(dmaretskyi): Call stream.end() instead?\n if (this._stream.readableLength > 0) {\n log.info('framer destroyed while there are still read bytes in the buffer.');\n }\n if (this._stream.writableLength > 0) {\n log.warn('framer destroyed while there are still write bytes in the buffer.');\n }\n this._stream.destroy();\n }\n}\n\n/**\n * Attempts to read a frame from the input buffer.\n */\nexport const decodeFrame = (buffer: Buffer, offset: number): { payload: Buffer; bytesConsumed: number } | undefined => {\n if (buffer.length < offset + FRAME_LENGTH_SIZE) {\n // Not enough bytes to read the frame length.\n return undefined;\n }\n\n const frameLength = buffer.readUInt16BE(offset);\n const bytesConsumed = FRAME_LENGTH_SIZE + frameLength;\n\n if (buffer.length < offset + bytesConsumed) {\n // Not enough bytes to read the frame.\n return undefined;\n }\n\n const payload = buffer.subarray(offset + FRAME_LENGTH_SIZE, offset + bytesConsumed);\n\n return {\n payload,\n bytesConsumed,\n };\n};\n\nexport const encodeFrame = (payload: Uint8Array): Buffer => {\n const frame = Buffer.allocUnsafe(FRAME_LENGTH_SIZE + payload.length);\n frame.writeUInt16BE(payload.length, 0);\n frame.set(payload, FRAME_LENGTH_SIZE);\n return frame;\n};\n", "//\n// Copyright 2022 DXOS.org\n//\n\nimport { Duplex } from 'node:stream';\n\nimport { scheduleTaskInterval, Event, Trigger, asyncTimeout } from '@dxos/async';\nimport { Context } from '@dxos/context';\nimport { failUndefined } from '@dxos/debug';\nimport { invariant } from '@dxos/invariant';\nimport { type PublicKey } from '@dxos/keys';\nimport { log, logInfo } from '@dxos/log';\nimport { schema, TimeoutError } from '@dxos/protocols';\nimport { type ConnectionInfo } from '@dxos/protocols/proto/dxos/devtools/swarm';\nimport { Command } from '@dxos/protocols/proto/dxos/mesh/muxer';\n\nimport { Balancer } from './balancer';\nimport { type RpcPort } from './rpc-port';\n\nconst Command = schema.getCodecForType('dxos.mesh.muxer.Command');\n\nconst DEFAULT_SEND_COMMAND_TIMEOUT = 60_000;\nconst DESTROY_COMMAND_SEND_TIMEOUT = 5_000;\n\nexport type CleanupCb = void | (() => void);\n\nexport type CreateChannelOpts = {\n /**\n * MIME type of the wire content.\n *\n * Examples:\n * - application/octet-stream\n * - application/x-protobuf; messageType=\"dxos.rpc.Message\"\n */\n contentType?: string;\n};\n\nexport type MuxerStats = {\n timestamp: number;\n channels: ConnectionInfo.StreamStats[];\n bytesSent: number;\n bytesReceived: number;\n bytesSentRate?: number;\n bytesReceivedRate?: number;\n readBufferSize?: number;\n writeBufferSize?: number;\n};\n\nconst STATS_INTERVAL = 1_000;\nconst MAX_SAFE_FRAME_SIZE = 1_000_000;\nconst SYSTEM_CHANNEL_ID = 0;\nconst GRACEFUL_CLOSE_TIMEOUT = 3_000;\n\ntype Channel = {\n /**\n * Our local channel ID.\n * Incoming Data commands will have this ID.\n */\n id: number;\n tag: string;\n\n /**\n * Remote id is set when we receive an OpenChannel command.\n * The originating Data commands should carry this id.\n */\n remoteId: null | number;\n\n contentType?: string;\n\n /**\n * Send buffer.\n */\n buffer: Uint8Array[];\n\n /**\n * Set when we initialize a NodeJS stream or an RPC port consuming the channel.\n */\n push: null | ((data: Uint8Array) => void);\n\n destroy: null | ((err?: Error) => void);\n\n stats: {\n bytesSent: number;\n bytesReceived: number;\n };\n};\n\ntype CreateChannelInternalParams = {\n tag: string;\n contentType?: string;\n};\n\n/**\n * Channel based multiplexer.\n *\n * Can be used to open a number of channels represented by streams or RPC ports.\n * Performs framing for RPC ports.\n * Will buffer data until the remote peer opens the channel.\n *\n * The API will not advertise channels that as they are opened by the remote peer.\n * A higher level API (could be build on top of this muxer) for channel discovery is required.\n */\nexport class Muxer {\n private readonly _balancer = new Balancer(SYSTEM_CHANNEL_ID);\n private readonly _channelsByLocalId = new Map<number, Channel>();\n private readonly _channelsByTag = new Map<string, Channel>();\n private readonly _ctx = new Context();\n private _sessionId?: PublicKey;\n\n private _nextId = 1;\n\n private _closing = false;\n private _destroying = false;\n private _disposed = false;\n\n private _lastStats?: MuxerStats = undefined;\n private readonly _lastChannelStats = new Map<number, Channel['stats']>();\n\n public afterClosed = new Event<Error | undefined>();\n public statsUpdated = new Event<MuxerStats>();\n\n public readonly stream = this._balancer.stream;\n\n constructor() {\n // Add a channel for control messages.\n this._balancer.incomingData.on(async (msg) => {\n await this._handleCommand(Command.decode(msg));\n });\n }\n\n setSessionId(sessionId: PublicKey) {\n this._sessionId = sessionId;\n }\n\n @logInfo\n get sessionIdString(): string {\n return this._sessionId ? this._sessionId.truncate() : 'none';\n }\n\n /**\n * Creates a duplex Node.js-style stream.\n * The remote peer is expected to call `createStream` with the same tag.\n * The stream is immediately readable and writable.\n * NOTE: The data will be buffered until the stream is opened remotely with the same tag (may cause a memory leak).\n */\n async createStream(tag: string, opts: CreateChannelOpts = {}): Promise<Duplex> {\n const channel = this._getOrCreateStream({\n tag,\n contentType: opts.contentType,\n });\n invariant(!channel.push, `Channel already open: ${tag}`);\n\n const stream = new Duplex({\n write: (data, encoding, callback) => {\n this._sendData(channel, data)\n .then(() => callback())\n .catch(callback);\n // TODO(dmaretskyi): Should we error if sending data has errored?\n },\n read: () => {}, // No-op. We will push data when we receive it.\n });\n\n channel.push = (data) => {\n channel.stats.bytesReceived += data.length;\n stream.push(data);\n };\n channel.destroy = (err) => {\n // TODO(dmaretskyi): Call stream.end() instead?\n if (err) {\n if (stream.listeners('error').length > 0) {\n stream.destroy(err);\n } else {\n stream.destroy();\n }\n } else {\n stream.destroy();\n }\n };\n\n // NOTE: Make sure channel.push is set before sending the command.\n try {\n await this._sendCommand(\n {\n openChannel: {\n id: channel.id,\n tag: channel.tag,\n contentType: channel.contentType,\n },\n },\n SYSTEM_CHANNEL_ID,\n );\n } catch (err: any) {\n this._destroyChannel(channel, err);\n throw err;\n }\n\n return stream;\n }\n\n /**\n * Creates an RPC port.\n * The remote peer is expected to call `createPort` with the same tag.\n * The port is immediately usable.\n * NOTE: The data will be buffered until the stream is opened remotely with the same tag (may cause a memory leak).\n */\n async createPort(tag: string, opts: CreateChannelOpts = {}): Promise<RpcPort> {\n const channel = this._getOrCreateStream({\n tag,\n contentType: opts.contentType,\n });\n invariant(!channel.push, `Channel already open: ${tag}`);\n\n // We need to buffer incoming data until the port is subscribed to.\n let inboundBuffer: Uint8Array[] = [];\n let callback: ((data: Uint8Array) => void) | undefined;\n\n channel.push = (data) => {\n channel.stats.bytesReceived += data.length;\n if (callback) {\n callback(data);\n } else {\n inboundBuffer.push(data);\n }\n };\n\n const port: RpcPort = {\n send: async (data: Uint8Array, timeout?: number) => {\n await this._sendData(channel, data, timeout);\n // TODO(dmaretskyi): Debugging.\n // appendFileSync('log.json', JSON.stringify(schema.getCodecForType('dxos.rpc.RpcMessage').decode(data), null, 2) + '\\n')\n },\n subscribe: (cb: (data: Uint8Array) => void) => {\n invariant(!callback, 'Only one subscriber is allowed');\n callback = cb;\n for (const data of inboundBuffer) {\n cb(data);\n }\n inboundBuffer = [];\n },\n };\n\n // NOTE: Make sure channel.push is set before sending the command.\n try {\n await this._sendCommand(\n {\n openChannel: {\n id: channel.id,\n tag: channel.tag,\n contentType: channel.contentType,\n },\n },\n SYSTEM_CHANNEL_ID,\n );\n } catch (err: any) {\n this._destroyChannel(channel, err);\n throw err;\n }\n\n return port;\n }\n\n // initiate graceful close\n\n async close(err?: Error) {\n if (this._destroying) {\n log('already destroying, ignoring graceful close request');\n return;\n }\n if (this._closing) {\n log('already closing, ignoring graceful close request');\n return;\n }\n\n this._closing = true;\n\n await this._sendCommand(\n {\n close: {\n error: err?.message,\n },\n },\n SYSTEM_CHANNEL_ID,\n DESTROY_COMMAND_SEND_TIMEOUT,\n ).catch(async (err: any) => {\n log('error sending close command', { err });\n\n await this._dispose(err);\n });\n\n // don't return until close is complete or timeout\n await asyncTimeout(this._dispose(err), GRACEFUL_CLOSE_TIMEOUT, new TimeoutError('gracefully closing muxer'));\n }\n\n // force close without confirmation\n\n async destroy(err?: Error) {\n if (this._destroying) {\n log('already destroying, ignoring destroy request');\n return;\n }\n this._destroying = true;\n void this._ctx.dispose();\n if (this._closing) {\n log('destroy cancelling graceful close');\n this._closing = false;\n } else {\n // as a courtesy to the peer, send destroy command but ignore errors sending\n\n await this._sendCommand(\n {\n close: {\n error: err?.message,\n },\n },\n SYSTEM_CHANNEL_ID,\n ).catch(async (err: any) => {\n log('error sending courtesy close command', { err });\n });\n }\n\n this._dispose(err).catch((err) => {\n log('error disposing after destroy', { err });\n });\n }\n\n // complete the termination, graceful or otherwise\n\n async _dispose(err?: Error) {\n if (this._disposed) {\n log('already destroyed, ignoring dispose request');\n return;\n }\n\n void this._ctx.dispose();\n\n await this._balancer.destroy();\n\n for (const channel of this._channelsByTag.values()) {\n channel.destroy?.(err);\n }\n this._disposed = true;\n await this._emitStats();\n\n this.afterClosed.emit(err);\n\n // Make it easy for GC.\n this._channelsByLocalId.clear();\n this._channelsByTag.clear();\n }\n\n private async _handleCommand(cmd: Command) {\n if (this._disposed) {\n log.warn('Received command after disposed', { cmd });\n return;\n }\n\n if (cmd.close) {\n if (!this._closing) {\n log('received peer close, initiating my own graceful close');\n await this.close(new Error('received peer close'));\n } else {\n log('received close from peer, already closing');\n }\n\n return;\n }\n\n if (cmd.openChannel) {\n const channel = this._getOrCreateStream({\n tag: cmd.openChannel.tag,\n contentType: cmd.openChannel.contentType,\n });\n channel.remoteId = cmd.openChannel.id;\n\n // Flush any buffered data.\n for (const data of channel.buffer) {\n await this._sendCommand(\n {\n data: {\n channelId: channel.remoteId!,\n data,\n },\n },\n channel.id,\n );\n }\n channel.buffer = [];\n } else if (cmd.data) {\n const stream = this._channelsByLocalId.get(cmd.data.channelId) ?? failUndefined();\n if (!stream.push) {\n log.warn('Received data for channel before it was opened', { tag: stream.tag });\n return;\n }\n stream.push(cmd.data.data);\n }\n }\n\n private async _sendCommand(cmd: Command, channelId = -1, timeout = DEFAULT_SEND_COMMAND_TIMEOUT) {\n if (this._disposed) {\n log.info('ignoring sendCommand after disposed', { cmd });\n return;\n }\n try {\n const trigger = new Trigger<void>();\n this._balancer.pushData(Command.encode(cmd), trigger, channelId);\n await trigger.wait({ timeout });\n } catch (err: any) {\n await this.destroy(err);\n }\n }\n\n private _getOrCreateStream(params: CreateChannelInternalParams): Channel {\n if (this._channelsByTag.size === 0) {\n scheduleTaskInterval(this._ctx, async () => this._emitStats(), STATS_INTERVAL);\n }\n let channel = this._channelsByTag.get(params.tag);\n if (!channel) {\n channel = {\n id: this._nextId++,\n remoteId: null,\n tag: params.tag,\n contentType: params.contentType,\n buffer: [],\n push: null,\n destroy: null,\n stats: {\n bytesSent: 0,\n bytesReceived: 0,\n },\n };\n this._channelsByTag.set(channel.tag, channel);\n this._channelsByLocalId.set(channel.id, channel);\n this._balancer.addChannel(channel.id);\n }\n\n return channel;\n }\n\n private async _sendData(channel: Channel, data: Uint8Array, timeout?: number): Promise<void> {\n if (data.length > MAX_SAFE_FRAME_SIZE) {\n log.warn('frame size exceeds maximum safe value', { size: data.length, threshold: MAX_SAFE_FRAME_SIZE });\n }\n\n channel.stats.bytesSent += data.length;\n if (channel.remoteId === null) {\n // Remote side has not opened the channel yet.\n channel.buffer.push(data);\n return;\n }\n await this._sendCommand(\n {\n data: {\n channelId: channel.remoteId,\n data,\n },\n },\n channel.id,\n timeout,\n );\n }\n\n private _destroyChannel(channel: Channel, err?: Error) {\n if (channel.destroy) {\n channel.destroy(err);\n }\n\n this._channelsByLocalId.delete(channel.id);\n this._channelsByTag.delete(channel.tag);\n }\n\n private async _emitStats() {\n if (this._disposed || this._destroying) {\n if (!this._lastStats) {\n return;\n }\n\n // zero out counting stats to not skew metrics.\n const lastStats = this._lastStats;\n this._lastStats = undefined;\n\n lastStats.readBufferSize = 0;\n lastStats.writeBufferSize = 0;\n for (const c of lastStats.channels) {\n c.writeBufferSize = 0;\n }\n this.statsUpdated.emit(lastStats);\n\n this._lastChannelStats.clear();\n return;\n }\n\n const bytesSent = this._balancer.bytesSent;\n const bytesReceived = this._balancer.bytesReceived;\n\n const now = Date.now();\n const interval = this._lastStats ? (now - this._lastStats.timestamp) / 1_000 : 0;\n const calculateThroughput = (current: Channel['stats'], last: Channel['stats'] | undefined) =>\n last\n ? {\n bytesSentRate: interval ? (current.bytesSent - last.bytesSent) / interval : undefined,\n bytesReceivedRate: interval ? (current.bytesReceived - last.bytesReceived) / interval : undefined,\n }\n : {};\n\n this._lastStats = {\n timestamp: now,\n channels: Array.from(this._channelsByTag.values()).map((channel) => {\n const stats: ConnectionInfo.StreamStats = {\n id: channel.id,\n tag: channel.tag,\n contentType: channel.contentType,\n writeBufferSize: channel.buffer.length,\n bytesSent: channel.stats.bytesSent,\n bytesReceived: channel.stats.bytesReceived,\n ...calculateThroughput(channel.stats, this._lastChannelStats.get(channel.id)),\n };\n\n this._lastChannelStats.set(channel.id, stats);\n return stats;\n }),\n bytesSent,\n bytesReceived,\n ...calculateThroughput({ bytesSent, bytesReceived }, this._lastStats),\n readBufferSize: this._balancer.stream.readableLength,\n writeBufferSize: this._balancer.stream.writableLength,\n };\n\n this.statsUpdated.emit(this._lastStats);\n }\n}\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport * as varint from 'varint';\n\nimport { type Trigger, Event } from '@dxos/async';\nimport { invariant } from '@dxos/invariant';\nimport { log } from '@dxos/log';\n\nimport { Framer } from './framer';\n\nconst MAX_CHUNK_SIZE = 8192;\n\ntype Chunk = {\n chunk: Uint8Array;\n channelId: number;\n dataLength?: number;\n};\n\ntype ChunkEnvelope = {\n msg: Buffer;\n trigger?: Trigger;\n};\n\ntype ChannelBuffer = {\n buffer: Buffer;\n msgLength: number;\n};\n\n/**\n * Load balancer for handling asynchronous calls from multiple channels.\n *\n * Manages a queue of calls from different channels and ensures that the calls\n * are processed in a balanced manner in a round-robin fashion.\n */\nexport class Balancer {\n private _lastCallerIndex = 0;\n private _channels: number[] = [];\n\n private readonly _framer = new Framer();\n // TODO(egorgripasov): Will cause a memory leak if channels do not appreciate the backpressure.\n private readonly _sendBuffers: Map<number, ChunkEnvelope[]> = new Map();\n private readonly _receiveBuffers = new Map<number, ChannelBuffer>();\n\n private _sending = false;\n public incomingData = new Event<Uint8Array>();\n public readonly stream = this._framer.stream;\n\n constructor(private readonly _sysChannelId: number) {\n this._channels.push(_sysChannelId);\n\n // Handle incoming messages.\n this._framer.port.subscribe(this._processIncomingMessage.bind(this));\n }\n\n get bytesSent() {\n return this._framer.bytesSent;\n }\n\n get bytesReceived() {\n return this._framer.bytesReceived;\n }\n\n get buffersCount() {\n return this._sendBuffers.size;\n }\n\n addChannel(channel: number) {\n this._channels.push(channel);\n }\n\n pushData(data: Uint8Array, trigger: Trigger, channelId: number) {\n this._enqueueChunk(data, trigger, channelId);\n this._sendChunks().catch((err) => log.catch(err));\n }\n\n destroy() {\n if (this._sendBuffers.size !== 0) {\n log.info('destroying balancer with pending calls');\n }\n this._sendBuffers.clear();\n this._framer.destroy();\n }\n\n private _processIncomingMessage(msg: Uint8Array) {\n const { channelId, dataLength, chunk } = decodeChunk(msg, (channelId) => !this._receiveBuffers.has(channelId));\n if (!this._receiveBuffers.has(channelId)) {\n if (chunk.length < dataLength!) {\n this._receiveBuffers.set(channelId, {\n buffer: Buffer.from(chunk),\n msgLength: dataLength!,\n });\n } else {\n this.incomingData.emit(chunk);\n }\n } else {\n const channelBuffer = this._receiveBuffers.get(channelId)!;\n channelBuffer.buffer = Buffer.concat([channelBuffer.buffer, chunk]);\n if (channelBuffer.buffer.length < channelBuffer.msgLength) {\n return;\n }\n const msg = channelBuffer.buffer;\n this._receiveBuffers.delete(channelId);\n this.incomingData.emit(msg);\n }\n }\n\n private _getNextCallerId() {\n if (this._sendBuffers.has(this._sysChannelId)) {\n return this._sysChannelId;\n }\n\n const index = this._lastCallerIndex;\n this._lastCallerIndex = (this._lastCallerIndex + 1) % this._channels.length;\n\n return this._channels[index];\n }\n\n private _enqueueChunk(data: Uint8Array, trigger: Trigger, channelId: number) {\n if (!this._channels.includes(channelId)) {\n throw new Error(`Unknown channel ${channelId}`);\n }\n\n if (!this._sendBuffers.has(channelId)) {\n this._sendBuffers.set(channelId, []);\n }\n\n const sendBuffer = this._sendBuffers.get(channelId)!;\n\n const chunks = [];\n for (let idx = 0; idx < data.length; idx += MAX_CHUNK_SIZE) {\n chunks.push(data.subarray(idx, idx + MAX_CHUNK_SIZE));\n }\n\n chunks.forEach((chunk, index) => {\n const msg = encodeChunk({\n chunk,\n channelId,\n dataLength: index === 0 ? data.length : undefined,\n });\n sendBuffer.push({ msg, trigger: index === chunks.length - 1 ? trigger : undefined });\n });\n }\n\n // get the next chunk or null if there are no chunks remaining\n\n private _getNextChunk(): ChunkEnvelope | null {\n let chunk;\n while (this._sendBuffers.size > 0) {\n const channelId = this._getNextCallerId();\n const sendBuffer = this._sendBuffers.get(channelId);\n if (!sendBuffer) {\n continue;\n }\n\n chunk = sendBuffer.shift();\n if (!chunk) {\n continue;\n }\n if (sendBuffer.length === 0) {\n this._sendBuffers.delete(channelId);\n }\n return chunk;\n }\n return null;\n }\n\n private async _sendChunks() {\n if (this._sending) {\n return;\n }\n this._sending = true;\n let chunk: ChunkEnvelope | null;\n chunk = this._getNextChunk();\n while (chunk) {\n // TODO(nf): determine whether this is needed since we await the chunk send\n if (!this._framer.writable) {\n log('PAUSE for drain');\n await this._framer.drain.waitForCount(1);\n log('RESUME for drain');\n }\n try {\n await this._framer.port.send(chunk.msg);\n chunk.trigger?.wake();\n } catch (err: any) {\n log('Error sending chunk', { err });\n chunk.trigger?.throw(err);\n }\n chunk = this._getNextChunk();\n }\n invariant(this._sendBuffers.size === 0, 'sendBuffers not empty');\n this._sending = false;\n }\n}\n\nexport const encodeChunk = ({ channelId, dataLength, chunk }: Chunk): Buffer => {\n const channelTagLength = varint.encodingLength(channelId);\n const dataLengthLength = dataLength ? varint.encodingLength(dataLength) : 0;\n const message = Buffer.allocUnsafe(channelTagLength + dataLengthLength + chunk.length);\n varint.encode(channelId, message);\n if (dataLength) {\n varint.encode(dataLength, message, channelTagLength);\n }\n message.set(chunk, channelTagLength + dataLengthLength);\n return message;\n};\n\nexport const decodeChunk = (data: Uint8Array, withLength: (channelId: number) => boolean): Chunk => {\n const channelId = varint.decode(data);\n let dataLength: number | undefined;\n let offset = varint.decode.bytes;\n\n if (withLength(channelId)) {\n dataLength = varint.decode(data, offset);\n offset += varint.decode.bytes;\n }\n\n const chunk = data.subarray(offset);\n\n return { channelId, dataLength, chunk };\n};\n", "//\n// Copyright 2022 DXOS.org\n//\n\nimport { asyncTimeout, Trigger } from '@dxos/async';\nimport { invariant } from '@dxos/invariant';\nimport { log } from '@dxos/log';\nimport { schema } from '@dxos/protocols';\nimport { type TestService } from '@dxos/protocols/proto/example/testing/rpc';\nimport { createProtoRpcPeer, type ProtoRpcPeer } from '@dxos/rpc';\n\nimport { type ExtensionContext, type TeleportExtension } from '../teleport';\n\ninterface TestExtensionCallbacks {\n onOpen?: () => Promise<void>;\n onClose?: () => Promise<void>;\n onAbort?: () => Promise<void>;\n}\n\nexport class TestExtension implements TeleportExtension {\n public readonly open = new Trigger();\n public readonly closed = new Trigger();\n public readonly aborted = new Trigger();\n public extensionContext: ExtensionContext | undefined;\n private _rpc!: ProtoRpcPeer<{ TestService: TestService }>;\n\n constructor(public readonly callbacks: TestExtensionCallbacks = {}) {}\n\n get remotePeerId() {\n return this.extensionContext?.remotePeerId;\n }\n\n async onOpen(context: ExtensionContext) {\n log('onOpen', { localPeerId: context.localPeerId, remotePeerId: context.remotePeerId });\n this.extensionContext = context;\n this._rpc = createProtoRpcPeer<{ TestService: TestService }, { TestService: TestService }>({\n port: await context.createPort('rpc', {\n contentType: 'application/x-protobuf; messageType=\"dxos.rpc.Message\"',\n }),\n requested: {\n TestService: schema.getService('example.testing.rpc.TestService'),\n },\n exposed: {\n TestService: schema.getService('example.testing.rpc.TestService'),\n },\n handlers: {\n TestService: {\n voidCall: async (request) => {\n // Ok.\n },\n testCall: async (request) => {\n return {\n data: request.data,\n };\n },\n },\n },\n timeout: 2000,\n });\n\n await this._rpc.open();\n await this.callbacks.onOpen?.();\n\n this.open.wake();\n }\n\n async onClose(err?: Error) {\n log('onClose', { err });\n await this.callbacks.onClose?.();\n this.closed.wake();\n await this._rpc?.close();\n }\n\n async onAbort(err?: Error) {\n log('onAbort', { err });\n await this.callbacks.onAbort?.();\n this.aborted.wake();\n await this._rpc?.abort();\n }\n\n async test(message = 'test') {\n await this.open.wait({ timeout: 1500 });\n const res = await asyncTimeout(this._rpc.rpc.TestService.testCall({ data: message }), 1500);\n invariant(res.data === message);\n }\n\n /**\n * Force-close the connection.\n */\n async closeConnection(err?: Error) {\n this.extensionContext?.close(err);\n }\n}\n", "//\n// Copyright 2022 DXOS.org\n//\n\nimport { randomBytes } from 'node:crypto';\nimport { type Duplex } from 'node:stream';\n\nimport { Trigger } from '@dxos/async';\nimport { invariant } from '@dxos/invariant';\nimport { log } from '@dxos/log';\nimport { schema } from '@dxos/protocols';\nimport { type TestServiceWithStreams } from '@dxos/protocols/proto/example/testing/rpc';\nimport { createProtoRpcPeer, type ProtoRpcPeer } from '@dxos/rpc';\n\nimport { type ExtensionContext, type TeleportExtension } from '../teleport';\n\ninterface TestExtensionWithStreamsCallbacks {\n onOpen?: () => Promise<void>;\n onClose?: () => Promise<void>;\n onAbort?: () => Promise<void>;\n}\n\nexport class TestExtensionWithStreams implements TeleportExtension {\n public readonly open = new Trigger();\n public readonly closed = new Trigger();\n public readonly aborted = new Trigger();\n private readonly _streams = new Map<string, TestStream>();\n\n public extensionContext: ExtensionContext | undefined;\n private _rpc!: ProtoRpcPeer<{ TestServiceWithStreams: TestServiceWithStreams }>;\n\n constructor(public readonly callbacks: TestExtensionWithStreamsCallbacks = {}) {}\n\n get remotePeerId() {\n return this.extensionContext?.remotePeerId;\n }\n\n private async _openStream(streamTag: string, interval = 5, chunkSize = 2048) {\n invariant(!this._streams.has(streamTag), `Stream already exists: ${streamTag}`);\n\n const networkStream = await this.extensionContext!.createStream(streamTag, {\n contentType: 'application/x-test-stream',\n });\n\n const streamEntry: TestStream = {\n networkStream,\n bytesSent: 0,\n bytesReceived: 0,\n sendErrors: 0,\n receiveErrors: 0,\n startTimestamp: Date.now(),\n };\n\n const pushChunk = () => {\n streamEntry.timer = setTimeout(() => {\n const chunk = randomBytes(chunkSize);\n\n if (\n !networkStream.write(chunk, 'binary', (err) => {\n if (!err) {\n streamEntry.bytesSent += chunk.length;\n } else {\n streamEntry.sendErrors += 1;\n }\n })\n ) {\n networkStream.once('drain', pushChunk);\n } else {\n process.nextTick(pushChunk);\n }\n }, interval);\n };\n\n pushChunk();\n\n this._streams.set(streamTag, streamEntry);\n\n networkStream.on('data', (data) => {\n streamEntry.bytesReceived += data.length;\n });\n\n networkStream.on('error', (err) => {\n streamEntry.receiveErrors += 1;\n });\n\n networkStream.on('close', () => {\n networkStream.removeAllListeners();\n });\n\n streamEntry.reportingTimer = setInterval(() => {\n const { bytesSent, bytesReceived, sendErrors, receiveErrors } = streamEntry;\n // log.info('stream stats', { streamTag, bytesSent, bytesReceived, sendErrors, receiveErrors });\n log.trace('dxos.test.stream-stats', {\n streamTag,\n bytesSent,\n bytesReceived,\n sendErrors,\n receiveErrors,\n from: this.extensionContext?.localPeerId,\n to: this.extensionContext?.remotePeerId,\n });\n }, 100);\n }\n\n private _closeStream(streamTag: string): Stats {\n invariant(this._streams.has(streamTag), `Stream does not exist: ${streamTag}`);\n\n const stream = this._streams.get(streamTag)!;\n\n clearTimeout(stream.timer);\n clearTimeout(stream.reportingTimer);\n\n const { bytesSent, bytesReceived, sendErrors, receiveErrors, startTimestamp } = stream;\n\n stream.networkStream.destroy();\n this._streams.delete(streamTag);\n\n return {\n bytesSent,\n bytesReceived,\n sendErrors,\n receiveErrors,\n runningTime: Date.now() - (startTimestamp ?? 0),\n };\n }\n\n async onOpen(context: ExtensionContext) {\n log('onOpen', { localPeerId: context.localPeerId, remotePeerId: context.remotePeerId });\n this.extensionContext = context;\n this._rpc = createProtoRpcPeer<\n { TestServiceWithStreams: TestServiceWithStreams },\n { TestServiceWithStreams: TestServiceWithStreams }\n >({\n port: await context.createPort('rpc', {\n contentType: 'application/x-protobuf; messageType=\"dxos.rpc.Message\"',\n }),\n requested: {\n TestServiceWithStreams: schema.getService('example.testing.rpc.TestServiceWithStreams'),\n },\n exposed: {\n TestServiceWithStreams: schema.getService('example.testing.rpc.TestServiceWithStreams'),\n },\n handlers: {\n TestServiceWithStreams: {\n requestTestStream: async (request) => {\n const { data: streamTag, streamLoadInterval, streamLoadChunkSize } = request;\n\n await this._openStream(streamTag, streamLoadInterval, streamLoadChunkSize);\n\n return {\n data: streamTag,\n };\n },\n closeTestStream: async (request) => {\n const streamTag = request.data;\n const { bytesSent, bytesReceived, sendErrors, receiveErrors, runningTime } = this._closeStream(streamTag);\n\n return {\n data: streamTag,\n bytesSent,\n bytesReceived,\n sendErrors,\n receiveErrors,\n runningTime,\n };\n },\n },\n },\n timeout: 2000,\n });\n\n await this._rpc.open();\n await this.callbacks.onOpen?.();\n\n this.open.wake();\n }\n\n async onClose(err?: Error) {\n log('onClose', { err });\n await this.callbacks.onClose?.();\n this.closed.wake();\n for (const [streamTag, stream] of Object.entries(this._streams)) {\n log('closing stream', { streamTag });\n clearTimeout(stream.interval);\n stream.networkStream.destroy();\n }\n await this._rpc?.close();\n }\n\n async onAbort(err?: Error) {\n log('onAbort', { err });\n await this.callbacks.onAbort?.();\n this.aborted.wake();\n await this._rpc?.abort();\n }\n\n async addNewStream(streamLoadInterval: number, streamLoadChunkSize: number, streamTag?: string): Promise<string> {\n await this.open.wait({ timeout: 1500 });\n if (!streamTag) {\n streamTag = `stream-${randomBytes(4).toString('hex')}`;\n }\n const { data } = await this._rpc.rpc.TestServiceWithStreams.requestTestStream({\n data: streamTag,\n streamLoadInterval,\n streamLoadChunkSize,\n });\n invariant(data === streamTag);\n\n await this._openStream(streamTag, streamLoadInterval, streamLoadChunkSize);\n return streamTag;\n }\n\n async closeStream(streamTag: string): Promise<TestStreamStats> {\n await this.open.wait({ timeout: 1500 });\n const { data, bytesSent, bytesReceived, sendErrors, receiveErrors, runningTime } =\n await this._rpc.rpc.TestServiceWithStreams.closeTestStream({\n data: streamTag,\n });\n\n invariant(data === streamTag);\n\n const local = this._closeStream(streamTag);\n\n return {\n streamTag,\n stats: {\n local,\n remote: {\n bytesSent,\n bytesReceived,\n sendErrors,\n receiveErrors,\n runningTime,\n },\n },\n };\n }\n\n /**\n * Force-close the connection.\n */\n async closeConnection(err?: Error) {\n this.extensionContext?.close(err);\n }\n}\n\ntype Stats = {\n bytesSent: number;\n bytesReceived: number;\n sendErrors: number;\n receiveErrors: number;\n runningTime: number;\n};\n\nexport type TestStreamStats = {\n streamTag: string;\n stats: {\n local: Stats;\n remote: Stats;\n };\n};\n\ntype TestStream = {\n networkStream: Duplex;\n bytesSent: number;\n bytesReceived: number;\n sendErrors: number;\n receiveErrors: number;\n timer?: NodeJS.Timer;\n startTimestamp?: number;\n reportingTimer?: NodeJS.Timer;\n};\n"],
5
- "mappings": "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",
5
+ "mappings": "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",
6
6
  "names": ["pipeline", "invariant", "PublicKey", "log", "runInContextAsync", "synchronized", "scheduleTask", "Context", "failUndefined", "invariant", "PublicKey", "log", "logInfo", "RpcClosedError", "TimeoutError", "asyncTimeout", "scheduleTaskInterval", "TimeoutError", "AsyncTimeoutError", "Context", "log", "schema", "RpcClosedError", "createProtoRpcPeer", "Callback", "HEARTBEAT_RTT_WARN_THRESH", "ControlExtension", "constructor", "opts", "localPeerId", "remotePeerId", "_ctx", "onError", "err", "_extensionContext", "close", "onExtensionRegistered", "registerExtension", "name", "_rpc", "rpc", "Control", "onOpen", "extensionContext", "requested", "getService", "exposed", "handlers", "request", "call", "heartbeat", "ts", "requestTimestamp", "truncate", "port", "createPort", "contentType", "timeout", "heartbeatTimeout", "open", "reqTS", "Date", "resp", "now", "getTime", "warn", "rtt", "delay", "onTimeout", "info", "heartbeatInterval", "onClose", "dispose", "onAbort", "abort", "Duplex", "Event", "invariant", "log", "FRAME_LENGTH_SIZE", "Framer", "_messageCb", "undefined", "_subscribeCb", "_buffer", "_sendCallbacks", "_bytesSent", "_bytesReceived", "_writable", "drain", "_stream", "objectMode", "read", "_processResponseQueue", "write", "chunk", "encoding", "callback", "length", "Buffer", "concat", "_popFrames", "port", "send", "message", "Promise", "resolve", "frame", "encodeFrame", "push", "subscribe", "stream", "bytesSent", "bytesReceived", "writable", "responseQueue", "emit", "forEach", "cb", "offset", "decodeFrame", "bytesConsumed", "payload", "subarray", "destroy", "readableLength", "info", "writableLength", "warn", "buffer", "frameLength", "readUInt16BE", "allocUnsafe", "writeUInt16BE", "set", "Duplex", "scheduleTaskInterval", "Event", "Trigger", "asyncTimeout", "Context", "failUndefined", "invariant", "log", "logInfo", "schema", "TimeoutError", "varint", "Event", "invariant", "log", "MAX_CHUNK_SIZE", "Balancer", "constructor", "_sysChannelId", "_lastCallerIndex", "_channels", "_framer", "Framer", "_sendBuffers", "Map", "_receiveBuffers", "_sending", "incomingData", "Event", "stream", "push", "port", "subscribe", "_processIncomingMessage", "bind", "bytesSent", "bytesReceived", "buffersCount", "size", "addChannel", "channel", "pushData", "data", "trigger", "channelId", "_enqueueChunk", "_sendChunks", "catch", "err", "log", "destroy", "info", "clear", "msg", "dataLength", "chunk", "decodeChunk", "has", "length", "set", "buffer", "Buffer", "from", "msgLength", "emit", "channelBuffer", "get", "concat", "delete", "_getNextCallerId", "index", "includes", "Error", "sendBuffer", "chunks", "idx", "subarray", "forEach", "encodeChunk", "undefined", "_getNextChunk", "shift", "writable", "drain", "waitForCount", "send", "wake", "throw", "invariant", "channelTagLength", "encodingLength", "dataLengthLength", "message", "allocUnsafe", "varint", "encode", "withLength", "decode", "offset", "bytes", "Command", "schema", "getCodecForType", "DEFAULT_SEND_COMMAND_TIMEOUT", "DESTROY_COMMAND_SEND_TIMEOUT", "STATS_INTERVAL", "MAX_SAFE_FRAME_SIZE", "SYSTEM_CHANNEL_ID", "GRACEFUL_CLOSE_TIMEOUT", "Muxer", "constructor", "_balancer", "Balancer", "_channelsByLocalId", "Map", "_channelsByTag", "_ctx", "Context", "_nextId", "_closing", "_destroying", "_disposed", "_lastStats", "undefined", "_lastChannelStats", "afterClosed", "Event", "statsUpdated", "stream", "incomingData", "on", "msg", "_handleCommand", "decode", "setSessionId", "sessionId", "_sessionId", "sessionIdString", "truncate", "createStream", "tag", "opts", "channel", "_getOrCreateStream", "contentType", "invariant", "push", "Duplex", "write", "data", "encoding", "callback", "_sendData", "then", "catch", "read", "stats", "bytesReceived", "length", "destroy", "err", "listeners", "_sendCommand", "openChannel", "id", "_destroyChannel", "createPort", "inboundBuffer", "port", "send", "timeout", "subscribe", "cb", "close", "log", "error", "message", "_dispose", "asyncTimeout", "TimeoutError", "dispose", "values", "_emitStats", "emit", "clear", "cmd", "warn", "Error", "remoteId", "buffer", "channelId", "get", "failUndefined", "info", "trigger", "Trigger", "pushData", "encode", "wait", "params", "size", "scheduleTaskInterval", "bytesSent", "set", "addChannel", "threshold", "delete", "lastStats", "readBufferSize", "writeBufferSize", "c", "channels", "now", "Date", "interval", "timestamp", "calculateThroughput", "current", "last", "bytesSentRate", "bytesReceivedRate", "Array", "from", "map", "readableLength", "writableLength", "logInfo", "CONTROL_HEARTBEAT_INTERVAL", "CONTROL_HEARTBEAT_TIMEOUT", "Teleport", "constructor", "initiator", "localPeerId", "remotePeerId", "_ctx", "Context", "onError", "err", "destroy", "catch", "log", "error", "_muxer", "Muxer", "_extensions", "Map", "_remoteExtensions", "Set", "_open", "_destroying", "_aborting", "invariant", "PublicKey", "isPublicKey", "_control", "ControlExtension", "heartbeatInterval", "heartbeatTimeout", "onTimeout", "info", "abort", "TimeoutError", "onExtensionRegistered", "set", "name", "has", "add", "_openExtension", "stream", "on", "statsUpdated", "stats", "trace", "bytesSent", "bytesSentRate", "bytesReceived", "bytesReceivedRate", "channels", "sessionIdString", "_sessionId", "truncate", "open", "sessionId", "random", "_setExtension", "setSessionId", "close", "disposed", "dispose", "extension", "values", "onAbort", "onClose", "addExtension", "Error", "scheduleTask", "registerExtension", "RpcClosedError", "extensionName", "includes", "get", "failUndefined", "context", "createPort", "channelName", "opts", "createStream", "runInContextAsync", "onOpen", "logInfo", "synchronized", "TestBuilder", "_peers", "Set", "createPeer", "opts", "peer", "factory", "add", "createPeers", "destroy", "Promise", "all", "Array", "from", "map", "agent", "connect", "peer1", "peer2", "invariant", "has", "connection1", "createConnection", "initiator", "remotePeerId", "peerId", "connection2", "pipeStreams", "teleport", "stream", "openConnection", "disconnect", "connections", "find", "connection", "equals", "closeConnection", "TestPeer", "constructor", "PublicKey", "random", "onOpen", "onClose", "TestConnection", "open", "close", "delete", "stream1", "stream2", "pipeline", "err", "code", "log", "catch", "localPeerId", "Teleport", "asyncTimeout", "Trigger", "invariant", "log", "schema", "createProtoRpcPeer", "TestExtension", "constructor", "callbacks", "open", "closed", "aborted", "remotePeerId", "extensionContext", "onOpen", "context", "localPeerId", "_rpc", "port", "createPort", "contentType", "requested", "TestService", "getService", "exposed", "handlers", "voidCall", "request", "testCall", "data", "timeout", "wake", "onClose", "err", "close", "onAbort", "abort", "test", "message", "wait", "res", "rpc", "closeConnection", "randomBytes", "Trigger", "invariant", "log", "schema", "createProtoRpcPeer", "TestExtensionWithStreams", "constructor", "callbacks", "open", "closed", "aborted", "_streams", "Map", "remotePeerId", "extensionContext", "_openStream", "streamTag", "interval", "chunkSize", "has", "networkStream", "createStream", "contentType", "streamEntry", "bytesSent", "bytesReceived", "sendErrors", "receiveErrors", "startTimestamp", "Date", "now", "pushChunk", "timer", "setTimeout", "chunk", "write", "err", "length", "once", "process", "nextTick", "set", "on", "data", "removeAllListeners", "reportingTimer", "setInterval", "trace", "from", "localPeerId", "to", "_closeStream", "stream", "get", "clearTimeout", "destroy", "delete", "runningTime", "onOpen", "context", "_rpc", "port", "createPort", "requested", "TestServiceWithStreams", "getService", "exposed", "handlers", "requestTestStream", "request", "streamLoadInterval", "streamLoadChunkSize", "closeTestStream", "timeout", "wake", "onClose", "Object", "entries", "close", "onAbort", "abort", "addNewStream", "wait", "toString", "rpc", "closeStream", "local", "stats", "remote", "closeConnection"]
7
7
  }
@@ -10,12 +10,12 @@ import {
10
10
  TestPeer,
11
11
  decodeFrame,
12
12
  encodeFrame
13
- } from "./chunk-JBBPEHYE.mjs";
13
+ } from "./chunk-G43TQTXR.mjs";
14
14
 
15
15
  // packages/core/mesh/teleport/src/rpc-extension.ts
16
16
  import { invariant } from "@dxos/invariant";
17
17
  import { createProtoRpcPeer } from "@dxos/rpc";
18
- var __dxlog_file = "/home/circleci/project/packages/core/mesh/teleport/src/rpc-extension.ts";
18
+ var __dxlog_file = "/home/runner/work/dxos/dxos/packages/core/mesh/teleport/src/rpc-extension.ts";
19
19
  var RpcExtension = class {
20
20
  constructor(_rpcParams) {
21
21
  this._rpcParams = _rpcParams;
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../../src/rpc-extension.ts"],
4
4
  "sourcesContent": ["//\n// Copyright 2022 DXOS.org\n//\n\nimport { invariant } from '@dxos/invariant';\nimport { createProtoRpcPeer, type ProtoRpcPeer, type ProtoRpcPeerOptions } from '@dxos/rpc';\n\nimport { type ExtensionContext, type TeleportExtension } from './teleport';\n\nexport abstract class RpcExtension<Client, Server> implements TeleportExtension {\n // TODO(dmaretskyi): Type optionally.\n private _extensionContext!: ExtensionContext;\n private _rpc?: ProtoRpcPeer<Client>;\n\n private _isClosed = false;\n\n constructor(private readonly _rpcParams: Omit<ProtoRpcPeerOptions<Client, Server>, 'port' | 'handlers'>) {}\n\n get initiator() {\n return this._extensionContext.initiator;\n }\n\n get localPeerId() {\n return this._extensionContext.localPeerId;\n }\n\n get remotePeerId() {\n return this._extensionContext.remotePeerId;\n }\n\n get rpc(): Client {\n invariant(this._rpc);\n return this._rpc.rpc;\n }\n\n protected abstract getHandlers(): Promise<Server>;\n\n async onOpen(context: ExtensionContext): Promise<void> {\n this._extensionContext = context;\n\n const handlers = await this.getHandlers();\n\n if (this._isClosed) {\n return;\n }\n\n const port = await context.createPort('rpc', {\n contentType: 'application/x-protobuf; messageType=\"dxos.rpc.Message\"',\n });\n this._rpc = createProtoRpcPeer({\n ...this._rpcParams,\n handlers,\n port,\n });\n\n await this._rpc.open();\n }\n\n async onClose(err?: Error | undefined): Promise<void> {\n this._isClosed = true;\n await this._rpc?.close();\n }\n\n async onAbort(err?: Error | undefined): Promise<void> {\n this._isClosed = true;\n await this._rpc?.abort();\n }\n\n close() {\n this._extensionContext.close();\n }\n}\n"],
5
- "mappings": ";;;;;;;;;;;;;;;AAIA,SAASA,iBAAiB;AAC1B,SAASC,0BAAuE;;AAIzE,IAAeC,eAAf,MAAeA;EAOpBC,YAA6BC,YAA4E;sBAA5EA;SAFrBC,YAAY;EAEsF;EAE1G,IAAIC,YAAY;AACd,WAAO,KAAKC,kBAAkBD;EAChC;EAEA,IAAIE,cAAc;AAChB,WAAO,KAAKD,kBAAkBC;EAChC;EAEA,IAAIC,eAAe;AACjB,WAAO,KAAKF,kBAAkBE;EAChC;EAEA,IAAIC,MAAc;AAChBV,cAAU,KAAKW,MAAI,QAAA;;;;;;;;;AACnB,WAAO,KAAKA,KAAKD;EACnB;EAIA,MAAME,OAAOC,SAA0C;AACrD,SAAKN,oBAAoBM;AAEzB,UAAMC,WAAW,MAAM,KAAKC,YAAW;AAEvC,QAAI,KAAKV,WAAW;AAClB;IACF;AAEA,UAAMW,OAAO,MAAMH,QAAQI,WAAW,OAAO;MAC3CC,aAAa;IACf,CAAA;AACA,SAAKP,OAAOV,mBAAmB;MAC7B,GAAG,KAAKG;MACRU;MACAE;IACF,CAAA;AAEA,UAAM,KAAKL,KAAKQ,KAAI;EACtB;EAEA,MAAMC,QAAQC,KAAwC;AACpD,SAAKhB,YAAY;AACjB,UAAM,KAAKM,MAAMW,MAAAA;EACnB;EAEA,MAAMC,QAAQF,KAAwC;AACpD,SAAKhB,YAAY;AACjB,UAAM,KAAKM,MAAMa,MAAAA;EACnB;EAEAF,QAAQ;AACN,SAAKf,kBAAkBe,MAAK;EAC9B;AACF;",
5
+ "mappings": ";;;;;;;;;;;;;;;AAIA,SAASA,iBAAiB;AAC1B,SAASC,0BAAuE;;AAIzE,IAAeC,eAAf,MAAeA;EAOpBC,YAA6BC,YAA4E;SAA5EA,aAAAA;SAFrBC,YAAY;EAEsF;EAE1G,IAAIC,YAAY;AACd,WAAO,KAAKC,kBAAkBD;EAChC;EAEA,IAAIE,cAAc;AAChB,WAAO,KAAKD,kBAAkBC;EAChC;EAEA,IAAIC,eAAe;AACjB,WAAO,KAAKF,kBAAkBE;EAChC;EAEA,IAAIC,MAAc;AAChBV,cAAU,KAAKW,MAAI,QAAA;;;;;;;;;AACnB,WAAO,KAAKA,KAAKD;EACnB;EAIA,MAAME,OAAOC,SAA0C;AACrD,SAAKN,oBAAoBM;AAEzB,UAAMC,WAAW,MAAM,KAAKC,YAAW;AAEvC,QAAI,KAAKV,WAAW;AAClB;IACF;AAEA,UAAMW,OAAO,MAAMH,QAAQI,WAAW,OAAO;MAC3CC,aAAa;IACf,CAAA;AACA,SAAKP,OAAOV,mBAAmB;MAC7B,GAAG,KAAKG;MACRU;MACAE;IACF,CAAA;AAEA,UAAM,KAAKL,KAAKQ,KAAI;EACtB;EAEA,MAAMC,QAAQC,KAAwC;AACpD,SAAKhB,YAAY;AACjB,UAAM,KAAKM,MAAMW,MAAAA;EACnB;EAEA,MAAMC,QAAQF,KAAwC;AACpD,SAAKhB,YAAY;AACjB,UAAM,KAAKM,MAAMa,MAAAA;EACnB;EAEAF,QAAQ;AACN,SAAKf,kBAAkBe,MAAK;EAC9B;AACF;",
6
6
  "names": ["invariant", "createProtoRpcPeer", "RpcExtension", "constructor", "_rpcParams", "_isClosed", "initiator", "_extensionContext", "localPeerId", "remotePeerId", "rpc", "_rpc", "onOpen", "context", "handlers", "getHandlers", "port", "createPort", "contentType", "open", "onClose", "err", "close", "onAbort", "abort"]
7
7
  }
@@ -1 +1 @@
1
- {"inputs":{"inject-globals:@inject-globals":{"bytes":384,"imports":[{"path":"@dxos/node-std/inject-globals","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/teleport/src/muxing/framer.ts":{"bytes":18203,"imports":[{"path":"@dxos/node-std/stream","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@inject-globals","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/teleport/src/muxing/balancer.ts":{"bytes":23856,"imports":[{"path":"varint","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"packages/core/mesh/teleport/src/muxing/framer.ts","kind":"import-statement","original":"./framer"},{"path":"@inject-globals","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/teleport/src/muxing/muxer.ts":{"bytes":51497,"imports":[{"path":"@dxos/node-std/stream","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"packages/core/mesh/teleport/src/muxing/balancer.ts","kind":"import-statement","original":"./balancer"},{"path":"@inject-globals","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/teleport/src/muxing/rpc-port.ts":{"bytes":952,"imports":[{"path":"@inject-globals","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/teleport/src/muxing/index.ts":{"bytes":636,"imports":[{"path":"packages/core/mesh/teleport/src/muxing/framer.ts","kind":"import-statement","original":"./framer"},{"path":"packages/core/mesh/teleport/src/muxing/muxer.ts","kind":"import-statement","original":"./muxer"},{"path":"packages/core/mesh/teleport/src/muxing/rpc-port.ts","kind":"import-statement","original":"./rpc-port"},{"path":"@inject-globals","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/teleport/src/control-extension.ts":{"bytes":17368,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/rpc","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"@inject-globals","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/teleport/src/teleport.ts":{"bytes":31224,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"packages/core/mesh/teleport/src/control-extension.ts","kind":"import-statement","original":"./control-extension"},{"path":"packages/core/mesh/teleport/src/muxing/index.ts","kind":"import-statement","original":"./muxing"},{"path":"@inject-globals","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/teleport/src/testing/test-builder.ts":{"bytes":15691,"imports":[{"path":"@dxos/node-std/stream","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"packages/core/mesh/teleport/src/teleport.ts","kind":"import-statement","original":"../teleport"},{"path":"@inject-globals","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/teleport/src/testing/test-extension.ts":{"bytes":9929,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/rpc","kind":"import-statement","external":true},{"path":"@inject-globals","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/teleport/src/testing/test-extension-with-streams.ts":{"bytes":27094,"imports":[{"path":"@dxos/node-std/crypto","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/rpc","kind":"import-statement","external":true},{"path":"@inject-globals","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/teleport/src/testing/index.ts":{"bytes":723,"imports":[{"path":"packages/core/mesh/teleport/src/testing/test-builder.ts","kind":"import-statement","original":"./test-builder"},{"path":"packages/core/mesh/teleport/src/testing/test-extension.ts","kind":"import-statement","original":"./test-extension"},{"path":"packages/core/mesh/teleport/src/testing/test-extension-with-streams.ts","kind":"import-statement","original":"./test-extension-with-streams"},{"path":"@inject-globals","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/teleport/src/rpc-extension.ts":{"bytes":6056,"imports":[{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/rpc","kind":"import-statement","external":true},{"path":"@inject-globals","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/teleport/src/index.ts":{"bytes":736,"imports":[{"path":"packages/core/mesh/teleport/src/muxing/index.ts","kind":"import-statement","original":"./muxing"},{"path":"packages/core/mesh/teleport/src/teleport.ts","kind":"import-statement","original":"./teleport"},{"path":"packages/core/mesh/teleport/src/testing/index.ts","kind":"import-statement","original":"./testing"},{"path":"packages/core/mesh/teleport/src/rpc-extension.ts","kind":"import-statement","original":"./rpc-extension"},{"path":"@inject-globals","kind":"import-statement","external":true}],"format":"esm"}},"outputs":{"packages/core/mesh/teleport/dist/lib/browser/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":3028},"packages/core/mesh/teleport/dist/lib/browser/index.mjs":{"imports":[{"path":"packages/core/mesh/teleport/dist/lib/browser/chunk-JBBPEHYE.mjs","kind":"import-statement"},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/rpc","kind":"import-statement","external":true}],"exports":["Framer","Muxer","RpcExtension","Teleport","TestBuilder","TestConnection","TestExtension","TestExtensionWithStreams","TestPeer","decodeFrame","encodeFrame"],"entryPoint":"packages/core/mesh/teleport/src/index.ts","inputs":{"packages/core/mesh/teleport/src/index.ts":{"bytesInOutput":0},"packages/core/mesh/teleport/src/rpc-extension.ts":{"bytesInOutput":1359}},"bytes":1848},"packages/core/mesh/teleport/dist/lib/browser/testing/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":93},"packages/core/mesh/teleport/dist/lib/browser/testing/index.mjs":{"imports":[{"path":"packages/core/mesh/teleport/dist/lib/browser/chunk-JBBPEHYE.mjs","kind":"import-statement"}],"exports":["TestBuilder","TestConnection","TestExtension","TestExtensionWithStreams","TestPeer"],"entryPoint":"packages/core/mesh/teleport/src/testing/index.ts","inputs":{},"bytes":299},"packages/core/mesh/teleport/dist/lib/browser/chunk-JBBPEHYE.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":91464},"packages/core/mesh/teleport/dist/lib/browser/chunk-JBBPEHYE.mjs":{"imports":[{"path":"@dxos/node-std/inject-globals","kind":"import-statement","external":true},{"path":"@dxos/node-std/stream","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/rpc","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"@dxos/node-std/stream","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/node-std/stream","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"varint","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/rpc","kind":"import-statement","external":true},{"path":"@dxos/node-std/crypto","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/rpc","kind":"import-statement","external":true}],"exports":["Framer","Muxer","Teleport","TestBuilder","TestConnection","TestExtension","TestExtensionWithStreams","TestPeer","decodeFrame","encodeFrame"],"inputs":{"inject-globals:@inject-globals":{"bytesInOutput":79},"packages/core/mesh/teleport/src/testing/test-builder.ts":{"bytesInOutput":4953},"packages/core/mesh/teleport/src/teleport.ts":{"bytesInOutput":9574},"packages/core/mesh/teleport/src/control-extension.ts":{"bytesInOutput":4637},"packages/core/mesh/teleport/src/muxing/framer.ts":{"bytesInOutput":4627},"packages/core/mesh/teleport/src/muxing/index.ts":{"bytesInOutput":0},"packages/core/mesh/teleport/src/muxing/muxer.ts":{"bytesInOutput":13719},"packages/core/mesh/teleport/src/muxing/balancer.ts":{"bytesInOutput":6002},"packages/core/mesh/teleport/src/testing/index.ts":{"bytesInOutput":0},"packages/core/mesh/teleport/src/testing/test-extension.ts":{"bytesInOutput":2657},"packages/core/mesh/teleport/src/testing/test-extension-with-streams.ts":{"bytesInOutput":7349}},"bytes":54494}}}
1
+ {"inputs":{"inject-globals:@inject-globals":{"bytes":384,"imports":[{"path":"@dxos/node-std/inject-globals","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/teleport/src/muxing/framer.ts":{"bytes":18208,"imports":[{"path":"@dxos/node-std/stream","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@inject-globals","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/teleport/src/muxing/balancer.ts":{"bytes":23877,"imports":[{"path":"varint","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"packages/core/mesh/teleport/src/muxing/framer.ts","kind":"import-statement","original":"./framer"},{"path":"@inject-globals","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/teleport/src/muxing/muxer.ts":{"bytes":51502,"imports":[{"path":"@dxos/node-std/stream","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"packages/core/mesh/teleport/src/muxing/balancer.ts","kind":"import-statement","original":"./balancer"},{"path":"@inject-globals","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/teleport/src/muxing/rpc-port.ts":{"bytes":1149,"imports":[{"path":"@inject-globals","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/teleport/src/muxing/index.ts":{"bytes":641,"imports":[{"path":"packages/core/mesh/teleport/src/muxing/framer.ts","kind":"import-statement","original":"./framer"},{"path":"packages/core/mesh/teleport/src/muxing/muxer.ts","kind":"import-statement","original":"./muxer"},{"path":"packages/core/mesh/teleport/src/muxing/rpc-port.ts","kind":"import-statement","original":"./rpc-port"},{"path":"@inject-globals","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/teleport/src/control-extension.ts":{"bytes":17421,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/rpc","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"@inject-globals","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/teleport/src/teleport.ts":{"bytes":31229,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"packages/core/mesh/teleport/src/control-extension.ts","kind":"import-statement","original":"./control-extension"},{"path":"packages/core/mesh/teleport/src/muxing/index.ts","kind":"import-statement","original":"./muxing"},{"path":"@inject-globals","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/teleport/src/testing/test-builder.ts":{"bytes":15752,"imports":[{"path":"@dxos/node-std/stream","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"packages/core/mesh/teleport/src/teleport.ts","kind":"import-statement","original":"../teleport"},{"path":"@inject-globals","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/teleport/src/testing/test-extension.ts":{"bytes":9938,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/rpc","kind":"import-statement","external":true},{"path":"@inject-globals","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/teleport/src/testing/test-extension-with-streams.ts":{"bytes":27103,"imports":[{"path":"@dxos/node-std/crypto","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/rpc","kind":"import-statement","external":true},{"path":"@inject-globals","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/teleport/src/testing/index.ts":{"bytes":728,"imports":[{"path":"packages/core/mesh/teleport/src/testing/test-builder.ts","kind":"import-statement","original":"./test-builder"},{"path":"packages/core/mesh/teleport/src/testing/test-extension.ts","kind":"import-statement","original":"./test-extension"},{"path":"packages/core/mesh/teleport/src/testing/test-extension-with-streams.ts","kind":"import-statement","original":"./test-extension-with-streams"},{"path":"@inject-globals","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/teleport/src/rpc-extension.ts":{"bytes":6077,"imports":[{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/rpc","kind":"import-statement","external":true},{"path":"@inject-globals","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/teleport/src/index.ts":{"bytes":741,"imports":[{"path":"packages/core/mesh/teleport/src/muxing/index.ts","kind":"import-statement","original":"./muxing"},{"path":"packages/core/mesh/teleport/src/teleport.ts","kind":"import-statement","original":"./teleport"},{"path":"packages/core/mesh/teleport/src/testing/index.ts","kind":"import-statement","original":"./testing"},{"path":"packages/core/mesh/teleport/src/rpc-extension.ts","kind":"import-statement","original":"./rpc-extension"},{"path":"@inject-globals","kind":"import-statement","external":true}],"format":"esm"}},"outputs":{"packages/core/mesh/teleport/dist/lib/browser/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":3033},"packages/core/mesh/teleport/dist/lib/browser/index.mjs":{"imports":[{"path":"packages/core/mesh/teleport/dist/lib/browser/chunk-G43TQTXR.mjs","kind":"import-statement"},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/rpc","kind":"import-statement","external":true}],"exports":["Framer","Muxer","RpcExtension","Teleport","TestBuilder","TestConnection","TestExtension","TestExtensionWithStreams","TestPeer","decodeFrame","encodeFrame"],"entryPoint":"packages/core/mesh/teleport/src/index.ts","inputs":{"packages/core/mesh/teleport/src/index.ts":{"bytesInOutput":0},"packages/core/mesh/teleport/src/rpc-extension.ts":{"bytesInOutput":1364}},"bytes":1853},"packages/core/mesh/teleport/dist/lib/browser/testing/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":93},"packages/core/mesh/teleport/dist/lib/browser/testing/index.mjs":{"imports":[{"path":"packages/core/mesh/teleport/dist/lib/browser/chunk-G43TQTXR.mjs","kind":"import-statement"}],"exports":["TestBuilder","TestConnection","TestExtension","TestExtensionWithStreams","TestPeer"],"entryPoint":"packages/core/mesh/teleport/src/testing/index.ts","inputs":{},"bytes":299},"packages/core/mesh/teleport/dist/lib/browser/chunk-G43TQTXR.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":91515},"packages/core/mesh/teleport/dist/lib/browser/chunk-G43TQTXR.mjs":{"imports":[{"path":"@dxos/node-std/inject-globals","kind":"import-statement","external":true},{"path":"@dxos/node-std/stream","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/rpc","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"@dxos/node-std/stream","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/node-std/stream","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"varint","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/rpc","kind":"import-statement","external":true},{"path":"@dxos/node-std/crypto","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/rpc","kind":"import-statement","external":true}],"exports":["Framer","Muxer","Teleport","TestBuilder","TestConnection","TestExtension","TestExtensionWithStreams","TestPeer","decodeFrame","encodeFrame"],"inputs":{"inject-globals:@inject-globals":{"bytesInOutput":79},"packages/core/mesh/teleport/src/testing/test-builder.ts":{"bytesInOutput":4958},"packages/core/mesh/teleport/src/teleport.ts":{"bytesInOutput":9579},"packages/core/mesh/teleport/src/control-extension.ts":{"bytesInOutput":4642},"packages/core/mesh/teleport/src/muxing/framer.ts":{"bytesInOutput":4632},"packages/core/mesh/teleport/src/muxing/index.ts":{"bytesInOutput":0},"packages/core/mesh/teleport/src/muxing/muxer.ts":{"bytesInOutput":13724},"packages/core/mesh/teleport/src/muxing/balancer.ts":{"bytesInOutput":6007},"packages/core/mesh/teleport/src/testing/index.ts":{"bytesInOutput":0},"packages/core/mesh/teleport/src/testing/test-extension.ts":{"bytesInOutput":2662},"packages/core/mesh/teleport/src/testing/test-extension-with-streams.ts":{"bytesInOutput":7354}},"bytes":54534}}}
@@ -5,7 +5,7 @@ import {
5
5
  TestExtension,
6
6
  TestExtensionWithStreams,
7
7
  TestPeer
8
- } from "../chunk-JBBPEHYE.mjs";
8
+ } from "../chunk-G43TQTXR.mjs";
9
9
  export {
10
10
  TestBuilder,
11
11
  TestConnection,
@@ -26,8 +26,8 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
26
26
  mod
27
27
  ));
28
28
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
- var chunk_OTE53TBB_exports = {};
30
- __export(chunk_OTE53TBB_exports, {
29
+ var chunk_QAEYMDIX_exports = {};
30
+ __export(chunk_QAEYMDIX_exports, {
31
31
  Framer: () => Framer,
32
32
  Muxer: () => Muxer,
33
33
  Teleport: () => Teleport,
@@ -39,7 +39,7 @@ __export(chunk_OTE53TBB_exports, {
39
39
  decodeFrame: () => decodeFrame,
40
40
  encodeFrame: () => encodeFrame
41
41
  });
42
- module.exports = __toCommonJS(chunk_OTE53TBB_exports);
42
+ module.exports = __toCommonJS(chunk_QAEYMDIX_exports);
43
43
  var import_node_stream = require("node:stream");
44
44
  var import_invariant = require("@dxos/invariant");
45
45
  var import_keys = require("@dxos/keys");
@@ -83,7 +83,7 @@ var import_invariant7 = require("@dxos/invariant");
83
83
  var import_log8 = require("@dxos/log");
84
84
  var import_protocols5 = require("@dxos/protocols");
85
85
  var import_rpc3 = require("@dxos/rpc");
86
- var __dxlog_file = "/home/circleci/project/packages/core/mesh/teleport/src/control-extension.ts";
86
+ var __dxlog_file = "/home/runner/work/dxos/dxos/packages/core/mesh/teleport/src/control-extension.ts";
87
87
  var HEARTBEAT_RTT_WARN_THRESH = 1e4;
88
88
  var ControlExtension = class {
89
89
  constructor(opts, localPeerId, remotePeerId) {
@@ -217,7 +217,7 @@ var ControlExtension = class {
217
217
  await this._rpc.abort();
218
218
  }
219
219
  };
220
- var __dxlog_file2 = "/home/circleci/project/packages/core/mesh/teleport/src/muxing/framer.ts";
220
+ var __dxlog_file2 = "/home/runner/work/dxos/dxos/packages/core/mesh/teleport/src/muxing/framer.ts";
221
221
  var FRAME_LENGTH_SIZE = 2;
222
222
  var Framer = class {
223
223
  constructor() {
@@ -375,7 +375,7 @@ var encodeFrame = (payload) => {
375
375
  frame.set(payload, FRAME_LENGTH_SIZE);
376
376
  return frame;
377
377
  };
378
- var __dxlog_file3 = "/home/circleci/project/packages/core/mesh/teleport/src/muxing/balancer.ts";
378
+ var __dxlog_file3 = "/home/runner/work/dxos/dxos/packages/core/mesh/teleport/src/muxing/balancer.ts";
379
379
  var MAX_CHUNK_SIZE = 8192;
380
380
  var Balancer = class {
381
381
  constructor(_sysChannelId) {
@@ -588,7 +588,7 @@ function _ts_decorate(decorators, target, key, desc) {
588
588
  r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
589
589
  return c > 3 && r && Object.defineProperty(target, key, r), r;
590
590
  }
591
- var __dxlog_file4 = "/home/circleci/project/packages/core/mesh/teleport/src/muxing/muxer.ts";
591
+ var __dxlog_file4 = "/home/runner/work/dxos/dxos/packages/core/mesh/teleport/src/muxing/muxer.ts";
592
592
  var Command = import_protocols3.schema.getCodecForType("dxos.mesh.muxer.Command");
593
593
  var DEFAULT_SEND_COMMAND_TIMEOUT = 6e4;
594
594
  var DESTROY_COMMAND_SEND_TIMEOUT = 5e3;
@@ -1054,7 +1054,7 @@ function _ts_decorate2(decorators, target, key, desc) {
1054
1054
  r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
1055
1055
  return c > 3 && r && Object.defineProperty(target, key, r), r;
1056
1056
  }
1057
- var __dxlog_file5 = "/home/circleci/project/packages/core/mesh/teleport/src/teleport.ts";
1057
+ var __dxlog_file5 = "/home/runner/work/dxos/dxos/packages/core/mesh/teleport/src/teleport.ts";
1058
1058
  var CONTROL_HEARTBEAT_INTERVAL = 1e4;
1059
1059
  var CONTROL_HEARTBEAT_TIMEOUT = 6e4;
1060
1060
  var Teleport = class {
@@ -1377,7 +1377,7 @@ _ts_decorate2([
1377
1377
  _ts_decorate2([
1378
1378
  import_async.synchronized
1379
1379
  ], Teleport.prototype, "destroy", null);
1380
- var __dxlog_file6 = "/home/circleci/project/packages/core/mesh/teleport/src/testing/test-builder.ts";
1380
+ var __dxlog_file6 = "/home/runner/work/dxos/dxos/packages/core/mesh/teleport/src/testing/test-builder.ts";
1381
1381
  var TestBuilder = class {
1382
1382
  constructor() {
1383
1383
  this._peers = /* @__PURE__ */ new Set();
@@ -1576,7 +1576,7 @@ var TestConnection = class {
1576
1576
  });
1577
1577
  }
1578
1578
  };
1579
- var __dxlog_file7 = "/home/circleci/project/packages/core/mesh/teleport/src/testing/test-extension.ts";
1579
+ var __dxlog_file7 = "/home/runner/work/dxos/dxos/packages/core/mesh/teleport/src/testing/test-extension.ts";
1580
1580
  var TestExtension = class {
1581
1581
  constructor(callbacks = {}) {
1582
1582
  this.callbacks = callbacks;
@@ -1675,7 +1675,7 @@ var TestExtension = class {
1675
1675
  this.extensionContext?.close(err);
1676
1676
  }
1677
1677
  };
1678
- var __dxlog_file8 = "/home/circleci/project/packages/core/mesh/teleport/src/testing/test-extension-with-streams.ts";
1678
+ var __dxlog_file8 = "/home/runner/work/dxos/dxos/packages/core/mesh/teleport/src/testing/test-extension-with-streams.ts";
1679
1679
  var TestExtensionWithStreams = class {
1680
1680
  constructor(callbacks = {}) {
1681
1681
  this.callbacks = callbacks;
@@ -1940,4 +1940,4 @@ var TestExtensionWithStreams = class {
1940
1940
  decodeFrame,
1941
1941
  encodeFrame
1942
1942
  });
1943
- //# sourceMappingURL=chunk-OTE53TBB.cjs.map
1943
+ //# sourceMappingURL=chunk-QAEYMDIX.cjs.map
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../../src/testing/test-builder.ts", "../../../src/teleport.ts", "../../../src/control-extension.ts", "../../../src/muxing/framer.ts", "../../../src/muxing/muxer.ts", "../../../src/muxing/balancer.ts", "../../../src/testing/test-extension.ts", "../../../src/testing/test-extension-with-streams.ts"],
4
4
  "sourcesContent": ["//\n// Copyright 2022 DXOS.org\n//\n\nimport { type Duplex, pipeline } from 'node:stream';\n\nimport { invariant } from '@dxos/invariant';\nimport { PublicKey } from '@dxos/keys';\nimport { log } from '@dxos/log';\n\nimport { Teleport } from '../teleport';\n\ntype CreatePeerOpts<T extends TestPeer> = {\n factory: () => T;\n};\n\nexport class TestBuilder {\n private readonly _peers = new Set<TestPeer>();\n\n createPeer<T extends TestPeer>(opts: CreatePeerOpts<T>): T {\n const peer = opts.factory();\n this._peers.add(peer);\n return peer;\n }\n\n *createPeers<T extends TestPeer>(opts: CreatePeerOpts<T>): Generator<T> {\n while (true) {\n yield this.createPeer(opts);\n }\n }\n\n async destroy() {\n await Promise.all(Array.from(this._peers).map((agent) => agent.destroy()));\n }\n\n async connect(peer1: TestPeer, peer2: TestPeer) {\n invariant(peer1 !== peer2);\n invariant(this._peers.has(peer1));\n invariant(this._peers.has(peer1));\n\n const connection1 = peer1.createConnection({ initiator: true, remotePeerId: peer2.peerId });\n const connection2 = peer2.createConnection({ initiator: false, remotePeerId: peer1.peerId });\n\n pipeStreams(connection1.teleport.stream, connection2.teleport.stream);\n await Promise.all([peer1.openConnection(connection1), peer2.openConnection(connection2)]);\n\n return [connection1, connection2];\n }\n\n async disconnect(peer1: TestPeer, peer2: TestPeer) {\n invariant(peer1 !== peer2);\n invariant(this._peers.has(peer1));\n invariant(this._peers.has(peer1));\n\n const connection1 = Array.from(peer1.connections).find((connection) =>\n connection.remotePeerId.equals(peer2.peerId),\n );\n const connection2 = Array.from(peer2.connections).find((connection) =>\n connection.remotePeerId.equals(peer1.peerId),\n );\n\n invariant(connection1);\n invariant(connection2);\n\n await Promise.all([peer1.closeConnection(connection1), peer2.closeConnection(connection2)]);\n }\n}\n\nexport class TestPeer {\n public readonly connections = new Set<TestConnection>();\n\n constructor(public readonly peerId: PublicKey = PublicKey.random()) {}\n\n protected async onOpen(connection: TestConnection) {}\n protected async onClose(connection: TestConnection) {}\n\n createConnection({ initiator, remotePeerId }: { initiator: boolean; remotePeerId: PublicKey }) {\n const connection = new TestConnection(this.peerId, remotePeerId, initiator);\n this.connections.add(connection);\n return connection;\n }\n\n async openConnection(connection: TestConnection) {\n invariant(this.connections.has(connection));\n await connection.teleport.open(PublicKey.random());\n await this.onOpen(connection);\n }\n\n async closeConnection(connection: TestConnection) {\n invariant(this.connections.has(connection));\n await this.onClose(connection);\n await connection.teleport.close();\n this.connections.delete(connection);\n }\n\n async destroy() {\n for (const teleport of this.connections) {\n await this.closeConnection(teleport);\n }\n }\n}\n\nconst pipeStreams = (stream1: Duplex, stream2: Duplex) => {\n pipeline(stream1, stream2, (err) => {\n if (err && err.code !== 'ERR_STREAM_PREMATURE_CLOSE') {\n log.catch(err);\n }\n });\n pipeline(stream2, stream1, (err) => {\n if (err && err.code !== 'ERR_STREAM_PREMATURE_CLOSE') {\n log.catch(err);\n }\n });\n};\n\nexport class TestConnection {\n public teleport: Teleport;\n\n constructor(\n public readonly localPeerId: PublicKey,\n public readonly remotePeerId: PublicKey,\n public readonly initiator: boolean,\n ) {\n this.teleport = new Teleport({\n initiator,\n localPeerId,\n remotePeerId,\n });\n }\n}\n", "//\n// Copyright 2022 DXOS.org\n//\n\nimport { type Duplex } from 'node:stream';\n\nimport { runInContextAsync, synchronized, scheduleTask, type Event } from '@dxos/async';\nimport { Context } from '@dxos/context';\nimport { failUndefined } from '@dxos/debug';\nimport { invariant } from '@dxos/invariant';\nimport { PublicKey } from '@dxos/keys';\nimport { log, logInfo } from '@dxos/log';\nimport { RpcClosedError, TimeoutError } from '@dxos/protocols';\n\nimport { ControlExtension } from './control-extension';\nimport { type CreateChannelOpts, Muxer, type MuxerStats, type RpcPort } from './muxing';\n\nexport type TeleportParams = {\n initiator: boolean;\n localPeerId: PublicKey;\n remotePeerId: PublicKey;\n};\n\nconst CONTROL_HEARTBEAT_INTERVAL = 10_000;\nconst CONTROL_HEARTBEAT_TIMEOUT = 60_000;\n\n/**\n * TODO(burdon): Comment: what is this?\n */\nexport class Teleport {\n public readonly initiator: boolean;\n public readonly localPeerId: PublicKey;\n public readonly remotePeerId: PublicKey;\n public _sessionId?: PublicKey;\n\n private readonly _ctx = new Context({\n onError: (err) => {\n void this.destroy(err).catch(() => {\n log.error('Error during destroy', err);\n });\n },\n });\n\n private readonly _muxer = new Muxer();\n\n private readonly _control;\n\n private readonly _extensions = new Map<string, TeleportExtension>();\n private readonly _remoteExtensions = new Set<string>();\n\n private _open = false;\n private _destroying = false;\n private _aborting = false;\n\n constructor({ initiator, localPeerId, remotePeerId }: TeleportParams) {\n invariant(typeof initiator === 'boolean');\n invariant(PublicKey.isPublicKey(localPeerId));\n invariant(PublicKey.isPublicKey(remotePeerId));\n this.initiator = initiator;\n this.localPeerId = localPeerId;\n this.remotePeerId = remotePeerId;\n\n this._control = new ControlExtension(\n {\n heartbeatInterval: CONTROL_HEARTBEAT_INTERVAL,\n heartbeatTimeout: CONTROL_HEARTBEAT_TIMEOUT,\n onTimeout: () => {\n if (this._destroying || this._aborting) {\n return;\n }\n log.info('abort teleport due to onTimeout in ControlExtension');\n this.abort(new TimeoutError('control extension')).catch((err) => log.catch(err));\n },\n },\n this.localPeerId,\n this.remotePeerId,\n );\n\n this._control.onExtensionRegistered.set(async (name) => {\n log('remote extension', { name });\n invariant(!this._remoteExtensions.has(name), 'Remote extension already exists');\n this._remoteExtensions.add(name);\n\n if (this._extensions.has(name)) {\n try {\n await this._openExtension(name);\n } catch (err: any) {\n await this.destroy(err);\n }\n }\n });\n\n {\n // Destroy Teleport when the stream is closed.\n this._muxer.stream.on('close', async () => {\n if (this._destroying || this._aborting) {\n log('destroy teleport due to muxer stream close, skipping due to already destroying/aborting');\n return;\n }\n await this.destroy();\n });\n\n this._muxer.stream.on('error', async (err) => {\n await this.destroy(err);\n });\n }\n\n // let last: MuxerStats | undefined;\n this._muxer.statsUpdated.on((stats) => {\n log.trace('dxos.mesh.teleport.stats', {\n localPeerId,\n remotePeerId,\n bytesSent: stats.bytesSent,\n bytesSentRate: stats.bytesSentRate,\n bytesReceived: stats.bytesReceived,\n bytesReceivedRate: stats.bytesReceivedRate,\n channels: stats.channels,\n });\n\n // last = stats;\n });\n }\n\n @logInfo\n get sessionIdString(): string {\n return this._sessionId ? this._sessionId.truncate() : 'none';\n }\n\n get stream(): Duplex {\n return this._muxer.stream;\n }\n\n get stats(): Event<MuxerStats> {\n return this._muxer.statsUpdated;\n }\n\n /**\n * Blocks until the handshake is complete.\n */\n\n async open(sessionId: PublicKey = PublicKey.random()) {\n // invariant(sessionId);\n this._sessionId = sessionId;\n log('open');\n this._setExtension('dxos.mesh.teleport.control', this._control);\n await this._openExtension('dxos.mesh.teleport.control');\n this._open = true;\n this._muxer.setSessionId(sessionId);\n }\n\n async close(err?: Error) {\n // TODO(dmaretskyi): Try soft close.\n await this.destroy(err);\n }\n\n @synchronized\n async abort(err?: Error) {\n if (this._aborting || this._destroying) {\n return;\n }\n this._aborting = true;\n\n if (this._ctx.disposed) {\n return;\n }\n\n await this._ctx.dispose();\n\n for (const extension of this._extensions.values()) {\n try {\n await extension.onAbort(err);\n } catch (err: any) {\n log.catch(err);\n }\n }\n\n await this._muxer.destroy(err);\n }\n\n @synchronized\n // TODO(nf): analyze callers and consider abort instead\n async destroy(err?: Error) {\n if (this._destroying || this._aborting) {\n return;\n }\n this._destroying = true;\n if (this._ctx.disposed) {\n return;\n }\n\n await this._ctx.dispose();\n\n for (const extension of this._extensions.values()) {\n try {\n await extension.onClose(err);\n } catch (err: any) {\n log.catch(err);\n }\n }\n\n await this._muxer.close();\n }\n\n addExtension(name: string, extension: TeleportExtension) {\n if (!this._open) {\n throw new Error('Not open');\n }\n\n log('addExtension', { name });\n this._setExtension(name, extension);\n\n // Perform the registration in a separate tick as this might block while the remote side is opening the extension.\n scheduleTask(this._ctx, async () => {\n try {\n await this._control.registerExtension(name);\n } catch (err) {\n if (err instanceof RpcClosedError) {\n return;\n }\n throw err;\n }\n });\n\n if (this._remoteExtensions.has(name)) {\n // Open the extension in a separate tick.\n scheduleTask(this._ctx, async () => {\n await this._openExtension(name);\n });\n }\n }\n\n private _setExtension(extensionName: string, extension: TeleportExtension) {\n invariant(!extensionName.includes('/'), 'Invalid extension name');\n invariant(!this._extensions.has(extensionName), 'Extension already exists');\n this._extensions.set(extensionName, extension);\n }\n\n private async _openExtension(extensionName: string) {\n log('open extension', { extensionName });\n const extension = this._extensions.get(extensionName) ?? failUndefined();\n\n const context: ExtensionContext = {\n initiator: this.initiator,\n localPeerId: this.localPeerId,\n remotePeerId: this.remotePeerId,\n createPort: async (channelName: string, opts?: CreateChannelOpts) => {\n invariant(!channelName.includes('/'), 'Invalid channel name');\n return this._muxer.createPort(`${extensionName}/${channelName}`, opts);\n },\n createStream: async (channelName: string, opts?: CreateChannelOpts) => {\n invariant(!channelName.includes('/'), 'Invalid channel name');\n return this._muxer.createStream(`${extensionName}/${channelName}`, opts);\n },\n close: (err) => {\n void runInContextAsync(this._ctx, async () => {\n await this.close(err);\n });\n },\n };\n\n await extension.onOpen(context);\n log('extension opened', { extensionName });\n }\n}\n\nexport type ExtensionContext = {\n /**\n * One of the peers will be designated an initiator.\n */\n initiator: boolean;\n localPeerId: PublicKey;\n remotePeerId: PublicKey;\n createStream(tag: string, opts?: CreateChannelOpts): Promise<Duplex>;\n createPort(tag: string, opts?: CreateChannelOpts): Promise<RpcPort>;\n close(err?: Error): void;\n};\n\nexport interface TeleportExtension {\n onOpen(context: ExtensionContext): Promise<void>;\n onClose(err?: Error): Promise<void>;\n onAbort(err?: Error): Promise<void>;\n}\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { asyncTimeout, scheduleTaskInterval, TimeoutError as AsyncTimeoutError } from '@dxos/async';\nimport { Context } from '@dxos/context';\nimport { type PublicKey } from '@dxos/keys';\nimport { log } from '@dxos/log';\nimport { schema, RpcClosedError } from '@dxos/protocols';\nimport { type ControlService } from '@dxos/protocols/proto/dxos/mesh/teleport/control';\nimport { createProtoRpcPeer, type ProtoRpcPeer } from '@dxos/rpc';\nimport { Callback } from '@dxos/util';\n\nimport { type ExtensionContext, type TeleportExtension } from './teleport';\n\nconst HEARTBEAT_RTT_WARN_THRESH = 10_000;\n\ntype ControlRpcBundle = {\n Control: ControlService;\n};\n\ntype ControlExtensionOpts = {\n heartbeatInterval: number;\n heartbeatTimeout: number;\n onTimeout: (err: any) => void;\n};\n\nexport class ControlExtension implements TeleportExtension {\n private readonly _ctx = new Context({\n onError: (err) => {\n this._extensionContext.close(err);\n },\n });\n\n public readonly onExtensionRegistered = new Callback<(extensionName: string) => void>();\n\n private _extensionContext!: ExtensionContext;\n private _rpc!: ProtoRpcPeer<{ Control: ControlService }>;\n\n constructor(\n private readonly opts: ControlExtensionOpts,\n private readonly localPeerId: PublicKey,\n private readonly remotePeerId: PublicKey,\n ) {}\n\n async registerExtension(name: string) {\n await this._rpc.rpc.Control.registerExtension({ name });\n }\n\n async onOpen(extensionContext: ExtensionContext): Promise<void> {\n this._extensionContext = extensionContext;\n\n this._rpc = createProtoRpcPeer<ControlRpcBundle, ControlRpcBundle>({\n requested: {\n Control: schema.getService('dxos.mesh.teleport.control.ControlService'),\n },\n exposed: {\n Control: schema.getService('dxos.mesh.teleport.control.ControlService'),\n },\n handlers: {\n Control: {\n registerExtension: async (request) => {\n this.onExtensionRegistered.call(request.name);\n },\n heartbeat: async (request) => {\n log('received heartbeat request', {\n ts: request.requestTimestamp,\n localPeerId: this.localPeerId.truncate(),\n remotePeerId: this.remotePeerId.truncate(),\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 log('heartbeat RTT', {\n rtt: now - resp.requestTimestamp.getTime(),\n localPeerId: this.localPeerId.truncate(),\n remotePeerId: this.remotePeerId.truncate(),\n });\n }\n }\n } catch (err: any) {\n const now = Date.now();\n if (err instanceof RpcClosedError) {\n log('ignoring RpcClosedError in heartbeat');\n return;\n }\n if (err instanceof AsyncTimeoutError) {\n log('timeout waiting for heartbeat response', { err, delay: now - reqTS.getTime() });\n this.opts.onTimeout(err);\n } else {\n log.info('other error waiting for heartbeat response', { err, delay: now - reqTS.getTime() });\n this.opts.onTimeout(err);\n }\n }\n },\n this.opts.heartbeatInterval,\n );\n }\n\n async onClose(err?: Error): Promise<void> {\n await this._ctx.dispose();\n await this._rpc.close();\n }\n\n async onAbort(err?: Error | undefined): Promise<void> {\n await this._ctx.dispose();\n await this._rpc.abort();\n }\n}\n", "//\n// Copyright 2022 DXOS.org\n//\n\nimport { Duplex } from 'node:stream';\n\nimport { Event } from '@dxos/async';\nimport { invariant } from '@dxos/invariant';\nimport { log } from '@dxos/log';\n\nimport { type RpcPort } from './rpc-port';\n\nconst FRAME_LENGTH_SIZE = 2;\n\n/**\n * Converts a stream of binary messages into a framed RpcPort.\n * Buffers are written prefixed by their length encoded as a varint.\n */\nexport class Framer {\n // private readonly _tagBuffer = Buffer.alloc(4)\n private _messageCb?: (msg: Uint8Array) => void = undefined;\n private _subscribeCb?: () => void = undefined;\n private _buffer?: Buffer = undefined; // The rest of the bytes from the previous write call.\n private _sendCallbacks: (() => void)[] = [];\n\n private _bytesSent = 0;\n private _bytesReceived = 0;\n\n private _writable = true;\n\n readonly drain = new Event();\n\n // TODO(egorgripasov): Consider using a Transform stream if it provides better backpressure handling.\n private readonly _stream = new Duplex({\n objectMode: false,\n read: () => {\n this._processResponseQueue();\n },\n write: (chunk, encoding, callback) => {\n invariant(!this._subscribeCb, 'Internal Framer bug. Concurrent writes detected.');\n\n this._bytesReceived += chunk.length;\n\n if (this._buffer && this._buffer.length > 0) {\n this._buffer = Buffer.concat([this._buffer, chunk]);\n } else {\n this._buffer = chunk;\n }\n\n if (this._messageCb) {\n this._popFrames();\n callback();\n } else {\n this._subscribeCb = () => {\n // Schedule the processing of the chunk after the peer subscribes to the messages.\n this._popFrames();\n this._subscribeCb = undefined;\n callback();\n };\n }\n },\n });\n\n public readonly port: RpcPort = {\n send: (message) => {\n // log('write', { len: message.length, frame: Buffer.from(message).toString('hex') })\n return new Promise<void>((resolve) => {\n const frame = encodeFrame(message);\n this._bytesSent += frame.length;\n this._writable = this._stream.push(frame);\n if (!this._writable) {\n this._sendCallbacks.push(resolve);\n } else {\n resolve();\n }\n });\n },\n subscribe: (callback) => {\n invariant(!this._messageCb, 'Rpc port already has a message listener.');\n this._messageCb = callback;\n this._subscribeCb?.();\n return () => {\n this._messageCb = undefined;\n };\n },\n };\n\n get stream(): Duplex {\n return this._stream;\n }\n\n get bytesSent() {\n return this._bytesSent;\n }\n\n get bytesReceived() {\n return this._bytesReceived;\n }\n\n get writable() {\n return this._writable;\n }\n\n private _processResponseQueue() {\n const responseQueue = this._sendCallbacks;\n this._sendCallbacks = [];\n this._writable = true;\n this.drain.emit();\n responseQueue.forEach((cb) => cb());\n }\n\n /**\n * Attempts to pop frames from the buffer and call the message callback.\n */\n private _popFrames() {\n let offset = 0;\n while (offset < this._buffer!.length) {\n const frame = decodeFrame(this._buffer!, offset);\n\n if (!frame) {\n break; // Couldn't read frame but there are still bytes left in the buffer.\n }\n offset += frame.bytesConsumed;\n // TODO(dmaretskyi): Possible bug if the peer unsubscribes while we're reading frames.\n // log('read', { len: frame.payload.length, frame: Buffer.from(frame.payload).toString('hex') })\n this._messageCb!(frame.payload);\n }\n\n if (offset < this._buffer!.length) {\n // Save the rest of the bytes for the next write call.\n this._buffer = this._buffer!.subarray(offset);\n } else {\n this._buffer = undefined;\n }\n }\n\n destroy() {\n // TODO(dmaretskyi): Call stream.end() instead?\n if (this._stream.readableLength > 0) {\n log.info('framer destroyed while there are still read bytes in the buffer.');\n }\n if (this._stream.writableLength > 0) {\n log.warn('framer destroyed while there are still write bytes in the buffer.');\n }\n this._stream.destroy();\n }\n}\n\n/**\n * Attempts to read a frame from the input buffer.\n */\nexport const decodeFrame = (buffer: Buffer, offset: number): { payload: Buffer; bytesConsumed: number } | undefined => {\n if (buffer.length < offset + FRAME_LENGTH_SIZE) {\n // Not enough bytes to read the frame length.\n return undefined;\n }\n\n const frameLength = buffer.readUInt16BE(offset);\n const bytesConsumed = FRAME_LENGTH_SIZE + frameLength;\n\n if (buffer.length < offset + bytesConsumed) {\n // Not enough bytes to read the frame.\n return undefined;\n }\n\n const payload = buffer.subarray(offset + FRAME_LENGTH_SIZE, offset + bytesConsumed);\n\n return {\n payload,\n bytesConsumed,\n };\n};\n\nexport const encodeFrame = (payload: Uint8Array): Buffer => {\n const frame = Buffer.allocUnsafe(FRAME_LENGTH_SIZE + payload.length);\n frame.writeUInt16BE(payload.length, 0);\n frame.set(payload, FRAME_LENGTH_SIZE);\n return frame;\n};\n", "//\n// Copyright 2022 DXOS.org\n//\n\nimport { Duplex } from 'node:stream';\n\nimport { scheduleTaskInterval, Event, Trigger, asyncTimeout } from '@dxos/async';\nimport { Context } from '@dxos/context';\nimport { failUndefined } from '@dxos/debug';\nimport { invariant } from '@dxos/invariant';\nimport { type PublicKey } from '@dxos/keys';\nimport { log, logInfo } from '@dxos/log';\nimport { schema, TimeoutError } from '@dxos/protocols';\nimport { type ConnectionInfo } from '@dxos/protocols/proto/dxos/devtools/swarm';\nimport { Command } from '@dxos/protocols/proto/dxos/mesh/muxer';\n\nimport { Balancer } from './balancer';\nimport { type RpcPort } from './rpc-port';\n\nconst Command = schema.getCodecForType('dxos.mesh.muxer.Command');\n\nconst DEFAULT_SEND_COMMAND_TIMEOUT = 60_000;\nconst DESTROY_COMMAND_SEND_TIMEOUT = 5_000;\n\nexport type CleanupCb = void | (() => void);\n\nexport type CreateChannelOpts = {\n /**\n * MIME type of the wire content.\n *\n * Examples:\n * - application/octet-stream\n * - application/x-protobuf; messageType=\"dxos.rpc.Message\"\n */\n contentType?: string;\n};\n\nexport type MuxerStats = {\n timestamp: number;\n channels: ConnectionInfo.StreamStats[];\n bytesSent: number;\n bytesReceived: number;\n bytesSentRate?: number;\n bytesReceivedRate?: number;\n readBufferSize?: number;\n writeBufferSize?: number;\n};\n\nconst STATS_INTERVAL = 1_000;\nconst MAX_SAFE_FRAME_SIZE = 1_000_000;\nconst SYSTEM_CHANNEL_ID = 0;\nconst GRACEFUL_CLOSE_TIMEOUT = 3_000;\n\ntype Channel = {\n /**\n * Our local channel ID.\n * Incoming Data commands will have this ID.\n */\n id: number;\n tag: string;\n\n /**\n * Remote id is set when we receive an OpenChannel command.\n * The originating Data commands should carry this id.\n */\n remoteId: null | number;\n\n contentType?: string;\n\n /**\n * Send buffer.\n */\n buffer: Uint8Array[];\n\n /**\n * Set when we initialize a NodeJS stream or an RPC port consuming the channel.\n */\n push: null | ((data: Uint8Array) => void);\n\n destroy: null | ((err?: Error) => void);\n\n stats: {\n bytesSent: number;\n bytesReceived: number;\n };\n};\n\ntype CreateChannelInternalParams = {\n tag: string;\n contentType?: string;\n};\n\n/**\n * Channel based multiplexer.\n *\n * Can be used to open a number of channels represented by streams or RPC ports.\n * Performs framing for RPC ports.\n * Will buffer data until the remote peer opens the channel.\n *\n * The API will not advertise channels that as they are opened by the remote peer.\n * A higher level API (could be build on top of this muxer) for channel discovery is required.\n */\nexport class Muxer {\n private readonly _balancer = new Balancer(SYSTEM_CHANNEL_ID);\n private readonly _channelsByLocalId = new Map<number, Channel>();\n private readonly _channelsByTag = new Map<string, Channel>();\n private readonly _ctx = new Context();\n private _sessionId?: PublicKey;\n\n private _nextId = 1;\n\n private _closing = false;\n private _destroying = false;\n private _disposed = false;\n\n private _lastStats?: MuxerStats = undefined;\n private readonly _lastChannelStats = new Map<number, Channel['stats']>();\n\n public afterClosed = new Event<Error | undefined>();\n public statsUpdated = new Event<MuxerStats>();\n\n public readonly stream = this._balancer.stream;\n\n constructor() {\n // Add a channel for control messages.\n this._balancer.incomingData.on(async (msg) => {\n await this._handleCommand(Command.decode(msg));\n });\n }\n\n setSessionId(sessionId: PublicKey) {\n this._sessionId = sessionId;\n }\n\n @logInfo\n get sessionIdString(): string {\n return this._sessionId ? this._sessionId.truncate() : 'none';\n }\n\n /**\n * Creates a duplex Node.js-style stream.\n * The remote peer is expected to call `createStream` with the same tag.\n * The stream is immediately readable and writable.\n * NOTE: The data will be buffered until the stream is opened remotely with the same tag (may cause a memory leak).\n */\n async createStream(tag: string, opts: CreateChannelOpts = {}): Promise<Duplex> {\n const channel = this._getOrCreateStream({\n tag,\n contentType: opts.contentType,\n });\n invariant(!channel.push, `Channel already open: ${tag}`);\n\n const stream = new Duplex({\n write: (data, encoding, callback) => {\n this._sendData(channel, data)\n .then(() => callback())\n .catch(callback);\n // TODO(dmaretskyi): Should we error if sending data has errored?\n },\n read: () => {}, // No-op. We will push data when we receive it.\n });\n\n channel.push = (data) => {\n channel.stats.bytesReceived += data.length;\n stream.push(data);\n };\n channel.destroy = (err) => {\n // TODO(dmaretskyi): Call stream.end() instead?\n if (err) {\n if (stream.listeners('error').length > 0) {\n stream.destroy(err);\n } else {\n stream.destroy();\n }\n } else {\n stream.destroy();\n }\n };\n\n // NOTE: Make sure channel.push is set before sending the command.\n try {\n await this._sendCommand(\n {\n openChannel: {\n id: channel.id,\n tag: channel.tag,\n contentType: channel.contentType,\n },\n },\n SYSTEM_CHANNEL_ID,\n );\n } catch (err: any) {\n this._destroyChannel(channel, err);\n throw err;\n }\n\n return stream;\n }\n\n /**\n * Creates an RPC port.\n * The remote peer is expected to call `createPort` with the same tag.\n * The port is immediately usable.\n * NOTE: The data will be buffered until the stream is opened remotely with the same tag (may cause a memory leak).\n */\n async createPort(tag: string, opts: CreateChannelOpts = {}): Promise<RpcPort> {\n const channel = this._getOrCreateStream({\n tag,\n contentType: opts.contentType,\n });\n invariant(!channel.push, `Channel already open: ${tag}`);\n\n // We need to buffer incoming data until the port is subscribed to.\n let inboundBuffer: Uint8Array[] = [];\n let callback: ((data: Uint8Array) => void) | undefined;\n\n channel.push = (data) => {\n channel.stats.bytesReceived += data.length;\n if (callback) {\n callback(data);\n } else {\n inboundBuffer.push(data);\n }\n };\n\n const port: RpcPort = {\n send: async (data: Uint8Array, timeout?: number) => {\n await this._sendData(channel, data, timeout);\n // TODO(dmaretskyi): Debugging.\n // appendFileSync('log.json', JSON.stringify(schema.getCodecForType('dxos.rpc.RpcMessage').decode(data), null, 2) + '\\n')\n },\n subscribe: (cb: (data: Uint8Array) => void) => {\n invariant(!callback, 'Only one subscriber is allowed');\n callback = cb;\n for (const data of inboundBuffer) {\n cb(data);\n }\n inboundBuffer = [];\n },\n };\n\n // NOTE: Make sure channel.push is set before sending the command.\n try {\n await this._sendCommand(\n {\n openChannel: {\n id: channel.id,\n tag: channel.tag,\n contentType: channel.contentType,\n },\n },\n SYSTEM_CHANNEL_ID,\n );\n } catch (err: any) {\n this._destroyChannel(channel, err);\n throw err;\n }\n\n return port;\n }\n\n // initiate graceful close\n\n async close(err?: Error) {\n if (this._destroying) {\n log('already destroying, ignoring graceful close request');\n return;\n }\n if (this._closing) {\n log('already closing, ignoring graceful close request');\n return;\n }\n\n this._closing = true;\n\n await this._sendCommand(\n {\n close: {\n error: err?.message,\n },\n },\n SYSTEM_CHANNEL_ID,\n DESTROY_COMMAND_SEND_TIMEOUT,\n ).catch(async (err: any) => {\n log('error sending close command', { err });\n\n await this._dispose(err);\n });\n\n // don't return until close is complete or timeout\n await asyncTimeout(this._dispose(err), GRACEFUL_CLOSE_TIMEOUT, new TimeoutError('gracefully closing muxer'));\n }\n\n // force close without confirmation\n\n async destroy(err?: Error) {\n if (this._destroying) {\n log('already destroying, ignoring destroy request');\n return;\n }\n this._destroying = true;\n void this._ctx.dispose();\n if (this._closing) {\n log('destroy cancelling graceful close');\n this._closing = false;\n } else {\n // as a courtesy to the peer, send destroy command but ignore errors sending\n\n await this._sendCommand(\n {\n close: {\n error: err?.message,\n },\n },\n SYSTEM_CHANNEL_ID,\n ).catch(async (err: any) => {\n log('error sending courtesy close command', { err });\n });\n }\n\n this._dispose(err).catch((err) => {\n log('error disposing after destroy', { err });\n });\n }\n\n // complete the termination, graceful or otherwise\n\n async _dispose(err?: Error) {\n if (this._disposed) {\n log('already destroyed, ignoring dispose request');\n return;\n }\n\n void this._ctx.dispose();\n\n await this._balancer.destroy();\n\n for (const channel of this._channelsByTag.values()) {\n channel.destroy?.(err);\n }\n this._disposed = true;\n await this._emitStats();\n\n this.afterClosed.emit(err);\n\n // Make it easy for GC.\n this._channelsByLocalId.clear();\n this._channelsByTag.clear();\n }\n\n private async _handleCommand(cmd: Command) {\n if (this._disposed) {\n log.warn('Received command after disposed', { cmd });\n return;\n }\n\n if (cmd.close) {\n if (!this._closing) {\n log('received peer close, initiating my own graceful close');\n await this.close(new Error('received peer close'));\n } else {\n log('received close from peer, already closing');\n }\n\n return;\n }\n\n if (cmd.openChannel) {\n const channel = this._getOrCreateStream({\n tag: cmd.openChannel.tag,\n contentType: cmd.openChannel.contentType,\n });\n channel.remoteId = cmd.openChannel.id;\n\n // Flush any buffered data.\n for (const data of channel.buffer) {\n await this._sendCommand(\n {\n data: {\n channelId: channel.remoteId!,\n data,\n },\n },\n channel.id,\n );\n }\n channel.buffer = [];\n } else if (cmd.data) {\n const stream = this._channelsByLocalId.get(cmd.data.channelId) ?? failUndefined();\n if (!stream.push) {\n log.warn('Received data for channel before it was opened', { tag: stream.tag });\n return;\n }\n stream.push(cmd.data.data);\n }\n }\n\n private async _sendCommand(cmd: Command, channelId = -1, timeout = DEFAULT_SEND_COMMAND_TIMEOUT) {\n if (this._disposed) {\n log.info('ignoring sendCommand after disposed', { cmd });\n return;\n }\n try {\n const trigger = new Trigger<void>();\n this._balancer.pushData(Command.encode(cmd), trigger, channelId);\n await trigger.wait({ timeout });\n } catch (err: any) {\n await this.destroy(err);\n }\n }\n\n private _getOrCreateStream(params: CreateChannelInternalParams): Channel {\n if (this._channelsByTag.size === 0) {\n scheduleTaskInterval(this._ctx, async () => this._emitStats(), STATS_INTERVAL);\n }\n let channel = this._channelsByTag.get(params.tag);\n if (!channel) {\n channel = {\n id: this._nextId++,\n remoteId: null,\n tag: params.tag,\n contentType: params.contentType,\n buffer: [],\n push: null,\n destroy: null,\n stats: {\n bytesSent: 0,\n bytesReceived: 0,\n },\n };\n this._channelsByTag.set(channel.tag, channel);\n this._channelsByLocalId.set(channel.id, channel);\n this._balancer.addChannel(channel.id);\n }\n\n return channel;\n }\n\n private async _sendData(channel: Channel, data: Uint8Array, timeout?: number): Promise<void> {\n if (data.length > MAX_SAFE_FRAME_SIZE) {\n log.warn('frame size exceeds maximum safe value', { size: data.length, threshold: MAX_SAFE_FRAME_SIZE });\n }\n\n channel.stats.bytesSent += data.length;\n if (channel.remoteId === null) {\n // Remote side has not opened the channel yet.\n channel.buffer.push(data);\n return;\n }\n await this._sendCommand(\n {\n data: {\n channelId: channel.remoteId,\n data,\n },\n },\n channel.id,\n timeout,\n );\n }\n\n private _destroyChannel(channel: Channel, err?: Error) {\n if (channel.destroy) {\n channel.destroy(err);\n }\n\n this._channelsByLocalId.delete(channel.id);\n this._channelsByTag.delete(channel.tag);\n }\n\n private async _emitStats() {\n if (this._disposed || this._destroying) {\n if (!this._lastStats) {\n return;\n }\n\n // zero out counting stats to not skew metrics.\n const lastStats = this._lastStats;\n this._lastStats = undefined;\n\n lastStats.readBufferSize = 0;\n lastStats.writeBufferSize = 0;\n for (const c of lastStats.channels) {\n c.writeBufferSize = 0;\n }\n this.statsUpdated.emit(lastStats);\n\n this._lastChannelStats.clear();\n return;\n }\n\n const bytesSent = this._balancer.bytesSent;\n const bytesReceived = this._balancer.bytesReceived;\n\n const now = Date.now();\n const interval = this._lastStats ? (now - this._lastStats.timestamp) / 1_000 : 0;\n const calculateThroughput = (current: Channel['stats'], last: Channel['stats'] | undefined) =>\n last\n ? {\n bytesSentRate: interval ? (current.bytesSent - last.bytesSent) / interval : undefined,\n bytesReceivedRate: interval ? (current.bytesReceived - last.bytesReceived) / interval : undefined,\n }\n : {};\n\n this._lastStats = {\n timestamp: now,\n channels: Array.from(this._channelsByTag.values()).map((channel) => {\n const stats: ConnectionInfo.StreamStats = {\n id: channel.id,\n tag: channel.tag,\n contentType: channel.contentType,\n writeBufferSize: channel.buffer.length,\n bytesSent: channel.stats.bytesSent,\n bytesReceived: channel.stats.bytesReceived,\n ...calculateThroughput(channel.stats, this._lastChannelStats.get(channel.id)),\n };\n\n this._lastChannelStats.set(channel.id, stats);\n return stats;\n }),\n bytesSent,\n bytesReceived,\n ...calculateThroughput({ bytesSent, bytesReceived }, this._lastStats),\n readBufferSize: this._balancer.stream.readableLength,\n writeBufferSize: this._balancer.stream.writableLength,\n };\n\n this.statsUpdated.emit(this._lastStats);\n }\n}\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport * as varint from 'varint';\n\nimport { type Trigger, Event } from '@dxos/async';\nimport { invariant } from '@dxos/invariant';\nimport { log } from '@dxos/log';\n\nimport { Framer } from './framer';\n\nconst MAX_CHUNK_SIZE = 8192;\n\ntype Chunk = {\n chunk: Uint8Array;\n channelId: number;\n dataLength?: number;\n};\n\ntype ChunkEnvelope = {\n msg: Buffer;\n trigger?: Trigger;\n};\n\ntype ChannelBuffer = {\n buffer: Buffer;\n msgLength: number;\n};\n\n/**\n * Load balancer for handling asynchronous calls from multiple channels.\n *\n * Manages a queue of calls from different channels and ensures that the calls\n * are processed in a balanced manner in a round-robin fashion.\n */\nexport class Balancer {\n private _lastCallerIndex = 0;\n private _channels: number[] = [];\n\n private readonly _framer = new Framer();\n // TODO(egorgripasov): Will cause a memory leak if channels do not appreciate the backpressure.\n private readonly _sendBuffers: Map<number, ChunkEnvelope[]> = new Map();\n private readonly _receiveBuffers = new Map<number, ChannelBuffer>();\n\n private _sending = false;\n public incomingData = new Event<Uint8Array>();\n public readonly stream = this._framer.stream;\n\n constructor(private readonly _sysChannelId: number) {\n this._channels.push(_sysChannelId);\n\n // Handle incoming messages.\n this._framer.port.subscribe(this._processIncomingMessage.bind(this));\n }\n\n get bytesSent() {\n return this._framer.bytesSent;\n }\n\n get bytesReceived() {\n return this._framer.bytesReceived;\n }\n\n get buffersCount() {\n return this._sendBuffers.size;\n }\n\n addChannel(channel: number) {\n this._channels.push(channel);\n }\n\n pushData(data: Uint8Array, trigger: Trigger, channelId: number) {\n this._enqueueChunk(data, trigger, channelId);\n this._sendChunks().catch((err) => log.catch(err));\n }\n\n destroy() {\n if (this._sendBuffers.size !== 0) {\n log.info('destroying balancer with pending calls');\n }\n this._sendBuffers.clear();\n this._framer.destroy();\n }\n\n private _processIncomingMessage(msg: Uint8Array) {\n const { channelId, dataLength, chunk } = decodeChunk(msg, (channelId) => !this._receiveBuffers.has(channelId));\n if (!this._receiveBuffers.has(channelId)) {\n if (chunk.length < dataLength!) {\n this._receiveBuffers.set(channelId, {\n buffer: Buffer.from(chunk),\n msgLength: dataLength!,\n });\n } else {\n this.incomingData.emit(chunk);\n }\n } else {\n const channelBuffer = this._receiveBuffers.get(channelId)!;\n channelBuffer.buffer = Buffer.concat([channelBuffer.buffer, chunk]);\n if (channelBuffer.buffer.length < channelBuffer.msgLength) {\n return;\n }\n const msg = channelBuffer.buffer;\n this._receiveBuffers.delete(channelId);\n this.incomingData.emit(msg);\n }\n }\n\n private _getNextCallerId() {\n if (this._sendBuffers.has(this._sysChannelId)) {\n return this._sysChannelId;\n }\n\n const index = this._lastCallerIndex;\n this._lastCallerIndex = (this._lastCallerIndex + 1) % this._channels.length;\n\n return this._channels[index];\n }\n\n private _enqueueChunk(data: Uint8Array, trigger: Trigger, channelId: number) {\n if (!this._channels.includes(channelId)) {\n throw new Error(`Unknown channel ${channelId}`);\n }\n\n if (!this._sendBuffers.has(channelId)) {\n this._sendBuffers.set(channelId, []);\n }\n\n const sendBuffer = this._sendBuffers.get(channelId)!;\n\n const chunks = [];\n for (let idx = 0; idx < data.length; idx += MAX_CHUNK_SIZE) {\n chunks.push(data.subarray(idx, idx + MAX_CHUNK_SIZE));\n }\n\n chunks.forEach((chunk, index) => {\n const msg = encodeChunk({\n chunk,\n channelId,\n dataLength: index === 0 ? data.length : undefined,\n });\n sendBuffer.push({ msg, trigger: index === chunks.length - 1 ? trigger : undefined });\n });\n }\n\n // get the next chunk or null if there are no chunks remaining\n\n private _getNextChunk(): ChunkEnvelope | null {\n let chunk;\n while (this._sendBuffers.size > 0) {\n const channelId = this._getNextCallerId();\n const sendBuffer = this._sendBuffers.get(channelId);\n if (!sendBuffer) {\n continue;\n }\n\n chunk = sendBuffer.shift();\n if (!chunk) {\n continue;\n }\n if (sendBuffer.length === 0) {\n this._sendBuffers.delete(channelId);\n }\n return chunk;\n }\n return null;\n }\n\n private async _sendChunks() {\n if (this._sending) {\n return;\n }\n this._sending = true;\n let chunk: ChunkEnvelope | null;\n chunk = this._getNextChunk();\n while (chunk) {\n // TODO(nf): determine whether this is needed since we await the chunk send\n if (!this._framer.writable) {\n log('PAUSE for drain');\n await this._framer.drain.waitForCount(1);\n log('RESUME for drain');\n }\n try {\n await this._framer.port.send(chunk.msg);\n chunk.trigger?.wake();\n } catch (err: any) {\n log('Error sending chunk', { err });\n chunk.trigger?.throw(err);\n }\n chunk = this._getNextChunk();\n }\n invariant(this._sendBuffers.size === 0, 'sendBuffers not empty');\n this._sending = false;\n }\n}\n\nexport const encodeChunk = ({ channelId, dataLength, chunk }: Chunk): Buffer => {\n const channelTagLength = varint.encodingLength(channelId);\n const dataLengthLength = dataLength ? varint.encodingLength(dataLength) : 0;\n const message = Buffer.allocUnsafe(channelTagLength + dataLengthLength + chunk.length);\n varint.encode(channelId, message);\n if (dataLength) {\n varint.encode(dataLength, message, channelTagLength);\n }\n message.set(chunk, channelTagLength + dataLengthLength);\n return message;\n};\n\nexport const decodeChunk = (data: Uint8Array, withLength: (channelId: number) => boolean): Chunk => {\n const channelId = varint.decode(data);\n let dataLength: number | undefined;\n let offset = varint.decode.bytes;\n\n if (withLength(channelId)) {\n dataLength = varint.decode(data, offset);\n offset += varint.decode.bytes;\n }\n\n const chunk = data.subarray(offset);\n\n return { channelId, dataLength, chunk };\n};\n", "//\n// Copyright 2022 DXOS.org\n//\n\nimport { asyncTimeout, Trigger } from '@dxos/async';\nimport { invariant } from '@dxos/invariant';\nimport { log } from '@dxos/log';\nimport { schema } from '@dxos/protocols';\nimport { type TestService } from '@dxos/protocols/proto/example/testing/rpc';\nimport { createProtoRpcPeer, type ProtoRpcPeer } from '@dxos/rpc';\n\nimport { type ExtensionContext, type TeleportExtension } from '../teleport';\n\ninterface TestExtensionCallbacks {\n onOpen?: () => Promise<void>;\n onClose?: () => Promise<void>;\n onAbort?: () => Promise<void>;\n}\n\nexport class TestExtension implements TeleportExtension {\n public readonly open = new Trigger();\n public readonly closed = new Trigger();\n public readonly aborted = new Trigger();\n public extensionContext: ExtensionContext | undefined;\n private _rpc!: ProtoRpcPeer<{ TestService: TestService }>;\n\n constructor(public readonly callbacks: TestExtensionCallbacks = {}) {}\n\n get remotePeerId() {\n return this.extensionContext?.remotePeerId;\n }\n\n async onOpen(context: ExtensionContext) {\n log('onOpen', { localPeerId: context.localPeerId, remotePeerId: context.remotePeerId });\n this.extensionContext = context;\n this._rpc = createProtoRpcPeer<{ TestService: TestService }, { TestService: TestService }>({\n port: await context.createPort('rpc', {\n contentType: 'application/x-protobuf; messageType=\"dxos.rpc.Message\"',\n }),\n requested: {\n TestService: schema.getService('example.testing.rpc.TestService'),\n },\n exposed: {\n TestService: schema.getService('example.testing.rpc.TestService'),\n },\n handlers: {\n TestService: {\n voidCall: async (request) => {\n // Ok.\n },\n testCall: async (request) => {\n return {\n data: request.data,\n };\n },\n },\n },\n timeout: 2000,\n });\n\n await this._rpc.open();\n await this.callbacks.onOpen?.();\n\n this.open.wake();\n }\n\n async onClose(err?: Error) {\n log('onClose', { err });\n await this.callbacks.onClose?.();\n this.closed.wake();\n await this._rpc?.close();\n }\n\n async onAbort(err?: Error) {\n log('onAbort', { err });\n await this.callbacks.onAbort?.();\n this.aborted.wake();\n await this._rpc?.abort();\n }\n\n async test(message = 'test') {\n await this.open.wait({ timeout: 1500 });\n const res = await asyncTimeout(this._rpc.rpc.TestService.testCall({ data: message }), 1500);\n invariant(res.data === message);\n }\n\n /**\n * Force-close the connection.\n */\n async closeConnection(err?: Error) {\n this.extensionContext?.close(err);\n }\n}\n", "//\n// Copyright 2022 DXOS.org\n//\n\nimport { randomBytes } from 'node:crypto';\nimport { type Duplex } from 'node:stream';\n\nimport { Trigger } from '@dxos/async';\nimport { invariant } from '@dxos/invariant';\nimport { log } from '@dxos/log';\nimport { schema } from '@dxos/protocols';\nimport { type TestServiceWithStreams } from '@dxos/protocols/proto/example/testing/rpc';\nimport { createProtoRpcPeer, type ProtoRpcPeer } from '@dxos/rpc';\n\nimport { type ExtensionContext, type TeleportExtension } from '../teleport';\n\ninterface TestExtensionWithStreamsCallbacks {\n onOpen?: () => Promise<void>;\n onClose?: () => Promise<void>;\n onAbort?: () => Promise<void>;\n}\n\nexport class TestExtensionWithStreams implements TeleportExtension {\n public readonly open = new Trigger();\n public readonly closed = new Trigger();\n public readonly aborted = new Trigger();\n private readonly _streams = new Map<string, TestStream>();\n\n public extensionContext: ExtensionContext | undefined;\n private _rpc!: ProtoRpcPeer<{ TestServiceWithStreams: TestServiceWithStreams }>;\n\n constructor(public readonly callbacks: TestExtensionWithStreamsCallbacks = {}) {}\n\n get remotePeerId() {\n return this.extensionContext?.remotePeerId;\n }\n\n private async _openStream(streamTag: string, interval = 5, chunkSize = 2048) {\n invariant(!this._streams.has(streamTag), `Stream already exists: ${streamTag}`);\n\n const networkStream = await this.extensionContext!.createStream(streamTag, {\n contentType: 'application/x-test-stream',\n });\n\n const streamEntry: TestStream = {\n networkStream,\n bytesSent: 0,\n bytesReceived: 0,\n sendErrors: 0,\n receiveErrors: 0,\n startTimestamp: Date.now(),\n };\n\n const pushChunk = () => {\n streamEntry.timer = setTimeout(() => {\n const chunk = randomBytes(chunkSize);\n\n if (\n !networkStream.write(chunk, 'binary', (err) => {\n if (!err) {\n streamEntry.bytesSent += chunk.length;\n } else {\n streamEntry.sendErrors += 1;\n }\n })\n ) {\n networkStream.once('drain', pushChunk);\n } else {\n process.nextTick(pushChunk);\n }\n }, interval);\n };\n\n pushChunk();\n\n this._streams.set(streamTag, streamEntry);\n\n networkStream.on('data', (data) => {\n streamEntry.bytesReceived += data.length;\n });\n\n networkStream.on('error', (err) => {\n streamEntry.receiveErrors += 1;\n });\n\n networkStream.on('close', () => {\n networkStream.removeAllListeners();\n });\n\n streamEntry.reportingTimer = setInterval(() => {\n const { bytesSent, bytesReceived, sendErrors, receiveErrors } = streamEntry;\n // log.info('stream stats', { streamTag, bytesSent, bytesReceived, sendErrors, receiveErrors });\n log.trace('dxos.test.stream-stats', {\n streamTag,\n bytesSent,\n bytesReceived,\n sendErrors,\n receiveErrors,\n from: this.extensionContext?.localPeerId,\n to: this.extensionContext?.remotePeerId,\n });\n }, 100);\n }\n\n private _closeStream(streamTag: string): Stats {\n invariant(this._streams.has(streamTag), `Stream does not exist: ${streamTag}`);\n\n const stream = this._streams.get(streamTag)!;\n\n clearTimeout(stream.timer);\n clearTimeout(stream.reportingTimer);\n\n const { bytesSent, bytesReceived, sendErrors, receiveErrors, startTimestamp } = stream;\n\n stream.networkStream.destroy();\n this._streams.delete(streamTag);\n\n return {\n bytesSent,\n bytesReceived,\n sendErrors,\n receiveErrors,\n runningTime: Date.now() - (startTimestamp ?? 0),\n };\n }\n\n async onOpen(context: ExtensionContext) {\n log('onOpen', { localPeerId: context.localPeerId, remotePeerId: context.remotePeerId });\n this.extensionContext = context;\n this._rpc = createProtoRpcPeer<\n { TestServiceWithStreams: TestServiceWithStreams },\n { TestServiceWithStreams: TestServiceWithStreams }\n >({\n port: await context.createPort('rpc', {\n contentType: 'application/x-protobuf; messageType=\"dxos.rpc.Message\"',\n }),\n requested: {\n TestServiceWithStreams: schema.getService('example.testing.rpc.TestServiceWithStreams'),\n },\n exposed: {\n TestServiceWithStreams: schema.getService('example.testing.rpc.TestServiceWithStreams'),\n },\n handlers: {\n TestServiceWithStreams: {\n requestTestStream: async (request) => {\n const { data: streamTag, streamLoadInterval, streamLoadChunkSize } = request;\n\n await this._openStream(streamTag, streamLoadInterval, streamLoadChunkSize);\n\n return {\n data: streamTag,\n };\n },\n closeTestStream: async (request) => {\n const streamTag = request.data;\n const { bytesSent, bytesReceived, sendErrors, receiveErrors, runningTime } = this._closeStream(streamTag);\n\n return {\n data: streamTag,\n bytesSent,\n bytesReceived,\n sendErrors,\n receiveErrors,\n runningTime,\n };\n },\n },\n },\n timeout: 2000,\n });\n\n await this._rpc.open();\n await this.callbacks.onOpen?.();\n\n this.open.wake();\n }\n\n async onClose(err?: Error) {\n log('onClose', { err });\n await this.callbacks.onClose?.();\n this.closed.wake();\n for (const [streamTag, stream] of Object.entries(this._streams)) {\n log('closing stream', { streamTag });\n clearTimeout(stream.interval);\n stream.networkStream.destroy();\n }\n await this._rpc?.close();\n }\n\n async onAbort(err?: Error) {\n log('onAbort', { err });\n await this.callbacks.onAbort?.();\n this.aborted.wake();\n await this._rpc?.abort();\n }\n\n async addNewStream(streamLoadInterval: number, streamLoadChunkSize: number, streamTag?: string): Promise<string> {\n await this.open.wait({ timeout: 1500 });\n if (!streamTag) {\n streamTag = `stream-${randomBytes(4).toString('hex')}`;\n }\n const { data } = await this._rpc.rpc.TestServiceWithStreams.requestTestStream({\n data: streamTag,\n streamLoadInterval,\n streamLoadChunkSize,\n });\n invariant(data === streamTag);\n\n await this._openStream(streamTag, streamLoadInterval, streamLoadChunkSize);\n return streamTag;\n }\n\n async closeStream(streamTag: string): Promise<TestStreamStats> {\n await this.open.wait({ timeout: 1500 });\n const { data, bytesSent, bytesReceived, sendErrors, receiveErrors, runningTime } =\n await this._rpc.rpc.TestServiceWithStreams.closeTestStream({\n data: streamTag,\n });\n\n invariant(data === streamTag);\n\n const local = this._closeStream(streamTag);\n\n return {\n streamTag,\n stats: {\n local,\n remote: {\n bytesSent,\n bytesReceived,\n sendErrors,\n receiveErrors,\n runningTime,\n },\n },\n };\n }\n\n /**\n * Force-close the connection.\n */\n async closeConnection(err?: Error) {\n this.extensionContext?.close(err);\n }\n}\n\ntype Stats = {\n bytesSent: number;\n bytesReceived: number;\n sendErrors: number;\n receiveErrors: number;\n runningTime: number;\n};\n\nexport type TestStreamStats = {\n streamTag: string;\n stats: {\n local: Stats;\n remote: Stats;\n };\n};\n\ntype TestStream = {\n networkStream: Duplex;\n bytesSent: number;\n bytesReceived: number;\n sendErrors: number;\n receiveErrors: number;\n timer?: NodeJS.Timer;\n startTimestamp?: number;\n reportingTimer?: NodeJS.Timer;\n};\n"],
5
- "mappings": "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",
5
+ "mappings": "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",
6
6
  "names": ["import_invariant", "import_keys", "import_log", "import_async", "import_context", "import_protocols", "import_node_stream", "import_debug", "import_rpc", "HEARTBEAT_RTT_WARN_THRESH", "ControlExtension", "constructor", "opts", "localPeerId", "remotePeerId", "_ctx", "Context", "onError", "err", "_extensionContext", "close", "onExtensionRegistered", "Callback", "registerExtension", "name", "_rpc", "rpc", "Control", "onOpen", "extensionContext", "createProtoRpcPeer", "requested", "schema", "getService", "exposed", "handlers", "request", "call", "heartbeat", "log", "ts", "requestTimestamp", "truncate", "port", "createPort", "contentType", "timeout", "heartbeatTimeout", "open", "scheduleTaskInterval", "reqTS", "Date", "resp", "asyncTimeout", "now", "getTime", "warn", "rtt", "RpcClosedError", "AsyncTimeoutError", "delay", "onTimeout", "info", "heartbeatInterval", "onClose", "dispose", "onAbort", "abort", "FRAME_LENGTH_SIZE", "Framer", "undefined", "_subscribeCb", "_buffer", "_sendCallbacks", "_bytesSent", "_bytesReceived", "_writable", "drain", "Event", "Duplex", "objectMode", "read", "_processResponseQueue", "write", "chunk", "encoding", "callback", "invariant", "length", "Buffer", "concat", "_messageCb", "_popFrames", "send", "message", "Promise", "resolve", "frame", "encodeFrame", "_stream", "push", "subscribe", "stream", "bytesSent", "bytesReceived", "writable", "responseQueue", "emit", "forEach", "cb", "offset", "decodeFrame", "bytesConsumed", "payload", "subarray", "destroy", "readableLength", "writableLength", "buffer", "frameLength", "readUInt16BE", "allocUnsafe", "writeUInt16BE", "set", "MAX_CHUNK_SIZE", "Balancer", "_sysChannelId", "_lastCallerIndex", "_channels", "_framer", "_sendBuffers", "Map", "_receiveBuffers", "_sending", "incomingData", "_processIncomingMessage", "bind", "buffersCount", "size", "addChannel", "channel", "pushData", "data", "trigger", "channelId", "_enqueueChunk", "_sendChunks", "catch", "clear", "msg", "dataLength", "decodeChunk", "has", "from", "msgLength", "channelBuffer", "get", "delete", "_getNextCallerId", "index", "includes", "Error", "sendBuffer", "chunks", "idx", "encodeChunk", "_getNextChunk", "shift", "waitForCount", "wake", "throw", "channelTagLength", "encodingLength", "dataLengthLength", "encode", "withLength", "decode", "bytes", "Command", "getCodecForType", "DEFAULT_SEND_COMMAND_TIMEOUT", "DESTROY_COMMAND_SEND_TIMEOUT", "STATS_INTERVAL", "MAX_SAFE_FRAME_SIZE", "SYSTEM_CHANNEL_ID", "GRACEFUL_CLOSE_TIMEOUT", "Muxer", "_balancer", "_channelsByLocalId", "_channelsByTag", "_nextId", "_closing", "_destroying", "_disposed", "_lastStats", "_lastChannelStats", "afterClosed", "statsUpdated", "on", "_handleCommand", "setSessionId", "sessionId", "_sessionId", "sessionIdString", "createStream", "tag", "_getOrCreateStream", "_sendData", "then", "stats", "listeners", "_sendCommand", "openChannel", "id", "_destroyChannel", "inboundBuffer", "error", "_dispose", "TimeoutError", "values", "_emitStats", "cmd", "remoteId", "failUndefined", "Trigger", "wait", "params", "threshold", "lastStats", "readBufferSize", "writeBufferSize", "c", "channels", "interval", "timestamp", "calculateThroughput", "current", "last", "bytesSentRate", "bytesReceivedRate", "Array", "map", "logInfo", "CONTROL_HEARTBEAT_INTERVAL", "CONTROL_HEARTBEAT_TIMEOUT", "Teleport", "initiator", "_muxer", "_extensions", "_remoteExtensions", "Set", "_open", "_aborting", "PublicKey", "isPublicKey", "_control", "add", "_openExtension", "trace", "random", "_setExtension", "disposed", "extension", "addExtension", "scheduleTask", "extensionName", "context", "channelName", "runInContextAsync", "synchronized", "TestBuilder", "_peers", "createPeer", "peer", "factory", "createPeers", "all", "agent", "connect", "peer1", "peer2", "connection1", "createConnection", "peerId", "connection2", "pipeStreams", "teleport", "openConnection", "disconnect", "connections", "find", "connection", "equals", "closeConnection", "TestPeer", "TestConnection", "stream1", "stream2", "pipeline", "code", "TestExtension", "callbacks", "closed", "aborted", "TestService", "voidCall", "testCall", "test", "res", "TestExtensionWithStreams", "_streams", "_openStream", "streamTag", "chunkSize", "networkStream", "streamEntry", "sendErrors", "receiveErrors", "startTimestamp", "pushChunk", "timer", "setTimeout", "randomBytes", "once", "process", "nextTick", "removeAllListeners", "reportingTimer", "setInterval", "to", "_closeStream", "clearTimeout", "runningTime", "TestServiceWithStreams", "requestTestStream", "streamLoadInterval", "streamLoadChunkSize", "closeTestStream", "Object", "entries", "addNewStream", "toString", "closeStream", "local", "remote"]
7
7
  }
@@ -18,23 +18,23 @@ var __copyProps = (to, from, except, desc) => {
18
18
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
19
  var node_exports = {};
20
20
  __export(node_exports, {
21
- Framer: () => import_chunk_OTE53TBB.Framer,
22
- Muxer: () => import_chunk_OTE53TBB.Muxer,
21
+ Framer: () => import_chunk_QAEYMDIX.Framer,
22
+ Muxer: () => import_chunk_QAEYMDIX.Muxer,
23
23
  RpcExtension: () => RpcExtension,
24
- Teleport: () => import_chunk_OTE53TBB.Teleport,
25
- TestBuilder: () => import_chunk_OTE53TBB.TestBuilder,
26
- TestConnection: () => import_chunk_OTE53TBB.TestConnection,
27
- TestExtension: () => import_chunk_OTE53TBB.TestExtension,
28
- TestExtensionWithStreams: () => import_chunk_OTE53TBB.TestExtensionWithStreams,
29
- TestPeer: () => import_chunk_OTE53TBB.TestPeer,
30
- decodeFrame: () => import_chunk_OTE53TBB.decodeFrame,
31
- encodeFrame: () => import_chunk_OTE53TBB.encodeFrame
24
+ Teleport: () => import_chunk_QAEYMDIX.Teleport,
25
+ TestBuilder: () => import_chunk_QAEYMDIX.TestBuilder,
26
+ TestConnection: () => import_chunk_QAEYMDIX.TestConnection,
27
+ TestExtension: () => import_chunk_QAEYMDIX.TestExtension,
28
+ TestExtensionWithStreams: () => import_chunk_QAEYMDIX.TestExtensionWithStreams,
29
+ TestPeer: () => import_chunk_QAEYMDIX.TestPeer,
30
+ decodeFrame: () => import_chunk_QAEYMDIX.decodeFrame,
31
+ encodeFrame: () => import_chunk_QAEYMDIX.encodeFrame
32
32
  });
33
33
  module.exports = __toCommonJS(node_exports);
34
- var import_chunk_OTE53TBB = require("./chunk-OTE53TBB.cjs");
34
+ var import_chunk_QAEYMDIX = require("./chunk-QAEYMDIX.cjs");
35
35
  var import_invariant = require("@dxos/invariant");
36
36
  var import_rpc = require("@dxos/rpc");
37
- var __dxlog_file = "/home/circleci/project/packages/core/mesh/teleport/src/rpc-extension.ts";
37
+ var __dxlog_file = "/home/runner/work/dxos/dxos/packages/core/mesh/teleport/src/rpc-extension.ts";
38
38
  var RpcExtension = class {
39
39
  constructor(_rpcParams) {
40
40
  this._rpcParams = _rpcParams;
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../../src/rpc-extension.ts"],
4
4
  "sourcesContent": ["//\n// Copyright 2022 DXOS.org\n//\n\nimport { invariant } from '@dxos/invariant';\nimport { createProtoRpcPeer, type ProtoRpcPeer, type ProtoRpcPeerOptions } from '@dxos/rpc';\n\nimport { type ExtensionContext, type TeleportExtension } from './teleport';\n\nexport abstract class RpcExtension<Client, Server> implements TeleportExtension {\n // TODO(dmaretskyi): Type optionally.\n private _extensionContext!: ExtensionContext;\n private _rpc?: ProtoRpcPeer<Client>;\n\n private _isClosed = false;\n\n constructor(private readonly _rpcParams: Omit<ProtoRpcPeerOptions<Client, Server>, 'port' | 'handlers'>) {}\n\n get initiator() {\n return this._extensionContext.initiator;\n }\n\n get localPeerId() {\n return this._extensionContext.localPeerId;\n }\n\n get remotePeerId() {\n return this._extensionContext.remotePeerId;\n }\n\n get rpc(): Client {\n invariant(this._rpc);\n return this._rpc.rpc;\n }\n\n protected abstract getHandlers(): Promise<Server>;\n\n async onOpen(context: ExtensionContext): Promise<void> {\n this._extensionContext = context;\n\n const handlers = await this.getHandlers();\n\n if (this._isClosed) {\n return;\n }\n\n const port = await context.createPort('rpc', {\n contentType: 'application/x-protobuf; messageType=\"dxos.rpc.Message\"',\n });\n this._rpc = createProtoRpcPeer({\n ...this._rpcParams,\n handlers,\n port,\n });\n\n await this._rpc.open();\n }\n\n async onClose(err?: Error | undefined): Promise<void> {\n this._isClosed = true;\n await this._rpc?.close();\n }\n\n async onAbort(err?: Error | undefined): Promise<void> {\n this._isClosed = true;\n await this._rpc?.abort();\n }\n\n close() {\n this._extensionContext.close();\n }\n}\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,uBAA0B;AAC1B,iBAAgF;;AAIzE,IAAeA,eAAf,MAAeA;EAOpBC,YAA6BC,YAA4E;sBAA5EA;SAFrBC,YAAY;EAEsF;EAE1G,IAAIC,YAAY;AACd,WAAO,KAAKC,kBAAkBD;EAChC;EAEA,IAAIE,cAAc;AAChB,WAAO,KAAKD,kBAAkBC;EAChC;EAEA,IAAIC,eAAe;AACjB,WAAO,KAAKF,kBAAkBE;EAChC;EAEA,IAAIC,MAAc;AAChBC,oCAAU,KAAKC,MAAI,QAAA;;;;;;;;;AACnB,WAAO,KAAKA,KAAKF;EACnB;EAIA,MAAMG,OAAOC,SAA0C;AACrD,SAAKP,oBAAoBO;AAEzB,UAAMC,WAAW,MAAM,KAAKC,YAAW;AAEvC,QAAI,KAAKX,WAAW;AAClB;IACF;AAEA,UAAMY,OAAO,MAAMH,QAAQI,WAAW,OAAO;MAC3CC,aAAa;IACf,CAAA;AACA,SAAKP,WAAOQ,+BAAmB;MAC7B,GAAG,KAAKhB;MACRW;MACAE;IACF,CAAA;AAEA,UAAM,KAAKL,KAAKS,KAAI;EACtB;EAEA,MAAMC,QAAQC,KAAwC;AACpD,SAAKlB,YAAY;AACjB,UAAM,KAAKO,MAAMY,MAAAA;EACnB;EAEA,MAAMC,QAAQF,KAAwC;AACpD,SAAKlB,YAAY;AACjB,UAAM,KAAKO,MAAMc,MAAAA;EACnB;EAEAF,QAAQ;AACN,SAAKjB,kBAAkBiB,MAAK;EAC9B;AACF;",
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,uBAA0B;AAC1B,iBAAgF;;AAIzE,IAAeA,eAAf,MAAeA;EAOpBC,YAA6BC,YAA4E;SAA5EA,aAAAA;SAFrBC,YAAY;EAEsF;EAE1G,IAAIC,YAAY;AACd,WAAO,KAAKC,kBAAkBD;EAChC;EAEA,IAAIE,cAAc;AAChB,WAAO,KAAKD,kBAAkBC;EAChC;EAEA,IAAIC,eAAe;AACjB,WAAO,KAAKF,kBAAkBE;EAChC;EAEA,IAAIC,MAAc;AAChBC,oCAAU,KAAKC,MAAI,QAAA;;;;;;;;;AACnB,WAAO,KAAKA,KAAKF;EACnB;EAIA,MAAMG,OAAOC,SAA0C;AACrD,SAAKP,oBAAoBO;AAEzB,UAAMC,WAAW,MAAM,KAAKC,YAAW;AAEvC,QAAI,KAAKX,WAAW;AAClB;IACF;AAEA,UAAMY,OAAO,MAAMH,QAAQI,WAAW,OAAO;MAC3CC,aAAa;IACf,CAAA;AACA,SAAKP,WAAOQ,+BAAmB;MAC7B,GAAG,KAAKhB;MACRW;MACAE;IACF,CAAA;AAEA,UAAM,KAAKL,KAAKS,KAAI;EACtB;EAEA,MAAMC,QAAQC,KAAwC;AACpD,SAAKlB,YAAY;AACjB,UAAM,KAAKO,MAAMY,MAAAA;EACnB;EAEA,MAAMC,QAAQF,KAAwC;AACpD,SAAKlB,YAAY;AACjB,UAAM,KAAKO,MAAMc,MAAAA;EACnB;EAEAF,QAAQ;AACN,SAAKjB,kBAAkBiB,MAAK;EAC9B;AACF;",
6
6
  "names": ["RpcExtension", "constructor", "_rpcParams", "_isClosed", "initiator", "_extensionContext", "localPeerId", "remotePeerId", "rpc", "invariant", "_rpc", "onOpen", "context", "handlers", "getHandlers", "port", "createPort", "contentType", "createProtoRpcPeer", "open", "onClose", "err", "close", "onAbort", "abort"]
7
7
  }
@@ -1 +1 @@
1
- {"inputs":{"packages/core/mesh/teleport/src/muxing/framer.ts":{"bytes":18203,"imports":[{"path":"node:stream","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/teleport/src/muxing/balancer.ts":{"bytes":23856,"imports":[{"path":"varint","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"packages/core/mesh/teleport/src/muxing/framer.ts","kind":"import-statement","original":"./framer"}],"format":"esm"},"packages/core/mesh/teleport/src/muxing/muxer.ts":{"bytes":51497,"imports":[{"path":"node:stream","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"packages/core/mesh/teleport/src/muxing/balancer.ts","kind":"import-statement","original":"./balancer"}],"format":"esm"},"packages/core/mesh/teleport/src/muxing/rpc-port.ts":{"bytes":952,"imports":[],"format":"esm"},"packages/core/mesh/teleport/src/muxing/index.ts":{"bytes":636,"imports":[{"path":"packages/core/mesh/teleport/src/muxing/framer.ts","kind":"import-statement","original":"./framer"},{"path":"packages/core/mesh/teleport/src/muxing/muxer.ts","kind":"import-statement","original":"./muxer"},{"path":"packages/core/mesh/teleport/src/muxing/rpc-port.ts","kind":"import-statement","original":"./rpc-port"}],"format":"esm"},"packages/core/mesh/teleport/src/control-extension.ts":{"bytes":17368,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/rpc","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/teleport/src/teleport.ts":{"bytes":31224,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"packages/core/mesh/teleport/src/control-extension.ts","kind":"import-statement","original":"./control-extension"},{"path":"packages/core/mesh/teleport/src/muxing/index.ts","kind":"import-statement","original":"./muxing"}],"format":"esm"},"packages/core/mesh/teleport/src/testing/test-builder.ts":{"bytes":15691,"imports":[{"path":"node:stream","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"packages/core/mesh/teleport/src/teleport.ts","kind":"import-statement","original":"../teleport"}],"format":"esm"},"packages/core/mesh/teleport/src/testing/test-extension.ts":{"bytes":9929,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/rpc","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/teleport/src/testing/test-extension-with-streams.ts":{"bytes":27094,"imports":[{"path":"node:crypto","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/rpc","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/teleport/src/testing/index.ts":{"bytes":723,"imports":[{"path":"packages/core/mesh/teleport/src/testing/test-builder.ts","kind":"import-statement","original":"./test-builder"},{"path":"packages/core/mesh/teleport/src/testing/test-extension.ts","kind":"import-statement","original":"./test-extension"},{"path":"packages/core/mesh/teleport/src/testing/test-extension-with-streams.ts","kind":"import-statement","original":"./test-extension-with-streams"}],"format":"esm"},"packages/core/mesh/teleport/src/rpc-extension.ts":{"bytes":6056,"imports":[{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/rpc","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/teleport/src/index.ts":{"bytes":736,"imports":[{"path":"packages/core/mesh/teleport/src/muxing/index.ts","kind":"import-statement","original":"./muxing"},{"path":"packages/core/mesh/teleport/src/teleport.ts","kind":"import-statement","original":"./teleport"},{"path":"packages/core/mesh/teleport/src/testing/index.ts","kind":"import-statement","original":"./testing"},{"path":"packages/core/mesh/teleport/src/rpc-extension.ts","kind":"import-statement","original":"./rpc-extension"}],"format":"esm"}},"outputs":{"packages/core/mesh/teleport/dist/lib/node/index.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":3027},"packages/core/mesh/teleport/dist/lib/node/index.cjs":{"imports":[{"path":"packages/core/mesh/teleport/dist/lib/node/chunk-OTE53TBB.cjs","kind":"import-statement"},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/rpc","kind":"import-statement","external":true}],"exports":["Framer","Muxer","RpcExtension","Teleport","TestBuilder","TestConnection","TestExtension","TestExtensionWithStreams","TestPeer","decodeFrame","encodeFrame"],"entryPoint":"packages/core/mesh/teleport/src/index.ts","inputs":{"packages/core/mesh/teleport/src/index.ts":{"bytesInOutput":0},"packages/core/mesh/teleport/src/rpc-extension.ts":{"bytesInOutput":1359}},"bytes":1815},"packages/core/mesh/teleport/dist/lib/node/testing/index.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":93},"packages/core/mesh/teleport/dist/lib/node/testing/index.cjs":{"imports":[{"path":"packages/core/mesh/teleport/dist/lib/node/chunk-OTE53TBB.cjs","kind":"import-statement"}],"exports":["TestBuilder","TestConnection","TestExtension","TestExtensionWithStreams","TestPeer"],"entryPoint":"packages/core/mesh/teleport/src/testing/index.ts","inputs":{},"bytes":266},"packages/core/mesh/teleport/dist/lib/node/chunk-OTE53TBB.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":91455},"packages/core/mesh/teleport/dist/lib/node/chunk-OTE53TBB.cjs":{"imports":[{"path":"node:stream","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/rpc","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"node:stream","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"node:stream","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"varint","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/rpc","kind":"import-statement","external":true},{"path":"node:crypto","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/rpc","kind":"import-statement","external":true}],"exports":["Framer","Muxer","Teleport","TestBuilder","TestConnection","TestExtension","TestExtensionWithStreams","TestPeer","decodeFrame","encodeFrame"],"inputs":{"packages/core/mesh/teleport/src/testing/test-builder.ts":{"bytesInOutput":4943},"packages/core/mesh/teleport/src/teleport.ts":{"bytesInOutput":9574},"packages/core/mesh/teleport/src/control-extension.ts":{"bytesInOutput":4637},"packages/core/mesh/teleport/src/muxing/framer.ts":{"bytesInOutput":4617},"packages/core/mesh/teleport/src/muxing/index.ts":{"bytesInOutput":0},"packages/core/mesh/teleport/src/muxing/muxer.ts":{"bytesInOutput":13709},"packages/core/mesh/teleport/src/muxing/balancer.ts":{"bytesInOutput":6002},"packages/core/mesh/teleport/src/testing/index.ts":{"bytesInOutput":0},"packages/core/mesh/teleport/src/testing/test-extension.ts":{"bytesInOutput":2657},"packages/core/mesh/teleport/src/testing/test-extension-with-streams.ts":{"bytesInOutput":7339}},"bytes":54306}}}
1
+ {"inputs":{"packages/core/mesh/teleport/src/muxing/framer.ts":{"bytes":18208,"imports":[{"path":"node:stream","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/teleport/src/muxing/balancer.ts":{"bytes":23877,"imports":[{"path":"varint","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"packages/core/mesh/teleport/src/muxing/framer.ts","kind":"import-statement","original":"./framer"}],"format":"esm"},"packages/core/mesh/teleport/src/muxing/muxer.ts":{"bytes":51502,"imports":[{"path":"node:stream","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"packages/core/mesh/teleport/src/muxing/balancer.ts","kind":"import-statement","original":"./balancer"}],"format":"esm"},"packages/core/mesh/teleport/src/muxing/rpc-port.ts":{"bytes":1149,"imports":[],"format":"esm"},"packages/core/mesh/teleport/src/muxing/index.ts":{"bytes":641,"imports":[{"path":"packages/core/mesh/teleport/src/muxing/framer.ts","kind":"import-statement","original":"./framer"},{"path":"packages/core/mesh/teleport/src/muxing/muxer.ts","kind":"import-statement","original":"./muxer"},{"path":"packages/core/mesh/teleport/src/muxing/rpc-port.ts","kind":"import-statement","original":"./rpc-port"}],"format":"esm"},"packages/core/mesh/teleport/src/control-extension.ts":{"bytes":17421,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/rpc","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/teleport/src/teleport.ts":{"bytes":31229,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"packages/core/mesh/teleport/src/control-extension.ts","kind":"import-statement","original":"./control-extension"},{"path":"packages/core/mesh/teleport/src/muxing/index.ts","kind":"import-statement","original":"./muxing"}],"format":"esm"},"packages/core/mesh/teleport/src/testing/test-builder.ts":{"bytes":15752,"imports":[{"path":"node:stream","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"packages/core/mesh/teleport/src/teleport.ts","kind":"import-statement","original":"../teleport"}],"format":"esm"},"packages/core/mesh/teleport/src/testing/test-extension.ts":{"bytes":9938,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/rpc","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/teleport/src/testing/test-extension-with-streams.ts":{"bytes":27103,"imports":[{"path":"node:crypto","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/rpc","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/teleport/src/testing/index.ts":{"bytes":728,"imports":[{"path":"packages/core/mesh/teleport/src/testing/test-builder.ts","kind":"import-statement","original":"./test-builder"},{"path":"packages/core/mesh/teleport/src/testing/test-extension.ts","kind":"import-statement","original":"./test-extension"},{"path":"packages/core/mesh/teleport/src/testing/test-extension-with-streams.ts","kind":"import-statement","original":"./test-extension-with-streams"}],"format":"esm"},"packages/core/mesh/teleport/src/rpc-extension.ts":{"bytes":6077,"imports":[{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/rpc","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/teleport/src/index.ts":{"bytes":741,"imports":[{"path":"packages/core/mesh/teleport/src/muxing/index.ts","kind":"import-statement","original":"./muxing"},{"path":"packages/core/mesh/teleport/src/teleport.ts","kind":"import-statement","original":"./teleport"},{"path":"packages/core/mesh/teleport/src/testing/index.ts","kind":"import-statement","original":"./testing"},{"path":"packages/core/mesh/teleport/src/rpc-extension.ts","kind":"import-statement","original":"./rpc-extension"}],"format":"esm"}},"outputs":{"packages/core/mesh/teleport/dist/lib/node/index.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":3032},"packages/core/mesh/teleport/dist/lib/node/index.cjs":{"imports":[{"path":"packages/core/mesh/teleport/dist/lib/node/chunk-QAEYMDIX.cjs","kind":"import-statement"},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/rpc","kind":"import-statement","external":true}],"exports":["Framer","Muxer","RpcExtension","Teleport","TestBuilder","TestConnection","TestExtension","TestExtensionWithStreams","TestPeer","decodeFrame","encodeFrame"],"entryPoint":"packages/core/mesh/teleport/src/index.ts","inputs":{"packages/core/mesh/teleport/src/index.ts":{"bytesInOutput":0},"packages/core/mesh/teleport/src/rpc-extension.ts":{"bytesInOutput":1364}},"bytes":1820},"packages/core/mesh/teleport/dist/lib/node/testing/index.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":93},"packages/core/mesh/teleport/dist/lib/node/testing/index.cjs":{"imports":[{"path":"packages/core/mesh/teleport/dist/lib/node/chunk-QAEYMDIX.cjs","kind":"import-statement"}],"exports":["TestBuilder","TestConnection","TestExtension","TestExtensionWithStreams","TestPeer"],"entryPoint":"packages/core/mesh/teleport/src/testing/index.ts","inputs":{},"bytes":266},"packages/core/mesh/teleport/dist/lib/node/chunk-QAEYMDIX.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":91506},"packages/core/mesh/teleport/dist/lib/node/chunk-QAEYMDIX.cjs":{"imports":[{"path":"node:stream","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/rpc","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"node:stream","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"node:stream","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"varint","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/rpc","kind":"import-statement","external":true},{"path":"node:crypto","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/rpc","kind":"import-statement","external":true}],"exports":["Framer","Muxer","Teleport","TestBuilder","TestConnection","TestExtension","TestExtensionWithStreams","TestPeer","decodeFrame","encodeFrame"],"inputs":{"packages/core/mesh/teleport/src/testing/test-builder.ts":{"bytesInOutput":4948},"packages/core/mesh/teleport/src/teleport.ts":{"bytesInOutput":9579},"packages/core/mesh/teleport/src/control-extension.ts":{"bytesInOutput":4642},"packages/core/mesh/teleport/src/muxing/framer.ts":{"bytesInOutput":4622},"packages/core/mesh/teleport/src/muxing/index.ts":{"bytesInOutput":0},"packages/core/mesh/teleport/src/muxing/muxer.ts":{"bytesInOutput":13714},"packages/core/mesh/teleport/src/muxing/balancer.ts":{"bytesInOutput":6007},"packages/core/mesh/teleport/src/testing/index.ts":{"bytesInOutput":0},"packages/core/mesh/teleport/src/testing/test-extension.ts":{"bytesInOutput":2662},"packages/core/mesh/teleport/src/testing/test-extension-with-streams.ts":{"bytesInOutput":7344}},"bytes":54346}}}
@@ -18,14 +18,14 @@ var __copyProps = (to, from, except, desc) => {
18
18
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
19
  var testing_exports = {};
20
20
  __export(testing_exports, {
21
- TestBuilder: () => import_chunk_OTE53TBB.TestBuilder,
22
- TestConnection: () => import_chunk_OTE53TBB.TestConnection,
23
- TestExtension: () => import_chunk_OTE53TBB.TestExtension,
24
- TestExtensionWithStreams: () => import_chunk_OTE53TBB.TestExtensionWithStreams,
25
- TestPeer: () => import_chunk_OTE53TBB.TestPeer
21
+ TestBuilder: () => import_chunk_QAEYMDIX.TestBuilder,
22
+ TestConnection: () => import_chunk_QAEYMDIX.TestConnection,
23
+ TestExtension: () => import_chunk_QAEYMDIX.TestExtension,
24
+ TestExtensionWithStreams: () => import_chunk_QAEYMDIX.TestExtensionWithStreams,
25
+ TestPeer: () => import_chunk_QAEYMDIX.TestPeer
26
26
  });
27
27
  module.exports = __toCommonJS(testing_exports);
28
- var import_chunk_OTE53TBB = require("../chunk-OTE53TBB.cjs");
28
+ var import_chunk_QAEYMDIX = require("../chunk-QAEYMDIX.cjs");
29
29
  // Annotate the CommonJS export names for ESM import in node:
30
30
  0 && (module.exports = {
31
31
  TestBuilder,
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["index.cjs"],
4
- "sourcesContent": ["import {\n TestBuilder,\n TestConnection,\n TestExtension,\n TestExtensionWithStreams,\n TestPeer\n} from \"../chunk-OTE53TBB.cjs\";\nexport {\n TestBuilder,\n TestConnection,\n TestExtension,\n TestExtensionWithStreams,\n TestPeer\n};\n//# sourceMappingURL=index.cjs.map\n"],
4
+ "sourcesContent": ["import {\n TestBuilder,\n TestConnection,\n TestExtension,\n TestExtensionWithStreams,\n TestPeer\n} from \"../chunk-QAEYMDIX.cjs\";\nexport {\n TestBuilder,\n TestConnection,\n TestExtension,\n TestExtensionWithStreams,\n TestPeer\n};\n//# sourceMappingURL=index.cjs.map\n"],
5
5
  "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,4BAMO;",
6
6
  "names": []
7
7
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dxos/teleport",
3
- "version": "0.3.10",
3
+ "version": "0.3.11-main.00a28cb",
4
4
  "description": "Stream muxer.",
5
5
  "homepage": "https://dxos.org",
6
6
  "bugs": "https://github.com/dxos/dxos/issues",
@@ -21,23 +21,23 @@
21
21
  "dependencies": {
22
22
  "randombytes": "^2.1.0",
23
23
  "varint": "6.0.0",
24
- "@dxos/async": "0.3.10",
25
- "@dxos/debug": "0.3.10",
26
- "@dxos/keys": "0.3.10",
27
- "@dxos/context": "0.3.10",
28
- "@dxos/invariant": "0.3.10",
29
- "@dxos/log": "0.3.10",
30
- "@dxos/node-std": "0.3.10",
31
- "@dxos/protocols": "0.3.10",
32
- "@dxos/rpc": "0.3.10",
33
- "@dxos/util": "0.3.10"
24
+ "@dxos/async": "0.3.11-main.00a28cb",
25
+ "@dxos/debug": "0.3.11-main.00a28cb",
26
+ "@dxos/invariant": "0.3.11-main.00a28cb",
27
+ "@dxos/keys": "0.3.11-main.00a28cb",
28
+ "@dxos/node-std": "0.3.11-main.00a28cb",
29
+ "@dxos/protocols": "0.3.11-main.00a28cb",
30
+ "@dxos/util": "0.3.11-main.00a28cb",
31
+ "@dxos/rpc": "0.3.11-main.00a28cb",
32
+ "@dxos/context": "0.3.11-main.00a28cb",
33
+ "@dxos/log": "0.3.11-main.00a28cb"
34
34
  },
35
35
  "devDependencies": {
36
36
  "@types/randombytes": "^2.0.0",
37
37
  "@types/varint": "6.0.0",
38
38
  "typescript": "^5.2.2",
39
39
  "wait-for-expect": "^3.0.2",
40
- "@dxos/async": "0.3.10"
40
+ "@dxos/async": "0.3.11-main.00a28cb"
41
41
  },
42
42
  "publishConfig": {
43
43
  "access": "public"