@dxos/network-manager 0.8.4-main.ae835ea → 0.8.4-main.bc674ce

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 (47) hide show
  1. package/dist/lib/browser/{chunk-E3P563GT.mjs → chunk-AQSYW43M.mjs} +412 -735
  2. package/dist/lib/browser/chunk-AQSYW43M.mjs.map +7 -0
  3. package/dist/lib/browser/index.mjs +342 -4
  4. package/dist/lib/browser/index.mjs.map +4 -4
  5. package/dist/lib/browser/meta.json +1 -1
  6. package/dist/lib/browser/testing/index.mjs +1 -1
  7. package/dist/lib/browser/transport/tcp/index.mjs +2 -33
  8. package/dist/lib/browser/transport/tcp/index.mjs.map +4 -4
  9. package/dist/lib/browser/transport/tcp/tcp-transport.browser.mjs +36 -0
  10. package/dist/lib/browser/transport/tcp/tcp-transport.browser.mjs.map +7 -0
  11. package/dist/lib/browser/transport/tcp/tcp-transport.mjs +160 -0
  12. package/dist/lib/browser/transport/tcp/tcp-transport.mjs.map +7 -0
  13. package/dist/lib/node-esm/{chunk-PKBROUZV.mjs → chunk-SCX3PZRE.mjs} +412 -735
  14. package/dist/lib/node-esm/chunk-SCX3PZRE.mjs.map +7 -0
  15. package/dist/lib/node-esm/index.mjs +342 -4
  16. package/dist/lib/node-esm/index.mjs.map +4 -4
  17. package/dist/lib/node-esm/meta.json +1 -1
  18. package/dist/lib/node-esm/testing/index.mjs +1 -1
  19. package/dist/lib/node-esm/transport/tcp/index.mjs +2 -157
  20. package/dist/lib/node-esm/transport/tcp/index.mjs.map +4 -4
  21. package/dist/lib/node-esm/transport/tcp/tcp-transport.browser.mjs +36 -0
  22. package/dist/lib/node-esm/transport/tcp/tcp-transport.browser.mjs.map +7 -0
  23. package/dist/lib/node-esm/transport/tcp/tcp-transport.mjs +160 -0
  24. package/dist/lib/node-esm/transport/tcp/tcp-transport.mjs.map +7 -0
  25. package/dist/types/src/swarm/connection.d.ts.map +1 -1
  26. package/dist/types/src/swarm/peer.d.ts.map +1 -1
  27. package/dist/types/src/transport/tcp/index.d.ts +1 -1
  28. package/dist/types/src/transport/tcp/index.d.ts.map +1 -1
  29. package/dist/types/src/transport/webrtc/rtc-transport-proxy.d.ts.map +1 -1
  30. package/dist/types/src/wire-protocol.d.ts +5 -5
  31. package/dist/types/src/wire-protocol.d.ts.map +1 -1
  32. package/dist/types/tsconfig.tsbuildinfo +1 -1
  33. package/package.json +32 -22
  34. package/src/swarm/connection.test.ts +2 -1
  35. package/src/swarm/connection.ts +7 -5
  36. package/src/swarm/peer.ts +2 -1
  37. package/src/swarm/swarm.test.ts +2 -1
  38. package/src/tests/webrtc-transport.test.ts +4 -2
  39. package/src/transport/tcp/index.ts +1 -1
  40. package/src/transport/webrtc/rtc-peer-connection.ts +1 -1
  41. package/src/transport/webrtc/rtc-transport-channel.ts +1 -1
  42. package/src/transport/webrtc/rtc-transport-proxy.test.ts +2 -1
  43. package/src/transport/webrtc/rtc-transport-proxy.ts +6 -4
  44. package/src/transport/webrtc/rtc-transport.test.ts +2 -1
  45. package/src/wire-protocol.ts +6 -6
  46. package/dist/lib/browser/chunk-E3P563GT.mjs.map +0 -7
  47. package/dist/lib/node-esm/chunk-PKBROUZV.mjs.map +0 -7
