@trpc/server 10.43.0 → 11.0.0-next.91

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 (164) hide show
  1. package/dist/adapters/aws-lambda/index.d.ts.map +1 -1
  2. package/dist/adapters/aws-lambda/index.js +6 -4
  3. package/dist/adapters/aws-lambda/index.mjs +6 -4
  4. package/dist/adapters/aws-lambda/utils.d.ts +3 -1
  5. package/dist/adapters/aws-lambda/utils.d.ts.map +1 -1
  6. package/dist/adapters/express.js +4 -3
  7. package/dist/adapters/express.mjs +4 -3
  8. package/dist/adapters/fastify/fastifyRequestHandler.d.ts.map +1 -1
  9. package/dist/adapters/fastify/index.js +8 -5
  10. package/dist/adapters/fastify/index.mjs +8 -5
  11. package/dist/adapters/fetch/fetchRequestHandler.d.ts.map +1 -1
  12. package/dist/adapters/fetch/index.js +6 -4
  13. package/dist/adapters/fetch/index.mjs +6 -4
  14. package/dist/adapters/fetch/types.d.ts +2 -1
  15. package/dist/adapters/fetch/types.d.ts.map +1 -1
  16. package/dist/adapters/next.js +4 -3
  17. package/dist/adapters/next.mjs +4 -3
  18. package/dist/adapters/node-http/index.js +4 -3
  19. package/dist/adapters/node-http/index.mjs +4 -3
  20. package/dist/adapters/node-http/nodeHTTPRequestHandler.d.ts.map +1 -1
  21. package/dist/adapters/node-http/types.d.ts +2 -1
  22. package/dist/adapters/node-http/types.d.ts.map +1 -1
  23. package/dist/adapters/standalone.d.ts +1 -6
  24. package/dist/adapters/standalone.d.ts.map +1 -1
  25. package/dist/adapters/standalone.js +8 -19
  26. package/dist/adapters/standalone.mjs +8 -19
  27. package/dist/adapters/ws.d.ts +25 -4
  28. package/dist/adapters/ws.d.ts.map +1 -1
  29. package/dist/adapters/ws.js +67 -14
  30. package/dist/adapters/ws.mjs +58 -6
  31. package/dist/bundle-analysis.json +910 -0
  32. package/dist/config-5de7eae5.js +10 -0
  33. package/dist/config-60fc2667.js +7 -0
  34. package/dist/config-ab4c1c6b.mjs +5 -0
  35. package/dist/core/index.d.ts +1 -1
  36. package/dist/core/index.d.ts.map +1 -1
  37. package/dist/core/initTRPC.d.ts +1 -1
  38. package/dist/core/internals/builderTypes.d.ts +11 -0
  39. package/dist/core/internals/builderTypes.d.ts.map +1 -0
  40. package/dist/core/internals/getParseFn.d.ts +0 -5
  41. package/dist/core/internals/getParseFn.d.ts.map +1 -1
  42. package/dist/core/internals/mergeRouters.d.ts +0 -3
  43. package/dist/core/internals/mergeRouters.d.ts.map +1 -1
  44. package/dist/core/internals/procedureBuilder.d.ts +24 -27
  45. package/dist/core/internals/procedureBuilder.d.ts.map +1 -1
  46. package/dist/core/internals/utils.d.ts +7 -8
  47. package/dist/core/internals/utils.d.ts.map +1 -1
  48. package/dist/core/middleware.d.ts +16 -15
  49. package/dist/core/middleware.d.ts.map +1 -1
  50. package/dist/core/procedure.d.ts +41 -42
  51. package/dist/core/procedure.d.ts.map +1 -1
  52. package/dist/core/router.d.ts +9 -56
  53. package/dist/core/router.d.ts.map +1 -1
  54. package/dist/core/types.d.ts +7 -12
  55. package/dist/core/types.d.ts.map +1 -1
  56. package/dist/http/index.js +3 -2
  57. package/dist/http/index.mjs +3 -2
  58. package/dist/http/resolveHTTPResponse.d.ts +3 -3
  59. package/dist/http/resolveHTTPResponse.d.ts.map +1 -1
  60. package/dist/http/types.d.ts +22 -1
  61. package/dist/http/types.d.ts.map +1 -1
  62. package/dist/index.d.ts +10 -2
  63. package/dist/index.d.ts.map +1 -1
  64. package/dist/index.js +24 -811
  65. package/dist/index.mjs +15 -802
  66. package/dist/{nodeHTTPRequestHandler-cf01c646.mjs → nodeHTTPRequestHandler-0986c5a1.mjs} +8 -3
  67. package/dist/{nodeHTTPRequestHandler-b7d358fe.js → nodeHTTPRequestHandler-18f3370e.js} +8 -3
  68. package/dist/{nodeHTTPRequestHandler-9781faee.js → nodeHTTPRequestHandler-388f5fce.js} +8 -3
  69. package/dist/{resolveHTTPResponse-68c8befb.mjs → resolveHTTPResponse-55c648bd.mjs} +14 -12
  70. package/dist/{resolveHTTPResponse-79011e44.js → resolveHTTPResponse-5def1b0c.js} +15 -13
  71. package/dist/{resolveHTTPResponse-051b3a40.js → resolveHTTPResponse-8d474952.js} +12 -12
  72. package/dist/{config-3ab6b85e.js → router-3c22fe56.js} +9 -46
  73. package/dist/{config-4c0f8e88.mjs → router-5274e533.mjs} +10 -45
  74. package/dist/{config-f356f2fd.js → router-a1635eab.js} +9 -44
  75. package/dist/rpc/envelopes.d.ts +1 -5
  76. package/dist/rpc/envelopes.d.ts.map +1 -1
  77. package/dist/rpc/index.d.ts +0 -1
  78. package/dist/rpc/index.d.ts.map +1 -1
  79. package/dist/rpc/index.js +0 -2
  80. package/dist/rpc/index.mjs +0 -1
  81. package/dist/shared/getErrorShape.d.ts +1 -1
  82. package/dist/shared/getErrorShape.d.ts.map +1 -1
  83. package/dist/shared/index.d.ts +1 -0
  84. package/dist/shared/index.d.ts.map +1 -1
  85. package/dist/shared/jsonify.d.ts +3 -2
  86. package/dist/shared/jsonify.d.ts.map +1 -1
  87. package/dist/shared/transformTRPCResponse.d.ts +1 -1
  88. package/dist/shared/transformTRPCResponse.d.ts.map +1 -1
  89. package/dist/shared/types.d.ts +6 -0
  90. package/dist/shared/types.d.ts.map +1 -0
  91. package/dist/types.d.ts +5 -0
  92. package/dist/types.d.ts.map +1 -1
  93. package/dist/unstableInternalsExport-10cc2bae.mjs +353 -0
  94. package/dist/unstableInternalsExport-a064a7dd.js +349 -0
  95. package/dist/unstableInternalsExport-bf8496ea.js +363 -0
  96. package/dist/unstableInternalsExport.d.ts +11 -0
  97. package/dist/unstableInternalsExport.d.ts.map +1 -0
  98. package/dist/unstableInternalsExport.js +16 -0
  99. package/dist/unstableInternalsExport.mjs +5 -0
  100. package/package.json +9 -3
  101. package/src/adapters/aws-lambda/index.ts +11 -7
  102. package/src/adapters/aws-lambda/utils.ts +3 -0
  103. package/src/adapters/fastify/fastifyRequestHandler.ts +9 -5
  104. package/src/adapters/fetch/fetchRequestHandler.ts +9 -3
  105. package/src/adapters/fetch/types.ts +2 -1
  106. package/src/adapters/node-http/nodeHTTPRequestHandler.ts +15 -4
  107. package/src/adapters/node-http/types.ts +2 -1
  108. package/src/adapters/standalone.ts +4 -22
  109. package/src/adapters/ws.ts +110 -14
  110. package/src/core/index.ts +1 -0
  111. package/src/core/internals/builderTypes.ts +11 -0
  112. package/src/core/internals/getParseFn.ts +0 -13
  113. package/src/core/internals/mergeRouters.ts +0 -4
  114. package/src/core/internals/procedureBuilder.ts +50 -70
  115. package/src/core/internals/utils.ts +11 -8
  116. package/src/core/middleware.ts +37 -31
  117. package/src/core/procedure.ts +46 -54
  118. package/src/core/router.ts +19 -117
  119. package/src/core/types.ts +11 -20
  120. package/src/http/resolveHTTPResponse.ts +17 -14
  121. package/src/http/types.ts +24 -1
  122. package/src/index.ts +16 -2
  123. package/src/rpc/envelopes.ts +1 -6
  124. package/src/rpc/index.ts +0 -1
  125. package/src/shared/getErrorShape.ts +2 -1
  126. package/src/shared/index.ts +2 -0
  127. package/src/shared/jsonify.ts +9 -5
  128. package/src/shared/transformTRPCResponse.ts +1 -1
  129. package/src/shared/types.ts +9 -0
  130. package/src/types.ts +8 -0
  131. package/src/unstableInternalsExport.ts +10 -0
  132. package/unstableInternalsExport/index.d.ts +1 -0
  133. package/unstableInternalsExport/index.js +1 -0
  134. package/adapters/zodFileSchema/index.d.ts +0 -1
  135. package/adapters/zodFileSchema/index.js +0 -1
  136. package/dist/adapters/lambda/index.d.ts +0 -12
  137. package/dist/adapters/lambda/index.d.ts.map +0 -1
  138. package/dist/deprecated/internals/middlewares.d.ts +0 -52
  139. package/dist/deprecated/internals/middlewares.d.ts.map +0 -1
  140. package/dist/deprecated/internals/procedure.d.ts +0 -96
  141. package/dist/deprecated/internals/procedure.d.ts.map +0 -1
  142. package/dist/deprecated/interop.d.ts +0 -44
  143. package/dist/deprecated/interop.d.ts.map +0 -1
  144. package/dist/deprecated/router.d.ts +0 -204
  145. package/dist/deprecated/router.d.ts.map +0 -1
  146. package/dist/internals.d.ts +0 -10
  147. package/dist/internals.d.ts.map +0 -1
  148. package/dist/parseTRPCMessage-1377f305.js +0 -56
  149. package/dist/parseTRPCMessage-95955211.js +0 -63
  150. package/dist/parseTRPCMessage-a0f17853.mjs +0 -54
  151. package/dist/rpc/parseTRPCMessage.d.ts +0 -5
  152. package/dist/rpc/parseTRPCMessage.d.ts.map +0 -1
  153. package/dist/subscription.d.ts +0 -13
  154. package/dist/subscription.d.ts.map +0 -1
  155. package/dist/subscription.js +0 -38
  156. package/dist/subscription.mjs +0 -34
  157. package/src/adapters/lambda/index.ts +0 -18
  158. package/src/deprecated/internals/middlewares.ts +0 -61
  159. package/src/deprecated/internals/procedure.ts +0 -411
  160. package/src/deprecated/interop.ts +0 -232
  161. package/src/deprecated/router.ts +0 -945
  162. package/src/internals.ts +0 -12
  163. package/src/rpc/parseTRPCMessage.ts +0 -84
  164. package/src/subscription.ts +0 -43
