@trpc/server 10.0.0-alpha.24 → 10.0.0-alpha.27

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.
Files changed (210) hide show
  1. package/adapters/aws-lambda/dist/trpc-server-adapters-aws-lambda.cjs.d.ts +1 -1
  2. package/adapters/aws-lambda/dist/trpc-server-adapters-aws-lambda.cjs.dev.js +100 -20
  3. package/adapters/aws-lambda/dist/trpc-server-adapters-aws-lambda.cjs.prod.js +100 -20
  4. package/adapters/aws-lambda/dist/trpc-server-adapters-aws-lambda.esm.js +99 -19
  5. package/adapters/aws-lambda/index.d.ts +1 -0
  6. package/adapters/aws-lambda/index.js +1 -0
  7. package/adapters/lambda/dist/trpc-server-adapters-lambda.cjs.d.ts +1 -0
  8. package/adapters/lambda/dist/trpc-server-adapters-lambda.cjs.dev.js +25 -0
  9. package/adapters/lambda/dist/trpc-server-adapters-lambda.cjs.js +7 -0
  10. package/adapters/lambda/dist/trpc-server-adapters-lambda.cjs.prod.js +25 -0
  11. package/adapters/lambda/dist/trpc-server-adapters-lambda.esm.js +21 -0
  12. package/dist/{TRPCError-ddec3395.js → TRPCError-9050a68d.js} +0 -0
  13. package/dist/{TRPCError-7971540a.mjs → TRPCError-b7fa0c31.mjs} +0 -0
  14. package/dist/adapters/aws-lambda/index.d.ts +14 -0
  15. package/dist/adapters/aws-lambda/index.d.ts.map +1 -0
  16. package/dist/adapters/aws-lambda/utils.d.ts +34 -0
  17. package/dist/adapters/aws-lambda/utils.d.ts.map +1 -0
  18. package/dist/adapters/express.d.ts +1 -1
  19. package/dist/adapters/express.d.ts.map +1 -1
  20. package/dist/adapters/express.js +5 -5
  21. package/dist/adapters/express.mjs +5 -5
  22. package/dist/adapters/fastify/fastifyRequestHandler.d.ts +1 -1
  23. package/dist/adapters/fastify/fastifyRequestHandler.d.ts.map +1 -1
  24. package/dist/adapters/fastify/fastifyTRPCPlugin.d.ts +1 -1
  25. package/dist/adapters/fastify/fastifyTRPCPlugin.d.ts.map +1 -1
  26. package/dist/adapters/fastify/index.js +4 -4
  27. package/dist/adapters/fastify/index.mjs +4 -4
  28. package/dist/adapters/fetch/fetchRequestHandler.d.ts +1 -1
  29. package/dist/adapters/fetch/fetchRequestHandler.d.ts.map +1 -1
  30. package/dist/adapters/fetch/index.js +4 -4
  31. package/dist/adapters/fetch/index.mjs +4 -4
  32. package/dist/adapters/fetch/types.d.ts +1 -1
  33. package/dist/adapters/fetch/types.d.ts.map +1 -1
  34. package/dist/adapters/lambda/index.d.ts +12 -0
  35. package/dist/adapters/lambda/index.d.ts.map +1 -0
  36. package/dist/adapters/next.d.ts +1 -1
  37. package/dist/adapters/next.d.ts.map +1 -1
  38. package/dist/adapters/next.js +5 -5
  39. package/dist/adapters/next.mjs +5 -5
  40. package/dist/adapters/node-http/index.js +5 -5
  41. package/dist/adapters/node-http/index.mjs +5 -5
  42. package/dist/adapters/node-http/internals/getPostBody.d.ts +1 -1
  43. package/dist/adapters/node-http/internals/getPostBody.d.ts.map +1 -1
  44. package/dist/adapters/node-http/nodeHTTPRequestHandler.d.ts +1 -1
  45. package/dist/adapters/node-http/nodeHTTPRequestHandler.d.ts.map +1 -1
  46. package/dist/adapters/node-http/types.d.ts +3 -2
  47. package/dist/adapters/node-http/types.d.ts.map +1 -1
  48. package/dist/adapters/standalone.d.ts +2 -2
  49. package/dist/adapters/standalone.d.ts.map +1 -1
  50. package/dist/adapters/standalone.js +5 -5
  51. package/dist/adapters/standalone.mjs +5 -5
  52. package/dist/adapters/ws.d.ts +3 -2
  53. package/dist/adapters/ws.d.ts.map +1 -1
  54. package/dist/adapters/ws.js +4 -9
  55. package/dist/adapters/ws.mjs +4 -9
  56. package/dist/core/index.d.ts +5 -0
  57. package/dist/core/index.d.ts.map +1 -0
  58. package/dist/core/initTRPC.d.ts +82 -0
  59. package/dist/core/initTRPC.d.ts.map +1 -0
  60. package/dist/core/internals/__generated__/mergeRoutersGeneric.d.ts +262 -0
  61. package/dist/core/internals/__generated__/mergeRoutersGeneric.d.ts.map +1 -0
  62. package/dist/core/internals/config.d.ts +38 -0
  63. package/dist/core/internals/config.d.ts.map +1 -0
  64. package/dist/core/internals/getParseFn.d.ts +9 -0
  65. package/dist/core/internals/getParseFn.d.ts.map +1 -0
  66. package/dist/core/internals/internalProcedure.d.ts +61 -0
  67. package/dist/core/internals/internalProcedure.d.ts.map +1 -0
  68. package/dist/core/internals/mergeRouters.d.ts +3 -0
  69. package/dist/core/internals/mergeRouters.d.ts.map +1 -0
  70. package/dist/core/internals/mergeRoutersGeneric.d.ts +21 -0
  71. package/dist/core/internals/mergeRoutersGeneric.d.ts.map +1 -0
  72. package/dist/core/internals/mergeWithoutOverrides.d.ts +5 -0
  73. package/dist/core/internals/mergeWithoutOverrides.d.ts.map +1 -0
  74. package/dist/core/internals/omitPrototype.d.ts +6 -0
  75. package/dist/core/internals/omitPrototype.d.ts.map +1 -0
  76. package/dist/core/internals/procedureBuilder.d.ts +72 -0
  77. package/dist/core/internals/procedureBuilder.d.ts.map +1 -0
  78. package/dist/core/internals/utils.d.ts +44 -0
  79. package/dist/core/internals/utils.d.ts.map +1 -0
  80. package/dist/core/middleware.d.ts +78 -0
  81. package/dist/core/middleware.d.ts.map +1 -0
  82. package/dist/core/parser.d.ts +25 -0
  83. package/dist/core/parser.d.ts.map +1 -0
  84. package/dist/core/procedure.d.ts +57 -0
  85. package/dist/core/procedure.d.ts.map +1 -0
  86. package/dist/core/router.d.ts +122 -0
  87. package/dist/core/router.d.ts.map +1 -0
  88. package/dist/core/types.d.ts +17 -0
  89. package/dist/core/types.d.ts.map +1 -0
  90. package/dist/{internals → deprecated/internals}/callProcedure.d.ts +4 -1
  91. package/dist/deprecated/internals/callProcedure.d.ts.map +1 -0
  92. package/dist/{internals → deprecated/internals}/middlewares.d.ts +16 -1
  93. package/dist/deprecated/internals/middlewares.d.ts.map +1 -0
  94. package/dist/{internals → deprecated/internals}/procedure.d.ts +10 -1
  95. package/dist/deprecated/internals/procedure.d.ts.map +1 -0
  96. package/dist/deprecated/interop.d.ts +34 -0
  97. package/dist/deprecated/interop.d.ts.map +1 -0
  98. package/dist/{router.d.ts → deprecated/router.d.ts} +27 -6
  99. package/dist/deprecated/router.d.ts.map +1 -0
  100. package/dist/{envelopes-1deb2fa7.mjs → envelopes-af8c2959.mjs} +12 -1
  101. package/dist/{envelopes-a953b930.js → envelopes-b6dd0367.js} +11 -1
  102. package/dist/{TRPCError.d.ts → error/TRPCError.d.ts} +2 -2
  103. package/dist/error/TRPCError.d.ts.map +1 -0
  104. package/dist/error/formatter.d.ts +33 -0
  105. package/dist/error/formatter.d.ts.map +1 -0
  106. package/dist/{internals/errors.d.ts → error/utils.d.ts} +2 -2
  107. package/dist/error/utils.d.ts.map +1 -0
  108. package/dist/http/index.d.ts +1 -1
  109. package/dist/http/index.d.ts.map +1 -1
  110. package/dist/http/internals/getHTTPStatusCode.d.ts +1 -1
  111. package/dist/http/internals/getHTTPStatusCode.d.ts.map +1 -1
  112. package/dist/http/internals/types.d.ts +10 -8
  113. package/dist/http/internals/types.d.ts.map +1 -1
  114. package/dist/http/resolveHTTPResponse.d.ts +2 -2
  115. package/dist/http/resolveHTTPResponse.d.ts.map +1 -1
  116. package/dist/http/{responseMeta.d.ts → types.d.ts} +1 -1
  117. package/dist/http/types.d.ts.map +1 -0
  118. package/dist/index.d.ts +3 -2
  119. package/dist/index.d.ts.map +1 -1
  120. package/dist/index.js +711 -30
  121. package/dist/index.mjs +711 -32
  122. package/dist/internals/transformTRPCResponse.d.ts +1 -1
  123. package/dist/internals/transformTRPCResponse.d.ts.map +1 -1
  124. package/dist/internals/types.d.ts +23 -0
  125. package/dist/internals/types.d.ts.map +1 -0
  126. package/dist/{nodeHTTPRequestHandler-1cdb6383.mjs → nodeHTTPRequestHandler-174459c5.mjs} +2 -2
  127. package/dist/{nodeHTTPRequestHandler-848f07b5.js → nodeHTTPRequestHandler-6b7c8622.js} +2 -2
  128. package/dist/{resolveHTTPResponse-54a79e6c.mjs → resolveHTTPResponse-8657b8de.mjs} +16 -10
  129. package/dist/{resolveHTTPResponse-ec3dccaa.js → resolveHTTPResponse-fcc8f644.js} +17 -11
  130. package/dist/rpc/envelopes.d.ts +1 -1
  131. package/dist/rpc/envelopes.d.ts.map +1 -1
  132. package/dist/rpc/index.js +1 -1
  133. package/dist/rpc/index.mjs +1 -1
  134. package/dist/rpc/internals/invert.d.ts +18 -0
  135. package/dist/rpc/internals/invert.d.ts.map +1 -0
  136. package/dist/subscription.js +1 -1
  137. package/dist/subscription.mjs +1 -1
  138. package/dist/{transformTRPCResponse-333bed6c.js → transformTRPCResponse-0c261655.js} +0 -27
  139. package/dist/{transformTRPCResponse-e0cba527.mjs → transformTRPCResponse-747b9a68.mjs} +1 -27
  140. package/dist/transformer.d.ts +14 -0
  141. package/dist/transformer.d.ts.map +1 -1
  142. package/dist/types.d.ts +9 -0
  143. package/dist/types.d.ts.map +1 -1
  144. package/package.json +12 -4
  145. package/src/adapters/aws-lambda/index.ts +156 -0
  146. package/src/adapters/aws-lambda/utils.ts +91 -0
  147. package/src/adapters/express.ts +1 -1
  148. package/src/adapters/fastify/fastifyRequestHandler.ts +1 -1
  149. package/src/adapters/fastify/fastifyTRPCPlugin.ts +2 -2
  150. package/src/adapters/fetch/fetchRequestHandler.ts +1 -1
  151. package/src/adapters/fetch/types.ts +1 -1
  152. package/src/adapters/lambda/index.ts +18 -0
  153. package/src/adapters/next.ts +2 -2
  154. package/src/adapters/node-http/internals/getPostBody.ts +1 -1
  155. package/src/adapters/node-http/nodeHTTPRequestHandler.ts +3 -2
  156. package/src/adapters/node-http/types.ts +5 -2
  157. package/src/adapters/standalone.ts +1 -1
  158. package/src/adapters/ws.ts +7 -12
  159. package/src/core/index.ts +5 -0
  160. package/src/core/initTRPC.ts +90 -0
  161. package/src/core/internals/__generated__/mergeRoutersGeneric.ts +366 -0
  162. package/src/core/internals/config.ts +44 -0
  163. package/src/core/internals/getParseFn.ts +47 -0
  164. package/src/core/internals/internalProcedure.ts +265 -0
  165. package/src/core/internals/mergeRouters.ts +57 -0
  166. package/src/core/internals/mergeRoutersGeneric.ts +35 -0
  167. package/src/core/internals/mergeWithoutOverrides.ts +19 -0
  168. package/src/core/internals/omitPrototype.ts +9 -0
  169. package/src/core/internals/procedureBuilder.ts +101 -0
  170. package/src/core/internals/utils.ts +64 -0
  171. package/src/core/middleware.ts +93 -0
  172. package/src/core/parser.ts +45 -0
  173. package/src/core/procedure.ts +72 -0
  174. package/src/core/router.ts +358 -0
  175. package/src/core/types.ts +37 -0
  176. package/src/{internals → deprecated/internals}/callProcedure.ts +4 -1
  177. package/src/{internals → deprecated/internals}/middlewares.ts +17 -1
  178. package/src/{internals → deprecated/internals}/procedure.ts +16 -4
  179. package/src/deprecated/interop.ts +169 -0
  180. package/src/{router.ts → deprecated/router.ts} +51 -24
  181. package/src/{TRPCError.ts → error/TRPCError.ts} +3 -3
  182. package/src/error/formatter.ts +51 -0
  183. package/src/{internals/errors.ts → error/utils.ts} +1 -1
  184. package/src/http/index.ts +1 -1
  185. package/src/http/internals/getHTTPStatusCode.ts +1 -1
  186. package/src/http/internals/types.ts +10 -12
  187. package/src/http/resolveHTTPResponse.ts +7 -12
  188. package/src/http/{responseMeta.ts → types.ts} +0 -0
  189. package/src/index.ts +3 -2
  190. package/src/internals/transformTRPCResponse.ts +1 -1
  191. package/src/internals/types.ts +24 -0
  192. package/src/rpc/codes.ts +1 -1
  193. package/src/rpc/envelopes.ts +1 -1
  194. package/src/rpc/internals/invert.ts +27 -0
  195. package/src/subscription.ts +1 -1
  196. package/src/transformer.ts +28 -0
  197. package/src/types.ts +12 -0
  198. package/dist/TRPCError.d.ts.map +0 -1
  199. package/dist/http/responseMeta.d.ts.map +0 -1
  200. package/dist/internals/baseHandlerOptions.d.ts +0 -13
  201. package/dist/internals/baseHandlerOptions.d.ts.map +0 -1
  202. package/dist/internals/callProcedure.d.ts.map +0 -1
  203. package/dist/internals/errors.d.ts.map +0 -1
  204. package/dist/internals/middlewares.d.ts.map +0 -1
  205. package/dist/internals/onErrorFunction.d.ts +0 -11
  206. package/dist/internals/onErrorFunction.d.ts.map +0 -1
  207. package/dist/internals/procedure.d.ts.map +0 -1
  208. package/dist/router.d.ts.map +0 -1
  209. package/src/internals/baseHandlerOptions.ts +0 -13
  210. 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,23 @@
