@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.
- package/dist/lib/browser/{chunk-E3P563GT.mjs → chunk-AQSYW43M.mjs} +412 -735
- package/dist/lib/browser/chunk-AQSYW43M.mjs.map +7 -0
- package/dist/lib/browser/index.mjs +342 -4
- package/dist/lib/browser/index.mjs.map +4 -4
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/testing/index.mjs +1 -1
- package/dist/lib/browser/transport/tcp/index.mjs +2 -33
- package/dist/lib/browser/transport/tcp/index.mjs.map +4 -4
- package/dist/lib/browser/transport/tcp/tcp-transport.browser.mjs +36 -0
- package/dist/lib/browser/transport/tcp/tcp-transport.browser.mjs.map +7 -0
- package/dist/lib/browser/transport/tcp/tcp-transport.mjs +160 -0
- package/dist/lib/browser/transport/tcp/tcp-transport.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-PKBROUZV.mjs → chunk-SCX3PZRE.mjs} +412 -735
- package/dist/lib/node-esm/chunk-SCX3PZRE.mjs.map +7 -0
- package/dist/lib/node-esm/index.mjs +342 -4
- package/dist/lib/node-esm/index.mjs.map +4 -4
- package/dist/lib/node-esm/meta.json +1 -1
- package/dist/lib/node-esm/testing/index.mjs +1 -1
- package/dist/lib/node-esm/transport/tcp/index.mjs +2 -157
- package/dist/lib/node-esm/transport/tcp/index.mjs.map +4 -4
- package/dist/lib/node-esm/transport/tcp/tcp-transport.browser.mjs +36 -0
- package/dist/lib/node-esm/transport/tcp/tcp-transport.browser.mjs.map +7 -0
- package/dist/lib/node-esm/transport/tcp/tcp-transport.mjs +160 -0
- package/dist/lib/node-esm/transport/tcp/tcp-transport.mjs.map +7 -0
- package/dist/types/src/swarm/connection.d.ts.map +1 -1
- package/dist/types/src/swarm/peer.d.ts.map +1 -1
- package/dist/types/src/transport/tcp/index.d.ts +1 -1
- package/dist/types/src/transport/tcp/index.d.ts.map +1 -1
- package/dist/types/src/transport/webrtc/rtc-transport-proxy.d.ts.map +1 -1
- package/dist/types/src/wire-protocol.d.ts +5 -5
- package/dist/types/src/wire-protocol.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +32 -22
- package/src/swarm/connection.test.ts +2 -1
- package/src/swarm/connection.ts +7 -5
- package/src/swarm/peer.ts +2 -1
- package/src/swarm/swarm.test.ts +2 -1
- package/src/tests/webrtc-transport.test.ts +4 -2
- package/src/transport/tcp/index.ts +1 -1
- package/src/transport/webrtc/rtc-peer-connection.ts +1 -1
- package/src/transport/webrtc/rtc-transport-channel.ts +1 -1
- package/src/transport/webrtc/rtc-transport-proxy.test.ts +2 -1
- package/src/transport/webrtc/rtc-transport-proxy.ts +6 -4
- package/src/transport/webrtc/rtc-transport.test.ts +2 -1
- package/src/wire-protocol.ts +6 -6
- package/dist/lib/browser/chunk-E3P563GT.mjs.map +0 -7
- 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.
|
|
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":
|
|
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.
|
|
75
|
-
"@dxos/
|
|
76
|
-
"@dxos/
|
|
77
|
-
"@dxos/
|
|
78
|
-
"@dxos/
|
|
79
|
-
"@dxos/
|
|
80
|
-
"@dxos/
|
|
81
|
-
"@dxos/
|
|
82
|
-
"@dxos/protocols": "0.8.4-main.
|
|
83
|
-
"@dxos/
|
|
84
|
-
"@dxos/
|
|
85
|
-
"@dxos/
|
|
86
|
-
"@dxos/tracing": "0.8.4-main.
|
|
87
|
-
"@dxos/
|
|
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/
|
|
92
|
-
"@dxos/
|
|
93
|
-
"@dxos/signal": "0.8.4-main.
|
|
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
|
-
|
|
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({
|
package/src/swarm/connection.ts
CHANGED
|
@@ -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) =>
|
|
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(
|
|
196
|
-
(
|
|
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
|
|
package/src/swarm/swarm.test.ts
CHANGED
|
@@ -8,12 +8,14 @@ import { TEST_SIGNAL_HOSTS, TestBuilder } from '../testing';
|
|
|
8
8
|
|
|
9
9
|
import { basicTestSuite } from './basic-test-suite';
|
|
10
10
|
|
|
11
|
-
|
|
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
|
-
|
|
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
|
});
|
|
@@ -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
|
-
|
|
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(
|
|
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
|
-
|
|
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);
|
package/src/wire-protocol.ts
CHANGED
|
@@ -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
|
|
8
|
+
import { Teleport, type TeleportProps } from '@dxos/teleport';
|
|
9
9
|
|
|
10
|
-
export type
|
|
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:
|
|
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
|
|
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
|
-
|
|
39
|
+
defaultProps?: Partial<TeleportProps>,
|
|
40
40
|
): WireProtocolProvider => {
|
|
41
41
|
return (params) => {
|
|
42
|
-
const teleport = new Teleport({ ...
|
|
42
|
+
const teleport = new Teleport({ ...defaultProps, ...params });
|
|
43
43
|
return {
|
|
44
44
|
stream: teleport.stream,
|
|
45
45
|
open: async (sessionId?: PublicKey) => {
|