@trpc/server 10.0.0-alpha.3 → 10.0.0-alpha.30

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 (326) hide show
  1. package/adapters/aws-lambda/dist/trpc-server-adapters-aws-lambda.cjs.d.ts +1 -0
  2. package/adapters/aws-lambda/dist/trpc-server-adapters-aws-lambda.cjs.dev.js +170 -0
  3. package/adapters/aws-lambda/dist/trpc-server-adapters-aws-lambda.cjs.js +7 -0
  4. package/adapters/aws-lambda/dist/trpc-server-adapters-aws-lambda.cjs.prod.js +170 -0
  5. package/adapters/aws-lambda/dist/trpc-server-adapters-aws-lambda.esm.js +166 -0
  6. package/adapters/aws-lambda/index.d.ts +1 -0
  7. package/adapters/aws-lambda/index.js +1 -0
  8. package/adapters/express/dist/trpc-server-adapters-express.cjs.dev.js +7 -6
  9. package/adapters/express/dist/trpc-server-adapters-express.cjs.prod.js +7 -6
  10. package/adapters/express/dist/trpc-server-adapters-express.esm.js +7 -6
  11. package/adapters/fastify/dist/trpc-server-adapters-fastify.cjs.d.ts +1 -0
  12. package/adapters/fastify/dist/trpc-server-adapters-fastify.cjs.dev.js +109 -0
  13. package/adapters/fastify/dist/trpc-server-adapters-fastify.cjs.js +7 -0
  14. package/adapters/fastify/dist/trpc-server-adapters-fastify.cjs.prod.js +109 -0
  15. package/adapters/fastify/dist/trpc-server-adapters-fastify.esm.js +104 -0
  16. package/adapters/fastify/index.d.ts +1 -0
  17. package/adapters/fastify/index.js +1 -0
  18. package/adapters/fetch/index.d.ts +1 -0
  19. package/adapters/fetch/index.js +1 -0
  20. package/adapters/lambda/dist/trpc-server-adapters-lambda.cjs.d.ts +1 -0
  21. package/adapters/lambda/dist/trpc-server-adapters-lambda.cjs.dev.js +25 -0
  22. package/adapters/lambda/dist/trpc-server-adapters-lambda.cjs.js +7 -0
  23. package/adapters/lambda/dist/trpc-server-adapters-lambda.cjs.prod.js +25 -0
  24. package/adapters/lambda/dist/trpc-server-adapters-lambda.esm.js +21 -0
  25. package/adapters/next/dist/trpc-server-adapters-next.cjs.dev.js +4 -3
  26. package/adapters/next/dist/trpc-server-adapters-next.cjs.prod.js +4 -3
  27. package/adapters/next/dist/trpc-server-adapters-next.esm.js +4 -3
  28. package/adapters/node-http/dist/trpc-server-adapters-node-http.cjs.dev.js +4 -3
  29. package/adapters/node-http/dist/trpc-server-adapters-node-http.cjs.prod.js +4 -3
  30. package/adapters/node-http/dist/trpc-server-adapters-node-http.esm.js +4 -3
  31. package/adapters/standalone/dist/trpc-server-adapters-standalone.cjs.dev.js +5 -4
  32. package/adapters/standalone/dist/trpc-server-adapters-standalone.cjs.prod.js +5 -4
  33. package/adapters/standalone/dist/trpc-server-adapters-standalone.esm.js +5 -4
  34. package/adapters/ws/dist/trpc-server-adapters-ws.cjs.dev.js +6 -5
  35. package/adapters/ws/dist/trpc-server-adapters-ws.cjs.prod.js +6 -5
  36. package/adapters/ws/dist/trpc-server-adapters-ws.esm.js +6 -5
  37. package/dist/TRPCError-9050a68d.js +69 -0
  38. package/dist/TRPCError-b7fa0c31.mjs +65 -0
  39. package/dist/adapters/aws-lambda/index.d.ts +14 -0
  40. package/dist/adapters/aws-lambda/index.d.ts.map +1 -0
  41. package/dist/adapters/aws-lambda/utils.d.ts +34 -0
  42. package/dist/adapters/aws-lambda/utils.d.ts.map +1 -0
  43. package/dist/adapters/express.d.ts +1 -1
  44. package/dist/adapters/express.d.ts.map +1 -1
  45. package/dist/adapters/express.js +8 -7
  46. package/dist/adapters/express.mjs +8 -7
  47. package/dist/adapters/fastify/fastifyRequestHandler.d.ts +13 -0
  48. package/dist/adapters/fastify/fastifyRequestHandler.d.ts.map +1 -0
  49. package/dist/adapters/fastify/fastifyTRPCPlugin.d.ts +12 -0
  50. package/dist/adapters/fastify/fastifyTRPCPlugin.d.ts.map +1 -0
  51. package/dist/adapters/fastify/index.d.ts +3 -0
  52. package/dist/adapters/fastify/index.d.ts.map +1 -0
  53. package/dist/adapters/fastify/index.js +108 -0
  54. package/dist/adapters/fastify/index.mjs +103 -0
  55. package/dist/{ws → adapters/fastify}/index.ts.js +0 -0
  56. package/dist/adapters/fetch/fetchRequestHandler.d.ts +8 -0
  57. package/dist/adapters/fetch/fetchRequestHandler.d.ts.map +1 -0
  58. package/dist/adapters/fetch/index.d.ts +3 -0
  59. package/dist/adapters/fetch/index.d.ts.map +1 -0
  60. package/dist/adapters/fetch/index.js +69 -0
  61. package/dist/adapters/fetch/index.mjs +65 -0
  62. package/dist/adapters/fetch/index.ts.js +1 -0
  63. package/dist/adapters/fetch/types.d.ts +21 -0
  64. package/dist/adapters/fetch/types.d.ts.map +1 -0
  65. package/dist/adapters/lambda/index.d.ts +12 -0
  66. package/dist/adapters/lambda/index.d.ts.map +1 -0
  67. package/dist/adapters/next.d.ts +2 -2
  68. package/dist/adapters/next.d.ts.map +1 -1
  69. package/dist/adapters/next.js +9 -9
  70. package/dist/adapters/next.mjs +8 -8
  71. package/dist/adapters/node-http/index.js +5 -4
  72. package/dist/adapters/node-http/index.mjs +5 -4
  73. package/dist/adapters/node-http/internals/getPostBody.d.ts +1 -1
  74. package/dist/adapters/node-http/internals/getPostBody.d.ts.map +1 -1
  75. package/dist/adapters/node-http/nodeHTTPRequestHandler.d.ts +2 -2
  76. package/dist/adapters/node-http/nodeHTTPRequestHandler.d.ts.map +1 -1
  77. package/dist/adapters/node-http/types.d.ts +11 -9
  78. package/dist/adapters/node-http/types.d.ts.map +1 -1
  79. package/dist/adapters/standalone.d.ts +2 -2
  80. package/dist/adapters/standalone.d.ts.map +1 -1
  81. package/dist/adapters/standalone.js +11 -7
  82. package/dist/adapters/standalone.mjs +11 -6
  83. package/dist/adapters/ws.d.ts +8 -6
  84. package/dist/adapters/ws.d.ts.map +1 -1
  85. package/dist/adapters/ws.js +123 -90
  86. package/dist/adapters/ws.mjs +118 -85
  87. package/dist/assertNotBrowser.d.ts.map +1 -1
  88. package/dist/core/index.d.ts +5 -0
  89. package/dist/core/index.d.ts.map +1 -0
  90. package/dist/core/initTRPC.d.ts +64 -0
  91. package/dist/core/initTRPC.d.ts.map +1 -0
  92. package/dist/core/internals/__generated__/mergeRoutersGeneric.d.ts +222 -0
  93. package/dist/core/internals/__generated__/mergeRoutersGeneric.d.ts.map +1 -0
  94. package/dist/core/internals/config.d.ts +36 -0
  95. package/dist/core/internals/config.d.ts.map +1 -0
  96. package/dist/core/internals/getParseFn.d.ts +9 -0
  97. package/dist/core/internals/getParseFn.d.ts.map +1 -0
  98. package/dist/core/internals/internalProcedure.d.ts +78 -0
  99. package/dist/core/internals/internalProcedure.d.ts.map +1 -0
  100. package/dist/core/internals/mergeRouters.d.ts +3 -0
  101. package/dist/core/internals/mergeRouters.d.ts.map +1 -0
  102. package/dist/core/internals/mergeWithoutOverrides.d.ts +5 -0
  103. package/dist/core/internals/mergeWithoutOverrides.d.ts.map +1 -0
  104. package/dist/core/internals/omitPrototype.d.ts +6 -0
  105. package/dist/core/internals/omitPrototype.d.ts.map +1 -0
  106. package/dist/core/internals/prefixObjectKeys.d.ts +2 -0
  107. package/dist/core/internals/prefixObjectKeys.d.ts.map +1 -0
  108. package/dist/core/internals/procedureBuilder.d.ts +99 -0
  109. package/dist/core/internals/procedureBuilder.d.ts.map +1 -0
  110. package/dist/core/internals/utils.d.ts +44 -0
  111. package/dist/core/internals/utils.d.ts.map +1 -0
  112. package/dist/core/middleware.d.ts +79 -0
  113. package/dist/core/middleware.d.ts.map +1 -0
  114. package/dist/core/parser.d.ts +25 -0
  115. package/dist/core/parser.d.ts.map +1 -0
  116. package/dist/core/procedure.d.ts +69 -0
  117. package/dist/core/procedure.d.ts.map +1 -0
  118. package/dist/core/router.d.ts +104 -0
  119. package/dist/core/router.d.ts.map +1 -0
  120. package/dist/core/types.d.ts +17 -0
  121. package/dist/core/types.d.ts.map +1 -0
  122. package/dist/{internals → deprecated/internals}/callProcedure.d.ts +5 -2
  123. package/dist/deprecated/internals/callProcedure.d.ts.map +1 -0
  124. package/dist/{internals → deprecated/internals}/middlewares.d.ts +21 -3
  125. package/dist/deprecated/internals/middlewares.d.ts.map +1 -0
  126. package/dist/deprecated/internals/procedure.d.ts +96 -0
  127. package/dist/deprecated/internals/procedure.d.ts.map +1 -0
  128. package/dist/deprecated/interop.d.ts +18 -0
  129. package/dist/deprecated/interop.d.ts.map +1 -0
  130. package/dist/deprecated/router.d.ts +194 -0
  131. package/dist/deprecated/router.d.ts.map +1 -0
  132. package/dist/{codes-7a3d4f65.mjs → envelopes-af8c2959.mjs} +30 -1
  133. package/dist/{codes-7f46544e.js → envelopes-b6dd0367.js} +29 -1
  134. package/dist/error/TRPCError.d.ts +11 -0
  135. package/dist/error/TRPCError.d.ts.map +1 -0
  136. package/dist/error/formatter.d.ts +33 -0
  137. package/dist/error/formatter.d.ts.map +1 -0
  138. package/dist/{internals/errors.d.ts → error/utils.d.ts} +3 -2
  139. package/dist/error/utils.d.ts.map +1 -0
  140. package/dist/http/index.d.ts +1 -1
  141. package/dist/http/index.d.ts.map +1 -1
  142. package/dist/http/internals/getHTTPStatusCode.d.ts +2 -1
  143. package/dist/http/internals/getHTTPStatusCode.d.ts.map +1 -1
  144. package/dist/http/internals/types.d.ts +11 -8
  145. package/dist/http/internals/types.d.ts.map +1 -1
  146. package/dist/http/resolveHTTPResponse.d.ts +4 -4
  147. package/dist/http/resolveHTTPResponse.d.ts.map +1 -1
  148. package/dist/http/{ResponseMeta.d.ts → types.d.ts} +1 -1
  149. package/dist/http/types.d.ts.map +1 -0
  150. package/dist/index.d.ts +3 -5
  151. package/dist/index.d.ts.map +1 -1
  152. package/dist/index.js +797 -105
  153. package/dist/index.mjs +786 -90
  154. package/dist/internals/transformTRPCResponse.d.ts +5 -3
  155. package/dist/internals/transformTRPCResponse.d.ts.map +1 -1
  156. package/dist/internals/types.d.ts +23 -0
  157. package/dist/internals/types.d.ts.map +1 -0
  158. package/dist/nodeHTTPRequestHandler-174459c5.mjs +105 -0
  159. package/dist/nodeHTTPRequestHandler-6b7c8622.js +107 -0
  160. package/dist/observable/index.d.ts +5 -0
  161. package/dist/observable/index.d.ts.map +1 -0
  162. package/dist/observable/index.js +204 -0
  163. package/dist/observable/index.mjs +195 -0
  164. package/dist/observable/index.ts.js +1 -0
  165. package/dist/observable/internals/identity.d.ts +2 -0
  166. package/dist/observable/internals/identity.d.ts.map +1 -0
  167. package/dist/observable/internals/observableToPromise.d.ts +10 -0
  168. package/dist/observable/internals/observableToPromise.d.ts.map +1 -0
  169. package/dist/observable/internals/pipe.d.ts +4 -0
  170. package/dist/observable/internals/pipe.d.ts.map +1 -0
  171. package/dist/observable/observable.d.ts +5 -0
  172. package/dist/observable/observable.d.ts.map +1 -0
  173. package/dist/observable/operators/index.d.ts +4 -0
  174. package/dist/observable/operators/index.d.ts.map +1 -0
  175. package/dist/observable/operators/map.d.ts +3 -0
  176. package/dist/observable/operators/map.d.ts.map +1 -0
  177. package/dist/observable/operators/share.d.ts +6 -0
  178. package/dist/observable/operators/share.d.ts.map +1 -0
  179. package/dist/observable/operators/tap.d.ts +3 -0
  180. package/dist/observable/operators/tap.d.ts.map +1 -0
  181. package/dist/observable/types.d.ts +29 -0
  182. package/dist/observable/types.d.ts.map +1 -0
  183. package/dist/observable-137ea1bd.mjs +105 -0
  184. package/dist/observable-3aa4d911.js +108 -0
  185. package/dist/{nodeHTTPRequestHandler-10e6d2f9.mjs → resolveHTTPResponse-8657b8de.mjs} +32 -133
  186. package/dist/{nodeHTTPRequestHandler-d7c307d3.js → resolveHTTPResponse-fcc8f644.js} +37 -139
  187. package/dist/rpc/codes.d.ts +2 -0
  188. package/dist/rpc/codes.d.ts.map +1 -1
  189. package/dist/rpc/envelopes.d.ts +62 -40
  190. package/dist/rpc/envelopes.d.ts.map +1 -1
  191. package/dist/rpc/index.js +7 -3
  192. package/dist/rpc/index.mjs +1 -1
  193. package/dist/rpc/internals/invert.d.ts +18 -0
  194. package/dist/rpc/internals/invert.d.ts.map +1 -0
  195. package/dist/subscription.d.ts +3 -52
  196. package/dist/subscription.d.ts.map +1 -1
  197. package/dist/subscription.js +44 -0
  198. package/dist/subscription.mjs +40 -0
  199. package/dist/subscription.ts.js +1 -0
  200. package/dist/transformTRPCResponse-0c261655.js +29 -0
  201. package/dist/transformTRPCResponse-747b9a68.mjs +27 -0
  202. package/dist/transformer.d.ts +14 -0
  203. package/dist/transformer.d.ts.map +1 -1
  204. package/dist/types.d.ts +23 -8
  205. package/dist/types.d.ts.map +1 -1
  206. package/observable/index.d.ts +1 -0
  207. package/observable/index.js +1 -0
  208. package/package.json +50 -16
  209. package/rpc/dist/trpc-server-rpc.cjs.dev.js +1 -1
  210. package/rpc/dist/trpc-server-rpc.cjs.prod.js +1 -1
  211. package/rpc/dist/trpc-server-rpc.esm.js +1 -1
  212. package/src/adapters/aws-lambda/index.ts +156 -0
  213. package/src/adapters/aws-lambda/utils.ts +91 -0
  214. package/src/adapters/express.ts +4 -4
  215. package/src/adapters/fastify/fastifyRequestHandler.ts +77 -0
  216. package/src/adapters/fastify/fastifyTRPCPlugin.ts +56 -0
  217. package/src/adapters/fastify/index.ts +2 -0
  218. package/src/adapters/fetch/fetchRequestHandler.ts +61 -0
  219. package/src/adapters/fetch/index.ts +2 -0
  220. package/src/adapters/fetch/types.ts +28 -0
  221. package/src/adapters/lambda/index.ts +18 -0
  222. package/src/adapters/next.ts +10 -8
  223. package/src/adapters/node-http/internals/getPostBody.test.ts +2 -1
  224. package/src/adapters/node-http/internals/getPostBody.ts +1 -1
  225. package/src/adapters/node-http/nodeHTTPRequestHandler.ts +7 -7
  226. package/src/adapters/node-http/types.ts +11 -9
  227. package/src/adapters/standalone.ts +12 -4
  228. package/src/adapters/ws.ts +135 -91
  229. package/src/assertNotBrowser.ts +1 -0
  230. package/src/core/index.ts +5 -0
  231. package/src/core/initTRPC.ts +95 -0
  232. package/src/core/internals/__generated__/mergeRoutersGeneric.ts +326 -0
  233. package/src/core/internals/config.ts +42 -0
  234. package/src/core/internals/getParseFn.ts +47 -0
  235. package/src/core/internals/internalProcedure.ts +296 -0
  236. package/src/core/internals/mergeRouters.ts +45 -0
  237. package/src/core/internals/mergeWithoutOverrides.ts +19 -0
  238. package/src/core/internals/omitPrototype.ts +9 -0
  239. package/src/core/internals/prefixObjectKeys.ts +9 -0
  240. package/src/core/internals/procedureBuilder.ts +180 -0
  241. package/src/core/internals/utils.ts +64 -0
  242. package/src/core/middleware.ts +94 -0
  243. package/src/core/parser.ts +45 -0
  244. package/src/core/procedure.ts +95 -0
  245. package/src/core/router.ts +336 -0
  246. package/src/core/types.ts +53 -0
  247. package/src/{internals → deprecated/internals}/callProcedure.ts +9 -3
  248. package/src/{internals → deprecated/internals}/middlewares.ts +23 -3
  249. package/src/deprecated/internals/procedure.ts +415 -0
  250. package/src/deprecated/interop.ts +196 -0
  251. package/src/{router.ts → deprecated/router.ts} +216 -100
  252. package/src/{TRPCError.ts → error/TRPCError.ts} +6 -14
  253. package/src/error/formatter.ts +51 -0
  254. package/src/{internals/errors.ts → error/utils.ts} +21 -5
  255. package/src/http/index.ts +1 -1
  256. package/src/http/internals/getHTTPStatusCode.ts +3 -2
  257. package/src/http/internals/types.ts +11 -14
  258. package/src/http/resolveHTTPResponse.ts +28 -37
  259. package/src/http/{ResponseMeta.ts → types.ts} +0 -0
  260. package/src/index.ts +3 -7
  261. package/src/internals/transformTRPCResponse.ts +21 -16
  262. package/src/internals/types.ts +24 -0
  263. package/src/observable/index.ts +4 -0
  264. package/src/observable/internals/identity.ts +3 -0
  265. package/src/observable/internals/observableToPromise.ts +49 -0
  266. package/src/observable/internals/pipe.ts +22 -0
  267. package/src/observable/observable.test.ts +101 -0
  268. package/src/observable/observable.ts +78 -0
  269. package/src/observable/operators/index.ts +3 -0
  270. package/src/observable/operators/map.test.ts +92 -0
  271. package/src/observable/operators/map.ts +25 -0
  272. package/src/observable/operators/share.test.ts +60 -0
  273. package/src/observable/operators/share.ts +67 -0
  274. package/src/observable/operators/tap.ts +26 -0
  275. package/src/observable/types.ts +69 -0
  276. package/src/rpc/codes.ts +2 -1
  277. package/src/rpc/envelopes.ts +88 -69
  278. package/src/rpc/internals/invert.ts +27 -0
  279. package/src/subscription.ts +7 -125
  280. package/src/transformer.ts +28 -0
  281. package/src/types.ts +26 -9
  282. package/dist/TRPCError.d.ts +0 -19
  283. package/dist/TRPCError.d.ts.map +0 -1
  284. package/dist/deprecated/LegacyRouter.d.ts +0 -3
  285. package/dist/deprecated/LegacyRouter.d.ts.map +0 -1
  286. package/dist/deprecated/createHttpServer.d.ts +0 -19
  287. package/dist/deprecated/createHttpServer.d.ts.map +0 -1
  288. package/dist/deprecated/requestHandler.d.ts +0 -15
  289. package/dist/deprecated/requestHandler.d.ts.map +0 -1
  290. package/dist/http/ResponseMeta.d.ts.map +0 -1
  291. package/dist/internals/BaseHandlerOptions.d.ts +0 -13
  292. package/dist/internals/BaseHandlerOptions.d.ts.map +0 -1
  293. package/dist/internals/OnErrorFunction.d.ts +0 -11
  294. package/dist/internals/OnErrorFunction.d.ts.map +0 -1
  295. package/dist/internals/callProcedure.d.ts.map +0 -1
  296. package/dist/internals/errors.d.ts.map +0 -1
  297. package/dist/internals/middlewares.d.ts.map +0 -1
  298. package/dist/internals/procedure.d.ts +0 -74
  299. package/dist/internals/procedure.d.ts.map +0 -1
  300. package/dist/internals/wrapCallSafe.d.ts +0 -16
  301. package/dist/internals/wrapCallSafe.d.ts.map +0 -1
  302. package/dist/router.d.ts +0 -176
  303. package/dist/router.d.ts.map +0 -1
  304. package/dist/subscription-5b7e1eba.js +0 -136
  305. package/dist/subscription-e1d42e69.mjs +0 -133
  306. package/dist/transformTRPCResponse-76e0c91e.mjs +0 -109
  307. package/dist/transformTRPCResponse-bd24f548.js +0 -114
  308. package/dist/ws/index.d.ts +0 -7
  309. package/dist/ws/index.d.ts.map +0 -1
  310. package/dist/ws/index.js +0 -15
  311. package/dist/ws/index.mjs +0 -11
  312. package/src/deprecated/LegacyRouter.ts +0 -3
  313. package/src/deprecated/createHttpServer.ts +0 -29
  314. package/src/deprecated/requestHandler.ts +0 -26
  315. package/src/internals/BaseHandlerOptions.ts +0 -13
  316. package/src/internals/OnErrorFunction.ts +0 -11
  317. package/src/internals/procedure.ts +0 -283
  318. package/src/internals/wrapCallSafe.ts +0 -19
  319. package/src/ws/index.ts +0 -8
  320. package/ws/dist/trpc-server-ws.cjs.d.ts +0 -1
  321. package/ws/dist/trpc-server-ws.cjs.dev.js +0 -15
  322. package/ws/dist/trpc-server-ws.cjs.js +0 -7
  323. package/ws/dist/trpc-server-ws.cjs.prod.js +0 -15
  324. package/ws/dist/trpc-server-ws.esm.js +0 -11
  325. package/ws/index.d.ts +0 -1
  326. package/ws/index.js +0 -1
