@trpc/server 10.0.0-alpha.41 → 10.0.0-alpha.44

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 (87) hide show
  1. package/adapters/aws-lambda/dist/trpc-server-adapters-aws-lambda.cjs.dev.js +4 -4
  2. package/adapters/aws-lambda/dist/trpc-server-adapters-aws-lambda.cjs.prod.js +4 -4
  3. package/adapters/aws-lambda/dist/trpc-server-adapters-aws-lambda.esm.js +4 -4
  4. package/adapters/aws-lambda/index.js +1 -1
  5. package/adapters/express/dist/trpc-server-adapters-express.cjs.dev.js +3 -3
  6. package/adapters/express/dist/trpc-server-adapters-express.cjs.prod.js +3 -3
  7. package/adapters/express/dist/trpc-server-adapters-express.esm.js +3 -3
  8. package/adapters/fastify/dist/trpc-server-adapters-fastify.cjs.dev.js +3 -3
  9. package/adapters/fastify/dist/trpc-server-adapters-fastify.cjs.prod.js +3 -3
  10. package/adapters/fastify/dist/trpc-server-adapters-fastify.esm.js +3 -3
  11. package/adapters/lambda/dist/trpc-server-adapters-lambda.cjs.dev.js +4 -4
  12. package/adapters/lambda/dist/trpc-server-adapters-lambda.cjs.prod.js +4 -4
  13. package/adapters/lambda/dist/trpc-server-adapters-lambda.esm.js +4 -4
  14. package/adapters/next/dist/trpc-server-adapters-next.cjs.dev.js +3 -3
  15. package/adapters/next/dist/trpc-server-adapters-next.cjs.prod.js +3 -3
  16. package/adapters/next/dist/trpc-server-adapters-next.esm.js +3 -3
  17. package/adapters/node-http/dist/trpc-server-adapters-node-http.cjs.dev.js +3 -3
  18. package/adapters/node-http/dist/trpc-server-adapters-node-http.cjs.prod.js +3 -3
  19. package/adapters/node-http/dist/trpc-server-adapters-node-http.esm.js +3 -3
  20. package/adapters/standalone/dist/trpc-server-adapters-standalone.cjs.dev.js +3 -3
  21. package/adapters/standalone/dist/trpc-server-adapters-standalone.cjs.prod.js +3 -3
  22. package/adapters/standalone/dist/trpc-server-adapters-standalone.esm.js +3 -3
  23. package/adapters/ws/dist/trpc-server-adapters-ws.cjs.dev.js +2 -2
  24. package/adapters/ws/dist/trpc-server-adapters-ws.cjs.prod.js +2 -2
  25. package/adapters/ws/dist/trpc-server-adapters-ws.esm.js +2 -2
  26. package/dist/{TRPCError-b7fa0c31.mjs → TRPCError-97212592.mjs} +1 -1
  27. package/dist/adapters/aws-lambda/index.js +190 -0
  28. package/dist/adapters/aws-lambda/index.mjs +186 -0
  29. package/dist/adapters/aws-lambda/index.ts.js +1 -0
  30. package/dist/adapters/express.js +3 -3
  31. package/dist/adapters/express.mjs +4 -4
  32. package/dist/adapters/fastify/index.js +2 -2
  33. package/dist/adapters/fastify/index.mjs +3 -3
  34. package/dist/adapters/fetch/index.js +2 -2
  35. package/dist/adapters/fetch/index.mjs +3 -3
  36. package/dist/adapters/next.js +3 -3
  37. package/dist/adapters/next.mjs +4 -4
  38. package/dist/adapters/node-http/index.js +3 -3
  39. package/dist/adapters/node-http/index.mjs +4 -4
  40. package/dist/adapters/standalone.js +3 -3
  41. package/dist/adapters/standalone.mjs +4 -4
  42. package/dist/adapters/ws.mjs +1 -1
  43. package/dist/core/index.d.ts +1 -1
  44. package/dist/core/index.d.ts.map +1 -1
  45. package/dist/core/initTRPC.d.ts +8 -0
  46. package/dist/core/initTRPC.d.ts.map +1 -1
  47. package/dist/core/internals/__generated__/mergeRoutersGeneric.d.ts +20 -0
  48. package/dist/core/internals/__generated__/mergeRoutersGeneric.d.ts.map +1 -1
  49. package/dist/core/internals/procedureBuilder.d.ts +1 -6
  50. package/dist/core/internals/procedureBuilder.d.ts.map +1 -1
  51. package/dist/core/procedure.d.ts +1 -0
  52. package/dist/core/procedure.d.ts.map +1 -1
  53. package/dist/core/router.d.ts +31 -23
  54. package/dist/core/router.d.ts.map +1 -1
  55. package/dist/deprecated/interop.d.ts +29 -2
  56. package/dist/deprecated/interop.d.ts.map +1 -1
  57. package/dist/deprecated/router.d.ts.map +1 -1
  58. package/dist/{envelopes-b6dd0367.js → envelopes-2ae27c9f.js} +1 -4
  59. package/dist/{envelopes-af8c2959.mjs → envelopes-b9f49d4d.mjs} +1 -4
  60. package/dist/error/TRPCError.d.ts +1 -1
  61. package/dist/index.js +22 -1114
  62. package/dist/index.mjs +8 -1101
  63. package/dist/internals/transformTRPCResponse.d.ts +2 -2
  64. package/dist/internals/transformTRPCResponse.d.ts.map +1 -1
  65. package/dist/{nodeHTTPRequestHandler-6b7c8622.js → nodeHTTPRequestHandler-bee7aacc.js} +1 -1
  66. package/dist/{nodeHTTPRequestHandler-174459c5.mjs → nodeHTTPRequestHandler-f1656eba.mjs} +2 -2
  67. package/dist/{resolveHTTPResponse-8657b8de.mjs → resolveHTTPResponse-455f1e51.mjs} +2 -2
  68. package/dist/{resolveHTTPResponse-fcc8f644.js → resolveHTTPResponse-5d90abc5.js} +1 -1
  69. package/dist/router-4e50a6ac.js +1104 -0
  70. package/dist/router-a3db8f3a.mjs +1094 -0
  71. package/dist/rpc/envelopes.d.ts +22 -21
  72. package/dist/rpc/envelopes.d.ts.map +1 -1
  73. package/dist/rpc/index.js +1 -1
  74. package/dist/rpc/index.mjs +1 -1
  75. package/dist/subscription.mjs +1 -1
  76. package/dist/types.d.ts.map +1 -1
  77. package/package.json +6 -5
  78. package/src/core/index.ts +5 -1
  79. package/src/core/initTRPC.ts +0 -1
  80. package/src/core/internals/__generated__/mergeRoutersGeneric.ts +20 -0
  81. package/src/core/internals/procedureBuilder.ts +0 -22
  82. package/src/core/procedure.ts +1 -0
  83. package/src/core/router.ts +29 -44
  84. package/src/deprecated/interop.ts +47 -4
  85. package/src/deprecated/router.ts +0 -2
  86. package/src/rpc/envelopes.ts +32 -25
  87. package/src/types.ts +0 -1
