@trpc/server 10.0.0-alpha.4 → 10.0.0-alpha.40

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