@@ -7,19 +7,8 @@ import { defaultTransformer } from '../transformer';
7
7
  import { AnyRootConfig } from './internals/config';
8
8
  import { omitPrototype } from './internals/omitPrototype';
9
9
  import { ProcedureCallOptions } from './internals/procedureBuilder';
10
- import {
11
- AnyMutationProcedure,
12
- AnyProcedure,
13
- AnyQueryProcedure,
14
- AnySubscriptionProcedure,
15
- ProcedureArgs,
16
- } from './procedure';
17
- import {
18
- inferHandlerInput,
19
- inferProcedureOutput,
20
- ProcedureType,
21
- procedureTypes,
22
- } from './types';
10
+ import { AnyProcedure, ProcedureArgs } from './procedure';
11
+ import { ProcedureType } from './types';
23
12
 
24
13
  /** @internal **/
25
14
  export type ProcedureRecord = Record<string, AnyProcedure>;
@@ -28,66 +17,19 @@ export interface ProcedureRouterRecord {
28
17
  [key: string]: AnyProcedure | AnyRouter;
29
18
  }
30
19
 
31
- /**
32
- * @deprecated
33
- */
34
- interface DeprecatedProcedureRouterRecord {
35
- queries: Record<string, AnyQueryProcedure>;
36
- mutations: Record<string, AnyMutationProcedure>;
37
- subscriptions: Record<string, AnySubscriptionProcedure>;
38
- }
39
-
40
20
  export interface RouterDef<