1
1
  /* eslint-disable @typescript-eslint/ban-types */
2
2
 
3
3
  /* eslint-disable @typescript-eslint/no-explicit-any */
4
- import { TRPCError } from './TRPCError';
5
- import { assertNotBrowser } from './assertNotBrowser';
6
- import { getHTTPStatusCodeFromError } from './http/internals/getHTTPStatusCode';
4
+ import { assertNotBrowser } from '../assertNotBrowser';
5
+ import { TRPCError } from '../error/TRPCError';
6
+ import { defaultFormatter } from '../error/formatter';
7
+ import { getHTTPStatusCodeFromError } from '../http/internals/getHTTPStatusCode';
8
+ import { Observable, inferObservableValue } from '../observable';
9
+ import {
10
+ TRPCErrorShape,
11
+ TRPC_ERROR_CODES_BY_KEY,
12
+ TRPC_ERROR_CODE_KEY,
13
+ TRPC_ERROR_CODE_NUMBER,
14
+ } from '../rpc';
15
+ import {
16
+ CombinedDataTransformer,
17
+ DataTransformerOptions,
18
+ defaultTransformer,
19
+ } from '../transformer';
20
+ import { Prefixer, ThenArg, flatten } from '../types';
7
21
  import { MiddlewareFunction } from './internals/middlewares';
