@trpc/server 11.0.0-rc.347 → 11.0.0-rc.351
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/@trpc/server/http.d.ts +1 -0
- package/dist/@trpc/server/http.d.ts.map +1 -1
- package/dist/@trpc/server/index.d.ts +1 -2
- package/dist/@trpc/server/index.d.ts.map +1 -1
- package/dist/adapters/aws-lambda/index.d.ts.map +1 -1
- package/dist/adapters/aws-lambda/index.js +9 -19
- package/dist/adapters/aws-lambda/index.mjs +9 -19
- package/dist/adapters/aws-lambda/utils.d.ts +12 -3
- package/dist/adapters/aws-lambda/utils.d.ts.map +1 -1
- package/dist/adapters/aws-lambda/utils.js +1 -12
- package/dist/adapters/aws-lambda/utils.mjs +2 -12
- package/dist/adapters/express.d.ts.map +1 -1
- package/dist/adapters/express.js +1 -0
- package/dist/adapters/express.mjs +1 -0
- package/dist/adapters/fastify/fastifyRequestHandler.d.ts +9 -1
- package/dist/adapters/fastify/fastifyRequestHandler.d.ts.map +1 -1
- package/dist/adapters/fastify/fastifyRequestHandler.js +2 -10
- package/dist/adapters/fastify/fastifyRequestHandler.mjs +2 -10
- package/dist/adapters/fastify/fastifyTRPCPlugin.d.ts +1 -1
- package/dist/adapters/fastify/fastifyTRPCPlugin.d.ts.map +1 -1
- package/dist/adapters/fetch/fetchRequestHandler.d.ts +5 -1
- package/dist/adapters/fetch/fetchRequestHandler.d.ts.map +1 -1
- package/dist/adapters/fetch/fetchRequestHandler.js +2 -16
- package/dist/adapters/fetch/fetchRequestHandler.mjs +2 -16
- package/dist/adapters/fetch/types.d.ts +12 -9
- package/dist/adapters/fetch/types.d.ts.map +1 -1
- package/dist/adapters/next-app-dir/nextAppDirCaller.d.ts +7 -2
- package/dist/adapters/next-app-dir/nextAppDirCaller.d.ts.map +1 -1
- package/dist/adapters/next.d.ts.map +1 -1
- package/dist/adapters/next.js +1 -0
- package/dist/adapters/next.mjs +1 -0
- package/dist/adapters/node-http/content-type/form-data/fileUploadHandler.d.ts +73 -0
- package/dist/adapters/node-http/content-type/form-data/fileUploadHandler.d.ts.map +1 -0
- package/dist/adapters/node-http/content-type/form-data/fileUploadHandler.js +161 -0
- package/dist/adapters/node-http/content-type/form-data/fileUploadHandler.mjs +157 -0
- package/dist/adapters/node-http/content-type/form-data/index.d.ts +25 -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 +128 -25
- package/dist/adapters/node-http/content-type/form-data/index.mjs +103 -25
- package/dist/adapters/node-http/content-type/form-data/memoryUploadHandler.d.ts +31 -0
- package/dist/adapters/node-http/content-type/form-data/memoryUploadHandler.d.ts.map +1 -0
- package/dist/adapters/node-http/content-type/form-data/memoryUploadHandler.js +29 -0
- package/dist/adapters/node-http/content-type/form-data/memoryUploadHandler.mjs +27 -0
- package/dist/adapters/node-http/content-type/form-data/streamSlice.d.ts +16 -0
- package/dist/adapters/node-http/content-type/form-data/streamSlice.d.ts.map +1 -0
- package/dist/adapters/node-http/content-type/form-data/streamSlice.js +46 -0
- package/dist/adapters/node-http/content-type/form-data/streamSlice.mjs +44 -0
- package/dist/adapters/node-http/content-type/form-data/uploadHandler.d.ts +45 -0
- package/dist/adapters/node-http/content-type/form-data/uploadHandler.d.ts.map +1 -0
- package/dist/adapters/node-http/content-type/form-data/uploadHandler.js +30 -0
- package/dist/adapters/node-http/content-type/form-data/uploadHandler.mjs +26 -0
- package/dist/adapters/node-http/content-type/json/getPostBody.d.ts.map +1 -1
- package/dist/adapters/node-http/content-type/json/getPostBody.js +12 -4
- package/dist/adapters/node-http/content-type/json/getPostBody.mjs +12 -4
- package/dist/adapters/node-http/content-type/json/index.d.ts +1 -4
- package/dist/adapters/node-http/content-type/json/index.d.ts.map +1 -1
- package/dist/adapters/node-http/content-type/json/index.js +10 -59
- package/dist/adapters/node-http/content-type/json/index.mjs +10 -59
- package/dist/adapters/node-http/internals/contentType.d.ts +9 -0
- package/dist/adapters/node-http/internals/contentType.d.ts.map +1 -0
- package/dist/adapters/node-http/internals/contentType.js +8 -0
- package/dist/adapters/node-http/internals/contentType.mjs +6 -0
- package/dist/adapters/node-http/nodeHTTPRequestHandler.d.ts.map +1 -1
- package/dist/adapters/node-http/nodeHTTPRequestHandler.js +21 -19
- package/dist/adapters/node-http/nodeHTTPRequestHandler.mjs +22 -20
- package/dist/adapters/node-http/types.d.ts +19 -8
- package/dist/adapters/node-http/types.d.ts.map +1 -1
- package/dist/adapters/standalone.d.ts.map +1 -1
- package/dist/adapters/standalone.js +1 -0
- package/dist/adapters/standalone.mjs +1 -0
- package/dist/adapters/ws.d.ts +12 -2
- package/dist/adapters/ws.d.ts.map +1 -1
- package/dist/bundle-analysis.json +237 -231
- package/dist/http.js +2 -0
- package/dist/http.mjs +1 -0
- package/dist/index.js +0 -2
- package/dist/index.mjs +0 -1
- package/dist/unstable-core-do-not-import/http/contentType.d.ts +15 -7
- package/dist/unstable-core-do-not-import/http/contentType.d.ts.map +1 -1
- package/dist/unstable-core-do-not-import/http/contentType.js +54 -0
- package/dist/unstable-core-do-not-import/http/contentType.mjs +52 -0
- package/dist/unstable-core-do-not-import/http/index.d.ts +1 -0
- package/dist/unstable-core-do-not-import/http/index.d.ts.map +1 -1
- package/dist/unstable-core-do-not-import/http/resolveHTTPResponse.d.ts +5 -5
- package/dist/unstable-core-do-not-import/http/resolveHTTPResponse.d.ts.map +1 -1
- package/dist/unstable-core-do-not-import/http/resolveHTTPResponse.js +22 -25
- package/dist/unstable-core-do-not-import/http/resolveHTTPResponse.mjs +22 -25
- package/dist/unstable-core-do-not-import/http/types.d.ts +2 -0
- package/dist/unstable-core-do-not-import/http/types.d.ts.map +1 -1
- package/dist/unstable-core-do-not-import/rootConfig.d.ts +0 -21
- package/dist/unstable-core-do-not-import/rootConfig.d.ts.map +1 -1
- package/dist/unstable-core-do-not-import.js +2 -0
- package/dist/unstable-core-do-not-import.mjs +1 -0
- package/package.json +3 -2
- package/src/@trpc/server/http.ts +1 -0
- package/src/@trpc/server/index.ts +0 -4
- package/src/adapters/aws-lambda/index.ts +9 -24
- package/src/adapters/aws-lambda/utils.ts +15 -21
- package/src/adapters/express.ts +6 -1
- package/src/adapters/fastify/fastifyRequestHandler.ts +21 -15
- package/src/adapters/fastify/fastifyTRPCPlugin.ts +1 -1
- package/src/adapters/fetch/fetchRequestHandler.ts +10 -22
- package/src/adapters/fetch/types.ts +15 -22
- package/src/adapters/next-app-dir/nextAppDirCaller.ts +9 -2
- package/src/adapters/next.ts +6 -1
- package/src/adapters/node-http/content-type/form-data/fileUploadHandler.ts +277 -0
- package/src/adapters/node-http/content-type/form-data/index.ts +159 -33
- package/src/adapters/node-http/content-type/form-data/memoryUploadHandler.ts +56 -0
- package/src/adapters/node-http/content-type/form-data/streamSlice.ts +56 -0
- package/src/adapters/node-http/content-type/form-data/uploadHandler.ts +89 -0
- package/src/adapters/node-http/content-type/json/getPostBody.ts +18 -9
- package/src/adapters/node-http/content-type/json/index.ts +7 -87
- package/src/adapters/node-http/{content-type/types.ts → internals/contentType.ts} +14 -2
- package/src/adapters/node-http/nodeHTTPRequestHandler.ts +35 -22
- package/src/adapters/node-http/types.ts +46 -46
- package/src/adapters/standalone.ts +2 -1
- package/src/adapters/ws.ts +14 -9
- package/src/unstable-core-do-not-import/http/contentType.ts +85 -10
- package/src/unstable-core-do-not-import/http/index.ts +1 -0
- package/src/unstable-core-do-not-import/http/resolveHTTPResponse.ts +28 -29
- package/src/unstable-core-do-not-import/http/types.ts +2 -0
- package/src/unstable-core-do-not-import/rootConfig.ts +0 -31
- package/dist/adapters/aws-lambda/content-type/json/index.d.ts +0 -10
- package/dist/adapters/aws-lambda/content-type/json/index.d.ts.map +0 -1
- package/dist/adapters/aws-lambda/content-type/json/index.js +0 -59
- package/dist/adapters/aws-lambda/content-type/json/index.mjs +0 -57
- package/dist/adapters/content-handlers/selectContentHandlerOrUnsupportedMediaType.d.ts +0 -10
- package/dist/adapters/content-handlers/selectContentHandlerOrUnsupportedMediaType.d.ts.map +0 -1
- package/dist/adapters/content-handlers/selectContentHandlerOrUnsupportedMediaType.js +0 -33
- package/dist/adapters/content-handlers/selectContentHandlerOrUnsupportedMediaType.mjs +0 -31
- package/dist/adapters/fastify/content-type/json/index.d.ts +0 -8
- package/dist/adapters/fastify/content-type/json/index.d.ts.map +0 -1
- package/dist/adapters/fastify/content-type/json/index.js +0 -59
- package/dist/adapters/fastify/content-type/json/index.mjs +0 -57
- package/dist/adapters/fastify/types.d.ts +0 -11
- package/dist/adapters/fastify/types.d.ts.map +0 -1
- package/dist/adapters/fetch/content-type/json/index.d.ts +0 -9
- package/dist/adapters/fetch/content-type/json/index.d.ts.map +0 -1
- package/dist/adapters/fetch/content-type/json/index.js +0 -58
- package/dist/adapters/fetch/content-type/json/index.mjs +0 -56
- package/dist/adapters/node-http/content-type/octet/index.d.ts +0 -5
- package/dist/adapters/node-http/content-type/octet/index.d.ts.map +0 -1
- package/dist/adapters/node-http/content-type/octet/index.js +0 -19
- package/dist/adapters/node-http/content-type/octet/index.mjs +0 -17
- package/dist/adapters/node-http/content-type/types.d.ts +0 -8
- package/dist/adapters/node-http/content-type/types.d.ts.map +0 -1
- package/dist/unstable-core-do-not-import/contentTypeParsers.d.ts +0 -16
- package/dist/unstable-core-do-not-import/contentTypeParsers.d.ts.map +0 -1
- package/dist/unstable-core-do-not-import/contentTypeParsers.js +0 -23
- package/dist/unstable-core-do-not-import/contentTypeParsers.mjs +0 -21
- package/src/adapters/aws-lambda/content-type/json/index.ts +0 -99
- package/src/adapters/content-handlers/selectContentHandlerOrUnsupportedMediaType.ts +0 -45
- package/src/adapters/fastify/content-type/json/index.ts +0 -97
- package/src/adapters/fastify/types.ts +0 -22
- package/src/adapters/fetch/content-type/json/index.ts +0 -94
- package/src/adapters/node-http/content-type/octet/index.ts +0 -27
- package/src/unstable-core-do-not-import/contentTypeParsers.ts +0 -37
|
@@ -1,63 +1,14 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { getJsonContentTypeInputs } from '../../../../unstable-core-do-not-import/http/contentType.mjs';
|
|
2
2
|
import '../../../../unstable-core-do-not-import/rootConfig.mjs';
|
|
3
|
+
import { createNodeHTTPContentTypeHandler } from '../../internals/contentType.mjs';
|
|
3
4
|
import { getPostBody } from './getPostBody.mjs';
|
|
4
5
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
const bodyResult = await getPostBody(opts);
|
|
13
|
-
if (!bodyResult.ok) {
|
|
14
|
-
throw bodyResult.error;
|
|
15
|
-
}
|
|
16
|
-
const preprocessedBody = bodyResult.preprocessed;
|
|
17
|
-
const body = bodyResult.data;
|
|
18
|
-
function getRawProcedureInputOrThrow() {
|
|
19
|
-
try {
|
|
20
|
-
if (opts.req.method === 'GET') {
|
|
21
|
-
const input = opts.query.get('input');
|
|
22
|
-
if (!input) {
|
|
23
|
-
return undefined;
|
|
24
|
-
}
|
|
25
|
-
return JSON.parse(input);
|
|
26
|
-
}
|
|
27
|
-
if (preprocessedBody || typeof body !== 'string') {
|
|
28
|
-
// Some tools like nextjs may parse json
|
|
29
|
-
// requests before they reach us. So we just use them as is
|
|
30
|
-
return body;
|
|
31
|
-
} else {
|
|
32
|
-
return JSON.parse(body);
|
|
33
|
-
}
|
|
34
|
-
} catch (cause) {
|
|
35
|
-
throw new TRPCError({
|
|
36
|
-
code: 'PARSE_ERROR',
|
|
37
|
-
cause
|
|
38
|
-
});
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
const deserializeInputValue = (rawValue, transformer)=>{
|
|
42
|
-
return typeof rawValue !== 'undefined' ? transformer.input.deserialize(rawValue) : rawValue;
|
|
43
|
-
};
|
|
44
|
-
const rawInput = getRawProcedureInputOrThrow();
|
|
45
|
-
if (rawInput === undefined) {
|
|
46
|
-
return undefined;
|
|
47
|
-
}
|
|
48
|
-
const transformer = opts.router._def._config.transformer;
|
|
49
|
-
if (!info.isBatchCall) {
|
|
50
|
-
return deserializeInputValue(rawInput, transformer);
|
|
51
|
-
}
|
|
52
|
-
/* istanbul ignore if */ if (rawInput == null || typeof rawInput !== 'object' || Array.isArray(rawInput)) {
|
|
53
|
-
throw new TRPCError({
|
|
54
|
-
code: 'BAD_REQUEST',
|
|
55
|
-
message: '"input" needs to be an object when doing a batch call'
|
|
56
|
-
});
|
|
57
|
-
}
|
|
58
|
-
const rawValue = rawInput[info.batch];
|
|
59
|
-
return deserializeInputValue(rawValue, transformer);
|
|
60
|
-
}
|
|
61
|
-
});
|
|
6
|
+
const nodeHTTPJSONContentTypeHandler = createNodeHTTPContentTypeHandler({
|
|
7
|
+
isMatch (opts) {
|
|
8
|
+
return !!opts.req.headers['content-type']?.startsWith('application/json');
|
|
9
|
+
},
|
|
10
|
+
getBody: getPostBody,
|
|
11
|
+
getInputs: getJsonContentTypeInputs
|
|
12
|
+
});
|
|
62
13
|
|
|
63
|
-
export {
|
|
14
|
+
export { nodeHTTPJSONContentTypeHandler };
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { AnyRouter } from '../../../@trpc/server';
|
|
2
|
+
import type { BaseContentTypeHandler } from '../../../@trpc/server/http';
|
|
3
|
+
import type { NodeHTTPRequest, NodeHTTPRequestHandlerOptions, NodeHTTPResponse } from '../types';
|
|
4
|
+
export interface NodeHTTPContentTypeHandler<TRequest extends NodeHTTPRequest, TResponse extends NodeHTTPResponse> extends BaseContentTypeHandler<NodeHTTPRequestHandlerOptions<AnyRouter, TRequest, TResponse> & {
|
|
5
|
+
query: URLSearchParams;
|
|
6
|
+
}> {
|
|
7
|
+
}
|
|
8
|
+
export declare function createNodeHTTPContentTypeHandler(contentTypeHandler: NodeHTTPContentTypeHandler<NodeHTTPRequest, NodeHTTPResponse>): <TRequest extends NodeHTTPRequest, TResponse extends NodeHTTPResponse>() => NodeHTTPContentTypeHandler<TRequest, TResponse>;
|
|
9
|
+
//# sourceMappingURL=contentType.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contentType.d.ts","sourceRoot":"","sources":["../../../../src/adapters/node-http/internals/contentType.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAEvD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AACzE,OAAO,KAAK,EACV,eAAe,EACf,6BAA6B,EAC7B,gBAAgB,EACjB,MAAM,UAAU,CAAC;AAElB,MAAM,WAAW,0BAA0B,CACzC,QAAQ,SAAS,eAAe,EAChC,SAAS,SAAS,gBAAgB,CAClC,SAAQ,sBAAsB,CAC5B,6BAA6B,CAAC,SAAS,EAAE,QAAQ,EAAE,SAAS,CAAC,GAAG;IAC9D,KAAK,EAAE,eAAe,CAAC;CACxB,CACF;CAAG;AAEN,wBAAgB,gCAAgC,CAC9C,kBAAkB,EAAE,0BAA0B,CAC5C,eAAe,EACf,gBAAgB,CACjB,+EAKI,2BAA2B,QAAQ,EAAE,SAAS,CAAC,CAErD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nodeHTTPRequestHandler.d.ts","sourceRoot":"","sources":["../../../src/adapters/node-http/nodeHTTPRequestHandler.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;
|
|
1
|
+
{"version":3,"file":"nodeHTTPRequestHandler.d.ts","sourceRoot":"","sources":["../../../src/adapters/node-http/nodeHTTPRequestHandler.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAapD,OAAO,KAAK,EACV,eAAe,EACf,6BAA6B,EAC7B,gBAAgB,EACjB,MAAM,SAAS,CAAC;AAIjB,wBAAsB,sBAAsB,CAC1C,OAAO,SAAS,SAAS,EACzB,QAAQ,SAAS,eAAe,EAChC,SAAS,SAAS,gBAAgB,EAClC,IAAI,EAAE,6BAA6B,CAAC,OAAO,EAAE,QAAQ,EAAE,SAAS,CAAC,iBA2HlE"}
|
|
@@ -3,10 +3,7 @@
|
|
|
3
3
|
var resolveHTTPResponse = require('../../unstable-core-do-not-import/http/resolveHTTPResponse.js');
|
|
4
4
|
var batchStreamFormatter = require('../../unstable-core-do-not-import/http/batchStreamFormatter.js');
|
|
5
5
|
require('../../unstable-core-do-not-import/rootConfig.js');
|
|
6
|
-
var selectContentHandlerOrUnsupportedMediaType = require('../content-handlers/selectContentHandlerOrUnsupportedMediaType.js');
|
|
7
|
-
var index$1 = require('./content-type/form-data/index.js');
|
|
8
6
|
var index = require('./content-type/json/index.js');
|
|
9
|
-
var index$2 = require('./content-type/octet/index.js');
|
|
10
7
|
|
|
11
8
|
/**
|
|
12
9
|
* If you're making an adapter for tRPC and looking at this file for reference, you should import types and functions from `@trpc/server` and `@trpc/server/http`
|
|
@@ -17,6 +14,7 @@ var index$2 = require('./content-type/octet/index.js');
|
|
|
17
14
|
* import type { HTTPBaseHandlerOptions } from '@trpc/server/http'
|
|
18
15
|
* ```
|
|
19
16
|
*/ /* eslint-disable @typescript-eslint/no-non-null-assertion */ // @trpc/server
|
|
17
|
+
const defaultJSONContentTypeHandler = index.nodeHTTPJSONContentTypeHandler();
|
|
20
18
|
async function nodeHTTPRequestHandler(opts) {
|
|
21
19
|
const handleViaMiddleware = opts.middleware ?? ((_req, _res, next)=>next());
|
|
22
20
|
return handleViaMiddleware(opts.req, opts.res, async (err)=>{
|
|
@@ -30,10 +28,26 @@ async function nodeHTTPRequestHandler(opts) {
|
|
|
30
28
|
});
|
|
31
29
|
};
|
|
32
30
|
const query = opts.req.query ? new URLSearchParams(opts.req.query) : new URLSearchParams(opts.req.url.split('?')[1]);
|
|
31
|
+
const jsonContentTypeHandler = defaultJSONContentTypeHandler;
|
|
32
|
+
const contentTypeHandlers = opts.experimental_contentTypeHandlers ?? [
|
|
33
|
+
jsonContentTypeHandler
|
|
34
|
+
];
|
|
35
|
+
const contentTypeHandler = contentTypeHandlers.find((handler)=>handler.isMatch({
|
|
36
|
+
// FIXME: no typecasting should be needed here
|
|
37
|
+
...opts,
|
|
38
|
+
query
|
|
39
|
+
})) ?? // fallback to json
|
|
40
|
+
jsonContentTypeHandler;
|
|
41
|
+
const bodyResult = await contentTypeHandler.getBody({
|
|
42
|
+
// FIXME: no typecasting should be needed here
|
|
43
|
+
...opts,
|
|
44
|
+
query
|
|
45
|
+
});
|
|
33
46
|
const req = {
|
|
34
47
|
method: opts.req.method,
|
|
35
48
|
headers: opts.req.headers,
|
|
36
|
-
query
|
|
49
|
+
query,
|
|
50
|
+
body: bodyResult.ok ? bodyResult.data : undefined
|
|
37
51
|
};
|
|
38
52
|
let isStream = false;
|
|
39
53
|
let formatter;
|
|
@@ -68,31 +82,19 @@ async function nodeHTTPRequestHandler(opts) {
|
|
|
68
82
|
opts.res.flush?.();
|
|
69
83
|
}
|
|
70
84
|
};
|
|
71
|
-
const [contentTypeHandler, unsupportedMediaTypeError] = selectContentHandlerOrUnsupportedMediaType.selectContentHandlerOrUnsupportedMediaType([
|
|
72
|
-
index.getNodeHTTPJSONContentTypeHandler(),
|
|
73
|
-
index$1.getFormDataContentTypeHandler(),
|
|
74
|
-
index$2.getOctetContentTypeHandler()
|
|
75
|
-
], {
|
|
76
|
-
...opts,
|
|
77
|
-
query
|
|
78
|
-
});
|
|
79
85
|
await resolveHTTPResponse.resolveHTTPResponse({
|
|
80
86
|
...opts,
|
|
81
87
|
req,
|
|
82
88
|
createContext,
|
|
83
|
-
error:
|
|
89
|
+
error: bodyResult.ok ? null : bodyResult.error,
|
|
90
|
+
preprocessedBody: bodyResult.ok ? bodyResult.preprocessed : false,
|
|
84
91
|
onError (o) {
|
|
85
92
|
opts?.onError?.({
|
|
86
93
|
...o,
|
|
87
94
|
req: opts.req
|
|
88
95
|
});
|
|
89
96
|
},
|
|
90
|
-
|
|
91
|
-
return await contentTypeHandler?.getInputs({
|
|
92
|
-
...opts,
|
|
93
|
-
query
|
|
94
|
-
}, inputsOpts);
|
|
95
|
-
},
|
|
97
|
+
contentTypeHandler,
|
|
96
98
|
unstable_onHead,
|
|
97
99
|
unstable_onChunk
|
|
98
100
|
});
|
|
@@ -1,10 +1,7 @@
|
|
|
1
1
|
import { resolveHTTPResponse } from '../../unstable-core-do-not-import/http/resolveHTTPResponse.mjs';
|
|
2
2
|
import { getBatchStreamFormatter } from '../../unstable-core-do-not-import/http/batchStreamFormatter.mjs';
|
|
3
3
|
import '../../unstable-core-do-not-import/rootConfig.mjs';
|
|
4
|
-
import {
|
|
5
|
-
import { getFormDataContentTypeHandler } from './content-type/form-data/index.mjs';
|
|
6
|
-
import { getNodeHTTPJSONContentTypeHandler } from './content-type/json/index.mjs';
|
|
7
|
-
import { getOctetContentTypeHandler } from './content-type/octet/index.mjs';
|
|
4
|
+
import { nodeHTTPJSONContentTypeHandler } from './content-type/json/index.mjs';
|
|
8
5
|
|
|
9
6
|
/**
|
|
10
7
|
* If you're making an adapter for tRPC and looking at this file for reference, you should import types and functions from `@trpc/server` and `@trpc/server/http`
|
|
@@ -15,6 +12,7 @@ import { getOctetContentTypeHandler } from './content-type/octet/index.mjs';
|
|
|
15
12
|
* import type { HTTPBaseHandlerOptions } from '@trpc/server/http'
|
|
16
13
|
* ```
|
|
17
14
|
*/ /* eslint-disable @typescript-eslint/no-non-null-assertion */ // @trpc/server
|
|
15
|
+
const defaultJSONContentTypeHandler = nodeHTTPJSONContentTypeHandler();
|
|
18
16
|
async function nodeHTTPRequestHandler(opts) {
|
|
19
17
|
const handleViaMiddleware = opts.middleware ?? ((_req, _res, next)=>next());
|
|
20
18
|
return handleViaMiddleware(opts.req, opts.res, async (err)=>{
|
|
@@ -28,10 +26,26 @@ async function nodeHTTPRequestHandler(opts) {
|
|
|
28
26
|
});
|
|
29
27
|
};
|
|
30
28
|
const query = opts.req.query ? new URLSearchParams(opts.req.query) : new URLSearchParams(opts.req.url.split('?')[1]);
|
|
29
|
+
const jsonContentTypeHandler = defaultJSONContentTypeHandler;
|
|
30
|
+
const contentTypeHandlers = opts.experimental_contentTypeHandlers ?? [
|
|
31
|
+
jsonContentTypeHandler
|
|
32
|
+
];
|
|
33
|
+
const contentTypeHandler = contentTypeHandlers.find((handler)=>handler.isMatch({
|
|
34
|
+
// FIXME: no typecasting should be needed here
|
|
35
|
+
...opts,
|
|
36
|
+
query
|
|
37
|
+
})) ?? // fallback to json
|
|
38
|
+
jsonContentTypeHandler;
|
|
39
|
+
const bodyResult = await contentTypeHandler.getBody({
|
|
40
|
+
// FIXME: no typecasting should be needed here
|
|
41
|
+
...opts,
|
|
42
|
+
query
|
|
43
|
+
});
|
|
31
44
|
const req = {
|
|
32
45
|
method: opts.req.method,
|
|
33
46
|
headers: opts.req.headers,
|
|
34
|
-
query
|
|
47
|
+
query,
|
|
48
|
+
body: bodyResult.ok ? bodyResult.data : undefined
|
|
35
49
|
};
|
|
36
50
|
let isStream = false;
|
|
37
51
|
let formatter;
|
|
@@ -66,31 +80,19 @@ async function nodeHTTPRequestHandler(opts) {
|
|
|
66
80
|
opts.res.flush?.();
|
|
67
81
|
}
|
|
68
82
|
};
|
|
69
|
-
const [contentTypeHandler, unsupportedMediaTypeError] = selectContentHandlerOrUnsupportedMediaType([
|
|
70
|
-
getNodeHTTPJSONContentTypeHandler(),
|
|
71
|
-
getFormDataContentTypeHandler(),
|
|
72
|
-
getOctetContentTypeHandler()
|
|
73
|
-
], {
|
|
74
|
-
...opts,
|
|
75
|
-
query
|
|
76
|
-
});
|
|
77
83
|
await resolveHTTPResponse({
|
|
78
84
|
...opts,
|
|
79
85
|
req,
|
|
80
86
|
createContext,
|
|
81
|
-
error:
|
|
87
|
+
error: bodyResult.ok ? null : bodyResult.error,
|
|
88
|
+
preprocessedBody: bodyResult.ok ? bodyResult.preprocessed : false,
|
|
82
89
|
onError (o) {
|
|
83
90
|
opts?.onError?.({
|
|
84
91
|
...o,
|
|
85
92
|
req: opts.req
|
|
86
93
|
});
|
|
87
94
|
},
|
|
88
|
-
|
|
89
|
-
return await contentTypeHandler?.getInputs({
|
|
90
|
-
...opts,
|
|
91
|
-
query
|
|
92
|
-
}, inputsOpts);
|
|
93
|
-
},
|
|
95
|
+
contentTypeHandler,
|
|
94
96
|
unstable_onHead,
|
|
95
97
|
unstable_onChunk
|
|
96
98
|
});
|
|
@@ -9,9 +9,10 @@
|
|
|
9
9
|
* ```
|
|
10
10
|
*/
|
|
11
11
|
import type * as http from 'http';
|
|
12
|
-
import type { AnyRouter,
|
|
12
|
+
import type { AnyRouter, inferRouterContext } from '../../@trpc/server';
|
|
13
13
|
import type { HTTPBaseHandlerOptions, TRPCRequestInfo } from '../../@trpc/server/http';
|
|
14
14
|
import type { MaybePromise } from '../../unstable-core-do-not-import';
|
|
15
|
+
import type { NodeHTTPContentTypeHandler } from './internals/contentType';
|
|
15
16
|
interface ParsedQs {
|
|
16
17
|
[key: string]: ParsedQs | ParsedQs[] | string[] | string | undefined;
|
|
17
18
|
}
|
|
@@ -30,12 +31,22 @@ export type NodeHTTPResponse = http.ServerResponse & {
|
|
|
30
31
|
*/
|
|
31
32
|
flush?: () => void;
|
|
32
33
|
};
|
|
33
|
-
export type
|
|
34
|
+
export type NodeHTTPCreateContextOption<TRouter extends AnyRouter, TRequest, TResponse> = object extends inferRouterContext<TRouter> ? {
|
|
35
|
+
/**
|
|
36
|
+
* @link https://trpc.io/docs/v11/context
|
|
37
|
+
**/
|
|
38
|
+
createContext?: NodeHTTPCreateContextFn<TRouter, TRequest, TResponse>;
|
|
39
|
+
} : {
|
|
40
|
+
/**
|
|
41
|
+
* @link https://trpc.io/docs/v11/context
|
|
42
|
+
**/
|
|
43
|
+
createContext: NodeHTTPCreateContextFn<TRouter, TRequest, TResponse>;
|
|
44
|
+
};
|
|
34
45
|
/**
|
|
35
46
|
* @internal
|
|
36
47
|
*/
|
|
37
48
|
type ConnectMiddleware<TRequest extends NodeHTTPRequest = NodeHTTPRequest, TResponse extends NodeHTTPResponse = NodeHTTPResponse> = (req: TRequest, res: TResponse, next: (err?: any) => any) => void;
|
|
38
|
-
|
|
49
|
+
export type NodeHTTPHandlerOptions<TRouter extends AnyRouter, TRequest extends NodeHTTPRequest, TResponse extends NodeHTTPResponse> = HTTPBaseHandlerOptions<TRouter, TRequest> & NodeHTTPCreateContextOption<TRouter, TRequest, TResponse> & {
|
|
39
50
|
/**
|
|
40
51
|
* By default, http `OPTIONS` requests are not handled, and CORS headers are not returned.
|
|
41
52
|
*
|
|
@@ -52,15 +63,15 @@ interface CoreNodeHTTPHandlerOptions<TRouter extends AnyRouter, TRequest extends
|
|
|
52
63
|
* You can also use it for other needs which a connect/node.js compatible middleware can solve,
|
|
53
64
|
* though you might wish to consider an alternative solution like the Express adapter if your needs are complex.
|
|
54
65
|
*/
|
|
55
|
-
middleware?: ConnectMiddleware
|
|
66
|
+
middleware?: ConnectMiddleware;
|
|
56
67
|
maxBodySize?: number;
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
export type NodeHTTPRequestHandlerOptions<TRouter extends AnyRouter, TRequest extends NodeHTTPRequest, TResponse extends NodeHTTPResponse> =
|
|
68
|
+
experimental_contentTypeHandlers?: NodeHTTPContentTypeHandler<TRequest, TResponse>[];
|
|
69
|
+
};
|
|
70
|
+
export type NodeHTTPRequestHandlerOptions<TRouter extends AnyRouter, TRequest extends NodeHTTPRequest, TResponse extends NodeHTTPResponse> = {
|
|
60
71
|
req: TRequest;
|
|
61
72
|
res: TResponse;
|
|
62
73
|
path: string;
|
|
63
|
-
}
|
|
74
|
+
} & NodeHTTPHandlerOptions<TRouter, TRequest, TResponse>;
|
|
64
75
|
export type NodeHTTPCreateContextFnOptions<TRequest, TResponse> = {
|
|
65
76
|
req: TRequest;
|
|
66
77
|
res: TResponse;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/adapters/node-http/types.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;AACH,OAAO,KAAK,KAAK,IAAI,MAAM,MAAM,CAAC;AAElC,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/adapters/node-http/types.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;AACH,OAAO,KAAK,KAAK,IAAI,MAAM,MAAM,CAAC;AAElC,OAAO,KAAK,EAAE,SAAS,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAExE,OAAO,KAAK,EACV,sBAAsB,EACtB,eAAe,EAChB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AACtE,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,yBAAyB,CAAC;AAE1E,UAAU,QAAQ;IAChB,CAAC,GAAG,EAAE,MAAM,GAAG,QAAQ,GAAG,QAAQ,EAAE,GAAG,MAAM,EAAE,GAAG,MAAM,GAAG,SAAS,CAAC;CACtE;AAED,MAAM,MAAM,eAAe,GAAG,IAAI,CAAC,eAAe,GAAG;IACnD,KAAK,CAAC,EAAE,QAAQ,CAAC;IACjB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB,CAAC;AACF,MAAM,MAAM,gBAAgB,GAAG,IAAI,CAAC,cAAc,GAAG;IACnD;;;;;;;OAOG;IACH,KAAK,CAAC,EAAE,MAAM,IAAI,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,2BAA2B,CACrC,OAAO,SAAS,SAAS,EACzB,QAAQ,EACR,SAAS,IACP,MAAM,SAAS,kBAAkB,CAAC,OAAO,CAAC,GAC1C;IACE;;QAEI;IACJ,aAAa,CAAC,EAAE,uBAAuB,CAAC,OAAO,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;CACvE,GACD;IACE;;QAEI;IACJ,aAAa,EAAE,uBAAuB,CAAC,OAAO,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;CACtE,CAAC;AAEN;;GAEG;AACH,KAAK,iBAAiB,CACpB,QAAQ,SAAS,eAAe,GAAG,eAAe,EAClD,SAAS,SAAS,gBAAgB,GAAG,gBAAgB,IACnD,CAAC,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,KAAK,GAAG,KAAK,IAAI,CAAC;AAEtE,MAAM,MAAM,sBAAsB,CAChC,OAAO,SAAS,SAAS,EACzB,QAAQ,SAAS,eAAe,EAChC,SAAS,SAAS,gBAAgB,IAChC,sBAAsB,CAAC,OAAO,EAAE,QAAQ,CAAC,GAC3C,2BAA2B,CAAC,OAAO,EAAE,QAAQ,EAAE,SAAS,CAAC,GAAG;IAC1D;;;;;;;;;;;;;;;OAeG;IACH,UAAU,CAAC,EAAE,iBAAiB,CAAC;IAC/B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gCAAgC,CAAC,EAAE,0BAA0B,CAC3D,QAAQ,EACR,SAAS,CACV,EAAE,CAAC;CACL,CAAC;AAEJ,MAAM,MAAM,6BAA6B,CACvC,OAAO,SAAS,SAAS,EACzB,QAAQ,SAAS,eAAe,EAChC,SAAS,SAAS,gBAAgB,IAChC;IACF,GAAG,EAAE,QAAQ,CAAC;IACd,GAAG,EAAE,SAAS,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;CACd,GAAG,sBAAsB,CAAC,OAAO,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;AAEzD,MAAM,MAAM,8BAA8B,CAAC,QAAQ,EAAE,SAAS,IAAI;IAChE,GAAG,EAAE,QAAQ,CAAC;IACd,GAAG,EAAE,SAAS,CAAC;IACf,IAAI,EAAE,eAAe,CAAC;CACvB,CAAC;AACF,MAAM,MAAM,uBAAuB,CACjC,OAAO,SAAS,SAAS,EACzB,QAAQ,EACR,SAAS,IACP,CACF,IAAI,EAAE,8BAA8B,CAAC,QAAQ,EAAE,SAAS,CAAC,KACtD,YAAY,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"standalone.d.ts","sourceRoot":"","sources":["../../src/adapters/standalone.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;AAEH,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAEjD,OAAO,KAAK,EACV,8BAA8B,EAC9B,sBAAsB,EACvB,MAAM,aAAa,CAAC;AAGrB,MAAM,MAAM,wBAAwB,CAAC,OAAO,SAAS,SAAS,IAC5D,sBAAsB,CAAC,OAAO,EAAE,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;AAE7E,MAAM,MAAM,wBAAwB,GAAG,8BAA8B,CACnE,IAAI,CAAC,eAAe,EACpB,IAAI,CAAC,cAAc,CACpB,CAAC;AAEF,wBAAgB,iBAAiB,CAAC,OAAO,SAAS,SAAS,EACzD,IAAI,EAAE,wBAAwB,CAAC,OAAO,CAAC,SAEpB,KAAK,eAAe,OAAO,KAAK,cAAc,
|
|
1
|
+
{"version":3,"file":"standalone.d.ts","sourceRoot":"","sources":["../../src/adapters/standalone.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;AAEH,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAEjD,OAAO,KAAK,EACV,8BAA8B,EAC9B,sBAAsB,EACvB,MAAM,aAAa,CAAC;AAGrB,MAAM,MAAM,wBAAwB,CAAC,OAAO,SAAS,SAAS,IAC5D,sBAAsB,CAAC,OAAO,EAAE,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;AAE7E,MAAM,MAAM,wBAAwB,GAAG,8BAA8B,CACnE,IAAI,CAAC,eAAe,EACpB,IAAI,CAAC,cAAc,CACpB,CAAC;AAEF,wBAAgB,iBAAiB,CAAC,OAAO,SAAS,SAAS,EACzD,IAAI,EAAE,wBAAwB,CAAC,OAAO,CAAC,SAEpB,KAAK,eAAe,OAAO,KAAK,cAAc,mBAelE;AAED,wBAAgB,gBAAgB,CAAC,OAAO,SAAS,SAAS,EACxD,IAAI,EAAE,wBAAwB,CAAC,OAAO,CAAC,wEAIxC"}
|
package/dist/adapters/ws.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
2
|
import type { IncomingMessage } from 'http';
|
|
3
3
|
import type ws from 'ws';
|
|
4
|
-
import type { AnyRouter,
|
|
4
|
+
import type { AnyRouter, inferRouterContext } from '../@trpc/server';
|
|
5
5
|
import type { BaseHandlerOptions } from '../@trpc/server/http';
|
|
6
6
|
import type { MaybePromise } from '../unstable-core-do-not-import';
|
|
7
7
|
import type { NodeHTTPCreateContextFnOptions } from './node-http';
|
|
@@ -13,7 +13,17 @@ export type CreateWSSContextFnOptions = Omit<NodeHTTPCreateContextFnOptions<Inco
|
|
|
13
13
|
* @public
|
|
14
14
|
*/
|
|
15
15
|
export type CreateWSSContextFn<TRouter extends AnyRouter> = (opts: CreateWSSContextFnOptions) => MaybePromise<inferRouterContext<TRouter>>;
|
|
16
|
-
export type WSConnectionHandlerOptions<TRouter extends AnyRouter> = BaseHandlerOptions<TRouter, IncomingMessage> &
|
|
16
|
+
export type WSConnectionHandlerOptions<TRouter extends AnyRouter> = BaseHandlerOptions<TRouter, IncomingMessage> & (object extends inferRouterContext<TRouter> ? {
|
|
17
|
+
/**
|
|
18
|
+
* @link https://trpc.io/docs/v11/context
|
|
19
|
+
**/
|
|
20
|
+
createContext?: CreateWSSContextFn<TRouter>;
|
|
21
|
+
} : {
|
|
22
|
+
/**
|
|
23
|
+
* @link https://trpc.io/docs/v11/context
|
|
24
|
+
**/
|
|
25
|
+
createContext: CreateWSSContextFn<TRouter>;
|
|
26
|
+
});
|
|
17
27
|
/**
|
|
18
28
|
* Web socket server handler
|
|
19
29
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ws.d.ts","sourceRoot":"","sources":["../../src/adapters/ws.ts"],"names":[],"mappings":";AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,MAAM,CAAC;AAC5C,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"ws.d.ts","sourceRoot":"","sources":["../../src/adapters/ws.ts"],"names":[],"mappings":";AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,MAAM,CAAC;AAC5C,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,EAAE,SAAS,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAQrE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAY/D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,aAAa,CAAC;AAQlE;;GAEG;AACH,MAAM,MAAM,yBAAyB,GAAG,IAAI,CAC1C,8BAA8B,CAAC,eAAe,EAAE,EAAE,CAAC,SAAS,CAAC,EAC7D,MAAM,CACP,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,kBAAkB,CAAC,OAAO,SAAS,SAAS,IAAI,CAC1D,IAAI,EAAE,yBAAyB,KAC5B,YAAY,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC;AAE/C,MAAM,MAAM,0BAA0B,CAAC,OAAO,SAAS,SAAS,IAC9D,kBAAkB,CAAC,OAAO,EAAE,eAAe,CAAC,GAC1C,CAAC,MAAM,SAAS,kBAAkB,CAAC,OAAO,CAAC,GACvC;IACE;;QAEI;IACJ,aAAa,CAAC,EAAE,kBAAkB,CAAC,OAAO,CAAC,CAAC;CAC7C,GACD;IACE;;QAEI;IACJ,aAAa,EAAE,kBAAkB,CAAC,OAAO,CAAC,CAAC;CAC5C,CAAC,CAAC;AAEX;;GAEG;AACH,MAAM,MAAM,iBAAiB,CAAC,OAAO,SAAS,SAAS,IACrD,0BAA0B,CAAC,OAAO,CAAC,GAAG;IACpC,GAAG,EAAE,EAAE,CAAC,eAAe,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEJ,wBAAgB,sBAAsB,CAAC,OAAO,SAAS,SAAS,EAC9D,IAAI,EAAE,0BAA0B,CAAC,OAAO,CAAC,YAKnB,YAAY,OAAO,eAAe,mBAoPzD;AAED,wBAAgB,eAAe,CAAC,OAAO,SAAS,SAAS,EACvD,IAAI,EAAE,iBAAiB,CAAC,OAAO,CAAC;;EA2BjC"}
|