@dxos/teleport 0.8.4-main.84f28bd → 0.8.4-main.ae835ea

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.
Files changed (34) hide show
  1. package/dist/lib/browser/{chunk-QUT7OVVD.mjs → chunk-WQHET3HS.mjs} +172 -152
  2. package/dist/lib/browser/{chunk-QUT7OVVD.mjs.map → chunk-WQHET3HS.mjs.map} +3 -3
  3. package/dist/lib/browser/index.mjs +6 -2
  4. package/dist/lib/browser/index.mjs.map +3 -3
  5. package/dist/lib/browser/meta.json +1 -1
  6. package/dist/lib/browser/testing/index.mjs +1 -1
  7. package/dist/lib/node-esm/{chunk-64YEEXZK.mjs → chunk-CDV4E7NJ.mjs} +172 -152
  8. package/dist/lib/node-esm/{chunk-64YEEXZK.mjs.map → chunk-CDV4E7NJ.mjs.map} +3 -3
  9. package/dist/lib/node-esm/index.mjs +6 -2
  10. package/dist/lib/node-esm/index.mjs.map +3 -3
  11. package/dist/lib/node-esm/meta.json +1 -1
  12. package/dist/lib/node-esm/testing/index.mjs +1 -1
  13. package/dist/types/src/muxing/balancer.d.ts +1 -1
  14. package/dist/types/src/muxing/balancer.d.ts.map +1 -1
  15. package/dist/types/src/muxing/index.d.ts +1 -1
  16. package/dist/types/src/muxing/index.d.ts.map +1 -1
  17. package/dist/types/src/muxing/muxer.d.ts.map +1 -1
  18. package/dist/types/src/rpc-extension.d.ts.map +1 -1
  19. package/dist/types/src/teleport.d.ts.map +1 -1
  20. package/dist/types/src/testing/test-extension.d.ts.map +1 -1
  21. package/dist/types/tsconfig.tsbuildinfo +1 -1
  22. package/package.json +14 -12
  23. package/src/control-extension.ts +2 -2
  24. package/src/muxing/balancer.test.ts +3 -2
  25. package/src/muxing/balancer.ts +1 -1
  26. package/src/muxing/framer.test.ts +2 -1
  27. package/src/muxing/index.ts +1 -1
  28. package/src/muxing/muxer.test.ts +4 -3
  29. package/src/muxing/muxer.ts +1 -1
  30. package/src/rpc-extension.ts +1 -1
  31. package/src/teleport.test.ts +1 -1
  32. package/src/teleport.ts +1 -1
  33. package/src/testing/test-extension-with-streams.ts +1 -1
  34. package/src/testing/test-extension.ts +2 -2
@@ -116,7 +116,7 @@ import { PublicKey as PublicKey2 } from "@dxos/keys";
116
116
  import { log as log6 } from "@dxos/log";
117
117
 
118
118
  // src/teleport.ts
119
- import { runInContextAsync, synchronized, scheduleTask } from "@dxos/async";
119
+ import { runInContextAsync, scheduleTask, synchronized } from "@dxos/async";
120
120
  import { Context as Context3 } from "@dxos/context";
121
121
  import { failUndefined as failUndefined2 } from "@dxos/debug";
122
122
  import { invariant as invariant4 } from "@dxos/invariant";
@@ -125,7 +125,7 @@ import { log as log5, logInfo as logInfo2 } from "@dxos/log";
125
125
  import { RpcClosedError as RpcClosedError2, TimeoutError as TimeoutError2 } from "@dxos/protocols";
126
126
 
127
127
  // src/control-extension.ts
128
- import { asyncTimeout, scheduleTaskInterval, TimeoutError as AsyncTimeoutError } from "@dxos/async";
128
+ import { TimeoutError as AsyncTimeoutError, asyncTimeout, scheduleTaskInterval } from "@dxos/async";
129
129
  import { Context } from "@dxos/context";
130
130
  import { log } from "@dxos/log";
131
131
  import { RpcClosedError } from "@dxos/protocols";
@@ -136,19 +136,24 @@ var __dxlog_file = "/__w/dxos/dxos/packages/core/mesh/teleport/src/control-exten
136
136
  var HEARTBEAT_RTT_WARN_THRESH = 1e4;
137
137
  var DEBUG_PRINT_HEARTBEAT = false;
