@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,6 +1,273 @@
1
- import { f as assertNotBrowser, m as mergeWithoutOverrides, c as createRouterFactory, k as getParseFnOrPassThrough, i as createInputMiddleware, b as createBuilder, j as createOutputMiddleware, d as defaultFormatter, l as getHTTPStatusCodeFromError, a as defaultTransformer } from './resolveHTTPResponse-3c852af0.mjs';
2
- import { T as TRPC_ERROR_CODES_BY_KEY } from './codes-f164ac85.mjs';
3
- import { T as TRPCError, g as getCauseFromUnknown, a as getTRPCErrorFromUnknown } from './TRPCError-e99e7cbe.mjs';
1
+ import { m as mergeWithoutOverrides, b as assertNotBrowser, c as createRouterFactory, d as defaultFormatter, f as getHTTPStatusCodeFromError, a as defaultTransformer } from './resolveHTTPResponse-24d99c94.mjs';
2
+ import { T as TRPC_ERROR_CODES_BY_KEY } from './codes-7d21f749.mjs';
3
+ import { T as TRPCError, a as getCauseFromUnknown, g as getTRPCErrorFromUnknown } from './TRPCError-281ac25a.mjs';
4
+
5
+ /**
6
+ * @internal
7
+ */ // FIXME this should use RootConfig
8
+ function createMiddlewareFactory() {
9
+ return function createMiddleware(fn) {
10
+ return fn;
11
+ };
12
+ }
13
+ function isPlainObject(obj) {
14
+ return obj && typeof obj === 'object' && !Array.isArray(obj);
15
+ }
16
+ /**
17
+ * @internal
18
+ * Please note, `trpc-openapi` uses this function.
19
+ */ function createInputMiddleware(parse) {
20
+ const inputMiddleware = async ({ next , rawInput , input , })=>{
21
+ let parsedInput;
22
+ try {
23
+ parsedInput = await parse(rawInput);
24
+ } catch (cause) {
25
+ throw new TRPCError({
26
+ code: 'BAD_REQUEST',
27
+ cause: getCauseFromUnknown(cause)
28
+ });
29
+ }
30
+ // Multiple input parsers
31
+ const combinedInput = isPlainObject(input) && isPlainObject(parsedInput) ? {
32
+ ...input,
33
+ ...parsedInput
34
+ } : parsedInput;
35
+ // TODO fix this typing?
36
+ return next({
37
+ input: combinedInput
38
+ });
39
+ };
40
+ inputMiddleware._type = 'input';
41
+ return inputMiddleware;
42
+ }
43
+ /**
44
+ * @internal
45
+ */ function createOutputMiddleware(parse) {
46
+ const outputMiddleware = async ({ next })=>{
47
+ const result = await next();
48
+ if (!result.ok) {
49
+ // pass through failures without validating
50
+ return result;
51
+ }
52
+ try {
53
+ const data = await parse(result.data);
54
+ return {
55
+ ...result,
56
+ data
57
+ };
58
+ } catch (cause) {
59
+ throw new TRPCError({
60
+ message: 'Output validation failed',
61
+ code: 'INTERNAL_SERVER_ERROR',
62
+ cause: getCauseFromUnknown(cause)
63
+ });
64
+ }
65
+ };
66
+ outputMiddleware._type = 'output';
67
+ return outputMiddleware;
68
+ }
69
+
70
+ function getParseFn$1(procedureParser) {
71
+ const parser = procedureParser;
72
+ if (typeof parser === 'function') {
73
+ // ProcedureParserCustomValidatorEsque
74
+ return parser;
75
+ }
76
+ if (typeof parser.parseAsync === 'function') {
77
+ // ProcedureParserZodEsque
78
+ return parser.parseAsync.bind(parser);
79
+ }
80
+ if (typeof parser.parse === 'function') {
81
+ // ProcedureParserZodEsque
82
+ return parser.parse.bind(parser);
83
+ }
84
+ if (typeof parser.validateSync === 'function') {
85
+ // ProcedureParserYupEsque
86
+ return parser.validateSync.bind(parser);
87
+ }
88
+ if (typeof parser.create === 'function') {
89
+ // ProcedureParserSuperstructEsque
90
+ return parser.create.bind(parser);
91
+ }
92
+ throw new Error('Could not find a validator fn');
93
+ }
94
+ /**
95
+ * @deprecated only for backwards compat
96
+ * @internal
97
+ */ function getParseFnOrPassThrough(procedureParser) {
98
+ if (!procedureParser) {
99
+ return (v)=>v;
100
+ }
101
+ return getParseFn$1(procedureParser);
102
+ }
103
+
104
+ /**
105
+ * @internal
106
+ */ const middlewareMarker$1 = 'middlewareMarker';
107
+
108
+ function createNewBuilder(def1, def2) {
109
+ const { middlewares =[] , inputs , ...rest } = def2;
110
+ // TODO: maybe have a fn here to warn about calls
111
+ return createBuilder({
112
+ ...mergeWithoutOverrides(def1, rest),
113
+ inputs: [
114
+ ...def1.inputs,
115
+ ...inputs ?? []
116
+ ],
117
+ middlewares: [
118
+ ...def1.middlewares,
119
+ ...middlewares
120
+ ]
121
+ });
122
+ }
123
+ function createBuilder(initDef) {
124
+ const _def = initDef || {
125
+ inputs: [],
126
+ middlewares: []
127
+ };
128
+ return {
129
+ _def,
130
+ input (input) {
131
+ const parser = getParseFn$1(input);
132
+ return createNewBuilder(_def, {
133
+ inputs: [
134
+ input
135
+ ],
136
+ middlewares: [
137
+ createInputMiddleware(parser)
138
+ ]
139
+ });
140
+ },
141
+ output (output) {
142
+ const parseOutput = getParseFn$1(output);
143
+ return createNewBuilder(_def, {
144
+ output,
145
+ middlewares: [
146
+ createOutputMiddleware(parseOutput)
147
+ ]
148
+ });
149
+ },
150
+ meta (meta) {
151
+ return createNewBuilder(_def, {
152
+ meta: meta
153
+ });
154
+ },
155
+ unstable_concat (builder) {
156
+ return createNewBuilder(_def, builder._def);
157
+ },
158
+ use (middleware) {
159
+ return createNewBuilder(_def, {
160
+ middlewares: [
161
+ middleware
162
+ ]
163
+ });
164
+ },
165
+ query (resolver) {
166
+ return createResolver({
167
+ ..._def,
168
+ query: true
169
+ }, resolver);
170
+ },
171
+ mutation (resolver) {
172
+ return createResolver({
173
+ ..._def,
174
+ mutation: true
175
+ }, resolver);
176
+ },
177
+ subscription (resolver) {
178
+ return createResolver({
179
+ ..._def,
180
+ subscription: true
181
+ }, resolver);
182
+ }
183
+ };
184
+ }
185
+ function createResolver(_def, resolver) {
186
+ const finalBuilder = createNewBuilder(_def, {
187
+ resolver,
188
+ middlewares: [
189
+ async function resolveMiddleware(opts) {
190
+ const data = await resolver(opts);
191
+ return {
192
+ marker: middlewareMarker$1,
193
+ ok: true,
194
+ data,
195
+ ctx: opts.ctx
196
+ };
197
+ }
198
+ ]
199
+ });
200
+ return createProcedureCaller(finalBuilder._def);
201
+ }
202
+ const codeblock = `
203
+ If you want to call this function on the server, you do the following:
204
+ This is a client-only function.
205
+
206
+ const caller = appRouter.createCaller({
207
+ /* ... your context */
208
+ });
209
+
210
+ const result = await caller.call('myProcedure', input);
211
+ `.trim();
212
+ function createProcedureCaller(_def) {
213
+ const procedure = async function resolve(opts) {
214
+ // is direct server-side call
215
+ if (!opts || !('rawInput' in opts)) {
216
+ throw new Error(codeblock);
217
+ }
218
+ // run the middlewares recursively with the resolver as the last one
219
+ const callRecursive = async (callOpts = {
220
+ index: 0,
221
+ ctx: opts.ctx
222
+ })=>{
223
+ try {
224
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
225
+ const middleware = _def.middlewares[callOpts.index];
226
+ const result = await middleware({
227
+ ctx: callOpts.ctx,
228
+ type: opts.type,
229
+ path: opts.path,
230
+ rawInput: opts.rawInput,
231
+ meta: _def.meta,
232
+ input: callOpts.input,
233
+ next: async (nextOpts)=>{
234
+ return await callRecursive({
235
+ index: callOpts.index + 1,
236
+ ctx: nextOpts && 'ctx' in nextOpts ? {
237
+ ...callOpts.ctx,
238
+ ...nextOpts.ctx
239
+ } : callOpts.ctx,
240
+ input: nextOpts && 'input' in nextOpts ? nextOpts.input : callOpts.input
241
+ });
242
+ }
243
+ });
244
+ return result;
245
+ } catch (cause) {
246
+ return {
247
+ ok: false,
248
+ error: getTRPCErrorFromUnknown(cause),
249
+ marker: middlewareMarker$1
250
+ };
251
+ }
252
+ };
253
+ // there's always at least one "next" since we wrap this.resolver in a middleware
254
+ const result = await callRecursive();
255
+ if (!result) {
256
+ throw new TRPCError({
257
+ code: 'INTERNAL_SERVER_ERROR',
258
+ message: 'No result from middlewares - did you forget to `return next()`?'
259
+ });
260
+ }
261
+ if (!result.ok) {
262
+ // re-throw original error
263
+ throw result.error;
264
+ }
265
+ return result.data;
266
+ };
267
+ procedure._def = _def;
268
+ procedure.meta = _def.meta;
269
+ return procedure;
270
+ }
4
271
 