41
21
  TConfig extends AnyRootConfig,
42
22
  TRecord extends ProcedureRouterRecord,
43
- /**
44
- * @deprecated
45
- */
46
- TOld extends DeprecatedProcedureRouterRecord = {
47
- // eslint-disable-next-line @typescript-eslint/ban-types
48
- queries: {};
49
- // eslint-disable-next-line @typescript-eslint/ban-types
50
- mutations: {};
51
- // eslint-disable-next-line @typescript-eslint/ban-types
52
- subscriptions: {};
53
- },
54
23
  > {
55
24
  _config: TConfig;
56
25
  router: true;
26
+ procedure?: never;
57
27
  procedures: TRecord;
58
28
  record: TRecord;
59
- /**
60
- * V9 queries
61
- * @deprecated
62
- */
63
- queries: TOld['queries'];
64
- /**
65
- * V9 mutations
66
- * @deprecated
67
- */
68
- mutations: TOld['mutations'];
69
- /**
70
- * V9 subscriptions
71
- * @deprecated
72
- */
73
- subscriptions: TOld['subscriptions'];
74
29
  }
75
30
 
76
- export type AnyRouterDef<
77
- TConfig extends AnyRootConfig = AnyRootConfig,
78
- TOld extends DeprecatedProcedureRouterRecord = any,
79
- > = RouterDef<TConfig, any, TOld>;
80
-
81
- /**
82
- * @internal
83
- */
84
- type inferHandlerFn<TProcedures extends ProcedureRecord> = <
85
- TProcedure extends TProcedures[TPath],
86
- TPath extends string & keyof TProcedures,
87
- >(
88
- path: TPath,
89
- ...args: inferHandlerInput<TProcedure>
90
- ) => Promise<inferProcedureOutput<TProcedure>>;
31
+ export type AnyRouterDef<TConfig extends AnyRootConfig = AnyRootConfig> =
32
+ RouterDef<TConfig, any>;
91
33
 
