@trpc/server 10.0.0-alpha.42 → 10.0.0-alpha.45

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 (75) 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/express/dist/trpc-server-adapters-express.cjs.dev.js +3 -3
  5. package/adapters/express/dist/trpc-server-adapters-express.cjs.prod.js +3 -3
  6. package/adapters/express/dist/trpc-server-adapters-express.esm.js +3 -3
  7. package/adapters/fastify/dist/trpc-server-adapters-fastify.cjs.dev.js +3 -3
  8. package/adapters/fastify/dist/trpc-server-adapters-fastify.cjs.prod.js +3 -3
  9. package/adapters/fastify/dist/trpc-server-adapters-fastify.esm.js +3 -3
  10. package/adapters/lambda/dist/trpc-server-adapters-lambda.cjs.dev.js +4 -4
  11. package/adapters/lambda/dist/trpc-server-adapters-lambda.cjs.prod.js +4 -4
  12. package/adapters/lambda/dist/trpc-server-adapters-lambda.esm.js +4 -4
  13. package/adapters/next/dist/trpc-server-adapters-next.cjs.dev.js +3 -3
  14. package/adapters/next/dist/trpc-server-adapters-next.cjs.prod.js +3 -3
  15. package/adapters/next/dist/trpc-server-adapters-next.esm.js +3 -3
  16. package/adapters/node-http/dist/trpc-server-adapters-node-http.cjs.dev.js +3 -3
  17. package/adapters/node-http/dist/trpc-server-adapters-node-http.cjs.prod.js +3 -3
  18. package/adapters/node-http/dist/trpc-server-adapters-node-http.esm.js +3 -3
  19. package/adapters/standalone/dist/trpc-server-adapters-standalone.cjs.dev.js +3 -3
  20. package/adapters/standalone/dist/trpc-server-adapters-standalone.cjs.prod.js +3 -3
  21. package/adapters/standalone/dist/trpc-server-adapters-standalone.esm.js +3 -3
  22. package/adapters/ws/dist/trpc-server-adapters-ws.cjs.dev.js +2 -2
  23. package/adapters/ws/dist/trpc-server-adapters-ws.cjs.prod.js +2 -2
  24. package/adapters/ws/dist/trpc-server-adapters-ws.esm.js +2 -2
  25. package/dist/adapters/aws-lambda/index.js +3 -3
  26. package/dist/adapters/aws-lambda/index.mjs +3 -3
  27. package/dist/adapters/express.js +3 -3
  28. package/dist/adapters/express.mjs +3 -3
  29. package/dist/adapters/fastify/index.js +2 -2
  30. package/dist/adapters/fastify/index.mjs +2 -2
  31. package/dist/adapters/fetch/index.js +2 -2
  32. package/dist/adapters/fetch/index.mjs +2 -2
  33. package/dist/adapters/next.js +3 -3
  34. package/dist/adapters/next.mjs +3 -3
  35. package/dist/adapters/node-http/index.js +3 -3
  36. package/dist/adapters/node-http/index.mjs +3 -3
  37. package/dist/adapters/standalone.js +3 -3
  38. package/dist/adapters/standalone.mjs +3 -3
  39. package/dist/core/index.d.ts +1 -1
  40. package/dist/core/index.d.ts.map +1 -1
  41. package/dist/core/initTRPC.d.ts +8 -0
  42. package/dist/core/initTRPC.d.ts.map +1 -1
  43. package/dist/core/internals/__generated__/mergeRoutersGeneric.d.ts +20 -0
  44. package/dist/core/internals/__generated__/mergeRoutersGeneric.d.ts.map +1 -1
  45. package/dist/core/router.d.ts +31 -23
  46. package/dist/core/router.d.ts.map +1 -1
  47. package/dist/deprecated/interop.d.ts +29 -2
  48. package/dist/deprecated/interop.d.ts.map +1 -1
  49. package/dist/deprecated/router.d.ts.map +1 -1
  50. package/dist/{envelopes-b6dd0367.js → envelopes-2ae27c9f.js} +1 -4
  51. package/dist/{envelopes-af8c2959.mjs → envelopes-b9f49d4d.mjs} +1 -4
  52. package/dist/index.js +3 -4
  53. package/dist/index.mjs +4 -5
  54. package/dist/internals/transformTRPCResponse.d.ts +2 -2
  55. package/dist/internals/transformTRPCResponse.d.ts.map +1 -1
  56. package/dist/{nodeHTTPRequestHandler-6b7c8622.js → nodeHTTPRequestHandler-bee7aacc.js} +1 -1
  57. package/dist/{nodeHTTPRequestHandler-65cf2218.mjs → nodeHTTPRequestHandler-f1656eba.mjs} +1 -1
  58. package/dist/{resolveHTTPResponse-95634936.mjs → resolveHTTPResponse-455f1e51.mjs} +1 -1
  59. package/dist/{resolveHTTPResponse-fcc8f644.js → resolveHTTPResponse-5d90abc5.js} +1 -1
  60. package/dist/{router-9d12560f.js → router-4e50a6ac.js} +5 -4
  61. package/dist/{router-6665b0ee.mjs → router-a3db8f3a.mjs} +5 -4
  62. package/dist/rpc/envelopes.d.ts +22 -21
  63. package/dist/rpc/envelopes.d.ts.map +1 -1
  64. package/dist/rpc/index.js +1 -1
  65. package/dist/rpc/index.mjs +1 -1
  66. package/dist/types.d.ts.map +1 -1
  67. package/package.json +2 -2
  68. package/src/core/index.ts +5 -1
  69. package/src/core/initTRPC.ts +0 -1
  70. package/src/core/internals/__generated__/mergeRoutersGeneric.ts +20 -0
  71. package/src/core/router.ts +29 -44
  72. package/src/deprecated/interop.ts +47 -4
  73. package/src/deprecated/router.ts +0 -2
  74. package/src/rpc/envelopes.ts +32 -25
  75. package/src/types.ts +0 -1
