@trpc/server 10.0.0-proxy-beta.4 → 10.0.0-proxy-beta.6

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 (84) hide show
  1. package/dist/{TRPCError-e99e7cbe.mjs → TRPCError-281ac25a.mjs} +1 -1
  2. package/dist/adapters/aws-lambda/index.js +3 -3
  3. package/dist/adapters/aws-lambda/index.mjs +4 -4
  4. package/dist/adapters/express.js +3 -3
  5. package/dist/adapters/express.mjs +4 -4
  6. package/dist/adapters/fastify/index.js +2 -2
  7. package/dist/adapters/fastify/index.mjs +3 -3
  8. package/dist/adapters/fetch/index.js +2 -2
  9. package/dist/adapters/fetch/index.mjs +3 -3
  10. package/dist/adapters/next.js +3 -3
  11. package/dist/adapters/next.mjs +4 -4
  12. package/dist/adapters/node-http/index.js +3 -3
  13. package/dist/adapters/node-http/index.mjs +4 -4
  14. package/dist/adapters/standalone.d.ts +1 -1
  15. package/dist/adapters/standalone.js +4 -4
  16. package/dist/adapters/standalone.mjs +5 -5
  17. package/dist/adapters/ws.mjs +1 -1
  18. package/dist/{codes-731f0a7c.js → codes-76c38a34.js} +1 -0
  19. package/dist/{codes-f164ac85.mjs → codes-7d21f749.mjs} +1 -0
  20. package/dist/error/TRPCError.d.ts +1 -1
  21. package/dist/error/TRPCError.d.ts.map +1 -1
  22. package/dist/http/internals/getHTTPStatusCode.d.ts +1 -0
  23. package/dist/http/internals/getHTTPStatusCode.d.ts.map +1 -1
  24. package/dist/index.js +7 -7
  25. package/dist/index.mjs +6 -5
  26. package/dist/{nodeHTTPRequestHandler-ffd87be6.mjs → nodeHTTPRequestHandler-b59d2c10.mjs} +2 -2
  27. package/dist/{nodeHTTPRequestHandler-407721f8.js → nodeHTTPRequestHandler-d30a4185.js} +1 -1
  28. package/dist/{resolveHTTPResponse-a52a77cb.js → resolveHTTPResponse-0a8e47b8.js} +4 -275
  29. package/dist/{resolveHTTPResponse-3c852af0.mjs → resolveHTTPResponse-24d99c94.mjs} +6 -272
  30. package/dist/{router-a33b17a3.mjs → router-6e04fa44.mjs} +274 -7
  31. package/dist/{router-c87a28f9.js → router-bf52be2e.js} +280 -9
  32. package/dist/rpc/codes.d.ts +2 -0
  33. package/dist/rpc/codes.d.ts.map +1 -1
  34. package/dist/rpc/index.js +1 -1
  35. package/dist/rpc/index.mjs +1 -1
  36. package/dist/subscription.mjs +1 -1
  37. package/package.json +25 -12
  38. package/src/http/internals/getHTTPStatusCode.ts +1 -0
  39. package/src/rpc/codes.ts +1 -0
  40. package/adapters/aws-lambda/dist/trpc-server-adapters-aws-lambda.cjs.d.ts +0 -1
  41. package/adapters/aws-lambda/dist/trpc-server-adapters-aws-lambda.cjs.dev.js +0 -190
  42. package/adapters/aws-lambda/dist/trpc-server-adapters-aws-lambda.cjs.js +0 -7
  43. package/adapters/aws-lambda/dist/trpc-server-adapters-aws-lambda.cjs.prod.js +0 -190
  44. package/adapters/aws-lambda/dist/trpc-server-adapters-aws-lambda.esm.js +0 -186
  45. package/adapters/express/dist/trpc-server-adapters-express.cjs.d.ts +0 -1
  46. package/adapters/express/dist/trpc-server-adapters-express.cjs.dev.js +0 -23
  47. package/adapters/express/dist/trpc-server-adapters-express.cjs.js +0 -7
  48. package/adapters/express/dist/trpc-server-adapters-express.cjs.prod.js +0 -23
  49. package/adapters/express/dist/trpc-server-adapters-express.esm.js +0 -19
  50. package/adapters/fastify/dist/trpc-server-adapters-fastify.cjs.d.ts +0 -1
  51. package/adapters/fastify/dist/trpc-server-adapters-fastify.cjs.dev.js +0 -109
  52. package/adapters/fastify/dist/trpc-server-adapters-fastify.cjs.js +0 -7
  53. package/adapters/fastify/dist/trpc-server-adapters-fastify.cjs.prod.js +0 -109
  54. package/adapters/fastify/dist/trpc-server-adapters-fastify.esm.js +0 -104
  55. package/adapters/lambda/dist/trpc-server-adapters-lambda.cjs.d.ts +0 -1
  56. package/adapters/lambda/dist/trpc-server-adapters-lambda.cjs.dev.js +0 -25
  57. package/adapters/lambda/dist/trpc-server-adapters-lambda.cjs.js +0 -7
  58. package/adapters/lambda/dist/trpc-server-adapters-lambda.cjs.prod.js +0 -25
  59. package/adapters/lambda/dist/trpc-server-adapters-lambda.esm.js +0 -21
  60. package/adapters/next/dist/trpc-server-adapters-next.cjs.d.ts +0 -1
  61. package/adapters/next/dist/trpc-server-adapters-next.cjs.dev.js +0 -56
  62. package/adapters/next/dist/trpc-server-adapters-next.cjs.js +0 -7
  63. package/adapters/next/dist/trpc-server-adapters-next.cjs.prod.js +0 -56
  64. package/adapters/next/dist/trpc-server-adapters-next.esm.js +0 -52
  65. package/adapters/node-http/dist/trpc-server-adapters-node-http.cjs.d.ts +0 -1
  66. package/adapters/node-http/dist/trpc-server-adapters-node-http.cjs.dev.js +0 -13
  67. package/adapters/node-http/dist/trpc-server-adapters-node-http.cjs.js +0 -7
  68. package/adapters/node-http/dist/trpc-server-adapters-node-http.cjs.prod.js +0 -13
  69. package/adapters/node-http/dist/trpc-server-adapters-node-http.esm.js +0 -5
  70. package/adapters/standalone/dist/trpc-server-adapters-standalone.cjs.d.ts +0 -1
  71. package/adapters/standalone/dist/trpc-server-adapters-standalone.cjs.dev.js +0 -46
  72. package/adapters/standalone/dist/trpc-server-adapters-standalone.cjs.js +0 -7
  73. package/adapters/standalone/dist/trpc-server-adapters-standalone.cjs.prod.js +0 -46
  74. package/adapters/standalone/dist/trpc-server-adapters-standalone.esm.js +0 -36
  75. package/adapters/ws/dist/trpc-server-adapters-ws.cjs.d.ts +0 -1
  76. package/adapters/ws/dist/trpc-server-adapters-ws.cjs.dev.js +0 -363
  77. package/adapters/ws/dist/trpc-server-adapters-ws.cjs.js +0 -7
  78. package/adapters/ws/dist/trpc-server-adapters-ws.cjs.prod.js +0 -363
  79. package/adapters/ws/dist/trpc-server-adapters-ws.esm.js +0 -359
  80. package/rpc/dist/trpc-server-rpc.cjs.d.ts +0 -1
  81. package/rpc/dist/trpc-server-rpc.cjs.dev.js +0 -10
  82. package/rpc/dist/trpc-server-rpc.cjs.js +0 -7
  83. package/rpc/dist/trpc-server-rpc.cjs.prod.js +0 -10
  84. package/rpc/dist/trpc-server-rpc.esm.js +0 -1
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
3
  var TRPCError = require('./TRPCError-fe9113e5.js');