package/dist/index.mjs CHANGED
@@ -1,88 +1,116 @@
1
- import { a as assertNotBrowser, n as nodeHTTPRequestHandler, g as getHTTPStatusCodeFromError } from './nodeHTTPRequestHandler-10e6d2f9.mjs';
2
- export { a as assertNotBrowser, r as resolveHTTPResponse } from './nodeHTTPRequestHandler-10e6d2f9.mjs';
3
- export { S as Subscription, s as subscriptionPullFactory } from './subscription-e1d42e69.mjs';
4
- import { T as TRPCError, g as getErrorFromUnknown } from './transformTRPCResponse-76e0c91e.mjs';
5
- export { T as TRPCError } from './transformTRPCResponse-76e0c91e.mjs';
6
- import { createHTTPServer, createHTTPHandler } from './adapters/standalone.mjs';
7
- import { T as TRPC_ERROR_CODES_BY_KEY } from './codes-7a3d4f65.mjs';
8
- import 'url';
9
- import 'events';
10
- import 'http';
1
+ import { a as assertNotBrowser, g as getHTTPStatusCodeFromError } from './resolveHTTPResponse-8657b8de.mjs';
2
+ export { a as assertNotBrowser, r as resolveHTTPResponse } from './resolveHTTPResponse-8657b8de.mjs';
3
+ import { T as TRPC_ERROR_CODES_BY_KEY } from './envelopes-af8c2959.mjs';
4
+ import { T as TRPCError, g as getCauseFromUnknown, a as getErrorFromUnknown } from './TRPCError-b7fa0c31.mjs';
5
+ export { T as TRPCError } from './TRPCError-b7fa0c31.mjs';
6
+ import './transformTRPCResponse-747b9a68.mjs';
11
7
 
