@trpc/server 10.0.0-alpha.26 → 10.0.0-alpha.27

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 (80) hide show
  1. package/dist/{TRPCError-ddec3395.js → TRPCError-9050a68d.js} +0 -0
  2. package/dist/{TRPCError-7971540a.mjs → TRPCError-b7fa0c31.mjs} +0 -0
  3. package/dist/adapters/express.js +3 -3
  4. package/dist/adapters/express.mjs +3 -3
  5. package/dist/adapters/fastify/index.js +2 -2
  6. package/dist/adapters/fastify/index.mjs +2 -2
  7. package/dist/adapters/fetch/index.js +2 -2
  8. package/dist/adapters/fetch/index.mjs +2 -2
  9. package/dist/adapters/next.d.ts.map +1 -1
  10. package/dist/adapters/next.js +3 -3
  11. package/dist/adapters/next.mjs +3 -3
  12. package/dist/adapters/node-http/index.js +3 -3
  13. package/dist/adapters/node-http/index.mjs +3 -3
  14. package/dist/adapters/node-http/internals/getPostBody.d.ts +1 -1
  15. package/dist/adapters/node-http/internals/getPostBody.d.ts.map +1 -1
  16. package/dist/adapters/standalone.js +3 -3
  17. package/dist/adapters/standalone.mjs +3 -3
  18. package/dist/adapters/ws.d.ts.map +1 -1
  19. package/dist/adapters/ws.js +1 -1
  20. package/dist/adapters/ws.mjs +1 -1
  21. package/dist/core/internals/__generated__/mergeRoutersGeneric.d.ts +60 -0
  22. package/dist/core/internals/__generated__/mergeRoutersGeneric.d.ts.map +1 -1
  23. package/dist/core/internals/internalProcedure.d.ts +1 -1
  24. package/dist/core/internals/internalProcedure.d.ts.map +1 -1
  25. package/dist/core/internals/mergeRoutersGeneric.d.ts +21 -0
  26. package/dist/core/internals/mergeRoutersGeneric.d.ts.map +1 -0
  27. package/dist/core/internals/procedureBuilder.d.ts +3 -2
  28. package/dist/core/internals/procedureBuilder.d.ts.map +1 -1
  29. package/dist/core/router.d.ts +13 -1
  30. package/dist/core/router.d.ts.map +1 -1
  31. package/dist/deprecated/internals/middlewares.d.ts +1 -1
  32. package/dist/deprecated/internals/middlewares.d.ts.map +1 -1
  33. package/dist/deprecated/internals/procedure.d.ts.map +1 -1
  34. package/dist/deprecated/router.d.ts +1 -1
  35. package/dist/deprecated/router.d.ts.map +1 -1
  36. package/dist/error/TRPCError.d.ts +1 -1
  37. package/dist/error/TRPCError.d.ts.map +1 -1
  38. package/dist/http/internals/getHTTPStatusCode.d.ts +1 -1
  39. package/dist/http/internals/getHTTPStatusCode.d.ts.map +1 -1
  40. package/dist/http/internals/types.d.ts +1 -1
  41. package/dist/http/internals/types.d.ts.map +1 -1
  42. package/dist/http/resolveHTTPResponse.d.ts +1 -1
  43. package/dist/http/resolveHTTPResponse.d.ts.map +1 -1
  44. package/dist/index.d.ts +1 -1
  45. package/dist/index.d.ts.map +1 -1
  46. package/dist/index.js +69 -62
  47. package/dist/index.mjs +71 -64
  48. package/dist/internals/types.d.ts +1 -1
  49. package/dist/internals/types.d.ts.map +1 -1
  50. package/dist/{nodeHTTPRequestHandler-5ad62229.mjs → nodeHTTPRequestHandler-174459c5.mjs} +2 -2
  51. package/dist/{nodeHTTPRequestHandler-9ddd18f2.js → nodeHTTPRequestHandler-6b7c8622.js} +2 -2
  52. package/dist/{resolveHTTPResponse-ccb9cfa1.mjs → resolveHTTPResponse-8657b8de.mjs} +1 -1
  53. package/dist/{resolveHTTPResponse-5932d785.js → resolveHTTPResponse-fcc8f644.js} +1 -1
  54. package/dist/subscription.js +1 -1
  55. package/dist/subscription.mjs +1 -1
  56. package/package.json +3 -2
  57. package/src/adapters/next.ts +1 -1
  58. package/src/adapters/node-http/internals/getPostBody.ts +1 -1
  59. package/src/adapters/ws.ts +2 -2
  60. package/src/core/internals/__generated__/mergeRoutersGeneric.ts +60 -0
  61. package/src/core/internals/internalProcedure.ts +4 -4
  62. package/src/core/internals/mergeRoutersGeneric.ts +35 -0
  63. package/src/core/internals/procedureBuilder.ts +3 -2
  64. package/src/core/router.ts +46 -1
  65. package/src/deprecated/internals/middlewares.ts +1 -1
  66. package/src/deprecated/internals/procedure.ts +2 -5
  67. package/src/deprecated/router.ts +3 -13
  68. package/src/error/TRPCError.ts +2 -2
  69. package/src/http/internals/getHTTPStatusCode.ts +1 -1
  70. package/src/http/internals/types.ts +1 -1
  71. package/src/http/resolveHTTPResponse.ts +2 -2
  72. package/src/index.ts +1 -1
  73. package/src/internals/types.ts +1 -1
  74. package/src/subscription.ts +1 -1
  75. package/dist/TRPCError.d.ts +0 -11
  76. package/dist/TRPCError.d.ts.map +0 -1
  77. package/dist/internals/errors.d.ts +0 -5
  78. package/dist/internals/errors.d.ts.map +0 -1
  79. package/src/TRPCError.ts +0 -27
  80. package/src/internals/errors.ts +0 -49
