@trpc/server 11.0.0-alpha-tmp-export-from-main.218 → 11.0.0-alpha-tmp-export-from-main-nuke-core.239

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 (249) hide show
  1. package/dist/@trpc/server/http.d.ts +7 -0
  2. package/dist/@trpc/server/http.d.ts.map +1 -0
  3. package/dist/@trpc/server/index.d.ts +69 -0
  4. package/dist/@trpc/server/index.d.ts.map +1 -0
  5. package/dist/@trpc/server/rpc.d.ts +3 -0
  6. package/dist/@trpc/server/rpc.d.ts.map +1 -0
  7. package/dist/adapters/aws-lambda/index.d.ts +1 -2
  8. package/dist/adapters/aws-lambda/index.d.ts.map +1 -1
  9. package/dist/adapters/aws-lambda/index.js +6 -4
  10. package/dist/adapters/aws-lambda/index.mjs +4 -2
  11. package/dist/adapters/aws-lambda/utils.d.ts +2 -3
  12. package/dist/adapters/aws-lambda/utils.d.ts.map +1 -1
  13. package/dist/adapters/aws-lambda/utils.js +5 -4
  14. package/dist/adapters/aws-lambda/utils.mjs +3 -2
  15. package/dist/adapters/express.d.ts +1 -2
  16. package/dist/adapters/express.d.ts.map +1 -1
  17. package/dist/adapters/fastify/fastifyRequestHandler.d.ts +2 -2
  18. package/dist/adapters/fastify/fastifyRequestHandler.d.ts.map +1 -1
  19. package/dist/adapters/fastify/fastifyRequestHandler.js +6 -3
  20. package/dist/adapters/fastify/fastifyRequestHandler.mjs +4 -1
  21. package/dist/adapters/fastify/fastifyTRPCPlugin.d.ts +1 -2
  22. package/dist/adapters/fastify/fastifyTRPCPlugin.d.ts.map +1 -1
  23. package/dist/adapters/fastify/fastifyTRPCPlugin.js +0 -1
  24. package/dist/adapters/fastify/fastifyTRPCPlugin.mjs +0 -1
  25. package/dist/adapters/fetch/fetchRequestHandler.d.ts +1 -2
  26. package/dist/adapters/fetch/fetchRequestHandler.d.ts.map +1 -1
  27. package/dist/adapters/fetch/fetchRequestHandler.js +6 -4
  28. package/dist/adapters/fetch/fetchRequestHandler.mjs +4 -2
  29. package/dist/adapters/fetch/types.d.ts +2 -3
  30. package/dist/adapters/fetch/types.d.ts.map +1 -1
  31. package/dist/adapters/next.d.ts +1 -3
  32. package/dist/adapters/next.d.ts.map +1 -1
  33. package/dist/adapters/next.js +6 -4
  34. package/dist/adapters/next.mjs +4 -2
  35. package/dist/adapters/node-http/content-type/json/getPostBody.d.ts +1 -1
  36. package/dist/adapters/node-http/content-type/json/getPostBody.d.ts.map +1 -1
  37. package/dist/adapters/node-http/content-type/json/getPostBody.js +4 -2
  38. package/dist/adapters/node-http/content-type/json/getPostBody.mjs +3 -1
  39. package/dist/adapters/node-http/content-type/json/index.js +4 -2
  40. package/dist/adapters/node-http/content-type/json/index.mjs +3 -1
  41. package/dist/adapters/node-http/internals/contentType.d.ts +2 -2
  42. package/dist/adapters/node-http/internals/contentType.d.ts.map +1 -1
  43. package/dist/adapters/node-http/nodeHTTPRequestHandler.d.ts +1 -2
  44. package/dist/adapters/node-http/nodeHTTPRequestHandler.d.ts.map +1 -1
  45. package/dist/adapters/node-http/nodeHTTPRequestHandler.js +6 -4
  46. package/dist/adapters/node-http/nodeHTTPRequestHandler.mjs +4 -2
  47. package/dist/adapters/node-http/types.d.ts +3 -4
  48. package/dist/adapters/node-http/types.d.ts.map +1 -1
  49. package/dist/adapters/standalone.d.ts +1 -2
  50. package/dist/adapters/standalone.d.ts.map +1 -1
  51. package/dist/adapters/standalone.js +1 -0
  52. package/dist/adapters/standalone.mjs +1 -0
  53. package/dist/adapters/ws.d.ts +3 -2
  54. package/dist/adapters/ws.d.ts.map +1 -1
  55. package/dist/adapters/ws.js +33 -26
  56. package/dist/adapters/ws.mjs +8 -1
  57. package/dist/bundle-analysis.json +757 -0
  58. package/dist/http.d.ts +1 -6
  59. package/dist/http.d.ts.map +1 -1
  60. package/dist/http.js +11 -21
  61. package/dist/http.mjs +6 -1
  62. package/dist/index.d.ts +1 -68
  63. package/dist/index.d.ts.map +1 -1
  64. package/dist/index.js +18 -41
  65. package/dist/index.mjs +8 -1
  66. package/dist/observable/index.d.ts +5 -0
  67. package/dist/observable/index.d.ts.map +1 -0
  68. package/dist/observable/index.js +13 -0
  69. package/dist/observable/index.mjs +2 -0
  70. package/dist/observable/observable.d.ts +13 -0
  71. package/dist/observable/observable.d.ts.map +1 -0
  72. package/dist/observable/observable.js +126 -0
  73. package/dist/observable/observable.mjs +122 -0
  74. package/dist/observable/operators.d.ts +8 -0
  75. package/dist/observable/operators.d.ts.map +1 -0
  76. package/dist/observable/operators.js +103 -0
  77. package/dist/observable/operators.mjs +99 -0
  78. package/dist/observable/types.d.ts +26 -0
  79. package/dist/observable/types.d.ts.map +1 -0
  80. package/dist/rpc.d.ts +1 -2
  81. package/dist/rpc.d.ts.map +1 -1
  82. package/dist/rpc.js +6 -13
  83. package/dist/rpc.mjs +3 -1
  84. package/dist/shared.d.ts +1 -1
  85. package/dist/shared.d.ts.map +1 -1
  86. package/dist/shared.js +6 -9
  87. package/dist/shared.mjs +4 -1
  88. package/dist/unstable-core-do-not-import/TRPCInferrable.d.ts +6 -0
  89. package/dist/unstable-core-do-not-import/TRPCInferrable.d.ts.map +1 -0
  90. package/dist/unstable-core-do-not-import/createProxy.d.ts +19 -0
  91. package/dist/unstable-core-do-not-import/createProxy.d.ts.map +1 -0
  92. package/dist/unstable-core-do-not-import/createProxy.js +52 -0
  93. package/dist/unstable-core-do-not-import/createProxy.mjs +49 -0
  94. package/dist/unstable-core-do-not-import/error/TRPCError.d.ts +13 -0
  95. package/dist/unstable-core-do-not-import/error/TRPCError.d.ts.map +1 -0
  96. package/dist/unstable-core-do-not-import/error/TRPCError.js +67 -0
  97. package/dist/unstable-core-do-not-import/error/TRPCError.mjs +63 -0
  98. package/dist/unstable-core-do-not-import/error/formatter.d.ts +33 -0
  99. package/dist/unstable-core-do-not-import/error/formatter.d.ts.map +1 -0
  100. package/dist/unstable-core-do-not-import/error/formatter.js +7 -0
  101. package/dist/unstable-core-do-not-import/error/formatter.mjs +5 -0
  102. package/dist/unstable-core-do-not-import/error/getErrorShape.d.ts +15 -0
  103. package/dist/unstable-core-do-not-import/error/getErrorShape.d.ts.map +1 -0
  104. package/dist/unstable-core-do-not-import/error/getErrorShape.js +31 -0
  105. package/dist/unstable-core-do-not-import/error/getErrorShape.mjs +29 -0
  106. package/dist/unstable-core-do-not-import/http/batchStreamFormatter.d.ts +24 -0
  107. package/dist/unstable-core-do-not-import/http/batchStreamFormatter.d.ts.map +1 -0
  108. package/dist/unstable-core-do-not-import/http/batchStreamFormatter.js +32 -0
  109. package/dist/unstable-core-do-not-import/http/batchStreamFormatter.mjs +30 -0
  110. package/dist/unstable-core-do-not-import/http/contentType.d.ts +29 -0
  111. package/dist/unstable-core-do-not-import/http/contentType.d.ts.map +1 -0
  112. package/dist/unstable-core-do-not-import/http/contentType.js +54 -0
  113. package/dist/unstable-core-do-not-import/http/contentType.mjs +52 -0
  114. package/dist/unstable-core-do-not-import/http/getHTTPStatusCode.d.ts +5 -0
  115. package/dist/unstable-core-do-not-import/http/getHTTPStatusCode.d.ts.map +1 -0
  116. package/dist/unstable-core-do-not-import/http/getHTTPStatusCode.js +51 -0
  117. package/dist/unstable-core-do-not-import/http/getHTTPStatusCode.mjs +48 -0
  118. package/dist/unstable-core-do-not-import/http/index.d.ts +7 -0
  119. package/dist/unstable-core-do-not-import/http/index.d.ts.map +1 -0
  120. package/dist/unstable-core-do-not-import/http/resolveHTTPResponse.d.ts +51 -0
  121. package/dist/unstable-core-do-not-import/http/resolveHTTPResponse.d.ts.map +1 -0
  122. package/dist/unstable-core-do-not-import/http/resolveHTTPResponse.js +295 -0
  123. package/dist/unstable-core-do-not-import/http/resolveHTTPResponse.mjs +293 -0
  124. package/dist/unstable-core-do-not-import/http/types.d.ts +96 -0
  125. package/dist/unstable-core-do-not-import/http/types.d.ts.map +1 -0
  126. package/dist/unstable-core-do-not-import/index.d.ts +37 -0
  127. package/dist/unstable-core-do-not-import/index.d.ts.map +1 -0
  128. package/dist/unstable-core-do-not-import/index.js +48 -0
  129. package/dist/unstable-core-do-not-import/index.mjs +16 -0
  130. package/dist/unstable-core-do-not-import/initTRPC.d.ts +96 -0
  131. package/dist/unstable-core-do-not-import/initTRPC.d.ts.map +1 -0
  132. package/dist/unstable-core-do-not-import/initTRPC.js +95 -0
  133. package/dist/unstable-core-do-not-import/initTRPC.mjs +93 -0
  134. package/dist/unstable-core-do-not-import/middleware.d.ts +105 -0
  135. package/dist/unstable-core-do-not-import/middleware.d.ts.map +1 -0
  136. package/dist/unstable-core-do-not-import/middleware.js +95 -0
  137. package/dist/unstable-core-do-not-import/middleware.mjs +89 -0
  138. package/dist/unstable-core-do-not-import/parser.d.ts +30 -0
  139. package/dist/unstable-core-do-not-import/parser.d.ts.map +1 -0
  140. package/dist/unstable-core-do-not-import/parser.js +37 -0
  141. package/dist/unstable-core-do-not-import/parser.mjs +35 -0
  142. package/dist/unstable-core-do-not-import/procedure.d.ts +72 -0
  143. package/dist/unstable-core-do-not-import/procedure.d.ts.map +1 -0
  144. package/dist/unstable-core-do-not-import/procedure.js +9 -0
  145. package/dist/unstable-core-do-not-import/procedure.mjs +7 -0
  146. package/dist/unstable-core-do-not-import/procedureBuilder.d.ts +101 -0
  147. package/dist/unstable-core-do-not-import/procedureBuilder.d.ts.map +1 -0
  148. package/dist/unstable-core-do-not-import/procedureBuilder.js +176 -0
  149. package/dist/unstable-core-do-not-import/procedureBuilder.mjs +173 -0
  150. package/dist/unstable-core-do-not-import/rootConfig.d.ts +75 -0
  151. package/dist/unstable-core-do-not-import/rootConfig.d.ts.map +1 -0
  152. package/dist/unstable-core-do-not-import/rootConfig.js +8 -0
  153. package/dist/unstable-core-do-not-import/rootConfig.mjs +6 -0
  154. package/dist/unstable-core-do-not-import/router.d.ts +85 -0
  155. package/dist/unstable-core-do-not-import/router.d.ts.map +1 -0
  156. package/dist/unstable-core-do-not-import/router.js +156 -0
  157. package/dist/unstable-core-do-not-import/router.mjs +151 -0
  158. package/dist/unstable-core-do-not-import/rpc/codes.d.ts +51 -0
  159. package/dist/unstable-core-do-not-import/rpc/codes.d.ts.map +1 -0
  160. package/dist/unstable-core-do-not-import/rpc/codes.js +38 -0
  161. package/dist/unstable-core-do-not-import/rpc/codes.mjs +35 -0
  162. package/dist/unstable-core-do-not-import/rpc/envelopes.d.ts +97 -0
  163. package/dist/unstable-core-do-not-import/rpc/envelopes.d.ts.map +1 -0
  164. package/dist/unstable-core-do-not-import/rpc/index.d.ts +5 -0
  165. package/dist/unstable-core-do-not-import/rpc/index.d.ts.map +1 -0
  166. package/dist/unstable-core-do-not-import/rpc/parseTRPCMessage.d.ts +5 -0
  167. package/dist/unstable-core-do-not-import/rpc/parseTRPCMessage.d.ts.map +1 -0
  168. package/dist/unstable-core-do-not-import/rpc/parseTRPCMessage.js +59 -0
  169. package/dist/unstable-core-do-not-import/rpc/parseTRPCMessage.mjs +57 -0
  170. package/dist/unstable-core-do-not-import/serialize.d.ts +62 -0
  171. package/dist/unstable-core-do-not-import/serialize.d.ts.map +1 -0
  172. package/dist/unstable-core-do-not-import/transformer.d.ts +107 -0
  173. package/dist/unstable-core-do-not-import/transformer.d.ts.map +1 -0
  174. package/dist/unstable-core-do-not-import/transformer.js +107 -0
  175. package/dist/unstable-core-do-not-import/transformer.mjs +102 -0
  176. package/dist/unstable-core-do-not-import/types.d.ts +98 -0
  177. package/dist/unstable-core-do-not-import/types.d.ts.map +1 -0
  178. package/dist/unstable-core-do-not-import/utils.d.ts +27 -0
  179. package/dist/unstable-core-do-not-import/utils.d.ts.map +1 -0
  180. package/dist/unstable-core-do-not-import/utils.js +44 -0
  181. package/dist/unstable-core-do-not-import/utils.mjs +39 -0
  182. package/package.json +53 -125
  183. package/src/@trpc/server/http.ts +26 -0
  184. package/src/@trpc/server/index.ts +105 -0
  185. package/src/@trpc/server/rpc.ts +26 -0
  186. package/src/adapters/aws-lambda/index.ts +4 -5
  187. package/src/adapters/aws-lambda/utils.ts +3 -4
  188. package/src/adapters/express.ts +1 -3
  189. package/src/adapters/fastify/fastifyRequestHandler.ts +6 -4
  190. package/src/adapters/fastify/fastifyTRPCPlugin.ts +1 -2
  191. package/src/adapters/fetch/fetchRequestHandler.ts +6 -4
  192. package/src/adapters/fetch/types.ts +2 -3
  193. package/src/adapters/next.ts +2 -4
  194. package/src/adapters/node-http/content-type/form-data/index.ts +1 -1
  195. package/src/adapters/node-http/content-type/json/getPostBody.ts +2 -2
  196. package/src/adapters/node-http/content-type/json/index.ts +1 -1
  197. package/src/adapters/node-http/internals/contentType.ts +2 -2
  198. package/src/adapters/node-http/nodeHTTPRequestHandler.ts +6 -4
  199. package/src/adapters/node-http/types.ts +4 -5
  200. package/src/adapters/standalone.ts +2 -2
  201. package/src/adapters/ws.ts +14 -13
  202. package/src/http.ts +1 -26
  203. package/src/index.ts +1 -105
  204. package/src/observable/index.ts +10 -0
  205. package/src/observable/observable.ts +158 -0
  206. package/src/observable/operators.ts +119 -0
  207. package/src/observable/types.ts +76 -0
  208. package/src/rpc.ts +1 -26
  209. package/src/shared.ts +1 -1
  210. package/src/unstable-core-do-not-import/TRPCInferrable.ts +9 -0
  211. package/src/unstable-core-do-not-import/createProxy.ts +59 -0
  212. package/src/unstable-core-do-not-import/error/TRPCError.ts +82 -0
  213. package/src/unstable-core-do-not-import/error/formatter.ts +51 -0
  214. package/src/unstable-core-do-not-import/error/getErrorShape.ts +36 -0
  215. package/src/unstable-core-do-not-import/http/batchStreamFormatter.ts +29 -0
  216. package/src/unstable-core-do-not-import/http/contentType.ts +99 -0
  217. package/src/unstable-core-do-not-import/http/getHTTPStatusCode.ts +57 -0
  218. package/src/unstable-core-do-not-import/http/index.ts +23 -0
  219. package/src/unstable-core-do-not-import/http/resolveHTTPResponse.ts +458 -0
  220. package/src/unstable-core-do-not-import/http/types.ts +111 -0
  221. package/src/unstable-core-do-not-import/index.ts +110 -0
  222. package/src/unstable-core-do-not-import/initTRPC.ts +206 -0
  223. package/src/unstable-core-do-not-import/middleware.ts +233 -0
  224. package/src/unstable-core-do-not-import/parser.ts +94 -0
  225. package/src/unstable-core-do-not-import/procedure.ts +108 -0
  226. package/src/unstable-core-do-not-import/procedureBuilder.ts +458 -0
  227. package/src/unstable-core-do-not-import/rootConfig.ts +90 -0
  228. package/src/unstable-core-do-not-import/router.ts +370 -0
  229. package/src/unstable-core-do-not-import/rpc/codes.ts +44 -0
  230. package/src/unstable-core-do-not-import/rpc/envelopes.ts +136 -0
  231. package/src/unstable-core-do-not-import/rpc/index.ts +21 -0
  232. package/src/unstable-core-do-not-import/rpc/parseTRPCMessage.ts +85 -0
  233. package/src/unstable-core-do-not-import/serialize.ts +122 -0
  234. package/src/unstable-core-do-not-import/transformer.ts +202 -0
  235. package/src/unstable-core-do-not-import/types.ts +151 -0
  236. package/src/unstable-core-do-not-import/utils.ts +59 -0
  237. package/unstable-core-do-not-import/index.d.ts +1 -0
  238. package/unstable-core-do-not-import/index.js +1 -0
  239. package/dist/@trpc-core-unstable-do-not-import-this-please.d.ts +0 -10
  240. package/dist/@trpc-core-unstable-do-not-import-this-please.d.ts.map +0 -1
  241. package/dist/@trpc-server/http.d.ts +0 -2
  242. package/dist/@trpc-server/http.d.ts.map +0 -1
  243. package/dist/observable.d.ts +0 -3
  244. package/dist/observable.d.ts.map +0 -1
  245. package/dist/observable.js +0 -30
  246. package/dist/observable.mjs +0 -1
  247. package/src/@trpc-core-unstable-do-not-import-this-please.ts +0 -146
  248. package/src/@trpc-server/http.ts +0 -2
  249. package/src/observable.ts +0 -16
