trpc-uwebsockets 10.46.0 → 10.46.2
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/README.md +1 -1
- package/dist/applyWsHandler.js +7 -1
- package/dist/applyWsHandler.js.map +1 -1
- package/package.json +7 -7
- package/src/applyWsHandler.ts +9 -2
- package/test/index.spec.ts +10 -28
- package/types/applyWsHandler.d.ts +1 -1
package/README.md
CHANGED
package/dist/applyWsHandler.js
CHANGED
|
@@ -74,6 +74,12 @@ function applyWSHandler(app, prefix, opts) {
|
|
|
74
74
|
// doing above can eliminate allClients for reconnection notification
|
|
75
75
|
const allClients = new Set();
|
|
76
76
|
function respond(client, untransformedJSON) {
|
|
77
|
+
if (!allClients.has(client)) {
|
|
78
|
+
// if the client is not in the set, it means the client is not connected
|
|
79
|
+
// and there will be an error thrown by uWebSockets.js
|
|
80
|
+
// if we try to send a message to it
|
|
81
|
+
return;
|
|
82
|
+
}
|
|
77
83
|
client.send(JSON.stringify((0, shared_1.transformTRPCResponse)(router._def._config, untransformedJSON)));
|
|
78
84
|
}
|
|
79
85
|
function stopSubscription(client, subscription, { id, jsonrpc }) {
|
|
@@ -256,6 +262,7 @@ function applyWSHandler(app, prefix, opts) {
|
|
|
256
262
|
secWebSocketKey, secWebSocketProtocol, secWebSocketExtensions, context);
|
|
257
263
|
},
|
|
258
264
|
async open(client) {
|
|
265
|
+
allClients.add(client);
|
|
259
266
|
async function createContextAsync() {
|
|
260
267
|
const data = client.getUserData();
|
|
261
268
|
try {
|
|
@@ -295,7 +302,6 @@ function applyWSHandler(app, prefix, opts) {
|
|
|
295
302
|
}
|
|
296
303
|
}
|
|
297
304
|
await createContextAsync();
|
|
298
|
-
allClients.add(client);
|
|
299
305
|
},
|
|
300
306
|
async message(client, rawMsg) {
|
|
301
307
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"applyWsHandler.js","sourceRoot":"","sources":["../src/applyWsHandler.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"applyWsHandler.js","sourceRoot":"","sources":["../src/applyWsHandler.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"private": false,
|
|
3
3
|
"name": "trpc-uwebsockets",
|
|
4
4
|
"description": "tRPC adapter for uWebSockets.js server",
|
|
5
|
-
"version": "10.46.
|
|
5
|
+
"version": "10.46.2",
|
|
6
6
|
"main": "./dist/index.js",
|
|
7
7
|
"type": "commonjs",
|
|
8
8
|
"types": "./types/index.d.ts",
|
|
@@ -23,28 +23,28 @@
|
|
|
23
23
|
"prettier:dry": "prettier --config .prettierrc 'src/**/*.ts'"
|
|
24
24
|
},
|
|
25
25
|
"dependencies": {
|
|
26
|
-
"@trpc/server": "^10.
|
|
27
|
-
"uWebSockets.js": "uNetworking/uWebSockets.js#v20.
|
|
26
|
+
"@trpc/server": "^10.45.2",
|
|
27
|
+
"uWebSockets.js": "uNetworking/uWebSockets.js#v20.48.0"
|
|
28
28
|
},
|
|
29
29
|
"devDependencies": {
|
|
30
|
-
"@trpc/client": "^10.
|
|
30
|
+
"@trpc/client": "^10.45.2",
|
|
31
31
|
"@types/node": "^18.0.6",
|
|
32
32
|
"@types/node-fetch": "^2.6.2",
|
|
33
33
|
"@types/ws": "^8.5.5",
|
|
34
34
|
"@typescript-eslint/eslint-plugin": "^5.30.6",
|
|
35
35
|
"@typescript-eslint/parser": "^5.30.6",
|
|
36
|
-
"@vitest/coverage-v8": "^0.
|
|
36
|
+
"@vitest/coverage-v8": "^2.0.5",
|
|
37
37
|
"abort-controller": "^3.0.0",
|
|
38
38
|
"eslint": "^8.19.0",
|
|
39
39
|
"eslint-config-prettier": "^8.5.0",
|
|
40
40
|
"eslint-plugin-jest": "^26.6.0",
|
|
41
41
|
"eslint-plugin-prettier": "^4.2.1",
|
|
42
|
-
"node-fetch": "2",
|
|
42
|
+
"node-fetch": "3.3.2",
|
|
43
43
|
"prettier": "^2.7.1",
|
|
44
44
|
"rimraf": "^3.0.2",
|
|
45
45
|
"ts-node": "^10.9.1",
|
|
46
46
|
"typescript": "^4.4.4",
|
|
47
|
-
"vitest": "^0.
|
|
47
|
+
"vitest": "^2.0.5",
|
|
48
48
|
"ws": "^8.14.1",
|
|
49
49
|
"zod": "^3.22.4"
|
|
50
50
|
},
|
package/src/applyWsHandler.ts
CHANGED
|
@@ -100,7 +100,7 @@ type UWSBuiltInOpts = {
|
|
|
100
100
|
/** Maximum length of received message. If a client tries to send you a message larger than this, the connection is immediately closed. Defaults to 16 * 1024. */
|
|
101
101
|
maxPayloadLength?: number;
|
|
102
102
|
/** Whether or not we should automatically close the socket when a message is dropped due to backpressure. Defaults to false. */
|
|
103
|
-
closeOnBackpressureLimit?:
|
|
103
|
+
closeOnBackpressureLimit?: boolean;
|
|
104
104
|
/** Maximum number of minutes a WebSocket may be connected before being closed by the server. 0 disables the feature. */
|
|
105
105
|
maxLifetime?: number;
|
|
106
106
|
/** Maximum amount of seconds that may pass without sending or getting a message. Connection is closed if this timeout passes. Resolution (granularity) for timeouts are typically 4 seconds, rounded to closest.
|
|
@@ -151,6 +151,12 @@ export function applyWSHandler<TRouter extends AnyRouter>(
|
|
|
151
151
|
client: WebSocket<Decoration>,
|
|
152
152
|
untransformedJSON: TRPCResponseMessage
|
|
153
153
|
) {
|
|
154
|
+
if (!allClients.has(client)) {
|
|
155
|
+
// if the client is not in the set, it means the client is not connected
|
|
156
|
+
// and there will be an error thrown by uWebSockets.js
|
|
157
|
+
// if we try to send a message to it
|
|
158
|
+
return;
|
|
159
|
+
}
|
|
154
160
|
client.send(
|
|
155
161
|
JSON.stringify(
|
|
156
162
|
transformTRPCResponse(router._def._config, untransformedJSON)
|
|
@@ -179,6 +185,7 @@ export function applyWSHandler<TRouter extends AnyRouter>(
|
|
|
179
185
|
msg: TRPCClientOutgoingMessage
|
|
180
186
|
) {
|
|
181
187
|
const data = client.getUserData();
|
|
188
|
+
|
|
182
189
|
const clientSubscriptions = data.clientSubscriptions;
|
|
183
190
|
|
|
184
191
|
const { id, jsonrpc } = msg;
|
|
@@ -362,6 +369,7 @@ export function applyWSHandler<TRouter extends AnyRouter>(
|
|
|
362
369
|
);
|
|
363
370
|
},
|
|
364
371
|
async open(client: WebSocket<Decoration>) {
|
|
372
|
+
allClients.add(client);
|
|
365
373
|
async function createContextAsync() {
|
|
366
374
|
const data = client.getUserData();
|
|
367
375
|
|
|
@@ -404,7 +412,6 @@ export function applyWSHandler<TRouter extends AnyRouter>(
|
|
|
404
412
|
}
|
|
405
413
|
}
|
|
406
414
|
await createContextAsync();
|
|
407
|
-
allClients.add(client);
|
|
408
415
|
},
|
|
409
416
|
|
|
410
417
|
async message(client: WebSocket<Decoration>, rawMsg) {
|
package/test/index.spec.ts
CHANGED
|
@@ -1,6 +1,4 @@
|
|
|
1
1
|
import { vi, beforeEach, afterEach, test, expect, expectTypeOf } from 'vitest';
|
|
2
|
-
// idk how to use that
|
|
3
|
-
// import { waitFor } from '@testing-library/dom';
|
|
4
2
|
|
|
5
3
|
import fetch from 'node-fetch';
|
|
6
4
|
import { CreateContextOptions } from '../src/types';
|
|
@@ -23,13 +21,14 @@ import EventEmitter from 'events';
|
|
|
23
21
|
import { observable } from '@trpc/server/observable';
|
|
24
22
|
import ws from 'ws';
|
|
25
23
|
const WebSocket: any = ws;
|
|
24
|
+
const sleep = (ms: number) => new Promise((res) => setTimeout(res, ms));
|
|
26
25
|
|
|
27
26
|
const testPort = 8799;
|
|
28
27
|
|
|
29
28
|
interface Message {
|
|
30
29
|
id: string;
|
|
31
30
|
}
|
|
32
|
-
|
|
31
|
+
|
|
33
32
|
const ee = new EventEmitter();
|
|
34
33
|
function makeRouter() {
|
|
35
34
|
const onNewMessageSubscription = vi.fn();
|
|
@@ -336,7 +335,7 @@ test('manually sets status and headers', async () => {
|
|
|
336
335
|
const fetcher = await fetch(
|
|
337
336
|
`http://localhost:${testPort}/trpc/manualRes?input=${encodeURI('{}')}`
|
|
338
337
|
);
|
|
339
|
-
const body = await fetcher.json();
|
|
338
|
+
const body: any = await fetcher.json();
|
|
340
339
|
expect(fetcher.status).toEqual(400);
|
|
341
340
|
expect(body.result.data).toEqual('status 400');
|
|
342
341
|
|
|
@@ -369,12 +368,12 @@ test('aborting requests works', async () => {
|
|
|
369
368
|
}
|
|
370
369
|
});
|
|
371
370
|
|
|
372
|
-
// FIXME no idea how to make it non-flaky
|
|
373
|
-
const sleep = (ms: number) => new Promise((res) => setTimeout(res, ms));
|
|
374
|
-
|
|
375
371
|
// Source: https://github.com/trpc/trpc/blob/main/packages/tests/server/adapters/fastify.test.ts
|
|
376
372
|
test(
|
|
377
373
|
'ugly subscription tests',
|
|
374
|
+
{
|
|
375
|
+
timeout: 10000,
|
|
376
|
+
},
|
|
378
377
|
async () => {
|
|
379
378
|
ee.once('subscription:created', () => {
|
|
380
379
|
setTimeout(() => {
|
|
@@ -400,17 +399,9 @@ test(
|
|
|
400
399
|
},
|
|
401
400
|
});
|
|
402
401
|
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
// expect(onStartedMock).toh
|
|
406
|
-
|
|
407
|
-
await sleep(300); // FIXME how to use waitFor instead?
|
|
402
|
+
await sleep(300);
|
|
408
403
|
expect(onStartedMock).toHaveBeenCalledTimes(1);
|
|
409
404
|
expect(onDataMock).toHaveBeenCalledTimes(2);
|
|
410
|
-
// await waitFor(() => {
|
|
411
|
-
// expect(onStartedMock).toHaveBeenCalledTimes(1);
|
|
412
|
-
// expect(onDataMock).toHaveBeenCalledTimes(2);
|
|
413
|
-
// });
|
|
414
405
|
|
|
415
406
|
ee.emit('server:msg', {
|
|
416
407
|
id: '3',
|
|
@@ -418,10 +409,6 @@ test(
|
|
|
418
409
|
await sleep(500);
|
|
419
410
|
expect(onDataMock).toHaveBeenCalledTimes(3);
|
|
420
411
|
|
|
421
|
-
// await waitFor(() => {
|
|
422
|
-
// expect(onDataMock).toHaveBeenCalledTimes(3);
|
|
423
|
-
// });
|
|
424
|
-
|
|
425
412
|
expect(onDataMock.mock.calls).toMatchInlineSnapshot(`
|
|
426
413
|
[
|
|
427
414
|
[
|
|
@@ -450,17 +437,16 @@ test(
|
|
|
450
437
|
expect(ee.listenerCount('server:error')).toBe(0);
|
|
451
438
|
|
|
452
439
|
await closeWs();
|
|
453
|
-
},
|
|
454
|
-
{
|
|
455
|
-
timeout: 10000,
|
|
456
440
|
}
|
|
457
441
|
);
|
|
458
442
|
|
|
459
443
|
test(
|
|
460
444
|
'subscription failed context',
|
|
445
|
+
{
|
|
446
|
+
timeout: 3000,
|
|
447
|
+
},
|
|
461
448
|
async () => {
|
|
462
449
|
expect.assertions(2);
|
|
463
|
-
// const host = `localhost:${testPort}/trpc?user=user1`; // weClient can inject values via query string
|
|
464
450
|
const host = `localhost:${testPort}/trpc?user=user1&fail=yess`; // weClient can inject values via query string
|
|
465
451
|
const wsClient = createWSClient({
|
|
466
452
|
url: `ws://${host}`,
|
|
@@ -477,7 +463,6 @@ test(
|
|
|
477
463
|
|
|
478
464
|
client.onMessage.subscribe('lala', {
|
|
479
465
|
onError(err) {
|
|
480
|
-
// expect this error here?
|
|
481
466
|
expect(err).toBeInstanceOf(TRPCClientError);
|
|
482
467
|
expect(err.message).toBe('failing as expected');
|
|
483
468
|
},
|
|
@@ -485,9 +470,6 @@ test(
|
|
|
485
470
|
|
|
486
471
|
await sleep(100);
|
|
487
472
|
wsClient.close();
|
|
488
|
-
},
|
|
489
|
-
{
|
|
490
|
-
timeout: 3000,
|
|
491
473
|
}
|
|
492
474
|
);
|
|
493
475
|
|
|
@@ -7,7 +7,7 @@ type UWSBuiltInOpts = {
|
|
|
7
7
|
/** Maximum length of received message. If a client tries to send you a message larger than this, the connection is immediately closed. Defaults to 16 * 1024. */
|
|
8
8
|
maxPayloadLength?: number;
|
|
9
9
|
/** Whether or not we should automatically close the socket when a message is dropped due to backpressure. Defaults to false. */
|
|
10
|
-
closeOnBackpressureLimit?:
|
|
10
|
+
closeOnBackpressureLimit?: boolean;
|
|
11
11
|
/** Maximum number of minutes a WebSocket may be connected before being closed by the server. 0 disables the feature. */
|
|
12
12
|
maxLifetime?: number;
|
|
13
13
|
/** Maximum amount of seconds that may pass without sending or getting a message. Connection is closed if this timeout passes. Resolution (granularity) for timeouts are typically 4 seconds, rounded to closest.
|