@trpc/server 11.0.0-next-alpha.152 → 11.0.0-next-alpha.154

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 (295) hide show
  1. package/dist/adapters/aws-lambda/index.d.ts +1 -1
  2. package/dist/adapters/aws-lambda/index.d.ts.map +1 -1
  3. package/dist/adapters/aws-lambda/index.js +6 -13
  4. package/dist/adapters/aws-lambda/index.mjs +2 -9
  5. package/dist/adapters/aws-lambda/utils.d.ts +2 -3
  6. package/dist/adapters/aws-lambda/utils.d.ts.map +1 -1
  7. package/dist/adapters/express.d.ts +1 -1
  8. package/dist/adapters/express.d.ts.map +1 -1
  9. package/dist/adapters/express.js +3 -11
  10. package/dist/adapters/express.mjs +3 -11
  11. package/dist/adapters/fastify/fastifyRequestHandler.d.ts +1 -1
  12. package/dist/adapters/fastify/fastifyRequestHandler.d.ts.map +1 -1
  13. package/dist/adapters/fastify/fastifyTRPCPlugin.d.ts +1 -1
  14. package/dist/adapters/fastify/fastifyTRPCPlugin.d.ts.map +1 -1
  15. package/dist/adapters/fastify/index.js +6 -14
  16. package/dist/adapters/fastify/index.mjs +4 -12
  17. package/dist/adapters/fetch/fetchRequestHandler.d.ts +1 -1
  18. package/dist/adapters/fetch/fetchRequestHandler.d.ts.map +1 -1
  19. package/dist/adapters/fetch/index.js +3 -12
  20. package/dist/adapters/fetch/index.mjs +1 -10
  21. package/dist/adapters/fetch/types.d.ts +1 -1
  22. package/dist/adapters/next.d.ts +3 -2
  23. package/dist/adapters/next.d.ts.map +1 -1
  24. package/dist/adapters/next.js +5 -13
  25. package/dist/adapters/next.mjs +3 -11
  26. package/dist/adapters/node-http/content-type/json/getPostBody.d.ts +1 -1
  27. package/dist/adapters/node-http/content-type/json/getPostBody.d.ts.map +1 -1
  28. package/dist/adapters/node-http/content-type/json/index.js +4 -5
  29. package/dist/adapters/node-http/content-type/json/index.mjs +2 -3
  30. package/dist/adapters/node-http/index.js +3 -11
  31. package/dist/adapters/node-http/index.mjs +3 -11
  32. package/dist/adapters/node-http/internals/contentType.d.ts +2 -2
  33. package/dist/adapters/node-http/internals/contentType.d.ts.map +1 -1
  34. package/dist/adapters/node-http/nodeHTTPRequestHandler.d.ts +1 -1
  35. package/dist/adapters/node-http/nodeHTTPRequestHandler.d.ts.map +1 -1
  36. package/dist/adapters/node-http/types.d.ts +1 -2
  37. package/dist/adapters/node-http/types.d.ts.map +1 -1
  38. package/dist/adapters/standalone.d.ts +1 -1
  39. package/dist/adapters/standalone.d.ts.map +1 -1
  40. package/dist/adapters/standalone.js +3 -11
  41. package/dist/adapters/standalone.mjs +3 -11
  42. package/dist/adapters/ws.d.ts +3 -3
  43. package/dist/adapters/ws.d.ts.map +1 -1
  44. package/dist/adapters/ws.js +25 -31
  45. package/dist/adapters/ws.mjs +3 -9
  46. package/dist/bundle-analysis.json +74 -604
  47. package/dist/http.d.ts +2 -0
  48. package/dist/http.d.ts.map +1 -0
  49. package/dist/http.js +14 -0
  50. package/dist/http.mjs +1 -0
  51. package/dist/index.d.ts +15 -7
  52. package/dist/index.d.ts.map +1 -1
  53. package/dist/index.js +17 -95
  54. package/dist/index.mjs +1 -90
  55. package/dist/{nodeHTTPRequestHandler-a7049e69.js → nodeHTTPRequestHandler-30028c9a.js} +3 -5
  56. package/dist/{nodeHTTPRequestHandler-ca65b7c9.mjs → nodeHTTPRequestHandler-36974696.mjs} +1 -3
  57. package/dist/{nodeHTTPRequestHandler-abbfb330.js → nodeHTTPRequestHandler-640c1f60.js} +1 -3
  58. package/dist/observable.d.ts +2 -0
  59. package/dist/observable.d.ts.map +1 -0
  60. package/dist/observable.js +14 -0
  61. package/dist/observable.mjs +1 -0
  62. package/dist/rpc.d.ts +2 -0
  63. package/dist/rpc.d.ts.map +1 -0
  64. package/dist/rpc.js +14 -0
  65. package/dist/rpc.mjs +1 -0
  66. package/dist/unstableDoNotImportThis.d.ts +9 -0
  67. package/dist/unstableDoNotImportThis.d.ts.map +1 -0
  68. package/package.json +32 -41
  69. package/src/adapters/aws-lambda/index.ts +2 -3
  70. package/src/adapters/aws-lambda/utils.ts +3 -4
  71. package/src/adapters/express.ts +1 -1
  72. package/src/adapters/fastify/fastifyRequestHandler.ts +4 -3
  73. package/src/adapters/fastify/fastifyTRPCPlugin.ts +1 -1
  74. package/src/adapters/fetch/fetchRequestHandler.ts +4 -3
  75. package/src/adapters/fetch/types.ts +1 -1
  76. package/src/adapters/next.ts +3 -8
  77. package/src/adapters/node-http/content-type/form-data/index.ts +1 -1
  78. package/src/adapters/node-http/content-type/json/getPostBody.ts +2 -2
  79. package/src/adapters/node-http/content-type/json/index.ts +1 -1
  80. package/src/adapters/node-http/internals/contentType.ts +2 -2
  81. package/src/adapters/node-http/nodeHTTPRequestHandler.ts +4 -3
  82. package/src/adapters/node-http/types.ts +1 -2
  83. package/src/adapters/standalone.ts +1 -1
  84. package/src/adapters/ws.ts +14 -9
  85. package/src/http.ts +2 -0
  86. package/src/index.ts +30 -14
  87. package/src/observable.ts +1 -0
  88. package/src/rpc.ts +2 -0
  89. package/src/unstableDoNotImportThis.ts +9 -0
  90. package/dist/TRPCError-0b220715.js +0 -42
  91. package/dist/TRPCError-2bb6a7d0.js +0 -37
  92. package/dist/TRPCError-7e8e2a1b.mjs +0 -39
  93. package/dist/batchStreamFormatter-2c1405a1.js +0 -31
  94. package/dist/batchStreamFormatter-93cdcdd4.js +0 -32
  95. package/dist/batchStreamFormatter-fc1ffb26.mjs +0 -30
  96. package/dist/codes-62b059d2.js +0 -48
  97. package/dist/codes-87f6824b.js +0 -48
  98. package/dist/codes-c924c3db.mjs +0 -44
  99. package/dist/config-50853f49.mjs +0 -6
  100. package/dist/config-774dae36.js +0 -8
  101. package/dist/config-e3dd843b.js +0 -11
  102. package/dist/contentType-0447b256.js +0 -58
  103. package/dist/contentType-31223e57.mjs +0 -52
  104. package/dist/contentType-a229790b.js +0 -54
  105. package/dist/core/index.d.ts +0 -9
  106. package/dist/core/index.d.ts.map +0 -1
  107. package/dist/core/initTRPC.d.ts +0 -84
  108. package/dist/core/initTRPC.d.ts.map +0 -1
  109. package/dist/core/internals/config.d.ts +0 -75
  110. package/dist/core/internals/config.d.ts.map +0 -1
  111. package/dist/core/internals/getParseFn.d.ts +0 -4
  112. package/dist/core/internals/getParseFn.d.ts.map +0 -1
  113. package/dist/core/internals/mergeRouters.d.ts +0 -15
  114. package/dist/core/internals/mergeRouters.d.ts.map +0 -1
  115. package/dist/core/internals/mergeWithoutOverrides.d.ts +0 -5
  116. package/dist/core/internals/mergeWithoutOverrides.d.ts.map +0 -1
  117. package/dist/core/internals/omitPrototype.d.ts +0 -6
  118. package/dist/core/internals/omitPrototype.d.ts.map +0 -1
  119. package/dist/core/internals/procedureBuilder.d.ts +0 -99
  120. package/dist/core/internals/procedureBuilder.d.ts.map +0 -1
  121. package/dist/core/internals/utils.d.ts +0 -50
  122. package/dist/core/internals/utils.d.ts.map +0 -1
  123. package/dist/core/middleware.d.ts +0 -106
  124. package/dist/core/middleware.d.ts.map +0 -1
  125. package/dist/core/parser.d.ts +0 -28
  126. package/dist/core/parser.d.ts.map +0 -1
  127. package/dist/core/procedure.d.ts +0 -54
  128. package/dist/core/procedure.d.ts.map +0 -1
  129. package/dist/core/router.d.ts +0 -64
  130. package/dist/core/router.d.ts.map +0 -1
  131. package/dist/core/types.d.ts +0 -24
  132. package/dist/core/types.d.ts.map +0 -1
  133. package/dist/error/TRPCError.d.ts +0 -12
  134. package/dist/error/TRPCError.d.ts.map +0 -1
  135. package/dist/error/formatter.d.ts +0 -33
  136. package/dist/error/formatter.d.ts.map +0 -1
  137. package/dist/error/utils.d.ts +0 -9
  138. package/dist/error/utils.d.ts.map +0 -1
  139. package/dist/getCauseFromUnknown-2d66414a.mjs +0 -33
  140. package/dist/getCauseFromUnknown-ac5f46a2.js +0 -34
  141. package/dist/getCauseFromUnknown-d535264a.js +0 -35
  142. package/dist/http/batchStreamFormatter.d.ts +0 -24
  143. package/dist/http/batchStreamFormatter.d.ts.map +0 -1
  144. package/dist/http/contentType.d.ts +0 -29
  145. package/dist/http/contentType.d.ts.map +0 -1
  146. package/dist/http/getHTTPStatusCode.d.ts +0 -24
  147. package/dist/http/getHTTPStatusCode.d.ts.map +0 -1
  148. package/dist/http/index.d.ts +0 -5
  149. package/dist/http/index.d.ts.map +0 -1
  150. package/dist/http/index.js +0 -22
  151. package/dist/http/index.mjs +0 -10
  152. package/dist/http/internals/types.d.ts +0 -32
  153. package/dist/http/internals/types.d.ts.map +0 -1
  154. package/dist/http/resolveHTTPResponse.d.ts +0 -52
  155. package/dist/http/resolveHTTPResponse.d.ts.map +0 -1
  156. package/dist/http/types.d.ts +0 -46
  157. package/dist/http/types.d.ts.map +0 -1
  158. package/dist/index-8759c3db.js +0 -48
  159. package/dist/index-a496f86b.js +0 -52
  160. package/dist/index-a9e3e610.mjs +0 -49
  161. package/dist/internals/invert.d.ts +0 -12
  162. package/dist/internals/invert.d.ts.map +0 -1
  163. package/dist/internals/types.d.ts +0 -26
  164. package/dist/internals/types.d.ts.map +0 -1
  165. package/dist/observable/index.d.ts +0 -5
  166. package/dist/observable/index.d.ts.map +0 -1
  167. package/dist/observable/index.js +0 -156
  168. package/dist/observable/index.mjs +0 -147
  169. package/dist/observable/internals/identity.d.ts +0 -2
  170. package/dist/observable/internals/identity.d.ts.map +0 -1
  171. package/dist/observable/internals/observableToPromise.d.ts +0 -10
  172. package/dist/observable/internals/observableToPromise.d.ts.map +0 -1
  173. package/dist/observable/internals/pipe.d.ts +0 -4
  174. package/dist/observable/internals/pipe.d.ts.map +0 -1
  175. package/dist/observable/observable.d.ts +0 -5
  176. package/dist/observable/observable.d.ts.map +0 -1
  177. package/dist/observable/operators/index.d.ts +0 -4
  178. package/dist/observable/operators/index.d.ts.map +0 -1
  179. package/dist/observable/operators/map.d.ts +0 -3
  180. package/dist/observable/operators/map.d.ts.map +0 -1
  181. package/dist/observable/operators/share.d.ts +0 -6
  182. package/dist/observable/operators/share.d.ts.map +0 -1
  183. package/dist/observable/operators/tap.d.ts +0 -3
  184. package/dist/observable/operators/tap.d.ts.map +0 -1
  185. package/dist/observable/types.d.ts +0 -29
  186. package/dist/observable/types.d.ts.map +0 -1
  187. package/dist/observable-15588f28.js +0 -83
  188. package/dist/observable-464116ac.js +0 -84
  189. package/dist/observable-ade1bad8.mjs +0 -81
  190. package/dist/parseTRPCMessage-1377f305.js +0 -56
  191. package/dist/parseTRPCMessage-95955211.js +0 -63
  192. package/dist/parseTRPCMessage-a0f17853.mjs +0 -54
  193. package/dist/procedureBuilder-0446e596.js +0 -327
  194. package/dist/procedureBuilder-4b68e226.js +0 -349
  195. package/dist/procedureBuilder-cf58dadb.mjs +0 -340
  196. package/dist/resolveHTTPResponse-3ebaa4f6.mjs +0 -292
  197. package/dist/resolveHTTPResponse-7c84e387.js +0 -294
  198. package/dist/resolveHTTPResponse-fa37ffd7.js +0 -266
  199. package/dist/router-18d63731.js +0 -163
  200. package/dist/router-8dcebd61.js +0 -153
  201. package/dist/router-f9ce121f.mjs +0 -156
  202. package/dist/rpc/codes.d.ts +0 -51
  203. package/dist/rpc/codes.d.ts.map +0 -1
  204. package/dist/rpc/envelopes.d.ts +0 -95
  205. package/dist/rpc/envelopes.d.ts.map +0 -1
  206. package/dist/rpc/index.d.ts +0 -4
  207. package/dist/rpc/index.d.ts.map +0 -1
  208. package/dist/rpc/index.js +0 -12
  209. package/dist/rpc/index.mjs +0 -2
  210. package/dist/rpc/parseTRPCMessage.d.ts +0 -5
  211. package/dist/rpc/parseTRPCMessage.d.ts.map +0 -1
  212. package/dist/shared/createProxy/index.d.ts +0 -19
  213. package/dist/shared/createProxy/index.d.ts.map +0 -1
  214. package/dist/shared/getCauseFromUnknown.d.ts +0 -2
  215. package/dist/shared/getCauseFromUnknown.d.ts.map +0 -1
  216. package/dist/shared/getErrorShape.d.ts +0 -15
  217. package/dist/shared/getErrorShape.d.ts.map +0 -1
  218. package/dist/shared/index.d.ts +0 -8
  219. package/dist/shared/index.d.ts.map +0 -1
  220. package/dist/shared/index.js +0 -16
  221. package/dist/shared/index.mjs +0 -4
  222. package/dist/shared/internal/serialize.d.ts +0 -62
  223. package/dist/shared/internal/serialize.d.ts.map +0 -1
  224. package/dist/shared/jsonify.d.ts +0 -11
  225. package/dist/shared/jsonify.d.ts.map +0 -1
  226. package/dist/shared/transformTRPCResponse.d.ts +0 -9
  227. package/dist/shared/transformTRPCResponse.d.ts.map +0 -1
  228. package/dist/shared/types.d.ts +0 -6
  229. package/dist/shared/types.d.ts.map +0 -1
  230. package/dist/transformTRPCResponse-31040a38.mjs +0 -98
  231. package/dist/transformTRPCResponse-59486a84.js +0 -97
  232. package/dist/transformTRPCResponse-9f3b865f.js +0 -104
  233. package/dist/transformer.d.ts +0 -67
  234. package/dist/transformer.d.ts.map +0 -1
  235. package/dist/types.d.ts +0 -68
  236. package/dist/types.d.ts.map +0 -1
  237. package/dist/unstableInternalsExport.d.ts +0 -12
  238. package/dist/unstableInternalsExport.d.ts.map +0 -1
  239. package/dist/unstableInternalsExport.js +0 -16
  240. package/dist/unstableInternalsExport.mjs +0 -5
  241. package/src/core/index.ts +0 -28
  242. package/src/core/initTRPC.ts +0 -186
  243. package/src/core/internals/config.ts +0 -90
  244. package/src/core/internals/getParseFn.ts +0 -43
  245. package/src/core/internals/mergeRouters.ts +0 -90
  246. package/src/core/internals/mergeWithoutOverrides.ts +0 -19
  247. package/src/core/internals/omitPrototype.ts +0 -9
  248. package/src/core/internals/procedureBuilder.ts +0 -455
  249. package/src/core/internals/utils.ts +0 -79
  250. package/src/core/middleware.ts +0 -236
  251. package/src/core/parser.ts +0 -52
  252. package/src/core/procedure.ts +0 -68
  253. package/src/core/router.ts +0 -241
  254. package/src/core/types.ts +0 -67
  255. package/src/error/TRPCError.ts +0 -52
  256. package/src/error/formatter.ts +0 -54
  257. package/src/error/utils.ts +0 -23
  258. package/src/http/batchStreamFormatter.ts +0 -29
  259. package/src/http/contentType.ts +0 -99
  260. package/src/http/getHTTPStatusCode.ts +0 -61
  261. package/src/http/index.ts +0 -4
  262. package/src/http/internals/types.ts +0 -40
  263. package/src/http/resolveHTTPResponse.ts +0 -458
  264. package/src/http/types.ts +0 -51
  265. package/src/internals/invert.ts +0 -21
  266. package/src/internals/types.ts +0 -27
  267. package/src/observable/index.ts +0 -4
  268. package/src/observable/internals/identity.ts +0 -3
  269. package/src/observable/internals/observableToPromise.ts +0 -49
  270. package/src/observable/internals/pipe.ts +0 -23
  271. package/src/observable/observable.ts +0 -78
  272. package/src/observable/operators/index.ts +0 -3
  273. package/src/observable/operators/map.ts +0 -25
  274. package/src/observable/operators/share.ts +0 -65
  275. package/src/observable/operators/tap.ts +0 -26
  276. package/src/observable/types.ts +0 -80
  277. package/src/rpc/codes.ts +0 -44
  278. package/src/rpc/envelopes.ts +0 -136
  279. package/src/rpc/index.ts +0 -3
  280. package/src/rpc/parseTRPCMessage.ts +0 -84
  281. package/src/shared/createProxy/index.ts +0 -59
  282. package/src/shared/getCauseFromUnknown.ts +0 -31
  283. package/src/shared/getErrorShape.ts +0 -36
  284. package/src/shared/index.ts +0 -11
  285. package/src/shared/internal/serialize.ts +0 -122
  286. package/src/shared/jsonify.ts +0 -22
  287. package/src/shared/transformTRPCResponse.ts +0 -40
  288. package/src/shared/types.ts +0 -9
  289. package/src/transformer.ts +0 -84
  290. package/src/types.ts +0 -104
  291. package/src/unstableInternalsExport.ts +0 -12
  292. package/subscription/index.d.ts +0 -1
  293. package/subscription/index.js +0 -1
  294. package/unstableInternalsExport/index.d.ts +0 -1
  295. package/unstableInternalsExport/index.js +0 -1
