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