@trpc/server 9.23.0 → 9.23.2

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.
@@ -1 +1 @@
1
- {"version":3,"file":"procedure.d.ts","sourceRoot":"../../../../src/internals","sources":["procedure.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"procedure.d.ts","sourceRoot":"../../../../src/internals","sources":["procedure.ts"],"names":[],"mappings":"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"}
@@ -40,25 +40,6 @@ const requestHandler = nodeHTTPRequestHandler.nodeHTTPRequestHandler;
40
40
 
41
41
  const middlewareMarker = /*#__PURE__*/Symbol('middlewareMarker');
42
42
 
43
- /**
44
- * Wrap a function in a safe wrapper that never throws
45
- * Returns a discriminated union
46
- */
47
- async function wrapCallSafe(fn) {
48
- try {
49
- const data = await fn();
50
- return {
51
- ok: true,
52
- data
53
- };
54
- } catch (cause) {
55
- return {
56
- ok: false,
57
- error: cause
58
- };
59
- }
60
- }
61
-
62
43
  /* eslint-disable @typescript-eslint/no-explicit-any */
63
44
  resolveHTTPResponse.assertNotBrowser();
64
45
 
@@ -160,31 +141,39 @@ class Procedure {
160
141
  data,
161
142
  ctx
162
143
  };
163
- }]); // create `next()` calls in resolvers
144
+ }]); // run the middlewares recursively with the resolver as the last one
164
145
 
165
- const nextFns = middlewaresWithResolver.map((fn, index) => {
166
- return async nextOpts => {
167
- const res = await wrapCallSafe(() => fn({
168
- ctx: nextOpts ? nextOpts.ctx : opts.ctx,
146
+ const callRecursive = async (callOpts = {
147
+ index: 0,
148
+ ctx: opts.ctx
149
+ }) => {
150
+ try {
151
+ const result = await middlewaresWithResolver[callOpts.index]({
152
+ ctx: callOpts.ctx,
169
153
  type: opts.type,
170
154
  path: opts.path,
171
155
  rawInput: opts.rawInput,
172
156
  meta: this.meta,
173
- next: nextFns[index + 1]
174
- }));
175
-
176
- if (res.ok) {
177
- return res.data;
178
- }
179
-
157
+ next: async nextOpts => {
158
+ return await callRecursive({
159
+ index: callOpts.index + 1,
160
+ ctx: nextOpts ? nextOpts.ctx : callOpts.ctx
161
+ });
162
+ }
163
+ });
164
+ return result;
165
+ } catch (cause) {
180
166
  return {
167
+ ctx: callOpts.ctx,
181
168
  ok: false,
182
- error: transformTRPCResponse.getErrorFromUnknown(res.error)
169
+ error: transformTRPCResponse.getErrorFromUnknown(cause),
170
+ marker: middlewareMarker
183
171
  };
184
- };
185
- }); // there's always at least one "next" since we wrap this.resolver in a middleware
172
+ }
173
+ }; // there's always at least one "next" since we wrap this.resolver in a middleware
174
+
186
175
 
187
- const result = await nextFns[0]();
176
+ const result = await callRecursive();
188
177
 
189
178
  if (!result) {
190
179
  throw new transformTRPCResponse.TRPCError({
@@ -40,25 +40,6 @@ const requestHandler = nodeHTTPRequestHandler.nodeHTTPRequestHandler;
40
40
 
41
41
  const middlewareMarker = /*#__PURE__*/Symbol('middlewareMarker');
42
42
 
43
- /**
44
- * Wrap a function in a safe wrapper that never throws
45
- * Returns a discriminated union
46
- */
47
- async function wrapCallSafe(fn) {
48
- try {
49
- const data = await fn();
50
- return {
51
- ok: true,
52
- data
53
- };
54
- } catch (cause) {
55
- return {
56
- ok: false,
57
- error: cause
58
- };
59
- }
60
- }
61
-
62
43
  /* eslint-disable @typescript-eslint/no-explicit-any */
63
44
  resolveHTTPResponse.assertNotBrowser();
64
45
 
@@ -160,31 +141,39 @@ class Procedure {
160
141
  data,
161
142
  ctx
162
143
  };
163
- }]); // create `next()` calls in resolvers
144
+ }]); // run the middlewares recursively with the resolver as the last one
164
145
 