@@ -59,9 +59,10 @@ export interface ProcedureBuilder<TParams extends ProcedureParams> {
59
59
  fn: MiddlewareFunction<TParams, $TParams>,
60
60
  ): CreateProcedureReturnInput<TParams, $TParams>;
61
61
  /**
62
- * Extend the procedure with another procedure
62
+ * Extend the procedure with another procedure.
63
+ * @warning The TypeScript inference fails when chaining concatenated procedures.
63
64
  */
64
- concat<$ProcedureReturnInput extends ProcedureBuilder<any>>(
65
+ unstable_concat<$ProcedureReturnInput extends ProcedureBuilder<any>>(
65
66
  proc: $ProcedureReturnInput,
66
67
  ): $ProcedureReturnInput extends ProcedureBuilder<infer $TParams>
67
68
  ? CreateProcedureReturnInput<TParams, $TParams>
@@ -1,5 +1,5 @@
1
1
  /* eslint-disable @typescript-eslint/ban-types */
2
- import { TRPCError } from '../TRPCError';
2
+ import { TRPCError } from '../error/TRPCError';
3
3
  import {
4
4
  DefaultErrorShape,
5
5
  ErrorFormatter,
@@ -94,9 +94,22 @@ type inferHandlerFn<TProcedures extends ProcedureRecord<any>> = <
94
94
  */
95
95
 
96
96
  type RouterCaller<TParams extends AnyRouterParams> = (ctx: TParams['_ctx']) => {
97
+ /**
98
+ * @deprecated
99
+ */
97
100
  query: inferHandlerFn<TParams['queries']>;
101
+ /**
102
+ * @deprecated
103
+ */
98
104
  mutation: inferHandlerFn<TParams['mutations']>;
105
+ /**
106
+ * @deprecated
107
+ */
99
108
  subscription: inferHandlerFn<TParams['subscriptions']>;
109
+
110
+ queries: TParams['queries'];
111
+ mutations: TParams['mutations'];
112
+ subscriptions: TParams['subscriptions'];
100
113
  };
101
114
 
102
115
  export interface Router<TParams extends AnyRouterParams>
@@ -148,6 +161,13 @@ type RouterBuildOptions<TContext> = Pick<
148
161
 
149
162
  export type AnyRouter = Router<any>;
150
163
 
164
+ function createRouterProxy(callback: (...args: [string, ...unknown[]]) => any) {
165
+ return new Proxy({} as any, {
166
+ get(_, path: string) {
167
+ return (...args: unknown[]) => callback(path, ...args);
168
+ },
169
+ });
170
+ }
151
171
  const emptyRouter = {
152
172
  _ctx: null as any,
153
173
  _errorShape: null as any,
@@ -256,6 +276,31 @@ export function createRouterFactory<TSettings extends RootConfig>(
256
276
  ctx,
257
277
  type: 'subscription',
258
278
  }) as any,
279
+
280
+ queries: createRouterProxy((path, rawInput) =>
281
+ callProcedure({
282
+ path,
283
+ rawInput,
284
+ ctx,
285
+ type: 'query',
286
+ }),
287
+ ),
288
+ mutations: createRouterProxy((path, rawInput) =>
289
+ callProcedure({
290
+ path,
291
+ rawInput,
292
+ ctx,
293
+ type: 'mutation',
294
+ }),
295
+ ),
296
+ subscriptions: createRouterProxy((path, rawInput) =>
297
+ callProcedure({
298
+ path,
299
+ rawInput,
300
+ ctx,
301
+ type: 'subscription',
302
+ }),
303
+ ),
259
304
  };
260
305
  },
