@trpc/server 10.42.0 → 10.43.1
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/{TRPCError-816ff32e.mjs → TRPCError-689e79f1.mjs} +4 -0
- package/dist/{TRPCError-ae7b67e8.js → TRPCError-84cb03cf.js} +4 -0
- package/dist/{TRPCError-efecb077.js → TRPCError-962a4050.js} +4 -0
- package/dist/adapters/aws-lambda/index.js +4 -4
- package/dist/adapters/aws-lambda/index.mjs +4 -4
- package/dist/adapters/express.js +5 -5
- package/dist/adapters/express.mjs +5 -5
- package/dist/adapters/fastify/index.js +5 -4
- package/dist/adapters/fastify/index.mjs +5 -4
- package/dist/adapters/fetch/index.js +4 -4
- package/dist/adapters/fetch/index.mjs +4 -4
- package/dist/adapters/next.js +5 -5
- package/dist/adapters/next.mjs +5 -5
- package/dist/adapters/node-http/content-type/json/index.js +2 -2
- package/dist/adapters/node-http/content-type/json/index.mjs +2 -2
- package/dist/adapters/node-http/index.js +5 -5
- package/dist/adapters/node-http/index.mjs +5 -5
- package/dist/adapters/standalone.js +5 -5
- package/dist/adapters/standalone.mjs +5 -5
- package/dist/adapters/ws.d.ts +0 -3
- package/dist/adapters/ws.d.ts.map +1 -1
- package/dist/adapters/ws.js +5 -57
- package/dist/adapters/ws.mjs +6 -57
- package/dist/{config-4c0f8e88.mjs → config-00ffd309.mjs} +1 -1
- package/dist/{config-3ab6b85e.js → config-5b776b89.js} +1 -1
- package/dist/{config-f356f2fd.js → config-88ea7a88.js} +1 -1
- package/dist/{contentType-90bad7bb.js → contentType-10776292.js} +1 -1
- package/dist/{contentType-9940f5d7.js → contentType-5b6b46af.js} +1 -1
- package/dist/{contentType-93515a46.mjs → contentType-778b33c3.mjs} +1 -1
- package/dist/core/internals/procedureBuilder.d.ts +1 -1
- package/dist/core/internals/procedureBuilder.d.ts.map +1 -1
- package/dist/core/middleware.d.ts +3 -3
- package/dist/core/middleware.d.ts.map +1 -1
- package/dist/error/TRPCError.d.ts.map +1 -1
- package/dist/http/index.js +4 -4
- package/dist/http/index.mjs +4 -4
- package/dist/index.js +2 -2
- package/dist/index.mjs +4 -4
- package/dist/{nodeHTTPRequestHandler-cf01c646.mjs → nodeHTTPRequestHandler-04c42df8.mjs} +1 -1
- package/dist/{nodeHTTPRequestHandler-9781faee.js → nodeHTTPRequestHandler-23a5beed.js} +1 -1
- package/dist/{nodeHTTPRequestHandler-b7d358fe.js → nodeHTTPRequestHandler-477b8bae.js} +1 -1
- package/dist/parseTRPCMessage-1377f305.js +56 -0
- package/dist/parseTRPCMessage-95955211.js +63 -0
- package/dist/parseTRPCMessage-a0f17853.mjs +54 -0
- package/dist/{resolveHTTPResponse-051b3a40.js → resolveHTTPResponse-c4987dce.js} +3 -3
- package/dist/{resolveHTTPResponse-68c8befb.mjs → resolveHTTPResponse-cd1a9112.mjs} +3 -3
- package/dist/{resolveHTTPResponse-79011e44.js → resolveHTTPResponse-d17198ff.js} +3 -3
- package/dist/rpc/index.d.ts +1 -0
- package/dist/rpc/index.d.ts.map +1 -1
- package/dist/rpc/index.js +2 -0
- package/dist/rpc/index.mjs +1 -0
- package/dist/rpc/parseTRPCMessage.d.ts +5 -0
- package/dist/rpc/parseTRPCMessage.d.ts.map +1 -0
- package/dist/shared/internal/serialize.d.ts +4 -3
- package/dist/shared/internal/serialize.d.ts.map +1 -1
- package/dist/subscription.js +1 -1
- package/dist/subscription.mjs +1 -1
- package/package.json +7 -4
- package/src/adapters/ws.ts +3 -79
- package/src/core/internals/procedureBuilder.ts +3 -1
- package/src/core/middleware.ts +2 -7
- package/src/error/TRPCError.ts +5 -0
- package/src/rpc/index.ts +1 -0
- package/src/rpc/parseTRPCMessage.ts +84 -0
- package/src/shared/internal/serialize.ts +15 -2
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import type { ProcedureType } from '../core';
|
|
2
|
+
import type { CombinedDataTransformer } from '../transformer';
|
|
3
|
+
import type { TRPCClientOutgoingMessage } from './envelopes';
|
|
4
|
+
|
|
5
|
+
/* istanbul ignore next -- @preserve */
|
|
6
|
+
function assertIsObject(obj: unknown): asserts obj is Record<string, unknown> {
|
|
7
|
+
if (typeof obj !== 'object' || Array.isArray(obj) || !obj) {
|
|
8
|
+
throw new Error('Not an object');
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
/* istanbul ignore next -- @preserve */
|
|
13
|
+
function assertIsProcedureType(obj: unknown): asserts obj is ProcedureType {
|
|
14
|
+
if (obj !== 'query' && obj !== 'subscription' && obj !== 'mutation') {
|
|
15
|
+
throw new Error('Invalid procedure type');
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
/* istanbul ignore next -- @preserve */
|
|
20
|
+
function assertIsRequestId(
|
|
21
|
+
obj: unknown,
|
|
22
|
+
): asserts obj is number | string | null {
|
|
23
|
+
if (
|
|
24
|
+
obj !== null &&
|
|
25
|
+
typeof obj === 'number' &&
|
|
26
|
+
isNaN(obj) &&
|
|
27
|
+
typeof obj !== 'string'
|
|
28
|
+
) {
|
|
29
|
+
throw new Error('Invalid request id');
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
/* istanbul ignore next -- @preserve */
|
|
34
|
+
function assertIsString(obj: unknown): asserts obj is string {
|
|
35
|
+
if (typeof obj !== 'string') {
|
|
36
|
+
throw new Error('Invalid string');
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
/* istanbul ignore next -- @preserve */
|
|
41
|
+
function assertIsJSONRPC2OrUndefined(
|
|
42
|
+
obj: unknown,
|
|
43
|
+
): asserts obj is '2.0' | undefined {
|
|
44
|
+
if (typeof obj !== 'undefined' && obj !== '2.0') {
|
|
45
|
+
throw new Error('Must be JSONRPC 2.0');
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
/** @public */
|
|
50
|
+
export function parseTRPCMessage(
|
|
51
|
+
obj: unknown,
|
|
52
|
+
transformer: CombinedDataTransformer,
|
|
53
|
+
): TRPCClientOutgoingMessage {
|
|
54
|
+
assertIsObject(obj);
|
|
55
|
+
|
|
56
|
+
const { id, jsonrpc, method, params } = obj;
|
|
57
|
+
assertIsRequestId(id);
|
|
58
|
+
assertIsJSONRPC2OrUndefined(jsonrpc);
|
|
59
|
+
|
|
60
|
+
if (method === 'subscription.stop') {
|
|
61
|
+
return {
|
|
62
|
+
id,
|
|
63
|
+
jsonrpc,
|
|
64
|
+
method,
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
assertIsProcedureType(method);
|
|
68
|
+
assertIsObject(params);
|
|
69
|
+
const { input: rawInput, path } = params;
|
|
70
|
+
|
|
71
|
+
assertIsString(path);
|
|
72
|
+
|
|
73
|
+
const input = transformer.input.deserialize(rawInput);
|
|
74
|
+
|
|
75
|
+
return {
|
|
76
|
+
id,
|
|
77
|
+
jsonrpc,
|
|
78
|
+
method,
|
|
79
|
+
params: {
|
|
80
|
+
input,
|
|
81
|
+
path,
|
|
82
|
+
},
|
|
83
|
+
};
|
|
84
|
+
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/* eslint-disable @typescript-eslint/naming-convention */
|
|
2
|
-
import {
|
|
2
|
+
import { Simplify } from '../../types';
|
|
3
3
|
|
|
4
4
|
/**
|
|
5
5
|
* @link https://github.com/remix-run/remix/blob/2248669ed59fd716e267ea41df5d665d4781f4a9/packages/remix-server-runtime/serialize.ts
|
|
@@ -21,6 +21,7 @@ type JsonReturnable = JsonPrimitive | undefined;
|
|
|
21
21
|
// prettier-ignore
|
|
22
22
|
export type Serialize<T> =
|
|
23
23
|
IsAny<T> extends true ? any :
|
|
24
|
+
unknown extends T ? unknown :
|
|
24
25
|
T extends JsonReturnable ? T :
|
|
25
26
|
T extends Map<any, any> | Set<any> ? object :
|
|
26
27
|
T extends NonJsonPrimitive ? never :
|
|
@@ -36,12 +37,24 @@ type SerializeTuple<T extends [unknown, ...unknown[]]> = {
|
|
|
36
37
|
[k in keyof T]: T[k] extends NonJsonPrimitive ? null : Serialize<T[k]>;
|
|
37
38
|
};
|
|
38
39
|
|
|
40
|
+
// prettier-ignore
|
|
41
|
+
type SerializeObjectKey<T extends Record<any, any>, TKey> =
|
|
42
|
+
// never include entries where the key is a symbol
|
|
43
|
+
TKey extends symbol ? never :
|
|
44
|
+
// always include entries where the value is any
|
|
45
|
+
IsAny<T[TKey]> extends true ? TKey :
|
|
46
|
+
// always include entries where the value is unknown
|
|
47
|
+
unknown extends T[TKey] ? TKey :
|
|
48
|
+
// never include entries where the value is a non-JSON primitive
|
|
49
|
+
T[TKey] extends NonJsonPrimitive ? never :
|
|
50
|
+
// otherwise serialize the value
|
|
51
|
+
TKey;
|
|
39
52
|
/**
|
|
40
53
|
* JSON serialize objects (not including arrays) and classes
|
|
41
54
|
* @internal
|
|
42
55
|
**/
|
|
43
56
|
export type SerializeObject<T extends object> = {
|
|
44
|
-
[
|
|
57
|
+
[$Key in keyof T as SerializeObjectKey<T, $Key>]: Serialize<T[$Key]>;
|
|
45
58
|
};
|
|
46
59
|
|
|
47
60
|
type FilterDefinedKeys<TObj extends object> = Exclude<
|