12
8
  assertNotBrowser();
13
9
 
14
- // this has been moved to separate package
10
+ /* eslint-disable @typescript-eslint/no-explicit-any */
15
11
 
16
12
  /**
17
- * @deprecated use `createHTTPServer` from `@trpc/server/adapters/standalone`
13
+ * @public
18
14
  */
19
- const createHttpServer = createHTTPServer;
15
+
20
16
  /**
21
- * @deprecated use `createHTTPHandler` from `@trpc/server/adapters/standalone`
17
+ * @public
22
18
  */
23
19
 
24
- const createHttpHandler = createHTTPHandler;
25
20
  /**
26
- * @deprecated use `CreateHTTPHandlerOptions` from `@trpc/server/adapters/standalone`
21
+ * @public
27
22
  */
28
23
 
29
24
  /**
30
- * @deprecated use `nodeHTTPRequestHandler` from `@trpc/server/adapters/node-http`
25
+ * @public
31
26
  */
32
- const requestHandler = nodeHTTPRequestHandler;
27
+
33
28
  /**
34
- * @deprecated use `NodeHTTPCreateContextFn` from `@trpc/server/adapters/node-http`
29
+ * @public
35
30
  */
36
31
 
37
- const middlewareMarker = /*#__PURE__*/Symbol('middlewareMarker');
38
-
39
32
  /**
40
- * Wrap a function in a safe wrapper that never throws
41
- * Returns a discriminated union
33
+ * @internal
42
34
  */