@@ -1,236 +0,0 @@
1
- import { TRPCError } from '../error/TRPCError';
2
- import { Simplify } from '../types';
3
- import { ParseFn } from './internals/getParseFn';
4
- import { GetRawInputFn, MiddlewareMarker, Overwrite } from './internals/utils';
5
- import { ProcedureType } from './types';
6
-
7
- /**
8
- * @internal
9
- */
10
- interface MiddlewareResultBase {
11
- /**
12
- * All middlewares should pass through their `next()`'s output.
13
- * Requiring this marker makes sure that can't be forgotten at compile-time.
14
- */
15
- readonly marker: MiddlewareMarker;
16
- }
17
-
18
- /**
19
- * @internal
20
- */
21
- interface MiddlewareOKResult<_TContextOverride> extends MiddlewareResultBase {
22
- ok: true;
23
- data: unknown;
24
- // this could be extended with `input`/`rawInput` later
25
- }
26
-
27
- /**
28
- * @internal
29
- */
30
- interface MiddlewareErrorResult<_TContextOverride>
31
- extends MiddlewareResultBase {
32
- ok: false;
33
- error: TRPCError;
34
- }
35
-
36
- /**
37
- * @internal
38
- */
39
- export type MiddlewareResult<_TContextOverride> =
40
- | MiddlewareErrorResult<_TContextOverride>
41
- | MiddlewareOKResult<_TContextOverride>;
42
-
43
- /**
44
- * @internal
45
- */
46
- export interface MiddlewareBuilder<
47
- TContext,
48
- TMeta,
49
- TContextOverrides,
50
- TInputIn,
51
- > {
52
- /**
53
- * Create a new builder based on the current middleware builder
54
- */
55
- unstable_pipe<$ContextOverridesOut>(
56
- fn:
57
- | MiddlewareFunction<
58
- TContext,
59
- TMeta,
60
- TContextOverrides,
61
- $ContextOverridesOut,
62
- TInputIn
63
- >
64
- | MiddlewareBuilder<
65
- Overwrite<TContext, TContextOverrides>,
66
- TMeta,
67
- $ContextOverridesOut,
68
- TInputIn
69
- >,
70
- ): MiddlewareBuilder<
71
- TContext,
72
- TMeta,
73
- Overwrite<TContextOverrides, $ContextOverridesOut>,
74
- TInputIn
75
- >;
76
-
77
- /**
78
- * List of middlewares within this middleware builder
79
- */
80
- _middlewares: MiddlewareFunction<
81
- TContext,
82
- TMeta,
83
- TContextOverrides,
84
- object,
85
- TInputIn
86
- >[];
87
- }
88
-
89
- /**
90
- * @internal
91
- */
92
- export type MiddlewareFunction<
93
- TContext,
94
- TMeta,
95
- TContextOverridesIn,
96
- $ContextOverridesOut,
97
- TInputIn,
98
- > = {
99
- (opts: {
100
- ctx: Simplify<Overwrite<TContext, TContextOverridesIn>>;
101
- type: ProcedureType;
102
- path: string;
103
- input: TInputIn;
104
- getRawInput: GetRawInputFn;
105
- meta: TMeta | undefined;
106
- next: {
107
- (): Promise<MiddlewareResult<TContextOverridesIn>>;
108
- <$ContextOverride>(opts: {
109
- ctx?: $ContextOverride;
110
- input?: unknown;
111
- }): Promise<MiddlewareResult<$ContextOverride>>;
112
- (opts: { getRawInput: GetRawInputFn }): Promise<
113
- MiddlewareResult<TContextOverridesIn>
114
- >;
115
- };
116
- }): Promise<MiddlewareResult<$ContextOverridesOut>>;
117
- _type?: string | undefined;
118
- };
119
-
120
- export type AnyMiddlewareFunction = MiddlewareFunction<any, any, any, any, any>;
121
- export type AnyMiddlewareBuilder = MiddlewareBuilder<any, any, any, any>;
122
- /**
123
- * @internal
124
- */
125
- export function createMiddlewareFactory<TContext, TMeta, TInputIn = unknown>() {
126
- function createMiddlewareInner(
127
- middlewares: AnyMiddlewareFunction[],
128
- ): AnyMiddlewareBuilder {
129
- return {
130
- _middlewares: middlewares,
131
- unstable_pipe(middlewareBuilderOrFn) {
132
- const pipedMiddleware =
133
- '_middlewares' in middlewareBuilderOrFn
134
- ? middlewareBuilderOrFn._middlewares
135
- : [middlewareBuilderOrFn];
136
-
137
- return createMiddlewareInner([...middlewares, ...pipedMiddleware]);
138
- },
139
- };
140
- }
141
-
142
- function createMiddleware<$ContextOverrides>(
143
- fn: MiddlewareFunction<
144
- TContext,
145
- TMeta,
146
- object,
147
- $ContextOverrides,
148
- TInputIn
149
- >,
150
- ): MiddlewareBuilder<TContext, TMeta, $ContextOverrides, TInputIn> {
151
- return createMiddlewareInner([fn]);
152
- }
153
-
154
- return createMiddleware;
155
- }
156
-
157
- export const experimental_standaloneMiddleware = <
158
- TCtx extends {
159
- ctx?: object;
160
- meta?: object;
161
- input?: unknown;
162
- },
163
- >() => ({
164
- create: createMiddlewareFactory<
165
- TCtx extends { ctx: infer T extends object } ? T : any,
166
- TCtx extends { meta: infer T extends object } ? T : object,
167
- TCtx extends { input: infer T } ? T : unknown
168
- >(),
169
- });
170
-
171
- function isPlainObject(obj: unknown) {
172
- return obj && typeof obj === 'object' && !Array.isArray(obj);
173
- }
174
-
175
- /**
176
- * @internal
177
- * Please note, `trpc-openapi` uses this function.
178
- */
179
- export function createInputMiddleware<TInput>(parse: ParseFn<TInput>) {
180
- const inputMiddleware: AnyMiddlewareFunction =
181
- async function inputValidatorMiddleware(opts) {
182
- let parsedInput: ReturnType<typeof parse>;
183
-
184
- const rawInput = await opts.getRawInput();
185
- try {
186
- parsedInput = await parse(rawInput);
187
- } catch (cause) {
188
- throw new TRPCError({
189
- code: 'BAD_REQUEST',
190
- cause,
191
- });
192
- }
193
-
194
- // Multiple input parsers
195
- const combinedInput =
196
- isPlainObject(opts.input) && isPlainObject(parsedInput)
197
- ? {
198
- ...opts.input,
199
- ...parsedInput,
200
- }
201
- : parsedInput;
202
-
203
- return opts.next({ input: combinedInput });
204
- };
205
- inputMiddleware._type = 'input';
206
- return inputMiddleware;
207
- }
208
-
209
- /**
210
- * @internal
211
- */
212
- export function createOutputMiddleware<TOutput>(parse: ParseFn<TOutput>) {
213
- const outputMiddleware: AnyMiddlewareFunction =
214
- async function outputValidatorMiddleware({ next }) {
215
- const result = await next();
216
- if (!result.ok) {
217
- // pass through failures without validating
218
- return result;
219
- }
220
- try {
221
- const data = await parse(result.data);
222
- return {
223
- ...result,
224
- data,
225
- };
226
- } catch (cause) {
227
- throw new TRPCError({
228
- message: 'Output validation failed',
229
- code: 'INTERNAL_SERVER_ERROR',
230
- cause,
231
- });
232
- }
233
- };
234
- outputMiddleware._type = 'output';
235
- return outputMiddleware;
236
- }
@@ -1,52 +0,0 @@
1
- // zod / @decs/typeschema
2
- export type ParserZodEsque<TInput, TParsedInput> = {
3
- _input: TInput;
4
- _output: TParsedInput;
5
- };
6
-
7
- export type ParserMyZodEsque<TInput> = {
8
- parse: (input: any) => TInput;
9
- };
10
-
11
- export type ParserSuperstructEsque<TInput> = {
12
- create: (input: unknown) => TInput;
13
- };
14
-
15
- export type ParserCustomValidatorEsque<TInput> = (
16
- input: unknown,
17
- ) => Promise<TInput> | TInput;
18
-
19
- export type ParserYupEsque<TInput> = {
20
- validateSync: (input: unknown) => TInput;
21
- };
22
-
23
- export type ParserScaleEsque<TInput> = {
24
- assert(value: unknown): asserts value is TInput;
25
- };
26
-
27
- export type ParserWithoutInput<TInput> =
28
- | ParserCustomValidatorEsque<TInput>
29
- | ParserMyZodEsque<TInput>
30
- | ParserScaleEsque<TInput>
31
- | ParserSuperstructEsque<TInput>
32
- | ParserYupEsque<TInput>;
33
-
34
- export type ParserWithInputOutput<TInput, TParsedInput> = ParserZodEsque<
35
- TInput,
36
- TParsedInput
37
- >;
38
-
39
- export type Parser = ParserWithInputOutput<any, any> | ParserWithoutInput<any>;
40
-
41
- export type inferParser<TParser extends Parser> =
42
- TParser extends ParserWithInputOutput<infer $TIn, infer $TOut>
43
- ? {
44
- in: $TIn;
45
- out: $TOut;
46
- }
47
- : TParser extends ParserWithoutInput<infer $InOut>
48
- ? {
49
- in: $InOut;
50
- out: $InOut;
51
- }
52
- : never;
@@ -1,68 +0,0 @@
1
- import { ProcedureCallOptions } from './internals/procedureBuilder';
2
- import { ProcedureType } from './types';
3
-
4
- type ClientContext = Record<string, unknown>;
5
-
6
- /**
7
- * @internal
8
- */
9
- export interface ProcedureOptions {
10
- /**
11
- * Client-side context
12
- */
13
- context?: ClientContext;
14
- signal?: AbortSignal;
15
- }
16
-
17
- /**
18
- * @internal
19
- */
20
- export type ProcedureArgs<TParams extends AnyProcedure['_def']> =
21
- void extends TParams['_input_in']
22
- ? [input?: undefined | void, opts?: ProcedureOptions]
23
- : undefined extends TParams['_input_in']
24
- ? [input?: TParams['_input_in'] | void, opts?: ProcedureOptions]
25
- : [input: TParams['_input_in'], opts?: ProcedureOptions];
26
-
27
- interface BuiltProcedureDef {
28
- input: unknown;
29
- output: unknown;
30
- }
31
- /**
32
- *
33
- * @internal
34
- */
35
- export interface Procedure<
36
- TType extends ProcedureType,
37
- TDef extends BuiltProcedureDef,
38
- > {
39
- _def: {
40
- _input_in: TDef['input'];
41
- _output_out: TDef['output'];
42
- procedure: true;
43
- type: TType;
44
- /**
45
- * @internal
46
- * Meta is not inferrable on individual procedures, only on the router
47
- */
48
- meta: unknown;
49
- };
50
- /**
51
- * @internal
52
- */
53
- (opts: ProcedureCallOptions): Promise<unknown>;
54
- }
55
-
56
- export interface QueryProcedure<TDef extends BuiltProcedureDef>
57
- extends Procedure<'query', TDef> {}
58
-
59
- export interface MutationProcedure<TDef extends BuiltProcedureDef>
60
- extends Procedure<'mutation', TDef> {}
61
-
62
- export interface SubscriptionProcedure<TDef extends BuiltProcedureDef>
63
- extends Procedure<'subscription', TDef> {}
64
-
65
- export type AnyQueryProcedure = QueryProcedure<any>;
66
- export type AnyMutationProcedure = MutationProcedure<any>;
67
- export type AnySubscriptionProcedure = SubscriptionProcedure<any>;
68
- export type AnyProcedure = Procedure<ProcedureType, any>;
@@ -1,241 +0,0 @@
1
- import { defaultFormatter } from '../error/formatter';
2
- import { TRPCError } from '../error/TRPCError';
3
- import { createRecursiveProxy } from '../shared/createProxy';
4
- import { defaultTransformer } from '../transformer';
5
- import { MaybePromise } from '../types';
6
- import { AnyRootConfig } from './internals/config';
7
- import { omitPrototype } from './internals/omitPrototype';
8
- import { ProcedureCallOptions } from './internals/procedureBuilder';
9
- import { AnyProcedure, ProcedureArgs } from './procedure';
10
-
11
- /** @internal **/
12
- export type ProcedureRecord = Record<string, AnyProcedure>;
13
-
14
- export interface ProcedureRouterRecord {
15
- [key: string]: AnyProcedure | AnyRouter;
16
- }
17
-
18
- export interface RouterDef<
19
- TConfig extends AnyRootConfig,
20
- TRecord extends ProcedureRouterRecord,
21
- > {
22
- _config: TConfig;
23
- router: true;
24
- procedure?: never;
25
- procedures: TRecord;
26
- record: TRecord;
27
- }
28
-
29
- export type AnyRouterDef<TConfig extends AnyRootConfig = AnyRootConfig> =
30
- RouterDef<TConfig, any>;
31
-
32
- type DecorateProcedure<TProcedure extends AnyProcedure> = (
33
- input: ProcedureArgs<TProcedure['_def']>[0],
34
- ) => Promise<TProcedure['_def']['_output_out']>;
35
-
36
- /**
37
- * @internal
38
- */
39
- type DecoratedProcedureRecord<TProcedures extends ProcedureRouterRecord> = {
40
- [TKey in keyof TProcedures]: TProcedures[TKey] extends AnyRouter
41
- ? DecoratedProcedureRecord<TProcedures[TKey]['_def']['record']>
42
- : TProcedures[TKey] extends AnyProcedure
43
- ? DecorateProcedure<TProcedures[TKey]>
44
- : never;
45
- };
46
-
47
- /**
48
- * @internal
49
- */
50
- export type RouterCaller<TDef extends AnyRouterDef> = (
51
- /**
52
- * @note
53
- * If passing a function, we recommend it's a cached function
54
- * e.g. wrapped in `React.cache` to avoid unnecessary computations
55
- */
56
- ctx:
57
- | TDef['_config']['$types']['ctx']
58
- | (() => MaybePromise<TDef['_config']['$types']['ctx']>),
59
- ) => DecoratedProcedureRecord<TDef['record']>;
60
-
61
- export interface Router<TDef extends AnyRouterDef> {
62
- _def: TDef;
63
- /**
64
- * @deprecated use `t.createCallerFactory(router)` instead
65
- * @see https://trpc.io/docs/server/server-side-calls
66
- */
67
- createCaller: RouterCaller<TDef>;
68
- }
69
-
70
- export type AnyRouter = Router<AnyRouterDef>;
71
-
72
- function isRouter(
73
- procedureOrRouter: AnyProcedure | AnyRouter,
74
- ): procedureOrRouter is AnyRouter {
75
- return 'router' in procedureOrRouter._def;
76
- }
77
-
78
- const emptyRouter = {
79
- _ctx: null as any,
80
- _errorShape: null as any,
81
- _meta: null as any,
82
- queries: {},
83
- mutations: {},
84
- subscriptions: {},
85
- errorFormatter: defaultFormatter,
86
- transformer: defaultTransformer,
87
- };
88
-
89
- /**
90
- * Reserved words that can't be used as router or procedure names
91
- */
92
- const reservedWords = [
93
- /**
94
- * Then is a reserved word because otherwise we can't return a promise that returns a Proxy
95
- * since JS will think that `.then` is something that exists
96
- */
97
- 'then',
98
- ];
99
-
100
- /**
101
- * @internal
102
- */
103
- export type CreateRouterInner<
104
- TConfig extends AnyRootConfig,
105
- TProcRouterRecord extends ProcedureRouterRecord,
106
- > = Router<RouterDef<TConfig, TProcRouterRecord>> &
107
- /**
108
- * This adds ability to call procedures directly but is primarily used for quick access in type inference
109
- */
110
- TProcRouterRecord;
111
-
112
- /**
113
- * @internal
114
- */
115
- export function createRouterFactory<TConfig extends AnyRootConfig>(
116
- config: TConfig,
117
- ) {
118
- return function createRouterInner<
119
- TProcRouterRecord extends ProcedureRouterRecord,
120
- >(
121
- procedures: TProcRouterRecord,
122
- ): CreateRouterInner<TConfig, TProcRouterRecord> {
123
- const reservedWordsUsed = new Set(
124
- Object.keys(procedures).filter((v) => reservedWords.includes(v)),
125
- );
126
- if (reservedWordsUsed.size > 0) {
127
- throw new Error(
128
- 'Reserved words used in `router({})` call: ' +
129
- Array.from(reservedWordsUsed).join(', '),
130
- );
131
- }
132
-
133
- const routerProcedures: ProcedureRecord = omitPrototype({});
134
- function recursiveGetPaths(procedures: ProcedureRouterRecord, path = '') {
135
- for (const [key, procedureOrRouter] of Object.entries(procedures ?? {})) {
136
- const newPath = `${path}${key}`;
137
-
138
- if (isRouter(procedureOrRouter)) {
139
- recursiveGetPaths(procedureOrRouter._def.procedures, `${newPath}.`);
140
- continue;
141
- }
142
-
143
- if (routerProcedures[newPath]) {
144
- throw new Error(`Duplicate key: ${newPath}`);
145
- }
146
-
147
- routerProcedures[newPath] = procedureOrRouter;
148
- }
149
- }
150
- recursiveGetPaths(procedures);
151
-
152
- const _def: AnyRouterDef<TConfig> = {
153
- _config: config,
154
- router: true,
155
- procedures: routerProcedures,
156
- ...emptyRouter,
157
- record: procedures,
158
- };
159
-
160
- const router: AnyRouter = {
161
- ...procedures,
162
- _def,
163
- createCaller(ctx) {
164
- const proxy = createRecursiveProxy(({ path, args }) => {
165
- const fullPath = path.join('.');
166
- const procedure = _def.procedures[fullPath] as AnyProcedure;
167
-
168
- return procedure({
169
- path: fullPath,
170
- getRawInput: async () => args[0],
171
- ctx,
172
- type: procedure._def.type,
173
- });
174
- });
175
-
176
- return proxy as ReturnType<RouterCaller<any>>;
177
- },
178
- };
179
-
180
- return router as any;
181
- };
182
- }
183
-
184
- function isProcedure(
185
- procedureOrRouter: AnyProcedure | AnyRouter,
186
- ): procedureOrRouter is AnyProcedure {
187
- return !!procedureOrRouter._def.procedure;
188
- }
189
- /**
190
- * @internal
191
- */
192
- export function callProcedure(
193
- opts: ProcedureCallOptions & { procedures: ProcedureRouterRecord },
194
- ) {
195
- const { type, path } = opts;
196
- const proc = opts.procedures[path];
197
- if (!proc || !isProcedure(proc) || proc._def.type !== type) {
198
- throw new TRPCError({
199
- code: 'NOT_FOUND',
200
- message: `No "${type}"-procedure on path "${path}"`,
201
- });
202
- }
203
-
204
- return proc(opts);
205
- }
206
-
207
- export function createCallerFactory<TConfig extends AnyRootConfig>() {
208
- return function createCallerInner<
209
- TRouter extends Router<AnyRouterDef<TConfig>>,
210
- >(router: TRouter): RouterCaller<TRouter['_def']> {
211
- const _def = router._def;
212
- type Context = TConfig['$types']['ctx'];
213
-
214
- return function createCaller(maybeContext) {
215
- const proxy = createRecursiveProxy(({ path, args }) => {
216
- const fullPath = path.join('.');
217
- const procedure = _def.procedures[fullPath] as AnyProcedure;
218
-
219
- const callProc = (ctx: Context) =>
220
- procedure({
221
- path: fullPath,
222
- getRawInput: async () => args[0],
223
- ctx,
224
- type: procedure._def.type,
225
- });
226
-
227
- if (typeof maybeContext === 'function') {
228
- const context = (maybeContext as () => MaybePromise<Context>)();
229
- if (context instanceof Promise) {
230
- return context.then(callProc);
231
- }
232
- return callProc(context);
233
- }
234
-
235
- return callProc(maybeContext);
236
- });
237
-
238
- return proxy as ReturnType<RouterCaller<any>>;
239
- };
240
- };
241
- }
package/src/core/types.ts DELETED
@@ -1,67 +0,0 @@
1
- import { inferTransformedProcedureOutput } from '../shared';
2
- import { AnyProcedure, ProcedureArgs } from './procedure';
3
- import { AnyRouter, AnyRouterDef, Router } from './router';
4
-
5
- export type inferRouterDef<TRouter extends AnyRouter> = TRouter extends Router<
6
- infer TParams
7
- >
8
- ? TParams extends AnyRouterDef<any>
9
- ? TParams
10
- : never
11
- : never;
12
-
13
- export type inferRouterConfig<TRouter extends AnyRouter> =
14
- inferRouterDef<TRouter>['_config'];
15
- export type inferRouterContext<TRouter extends AnyRouter> =
16
- inferRouterConfig<TRouter>['$types']['ctx'];
17
- export type inferRouterError<TRouter extends AnyRouter> =
18
- inferRouterConfig<TRouter>['$types']['errorShape'];
19
- export type inferRouterMeta<TRouter extends AnyRouter> =
20
- inferRouterConfig<TRouter>['$types']['meta'];
21
-
22
- export const procedureTypes = ['query', 'mutation', 'subscription'] as const;
23
- /**
24
- * @public
25
- */
26
- export type ProcedureType = (typeof procedureTypes)[number];
27
-
28
- export type inferHandlerInput<TProcedure extends AnyProcedure> = ProcedureArgs<
29
- inferProcedureParams<TProcedure>
30
- >;
31
-
32
- export type inferProcedureInput<TProcedure extends AnyProcedure> =
33
- inferProcedureParams<TProcedure>['_input_in'];
34
-
35
- export type inferProcedureParams<TProcedure> = TProcedure extends AnyProcedure
36
- ? TProcedure['_def']
37
- : never;
38
- export type inferProcedureOutput<TProcedure> =
39
- inferProcedureParams<TProcedure>['_output_out'];
40
-
41
- type GetInferenceHelpers<
42
- TType extends 'input' | 'output',
43
- TRouter extends AnyRouter,
44
- > = {
45
- [TKey in keyof TRouter['_def']['record']]: TRouter['_def']['record'][TKey] extends infer TRouterOrProcedure
46
- ? TRouterOrProcedure extends AnyRouter
47
- ? GetInferenceHelpers<TType, TRouterOrProcedure>
48
- : TRouterOrProcedure extends AnyProcedure
49
- ? TType extends 'input'
50
- ? inferProcedureInput<TRouterOrProcedure>
51
- : inferTransformedProcedureOutput<
52
- TRouter['_def']['_config'],
53
- TRouterOrProcedure
54
- >
55
- : never
56
- : never;
57
- };
58
-
59
- export type inferRouterInputs<TRouter extends AnyRouter> = GetInferenceHelpers<
60
- 'input',
61
- TRouter
62
- >;
63
-
64
- export type inferRouterOutputs<TRouter extends AnyRouter> = GetInferenceHelpers<
65
- 'output',
66
- TRouter
67
- >;