@dxos/teleport 0.8.4-main.c1de068 → 0.8.4-main.f5c0578

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 (31) hide show
  1. package/dist/lib/browser/{chunk-537EXT24.mjs → chunk-NGW3R7QB.mjs} +165 -127
  2. package/dist/lib/browser/{chunk-537EXT24.mjs.map → chunk-NGW3R7QB.mjs.map} +3 -3
  3. package/dist/lib/browser/index.mjs +6 -1
  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-4OIMGFCR.mjs → chunk-ECKTM5ZY.mjs} +165 -127
  8. package/dist/lib/node-esm/{chunk-4OIMGFCR.mjs.map → chunk-ECKTM5ZY.mjs.map} +3 -3
  9. package/dist/lib/node-esm/index.mjs +6 -1
  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/muxer.d.ts.map +1 -1
  16. package/dist/types/src/rpc-extension.d.ts.map +1 -1
  17. package/dist/types/src/teleport.d.ts.map +1 -1
  18. package/dist/types/src/testing/test-extension.d.ts.map +1 -1
  19. package/dist/types/tsconfig.tsbuildinfo +1 -1
  20. package/package.json +14 -12
  21. package/src/control-extension.ts +2 -2
  22. package/src/muxing/balancer.test.ts +2 -1
  23. package/src/muxing/balancer.ts +1 -1
  24. package/src/muxing/framer.test.ts +2 -1
  25. package/src/muxing/muxer.test.ts +4 -3
  26. package/src/muxing/muxer.ts +1 -1
  27. package/src/rpc-extension.ts +1 -1
  28. package/src/teleport.test.ts +1 -1
  29. package/src/teleport.ts +1 -1
  30. package/src/testing/test-extension-with-streams.ts +1 -1
  31. 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,6 +136,13 @@ 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;
143
+ onExtensionRegistered;
144
+ _extensionContext;
145
+ _rpc;
139
146
  constructor(opts, localPeerId, remotePeerId) {
140
147
  this.opts = opts;
141
148
  this.localPeerId = localPeerId;
@@ -284,84 +291,82 @@ import { log as log2 } from "@dxos/log";
284
291
  var __dxlog_file2 = "/__w/dxos/dxos/packages/core/mesh/teleport/src/muxing/framer.ts";
285
292
  var FRAME_LENGTH_SIZE = 2;
286
293
  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) {
294
+ // private readonly _tagBuffer = Buffer.alloc(4)
295
+ _messageCb = void 0;
296
+ _subscribeCb = void 0;
297
+ _buffer = void 0;
298
+ _sendCallbacks = [];
299
+ _bytesSent = 0;
300
+ _bytesReceived = 0;
301
+ _writable = true;
302
+ drain = new Event();
303
+ // TODO(egorgripasov): Consider using a Transform stream if it provides better backpressure handling.
304
+ _stream = new Duplex({
305
+ objectMode: false,
306
+ read: () => {
307
+ this._processResponseQueue();
308
+ },
309
+ write: (chunk, encoding, callback) => {
310
+ invariant(!this._subscribeCb, "Internal Framer bug. Concurrent writes detected.", {
311
+ F: __dxlog_file2,
312
+ L: 40,
313
+ S: this,
314
+ A: [
315
+ "!this._subscribeCb",
316
+ "'Internal Framer bug. Concurrent writes detected.'"
317
+ ]
318
+ });
319
+ this._bytesReceived += chunk.length;
320
+ if (this._buffer && this._buffer.length > 0) {
321
+ this._buffer = Buffer.concat([
322
+ this._buffer,
323
+ chunk
324
+ ]);
325
+ } else {
326
+ this._buffer = chunk;
327
+ }
328
+ if (this._messageCb) {
329
+ this._popFrames();
330
+ callback();
331
+ } else {
332
+ this._subscribeCb = () => {
323
333
  this._popFrames();
334
+ this._subscribeCb = void 0;
324
335
  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
336
  };
362
337
  }
363
- };
364
- }
338
+ }
339
+ });
340
+ port = {
341
+ send: (message) => {
342
+ return new Promise((resolve) => {
343
+ const frame = encodeFrame(message);
344
+ this._bytesSent += frame.length;
345
+ this._writable = this._stream.push(frame);
346
+ if (!this._writable) {
347
+ this._sendCallbacks.push(resolve);
348
+ } else {
349
+ resolve();
350
+ }
351
+ });
352
+ },
353
+ subscribe: (callback) => {
354
+ invariant(!this._messageCb, "Rpc port already has a message listener.", {
355
+ F: __dxlog_file2,
356
+ L: 79,
357
+ S: this,
358
+ A: [
359
+ "!this._messageCb",
360
+ "'Rpc port already has a message listener.'"
361
+ ]
362
+ });
363
+ this._messageCb = callback;
364
+ this._subscribeCb?.();
365
+ return () => {
366
+ this._messageCb = void 0;
367
+ };
368
+ }
369
+ };
365
370
  get stream() {
366
371
  return this._stream;
367
372
  }