package/package.json CHANGED
@@ -1,12 +1,16 @@
1
1
  {
2
2
  "name": "@dxos/network-manager",
3
- "version": "0.8.4-main.ae835ea",
3
+ "version": "0.8.4-main.bc674ce",
4
4
  "description": "Network Manager",
5
5
  "homepage": "https://dxos.org",
6
6
  "bugs": "https://github.com/dxos/dxos/issues",
7
+ "repository": {
8
+ "type": "git",
9
+ "url": "https://github.com/dxos/dxos"
10
+ },
7
11
  "license": "MIT",
8
12
  "author": "DXOS.org",
9
- "sideEffects": true,
13
+ "sideEffects": false,
10
14
  "type": "module",
11
15
  "imports": {
12
16
  "#node-datachannel": {
@@ -26,6 +30,15 @@
26
30
  "node": "./dist/lib/node-esm/transport/tcp/index.mjs",
27
31
  "import": "./dist/lib/browser/transport/tcp/index.mjs",
28
32
  "require": "./dist/lib/node-esm/transport/tcp/index.mjs"
33
+ },
34
+ "#tcp-transport-impl": {
35
+ "source": {
36
+ "browser": "./src/transport/tcp/tcp-transport.browser.ts",
37
+ "default": "./src/transport/tcp/tcp-transport.ts"
38
+ },
39
+ "types": "./dist/types/src/transport/tcp/tcp-transport.d.ts",
40
+ "browser": "./dist/lib/browser/transport/tcp/tcp-transport.browser.mjs",
41
+ "default": "./dist/lib/node-esm/transport/tcp/tcp-transport.mjs"
29
42
  }
30
43
  },
31
44
  "exports": {
@@ -48,9 +61,6 @@
48
61
  "node": "./dist/lib/node-esm/transport/tcp/index.mjs"
49
62
  }
50
63
  },
51
- "browser": {
52
- "./src/transport/tcp/tcp-transport.ts": "./src/transport/tcp/tcp-transport.browser.ts"
53
- },
54
64
  "types": "dist/types/src/index.d.ts",
