starpc 0.32.13 → 0.32.15
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/srpc/server.test.js +42 -0
- package/dist/srpc/websocket.d.ts +0 -1
- package/go.mod +2 -2
- package/go.sum +4 -0
- package/package.json +12 -11
- package/srpc/server.test.ts +74 -0
- package/{e2e/e2e_test.go → srpc/server_test.go} +2 -2
- package/dist/e2e/e2e.js +0 -49
- package/e2e/README.md +0 -10
- package/e2e/e2e.go +0 -1
- package/e2e/e2e.ts +0 -81
- /package/dist/{e2e/mock → mock}/mock.pb.d.ts +0 -0
- /package/dist/{e2e/mock → mock}/mock.pb.js +0 -0
- /package/dist/{e2e/mock → mock}/mock_srpc.pb.d.ts +0 -0
- /package/dist/{e2e/mock → mock}/mock_srpc.pb.js +0 -0
- /package/dist/{e2e/e2e.d.ts → srpc/server.test.d.ts} +0 -0
- /package/{e2e/mock → mock}/mock.go +0 -0
- /package/{e2e/mock → mock}/mock.pb.go +0 -0
- /package/{e2e/mock → mock}/mock.pb.ts +0 -0
- /package/{e2e/mock → mock}/mock.proto +0 -0
- /package/{e2e/mock → mock}/mock_srpc.pb.go +0 -0
- /package/{e2e/mock → mock}/mock_srpc.pb.ts +0 -0
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { describe, it, beforeEach } from 'vitest';
|
|
2
|
+
import { pipe } from 'it-pipe';
|
|
3
|
+
import { createHandler, createMux, Server, Client, StreamConn, ChannelStream, combineUint8ArrayListTransform, } from '../srpc/index.js';
|
|
4
|
+
import { EchoerDefinition, EchoerServer, runClientTest } from '../echo/index.js';
|
|
5
|
+
import { runAbortControllerTest, runRpcStreamTest, } from '../echo/client-test.js';
|
|
6
|
+
describe('srpc server', () => {
|
|
7
|
+
let client;
|
|
8
|
+
beforeEach(async () => {
|
|
9
|
+
const mux = createMux();
|
|
10
|
+
const server = new Server(mux.lookupMethodFunc);
|
|
11
|
+
const echoer = new EchoerServer(server);
|
|
12
|
+
mux.register(createHandler(EchoerDefinition, echoer));
|
|
13
|
+
// StreamConn is unnecessary since ChannelStream has packet framing.
|
|
14
|
+
// Use it here to include yamux in this e2e test.
|
|
15
|
+
const clientConn = new StreamConn();
|
|
16
|
+
const serverConn = new StreamConn(server, { direction: 'inbound' });
|
|
17
|
+
// pipe clientConn -> messageStream -> serverConn -> messageStream -> clientConn
|
|
18
|
+
const { port1: clientPort, port2: serverPort } = new MessageChannel();
|
|
19
|
+
const opts = {}; // { idleTimeoutMs: 250, keepAliveMs: 100 }
|
|
20
|
+
const clientChannelStream = new ChannelStream('client', clientPort, opts);
|
|
21
|
+
const serverChannelStream = new ChannelStream('server', serverPort, opts);
|
|
22
|
+
// Pipe the client traffic via the client end of the MessageChannel.
|
|
23
|
+
pipe(clientChannelStream, clientConn, combineUint8ArrayListTransform(), clientChannelStream)
|
|
24
|
+
.catch((err) => clientConn.close(err))
|
|
25
|
+
.then(() => clientConn.close());
|
|
26
|
+
// Pipe the server traffic via the server end of the MessageChannel.
|
|
27
|
+
pipe(serverChannelStream, serverConn, combineUint8ArrayListTransform(), serverChannelStream)
|
|
28
|
+
.catch((err) => serverConn.close(err))
|
|
29
|
+
.then(() => serverConn.close());
|
|
30
|
+
// Build the client
|
|
31
|
+
client = new Client(clientConn.buildOpenStreamFunc());
|
|
32
|
+
});
|
|
33
|
+
it('should pass client tests', async () => {
|
|
34
|
+
await runClientTest(client);
|
|
35
|
+
});
|
|
36
|
+
it('should pass abort controller tests', async () => {
|
|
37
|
+
await runAbortControllerTest(client);
|
|
38
|
+
});
|
|
39
|
+
it('should pass rpc stream tests', async () => {
|
|
40
|
+
await runRpcStreamTest(client);
|
|
41
|
+
});
|
|
42
|
+
});
|
package/dist/srpc/websocket.d.ts
CHANGED
package/go.mod
CHANGED
|
@@ -13,7 +13,7 @@ replace nhooyr.io/websocket => github.com/paralin/nhooyr-websocket v1.8.12-0.202
|
|
|
13
13
|
|
|
14
14
|
require (
|
|
15
15
|
github.com/aperturerobotics/protobuf-go-lite v0.6.5 // latest
|
|
16
|
-
github.com/aperturerobotics/util v1.23.
|
|
16
|
+
github.com/aperturerobotics/util v1.23.7 // latest
|
|
17
17
|
)
|
|
18
18
|
|
|
19
19
|
require (
|
|
@@ -42,7 +42,7 @@ require (
|
|
|
42
42
|
github.com/multiformats/go-varint v0.0.7 // indirect
|
|
43
43
|
github.com/spaolacci/murmur3 v1.1.0 // indirect
|
|
44
44
|
golang.org/x/crypto v0.19.0 // indirect
|
|
45
|
-
golang.org/x/exp v0.0.0-
|
|
45
|
+
golang.org/x/exp v0.0.0-20240613232115-7f521ea00fb8 // indirect
|
|
46
46
|
golang.org/x/sys v0.18.0 // indirect
|
|
47
47
|
lukechampine.com/blake3 v1.2.1 // indirect
|
|
48
48
|
)
|
package/go.sum
CHANGED
|
@@ -6,6 +6,8 @@ github.com/aperturerobotics/protobuf-go-lite v0.6.5 h1:AuPPcZ7ZaJe9ZYYC4gF7/5/Xb
|
|
|
6
6
|
github.com/aperturerobotics/protobuf-go-lite v0.6.5/go.mod h1:YTbfnUj3feSULhs8VgepAHFnF3wUc0CPj4jd2axy21I=
|
|
7
7
|
github.com/aperturerobotics/util v1.23.5 h1:OkqrAI3fJGwNyMk7WNpYZD9CvkTemxSZinqb1RzFvHY=
|
|
8
8
|
github.com/aperturerobotics/util v1.23.5/go.mod h1:SBLeMheuujF7z+CZM58iPV9yvEwDiHrPIWUjdf0vVFY=
|
|
9
|
+
github.com/aperturerobotics/util v1.23.7 h1:DERV75zYLRn4BTS0vMFkitWJhUg7VGG5UyJq2Frf3iI=
|
|
10
|
+
github.com/aperturerobotics/util v1.23.7/go.mod h1:wpjaPlljanWro3pyt7/9Ja0mvFH26XL6MKsJSzF8s2Q=
|
|
9
11
|
github.com/cloudflare/circl v1.3.8 h1:j+V8jJt09PoeMFIu2uh5JUyEaIHTXVOHslFoLNAKqwI=
|
|
10
12
|
github.com/cloudflare/circl v1.3.8/go.mod h1:PDRU+oXvdD7KCtgKxW95M5Z8BpSCJXQORiZFnBQS5QU=
|
|
11
13
|
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
|
@@ -59,6 +61,8 @@ golang.org/x/crypto v0.19.0 h1:ENy+Az/9Y1vSrlrvBSyna3PITt4tiZLf7sgCjZBX7Wo=
|
|
|
59
61
|
golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU=
|
|
60
62
|
golang.org/x/exp v0.0.0-20240506185415-9bf2ced13842 h1:vr/HnozRka3pE4EsMEg1lgkXJkTFJCVUX+S/ZT6wYzM=
|
|
61
63
|
golang.org/x/exp v0.0.0-20240506185415-9bf2ced13842/go.mod h1:XtvwrStGgqGPLc4cjQfWqZHG1YFdYs6swckp8vpsjnc=
|
|
64
|
+
golang.org/x/exp v0.0.0-20240613232115-7f521ea00fb8 h1:yixxcjnhBmY0nkL253HFVIm0JsFHwrHdT3Yh6szTnfY=
|
|
65
|
+
golang.org/x/exp v0.0.0-20240613232115-7f521ea00fb8/go.mod h1:jj3sYF3dwk5D+ghuXyeI3r5MFf+NT2An6/9dOA95KSI=
|
|
62
66
|
golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
|
63
67
|
golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
|
64
68
|
golang.org/x/sys v0.18.0 h1:DBdB3niSjOA/O0blCZBqDefyWNYveAYMNF1Wum0DYQ4=
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "starpc",
|
|
3
|
-
"version": "0.32.
|
|
3
|
+
"version": "0.32.15",
|
|
4
4
|
"description": "Streaming protobuf RPC service protocol over any two-way channel.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": {
|
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
"!**/*.tsbuildinfo",
|
|
31
31
|
"Makefile",
|
|
32
32
|
"dist",
|
|
33
|
-
"
|
|
33
|
+
"mock",
|
|
34
34
|
"echo",
|
|
35
35
|
"go.mod",
|
|
36
36
|
"go.sum",
|
|
@@ -57,7 +57,7 @@
|
|
|
57
57
|
"test": "npm run test:js && npm run test:go",
|
|
58
58
|
"test:go": "make test",
|
|
59
59
|
"build:e2e": "npm run build && cd e2e && esbuild e2e.ts --sourcemap --outfile=e2e.cjs --bundle --platform=node",
|
|
60
|
-
"test:js": "
|
|
60
|
+
"test:js": "vitest",
|
|
61
61
|
"debug:js": "npm run build:e2e && cd e2e && node --inspect --inspect-brk ./e2e.cjs",
|
|
62
62
|
"test:integration": "make integration",
|
|
63
63
|
"integration": "npm run test:integration",
|
|
@@ -82,22 +82,23 @@
|
|
|
82
82
|
"./{srpc,echo,e2e,integration,rpcstream,cmd}/**/(*.ts|*.tsx|*.html|*.css)": "prettier --config .prettierrc.yaml --write"
|
|
83
83
|
},
|
|
84
84
|
"devDependencies": {
|
|
85
|
-
"@typescript-eslint/eslint-plugin": "^7.
|
|
86
|
-
"@typescript-eslint/parser": "^7.
|
|
85
|
+
"@typescript-eslint/eslint-plugin": "^7.14.1",
|
|
86
|
+
"@typescript-eslint/parser": "^7.14.1",
|
|
87
87
|
"depcheck": "^1.4.6",
|
|
88
|
-
"esbuild": "^0.
|
|
88
|
+
"esbuild": "^0.22.0",
|
|
89
89
|
"eslint": "^9.1.1",
|
|
90
90
|
"eslint-config-prettier": "^9.1.0",
|
|
91
91
|
"lint-staged": "^15.2.2",
|
|
92
92
|
"pre-commit": "^1.2.2",
|
|
93
93
|
"prettier": "^3.2.4",
|
|
94
94
|
"rimraf": "^5.0.7",
|
|
95
|
-
"tsx": "^4.
|
|
96
|
-
"typescript": "^5.
|
|
95
|
+
"tsx": "^4.15.7",
|
|
96
|
+
"typescript": "^5.5.2",
|
|
97
|
+
"vitest": "^1.6.0"
|
|
97
98
|
},
|
|
98
99
|
"dependencies": {
|
|
99
|
-
"@aptre/it-ws": "^1.0.
|
|
100
|
-
"@aptre/protobuf-es-lite": "^0.4.
|
|
100
|
+
"@aptre/it-ws": "^1.0.1",
|
|
101
|
+
"@aptre/protobuf-es-lite": "^0.4.6",
|
|
101
102
|
"@chainsafe/libp2p-yamux": "^6.0.2",
|
|
102
103
|
"@libp2p/interface": "^1.3.1",
|
|
103
104
|
"@libp2p/logger": "^4.0.12",
|
|
@@ -111,6 +112,6 @@
|
|
|
111
112
|
"ws": "^8.17.0"
|
|
112
113
|
},
|
|
113
114
|
"resolutions": {
|
|
114
|
-
"@aptre/protobuf-es-lite": "0.4.
|
|
115
|
+
"@aptre/protobuf-es-lite": "0.4.6"
|
|
115
116
|
}
|
|
116
117
|
}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { describe, it, beforeEach } from 'vitest'
|
|
2
|
+
import { pipe } from 'it-pipe'
|
|
3
|
+
import {
|
|
4
|
+
createHandler,
|
|
5
|
+
createMux,
|
|
6
|
+
Server,
|
|
7
|
+
Client,
|
|
8
|
+
StreamConn,
|
|
9
|
+
ChannelStream,
|
|
10
|
+
combineUint8ArrayListTransform,
|
|
11
|
+
ChannelStreamOpts,
|
|
12
|
+
} from '../srpc/index.js'
|
|
13
|
+
import { EchoerDefinition, EchoerServer, runClientTest } from '../echo/index.js'
|
|
14
|
+
import {
|
|
15
|
+
runAbortControllerTest,
|
|
16
|
+
runRpcStreamTest,
|
|
17
|
+
} from '../echo/client-test.js'
|
|
18
|
+
|
|
19
|
+
describe('srpc server', () => {
|
|
20
|
+
let client: Client
|
|
21
|
+
|
|
22
|
+
beforeEach(async () => {
|
|
23
|
+
const mux = createMux()
|
|
24
|
+
const server = new Server(mux.lookupMethodFunc)
|
|
25
|
+
const echoer = new EchoerServer(server)
|
|
26
|
+
mux.register(createHandler(EchoerDefinition, echoer))
|
|
27
|
+
|
|
28
|
+
// StreamConn is unnecessary since ChannelStream has packet framing.
|
|
29
|
+
// Use it here to include yamux in this e2e test.
|
|
30
|
+
const clientConn = new StreamConn()
|
|
31
|
+
const serverConn = new StreamConn(server, { direction: 'inbound' })
|
|
32
|
+
|
|
33
|
+
// pipe clientConn -> messageStream -> serverConn -> messageStream -> clientConn
|
|
34
|
+
const { port1: clientPort, port2: serverPort } = new MessageChannel()
|
|
35
|
+
const opts: ChannelStreamOpts = {} // { idleTimeoutMs: 250, keepAliveMs: 100 }
|
|
36
|
+
const clientChannelStream = new ChannelStream('client', clientPort, opts)
|
|
37
|
+
const serverChannelStream = new ChannelStream('server', serverPort, opts)
|
|
38
|
+
|
|
39
|
+
// Pipe the client traffic via the client end of the MessageChannel.
|
|
40
|
+
pipe(
|
|
41
|
+
clientChannelStream,
|
|
42
|
+
clientConn,
|
|
43
|
+
combineUint8ArrayListTransform(),
|
|
44
|
+
clientChannelStream,
|
|
45
|
+
)
|
|
46
|
+
.catch((err: Error) => clientConn.close(err))
|
|
47
|
+
.then(() => clientConn.close())
|
|
48
|
+
|
|
49
|
+
// Pipe the server traffic via the server end of the MessageChannel.
|
|
50
|
+
pipe(
|
|
51
|
+
serverChannelStream,
|
|
52
|
+
serverConn,
|
|
53
|
+
combineUint8ArrayListTransform(),
|
|
54
|
+
serverChannelStream,
|
|
55
|
+
)
|
|
56
|
+
.catch((err: Error) => serverConn.close(err))
|
|
57
|
+
.then(() => serverConn.close())
|
|
58
|
+
|
|
59
|
+
// Build the client
|
|
60
|
+
client = new Client(clientConn.buildOpenStreamFunc())
|
|
61
|
+
})
|
|
62
|
+
|
|
63
|
+
it('should pass client tests', async () => {
|
|
64
|
+
await runClientTest(client)
|
|
65
|
+
})
|
|
66
|
+
|
|
67
|
+
it('should pass abort controller tests', async () => {
|
|
68
|
+
await runAbortControllerTest(client)
|
|
69
|
+
})
|
|
70
|
+
|
|
71
|
+
it('should pass rpc stream tests', async () => {
|
|
72
|
+
await runRpcStreamTest(client)
|
|
73
|
+
})
|
|
74
|
+
})
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
package
|
|
1
|
+
package srpc_test
|
|
2
2
|
|
|
3
3
|
import (
|
|
4
4
|
"context"
|
|
@@ -7,8 +7,8 @@ import (
|
|
|
7
7
|
"testing"
|
|
8
8
|
"time"
|
|
9
9
|
|
|
10
|
-
e2e_mock "github.com/aperturerobotics/starpc/e2e/mock"
|
|
11
10
|
"github.com/aperturerobotics/starpc/echo"
|
|
11
|
+
e2e_mock "github.com/aperturerobotics/starpc/mock"
|
|
12
12
|
"github.com/aperturerobotics/starpc/rpcstream"
|
|
13
13
|
"github.com/aperturerobotics/starpc/srpc"
|
|
14
14
|
"github.com/pkg/errors"
|
package/dist/e2e/e2e.js
DELETED
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
import { pipe } from 'it-pipe';
|
|
2
|
-
import { createHandler, createMux, Server, Client, StreamConn, ChannelStream, combineUint8ArrayListTransform, } from '../srpc/index.js';
|
|
3
|
-
import { EchoerDefinition, EchoerServer, runClientTest } from '../echo/index.js';
|
|
4
|
-
import { runAbortControllerTest, runRpcStreamTest, } from '../echo/client-test.js';
|
|
5
|
-
async function runRPC() {
|
|
6
|
-
const mux = createMux();
|
|
7
|
-
const server = new Server(mux.lookupMethodFunc);
|
|
8
|
-
const echoer = new EchoerServer(server);
|
|
9
|
-
mux.register(createHandler(EchoerDefinition, echoer));
|
|
10
|
-
// StreamConn is unnecessary since ChannelStream has packet framing.
|
|
11
|
-
// Use it here to include yamux in this e2e test.
|
|
12
|
-
const clientConn = new StreamConn();
|
|
13
|
-
const serverConn = new StreamConn(server, { direction: 'inbound' });
|
|
14
|
-
// pipe clientConn -> messageStream -> serverConn -> messageStream -> clientConn
|
|
15
|
-
const { port1: clientPort, port2: serverPort } = new MessageChannel();
|
|
16
|
-
const opts = {}; // { idleTimeoutMs: 250, keepAliveMs: 100 }
|
|
17
|
-
const clientChannelStream = new ChannelStream('client', clientPort, opts);
|
|
18
|
-
const serverChannelStream = new ChannelStream('server', serverPort, opts);
|
|
19
|
-
// Pipe the client traffic via the client end of the MessageChannel.
|
|
20
|
-
pipe(clientChannelStream, clientConn, combineUint8ArrayListTransform(), clientChannelStream)
|
|
21
|
-
.catch((err) => clientConn.close(err))
|
|
22
|
-
.then(() => clientConn.close());
|
|
23
|
-
// Pipe the server traffic via the server end of the MessageChannel.
|
|
24
|
-
pipe(serverChannelStream, serverConn, combineUint8ArrayListTransform(), serverChannelStream)
|
|
25
|
-
.catch((err) => serverConn.close(err))
|
|
26
|
-
.then(() => serverConn.close());
|
|
27
|
-
// Build the client
|
|
28
|
-
const client = new Client(clientConn.buildOpenStreamFunc());
|
|
29
|
-
// Run the tests
|
|
30
|
-
await runClientTest(client);
|
|
31
|
-
await runAbortControllerTest(client);
|
|
32
|
-
await runRpcStreamTest(client);
|
|
33
|
-
// Make sure we have no uncaught promises
|
|
34
|
-
await new Promise((resolve) => {
|
|
35
|
-
setTimeout(resolve, 500);
|
|
36
|
-
});
|
|
37
|
-
// Close cleanly
|
|
38
|
-
clientConn.close();
|
|
39
|
-
serverConn.close();
|
|
40
|
-
}
|
|
41
|
-
runRPC()
|
|
42
|
-
.then(() => {
|
|
43
|
-
console.log('finished successfully');
|
|
44
|
-
process.exit(0);
|
|
45
|
-
})
|
|
46
|
-
.catch((err) => {
|
|
47
|
-
console.error('e2e tests failed', err);
|
|
48
|
-
process.exit(1);
|
|
49
|
-
});
|
package/e2e/README.md
DELETED
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
# E2E
|
|
2
|
-
|
|
3
|
-
E2E contains tests using the client and server written in the same language.
|
|
4
|
-
|
|
5
|
-
For example:
|
|
6
|
-
|
|
7
|
-
- Go Client calling Go server: "go test" or "yarn test:go"
|
|
8
|
-
- TypeScript client calling TypeScript server: "yarn test:js"
|
|
9
|
-
|
|
10
|
-
For cross-language tests, i.e. Ts <-> Go, see [integration](../integration).
|
package/e2e/e2e.go
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
package e2e
|
package/e2e/e2e.ts
DELETED
|
@@ -1,81 +0,0 @@
|
|
|
1
|
-
import { pipe } from 'it-pipe'
|
|
2
|
-
import {
|
|
3
|
-
createHandler,
|
|
4
|
-
createMux,
|
|
5
|
-
Server,
|
|
6
|
-
Client,
|
|
7
|
-
StreamConn,
|
|
8
|
-
ChannelStream,
|
|
9
|
-
combineUint8ArrayListTransform,
|
|
10
|
-
ChannelStreamOpts,
|
|
11
|
-
} from '../srpc/index.js'
|
|
12
|
-
import { EchoerDefinition, EchoerServer, runClientTest } from '../echo/index.js'
|
|
13
|
-
import {
|
|
14
|
-
runAbortControllerTest,
|
|
15
|
-
runRpcStreamTest,
|
|
16
|
-
} from '../echo/client-test.js'
|
|
17
|
-
|
|
18
|
-
async function runRPC() {
|
|
19
|
-
const mux = createMux()
|
|
20
|
-
const server = new Server(mux.lookupMethodFunc)
|
|
21
|
-
const echoer = new EchoerServer(server)
|
|
22
|
-
mux.register(createHandler(EchoerDefinition, echoer))
|
|
23
|
-
|
|
24
|
-
// StreamConn is unnecessary since ChannelStream has packet framing.
|
|
25
|
-
// Use it here to include yamux in this e2e test.
|
|
26
|
-
const clientConn = new StreamConn()
|
|
27
|
-
const serverConn = new StreamConn(server, { direction: 'inbound' })
|
|
28
|
-
|
|
29
|
-
// pipe clientConn -> messageStream -> serverConn -> messageStream -> clientConn
|
|
30
|
-
const { port1: clientPort, port2: serverPort } = new MessageChannel()
|
|
31
|
-
const opts: ChannelStreamOpts = {} // { idleTimeoutMs: 250, keepAliveMs: 100 }
|
|
32
|
-
const clientChannelStream = new ChannelStream('client', clientPort, opts)
|
|
33
|
-
const serverChannelStream = new ChannelStream('server', serverPort, opts)
|
|
34
|
-
|
|
35
|
-
// Pipe the client traffic via the client end of the MessageChannel.
|
|
36
|
-
pipe(
|
|
37
|
-
clientChannelStream,
|
|
38
|
-
clientConn,
|
|
39
|
-
combineUint8ArrayListTransform(),
|
|
40
|
-
clientChannelStream,
|
|
41
|
-
)
|
|
42
|
-
.catch((err: Error) => clientConn.close(err))
|
|
43
|
-
.then(() => clientConn.close())
|
|
44
|
-
|
|
45
|
-
// Pipe the server traffic via the server end of the MessageChannel.
|
|
46
|
-
pipe(
|
|
47
|
-
serverChannelStream,
|
|
48
|
-
serverConn,
|
|
49
|
-
combineUint8ArrayListTransform(),
|
|
50
|
-
serverChannelStream,
|
|
51
|
-
)
|
|
52
|
-
.catch((err: Error) => serverConn.close(err))
|
|
53
|
-
.then(() => serverConn.close())
|
|
54
|
-
|
|
55
|
-
// Build the client
|
|
56
|
-
const client = new Client(clientConn.buildOpenStreamFunc())
|
|
57
|
-
|
|
58
|
-
// Run the tests
|
|
59
|
-
await runClientTest(client)
|
|
60
|
-
await runAbortControllerTest(client)
|
|
61
|
-
await runRpcStreamTest(client)
|
|
62
|
-
|
|
63
|
-
// Make sure we have no uncaught promises
|
|
64
|
-
await new Promise<void>((resolve) => {
|
|
65
|
-
setTimeout(resolve, 500)
|
|
66
|
-
})
|
|
67
|
-
|
|
68
|
-
// Close cleanly
|
|
69
|
-
clientConn.close()
|
|
70
|
-
serverConn.close()
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
runRPC()
|
|
74
|
-
.then(() => {
|
|
75
|
-
console.log('finished successfully')
|
|
76
|
-
process.exit(0)
|
|
77
|
-
})
|
|
78
|
-
.catch((err) => {
|
|
79
|
-
console.error('e2e tests failed', err)
|
|
80
|
-
process.exit(1)
|
|
81
|
-
})
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|