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

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