92
34
  type DecorateProcedure<TProcedure extends AnyProcedure> = (
93
35
  input: ProcedureArgs<TProcedure['_def']>[0],
@@ -109,20 +51,7 @@ type DecoratedProcedureRecord<TProcedures extends ProcedureRouterRecord> = {
109
51
  */
110
52
  type RouterCaller<TDef extends AnyRouterDef> = (
111
53
  ctx: TDef['_config']['$types']['ctx'],
112
- ) => DecoratedProcedureRecord<TDef['record']> & {
113
- /**
114
- * @deprecated
115
- */
116
- query: inferHandlerFn<TDef['queries']>;
117
- /**
118
- * @deprecated
119
- */
120
- mutation: inferHandlerFn<TDef['mutations']>;
121
- /**
122
- * @deprecated
123
- */
124
- subscription: inferHandlerFn<TDef['subscriptions']>;
125
- };
54
+ ) => DecoratedProcedureRecord<TDef['record']>;
126
55
 
127
56
  export interface Router<TDef extends AnyRouterDef> {
128
57
  _def: TDef;
@@ -179,9 +108,9 @@ export type CreateRouterInner<
179
108
  TProcRouterRecord extends ProcedureRouterRecord,
180
109
  > = Router<RouterDef<TConfig, TProcRouterRecord>> &
181
110
  /**
182
- * This should be deleted in v11
183
- * @deprecated
184
- */ TProcRouterRecord;
111
+ * This adds ability to call procedures directly but is primarily used for quick access in type inference
112
+ */
113
+ TProcRouterRecord;
185
114
 
186
115
  /**
187
116
  * @internal
@@ -229,15 +158,6 @@ export function createRouterFactory<TConfig extends AnyRootConfig>(
229
158
  procedures: routerProcedures,
230
159
  ...emptyRouter,
231
160
  record: procedures,
232
- queries: Object.entries(routerProcedures)
233
- .filter((pair) => (pair[1] as any)._def.query)
234
- .reduce((acc, [key, val]) => ({ ...acc, [key]: val }), {}),
235
- mutations: Object.entries(routerProcedures)
236
- .filter((pair) => (pair[1] as any)._def.mutation)
237
- .reduce((acc, [key, val]) => ({ ...acc, [key]: val }), {}),
238
- subscriptions: Object.entries(routerProcedures)
239
- .filter((pair) => (pair[1] as any)._def.subscription)
240
- .reduce((acc, [key, val]) => ({ ...acc, [key]: val }), {}),
241
161
  };
242
162
 
243
163
  const router: AnyRouter = {
@@ -245,35 +165,14 @@ export function createRouterFactory<TConfig extends AnyRootConfig>(
245
165
  _def,
246
166
  createCaller(ctx) {
247
167
  const proxy = createRecursiveProxy(({ path, args }) => {
248
- // interop mode
249
- if (
250
- path.length === 1 &&
251
- procedureTypes.includes(path[0] as ProcedureType)
252
- ) {
253
- return callProcedure({
254
- procedures: _def.procedures,
255
- path: args[0] as string,
256
- rawInput: args[1],
257
- ctx,
258
- type: path[0] as ProcedureType,
259
- });
260
- }
261
-
262
168
  const fullPath = path.join('.');
263
169
  const procedure = _def.procedures[fullPath] as AnyProcedure;
264
170
 
265
- let type: ProcedureType = 'query';
266
- if (procedure._def.mutation) {
267
- type = 'mutation';
268
- } else if (procedure._def.subscription) {
269
- type = 'subscription';
270
- }
271
-
272
171
  return procedure({
273
172
  path: fullPath,
274
- rawInput: args[0],
173
+ getRawInput: async () => args[0],
275
174
  ctx,
276
- type,
175
+ type: procedure._def.type,
277
176
  });
278
177
  });
279
178
 
@@ -303,6 +202,11 @@ export function createRouterFactory<TConfig extends AnyRootConfig>(
303
202
  };
304
203
  }
305
204
 
205
+ function isProcedure(
206
+ procedureOrRouter: AnyProcedure | AnyRouter,
207
+ ): procedureOrRouter is AnyProcedure {
208
+ return !!procedureOrRouter._def.procedure;
209
+ }
306
210
  /**
307
211
  * @internal
308
212
  */
@@ -310,15 +214,13 @@ export function callProcedure(
310
214
  opts: ProcedureCallOptions & { procedures: ProcedureRouterRecord },
311
215
  ) {
312
216
  const { type, path } = opts;
313
-
314
- if (!(path in opts.procedures) || !opts.procedures[path]?._def[type]) {
217
+ const proc = opts.procedures[path];
218
+ if (!proc || !isProcedure(proc) || proc._def.type !== type) {
315
219
  throw new TRPCError({
316
220
  code: 'NOT_FOUND',
317
221
  message: `No "${type}"-procedure on path "${path}"`,
318
222
  });
319
223
  }
320
224
 
321
- const procedure = opts.procedures[path] as AnyProcedure;
322
-
323
- return procedure(opts);
225
+ return proc(opts);
324
226
  }
package/src/core/types.ts CHANGED
@@ -1,5 +1,4 @@
1
- import { inferObservableValue } from '../observable';
2
- import { inferTransformedProcedureOutput } from '../shared/jsonify';
1
+ import { inferTransformedProcedureOutput } from '../shared';
3
2
  import { AnyProcedure, ProcedureArgs } from './procedure';
4
3
  import { AnyRouter, AnyRouterDef, Router } from './router';
5
4
 
@@ -11,12 +10,14 @@ export type inferRouterDef<TRouter extends AnyRouter> = TRouter extends Router<
11
10
  : never
12
11
  : never;
13
12
 
13
+ export type inferRouterConfig<TRouter extends AnyRouter> =
14
+ inferRouterDef<TRouter>['_config'];
14
15
  export type inferRouterContext<TRouter extends AnyRouter> =
15
- inferRouterDef<TRouter>['_config']['$types']['ctx'];
16
+ inferRouterConfig<TRouter>['$types']['ctx'];
16
17
  export type inferRouterError<TRouter extends AnyRouter> =
17
- inferRouterDef<TRouter>['_config']['$types']['errorShape'];
18
+ inferRouterConfig<TRouter>['$types']['errorShape'];
18
19
  export type inferRouterMeta<TRouter extends AnyRouter> =
19
- inferRouterDef<TRouter>['_config']['$types']['meta'];
20
+ inferRouterConfig<TRouter>['$types']['meta'];
20
21
 
21
22
  export const procedureTypes = ['query', 'mutation', 'subscription'] as const;
22
23
  /**
@@ -29,7 +30,7 @@ export type inferHandlerInput<TProcedure extends AnyProcedure> = ProcedureArgs<
29
30
  >;
30
31
 
31
32
  export type inferProcedureInput<TProcedure extends AnyProcedure> =
32
- inferHandlerInput<TProcedure>[0];
33
+ inferProcedureParams<TProcedure>['_input_in'];
33
34
 
34
35
  export type inferProcedureParams<TProcedure> = TProcedure extends AnyProcedure
35
36
  ? TProcedure['_def']
@@ -37,19 +38,6 @@ export type inferProcedureParams<TProcedure> = TProcedure extends AnyProcedure
37
38
  export type inferProcedureOutput<TProcedure> =
38
39
  inferProcedureParams<TProcedure>['_output_out'];
39
40
 
40
- /**
41
- * @deprecated will be removed in next major as it's v9 stuff
42
- */
43
- export type inferSubscriptionOutput<
44
- TRouter extends AnyRouter,
45
- TPath extends string & keyof TRouter['_def']['subscriptions'],
46
- > = inferObservableValue<
47
- inferProcedureOutput<TRouter['_def']['subscriptions'][TPath]>
48
- >;
49
-
50
- export type inferProcedureClientError<TProcedure extends AnyProcedure> =
51
- inferProcedureParams<TProcedure>['_config']['errorShape'];
52
-
53
41
  type GetInferenceHelpers<
54
42
  TType extends 'input' | 'output',
55
43
  TRouter extends AnyRouter,
@@ -60,7 +48,10 @@ type GetInferenceHelpers<
60
48
  : TRouterOrProcedure extends AnyProcedure
61
49
  ? TType extends 'input'
62
50
  ? inferProcedureInput<TRouterOrProcedure>
63
- : inferTransformedProcedureOutput<TRouterOrProcedure>
51
+ : inferTransformedProcedureOutput<
52
+ TRouter['_def']['_config'],
53
+ TRouterOrProcedure
54
+ >
64
55
  : never
65
56
  : never;
66
57
  };
@@ -16,7 +16,12 @@ import {
16
16
  } from './contentType';
17
17
  import { getHTTPStatusCode } from './getHTTPStatusCode';
18
18
  import { HTTPHeaders, HTTPResponse, ResponseChunk } from './internals/types';
19
- import { HTTPBaseHandlerOptions, HTTPRequest } from './types';
19
+ import {
20
+ HTTPBaseHandlerOptions,
21
+ HTTPRequest,
22
+ ResolveHTTPRequestOptionsContextFn,
23
+ TRPCRequestInfo,
24
+ } from './types';
20
25
 
21
26
  const HTTP_METHOD_PROCEDURE_TYPE_MAP: Record<
22
27
  string,
@@ -40,7 +45,7 @@ interface ResolveHTTPRequestOptions<
40
45
  TRouter extends AnyRouter,
41
46
  TRequest extends HTTPRequest,
42
47
  > extends HTTPBaseHandlerOptions<TRouter, TRequest> {
43
- createContext: () => Promise<inferRouterContext<TRouter>>;
48
+ createContext: ResolveHTTPRequestOptionsContextFn<TRouter>;
44
49
  req: TRequest;
45
50
  path: string;
46
51
  error?: Maybe<TRPCError>;
@@ -145,7 +150,7 @@ async function inputToProcedureCall<
145
150
  const data = await callProcedure({
146
151
  procedures: opts.router._def.procedures,
147
152
  path,
148
- rawInput: input,
153
+ getRawInput: async () => input,
149
154
  ctx,
150
155
  type,
151
156
  });
@@ -287,17 +292,6 @@ export async function resolveHTTPResponse<
287
292
  req.headers['trpc-batch-mode'] === 'stream';
288
293
 
289
294
  try {
290
- // we create context first so that (unless `createContext()` throws)
291
- // error handler may access context information
292
- //
293
- // this way even if the client sends malformed input that might cause an exception:
294
- // - `opts.error` has value,
295
- // - batching is not enabled,
296
- // - `type` is unknown,
297
- // - `getInputs` throws because of malformed JSON,
298
- // context value is still available to the error handler
299
- ctx = await opts.createContext();
300
-
301
295
  if (opts.error) {
302
296
  throw opts.error;
303
297
  }
@@ -328,6 +322,15 @@ export async function resolveHTTPResponse<
328
322
  paths = isBatchCall
329
323
  ? decodeURIComponent(opts.path).split(',')
330
324
  : [opts.path];
325
+ const info: TRPCRequestInfo = {
326
+ isBatchCall,
327
+ calls: paths.map((path, idx) => ({
328
+ path,
329
+ type,
330
+ input: inputs[idx] ?? undefined,
331
+ })),
332
+ };
333
+ ctx = await opts.createContext({ info });
331
334
  const promises = paths.map((path, index) =>
332
335
  inputToProcedureCall({ opts, ctx, type, input: inputs[index], path }),
333
336
  );
package/src/http/types.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { AnyRouter } from '../core';
1
+ import { AnyRouter, inferRouterContext, ProcedureType } from '../core';
2
2
  import { BaseHandlerOptions } from '../internals/types';
3
3
  import { HTTPHeaders, ResponseMetaFn } from './internals/types';
4
4
 
@@ -26,3 +26,26 @@ export interface ResponseMeta {
26
26
  status?: number;
27
27
  headers?: Record<string, string>;
28
28
  }
29
+
30
+ /** @internal */
31
+ export type ProcedureCall = {
32
+ type: ProcedureType;
33
+ input?: unknown;
34
+ path: string;
35
+ };
36
+
37
+ /**
38
+ * Information about the incoming request
39
+ * @internal
40
+ */
41
+ export type TRPCRequestInfo = {
42
+ isBatchCall: boolean;
43
+ calls: ProcedureCall[];
44
+ };
45
+
46
+ /**
47
+ * Inner createContext function for `resolveHTTPResponse` used to forward `TRPCRequestInfo` to `createContext`
48
+ * @internal
49
+ */
50
+ export type ResolveHTTPRequestOptionsContextFn<TRouter extends AnyRouter> =
51
+ (opts: { info: TRPCRequestInfo }) => Promise<inferRouterContext<TRouter>>;
package/src/index.ts CHANGED
@@ -1,6 +1,20 @@
1
+ // FIXME: this file should only export
2
+ // - `initTRPC`
3
+ // - `TRPCError`
4
+ // - (maybe something else?)
5
+
1
6
  export * from './transformer';
2
7
  export * from './error/TRPCError';
3
8
  export * from './types';
4
- export { router } from './deprecated/router';
5
9
  export * from './core';
6
- export * from './internals';
10
+ export { type DefaultErrorShape } from './error/formatter';
11
+ export type { RootConfig, AnyRootConfig } from './core/internals/config';
12
+
13
+ /**
14
+ * ⚠️ ⚠️ ⚠️ Danger zone ⚠️ ⚠️ ⚠️
15
+ * @remark
16
+ * Do not use things from this export as they are subject to change without notice. They only exists to support `.d.ts`-files
17
+ * If you need something from here, please open an issue and we'll see if we can expose it in a stable way.
18
+ * @deprecated
19
+ */
20
+ export * as unstableExternalsExport from './unstableInternalsExport';
@@ -1,5 +1,5 @@
1
1
  /* eslint-disable @typescript-eslint/no-namespace */
2
- import { ProcedureType } from '../deprecated/router';
2
+ import { ProcedureType } from '../core';
3
3
  import { TRPC_ERROR_CODE_NUMBER } from './codes';
4
4
 
5
5
  /**
@@ -64,11 +64,6 @@ export interface TRPCSuccessResponse<TData>
64
64
  }
65
65
  > {}
66
66
 
67
- /**
68
- * @deprecated use `TRPCSuccessResponse` instead
69
- */
70
- export type TRPCResultResponse<TData = unknown> = TRPCSuccessResponse<TData>;
71
-
72
67
  export interface TRPCErrorResponse<
73
68
  TError extends TRPCErrorShape = TRPCErrorShape,
74
69
  > extends JSONRPC2.ErrorResponse<TError> {}
package/src/rpc/index.ts CHANGED
@@ -1,3 +1,2 @@
1
1
  export * from './codes';
2
2
  export * from './envelopes';
3
- export * from './parseTRPCMessage';
@@ -1,7 +1,8 @@
1
1
  import { ProcedureType } from '../core';
2
+ import { AnyRootConfig } from '../core/internals/config';
3
+ import { DefaultErrorShape } from '../error/formatter';
2
4
  import { TRPCError } from '../error/TRPCError';
3
5
  import { getHTTPStatusCodeFromError } from '../http/getHTTPStatusCode';
4
- import { AnyRootConfig, DefaultErrorShape } from '../internals';
5
6
  import { TRPC_ERROR_CODES_BY_KEY } from '../rpc';
6
7
 
7
8
  /**
@@ -6,3 +6,5 @@ export * from './transformTRPCResponse';
6
6
  export type { SerializeObject, Serialize } from './internal/serialize';
7
7
 
8
8
  export { getErrorShape } from './getErrorShape';
9
+
10
+ export * from './types';
@@ -1,4 +1,5 @@
1
1
  import { AnyProcedure } from '../core';
2
+ import { AnyRootConfig } from '../core/internals/config';
2
3
  import { inferObservableValue } from '../observable';
3
4
  import { DefaultDataTransformer } from '../transformer';
4
5
  import type { Serialize } from './internal/serialize';
@@ -6,13 +7,16 @@ import type { Serialize } from './internal/serialize';
6
7
  /**
7
8
  * @internal
8
9
  */
9
- export type inferTransformedProcedureOutput<TProcedure extends AnyProcedure> =
10
- TProcedure['_def']['_config']['transformer'] extends DefaultDataTransformer
11
- ? Serialize<TProcedure['_def']['_output_out']>
12
- : TProcedure['_def']['_output_out'];
10
+ export type inferTransformedProcedureOutput<
11
+ TConfig extends AnyRootConfig,
12
+ TProcedure extends AnyProcedure,
13
+ > = TConfig['transformer'] extends DefaultDataTransformer
14
+ ? Serialize<TProcedure['_def']['_output_out']>
15
+ : TProcedure['_def']['_output_out'];
13
16
 
14
17
  export type inferTransformedSubscriptionOutput<
18
+ TConfig extends AnyRootConfig,
15
19
  TProcedure extends AnyProcedure,
16
- > = TProcedure['_def']['_config']['transformer'] extends DefaultDataTransformer
20
+ > = TConfig['transformer'] extends DefaultDataTransformer
17
21
  ? Serialize<inferObservableValue<TProcedure['_def']['_output_out']>>
18
22
  : inferObservableValue<TProcedure['_def']['_output_out']>;
@@ -1,4 +1,4 @@
1
- import { AnyRootConfig } from '../internals';
1
+ import { AnyRootConfig } from '../core/internals/config';
2
2
  import { TRPCResponse, TRPCResponseMessage } from '../rpc';
3
3
 
4
4
  function transformTRPCResponseItem<
@@ -0,0 +1,9 @@
1
+ import { AnyRouter } from '../core';
2
+ import { AnyRootConfig } from '../core/internals/config';
3
+
4
+ export type TRPCInferrable = AnyRouter | AnyRootConfig;
5
+ export type inferConfig<TInferrable extends TRPCInferrable> =
6
+ TInferrable extends AnyRouter ? TInferrable['_def']['_config'] : TInferrable;
7
+
8
+ export type inferErrorShape<TInferrable extends TRPCInferrable> =
9
+ inferConfig<TInferrable>['$types']['errorShape'];
package/src/types.ts CHANGED
@@ -115,3 +115,11 @@ export type DeepPartial<TObject> = TObject extends object
115
115
  [P in keyof TObject]?: DeepPartial<TObject[P]>;
116
116
  }
117
117
  : TObject;
118
+
119
+ /**
120
+ * Omits the key without removing a potential union
121
+ * @internal
122
+ */
123
+ export type DistributiveOmit<TObj, TKey extends keyof any> = TObj extends any
124
+ ? Omit<TObj, TKey>
125
+ : never;
@@ -0,0 +1,10 @@
1
+ /**
2
+ * These types have to be exported so users can generate their own types definitions files
3
+ *
4
+ * @remark Do not `import` anything here as it will be unreliable between minor versions of tRPC
5
+ */
6
+ export { mergeRouters } from './core/internals/mergeRouters';
7
+ export * from './core/internals/procedureBuilder';
8
+ export * from './core/internals/utils';
9
+ export type { MiddlewareFunction, MiddlewareBuilder } from './core/middleware';
10
+ export * from './core/procedure';
@@ -0,0 +1 @@
1
+ export * from '../dist/unstableInternalsExport';
@@ -0,0 +1 @@
1
+ module.exports = require('../dist/unstableInternalsExport');
@@ -1 +0,0 @@
1
- export * from '../../dist/adapters/zodFileSchema';
@@ -1 +0,0 @@
1
- module.exports = require('../../dist/adapters/zodFileSchema');
@@ -1,12 +0,0 @@
1
- import { awsLambdaRequestHandler, CreateAWSLambdaContextOptions } from '../aws-lambda';
2
- import { APIGatewayEvent } from '../aws-lambda/utils';
3
- export * from '../aws-lambda';
4
- /**
5
- * @deprecated use `aws-lambda` instead
6
- */
7
- export type CreateLambdaContextOptions<TEvent extends APIGatewayEvent> = CreateAWSLambdaContextOptions<TEvent>;
8
- /**
9
- * @deprecated use `aws-lambda` instead
10
- */
11
- export declare const lambdaRequestHandler: typeof awsLambdaRequestHandler;
12
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/adapters/lambda/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,uBAAuB,EACvB,6BAA6B,EAC9B,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAEtD,cAAc,eAAe,CAAC;AAE9B;;GAEG;AACH,MAAM,MAAM,0BAA0B,CAAC,MAAM,SAAS,eAAe,IACnE,6BAA6B,CAAC,MAAM,CAAC,CAAC;AAExC;;GAEG;AACH,eAAO,MAAM,oBAAoB,gCAA0B,CAAC"}
@@ -1,52 +0,0 @@
1
- import { TRPCError } from '../../error/TRPCError';
2
- import { ProcedureType } from '../router';
3
- /**
4
- * @deprecated
5
- */
6
- export declare const middlewareMarker: "middlewareMarker" & {
7
- __brand: 'middlewareMarker';
8
- };
9
- interface MiddlewareResultBase<TContext> {
10
- /**
11
- * All middlewares should pass through their `next()`'s output.
12
- * Requiring this marker makes sure that can't be forgotten at compile-time.
13
- */
14
- readonly marker: typeof middlewareMarker;
15
- ctx: TContext;
16
- }
17
- /**
18
- * @deprecated
19
- */
20
- interface MiddlewareOKResult<TContext> extends MiddlewareResultBase<TContext> {
21
- ok: true;
22
- data: unknown;
23
- }
24
- /**
25
- * @deprecated
26
- */
27
- interface MiddlewareErrorResult<TContext> extends MiddlewareResultBase<TContext> {
28
- ok: false;
29
- error: TRPCError;
30
- }
31
- /**
32
- * @deprecated
33
- */
34
- export type MiddlewareResult<TContext> = MiddlewareErrorResult<TContext> | MiddlewareOKResult<TContext>;
35
- /**
36
- * @deprecated
37
- */
38
- export type MiddlewareFunction<TInputContext, TContext, TMeta> = (opts: {
39
- ctx: TInputContext;
40
- type: ProcedureType;
41
- path: string;
42
- rawInput: unknown;
43
- meta?: TMeta;
44
- next: {
45
- (): Promise<MiddlewareResult<TInputContext>>;
46
- <TNewContext>(opts: {
47
- ctx: TNewContext;
48
- }): Promise<MiddlewareResult<TNewContext>>;
49
- };
50
- }) => Promise<MiddlewareResult<TContext>>;
51
- export {};
52
- //# sourceMappingURL=middlewares.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"middlewares.d.ts","sourceRoot":"","sources":["../../../src/deprecated/internals/middlewares.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAE1C;;GAEG;AACH,eAAO,MAAM,gBAAgB;aAClB,kBAAkB;CAC5B,CAAC;AAEF,UAAU,oBAAoB,CAAC,QAAQ;IACrC;;;OAGG;IACH,QAAQ,CAAC,MAAM,EAAE,OAAO,gBAAgB,CAAC;IACzC,GAAG,EAAE,QAAQ,CAAC;CACf;AAED;;GAEG;AACH,UAAU,kBAAkB,CAAC,QAAQ,CAAE,SAAQ,oBAAoB,CAAC,QAAQ,CAAC;IAC3E,EAAE,EAAE,IAAI,CAAC;IACT,IAAI,EAAE,OAAO,CAAC;CAEf;AAED;;GAEG;AACH,UAAU,qBAAqB,CAAC,QAAQ,CACtC,SAAQ,oBAAoB,CAAC,QAAQ,CAAC;IACtC,EAAE,EAAE,KAAK,CAAC;IACV,KAAK,EAAE,SAAS,CAAC;CAElB;AAED;;GAEG;AACH,MAAM,MAAM,gBAAgB,CAAC,QAAQ,IACjC,qBAAqB,CAAC,QAAQ,CAAC,GAC/B,kBAAkB,CAAC,QAAQ,CAAC,CAAC;AAEjC;;GAEG;AACH,MAAM,MAAM,kBAAkB,CAAC,aAAa,EAAE,QAAQ,EAAE,KAAK,IAAI,CAAC,IAAI,EAAE;IACtE,GAAG,EAAE,aAAa,CAAC;IACnB,IAAI,EAAE,aAAa,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE,KAAK,CAAC;IACb,IAAI,EAAE;QACJ,IAAI,OAAO,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC,CAAC;QAC7C,CAAC,WAAW,EAAE,IAAI,EAAE;YAAE,GAAG,EAAE,WAAW,CAAA;SAAE,GAAG,OAAO,CAChD,gBAAgB,CAAC,WAAW,CAAC,CAC9B,CAAC;KACH,CAAC;CACH,KAAK,OAAO,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,CAAC"}