@@ -1,6 +1,5 @@
1
- /* eslint-disable @typescript-eslint/ban-types */
2
1
  import { inferProcedureOutput } from '.';
3
- import { Filter, Prefixer } from '..';
2
+ import { Filter } from '..';
4
3
  import { TRPCError } from '../error/TRPCError';
5
4
  import {
6
5
  DefaultErrorShape,
@@ -25,7 +24,8 @@ import {
25
24
  } from './procedure';
26
25
  import { ProcedureType, procedureTypes } from './types';
27
26
 
28
- type ProcedureRecord = Record<string, Procedure<any>>;
27
+ /** @internal **/
28
+ export type ProcedureRecord = Record<string, Procedure<any>>;
29
29
 
30
30
  export type ProcedureRouterRecord = Record<string, Procedure<any> | AnyRouter>;
31
31
 
@@ -36,28 +36,6 @@ export interface ProcedureStructure {
36
36
  procedures: ProcedureRecord;
37
37
  }
38
38
 
39
- type ObjKeyof<T> = T extends object ? keyof T : never;
40
- type KeyofKeyof<T> = ObjKeyof<T> | { [K in keyof T]: ObjKeyof<T[K]> }[keyof T];
41
- type StripNever<T> = Pick<
42
- T,
43
- { [K in keyof T]: [T[K]] extends [never] ? never : K }[keyof T]
44
- >;
45
- type Lookup<T, K> = T extends any ? (K extends keyof T ? T[K] : never) : never;
46
- type SimpleFlatten<T> = T extends object
47
- ? StripNever<{
48
- [K in KeyofKeyof<T>]:
49
- | Exclude<K extends keyof T ? T[K] : never, object>
50
- | { [P in keyof T]: Lookup<T[P], K> }[keyof T];
51
- }>
52
- : T;
53
-
54
- type PrefixedProcedures<T extends ProcedureRouterRecord> = {
55
- [K in keyof T]: T[K] extends AnyRouter
56
- ? T[K] extends Procedure<any>
57
- ? never
58
- : Prefixer<T[K]['_def']['procedures'], `${K & string}.`>
59
- : never;
60
- };
61
39
  export interface RouterDef<
62
40
  // FIXME this should use RootConfig
63
41
  TContext,
@@ -80,21 +58,32 @@ export interface RouterDef<
80
58
  _meta: TMeta;
81
59
  errorFormatter: ErrorFormatter<TContext, TErrorShape>;
82
60
  transformer: CombinedDataTransformer;
83
- // FIXME this is slow
84
- procedures: Filter<TRecord, Procedure<any>> &
85
- SimpleFlatten<PrefixedProcedures<TRecord>>;
61
+ // FIXME this is slow:
62
+ // - I think this has to go & be replaced by something by only using `TRecord` without `& SimpleFlatten...`
63
+ // - Potentially, we have a `legacyProcedures` record where we only register the old things that are availble by string path
64
+ procedures: TRecord;
65
+ /**
66
+ * V9 procedures
67
+ * @deprecated
68
+ */
69
+ legacy: {};
86
70
  routers: Filter<TRecord, Router<any>>;
87
71
  record: TRecord;
88
- // FIXME this is slow
89
- subscriptions: Filter<TRecord, SubscriptionProcedure<any>> &
90
- Filter<
91
- SimpleFlatten<PrefixedProcedures<TRecord>>,
92
- SubscriptionProcedure<any>
93
- >;
94
- queries: Filter<TRecord, QueryProcedure<any>> &
95
- Filter<SimpleFlatten<PrefixedProcedures<TRecord>>, QueryProcedure<any>>;
96
- mutations: Filter<TRecord, MutationProcedure<any>> &
97
- Filter<SimpleFlatten<PrefixedProcedures<TRecord>>, MutationProcedure<any>>;
72
+ /**
73
+ * FIXME remove?
74
+ * @deprecated
75
+ */
76
+ subscriptions: Filter<TRecord, SubscriptionProcedure<any> & { _old: true }>;
77
+ /**
78
+ * FIXME remove?
79
+ * @deprecated
80
+ */
81
+ queries: Filter<TRecord, QueryProcedure<any> & { _old: true }>;
82
+ /**
83
+ * FIXME remove?
84
+ * @deprecated
85
+ */
86
+ mutations: Filter<TRecord, MutationProcedure<any> & { _old: true }>;
98
87
  }