43
- async function wrapCallSafe(fn) {
44
- try {
45
- const data = await fn();
46
- return {
47
- ok: true,
48
- data
49
- };
50
- } catch (cause) {
51
- return {
52
- ok: false,
53
- error: cause
54
- };
35
+ function getDataTransformer$1(transformer) {
36
+ if ('input' in transformer) {
37
+ return transformer;
55
38
  }
39
+
40
+ return {
41
+ input: transformer,
42
+ output: transformer
43
+ };
56
44
  }
45
+ /**
46
+ * @internal
47
+ */
48
+
49
+ /**
50
+ * @internal
51
+ */
52
+ const defaultTransformer = {
53
+ _default: true,
54
+ input: {
55
+ serialize: obj => obj,
56
+ deserialize: obj => obj
57
+ },
58
+ output: {
59
+ serialize: obj => obj,
60
+ deserialize: obj => obj
61
+ }
62
+ };
63
+
64
+ /**
65
+ * @internal
66
+ */
67
+
68
+ /**
69
+ * @internal
70
+ */
71
+
72
+ /**
73
+ * @internal
74
+ */
75
+ const defaultFormatter = ({
76
+ shape
77
+ }) => {
78
+ return shape;
79
+ };
80
+
81
+ /**
82
+ * @deprecated
83
+ */
84
+ const middlewareMarker$1 = 'middlewareMarker';
57
85
 
58
86
  /* eslint-disable @typescript-eslint/no-explicit-any */
59
87
  assertNotBrowser();
60
88
 
61
- function getParseFn(inputParser) {
62
- const parser = inputParser;
89
+ function getParseFn$1(procedureParser) {
90
+ const parser = procedureParser;
63
91
 
64
92
  if (typeof parser === 'function') {
65
- // ProcedureInputParserCustomValidatorEsque
93
+ // ProcedureParserCustomValidatorEsque
66
94
  return parser;
67
95
  }
68
96
 
69
97
  if (typeof parser.parseAsync === 'function') {
70
- // ProcedureInputParserZodEsque
98
+ // ProcedureParserZodEsque
71
99
  return parser.parseAsync.bind(parser);
72
100
  }
73
101
 
74
102
  if (typeof parser.parse === 'function') {
75
- // ProcedureInputParserZodEsque
103
+ // ProcedureParserZodEsque
76
104
  return parser.parse.bind(parser);
77
105
  }
78
106
 
79
107
  if (typeof parser.validateSync === 'function') {
80
- // ProcedureInputParserYupEsque
108
+ // ProcedureParserYupEsque
81
109
  return parser.validateSync.bind(parser);
82
110
  }
83
111
 
84
112
  if (typeof parser.create === 'function') {
85
- // ProcedureInputParserSuperstructEsque
113
+ // ProcedureParserSuperstructEsque
86
114
  return parser.create.bind(parser);
87
115
  }
88
116
 
@@ -90,6 +118,7 @@ function getParseFn(inputParser) {
90
118
  }
91
119
  /**
92
120
  * @internal
121
+ * @deprecated
93
122
  */
94
123
 
95
124
 
@@ -98,25 +127,53 @@ class Procedure {
98
127
  this.middlewares = void 0;
99
128
  this.resolver = void 0;
100
129
  this.inputParser = void 0;
101
- this.parse = void 0;
130
+ this.parseInputFn = void 0;
131
+ this.outputParser = void 0;
132
+ this.parseOutputFn = void 0;
133
+ this.meta = void 0;
102
134
  this.middlewares = opts.middlewares;
103
135
  this.resolver = opts.resolver;
104
136
  this.inputParser = opts.inputParser;
105
- this.parse = getParseFn(this.inputParser);
137
+ this.parseInputFn = getParseFn$1(this.inputParser);
138
+ this.outputParser = opts.outputParser;
139
+ this.parseOutputFn = getParseFn$1(this.outputParser);
140
+ this.meta = opts.meta;
141
+ }
142
+
143
+ _def() {
144
+ return {
145
+ middlewares: this.middlewares,
146
+ resolver: this.resolver,
147
+ inputParser: this.inputParser,
148
+ outputParser: this.outputParser,
149
+ meta: this.meta
150
+ };
106
151
  }
107
152
 
108
153
  async parseInput(rawInput) {
109
154
  try {
110
- return await this.parse(rawInput);
155
+ return await this.parseInputFn(rawInput);
111
156
  } catch (cause) {
112
157
  throw new TRPCError({
113
158
  code: 'BAD_REQUEST',
114
- cause
159
+ cause: getCauseFromUnknown(cause)
160
+ });
161
+ }
162
+ }
163
+
164
+ async parseOutput(rawOutput) {
165
+ try {
166
+ return await this.parseOutputFn(rawOutput);
167
+ } catch (cause) {
168
+ throw new TRPCError({
169
+ code: 'INTERNAL_SERVER_ERROR',
170
+ cause: getCauseFromUnknown(cause),
171
+ message: 'Output validation failed'
115
172
  });
116
173
  }
117
174
  }
118
175
  /**
119
- * Trigger middlewares in order, parse raw input & call resolver
176
+ * Trigger middlewares in order, parse raw input, call resolver & parse raw output
120
177
  * @internal
121
178
  */
122
179
 
@@ -127,40 +184,50 @@ class Procedure {
127
184
  ctx
128
185
  }) => {
129
186
  const input = await this.parseInput(opts.rawInput);
130
- const data = await this.resolver({ ...opts,
187
+ const rawOutput = await this.resolver({ ...opts,
131
188
  ctx,
132
189
  input
133
190
  });
191
+ const data = await this.parseOutput(rawOutput);
134
192
  return {
135
- marker: middlewareMarker,
193
+ marker: middlewareMarker$1,
136
194
  ok: true,
137
195
  data,
138
196
  ctx
139
197
  };
140
- }]); // create `next()` calls in resolvers
198
+ }]); // run the middlewares recursively with the resolver as the last one
141
199
 
