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

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