99
88
 
100
89
  export type AnyRouterDef<TContext = any> = RouterDef<TContext, any, any, any>;
@@ -156,12 +145,7 @@ type RouterCaller<TDef extends AnyRouterDef> = (ctx: TDef['_ctx']) => {
156
145
  } & DecoratedProcedureRecord<TDef['record']>;
157
146
 
158
147
  export interface Router<TDef extends AnyRouterDef> {
159
- _def: RouterDef<
160
- TDef['_ctx'],
161
- TDef['_errorShape'],
162
- TDef['_meta'],
163
- TDef['record']
164
- >;
148
+ _def: TDef;
165
149
  /** @deprecated **/
166
150
  errorFormatter: TDef['errorFormatter'];
167
151
  /** @deprecated **/
@@ -259,6 +243,7 @@ export function createRouterFactory<TConfig extends RootConfig>(
259
243
 
260
244
  const _def: AnyRouterDef<TConfig['ctx']> = {
261
245
  router: true,
246
+ legacy: {},
262
247
  procedures: {},
263
248
  ...emptyRouter,
264
249
  ...result,
@@ -53,16 +53,26 @@ type convertProcedureParams<
53
53
  >
54
54
  : never;
55
55
 
56
+ /**
57
+ * @deprecated
58
+ */
59
+ export type OldProcedureTag = {
60
+ _old: true;
61
+ };
62
+
56
63
  type MigrateProcedure<
57
64
  TConfig extends RootConfig,
58
65
  TProcedure extends AnyOldProcedure,
59
66
  TType extends ProcedureType,
60
67
  > = TType extends 'query'
61
- ? QueryProcedure<convertProcedureParams<TConfig, TProcedure>>
68
+ ? QueryProcedure<convertProcedureParams<TConfig, TProcedure>> &
69
+ OldProcedureTag
62
70
  : TType extends 'mutation'
63
- ? MutationProcedure<convertProcedureParams<TConfig, TProcedure>>
71
+ ? MutationProcedure<convertProcedureParams<TConfig, TProcedure>> &
72
+ OldProcedureTag
64
73
  : TType extends 'subscription'
65
- ? SubscriptionProcedure<convertProcedureParams<TConfig, TProcedure>>
74
+ ? SubscriptionProcedure<convertProcedureParams<TConfig, TProcedure>> &
75
+ OldProcedureTag
66
76
  : never;
67
77
 
68
78
  export type MigrateProcedureRecord<
@@ -106,7 +116,40 @@ export type MigrateRouter<
106
116
  >,
107
117
  TErrorShape extends TRPCErrorShape<any>,
108
118
  > = NewRouter<
109
- RouterDef<
119
+ {
120
+ legacy: {
121
+ queries: MigrateProcedureRecord<
122
+ CreateRootConfig<{
123
+ ctx: TInputContext;
124
+ errorShape: TErrorShape;
125
+ meta: TMeta;
126
+ transformer: CombinedDataTransformer;
127
+ }>,
128
+ TQueries,
129
+ 'query'
130
+ >;
131
+ mutations: MigrateProcedureRecord<
132
+ CreateRootConfig<{
133
+ ctx: TInputContext;
134
+ errorShape: TErrorShape;
135
+ meta: TMeta;
136
+ transformer: CombinedDataTransformer;
137
+ }>,
138
+ TMutations,
139
+ 'mutation'
140
+ >;
141
+ subscriptions: MigrateProcedureRecord<
142
+ CreateRootConfig<{
143
+ ctx: TInputContext;
144
+ errorShape: TErrorShape;
145
+ meta: TMeta;
146
+ transformer: CombinedDataTransformer;
147
+ }>,
148
+ TSubscriptions,
149
+ 'subscription'
150
+ >;
151
+ };
152
+ } & RouterDef<
110
153
  TInputContext,
111
154
  TErrorShape,
112
155
  TMeta,
@@ -1,5 +1,3 @@
1
- /* eslint-disable @typescript-eslint/ban-types */
2
-
3
1
  /* eslint-disable @typescript-eslint/no-explicit-any */
4
2
  import { assertNotBrowser } from '../assertNotBrowser';
5
3
  import { TRPCError } from '../error/TRPCError';
@@ -48,28 +48,31 @@ export namespace JSONRPC2 {
48
48
  }
49
49
  }
50
50
 
51
- /**
52
- * TRPC HTTP Envelopes
53
- */
51
+ /////////////////////////// HTTP envelopes ///////////////////////
54
52
 
55
- export type TRPCRequest = JSONRPC2.Request<
56
- ProcedureType,
57
- { path: string; input: unknown }
58
- >;
53
+ export interface TRPCRequest
54
+ extends JSONRPC2.Request<ProcedureType, { path: string; input: unknown }> {}
59
55
 
60
- export type TRPCResult<TData = unknown> = { data: TData };
56
+ export interface TRPCResult<TData = unknown> {
57
+ data: TData;
58
+ }
61
59
 
62
- export type TRPCErrorResponse<TError extends TRPCErrorShape = TRPCErrorShape> =
63
- JSONRPC2.ErrorResponse<TError>;
60
+ export interface TRPCSuccessResponse<TData>
61
+ extends JSONRPC2.ResultResponse<
62
+ TRPCResult<TData> & {
63
+ type?: 'data';
64
+ }
65
+ > {}
66
+ export interface TRPCErrorResponse<
67
+ TError extends TRPCErrorShape = TRPCErrorShape,
68
+ > extends JSONRPC2.ErrorResponse<TError> {}
64
69
 
65
70
  export type TRPCResponse<
66
- TResult = unknown,
71
+ TData = unknown,
67
72
  TError extends TRPCErrorShape = TRPCErrorShape,
68
- > = JSONRPC2.ResultResponse<TRPCResult<TResult>> | TRPCErrorResponse<TError>;
73
+ > = TRPCSuccessResponse<TData> | TRPCErrorResponse<TError>;
69
74
 
70
- /**
71
- * HTTP WS Envelopes
72
- */
75
+ /////////////////////////// WebSocket envelopes ///////////////////////
73
76
 
74
77
  export type TRPCRequestMessage = {
75
78
  id: JSONRPC2.RequestId;
@@ -78,9 +81,10 @@ export type TRPCRequestMessage = {
78
81
  /**
79
82
  * The client asked the server to unsubscribe
80
83
  */
81
- export type TRPCSubscriptionStopNotification = {
84
+ export interface TRPCSubscriptionStopNotification
85
+ extends JSONRPC2.BaseRequest<'subscription.stop'> {
82
86
  id: null;
83
- } & JSONRPC2.BaseRequest<'subscription.stop'>;
87
+ }
84
88
 
85
89
  /**
86
90
  * The client's outgoing request types
@@ -94,25 +98,28 @@ export type TRPCClientOutgoingMessage =
94
98
  | TRPCRequestMessage
95
99
  | ({ id: JSONRPC2.RequestId } & JSONRPC2.BaseRequest<'subscription.stop'>);
96
100
 
97
- export type TRPCResultMessage<TData = unknown> =
98
- | ({ type: 'data' } & TRPCResult<TData>)
99
- | { type: 'started' }
100
- | { type: 'stopped' };
101
+ export interface TRPCResultMessage<TData>
102
+ extends JSONRPC2.ResultResponse<
103
+ | (TRPCResult<TData> & { type: 'data' })
104
+ | { type: 'started' }
105
+ | { type: 'stopped' }
106
+ > {}
101
107
 
102
108
  export type TRPCResponseMessage<
103
- TResult = unknown,
109
+ TData = unknown,
104
110
  TError extends TRPCErrorShape = TRPCErrorShape,
105
111
  > = { id: JSONRPC2.RequestId } & (
106
- | JSONRPC2.ResultResponse<TRPCResultMessage<TResult>>
112
+ | TRPCResultMessage<TData>
107
113
  | TRPCErrorResponse<TError>
108
114
  );
109
115
 
110
116
  /**
111
117
  * The server asked the client to reconnect - useful when restarting/redeploying service
112
118
  */
113
- export type TRPCReconnectNotification = {
119
+ export interface TRPCReconnectNotification
120
+ extends JSONRPC2.BaseRequest<'reconnect'> {
114
121
  id: JSONRPC2.RequestId;
115
- } & JSONRPC2.BaseRequest<'reconnect'>;
122
+ }
116
123
 
117
124
  /**
118
125
  * The client's incoming request types
package/src/types.ts CHANGED
@@ -1,4 +1,3 @@
1
- /* eslint-disable @typescript-eslint/ban-types */
2
1
  /* eslint-disable @typescript-eslint/no-explicit-any */
3
2
 
4
3
  /**