@dxos/teleport 0.1.17 → 0.1.18
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/index.mjs +92 -12
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/{testing.mjs → testing/index.mjs} +93 -14
- package/dist/lib/node/index.cjs +95 -13
- package/dist/lib/node/meta.json +1 -1
- package/dist/lib/node/{testing.cjs → testing/index.cjs} +96 -14
- package/dist/types/src/index.d.ts +1 -0
- package/dist/types/src/index.d.ts.map +1 -1
- package/dist/types/src/muxing/framer.d.ts +2 -1
- package/dist/types/src/muxing/framer.d.ts.map +1 -1
- package/dist/types/src/testing/index.d.ts +3 -0
- package/dist/types/src/testing/index.d.ts.map +1 -0
- package/dist/types/src/{testing.d.ts → testing/test-builder.d.ts} +2 -2
- package/dist/types/src/testing/test-builder.d.ts.map +1 -0
- package/dist/types/src/testing/test-extension.d.ts +20 -0
- package/dist/types/src/testing/test-extension.d.ts.map +1 -0
- package/package.json +10 -10
- package/src/index.ts +1 -0
- package/src/muxing/framer.test.ts +9 -8
- package/src/muxing/framer.ts +11 -10
- package/src/teleport.test.ts +1 -1
- package/src/testing/index.ts +6 -0
- package/src/{testing.ts → testing/test-builder.ts} +1 -1
- package/src/{test-extension.ts → testing/test-extension.ts} +18 -5
- package/testing.js +1 -1
- package/dist/lib/browser/index.mjs.map +0 -7
- package/dist/lib/browser/testing.mjs.map +0 -7
- package/dist/lib/node/index.cjs.map +0 -7
- package/dist/lib/node/testing.cjs.map +0 -7
- package/dist/types/src/test-extension.d.ts +0 -12
- package/dist/types/src/test-extension.d.ts.map +0 -1
- package/dist/types/src/testing.d.ts.map +0 -1
|
@@ -34,8 +34,7 @@ var Framer = class {
|
|
|
34
34
|
});
|
|
35
35
|
this.port = {
|
|
36
36
|
send: (message) => {
|
|
37
|
-
this._stream.push(
|
|
38
|
-
this._stream.push(message);
|
|
37
|
+
this._stream.push(encodeFrame(message));
|
|
39
38
|
},
|
|
40
39
|
subscribe: (callback) => {
|
|
41
40
|
var _a;
|
|
@@ -54,7 +53,7 @@ var Framer = class {
|
|
|
54
53
|
_popFrames() {
|
|
55
54
|
let offset = 0;
|
|
56
55
|
while (offset < this._buffer.length) {
|
|
57
|
-
const frame =
|
|
56
|
+
const frame = decodeFrame(this._buffer, offset);
|
|
58
57
|
if (!frame) {
|
|
59
58
|
break;
|
|
60
59
|
}
|
|
@@ -71,7 +70,7 @@ var Framer = class {
|
|
|
71
70
|
this._stream.destroy();
|
|
72
71
|
}
|
|
73
72
|
};
|
|
74
|
-
var
|
|
73
|
+
var decodeFrame = (buffer, offset) => {
|
|
75
74
|
try {
|
|
76
75
|
const frameLength = varint.decode(buffer, offset);
|
|
77
76
|
const tagLength = varint.decode.bytes;
|
|
@@ -91,12 +90,12 @@ var readFrame = (buffer, offset) => {
|
|
|
91
90
|
}
|
|
92
91
|
}
|
|
93
92
|
};
|
|
94
|
-
var
|
|
95
|
-
const
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
return
|
|
93
|
+
var encodeFrame = (payload) => {
|
|
94
|
+
const tagLength = varint.encodingLength(payload.length);
|
|
95
|
+
const frame = Buffer.allocUnsafe(tagLength + payload.length);
|
|
96
|
+
varint.encode(payload.length, frame);
|
|
97
|
+
frame.set(payload, tagLength);
|
|
98
|
+
return frame;
|
|
100
99
|
};
|
|
101
100
|
|
|
102
101
|
// packages/core/mesh/teleport/src/muxing/muxer.ts
|
|
@@ -537,10 +536,91 @@ var ControlExtension = class {
|
|
|
537
536
|
});
|
|
538
537
|
}
|
|
539
538
|
};
|
|
539
|
+
|
|
540
|
+
// packages/core/mesh/teleport/src/testing/test-extension.ts
|
|
541
|
+
import assert4 from "@dxos/node-std/assert";
|
|
542
|
+
import { asyncTimeout as asyncTimeout2, Trigger } from "@dxos/async";
|
|
543
|
+
import { log as log3 } from "@dxos/log";
|
|
544
|
+
import { schema as schema3 } from "@dxos/protocols";
|
|
545
|
+
import { createProtoRpcPeer as createProtoRpcPeer2 } from "@dxos/rpc";
|
|
546
|
+
var TestExtension = class {
|
|
547
|
+
constructor(callbacks = {}) {
|
|
548
|
+
this.callbacks = callbacks;
|
|
549
|
+
this.open = new Trigger();
|
|
550
|
+
this.closed = new Trigger();
|
|
551
|
+
}
|
|
552
|
+
get remotePeerId() {
|
|
553
|
+
var _a;
|
|
554
|
+
return (_a = this.extensionContext) == null ? void 0 : _a.remotePeerId;
|
|
555
|
+
}
|
|
556
|
+
async onOpen(context) {
|
|
557
|
+
var _a, _b;
|
|
558
|
+
log3("onOpen", {
|
|
559
|
+
localPeerId: context.localPeerId,
|
|
560
|
+
remotePeerId: context.remotePeerId
|
|
561
|
+
}, {
|
|
562
|
+
file: "/home/runner/work/dxos/dxos/packages/core/mesh/teleport/src/testing/test-extension.ts",
|
|
563
|
+
line: 33,
|
|
564
|
+
scope: this,
|
|
565
|
+
callSite: (f, a) => f(...a)
|
|
566
|
+
});
|
|
567
|
+
this.extensionContext = context;
|
|
568
|
+
this._rpc = createProtoRpcPeer2({
|
|
569
|
+
port: context.createPort("rpc", {
|
|
570
|
+
contentType: 'application/x-protobuf; messageType="dxos.rpc.Message"'
|
|
571
|
+
}),
|
|
572
|
+
requested: {
|
|
573
|
+
TestService: schema3.getService("example.testing.rpc.TestService")
|
|
574
|
+
},
|
|
575
|
+
exposed: {
|
|
576
|
+
TestService: schema3.getService("example.testing.rpc.TestService")
|
|
577
|
+
},
|
|
578
|
+
handlers: {
|
|
579
|
+
TestService: {
|
|
580
|
+
voidCall: async (request) => {
|
|
581
|
+
},
|
|
582
|
+
testCall: async (request) => {
|
|
583
|
+
return {
|
|
584
|
+
data: request.data
|
|
585
|
+
};
|
|
586
|
+
}
|
|
587
|
+
}
|
|
588
|
+
},
|
|
589
|
+
timeout: 1e3
|
|
590
|
+
});
|
|
591
|
+
await this._rpc.open();
|
|
592
|
+
await ((_b = (_a = this.callbacks).onOpen) == null ? void 0 : _b.call(_a));
|
|
593
|
+
this.open.wake();
|
|
594
|
+
}
|
|
595
|
+
async onClose(err) {
|
|
596
|
+
var _a, _b, _c;
|
|
597
|
+
log3("onClose", {
|
|
598
|
+
err
|
|
599
|
+
}, {
|
|
600
|
+
file: "/home/runner/work/dxos/dxos/packages/core/mesh/teleport/src/testing/test-extension.ts",
|
|
601
|
+
line: 67,
|
|
602
|
+
scope: this,
|
|
603
|
+
callSite: (f, a) => f(...a)
|
|
604
|
+
});
|
|
605
|
+
await ((_b = (_a = this.callbacks).onClose) == null ? void 0 : _b.call(_a));
|
|
606
|
+
this.closed.wake();
|
|
607
|
+
await ((_c = this._rpc) == null ? void 0 : _c.close());
|
|
608
|
+
}
|
|
609
|
+
async test() {
|
|
610
|
+
await this.open.wait({
|
|
611
|
+
timeout: 500
|
|
612
|
+
});
|
|
613
|
+
const res = await asyncTimeout2(this._rpc.rpc.TestService.testCall({
|
|
614
|
+
data: "test"
|
|
615
|
+
}), 500);
|
|
616
|
+
assert4(res.data === "test");
|
|
617
|
+
}
|
|
618
|
+
};
|
|
540
619
|
export {
|
|
541
620
|
Framer,
|
|
542
621
|
Muxer,
|
|
543
622
|
Teleport,
|
|
544
|
-
|
|
623
|
+
TestExtension,
|
|
624
|
+
decodeFrame,
|
|
625
|
+
encodeFrame
|
|
545
626
|
};
|
|
546
|
-
//# sourceMappingURL=index.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"inputs":{"packages/core/mesh/teleport/src/muxing/framer.ts":{"bytes":
|
|
1
|
+
{"inputs":{"packages/core/mesh/teleport/src/muxing/framer.ts":{"bytes":12877,"imports":[]},"packages/core/mesh/teleport/src/muxing/muxer.ts":{"bytes":25627,"imports":[{"path":"packages/core/mesh/teleport/src/muxing/framer.ts","kind":"import-statement"}]},"packages/core/mesh/teleport/src/muxing/rpc-port.ts":{"bytes":912,"imports":[]},"packages/core/mesh/teleport/src/muxing/index.ts":{"bytes":631,"imports":[{"path":"packages/core/mesh/teleport/src/muxing/framer.ts","kind":"import-statement"},{"path":"packages/core/mesh/teleport/src/muxing/muxer.ts","kind":"import-statement"},{"path":"packages/core/mesh/teleport/src/muxing/rpc-port.ts","kind":"import-statement"}]},"packages/core/mesh/teleport/src/teleport.ts":{"bytes":27881,"imports":[{"path":"packages/core/mesh/teleport/src/muxing/index.ts","kind":"import-statement"}]},"packages/core/mesh/teleport/src/testing/test-extension.ts":{"bytes":8163,"imports":[]},"packages/core/mesh/teleport/src/index.ts":{"bytes":664,"imports":[{"path":"packages/core/mesh/teleport/src/muxing/index.ts","kind":"import-statement"},{"path":"packages/core/mesh/teleport/src/teleport.ts","kind":"import-statement"},{"path":"packages/core/mesh/teleport/src/testing/test-extension.ts","kind":"import-statement"}]},"packages/core/mesh/teleport/src/testing/test-builder.ts":{"bytes":7539,"imports":[{"path":"packages/core/mesh/teleport/src/teleport.ts","kind":"import-statement"}]},"packages/core/mesh/teleport/src/testing/index.ts":{"bytes":582,"imports":[{"path":"packages/core/mesh/teleport/src/testing/test-builder.ts","kind":"import-statement"},{"path":"packages/core/mesh/teleport/src/testing/test-extension.ts","kind":"import-statement"}]}},"outputs":{"packages/core/mesh/teleport/dist/lib/browser/index.mjs":{"imports":[],"exports":["Framer","Muxer","Teleport","TestExtension","decodeFrame","encodeFrame"],"entryPoint":"packages/core/mesh/teleport/src/index.ts","inputs":{"packages/core/mesh/teleport/src/muxing/framer.ts":{"bytesInOutput":2560},"packages/core/mesh/teleport/src/muxing/index.ts":{"bytesInOutput":0},"packages/core/mesh/teleport/src/muxing/muxer.ts":{"bytesInOutput":5288},"packages/core/mesh/teleport/src/index.ts":{"bytesInOutput":0},"packages/core/mesh/teleport/src/teleport.ts":{"bytesInOutput":7504},"packages/core/mesh/teleport/src/testing/test-extension.ts":{"bytesInOutput":2339}},"bytes":18027},"packages/core/mesh/teleport/dist/lib/browser/testing/index.mjs":{"imports":[],"exports":["TestBuilder","TestExtension","TestPeer"],"entryPoint":"packages/core/mesh/teleport/src/testing/index.ts","inputs":{"packages/core/mesh/teleport/src/testing/test-builder.ts":{"bytesInOutput":1889},"packages/core/mesh/teleport/src/teleport.ts":{"bytesInOutput":7504},"packages/core/mesh/teleport/src/muxing/framer.ts":{"bytesInOutput":2560},"packages/core/mesh/teleport/src/muxing/index.ts":{"bytesInOutput":0},"packages/core/mesh/teleport/src/muxing/muxer.ts":{"bytesInOutput":5288},"packages/core/mesh/teleport/src/testing/index.ts":{"bytesInOutput":0},"packages/core/mesh/teleport/src/testing/test-extension.ts":{"bytesInOutput":2339}},"bytes":20050}}}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import "@dxos/node-std/globals"
|
|
2
2
|
|
|
3
|
-
// packages/core/mesh/teleport/src/testing.ts
|
|
3
|
+
// packages/core/mesh/teleport/src/testing/test-builder.ts
|
|
4
4
|
import { pipeline } from "@dxos/node-std/stream";
|
|
5
5
|
import { PublicKey as PublicKey2 } from "@dxos/keys";
|
|
6
6
|
import { log as log3 } from "@dxos/log";
|
|
@@ -50,8 +50,7 @@ var Framer = class {
|
|
|
50
50
|
});
|
|
51
51
|
this.port = {
|
|
52
52
|
send: (message) => {
|
|
53
|
-
this._stream.push(
|
|
54
|
-
this._stream.push(message);
|
|
53
|
+
this._stream.push(encodeFrame(message));
|
|
55
54
|
},
|
|
56
55
|
subscribe: (callback) => {
|
|
57
56
|
var _a;
|
|
@@ -70,7 +69,7 @@ var Framer = class {
|
|
|
70
69
|
_popFrames() {
|
|
71
70
|
let offset = 0;
|
|
72
71
|
while (offset < this._buffer.length) {
|
|
73
|
-
const frame =
|
|
72
|
+
const frame = decodeFrame(this._buffer, offset);
|
|
74
73
|
if (!frame) {
|
|
75
74
|
break;
|
|
76
75
|
}
|
|
@@ -87,7 +86,7 @@ var Framer = class {
|
|
|
87
86
|
this._stream.destroy();
|
|
88
87
|
}
|
|
89
88
|
};
|
|
90
|
-
var
|
|
89
|
+
var decodeFrame = (buffer, offset) => {
|
|
91
90
|
try {
|
|
92
91
|
const frameLength = varint.decode(buffer, offset);
|
|
93
92
|
const tagLength = varint.decode.bytes;
|
|
@@ -107,12 +106,12 @@ var readFrame = (buffer, offset) => {
|
|
|
107
106
|
}
|
|
108
107
|
}
|
|
109
108
|
};
|
|
110
|
-
var
|
|
111
|
-
const
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
return
|
|
109
|
+
var encodeFrame = (payload) => {
|
|
110
|
+
const tagLength = varint.encodingLength(payload.length);
|
|
111
|
+
const frame = Buffer.allocUnsafe(tagLength + payload.length);
|
|
112
|
+
varint.encode(payload.length, frame);
|
|
113
|
+
frame.set(payload, tagLength);
|
|
114
|
+
return frame;
|
|
116
115
|
};
|
|
117
116
|
|
|
118
117
|
// packages/core/mesh/teleport/src/muxing/muxer.ts
|
|
@@ -545,7 +544,7 @@ var ControlExtension = class {
|
|
|
545
544
|
}
|
|
546
545
|
};
|
|
547
546
|
|
|
548
|
-
// packages/core/mesh/teleport/src/testing.ts
|
|
547
|
+
// packages/core/mesh/teleport/src/testing/test-builder.ts
|
|
549
548
|
var TestBuilder = class {
|
|
550
549
|
constructor() {
|
|
551
550
|
this._peers = new Array();
|
|
@@ -603,7 +602,7 @@ var TestPeer = class {
|
|
|
603
602
|
pipeline(this.teleport.stream, peer.teleport.stream, (err) => {
|
|
604
603
|
if (err && err.code !== "ERR_STREAM_PREMATURE_CLOSE") {
|
|
605
604
|
log3.catch(err, {}, {
|
|
606
|
-
file: "/home/runner/work/dxos/dxos/packages/core/mesh/teleport/src/testing.ts",
|
|
605
|
+
file: "/home/runner/work/dxos/dxos/packages/core/mesh/teleport/src/testing/test-builder.ts",
|
|
607
606
|
line: 67,
|
|
608
607
|
scope: this,
|
|
609
608
|
callSite: (f, a) => f(...a)
|
|
@@ -616,8 +615,88 @@ var TestPeer = class {
|
|
|
616
615
|
await ((_a = this.teleport) == null ? void 0 : _a.destroy());
|
|
617
616
|
}
|
|
618
617
|
};
|
|
618
|
+
|
|
619
|
+
// packages/core/mesh/teleport/src/testing/test-extension.ts
|
|
620
|
+
import assert4 from "@dxos/node-std/assert";
|
|
621
|
+
import { asyncTimeout as asyncTimeout2, Trigger } from "@dxos/async";
|
|
622
|
+
import { log as log4 } from "@dxos/log";
|
|
623
|
+
import { schema as schema3 } from "@dxos/protocols";
|
|
624
|
+
import { createProtoRpcPeer as createProtoRpcPeer2 } from "@dxos/rpc";
|
|
625
|
+
var TestExtension = class {
|
|
626
|
+
constructor(callbacks = {}) {
|
|
627
|
+
this.callbacks = callbacks;
|
|
628
|
+
this.open = new Trigger();
|
|
629
|
+
this.closed = new Trigger();
|
|
630
|
+
}
|
|
631
|
+
get remotePeerId() {
|
|
632
|
+
var _a;
|
|
633
|
+
return (_a = this.extensionContext) == null ? void 0 : _a.remotePeerId;
|
|
634
|
+
}
|
|
635
|
+
async onOpen(context) {
|
|
636
|
+
var _a, _b;
|
|
637
|
+
log4("onOpen", {
|
|
638
|
+
localPeerId: context.localPeerId,
|
|
639
|
+
remotePeerId: context.remotePeerId
|
|
640
|
+
}, {
|
|
641
|
+
file: "/home/runner/work/dxos/dxos/packages/core/mesh/teleport/src/testing/test-extension.ts",
|
|
642
|
+
line: 33,
|
|
643
|
+
scope: this,
|
|
644
|
+
callSite: (f, a) => f(...a)
|
|
645
|
+
});
|
|
646
|
+
this.extensionContext = context;
|
|
647
|
+
this._rpc = createProtoRpcPeer2({
|
|
648
|
+
port: context.createPort("rpc", {
|
|
649
|
+
contentType: 'application/x-protobuf; messageType="dxos.rpc.Message"'
|
|
650
|
+
}),
|
|
651
|
+
requested: {
|
|
652
|
+
TestService: schema3.getService("example.testing.rpc.TestService")
|
|
653
|
+
},
|
|
654
|
+
exposed: {
|
|
655
|
+
TestService: schema3.getService("example.testing.rpc.TestService")
|
|
656
|
+
},
|
|
657
|
+
handlers: {
|
|
658
|
+
TestService: {
|
|
659
|
+
voidCall: async (request) => {
|
|
660
|
+
},
|
|
661
|
+
testCall: async (request) => {
|
|
662
|
+
return {
|
|
663
|
+
data: request.data
|
|
664
|
+
};
|
|
665
|
+
}
|
|
666
|
+
}
|
|
667
|
+
},
|
|
668
|
+
timeout: 1e3
|
|
669
|
+
});
|
|
670
|
+
await this._rpc.open();
|
|
671
|
+
await ((_b = (_a = this.callbacks).onOpen) == null ? void 0 : _b.call(_a));
|
|
672
|
+
this.open.wake();
|
|
673
|
+
}
|
|
674
|
+
async onClose(err) {
|
|
675
|
+
var _a, _b, _c;
|
|
676
|
+
log4("onClose", {
|
|
677
|
+
err
|
|
678
|
+
}, {
|
|
679
|
+
file: "/home/runner/work/dxos/dxos/packages/core/mesh/teleport/src/testing/test-extension.ts",
|
|
680
|
+
line: 67,
|
|
681
|
+
scope: this,
|
|
682
|
+
callSite: (f, a) => f(...a)
|
|
683
|
+
});
|
|
684
|
+
await ((_b = (_a = this.callbacks).onClose) == null ? void 0 : _b.call(_a));
|
|
685
|
+
this.closed.wake();
|
|
686
|
+
await ((_c = this._rpc) == null ? void 0 : _c.close());
|
|
687
|
+
}
|
|
688
|
+
async test() {
|
|
689
|
+
await this.open.wait({
|
|
690
|
+
timeout: 500
|
|
691
|
+
});
|
|
692
|
+
const res = await asyncTimeout2(this._rpc.rpc.TestService.testCall({
|
|
693
|
+
data: "test"
|
|
694
|
+
}), 500);
|
|
695
|
+
assert4(res.data === "test");
|
|
696
|
+
}
|
|
697
|
+
};
|
|
619
698
|
export {
|
|
620
699
|
TestBuilder,
|
|
700
|
+
TestExtension,
|
|
621
701
|
TestPeer
|
|
622
702
|
};
|
|
623
|
-
//# sourceMappingURL=testing.mjs.map
|
package/dist/lib/node/index.cjs
CHANGED
|
@@ -29,7 +29,9 @@ __export(src_exports, {
|
|
|
29
29
|
Framer: () => Framer,
|
|
30
30
|
Muxer: () => Muxer,
|
|
31
31
|
Teleport: () => Teleport,
|
|
32
|
-
|
|
32
|
+
TestExtension: () => TestExtension,
|
|
33
|
+
decodeFrame: () => decodeFrame,
|
|
34
|
+
encodeFrame: () => encodeFrame
|
|
33
35
|
});
|
|
34
36
|
module.exports = __toCommonJS(src_exports);
|
|
35
37
|
|
|
@@ -67,8 +69,7 @@ var Framer = class {
|
|
|
67
69
|
});
|
|
68
70
|
this.port = {
|
|
69
71
|
send: (message) => {
|
|
70
|
-
this._stream.push(
|
|
71
|
-
this._stream.push(message);
|
|
72
|
+
this._stream.push(encodeFrame(message));
|
|
72
73
|
},
|
|
73
74
|
subscribe: (callback) => {
|
|
74
75
|
var _a;
|
|
@@ -87,7 +88,7 @@ var Framer = class {
|
|
|
87
88
|
_popFrames() {
|
|
88
89
|
let offset = 0;
|
|
89
90
|
while (offset < this._buffer.length) {
|
|
90
|
-
const frame =
|
|
91
|
+
const frame = decodeFrame(this._buffer, offset);
|
|
91
92
|
if (!frame) {
|
|
92
93
|
break;
|
|
93
94
|
}
|
|
@@ -104,7 +105,7 @@ var Framer = class {
|
|
|
104
105
|
this._stream.destroy();
|
|
105
106
|
}
|
|
106
107
|
};
|
|
107
|
-
var
|
|
108
|
+
var decodeFrame = (buffer, offset) => {
|
|
108
109
|
try {
|
|
109
110
|
const frameLength = varint.decode(buffer, offset);
|
|
110
111
|
const tagLength = varint.decode.bytes;
|
|
@@ -124,12 +125,12 @@ var readFrame = (buffer, offset) => {
|
|
|
124
125
|
}
|
|
125
126
|
}
|
|
126
127
|
};
|
|
127
|
-
var
|
|
128
|
-
const
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
return
|
|
128
|
+
var encodeFrame = (payload) => {
|
|
129
|
+
const tagLength = varint.encodingLength(payload.length);
|
|
130
|
+
const frame = Buffer.allocUnsafe(tagLength + payload.length);
|
|
131
|
+
varint.encode(payload.length, frame);
|
|
132
|
+
frame.set(payload, tagLength);
|
|
133
|
+
return frame;
|
|
133
134
|
};
|
|
134
135
|
|
|
135
136
|
// packages/core/mesh/teleport/src/muxing/muxer.ts
|
|
@@ -570,11 +571,92 @@ var ControlExtension = class {
|
|
|
570
571
|
});
|
|
571
572
|
}
|
|
572
573
|
};
|
|
574
|
+
|
|
575
|
+
// packages/core/mesh/teleport/src/testing/test-extension.ts
|
|
576
|
+
var import_node_assert4 = __toESM(require("node:assert"));
|
|
577
|
+
var import_async3 = require("@dxos/async");
|
|
578
|
+
var import_log3 = require("@dxos/log");
|
|
579
|
+
var import_protocols3 = require("@dxos/protocols");
|
|
580
|
+
var import_rpc2 = require("@dxos/rpc");
|
|
581
|
+
var TestExtension = class {
|
|
582
|
+
constructor(callbacks = {}) {
|
|
583
|
+
this.callbacks = callbacks;
|
|
584
|
+
this.open = new import_async3.Trigger();
|
|
585
|
+
this.closed = new import_async3.Trigger();
|
|
586
|
+
}
|
|
587
|
+
get remotePeerId() {
|
|
588
|
+
var _a;
|
|
589
|
+
return (_a = this.extensionContext) == null ? void 0 : _a.remotePeerId;
|
|
590
|
+
}
|
|
591
|
+
async onOpen(context) {
|
|
592
|
+
var _a, _b;
|
|
593
|
+
(0, import_log3.log)("onOpen", {
|
|
594
|
+
localPeerId: context.localPeerId,
|
|
595
|
+
remotePeerId: context.remotePeerId
|
|
596
|
+
}, {
|
|
597
|
+
file: "/home/runner/work/dxos/dxos/packages/core/mesh/teleport/src/testing/test-extension.ts",
|
|
598
|
+
line: 33,
|
|
599
|
+
scope: this,
|
|
600
|
+
callSite: (f, a) => f(...a)
|
|
601
|
+
});
|
|
602
|
+
this.extensionContext = context;
|
|
603
|
+
this._rpc = (0, import_rpc2.createProtoRpcPeer)({
|
|
604
|
+
port: context.createPort("rpc", {
|
|
605
|
+
contentType: 'application/x-protobuf; messageType="dxos.rpc.Message"'
|
|
606
|
+
}),
|
|
607
|
+
requested: {
|
|
608
|
+
TestService: import_protocols3.schema.getService("example.testing.rpc.TestService")
|
|
609
|
+
},
|
|
610
|
+
exposed: {
|
|
611
|
+
TestService: import_protocols3.schema.getService("example.testing.rpc.TestService")
|
|
612
|
+
},
|
|
613
|
+
handlers: {
|
|
614
|
+
TestService: {
|
|
615
|
+
voidCall: async (request) => {
|
|
616
|
+
},
|
|
617
|
+
testCall: async (request) => {
|
|
618
|
+
return {
|
|
619
|
+
data: request.data
|
|
620
|
+
};
|
|
621
|
+
}
|
|
622
|
+
}
|
|
623
|
+
},
|
|
624
|
+
timeout: 1e3
|
|
625
|
+
});
|
|
626
|
+
await this._rpc.open();
|
|
627
|
+
await ((_b = (_a = this.callbacks).onOpen) == null ? void 0 : _b.call(_a));
|
|
628
|
+
this.open.wake();
|
|
629
|
+
}
|
|
630
|
+
async onClose(err) {
|
|
631
|
+
var _a, _b, _c;
|
|
632
|
+
(0, import_log3.log)("onClose", {
|
|
633
|
+
err
|
|
634
|
+
}, {
|
|
635
|
+
file: "/home/runner/work/dxos/dxos/packages/core/mesh/teleport/src/testing/test-extension.ts",
|
|
636
|
+
line: 67,
|
|
637
|
+
scope: this,
|
|
638
|
+
callSite: (f, a) => f(...a)
|
|
639
|
+
});
|
|
640
|
+
await ((_b = (_a = this.callbacks).onClose) == null ? void 0 : _b.call(_a));
|
|
641
|
+
this.closed.wake();
|
|
642
|
+
await ((_c = this._rpc) == null ? void 0 : _c.close());
|
|
643
|
+
}
|
|
644
|
+
async test() {
|
|
645
|
+
await this.open.wait({
|
|
646
|
+
timeout: 500
|
|
647
|
+
});
|
|
648
|
+
const res = await (0, import_async3.asyncTimeout)(this._rpc.rpc.TestService.testCall({
|
|
649
|
+
data: "test"
|
|
650
|
+
}), 500);
|
|
651
|
+
(0, import_node_assert4.default)(res.data === "test");
|
|
652
|
+
}
|
|
653
|
+
};
|
|
573
654
|
// Annotate the CommonJS export names for ESM import in node:
|
|
574
655
|
0 && (module.exports = {
|
|
575
656
|
Framer,
|
|
576
657
|
Muxer,
|
|
577
658
|
Teleport,
|
|
578
|
-
|
|
659
|
+
TestExtension,
|
|
660
|
+
decodeFrame,
|
|
661
|
+
encodeFrame
|
|
579
662
|
});
|
|
580
|
-
//# sourceMappingURL=index.cjs.map
|
package/dist/lib/node/meta.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"inputs":{"packages/core/mesh/teleport/src/muxing/framer.ts":{"bytes":
|
|
1
|
+
{"inputs":{"packages/core/mesh/teleport/src/muxing/framer.ts":{"bytes":12877,"imports":[]},"packages/core/mesh/teleport/src/muxing/muxer.ts":{"bytes":25627,"imports":[{"path":"packages/core/mesh/teleport/src/muxing/framer.ts","kind":"import-statement"}]},"packages/core/mesh/teleport/src/muxing/rpc-port.ts":{"bytes":912,"imports":[]},"packages/core/mesh/teleport/src/muxing/index.ts":{"bytes":631,"imports":[{"path":"packages/core/mesh/teleport/src/muxing/framer.ts","kind":"import-statement"},{"path":"packages/core/mesh/teleport/src/muxing/muxer.ts","kind":"import-statement"},{"path":"packages/core/mesh/teleport/src/muxing/rpc-port.ts","kind":"import-statement"}]},"packages/core/mesh/teleport/src/teleport.ts":{"bytes":27881,"imports":[{"path":"packages/core/mesh/teleport/src/muxing/index.ts","kind":"import-statement"}]},"packages/core/mesh/teleport/src/testing/test-extension.ts":{"bytes":8163,"imports":[]},"packages/core/mesh/teleport/src/index.ts":{"bytes":664,"imports":[{"path":"packages/core/mesh/teleport/src/muxing/index.ts","kind":"import-statement"},{"path":"packages/core/mesh/teleport/src/teleport.ts","kind":"import-statement"},{"path":"packages/core/mesh/teleport/src/testing/test-extension.ts","kind":"import-statement"}]},"packages/core/mesh/teleport/src/testing/test-builder.ts":{"bytes":7539,"imports":[{"path":"packages/core/mesh/teleport/src/teleport.ts","kind":"import-statement"}]},"packages/core/mesh/teleport/src/testing/index.ts":{"bytes":582,"imports":[{"path":"packages/core/mesh/teleport/src/testing/test-builder.ts","kind":"import-statement"},{"path":"packages/core/mesh/teleport/src/testing/test-extension.ts","kind":"import-statement"}]}},"outputs":{"packages/core/mesh/teleport/dist/lib/node/index.cjs":{"imports":[],"exports":[],"entryPoint":"packages/core/mesh/teleport/src/index.ts","inputs":{"packages/core/mesh/teleport/src/index.ts":{"bytesInOutput":273},"packages/core/mesh/teleport/src/muxing/framer.ts":{"bytesInOutput":2651},"packages/core/mesh/teleport/src/muxing/index.ts":{"bytesInOutput":0},"packages/core/mesh/teleport/src/muxing/muxer.ts":{"bytesInOutput":5492},"packages/core/mesh/teleport/src/teleport.ts":{"bytesInOutput":7989},"packages/core/mesh/teleport/src/testing/test-extension.ts":{"bytesInOutput":2447}},"bytes":20390},"packages/core/mesh/teleport/dist/lib/node/testing/index.cjs":{"imports":[],"exports":[],"entryPoint":"packages/core/mesh/teleport/src/testing/index.ts","inputs":{"packages/core/mesh/teleport/src/testing/index.ts":{"bytesInOutput":205},"packages/core/mesh/teleport/src/testing/test-builder.ts":{"bytesInOutput":1924},"packages/core/mesh/teleport/src/teleport.ts":{"bytesInOutput":7989},"packages/core/mesh/teleport/src/muxing/framer.ts":{"bytesInOutput":2651},"packages/core/mesh/teleport/src/muxing/index.ts":{"bytesInOutput":0},"packages/core/mesh/teleport/src/muxing/muxer.ts":{"bytesInOutput":5492},"packages/core/mesh/teleport/src/testing/test-extension.ts":{"bytesInOutput":2447}},"bytes":22388}}}
|
|
@@ -23,13 +23,16 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
|
|
|
23
23
|
));
|
|
24
24
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
25
25
|
|
|
26
|
-
// packages/core/mesh/teleport/src/testing.ts
|
|
26
|
+
// packages/core/mesh/teleport/src/testing/index.ts
|
|
27
27
|
var testing_exports = {};
|
|
28
28
|
__export(testing_exports, {
|
|
29
29
|
TestBuilder: () => TestBuilder,
|
|
30
|
+
TestExtension: () => TestExtension,
|
|
30
31
|
TestPeer: () => TestPeer
|
|
31
32
|
});
|
|
32
33
|
module.exports = __toCommonJS(testing_exports);
|
|
34
|
+
|
|
35
|
+
// packages/core/mesh/teleport/src/testing/test-builder.ts
|
|
33
36
|
var import_node_stream3 = require("node:stream");
|
|
34
37
|
var import_keys2 = require("@dxos/keys");
|
|
35
38
|
var import_log3 = require("@dxos/log");
|
|
@@ -79,8 +82,7 @@ var Framer = class {
|
|
|
79
82
|
});
|
|
80
83
|
this.port = {
|
|
81
84
|
send: (message) => {
|
|
82
|
-
this._stream.push(
|
|
83
|
-
this._stream.push(message);
|
|
85
|
+
this._stream.push(encodeFrame(message));
|
|
84
86
|
},
|
|
85
87
|
subscribe: (callback) => {
|
|
86
88
|
var _a;
|
|
@@ -99,7 +101,7 @@ var Framer = class {
|
|
|
99
101
|
_popFrames() {
|
|
100
102
|
let offset = 0;
|
|
101
103
|
while (offset < this._buffer.length) {
|
|
102
|
-
const frame =
|
|
104
|
+
const frame = decodeFrame(this._buffer, offset);
|
|
103
105
|
if (!frame) {
|
|
104
106
|
break;
|
|
105
107
|
}
|
|
@@ -116,7 +118,7 @@ var Framer = class {
|
|
|
116
118
|
this._stream.destroy();
|
|
117
119
|
}
|
|
118
120
|
};
|
|
119
|
-
var
|
|
121
|
+
var decodeFrame = (buffer, offset) => {
|
|
120
122
|
try {
|
|
121
123
|
const frameLength = varint.decode(buffer, offset);
|
|
122
124
|
const tagLength = varint.decode.bytes;
|
|
@@ -136,12 +138,12 @@ var readFrame = (buffer, offset) => {
|
|
|
136
138
|
}
|
|
137
139
|
}
|
|
138
140
|
};
|
|
139
|
-
var
|
|
140
|
-
const
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
return
|
|
141
|
+
var encodeFrame = (payload) => {
|
|
142
|
+
const tagLength = varint.encodingLength(payload.length);
|
|
143
|
+
const frame = Buffer.allocUnsafe(tagLength + payload.length);
|
|
144
|
+
varint.encode(payload.length, frame);
|
|
145
|
+
frame.set(payload, tagLength);
|
|
146
|
+
return frame;
|
|
145
147
|
};
|
|
146
148
|
|
|
147
149
|
// packages/core/mesh/teleport/src/muxing/muxer.ts
|
|
@@ -574,7 +576,7 @@ var ControlExtension = class {
|
|
|
574
576
|
}
|
|
575
577
|
};
|
|
576
578
|
|
|
577
|
-
// packages/core/mesh/teleport/src/testing.ts
|
|
579
|
+
// packages/core/mesh/teleport/src/testing/test-builder.ts
|
|
578
580
|
var TestBuilder = class {
|
|
579
581
|
constructor() {
|
|
580
582
|
this._peers = new Array();
|
|
@@ -632,7 +634,7 @@ var TestPeer = class {
|
|
|
632
634
|
(0, import_node_stream3.pipeline)(this.teleport.stream, peer.teleport.stream, (err) => {
|
|
633
635
|
if (err && err.code !== "ERR_STREAM_PREMATURE_CLOSE") {
|
|
634
636
|
import_log3.log.catch(err, {}, {
|
|
635
|
-
file: "/home/runner/work/dxos/dxos/packages/core/mesh/teleport/src/testing.ts",
|
|
637
|
+
file: "/home/runner/work/dxos/dxos/packages/core/mesh/teleport/src/testing/test-builder.ts",
|
|
636
638
|
line: 67,
|
|
637
639
|
scope: this,
|
|
638
640
|
callSite: (f, a) => f(...a)
|
|
@@ -645,9 +647,89 @@ var TestPeer = class {
|
|
|
645
647
|
await ((_a = this.teleport) == null ? void 0 : _a.destroy());
|
|
646
648
|
}
|
|
647
649
|
};
|
|
650
|
+
|
|
651
|
+
// packages/core/mesh/teleport/src/testing/test-extension.ts
|
|
652
|
+
var import_node_assert4 = __toESM(require("node:assert"));
|
|
653
|
+
var import_async3 = require("@dxos/async");
|
|
654
|
+
var import_log4 = require("@dxos/log");
|
|
655
|
+
var import_protocols3 = require("@dxos/protocols");
|
|
656
|
+
var import_rpc2 = require("@dxos/rpc");
|
|
657
|
+
var TestExtension = class {
|
|
658
|
+
constructor(callbacks = {}) {
|
|
659
|
+
this.callbacks = callbacks;
|
|
660
|
+
this.open = new import_async3.Trigger();
|
|
661
|
+
this.closed = new import_async3.Trigger();
|
|
662
|
+
}
|
|
663
|
+
get remotePeerId() {
|
|
664
|
+
var _a;
|
|
665
|
+
return (_a = this.extensionContext) == null ? void 0 : _a.remotePeerId;
|
|
666
|
+
}
|
|
667
|
+
async onOpen(context) {
|
|
668
|
+
var _a, _b;
|
|
669
|
+
(0, import_log4.log)("onOpen", {
|
|
670
|
+
localPeerId: context.localPeerId,
|
|
671
|
+
remotePeerId: context.remotePeerId
|
|
672
|
+
}, {
|
|
673
|
+
file: "/home/runner/work/dxos/dxos/packages/core/mesh/teleport/src/testing/test-extension.ts",
|
|
674
|
+
line: 33,
|
|
675
|
+
scope: this,
|
|
676
|
+
callSite: (f, a) => f(...a)
|
|
677
|
+
});
|
|
678
|
+
this.extensionContext = context;
|
|
679
|
+
this._rpc = (0, import_rpc2.createProtoRpcPeer)({
|
|
680
|
+
port: context.createPort("rpc", {
|
|
681
|
+
contentType: 'application/x-protobuf; messageType="dxos.rpc.Message"'
|
|
682
|
+
}),
|
|
683
|
+
requested: {
|
|
684
|
+
TestService: import_protocols3.schema.getService("example.testing.rpc.TestService")
|
|
685
|
+
},
|
|
686
|
+
exposed: {
|
|
687
|
+
TestService: import_protocols3.schema.getService("example.testing.rpc.TestService")
|
|
688
|
+
},
|
|
689
|
+
handlers: {
|
|
690
|
+
TestService: {
|
|
691
|
+
voidCall: async (request) => {
|
|
692
|
+
},
|
|
693
|
+
testCall: async (request) => {
|
|
694
|
+
return {
|
|
695
|
+
data: request.data
|
|
696
|
+
};
|
|
697
|
+
}
|
|
698
|
+
}
|
|
699
|
+
},
|
|
700
|
+
timeout: 1e3
|
|
701
|
+
});
|
|
702
|
+
await this._rpc.open();
|
|
703
|
+
await ((_b = (_a = this.callbacks).onOpen) == null ? void 0 : _b.call(_a));
|
|
704
|
+
this.open.wake();
|
|
705
|
+
}
|
|
706
|
+
async onClose(err) {
|
|
707
|
+
var _a, _b, _c;
|
|
708
|
+
(0, import_log4.log)("onClose", {
|
|
709
|
+
err
|
|
710
|
+
}, {
|
|
711
|
+
file: "/home/runner/work/dxos/dxos/packages/core/mesh/teleport/src/testing/test-extension.ts",
|
|
712
|
+
line: 67,
|
|
713
|
+
scope: this,
|
|
714
|
+
callSite: (f, a) => f(...a)
|
|
715
|
+
});
|
|
716
|
+
await ((_b = (_a = this.callbacks).onClose) == null ? void 0 : _b.call(_a));
|
|
717
|
+
this.closed.wake();
|
|
718
|
+
await ((_c = this._rpc) == null ? void 0 : _c.close());
|
|
719
|
+
}
|
|
720
|
+
async test() {
|
|
721
|
+
await this.open.wait({
|
|
722
|
+
timeout: 500
|
|
723
|
+
});
|
|
724
|
+
const res = await (0, import_async3.asyncTimeout)(this._rpc.rpc.TestService.testCall({
|
|
725
|
+
data: "test"
|
|
726
|
+
}), 500);
|
|
727
|
+
(0, import_node_assert4.default)(res.data === "test");
|
|
728
|
+
}
|
|
729
|
+
};
|
|
648
730
|
// Annotate the CommonJS export names for ESM import in node:
|
|
649
731
|
0 && (module.exports = {
|
|
650
732
|
TestBuilder,
|
|
733
|
+
TestExtension,
|
|
651
734
|
TestPeer
|
|
652
735
|
});
|
|
653
|
-
//# sourceMappingURL=testing.cjs.map
|