package/dist/index.js CHANGED
@@ -2,1109 +2,18 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var resolveHTTPResponse = require('./resolveHTTPResponse-fcc8f644.js');
6
- var envelopes = require('./envelopes-b6dd0367.js');
5
+ var resolveHTTPResponse = require('./resolveHTTPResponse-5d90abc5.js');
6
+ var router = require('./router-4e50a6ac.js');
7
7
  var TRPCError = require('./TRPCError-9050a68d.js');
8
- var index = require('./index-1a25ccbd.js');
9
8
  require('./transformTRPCResponse-0c261655.js');
10
-
11
- resolveHTTPResponse.assertNotBrowser();
12
-
13
- /* eslint-disable @typescript-eslint/no-explicit-any */
14
-
15
- /**
16
- * @public
17
- */
18
-
19
- /**
20
- * @public
21
- */
22
-
23
- /**
24
- * @public
25
- */
26
-
27
- /**
28
- * @public
29
- */
30
-
31
- /**
32
- * @public
33
- */
34
-
35
- /**
36
- * @internal
37
- */
38
- function getDataTransformer$1(transformer) {
39
- if ('input' in transformer) {
40
- return transformer;
41
- }
42
-
43
- return {
44
- input: transformer,
45
- output: transformer
46
- };
47
- }
48
- /**
49
- * @internal
50
- */
51
-
52
- /**
53
- * @internal
54
- */
55
- const defaultTransformer = {
56
- _default: true,
57
- input: {
58
- serialize: obj => obj,
59
- deserialize: obj => obj
60
- },
61
- output: {
62
- serialize: obj => obj,
63
- deserialize: obj => obj
64
- }
65
- };
66
-
67
- /**
68
- * @internal
69
- */
70
-
71
- /**
72
- * @internal
73
- */
74
-
75
- /**
76
- * @internal
77
- */
78
- const defaultFormatter = ({
79
- shape
80
- }) => {
81
- return shape;
82
- };
83
-
84
- /**
85
- * @deprecated
86
- */
87
- const middlewareMarker$1 = 'middlewareMarker';
88
-
89
- /* eslint-disable @typescript-eslint/no-explicit-any */
90
- resolveHTTPResponse.assertNotBrowser();
91
-
92
- function getParseFn$1(procedureParser) {
93
- const parser = procedureParser;
94
-
95
- if (typeof parser === 'function') {
96
- // ProcedureParserCustomValidatorEsque
97
- return parser;
98
- }
99
-
100
- if (typeof parser.parseAsync === 'function') {
101
- // ProcedureParserZodEsque
102
- return parser.parseAsync.bind(parser);
103
- }
104
-
105
- if (typeof parser.parse === 'function') {
106
- // ProcedureParserZodEsque
107
- return parser.parse.bind(parser);
108
- }
109
-
110
- if (typeof parser.validateSync === 'function') {
111
- // ProcedureParserYupEsque
112
- return parser.validateSync.bind(parser);
113
- }
114
-
115
- if (typeof parser.create === 'function') {
116
- // ProcedureParserSuperstructEsque
117
- return parser.create.bind(parser);
118
- }
119
-
120
- throw new Error('Could not find a validator fn');
121
- }
122
- /**
123
- * @internal
124
- * @deprecated
125
- */
126
-
127
-
128
- class Procedure {
129
- constructor(opts) {
130
- this.middlewares = void 0;
131
- this.resolver = void 0;
132
- this.inputParser = void 0;
133
- this.parseInputFn = void 0;
134
- this.outputParser = void 0;
135
- this.parseOutputFn = void 0;
136
- this.meta = void 0;
137
- this.middlewares = opts.middlewares;
138
- this.resolver = opts.resolver;
139
- this.inputParser = opts.inputParser;
140
- this.parseInputFn = getParseFn$1(this.inputParser);
141
- this.outputParser = opts.outputParser;
142
- this.parseOutputFn = getParseFn$1(this.outputParser);
143
- this.meta = opts.meta;
144
- }
145
-
146
- _def() {
147
- return {
148
- middlewares: this.middlewares,
149
- resolver: this.resolver,
150
- inputParser: this.inputParser,
151
- outputParser: this.outputParser,
152
- meta: this.meta
153
- };
154
- }
155
-
156
- async parseInput(rawInput) {
157
- try {
158
- return await this.parseInputFn(rawInput);
159
- } catch (cause) {
160
- throw new TRPCError.TRPCError({
161
- code: 'BAD_REQUEST',
162
- cause: TRPCError.getCauseFromUnknown(cause)
163
- });
164
- }
165
- }
166
-
167
- async parseOutput(rawOutput) {
168
- try {
169
- return await this.parseOutputFn(rawOutput);
170
- } catch (cause) {
171
- throw new TRPCError.TRPCError({
172
- code: 'INTERNAL_SERVER_ERROR',
173
- cause: TRPCError.getCauseFromUnknown(cause),
174
- message: 'Output validation failed'
175
- });
176
- }
177
- }
178
- /**
179
- * Trigger middlewares in order, parse raw input, call resolver & parse raw output
180
- * @internal
181
- */
182
-
183
-
184
- async call(opts) {
185
- // wrap the actual resolver and treat as the last "middleware"
186
- const middlewaresWithResolver = this.middlewares.concat([async ({
187
- ctx
188
- }) => {
189
- const input = await this.parseInput(opts.rawInput);
190
- const rawOutput = await this.resolver({ ...opts,
191
- ctx,
192
- input
193
- });
194
- const data = await this.parseOutput(rawOutput);
195
- return {
196
- marker: middlewareMarker$1,
197
- ok: true,
198
- data,
199
- ctx
200
- };
201
- }]); // run the middlewares recursively with the resolver as the last one
202
-
203
- const callRecursive = async (callOpts = {
204
- index: 0,
205
- ctx: opts.ctx
206
- }) => {
207
- try {
208
- const result = await middlewaresWithResolver[callOpts.index]({
209
- ctx: callOpts.ctx,
210
- type: opts.type,
211
- path: opts.path,
212
- rawInput: opts.rawInput,
213
- meta: this.meta,
214
- next: async nextOpts => {
215
- return await callRecursive({
216
- index: callOpts.index + 1,
217
- ctx: nextOpts ? nextOpts.ctx : callOpts.ctx
218
- });
219
- }
220
- });
221
- return result;
222
- } catch (cause) {
223
- return {
224
- ctx: callOpts.ctx,
225
- ok: false,
226
- error: TRPCError.getErrorFromUnknown(cause),
227
- marker: middlewareMarker$1
228
- };
229
- }
230
- }; // there's always at least one "next" since we wrap this.resolver in a middleware
231
-
232
-
233
- const result = await callRecursive();
234
-
235
- if (!result) {
236
- throw new TRPCError.TRPCError({
237
- code: 'INTERNAL_SERVER_ERROR',
238
- message: 'No result from middlewares - did you forget to `return next()`?'
239
- });
240
- }
241
-
242
- if (!result.ok) {
243
- // re-throw original error
244
- throw result.error;
245
- }
246
-
247
- return result.data;
248
- }
249
- /**
250
- * Create new procedure with passed middlewares
251
- * @param middlewares
252
- */
253
-
254
-
255
- inheritMiddlewares(middlewares) {
256
- const Constructor = this.constructor;
257
- const instance = new Constructor({
258
- middlewares: [...middlewares, ...this.middlewares],
259
- resolver: this.resolver,
260
- inputParser: this.inputParser,
261
- outputParser: this.outputParser,
262
- meta: this.meta
263
- });
264
- return instance;
265
- }
266
-
267
- }
268
- function createProcedure(opts) {
269
- const inputParser = 'input' in opts ? opts.input : input => {
270
- if (input != null) {
271
- throw new TRPCError.TRPCError({
272
- code: 'BAD_REQUEST',
273
- message: 'No input expected'
274
- });
275
- }
276
-
277
- return undefined;
278
- };
279
- const outputParser = 'output' in opts && opts.output ? opts.output : output => output;
280
- return new Procedure({
281
- inputParser: inputParser,
282
- resolver: opts.resolve,
283
- middlewares: [],
284
- outputParser: outputParser,
285
- meta: opts.meta
286
- });
287
- }
288
-
289
- function getParseFn(procedureParser) {
290
- const parser = procedureParser;
291
-
292
- if (typeof parser === 'function') {
293
- // ProcedureParserCustomValidatorEsque
294
- return parser;
295
- }
296
-
297
- if (typeof parser.parseAsync === 'function') {
298
- // ProcedureParserZodEsque
299
- return parser.parseAsync.bind(parser);
300
- }
301
-
302
- if (typeof parser.parse === 'function') {
303
- // ProcedureParserZodEsque
304
- return parser.parse.bind(parser);
305
- }
306
-
307
- if (typeof parser.validateSync === 'function') {
308
- // ProcedureParserYupEsque
309
- return parser.validateSync.bind(parser);
310
- }
311
-
312
- if (typeof parser.create === 'function') {
313
- // ProcedureParserSuperstructEsque
314
- return parser.create.bind(parser);
315
- }
316
-
317
- throw new Error('Could not find a validator fn');
318
- }
319
- /**
320
- * @deprecated only for backwards compat
321
- * @internal
322
- */
323
-
324
- function getParseFnOrPassThrough(procedureParser) {
325
- if (!procedureParser) {
326
- return v => v;
327
- }
328
-
329
- return getParseFn(procedureParser);
330
- }
331
-
332
- /**
333
- * Ensures there are no duplicate keys when building a procedure.
334
- */
335
- function mergeWithoutOverrides(obj1, ...objs) {
336
- const newObj = Object.assign(Object.create(null), obj1);
337
-
338
- for (const overrides of objs) {
339
- for (const key in overrides) {
340
- if (key in newObj && newObj[key] !== overrides[key]) {
341
- throw new Error(`Duplicate key ${key}`);
342
- }
343
-
344
- newObj[key] = overrides[key];
345
- }
346
- }
347
-
348
- return newObj;
349
- }
350
-
351
- /**
352
- * @internal
353
- */
354
-
355
- /**
356
- * @internal
357
- */
358
-
359
- /**
360
- * @internal
361
- */
362
- const middlewareMarker = 'middlewareMarker';
363
- /**
364
- * @internal
365
- */
366
-
367
- function createNewBuilder(def1, def2) {
368
- const {
369
- middlewares = [],
370
- ...rest
371
- } = def2; // TODO: maybe have a fn here to warn about calls
372
-
373
- return createBuilder({ ...mergeWithoutOverrides(def1, rest),
374
- middlewares: [...def1.middlewares, ...middlewares]
375
- });
376
- }
377
-
378
- function createBuilder(initDef) {
379
- const _def = initDef || {
380
- middlewares: []
381
- };
382
-
383
- return {
384
- _def,
385
-
386
- input(input) {
387
- const parser = getParseFn(input);
388
- return createNewBuilder(_def, {
389
- input,
390
- middlewares: [createInputMiddleware(parser)]
391
- });
392
- },
393
-
394
- output(output) {
395
- const parseOutput = getParseFn(output);
396
- return createNewBuilder(_def, {
397
- output,
398
- middlewares: [createOutputMiddleware(parseOutput)]
399
- });
400
- },
401
-
402
- meta(meta) {
403
- return createNewBuilder(_def, {
404
- meta: meta
405
- });
406
- },
407
-
408
- /** @deprecated **/
409
- resolve(resolver) {
410
- return createResolver(_def, resolver);
411
- },
412
-
413
- unstable_concat(builder) {
414
- return createNewBuilder(_def, builder._def);
415
- },
416
-
417
- use(middleware) {
418
- return createNewBuilder(_def, {
419
- middlewares: [middleware]
420
- });
421
- },
422
-
423
- query(resolver) {
424
- return createResolver({ ..._def,
425
- query: true
426
- }, resolver);
427
- },
428
-
429
- mutation(resolver) {
430
- return createResolver({ ..._def,
431
- mutation: true
432
- }, resolver);
433
- },
434
-
435
- subscription(resolver) {
436
- return createResolver({ ..._def,
437
- subscription: true
438
- }, resolver);
439
- }
440
-
441
- };
442
- }
443
- function createInputMiddleware(parse) {
444
- return async function inputMiddleware({
445
- next,
446
- rawInput
447
- }) {
448
- let input;
449
-
450
- try {
451
- input = await parse(rawInput);
452
- } catch (cause) {
453
- throw new TRPCError.TRPCError({
454
- code: 'BAD_REQUEST',
455
- cause: TRPCError.getCauseFromUnknown(cause)
456
- });
457
- } // TODO fix this typing?
458
-
459
-
460
- return next({
461
- input
462
- });
463
- };
464
- }
465
- function createOutputMiddleware(parse) {
466
- return async function outputMiddleware({
467
- next
468
- }) {
469
- const result = await next();
470
-
471
- if (!result.ok) {
472
- // pass through failures without validating
473
- return result;
474
- }
475
-
476
- try {
477
- const data = await parse(result.data);
478
- return { ...result,
479
- data
480
- };
481
- } catch (cause) {
482
- throw new TRPCError.TRPCError({
483
- message: 'Output validation failed',
484
- code: 'INTERNAL_SERVER_ERROR',
485
- cause: TRPCError.getCauseFromUnknown(cause)
486
- });
487
- }
488
- };
489
- }
490
-
491
- function createResolver(_def, resolver) {
492
- const finalBuilder = createNewBuilder(_def, {
493
- resolver,
494
- middlewares: [async function resolveMiddleware(opts) {
495
- const data = await resolver(opts);
496
- return {
497
- marker: middlewareMarker,
498
- ok: true,
499
- data,
500
- ctx: opts.ctx
501
- };
502
- }]
503
- });
504
- return createProcedureCaller(finalBuilder._def);
505
- }
506
- /**
507
- * @internal
508
- */
509
-
510
-
511
- const codeblock = /*#__PURE__*/`
512
- If you want to call this function on the server, you do the following:
513
- This is a client-only function.
514
-
515
- const caller = appRouter.createCaller({
516
- /* ... your context */
517
- });
518
-
519
- const result = await caller.call('myProcedure', input);
520
- `.trim();
521
-
522
- function createProcedureCaller(_def) {
523
- const procedure = async function resolve(opts) {
524
- // is direct server-side call
525
- if (!opts || !('rawInput' in opts)) {
526
- throw new Error(codeblock);
527
- } // run the middlewares recursively with the resolver as the last one
528
-
529
-
530
- const callRecursive = async (callOpts = {
531
- index: 0,
532
- ctx: opts.ctx
533
- }) => {
534
- try {
535
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
536
- const middleware = _def.middlewares[callOpts.index];
537
- const result = await middleware({
538
- ctx: callOpts.ctx,
539
- type: opts.type,
540
- path: opts.path,
541
- rawInput: opts.rawInput,
542
- meta: _def.meta,
543
- input: callOpts.input,
544
- next: async nextOpts => {
545
- return await callRecursive({
546
- index: callOpts.index + 1,
547
- ctx: nextOpts && 'ctx' in nextOpts ? { ...callOpts.ctx,
548
- ...nextOpts.ctx
549
- } : callOpts.ctx,
550
- input: nextOpts && 'input' in nextOpts ? nextOpts.input : callOpts.input
551
- });
552
- }
553
- });
554
- return result;
555
- } catch (cause) {
556
- return {
557
- ok: false,
558
- error: TRPCError.getErrorFromUnknown(cause),
559
- marker: middlewareMarker
560
- };
561
- }
562
- }; // there's always at least one "next" since we wrap this.resolver in a middleware
563
-
564
-
565
- const result = await callRecursive();
566
-
567
- if (!result) {
568
- throw new TRPCError.TRPCError({
569
- code: 'INTERNAL_SERVER_ERROR',
570
- message: 'No result from middlewares - did you forget to `return next()`?'
571
- });
572
- }
573
-
574
- if (!result.ok) {
575
- // re-throw original error
576
- throw result.error;
577
- }
578
-
579
- return result.data;
580
- };
581
-
582
- procedure._def = _def;
583
- procedure.meta = _def.meta;
584
- return procedure;
585
- }
586
-
587
- /**
588
- * Create an object without inheriting anything from `Object.prototype`
589
- * @internal
590
- */
591
- function omitPrototype(obj1) {
592
- return Object.assign(Object.create(null), obj1);
593
- }
594
-
595
- const procedureTypes = ['query', 'mutation', 'subscription'];
596
- /**
597
- * @public
598
- */
599
-
600
- /* eslint-disable @typescript-eslint/ban-types */
601
-
602
- function isRouter(procedureOrRouter) {
603
- return 'router' in procedureOrRouter._def;
604
- }
605
-
606
- const emptyRouter = {
607
- _ctx: null,
608
- _errorShape: null,
609
- _meta: null,
610
- queries: {},
611
- mutations: {},
612
- subscriptions: {},
613
- errorFormatter: defaultFormatter,
614
- transformer: defaultTransformer
615
- };
616
- /**
617
- *
618
- * @internal
619
- */
620
-
621
- function createRouterFactory(defaults) {
622
- return function createRouterInner(opts) {
623
- var _defaults$transformer, _defaults$errorFormat;
624
-
625
- const routerProcedures = omitPrototype({});
626
-
627
- function recursiveGetPaths(procedures, path = '') {
628
- for (const [key, procedureOrRouter] of Object.entries(procedures !== null && procedures !== void 0 ? procedures : {})) {
629
- const newPath = `${path}${key}`;
630
-
631
- if (isRouter(procedureOrRouter)) {
632
- recursiveGetPaths(procedureOrRouter._def.procedures, `${newPath}.`);
633
- continue;
634
- }
635
-
636
- routerProcedures[newPath] = procedureOrRouter;
637
- }
638
- }
639
-
640
- recursiveGetPaths(opts);
641
- const result = mergeWithoutOverrides({
642
- transformer: (_defaults$transformer = defaults === null || defaults === void 0 ? void 0 : defaults.transformer) !== null && _defaults$transformer !== void 0 ? _defaults$transformer : defaultTransformer,
643
- errorFormatter: (_defaults$errorFormat = defaults === null || defaults === void 0 ? void 0 : defaults.errorFormatter) !== null && _defaults$errorFormat !== void 0 ? _defaults$errorFormat : defaultFormatter
644
- }, {
645
- procedures: routerProcedures
646
- });
647
- const _def = {
648
- router: true,
649
- procedures: {},
650
- ...emptyRouter,
651
- ...result,
652
- record: opts,
653
- queries: Object.entries(result.procedures || {}).filter(pair => pair[1]._def.query).reduce((acc, [key, val]) => ({ ...acc,
654
- [key]: val
655
- }), {}),
656
- mutations: Object.entries(result.procedures || {}).filter(pair => pair[1]._def.mutation).reduce((acc, [key, val]) => ({ ...acc,
657
- [key]: val
658
- }), {}),
659
- subscriptions: Object.entries(result.procedures || {}).filter(pair => pair[1]._def.subscription).reduce((acc, [key, val]) => ({ ...acc,
660
- [key]: val
661
- }), {}),
662
- routers: Object.entries(result.procedures || {}).filter(pair => pair[1]._def._router).reduce((acc, [key, val]) => ({ ...acc,
663
- [key]: val
664
- }), {})
665
- };
666
- const router = { ...opts,
667
- _def,
668
- transformer: _def.transformer,
669
- errorFormatter: _def.errorFormatter,
670
-
671
- createCaller(ctx) {
672
- const proxy = index.createProxy(({
673
- path,
674
- args
675
- }) => {
676
- // interop mode
677
- if (path.length === 1 && procedureTypes.includes(path[0])) {
678
- return callProcedure({
679
- procedures: _def.procedures,
680
- path: args[0],
681
- rawInput: args[1],
682
- ctx,
683
- type: path[0]
684
- });
685
- }
686
-
687
- const fullPath = path.join('.');
688
- const procedure = _def.procedures[fullPath];
689
- let type = 'query';
690
-
691
- if (procedure._def.mutation) {
692
- type = 'mutation';
693
- } else if (procedure._def.subscription) {
694
- type = 'subscription';
695
- }
696
-
697
- return procedure({
698
- path: fullPath,
699
- rawInput: args[0],
700
- ctx,
701
- type
702
- });
703
- });
704
- return proxy;
705
- },
706
-
707
- getErrorShape(opts) {
708
- const {
709
- path,
710
- error
711
- } = opts;
712
- const {
713
- code
714
- } = opts.error;
715
- const shape = {
716
- message: error.message,
717
- code: envelopes.TRPC_ERROR_CODES_BY_KEY[code],
718
- data: {
719
- code,
720
- httpStatus: resolveHTTPResponse.getHTTPStatusCodeFromError(error)
721
- }
722
- };
723
-
724
- if (process.env.NODE_ENV !== 'production' && typeof opts.error.stack === 'string') {
725
- shape.data.stack = opts.error.stack;
726
- }
727
-
728
- if (typeof path === 'string') {
729
- shape.data.path = path;
730
- }
731
-
732
- return this._def.errorFormatter({ ...opts,
733
- shape
734
- });
735
- }
736
-
737
- };
738
- return router;
739
- };
740
- }
741
- /**
742
- * @internal
743
- */
744
-
745
- function callProcedure(opts) {
746
- var _opts$procedures$path;
747
-
748
- const {
749
- type,
750
- path
751
- } = opts;
752
-
753
- if (!(path in opts.procedures) || !((_opts$procedures$path = opts.procedures[path]) !== null && _opts$procedures$path !== void 0 && _opts$procedures$path._def[type])) {
754
- throw new TRPCError.TRPCError({
755
- code: 'NOT_FOUND',
756
- message: `No "${type}"-procedure on path "${path}"`
757
- });
758
- }
759
-
760
- const procedure = opts.procedures[path];
761
- return procedure(opts);
762
- }
763
-
764
- function migrateProcedure(oldProc, type) {
765
- const def = oldProc._def();
766
-
767
- const inputParser = getParseFnOrPassThrough(def.inputParser);
768
- const outputParser = getParseFnOrPassThrough(def.outputParser);
769
- const inputMiddleware = createInputMiddleware(inputParser);
770
- const builder = createBuilder({
771
- input: def.inputParser,
772
- middlewares: [...def.middlewares, inputMiddleware, createOutputMiddleware(outputParser)],
773
- meta: def.meta,
774
- output: def.outputParser,
775
- mutation: type === 'mutation',
776
- query: type === 'query',
777
- subscription: type === 'subscription'
778
- });
779
- const proc = builder[type](opts => def.resolver(opts));
780
- return proc;
781
- }
782
-
783
- function migrateRouter(oldRouter) {
784
- const errorFormatter = oldRouter._def.errorFormatter;
785
- const transformer = oldRouter._def.transformer;
786
- const queries = {};
787
- const mutations = {};
788
- const subscriptions = {};
789
-
790
- for (const [name, procedure] of Object.entries(oldRouter._def.queries)) {
791
- queries[name] = migrateProcedure(procedure, 'query');
792
- }
793
-
794
- for (const [name, procedure] of Object.entries(oldRouter._def.mutations)) {
795
- mutations[name] = migrateProcedure(procedure, 'mutation');
796
- }
797
-
798
- for (const [name, procedure] of Object.entries(oldRouter._def.subscriptions)) {
799
- subscriptions[name] = migrateProcedure(procedure, 'subscription');
800
- }
801
-
802
- const procedures = mergeWithoutOverrides(queries, mutations, subscriptions);
803
- const newRouter = createRouterFactory({
804
- transformer,
805
- errorFormatter
806
- })(procedures);
807
- return newRouter;
808
- }
809
-
810
- /* eslint-disable @typescript-eslint/ban-types */
811
- resolveHTTPResponse.assertNotBrowser();
812
-
813
- function getDataTransformer(transformer) {
814
- if ('input' in transformer) {
815
- return transformer;
816
- }
817
-
818
- return {
819
- input: transformer,
820
- output: transformer
821
- };
822
- }
823
- /**
824
- * @internal
825
- * @deprecated
826
- */
827
-
828
-
829
- const PROCEDURE_DEFINITION_MAP = {
830
- query: 'queries',
831
- mutation: 'mutations',
832
- subscription: 'subscriptions'
833
- };
834
- /**
835
- * @internal
836
- * @deprecated
837
- */
838
-
839
- function safeObject(...args) {
840
- return Object.assign(Object.create(null), ...args);
841
- }
842
-
843
- /**
844
- * @internal The type signature of this class may change without warning.
845
- * @deprecated
846
- */
847
- class Router {
848
- constructor(def) {
849
- var _def$queries, _def$mutations, _def$subscriptions, _def$middlewares, _def$errorFormatter, _def$transformer;
850
-
851
- this._def = void 0;
852
- this._def = {
853
- queries: (_def$queries = def === null || def === void 0 ? void 0 : def.queries) !== null && _def$queries !== void 0 ? _def$queries : safeObject(),
854
- mutations: (_def$mutations = def === null || def === void 0 ? void 0 : def.mutations) !== null && _def$mutations !== void 0 ? _def$mutations : safeObject(),
855
- subscriptions: (_def$subscriptions = def === null || def === void 0 ? void 0 : def.subscriptions) !== null && _def$subscriptions !== void 0 ? _def$subscriptions : safeObject(),
856
- middlewares: (_def$middlewares = def === null || def === void 0 ? void 0 : def.middlewares) !== null && _def$middlewares !== void 0 ? _def$middlewares : [],
857
- errorFormatter: (_def$errorFormatter = def === null || def === void 0 ? void 0 : def.errorFormatter) !== null && _def$errorFormatter !== void 0 ? _def$errorFormatter : defaultFormatter,
858
- transformer: (_def$transformer = def === null || def === void 0 ? void 0 : def.transformer) !== null && _def$transformer !== void 0 ? _def$transformer : defaultTransformer
859
- };
860
- }
861
-
862
- static prefixProcedures(procedures, prefix) {
863
- const eps = safeObject();
864
-
865
- for (const [key, procedure] of Object.entries(procedures)) {
866
- eps[prefix + key] = procedure;
867
- }
868
-
869
- return eps;
870
- }
871
-
872
- query(path, procedure) {
873
- const router = new Router({
874
- queries: safeObject({
875
- [path]: createProcedure(procedure)
876
- })
877
- });
878
- return this.merge(router);
879
- }
880
-
881
- mutation(path, procedure) {
882
- const router = new Router({
883
- mutations: safeObject({
884
- [path]: createProcedure(procedure)
885
- })
886
- });
887
- return this.merge(router);
888
- }
889
- /**
890
- * @beta Might change without a major version bump
891
- */
892
-
893
-
894
- subscription(path, procedure) {
895
- const router = new Router({
896
- subscriptions: safeObject({
897
- [path]: createProcedure(procedure)
898
- })
899
- });
900
- return this.merge(router);
901
- }
902
- /**
903
- * Merge router with other router
904
- * @param router
905
- */
906
-
907
-
908
- merge(prefixOrRouter, maybeRouter) {
909
- let prefix = '';
910
- let childRouter;
911
-
912
- if (typeof prefixOrRouter === 'string' && maybeRouter instanceof Router) {
913
- prefix = prefixOrRouter;
914
- childRouter = maybeRouter;
915
- } else if (prefixOrRouter instanceof Router) {
916
- childRouter = prefixOrRouter;
917
- }
918
- /* istanbul ignore next */
919
- else {
920
- throw new Error('Invalid args');
921
- }
922
-
923
- const duplicateQueries = Object.keys(childRouter._def.queries).filter(key => !!this._def['queries'][prefix + key]);
924
- const duplicateMutations = Object.keys(childRouter._def.mutations).filter(key => !!this._def['mutations'][prefix + key]);
925
- const duplicateSubscriptions = Object.keys(childRouter._def.subscriptions).filter(key => !!this._def['subscriptions'][prefix + key]);
926
- const duplicates = [...duplicateQueries, ...duplicateMutations, ...duplicateSubscriptions];
927
-
928
- if (duplicates.length) {
929
- throw new Error(`Duplicate endpoint(s): ${duplicates.join(', ')}`);
930
- }
931
-
932
- const mergeProcedures = defs => {
933
- const newDefs = safeObject();
934
-
935
- for (const [key, procedure] of Object.entries(defs)) {
936
- const newProcedure = procedure.inheritMiddlewares(this._def.middlewares);
937
- newDefs[key] = newProcedure;
938
- }
939
-
940
- return Router.prefixProcedures(newDefs, prefix);
941
- };
942
-
943
- return new Router({ ...this._def,
944
- queries: safeObject(this._def.queries, mergeProcedures(childRouter._def.queries)),
945
- mutations: safeObject(this._def.mutations, mergeProcedures(childRouter._def.mutations)),
946
- subscriptions: safeObject(this._def.subscriptions, mergeProcedures(childRouter._def.subscriptions))
947
- });
948
- }
949
- /**
950
- * Invoke procedure. Only for internal use within library.
951
- */
952
-
953
-
954
- async call(opts) {
955
- const {
956
- type,
957
- path
958
- } = opts;
959
- const defTarget = PROCEDURE_DEFINITION_MAP[type];
960
- const defs = this._def[defTarget];
961
- const procedure = defs[path];
962
-
963
- if (!procedure) {
964
- throw new TRPCError.TRPCError({
965
- code: 'NOT_FOUND',
966
- message: `No "${type}"-procedure on path "${path}"`
967
- });
968
- }
969
-
970
- return procedure.call(opts);
971
- }
972
-
973
- createCaller(ctx) {
974
- return {
975
- query: (path, ...args) => {
976
- return this.call({
977
- type: 'query',
978
- ctx,
979
- path,
980
- rawInput: args[0]
981
- });
982
- },
983
- mutation: (path, ...args) => {
984
- return this.call({
985
- type: 'mutation',
986
- ctx,
987
- path,
988
- rawInput: args[0]
989
- });
990
- },
991
- subscription: (path, ...args) => {
992
- return this.call({
993
- type: 'subscription',
994
- ctx,
995
- path,
996
- rawInput: args[0]
997
- });
998
- }
999
- };
1000
- }
1001
- /**
1002
- * Function to be called before any procedure is invoked
1003
- * @link https://trpc.io/docs/middlewares
1004
- */
1005
-
1006
-
1007
- middleware(middleware) {
1008
- return new Router({ ...this._def,
1009
- middlewares: [...this._def.middlewares, middleware]
1010
- });
1011
- }
1012
- /**
1013
- * Format errors
1014
- * @link https://trpc.io/docs/error-formatting
1015
- */
1016
-
1017
-
1018
- formatError(errorFormatter) {
1019
- if (this._def.errorFormatter !== defaultFormatter) {
1020
- throw new Error('You seem to have double `formatError()`-calls in your router tree');
1021
- }
1022
-
1023
- return new Router({ ...this._def,
1024
- errorFormatter: errorFormatter
1025
- });
1026
- }
1027
-
1028
- getErrorShape(opts) {
1029
- const {
1030
- path,
1031
- error
1032
- } = opts;
1033
- const {
1034
- code
1035
- } = opts.error;
1036
- const shape = {
1037
- message: error.message,
1038
- code: envelopes.TRPC_ERROR_CODES_BY_KEY[code],
1039
- data: {
1040
- code,
1041
- httpStatus: resolveHTTPResponse.getHTTPStatusCodeFromError(error)
1042
- }
1043
- };
1044
-
1045
- if (process.env.NODE_ENV !== 'production' && typeof opts.error.stack === 'string') {
1046
- shape.data.stack = opts.error.stack;
1047
- }
1048
-
1049
- if (typeof path === 'string') {
1050
- shape.data.path = path;
1051
- }
1052
-
1053
- return this._def.errorFormatter({ ...opts,
1054
- shape
1055
- });
1056
- }
1057
- /**
1058
- * Add data transformer to serialize/deserialize input args + output
1059
- * @link https://trpc.io/docs/data-transformers
1060
- */
1061
-
1062
-
1063
- transformer(_transformer) {
1064
- const transformer = getDataTransformer(_transformer);
1065
-
1066
- if (this._def.transformer !== defaultTransformer) {
1067
- throw new Error('You seem to have double `transformer()`-calls in your router tree');
1068
- }
1069
-
1070
- return new Router({ ...this._def,
1071
- transformer
1072
- });
1073
- }
1074
- /**
1075
- * Flattens the generics of TQueries/TMutations/TSubscriptions.
1076
- * ⚠️ Experimental - might disappear. ⚠️
1077
- *
1078
- * @alpha
1079
- */
1080
-
1081
-
1082
- flat() {
1083
- return this;
1084
- }
1085
- /**
1086
- * Interop mode for v9.x -> v10.x
1087
- */
1088
-
1089
-
1090
- interop() {
1091
- return migrateRouter(this);
1092
- }
1093
-
1094
- }
1095
- /**
1096
- * @deprecated
1097
- */
1098
-
1099
- function router() {
1100
- return new Router();
1101
- }
9
+ require('./envelopes-2ae27c9f.js');
10
+ require('./index-1a25ccbd.js');
1102
11
 
