@dxos/network-manager 0.1.56-main.e47dfd1 → 0.1.56-main.ec96785
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-5R7TDXUU.mjs → chunk-HI2MCQKY.mjs} +38 -26
- package/dist/lib/browser/{chunk-5R7TDXUU.mjs.map → chunk-HI2MCQKY.mjs.map} +3 -3
- package/dist/lib/browser/index.mjs +1 -1
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/testing/index.mjs +1 -1
- package/dist/lib/node/index.cjs +37 -25
- package/dist/lib/node/index.cjs.map +3 -3
- package/dist/lib/node/meta.json +1 -1
- package/dist/lib/node/testing/index.cjs +37 -25
- package/dist/lib/node/testing/index.cjs.map +3 -3
- package/dist/types/src/transport/webrtc-transport-proxy.d.ts.map +1 -1
- package/dist/types/src/transport/webrtc-transport-service.d.ts.map +1 -1
- package/package.json +17 -17
- package/src/transport/webrtc-transport-proxy.ts +13 -11
- package/src/transport/webrtc-transport-service.ts +30 -7
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"webrtc-transport-proxy.d.ts","sourceRoot":"","sources":["../../../../src/transport/webrtc-transport-proxy.ts"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"webrtc-transport-proxy.d.ts","sourceRoot":"","sources":["../../../../src/transport/webrtc-transport-proxy.ts"],"names":[],"mappings":";AAOA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAGpC,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAG1C,OAAO,EAAgC,aAAa,EAAE,MAAM,wCAAwC,CAAC;AACrG,OAAO,EAAE,MAAM,EAAE,MAAM,uCAAuC,CAAC;AAG/D,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAE5E,MAAM,MAAM,0BAA0B,GAAG;IACvC,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC,eAAe,CAAC;IAC/B,aAAa,EAAE,aAAa,CAAC;IAC7B,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC/C,CAAC;AAEF,qBAAa,oBAAqB,YAAW,SAAS;IAclD,OAAO,CAAC,QAAQ,CAAC,OAAO;IAb1B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAsB;IAC/C,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAiB;IAEtC,QAAQ,CAAC,MAAM,cAAe;IAC9B,OAAO,CAAC,OAAO,CAAS;IACxB,QAAQ,CAAC,SAAS,cAAe;IAEjC,QAAQ,CAAC,MAAM,cAAqB;IAEpC,OAAO,CAAC,cAAc,CAAuB;gBAI1B,OAAO,EAAE,0BAA0B;YAsCxC,iBAAiB;IAiB/B,OAAO,CAAC,WAAW;YAKL,aAAa;IAI3B,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAUtB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAkB9B;;OAEG;IAEH,UAAU;CAKX;AAGD,qBAAa,2BAA4B,YAAW,gBAAgB;IAClE,OAAO,CAAC,cAAc,CAA4B;IAClD,OAAO,CAAC,YAAY,CAAmC;IAEvD;;;OAGG;IACH,gBAAgB,CAAC,aAAa,EAAE,aAAa,GAAG,SAAS,GAAG,IAAI;IAShE,eAAe,CAAC,OAAO,EAAE,gBAAgB,GAAG,SAAS;CAatD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"webrtc-transport-service.d.ts","sourceRoot":"","sources":["../../../../src/transport/webrtc-transport-service.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAG9C,OAAO,EACL,aAAa,EACb,iBAAiB,EACjB,aAAa,EACb,WAAW,EACX,WAAW,EAEX,YAAY,EACb,MAAM,wCAAwC,CAAC;
|
|
1
|
+
{"version":3,"file":"webrtc-transport-service.d.ts","sourceRoot":"","sources":["../../../../src/transport/webrtc-transport-service.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAG9C,OAAO,EACL,aAAa,EACb,iBAAiB,EACjB,aAAa,EACb,WAAW,EACX,WAAW,EAEX,YAAY,EACb,MAAM,wCAAwC,CAAC;AAWhD,qBAAa,sBAAuB,YAAW,aAAa;IAKxD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC;IAJjC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA6D;gBAIrE,aAAa,CAAC,KAAK;IAGtC,IAAI,CAAC,OAAO,EAAE,iBAAiB,GAAG,MAAM,CAAC,WAAW,CAAC;IA0E/C,UAAU,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAK7D,QAAQ,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAW1D,KAAK,CAAC,EAAE,OAAO,EAAE,EAAE,YAAY;CAMtC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dxos/network-manager",
|
|
3
|
-
"version": "0.1.56-main.
|
|
3
|
+
"version": "0.1.56-main.ec96785",
|
|
4
4
|
"description": "Network Manager",
|
|
5
5
|
"homepage": "https://dxos.org",
|
|
6
6
|
"bugs": "https://github.com/dxos/dxos/issues",
|
|
@@ -26,21 +26,21 @@
|
|
|
26
26
|
"tiny-invariant": "^1.3.1",
|
|
27
27
|
"ws": "^7.4.4",
|
|
28
28
|
"xor-distance": "^2.0.0",
|
|
29
|
-
"@dxos/async": "0.1.56-main.
|
|
30
|
-
"@dxos/codec-protobuf": "0.1.56-main.
|
|
31
|
-
"@dxos/context": "0.1.56-main.
|
|
32
|
-
"@dxos/credentials": "0.1.56-main.
|
|
33
|
-
"@dxos/crypto": "0.1.56-main.
|
|
34
|
-
"@dxos/debug": "0.1.56-main.
|
|
35
|
-
"@dxos/errors": "0.1.56-main.
|
|
36
|
-
"@dxos/keys": "0.1.56-main.
|
|
37
|
-
"@dxos/log": "0.1.56-main.
|
|
38
|
-
"@dxos/messaging": "0.1.56-main.
|
|
39
|
-
"@dxos/node-std": "0.1.56-main.
|
|
40
|
-
"@dxos/protocols": "0.1.56-main.
|
|
41
|
-
"@dxos/rpc": "0.1.56-main.
|
|
42
|
-
"@dxos/teleport": "0.1.56-main.
|
|
43
|
-
"@dxos/util": "0.1.56-main.
|
|
29
|
+
"@dxos/async": "0.1.56-main.ec96785",
|
|
30
|
+
"@dxos/codec-protobuf": "0.1.56-main.ec96785",
|
|
31
|
+
"@dxos/context": "0.1.56-main.ec96785",
|
|
32
|
+
"@dxos/credentials": "0.1.56-main.ec96785",
|
|
33
|
+
"@dxos/crypto": "0.1.56-main.ec96785",
|
|
34
|
+
"@dxos/debug": "0.1.56-main.ec96785",
|
|
35
|
+
"@dxos/errors": "0.1.56-main.ec96785",
|
|
36
|
+
"@dxos/keys": "0.1.56-main.ec96785",
|
|
37
|
+
"@dxos/log": "0.1.56-main.ec96785",
|
|
38
|
+
"@dxos/messaging": "0.1.56-main.ec96785",
|
|
39
|
+
"@dxos/node-std": "0.1.56-main.ec96785",
|
|
40
|
+
"@dxos/protocols": "0.1.56-main.ec96785",
|
|
41
|
+
"@dxos/rpc": "0.1.56-main.ec96785",
|
|
42
|
+
"@dxos/teleport": "0.1.56-main.ec96785",
|
|
43
|
+
"@dxos/util": "0.1.56-main.ec96785"
|
|
44
44
|
},
|
|
45
45
|
"devDependencies": {
|
|
46
46
|
"@swc-node/register": "1.5.4",
|
|
@@ -50,7 +50,7 @@
|
|
|
50
50
|
"earljs": "~0.1.10",
|
|
51
51
|
"fast-check": "~3.3.0",
|
|
52
52
|
"typescript": "^5.0.4",
|
|
53
|
-
"@dxos/signal": "0.1.56-main.
|
|
53
|
+
"@dxos/signal": "0.1.56-main.ec96785"
|
|
54
54
|
},
|
|
55
55
|
"publishConfig": {
|
|
56
56
|
"access": "public"
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
// Copyright 2022 DXOS.org
|
|
3
3
|
//
|
|
4
4
|
|
|
5
|
+
import { Writable } from 'node:stream';
|
|
5
6
|
import invariant from 'tiny-invariant';
|
|
6
7
|
|
|
7
8
|
import { Event } from '@dxos/async';
|
|
@@ -57,18 +58,19 @@ export class WebRTCTransportProxy implements Transport {
|
|
|
57
58
|
}
|
|
58
59
|
});
|
|
59
60
|
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
61
|
+
this._params.stream.pipe(new Writable({
|
|
62
|
+
write: (chunk, _, callback) => {
|
|
63
|
+
this._params.bridgeService.sendData({
|
|
63
64
|
proxyId: this._proxyId,
|
|
64
|
-
payload:
|
|
65
|
-
})
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
65
|
+
payload: chunk
|
|
66
|
+
}).then(
|
|
67
|
+
() => callback(),
|
|
68
|
+
(err: any) => {
|
|
69
|
+
log.catch(err);
|
|
70
|
+
}
|
|
71
|
+
);
|
|
72
|
+
},
|
|
73
|
+
}));
|
|
72
74
|
},
|
|
73
75
|
(error) => log.catch(error)
|
|
74
76
|
);
|
|
@@ -21,20 +21,30 @@ import { ComplexMap } from '@dxos/util';
|
|
|
21
21
|
|
|
22
22
|
import { WebRTCTransport } from './webrtc-transport';
|
|
23
23
|
|
|
24
|
+
type TransportState = {
|
|
25
|
+
transport: WebRTCTransport;
|
|
26
|
+
stream: Duplex;
|
|
27
|
+
writeCallbacks: (() => void)[];
|
|
28
|
+
};
|
|
29
|
+
|
|
24
30
|
export class WebRTCTransportService implements BridgeService {
|
|
25
|
-
private readonly transports = new ComplexMap<PublicKey,
|
|
26
|
-
PublicKey.hash,
|
|
27
|
-
);
|
|
31
|
+
private readonly transports = new ComplexMap<PublicKey, TransportState>(PublicKey.hash);
|
|
28
32
|
|
|
29
33
|
// prettier-ignore
|
|
30
34
|
constructor(
|
|
31
35
|
private readonly _webrtcConfig?: any
|
|
32
|
-
) {}
|
|
36
|
+
) { }
|
|
33
37
|
|
|
34
38
|
open(request: ConnectionRequest): Stream<BridgeEvent> {
|
|
35
39
|
const rpcStream: Stream<BridgeEvent> = new Stream(({ ready, next, close }) => {
|
|
36
40
|
const duplex: Duplex = new Duplex({
|
|
37
|
-
read: () => {
|
|
41
|
+
read: () => {
|
|
42
|
+
const callbacks = [...transportState.writeCallbacks];
|
|
43
|
+
transportState.writeCallbacks.length = 0;
|
|
44
|
+
for (const cb of callbacks) {
|
|
45
|
+
cb();
|
|
46
|
+
}
|
|
47
|
+
},
|
|
38
48
|
write: function (chunk, _, callback) {
|
|
39
49
|
next({ data: { payload: chunk } });
|
|
40
50
|
callback();
|
|
@@ -85,8 +95,15 @@ export class WebRTCTransportService implements BridgeService {
|
|
|
85
95
|
close();
|
|
86
96
|
});
|
|
87
97
|
|
|
98
|
+
const transportState: TransportState = {
|
|
99
|
+
transport,
|
|
100
|
+
stream: duplex,
|
|
101
|
+
writeCallbacks: [],
|
|
102
|
+
};
|
|
103
|
+
|
|
88
104
|
ready();
|
|
89
|
-
|
|
105
|
+
|
|
106
|
+
this.transports.set(request.proxyId, transportState);
|
|
90
107
|
});
|
|
91
108
|
|
|
92
109
|
return rpcStream;
|
|
@@ -99,7 +116,13 @@ export class WebRTCTransportService implements BridgeService {
|
|
|
99
116
|
|
|
100
117
|
async sendData({ proxyId, payload }: DataRequest): Promise<void> {
|
|
101
118
|
invariant(this.transports.has(proxyId));
|
|
102
|
-
|
|
119
|
+
const state = this.transports.get(proxyId)!;
|
|
120
|
+
const bufferHasSpace = state.stream.push(payload);
|
|
121
|
+
if (!bufferHasSpace) {
|
|
122
|
+
await new Promise<void>((resolve) => {
|
|
123
|
+
state.writeCallbacks.push(resolve);
|
|
124
|
+
});
|
|
125
|
+
}
|
|
103
126
|
}
|
|
104
127
|
|
|
105
128
|
async close({ proxyId }: CloseRequest) {
|