261
306
  getErrorShape(opts) {
@@ -1,4 +1,4 @@
1
- import { TRPCError } from '../../TRPCError';
1
+ import { TRPCError } from '../../error/TRPCError';
2
2
  import { ProcedureType } from '../router';
3
3
 
4
4
  /**
@@ -1,10 +1,7 @@
1
1
  /* eslint-disable @typescript-eslint/no-explicit-any */
2
- import { TRPCError } from '../../TRPCError';
3
2
  import { assertNotBrowser } from '../../assertNotBrowser';
4
- import {
5
- getCauseFromUnknown,
6
- getErrorFromUnknown,
7
- } from '../../internals/errors';
3
+ import { TRPCError } from '../../error/TRPCError';
4
+ import { getCauseFromUnknown, getErrorFromUnknown } from '../../error/utils';
8
5
  import { InferLast } from '../../types';
9
6
  import { ProcedureType } from '../router';
10
7
  import {
@@ -1,8 +1,9 @@
1
1
  /* eslint-disable @typescript-eslint/ban-types */
2
2
 
3
3
  /* eslint-disable @typescript-eslint/no-explicit-any */
4
- import { TRPCError } from '../TRPCError';
5
4
  import { assertNotBrowser } from '../assertNotBrowser';
5
+ import { TRPCError } from '../error/TRPCError';
6
+ import { defaultFormatter } from '../error/formatter';
6
7
  import { getHTTPStatusCodeFromError } from '../http/internals/getHTTPStatusCode';
7
8
  import { Observable, inferObservableValue } from '../observable';
8
9
  import {
@@ -14,6 +15,7 @@ import {
14
15
  import {
15
16
  CombinedDataTransformer,
16
17
  DataTransformerOptions,
18
+ defaultTransformer,
17
19
  } from '../transformer';
18
20
  import { Prefixer, ThenArg, flatten } from '../types';
19
21
  import { MiddlewareFunction } from './internals/middlewares';
@@ -235,18 +237,6 @@ function safeObject<TObj1, TObj2>(obj1: TObj1, obj2: TObj2): TObj1 & TObj2;
235
237
  function safeObject(...args: unknown[]) {
236
238
  return Object.assign(Object.create(null), ...args);
237
239
  }
238
- const defaultFormatter: ErrorFormatter<any, any> = ({
239
- shape,
240
- }: {
241
- shape: DefaultErrorShape;
242
- }) => {
243
- return shape;
244
- };
245
- const defaultTransformer: CombinedDataTransformer = {
246
- input: { serialize: (obj) => obj, deserialize: (obj) => obj },
247
- output: { serialize: (obj) => obj, deserialize: (obj) => obj },
248
- };
249
-
250
240
  type SwapProcedureContext<
251
241
  TProcedure extends Procedure<any, any, any, any, any, any, any>,
252
242
  TNewContext,
@@ -1,8 +1,8 @@
1
+ import { getMessageFromUnkownError } from '../error/utils';
1
2
  import { TRPC_ERROR_CODE_KEY } from '../rpc/codes';
2
- import { getMessageFromUnkownError } from './utils';
3
3
 
4
4
  export class TRPCError extends Error {
5
- public readonly cause?: Error | undefined;
5
+ public readonly cause?;
6
6
  public readonly code;
7
7
 
8
8
  constructor(opts: {
@@ -1,4 +1,4 @@
1
- import { TRPCError } from '../../TRPCError';
1
+ import { TRPCError } from '../../error/TRPCError';
2
2
  import { invert } from '../../internals/invert';
3
3
  import { TRPCResponse, TRPC_ERROR_CODES_BY_KEY } from '../../rpc';
4
4
 
@@ -1,5 +1,5 @@
1
- import { TRPCError } from '../../TRPCError';
2
1
  import { AnyRouter, ProcedureType, inferRouterParams } from '../../core';
2
+ import { TRPCError } from '../../error/TRPCError';
3
3
  import { BaseHandlerOptions } from '../../internals/types';
4
4
  import { TRPCResponse } from '../../rpc';
5
5
  import { Dict } from '../../types';
@@ -1,12 +1,12 @@
1
1
  /* eslint-disable @typescript-eslint/no-non-null-assertion */
2
- import { TRPCError } from '../TRPCError';
3
2
  import {
4
3
  AnyRouter,
5
4
  ProcedureType,
6
5
  inferRouterContext,
7
6
  inferRouterError,
8
7
  } from '../core';
9
- import { getCauseFromUnknown, getErrorFromUnknown } from '../internals/errors';
8
+ import { TRPCError } from '../error/TRPCError';
9
+ import { getCauseFromUnknown, getErrorFromUnknown } from '../error/utils';
10
10
  import { transformTRPCResponse } from '../internals/transformTRPCResponse';
11
11
  import { TRPCResponse } from '../rpc';
12
12
  import { Maybe } from '../types';
package/src/index.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  export * from './assertNotBrowser';
2
2
  export * from './http';
3
3
  export * from './transformer';
4
- export * from './TRPCError';
4
+ export * from './error/TRPCError';
5
5
  export * from './types';
6
6
  export { router } from './deprecated/router';
7
7
  export * from './core';
@@ -1,7 +1,7 @@
1
- import { TRPCError } from '../TRPCError';
2
1
  import { inferRouterParams } from '../core';
3
2
  import { ProcedureType } from '../core';
4
3
  import { AnyRouter } from '../core/router';
4
+ import { TRPCError } from '../error/TRPCError';
5
5
 
6
6
  /**
7
7
  * Base interface for any response handler
@@ -1,4 +1,4 @@
1
- import { getErrorFromUnknown } from './internals/errors';
1
+ import { getErrorFromUnknown } from './error/utils';
2
2
  import { Observable, Observer, observable } from './observable';
3
3
 
4
4
  export function subscriptionPullFactory<TOutput>(opts: {
@@ -1,11 +0,0 @@
1
- import { TRPC_ERROR_CODE_KEY } from './rpc/codes';
2
- export declare class TRPCError extends Error {
3
- readonly cause?: Error | undefined;
4
- readonly code: "PARSE_ERROR" | "BAD_REQUEST" | "INTERNAL_SERVER_ERROR" | "UNAUTHORIZED" | "FORBIDDEN" | "NOT_FOUND" | "METHOD_NOT_SUPPORTED" | "TIMEOUT" | "CONFLICT" | "PRECONDITION_FAILED" | "PAYLOAD_TOO_LARGE" | "CLIENT_CLOSED_REQUEST";
5
- constructor(opts: {
6
- message?: string;
7
- code: TRPC_ERROR_CODE_KEY;
8
- cause?: Error;
9
- });
10
- }
11
- //# sourceMappingURL=TRPCError.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"TRPCError.d.ts","sourceRoot":"","sources":["../src/TRPCError.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAElD,qBAAa,SAAU,SAAQ,KAAK;IAClC,SAAgB,KAAK,CAAC,oBAAC;IACvB,SAAgB,IAAI,iOAAC;gBAET,IAAI,EAAE;QAChB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,IAAI,EAAE,mBAAmB,CAAC;QAC1B,KAAK,CAAC,EAAE,KAAK,CAAC;KACf;CAeF"}
@@ -1,5 +0,0 @@
1
- import { TRPCError } from '../TRPCError';
2
- export declare function getMessageFromUnkownError(err: unknown, fallback: string): string;
3
- export declare function getErrorFromUnknown(cause: unknown): TRPCError;
4
- export declare function getCauseFromUnknown(cause: unknown): Error | undefined;
5
- //# sourceMappingURL=errors.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/internals/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,wBAAgB,yBAAyB,CACvC,GAAG,EAAE,OAAO,EACZ,QAAQ,EAAE,MAAM,GACf,MAAM,CASR;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,GAAG,SAAS,CAwB7D;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,qBAMjD"}
package/src/TRPCError.ts DELETED
@@ -1,27 +0,0 @@
1
- import { getMessageFromUnkownError } from './internals/errors';
2
- import { TRPC_ERROR_CODE_KEY } from './rpc/codes';
3
-
4
- export class TRPCError extends Error {
5
- public readonly cause?;
6
- public readonly code;
7
-
8
- constructor(opts: {
9
- message?: string;
10
- code: TRPC_ERROR_CODE_KEY;
11
- cause?: Error;
12
- }) {
13
- const cause = opts.cause;
14
- const code = opts.code;
15
- const message = opts.message ?? getMessageFromUnkownError(cause, code);
16
-
17
- // eslint-disable-next-line @typescript-eslint/ban-ts-comment
18
- // @ts-ignore https://github.com/tc39/proposal-error-cause
19
- super(message, { cause });
20
-
21
- this.code = code;
22
- this.cause = cause;
23
- this.name = 'TRPCError';
24
-
25
- Object.setPrototypeOf(this, new.target.prototype);
26
- }
27
- }
@@ -1,49 +0,0 @@
1
- import { TRPCError } from '../TRPCError';
2
-
3
- export function getMessageFromUnkownError(
4
- err: unknown,
5
- fallback: string,
6
- ): string {
7
- if (typeof err === 'string') {
8
- return err;
9
- }
10
-
11
- if (err instanceof Error && typeof err.message === 'string') {
12
- return err.message;
13
- }
14
- return fallback;
15
- }
16
-
17
- export function getErrorFromUnknown(cause: unknown): TRPCError {
18
- // this should ideally be an `instanceof TRPCError` but for some reason that isn't working
19
- // ref https://github.com/trpc/trpc/issues/331
20
- if (cause instanceof Error && cause.name === 'TRPCError') {
21
- return cause as TRPCError;
22
- }
23
-
24
- let errorCause: Error | undefined = undefined;
25
- let stack: string | undefined = undefined;
26
-
27
- if (cause instanceof Error) {
28
- errorCause = cause;
29
- // take stack trace from cause
30
- stack = cause.stack;
31
- }
32
-
33
- const err = new TRPCError({
34
- code: 'INTERNAL_SERVER_ERROR',
35
- cause: errorCause,
36
- });
37
-
38
- err.stack = stack;
39
-
40
- return err;
41
- }
42
-
43
- export function getCauseFromUnknown(cause: unknown) {
44
- if (cause instanceof Error) {
45
- return cause;
46
- }
47
-
48
- return undefined;
49
- }