5
272
  assertNotBrowser();
6
273
 
@@ -87,7 +354,7 @@ function getParseFn(procedureParser) {
87
354
  data,
88
355
  ctx
89
356
  };
90
- },
357
+ }
91
358
  ]);
92
359
  // run the middlewares recursively with the resolver as the last one
93
360
  const callRecursive = async (callOpts = {
@@ -192,7 +459,7 @@ function migrateProcedure(oldProc, type) {
192
459
  middlewares: [
193
460
  ...def.middlewares,
194
461
  inputMiddleware,
195
- createOutputMiddleware(outputParser),
462
+ createOutputMiddleware(outputParser)
196
463
  ],
197
464
  meta: def.meta,
198
465
  output: def.outputParser,
@@ -296,7 +563,7 @@ function safeObject(...args) {
296
563
  const duplicates = [
297
564
  ...duplicateQueries,
298
565
  ...duplicateMutations,
299
- ...duplicateSubscriptions,
566
+ ...duplicateSubscriptions
300
567
  ];
301
568
  if (duplicates.length) {
302
569
  throw new Error(`Duplicate endpoint(s): ${duplicates.join(', ')}`);
@@ -448,4 +715,4 @@ function safeObject(...args) {
448
715
  return new Router();
449
716
  }
450
717
 
451
- export { router as r };
718
+ export { createMiddlewareFactory as a, createInputMiddleware as b, createBuilder as c, createOutputMiddleware as d, router as r };
@@ -1,9 +1,276 @@
1
1
  'use strict';
2
2
 
3
- var resolveHTTPResponse = require('./resolveHTTPResponse-a52a77cb.js');
4
- var codes = require('./codes-731f0a7c.js');
3
+ var resolveHTTPResponse = require('./resolveHTTPResponse-0a8e47b8.js');
4
+ var codes = require('./codes-76c38a34.js');
5
5
  var TRPCError = require('./TRPCError-fe9113e5.js');
6
6
 
7
+ /**
8
+ * @internal
9
+ */ // FIXME this should use RootConfig
10
+ function createMiddlewareFactory() {
11
+ return function createMiddleware(fn) {
12
+ return fn;
13
+ };
14
+ }
15
+ function isPlainObject(obj) {
16
+ return obj && typeof obj === 'object' && !Array.isArray(obj);
17
+ }
18
+ /**
19
+ * @internal
20
+ * Please note, `trpc-openapi` uses this function.
21
+ */ function createInputMiddleware(parse) {
22
+ const inputMiddleware = async ({ next , rawInput , input , })=>{
23
+ let parsedInput;
24
+ try {
25
+ parsedInput = await parse(rawInput);
26
+ } catch (cause) {
27
+ throw new TRPCError.TRPCError({
28
+ code: 'BAD_REQUEST',
29
+ cause: TRPCError.getCauseFromUnknown(cause)
30
+ });
31
+ }
32
+ // Multiple input parsers
33
+ const combinedInput = isPlainObject(input) && isPlainObject(parsedInput) ? {
34
+ ...input,
35
+ ...parsedInput
36
+ } : parsedInput;
37
+ // TODO fix this typing?
38
+ return next({
39
+ input: combinedInput
40
+ });
41
+ };
42
+ inputMiddleware._type = 'input';
43
+ return inputMiddleware;
44
+ }
45
+ /**
46
+ * @internal
47
+ */ function createOutputMiddleware(parse) {
48
+ const outputMiddleware = async ({ next })=>{
49
+ const result = await next();
50
+ if (!result.ok) {
51
+ // pass through failures without validating
52
+ return result;
53
+ }
54
+ try {
55
+ const data = await parse(result.data);
56
+ return {
57
+ ...result,
58
+ data
59
+ };
60
+ } catch (cause) {
61
+ throw new TRPCError.TRPCError({
62
+ message: 'Output validation failed',
63
+ code: 'INTERNAL_SERVER_ERROR',
64
+ cause: TRPCError.getCauseFromUnknown(cause)
65
+ });
66
+ }
67
+ };
68
+ outputMiddleware._type = 'output';
69
+ return outputMiddleware;
70
+ }
71
+
72
+ function getParseFn$1(procedureParser) {
73
+ const parser = procedureParser;
74
+ if (typeof parser === 'function') {
75
+ // ProcedureParserCustomValidatorEsque
76
+ return parser;
77
+ }
78
+ if (typeof parser.parseAsync === 'function') {
79
+ // ProcedureParserZodEsque
80
+ return parser.parseAsync.bind(parser);
81
+ }
82
+ if (typeof parser.parse === 'function') {
83
+ // ProcedureParserZodEsque
84
+ return parser.parse.bind(parser);
85
+ }
86
+ if (typeof parser.validateSync === 'function') {
87
+ // ProcedureParserYupEsque
88
+ return parser.validateSync.bind(parser);
89
+ }
90
+ if (typeof parser.create === 'function') {
91
+ // ProcedureParserSuperstructEsque
92
+ return parser.create.bind(parser);
93
+ }
94
+ throw new Error('Could not find a validator fn');
95
+ }
96
+ /**
97
+ * @deprecated only for backwards compat
98
+ * @internal
99
+ */ function getParseFnOrPassThrough(procedureParser) {
100
+ if (!procedureParser) {
101
+ return (v)=>v;
102
+ }
103
+ return getParseFn$1(procedureParser);
104
+ }
105
+
106
+ /**
107
+ * @internal
108
+ */ const middlewareMarker$1 = 'middlewareMarker';
109
+
110
+ function createNewBuilder(def1, def2) {
111
+ const { middlewares =[] , inputs , ...rest } = def2;
112
+ // TODO: maybe have a fn here to warn about calls
113
+ return createBuilder({
114
+ ...resolveHTTPResponse.mergeWithoutOverrides(def1, rest),
115
+ inputs: [
116
+ ...def1.inputs,
117
+ ...inputs ?? []
118
+ ],
119
+ middlewares: [
120
+ ...def1.middlewares,
121
+ ...middlewares
122
+ ]
123
+ });
124
+ }
125
+ function createBuilder(initDef) {
126
+ const _def = initDef || {
127
+ inputs: [],
128
+ middlewares: []
129
+ };
130
+ return {
131
+ _def,
132
+ input (input) {
133
+ const parser = getParseFn$1(input);
134
+ return createNewBuilder(_def, {
135
+ inputs: [
136
+ input
137
+ ],
138
+ middlewares: [
139
+ createInputMiddleware(parser)
140
+ ]
141
+ });
142
+ },
143
+ output (output) {
144
+ const parseOutput = getParseFn$1(output);
145
+ return createNewBuilder(_def, {
146
+ output,
147
+ middlewares: [
148
+ createOutputMiddleware(parseOutput)
149
+ ]
150
+ });
151
+ },
152
+ meta (meta) {
153
+ return createNewBuilder(_def, {
154
+ meta: meta
155
+ });
156
+ },
157
+ unstable_concat (builder) {
158
+ return createNewBuilder(_def, builder._def);
159
+ },
160
+ use (middleware) {
161
+ return createNewBuilder(_def, {
162
+ middlewares: [
163
+ middleware
164
+ ]
165
+ });
166
+ },
167
+ query (resolver) {
168
+ return createResolver({
169
+ ..._def,
170
+ query: true
171
+ }, resolver);
172
+ },
173
+ mutation (resolver) {
174
+ return createResolver({
175
+ ..._def,
176
+ mutation: true
177
+ }, resolver);
178
+ },
179
+ subscription (resolver) {
180
+ return createResolver({
181
+ ..._def,
182
+ subscription: true
183
+ }, resolver);
184
+ }
185
+ };
186
+ }
187
+ function createResolver(_def, resolver) {
188
+ const finalBuilder = createNewBuilder(_def, {
189
+ resolver,
190
+ middlewares: [
191
+ async function resolveMiddleware(opts) {
192
+ const data = await resolver(opts);
193
+ return {
194
+ marker: middlewareMarker$1,
195
+ ok: true,
196
+ data,
197
+ ctx: opts.ctx
198
+ };
199
+ }
200
+ ]
201
+ });
202
+ return createProcedureCaller(finalBuilder._def);
203
+ }
204
+ const codeblock = `
205
+ If you want to call this function on the server, you do the following:
206
+ This is a client-only function.
207
+
208
+ const caller = appRouter.createCaller({
209
+ /* ... your context */
210
+ });
211
+
212
+ const result = await caller.call('myProcedure', input);
213
+ `.trim();
214
+ function createProcedureCaller(_def) {
215
+ const procedure = async function resolve(opts) {
216
+ // is direct server-side call
217
+ if (!opts || !('rawInput' in opts)) {
218
+ throw new Error(codeblock);
219
+ }
220
+ // run the middlewares recursively with the resolver as the last one
221
+ const callRecursive = async (callOpts = {
222
+ index: 0,
223
+ ctx: opts.ctx
224
+ })=>{
225
+ try {
226
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
227
+ const middleware = _def.middlewares[callOpts.index];
228
+ const result = await middleware({
229
+ ctx: callOpts.ctx,
230
+ type: opts.type,
231
+ path: opts.path,
232
+ rawInput: opts.rawInput,
233
+ meta: _def.meta,
234
+ input: callOpts.input,
235
+ next: async (nextOpts)=>{
236
+ return await callRecursive({
237
+ index: callOpts.index + 1,
238
+ ctx: nextOpts && 'ctx' in nextOpts ? {
239
+ ...callOpts.ctx,
240
+ ...nextOpts.ctx
241
+ } : callOpts.ctx,
242
+ input: nextOpts && 'input' in nextOpts ? nextOpts.input : callOpts.input
243
+ });
244
+ }
245
+ });
246
+ return result;
247
+ } catch (cause) {
248
+ return {
249
+ ok: false,
250
+ error: TRPCError.getTRPCErrorFromUnknown(cause),
251
+ marker: middlewareMarker$1
252
+ };
253
+ }
254
+ };
255
+ // there's always at least one "next" since we wrap this.resolver in a middleware
256
+ const result = await callRecursive();
257
+ if (!result) {
258
+ throw new TRPCError.TRPCError({
259
+ code: 'INTERNAL_SERVER_ERROR',
260
+ message: 'No result from middlewares - did you forget to `return next()`?'
261
+ });
262
+ }
263
+ if (!result.ok) {
264
+ // re-throw original error
265
+ throw result.error;
266
+ }
267
+ return result.data;
268
+ };
269
+ procedure._def = _def;
270
+ procedure.meta = _def.meta;
271
+ return procedure;
272
+ }
273
+
7
274
  resolveHTTPResponse.assertNotBrowser();
8
275
 
9
276
  /**
@@ -89,7 +356,7 @@ function getParseFn(procedureParser) {
89
356
  data,
90
357
  ctx
91
358
  };
92
- },
359
+ }
93
360
  ]);
94
361
  // run the middlewares recursively with the resolver as the last one
95
362
  const callRecursive = async (callOpts = {
@@ -184,17 +451,17 @@ function createProcedure(opts) {
184
451
 
185
452
  function migrateProcedure(oldProc, type) {
186
453
  const def = oldProc._def();
187
- const inputParser = resolveHTTPResponse.getParseFnOrPassThrough(def.inputParser);
188
- const outputParser = resolveHTTPResponse.getParseFnOrPassThrough(def.outputParser);
189
- const inputMiddleware = resolveHTTPResponse.createInputMiddleware(inputParser);
190
- const builder = resolveHTTPResponse.createBuilder({
454
+ const inputParser = getParseFnOrPassThrough(def.inputParser);
455
+ const outputParser = getParseFnOrPassThrough(def.outputParser);
456
+ const inputMiddleware = createInputMiddleware(inputParser);
457
+ const builder = createBuilder({
191
458
  inputs: [
192
459
  def.inputParser
193
460
  ],
194
461
  middlewares: [
195
462
  ...def.middlewares,
196
463
  inputMiddleware,
197
- resolveHTTPResponse.createOutputMiddleware(outputParser),
464
+ createOutputMiddleware(outputParser)
198
465
  ],
199
466
  meta: def.meta,
200
467
  output: def.outputParser,
@@ -298,7 +565,7 @@ function safeObject(...args) {
298
565
  const duplicates = [
299
566
  ...duplicateQueries,
300
567
  ...duplicateMutations,
301
- ...duplicateSubscriptions,
568
+ ...duplicateSubscriptions
302
569
  ];
303
570
  if (duplicates.length) {
304
571
  throw new Error(`Duplicate endpoint(s): ${duplicates.join(', ')}`);
@@ -450,4 +717,8 @@ function safeObject(...args) {
450
717
  return new Router();
451
718
  }
452
719
 
720
+ exports.createBuilder = createBuilder;
721
+ exports.createInputMiddleware = createInputMiddleware;
722
+ exports.createMiddlewareFactory = createMiddlewareFactory;
723
+ exports.createOutputMiddleware = createOutputMiddleware;
453
724
  exports.router = router;
@@ -26,6 +26,7 @@ export declare const TRPC_ERROR_CODES_BY_KEY: {
26
26
  readonly CONFLICT: -32009;
27
27
  readonly PRECONDITION_FAILED: -32012;
28
28
  readonly PAYLOAD_TOO_LARGE: -32013;
29
+ readonly TOO_MANY_REQUESTS: -32029;
29
30
  readonly CLIENT_CLOSED_REQUEST: -32099;
30
31
  };
31
32
  export declare const TRPC_ERROR_CODES_BY_NUMBER: {
@@ -40,6 +41,7 @@ export declare const TRPC_ERROR_CODES_BY_NUMBER: {
40
41
  [-32009]: "CONFLICT";
41
42
  [-32012]: "PRECONDITION_FAILED";
42
43
  [-32013]: "PAYLOAD_TOO_LARGE";
44
+ [-32029]: "TOO_MANY_REQUESTS";
43
45
  [-32099]: "CLIENT_CLOSED_REQUEST";
44
46
  };
45
47
  declare type ValueOf<TObj> = TObj[keyof TObj];
@@ -1 +1 @@
1
- {"version":3,"file":"codes.d.ts","sourceRoot":"","sources":["../../../../packages/server/src/rpc/codes.ts"],"names":[],"mappings":"AAIA;;;;;GAKG;AACH,eAAO,MAAM,uBAAuB;IAClC;;;OAGG;;IAEH;;OAEG;;IAEH;;OAEG;;;;;;;;;;;CAYK,CAAC;AAEX,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;CAAkC,CAAC;AAC1E,aAAK,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;AAEtC,oBAAY,sBAAsB,GAAG,OAAO,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAC7E,oBAAY,mBAAmB,GAAG,MAAM,OAAO,uBAAuB,CAAC"}
1
+ {"version":3,"file":"codes.d.ts","sourceRoot":"","sources":["../../../../packages/server/src/rpc/codes.ts"],"names":[],"mappings":"AAIA;;;;;GAKG;AACH,eAAO,MAAM,uBAAuB;IAClC;;;OAGG;;IAEH;;OAEG;;IAEH;;OAEG;;;;;;;;;;;;CAaK,CAAC;AAEX,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;CAAkC,CAAC;AAC1E,aAAK,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;AAEtC,oBAAY,sBAAsB,GAAG,OAAO,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAC7E,oBAAY,mBAAmB,GAAG,MAAM,OAAO,uBAAuB,CAAC"}
package/dist/rpc/index.js CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var codes = require('../codes-731f0a7c.js');
5
+ var codes = require('../codes-76c38a34.js');
6
6
 
7
7
 
8
8
 
@@ -1 +1 @@
1
- export { T as TRPC_ERROR_CODES_BY_KEY, a as TRPC_ERROR_CODES_BY_NUMBER } from '../codes-f164ac85.mjs';
1
+ export { T as TRPC_ERROR_CODES_BY_KEY, a as TRPC_ERROR_CODES_BY_NUMBER } from '../codes-7d21f749.mjs';
@@ -1,4 +1,4 @@
1
- import { a as getTRPCErrorFromUnknown } from './TRPCError-e99e7cbe.mjs';
1
+ import { g as getTRPCErrorFromUnknown } from './TRPCError-281ac25a.mjs';
2
2
  import { o as observable } from './observable-e129ac9d.mjs';
3
3
 
4
4
  function subscriptionPullFactory(opts) {