142
- const nextFns = middlewaresWithResolver.map((fn, index) => {
143
- return async nextOpts => {
144
- const res = await wrapCallSafe(() => fn({
145
- ctx: nextOpts ? nextOpts.ctx : opts.ctx,
200
+ const callRecursive = async (callOpts = {
201
+ index: 0,
202
+ ctx: opts.ctx
203
+ }) => {
204
+ try {
205
+ const result = await middlewaresWithResolver[callOpts.index]({
206
+ ctx: callOpts.ctx,
146
207
  type: opts.type,
147
208
  path: opts.path,
148
209
  rawInput: opts.rawInput,
149
- next: nextFns[index + 1]
150
- }));
151
-
152
- if (res.ok) {
153
- return res.data;
154
- }
155
-
210
+ meta: this.meta,
211
+ next: async nextOpts => {
212
+ return await callRecursive({
213
+ index: callOpts.index + 1,
214
+ ctx: nextOpts ? nextOpts.ctx : callOpts.ctx
215
+ });
216
+ }
217
+ });
218
+ return result;
219
+ } catch (cause) {
156
220
  return {
221
+ ctx: callOpts.ctx,
157
222
  ok: false,
158
- error: getErrorFromUnknown(res.error)
223
+ error: getErrorFromUnknown(cause),
224
+ marker: middlewareMarker$1
159
225
  };
160
- };
161
- }); // there's always at least one "next" since we wrap this.resolver in a middleware
226
+ }
227
+ }; // there's always at least one "next" since we wrap this.resolver in a middleware
228
+
162
229
 
163
- const result = await nextFns[0]();
230
+ const result = await callRecursive();
164
231
 