4
- var codes = require('./codes-731f0a7c.js');
4
+ var codes = require('./codes-76c38a34.js');
5
5
  var index = require('./index-ae2b3f4b.js');
6
6
  var transformTRPCResponse = require('./transformTRPCResponse-11ac69cc.js');
7
7
 
@@ -28,7 +28,8 @@ const JSONRPC2_TO_HTTP_CODE = {
28
28
  CLIENT_CLOSED_REQUEST: 499,
29
29
  PRECONDITION_FAILED: 412,
30
30
  PAYLOAD_TOO_LARGE: 413,
31
- METHOD_NOT_SUPPORTED: 405
31
+ METHOD_NOT_SUPPORTED: 405,
32
+ TOO_MANY_REQUESTS: 429
32
33
  };
33
34
  function getStatusCodeFromKey(code) {
34
35
  return JSONRPC2_TO_HTTP_CODE[code] ?? 500;
@@ -133,7 +134,7 @@ const emptyRouter = {
133
134
  /**
134
135
  * Then is a reserved word because otherwise we can't return a promise that returns a Proxy
135
136
  * since JS will think that `.then` is something that exists
136
- */ 'then',
137
+ */ 'then'
137
138
  ];
138
139
  /**
139
140
  *
@@ -255,273 +256,6 @@ const emptyRouter = {
255
256
  return procedure(opts);
256
257
  }
257
258
 
258
- /**
259
- * @internal
260
- */ // FIXME this should use RootConfig
261
- function createMiddlewareFactory() {
262
- return function createMiddleware(fn) {
263
- return fn;
264
- };
265
- }
266
- function isPlainObject(obj) {
267
- return obj && typeof obj === 'object' && !Array.isArray(obj);
268
- }
269
- /**
270
- * @internal
271
- * Please note, `trpc-openapi` uses this function.
272
- */ function createInputMiddleware(parse) {
273
- const inputMiddleware = async ({ next , rawInput , input , })=>{
274
- let parsedInput;
275
- try {
276
- parsedInput = await parse(rawInput);
277
- } catch (cause) {
278
- throw new TRPCError.TRPCError({
279
- code: 'BAD_REQUEST',
280
- cause: TRPCError.getCauseFromUnknown(cause)
281
- });
282
- }
283
- // Multiple input parsers
284
- const combinedInput = isPlainObject(input) && isPlainObject(parsedInput) ? {
285
- ...input,
286
- ...parsedInput
287
- } : parsedInput;
288
- // TODO fix this typing?
289
- return next({
290
- input: combinedInput
291
- });
292
- };
293
- inputMiddleware._type = 'input';
294
- return inputMiddleware;
295
- }
296
- /**
297
- * @internal
298
- */ function createOutputMiddleware(parse) {
299
- const outputMiddleware = async ({ next })=>{
300
- const result = await next();
301
- if (!result.ok) {
302
- // pass through failures without validating
303
- return result;
304
- }
305
- try {
306
- const data = await parse(result.data);
307
- return {
308
- ...result,
309
- data
310
- };
311
- } catch (cause) {
312
- throw new TRPCError.TRPCError({
313
- message: 'Output validation failed',
314
- code: 'INTERNAL_SERVER_ERROR',
315
- cause: TRPCError.getCauseFromUnknown(cause)
316
- });
317
- }
318
- };
319
- outputMiddleware._type = 'output';
320
- return outputMiddleware;
321
- }
322
-
323
- function getParseFn(procedureParser) {
324
- const parser = procedureParser;
325
- if (typeof parser === 'function') {
326
- // ProcedureParserCustomValidatorEsque
327
- return parser;
328
- }
329
- if (typeof parser.parseAsync === 'function') {
330
- // ProcedureParserZodEsque
331
- return parser.parseAsync.bind(parser);
332
- }
333
- if (typeof parser.parse === 'function') {
334
- // ProcedureParserZodEsque
335
- return parser.parse.bind(parser);
336
- }
337
- if (typeof parser.validateSync === 'function') {
338
- // ProcedureParserYupEsque
339
- return parser.validateSync.bind(parser);
340
- }
341
- if (typeof parser.create === 'function') {
342
- // ProcedureParserSuperstructEsque
343
- return parser.create.bind(parser);
344
- }
345
- throw new Error('Could not find a validator fn');
346
- }
347
- /**
348
- * @deprecated only for backwards compat
349
- * @internal
350
- */ function getParseFnOrPassThrough(procedureParser) {
351
- if (!procedureParser) {
352
- return (v)=>v;
353
- }
354
- return getParseFn(procedureParser);
355
- }
356
-
357
- /**
358
- * @internal
359
- */ const middlewareMarker = 'middlewareMarker';
360
-
361
- function createNewBuilder(def1, def2) {
362
- const { middlewares =[] , inputs , ...rest } = def2;
363
- // TODO: maybe have a fn here to warn about calls
364
- return createBuilder({
365
- ...mergeWithoutOverrides(def1, rest),
366
- inputs: [
367
- ...def1.inputs,
368
- ...inputs ?? []
369
- ],
370
- middlewares: [
371
- ...def1.middlewares,
372
- ...middlewares
373
- ]
374
- });
375
- }
376
- function createBuilder(initDef) {
377
- const _def = initDef || {
378
- inputs: [],
379
- middlewares: []
380
- };
381
- return {
382
- _def,
383
- input (input) {
384
- const parser = getParseFn(input);
385
- return createNewBuilder(_def, {
386
- inputs: [
387
- input
388
- ],
389
- middlewares: [
390
- createInputMiddleware(parser)
391
- ]
392
- });
393
- },
394
- output (output) {
395
- const parseOutput = getParseFn(output);
396
- return createNewBuilder(_def, {
397
- output,
398
- middlewares: [
399
- createOutputMiddleware(parseOutput)
400
- ]
401
- });
402
- },
403
- meta (meta) {
404
- return createNewBuilder(_def, {
405
- meta: meta
406
- });
407
- },
408
- unstable_concat (builder) {
409
- return createNewBuilder(_def, builder._def);
410
- },
411
- use (middleware) {
412
- return createNewBuilder(_def, {
413
- middlewares: [
414
- middleware
415
- ]
416
- });
417
- },
418
- query (resolver) {
419
- return createResolver({
420
- ..._def,
421
- query: true
422
- }, resolver);
423
- },
424
- mutation (resolver) {
425
- return createResolver({
426
- ..._def,
427
- mutation: true
428
- }, resolver);
429
- },
430
- subscription (resolver) {
431
- return createResolver({
432
- ..._def,
433
- subscription: true
434
- }, resolver);
435
- }
436
- };
437
- }
438
- function createResolver(_def, resolver) {
439
- const finalBuilder = createNewBuilder(_def, {
440
- resolver,
441
- middlewares: [
442
- async function resolveMiddleware(opts) {
443
- const data = await resolver(opts);
444
- return {
445
- marker: middlewareMarker,
446
- ok: true,
447
- data,
448
- ctx: opts.ctx
449
- };
450
- },
451
- ]
452
- });
453
- return createProcedureCaller(finalBuilder._def);
454
- }
455
- const codeblock = `
456
- If you want to call this function on the server, you do the following:
457
- This is a client-only function.
458
-
459
- const caller = appRouter.createCaller({
460
- /* ... your context */
461
- });
462
-
463
- const result = await caller.call('myProcedure', input);
464
- `.trim();
465
- function createProcedureCaller(_def) {
466
- const procedure = async function resolve(opts) {
467
- // is direct server-side call
468
- if (!opts || !('rawInput' in opts)) {
469
- throw new Error(codeblock);
470
- }
471
- // run the middlewares recursively with the resolver as the last one
472
- const callRecursive = async (callOpts = {
473
- index: 0,
474
- ctx: opts.ctx
475
- })=>{
476
- try {
477
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
478
- const middleware = _def.middlewares[callOpts.index];
479
- const result = await middleware({
480
- ctx: callOpts.ctx,
481
- type: opts.type,
482
- path: opts.path,
483
- rawInput: opts.rawInput,
484
- meta: _def.meta,
485
- input: callOpts.input,
486
- next: async (nextOpts)=>{
487
- return await callRecursive({
488
- index: callOpts.index + 1,
489
- ctx: nextOpts && 'ctx' in nextOpts ? {
490
- ...callOpts.ctx,
491
- ...nextOpts.ctx
492
- } : callOpts.ctx,
493
- input: nextOpts && 'input' in nextOpts ? nextOpts.input : callOpts.input
494
- });
495
- }
496
- });
497
- return result;
498
- } catch (cause) {
499
- return {
500
- ok: false,
501
- error: TRPCError.getTRPCErrorFromUnknown(cause),
502
- marker: middlewareMarker
503
- };
504
- }
505
- };
506
- // there's always at least one "next" since we wrap this.resolver in a middleware
507
- const result = await callRecursive();
508
- if (!result) {
509
- throw new TRPCError.TRPCError({
510
- code: 'INTERNAL_SERVER_ERROR',
511
- message: 'No result from middlewares - did you forget to `return next()`?'
512
- });
513
- }
514
- if (!result.ok) {
515
- // re-throw original error
516
- throw result.error;
517
- }
518
- return result.data;
519
- };
520
- procedure._def = _def;
521
- procedure.meta = _def.meta;
522
- return procedure;
523
- }
524
-
525
259
  const HTTP_METHOD_PROCEDURE_TYPE_MAP = {
526
260
  GET: 'query',
527
261
  POST: 'mutation'
@@ -725,16 +459,11 @@ async function resolveHTTPResponse(opts) {
725
459
 
726
460
  exports.assertNotBrowser = assertNotBrowser;
727
461
  exports.callProcedure = callProcedure;
728
- exports.createBuilder = createBuilder;
729
- exports.createInputMiddleware = createInputMiddleware;
730
- exports.createMiddlewareFactory = createMiddlewareFactory;
731
- exports.createOutputMiddleware = createOutputMiddleware;
732
462
  exports.createRouterFactory = createRouterFactory;
733
463
  exports.defaultFormatter = defaultFormatter;
734
464
  exports.defaultTransformer = defaultTransformer;
735
465
  exports.getDataTransformer = getDataTransformer;
736
466
  exports.getHTTPStatusCodeFromError = getHTTPStatusCodeFromError;
737
- exports.getParseFnOrPassThrough = getParseFnOrPassThrough;
738
467
  exports.mergeWithoutOverrides = mergeWithoutOverrides;
739
468
  exports.procedureTypes = procedureTypes;
740
469
  exports.resolveHTTPResponse = resolveHTTPResponse;
@@ -1,5 +1,5 @@
1
- import { T as TRPCError, g as getCauseFromUnknown, a as getTRPCErrorFromUnknown } from './TRPCError-e99e7cbe.mjs';
2
- import { i as invert, T as TRPC_ERROR_CODES_BY_KEY } from './codes-f164ac85.mjs';
1
+ import { T as TRPCError, g as getTRPCErrorFromUnknown, a as getCauseFromUnknown } from './TRPCError-281ac25a.mjs';
2
+ import { i as invert, T as TRPC_ERROR_CODES_BY_KEY } from './codes-7d21f749.mjs';
3
3
  import { c as createProxy } from './index-5b2e87d4.mjs';
4
4
  import { t as transformTRPCResponse } from './transformTRPCResponse-c8138d5f.mjs';
5
5
 
@@ -26,7 +26,8 @@ const JSONRPC2_TO_HTTP_CODE = {
26
26
  CLIENT_CLOSED_REQUEST: 499,
27
27
  PRECONDITION_FAILED: 412,
28
28
  PAYLOAD_TOO_LARGE: 413,
29
- METHOD_NOT_SUPPORTED: 405
29
+ METHOD_NOT_SUPPORTED: 405,
30
+ TOO_MANY_REQUESTS: 429
30
31
  };
31
32
  function getStatusCodeFromKey(code) {
32
33
  return JSONRPC2_TO_HTTP_CODE[code] ?? 500;
@@ -131,7 +132,7 @@ const emptyRouter = {
131
132
  /**
132
133
  * Then is a reserved word because otherwise we can't return a promise that returns a Proxy
133
134
  * since JS will think that `.then` is something that exists
134
- */ 'then',
135
+ */ 'then'
135
136
  ];
136
137
  /**
137
138
  *
@@ -253,273 +254,6 @@ const emptyRouter = {
253
254
  return procedure(opts);
254
255
  }
255
256
 
256
- /**
257
- * @internal
258
- */ // FIXME this should use RootConfig
259
- function createMiddlewareFactory() {
260
- return function createMiddleware(fn) {
261
- return fn;
262
- };
263
- }
264
- function isPlainObject(obj) {
265
- return obj && typeof obj === 'object' && !Array.isArray(obj);
266
- }
267
- /**
268
- * @internal
269
- * Please note, `trpc-openapi` uses this function.
270
- */ function createInputMiddleware(parse) {
271
- const inputMiddleware = async ({ next , rawInput , input , })=>{
272
- let parsedInput;
273
- try {
274
- parsedInput = await parse(rawInput);
275
- } catch (cause) {
276
- throw new TRPCError({
277
- code: 'BAD_REQUEST',
278
- cause: getCauseFromUnknown(cause)
279
- });
280
- }
281
- // Multiple input parsers
282
- const combinedInput = isPlainObject(input) && isPlainObject(parsedInput) ? {
283
- ...input,
284
- ...parsedInput
285
- } : parsedInput;
286
- // TODO fix this typing?
287
- return next({
288
- input: combinedInput
289
- });
290
- };
291
- inputMiddleware._type = 'input';
292
- return inputMiddleware;
293
- }
294
- /**
295
- * @internal
296
- */ function createOutputMiddleware(parse) {
297
- const outputMiddleware = async ({ next })=>{
298
- const result = await next();
299
- if (!result.ok) {
300
- // pass through failures without validating
301
- return result;
302
- }
303
- try {
304
- const data = await parse(result.data);
305
- return {
306
- ...result,
307
- data
308
- };
309
- } catch (cause) {
310
- throw new TRPCError({
311
- message: 'Output validation failed',
312
- code: 'INTERNAL_SERVER_ERROR',
313
- cause: getCauseFromUnknown(cause)
314
- });
315
- }
316
- };
317
- outputMiddleware._type = 'output';
318
- return outputMiddleware;
319
- }
320
-
321
- function getParseFn(procedureParser) {
322
- const parser = procedureParser;
323
- if (typeof parser === 'function') {
324
- // ProcedureParserCustomValidatorEsque
325
- return parser;
326
- }
327
- if (typeof parser.parseAsync === 'function') {
328
- // ProcedureParserZodEsque
329
- return parser.parseAsync.bind(parser);
330
- }
331
- if (typeof parser.parse === 'function') {
332
- // ProcedureParserZodEsque
333
- return parser.parse.bind(parser);
334
- }
335
- if (typeof parser.validateSync === 'function') {
336
- // ProcedureParserYupEsque
337
- return parser.validateSync.bind(parser);
338
- }
339
- if (typeof parser.create === 'function') {
340
- // ProcedureParserSuperstructEsque
341
- return parser.create.bind(parser);
342
- }
343
- throw new Error('Could not find a validator fn');
344
- }
345
- /**
346
- * @deprecated only for backwards compat
347
- * @internal
348
- */ function getParseFnOrPassThrough(procedureParser) {
349
- if (!procedureParser) {
350
- return (v)=>v;
351
- }
352
- return getParseFn(procedureParser);
353
- }
354
-
355
- /**
356
- * @internal
357
- */ const middlewareMarker = 'middlewareMarker';
358
-
359
- function createNewBuilder(def1, def2) {
360
- const { middlewares =[] , inputs , ...rest } = def2;
361
- // TODO: maybe have a fn here to warn about calls
362
- return createBuilder({
363
- ...mergeWithoutOverrides(def1, rest),
364
- inputs: [
365
- ...def1.inputs,
366
- ...inputs ?? []
367
- ],
368
- middlewares: [
369
- ...def1.middlewares,
370
- ...middlewares
371
- ]
372
- });
373
- }
374
- function createBuilder(initDef) {
375
- const _def = initDef || {
376
- inputs: [],
377
- middlewares: []
378
- };
379
- return {
380
- _def,
381
- input (input) {
382
- const parser = getParseFn(input);
383
- return createNewBuilder(_def, {
384
- inputs: [
385
- input
386
- ],
387
- middlewares: [
388
- createInputMiddleware(parser)
389
- ]
390
- });
391
- },
392
- output (output) {
393
- const parseOutput = getParseFn(output);
394
- return createNewBuilder(_def, {
395
- output,
396
- middlewares: [
397
- createOutputMiddleware(parseOutput)
398
- ]
399
- });
400
- },
401
- meta (meta) {
402
- return createNewBuilder(_def, {
403
- meta: meta
404
- });
405
- },
406
- unstable_concat (builder) {
407
- return createNewBuilder(_def, builder._def);
408
- },
409
- use (middleware) {
410
- return createNewBuilder(_def, {
411
- middlewares: [
412
- middleware
413
- ]
414
- });
415
- },
416
- query (resolver) {
417
- return createResolver({
418
- ..._def,
419
- query: true
420
- }, resolver);
421
- },
422
- mutation (resolver) {
423
- return createResolver({
424
- ..._def,
425
- mutation: true
426
- }, resolver);
427
- },
428
- subscription (resolver) {
429
- return createResolver({
430
- ..._def,
431
- subscription: true
432
- }, resolver);
433
- }
434
- };
435
- }
436
- function createResolver(_def, resolver) {
437
- const finalBuilder = createNewBuilder(_def, {
438
- resolver,
439
- middlewares: [
440
- async function resolveMiddleware(opts) {
441
- const data = await resolver(opts);
442
- return {
443
- marker: middlewareMarker,
444
- ok: true,
445
- data,
446
- ctx: opts.ctx
447
- };
448
- },
449
- ]
450
- });
451
- return createProcedureCaller(finalBuilder._def);
452
- }
453
- const codeblock = `
454
- If you want to call this function on the server, you do the following:
455
- This is a client-only function.
456
-
457
- const caller = appRouter.createCaller({
458
- /* ... your context */
459
- });
460
-
461
- const result = await caller.call('myProcedure', input);
462
- `.trim();
463
- function createProcedureCaller(_def) {
464
- const procedure = async function resolve(opts) {
465
- // is direct server-side call
466
- if (!opts || !('rawInput' in opts)) {
467
- throw new Error(codeblock);
468
- }
469
- // run the middlewares recursively with the resolver as the last one
470
- const callRecursive = async (callOpts = {
471
- index: 0,
472
- ctx: opts.ctx
473
- })=>{
474
- try {
475
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
476
- const middleware = _def.middlewares[callOpts.index];
477
- const result = await middleware({
478
- ctx: callOpts.ctx,
479
- type: opts.type,
480
- path: opts.path,
481
- rawInput: opts.rawInput,
482
- meta: _def.meta,
483
- input: callOpts.input,
484
- next: async (nextOpts)=>{
485
- return await callRecursive({
486
- index: callOpts.index + 1,
487
- ctx: nextOpts && 'ctx' in nextOpts ? {
488
- ...callOpts.ctx,
489
- ...nextOpts.ctx
490
- } : callOpts.ctx,
491
- input: nextOpts && 'input' in nextOpts ? nextOpts.input : callOpts.input
492
- });
493
- }
494
- });
495
- return result;
496
- } catch (cause) {
497
- return {
498
- ok: false,
499
- error: getTRPCErrorFromUnknown(cause),
500
- marker: middlewareMarker
501
- };
502
- }
503
- };
504
- // there's always at least one "next" since we wrap this.resolver in a middleware
505
- const result = await callRecursive();
506
- if (!result) {
507
- throw new TRPCError({
508
- code: 'INTERNAL_SERVER_ERROR',
509
- message: 'No result from middlewares - did you forget to `return next()`?'
510
- });
511
- }
512
- if (!result.ok) {
513
- // re-throw original error
514
- throw result.error;
515
- }
516
- return result.data;
517
- };
518
- procedure._def = _def;
519
- procedure.meta = _def.meta;
520
- return procedure;
521
- }
522
-
523
257
  const HTTP_METHOD_PROCEDURE_TYPE_MAP = {
524
258
  GET: 'query',
525
259
  POST: 'mutation'
@@ -721,4 +455,4 @@ async function resolveHTTPResponse(opts) {
721
455
  }
722
456
  }
723
457
 
724
- export { defaultTransformer as a, createBuilder as b, createRouterFactory as c, defaultFormatter as d, createMiddlewareFactory as e, assertNotBrowser as f, getDataTransformer as g, callProcedure as h, createInputMiddleware as i, createOutputMiddleware as j, getParseFnOrPassThrough as k, getHTTPStatusCodeFromError as l, mergeWithoutOverrides as m, procedureTypes as p, resolveHTTPResponse as r };
458
+ export { defaultTransformer as a, assertNotBrowser as b, createRouterFactory as c, defaultFormatter as d, callProcedure as e, getHTTPStatusCodeFromError as f, getDataTransformer as g, mergeWithoutOverrides as m, procedureTypes as p, resolveHTTPResponse as r };