1103
12
  function mergeRouters(...routerList) {
1104
- const record = mergeWithoutOverrides({}, ...routerList.map(r => r._def.record));
13
+ const record = router.mergeWithoutOverrides({}, ...routerList.map(r => r._def.record));
1105
14
  const errorFormatter = routerList.reduce((currentErrorFormatter, nextRouter) => {
1106
- if (nextRouter.errorFormatter && nextRouter.errorFormatter !== defaultFormatter) {
1107
- if (currentErrorFormatter !== defaultFormatter && currentErrorFormatter !== nextRouter.errorFormatter) {
15
+ if (nextRouter.errorFormatter && nextRouter.errorFormatter !== router.defaultFormatter) {
16
+ if (currentErrorFormatter !== router.defaultFormatter && currentErrorFormatter !== nextRouter.errorFormatter) {
1108
17
  throw new Error('You seem to have several error formatters');
1109
18
  }
1110
19
 
@@ -1112,10 +21,10 @@ function mergeRouters(...routerList) {
1112
21
  }
1113
22
 
1114
23
  return currentErrorFormatter;
1115
- }, defaultFormatter);
24
+ }, router.defaultFormatter);
1116
25
  const transformer = routerList.reduce((prev, current) => {
1117
- if (current.transformer && current.transformer !== defaultTransformer) {
1118
- if (prev !== defaultTransformer && prev !== current.transformer) {
26
+ if (current.transformer && current.transformer !== router.defaultTransformer) {
27
+ if (prev !== router.defaultTransformer && prev !== current.transformer) {
1119
28
  throw new Error('You seem to have several transformers');
1120
29
  }
1121
30
 
@@ -1123,12 +32,12 @@ function mergeRouters(...routerList) {
1123
32
  }
1124
33
 
1125
34
  return prev;
1126
- }, defaultTransformer);
1127
- const router = createRouterFactory({
35
+ }, router.defaultTransformer);
36
+ const router$1 = router.createRouterFactory({
1128
37
  errorFormatter,
1129
38
  transformer
1130
39
  })(record);
1131
- return router;
40
+ return router$1;
1132
41
  }
1133
42
 
1134
43
  function mergeRoutersGeneric(...args) {
@@ -1165,13 +74,12 @@ function createMiddlewareFactory() {
1165
74
  };
1166
75
  }
1167
76
 
1168
- /* eslint-disable @typescript-eslint/ban-types */
1169
77
  function initTRPC() {
1170
78
  return function initTRPCInner(options) {
1171
79
  var _options$errorFormatt, _options$transformer;
1172
80
 
1173
- const errorFormatter = (_options$errorFormatt = options === null || options === void 0 ? void 0 : options.errorFormatter) !== null && _options$errorFormatt !== void 0 ? _options$errorFormatt : defaultFormatter;
1174
- const transformer = getDataTransformer$1((_options$transformer = options === null || options === void 0 ? void 0 : options.transformer) !== null && _options$transformer !== void 0 ? _options$transformer : defaultTransformer);
81
+ const errorFormatter = (_options$errorFormatt = options === null || options === void 0 ? void 0 : options.errorFormatter) !== null && _options$errorFormatt !== void 0 ? _options$errorFormatt : router.defaultFormatter;
82
+ const transformer = router.getDataTransformer((_options$transformer = options === null || options === void 0 ? void 0 : options.transformer) !== null && _options$transformer !== void 0 ? _options$transformer : router.defaultTransformer);
1175
83
  const _config = {
1176
84
  transformer,
1177
85
  errorShape: null,
@@ -1188,7 +96,7 @@ function initTRPC() {
1188
96
  /**
1189
97
  * Builder object for creating procedures
1190
98
  */
1191
- procedure: createBuilder(),
99
+ procedure: router.createBuilder(),
1192
100
 
1193
101
  /**
1194
102
  * Create reusable middlewares
@@ -1198,7 +106,7 @@ function initTRPC() {
1198
106
  /**
1199
107
  * Create a router
1200
108
  */
1201
- router: createRouterFactory({
109
+ router: router.createRouterFactory({
1202
110
  errorFormatter,
1203
111
  transformer
1204
112
  }),
@@ -1213,10 +121,10 @@ function initTRPC() {
1213
121
 
1214
122
  exports.assertNotBrowser = resolveHTTPResponse.assertNotBrowser;
1215
123
  exports.resolveHTTPResponse = resolveHTTPResponse.resolveHTTPResponse;
124
+ exports.callProcedure = router.callProcedure;
125
+ exports.defaultTransformer = router.defaultTransformer;
126
+ exports.getDataTransformer = router.getDataTransformer;
127
+ exports.procedureTypes = router.procedureTypes;
128
+ exports.router = router.router;
1216
129
  exports.TRPCError = TRPCError.TRPCError;
1217
- exports.callProcedure = callProcedure;
1218
- exports.defaultTransformer = defaultTransformer;
1219
- exports.getDataTransformer = getDataTransformer$1;
1220
130
  exports.initTRPC = initTRPC;
1221
- exports.procedureTypes = procedureTypes;
1222
- exports.router = router;