@@ -0,0 +1,111 @@
1
+ import type { TRPCError } from '../error/TRPCError';
2
+ import type { ProcedureType } from '../procedure';
3
+ import type {
4
+ AnyRouter,
5
+ inferRouterContext,
6
+ inferRouterError,
7
+ } from '../router';
8
+ import type { TRPCResponse } from '../rpc';
9
+ import type { Dict } from '../types';
10
+
11
+ export type HTTPHeaders = Dict<string[] | string>;
12
+
13
+ export interface HTTPResponse {
14
+ status: number;
15
+ headers?: HTTPHeaders;
16
+ body?: string;
17
+ }
18
+
19
+ export type ResponseChunk = [procedureIndex: number, responseBody: string];
20
+
21
+ export interface ResponseMeta {
22
+ status?: number;
23
+ headers?: HTTPHeaders;
24
+ }
25
+
26
+ /**
27
+ * @internal
28
+ */
29
+ export type ResponseMetaFn<TRouter extends AnyRouter> = (opts: {
30
+ data: TRPCResponse<unknown, inferRouterError<TRouter>>[];
31
+ ctx?: inferRouterContext<TRouter>;
32
+ /**
33
+ * The different tRPC paths requested
34
+ **/
35
+ paths?: string[];
36
+ type: ProcedureType | 'unknown';
37
+ errors: TRPCError[];
38
+ /**
39
+ * `true` if the `ResponseMeta` are being
40
+ * generated without knowing the response data
41
+ * (e.g. for streaming requests).
42
+ */
43
+ eagerGeneration?: boolean;
44
+ }) => ResponseMeta;
45
+
46
+ export interface HTTPRequest {
47
+ method: string;
48
+ query: URLSearchParams;
49
+ headers: HTTPHeaders;
50
+ body: unknown;
51
+ }
52
+
53
+ /**
54
+ * Base interface for anything using HTTP
55
+ */
56
+ export interface HTTPBaseHandlerOptions<TRouter extends AnyRouter, TRequest>
57
+ extends BaseHandlerOptions<TRouter, TRequest> {
58
+ /**
59
+ * Add handler to be called before response is sent to the user
60
+ * Useful for setting cache headers
61
+ * @link https://trpc.io/docs/v11/caching
62
+ */
63
+ responseMeta?: ResponseMetaFn<TRouter>;
64
+ }
65
+
66
+ /** @internal */
67
+ export type ProcedureCall = {
68
+ type: ProcedureType;
69
+ input?: unknown;
70
+ path: string;
71
+ };
72
+
73
+ /**
74
+ * Information about the incoming request
75
+ * @internal
76
+ */
77
+ export type TRPCRequestInfo = {
78
+ isBatchCall: boolean;
79
+ calls: ProcedureCall[];
80
+ };
81
+
82
+ /**
83
+ * Inner createContext function for `resolveHTTPResponse` used to forward `TRPCRequestInfo` to `createContext`
84
+ * @internal
85
+ */
86
+ export type ResolveHTTPRequestOptionsContextFn<TRouter extends AnyRouter> =
87
+ (opts: { info: TRPCRequestInfo }) => Promise<inferRouterContext<TRouter>>;
88
+
89
+ /**
90
+ * @internal
91
+ */
92
+ export type OnErrorFunction<TRouter extends AnyRouter, TRequest> = (opts: {
93
+ error: TRPCError;
94
+ type: ProcedureType | 'unknown';
95
+ path: string | undefined;
96
+ req: TRequest;
97
+ input: unknown;
98
+ ctx: inferRouterContext<TRouter> | undefined;
99
+ }) => void;
100
+
101
+ /**
102
+ * Base interface for any response handler
103
+ * @internal
104
+ */
105
+ export interface BaseHandlerOptions<TRouter extends AnyRouter, TRequest> {
106
+ onError?: OnErrorFunction<TRouter, TRequest>;
107
+ batching?: {
108
+ enabled: boolean;
109
+ };
110
+ router: TRouter;
111
+ }
@@ -0,0 +1,110 @@
1
+ /**
2
+ * **DO NOT IMPORT FROM HERE FILE**
3
+ *
4
+ * This file is here to:
5
+ * - make TypeScript happy and prevent _"The inferred type of 'createContext' cannot be named without a reference to [...]"_.
6
+ * - the the glue between the official `@trpc/*`-packages
7
+ *
8
+ *
9
+ * If you seem to need to import anything from here, please open an issue at https://github.com/trpc/trpc/issues
10
+ */
11
+ export type { DefaultErrorShape, DefaultErrorData } from './error/formatter';
12
+ export { getErrorShape } from './error/getErrorShape';
13
+ export {
14
+ TRPCError,
15
+ getCauseFromUnknown,
16
+ getTRPCErrorFromUnknown,
17
+ } from './error/TRPCError';
18
+
19
+ export { initTRPC } from './initTRPC';
20
+ export type {
21
+ AnyMiddlewareFunction,
22
+ MiddlewareFunction,
23
+ MiddlewareBuilder,
24
+ } from './middleware';
25
+ export {
26
+ createInputMiddleware,
27
+ createOutputMiddleware,
28
+ experimental_standaloneMiddleware,
29
+ middlewareMarker,
30
+ } from './middleware';
31
+ export type { inferParser } from './parser';
32
+ export type {
33
+ Procedure,
34
+ ProcedureType,
35
+ AnyProcedure,
36
+ AnyQueryProcedure,
37
+ AnyMutationProcedure,
38
+ AnySubscriptionProcedure,
39
+ ProcedureArgs,
40
+ ProcedureOptions,
41
+ MutationProcedure,
42
+ inferHandlerInput,
43
+ inferProcedureInput,
44
+ inferProcedureOutput,
45
+ inferTransformedProcedureOutput,
46
+ inferTransformedSubscriptionOutput,
47
+ inferProcedureParams,
48
+ QueryProcedure,
49
+ SubscriptionProcedure,
50
+ } from './procedure';
51
+ export { procedureTypes } from './procedure';
52
+ export type { ProcedureBuilder } from './procedureBuilder';
53
+ export { unsetMarker, createBuilder } from './procedureBuilder';
54
+ export type { AnyRootConfig, RootConfig } from './rootConfig';
55
+ export type {
56
+ AnyRouter,
57
+ ProcedureRecord,
58
+ ProcedureRouterRecord,
59
+ CreateRouterInner,
60
+ Router,
61
+ RouterCaller,
62
+ AnyRouterDef,
63
+ inferRouterContext,
64
+ inferRouterError,
65
+ inferRouterInputs,
66
+ inferRouterMeta,
67
+ inferRouterOutputs,
68
+ createRouterFactory,
69
+ } from './router';
70
+
71
+ export type { TRPCInferrable, inferErrorShape } from './TRPCInferrable';
72
+ export { callProcedure, mergeRouters } from './router';
73
+ export type {
74
+ CombinedDataTransformer,
75
+ CombinedDataTransformerClient,
76
+ DataTransformer,
77
+ DataTransformerOptions,
78
+ DefaultDataTransformer,
79
+ } from './transformer';
80
+ export { transformResult, transformTRPCResponse } from './transformer';
81
+
82
+ export { createFlatProxy, createRecursiveProxy } from './createProxy';
83
+
84
+ // For `.d.ts` files https://github.com/trpc/trpc/issues/3943
85
+ export type { SerializeObject, Serialize } from './serialize';
86
+
87
+ export type {
88
+ DeepPartial,
89
+ Dict,
90
+ DistributiveOmit,
91
+ Filter,
92
+ FilterKeys,
93
+ Maybe,
94
+ MaybePromise,
95
+ Simplify,
96
+ Unwrap,
97
+ WithoutIndexSignature,
98
+ Overwrite,
99
+ PickFirstDefined,
100
+ ValidateShape,
101
+ IntersectionError,
102
+ ProtectedIntersection,
103
+ } from './types';
104
+ export { isObject } from './utils';
105
+
106
+ /**
107
+ * These should be re-exported from separate entrypoints in server package
108
+ */
109
+ export * from './rpc';
110
+ export * from './http';
@@ -0,0 +1,206 @@
1
+ import { createFlatProxy } from './createProxy';
2
+ import {
3
+ defaultFormatter,
4
+ type DefaultErrorShape,
5
+ type ErrorFormatter,
6
+ type ErrorFormatterShape,
7
+ } from './error/formatter';
8
+ import { createMiddlewareFactory } from './middleware';
9
+ import { createBuilder } from './procedureBuilder';
10
+ import {
11
+ isServerDefault,
12
+ type CreateRootConfigTypes,
13
+ type RootConfig,
14
+ type RootConfigTypes,
15
+ type RuntimeConfig,
16
+ } from './rootConfig';
17
+ import {
18
+ createCallerFactory,
19
+ createRouterFactory,
20
+ mergeRouters,
21
+ } from './router';
22
+ import {
23
+ defaultTransformer,
24
+ getDataTransformer,
25
+ type DataTransformerOptions,
26
+ type DefaultDataTransformer,
27
+ } from './transformer';
28
+ import type {
29
+ Overwrite,
30
+ PickFirstDefined,
31
+ Unwrap,
32
+ ValidateShape,
33
+ } from './types';
34
+
35
+ type PartialRootConfigTypes = Partial<RootConfigTypes>;
36
+
37
+ type CreateRootConfigTypesFromPartial<TTypes extends PartialRootConfigTypes> =
38
+ CreateRootConfigTypes<{
39
+ ctx: TTypes['ctx'] extends RootConfigTypes['ctx'] ? TTypes['ctx'] : object;
40
+ meta: TTypes['meta'] extends RootConfigTypes['meta']
41
+ ? TTypes['meta']
42
+ : object;
43
+ errorShape: TTypes['errorShape'];
44
+ transformer: DataTransformerOptions;
45
+ }>;
46
+
47
+ /**
48
+ * TODO: This can be improved:
49
+ * - We should be able to chain `.meta()`/`.context()` only once
50
+ * - Simplify typings
51
+ * - Doesn't need to be a class but it doesn't really hurt either
52
+ */
53
+
54
+ class TRPCBuilder<TParams extends PartialRootConfigTypes = object> {
55
+ /**
56
+ * Add a context shape as a generic to the root object
57
+ * @link https://trpc.io/docs/v11/server/context
58
+ */
59
+ context<
60
+ TNewContext extends
61
+ | RootConfigTypes['ctx']
62
+ | ((...args: unknown[]) => RootConfigTypes['ctx']),
63
+ >() {
64
+ type NextParams = Overwrite<TParams, { ctx: Unwrap<TNewContext> }>;
65
+
66
+ return new TRPCBuilder<NextParams>();
67
+ }
68
+
69
+ /**
70
+ * Add a meta shape as a generic to the root object
71
+ * @link https://trpc.io/docs/v11/quickstart
72
+ */
73
+ meta<TNewMeta extends RootConfigTypes['meta']>() {
74
+ type NextParams = Overwrite<TParams, { meta: TNewMeta }>;
75
+
76
+ return new TRPCBuilder<NextParams>();
77
+ }
78
+
79
+ /**
80
+ * Create the root object
81
+ * @link https://trpc.io/docs/v11/server/routers#initialize-trpc
82
+ */
83
+ create<
84
+ TOptions extends Partial<
85
+ RuntimeConfig<CreateRootConfigTypesFromPartial<TParams>>
86
+ >,
87
+ >(
88
+ options?:
89
+ | ValidateShape<
90
+ TOptions,
91
+ Partial<RuntimeConfig<CreateRootConfigTypesFromPartial<TParams>>>
92
+ >
93
+ | undefined,
94
+ ) {
95
+ return createTRPCInner<TParams>()<TOptions>(options);
96
+ }
97
+ }
98
+
99
+ /**
100
+ * Builder to initialize the tRPC root object - use this exactly once per backend
101
+ * @link https://trpc.io/docs/v11/quickstart
102
+ */
103
+ export const initTRPC = new TRPCBuilder();
104
+
105
+ function createTRPCInner<TParams extends PartialRootConfigTypes>() {
106
+ type $Generics = CreateRootConfigTypesFromPartial<TParams>;
107
+
108
+ type $Context = $Generics['ctx'];
109
+ type $Meta = $Generics['meta'];
110
+ type $Runtime = Partial<RuntimeConfig<$Generics>>;
111
+
112
+ return function initTRPCInner<TOptions extends $Runtime>(
113
+ runtime?: ValidateShape<TOptions, $Runtime>,
114
+ ) {
115
+ type $Formatter = PickFirstDefined<
116
+ TOptions['errorFormatter'],
117
+ ErrorFormatter<$Context, DefaultErrorShape>
118
+ >;
119
+ type $Transformer = TOptions['transformer'] extends DataTransformerOptions
120
+ ? TOptions['transformer']
121
+ : DefaultDataTransformer;
122
+ type $ErrorShape = ErrorFormatterShape<$Formatter>;
123
+
124
+ type $Config = RootConfig<{
125
+ ctx: $Context;
126
+ meta: $Meta;
127
+ errorShape: $ErrorShape;
128
+ transformer: $Transformer;
129
+ }>;
130
+
131
+ const errorFormatter = runtime?.errorFormatter ?? defaultFormatter;
132
+ const transformer = getDataTransformer(
133
+ runtime?.transformer ?? defaultTransformer,
134
+ ) as $Transformer;
135
+
136
+ const config: $Config = {
137
+ transformer,
138
+ isDev:
139
+ runtime?.isDev ??
140
+ // eslint-disable-next-line @typescript-eslint/dot-notation
141
+ globalThis.process?.env?.['NODE_ENV'] !== 'production',
142
+ allowOutsideOfServer: runtime?.allowOutsideOfServer ?? false,
143
+ errorFormatter,
144
+ isServer: runtime?.isServer ?? isServerDefault,
145
+ /**
146
+ * @internal
147
+ */
148
+ $types: createFlatProxy((key) => {
149
+ throw new Error(
150
+ `Tried to access "$types.${key}" which is not available at runtime`,
151
+ );
152
+ }),
153
+ };
154
+
155
+ {
156
+ // Server check
157
+ const isServer: boolean = runtime?.isServer ?? isServerDefault;
158
+
159
+ if (!isServer && runtime?.allowOutsideOfServer !== true) {
160
+ throw new Error(
161
+ `You're trying to use @trpc/server in a non-server environment. This is not supported by default.`,
162
+ );
163
+ }
164
+ }
165
+ return {
166
+ /**
167
+ * These are just types, they can't be used
168
+ * @internal
169
+ */
170
+ _config: config,
171
+ /**
172
+ * Builder object for creating procedures
173
+ * @link https://trpc.io/docs/v11/server/procedures
174
+ */
175
+ procedure: createBuilder<
176
+ $Config['$types']['ctx'],
177
+ $Config['$types']['meta']
178
+ >({
179
+ meta: runtime?.defaultMeta,
180
+ }),
181
+ /**
182
+ * Create reusable middlewares
183
+ * @link https://trpc.io/docs/v11/server/middlewares
184
+ */
185
+ middleware: createMiddlewareFactory<
186
+ $Config['$types']['ctx'],
187
+ $Config['$types']['meta']
188
+ >(),
189
+ /**
190
+ * Create a router
191
+ * @link https://trpc.io/docs/v11/server/routers
192
+ */
193
+ router: createRouterFactory<$Config>(config),
194
+ /**
195
+ * Merge Routers
196
+ * @link https://trpc.io/docs/v11/server/merging-routers
197
+ */
198
+ mergeRouters,
199
+ /**
200
+ * Create a server-side caller for a router
201
+ * @link https://trpc.io/docs/v11/server/server-side-calls
202
+ */
203
+ createCallerFactory: createCallerFactory<$Config>(),
204
+ };
205
+ };
206
+ }
@@ -0,0 +1,233 @@
1
+ import { TRPCError } from './error/TRPCError';
2
+ import type { ParseFn } from './parser';
3
+ import type { ProcedureType } from './procedure';
4
+ import type { GetRawInputFn, Overwrite, Simplify } from './types';
5
+ import { isObject } from './utils';
6
+
7
+ /** @internal */
8
+ export const middlewareMarker = 'middlewareMarker' as 'middlewareMarker' & {
9
+ __brand: 'middlewareMarker';
10
+ };
11
+ type MiddlewareMarker = typeof middlewareMarker;
12
+
13
+ interface MiddlewareResultBase {
14
+ /**
15
+ * All middlewares should pass through their `next()`'s output.
16
+ * Requiring this marker makes sure that can't be forgotten at compile-time.
17
+ */
18
+ readonly marker: MiddlewareMarker;
19
+ }
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
+ interface MiddlewareErrorResult<_TContextOverride>
28
+ extends MiddlewareResultBase {
29
+ ok: false;
30
+ error: TRPCError;
31
+ }
32
+
33
+ /**
34
+ * @internal
35
+ */
36
+ export type MiddlewareResult<_TContextOverride> =
37
+ | MiddlewareErrorResult<_TContextOverride>
38
+ | MiddlewareOKResult<_TContextOverride>;
39
+
40
+ /**
41
+ * @internal
42
+ */
43
+ export interface MiddlewareBuilder<
44
+ TContext,
45
+ TMeta,
46
+ TContextOverrides,
47
+ TInputIn,
48
+ > {
49
+ /**
50
+ * Create a new builder based on the current middleware builder
51
+ */
52
+ unstable_pipe<$ContextOverridesOut>(
53
+ fn:
54
+ | MiddlewareFunction<
55
+ TContext,
56
+ TMeta,
57
+ TContextOverrides,
58
+ $ContextOverridesOut,
59
+ TInputIn
60
+ >
61
+ | MiddlewareBuilder<
62
+ Overwrite<TContext, TContextOverrides>,
63
+ TMeta,
64
+ $ContextOverridesOut,
65
+ TInputIn
66
+ >,
67
+ ): MiddlewareBuilder<
68
+ TContext,
69
+ TMeta,
70
+ Overwrite<TContextOverrides, $ContextOverridesOut>,
71
+ TInputIn
72
+ >;
73
+
74
+ /**
75
+ * List of middlewares within this middleware builder
76
+ */
77
+ _middlewares: MiddlewareFunction<
78
+ TContext,
79
+ TMeta,
80
+ TContextOverrides,
81
+ object,
82
+ TInputIn
83
+ >[];
84
+ }
85
+
86
+ /**
87
+ * @internal
88
+ */
89
+ export type MiddlewareFunction<
90
+ TContext,
91
+ TMeta,
92
+ TContextOverridesIn,
93
+ $ContextOverridesOut,
94
+ TInputIn,
95
+ > = {
96
+ (opts: {
97
+ ctx: Simplify<Overwrite<TContext, TContextOverridesIn>>;
98
+ type: ProcedureType;
99
+ path: string;
100
+ input: TInputIn;
101
+ getRawInput: GetRawInputFn;
102
+ meta: TMeta | undefined;
103
+ next: {
104
+ (): Promise<MiddlewareResult<TContextOverridesIn>>;
105
+ <$ContextOverride>(opts: {
106
+ ctx?: $ContextOverride;
107
+ input?: unknown;
108
+ }): Promise<MiddlewareResult<$ContextOverride>>;
109
+ (opts: { getRawInput: GetRawInputFn }): Promise<
110
+ MiddlewareResult<TContextOverridesIn>
111
+ >;
112
+ };
113
+ }): Promise<MiddlewareResult<$ContextOverridesOut>>;
114
+ _type?: string | undefined;
115
+ };
116
+
117
+ export type AnyMiddlewareFunction = MiddlewareFunction<any, any, any, any, any>;
118
+ export type AnyMiddlewareBuilder = MiddlewareBuilder<any, any, any, any>;
119
+ /**
120
+ * @internal
121
+ */
122
+ export function createMiddlewareFactory<TContext, TMeta, TInputIn = unknown>() {
123
+ function createMiddlewareInner(
124
+ middlewares: AnyMiddlewareFunction[],
125
+ ): AnyMiddlewareBuilder {
126
+ return {
127
+ _middlewares: middlewares,
128
+ unstable_pipe(middlewareBuilderOrFn) {
129
+ const pipedMiddleware =
130
+ '_middlewares' in middlewareBuilderOrFn
131
+ ? middlewareBuilderOrFn._middlewares
132
+ : [middlewareBuilderOrFn];
133
+
134
+ return createMiddlewareInner([...middlewares, ...pipedMiddleware]);
135
+ },
136
+ };
137
+ }
138
+
139
+ function createMiddleware<$ContextOverrides>(
140
+ fn: MiddlewareFunction<
141
+ TContext,
142
+ TMeta,
143
+ object,
144
+ $ContextOverrides,
145
+ TInputIn
146
+ >,
147
+ ): MiddlewareBuilder<TContext, TMeta, $ContextOverrides, TInputIn> {
148
+ return createMiddlewareInner([fn]);
149
+ }
150
+
151
+ return createMiddleware;
152
+ }
153
+
154
+ /**
155
+ * Create a standalone middleware
156
+ * @link https://trpc.io/docs/v11/server/middlewares#experimental-standalone-middlewares
157
+ */
158
+ export const experimental_standaloneMiddleware = <
159
+ TCtx extends {
160
+ ctx?: object;
161
+ meta?: object;
162
+ input?: unknown;
163
+ },
164
+ >() => ({
165
+ create: createMiddlewareFactory<
166
+ TCtx extends { ctx: infer T extends object } ? T : any,
167
+ TCtx extends { meta: infer T extends object } ? T : object,
168
+ TCtx extends { input: infer T } ? T : unknown
169
+ >(),
170
+ });
171
+
172
+ /**
173
+ * @internal
174
+ * Please note, `trpc-openapi` uses this function.
175
+ */
176
+ export function createInputMiddleware<TInput>(parse: ParseFn<TInput>) {
177
+ const inputMiddleware: AnyMiddlewareFunction =
178
+ async function inputValidatorMiddleware(opts) {
179
+ let parsedInput: ReturnType<typeof parse>;
180
+
181
+ const rawInput = await opts.getRawInput();
182
+ try {
183
+ parsedInput = await parse(rawInput);
184
+ } catch (cause) {
185
+ throw new TRPCError({
186
+ code: 'BAD_REQUEST',
187
+ cause,
188
+ });
189
+ }
190
+
191
+ // Multiple input parsers
192
+ const combinedInput =
193
+ isObject(opts.input) && isObject(parsedInput)
194
+ ? {
195
+ ...opts.input,
196
+ ...parsedInput,
197
+ }
198
+ : parsedInput;
199
+
200
+ return opts.next({ input: combinedInput });
201
+ };
202
+ inputMiddleware._type = 'input';
203
+ return inputMiddleware;
204
+ }
205
+
206
+ /**
207
+ * @internal
208
+ */
209
+ export function createOutputMiddleware<TOutput>(parse: ParseFn<TOutput>) {
210
+ const outputMiddleware: AnyMiddlewareFunction =
211
+ async function outputValidatorMiddleware({ next }) {
212
+ const result = await next();
213
+ if (!result.ok) {
214
+ // pass through failures without validating
215
+ return result;
216
+ }
217
+ try {
218
+ const data = await parse(result.data);
219
+ return {
220
+ ...result,
221
+ data,
222
+ };
223
+ } catch (cause) {
224
+ throw new TRPCError({
225
+ message: 'Output validation failed',
226
+ code: 'INTERNAL_SERVER_ERROR',
227
+ cause,
228
+ });
229
+ }
230
+ };
231
+ outputMiddleware._type = 'output';
232
+ return outputMiddleware;
233
+ }