165
- const nextFns = middlewaresWithResolver.map((fn, index) => {
166
- return async nextOpts => {
167
- const res = await wrapCallSafe(() => fn({
168
- ctx: nextOpts ? nextOpts.ctx : opts.ctx,
146
+ const callRecursive = async (callOpts = {
147
+ index: 0,
148
+ ctx: opts.ctx
149
+ }) => {
150
+ try {
151
+ const result = await middlewaresWithResolver[callOpts.index]({
152
+ ctx: callOpts.ctx,
169
153
  type: opts.type,
170
154
  path: opts.path,
171
155
  rawInput: opts.rawInput,
172
156
  meta: this.meta,
173
- next: nextFns[index + 1]
174
- }));
175
-
176
- if (res.ok) {
177
- return res.data;
178
- }
179
-
157
+ next: async nextOpts => {
158
+ return await callRecursive({
159
+ index: callOpts.index + 1,
160
+ ctx: nextOpts ? nextOpts.ctx : callOpts.ctx
161
+ });
162
+ }
163
+ });
164
+ return result;
165
+ } catch (cause) {
180
166
  return {
167
+ ctx: callOpts.ctx,
181
168
  ok: false,
182
- error: transformTRPCResponse.getErrorFromUnknown(res.error)
169
+ error: transformTRPCResponse.getErrorFromUnknown(cause),
170
+ marker: middlewareMarker
183
171
  };
184
- };
185
- }); // there's always at least one "next" since we wrap this.resolver in a middleware
172
+ }
173
+ }; // there's always at least one "next" since we wrap this.resolver in a middleware
174
+
186
175
 
187
- const result = await nextFns[0]();
176
+ const result = await callRecursive();
188
177
 
189
178
  if (!result) {
190
179
  throw new transformTRPCResponse.TRPCError({
@@ -38,25 +38,6 @@ const requestHandler = nodeHTTPRequestHandler;
38
38
 
39
39
  const middlewareMarker = /*#__PURE__*/Symbol('middlewareMarker');
40
40
 
41
- /**
42
- * Wrap a function in a safe wrapper that never throws
43
- * Returns a discriminated union
44
- */
45
- async function wrapCallSafe(fn) {
46
- try {
47
- const data = await fn();
48
- return {
49
- ok: true,
50
- data
51
- };
52
- } catch (cause) {
53
- return {
54
- ok: false,
55
- error: cause
56
- };
57
- }
58
- }
59
-
60
41
  /* eslint-disable @typescript-eslint/no-explicit-any */
61
42
  assertNotBrowser();
62
43
 
@@ -158,31 +139,39 @@ class Procedure {
158
139
  data,
159
140
  ctx
160
141
  };
161
- }]); // create `next()` calls in resolvers
142
+ }]); // run the middlewares recursively with the resolver as the last one
162
143
 
163
- const nextFns = middlewaresWithResolver.map((fn, index) => {
164
- return async nextOpts => {
165
- const res = await wrapCallSafe(() => fn({
166
- ctx: nextOpts ? nextOpts.ctx : opts.ctx,
144
+ const callRecursive = async (callOpts = {
145
+ index: 0,
146
+ ctx: opts.ctx
147
+ }) => {
148
+ try {
149
+ const result = await middlewaresWithResolver[callOpts.index]({
150
+ ctx: callOpts.ctx,
167
151
  type: opts.type,
168
152
  path: opts.path,
169
153
  rawInput: opts.rawInput,
170
154
  meta: this.meta,
171
- next: nextFns[index + 1]
172
- }));
173
-
174
- if (res.ok) {
175
- return res.data;
176
- }
177
-
155
+ next: async nextOpts => {
156
+ return await callRecursive({
157
+ index: callOpts.index + 1,
158
+ ctx: nextOpts ? nextOpts.ctx : callOpts.ctx
159
+ });
160
+ }
161
+ });
162
+ return result;
163
+ } catch (cause) {
178
164
  return {
165
+ ctx: callOpts.ctx,
179
166
  ok: false,
180
- error: getErrorFromUnknown(res.error)
167
+ error: getErrorFromUnknown(cause),
168
+ marker: middlewareMarker
181
169
  };
182
- };
183
- }); // there's always at least one "next" since we wrap this.resolver in a middleware
170
+ }
171
+ }; // there's always at least one "next" since we wrap this.resolver in a middleware
172
+
184
173
 
185
- const result = await nextFns[0]();
174
+ const result = await callRecursive();
186
175
 
