@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
package/dist/index.mjs CHANGED
@@ -1,804 +1,11 @@
1
- import { c as createRouterFactory, d as defaultFormatter, a as defaultTransformer, g as getDataTransformer$1, i as isServerDefault } from './config-4c0f8e88.mjs';
2
- export { b as callProcedure, a as defaultTransformer, g as getDataTransformer, p as procedureTypes } from './config-4c0f8e88.mjs';
3
- import { T as TRPCError, g as getTRPCErrorFromUnknown } from './TRPCError-816ff32e.mjs';
1
+ import { d as defaultFormatter, g as getDataTransformer, a as defaultTransformer, c as createRouterFactory } from './router-5274e533.mjs';
2
+ export { b as callProcedure, a as defaultTransformer, g as getDataTransformer } from './router-5274e533.mjs';
4
3
  export { T as TRPCError, g as getTRPCErrorFromUnknown } from './TRPCError-816ff32e.mjs';
5
- import { g as getHTTPStatusCodeFromError, c as createFlatProxy } from './index-f91d720c.mjs';
6
- import { T as TRPC_ERROR_CODES_BY_KEY } from './codes-c924c3db.mjs';
7
-
8
- /**
9
- * @deprecated
10
- */ const middlewareMarker$1 = 'middlewareMarker';
11
-
12
- function getParseFn$1(procedureParser) {
13
- const parser = procedureParser;
14
- if (typeof parser === 'function') {
15
- // ProcedureParserCustomValidatorEsque
16
- return parser;
17
- }
18
- if (typeof parser.parseAsync === 'function') {
19
- // ProcedureParserZodEsque
20
- return parser.parseAsync.bind(parser);
21
- }
22
- if (typeof parser.parse === 'function') {
23
- // ProcedureParserZodEsque
24
- return parser.parse.bind(parser);
25
- }
26
- if (typeof parser.validateSync === 'function') {
27
- // ProcedureParserYupEsque
28
- return parser.validateSync.bind(parser);
29
- }
30
- if (typeof parser.create === 'function') {
31
- // ProcedureParserSuperstructEsque
32
- return parser.create.bind(parser);
33
- }
34
- throw new Error('Could not find a validator fn');
35
- }
36
- /**
37
- * @internal
38
- * @deprecated
39
- */ class Procedure {
40
- _def() {
41
- return {
42
- middlewares: this.middlewares,
43
- resolver: this.resolver,
44
- inputParser: this.inputParser,
45
- outputParser: this.outputParser,
46
- meta: this.meta
47
- };
48
- }
49
- async parseInput(rawInput) {
50
- try {
51
- return await this.parseInputFn(rawInput);
52
- } catch (cause) {
53
- throw new TRPCError({
54
- code: 'BAD_REQUEST',
55
- cause
56
- });
57
- }
58
- }
59
- async parseOutput(rawOutput) {
60
- try {
61
- return await this.parseOutputFn(rawOutput);
62
- } catch (cause) {
63
- throw new TRPCError({
64
- code: 'INTERNAL_SERVER_ERROR',
65
- cause,
66
- message: 'Output validation failed'
67
- });
68
- }
69
- }
70
- /**
71
- * Trigger middlewares in order, parse raw input, call resolver & parse raw output
72
- * @internal
73
- */ async call(opts) {
74
- // wrap the actual resolver and treat as the last "middleware"
75
- const middlewaresWithResolver = this.middlewares.concat([
76
- async ({ ctx })=>{
77
- const input = await this.parseInput(opts.rawInput);
78
- const rawOutput = await this.resolver({
79
- ...opts,
80
- ctx,
81
- input
82
- });
83
- const data = await this.parseOutput(rawOutput);
84
- return {
85
- marker: middlewareMarker$1,
86
- ok: true,
87
- data,
88
- ctx
89
- };
90
- }
91
- ]);
92
- // run the middlewares recursively with the resolver as the last one
93
- const callRecursive = async (callOpts = {
94
- index: 0,
95
- ctx: opts.ctx
96
- })=>{
97
- try {
98
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
99
- const result = await middlewaresWithResolver[callOpts.index]({
100
- ctx: callOpts.ctx,
101
- type: opts.type,
102
- path: opts.path,
103
- rawInput: opts.rawInput,
104
- meta: this.meta,
105
- next: async (nextOpts)=>{
106
- return await callRecursive({
107
- index: callOpts.index + 1,
108
- ctx: nextOpts ? nextOpts.ctx : callOpts.ctx
109
- });
110
- }
111
- });
112
- return result;
113
- } catch (cause) {
114
- return {
115
- ctx: callOpts.ctx,
116
- ok: false,
117
- error: getTRPCErrorFromUnknown(cause),
118
- marker: middlewareMarker$1
119
- };
120
- }
121
- };
122
- // there's always at least one "next" since we wrap this.resolver in a middleware
123
- const result = await callRecursive();
124
- if (!result) {
125
- throw new TRPCError({
126
- code: 'INTERNAL_SERVER_ERROR',
127
- message: 'No result from middlewares - did you forget to `return next()`?'
128
- });
129
- }
130
- if (!result.ok) {
131
- // re-throw original error
132
- throw result.error;
133
- }
134
- return result.data;
135
- }
136
- /**
137
- * Create new procedure with passed middlewares
138
- * @param middlewares
139
- */ inheritMiddlewares(middlewares) {
140
- const Constructor = this.constructor;
141
- const instance = new Constructor({
142
- middlewares: [
143
- ...middlewares,
144
- ...this.middlewares
145
- ],
146
- resolver: this.resolver,
147
- inputParser: this.inputParser,
148
- outputParser: this.outputParser,
149
- meta: this.meta
150
- });
151
- return instance;
152
- }
153
- constructor(opts){
154
- this.middlewares = opts.middlewares;
155
- this.resolver = opts.resolver;
156
- this.inputParser = opts.inputParser;
157
- this.parseInputFn = getParseFn$1(this.inputParser);
158
- this.outputParser = opts.outputParser;
159
- this.parseOutputFn = getParseFn$1(this.outputParser);
160
- this.meta = opts.meta;
161
- }
162
- }
163
- function createProcedure(opts) {
164
- const inputParser = 'input' in opts ? opts.input : (input)=>{
165
- if (input != null) {
166
- throw new TRPCError({
167
- code: 'BAD_REQUEST',
168
- message: 'No input expected'
169
- });
170
- }
171
- return undefined;
172
- };
173
- const outputParser = 'output' in opts && opts.output ? opts.output : (output)=>output;
174
- return new Procedure({
175
- inputParser: inputParser,
176
- resolver: opts.resolve,
177
- middlewares: [],
178
- outputParser: outputParser,
179
- meta: opts.meta
180
- });
181
- }
182
-
183
- function getParseFn(procedureParser) {
184
- const parser = procedureParser;
185
- if (typeof parser === 'function') {
186
- // ParserCustomValidatorEsque
187
- return parser;
188
- }
189
- if (typeof parser.parseAsync === 'function') {
190
- // ParserZodEsque
191
- return parser.parseAsync.bind(parser);
192
- }
193
- if (typeof parser.parse === 'function') {
194
- // ParserZodEsque
195
- // ParserValibotEsque (<= v0.12.X)
196
- return parser.parse.bind(parser);
197
- }
198
- if (typeof parser.validateSync === 'function') {
199
- // ParserYupEsque
200
- return parser.validateSync.bind(parser);
201
- }
202
- if (typeof parser.create === 'function') {
203
- // ParserSuperstructEsque
204
- return parser.create.bind(parser);
205
- }
206
- if (typeof parser.assert === 'function') {
207
- // ParserScaleEsque
208
- return (value)=>{
209
- parser.assert(value);
210
- return value;
211
- };
212
- }
213
- throw new Error('Could not find a validator fn');
214
- }
215
- /**
216
- * @deprecated only for backwards compat
217
- * @internal
218
- */ function getParseFnOrPassThrough(procedureParser) {
219
- if (!procedureParser) {
220
- return (v)=>v;
221
- }
222
- return getParseFn(procedureParser);
223
- }
224
-
225
- /**
226
- * Ensures there are no duplicate keys when building a procedure.
227
- */ function mergeWithoutOverrides(obj1, ...objs) {
228
- const newObj = Object.assign(Object.create(null), obj1);
229
- for (const overrides of objs){
230
- for(const key in overrides){
231
- if (key in newObj && newObj[key] !== overrides[key]) {
232
- throw new Error(`Duplicate key ${key}`);
233
- }
234
- newObj[key] = overrides[key];
235
- }
236
- }
237
- return newObj;
238
- }
239
-
240
- /**
241
- * @internal
242
- */ function createMiddlewareFactory() {
243
- function createMiddlewareInner(middlewares) {
244
- return {
245
- _middlewares: middlewares,
246
- unstable_pipe (middlewareBuilderOrFn) {
247
- const pipedMiddleware = '_middlewares' in middlewareBuilderOrFn ? middlewareBuilderOrFn._middlewares : [
248
- middlewareBuilderOrFn
249
- ];
250
- return createMiddlewareInner([
251
- ...middlewares,
252
- ...pipedMiddleware
253
- ]);
254
- }
255
- };
256
- }
257
- function createMiddleware(fn) {
258
- return createMiddlewareInner([
259
- fn
260
- ]);
261
- }
262
- return createMiddleware;
263
- }
264
- const experimental_standaloneMiddleware = ()=>({
265
- create: createMiddlewareFactory()
266
- });
267
- function isPlainObject(obj) {
268
- return obj && typeof obj === 'object' && !Array.isArray(obj);
269
- }
270
- /**
271
- * @internal
272
- * Please note, `trpc-openapi` uses this function.
273
- */ function createInputMiddleware(parse) {
274
- const inputMiddleware = async ({ next , rawInput , input , })=>{
275
- let parsedInput;
276
- try {
277
- parsedInput = await parse(rawInput);
278
- } catch (cause) {
279
- throw new TRPCError({
280
- code: 'BAD_REQUEST',
281
- cause
282
- });
283
- }
284
- // Multiple input parsers
285
- const combinedInput = isPlainObject(input) && isPlainObject(parsedInput) ? {
286
- ...input,
287
- ...parsedInput
288
- } : parsedInput;
289
- // TODO fix this typing?
290
- return next({
291
- input: combinedInput
292
- });
293
- };
294
- inputMiddleware._type = 'input';
295
- return inputMiddleware;
296
- }
297
- /**
298
- * @internal
299
- */ function createOutputMiddleware(parse) {
300
- const outputMiddleware = async ({ next })=>{
301
- const result = await next();
302
- if (!result.ok) {
303
- // pass through failures without validating
304
- return result;
305
- }
306
- try {
307
- const data = await parse(result.data);
308
- return {
309
- ...result,
310
- data
311
- };
312
- } catch (cause) {
313
- throw new TRPCError({
314
- message: 'Output validation failed',
315
- code: 'INTERNAL_SERVER_ERROR',
316
- cause
317
- });
318
- }
319
- };
320
- outputMiddleware._type = 'output';
321
- return outputMiddleware;
322
- }
323
-
324
- /**
325
- * @internal
326
- */ const middlewareMarker = 'middlewareMarker';
327
-
328
- function createNewBuilder(def1, def2) {
329
- const { middlewares =[] , inputs , meta , ...rest } = def2;
330
- // TODO: maybe have a fn here to warn about calls
331
- return createBuilder({
332
- ...mergeWithoutOverrides(def1, rest),
333
- inputs: [
334
- ...def1.inputs,
335
- ...inputs ?? []
336
- ],
337
- middlewares: [
338
- ...def1.middlewares,
339
- ...middlewares
340
- ],
341
- meta: def1.meta && meta ? {
342
- ...def1.meta,
343
- ...meta
344
- } : meta ?? def1.meta
345
- });
346
- }
347
- function createBuilder(initDef = {}) {
348
- const _def = {
349
- inputs: [],
350
- middlewares: [],
351
- ...initDef
352
- };
353
- return {
354
- _def,
355
- input (input) {
356
- const parser = getParseFn(input);
357
- return createNewBuilder(_def, {
358
- inputs: [
359
- input
360
- ],
361
- middlewares: [
362
- createInputMiddleware(parser)
363
- ]
364
- });
365
- },
366
- output (output) {
367
- const parseOutput = getParseFn(output);
368
- return createNewBuilder(_def, {
369
- output,
370
- middlewares: [
371
- createOutputMiddleware(parseOutput)
372
- ]
373
- });
374
- },
375
- meta (meta) {
376
- return createNewBuilder(_def, {
377
- meta: meta
378
- });
379
- },
380
- /**
381
- * @deprecated
382
- * This functionality is deprecated and will be removed in the next major version.
383
- */ unstable_concat (builder) {
384
- return createNewBuilder(_def, builder._def);
385
- },
386
- use (middlewareBuilderOrFn) {
387
- // Distinguish between a middleware builder and a middleware function
388
- const middlewares = '_middlewares' in middlewareBuilderOrFn ? middlewareBuilderOrFn._middlewares : [
389
- middlewareBuilderOrFn
390
- ];
391
- return createNewBuilder(_def, {
392
- middlewares: middlewares
393
- });
394
- },
395
- query (resolver) {
396
- return createResolver({
397
- ..._def,
398
- query: true
399
- }, resolver);
400
- },
401
- mutation (resolver) {
402
- return createResolver({
403
- ..._def,
404
- mutation: true
405
- }, resolver);
406
- },
407
- subscription (resolver) {
408
- return createResolver({
409
- ..._def,
410
- subscription: true
411
- }, resolver);
412
- }
413
- };
414
- }
415
- function createResolver(_def, resolver) {
416
- const finalBuilder = createNewBuilder(_def, {
417
- resolver,
418
- middlewares: [
419
- async function resolveMiddleware(opts) {
420
- const data = await resolver(opts);
421
- return {
422
- marker: middlewareMarker,
423
- ok: true,
424
- data,
425
- ctx: opts.ctx
426
- };
427
- }
428
- ]
429
- });
430
- return createProcedureCaller(finalBuilder._def);
431
- }
432
- const codeblock = `
433
- If you want to call this function on the server, you do the following:
434
- This is a client-only function.
435
-
436
- const caller = appRouter.createCaller({
437
- /* ... your context */
438
- });
439
-
440
- const result = await caller.call('myProcedure', input);
441
- `.trim();
442
- function createProcedureCaller(_def) {
443
- const procedure = async function resolve(opts) {
444
- // is direct server-side call
445
- if (!opts || !('rawInput' in opts)) {
446
- throw new Error(codeblock);
447
- }
448
- // run the middlewares recursively with the resolver as the last one
449
- const callRecursive = async (callOpts = {
450
- index: 0,
451
- ctx: opts.ctx
452
- })=>{
453
- try {
454
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
455
- const middleware = _def.middlewares[callOpts.index];
456
- const result = await middleware({
457
- ctx: callOpts.ctx,
458
- type: opts.type,
459
- path: opts.path,
460
- rawInput: callOpts.rawInput ?? opts.rawInput,
461
- meta: _def.meta,
462
- input: callOpts.input,
463
- next (_nextOpts) {
464
- const nextOpts = _nextOpts;
465
- return callRecursive({
466
- index: callOpts.index + 1,
467
- ctx: nextOpts && 'ctx' in nextOpts ? {
468
- ...callOpts.ctx,
469
- ...nextOpts.ctx
470
- } : callOpts.ctx,
471
- input: nextOpts && 'input' in nextOpts ? nextOpts.input : callOpts.input,
472
- rawInput: nextOpts && 'rawInput' in nextOpts ? nextOpts.rawInput : callOpts.rawInput
473
- });
474
- }
475
- });
476
- return result;
477
- } catch (cause) {
478
- return {
479
- ok: false,
480
- error: getTRPCErrorFromUnknown(cause),
481
- marker: middlewareMarker
482
- };
483
- }
484
- };
485
- // there's always at least one "next" since we wrap this.resolver in a middleware
486
- const result = await callRecursive();
487
- if (!result) {
488
- throw new TRPCError({
489
- code: 'INTERNAL_SERVER_ERROR',
490
- message: 'No result from middlewares - did you forget to `return next()`?'
491
- });
492
- }
493
- if (!result.ok) {
494
- // re-throw original error
495
- throw result.error;
496
- }
497
- return result.data;
498
- };
499
- procedure._def = _def;
500
- procedure.meta = _def.meta;
501
- return procedure;
502
- }
503
-
504
- function migrateProcedure(oldProc, type) {
505
- const def = oldProc._def();
506
- const inputParser = getParseFnOrPassThrough(def.inputParser);
507
- const outputParser = getParseFnOrPassThrough(def.outputParser);
508
- const inputMiddleware = createInputMiddleware(inputParser);
509
- const builder = createBuilder({
510
- inputs: [
511
- def.inputParser
512
- ],
513
- middlewares: [
514
- ...def.middlewares,
515
- inputMiddleware,
516
- createOutputMiddleware(outputParser)
517
- ],
518
- meta: def.meta,
519
- output: def.outputParser,
520
- mutation: type === 'mutation',
521
- query: type === 'query',
522
- subscription: type === 'subscription'
523
- });
524
- const proc = builder[type]((opts)=>def.resolver(opts));
525
- return proc;
526
- }
527
- function migrateRouter(oldRouter) {
528
- const errorFormatter = oldRouter._def.errorFormatter;
529
- const transformer = oldRouter._def.transformer;
530
- const queries = {};
531
- const mutations = {};
532
- const subscriptions = {};
533
- for (const [name, procedure] of Object.entries(oldRouter._def.queries)){
534
- queries[name] = migrateProcedure(procedure, 'query');
535
- }
536
- for (const [name1, procedure1] of Object.entries(oldRouter._def.mutations)){
537
- mutations[name1] = migrateProcedure(procedure1, 'mutation');
538
- }
539
- for (const [name2, procedure2] of Object.entries(oldRouter._def.subscriptions)){
540
- subscriptions[name2] = migrateProcedure(procedure2, 'subscription');
541
- }
542
- const procedures = mergeWithoutOverrides(queries, mutations, subscriptions);
543
- const newRouter = createRouterFactory({
544
- transformer,
545
- errorFormatter,
546
- isDev: process.env.NODE_ENV !== 'production'
547
- })(procedures);
548
- return newRouter;
549
- }
550
-
551
- function getDataTransformer(transformer) {
552
- if ('input' in transformer) {
553
- return transformer;
554
- }
555
- return {
556
- input: transformer,
557
- output: transformer
558
- };
559
- }
560
- const PROCEDURE_DEFINITION_MAP = {
561
- query: 'queries',
562
- mutation: 'mutations',
563
- subscription: 'subscriptions'
564
- };
565
- function safeObject(...args) {
566
- return Object.assign(Object.create(null), ...args);
567
- }
568
- /**
569
- * @internal The type signature of this class may change without warning.
570
- * @deprecated
571
- */ class Router {
572
- static prefixProcedures(procedures, prefix) {
573
- const eps = safeObject();
574
- for (const [key, procedure] of Object.entries(procedures)){
575
- eps[prefix + key] = procedure;
576
- }
577
- return eps;
578
- }
579
- query(path, procedure) {
580
- const router = new Router({
581
- queries: safeObject({
582
- [path]: createProcedure(procedure)
583
- })
584
- });
585
- return this.merge(router);
586
- }
587
- mutation(path, procedure) {
588
- const router = new Router({
589
- mutations: safeObject({
590
- [path]: createProcedure(procedure)
591
- })
592
- });
593
- return this.merge(router);
594
- }
595
- subscription(path, procedure) {
596
- const router = new Router({
597
- subscriptions: safeObject({
598
- [path]: createProcedure(procedure)
599
- })
600
- });
601
- return this.merge(router);
602
- }
603
- merge(prefixOrRouter, maybeRouter) {
604
- let prefix = '';
605
- let childRouter;
606
- if (typeof prefixOrRouter === 'string' && maybeRouter instanceof Router) {
607
- prefix = prefixOrRouter;
608
- childRouter = maybeRouter;
609
- } else if (prefixOrRouter instanceof Router) {
610
- childRouter = prefixOrRouter;
611
- } else {
612
- throw new Error('Invalid args');
613
- }
614
- const duplicateQueries = Object.keys(childRouter._def.queries).filter((key)=>!!this._def.queries[prefix + key]);
615
- const duplicateMutations = Object.keys(childRouter._def.mutations).filter((key)=>!!this._def.mutations[prefix + key]);
616
- const duplicateSubscriptions = Object.keys(childRouter._def.subscriptions).filter((key)=>!!this._def.subscriptions[prefix + key]);
617
- const duplicates = [
618
- ...duplicateQueries,
619
- ...duplicateMutations,
620
- ...duplicateSubscriptions
621
- ];
622
- if (duplicates.length) {
623
- throw new Error(`Duplicate endpoint(s): ${duplicates.join(', ')}`);
624
- }
625
- const mergeProcedures = (defs)=>{
626
- const newDefs = safeObject();
627
- for (const [key, procedure] of Object.entries(defs)){
628
- const newProcedure = procedure.inheritMiddlewares(this._def.middlewares);
629
- newDefs[key] = newProcedure;
630
- }
631
- return Router.prefixProcedures(newDefs, prefix);
632
- };
633
- return new Router({
634
- ...this._def,
635
- queries: safeObject(this._def.queries, mergeProcedures(childRouter._def.queries)),
636
- mutations: safeObject(this._def.mutations, mergeProcedures(childRouter._def.mutations)),
637
- subscriptions: safeObject(this._def.subscriptions, mergeProcedures(childRouter._def.subscriptions))
638
- });
639
- }
640
- /**
641
- * Invoke procedure. Only for internal use within library.
642
- */ async call(opts) {
643
- const { type , path } = opts;
644
- const defTarget = PROCEDURE_DEFINITION_MAP[type];
645
- const defs = this._def[defTarget];
646
- const procedure = defs[path];
647
- if (!procedure) {
648
- throw new TRPCError({
649
- code: 'NOT_FOUND',
650
- message: `No "${type}"-procedure on path "${path}"`
651
- });
652
- }
653
- return procedure.call(opts);
654
- }
655
- createCaller(ctx) {
656
- return {
657
- query: (path, ...args)=>{
658
- return this.call({
659
- type: 'query',
660
- ctx,
661
- path,
662
- rawInput: args[0]
663
- });
664
- },
665
- mutation: (path, ...args)=>{
666
- return this.call({
667
- type: 'mutation',
668
- ctx,
669
- path,
670
- rawInput: args[0]
671
- });
672
- },
673
- subscription: (path, ...args)=>{
674
- return this.call({
675
- type: 'subscription',
676
- ctx,
677
- path,
678
- rawInput: args[0]
679
- });
680
- }
681
- };
682
- }
683
- /**
684
- * Function to be called before any procedure is invoked
685
- * @link https://trpc.io/docs/middlewares
686
- */ middleware(middleware) {
687
- return new Router({
688
- ...this._def,
689
- middlewares: [
690
- ...this._def.middlewares,
691
- middleware
692
- ]
693
- });
694
- }
695
- /**
696
- * Format errors
697
- * @link https://trpc.io/docs/error-formatting
698
- */ formatError(errorFormatter) {
699
- if (this._def.errorFormatter !== defaultFormatter) {
700
- throw new Error('You seem to have double `formatError()`-calls in your router tree');
701
- }
702
- return new Router({
703
- ...this._def,
704
- errorFormatter: errorFormatter
705
- });
706
- }
707
- getErrorShape(opts) {
708
- const { path , error } = opts;
709
- const { code } = opts.error;
710
- const shape = {
711
- message: error.message,
712
- code: TRPC_ERROR_CODES_BY_KEY[code],
713
- data: {
714
- code,
715
- httpStatus: getHTTPStatusCodeFromError(error)
716
- }
717
- };
718
- if (globalThis.process?.env?.NODE_ENV !== 'production' && typeof opts.error.stack === 'string') {
719
- shape.data.stack = opts.error.stack;
720
- }
721
- if (typeof path === 'string') {
722
- shape.data.path = path;
723
- }
724
- return this._def.errorFormatter({
725
- ...opts,
726
- shape
727
- });
728
- }
729
- /**
730
- * Add data transformer to serialize/deserialize input args + output
731
- * @link https://trpc.io/docs/data-transformers
732
- */ transformer(_transformer) {
733
- const transformer = getDataTransformer(_transformer);
734
- if (this._def.transformer !== defaultTransformer) {
735
- throw new Error('You seem to have double `transformer()`-calls in your router tree');
736
- }
737
- return new Router({
738
- ...this._def,
739
- transformer
740
- });
741
- }
742
- /**
743
- * Flattens the generics of TQueries/TMutations/TSubscriptions.
744
- * ⚠️ Experimental - might disappear. ⚠️
745
- *
746
- * @alpha
747
- */ flat() {
748
- return this;
749
- }
750
- /**
751
- * Interop mode for v9.x -> v10.x
752
- */ interop() {
753
- return migrateRouter(this);
754
- }
755
- constructor(def){
756
- this._def = {
757
- queries: def?.queries ?? safeObject(),
758
- mutations: def?.mutations ?? safeObject(),
759
- subscriptions: def?.subscriptions ?? safeObject(),
760
- middlewares: def?.middlewares ?? [],
761
- errorFormatter: def?.errorFormatter ?? defaultFormatter,
762
- transformer: def?.transformer ?? defaultTransformer
763
- };
764
- }
765
- }
766
- /**
767
- * @deprecated
768
- */ function router() {
769
- return new Router();
770
- }
771
-
772
- function mergeRouters(...routerList) {
773
- const record = mergeWithoutOverrides({}, ...routerList.map((r)=>r._def.record));
774
- const errorFormatter = routerList.reduce((currentErrorFormatter, nextRouter)=>{
775
- if (nextRouter._def._config.errorFormatter && nextRouter._def._config.errorFormatter !== defaultFormatter) {
776
- if (currentErrorFormatter !== defaultFormatter && currentErrorFormatter !== nextRouter._def._config.errorFormatter) {
777
- throw new Error('You seem to have several error formatters');
778
- }
779
- return nextRouter._def._config.errorFormatter;
780
- }
781
- return currentErrorFormatter;
782
- }, defaultFormatter);
783
- const transformer = routerList.reduce((prev, current)=>{
784
- if (current._def._config.transformer && current._def._config.transformer !== defaultTransformer) {
785
- if (prev !== defaultTransformer && prev !== current._def._config.transformer) {
786
- throw new Error('You seem to have several transformers');
787
- }
788
- return current._def._config.transformer;
789
- }
790
- return prev;
791
- }, defaultTransformer);
792
- const router = createRouterFactory({
793
- errorFormatter,
794
- transformer,
795
- isDev: routerList.some((r)=>r._def._config.isDev),
796
- allowOutsideOfServer: routerList.some((r)=>r._def._config.allowOutsideOfServer),
797
- isServer: routerList.some((r)=>r._def._config.isServer),
798
- $types: routerList[0]?._def._config.$types
799
- })(record);
800
- return router;
801
- }
4
+ import { c as createBuilder, a as createMiddlewareFactory, m as mergeRouters } from './unstableInternalsExport-10cc2bae.mjs';
5
+ export { b as createInputMiddleware, d as createOutputMiddleware, e as experimental_standaloneMiddleware, u as unstableExternalsExport } from './unstableInternalsExport-10cc2bae.mjs';
6
+ import { c as createFlatProxy } from './index-f91d720c.mjs';
7
+ import { i as isServerDefault } from './config-ab4c1c6b.mjs';
8
+ import './codes-c924c3db.mjs';
802
9
 
803
10
  /**
804
11
  * TODO: This can be improved:
@@ -822,7 +29,7 @@ function mergeRouters(...routerList) {
822
29
  function createTRPCInner() {
823
30
  return function initTRPCInner(runtime) {
824
31
  const errorFormatter = runtime?.errorFormatter ?? defaultFormatter;
825
- const transformer = getDataTransformer$1(runtime?.transformer ?? defaultTransformer);
32
+ const transformer = getDataTransformer(runtime?.transformer ?? defaultTransformer);
826
33
  const config = {
827
34
  transformer,
828
35
  isDev: runtime?.isDev ?? globalThis.process?.env?.NODE_ENV !== 'production',
@@ -865,4 +72,10 @@ function createTRPCInner() {
865
72
  };
866
73
  }
867
74
 
868
- export { createInputMiddleware, createOutputMiddleware, experimental_standaloneMiddleware, initTRPC, router };
75
+ const procedureTypes = [
76
+ 'query',
77
+ 'mutation',
78
+ 'subscription'
79
+ ];
80
+
81
+ export { initTRPC, procedureTypes };