55
65
  "typesVersions": {
56
66
  "*": {
@@ -71,26 +81,26 @@
71
81
  ],
72
82
  "dependencies": {
73
83
  "node-datachannel": "^0.30.0",
74
- "@dxos/async": "0.8.4-main.ae835ea",
75
- "@dxos/codec-protobuf": "0.8.4-main.ae835ea",
76
- "@dxos/invariant": "0.8.4-main.ae835ea",
77
- "@dxos/context": "0.8.4-main.ae835ea",
78
- "@dxos/keys": "0.8.4-main.ae835ea",
79
- "@dxos/debug": "0.8.4-main.ae835ea",
80
- "@dxos/log": "0.8.4-main.ae835ea",
81
- "@dxos/node-std": "0.8.4-main.ae835ea",
82
- "@dxos/protocols": "0.8.4-main.ae835ea",
83
- "@dxos/rpc": "0.8.4-main.ae835ea",
84
- "@dxos/teleport": "0.8.4-main.ae835ea",
85
- "@dxos/messaging": "0.8.4-main.ae835ea",
86
- "@dxos/tracing": "0.8.4-main.ae835ea",
87
- "@dxos/util": "0.8.4-main.ae835ea"
84
+ "@dxos/async": "0.8.4-main.bc674ce",
85
+ "@dxos/context": "0.8.4-main.bc674ce",
86
+ "@dxos/debug": "0.8.4-main.bc674ce",
87
+ "@dxos/codec-protobuf": "0.8.4-main.bc674ce",
88
+ "@dxos/invariant": "0.8.4-main.bc674ce",
89
+ "@dxos/log": "0.8.4-main.bc674ce",
90
+ "@dxos/keys": "0.8.4-main.bc674ce",
91
+ "@dxos/messaging": "0.8.4-main.bc674ce",
92
+ "@dxos/protocols": "0.8.4-main.bc674ce",
93
+ "@dxos/node-std": "0.8.4-main.bc674ce",
94
+ "@dxos/rpc": "0.8.4-main.bc674ce",
95
+ "@dxos/util": "0.8.4-main.bc674ce",
96
+ "@dxos/tracing": "0.8.4-main.bc674ce",
97
+ "@dxos/teleport": "0.8.4-main.bc674ce"
88
98
  },
89
99
  "devDependencies": {
90
100
  "fetch-mock": "^11.0.0",
91
- "@dxos/keyring": "0.8.4-main.ae835ea",
92
- "@dxos/edge-client": "0.8.4-main.ae835ea",
93
- "@dxos/signal": "0.8.4-main.ae835ea"
101
+ "@dxos/edge-client": "0.8.4-main.bc674ce",
102
+ "@dxos/keyring": "0.8.4-main.bc674ce",
103
+ "@dxos/signal": "0.8.4-main.bc674ce"
94
104
  },
95
105
  "publishConfig": {
96
106
  "access": "public"
@@ -13,7 +13,8 @@ import { chooseInitiatorPeer } from '../transport/webrtc/utils';
13
13
 
14
14
  import { Connection } from './connection';
15
15
 
16
- describe('Connection', () => {
16
+ // Segfault in node-datachannel.
17
+ describe.skip('Connection', () => {
17
18
  test('responder opens after initiator', async () => {
18
19
  const { initiator, responder } = createPeerKeys();
19
20
  await connectionTest({
@@ -185,16 +185,18 @@ export class Connection {
185
185
  this._protocol.stream.on('close', () => {
186
186
  log('protocol stream closed');
187
187
  this._protocolClosed.wake();
188
- this.close({ error: new ProtocolError('protocol stream closed') }).catch((err) => this.errors.raise(err));
188
+ this.close({ error: new ProtocolError({ message: 'protocol stream closed' }) }).catch((err) =>
189
+ this.errors.raise(err),
190
+ );
189
191
  });
190
192
 
191
193
  scheduleTask(
192
194
  this.connectedTimeoutContext,
193
195
  async () => {
194
196
  log.info(`timeout waiting ${TRANSPORT_CONNECTION_TIMEOUT / 1000}s for transport to connect, aborting`);
195
- await this.abort(new TimeoutError(`${TRANSPORT_CONNECTION_TIMEOUT / 1000}s for transport to connect`)).catch(
196
- (err) => this.errors.raise(err),
197
- );
197
+ await this.abort(
198
+ new TimeoutError({ message: `${TRANSPORT_CONNECTION_TIMEOUT / 1000}s for transport to connect` }),
199
+ ).catch((err) => this.errors.raise(err));
198
200
  },
199
201
  TRANSPORT_CONNECTION_TIMEOUT,
200
202
  );
@@ -397,7 +399,7 @@ export class Connection {
397
399
 
398
400
  // If signal fails treat connection as failed
399
401
  log.info('signal message failed to deliver', { err });
400
- await this.close({ error: new ConnectivityError('signal message failed to deliver', err) });
402
+ await this.close({ error: new ConnectivityError({ message: 'signal message failed to deliver', cause: err }) });
401
403
  }
402
404
  }
403
405
 
package/src/swarm/peer.ts CHANGED
@@ -20,7 +20,7 @@ import { type ConnectionLimiter } from './connection-limiter';
20
20
 
21
21
  export class ConnectionDisplacedError extends SystemError {
22
22
  constructor() {
23
- super('Connection displaced by remote initiator.');
23
+ super({ message: 'Connection displaced by remote initiator.' });
24
24
  }
25
25
  }
26
26
 
@@ -162,6 +162,7 @@ export class Peer {
162
162
  return { accept: true };
163
163
  }
164
164
  }
165
+
165
166
  return { accept: false };
166
167
  }
167
168
 
@@ -31,7 +31,8 @@ type TestPeer = {
31
31
  signalManager: SignalManager;
32
32
  };
33
33
 
34
- describe('Swarm', () => {
34
+ // Segfault in node-datachannel.
35
+ describe.skip('Swarm', () => {
35
36
  const context = new MemorySignalManagerContext();
36
37
 
37
38
  const setupSwarm = async ({
@@ -8,12 +8,14 @@ import { TEST_SIGNAL_HOSTS, TestBuilder } from '../testing';
8
8
 
9
9
  import { basicTestSuite } from './basic-test-suite';
10
10
 
11
- describe('WebRTC transport', { timeout: 10_000 }, () => {
11
+ // Segfault in node-datachannel.
12
+ describe.skip('WebRTC transport', { timeout: 10_000 }, () => {
12
13
  const testBuilder = new TestBuilder();
13
14
  basicTestSuite(testBuilder);
14
15
  });
15
16
 
16
- describe('WebRTC transport proxy', { timeout: 10_000 }, () => {
17
+ // Segfault in node-datachannel.
18
+ describe.skip('WebRTC transport proxy', { timeout: 10_000 }, () => {
17
19
  const testBuilder = new TestBuilder({ bridge: true });
18
20
  basicTestSuite(testBuilder);
19
21
  });
@@ -2,4 +2,4 @@
2
2
  // Copyright 2024 DXOS.org
3
3
  //
4
4
 
5
- export * from './tcp-transport';
5
+ export * from '#tcp-transport-impl';
@@ -469,7 +469,7 @@ type IceCandidateErrorDetails = { url: string; errorCode: number; errorText: str
469
469
 
470
470
  const createIceFailureError = (details: IceCandidateErrorDetails[]) => {
471
471
  const candidateErrors = details.map(({ url, errorCode, errorText }) => `${errorCode} ${url}: ${errorText}`);
472
- return new ConnectivityError(`ICE failed:\n${candidateErrors.join('\n')}`);
472
+ return new ConnectivityError({ message: `ICE failed:\n${candidateErrors.join('\n')}` });
473
473
  };
474
474
 
475
475
  type ChannelCreatedCallback = {
@@ -71,7 +71,7 @@ export class RtcTransportChannel extends Resource implements Transport {
71
71
  const error =
72
72
  err instanceof Error
73
73
  ? err
74
- : new ConnectivityError(`Failed to create a channel: ${JSON.stringify(err?.message)}`);
74
+ : new ConnectivityError({ message: `Failed to create a channel: ${JSON.stringify(err?.message)}` });
75
75
  this.errors.raise(error);
76
76
  } else {
77
77
  log.verbose('connection establishment failed after transport was closed', { err });
@@ -19,7 +19,8 @@ import { RtcTransportProxy } from './rtc-transport-proxy';
19
19
  import { RtcTransportService } from './rtc-transport-service';
20
20
  import { handleChannelErrors } from './test-utils';
21
21
 
22
- describe('RtcPeerTransportProxy', () => {
22
+ // Segfault in node-datachannel.
23
+ describe.skip('RtcPeerTransportProxy', () => {
23
24
  test('open and close', async () => {
24
25
  const { proxy } = await setupProxy();
25
26
  await proxy.open();
@@ -176,7 +176,9 @@ export class RtcTransportProxy extends Resource implements Transport {
176
176
  } catch (error) {
177
177
  const type = signalEvent.payload.payload.data?.type;
178
178
  if (type === 'offer' || type === 'answer') {
179
- this._raiseIfOpen(new ConnectivityError(`Session establishment failed: ${type} couldn't be sent.`));
179
+ this._raiseIfOpen(
180
+ new ConnectivityError({ message: `Session establishment failed: ${type} couldn't be sent.` }),
181
+ );
180
182
  }
181
183
  }
182
184
  }
@@ -255,11 +257,11 @@ export class RtcTransportProxyFactory implements TransportFactory {
255
257
  const decodeError = (err: Error | string) => {
256
258
  const message = typeof err === 'string' ? err : err.message;
257
259
  if (message.includes('CONNECTION_RESET')) {
258
- return new ConnectionResetError(message);
260
+ return new ConnectionResetError({ message });
259
261
  } else if (message.includes('TIMEOUT')) {
260
- return new TimeoutError(message);
262
+ return new TimeoutError({ message });
261
263
  } else if (message.includes('CONNECTIVITY_ERROR')) {
262
- return new ConnectivityError(message);
264
+ return new ConnectivityError({ message });
263
265
  } else {
264
266
  return typeof err === 'string' ? new Error(err) : err;
265
267
  }
@@ -16,7 +16,8 @@ import { chooseInitiatorPeer } from './utils';
16
16
 
17
17
  const connectionFactory = getRtcConnectionFactory();
18
18
 
19
- describe('RtcTransport', () => {
19
+ // Segfault in node-datachannel.
20
+ describe.skip('RtcTransport', () => {
20
21
  test('channel open and close', async () => {
21
22
  const peer = await createConnection();
22
23
  const channel = createChannel(peer);
@@ -5,16 +5,16 @@
5
5
  import { type Duplex } from 'node:stream';
6
6
 
7
7
  import { type PublicKey } from '@dxos/keys';
8
- import { Teleport, type TeleportParams } from '@dxos/teleport';
8
+ import { Teleport, type TeleportProps } from '@dxos/teleport';
9
9
 
10
- export type WireProtocolParams = {
10
+ export type WireProtocolProps = {
11
11
  initiator: boolean;
12
12
  localPeerId: PublicKey;
13
13
  remotePeerId: PublicKey;
14
14
  topic: PublicKey;
15
15
  };
16
16
 
17
- export type WireProtocolProvider = (params: WireProtocolParams) => WireProtocol;
17
+ export type WireProtocolProvider = (params: WireProtocolProps) => WireProtocol;
18
18
 
19
19
  /**
20
20
  * Application-specific network protocol that is used when a connection to a peer is established.
@@ -31,15 +31,15 @@ export interface WireProtocol {
31
31
  /**
32
32
  * Create a wire-protocol provider backed by a teleport instance.
33
33
  * @param onConnection Called after teleport is initialized for the session. Protocol extensions could be attached here.
34
- * @param defaultParams Optionally provide default Teleport params that might be overridden by factory callers.
34
+ * @param defaultProps Optionally provide default Teleport params that might be overridden by factory callers.
35
35
  * @returns
36
36
  */
37
37
  export const createTeleportProtocolFactory = (
38
38
  onConnection: (teleport: Teleport) => Promise<void>,
39
- defaultParams?: Partial<TeleportParams>,
39
+ defaultProps?: Partial<TeleportProps>,
40
40
  ): WireProtocolProvider => {
41
41
  return (params) => {
42
- const teleport = new Teleport({ ...defaultParams, ...params });
42
+ const teleport = new Teleport({ ...defaultProps, ...params });
43
43
  return {
44
44
  stream: teleport.stream,
45
45
  open: async (sessionId?: PublicKey) => {