187
176
  if (!result) {
188
177
  throw new TRPCError({
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@trpc/server",
3
- "version": "9.23.0",
3
+ "version": "9.23.2",
4
4
  "description": "tRPC Server",
5
5
  "author": "KATT",
6
6
  "license": "MIT",
@@ -46,9 +46,6 @@
46
46
  "access": "public"
47
47
  },
48
48
  "devDependencies": {
49
- "@testing-library/jest-dom": "^5.14.1",
50
- "@testing-library/react": "^12.0.0",
51
- "@testing-library/user-event": "^14.1.0",
52
49
  "@types/express": "^4.17.12",
53
50
  "@types/hash-sum": "^1.0.0",
54
51
  "@types/ws": "^8.2.0",
@@ -70,5 +67,5 @@
70
67
  "yup": "^0.32.8",
71
68
  "zod": "^3.0.0"
72
69
  },
73
- "gitHead": "f672e66bfa5b19dbfa4c981eb0819b0147f8f404"
70
+ "gitHead": "d62a67b9d1225504401dd53b1cd8c695c98910ec"
74
71
  }
@@ -4,8 +4,11 @@ import { assertNotBrowser } from '../assertNotBrowser';
4
4
  import { ProcedureType } from '../router';
5
5
  import { InferLast } from '../types';
6
6
  import { getErrorFromUnknown } from './errors';
7
- import { MiddlewareFunction, middlewareMarker } from './middlewares';
8
- import { wrapCallSafe } from './wrapCallSafe';
7
+ import {
8
+ MiddlewareFunction,
9
+ MiddlewareResult,
10
+ middlewareMarker,
11
+ } from './middlewares';
9
12
 
10
13
  assertNotBrowser();
11
14
 
@@ -167,7 +170,7 @@ export class Procedure<
167
170
  ): Promise<TFinalOutput> {
168
171
  // wrap the actual resolver and treat as the last "middleware"
169
172
  const middlewaresWithResolver = this.middlewares.concat([
170
- async ({ ctx }: { ctx: TContext }) => {
173
+ async ({ ctx }: { ctx: any }) => {
171
174
  const input = await this.parseInput(opts.rawInput);
172
175
  const rawOutput = await this.resolver({
173
176
  ...opts,
@@ -184,31 +187,40 @@ export class Procedure<
184
187
  },
185
188
  ]);
186
189
 
187
- // create `next()` calls in resolvers
188
- const nextFns = middlewaresWithResolver.map((fn, index) => {
189
- return async (nextOpts?: { ctx: TContext }) => {
190
- const res = await wrapCallSafe(() =>
191
- fn({
192
- ctx: nextOpts ? nextOpts.ctx : opts.ctx,
193
- type: opts.type,
194
- path: opts.path,
195
- rawInput: opts.rawInput,
196
- meta: this.meta,
197
- next: nextFns[index + 1],
198
- }),
199
- );
200
- if (res.ok) {
201
- return res.data;
202
- }
190
+ // run the middlewares recursively with the resolver as the last one
191
+ const callRecursive = async (
192
+ callOpts: { ctx: any; index: number } = {
193
+ index: 0,
194
+ ctx: opts.ctx,
195
+ },
196
+ ): Promise<MiddlewareResult<any>> => {
197
+ try {
198
+ const result = await middlewaresWithResolver[callOpts.index]({
199
+ ctx: callOpts.ctx,
200
+ type: opts.type,
201
+ path: opts.path,
202
+ rawInput: opts.rawInput,
203
+ meta: this.meta,
204
+ next: async (nextOpts?: { ctx: any }) => {
205
+ return await callRecursive({
206
+ index: callOpts.index + 1,
207
+ ctx: nextOpts ? nextOpts.ctx : callOpts.ctx,
208
+ });
209
+ },
210
+ });
211
+ return result;
212
+ } catch (cause) {
203
213
  return {
204
- ok: false as const,
205
- error: getErrorFromUnknown(res.error),
214
+ ctx: callOpts.ctx,
215
+ ok: false,
216
+ error: getErrorFromUnknown(cause),
217
+ marker: middlewareMarker,
206
218
  };
207
- };
208
- });
219
+ }
220
+ };
209
221
 
210
222
  // there's always at least one "next" since we wrap this.resolver in a middleware
211
- const result = await nextFns[0]();
223
+ const result = await callRecursive();
212
224
  if (!result) {
213
225
  throw new TRPCError({
214
226
  code: 'INTERNAL_SERVER_ERROR',
@@ -1,16 +0,0 @@
1
- declare type AsyncFn<T> = () => Promise<T> | T;
2
- /**
3
- * Wrap a function in a safe wrapper that never throws
4
- * Returns a discriminated union
5
- */
6
- export declare function wrapCallSafe<T>(fn: AsyncFn<T>): Promise<{
7
- ok: true;
8
- data: T;
9
- error?: undefined;
10
- } | {
11
- ok: false;
12
- error: unknown;
13
- data?: undefined;
14
- }>;
15
- export {};
16
- //# sourceMappingURL=wrapCallSafe.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"wrapCallSafe.d.ts","sourceRoot":"../../../../src/internals","sources":["wrapCallSafe.ts"],"names":[],"mappings":"AAAA,aAAK,OAAO,CAAC,CAAC,IAAI,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACvC;;;GAGG;AACH,wBAAsB,YAAY,CAAC,CAAC,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC;;;;;;;;GAanD"}
@@ -1,19 +0,0 @@
1
- type AsyncFn<T> = () => Promise<T> | T;
2
- /**
3
- * Wrap a function in a safe wrapper that never throws
4
- * Returns a discriminated union
5
- */
6
- export async function wrapCallSafe<T>(fn: AsyncFn<T>) {
7
- try {
8
- const data = await fn();
9
- return {
10
- ok: true as const,
11
- data,
12
- };
13
- } catch (cause) {
14
- return {
15
- ok: false as const,
16
- error: cause,
17
- };
18
- }
19
- }