@trpc/server 10.0.0-alpha.23 → 10.0.0-alpha.26
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/adapters/aws-lambda/dist/trpc-server-adapters-aws-lambda.cjs.d.ts +1 -1
- package/adapters/aws-lambda/dist/trpc-server-adapters-aws-lambda.cjs.dev.js +100 -20
- package/adapters/aws-lambda/dist/trpc-server-adapters-aws-lambda.cjs.prod.js +100 -20
- package/adapters/aws-lambda/dist/trpc-server-adapters-aws-lambda.esm.js +99 -19
- package/adapters/aws-lambda/index.d.ts +1 -0
- package/adapters/aws-lambda/index.js +1 -0
- package/adapters/lambda/dist/trpc-server-adapters-lambda.cjs.d.ts +1 -0
- package/adapters/lambda/dist/trpc-server-adapters-lambda.cjs.dev.js +25 -0
- package/adapters/lambda/dist/trpc-server-adapters-lambda.cjs.js +7 -0
- package/adapters/lambda/dist/trpc-server-adapters-lambda.cjs.prod.js +25 -0
- package/adapters/lambda/dist/trpc-server-adapters-lambda.esm.js +21 -0
- package/dist/TRPCError.d.ts.map +1 -1
- package/dist/adapters/aws-lambda/index.d.ts +14 -0
- package/dist/adapters/aws-lambda/index.d.ts.map +1 -0
- package/dist/adapters/aws-lambda/utils.d.ts +34 -0
- package/dist/adapters/aws-lambda/utils.d.ts.map +1 -0
- package/dist/adapters/express.d.ts +1 -1
- package/dist/adapters/express.d.ts.map +1 -1
- package/dist/adapters/express.js +4 -4
- package/dist/adapters/express.mjs +4 -4
- package/dist/adapters/fastify/fastifyRequestHandler.d.ts +1 -1
- package/dist/adapters/fastify/fastifyRequestHandler.d.ts.map +1 -1
- package/dist/adapters/fastify/fastifyTRPCPlugin.d.ts +1 -1
- package/dist/adapters/fastify/fastifyTRPCPlugin.d.ts.map +1 -1
- package/dist/adapters/fastify/index.js +3 -3
- package/dist/adapters/fastify/index.mjs +3 -3
- package/dist/adapters/fetch/fetchRequestHandler.d.ts +1 -1
- package/dist/adapters/fetch/fetchRequestHandler.d.ts.map +1 -1
- package/dist/adapters/fetch/index.js +3 -3
- package/dist/adapters/fetch/index.mjs +3 -3
- package/dist/adapters/fetch/types.d.ts +1 -1
- package/dist/adapters/fetch/types.d.ts.map +1 -1
- package/dist/adapters/lambda/index.d.ts +12 -0
- package/dist/adapters/lambda/index.d.ts.map +1 -0
- package/dist/adapters/next.d.ts +1 -1
- package/dist/adapters/next.d.ts.map +1 -1
- package/dist/adapters/next.js +4 -4
- package/dist/adapters/next.mjs +4 -4
- package/dist/adapters/node-http/index.js +4 -4
- package/dist/adapters/node-http/index.mjs +4 -4
- package/dist/adapters/node-http/nodeHTTPRequestHandler.d.ts +1 -1
- package/dist/adapters/node-http/nodeHTTPRequestHandler.d.ts.map +1 -1
- package/dist/adapters/node-http/types.d.ts +3 -3
- package/dist/adapters/node-http/types.d.ts.map +1 -1
- package/dist/adapters/standalone.d.ts +2 -2
- package/dist/adapters/standalone.d.ts.map +1 -1
- package/dist/adapters/standalone.js +4 -4
- package/dist/adapters/standalone.mjs +4 -4
- package/dist/adapters/ws.d.ts +3 -2
- package/dist/adapters/ws.d.ts.map +1 -1
- package/dist/adapters/ws.js +3 -8
- package/dist/adapters/ws.mjs +3 -8
- package/dist/core/index.d.ts +5 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/initTRPC.d.ts +82 -0
- package/dist/core/initTRPC.d.ts.map +1 -0
- package/dist/core/internals/__generated__/mergeRoutersGeneric.d.ts +202 -0
- package/dist/core/internals/__generated__/mergeRoutersGeneric.d.ts.map +1 -0
- package/dist/core/internals/config.d.ts +38 -0
- package/dist/core/internals/config.d.ts.map +1 -0
- package/dist/core/internals/getParseFn.d.ts +9 -0
- package/dist/core/internals/getParseFn.d.ts.map +1 -0
- package/dist/core/internals/internalProcedure.d.ts +61 -0
- package/dist/core/internals/internalProcedure.d.ts.map +1 -0
- package/dist/core/internals/mergeRouters.d.ts +3 -0
- package/dist/core/internals/mergeRouters.d.ts.map +1 -0
- package/dist/core/internals/mergeWithoutOverrides.d.ts +5 -0
- package/dist/core/internals/mergeWithoutOverrides.d.ts.map +1 -0
- package/dist/core/internals/omitPrototype.d.ts +6 -0
- package/dist/core/internals/omitPrototype.d.ts.map +1 -0
- package/dist/core/internals/procedureBuilder.d.ts +71 -0
- package/dist/core/internals/procedureBuilder.d.ts.map +1 -0
- package/dist/core/internals/utils.d.ts +44 -0
- package/dist/core/internals/utils.d.ts.map +1 -0
- package/dist/core/middleware.d.ts +78 -0
- package/dist/core/middleware.d.ts.map +1 -0
- package/dist/core/parser.d.ts +25 -0
- package/dist/core/parser.d.ts.map +1 -0
- package/dist/core/procedure.d.ts +57 -0
- package/dist/core/procedure.d.ts.map +1 -0
- package/dist/core/router.d.ts +110 -0
- package/dist/core/router.d.ts.map +1 -0
- package/dist/core/types.d.ts +17 -0
- package/dist/core/types.d.ts.map +1 -0
- package/dist/{internals → deprecated/internals}/callProcedure.d.ts +4 -1
- package/dist/deprecated/internals/callProcedure.d.ts.map +1 -0
- package/dist/{internals → deprecated/internals}/middlewares.d.ts +16 -1
- package/dist/deprecated/internals/middlewares.d.ts.map +1 -0
- package/dist/{internals → deprecated/internals}/procedure.d.ts +10 -1
- package/dist/deprecated/internals/procedure.d.ts.map +1 -0
- package/dist/deprecated/interop.d.ts +34 -0
- package/dist/deprecated/interop.d.ts.map +1 -0
- package/dist/{router.d.ts → deprecated/router.d.ts} +27 -6
- package/dist/deprecated/router.d.ts.map +1 -0
- package/dist/{envelopes-1deb2fa7.mjs → envelopes-af8c2959.mjs} +12 -1
- package/dist/{envelopes-a953b930.js → envelopes-b6dd0367.js} +11 -1
- package/dist/error/TRPCError.d.ts +11 -0
- package/dist/error/TRPCError.d.ts.map +1 -0
- package/dist/error/formatter.d.ts +33 -0
- package/dist/error/formatter.d.ts.map +1 -0
- package/dist/error/utils.d.ts +5 -0
- package/dist/error/utils.d.ts.map +1 -0
- package/dist/http/index.d.ts +1 -1
- package/dist/http/index.d.ts.map +1 -1
- package/dist/http/internals/types.d.ts +9 -7
- package/dist/http/internals/types.d.ts.map +1 -1
- package/dist/http/resolveHTTPResponse.d.ts +1 -1
- package/dist/http/resolveHTTPResponse.d.ts.map +1 -1
- package/dist/http/{responseMeta.d.ts → types.d.ts} +1 -1
- package/dist/http/types.d.ts.map +1 -0
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +686 -12
- package/dist/index.mjs +688 -16
- package/dist/internals/transformTRPCResponse.d.ts +1 -1
- package/dist/internals/transformTRPCResponse.d.ts.map +1 -1
- package/dist/internals/types.d.ts +23 -0
- package/dist/internals/types.d.ts.map +1 -0
- package/dist/{nodeHTTPRequestHandler-1cdb6383.mjs → nodeHTTPRequestHandler-5ad62229.mjs} +1 -1
- package/dist/{nodeHTTPRequestHandler-848f07b5.js → nodeHTTPRequestHandler-9ddd18f2.js} +1 -1
- package/dist/{resolveHTTPResponse-ec3dccaa.js → resolveHTTPResponse-5932d785.js} +16 -10
- package/dist/{resolveHTTPResponse-54a79e6c.mjs → resolveHTTPResponse-ccb9cfa1.mjs} +15 -9
- package/dist/rpc/envelopes.d.ts +1 -1
- package/dist/rpc/envelopes.d.ts.map +1 -1
- package/dist/rpc/index.js +1 -1
- package/dist/rpc/index.mjs +1 -1
- package/dist/rpc/internals/invert.d.ts +18 -0
- package/dist/rpc/internals/invert.d.ts.map +1 -0
- package/dist/{transformTRPCResponse-333bed6c.js → transformTRPCResponse-0c261655.js} +0 -27
- package/dist/{transformTRPCResponse-e0cba527.mjs → transformTRPCResponse-747b9a68.mjs} +1 -27
- package/dist/transformer.d.ts +14 -0
- package/dist/transformer.d.ts.map +1 -1
- package/dist/types.d.ts +9 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +11 -4
- package/src/TRPCError.ts +1 -1
- package/src/adapters/aws-lambda/index.ts +156 -0
- package/src/adapters/aws-lambda/utils.ts +91 -0
- package/src/adapters/express.ts +1 -1
- package/src/adapters/fastify/fastifyRequestHandler.ts +1 -1
- package/src/adapters/fastify/fastifyTRPCPlugin.ts +2 -2
- package/src/adapters/fetch/fetchRequestHandler.ts +1 -1
- package/src/adapters/fetch/types.ts +1 -1
- package/src/adapters/lambda/index.ts +18 -0
- package/src/adapters/next.ts +1 -1
- package/src/adapters/node-http/nodeHTTPRequestHandler.ts +3 -2
- package/src/adapters/node-http/types.ts +5 -3
- package/src/adapters/standalone.ts +1 -1
- package/src/adapters/ws.ts +5 -10
- package/src/core/index.ts +5 -0
- package/src/core/initTRPC.ts +90 -0
- package/src/core/internals/__generated__/mergeRoutersGeneric.ts +306 -0
- package/src/core/internals/config.ts +44 -0
- package/src/core/internals/getParseFn.ts +47 -0
- package/src/core/internals/internalProcedure.ts +265 -0
- package/src/core/internals/mergeRouters.ts +57 -0
- package/src/core/internals/mergeWithoutOverrides.ts +19 -0
- package/src/core/internals/omitPrototype.ts +9 -0
- package/src/core/internals/procedureBuilder.ts +100 -0
- package/src/core/internals/utils.ts +64 -0
- package/src/core/middleware.ts +93 -0
- package/src/core/parser.ts +45 -0
- package/src/core/procedure.ts +72 -0
- package/src/core/router.ts +313 -0
- package/src/core/types.ts +37 -0
- package/src/{internals → deprecated/internals}/callProcedure.ts +4 -1
- package/src/{internals → deprecated/internals}/middlewares.ts +17 -1
- package/src/{internals → deprecated/internals}/procedure.ts +19 -4
- package/src/deprecated/interop.ts +169 -0
- package/src/{router.ts → deprecated/router.ts} +49 -12
- package/src/error/TRPCError.ts +27 -0
- package/src/error/formatter.ts +51 -0
- package/src/error/utils.ts +49 -0
- package/src/http/index.ts +1 -1
- package/src/http/internals/types.ts +9 -11
- package/src/http/resolveHTTPResponse.ts +6 -11
- package/src/http/{responseMeta.ts → types.ts} +0 -0
- package/src/index.ts +2 -1
- package/src/internals/transformTRPCResponse.ts +1 -1
- package/src/internals/types.ts +24 -0
- package/src/rpc/codes.ts +1 -1
- package/src/rpc/envelopes.ts +1 -1
- package/src/rpc/internals/invert.ts +27 -0
- package/src/transformer.ts +28 -0
- package/src/types.ts +12 -0
- package/dist/http/responseMeta.d.ts.map +0 -1
- package/dist/internals/baseHandlerOptions.d.ts +0 -13
- package/dist/internals/baseHandlerOptions.d.ts.map +0 -1
- package/dist/internals/callProcedure.d.ts.map +0 -1
- package/dist/internals/middlewares.d.ts.map +0 -1
- package/dist/internals/onErrorFunction.d.ts +0 -11
- package/dist/internals/onErrorFunction.d.ts.map +0 -1
- package/dist/internals/procedure.d.ts.map +0 -1
- package/dist/router.d.ts.map +0 -1
- package/src/internals/baseHandlerOptions.ts +0 -13
- package/src/internals/onErrorFunction.ts +0 -11
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
import { getParseFnOrPassThrough } from '../core/internals/getParseFn';
|
|
2
|
+
import {
|
|
3
|
+
createInputMiddleware,
|
|
4
|
+
createInternalBuilder,
|
|
5
|
+
createOutputMiddleware,
|
|
6
|
+
} from '../core/internals/internalProcedure';
|
|
7
|
+
import { Procedure as NewProcedure } from '../core/procedure';
|
|
8
|
+
import { Router as NewRouter, createRouterFactory } from '../core/router';
|
|
9
|
+
import {
|
|
10
|
+
AnyRouter as AnyOldRouter,
|
|
11
|
+
Router as OldRouter,
|
|
12
|
+
} from '../deprecated/router';
|
|
13
|
+
import { TRPCErrorShape } from '../rpc';
|
|
14
|
+
import { CombinedDataTransformer } from '../transformer';
|
|
15
|
+
import { Procedure as OldProcedure } from './internals/procedure';
|
|
16
|
+
import { ProcedureRecord } from './router';
|
|
17
|
+
|
|
18
|
+
type AnyOldProcedure = OldProcedure<any, any, any, any, any, any, any, any>;
|
|
19
|
+
type MigrateProcedure<TProcedure extends AnyOldProcedure> =
|
|
20
|
+
TProcedure extends OldProcedure<
|
|
21
|
+
infer TInputContext,
|
|
22
|
+
infer TContext,
|
|
23
|
+
infer TMeta,
|
|
24
|
+
infer TInput,
|
|
25
|
+
infer TParsedInput,
|
|
26
|
+
infer TOutput,
|
|
27
|
+
infer _TParsedOutput,
|
|
28
|
+
infer TFinalInput
|
|
29
|
+
>
|
|
30
|
+
? NewProcedure<{
|
|
31
|
+
_ctx_in: TInputContext;
|
|
32
|
+
_ctx_out: TContext;
|
|
33
|
+
_meta: TMeta;
|
|
34
|
+
_input_in: TInput;
|
|
35
|
+
_input_out: TParsedInput;
|
|
36
|
+
_output_in: TOutput;
|
|
37
|
+
_output_out: TFinalInput;
|
|
38
|
+
}>
|
|
39
|
+
: never;
|
|
40
|
+
|
|
41
|
+
export type MigrateProcedureRecord<T extends ProcedureRecord<any>> = {
|
|
42
|
+
[K in keyof T]: MigrateProcedure<T[K]>;
|
|
43
|
+
};
|
|
44
|
+
|
|
45
|
+
export type MigrateRouter<
|
|
46
|
+
TInputContext,
|
|
47
|
+
TContext,
|
|
48
|
+
TMeta extends Record<string, any>,
|
|
49
|
+
TQueries extends ProcedureRecord<
|
|
50
|
+
TInputContext,
|
|
51
|
+
TContext,
|
|
52
|
+
any,
|
|
53
|
+
any,
|
|
54
|
+
any,
|
|
55
|
+
any,
|
|
56
|
+
any
|
|
57
|
+
>,
|
|
58
|
+
TMutations extends ProcedureRecord<
|
|
59
|
+
TInputContext,
|
|
60
|
+
TContext,
|
|
61
|
+
any,
|
|
62
|
+
any,
|
|
63
|
+
any,
|
|
64
|
+
any,
|
|
65
|
+
any
|
|
66
|
+
>,
|
|
67
|
+
TSubscriptions extends ProcedureRecord<
|
|
68
|
+
TInputContext,
|
|
69
|
+
TContext,
|
|
70
|
+
unknown,
|
|
71
|
+
unknown,
|
|
72
|
+
any,
|
|
73
|
+
unknown,
|
|
74
|
+
unknown
|
|
75
|
+
>,
|
|
76
|
+
TErrorShape extends TRPCErrorShape<number>,
|
|
77
|
+
> = NewRouter<{
|
|
78
|
+
_ctx: TInputContext;
|
|
79
|
+
_errorShape: TErrorShape;
|
|
80
|
+
_meta: TMeta;
|
|
81
|
+
errorFormatter: never;
|
|
82
|
+
mutations: MigrateProcedureRecord<TMutations>;
|
|
83
|
+
queries: MigrateProcedureRecord<TQueries>;
|
|
84
|
+
subscriptions: MigrateProcedureRecord<TSubscriptions>;
|
|
85
|
+
transformer: CombinedDataTransformer;
|
|
86
|
+
}>;
|
|
87
|
+
|
|
88
|
+
export type MigrateOldRouter<TRouter extends AnyOldRouter> =
|
|
89
|
+
TRouter extends OldRouter<
|
|
90
|
+
infer TInputContext,
|
|
91
|
+
infer TContext,
|
|
92
|
+
infer TMeta,
|
|
93
|
+
infer TQueries,
|
|
94
|
+
infer TMutations,
|
|
95
|
+
infer TSubscriptions,
|
|
96
|
+
infer TErrorShape
|
|
97
|
+
>
|
|
98
|
+
? MigrateRouter<
|
|
99
|
+
TInputContext,
|
|
100
|
+
TContext,
|
|
101
|
+
TMeta,
|
|
102
|
+
TQueries,
|
|
103
|
+
TMutations,
|
|
104
|
+
TSubscriptions,
|
|
105
|
+
TErrorShape
|
|
106
|
+
>
|
|
107
|
+
: never;
|
|
108
|
+
|
|
109
|
+
function migrateProcedure<TProcedure extends AnyOldProcedure>(
|
|
110
|
+
oldProc: TProcedure,
|
|
111
|
+
): MigrateProcedure<TProcedure> {
|
|
112
|
+
const def = oldProc._def();
|
|
113
|
+
|
|
114
|
+
const inputParser = getParseFnOrPassThrough(def.inputParser);
|
|
115
|
+
const outputParser = getParseFnOrPassThrough(def.outputParser);
|
|
116
|
+
|
|
117
|
+
const inputMiddleware = createInputMiddleware(inputParser);
|
|
118
|
+
|
|
119
|
+
const builder = createInternalBuilder({
|
|
120
|
+
input: def.inputParser,
|
|
121
|
+
middlewares: [
|
|
122
|
+
...(def.middlewares as any),
|
|
123
|
+
inputMiddleware,
|
|
124
|
+
createOutputMiddleware(outputParser),
|
|
125
|
+
],
|
|
126
|
+
meta: def.meta,
|
|
127
|
+
output: def.outputParser,
|
|
128
|
+
});
|
|
129
|
+
|
|
130
|
+
const proc = builder.resolve((opts) => def.resolver(opts as any));
|
|
131
|
+
|
|
132
|
+
return proc as any;
|
|
133
|
+
}
|
|
134
|
+
export function migrateRouter<TOldRouter extends AnyOldRouter>(
|
|
135
|
+
oldRouter: TOldRouter,
|
|
136
|
+
): MigrateOldRouter<TOldRouter> {
|
|
137
|
+
const errorFormatter = oldRouter._def.errorFormatter;
|
|
138
|
+
const transformer = oldRouter._def.transformer;
|
|
139
|
+
|
|
140
|
+
type ProcRecord = Record<string, NewProcedure<any>>;
|
|
141
|
+
|
|
142
|
+
const queries: ProcRecord = {};
|
|
143
|
+
const mutations: ProcRecord = {};
|
|
144
|
+
const subscriptions: ProcRecord = {};
|
|
145
|
+
for (const [name, procedure] of Object.entries(oldRouter._def.queries)) {
|
|
146
|
+
queries[name] = migrateProcedure(procedure as any);
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
for (const [name, procedure] of Object.entries(oldRouter._def.mutations)) {
|
|
150
|
+
mutations[name] = migrateProcedure(procedure as any);
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
for (const [name, procedure] of Object.entries(
|
|
154
|
+
oldRouter._def.subscriptions,
|
|
155
|
+
)) {
|
|
156
|
+
subscriptions[name] = migrateProcedure(procedure as any);
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
const newRouter = createRouterFactory<any>({
|
|
160
|
+
transformer,
|
|
161
|
+
errorFormatter,
|
|
162
|
+
})({
|
|
163
|
+
mutations,
|
|
164
|
+
queries,
|
|
165
|
+
subscriptions,
|
|
166
|
+
});
|
|
167
|
+
|
|
168
|
+
return newRouter as any;
|
|
169
|
+
}
|
|
@@ -1,9 +1,21 @@
|
|
|
1
1
|
/* eslint-disable @typescript-eslint/ban-types */
|
|
2
2
|
|
|
3
3
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
4
|
-
import { TRPCError } from '
|
|
5
|
-
import { assertNotBrowser } from '
|
|
6
|
-
import { getHTTPStatusCodeFromError } from '
|
|
4
|
+
import { TRPCError } from '../TRPCError';
|
|
5
|
+
import { assertNotBrowser } from '../assertNotBrowser';
|
|
6
|
+
import { getHTTPStatusCodeFromError } from '../http/internals/getHTTPStatusCode';
|
|
7
|
+
import { Observable, inferObservableValue } from '../observable';
|
|
8
|
+
import {
|
|
9
|
+
TRPCErrorShape,
|
|
10
|
+
TRPC_ERROR_CODES_BY_KEY,
|
|
11
|
+
TRPC_ERROR_CODE_KEY,
|
|
12
|
+
TRPC_ERROR_CODE_NUMBER,
|
|
13
|
+
} from '../rpc';
|
|
14
|
+
import {
|
|
15
|
+
CombinedDataTransformer,
|
|
16
|
+
DataTransformerOptions,
|
|
17
|
+
} from '../transformer';
|
|
18
|
+
import { Prefixer, ThenArg, flatten } from '../types';
|
|
7
19
|
import { MiddlewareFunction } from './internals/middlewares';
|
|
8
20
|
import {
|
|
9
21
|
CreateProcedureOptions,
|
|
@@ -15,25 +27,21 @@ import {
|
|
|
15
27
|
createProcedure,
|
|
16
28
|
inferProcedureFromOptions,
|
|
17
29
|
} from './internals/procedure';
|
|
18
|
-
import {
|
|
19
|
-
import {
|
|
20
|
-
TRPCErrorShape,
|
|
21
|
-
TRPC_ERROR_CODES_BY_KEY,
|
|
22
|
-
TRPC_ERROR_CODE_KEY,
|
|
23
|
-
TRPC_ERROR_CODE_NUMBER,
|
|
24
|
-
} from './rpc';
|
|
25
|
-
import { CombinedDataTransformer, DataTransformerOptions } from './transformer';
|
|
26
|
-
import { Prefixer, ThenArg, flatten } from './types';
|
|
30
|
+
import { MigrateRouter, migrateRouter } from './interop';
|
|
27
31
|
|
|
28
32
|
assertNotBrowser();
|
|
29
33
|
|
|
34
|
+
export type { Procedure } from './internals/procedure';
|
|
35
|
+
|
|
30
36
|
/**
|
|
31
37
|
* @public
|
|
38
|
+
* @deprecated
|
|
32
39
|
*/
|
|
33
40
|
export type ProcedureType = 'query' | 'mutation' | 'subscription';
|
|
34
41
|
|
|
35
42
|
/**
|
|
36
43
|
* @internal
|
|
44
|
+
* @deprecated
|
|
37
45
|
*/
|
|
38
46
|
export type ProcedureRecord<
|
|
39
47
|
TInputContext = any,
|
|
@@ -58,6 +66,7 @@ export type ProcedureRecord<
|
|
|
58
66
|
|
|
59
67
|
/**
|
|
60
68
|
* @public
|
|
69
|
+
* @deprecated
|
|
61
70
|
*/
|
|
62
71
|
export type inferProcedureInput<
|
|
63
72
|
TProcedure extends Procedure<any, any, any, any, any, any, any>,
|
|
@@ -69,12 +78,14 @@ export type inferProcedureInput<
|
|
|
69
78
|
|
|
70
79
|
/**
|
|
71
80
|
* @public
|
|
81
|
+
* @deprecated
|
|
72
82
|
*/
|
|
73
83
|
export type inferAsyncReturnType<TFunction extends (...args: any) => any> =
|
|
74
84
|
ThenArg<ReturnType<TFunction>>;
|
|
75
85
|
|
|
76
86
|
/**
|
|
77
87
|
* @public
|
|
88
|
+
* @deprecated
|
|
78
89
|
*/
|
|
79
90
|
export type inferProcedureOutput<
|
|
80
91
|
TProcedure extends Procedure<any, any, any, any, any, any, any>,
|
|
@@ -83,6 +94,7 @@ export type inferProcedureOutput<
|
|
|
83
94
|
/**
|
|
84
95
|
* @public
|
|
85
96
|
* @beta
|
|
97
|
+
* @deprecated
|
|
86
98
|
*/
|
|
87
99
|
export type inferSubscriptionOutput<
|
|
88
100
|
TRouter extends AnyRouter,
|
|
@@ -101,6 +113,7 @@ function getDataTransformer(
|
|
|
101
113
|
}
|
|
102
114
|
/**
|
|
103
115
|
* @internal
|
|
116
|
+
* @deprecated
|
|
104
117
|
*/
|
|
105
118
|
export type inferHandlerInput<
|
|
106
119
|
TProcedure extends Procedure<any, any, any, any, any, any, any>,
|
|
@@ -122,6 +135,7 @@ type inferHandlerFn<TProcedures extends ProcedureRecord> = <
|
|
|
122
135
|
|
|
123
136
|
/**
|
|
124
137
|
* @internal
|
|
138
|
+
* @deprecated
|
|
125
139
|
*/
|
|
126
140
|
export type inferRouterContext<TRouter extends AnyRouter> = Parameters<
|
|
127
141
|
TRouter['createCaller']
|
|
@@ -144,6 +158,7 @@ export type inferRouterMeta<TRouter extends AnyRouter> = TRouter extends Router<
|
|
|
144
158
|
|
|
145
159
|
/**
|
|
146
160
|
* @public
|
|
161
|
+
* @deprecated
|
|
147
162
|
*/
|
|
148
163
|
export type AnyRouter<TContext = any> = Router<
|
|
149
164
|
any,
|
|
@@ -157,6 +172,7 @@ export type AnyRouter<TContext = any> = Router<
|
|
|
157
172
|
|
|
158
173
|
/**
|
|
159
174
|
* @internal
|
|
175
|
+
* @deprecated
|
|
160
176
|
*/
|
|
161
177
|
export type inferRouterError<TRouter extends AnyRouter> = ReturnType<
|
|
162
178
|
TRouter['getErrorShape']
|
|
@@ -172,6 +188,7 @@ const PROCEDURE_DEFINITION_MAP: Record<
|
|
|
172
188
|
|
|
173
189
|
/**
|
|
174
190
|
* @internal
|
|
191
|
+
* @deprecated
|
|
175
192
|
*/
|
|
176
193
|
export type ErrorFormatter<TContext, TShape extends TRPCErrorShape<number>> = ({
|
|
177
194
|
error,
|
|
@@ -193,6 +210,7 @@ type DefaultErrorData = {
|
|
|
193
210
|
|
|
194
211
|
/**
|
|
195
212
|
* @internal
|
|
213
|
+
* @deprecated
|
|
196
214
|
*/
|
|
197
215
|
export interface DefaultErrorShape
|
|
198
216
|
extends TRPCErrorShape<TRPC_ERROR_CODE_NUMBER, DefaultErrorData> {
|
|
@@ -262,6 +280,7 @@ type SwapContext<
|
|
|
262
280
|
|
|
263
281
|
/**
|
|
264
282
|
* @internal The type signature of this class may change without warning.
|
|
283
|
+
* @deprecated
|
|
265
284
|
*/
|
|
266
285
|
export class Router<
|
|
267
286
|
TInputContext,
|
|
@@ -852,8 +871,26 @@ export class Router<
|
|
|
852
871
|
> {
|
|
853
872
|
return this as any;
|
|
854
873
|
}
|
|
874
|
+
|
|
875
|
+
/**
|
|
876
|
+
* Interop mode for v9.x -> v10.x
|
|
877
|
+
*/
|
|
878
|
+
public interop(): MigrateRouter<
|
|
879
|
+
TInputContext,
|
|
880
|
+
TContext,
|
|
881
|
+
TMeta,
|
|
882
|
+
TQueries,
|
|
883
|
+
TMutations,
|
|
884
|
+
TSubscriptions,
|
|
885
|
+
TErrorShape
|
|
886
|
+
> {
|
|
887
|
+
return migrateRouter(this);
|
|
888
|
+
}
|
|
855
889
|
}
|
|
856
890
|
|
|
891
|
+
/**
|
|
892
|
+
* @deprecated
|
|
893
|
+
*/
|
|
857
894
|
export function router<TContext, TMeta extends Record<string, any> = {}>() {
|
|
858
895
|
return new Router<TContext, TContext, TMeta, {}, {}, {}, DefaultErrorShape>();
|
|
859
896
|
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { TRPC_ERROR_CODE_KEY } from '../rpc/codes';
|
|
2
|
+
import { getMessageFromUnkownError } from './utils';
|
|
3
|
+
|
|
4
|
+
export class TRPCError extends Error {
|
|
5
|
+
public readonly cause?: Error | undefined;
|
|
6
|
+
public readonly code;
|
|
7
|
+
|
|
8
|
+
constructor(opts: {
|
|
9
|
+
message?: string;
|
|
10
|
+
code: TRPC_ERROR_CODE_KEY;
|
|
11
|
+
cause?: Error;
|
|
12
|
+
}) {
|
|
13
|
+
const cause = opts.cause;
|
|
14
|
+
const code = opts.code;
|
|
15
|
+
const message = opts.message ?? getMessageFromUnkownError(cause, code);
|
|
16
|
+
|
|
17
|
+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
18
|
+
// @ts-ignore https://github.com/tc39/proposal-error-cause
|
|
19
|
+
super(message, { cause });
|
|
20
|
+
|
|
21
|
+
this.code = code;
|
|
22
|
+
this.cause = cause;
|
|
23
|
+
this.name = 'TRPCError';
|
|
24
|
+
|
|
25
|
+
Object.setPrototypeOf(this, new.target.prototype);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { ProcedureType } from '../core';
|
|
2
|
+
import {
|
|
3
|
+
TRPCErrorShape,
|
|
4
|
+
TRPC_ERROR_CODE_KEY,
|
|
5
|
+
TRPC_ERROR_CODE_NUMBER,
|
|
6
|
+
} from '../rpc';
|
|
7
|
+
import { TRPCError } from './TRPCError';
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* @internal
|
|
11
|
+
*/
|
|
12
|
+
export type ErrorFormatter<TContext, TShape extends TRPCErrorShape<number>> = ({
|
|
13
|
+
error,
|
|
14
|
+
}: {
|
|
15
|
+
error: TRPCError;
|
|
16
|
+
type: ProcedureType | 'unknown';
|
|
17
|
+
path: string | undefined;
|
|
18
|
+
input: unknown;
|
|
19
|
+
ctx: undefined | TContext;
|
|
20
|
+
shape: DefaultErrorShape;
|
|
21
|
+
}) => TShape;
|
|
22
|
+
|
|
23
|
+
export type ErrorFormatterShape<T> = T extends ErrorFormatter<any, infer TShape>
|
|
24
|
+
? TShape
|
|
25
|
+
: DefaultErrorShape;
|
|
26
|
+
/**
|
|
27
|
+
* @internal
|
|
28
|
+
*/
|
|
29
|
+
export type DefaultErrorData = {
|
|
30
|
+
code: TRPC_ERROR_CODE_KEY;
|
|
31
|
+
httpStatus: number;
|
|
32
|
+
path?: string;
|
|
33
|
+
stack?: string;
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* @internal
|
|
38
|
+
*/
|
|
39
|
+
export interface DefaultErrorShape
|
|
40
|
+
extends TRPCErrorShape<TRPC_ERROR_CODE_NUMBER, DefaultErrorData> {
|
|
41
|
+
message: string;
|
|
42
|
+
code: TRPC_ERROR_CODE_NUMBER;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
export const defaultFormatter: ErrorFormatter<any, any> = ({
|
|
46
|
+
shape,
|
|
47
|
+
}: {
|
|
48
|
+
shape: DefaultErrorShape;
|
|
49
|
+
}) => {
|
|
50
|
+
return shape;
|
|
51
|
+
};
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { TRPCError } from './TRPCError';
|
|
2
|
+
|
|
3
|
+
export function getMessageFromUnkownError(
|
|
4
|
+
err: unknown,
|
|
5
|
+
fallback: string,
|
|
6
|
+
): string {
|
|
7
|
+
if (typeof err === 'string') {
|
|
8
|
+
return err;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
if (err instanceof Error && typeof err.message === 'string') {
|
|
12
|
+
return err.message;
|
|
13
|
+
}
|
|
14
|
+
return fallback;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
export function getErrorFromUnknown(cause: unknown): TRPCError {
|
|
18
|
+
// this should ideally be an `instanceof TRPCError` but for some reason that isn't working
|
|
19
|
+
// ref https://github.com/trpc/trpc/issues/331
|
|
20
|
+
if (cause instanceof Error && cause.name === 'TRPCError') {
|
|
21
|
+
return cause as TRPCError;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
let errorCause: Error | undefined = undefined;
|
|
25
|
+
let stack: string | undefined = undefined;
|
|
26
|
+
|
|
27
|
+
if (cause instanceof Error) {
|
|
28
|
+
errorCause = cause;
|
|
29
|
+
// take stack trace from cause
|
|
30
|
+
stack = cause.stack;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
const err = new TRPCError({
|
|
34
|
+
code: 'INTERNAL_SERVER_ERROR',
|
|
35
|
+
cause: errorCause,
|
|
36
|
+
});
|
|
37
|
+
|
|
38
|
+
err.stack = stack;
|
|
39
|
+
|
|
40
|
+
return err;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
export function getCauseFromUnknown(cause: unknown) {
|
|
44
|
+
if (cause instanceof Error) {
|
|
45
|
+
return cause;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
return undefined;
|
|
49
|
+
}
|
package/src/http/index.ts
CHANGED
|
@@ -1,14 +1,9 @@
|
|
|
1
1
|
import { TRPCError } from '../../TRPCError';
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
AnyRouter,
|
|
5
|
-
ProcedureType,
|
|
6
|
-
inferRouterContext,
|
|
7
|
-
inferRouterError,
|
|
8
|
-
} from '../../router';
|
|
2
|
+
import { AnyRouter, ProcedureType, inferRouterParams } from '../../core';
|
|
3
|
+
import { BaseHandlerOptions } from '../../internals/types';
|
|
9
4
|
import { TRPCResponse } from '../../rpc';
|
|
10
5
|
import { Dict } from '../../types';
|
|
11
|
-
import { ResponseMeta } from '../
|
|
6
|
+
import { ResponseMeta } from '../types';
|
|
12
7
|
|
|
13
8
|
export type HTTPHeaders = Dict<string | string[]>;
|
|
14
9
|
|
|
@@ -25,9 +20,12 @@ export interface HTTPRequest {
|
|
|
25
20
|
body: unknown;
|
|
26
21
|
}
|
|
27
22
|
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
23
|
+
/**
|
|
24
|
+
* @internal
|
|
25
|
+
*/
|
|
26
|
+
export type ResponseMetaFn<TRouter extends AnyRouter> = (opts: {
|
|
27
|
+
data: TRPCResponse<unknown, inferRouterParams<TRouter>['_error']>[];
|
|
28
|
+
ctx?: inferRouterParams<TRouter>['_ctx'];
|
|
31
29
|
/**
|
|
32
30
|
* The different tRPC paths requested
|
|
33
31
|
**/
|
|
@@ -1,14 +1,13 @@
|
|
|
1
1
|
/* eslint-disable @typescript-eslint/no-non-null-assertion */
|
|
2
2
|
import { TRPCError } from '../TRPCError';
|
|
3
|
-
import { callProcedure } from '../internals/callProcedure';
|
|
4
|
-
import { getCauseFromUnknown, getErrorFromUnknown } from '../internals/errors';
|
|
5
|
-
import { transformTRPCResponse } from '../internals/transformTRPCResponse';
|
|
6
3
|
import {
|
|
7
4
|
AnyRouter,
|
|
8
5
|
ProcedureType,
|
|
9
6
|
inferRouterContext,
|
|
10
7
|
inferRouterError,
|
|
11
|
-
} from '../
|
|
8
|
+
} from '../core';
|
|
9
|
+
import { getCauseFromUnknown, getErrorFromUnknown } from '../internals/errors';
|
|
10
|
+
import { transformTRPCResponse } from '../internals/transformTRPCResponse';
|
|
12
11
|
import { TRPCResponse } from '../rpc';
|
|
13
12
|
import { Maybe } from '../types';
|
|
14
13
|
import { getHTTPStatusCode } from './internals/getHTTPStatusCode';
|
|
@@ -170,14 +169,10 @@ export async function resolveHTTPResponse<
|
|
|
170
169
|
const rawResults = await Promise.all(
|
|
171
170
|
paths.map(async (path, index) => {
|
|
172
171
|
const input = inputs[index];
|
|
172
|
+
|
|
173
173
|
try {
|
|
174
|
-
const
|
|
175
|
-
|
|
176
|
-
router,
|
|
177
|
-
path,
|
|
178
|
-
input,
|
|
179
|
-
type,
|
|
180
|
-
});
|
|
174
|
+
const caller = router.createCaller(ctx);
|
|
175
|
+
const output = await caller[type](path, input as any);
|
|
181
176
|
return {
|
|
182
177
|
input,
|
|
183
178
|
path,
|
|
File without changes
|
package/src/index.ts
CHANGED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { TRPCError } from '../TRPCError';
|
|
2
|
+
import { inferRouterParams } from '../core';
|
|
3
|
+
import { ProcedureType } from '../core';
|
|
4
|
+
import { AnyRouter } from '../core/router';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Base interface for any response handler
|
|
8
|
+
*/
|
|
9
|
+
export interface BaseHandlerOptions<TRouter extends AnyRouter, TRequest> {
|
|
10
|
+
onError?: OnErrorFunction<TRouter, TRequest>;
|
|
11
|
+
batching?: {
|
|
12
|
+
enabled: boolean;
|
|
13
|
+
};
|
|
14
|
+
router: TRouter;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
export type OnErrorFunction<TRouter extends AnyRouter, TRequest> = (opts: {
|
|
18
|
+
error: TRPCError;
|
|
19
|
+
type: ProcedureType | 'unknown';
|
|
20
|
+
path: string | undefined;
|
|
21
|
+
req: TRequest;
|
|
22
|
+
input: unknown;
|
|
23
|
+
ctx: undefined | inferRouterParams<TRouter>['_ctx'];
|
|
24
|
+
}) => void;
|
package/src/rpc/codes.ts
CHANGED
package/src/rpc/envelopes.ts
CHANGED
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @internal
|
|
3
|
+
*/
|
|
4
|
+
type KeyFromValue<V, T extends Record<PropertyKey, PropertyKey>> = {
|
|
5
|
+
[K in keyof T]: V extends T[K] ? K : never;
|
|
6
|
+
}[keyof T];
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* @internal
|
|
10
|
+
*/
|
|
11
|
+
type Invert<T extends Record<PropertyKey, PropertyKey>> = {
|
|
12
|
+
[V in T[keyof T]]: KeyFromValue<V, T>;
|
|
13
|
+
};
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* @internal
|
|
17
|
+
*/
|
|
18
|
+
export function invert<T extends Record<PropertyKey, PropertyKey>>(
|
|
19
|
+
obj: T,
|
|
20
|
+
): Invert<T> {
|
|
21
|
+
const newObj = Object.create(null) as any;
|
|
22
|
+
for (const key in obj) {
|
|
23
|
+
const v = obj[key];
|
|
24
|
+
newObj[v] = key;
|
|
25
|
+
}
|
|
26
|
+
return newObj;
|
|
27
|
+
}
|
package/src/transformer.ts
CHANGED
|
@@ -35,3 +35,31 @@ export type DataTransformerOptions = DataTransformer | CombinedDataTransformer;
|
|
|
35
35
|
export type ClientDataTransformerOptions =
|
|
36
36
|
| DataTransformer
|
|
37
37
|
| CombinedDataTransformerClient;
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* @internal
|
|
41
|
+
*/
|
|
42
|
+
export function getDataTransformer(
|
|
43
|
+
transformer: DataTransformerOptions,
|
|
44
|
+
): CombinedDataTransformer {
|
|
45
|
+
if ('input' in transformer) {
|
|
46
|
+
return transformer;
|
|
47
|
+
}
|
|
48
|
+
return { input: transformer, output: transformer };
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
/**
|
|
52
|
+
* @internal
|
|
53
|
+
*/
|
|
54
|
+
export type DefaultDataTransformer = CombinedDataTransformer & {
|
|
55
|
+
_default: true;
|
|
56
|
+
};
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* @internal
|
|
60
|
+
*/
|
|
61
|
+
export const defaultTransformer: DefaultDataTransformer = {
|
|
62
|
+
_default: true,
|
|
63
|
+
input: { serialize: (obj) => obj, deserialize: (obj) => obj },
|
|
64
|
+
output: { serialize: (obj) => obj, deserialize: (obj) => obj },
|
|
65
|
+
};
|
package/src/types.ts
CHANGED
|
@@ -47,9 +47,21 @@ export type ThenArg<T> = T extends PromiseLike<infer U> ? ThenArg<U> : T;
|
|
|
47
47
|
*/
|
|
48
48
|
export type Dict<T> = Record<string, T | undefined>;
|
|
49
49
|
|
|
50
|
+
/**
|
|
51
|
+
* @public
|
|
52
|
+
*/
|
|
53
|
+
export type MaybePromise<T> = T | Promise<T>;
|
|
54
|
+
|
|
50
55
|
/**
|
|
51
56
|
* @internal
|
|
57
|
+
*
|
|
52
58
|
* Creates a "lower-priority" type inference.
|
|
53
59
|
* https://github.com/microsoft/TypeScript/issues/14829#issuecomment-322267089
|
|
54
60
|
*/
|
|
55
61
|
export type InferLast<T> = T & { [K in keyof T]: T[K] };
|
|
62
|
+
|
|
63
|
+
/**
|
|
64
|
+
* @public
|
|
65
|
+
*/
|
|
66
|
+
export type inferAsyncReturnType<TFunction extends (...args: any) => any> =
|
|
67
|
+
ThenArg<ReturnType<TFunction>>;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"responseMeta.d.ts","sourceRoot":"","sources":["../../src/http/responseMeta.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,YAAY;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC"}
|