@@ -444,7 +449,7 @@ var encodeFrame = (payload) => {
444
449
 
445
450
  // src/muxing/muxer.ts
446
451
  import { Duplex as Duplex2 } from "@dxos/node-std/stream";
447
- import { scheduleTaskInterval as scheduleTaskInterval2, Event as Event3, Trigger, asyncTimeout as asyncTimeout2 } from "@dxos/async";
452
+ import { Event as Event3, Trigger, asyncTimeout as asyncTimeout2, scheduleTaskInterval as scheduleTaskInterval2 } from "@dxos/async";
448
453
  import { Context as Context2 } from "@dxos/context";
449
454
  import { failUndefined } from "@dxos/debug";
450
455
  import { invariant as invariant3 } from "@dxos/invariant";
@@ -460,6 +465,16 @@ import { log as log3 } from "@dxos/log";
460
465
  var __dxlog_file3 = "/__w/dxos/dxos/packages/core/mesh/teleport/src/muxing/balancer.ts";
461
466
  var MAX_CHUNK_SIZE = 8192;
462
467
  var Balancer = class {
468
+ _sysChannelId;
469
+ _lastCallerIndex;
470
+ _channels;
471
+ _framer;
472
+ // TODO(egorgripasov): Will cause a memory leak if channels do not appreciate the backpressure.
473
+ _sendBuffers;
474
+ _receiveBuffers;
475
+ _sending;
476
+ incomingData;
477
+ stream;
463
478
  constructor(_sysChannelId) {
464
479
  this._sysChannelId = _sysChannelId;
465
480
  this._lastCallerIndex = 0;
@@ -677,23 +692,24 @@ var MAX_SAFE_FRAME_SIZE = 1e6;
677
692
  var SYSTEM_CHANNEL_ID = 0;
678
693
  var GRACEFUL_CLOSE_TIMEOUT = 3e3;
679
694
  var Muxer = class {
695
+ _balancer = new Balancer(SYSTEM_CHANNEL_ID);
696
+ _channelsByLocalId = /* @__PURE__ */ new Map();
697
+ _channelsByTag = /* @__PURE__ */ new Map();
698
+ _ctx = new Context2(void 0, {
699
+ F: __dxlog_file4,
700
+ L: 108
701
+ });
702
+ _sessionId;
703
+ _nextId = 1;
704
+ _closing = false;
705
+ _destroying = false;
706
+ _disposed = false;
707
+ _lastStats = void 0;
708
+ _lastChannelStats = /* @__PURE__ */ new Map();
709
+ afterClosed = new Event3();
710
+ statsUpdated = new Event3();
711
+ stream = this._balancer.stream;
680
712
  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
713
  this._balancer.incomingData.on(async (msg) => {
698
714
  await this._handleCommand(Command.decode(msg));
699
715
  });
@@ -1141,36 +1157,44 @@ var __dxlog_file5 = "/__w/dxos/dxos/packages/core/mesh/teleport/src/teleport.ts"
1141
1157
  var CONTROL_HEARTBEAT_INTERVAL = 1e4;
1142
1158
  var CONTROL_HEARTBEAT_TIMEOUT = 6e4;
1143
1159
  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
- }, {
1160
+ initiator;
1161
+ localPeerId;
1162
+ remotePeerId;
1163
+ _sessionId;
1164
+ _ctx = new Context3({
1165
+ onError: (err) => {
1166
+ log5.info("error in teleport context", {
1167
+ err
1168
+ }, {
1169
+ F: __dxlog_file5,
1170
+ L: 40,
1171
+ S: this,
1172
+ C: (f, a) => f(...a)
1173
+ });
1174
+ void this.destroy(err).catch(() => {
1175
+ log5.error("Error during destroy", err, {
1150
1176
  F: __dxlog_file5,
1151
- L: 40,
1177
+ L: 42,
1152
1178
  S: this,
1153
1179
  C: (f, a) => f(...a)
1154
1180
  });
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;
1181
+ });
1182
+ }
1183
+ }, {
1184
+ F: __dxlog_file5,
1185
+ L: 38
1186
+ });
1187
+ _muxer = new Muxer();
1188
+ _control;
1189
+ _extensions = /* @__PURE__ */ new Map();
1190
+ _remoteExtensions = /* @__PURE__ */ new Set();
1191
+ _open = false;
1192
+ _destroying = false;
1193
+ _aborting = false;
1194
+ get isOpen() {
1195
+ return this._open;
1196
+ }
1197
+ constructor({ initiator, localPeerId, remotePeerId, ...rest }) {
1174
1198
  invariant4(typeof initiator === "boolean", void 0, {
1175
1199
  F: __dxlog_file5,
1176
1200
  L: 63,
@@ -1283,9 +1307,6 @@ var Teleport = class {
1283
1307
  });
1284
1308
  });
1285
1309
  }
1286
- get isOpen() {
1287
- return this._open;
1288
- }
1289
1310
  get sessionIdString() {
1290
1311
  return this._sessionId ? this._sessionId.truncate() : "none";
1291
1312
  }
@@ -1510,9 +1531,7 @@ _ts_decorate2([
1510
1531
  // src/testing/test-builder.ts
1511
1532
  var __dxlog_file6 = "/__w/dxos/dxos/packages/core/mesh/teleport/src/testing/test-builder.ts";
1512
1533
  var TestBuilder = class {
1513
- constructor() {
1514
- this._peers = /* @__PURE__ */ new Set();
1515
- }
1534
+ _peers = /* @__PURE__ */ new Set();
1516
1535
  createPeer(opts) {
1517
1536
  const peer = opts.factory();
1518
1537
  this._peers.add(peer);
@@ -1627,6 +1646,8 @@ var TestBuilder = class {
1627
1646
  }
1628
1647
  };
1629
1648
  var TestPeer = class {
1649
+ peerId;
1650
+ connections;
1630
1651
  constructor(peerId = PublicKey2.random()) {
1631
1652
  this.peerId = peerId;
1632
1653
  this.connections = /* @__PURE__ */ new Set();
@@ -1696,6 +1717,10 @@ var pipeStreams = (stream1, stream2) => {
1696
1717
  });
1697
1718
  };
1698
1719
  var TestConnection = class {
1720
+ localPeerId;
1721
+ remotePeerId;
1722
+ initiator;
1723
+ teleport;
1699
1724
  constructor(localPeerId, remotePeerId, initiator) {
1700
1725
  this.localPeerId = localPeerId;
1701
1726
  this.remotePeerId = remotePeerId;
@@ -1714,13 +1739,19 @@ var TestConnection = class {
1714
1739
  };
1715
1740
 
1716
1741
  // src/testing/test-extension.ts
1717
- import { asyncTimeout as asyncTimeout3, Trigger as Trigger2 } from "@dxos/async";
1742
+ import { Trigger as Trigger2, asyncTimeout as asyncTimeout3 } from "@dxos/async";
1718
1743
  import { invariant as invariant6 } from "@dxos/invariant";
1719
1744
  import { log as log7 } from "@dxos/log";
1720
1745
  import { schema as schema3 } from "@dxos/protocols/proto";
1721
1746
  import { createProtoRpcPeer as createProtoRpcPeer2 } from "@dxos/rpc";
1722
1747
  var __dxlog_file7 = "/__w/dxos/dxos/packages/core/mesh/teleport/src/testing/test-extension.ts";
1723
1748
  var TestExtension = class {
1749
+ callbacks;
1750
+ open;
1751
+ closed;
1752
+ aborted;
1753
+ extensionContext;
1754
+ _rpc;
1724
1755
  constructor(callbacks = {}) {
1725
1756
  this.callbacks = callbacks;
1726
1757
  this.open = new Trigger2();
@@ -1828,6 +1859,13 @@ import { schema as schema4 } from "@dxos/protocols/proto";
1828
1859
  import { createProtoRpcPeer as createProtoRpcPeer3 } from "@dxos/rpc";
1829
1860
  var __dxlog_file8 = "/__w/dxos/dxos/packages/core/mesh/teleport/src/testing/test-extension-with-streams.ts";
1830
1861
  var TestExtensionWithStreams = class {
1862
+ callbacks;
1863
+ open;
1864
+ closed;
1865
+ aborted;
1866
+ _streams;
1867
+ extensionContext;
1868
+ _rpc;
1831
1869
  constructor(callbacks = {}) {
1832
1870
  this.callbacks = callbacks;
1833
1871
  this.open = new Trigger3();
@@ -2091,4 +2129,4 @@ export {
2091
2129
  TestExtension,
2092
2130
  TestExtensionWithStreams
2093
2131
  };
2094
- //# sourceMappingURL=chunk-537EXT24.mjs.map
2132
+ //# sourceMappingURL=chunk-NGW3R7QB.mjs.map