8
22
  import {
9
23
  CreateProcedureOptions,
@@ -15,25 +29,21 @@ import {
15
29
  createProcedure,
16
30
  inferProcedureFromOptions,
17
31
  } from './internals/procedure';
18
- import { Observable, inferObservableValue } from './observable';
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';
32
+ import { MigrateRouter, migrateRouter } from './interop';
27
33
 
28
34
  assertNotBrowser();
29
35
 
36
+ export type { Procedure } from './internals/procedure';
37
+
30
38
  /**
31
39
  * @public
40
+ * @deprecated
32
41
  */
33
42
  export type ProcedureType = 'query' | 'mutation' | 'subscription';
34
43
 
35
44
  /**
36
45
  * @internal
46
+ * @deprecated
37
47
  */
38
48
  export type ProcedureRecord<
39
49
  TInputContext = any,
@@ -58,6 +68,7 @@ export type ProcedureRecord<
58
68
 
59
69
  /**
60
70
  * @public
71
+ * @deprecated
61
72
  */
62
73
  export type inferProcedureInput<
63
74
  TProcedure extends Procedure<any, any, any, any, any, any, any>,
@@ -69,12 +80,14 @@ export type inferProcedureInput<
69
80
 
70
81
  /**
71
82
  * @public
83
+ * @deprecated
72
84
  */
73
85
  export type inferAsyncReturnType<TFunction extends (...args: any) => any> =
74
86
  ThenArg<ReturnType<TFunction>>;
75
87
 
76
88
  /**
77
89
  * @public
90
+ * @deprecated
78
91
  */
79
92
  export type inferProcedureOutput<
80
93
  TProcedure extends Procedure<any, any, any, any, any, any, any>,
@@ -83,6 +96,7 @@ export type inferProcedureOutput<
83
96
  /**
84
97
  * @public
85
98
  * @beta
99
+ * @deprecated
86
100
  */
87
101
  export type inferSubscriptionOutput<
88
102
  TRouter extends AnyRouter,
@@ -101,6 +115,7 @@ function getDataTransformer(
101
115
  }
102
116
  /**
103
117
  * @internal
118
+ * @deprecated
104
119
  */
105
120
  export type inferHandlerInput<
106
121
  TProcedure extends Procedure<any, any, any, any, any, any, any>,
@@ -122,6 +137,7 @@ type inferHandlerFn<TProcedures extends ProcedureRecord> = <
122
137
 
123
138
  /**
124
139
  * @internal
140
+ * @deprecated
125
141
  */
126
142
  export type inferRouterContext<TRouter extends AnyRouter> = Parameters<
127
143
  TRouter['createCaller']
@@ -144,6 +160,7 @@ export type inferRouterMeta<TRouter extends AnyRouter> = TRouter extends Router<
144
160
 
145
161
  /**
146
162
  * @public
163
+ * @deprecated
147
164
  */
148
165
  export type AnyRouter<TContext = any> = Router<
149
166
  any,
@@ -157,6 +174,7 @@ export type AnyRouter<TContext = any> = Router<
157
174
 
158
175
  /**
159
176
  * @internal
177
+ * @deprecated
160
178
  */
161
179
  export type inferRouterError<TRouter extends AnyRouter> = ReturnType<
162
180
  TRouter['getErrorShape']
@@ -172,6 +190,7 @@ const PROCEDURE_DEFINITION_MAP: Record<
172
190
 
173
191
  /**
174
192
  * @internal
193
+ * @deprecated
175
194
  */
176
195
  export type ErrorFormatter<TContext, TShape extends TRPCErrorShape<number>> = ({
177
196
  error,
@@ -193,6 +212,7 @@ type DefaultErrorData = {
193
212
 
194
213
  /**
195
214
  * @internal
215
+ * @deprecated
196
216
  */
197
217
  export interface DefaultErrorShape
198
218
  extends TRPCErrorShape<TRPC_ERROR_CODE_NUMBER, DefaultErrorData> {
@@ -217,18 +237,6 @@ function safeObject<TObj1, TObj2>(obj1: TObj1, obj2: TObj2): TObj1 & TObj2;
217
237
  function safeObject(...args: unknown[]) {
218
238
  return Object.assign(Object.create(null), ...args);
219
239
  }
220
- const defaultFormatter: ErrorFormatter<any, any> = ({
221
- shape,
222
- }: {
223
- shape: DefaultErrorShape;
224
- }) => {
225
- return shape;
226
- };
227
- const defaultTransformer: CombinedDataTransformer = {
228
- input: { serialize: (obj) => obj, deserialize: (obj) => obj },
229
- output: { serialize: (obj) => obj, deserialize: (obj) => obj },
230
- };
231
-
232
240
  type SwapProcedureContext<
233
241
  TProcedure extends Procedure<any, any, any, any, any, any, any>,
234
242
  TNewContext,
@@ -262,6 +270,7 @@ type SwapContext<
262
270
 
263
271
  /**
264
272
  * @internal The type signature of this class may change without warning.
273
+ * @deprecated
265
274
  */
266
275
  export class Router<
267
276
  TInputContext,
@@ -852,8 +861,26 @@ export class Router<
852
861
  > {
853
862
  return this as any;
854
863
  }
864
+
865
+ /**
866
+ * Interop mode for v9.x -> v10.x
867
+ */
868
+ public interop(): MigrateRouter<
869
+ TInputContext,
870
+ TContext,
871
+ TMeta,
872
+ TQueries,
873
+ TMutations,
874
+ TSubscriptions,
875
+ TErrorShape
876
+ > {
877
+ return migrateRouter(this);
878
+ }
855
879
  }
856
880
 
881
+ /**
882
+ * @deprecated
883
+ */
857
884
  export function router<TContext, TMeta extends Record<string, any> = {}>() {
858
885
  return new Router<TContext, TContext, TMeta, {}, {}, {}, DefaultErrorShape>();
859
886
  }
@@ -1,8 +1,8 @@
1
- import { getMessageFromUnkownError } from './internals/errors';
2
- import { TRPC_ERROR_CODE_KEY } from './rpc/codes';
1
+ import { getMessageFromUnkownError } from '../error/utils';
2
+ import { TRPC_ERROR_CODE_KEY } from '../rpc/codes';
3
3
 
4
4
  export class TRPCError extends Error {
5
- public readonly cause?: Error | undefined;
5
+ public readonly cause?;
6
6
  public readonly code;
7
7
 
8
8
  constructor(opts: {
@@ -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
+ };
@@ -1,4 +1,4 @@
1
- import { TRPCError } from '../TRPCError';
1
+ import { TRPCError } from './TRPCError';
2
2
 
3
3
  export function getMessageFromUnkownError(
4
4
  err: unknown,
package/src/http/index.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import { assertNotBrowser } from '../assertNotBrowser';
2
2
 
3
3
  export * from './resolveHTTPResponse';
4
- export * from './responseMeta';
4
+ export * from './types';
5
5
 
6
6
  assertNotBrowser();
@@ -1,4 +1,4 @@
1
- import { TRPCError } from '../../TRPCError';
1
+ import { TRPCError } from '../../error/TRPCError';
2
2
  import { invert } from '../../internals/invert';
3
3
  import { TRPCResponse, TRPC_ERROR_CODES_BY_KEY } from '../../rpc';
4
4
 
@@ -1,14 +1,9 @@
1
- import { TRPCError } from '../../TRPCError';
2
- import { BaseHandlerOptions } from '../../internals/baseHandlerOptions';
3
- import {
4
- AnyRouter,
5
- ProcedureType,
6
- inferRouterContext,
7
- inferRouterError,
8
- } from '../../router';
1
+ import { AnyRouter, ProcedureType, inferRouterParams } from '../../core';
2
+ import { TRPCError } from '../../error/TRPCError';
3
+ import { BaseHandlerOptions } from '../../internals/types';
9
4
  import { TRPCResponse } from '../../rpc';
10
5
  import { Dict } from '../../types';
11
- import { ResponseMeta } from '../responseMeta';
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
- type ResponseMetaFn<TRouter extends AnyRouter> = (opts: {
29
- data: TRPCResponse<unknown, inferRouterError<TRouter>>[];
30
- ctx?: inferRouterContext<TRouter>;
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
- import { TRPCError } from '../TRPCError';
3
- import { callProcedure } from '../internals/callProcedure';
4
- import { getCauseFromUnknown, getErrorFromUnknown } from '../internals/errors';
5
- import { transformTRPCResponse } from '../internals/transformTRPCResponse';
6
2
  import {
7
3
  AnyRouter,
8
4
  ProcedureType,
9
5
  inferRouterContext,
10
6
  inferRouterError,
11
- } from '../router';
7
+ } from '../core';
8
+ import { TRPCError } from '../error/TRPCError';
9
+ import { getCauseFromUnknown, getErrorFromUnknown } from '../error/utils';
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 output = await callProcedure({
175
- ctx,
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
@@ -1,6 +1,7 @@
1
1
  export * from './assertNotBrowser';
2
2
  export * from './http';
3
3
  export * from './transformer';
4
- export * from './TRPCError';
4
+ export * from './error/TRPCError';
5
5
  export * from './types';
6
- export * from './router';
6
+ export { router } from './deprecated/router';
7
+ export * from './core';
@@ -1,4 +1,4 @@
1
- import { AnyRouter } from '../router';
1
+ import { AnyRouter } from '../core/router';
2
2
  import { TRPCResponse, TRPCResponseMessage } from '../rpc';
3
3
 
4
4
  function transformTRPCResponseItem<
@@ -0,0 +1,24 @@
1
+ import { inferRouterParams } from '../core';
2
+ import { ProcedureType } from '../core';
3
+ import { AnyRouter } from '../core/router';
4
+ import { TRPCError } from '../error/TRPCError';
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
@@ -1,4 +1,4 @@
1
- import { invert } from '../internals/invert';
1
+ import { invert } from './internals/invert';
2
2
 
3
3
  // reference: https://www.jsonrpc.org/specification
4
4
 
@@ -1,5 +1,5 @@
1
1
  /* eslint-disable @typescript-eslint/no-namespace */
2
- import { ProcedureType } from '../router';
2
+ import { ProcedureType } from '../deprecated/router';
3
3
  import { TRPC_ERROR_CODE_NUMBER } from './codes';
4
4
 
5
5
  /**
@@ -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
+ }
@@ -1,4 +1,4 @@
1
- import { getErrorFromUnknown } from './internals/errors';
1
+ import { getErrorFromUnknown } from './error/utils';
2
2
  import { Observable, Observer, observable } from './observable';
3
3
 
4
4
  export function subscriptionPullFactory<TOutput>(opts: {
@@ -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":"TRPCError.d.ts","sourceRoot":"","sources":["../src/TRPCError.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAElD,qBAAa,SAAU,SAAQ,KAAK;IAClC,SAAgB,KAAK,CAAC,EAAE,KAAK,GAAG,SAAS,CAAC;IAC1C,SAAgB,IAAI,iOAAC;gBAET,IAAI,EAAE;QAChB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,IAAI,EAAE,mBAAmB,CAAC;QAC1B,KAAK,CAAC,EAAE,KAAK,CAAC;KACf;CAeF"}
@@ -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"}
@@ -1,13 +0,0 @@
1
- import { AnyRouter } from '../router';
2
- import { OnErrorFunction } from './onErrorFunction';
3
- /**
4
- * Base interface for any response handler
5
- */
6
- export interface BaseHandlerOptions<TRouter extends AnyRouter, TRequest> {
7
- onError?: OnErrorFunction<TRouter, TRequest>;
8
- batching?: {
9
- enabled: boolean;
10
- };
11
- router: TRouter;
12
- }
13
- //# sourceMappingURL=baseHandlerOptions.d.ts.map