@trpc/server 10.41.0 → 10.43.0
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/adapters/fastify/index.js +1 -0
- package/dist/adapters/fastify/index.mjs +1 -0
- package/dist/adapters/node-http/content-type/form-data/index.d.ts +8 -4
- package/dist/adapters/node-http/content-type/form-data/index.d.ts.map +1 -1
- package/dist/adapters/node-http/content-type/form-data/index.js +127 -66
- package/dist/adapters/node-http/content-type/form-data/index.mjs +103 -63
- package/dist/adapters/node-http/content-type/form-data/memoryUploadHandler.d.ts.map +1 -1
- package/dist/adapters/node-http/content-type/form-data/uploadHandler.d.ts +5 -1
- package/dist/adapters/node-http/content-type/form-data/uploadHandler.d.ts.map +1 -1
- package/dist/adapters/ws.d.ts +0 -3
- package/dist/adapters/ws.d.ts.map +1 -1
- package/dist/adapters/ws.js +3 -55
- package/dist/adapters/ws.mjs +4 -55
- 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/parseTRPCMessage-1377f305.js +56 -0
- package/dist/parseTRPCMessage-95955211.js +63 -0
- package/dist/parseTRPCMessage-a0f17853.mjs +54 -0
- 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/package.json +2 -2
- package/src/adapters/node-http/content-type/form-data/index.ts +71 -16
- package/src/adapters/node-http/content-type/form-data/memoryUploadHandler.ts +1 -5
- package/src/adapters/node-http/content-type/form-data/uploadHandler.ts +9 -7
- package/src/adapters/ws.ts +3 -79
- package/src/core/internals/procedureBuilder.ts +3 -1
- package/src/core/middleware.ts +7 -2
- package/src/rpc/index.ts +1 -0
- package/src/rpc/parseTRPCMessage.ts +84 -0
package/dist/adapters/ws.js
CHANGED
|
@@ -5,62 +5,11 @@ Object.defineProperty(exports, '__esModule', { value: true });
|
|
|
5
5
|
var config = require('../config-3ab6b85e.js');
|
|
6
6
|
var TRPCError = require('../TRPCError-ae7b67e8.js');
|
|
7
7
|
var observable = require('../observable-464116ac.js');
|
|
8
|
+
require('../codes-87f6824b.js');
|
|
9
|
+
var parseTRPCMessage = require('../parseTRPCMessage-1377f305.js');
|
|
8
10
|
var transformTRPCResponse = require('../transformTRPCResponse-e65f34e9.js');
|
|
9
11
|
require('../index-784ff647.js');
|
|
10
|
-
require('../codes-87f6824b.js');
|
|
11
12
|
|
|
12
|
-
/* istanbul ignore next -- @preserve */ function assertIsObject(obj) {
|
|
13
|
-
if (typeof obj !== 'object' || Array.isArray(obj) || !obj) {
|
|
14
|
-
throw new Error('Not an object');
|
|
15
|
-
}
|
|
16
|
-
}
|
|
17
|
-
/* istanbul ignore next -- @preserve */ function assertIsProcedureType(obj) {
|
|
18
|
-
if (obj !== 'query' && obj !== 'subscription' && obj !== 'mutation') {
|
|
19
|
-
throw new Error('Invalid procedure type');
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
/* istanbul ignore next -- @preserve */ function assertIsRequestId(obj) {
|
|
23
|
-
if (obj !== null && typeof obj === 'number' && isNaN(obj) && typeof obj !== 'string') {
|
|
24
|
-
throw new Error('Invalid request id');
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
/* istanbul ignore next -- @preserve */ function assertIsString(obj) {
|
|
28
|
-
if (typeof obj !== 'string') {
|
|
29
|
-
throw new Error('Invalid string');
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
/* istanbul ignore next -- @preserve */ function assertIsJSONRPC2OrUndefined(obj) {
|
|
33
|
-
if (typeof obj !== 'undefined' && obj !== '2.0') {
|
|
34
|
-
throw new Error('Must be JSONRPC 2.0');
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
function parseMessage(obj, transformer) {
|
|
38
|
-
assertIsObject(obj);
|
|
39
|
-
const { method , params , id , jsonrpc } = obj;
|
|
40
|
-
assertIsRequestId(id);
|
|
41
|
-
assertIsJSONRPC2OrUndefined(jsonrpc);
|
|
42
|
-
if (method === 'subscription.stop') {
|
|
43
|
-
return {
|
|
44
|
-
id,
|
|
45
|
-
jsonrpc,
|
|
46
|
-
method
|
|
47
|
-
};
|
|
48
|
-
}
|
|
49
|
-
assertIsProcedureType(method);
|
|
50
|
-
assertIsObject(params);
|
|
51
|
-
const { input: rawInput , path } = params;
|
|
52
|
-
assertIsString(path);
|
|
53
|
-
const input = transformer.input.deserialize(rawInput);
|
|
54
|
-
return {
|
|
55
|
-
id,
|
|
56
|
-
jsonrpc,
|
|
57
|
-
method,
|
|
58
|
-
params: {
|
|
59
|
-
input,
|
|
60
|
-
path
|
|
61
|
-
}
|
|
62
|
-
};
|
|
63
|
-
}
|
|
64
13
|
function applyWSSHandler(opts) {
|
|
65
14
|
const { wss , createContext , router } = opts;
|
|
66
15
|
const { transformer } = router._def._config;
|
|
@@ -235,7 +184,7 @@ function applyWSSHandler(opts) {
|
|
|
235
184
|
const msgs = Array.isArray(msgJSON) ? msgJSON : [
|
|
236
185
|
msgJSON
|
|
237
186
|
];
|
|
238
|
-
const promises = msgs.map((raw)=>
|
|
187
|
+
const promises = msgs.map((raw)=>parseTRPCMessage.parseTRPCMessage(raw, transformer)).map(handleRequest);
|
|
239
188
|
await Promise.all(promises);
|
|
240
189
|
} catch (cause) {
|
|
241
190
|
const error = new TRPCError.TRPCError({
|
|
@@ -324,4 +273,3 @@ function applyWSSHandler(opts) {
|
|
|
324
273
|
}
|
|
325
274
|
|
|
326
275
|
exports.applyWSSHandler = applyWSSHandler;
|
|
327
|
-
exports.parseMessage = parseMessage;
|
package/dist/adapters/ws.mjs
CHANGED
|
@@ -1,62 +1,11 @@
|
|
|
1
1
|
import { b as callProcedure } from '../config-4c0f8e88.mjs';
|
|
2
2
|
import { T as TRPCError, g as getTRPCErrorFromUnknown } from '../TRPCError-816ff32e.mjs';
|
|
3
3
|
import { i as isObservable } from '../observable-ade1bad8.mjs';
|
|
4
|
+
import '../codes-c924c3db.mjs';
|
|
5
|
+
import { p as parseTRPCMessage } from '../parseTRPCMessage-a0f17853.mjs';
|
|
4
6
|
import { g as getErrorShape, t as transformTRPCResponse } from '../transformTRPCResponse-1153b421.mjs';
|
|
5
7
|
import '../index-f91d720c.mjs';
|
|
6
|
-
import '../codes-c924c3db.mjs';
|
|
7
8
|
|
|
8
|
-
/* istanbul ignore next -- @preserve */ function assertIsObject(obj) {
|
|
9
|
-
if (typeof obj !== 'object' || Array.isArray(obj) || !obj) {
|
|
10
|
-
throw new Error('Not an object');
|
|
11
|
-
}
|
|
12
|
-
}
|
|
13
|
-
/* istanbul ignore next -- @preserve */ function assertIsProcedureType(obj) {
|
|
14
|
-
if (obj !== 'query' && obj !== 'subscription' && obj !== 'mutation') {
|
|
15
|
-
throw new Error('Invalid procedure type');
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
|
-
/* istanbul ignore next -- @preserve */ function assertIsRequestId(obj) {
|
|
19
|
-
if (obj !== null && typeof obj === 'number' && isNaN(obj) && typeof obj !== 'string') {
|
|
20
|
-
throw new Error('Invalid request id');
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
/* istanbul ignore next -- @preserve */ function assertIsString(obj) {
|
|
24
|
-
if (typeof obj !== 'string') {
|
|
25
|
-
throw new Error('Invalid string');
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
/* istanbul ignore next -- @preserve */ function assertIsJSONRPC2OrUndefined(obj) {
|
|
29
|
-
if (typeof obj !== 'undefined' && obj !== '2.0') {
|
|
30
|
-
throw new Error('Must be JSONRPC 2.0');
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
function parseMessage(obj, transformer) {
|
|
34
|
-
assertIsObject(obj);
|
|
35
|
-
const { method , params , id , jsonrpc } = obj;
|
|
36
|
-
assertIsRequestId(id);
|
|
37
|
-
assertIsJSONRPC2OrUndefined(jsonrpc);
|
|
38
|
-
if (method === 'subscription.stop') {
|
|
39
|
-
return {
|
|
40
|
-
id,
|
|
41
|
-
jsonrpc,
|
|
42
|
-
method
|
|
43
|
-
};
|
|
44
|
-
}
|
|
45
|
-
assertIsProcedureType(method);
|
|
46
|
-
assertIsObject(params);
|
|
47
|
-
const { input: rawInput , path } = params;
|
|
48
|
-
assertIsString(path);
|
|
49
|
-
const input = transformer.input.deserialize(rawInput);
|
|
50
|
-
return {
|
|
51
|
-
id,
|
|
52
|
-
jsonrpc,
|
|
53
|
-
method,
|
|
54
|
-
params: {
|
|
55
|
-
input,
|
|
56
|
-
path
|
|
57
|
-
}
|
|
58
|
-
};
|
|
59
|
-
}
|
|
60
9
|
function applyWSSHandler(opts) {
|
|
61
10
|
const { wss , createContext , router } = opts;
|
|
62
11
|
const { transformer } = router._def._config;
|
|
@@ -231,7 +180,7 @@ function applyWSSHandler(opts) {
|
|
|
231
180
|
const msgs = Array.isArray(msgJSON) ? msgJSON : [
|
|
232
181
|
msgJSON
|
|
233
182
|
];
|
|
234
|
-
const promises = msgs.map((raw)=>
|
|
183
|
+
const promises = msgs.map((raw)=>parseTRPCMessage(raw, transformer)).map(handleRequest);
|
|
235
184
|
await Promise.all(promises);
|
|
236
185
|
} catch (cause) {
|
|
237
186
|
const error = new TRPCError({
|
|
@@ -319,4 +268,4 @@ function applyWSSHandler(opts) {
|
|
|
319
268
|
};
|
|
320
269
|
}
|
|
321
270
|
|
|
322
|
-
export { applyWSSHandler
|
|
271
|
+
export { applyWSSHandler };
|
|
@@ -10,7 +10,7 @@ type CreateProcedureReturnInput<TPrev extends ProcedureParams, TNext extends Pro
|
|
|
10
10
|
_meta: TPrev['_meta'];
|
|
11
11
|
_ctx_out: Overwrite<TPrev['_ctx_out'], TNext['_ctx_out']>;
|
|
12
12
|
_input_in: FallbackValue<TNext['_input_in'], TPrev['_input_in']>;
|
|
13
|
-
_input_out:
|
|
13
|
+
_input_out: UnsetMarker extends TNext['_input_out'] ? TPrev['_input_out'] : Overwrite<TPrev['_input_out'], TNext['_input_out']>;
|
|
14
14
|
_output_in: FallbackValue<TNext['_output_in'], TPrev['_output_in']>;
|
|
15
15
|
_output_out: FallbackValue<TNext['_output_out'], TPrev['_output_out']>;
|
|
16
16
|
}>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"procedureBuilder.d.ts","sourceRoot":"","sources":["../../../src/core/internals/procedureBuilder.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,EAGL,iBAAiB,EACjB,kBAAkB,EAEnB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAChD,OAAO,EAKL,SAAS,EACT,eAAe,EAChB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAGzC,OAAO,EACL,YAAY,IAAI,aAAa,EAE7B,SAAS,EACT,cAAc,EACd,cAAc,EACd,WAAW,EACZ,MAAM,SAAS,CAAC;AAEjB,KAAK,0BAA0B,CAC7B,KAAK,SAAS,eAAe,EAC7B,KAAK,SAAS,eAAe,IAC3B,gBAAgB,CAAC;IACnB,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;IAC1B,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;IACtB,QAAQ,EAAE,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC;IAC1D,SAAS,EAAE,aAAa,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC;IACjE,UAAU,EAAE,
|
|
1
|
+
{"version":3,"file":"procedureBuilder.d.ts","sourceRoot":"","sources":["../../../src/core/internals/procedureBuilder.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,7 +3,7 @@ import { Simplify } from '../types';
|
|
|
3
3
|
import { AnyRootConfig, RootConfig } from './internals/config';
|
|
4
4
|
import { ParseFn } from './internals/getParseFn';
|
|
5
5
|
import { ProcedureBuilderMiddleware } from './internals/procedureBuilder';
|
|
6
|
-
import { DefaultValue as FallbackValue, MiddlewareMarker, Overwrite } from './internals/utils';
|
|
6
|
+
import { DefaultValue as FallbackValue, MiddlewareMarker, Overwrite, UnsetMarker } from './internals/utils';
|
|
7
7
|
import { ProcedureParams } from './procedure';
|
|
8
8
|
import { ProcedureType } from './types';
|
|
9
9
|
/**
|
|
@@ -46,7 +46,7 @@ export interface MiddlewareBuilder<TRoot extends ProcedureParams, TNewParams ext
|
|
|
46
46
|
_meta: TRoot['_meta'];
|
|
47
47
|
_ctx_out: Overwrite<TRoot['_ctx_out'], TNewParams['_ctx_out']>;
|
|
48
48
|
_input_in: FallbackValue<TRoot['_input_in'], TNewParams['_input_in']>;
|
|
49
|
-
_input_out:
|
|
49
|
+
_input_out: UnsetMarker extends TNewParams['_input_out'] ? TRoot['_input_out'] : Overwrite<TRoot['_input_out'], TNewParams['_input_out']>;
|
|
50
50
|
_output_in: FallbackValue<TRoot['_output_in'], TNewParams['_output_in']>;
|
|
51
51
|
_output_out: FallbackValue<TRoot['_output_out'], TNewParams['_output_out']>;
|
|
52
52
|
} extends infer OParams extends ProcedureParams ? MiddlewareBuilder<OParams, $Params> | MiddlewareFunction<OParams, $Params> : never): CreateMiddlewareReturnInput<TRoot, TNewParams, Overwrite<TNewParams, $Params>>;
|
|
@@ -64,7 +64,7 @@ type CreateMiddlewareReturnInput<TRoot extends ProcedureParams, TPrev extends Pr
|
|
|
64
64
|
_meta: TPrev['_meta'];
|
|
65
65
|
_ctx_out: Overwrite<TPrev['_ctx_out'], TNext['_ctx_out']>;
|
|
66
66
|
_input_in: FallbackValue<TNext['_input_in'], TPrev['_input_in']>;
|
|
67
|
-
_input_out:
|
|
67
|
+
_input_out: UnsetMarker extends TNext['_input_out'] ? TPrev['_input_out'] : Overwrite<TPrev['_input_out'], TNext['_input_out']>;
|
|
68
68
|
_output_in: FallbackValue<TNext['_output_in'], TPrev['_output_in']>;
|
|
69
69
|
_output_out: FallbackValue<TNext['_output_out'], TPrev['_output_out']>;
|
|
70
70
|
}>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"middleware.d.ts","sourceRoot":"","sources":["../../src/core/middleware.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAC/D,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAC;AAC1E,OAAO,EACL,YAAY,IAAI,aAAa,EAC7B,gBAAgB,EAChB,SAAS,
|
|
1
|
+
{"version":3,"file":"middleware.d.ts","sourceRoot":"","sources":["../../src/core/middleware.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
/* istanbul ignore next -- @preserve */ function assertIsObject(obj) {
|
|
4
|
+
if (typeof obj !== 'object' || Array.isArray(obj) || !obj) {
|
|
5
|
+
throw new Error('Not an object');
|
|
6
|
+
}
|
|
7
|
+
}
|
|
8
|
+
/* istanbul ignore next -- @preserve */ function assertIsProcedureType(obj) {
|
|
9
|
+
if (obj !== 'query' && obj !== 'subscription' && obj !== 'mutation') {
|
|
10
|
+
throw new Error('Invalid procedure type');
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
/* istanbul ignore next -- @preserve */ function assertIsRequestId(obj) {
|
|
14
|
+
if (obj !== null && typeof obj === 'number' && isNaN(obj) && typeof obj !== 'string') {
|
|
15
|
+
throw new Error('Invalid request id');
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
/* istanbul ignore next -- @preserve */ function assertIsString(obj) {
|
|
19
|
+
if (typeof obj !== 'string') {
|
|
20
|
+
throw new Error('Invalid string');
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
/* istanbul ignore next -- @preserve */ function assertIsJSONRPC2OrUndefined(obj) {
|
|
24
|
+
if (typeof obj !== 'undefined' && obj !== '2.0') {
|
|
25
|
+
throw new Error('Must be JSONRPC 2.0');
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
/** @public */ function parseTRPCMessage(obj, transformer) {
|
|
29
|
+
assertIsObject(obj);
|
|
30
|
+
const { id , jsonrpc , method , params } = obj;
|
|
31
|
+
assertIsRequestId(id);
|
|
32
|
+
assertIsJSONRPC2OrUndefined(jsonrpc);
|
|
33
|
+
if (method === 'subscription.stop') {
|
|
34
|
+
return {
|
|
35
|
+
id,
|
|
36
|
+
jsonrpc,
|
|
37
|
+
method
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
assertIsProcedureType(method);
|
|
41
|
+
assertIsObject(params);
|
|
42
|
+
const { input: rawInput , path } = params;
|
|
43
|
+
assertIsString(path);
|
|
44
|
+
const input = transformer.input.deserialize(rawInput);
|
|
45
|
+
return {
|
|
46
|
+
id,
|
|
47
|
+
jsonrpc,
|
|
48
|
+
method,
|
|
49
|
+
params: {
|
|
50
|
+
input,
|
|
51
|
+
path
|
|
52
|
+
}
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
exports.parseTRPCMessage = parseTRPCMessage;
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
/* istanbul ignore next -- @preserve */
|
|
2
|
+
function assertIsObject(obj) {
|
|
3
|
+
if (typeof obj !== 'object' || Array.isArray(obj) || !obj) {
|
|
4
|
+
throw new Error('Not an object');
|
|
5
|
+
}
|
|
6
|
+
}
|
|
7
|
+
/* istanbul ignore next -- @preserve */
|
|
8
|
+
function assertIsProcedureType(obj) {
|
|
9
|
+
if (obj !== 'query' && obj !== 'subscription' && obj !== 'mutation') {
|
|
10
|
+
throw new Error('Invalid procedure type');
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
/* istanbul ignore next -- @preserve */
|
|
14
|
+
function assertIsRequestId(obj) {
|
|
15
|
+
if (obj !== null &&
|
|
16
|
+
typeof obj === 'number' &&
|
|
17
|
+
isNaN(obj) &&
|
|
18
|
+
typeof obj !== 'string') {
|
|
19
|
+
throw new Error('Invalid request id');
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
/* istanbul ignore next -- @preserve */
|
|
23
|
+
function assertIsString(obj) {
|
|
24
|
+
if (typeof obj !== 'string') {
|
|
25
|
+
throw new Error('Invalid string');
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
/* istanbul ignore next -- @preserve */
|
|
29
|
+
function assertIsJSONRPC2OrUndefined(obj) {
|
|
30
|
+
if (typeof obj !== 'undefined' && obj !== '2.0') {
|
|
31
|
+
throw new Error('Must be JSONRPC 2.0');
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
/** @public */
|
|
35
|
+
function parseTRPCMessage(obj, transformer) {
|
|
36
|
+
assertIsObject(obj);
|
|
37
|
+
const { id, jsonrpc, method, params } = obj;
|
|
38
|
+
assertIsRequestId(id);
|
|
39
|
+
assertIsJSONRPC2OrUndefined(jsonrpc);
|
|
40
|
+
if (method === 'subscription.stop') {
|
|
41
|
+
return {
|
|
42
|
+
id,
|
|
43
|
+
jsonrpc,
|
|
44
|
+
method,
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
assertIsProcedureType(method);
|
|
48
|
+
assertIsObject(params);
|
|
49
|
+
const { input: rawInput, path } = params;
|
|
50
|
+
assertIsString(path);
|
|
51
|
+
const input = transformer.input.deserialize(rawInput);
|
|
52
|
+
return {
|
|
53
|
+
id,
|
|
54
|
+
jsonrpc,
|
|
55
|
+
method,
|
|
56
|
+
params: {
|
|
57
|
+
input,
|
|
58
|
+
path,
|
|
59
|
+
},
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
export { parseTRPCMessage as p };
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/* istanbul ignore next -- @preserve */ function assertIsObject(obj) {
|
|
2
|
+
if (typeof obj !== 'object' || Array.isArray(obj) || !obj) {
|
|
3
|
+
throw new Error('Not an object');
|
|
4
|
+
}
|
|
5
|
+
}
|
|
6
|
+
/* istanbul ignore next -- @preserve */ function assertIsProcedureType(obj) {
|
|
7
|
+
if (obj !== 'query' && obj !== 'subscription' && obj !== 'mutation') {
|
|
8
|
+
throw new Error('Invalid procedure type');
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
/* istanbul ignore next -- @preserve */ function assertIsRequestId(obj) {
|
|
12
|
+
if (obj !== null && typeof obj === 'number' && isNaN(obj) && typeof obj !== 'string') {
|
|
13
|
+
throw new Error('Invalid request id');
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
/* istanbul ignore next -- @preserve */ function assertIsString(obj) {
|
|
17
|
+
if (typeof obj !== 'string') {
|
|
18
|
+
throw new Error('Invalid string');
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
/* istanbul ignore next -- @preserve */ function assertIsJSONRPC2OrUndefined(obj) {
|
|
22
|
+
if (typeof obj !== 'undefined' && obj !== '2.0') {
|
|
23
|
+
throw new Error('Must be JSONRPC 2.0');
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
/** @public */ function parseTRPCMessage(obj, transformer) {
|
|
27
|
+
assertIsObject(obj);
|
|
28
|
+
const { id , jsonrpc , method , params } = obj;
|
|
29
|
+
assertIsRequestId(id);
|
|
30
|
+
assertIsJSONRPC2OrUndefined(jsonrpc);
|
|
31
|
+
if (method === 'subscription.stop') {
|
|
32
|
+
return {
|
|
33
|
+
id,
|
|
34
|
+
jsonrpc,
|
|
35
|
+
method
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
assertIsProcedureType(method);
|
|
39
|
+
assertIsObject(params);
|
|
40
|
+
const { input: rawInput , path } = params;
|
|
41
|
+
assertIsString(path);
|
|
42
|
+
const input = transformer.input.deserialize(rawInput);
|
|
43
|
+
return {
|
|
44
|
+
id,
|
|
45
|
+
jsonrpc,
|
|
46
|
+
method,
|
|
47
|
+
params: {
|
|
48
|
+
input,
|
|
49
|
+
path
|
|
50
|
+
}
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
export { parseTRPCMessage as p };
|
package/dist/rpc/index.d.ts
CHANGED
package/dist/rpc/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/rpc/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,aAAa,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/rpc/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,aAAa,CAAC;AAC5B,cAAc,oBAAoB,CAAC"}
|
package/dist/rpc/index.js
CHANGED
|
@@ -3,8 +3,10 @@
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
5
|
var codes = require('../codes-87f6824b.js');
|
|
6
|
+
var parseTRPCMessage = require('../parseTRPCMessage-1377f305.js');
|
|
6
7
|
|
|
7
8
|
|
|
8
9
|
|
|
9
10
|
exports.TRPC_ERROR_CODES_BY_KEY = codes.TRPC_ERROR_CODES_BY_KEY;
|
|
10
11
|
exports.TRPC_ERROR_CODES_BY_NUMBER = codes.TRPC_ERROR_CODES_BY_NUMBER;
|
|
12
|
+
exports.parseTRPCMessage = parseTRPCMessage.parseTRPCMessage;
|
package/dist/rpc/index.mjs
CHANGED
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { CombinedDataTransformer } from '../transformer';
|
|
2
|
+
import type { TRPCClientOutgoingMessage } from './envelopes';
|
|
3
|
+
/** @public */
|
|
4
|
+
export declare function parseTRPCMessage(obj: unknown, transformer: CombinedDataTransformer): TRPCClientOutgoingMessage;
|
|
5
|
+
//# sourceMappingURL=parseTRPCMessage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parseTRPCMessage.d.ts","sourceRoot":"","sources":["../../src/rpc/parseTRPCMessage.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AAC9D,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AA8C7D,cAAc;AACd,wBAAgB,gBAAgB,CAC9B,GAAG,EAAE,OAAO,EACZ,WAAW,EAAE,uBAAuB,GACnC,yBAAyB,CA+B3B"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@trpc/server",
|
|
3
|
-
"version": "10.
|
|
3
|
+
"version": "10.43.0",
|
|
4
4
|
"description": "The tRPC server library",
|
|
5
5
|
"author": "KATT",
|
|
6
6
|
"license": "MIT",
|
|
@@ -173,5 +173,5 @@
|
|
|
173
173
|
"funding": [
|
|
174
174
|
"https://trpc.io/sponsor"
|
|
175
175
|
],
|
|
176
|
-
"gitHead": "
|
|
176
|
+
"gitHead": "0d505fd7415f537bd3e263971686b13a78584167"
|
|
177
177
|
}
|
|
@@ -8,23 +8,36 @@
|
|
|
8
8
|
/**
|
|
9
9
|
* @see https://github.com/remix-run/remix/blob/0bcb4a304dd2f08f6032c3bf0c3aa7eb5b976901/packages/remix-server-runtime/formData.ts
|
|
10
10
|
*/
|
|
11
|
+
import * as fs from 'fs/promises';
|
|
11
12
|
import { Readable } from 'node:stream';
|
|
12
13
|
import { streamMultipart } from '@web3-storage/multipart-parser';
|
|
13
14
|
import { CombinedDataTransformer } from '../../../../transformer';
|
|
14
15
|
import { createNodeHTTPContentTypeHandler } from '../../internals/contentType';
|
|
15
16
|
import { NodeHTTPRequest } from '../../types';
|
|
16
|
-
import {
|
|
17
|
+
import { NodeOnDiskFile } from './fileUploadHandler';
|
|
18
|
+
import {
|
|
19
|
+
MaxBodySizeExceededError,
|
|
20
|
+
UploadHandler,
|
|
21
|
+
UploadHandlerPart,
|
|
22
|
+
} from './uploadHandler';
|
|
23
|
+
|
|
24
|
+
const utfTextDecoder = new TextDecoder('utf-8');
|
|
17
25
|
|
|
18
26
|
/**
|
|
19
27
|
* Allows you to handle multipart forms (file uploads) for your app.
|
|
28
|
+
* Request body parts with a 'filename' property will be treated as files.
|
|
29
|
+
* The rest will be treated as text.
|
|
30
|
+
* @param request The incoming Node HTTP request
|
|
31
|
+
* @param uploadHandler A function that handles file uploads and returns a value to be used in the request body. If uploaded to disk, the returned value is a NodeOnDiskFile. If uploaded to memory, the returned value is a File.
|
|
32
|
+
* @param maxBodySize The maximum size of the request body in bytes. Defaults to Infinity.
|
|
20
33
|
*
|
|
21
|
-
* TODO: Update this comment
|
|
22
34
|
* @see https://remix.run/utils/parse-multipart-form-data
|
|
23
35
|
*/
|
|
24
36
|
async function parseMultipartFormData(
|
|
25
37
|
request: NodeHTTPRequest,
|
|
26
38
|
uploadHandler: UploadHandler,
|
|
27
|
-
|
|
39
|
+
maxBodySize = Infinity,
|
|
40
|
+
) {
|
|
28
41
|
const contentType = request.headers['content-type'] ?? '';
|
|
29
42
|
const [type, boundary] = contentType.split(/\s*;\s*boundary=/);
|
|
30
43
|
|
|
@@ -36,23 +49,61 @@ async function parseMultipartFormData(
|
|
|
36
49
|
const parts: AsyncIterable<UploadHandlerPart & { done?: true }> =
|
|
37
50
|
streamMultipart(Readable.toWeb(request), boundary);
|
|
38
51
|
|
|
39
|
-
|
|
40
|
-
if (part.done) break;
|
|
52
|
+
let currentBodySize = 0;
|
|
41
53
|
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
54
|
+
const nodeOnDiskFiles: NodeOnDiskFile[] = [];
|
|
55
|
+
|
|
56
|
+
try {
|
|
57
|
+
for await (const part of parts) {
|
|
58
|
+
if (part.done) break;
|
|
59
|
+
|
|
60
|
+
if (typeof part.filename === 'string') {
|
|
61
|
+
// This is a file, so the uploadHandler function will be called
|
|
47
62
|
|
|
48
|
-
|
|
63
|
+
// only pass basename as the multipart/form-data spec recommends
|
|
64
|
+
// https://datatracker.ietf.org/doc/html/rfc7578#section-4.2
|
|
65
|
+
part.filename = part.filename.split(/[/\\]/).pop();
|
|
66
|
+
const value = await uploadHandler(part as Required<typeof part>);
|
|
49
67
|
|
|
50
|
-
|
|
51
|
-
|
|
68
|
+
if (typeof value === 'undefined' || value === null) {
|
|
69
|
+
continue;
|
|
70
|
+
}
|
|
71
|
+
// add to cleanup array in case of error
|
|
72
|
+
if (value instanceof NodeOnDiskFile) {
|
|
73
|
+
nodeOnDiskFiles.push(value);
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
// if the combined size of the body exceeds the max size, throw an error
|
|
77
|
+
currentBodySize += value.size;
|
|
78
|
+
if (currentBodySize > maxBodySize) {
|
|
79
|
+
throw new MaxBodySizeExceededError(maxBodySize);
|
|
80
|
+
}
|
|
81
|
+
// add the file to the form data
|
|
82
|
+
formData.append(part.name, value as any);
|
|
83
|
+
} else {
|
|
84
|
+
// This is text, so we'll decode it and add it to the form data
|
|
85
|
+
let textualPart = '';
|
|
86
|
+
for await (const chunk of part.data) {
|
|
87
|
+
// if the combined size of the body exceeds the max size, throw an error
|
|
88
|
+
currentBodySize += chunk.length;
|
|
89
|
+
if (currentBodySize > maxBodySize) {
|
|
90
|
+
throw new MaxBodySizeExceededError(maxBodySize);
|
|
91
|
+
}
|
|
92
|
+
textualPart += utfTextDecoder.decode(chunk);
|
|
93
|
+
}
|
|
94
|
+
// add the text to the form data
|
|
95
|
+
formData.append(part.name, textualPart);
|
|
96
|
+
}
|
|
52
97
|
}
|
|
53
|
-
}
|
|
54
98
|
|
|
55
|
-
|
|
99
|
+
return formData;
|
|
100
|
+
} catch (e) {
|
|
101
|
+
// clean up any files that were uploaded to disk if an error occurs
|
|
102
|
+
await Promise.all(
|
|
103
|
+
nodeOnDiskFiles.map((file) => fs.unlink(file.getFilePath())),
|
|
104
|
+
);
|
|
105
|
+
throw e;
|
|
106
|
+
}
|
|
56
107
|
}
|
|
57
108
|
|
|
58
109
|
function isMultipartFormDataRequest(req: NodeHTTPRequest) {
|
|
@@ -99,10 +150,14 @@ export const nodeHTTPFormDataContentTypeHandler =
|
|
|
99
150
|
|
|
100
151
|
export { parseMultipartFormData as experimental_parseMultipartFormData };
|
|
101
152
|
export { createMemoryUploadHandler as experimental_createMemoryUploadHandler } from './memoryUploadHandler';
|
|
102
|
-
export {
|
|
153
|
+
export {
|
|
154
|
+
createFileUploadHandler as experimental_createFileUploadHandler,
|
|
155
|
+
NodeOnDiskFile as experimental_NodeOnDiskFile,
|
|
156
|
+
} from './fileUploadHandler';
|
|
103
157
|
export {
|
|
104
158
|
composeUploadHandlers as experimental_composeUploadHandlers,
|
|
105
159
|
MaxPartSizeExceededError,
|
|
160
|
+
MaxBodySizeExceededError,
|
|
106
161
|
} from './uploadHandler';
|
|
107
162
|
export { type UploadHandler } from './uploadHandler';
|
|
108
163
|
export { isMultipartFormDataRequest as experimental_isMultipartFormDataRequest };
|
|
@@ -50,10 +50,6 @@ export function createMemoryUploadHandler({
|
|
|
50
50
|
chunks.push(chunk);
|
|
51
51
|
}
|
|
52
52
|
|
|
53
|
-
|
|
54
|
-
return new File(chunks, filename, { type: contentType });
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
return await new Blob(chunks, { type: contentType }).text();
|
|
53
|
+
return new File(chunks, filename, { type: contentType });
|
|
58
54
|
};
|
|
59
55
|
}
|
|
@@ -11,8 +11,8 @@ export type UploadHandlerPart = {
|
|
|
11
11
|
};
|
|
12
12
|
|
|
13
13
|
export type UploadHandler = (
|
|
14
|
-
part: UploadHandlerPart
|
|
15
|
-
) => Promise<File | NodeOnDiskFile |
|
|
14
|
+
part: Required<UploadHandlerPart>,
|
|
15
|
+
) => Promise<File | NodeOnDiskFile | null | undefined>;
|
|
16
16
|
|
|
17
17
|
export function composeUploadHandlers(
|
|
18
18
|
...handlers: UploadHandler[]
|
|
@@ -35,6 +35,12 @@ export class MaxPartSizeExceededError extends Error {
|
|
|
35
35
|
}
|
|
36
36
|
}
|
|
37
37
|
|
|
38
|
+
export class MaxBodySizeExceededError extends Error {
|
|
39
|
+
constructor(public maxBytes: number) {
|
|
40
|
+
super(`Body exceeded upload size of ${maxBytes} bytes.`);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
|
|
38
44
|
export type MemoryUploadHandlerFilterArgs = {
|
|
39
45
|
filename?: string;
|
|
40
46
|
contentType: string;
|
|
@@ -78,10 +84,6 @@ export function createMemoryUploadHandler({
|
|
|
78
84
|
chunks.push(chunk);
|
|
79
85
|
}
|
|
80
86
|
|
|
81
|
-
|
|
82
|
-
return new File(chunks, filename, { type: contentType });
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
return await new Blob(chunks, { type: contentType }).text();
|
|
87
|
+
return new File(chunks, filename, { type: contentType });
|
|
86
88
|
};
|
|
87
89
|
}
|