165
232
  if (!result) {
166
233
  throw new TRPCError({
@@ -187,7 +254,9 @@ class Procedure {
187
254
  const instance = new Constructor({
188
255
  middlewares: [...middlewares, ...this.middlewares],
189
256
  resolver: this.resolver,
190
- inputParser: this.inputParser
257
+ inputParser: this.inputParser,
258
+ outputParser: this.outputParser,
259
+ meta: this.meta
191
260
  });
192
261
  return instance;
193
262
  }
@@ -204,19 +273,540 @@ function createProcedure(opts) {
204
273
 
205
274
  return undefined;
206
275
  };
276
+ const outputParser = 'output' in opts && opts.output ? opts.output : output => output;
207
277
  return new Procedure({
208
278
  inputParser: inputParser,
209
279
  resolver: opts.resolve,
210
- middlewares: []
280
+ middlewares: [],
281
+ outputParser: outputParser,
282
+ meta: opts.meta
283
+ });
284
+ }
285
+
286
+ function getParseFn(procedureParser) {
287
+ const parser = procedureParser;
288
+
289
+ if (typeof parser === 'function') {
290
+ // ProcedureParserCustomValidatorEsque
291
+ return parser;
292
+ }
293
+
294
+ if (typeof parser.parseAsync === 'function') {
295
+ // ProcedureParserZodEsque
296
+ return parser.parseAsync.bind(parser);
297
+ }
298
+
299
+ if (typeof parser.parse === 'function') {
300
+ // ProcedureParserZodEsque
301
+ return parser.parse.bind(parser);
302
+ }
303
+
304
+ if (typeof parser.validateSync === 'function') {
305
+ // ProcedureParserYupEsque
306
+ return parser.validateSync.bind(parser);
307
+ }
308
+
309
+ if (typeof parser.create === 'function') {
310
+ // ProcedureParserSuperstructEsque
311
+ return parser.create.bind(parser);
312
+ }
313
+
314
+ throw new Error('Could not find a validator fn');
315
+ }
316
+ /**
317
+ * @deprecated only for backwards compat
318
+ * @internal
319
+ */
320
+
321
+ function getParseFnOrPassThrough(procedureParser) {
322
+ if (!procedureParser) {
323
+ return v => v;
324
+ }
325
+
326
+ return getParseFn(procedureParser);
327
+ }
328
+
329
+ /**
330
+ * Ensures there are no duplicate keys when building a procedure.
331
+ */
332
+ function mergeWithoutOverrides(obj1, ...objs) {
333
+ const newObj = Object.assign(Object.create(null), obj1);
334
+
335
+ for (const overrides of objs) {
336
+ for (const key in overrides) {
337
+ if (key in newObj && newObj[key] !== overrides[key]) {
338
+ throw new Error(`Duplicate key ${key}`);
339
+ }
340
+
341
+ newObj[key] = overrides[key];
342
+ }
343
+ }
344
+
345
+ return newObj;
346
+ }
347
+
348
+ /**
349
+ * @internal
350
+ */
351
+
352
+ /**
353
+ * @internal
354
+ */
355
+
356
+ /**
357
+ * @internal
358
+ */
359
+ const middlewareMarker = 'middlewareMarker';
360
+ /**
361
+ * @internal
362
+ */
363
+
364
+ /**
365
+ * This is the actual internal representation of a builder
366
+ * FIXME - I want to get rid of this and use the public API instead
367
+ */
368
+
369
+ function createNewInternalBuilder(def1, def2) {
370
+ const {
371
+ middlewares = [],
372
+ ...rest
373
+ } = def2; // TODO: maybe have a fn here to warn about calls
374
+
375
+ return createInternalBuilder({ ...mergeWithoutOverrides(def1, rest),
376
+ middlewares: [...def1.middlewares, ...middlewares]
377
+ });
378
+ }
379
+
380
+ const codeblock = /*#__PURE__*/`
381
+ If you want to call this function on the server, you do the following:
382
+ This is a client-only function.
383
+
384
+ const caller = appRouter.createCaller({
385
+ /* ... your context */
386
+ });
387
+
388
+ const result = await caller.call('myProcedure', input);
389
+ `.trim();
390
+
391
+ function createProcedureCaller(_def) {
392
+ const procedure = async function resolve(opts) {
393
+ if (!opts || !('rawInput' in opts)) {
394
+ throw new Error(codeblock);
395
+ } // run the middlewares recursively with the resolver as the last one
396
+
397
+
398
+ const callRecursive = async (callOpts = {
399
+ index: 0,
400
+ ctx: opts.ctx
401
+ }) => {
402
+ try {
403
+ const middleware = _def.middlewares[callOpts.index];
404
+ const result = await middleware({
405
+ ctx: callOpts.ctx,
406
+ type: opts.type,
407
+ path: opts.path,
408
+ rawInput: opts.rawInput,
409
+ meta: _def.meta,
410
+ input: callOpts.input,
411
+ next: async nextOpts => {
412
+ return await callRecursive({
413
+ index: callOpts.index + 1,
414
+ ctx: nextOpts && 'ctx' in nextOpts ? { ...callOpts.ctx,
415
+ ...nextOpts.ctx
416
+ } : callOpts.ctx,
417
+ input: nextOpts && 'input' in nextOpts ? nextOpts.input : callOpts.input
418
+ });
419
+ }
420
+ });
421
+ return result;
422
+ } catch (cause) {
423
+ return {
424
+ ok: false,
425
+ error: getErrorFromUnknown(cause),
426
+ marker: middlewareMarker
427
+ };
428
+ }
429
+ }; // there's always at least one "next" since we wrap this.resolver in a middleware
430
+
431
+
432
+ const result = await callRecursive();
433
+
434
+ if (!result) {
435
+ throw new TRPCError({
436
+ code: 'INTERNAL_SERVER_ERROR',
437
+ message: 'No result from middlewares - did you forget to `return next()`?'
438
+ });
439
+ }
440
+
441
+ if (!result.ok) {
442
+ // re-throw original error
443
+ throw result.error;
444
+ }
445
+
446
+ return result.data;
447
+ };
448
+
449
+ procedure._def = _def;
450
+ procedure.meta = _def.meta;
451
+ return procedure;
452
+ }
453
+
454
+ function createInputMiddleware(parse) {
455
+ return async function inputMiddleware({
456
+ next,
457
+ rawInput
458
+ }) {
459
+ let input;
460
+
461
+ try {
462
+ input = await parse(rawInput);
463
+ } catch (cause) {
464
+ throw new TRPCError({
465
+ code: 'BAD_REQUEST',
466
+ cause: getCauseFromUnknown(cause)
467
+ });
468
+ } // TODO fix this typing?
469
+
470
+
471
+ return next({
472
+ input
473
+ });
474
+ };
475
+ }
476
+ function createOutputMiddleware(parse) {
477
+ return async function outputMiddleware({
478
+ next
479
+ }) {
480
+ const result = await next();
481
+
482
+ if (!result.ok) {
483
+ // pass through failures without validating
484
+ return result;
485
+ }
486
+
487
+ try {
488
+ const data = await parse(result.data);
489
+ return { ...result,
490
+ data
491
+ };
492
+ } catch (cause) {
493
+ throw new TRPCError({
494
+ message: 'Output validation failed',
495
+ code: 'INTERNAL_SERVER_ERROR',
496
+ cause: getCauseFromUnknown(cause)
497
+ });
498
+ }
499
+ };
500
+ }
501
+
502
+ function createResolver(_def, resolver) {
503
+ const finalBuilder = createNewInternalBuilder(_def, {
504
+ resolver,
505
+ middlewares: [async function resolveMiddleware(opts) {
506
+ const data = await resolver(opts);
507
+ return {
508
+ marker: middlewareMarker,
509
+ ok: true,
510
+ data,
511
+ ctx: opts.ctx
512
+ };
513
+ }]
211
514
  });
515
+ return createProcedureCaller(finalBuilder._def);
516
+ }
517
+
518
+ function createInternalBuilder(initDef) {
519
+ const _def = initDef || {
520
+ middlewares: []
521
+ };
522
+
523
+ return {
524
+ _def,
525
+
526
+ // _call: createProcedureCaller(_def),
527
+ input(input) {
528
+ const parser = getParseFn(input);
529
+ return createNewInternalBuilder(_def, {
530
+ input,
531
+ middlewares: [createInputMiddleware(parser)]
532
+ });
533
+ },
534
+
535
+ output(output) {
536
+ const parseOutput = getParseFn(output);
537
+ return createNewInternalBuilder(_def, {
538
+ output,
539
+ middlewares: [createOutputMiddleware(parseOutput)]
540
+ });
541
+ },
542
+
543
+ meta(meta) {
544
+ return createNewInternalBuilder(_def, {
545
+ meta
546
+ });
547
+ },
548
+
549
+ /** @deprecated **/
550
+ resolve(resolver) {
551
+ return createResolver(_def, resolver);
552
+ },
553
+
554
+ unstable_concat(builder) {
555
+ return createNewInternalBuilder(_def, builder._def);
556
+ },
557
+
558
+ use(middleware) {
559
+ return createNewInternalBuilder(_def, {
560
+ middlewares: [middleware]
561
+ });
562
+ },
563
+
564
+ query(resolver) {
565
+ return createResolver({ ..._def,
566
+ query: true
567
+ }, resolver);
568
+ },
569
+
570
+ mutation(resolver) {
571
+ return createResolver({ ..._def,
572
+ mutation: true
573
+ }, resolver);
574
+ },
575
+
576
+ subscription(resolver) {
577
+ return createResolver({ ..._def,
578
+ subscription: true
579
+ }, resolver);
580
+ }
581
+
582
+ };
583
+ }
584
+
585
+ /**
586
+ * Create an object without inheriting anything from `Object.prototype`
587
+ * @internal
588
+ */
589
+ function omitPrototype(obj1) {
590
+ return Object.assign(Object.create(null), obj1);
212
591
  }
213
592
 
214
593
  /* eslint-disable @typescript-eslint/ban-types */
215
- assertNotBrowser();
594
+
595
+ function createRouterProxy(callback) {
596
+ return new Proxy({}, {
597
+ get(_, path) {
598
+ return (...args) => callback(path, ...args);
599
+ }
600
+
601
+ });
602
+ }
603
+
604
+ const emptyRouter = {
605
+ _ctx: null,
606
+ _errorShape: null,
607
+ _meta: null,
608
+ queries: {},
609
+ mutations: {},
610
+ subscriptions: {},
611
+ errorFormatter: defaultFormatter,
612
+ transformer: defaultTransformer
613
+ };
216
614
  /**
217
- * @public
615
+ *
616
+ * @internal
218
617
  */
219
618
 
619
+ function createRouterFactory(defaults) {
620
+ return function createRouterInner(procedures) {
621
+ var _defaults$transformer, _defaults$errorFormat;
622
+
623
+ const routerProcedures = omitPrototype({});
624
+
625
+ function recursiveGetPaths(procedures, path = '') {
626
+ for (const [key, procedureOrRouter] of Object.entries(procedures !== null && procedures !== void 0 ? procedures : {})) {
627
+ const newPath = `${path}${key}`;
628
+
629
+ if (typeof procedureOrRouter === 'object') {
630
+ const router = procedureOrRouter;
631
+ recursiveGetPaths(router._def.procedures, `${newPath}.`);
632
+ continue;
633
+ }
634
+
635
+ routerProcedures[newPath] = procedureOrRouter;
636
+ }
637
+ }
638
+
639
+ recursiveGetPaths(procedures);
640
+ const result = mergeWithoutOverrides({
641
+ transformer: (_defaults$transformer = defaults === null || defaults === void 0 ? void 0 : defaults.transformer) !== null && _defaults$transformer !== void 0 ? _defaults$transformer : defaultTransformer,
642
+ errorFormatter: (_defaults$errorFormat = defaults === null || defaults === void 0 ? void 0 : defaults.errorFormatter) !== null && _defaults$errorFormat !== void 0 ? _defaults$errorFormat : defaultFormatter
643
+ }, {
644
+ procedures: routerProcedures
645
+ });
646
+ const _def = {
647
+ procedures: {},
648
+ ...emptyRouter,
649
+ ...result,
650
+ queries: Object.entries(result.procedures || {}).filter(pair => pair[1]._def.query).reduce((acc, [key, val]) => ({ ...acc,
651
+ [key]: val
652
+ }), {}),
653
+ mutations: Object.entries(result.procedures || {}).filter(pair => pair[1]._def.mutation).reduce((acc, [key, val]) => ({ ...acc,
654
+ [key]: val
655
+ }), {}),
656
+ subscriptions: Object.entries(result.procedures || {}).filter(pair => pair[1]._def.subscription).reduce((acc, [key, val]) => ({ ...acc,
657
+ [key]: val
658
+ }), {})
659
+ };
660
+ const def = {
661
+ _def,
662
+ transformer: _def.transformer,
663
+ errorFormatter: _def.errorFormatter
664
+ };
665
+
666
+ function callProcedure(opts) {
667
+ const {
668
+ type,
669
+ path
670
+ } = opts;
671
+
672
+ if (!(path in _def.procedures) || !_def.procedures[path]['_def'][type]) {
673
+ throw new TRPCError({
674
+ code: 'NOT_FOUND',
675
+ message: `No "${type}"-procedure on path "${path}"`
676
+ });
677
+ }
678
+
679
+ const procedure = _def.procedures[path];
680
+ return procedure(opts);
681
+ }
682
+
683
+ const router = { ...def,
684
+
685
+ createCaller(ctx) {
686
+ return {
687
+ query: (path, ...args) => callProcedure({
688
+ path,
689
+ rawInput: args[0],
690
+ ctx,
691
+ type: 'query'
692
+ }),
693
+ mutation: (path, ...args) => callProcedure({
694
+ path,
695
+ rawInput: args[0],
696
+ ctx,
697
+ type: 'mutation'
698
+ }),
699
+ subscription: (path, ...args) => callProcedure({
700
+ path,
701
+ rawInput: args[0],
702
+ ctx,
703
+ type: 'subscription'
704
+ }),
705
+ queries: createRouterProxy((path, rawInput) => callProcedure({
706
+ path,
707
+ rawInput,
708
+ ctx,
709
+ type: 'query'
710
+ })),
711
+ mutations: createRouterProxy((path, rawInput) => callProcedure({
712
+ path,
713
+ rawInput,
714
+ ctx,
715
+ type: 'mutation'
716
+ })),
717
+ subscriptions: createRouterProxy((path, rawInput) => callProcedure({
718
+ path,
719
+ rawInput,
720
+ ctx,
721
+ type: 'subscription'
722
+ }))
723
+ };
724
+ },
725
+
726
+ getErrorShape(opts) {
727
+ const {
728
+ path,
729
+ error
730
+ } = opts;
731
+ const {
732
+ code
733
+ } = opts.error;
734
+ const shape = {
735
+ message: error.message,
736
+ code: TRPC_ERROR_CODES_BY_KEY[code],
737
+ data: {
738
+ code,
739
+ httpStatus: getHTTPStatusCodeFromError(error)
740
+ }
741
+ };
742
+
743
+ if (process.env.NODE_ENV !== 'production' && typeof opts.error.stack === 'string') {
744
+ shape.data.stack = opts.error.stack;
745
+ }
746
+
747
+ if (typeof path === 'string') {
748
+ shape.data.path = path;
749
+ }
750
+
751
+ return this._def.errorFormatter({ ...opts,
752
+ shape
753
+ });
754
+ }
755
+
756
+ };
757
+ return router;
758
+ };
759
+ }
760
+
761
+ function migrateProcedure(oldProc, type) {
762
+ const def = oldProc._def();
763
+
764
+ const inputParser = getParseFnOrPassThrough(def.inputParser);
765
+ const outputParser = getParseFnOrPassThrough(def.outputParser);
766
+ const inputMiddleware = createInputMiddleware(inputParser);
767
+ const builder = createInternalBuilder({
768
+ input: def.inputParser,
769
+ middlewares: [...def.middlewares, inputMiddleware, createOutputMiddleware(outputParser)],
770
+ meta: def.meta,
771
+ output: def.outputParser,
772
+ mutation: type === 'mutation',
773
+ query: type === 'query',
774
+ subscription: type === 'subscription'
775
+ });
776
+ const proc = builder[type](opts => def.resolver(opts));
777
+ return proc;
778
+ }
779
+
780
+ function migrateRouter(oldRouter) {
781
+ const errorFormatter = oldRouter._def.errorFormatter;
782
+ const transformer = oldRouter._def.transformer;
783
+ const queries = {};
784
+ const mutations = {};
785
+ const subscriptions = {};
786
+
787
+ for (const [name, procedure] of Object.entries(oldRouter._def.queries)) {
788
+ queries[name] = migrateProcedure(procedure, 'query');
789
+ }
790
+
791
+ for (const [name, procedure] of Object.entries(oldRouter._def.mutations)) {
792
+ mutations[name] = migrateProcedure(procedure, 'mutation');
793
+ }
794
+
795
+ for (const [name, procedure] of Object.entries(oldRouter._def.subscriptions)) {
796
+ subscriptions[name] = migrateProcedure(procedure, 'subscription');
797
+ }
798
+
799
+ const procedures = mergeWithoutOverrides(queries, mutations, subscriptions);
800
+ const newRouter = createRouterFactory({
801
+ transformer,
802
+ errorFormatter
803
+ })(procedures);
804
+ return newRouter;
805
+ }
806
+
807
+ /* eslint-disable @typescript-eslint/ban-types */
808
+ assertNotBrowser();
809
+
220
810
  function getDataTransformer(transformer) {
221
811
  if ('input' in transformer) {
222
812
  return transformer;
@@ -229,6 +819,7 @@ function getDataTransformer(transformer) {
229
819
  }
230
820
  /**
231
821
  * @internal
822
+ * @deprecated
232
823
  */
233
824
 
234
825
 
@@ -239,31 +830,16 @@ const PROCEDURE_DEFINITION_MAP = {
239
830
  };
240
831
  /**
241
832
  * @internal
833
+ * @deprecated
242
834
  */
243
835
 
244
836
  function safeObject(...args) {
245
837
  return Object.assign(Object.create(null), ...args);
246
838
  }
247
839
 
248
- const defaultFormatter = ({
249
- shape
250
- }) => {
251
- return shape;
252
- };
253
-
254
- const defaultTransformer = {
255
- input: {
256
- serialize: obj => obj,
257
- deserialize: obj => obj
258
- },
259
- output: {
260
- serialize: obj => obj,
261
- deserialize: obj => obj
262
- }
263
- };
264
-
265
840
  /**
266
841
  * @internal The type signature of this class may change without warning.
842
+ * @deprecated
267
843
  */
268
844
  class Router {
269
845
  constructor(def) {
@@ -504,17 +1080,137 @@ class Router {
504
1080
  flat() {
505
1081
  return this;
506
1082
  }
1083
+ /**
1084
+ * Interop mode for v9.x -> v10.x
1085
+ */
1086
+
1087
+
1088
+ interop() {
1089
+ return migrateRouter(this);
1090
+ }
507
1091
 
508
1092
  }
509
1093
  /**
510
- * Subclass of `VNextRouter` with `TInputContext` and `TContext` set to the same type, for backcompat.
511
- *
512
1094
  * @deprecated
513
1095
  */
514
1096
 
515
- class LegacyRouter extends Router {}
516
1097
  function router() {
517
1098
  return new Router();
518
1099
  }
519
1100
 
520
- export { LegacyRouter, LegacyRouter as Router, createHttpHandler, createHttpServer, requestHandler, router };
1101
+ function mergeRouters(...routerList) {
1102
+ const procedures = mergeWithoutOverrides({}, ...routerList.map(r => r._def.procedures));
1103
+ const errorFormatter = routerList.reduce((currentErrorFormatter, nextRouter) => {
1104
+ if (nextRouter.errorFormatter && nextRouter.errorFormatter !== defaultFormatter) {
1105
+ if (currentErrorFormatter !== defaultFormatter && currentErrorFormatter !== nextRouter.errorFormatter) {
1106
+ throw new Error('You seem to have several error formatters');
1107
+ }
1108
+
1109
+ return nextRouter.errorFormatter;
1110
+ }
1111
+
1112
+ return currentErrorFormatter;
1113
+ }, defaultFormatter);
1114
+ const transformer = routerList.reduce((prev, current) => {
1115
+ if (current.transformer && current.transformer !== defaultTransformer) {
1116
+ if (prev !== defaultTransformer && prev !== current.transformer) {
1117
+ throw new Error('You seem to have several transformers');
1118
+ }
1119
+
1120
+ return current.transformer;
1121
+ }
1122
+
1123
+ return prev;
1124
+ }, defaultTransformer);
1125
+ const router = createRouterFactory({
1126
+ errorFormatter,
1127
+ transformer
1128
+ })(procedures);
1129
+ return router;
1130
+ }
1131
+
1132
+ function mergeRoutersGeneric(...args) {
1133
+ return mergeRouters(...args);
1134
+ }
1135
+
1136
+ function createBuilder() {
1137
+ return createInternalBuilder();
1138
+ }
1139
+
1140
+ /**
1141
+ * @internal
1142
+ */
1143
+
1144
+ /**
1145
+ * @internal
1146
+ */
1147
+
1148
+ /**
1149
+ * @internal
1150
+ */
1151
+
1152
+ /**
1153
+ * @internal
1154
+ */
1155
+
1156
+ /**
1157
+ * @internal
1158
+ */
1159
+
1160
+ /**
1161
+ * @internal
1162
+ */
1163
+ // FIXME this should use RootConfig
1164
+ function createMiddlewareFactory() {
1165
+ return function createMiddleware(fn) {
1166
+ return fn;
1167
+ };
1168
+ }
1169
+
1170
+ /* eslint-disable @typescript-eslint/ban-types */
1171
+ function initTRPC() {
1172
+ return function initTRPCInner(options) {
1173
+ var _options$errorFormatt, _options$transformer;
1174
+
1175
+ const errorFormatter = (_options$errorFormatt = options === null || options === void 0 ? void 0 : options.errorFormatter) !== null && _options$errorFormatt !== void 0 ? _options$errorFormatt : defaultFormatter;
1176
+ const transformer = getDataTransformer$1((_options$transformer = options === null || options === void 0 ? void 0 : options.transformer) !== null && _options$transformer !== void 0 ? _options$transformer : defaultTransformer);
1177
+ const _config = {
1178
+ transformer,
1179
+ errorShape: null,
1180
+ ctx: null,
1181
+ meta: null
1182
+ };
1183
+ return {
1184
+ /**
1185
+ * These are just types, they can't be used
1186
+ * @internal
1187
+ */
1188
+ _config,
1189
+
1190
+ /**
1191
+ * Builder object for creating procedures
1192
+ */
1193
+ procedure: createBuilder(),
1194
+
1195
+ /**
1196
+ * Create reusable middlewares
1197
+ */
1198
+ middleware: createMiddlewareFactory(),
1199
+
1200
+ /**
1201
+ * Create a router
1202
+ */
1203
+ router: createRouterFactory({
1204
+ errorFormatter,
1205
+ transformer
1206
+ }),
1207
+
1208
+ /**
1209
+ * Merge Routers
1210
+ */
1211
+ mergeRouters: mergeRoutersGeneric
1212
+ };
1213
+ };
1214
+ }
1215
+
1216
+ export { defaultTransformer, getDataTransformer$1 as getDataTransformer, initTRPC, router };