138
138
  var ControlExtension = class {
139
+ opts;
140
+ localPeerId;
141
+ remotePeerId;
142
+ _ctx = new Context({
143
+ onError: (err) => {
144
+ this._extensionContext.close(err);
145
+ }
146
+ }, {
147
+ F: __dxlog_file,
148
+ L: 31
149
+ });
150
+ onExtensionRegistered = new Callback();
151
+ _extensionContext;
152
+ _rpc;
139
153
  constructor(opts, localPeerId, remotePeerId) {
140
154
  this.opts = opts;
141
155
  this.localPeerId = localPeerId;
142
156
  this.remotePeerId = remotePeerId;
143
- this._ctx = new Context({
144
- onError: (err) => {
145
- this._extensionContext.close(err);
146
- }
147
- }, {
148
- F: __dxlog_file,
149
- L: 31
150
- });
151
- this.onExtensionRegistered = new Callback();
152
157
  }
153
158
  async registerExtension(name) {
154
159
  await this._rpc.rpc.Control.registerExtension({
@@ -284,84 +289,82 @@ import { log as log2 } from "@dxos/log";
284
289
  var __dxlog_file2 = "/__w/dxos/dxos/packages/core/mesh/teleport/src/muxing/framer.ts";
285
290
  var FRAME_LENGTH_SIZE = 2;
286
291
  var Framer = class {
287
- constructor() {
288
- // private readonly _tagBuffer = Buffer.alloc(4)
289
- this._messageCb = void 0;
290
- this._subscribeCb = void 0;
291
- this._buffer = void 0;
292
- this._sendCallbacks = [];
293
- this._bytesSent = 0;
294
- this._bytesReceived = 0;
295
- this._writable = true;
296
- this.drain = new Event();
297
- // TODO(egorgripasov): Consider using a Transform stream if it provides better backpressure handling.
298
- this._stream = new Duplex({
299
- objectMode: false,
300
- read: () => {
301
- this._processResponseQueue();
302
- },
303
- write: (chunk, encoding, callback) => {
304
- invariant(!this._subscribeCb, "Internal Framer bug. Concurrent writes detected.", {
305
- F: __dxlog_file2,
306
- L: 40,
307
- S: this,
308
- A: [
309
- "!this._subscribeCb",
310
- "'Internal Framer bug. Concurrent writes detected.'"
311
- ]
312
- });
313
- this._bytesReceived += chunk.length;
314
- if (this._buffer && this._buffer.length > 0) {
315
- this._buffer = Buffer.concat([
316
- this._buffer,
317
- chunk
318
- ]);
319
- } else {
320
- this._buffer = chunk;
321
- }
322
- if (this._messageCb) {
292
+ // private readonly _tagBuffer = Buffer.alloc(4)
293
+ _messageCb = void 0;
294
+ _subscribeCb = void 0;
295
+ _buffer = void 0;
296
+ _sendCallbacks = [];
297
+ _bytesSent = 0;
298
+ _bytesReceived = 0;
299
+ _writable = true;
300
+ drain = new Event();
301
+ // TODO(egorgripasov): Consider using a Transform stream if it provides better backpressure handling.
302
+ _stream = new Duplex({
303
+ objectMode: false,
304
+ read: () => {
305
+ this._processResponseQueue();
306
+ },
307
+ write: (chunk, encoding, callback) => {
308
+ invariant(!this._subscribeCb, "Internal Framer bug. Concurrent writes detected.", {
309
+ F: __dxlog_file2,
310
+ L: 40,
311
+ S: this,
312
+ A: [
313
+ "!this._subscribeCb",
314
+ "'Internal Framer bug. Concurrent writes detected.'"
315
+ ]
316
+ });
317
+ this._bytesReceived += chunk.length;
318
+ if (this._buffer && this._buffer.length > 0) {
319
+ this._buffer = Buffer.concat([
320
+ this._buffer,
321
+ chunk
322
+ ]);
323
+ } else {
324
+ this._buffer = chunk;
325
+ }
326
+ if (this._messageCb) {
327
+ this._popFrames();
328
+ callback();
329
+ } else {
330
+ this._subscribeCb = () => {
323
331
  this._popFrames();
332
+ this._subscribeCb = void 0;
324
333
  callback();
325
- } else {
326
- this._subscribeCb = () => {
327
- this._popFrames();
328
- this._subscribeCb = void 0;
329
- callback();
330
- };
331
- }
332
- }
333
- });
334
- this.port = {
335
- send: (message) => {
336
- return new Promise((resolve) => {
337
- const frame = encodeFrame(message);
338
- this._bytesSent += frame.length;
339
- this._writable = this._stream.push(frame);
340
- if (!this._writable) {
341
- this._sendCallbacks.push(resolve);
342
- } else {
343
- resolve();
344
- }
345
- });
346
- },
347
- subscribe: (callback) => {
348
- invariant(!this._messageCb, "Rpc port already has a message listener.", {
349
- F: __dxlog_file2,
350
- L: 79,
351
- S: this,
352
- A: [
353
- "!this._messageCb",
354
- "'Rpc port already has a message listener.'"
355
- ]
356
- });
357
- this._messageCb = callback;
358
- this._subscribeCb?.();
359
- return () => {
360
- this._messageCb = void 0;
361
334
  };
362
335
  }
363
- };
364
- }
336
+ }
337
+ });
338
+ port = {
339
+ send: (message) => {
340
+ return new Promise((resolve) => {
341
+ const frame = encodeFrame(message);
342
+ this._bytesSent += frame.length;
343
+ this._writable = this._stream.push(frame);
344
+ if (!this._writable) {
345
+ this._sendCallbacks.push(resolve);
346
+ } else {
347
+ resolve();
348
+ }
349
+ });
350
+ },
351
+ subscribe: (callback) => {
352
+ invariant(!this._messageCb, "Rpc port already has a message listener.", {
353
+ F: __dxlog_file2,
354
+ L: 79,
355
+ S: this,
356
+ A: [
357
+ "!this._messageCb",
358
+ "'Rpc port already has a message listener.'"
359
+ ]
360
+ });
361
+ this._messageCb = callback;
362
+ this._subscribeCb?.();
363
+ return () => {
364
+ this._messageCb = void 0;
365
+ };
366
+ }
367
+ };
365
368
  get stream() {
366
369
  return this._stream;
367
370
  }
@@ -444,7 +447,7 @@ var encodeFrame = (payload) => {
444
447
 
445
448
  // src/muxing/muxer.ts
446
449
  import { Duplex as Duplex2 } from "@dxos/node-std/stream";
447
- import { scheduleTaskInterval as scheduleTaskInterval2, Event as Event3, Trigger, asyncTimeout as asyncTimeout2 } from "@dxos/async";
450
+ import { Event as Event3, Trigger, asyncTimeout as asyncTimeout2, scheduleTaskInterval as scheduleTaskInterval2 } from "@dxos/async";
448
451
  import { Context as Context2 } from "@dxos/context";
449
452
  import { failUndefined } from "@dxos/debug";
450
453
  import { invariant as invariant3 } from "@dxos/invariant";
@@ -460,16 +463,18 @@ import { log as log3 } from "@dxos/log";
460
463
  var __dxlog_file3 = "/__w/dxos/dxos/packages/core/mesh/teleport/src/muxing/balancer.ts";
461
464
  var MAX_CHUNK_SIZE = 8192;
462
465
  var Balancer = class {
466
+ _sysChannelId;
467
+ _lastCallerIndex = 0;
468
+ _channels = [];
469
+ _framer = new Framer();
470
+ // TODO(egorgripasov): Will cause a memory leak if channels do not appreciate the backpressure.
471
+ _sendBuffers = /* @__PURE__ */ new Map();
472
+ _receiveBuffers = /* @__PURE__ */ new Map();
473
+ _sending = false;
474
+ incomingData = new Event2();
475
+ stream = this._framer.stream;
463
476
  constructor(_sysChannelId) {
464
477
  this._sysChannelId = _sysChannelId;
465
- this._lastCallerIndex = 0;
466
- this._channels = [];
467
- this._framer = new Framer();
468
- this._sendBuffers = /* @__PURE__ */ new Map();
469
- this._receiveBuffers = /* @__PURE__ */ new Map();
470
- this._sending = false;
471
- this.incomingData = new Event2();
472
- this.stream = this._framer.stream;
473
478
  this._channels.push(_sysChannelId);
474
479
  this._framer.port.subscribe(this._processIncomingMessage.bind(this));
475
480
  }
@@ -677,23 +682,24 @@ var MAX_SAFE_FRAME_SIZE = 1e6;
677
682
  var SYSTEM_CHANNEL_ID = 0;
678
683
  var GRACEFUL_CLOSE_TIMEOUT = 3e3;
679
684
  var Muxer = class {
685
+ _balancer = new Balancer(SYSTEM_CHANNEL_ID);
686
+ _channelsByLocalId = /* @__PURE__ */ new Map();
687
+ _channelsByTag = /* @__PURE__ */ new Map();
688
+ _ctx = new Context2(void 0, {
689
+ F: __dxlog_file4,
690
+ L: 108
691
+ });
692
+ _sessionId;
693
+ _nextId = 1;
694
+ _closing = false;
695
+ _destroying = false;
696
+ _disposed = false;
697
+ _lastStats = void 0;
698
+ _lastChannelStats = /* @__PURE__ */ new Map();
699
+ afterClosed = new Event3();
700
+ statsUpdated = new Event3();
701
+ stream = this._balancer.stream;
680
702
  constructor() {
681
- this._balancer = new Balancer(SYSTEM_CHANNEL_ID);
682
- this._channelsByLocalId = /* @__PURE__ */ new Map();
683
- this._channelsByTag = /* @__PURE__ */ new Map();
684
- this._ctx = new Context2(void 0, {
685
- F: __dxlog_file4,
686
- L: 108
687
- });
688
- this._nextId = 1;
689
- this._closing = false;
690
- this._destroying = false;
691
- this._disposed = false;
692
- this._lastStats = void 0;
693
- this._lastChannelStats = /* @__PURE__ */ new Map();
694
- this.afterClosed = new Event3();
695
- this.statsUpdated = new Event3();
696
- this.stream = this._balancer.stream;
697
703
  this._balancer.incomingData.on(async (msg) => {
698
704
  await this._handleCommand(Command.decode(msg));
699
705
  });
@@ -1141,36 +1147,44 @@ var __dxlog_file5 = "/__w/dxos/dxos/packages/core/mesh/teleport/src/teleport.ts"
1141
1147
  var CONTROL_HEARTBEAT_INTERVAL = 1e4;
1142
1148
  var CONTROL_HEARTBEAT_TIMEOUT = 6e4;
1143
1149
  var Teleport = class {
1144
- constructor({ initiator, localPeerId, remotePeerId, ...rest }) {
1145
- this._ctx = new Context3({
1146
- onError: (err) => {
1147
- log5.info("error in teleport context", {
1148
- err
1149
- }, {
1150
+ initiator;
1151
+ localPeerId;
1152
+ remotePeerId;
1153
+ _sessionId;
1154
+ _ctx = new Context3({
1155
+ onError: (err) => {
1156
+ log5.info("error in teleport context", {
1157
+ err
1158
+ }, {
1159
+ F: __dxlog_file5,
1160
+ L: 40,
1161
+ S: this,
1162
+ C: (f, a) => f(...a)
1163
+ });
1164
+ void this.destroy(err).catch(() => {
1165
+ log5.error("Error during destroy", err, {
1150
1166
  F: __dxlog_file5,
1151
- L: 40,
1167
+ L: 42,
1152
1168
  S: this,
1153
1169
  C: (f, a) => f(...a)
1154
1170
  });
1155
- void this.destroy(err).catch(() => {
1156
- log5.error("Error during destroy", err, {
1157
- F: __dxlog_file5,
1158
- L: 42,
1159
- S: this,
1160
- C: (f, a) => f(...a)
1161
- });
1162
- });
1163
- }
1164
- }, {
1165
- F: __dxlog_file5,
1166
- L: 38
1167
- });
1168
- this._muxer = new Muxer();
1169
- this._extensions = /* @__PURE__ */ new Map();
1170
- this._remoteExtensions = /* @__PURE__ */ new Set();
1171
- this._open = false;
1172
- this._destroying = false;
1173
- this._aborting = false;
1171
+ });
1172
+ }
1173
+ }, {
1174
+ F: __dxlog_file5,
1175
+ L: 38
1176
+ });
1177
+ _muxer = new Muxer();
1178
+ _control;
1179
+ _extensions = /* @__PURE__ */ new Map();
1180
+ _remoteExtensions = /* @__PURE__ */ new Set();
1181
+ _open = false;
1182
+ _destroying = false;
1183
+ _aborting = false;
1184
+ get isOpen() {
1185
+ return this._open;
1186
+ }
1187
+ constructor({ initiator, localPeerId, remotePeerId, ...rest }) {
1174
1188
  invariant4(typeof initiator === "boolean", void 0, {
1175
1189
  F: __dxlog_file5,
1176
1190
  L: 63,
@@ -1283,9 +1297,6 @@ var Teleport = class {
1283
1297
  });
1284
1298
  });
1285
1299
  }
1286
- get isOpen() {
1287
- return this._open;
1288
- }
1289
1300
  get sessionIdString() {
1290
1301
  return this._sessionId ? this._sessionId.truncate() : "none";
1291
1302
  }
@@ -1510,9 +1521,7 @@ _ts_decorate2([
1510
1521
  // src/testing/test-builder.ts
1511
1522
  var __dxlog_file6 = "/__w/dxos/dxos/packages/core/mesh/teleport/src/testing/test-builder.ts";
1512
1523
  var TestBuilder = class {
1513
- constructor() {
1514
- this._peers = /* @__PURE__ */ new Set();
1515
- }
1524
+ _peers = /* @__PURE__ */ new Set();
1516
1525
  createPeer(opts) {
1517
1526
  const peer = opts.factory();
1518
1527
  this._peers.add(peer);
@@ -1627,9 +1636,10 @@ var TestBuilder = class {
1627
1636
  }
1628
1637
  };
1629
1638
  var TestPeer = class {
1639
+ peerId;
1640
+ connections = /* @__PURE__ */ new Set();
1630
1641
  constructor(peerId = PublicKey2.random()) {
1631
1642
  this.peerId = peerId;
1632
- this.connections = /* @__PURE__ */ new Set();
1633
1643
  }
1634
1644
  async onOpen(connection) {
1635
1645
  }
@@ -1696,6 +1706,10 @@ var pipeStreams = (stream1, stream2) => {
1696
1706
  });
1697
1707
  };
1698
1708
  var TestConnection = class {
1709
+ localPeerId;
1710
+ remotePeerId;
1711
+ initiator;
1712
+ teleport;
1699
1713
  constructor(localPeerId, remotePeerId, initiator) {
1700
1714
  this.localPeerId = localPeerId;
1701
1715
  this.remotePeerId = remotePeerId;
@@ -1714,18 +1728,21 @@ var TestConnection = class {
1714
1728
  };
1715
1729
 
1716
1730
  // src/testing/test-extension.ts
1717
- import { asyncTimeout as asyncTimeout3, Trigger as Trigger2 } from "@dxos/async";
1731
+ import { Trigger as Trigger2, asyncTimeout as asyncTimeout3 } from "@dxos/async";
1718
1732
  import { invariant as invariant6 } from "@dxos/invariant";
1719
1733
  import { log as log7 } from "@dxos/log";
1720
1734
  import { schema as schema3 } from "@dxos/protocols/proto";
1721
1735
  import { createProtoRpcPeer as createProtoRpcPeer2 } from "@dxos/rpc";
1722
1736
  var __dxlog_file7 = "/__w/dxos/dxos/packages/core/mesh/teleport/src/testing/test-extension.ts";
1723
1737
  var TestExtension = class {
1738
+ callbacks;
1739
+ open = new Trigger2();
1740
+ closed = new Trigger2();
1741
+ aborted = new Trigger2();
1742
+ extensionContext;
1743
+ _rpc;
1724
1744
  constructor(callbacks = {}) {
1725
1745
  this.callbacks = callbacks;
1726
- this.open = new Trigger2();
1727
- this.closed = new Trigger2();
1728
- this.aborted = new Trigger2();
1729
1746
  }
1730
1747
  get remotePeerId() {
1731
1748
  return this.extensionContext?.remotePeerId;
@@ -1828,12 +1845,15 @@ import { schema as schema4 } from "@dxos/protocols/proto";
1828
1845
  import { createProtoRpcPeer as createProtoRpcPeer3 } from "@dxos/rpc";
1829
1846
  var __dxlog_file8 = "/__w/dxos/dxos/packages/core/mesh/teleport/src/testing/test-extension-with-streams.ts";
1830
1847
  var TestExtensionWithStreams = class {
1848
+ callbacks;
1849
+ open = new Trigger3();
1850
+ closed = new Trigger3();
1851
+ aborted = new Trigger3();
1852
+ _streams = /* @__PURE__ */ new Map();
1853
+ extensionContext;
1854
+ _rpc;
1831
1855
  constructor(callbacks = {}) {
1832
1856
  this.callbacks = callbacks;
1833
- this.open = new Trigger3();
1834
- this.closed = new Trigger3();
1835
- this.aborted = new Trigger3();
1836
- this._streams = /* @__PURE__ */ new Map();
1837
1857
  }
1838
1858
  get remotePeerId() {
1839
1859
  return this.extensionContext?.remotePeerId;
@@ -2091,4 +2111,4 @@ export {
2091
2111
  TestExtension,
2092
2112
  TestExtensionWithStreams
2093
2113
  };
2094
- //# sourceMappingURL=chunk-QUT7OVVD.mjs.map
2114
+ //# sourceMappingURL=chunk-WQHET3HS.mjs.map