@trpc/server 11.0.0-next-beta.216 → 11.0.0-next-beta.218
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 +7 -0
- package/dist/@trpc/server/http.d.ts.map +1 -0
- package/dist/{@trpc-server.d.ts → @trpc/server/index.d.ts} +4 -4
- package/dist/@trpc/server/index.d.ts.map +1 -0
- package/dist/@trpc/server/rpc.d.ts +3 -0
- package/dist/@trpc/server/rpc.d.ts.map +1 -0
- package/dist/adapters/aws-lambda/index.d.ts +1 -2
- package/dist/adapters/aws-lambda/index.d.ts.map +1 -1
- package/dist/adapters/aws-lambda/index.js +6 -5
- package/dist/adapters/aws-lambda/index.mjs +4 -3
- package/dist/adapters/aws-lambda/utils.d.ts +2 -3
- package/dist/adapters/aws-lambda/utils.d.ts.map +1 -1
- package/dist/adapters/aws-lambda/utils.js +5 -4
- package/dist/adapters/aws-lambda/utils.mjs +3 -2
- package/dist/adapters/express.d.ts +1 -2
- package/dist/adapters/express.d.ts.map +1 -1
- package/dist/adapters/fastify/fastifyRequestHandler.d.ts +2 -2
- package/dist/adapters/fastify/fastifyRequestHandler.d.ts.map +1 -1
- package/dist/adapters/fastify/fastifyRequestHandler.js +6 -3
- package/dist/adapters/fastify/fastifyRequestHandler.mjs +4 -1
- package/dist/adapters/fastify/fastifyTRPCPlugin.d.ts +1 -2
- package/dist/adapters/fastify/fastifyTRPCPlugin.d.ts.map +1 -1
- package/dist/adapters/fastify/fastifyTRPCPlugin.js +0 -1
- package/dist/adapters/fastify/fastifyTRPCPlugin.mjs +0 -1
- package/dist/adapters/fetch/fetchRequestHandler.d.ts +1 -2
- package/dist/adapters/fetch/fetchRequestHandler.d.ts.map +1 -1
- package/dist/adapters/fetch/fetchRequestHandler.js +6 -4
- package/dist/adapters/fetch/fetchRequestHandler.mjs +4 -2
- package/dist/adapters/fetch/types.d.ts +2 -3
- package/dist/adapters/fetch/types.d.ts.map +1 -1
- package/dist/adapters/next.d.ts +4 -2
- package/dist/adapters/next.d.ts.map +1 -1
- package/dist/adapters/next.js +6 -4
- package/dist/adapters/next.mjs +4 -2
- package/dist/adapters/node-http/content-type/json/getPostBody.d.ts +1 -1
- package/dist/adapters/node-http/content-type/json/getPostBody.d.ts.map +1 -1
- package/dist/adapters/node-http/content-type/json/getPostBody.js +4 -2
- package/dist/adapters/node-http/content-type/json/getPostBody.mjs +3 -1
- package/dist/adapters/node-http/content-type/json/index.js +4 -2
- package/dist/adapters/node-http/content-type/json/index.mjs +3 -1
- package/dist/adapters/node-http/internals/contentType.d.ts +2 -2
- package/dist/adapters/node-http/nodeHTTPRequestHandler.d.ts +1 -2
- package/dist/adapters/node-http/nodeHTTPRequestHandler.d.ts.map +1 -1
- package/dist/adapters/node-http/nodeHTTPRequestHandler.js +6 -4
- package/dist/adapters/node-http/nodeHTTPRequestHandler.mjs +4 -2
- package/dist/adapters/node-http/types.d.ts +3 -4
- package/dist/adapters/node-http/types.d.ts.map +1 -1
- package/dist/adapters/standalone.d.ts +1 -2
- 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 +3 -3
- package/dist/adapters/ws.d.ts.map +1 -1
- package/dist/adapters/ws.js +30 -25
- package/dist/adapters/ws.mjs +8 -3
- package/dist/bundle-analysis.json +416 -75
- package/dist/http.d.ts +1 -1
- package/dist/http.js +11 -7
- package/dist/http.mjs +6 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +18 -41
- package/dist/index.mjs +8 -1
- package/dist/observable/index.d.ts +5 -0
- package/dist/observable/index.d.ts.map +1 -0
- package/dist/observable/index.js +13 -0
- package/dist/observable/index.mjs +2 -0
- package/dist/observable/observable.d.ts +13 -0
- package/dist/observable/observable.d.ts.map +1 -0
- package/dist/observable/observable.js +126 -0
- package/dist/observable/observable.mjs +122 -0
- package/dist/observable/operators.d.ts +8 -0
- package/dist/observable/operators.d.ts.map +1 -0
- package/dist/observable/operators.js +103 -0
- package/dist/observable/operators.mjs +99 -0
- package/dist/observable/types.d.ts +26 -0
- package/dist/observable/types.d.ts.map +1 -0
- package/dist/rpc.d.ts +1 -1
- package/dist/rpc.d.ts.map +1 -1
- package/dist/rpc.js +6 -7
- package/dist/rpc.mjs +3 -1
- package/dist/shared.d.ts +1 -1
- package/dist/shared.js +6 -9
- package/dist/shared.mjs +4 -1
- package/dist/unstable-core-do-not-import/TRPCInferrable.d.ts +6 -0
- package/dist/unstable-core-do-not-import/TRPCInferrable.d.ts.map +1 -0
- package/dist/unstable-core-do-not-import/createProxy.d.ts +19 -0
- package/dist/unstable-core-do-not-import/createProxy.d.ts.map +1 -0
- package/dist/unstable-core-do-not-import/createProxy.js +52 -0
- package/dist/unstable-core-do-not-import/createProxy.mjs +49 -0
- package/dist/unstable-core-do-not-import/error/TRPCError.d.ts +13 -0
- package/dist/unstable-core-do-not-import/error/TRPCError.d.ts.map +1 -0
- package/dist/unstable-core-do-not-import/error/TRPCError.js +67 -0
- package/dist/unstable-core-do-not-import/error/TRPCError.mjs +63 -0
- package/dist/unstable-core-do-not-import/error/formatter.d.ts +33 -0
- package/dist/unstable-core-do-not-import/error/formatter.d.ts.map +1 -0
- package/dist/unstable-core-do-not-import/error/formatter.js +7 -0
- package/dist/unstable-core-do-not-import/error/formatter.mjs +5 -0
- package/dist/unstable-core-do-not-import/error/getErrorShape.d.ts +15 -0
- package/dist/unstable-core-do-not-import/error/getErrorShape.d.ts.map +1 -0
- package/dist/unstable-core-do-not-import/error/getErrorShape.js +31 -0
- package/dist/unstable-core-do-not-import/error/getErrorShape.mjs +29 -0
- package/dist/unstable-core-do-not-import/http/batchStreamFormatter.d.ts +24 -0
- package/dist/unstable-core-do-not-import/http/batchStreamFormatter.d.ts.map +1 -0
- package/dist/unstable-core-do-not-import/http/batchStreamFormatter.js +32 -0
- package/dist/unstable-core-do-not-import/http/batchStreamFormatter.mjs +30 -0
- package/dist/unstable-core-do-not-import/http/contentType.d.ts +29 -0
- package/dist/unstable-core-do-not-import/http/contentType.d.ts.map +1 -0
- 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/getHTTPStatusCode.d.ts +5 -0
- package/dist/unstable-core-do-not-import/http/getHTTPStatusCode.d.ts.map +1 -0
- package/dist/unstable-core-do-not-import/http/getHTTPStatusCode.js +51 -0
- package/dist/unstable-core-do-not-import/http/getHTTPStatusCode.mjs +48 -0
- package/dist/unstable-core-do-not-import/http/index.d.ts +7 -0
- package/dist/unstable-core-do-not-import/http/index.d.ts.map +1 -0
- package/dist/unstable-core-do-not-import/http/resolveHTTPResponse.d.ts +51 -0
- package/dist/unstable-core-do-not-import/http/resolveHTTPResponse.d.ts.map +1 -0
- package/dist/unstable-core-do-not-import/http/resolveHTTPResponse.js +295 -0
- package/dist/unstable-core-do-not-import/http/resolveHTTPResponse.mjs +293 -0
- package/dist/unstable-core-do-not-import/http/types.d.ts +96 -0
- package/dist/unstable-core-do-not-import/http/types.d.ts.map +1 -0
- package/dist/unstable-core-do-not-import/index.d.ts +37 -0
- package/dist/unstable-core-do-not-import/index.d.ts.map +1 -0
- package/dist/unstable-core-do-not-import/index.js +48 -0
- package/dist/unstable-core-do-not-import/index.mjs +16 -0
- package/dist/unstable-core-do-not-import/initTRPC.d.ts +96 -0
- package/dist/unstable-core-do-not-import/initTRPC.d.ts.map +1 -0
- package/dist/unstable-core-do-not-import/initTRPC.js +95 -0
- package/dist/unstable-core-do-not-import/initTRPC.mjs +93 -0
- package/dist/unstable-core-do-not-import/middleware.d.ts +105 -0
- package/dist/unstable-core-do-not-import/middleware.d.ts.map +1 -0
- package/dist/unstable-core-do-not-import/middleware.js +95 -0
- package/dist/unstable-core-do-not-import/middleware.mjs +89 -0
- package/dist/unstable-core-do-not-import/parser.d.ts +30 -0
- package/dist/unstable-core-do-not-import/parser.d.ts.map +1 -0
- package/dist/unstable-core-do-not-import/parser.js +37 -0
- package/dist/unstable-core-do-not-import/parser.mjs +35 -0
- package/dist/unstable-core-do-not-import/procedure.d.ts +72 -0
- package/dist/unstable-core-do-not-import/procedure.d.ts.map +1 -0
- package/dist/unstable-core-do-not-import/procedure.js +9 -0
- package/dist/unstable-core-do-not-import/procedure.mjs +7 -0
- package/dist/unstable-core-do-not-import/procedureBuilder.d.ts +101 -0
- package/dist/unstable-core-do-not-import/procedureBuilder.d.ts.map +1 -0
- package/dist/unstable-core-do-not-import/procedureBuilder.js +176 -0
- package/dist/unstable-core-do-not-import/procedureBuilder.mjs +173 -0
- package/dist/unstable-core-do-not-import/rootConfig.d.ts +75 -0
- package/dist/unstable-core-do-not-import/rootConfig.d.ts.map +1 -0
- package/dist/unstable-core-do-not-import/rootConfig.js +8 -0
- package/dist/unstable-core-do-not-import/rootConfig.mjs +6 -0
- package/dist/unstable-core-do-not-import/router.d.ts +85 -0
- package/dist/unstable-core-do-not-import/router.d.ts.map +1 -0
- package/dist/unstable-core-do-not-import/router.js +156 -0
- package/dist/unstable-core-do-not-import/router.mjs +151 -0
- package/dist/unstable-core-do-not-import/rpc/codes.d.ts +51 -0
- package/dist/unstable-core-do-not-import/rpc/codes.d.ts.map +1 -0
- package/dist/unstable-core-do-not-import/rpc/codes.js +38 -0
- package/dist/unstable-core-do-not-import/rpc/codes.mjs +35 -0
- package/dist/unstable-core-do-not-import/rpc/envelopes.d.ts +97 -0
- package/dist/unstable-core-do-not-import/rpc/envelopes.d.ts.map +1 -0
- package/dist/unstable-core-do-not-import/rpc/index.d.ts +5 -0
- package/dist/unstable-core-do-not-import/rpc/index.d.ts.map +1 -0
- package/dist/unstable-core-do-not-import/rpc/parseTRPCMessage.d.ts +5 -0
- package/dist/unstable-core-do-not-import/rpc/parseTRPCMessage.d.ts.map +1 -0
- package/dist/unstable-core-do-not-import/rpc/parseTRPCMessage.js +59 -0
- package/dist/unstable-core-do-not-import/rpc/parseTRPCMessage.mjs +57 -0
- package/dist/unstable-core-do-not-import/serialize.d.ts +62 -0
- package/dist/unstable-core-do-not-import/serialize.d.ts.map +1 -0
- package/dist/unstable-core-do-not-import/transformer.d.ts +107 -0
- package/dist/unstable-core-do-not-import/transformer.d.ts.map +1 -0
- package/dist/unstable-core-do-not-import/transformer.js +107 -0
- package/dist/unstable-core-do-not-import/transformer.mjs +102 -0
- package/dist/unstable-core-do-not-import/types.d.ts +98 -0
- package/dist/unstable-core-do-not-import/types.d.ts.map +1 -0
- package/dist/unstable-core-do-not-import/utils.d.ts +27 -0
- package/dist/unstable-core-do-not-import/utils.d.ts.map +1 -0
- package/dist/unstable-core-do-not-import/utils.js +44 -0
- package/dist/unstable-core-do-not-import/utils.mjs +39 -0
- package/package.json +11 -8
- package/src/@trpc/server/http.ts +26 -0
- package/src/{@trpc-server.ts → @trpc/server/index.ts} +3 -3
- package/src/@trpc/server/rpc.ts +26 -0
- package/src/adapters/aws-lambda/index.ts +4 -5
- package/src/adapters/aws-lambda/utils.ts +3 -4
- package/src/adapters/express.ts +1 -3
- package/src/adapters/fastify/fastifyRequestHandler.ts +6 -4
- package/src/adapters/fastify/fastifyTRPCPlugin.ts +1 -2
- package/src/adapters/fetch/fetchRequestHandler.ts +6 -4
- package/src/adapters/fetch/types.ts +2 -3
- package/src/adapters/next.ts +6 -3
- package/src/adapters/node-http/content-type/form-data/index.ts +1 -1
- package/src/adapters/node-http/content-type/json/getPostBody.ts +2 -2
- package/src/adapters/node-http/content-type/json/index.ts +1 -1
- package/src/adapters/node-http/internals/contentType.ts +2 -2
- package/src/adapters/node-http/nodeHTTPRequestHandler.ts +6 -4
- package/src/adapters/node-http/types.ts +4 -5
- package/src/adapters/standalone.ts +2 -2
- package/src/adapters/ws.ts +15 -14
- package/src/http.ts +1 -1
- package/src/index.ts +1 -1
- package/src/observable/index.ts +10 -0
- package/src/observable/observable.ts +158 -0
- package/src/observable/operators.ts +119 -0
- package/src/observable/types.ts +76 -0
- package/src/rpc.ts +1 -2
- package/src/shared.ts +1 -1
- package/src/unstable-core-do-not-import/TRPCInferrable.ts +9 -0
- package/src/unstable-core-do-not-import/createProxy.ts +59 -0
- package/src/unstable-core-do-not-import/error/TRPCError.ts +82 -0
- package/src/unstable-core-do-not-import/error/formatter.ts +51 -0
- package/src/unstable-core-do-not-import/error/getErrorShape.ts +36 -0
- package/src/unstable-core-do-not-import/http/batchStreamFormatter.ts +29 -0
- package/src/unstable-core-do-not-import/http/contentType.ts +99 -0
- package/src/unstable-core-do-not-import/http/getHTTPStatusCode.ts +57 -0
- package/src/unstable-core-do-not-import/http/index.ts +23 -0
- package/src/unstable-core-do-not-import/http/resolveHTTPResponse.ts +458 -0
- package/src/unstable-core-do-not-import/http/types.ts +111 -0
- package/src/unstable-core-do-not-import/index.ts +110 -0
- package/src/unstable-core-do-not-import/initTRPC.ts +206 -0
- package/src/unstable-core-do-not-import/middleware.ts +233 -0
- package/src/unstable-core-do-not-import/parser.ts +94 -0
- package/src/unstable-core-do-not-import/procedure.ts +108 -0
- package/src/unstable-core-do-not-import/procedureBuilder.ts +458 -0
- package/src/unstable-core-do-not-import/rootConfig.ts +90 -0
- package/src/unstable-core-do-not-import/router.ts +370 -0
- package/src/unstable-core-do-not-import/rpc/codes.ts +44 -0
- package/src/unstable-core-do-not-import/rpc/envelopes.ts +136 -0
- package/src/unstable-core-do-not-import/rpc/index.ts +21 -0
- package/src/unstable-core-do-not-import/rpc/parseTRPCMessage.ts +85 -0
- package/src/unstable-core-do-not-import/serialize.ts +122 -0
- package/src/unstable-core-do-not-import/transformer.ts +202 -0
- package/src/unstable-core-do-not-import/types.ts +151 -0
- package/src/unstable-core-do-not-import/utils.ts +59 -0
- package/unstable-core-do-not-import/index.d.ts +1 -0
- package/unstable-core-do-not-import/index.js +1 -0
- package/dist/@trpc-core-unstable-do-not-import-this-please.d.ts +0 -9
- package/dist/@trpc-core-unstable-do-not-import-this-please.d.ts.map +0 -1
- package/dist/@trpc-server/http.d.ts +0 -2
- package/dist/@trpc-server/http.d.ts.map +0 -1
- package/dist/@trpc-server.d.ts.map +0 -1
- package/dist/observable.d.ts +0 -2
- package/dist/observable.d.ts.map +0 -1
- package/dist/observable.js +0 -12
- package/dist/observable.mjs +0 -1
- package/src/@trpc-core-unstable-do-not-import-this-please.ts +0 -9
- package/src/@trpc-server/http.ts +0 -2
- package/src/observable.ts +0 -1
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var createProxy = require('./createProxy.js');
|
|
4
|
+
var formatter = require('./error/formatter.js');
|
|
5
|
+
var middleware = require('./middleware.js');
|
|
6
|
+
var procedureBuilder = require('./procedureBuilder.js');
|
|
7
|
+
var rootConfig = require('./rootConfig.js');
|
|
8
|
+
var router = require('./router.js');
|
|
9
|
+
var transformer = require('./transformer.js');
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* TODO: This can be improved:
|
|
13
|
+
* - We should be able to chain `.meta()`/`.context()` only once
|
|
14
|
+
* - Simplify typings
|
|
15
|
+
* - Doesn't need to be a class but it doesn't really hurt either
|
|
16
|
+
*/ class TRPCBuilder {
|
|
17
|
+
/**
|
|
18
|
+
* Add a context shape as a generic to the root object
|
|
19
|
+
* @link https://trpc.io/docs/v11/server/context
|
|
20
|
+
*/ context() {
|
|
21
|
+
return new TRPCBuilder();
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Add a meta shape as a generic to the root object
|
|
25
|
+
* @link https://trpc.io/docs/v11/quickstart
|
|
26
|
+
*/ meta() {
|
|
27
|
+
return new TRPCBuilder();
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Create the root object
|
|
31
|
+
* @link https://trpc.io/docs/v11/server/routers#initialize-trpc
|
|
32
|
+
*/ create(options) {
|
|
33
|
+
return createTRPCInner()(options);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Builder to initialize the tRPC root object - use this exactly once per backend
|
|
38
|
+
* @link https://trpc.io/docs/v11/quickstart
|
|
39
|
+
*/ const initTRPC = new TRPCBuilder();
|
|
40
|
+
function createTRPCInner() {
|
|
41
|
+
return function initTRPCInner(runtime) {
|
|
42
|
+
const errorFormatter = runtime?.errorFormatter ?? formatter.defaultFormatter;
|
|
43
|
+
const transformer$1 = transformer.getDataTransformer(runtime?.transformer ?? transformer.defaultTransformer);
|
|
44
|
+
const config = {
|
|
45
|
+
transformer: transformer$1,
|
|
46
|
+
isDev: runtime?.isDev ?? // eslint-disable-next-line @typescript-eslint/dot-notation
|
|
47
|
+
globalThis.process?.env?.['NODE_ENV'] !== 'production',
|
|
48
|
+
allowOutsideOfServer: runtime?.allowOutsideOfServer ?? false,
|
|
49
|
+
errorFormatter,
|
|
50
|
+
isServer: runtime?.isServer ?? rootConfig.isServerDefault,
|
|
51
|
+
/**
|
|
52
|
+
* @internal
|
|
53
|
+
*/ $types: createProxy.createFlatProxy((key)=>{
|
|
54
|
+
throw new Error(`Tried to access "$types.${key}" which is not available at runtime`);
|
|
55
|
+
})
|
|
56
|
+
};
|
|
57
|
+
{
|
|
58
|
+
// Server check
|
|
59
|
+
const isServer = runtime?.isServer ?? rootConfig.isServerDefault;
|
|
60
|
+
if (!isServer && runtime?.allowOutsideOfServer !== true) {
|
|
61
|
+
throw new Error(`You're trying to use @trpc/server in a non-server environment. This is not supported by default.`);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
return {
|
|
65
|
+
/**
|
|
66
|
+
* These are just types, they can't be used
|
|
67
|
+
* @internal
|
|
68
|
+
*/ _config: config,
|
|
69
|
+
/**
|
|
70
|
+
* Builder object for creating procedures
|
|
71
|
+
* @link https://trpc.io/docs/v11/server/procedures
|
|
72
|
+
*/ procedure: procedureBuilder.createBuilder({
|
|
73
|
+
meta: runtime?.defaultMeta
|
|
74
|
+
}),
|
|
75
|
+
/**
|
|
76
|
+
* Create reusable middlewares
|
|
77
|
+
* @link https://trpc.io/docs/v11/server/middlewares
|
|
78
|
+
*/ middleware: middleware.createMiddlewareFactory(),
|
|
79
|
+
/**
|
|
80
|
+
* Create a router
|
|
81
|
+
* @link https://trpc.io/docs/v11/server/routers
|
|
82
|
+
*/ router: router.createRouterFactory(config),
|
|
83
|
+
/**
|
|
84
|
+
* Merge Routers
|
|
85
|
+
* @link https://trpc.io/docs/v11/server/merging-routers
|
|
86
|
+
*/ mergeRouters: router.mergeRouters,
|
|
87
|
+
/**
|
|
88
|
+
* Create a server-side caller for a router
|
|
89
|
+
* @link https://trpc.io/docs/v11/server/server-side-calls
|
|
90
|
+
*/ createCallerFactory: router.createCallerFactory()
|
|
91
|
+
};
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
exports.initTRPC = initTRPC;
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import { createFlatProxy } from './createProxy.mjs';
|
|
2
|
+
import { defaultFormatter } from './error/formatter.mjs';
|
|
3
|
+
import { createMiddlewareFactory } from './middleware.mjs';
|
|
4
|
+
import { createBuilder } from './procedureBuilder.mjs';
|
|
5
|
+
import { isServerDefault } from './rootConfig.mjs';
|
|
6
|
+
import { createRouterFactory, mergeRouters, createCallerFactory } from './router.mjs';
|
|
7
|
+
import { getDataTransformer, defaultTransformer } from './transformer.mjs';
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* TODO: This can be improved:
|
|
11
|
+
* - We should be able to chain `.meta()`/`.context()` only once
|
|
12
|
+
* - Simplify typings
|
|
13
|
+
* - Doesn't need to be a class but it doesn't really hurt either
|
|
14
|
+
*/ class TRPCBuilder {
|
|
15
|
+
/**
|
|
16
|
+
* Add a context shape as a generic to the root object
|
|
17
|
+
* @link https://trpc.io/docs/v11/server/context
|
|
18
|
+
*/ context() {
|
|
19
|
+
return new TRPCBuilder();
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Add a meta shape as a generic to the root object
|
|
23
|
+
* @link https://trpc.io/docs/v11/quickstart
|
|
24
|
+
*/ meta() {
|
|
25
|
+
return new TRPCBuilder();
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Create the root object
|
|
29
|
+
* @link https://trpc.io/docs/v11/server/routers#initialize-trpc
|
|
30
|
+
*/ create(options) {
|
|
31
|
+
return createTRPCInner()(options);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Builder to initialize the tRPC root object - use this exactly once per backend
|
|
36
|
+
* @link https://trpc.io/docs/v11/quickstart
|
|
37
|
+
*/ const initTRPC = new TRPCBuilder();
|
|
38
|
+
function createTRPCInner() {
|
|
39
|
+
return function initTRPCInner(runtime) {
|
|
40
|
+
const errorFormatter = runtime?.errorFormatter ?? defaultFormatter;
|
|
41
|
+
const transformer = getDataTransformer(runtime?.transformer ?? defaultTransformer);
|
|
42
|
+
const config = {
|
|
43
|
+
transformer,
|
|
44
|
+
isDev: runtime?.isDev ?? // eslint-disable-next-line @typescript-eslint/dot-notation
|
|
45
|
+
globalThis.process?.env?.['NODE_ENV'] !== 'production',
|
|
46
|
+
allowOutsideOfServer: runtime?.allowOutsideOfServer ?? false,
|
|
47
|
+
errorFormatter,
|
|
48
|
+
isServer: runtime?.isServer ?? isServerDefault,
|
|
49
|
+
/**
|
|
50
|
+
* @internal
|
|
51
|
+
*/ $types: createFlatProxy((key)=>{
|
|
52
|
+
throw new Error(`Tried to access "$types.${key}" which is not available at runtime`);
|
|
53
|
+
})
|
|
54
|
+
};
|
|
55
|
+
{
|
|
56
|
+
// Server check
|
|
57
|
+
const isServer = runtime?.isServer ?? isServerDefault;
|
|
58
|
+
if (!isServer && runtime?.allowOutsideOfServer !== true) {
|
|
59
|
+
throw new Error(`You're trying to use @trpc/server in a non-server environment. This is not supported by default.`);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
return {
|
|
63
|
+
/**
|
|
64
|
+
* These are just types, they can't be used
|
|
65
|
+
* @internal
|
|
66
|
+
*/ _config: config,
|
|
67
|
+
/**
|
|
68
|
+
* Builder object for creating procedures
|
|
69
|
+
* @link https://trpc.io/docs/v11/server/procedures
|
|
70
|
+
*/ procedure: createBuilder({
|
|
71
|
+
meta: runtime?.defaultMeta
|
|
72
|
+
}),
|
|
73
|
+
/**
|
|
74
|
+
* Create reusable middlewares
|
|
75
|
+
* @link https://trpc.io/docs/v11/server/middlewares
|
|
76
|
+
*/ middleware: createMiddlewareFactory(),
|
|
77
|
+
/**
|
|
78
|
+
* Create a router
|
|
79
|
+
* @link https://trpc.io/docs/v11/server/routers
|
|
80
|
+
*/ router: createRouterFactory(config),
|
|
81
|
+
/**
|
|
82
|
+
* Merge Routers
|
|
83
|
+
* @link https://trpc.io/docs/v11/server/merging-routers
|
|
84
|
+
*/ mergeRouters,
|
|
85
|
+
/**
|
|
86
|
+
* Create a server-side caller for a router
|
|
87
|
+
* @link https://trpc.io/docs/v11/server/server-side-calls
|
|
88
|
+
*/ createCallerFactory: createCallerFactory()
|
|
89
|
+
};
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
export { initTRPC };
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
import { TRPCError } from './error/TRPCError';
|
|
2
|
+
import type { ParseFn } from './parser';
|
|
3
|
+
import type { ProcedureType } from './procedure';
|
|
4
|
+
import type { GetRawInputFn, Overwrite, Simplify } from './types';
|
|
5
|
+
/** @internal */
|
|
6
|
+
export declare const middlewareMarker: "middlewareMarker" & {
|
|
7
|
+
__brand: 'middlewareMarker';
|
|
8
|
+
};
|
|
9
|
+
type MiddlewareMarker = typeof middlewareMarker;
|
|
10
|
+
interface MiddlewareResultBase {
|
|
11
|
+
/**
|
|
12
|
+
* All middlewares should pass through their `next()`'s output.
|
|
13
|
+
* Requiring this marker makes sure that can't be forgotten at compile-time.
|
|
14
|
+
*/
|
|
15
|
+
readonly marker: MiddlewareMarker;
|
|
16
|
+
}
|
|
17
|
+
interface MiddlewareOKResult<_TContextOverride> extends MiddlewareResultBase {
|
|
18
|
+
ok: true;
|
|
19
|
+
data: unknown;
|
|
20
|
+
}
|
|
21
|
+
interface MiddlewareErrorResult<_TContextOverride> extends MiddlewareResultBase {
|
|
22
|
+
ok: false;
|
|
23
|
+
error: TRPCError;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* @internal
|
|
27
|
+
*/
|
|
28
|
+
export type MiddlewareResult<_TContextOverride> = MiddlewareErrorResult<_TContextOverride> | MiddlewareOKResult<_TContextOverride>;
|
|
29
|
+
/**
|
|
30
|
+
* @internal
|
|
31
|
+
*/
|
|
32
|
+
export interface MiddlewareBuilder<TContext, TMeta, TContextOverrides, TInputIn> {
|
|
33
|
+
/**
|
|
34
|
+
* Create a new builder based on the current middleware builder
|
|
35
|
+
*/
|
|
36
|
+
unstable_pipe<$ContextOverridesOut>(fn: MiddlewareFunction<TContext, TMeta, TContextOverrides, $ContextOverridesOut, TInputIn> | MiddlewareBuilder<Overwrite<TContext, TContextOverrides>, TMeta, $ContextOverridesOut, TInputIn>): MiddlewareBuilder<TContext, TMeta, Overwrite<TContextOverrides, $ContextOverridesOut>, TInputIn>;
|
|
37
|
+
/**
|
|
38
|
+
* List of middlewares within this middleware builder
|
|
39
|
+
*/
|
|
40
|
+
_middlewares: MiddlewareFunction<TContext, TMeta, TContextOverrides, object, TInputIn>[];
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* @internal
|
|
44
|
+
*/
|
|
45
|
+
export type MiddlewareFunction<TContext, TMeta, TContextOverridesIn, $ContextOverridesOut, TInputIn> = {
|
|
46
|
+
(opts: {
|
|
47
|
+
ctx: Simplify<Overwrite<TContext, TContextOverridesIn>>;
|
|
48
|
+
type: ProcedureType;
|
|
49
|
+
path: string;
|
|
50
|
+
input: TInputIn;
|
|
51
|
+
getRawInput: GetRawInputFn;
|
|
52
|
+
meta: TMeta | undefined;
|
|
53
|
+
next: {
|
|
54
|
+
(): Promise<MiddlewareResult<TContextOverridesIn>>;
|
|
55
|
+
<$ContextOverride>(opts: {
|
|
56
|
+
ctx?: $ContextOverride;
|
|
57
|
+
input?: unknown;
|
|
58
|
+
}): Promise<MiddlewareResult<$ContextOverride>>;
|
|
59
|
+
(opts: {
|
|
60
|
+
getRawInput: GetRawInputFn;
|
|
61
|
+
}): Promise<MiddlewareResult<TContextOverridesIn>>;
|
|
62
|
+
};
|
|
63
|
+
}): Promise<MiddlewareResult<$ContextOverridesOut>>;
|
|
64
|
+
_type?: string | undefined;
|
|
65
|
+
};
|
|
66
|
+
export type AnyMiddlewareFunction = MiddlewareFunction<any, any, any, any, any>;
|
|
67
|
+
export type AnyMiddlewareBuilder = MiddlewareBuilder<any, any, any, any>;
|
|
68
|
+
/**
|
|
69
|
+
* @internal
|
|
70
|
+
*/
|
|
71
|
+
export declare function createMiddlewareFactory<TContext, TMeta, TInputIn = unknown>(): <$ContextOverrides>(fn: MiddlewareFunction<TContext, TMeta, object, $ContextOverrides, TInputIn>) => MiddlewareBuilder<TContext, TMeta, $ContextOverrides, TInputIn>;
|
|
72
|
+
/**
|
|
73
|
+
* Create a standalone middleware
|
|
74
|
+
* @link https://trpc.io/docs/v11/server/middlewares#experimental-standalone-middlewares
|
|
75
|
+
*/
|
|
76
|
+
export declare const experimental_standaloneMiddleware: <TCtx extends {
|
|
77
|
+
ctx?: object | undefined;
|
|
78
|
+
meta?: object | undefined;
|
|
79
|
+
input?: unknown;
|
|
80
|
+
}>() => {
|
|
81
|
+
create: <$ContextOverrides>(fn: MiddlewareFunction<TCtx extends {
|
|
82
|
+
ctx: infer T extends object;
|
|
83
|
+
} ? T : any, TCtx extends {
|
|
84
|
+
meta: infer T_1 extends object;
|
|
85
|
+
} ? T_1 : object, object, $ContextOverrides, TCtx extends {
|
|
86
|
+
input: infer T_2;
|
|
87
|
+
} ? T_2 : unknown>) => MiddlewareBuilder<TCtx extends {
|
|
88
|
+
ctx: infer T extends object;
|
|
89
|
+
} ? T : any, TCtx extends {
|
|
90
|
+
meta: infer T_1 extends object;
|
|
91
|
+
} ? T_1 : object, $ContextOverrides, TCtx extends {
|
|
92
|
+
input: infer T_2;
|
|
93
|
+
} ? T_2 : unknown>;
|
|
94
|
+
};
|
|
95
|
+
/**
|
|
96
|
+
* @internal
|
|
97
|
+
* Please note, `trpc-openapi` uses this function.
|
|
98
|
+
*/
|
|
99
|
+
export declare function createInputMiddleware<TInput>(parse: ParseFn<TInput>): AnyMiddlewareFunction;
|
|
100
|
+
/**
|
|
101
|
+
* @internal
|
|
102
|
+
*/
|
|
103
|
+
export declare function createOutputMiddleware<TOutput>(parse: ParseFn<TOutput>): AnyMiddlewareFunction;
|
|
104
|
+
export {};
|
|
105
|
+
//# sourceMappingURL=middleware.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"middleware.d.ts","sourceRoot":"","sources":["../../src/unstable-core-do-not-import/middleware.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AACxC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAGlE,gBAAgB;AAChB,eAAO,MAAM,gBAAgB;aAClB,kBAAkB;CAC5B,CAAC;AACF,KAAK,gBAAgB,GAAG,OAAO,gBAAgB,CAAC;AAEhD,UAAU,oBAAoB;IAC5B;;;OAGG;IACH,QAAQ,CAAC,MAAM,EAAE,gBAAgB,CAAC;CACnC;AAED,UAAU,kBAAkB,CAAC,iBAAiB,CAAE,SAAQ,oBAAoB;IAC1E,EAAE,EAAE,IAAI,CAAC;IACT,IAAI,EAAE,OAAO,CAAC;CAEf;AAED,UAAU,qBAAqB,CAAC,iBAAiB,CAC/C,SAAQ,oBAAoB;IAC5B,EAAE,EAAE,KAAK,CAAC;IACV,KAAK,EAAE,SAAS,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,MAAM,gBAAgB,CAAC,iBAAiB,IAC1C,qBAAqB,CAAC,iBAAiB,CAAC,GACxC,kBAAkB,CAAC,iBAAiB,CAAC,CAAC;AAE1C;;GAEG;AACH,MAAM,WAAW,iBAAiB,CAChC,QAAQ,EACR,KAAK,EACL,iBAAiB,EACjB,QAAQ;IAER;;OAEG;IACH,aAAa,CAAC,oBAAoB,EAChC,EAAE,EACE,kBAAkB,CAChB,QAAQ,EACR,KAAK,EACL,iBAAiB,EACjB,oBAAoB,EACpB,QAAQ,CACT,GACD,iBAAiB,CACf,SAAS,CAAC,QAAQ,EAAE,iBAAiB,CAAC,EACtC,KAAK,EACL,oBAAoB,EACpB,QAAQ,CACT,GACJ,iBAAiB,CAClB,QAAQ,EACR,KAAK,EACL,SAAS,CAAC,iBAAiB,EAAE,oBAAoB,CAAC,EAClD,QAAQ,CACT,CAAC;IAEF;;OAEG;IACH,YAAY,EAAE,kBAAkB,CAC9B,QAAQ,EACR,KAAK,EACL,iBAAiB,EACjB,MAAM,EACN,QAAQ,CACT,EAAE,CAAC;CACL;AAED;;GAEG;AACH,MAAM,MAAM,kBAAkB,CAC5B,QAAQ,EACR,KAAK,EACL,mBAAmB,EACnB,oBAAoB,EACpB,QAAQ,IACN;IACF,CAAC,IAAI,EAAE;QACL,GAAG,EAAE,QAAQ,CAAC,SAAS,CAAC,QAAQ,EAAE,mBAAmB,CAAC,CAAC,CAAC;QACxD,IAAI,EAAE,aAAa,CAAC;QACpB,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,QAAQ,CAAC;QAChB,WAAW,EAAE,aAAa,CAAC;QAC3B,IAAI,EAAE,KAAK,GAAG,SAAS,CAAC;QACxB,IAAI,EAAE;YACJ,IAAI,OAAO,CAAC,gBAAgB,CAAC,mBAAmB,CAAC,CAAC,CAAC;YACnD,CAAC,gBAAgB,EAAE,IAAI,EAAE;gBACvB,GAAG,CAAC,EAAE,gBAAgB,CAAC;gBACvB,KAAK,CAAC,EAAE,OAAO,CAAC;aACjB,GAAG,OAAO,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,CAAC,CAAC;YAChD,CAAC,IAAI,EAAE;gBAAE,WAAW,EAAE,aAAa,CAAA;aAAE,GAAG,OAAO,CAC7C,gBAAgB,CAAC,mBAAmB,CAAC,CACtC,CAAC;SACH,CAAC;KACH,GAAG,OAAO,CAAC,gBAAgB,CAAC,oBAAoB,CAAC,CAAC,CAAC;IACpD,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC5B,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG,kBAAkB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AAChF,MAAM,MAAM,oBAAoB,GAAG,iBAAiB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AACzE;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,KAAK,EAAE,QAAQ,GAAG,OAAO,0KA8B1E;AAED;;;GAGG;AACH,eAAO,MAAM,iCAAiC;;;YAIlC,OAAO;;;;;;;;;;;;;;;CAQjB,CAAC;AAEH;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,yBA4BnE;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,OAAO,CAAC,yBAwBtE"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var TRPCError = require('./error/TRPCError.js');
|
|
4
|
+
var utils = require('./utils.js');
|
|
5
|
+
|
|
6
|
+
/** @internal */ const middlewareMarker = 'middlewareMarker';
|
|
7
|
+
/**
|
|
8
|
+
* @internal
|
|
9
|
+
*/ function createMiddlewareFactory() {
|
|
10
|
+
function createMiddlewareInner(middlewares) {
|
|
11
|
+
return {
|
|
12
|
+
_middlewares: middlewares,
|
|
13
|
+
unstable_pipe (middlewareBuilderOrFn) {
|
|
14
|
+
const pipedMiddleware = '_middlewares' in middlewareBuilderOrFn ? middlewareBuilderOrFn._middlewares : [
|
|
15
|
+
middlewareBuilderOrFn
|
|
16
|
+
];
|
|
17
|
+
return createMiddlewareInner([
|
|
18
|
+
...middlewares,
|
|
19
|
+
...pipedMiddleware
|
|
20
|
+
]);
|
|
21
|
+
}
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
function createMiddleware(fn) {
|
|
25
|
+
return createMiddlewareInner([
|
|
26
|
+
fn
|
|
27
|
+
]);
|
|
28
|
+
}
|
|
29
|
+
return createMiddleware;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Create a standalone middleware
|
|
33
|
+
* @link https://trpc.io/docs/v11/server/middlewares#experimental-standalone-middlewares
|
|
34
|
+
*/ const experimental_standaloneMiddleware = ()=>({
|
|
35
|
+
create: createMiddlewareFactory()
|
|
36
|
+
});
|
|
37
|
+
/**
|
|
38
|
+
* @internal
|
|
39
|
+
* Please note, `trpc-openapi` uses this function.
|
|
40
|
+
*/ function createInputMiddleware(parse) {
|
|
41
|
+
const inputMiddleware = async function inputValidatorMiddleware(opts) {
|
|
42
|
+
let parsedInput;
|
|
43
|
+
const rawInput = await opts.getRawInput();
|
|
44
|
+
try {
|
|
45
|
+
parsedInput = await parse(rawInput);
|
|
46
|
+
} catch (cause) {
|
|
47
|
+
throw new TRPCError.TRPCError({
|
|
48
|
+
code: 'BAD_REQUEST',
|
|
49
|
+
cause
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
// Multiple input parsers
|
|
53
|
+
const combinedInput = utils.isObject(opts.input) && utils.isObject(parsedInput) ? {
|
|
54
|
+
...opts.input,
|
|
55
|
+
...parsedInput
|
|
56
|
+
} : parsedInput;
|
|
57
|
+
return opts.next({
|
|
58
|
+
input: combinedInput
|
|
59
|
+
});
|
|
60
|
+
};
|
|
61
|
+
inputMiddleware._type = 'input';
|
|
62
|
+
return inputMiddleware;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* @internal
|
|
66
|
+
*/ function createOutputMiddleware(parse) {
|
|
67
|
+
const outputMiddleware = async function outputValidatorMiddleware({ next }) {
|
|
68
|
+
const result = await next();
|
|
69
|
+
if (!result.ok) {
|
|
70
|
+
// pass through failures without validating
|
|
71
|
+
return result;
|
|
72
|
+
}
|
|
73
|
+
try {
|
|
74
|
+
const data = await parse(result.data);
|
|
75
|
+
return {
|
|
76
|
+
...result,
|
|
77
|
+
data
|
|
78
|
+
};
|
|
79
|
+
} catch (cause) {
|
|
80
|
+
throw new TRPCError.TRPCError({
|
|
81
|
+
message: 'Output validation failed',
|
|
82
|
+
code: 'INTERNAL_SERVER_ERROR',
|
|
83
|
+
cause
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
};
|
|
87
|
+
outputMiddleware._type = 'output';
|
|
88
|
+
return outputMiddleware;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
exports.createInputMiddleware = createInputMiddleware;
|
|
92
|
+
exports.createMiddlewareFactory = createMiddlewareFactory;
|
|
93
|
+
exports.createOutputMiddleware = createOutputMiddleware;
|
|
94
|
+
exports.experimental_standaloneMiddleware = experimental_standaloneMiddleware;
|
|
95
|
+
exports.middlewareMarker = middlewareMarker;
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import { TRPCError } from './error/TRPCError.mjs';
|
|
2
|
+
import { isObject } from './utils.mjs';
|
|
3
|
+
|
|
4
|
+
/** @internal */ const middlewareMarker = 'middlewareMarker';
|
|
5
|
+
/**
|
|
6
|
+
* @internal
|
|
7
|
+
*/ function createMiddlewareFactory() {
|
|
8
|
+
function createMiddlewareInner(middlewares) {
|
|
9
|
+
return {
|
|
10
|
+
_middlewares: middlewares,
|
|
11
|
+
unstable_pipe (middlewareBuilderOrFn) {
|
|
12
|
+
const pipedMiddleware = '_middlewares' in middlewareBuilderOrFn ? middlewareBuilderOrFn._middlewares : [
|
|
13
|
+
middlewareBuilderOrFn
|
|
14
|
+
];
|
|
15
|
+
return createMiddlewareInner([
|
|
16
|
+
...middlewares,
|
|
17
|
+
...pipedMiddleware
|
|
18
|
+
]);
|
|
19
|
+
}
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
function createMiddleware(fn) {
|
|
23
|
+
return createMiddlewareInner([
|
|
24
|
+
fn
|
|
25
|
+
]);
|
|
26
|
+
}
|
|
27
|
+
return createMiddleware;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Create a standalone middleware
|
|
31
|
+
* @link https://trpc.io/docs/v11/server/middlewares#experimental-standalone-middlewares
|
|
32
|
+
*/ const experimental_standaloneMiddleware = ()=>({
|
|
33
|
+
create: createMiddlewareFactory()
|
|
34
|
+
});
|
|
35
|
+
/**
|
|
36
|
+
* @internal
|
|
37
|
+
* Please note, `trpc-openapi` uses this function.
|
|
38
|
+
*/ function createInputMiddleware(parse) {
|
|
39
|
+
const inputMiddleware = async function inputValidatorMiddleware(opts) {
|
|
40
|
+
let parsedInput;
|
|
41
|
+
const rawInput = await opts.getRawInput();
|
|
42
|
+
try {
|
|
43
|
+
parsedInput = await parse(rawInput);
|
|
44
|
+
} catch (cause) {
|
|
45
|
+
throw new TRPCError({
|
|
46
|
+
code: 'BAD_REQUEST',
|
|
47
|
+
cause
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
// Multiple input parsers
|
|
51
|
+
const combinedInput = isObject(opts.input) && isObject(parsedInput) ? {
|
|
52
|
+
...opts.input,
|
|
53
|
+
...parsedInput
|
|
54
|
+
} : parsedInput;
|
|
55
|
+
return opts.next({
|
|
56
|
+
input: combinedInput
|
|
57
|
+
});
|
|
58
|
+
};
|
|
59
|
+
inputMiddleware._type = 'input';
|
|
60
|
+
return inputMiddleware;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* @internal
|
|
64
|
+
*/ function createOutputMiddleware(parse) {
|
|
65
|
+
const outputMiddleware = async function outputValidatorMiddleware({ next }) {
|
|
66
|
+
const result = await next();
|
|
67
|
+
if (!result.ok) {
|
|
68
|
+
// pass through failures without validating
|
|
69
|
+
return result;
|
|
70
|
+
}
|
|
71
|
+
try {
|
|
72
|
+
const data = await parse(result.data);
|
|
73
|
+
return {
|
|
74
|
+
...result,
|
|
75
|
+
data
|
|
76
|
+
};
|
|
77
|
+
} catch (cause) {
|
|
78
|
+
throw new TRPCError({
|
|
79
|
+
message: 'Output validation failed',
|
|
80
|
+
code: 'INTERNAL_SERVER_ERROR',
|
|
81
|
+
cause
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
};
|
|
85
|
+
outputMiddleware._type = 'output';
|
|
86
|
+
return outputMiddleware;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
export { createInputMiddleware, createMiddlewareFactory, createOutputMiddleware, experimental_standaloneMiddleware, middlewareMarker };
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
export type ParserZodEsque<TInput, TParsedInput> = {
|
|
2
|
+
_input: TInput;
|
|
3
|
+
_output: TParsedInput;
|
|
4
|
+
};
|
|
5
|
+
export type ParserMyZodEsque<TInput> = {
|
|
6
|
+
parse: (input: any) => TInput;
|
|
7
|
+
};
|
|
8
|
+
export type ParserSuperstructEsque<TInput> = {
|
|
9
|
+
create: (input: unknown) => TInput;
|
|
10
|
+
};
|
|
11
|
+
export type ParserCustomValidatorEsque<TInput> = (input: unknown) => Promise<TInput> | TInput;
|
|
12
|
+
export type ParserYupEsque<TInput> = {
|
|
13
|
+
validateSync: (input: unknown) => TInput;
|
|
14
|
+
};
|
|
15
|
+
export type ParserScaleEsque<TInput> = {
|
|
16
|
+
assert(value: unknown): asserts value is TInput;
|
|
17
|
+
};
|
|
18
|
+
export type ParserWithoutInput<TInput> = ParserCustomValidatorEsque<TInput> | ParserMyZodEsque<TInput> | ParserScaleEsque<TInput> | ParserSuperstructEsque<TInput> | ParserYupEsque<TInput>;
|
|
19
|
+
export type ParserWithInputOutput<TInput, TParsedInput> = ParserZodEsque<TInput, TParsedInput>;
|
|
20
|
+
export type Parser = ParserWithInputOutput<any, any> | ParserWithoutInput<any>;
|
|
21
|
+
export type inferParser<TParser extends Parser> = TParser extends ParserWithInputOutput<infer $TIn, infer $TOut> ? {
|
|
22
|
+
in: $TIn;
|
|
23
|
+
out: $TOut;
|
|
24
|
+
} : TParser extends ParserWithoutInput<infer $InOut> ? {
|
|
25
|
+
in: $InOut;
|
|
26
|
+
out: $InOut;
|
|
27
|
+
} : never;
|
|
28
|
+
export type ParseFn<TType> = (value: unknown) => Promise<TType> | TType;
|
|
29
|
+
export declare function getParseFn<TType>(procedureParser: Parser): ParseFn<TType>;
|
|
30
|
+
//# sourceMappingURL=parser.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../src/unstable-core-do-not-import/parser.ts"],"names":[],"mappings":"AACA,MAAM,MAAM,cAAc,CAAC,MAAM,EAAE,YAAY,IAAI;IACjD,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,YAAY,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,gBAAgB,CAAC,MAAM,IAAI;IACrC,KAAK,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,MAAM,CAAC;CAC/B,CAAC;AAEF,MAAM,MAAM,sBAAsB,CAAC,MAAM,IAAI;IAC3C,MAAM,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,MAAM,CAAC;CACpC,CAAC;AAEF,MAAM,MAAM,0BAA0B,CAAC,MAAM,IAAI,CAC/C,KAAK,EAAE,OAAO,KACX,OAAO,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC;AAE9B,MAAM,MAAM,cAAc,CAAC,MAAM,IAAI;IACnC,YAAY,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,MAAM,CAAC;CAC1C,CAAC;AAEF,MAAM,MAAM,gBAAgB,CAAC,MAAM,IAAI;IACrC,MAAM,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,KAAK,IAAI,MAAM,CAAC;CACjD,CAAC;AAEF,MAAM,MAAM,kBAAkB,CAAC,MAAM,IACjC,0BAA0B,CAAC,MAAM,CAAC,GAClC,gBAAgB,CAAC,MAAM,CAAC,GACxB,gBAAgB,CAAC,MAAM,CAAC,GACxB,sBAAsB,CAAC,MAAM,CAAC,GAC9B,cAAc,CAAC,MAAM,CAAC,CAAC;AAE3B,MAAM,MAAM,qBAAqB,CAAC,MAAM,EAAE,YAAY,IAAI,cAAc,CACtE,MAAM,EACN,YAAY,CACb,CAAC;AAEF,MAAM,MAAM,MAAM,GAAG,qBAAqB,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAC;AAE/E,MAAM,MAAM,WAAW,CAAC,OAAO,SAAS,MAAM,IAC5C,OAAO,SAAS,qBAAqB,CAAC,MAAM,IAAI,EAAE,MAAM,KAAK,CAAC,GAC1D;IACE,EAAE,EAAE,IAAI,CAAC;IACT,GAAG,EAAE,KAAK,CAAC;CACZ,GACD,OAAO,SAAS,kBAAkB,CAAC,MAAM,MAAM,CAAC,GAChD;IACE,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,MAAM,CAAC;CACb,GACD,KAAK,CAAC;AAEZ,MAAM,MAAM,OAAO,CAAC,KAAK,IAAI,CAAC,KAAK,EAAE,OAAO,KAAK,OAAO,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC;AAExE,wBAAgB,UAAU,CAAC,KAAK,EAAE,eAAe,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,CAsCzE"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
// zod / @decs/typeschema
|
|
4
|
+
function getParseFn(procedureParser) {
|
|
5
|
+
const parser = procedureParser;
|
|
6
|
+
if (typeof parser === 'function') {
|
|
7
|
+
// ParserCustomValidatorEsque
|
|
8
|
+
return parser;
|
|
9
|
+
}
|
|
10
|
+
if (typeof parser.parseAsync === 'function') {
|
|
11
|
+
// ParserZodEsque
|
|
12
|
+
return parser.parseAsync.bind(parser);
|
|
13
|
+
}
|
|
14
|
+
if (typeof parser.parse === 'function') {
|
|
15
|
+
// ParserZodEsque
|
|
16
|
+
// ParserValibotEsque (<= v0.12.X)
|
|
17
|
+
return parser.parse.bind(parser);
|
|
18
|
+
}
|
|
19
|
+
if (typeof parser.validateSync === 'function') {
|
|
20
|
+
// ParserYupEsque
|
|
21
|
+
return parser.validateSync.bind(parser);
|
|
22
|
+
}
|
|
23
|
+
if (typeof parser.create === 'function') {
|
|
24
|
+
// ParserSuperstructEsque
|
|
25
|
+
return parser.create.bind(parser);
|
|
26
|
+
}
|
|
27
|
+
if (typeof parser.assert === 'function') {
|
|
28
|
+
// ParserScaleEsque
|
|
29
|
+
return (value)=>{
|
|
30
|
+
parser.assert(value);
|
|
31
|
+
return value;
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
throw new Error('Could not find a validator fn');
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
exports.getParseFn = getParseFn;
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
// zod / @decs/typeschema
|
|
2
|
+
function getParseFn(procedureParser) {
|
|
3
|
+
const parser = procedureParser;
|
|
4
|
+
if (typeof parser === 'function') {
|
|
5
|
+
// ParserCustomValidatorEsque
|
|
6
|
+
return parser;
|
|
7
|
+
}
|
|
8
|
+
if (typeof parser.parseAsync === 'function') {
|
|
9
|
+
// ParserZodEsque
|
|
10
|
+
return parser.parseAsync.bind(parser);
|
|
11
|
+
}
|
|
12
|
+
if (typeof parser.parse === 'function') {
|
|
13
|
+
// ParserZodEsque
|
|
14
|
+
// ParserValibotEsque (<= v0.12.X)
|
|
15
|
+
return parser.parse.bind(parser);
|
|
16
|
+
}
|
|
17
|
+
if (typeof parser.validateSync === 'function') {
|
|
18
|
+
// ParserYupEsque
|
|
19
|
+
return parser.validateSync.bind(parser);
|
|
20
|
+
}
|
|
21
|
+
if (typeof parser.create === 'function') {
|
|
22
|
+
// ParserSuperstructEsque
|
|
23
|
+
return parser.create.bind(parser);
|
|
24
|
+
}
|
|
25
|
+
if (typeof parser.assert === 'function') {
|
|
26
|
+
// ParserScaleEsque
|
|
27
|
+
return (value)=>{
|
|
28
|
+
parser.assert(value);
|
|
29
|
+
return value;
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
throw new Error('Could not find a validator fn');
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
export { getParseFn };
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import type { inferObservableValue } from '../observable';
|
|
2
|
+
import type { ProcedureCallOptions } from './procedureBuilder';
|
|
3
|
+
import type { Serialize } from './serialize';
|
|
4
|
+
import type { DefaultDataTransformer } from './transformer';
|
|
5
|
+
import type { inferConfig, TRPCInferrable } from './TRPCInferrable';
|
|
6
|
+
export declare const procedureTypes: readonly ["query", "mutation", "subscription"];
|
|
7
|
+
/**
|
|
8
|
+
* @public
|
|
9
|
+
*/
|
|
10
|
+
export type ProcedureType = (typeof procedureTypes)[number];
|
|
11
|
+
type ClientContext = Record<string, unknown>;
|
|
12
|
+
/**
|
|
13
|
+
* @internal
|
|
14
|
+
*/
|
|
15
|
+
export interface ProcedureOptions {
|
|
16
|
+
/**
|
|
17
|
+
* Client-side context
|
|
18
|
+
*/
|
|
19
|
+
context?: ClientContext;
|
|
20
|
+
signal?: AbortSignal;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* @internal
|
|
24
|
+
*/
|
|
25
|
+
export type ProcedureArgs<TParams extends AnyProcedure['_def']> = void extends TParams['_input_in'] ? [input?: undefined | void, opts?: ProcedureOptions] : undefined extends TParams['_input_in'] ? [input?: TParams['_input_in'] | void, opts?: ProcedureOptions] : [input: TParams['_input_in'], opts?: ProcedureOptions];
|
|
26
|
+
interface BuiltProcedureDef {
|
|
27
|
+
input: unknown;
|
|
28
|
+
output: unknown;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
*
|
|
32
|
+
* @internal
|
|
33
|
+
*/
|
|
34
|
+
export interface Procedure<TType extends ProcedureType, TDef extends BuiltProcedureDef> {
|
|
35
|
+
_def: {
|
|
36
|
+
_input_in: TDef['input'];
|
|
37
|
+
_output_out: TDef['output'];
|
|
38
|
+
procedure: true;
|
|
39
|
+
type: TType;
|
|
40
|
+
/**
|
|
41
|
+
* @internal
|
|
42
|
+
* Meta is not inferrable on individual procedures, only on the router
|
|
43
|
+
*/
|
|
44
|
+
meta: unknown;
|
|
45
|
+
};
|
|
46
|
+
/**
|
|
47
|
+
* @internal
|
|
48
|
+
*/
|
|
49
|
+
(opts: ProcedureCallOptions): Promise<unknown>;
|
|
50
|
+
}
|
|
51
|
+
export interface QueryProcedure<TDef extends BuiltProcedureDef> extends Procedure<'query', TDef> {
|
|
52
|
+
}
|
|
53
|
+
export interface MutationProcedure<TDef extends BuiltProcedureDef> extends Procedure<'mutation', TDef> {
|
|
54
|
+
}
|
|
55
|
+
export interface SubscriptionProcedure<TDef extends BuiltProcedureDef> extends Procedure<'subscription', TDef> {
|
|
56
|
+
}
|
|
57
|
+
export type AnyQueryProcedure = QueryProcedure<any>;
|
|
58
|
+
export type AnyMutationProcedure = MutationProcedure<any>;
|
|
59
|
+
export type AnySubscriptionProcedure = SubscriptionProcedure<any>;
|
|
60
|
+
export type AnyProcedure = Procedure<ProcedureType, any>;
|
|
61
|
+
/**
|
|
62
|
+
* @internal
|
|
63
|
+
*/
|
|
64
|
+
export type inferTransformedProcedureOutput<TInferrable extends TRPCInferrable, TProcedure extends AnyProcedure> = inferConfig<TInferrable>['transformer'] extends DefaultDataTransformer ? Serialize<TProcedure['_def']['_output_out']> : TProcedure['_def']['_output_out'];
|
|
65
|
+
/** @internal */
|
|
66
|
+
export type inferTransformedSubscriptionOutput<TInferrable extends TRPCInferrable, TProcedure extends AnyProcedure> = inferConfig<TInferrable>['transformer'] extends DefaultDataTransformer ? Serialize<inferObservableValue<TProcedure['_def']['_output_out']>> : inferObservableValue<TProcedure['_def']['_output_out']>;
|
|
67
|
+
export type inferHandlerInput<TProcedure extends AnyProcedure> = ProcedureArgs<inferProcedureParams<TProcedure>>;
|
|
68
|
+
export type inferProcedureInput<TProcedure extends AnyProcedure> = inferProcedureParams<TProcedure>['_input_in'];
|
|
69
|
+
export type inferProcedureParams<TProcedure> = TProcedure extends AnyProcedure ? TProcedure['_def'] : never;
|
|
70
|
+
export type inferProcedureOutput<TProcedure> = inferProcedureParams<TProcedure>['_output_out'];
|
|
71
|
+
export {};
|
|
72
|
+
//# sourceMappingURL=procedure.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"procedure.d.ts","sourceRoot":"","sources":["../../src/unstable-core-do-not-import/procedure.ts"],"names":[],"mappings":"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"}
|