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

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 (345) hide show
  1. package/README.md +79 -1
  2. package/adapters/aws-lambda/dist/trpc-server-adapters-aws-lambda.cjs.d.ts +1 -0
  3. package/adapters/aws-lambda/dist/trpc-server-adapters-aws-lambda.cjs.dev.js +190 -0
  4. package/adapters/aws-lambda/dist/trpc-server-adapters-aws-lambda.cjs.js +7 -0
  5. package/adapters/aws-lambda/dist/trpc-server-adapters-aws-lambda.cjs.prod.js +190 -0
  6. package/adapters/aws-lambda/dist/trpc-server-adapters-aws-lambda.esm.js +186 -0
  7. package/adapters/aws-lambda/index.d.ts +1 -0
  8. package/adapters/aws-lambda/index.js +1 -0
  9. package/adapters/express/dist/trpc-server-adapters-express.cjs.dev.js +7 -6
  10. package/adapters/express/dist/trpc-server-adapters-express.cjs.prod.js +7 -6
  11. package/adapters/express/dist/trpc-server-adapters-express.esm.js +7 -6
  12. package/adapters/fastify/dist/trpc-server-adapters-fastify.cjs.d.ts +1 -0
  13. package/adapters/fastify/dist/trpc-server-adapters-fastify.cjs.dev.js +109 -0
  14. package/adapters/fastify/dist/trpc-server-adapters-fastify.cjs.js +7 -0
  15. package/adapters/fastify/dist/trpc-server-adapters-fastify.cjs.prod.js +109 -0
  16. package/adapters/fastify/dist/trpc-server-adapters-fastify.esm.js +104 -0
  17. package/adapters/fastify/index.d.ts +1 -0
  18. package/adapters/fastify/index.js +1 -0
  19. package/adapters/fetch/index.d.ts +1 -0
  20. package/adapters/fetch/index.js +1 -0
  21. package/adapters/lambda/dist/trpc-server-adapters-lambda.cjs.d.ts +1 -0
  22. package/adapters/lambda/dist/trpc-server-adapters-lambda.cjs.dev.js +25 -0
  23. package/adapters/lambda/dist/trpc-server-adapters-lambda.cjs.js +7 -0
  24. package/adapters/lambda/dist/trpc-server-adapters-lambda.cjs.prod.js +25 -0
  25. package/adapters/lambda/dist/trpc-server-adapters-lambda.esm.js +21 -0
  26. package/adapters/next/dist/trpc-server-adapters-next.cjs.dev.js +4 -3
  27. package/adapters/next/dist/trpc-server-adapters-next.cjs.prod.js +4 -3
  28. package/adapters/next/dist/trpc-server-adapters-next.esm.js +4 -3
  29. package/adapters/node-http/dist/trpc-server-adapters-node-http.cjs.dev.js +4 -3
  30. package/adapters/node-http/dist/trpc-server-adapters-node-http.cjs.prod.js +4 -3
  31. package/adapters/node-http/dist/trpc-server-adapters-node-http.esm.js +4 -3
  32. package/adapters/standalone/dist/trpc-server-adapters-standalone.cjs.dev.js +5 -4
  33. package/adapters/standalone/dist/trpc-server-adapters-standalone.cjs.prod.js +5 -4
  34. package/adapters/standalone/dist/trpc-server-adapters-standalone.esm.js +5 -4
  35. package/adapters/ws/dist/trpc-server-adapters-ws.cjs.dev.js +6 -5
  36. package/adapters/ws/dist/trpc-server-adapters-ws.cjs.prod.js +6 -5
  37. package/adapters/ws/dist/trpc-server-adapters-ws.esm.js +6 -5
  38. package/dist/TRPCError-9050a68d.js +69 -0
  39. package/dist/TRPCError-97212592.mjs +65 -0
  40. package/dist/adapters/aws-lambda/index.d.ts +14 -0
  41. package/dist/adapters/aws-lambda/index.d.ts.map +1 -0
  42. package/dist/adapters/aws-lambda/index.js +190 -0
  43. package/dist/adapters/aws-lambda/index.mjs +186 -0
  44. package/dist/{ws → adapters/aws-lambda}/index.ts.js +0 -0
  45. package/dist/adapters/aws-lambda/utils.d.ts +35 -0
  46. package/dist/adapters/aws-lambda/utils.d.ts.map +1 -0
  47. package/dist/adapters/express.d.ts +1 -1
  48. package/dist/adapters/express.d.ts.map +1 -1
  49. package/dist/adapters/express.js +8 -7
  50. package/dist/adapters/express.mjs +8 -7
  51. package/dist/adapters/fastify/fastifyRequestHandler.d.ts +13 -0
  52. package/dist/adapters/fastify/fastifyRequestHandler.d.ts.map +1 -0
  53. package/dist/adapters/fastify/fastifyTRPCPlugin.d.ts +12 -0
  54. package/dist/adapters/fastify/fastifyTRPCPlugin.d.ts.map +1 -0
  55. package/dist/adapters/fastify/index.d.ts +3 -0
  56. package/dist/adapters/fastify/index.d.ts.map +1 -0
  57. package/dist/adapters/fastify/index.js +108 -0
  58. package/dist/adapters/fastify/index.mjs +103 -0
  59. package/dist/adapters/fastify/index.ts.js +1 -0
  60. package/dist/adapters/fetch/fetchRequestHandler.d.ts +8 -0
  61. package/dist/adapters/fetch/fetchRequestHandler.d.ts.map +1 -0
  62. package/dist/adapters/fetch/index.d.ts +3 -0
  63. package/dist/adapters/fetch/index.d.ts.map +1 -0
  64. package/dist/adapters/fetch/index.js +69 -0
  65. package/dist/adapters/fetch/index.mjs +65 -0
  66. package/dist/adapters/fetch/index.ts.js +1 -0
  67. package/dist/adapters/fetch/types.d.ts +21 -0
  68. package/dist/adapters/fetch/types.d.ts.map +1 -0
  69. package/dist/adapters/lambda/index.d.ts +12 -0
  70. package/dist/adapters/lambda/index.d.ts.map +1 -0
  71. package/dist/adapters/next.d.ts +2 -2
  72. package/dist/adapters/next.d.ts.map +1 -1
  73. package/dist/adapters/next.js +9 -9
  74. package/dist/adapters/next.mjs +8 -8
  75. package/dist/adapters/node-http/index.js +5 -4
  76. package/dist/adapters/node-http/index.mjs +5 -4
  77. package/dist/adapters/node-http/internals/getPostBody.d.ts +1 -1
  78. package/dist/adapters/node-http/internals/getPostBody.d.ts.map +1 -1
  79. package/dist/adapters/node-http/nodeHTTPRequestHandler.d.ts +2 -2
  80. package/dist/adapters/node-http/nodeHTTPRequestHandler.d.ts.map +1 -1
  81. package/dist/adapters/node-http/types.d.ts +11 -9
  82. package/dist/adapters/node-http/types.d.ts.map +1 -1
  83. package/dist/adapters/standalone.d.ts +2 -2
  84. package/dist/adapters/standalone.d.ts.map +1 -1
  85. package/dist/adapters/standalone.js +11 -7
  86. package/dist/adapters/standalone.mjs +11 -6
  87. package/dist/adapters/ws.d.ts +8 -6
  88. package/dist/adapters/ws.d.ts.map +1 -1
  89. package/dist/adapters/ws.js +123 -90
  90. package/dist/adapters/ws.mjs +118 -85
  91. package/dist/assertNotBrowser.d.ts.map +1 -1
  92. package/dist/core/index.d.ts +6 -0
  93. package/dist/core/index.d.ts.map +1 -0
  94. package/dist/core/initTRPC.d.ts +87 -0
  95. package/dist/core/initTRPC.d.ts.map +1 -0
  96. package/dist/core/internals/__generated__/mergeRoutersGeneric.d.ts +282 -0
  97. package/dist/core/internals/__generated__/mergeRoutersGeneric.d.ts.map +1 -0
  98. package/dist/core/internals/config.d.ts +36 -0
  99. package/dist/core/internals/config.d.ts.map +1 -0
  100. package/dist/core/internals/getParseFn.d.ts +9 -0
  101. package/dist/core/internals/getParseFn.d.ts.map +1 -0
  102. package/dist/core/internals/mergeRouters.d.ts +3 -0
  103. package/dist/core/internals/mergeRouters.d.ts.map +1 -0
  104. package/dist/core/internals/mergeWithoutOverrides.d.ts +5 -0
  105. package/dist/core/internals/mergeWithoutOverrides.d.ts.map +1 -0
  106. package/dist/core/internals/omitPrototype.d.ts +6 -0
  107. package/dist/core/internals/omitPrototype.d.ts.map +1 -0
  108. package/dist/core/internals/prefixObjectKeys.d.ts +2 -0
  109. package/dist/core/internals/prefixObjectKeys.d.ts.map +1 -0
  110. package/dist/core/internals/procedureBuilder.d.ts +122 -0
  111. package/dist/core/internals/procedureBuilder.d.ts.map +1 -0
  112. package/dist/core/internals/utils.d.ts +44 -0
  113. package/dist/core/internals/utils.d.ts.map +1 -0
  114. package/dist/core/middleware.d.ts +87 -0
  115. package/dist/core/middleware.d.ts.map +1 -0
  116. package/dist/core/parser.d.ts +25 -0
  117. package/dist/core/parser.d.ts.map +1 -0
  118. package/dist/core/procedure.d.ts +88 -0
  119. package/dist/core/procedure.d.ts.map +1 -0
  120. package/dist/core/router.d.ts +128 -0
  121. package/dist/core/router.d.ts.map +1 -0
  122. package/dist/core/types.d.ts +19 -0
  123. package/dist/core/types.d.ts.map +1 -0
  124. package/dist/{internals → deprecated/internals}/callProcedure.d.ts +5 -2
  125. package/dist/deprecated/internals/callProcedure.d.ts.map +1 -0
  126. package/dist/{internals → deprecated/internals}/middlewares.d.ts +21 -3
  127. package/dist/deprecated/internals/middlewares.d.ts.map +1 -0
  128. package/dist/deprecated/internals/procedure.d.ts +96 -0
  129. package/dist/deprecated/internals/procedure.d.ts.map +1 -0
  130. package/dist/deprecated/interop.d.ts +34 -0
  131. package/dist/deprecated/interop.d.ts.map +1 -0
  132. package/dist/deprecated/router.d.ts +194 -0
  133. package/dist/deprecated/router.d.ts.map +1 -0
  134. package/dist/{codes-7a3d4f65.mjs → envelopes-af8c2959.mjs} +30 -1
  135. package/dist/{codes-7f46544e.js → envelopes-b6dd0367.js} +29 -1
  136. package/dist/error/TRPCError.d.ts +11 -0
  137. package/dist/error/TRPCError.d.ts.map +1 -0
  138. package/dist/error/formatter.d.ts +33 -0
  139. package/dist/error/formatter.d.ts.map +1 -0
  140. package/dist/{internals/errors.d.ts → error/utils.d.ts} +3 -2
  141. package/dist/error/utils.d.ts.map +1 -0
  142. package/dist/http/index.d.ts +1 -1
  143. package/dist/http/index.d.ts.map +1 -1
  144. package/dist/http/internals/getHTTPStatusCode.d.ts +2 -1
  145. package/dist/http/internals/getHTTPStatusCode.d.ts.map +1 -1
  146. package/dist/http/internals/types.d.ts +11 -8
  147. package/dist/http/internals/types.d.ts.map +1 -1
  148. package/dist/http/resolveHTTPResponse.d.ts +4 -4
  149. package/dist/http/resolveHTTPResponse.d.ts.map +1 -1
  150. package/dist/http/{ResponseMeta.d.ts → types.d.ts} +1 -1
  151. package/dist/http/types.d.ts.map +1 -0
  152. package/dist/index-1a25ccbd.js +33 -0
  153. package/dist/index-a3bd54c7.mjs +31 -0
  154. package/dist/index.d.ts +4 -5
  155. package/dist/index.d.ts.map +1 -1
  156. package/dist/index.js +95 -496
  157. package/dist/index.mjs +88 -488
  158. package/dist/internals/transformTRPCResponse.d.ts +5 -3
  159. package/dist/internals/transformTRPCResponse.d.ts.map +1 -1
  160. package/dist/internals/types.d.ts +23 -0
  161. package/dist/internals/types.d.ts.map +1 -0
  162. package/dist/internals.d.ts +11 -0
  163. package/dist/internals.d.ts.map +1 -0
  164. package/dist/nodeHTTPRequestHandler-65cf2218.mjs +105 -0
  165. package/dist/nodeHTTPRequestHandler-6b7c8622.js +107 -0
  166. package/dist/observable/index.d.ts +5 -0
  167. package/dist/observable/index.d.ts.map +1 -0
  168. package/dist/observable/index.js +204 -0
  169. package/dist/observable/index.mjs +195 -0
  170. package/dist/observable/index.ts.js +1 -0
  171. package/dist/observable/internals/identity.d.ts +2 -0
  172. package/dist/observable/internals/identity.d.ts.map +1 -0
  173. package/dist/observable/internals/observableToPromise.d.ts +10 -0
  174. package/dist/observable/internals/observableToPromise.d.ts.map +1 -0
  175. package/dist/observable/internals/pipe.d.ts +4 -0
  176. package/dist/observable/internals/pipe.d.ts.map +1 -0
  177. package/dist/observable/observable.d.ts +5 -0
  178. package/dist/observable/observable.d.ts.map +1 -0
  179. package/dist/observable/operators/index.d.ts +4 -0
  180. package/dist/observable/operators/index.d.ts.map +1 -0
  181. package/dist/observable/operators/map.d.ts +3 -0
  182. package/dist/observable/operators/map.d.ts.map +1 -0
  183. package/dist/observable/operators/share.d.ts +6 -0
  184. package/dist/observable/operators/share.d.ts.map +1 -0
  185. package/dist/observable/operators/tap.d.ts +3 -0
  186. package/dist/observable/operators/tap.d.ts.map +1 -0
  187. package/dist/observable/types.d.ts +29 -0
  188. package/dist/observable/types.d.ts.map +1 -0
  189. package/dist/observable-341a0506.js +109 -0
  190. package/dist/observable-cfedfa30.mjs +106 -0
  191. package/dist/{nodeHTTPRequestHandler-10e6d2f9.mjs → resolveHTTPResponse-95634936.mjs} +32 -133
  192. package/dist/{nodeHTTPRequestHandler-d7c307d3.js → resolveHTTPResponse-fcc8f644.js} +37 -139
  193. package/dist/router-6665b0ee.mjs +1093 -0
  194. package/dist/router-9d12560f.js +1103 -0
  195. package/dist/rpc/codes.d.ts +2 -0
  196. package/dist/rpc/codes.d.ts.map +1 -1
  197. package/dist/rpc/envelopes.d.ts +62 -40
  198. package/dist/rpc/envelopes.d.ts.map +1 -1
  199. package/dist/rpc/index.js +7 -3
  200. package/dist/rpc/index.mjs +1 -1
  201. package/dist/rpc/internals/invert.d.ts +18 -0
  202. package/dist/rpc/internals/invert.d.ts.map +1 -0
  203. package/dist/shared/createProxy/index.d.ts +12 -0
  204. package/dist/shared/createProxy/index.d.ts.map +1 -0
  205. package/dist/shared/index.d.ts +2 -0
  206. package/dist/shared/index.d.ts.map +1 -0
  207. package/dist/shared/index.js +9 -0
  208. package/dist/shared/index.mjs +1 -0
  209. package/dist/shared/index.ts.js +1 -0
  210. package/dist/subscription.d.ts +3 -52
  211. package/dist/subscription.d.ts.map +1 -1
  212. package/dist/subscription.js +44 -0
  213. package/dist/subscription.mjs +40 -0
  214. package/dist/subscription.ts.js +1 -0
  215. package/dist/transformTRPCResponse-0c261655.js +29 -0
  216. package/dist/transformTRPCResponse-747b9a68.mjs +27 -0
  217. package/dist/transformer.d.ts +14 -0
  218. package/dist/transformer.d.ts.map +1 -1
  219. package/dist/types.d.ts +35 -8
  220. package/dist/types.d.ts.map +1 -1
  221. package/observable/index.d.ts +1 -0
  222. package/observable/index.js +1 -0
  223. package/package.json +57 -16
  224. package/rpc/dist/trpc-server-rpc.cjs.dev.js +1 -1
  225. package/rpc/dist/trpc-server-rpc.cjs.prod.js +1 -1
  226. package/rpc/dist/trpc-server-rpc.esm.js +1 -1
  227. package/shared/index.d.ts +1 -0
  228. package/shared/index.js +1 -0
  229. package/src/adapters/aws-lambda/index.ts +173 -0
  230. package/src/adapters/aws-lambda/utils.ts +92 -0
  231. package/src/adapters/express.ts +4 -4
  232. package/src/adapters/fastify/fastifyRequestHandler.ts +77 -0
  233. package/src/adapters/fastify/fastifyTRPCPlugin.ts +56 -0
  234. package/src/adapters/fastify/index.ts +2 -0
  235. package/src/adapters/fetch/fetchRequestHandler.ts +61 -0
  236. package/src/adapters/fetch/index.ts +2 -0
  237. package/src/adapters/fetch/types.ts +28 -0
  238. package/src/adapters/lambda/index.ts +18 -0
  239. package/src/adapters/next.ts +10 -8
  240. package/src/adapters/node-http/internals/getPostBody.test.ts +2 -1
  241. package/src/adapters/node-http/internals/getPostBody.ts +1 -1
  242. package/src/adapters/node-http/nodeHTTPRequestHandler.ts +7 -7
  243. package/src/adapters/node-http/types.ts +11 -9
  244. package/src/adapters/standalone.ts +12 -4
  245. package/src/adapters/ws.ts +135 -91
  246. package/src/assertNotBrowser.ts +1 -0
  247. package/src/core/index.ts +11 -0
  248. package/src/core/initTRPC.ts +95 -0
  249. package/src/core/internals/__generated__/mergeRoutersGeneric.ts +386 -0
  250. package/src/core/internals/config.ts +43 -0
  251. package/src/core/internals/getParseFn.ts +47 -0
  252. package/src/core/internals/mergeRouters.ts +45 -0
  253. package/src/core/internals/mergeWithoutOverrides.ts +19 -0
  254. package/src/core/internals/omitPrototype.ts +9 -0
  255. package/src/core/internals/prefixObjectKeys.ts +9 -0
  256. package/src/core/internals/procedureBuilder.ts +398 -0
  257. package/src/core/internals/utils.ts +64 -0
  258. package/src/core/middleware.ts +96 -0
  259. package/src/core/parser.ts +45 -0
  260. package/src/core/procedure.ts +120 -0
  261. package/src/core/router.ts +366 -0
  262. package/src/core/types.ts +58 -0
  263. package/src/{internals → deprecated/internals}/callProcedure.ts +9 -3
  264. package/src/{internals → deprecated/internals}/middlewares.ts +23 -3
  265. package/src/deprecated/internals/procedure.ts +415 -0
  266. package/src/deprecated/interop.ts +229 -0
  267. package/src/{router.ts → deprecated/router.ts} +219 -104
  268. package/src/{TRPCError.ts → error/TRPCError.ts} +6 -14
  269. package/src/error/formatter.ts +51 -0
  270. package/src/{internals/errors.ts → error/utils.ts} +21 -5
  271. package/src/http/index.ts +1 -1
  272. package/src/http/internals/getHTTPStatusCode.ts +3 -2
  273. package/src/http/internals/types.ts +11 -14
  274. package/src/http/resolveHTTPResponse.ts +29 -38
  275. package/src/http/{ResponseMeta.ts → types.ts} +0 -0
  276. package/src/index.ts +4 -7
  277. package/src/internals/transformTRPCResponse.ts +21 -16
  278. package/src/internals/types.ts +24 -0
  279. package/src/internals.ts +14 -0
  280. package/src/observable/index.ts +4 -0
  281. package/src/observable/internals/identity.ts +3 -0
  282. package/src/observable/internals/observableToPromise.ts +49 -0
  283. package/src/observable/internals/pipe.ts +23 -0
  284. package/src/observable/observable.test.ts +101 -0
  285. package/src/observable/observable.ts +78 -0
  286. package/src/observable/operators/index.ts +3 -0
  287. package/src/observable/operators/map.test.ts +92 -0
  288. package/src/observable/operators/map.ts +25 -0
  289. package/src/observable/operators/share.test.ts +60 -0
  290. package/src/observable/operators/share.ts +67 -0
  291. package/src/observable/operators/tap.ts +26 -0
  292. package/src/observable/types.ts +69 -0
  293. package/src/rpc/codes.ts +2 -1
  294. package/src/rpc/envelopes.ts +88 -69
  295. package/src/rpc/internals/invert.ts +27 -0
  296. package/src/shared/createProxy/index.ts +38 -0
  297. package/src/shared/index.ts +1 -0
  298. package/src/subscription.ts +7 -125
  299. package/src/transformer.ts +28 -0
  300. package/src/types.ts +40 -9
  301. package/dist/TRPCError.d.ts +0 -19
  302. package/dist/TRPCError.d.ts.map +0 -1
  303. package/dist/deprecated/LegacyRouter.d.ts +0 -3
  304. package/dist/deprecated/LegacyRouter.d.ts.map +0 -1
  305. package/dist/deprecated/createHttpServer.d.ts +0 -19
  306. package/dist/deprecated/createHttpServer.d.ts.map +0 -1
  307. package/dist/deprecated/requestHandler.d.ts +0 -15
  308. package/dist/deprecated/requestHandler.d.ts.map +0 -1
  309. package/dist/http/ResponseMeta.d.ts.map +0 -1
  310. package/dist/internals/BaseHandlerOptions.d.ts +0 -13
  311. package/dist/internals/BaseHandlerOptions.d.ts.map +0 -1
  312. package/dist/internals/OnErrorFunction.d.ts +0 -11
  313. package/dist/internals/OnErrorFunction.d.ts.map +0 -1
  314. package/dist/internals/callProcedure.d.ts.map +0 -1
  315. package/dist/internals/errors.d.ts.map +0 -1
  316. package/dist/internals/middlewares.d.ts.map +0 -1
  317. package/dist/internals/procedure.d.ts +0 -74
  318. package/dist/internals/procedure.d.ts.map +0 -1
  319. package/dist/internals/wrapCallSafe.d.ts +0 -16
  320. package/dist/internals/wrapCallSafe.d.ts.map +0 -1
  321. package/dist/router.d.ts +0 -176
  322. package/dist/router.d.ts.map +0 -1
  323. package/dist/subscription-5b7e1eba.js +0 -136
  324. package/dist/subscription-e1d42e69.mjs +0 -133
  325. package/dist/transformTRPCResponse-76e0c91e.mjs +0 -109
  326. package/dist/transformTRPCResponse-bd24f548.js +0 -114
  327. package/dist/ws/index.d.ts +0 -7
  328. package/dist/ws/index.d.ts.map +0 -1
  329. package/dist/ws/index.js +0 -15
  330. package/dist/ws/index.mjs +0 -11
  331. package/src/deprecated/LegacyRouter.ts +0 -3
  332. package/src/deprecated/createHttpServer.ts +0 -29
  333. package/src/deprecated/requestHandler.ts +0 -26
  334. package/src/internals/BaseHandlerOptions.ts +0 -13
  335. package/src/internals/OnErrorFunction.ts +0 -11
  336. package/src/internals/procedure.ts +0 -283
  337. package/src/internals/wrapCallSafe.ts +0 -19
  338. package/src/ws/index.ts +0 -8
  339. package/ws/dist/trpc-server-ws.cjs.d.ts +0 -1
  340. package/ws/dist/trpc-server-ws.cjs.dev.js +0 -15
  341. package/ws/dist/trpc-server-ws.cjs.js +0 -7
  342. package/ws/dist/trpc-server-ws.cjs.prod.js +0 -15
  343. package/ws/dist/trpc-server-ws.esm.js +0 -11
  344. package/ws/index.d.ts +0 -1
  345. package/ws/index.js +0 -1
@@ -0,0 +1,1103 @@
1
+ 'use strict';
2
+
3
+ var resolveHTTPResponse = require('./resolveHTTPResponse-fcc8f644.js');
4
+ var envelopes = require('./envelopes-b6dd0367.js');
5
+ var TRPCError = require('./TRPCError-9050a68d.js');
6
+ var index = require('./index-1a25ccbd.js');
7
+
8
+ resolveHTTPResponse.assertNotBrowser();
9
+
10
+ /* eslint-disable @typescript-eslint/no-explicit-any */
11
+
12
+ /**
13
+ * @public
14
+ */
15
+
16
+ /**
17
+ * @public
18
+ */
19
+
20
+ /**
21
+ * @public
22
+ */
23
+
24
+ /**
25
+ * @public
26
+ */
27
+
28
+ /**
29
+ * @public
30
+ */
31
+
32
+ /**
33
+ * @internal
34
+ */
35
+ function getDataTransformer$1(transformer) {
36
+ if ('input' in transformer) {
37
+ return transformer;
38
+ }
39
+
40
+ return {
41
+ input: transformer,
42
+ output: transformer
43
+ };
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';
85
+
86
+ /* eslint-disable @typescript-eslint/no-explicit-any */
87
+ resolveHTTPResponse.assertNotBrowser();
88
+
89
+ function getParseFn$1(procedureParser) {
90
+ const parser = procedureParser;
91
+
92
+ if (typeof parser === 'function') {
93
+ // ProcedureParserCustomValidatorEsque
94
+ return parser;
95
+ }
96
+
97
+ if (typeof parser.parseAsync === 'function') {
98
+ // ProcedureParserZodEsque
99
+ return parser.parseAsync.bind(parser);
100
+ }
101
+
102
+ if (typeof parser.parse === 'function') {
103
+ // ProcedureParserZodEsque
104
+ return parser.parse.bind(parser);
105
+ }
106
+
107
+ if (typeof parser.validateSync === 'function') {
108
+ // ProcedureParserYupEsque
109
+ return parser.validateSync.bind(parser);
110
+ }
111
+
112
+ if (typeof parser.create === 'function') {
113
+ // ProcedureParserSuperstructEsque
114
+ return parser.create.bind(parser);
115
+ }
116
+
117
+ throw new Error('Could not find a validator fn');
118
+ }
119
+ /**
120
+ * @internal
121
+ * @deprecated
122
+ */
123
+
124
+
125
+ class Procedure {
126
+ constructor(opts) {
127
+ this.middlewares = void 0;
128
+ this.resolver = void 0;
129
+ this.inputParser = void 0;
130
+ this.parseInputFn = void 0;
131
+ this.outputParser = void 0;
132
+ this.parseOutputFn = void 0;
133
+ this.meta = void 0;
134
+ this.middlewares = opts.middlewares;
135
+ this.resolver = opts.resolver;
136
+ this.inputParser = opts.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
+ };
151
+ }
152
+
153
+ async parseInput(rawInput) {
154
+ try {
155
+ return await this.parseInputFn(rawInput);
156
+ } catch (cause) {
157
+ throw new TRPCError.TRPCError({
158
+ code: 'BAD_REQUEST',
159
+ cause: TRPCError.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.TRPCError({
169
+ code: 'INTERNAL_SERVER_ERROR',
170
+ cause: TRPCError.getCauseFromUnknown(cause),
171
+ message: 'Output validation failed'
172
+ });
173
+ }
174
+ }
175
+ /**
176
+ * Trigger middlewares in order, parse raw input, call resolver & parse raw output
177
+ * @internal
178
+ */
179
+
180
+
181
+ async call(opts) {
182
+ // wrap the actual resolver and treat as the last "middleware"
183
+ const middlewaresWithResolver = this.middlewares.concat([async ({
184
+ ctx
185
+ }) => {
186
+ const input = await this.parseInput(opts.rawInput);
187
+ const rawOutput = await this.resolver({ ...opts,
188
+ ctx,
189
+ input
190
+ });
191
+ const data = await this.parseOutput(rawOutput);
192
+ return {
193
+ marker: middlewareMarker$1,
194
+ ok: true,
195
+ data,
196
+ ctx
197
+ };
198
+ }]); // run the middlewares recursively with the resolver as the last one
199
+
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,
207
+ type: opts.type,
208
+ path: opts.path,
209
+ rawInput: opts.rawInput,
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) {
220
+ return {
221
+ ctx: callOpts.ctx,
222
+ ok: false,
223
+ error: TRPCError.getErrorFromUnknown(cause),
224
+ marker: middlewareMarker$1
225
+ };
226
+ }
227
+ }; // there's always at least one "next" since we wrap this.resolver in a middleware
228
+
229
+
230
+ const result = await callRecursive();
231
+
232
+ if (!result) {
233
+ throw new TRPCError.TRPCError({
234
+ code: 'INTERNAL_SERVER_ERROR',
235
+ message: 'No result from middlewares - did you forget to `return next()`?'
236
+ });
237
+ }
238
+
239
+ if (!result.ok) {
240
+ // re-throw original error
241
+ throw result.error;
242
+ }
243
+
244
+ return result.data;
245
+ }
246
+ /**
247
+ * Create new procedure with passed middlewares
248
+ * @param middlewares
249
+ */
250
+
251
+
252
+ inheritMiddlewares(middlewares) {
253
+ const Constructor = this.constructor;
254
+ const instance = new Constructor({
255
+ middlewares: [...middlewares, ...this.middlewares],
256
+ resolver: this.resolver,
257
+ inputParser: this.inputParser,
258
+ outputParser: this.outputParser,
259
+ meta: this.meta
260
+ });
261
+ return instance;
262
+ }
263
+
264
+ }
265
+ function createProcedure(opts) {
266
+ const inputParser = 'input' in opts ? opts.input : input => {
267
+ if (input != null) {
268
+ throw new TRPCError.TRPCError({
269
+ code: 'BAD_REQUEST',
270
+ message: 'No input expected'
271
+ });
272
+ }
273
+
274
+ return undefined;
275
+ };
276
+ const outputParser = 'output' in opts && opts.output ? opts.output : output => output;
277
+ return new Procedure({
278
+ inputParser: inputParser,
279
+ resolver: opts.resolve,
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
+ function createNewBuilder(def1, def2) {
365
+ const {
366
+ middlewares = [],
367
+ ...rest
368
+ } = def2; // TODO: maybe have a fn here to warn about calls
369
+
370
+ return createBuilder({ ...mergeWithoutOverrides(def1, rest),
371
+ middlewares: [...def1.middlewares, ...middlewares]
372
+ });
373
+ }
374
+
375
+ function createBuilder(initDef) {
376
+ const _def = initDef || {
377
+ middlewares: []
378
+ };
379
+
380
+ return {
381
+ _def,
382
+
383
+ input(input) {
384
+ const parser = getParseFn(input);
385
+ return createNewBuilder(_def, {
386
+ input,
387
+ middlewares: [createInputMiddleware(parser)]
388
+ });
389
+ },
390
+
391
+ output(output) {
392
+ const parseOutput = getParseFn(output);
393
+ return createNewBuilder(_def, {
394
+ output,
395
+ middlewares: [createOutputMiddleware(parseOutput)]
396
+ });
397
+ },
398
+
399
+ meta(meta) {
400
+ return createNewBuilder(_def, {
401
+ meta: meta
402
+ });
403
+ },
404
+
405
+ unstable_concat(builder) {
406
+ return createNewBuilder(_def, builder._def);
407
+ },
408
+
409
+ use(middleware) {
410
+ return createNewBuilder(_def, {
411
+ middlewares: [middleware]
412
+ });
413
+ },
414
+
415
+ query(resolver) {
416
+ return createResolver({ ..._def,
417
+ query: true
418
+ }, resolver);
419
+ },
420
+
421
+ mutation(resolver) {
422
+ return createResolver({ ..._def,
423
+ mutation: true
424
+ }, resolver);
425
+ },
426
+
427
+ subscription(resolver) {
428
+ return createResolver({ ..._def,
429
+ subscription: true
430
+ }, resolver);
431
+ }
432
+
433
+ };
434
+ }
435
+ function createInputMiddleware(parse) {
436
+ return async function inputMiddleware({
437
+ next,
438
+ rawInput
439
+ }) {
440
+ let input;
441
+
442
+ try {
443
+ input = await parse(rawInput);
444
+ } catch (cause) {
445
+ throw new TRPCError.TRPCError({
446
+ code: 'BAD_REQUEST',
447
+ cause: TRPCError.getCauseFromUnknown(cause)
448
+ });
449
+ } // TODO fix this typing?
450
+
451
+
452
+ return next({
453
+ input
454
+ });
455
+ };
456
+ }
457
+ function createOutputMiddleware(parse) {
458
+ return async function outputMiddleware({
459
+ next
460
+ }) {
461
+ const result = await next();
462
+
463
+ if (!result.ok) {
464
+ // pass through failures without validating
465
+ return result;
466
+ }
467
+
468
+ try {
469
+ const data = await parse(result.data);
470
+ return { ...result,
471
+ data
472
+ };
473
+ } catch (cause) {
474
+ throw new TRPCError.TRPCError({
475
+ message: 'Output validation failed',
476
+ code: 'INTERNAL_SERVER_ERROR',
477
+ cause: TRPCError.getCauseFromUnknown(cause)
478
+ });
479
+ }
480
+ };
481
+ }
482
+
483
+ function createResolver(_def, resolver) {
484
+ const finalBuilder = createNewBuilder(_def, {
485
+ resolver,
486
+ middlewares: [async function resolveMiddleware(opts) {
487
+ const data = await resolver(opts);
488
+ return {
489
+ marker: middlewareMarker,
490
+ ok: true,
491
+ data,
492
+ ctx: opts.ctx
493
+ };
494
+ }]
495
+ });
496
+ return createProcedureCaller(finalBuilder._def);
497
+ }
498
+ /**
499
+ * @internal
500
+ */
501
+
502
+
503
+ const codeblock = /*#__PURE__*/`
504
+ If you want to call this function on the server, you do the following:
505
+ This is a client-only function.
506
+
507
+ const caller = appRouter.createCaller({
508
+ /* ... your context */
509
+ });
510
+
511
+ const result = await caller.call('myProcedure', input);
512
+ `.trim();
513
+
514
+ function createProcedureCaller(_def) {
515
+ const procedure = async function resolve(opts) {
516
+ // is direct server-side call
517
+ if (!opts || !('rawInput' in opts)) {
518
+ throw new Error(codeblock);
519
+ } // run the middlewares recursively with the resolver as the last one
520
+
521
+
522
+ const callRecursive = async (callOpts = {
523
+ index: 0,
524
+ ctx: opts.ctx
525
+ }) => {
526
+ try {
527
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
528
+ const middleware = _def.middlewares[callOpts.index];
529
+ const result = await middleware({
530
+ ctx: callOpts.ctx,
531
+ type: opts.type,
532
+ path: opts.path,
533
+ rawInput: opts.rawInput,
534
+ meta: _def.meta,
535
+ input: callOpts.input,
536
+ next: async nextOpts => {
537
+ return await callRecursive({
538
+ index: callOpts.index + 1,
539
+ ctx: nextOpts && 'ctx' in nextOpts ? { ...callOpts.ctx,
540
+ ...nextOpts.ctx
541
+ } : callOpts.ctx,
542
+ input: nextOpts && 'input' in nextOpts ? nextOpts.input : callOpts.input
543
+ });
544
+ }
545
+ });
546
+ return result;
547
+ } catch (cause) {
548
+ return {
549
+ ok: false,
550
+ error: TRPCError.getErrorFromUnknown(cause),
551
+ marker: middlewareMarker
552
+ };
553
+ }
554
+ }; // there's always at least one "next" since we wrap this.resolver in a middleware
555
+
556
+
557
+ const result = await callRecursive();
558
+
559
+ if (!result) {
560
+ throw new TRPCError.TRPCError({
561
+ code: 'INTERNAL_SERVER_ERROR',
562
+ message: 'No result from middlewares - did you forget to `return next()`?'
563
+ });
564
+ }
565
+
566
+ if (!result.ok) {
567
+ // re-throw original error
568
+ throw result.error;
569
+ }
570
+
571
+ return result.data;
572
+ };
573
+
574
+ procedure._def = _def;
575
+ procedure.meta = _def.meta;
576
+ return procedure;
577
+ }
578
+
579
+ /**
580
+ * Create an object without inheriting anything from `Object.prototype`
581
+ * @internal
582
+ */
583
+ function omitPrototype(obj1) {
584
+ return Object.assign(Object.create(null), obj1);
585
+ }
586
+
587
+ const procedureTypes = ['query', 'mutation', 'subscription'];
588
+ /**
589
+ * @public
590
+ */
591
+
592
+ /* eslint-disable @typescript-eslint/ban-types */
593
+
594
+ function isRouter(procedureOrRouter) {
595
+ return 'router' in procedureOrRouter._def;
596
+ }
597
+
598
+ const emptyRouter = {
599
+ _ctx: null,
600
+ _errorShape: null,
601
+ _meta: null,
602
+ queries: {},
603
+ mutations: {},
604
+ subscriptions: {},
605
+ errorFormatter: defaultFormatter,
606
+ transformer: defaultTransformer
607
+ };
608
+ /**
609
+ *
610
+ * @internal
611
+ */
612
+
613
+ function createRouterFactory(defaults) {
614
+ return function createRouterInner(opts) {
615
+ var _defaults$transformer, _defaults$errorFormat;
616
+
617
+ const routerProcedures = omitPrototype({});
618
+
619
+ function recursiveGetPaths(procedures, path = '') {
620
+ for (const [key, procedureOrRouter] of Object.entries(procedures !== null && procedures !== void 0 ? procedures : {})) {
621
+ const newPath = `${path}${key}`;
622
+
623
+ if (isRouter(procedureOrRouter)) {
624
+ recursiveGetPaths(procedureOrRouter._def.procedures, `${newPath}.`);
625
+ continue;
626
+ }
627
+
628
+ routerProcedures[newPath] = procedureOrRouter;
629
+ }
630
+ }
631
+
632
+ recursiveGetPaths(opts);
633
+ const result = mergeWithoutOverrides({
634
+ transformer: (_defaults$transformer = defaults === null || defaults === void 0 ? void 0 : defaults.transformer) !== null && _defaults$transformer !== void 0 ? _defaults$transformer : defaultTransformer,
635
+ errorFormatter: (_defaults$errorFormat = defaults === null || defaults === void 0 ? void 0 : defaults.errorFormatter) !== null && _defaults$errorFormat !== void 0 ? _defaults$errorFormat : defaultFormatter
636
+ }, {
637
+ procedures: routerProcedures
638
+ });
639
+ const _def = {
640
+ router: true,
641
+ procedures: {},
642
+ ...emptyRouter,
643
+ ...result,
644
+ record: opts,
645
+ queries: Object.entries(result.procedures || {}).filter(pair => pair[1]._def.query).reduce((acc, [key, val]) => ({ ...acc,
646
+ [key]: val
647
+ }), {}),
648
+ mutations: Object.entries(result.procedures || {}).filter(pair => pair[1]._def.mutation).reduce((acc, [key, val]) => ({ ...acc,
649
+ [key]: val
650
+ }), {}),
651
+ subscriptions: Object.entries(result.procedures || {}).filter(pair => pair[1]._def.subscription).reduce((acc, [key, val]) => ({ ...acc,
652
+ [key]: val
653
+ }), {}),
654
+ routers: Object.entries(result.procedures || {}).filter(pair => pair[1]._def._router).reduce((acc, [key, val]) => ({ ...acc,
655
+ [key]: val
656
+ }), {})
657
+ };
658
+ const router = { ...opts,
659
+ _def,
660
+ transformer: _def.transformer,
661
+ errorFormatter: _def.errorFormatter,
662
+
663
+ createCaller(ctx) {
664
+ const proxy = index.createProxy(({
665
+ path,
666
+ args
667
+ }) => {
668
+ // interop mode
669
+ if (path.length === 1 && procedureTypes.includes(path[0])) {
670
+ return callProcedure({
671
+ procedures: _def.procedures,
672
+ path: args[0],
673
+ rawInput: args[1],
674
+ ctx,
675
+ type: path[0]
676
+ });
677
+ }
678
+
679
+ const fullPath = path.join('.');
680
+ const procedure = _def.procedures[fullPath];
681
+ let type = 'query';
682
+
683
+ if (procedure._def.mutation) {
684
+ type = 'mutation';
685
+ } else if (procedure._def.subscription) {
686
+ type = 'subscription';
687
+ }
688
+
689
+ return procedure({
690
+ path: fullPath,
691
+ rawInput: args[0],
692
+ ctx,
693
+ type
694
+ });
695
+ });
696
+ return proxy;
697
+ },
698
+
699
+ getErrorShape(opts) {
700
+ const {
701
+ path,
702
+ error
703
+ } = opts;
704
+ const {
705
+ code
706
+ } = opts.error;
707
+ const shape = {
708
+ message: error.message,
709
+ code: envelopes.TRPC_ERROR_CODES_BY_KEY[code],
710
+ data: {
711
+ code,
712
+ httpStatus: resolveHTTPResponse.getHTTPStatusCodeFromError(error)
713
+ }
714
+ };
715
+
716
+ if (process.env.NODE_ENV !== 'production' && typeof opts.error.stack === 'string') {
717
+ shape.data.stack = opts.error.stack;
718
+ }
719
+
720
+ if (typeof path === 'string') {
721
+ shape.data.path = path;
722
+ }
723
+
724
+ return this._def.errorFormatter({ ...opts,
725
+ shape
726
+ });
727
+ }
728
+
729
+ };
730
+ return router;
731
+ };
732
+ }
733
+ /**
734
+ * @internal
735
+ */
736
+
737
+ function callProcedure(opts) {
738
+ var _opts$procedures$path;
739
+
740
+ const {
741
+ type,
742
+ path
743
+ } = opts;
744
+
745
+ if (!(path in opts.procedures) || !((_opts$procedures$path = opts.procedures[path]) !== null && _opts$procedures$path !== void 0 && _opts$procedures$path._def[type])) {
746
+ throw new TRPCError.TRPCError({
747
+ code: 'NOT_FOUND',
748
+ message: `No "${type}"-procedure on path "${path}"`
749
+ });
750
+ }
751
+
752
+ const procedure = opts.procedures[path];
753
+ return procedure(opts);
754
+ }
755
+
756
+ function migrateProcedure(oldProc, type) {
757
+ const def = oldProc._def();
758
+
759
+ const inputParser = getParseFnOrPassThrough(def.inputParser);
760
+ const outputParser = getParseFnOrPassThrough(def.outputParser);
761
+ const inputMiddleware = createInputMiddleware(inputParser);
762
+ const builder = createBuilder({
763
+ input: def.inputParser,
764
+ middlewares: [...def.middlewares, inputMiddleware, createOutputMiddleware(outputParser)],
765
+ meta: def.meta,
766
+ output: def.outputParser,
767
+ mutation: type === 'mutation',
768
+ query: type === 'query',
769
+ subscription: type === 'subscription'
770
+ });
771
+ const proc = builder[type](opts => def.resolver(opts));
772
+ return proc;
773
+ }
774
+
775
+ function migrateRouter(oldRouter) {
776
+ const errorFormatter = oldRouter._def.errorFormatter;
777
+ const transformer = oldRouter._def.transformer;
778
+ const queries = {};
779
+ const mutations = {};
780
+ const subscriptions = {};
781
+
782
+ for (const [name, procedure] of Object.entries(oldRouter._def.queries)) {
783
+ queries[name] = migrateProcedure(procedure, 'query');
784
+ }
785
+
786
+ for (const [name, procedure] of Object.entries(oldRouter._def.mutations)) {
787
+ mutations[name] = migrateProcedure(procedure, 'mutation');
788
+ }
789
+
790
+ for (const [name, procedure] of Object.entries(oldRouter._def.subscriptions)) {
791
+ subscriptions[name] = migrateProcedure(procedure, 'subscription');
792
+ }
793
+
794
+ const procedures = mergeWithoutOverrides(queries, mutations, subscriptions);
795
+ const newRouter = createRouterFactory({
796
+ transformer,
797
+ errorFormatter
798
+ })(procedures);
799
+ return newRouter;
800
+ }
801
+
802
+ /* eslint-disable @typescript-eslint/ban-types */
803
+ resolveHTTPResponse.assertNotBrowser();
804
+
805
+ function getDataTransformer(transformer) {
806
+ if ('input' in transformer) {
807
+ return transformer;
808
+ }
809
+
810
+ return {
811
+ input: transformer,
812
+ output: transformer
813
+ };
814
+ }
815
+ /**
816
+ * @internal
817
+ * @deprecated
818
+ */
819
+
820
+
821
+ const PROCEDURE_DEFINITION_MAP = {
822
+ query: 'queries',
823
+ mutation: 'mutations',
824
+ subscription: 'subscriptions'
825
+ };
826
+ /**
827
+ * @internal
828
+ * @deprecated
829
+ */
830
+
831
+ function safeObject(...args) {
832
+ return Object.assign(Object.create(null), ...args);
833
+ }
834
+
835
+ /**
836
+ * @internal The type signature of this class may change without warning.
837
+ * @deprecated
838
+ */
839
+ class Router {
840
+ constructor(def) {
841
+ var _def$queries, _def$mutations, _def$subscriptions, _def$middlewares, _def$errorFormatter, _def$transformer;
842
+
843
+ this._def = void 0;
844
+ this._def = {
845
+ queries: (_def$queries = def === null || def === void 0 ? void 0 : def.queries) !== null && _def$queries !== void 0 ? _def$queries : safeObject(),
846
+ mutations: (_def$mutations = def === null || def === void 0 ? void 0 : def.mutations) !== null && _def$mutations !== void 0 ? _def$mutations : safeObject(),
847
+ subscriptions: (_def$subscriptions = def === null || def === void 0 ? void 0 : def.subscriptions) !== null && _def$subscriptions !== void 0 ? _def$subscriptions : safeObject(),
848
+ middlewares: (_def$middlewares = def === null || def === void 0 ? void 0 : def.middlewares) !== null && _def$middlewares !== void 0 ? _def$middlewares : [],
849
+ errorFormatter: (_def$errorFormatter = def === null || def === void 0 ? void 0 : def.errorFormatter) !== null && _def$errorFormatter !== void 0 ? _def$errorFormatter : defaultFormatter,
850
+ transformer: (_def$transformer = def === null || def === void 0 ? void 0 : def.transformer) !== null && _def$transformer !== void 0 ? _def$transformer : defaultTransformer
851
+ };
852
+ }
853
+
854
+ static prefixProcedures(procedures, prefix) {
855
+ const eps = safeObject();
856
+
857
+ for (const [key, procedure] of Object.entries(procedures)) {
858
+ eps[prefix + key] = procedure;
859
+ }
860
+
861
+ return eps;
862
+ }
863
+
864
+ query(path, procedure) {
865
+ const router = new Router({
866
+ queries: safeObject({
867
+ [path]: createProcedure(procedure)
868
+ })
869
+ });
870
+ return this.merge(router);
871
+ }
872
+
873
+ mutation(path, procedure) {
874
+ const router = new Router({
875
+ mutations: safeObject({
876
+ [path]: createProcedure(procedure)
877
+ })
878
+ });
879
+ return this.merge(router);
880
+ }
881
+ /**
882
+ * @beta Might change without a major version bump
883
+ */
884
+
885
+
886
+ subscription(path, procedure) {
887
+ const router = new Router({
888
+ subscriptions: safeObject({
889
+ [path]: createProcedure(procedure)
890
+ })
891
+ });
892
+ return this.merge(router);
893
+ }
894
+ /**
895
+ * Merge router with other router
896
+ * @param router
897
+ */
898
+
899
+
900
+ merge(prefixOrRouter, maybeRouter) {
901
+ let prefix = '';
902
+ let childRouter;
903
+
904
+ if (typeof prefixOrRouter === 'string' && maybeRouter instanceof Router) {
905
+ prefix = prefixOrRouter;
906
+ childRouter = maybeRouter;
907
+ } else if (prefixOrRouter instanceof Router) {
908
+ childRouter = prefixOrRouter;
909
+ }
910
+ /* istanbul ignore next */
911
+ else {
912
+ throw new Error('Invalid args');
913
+ }
914
+
915
+ const duplicateQueries = Object.keys(childRouter._def.queries).filter(key => !!this._def['queries'][prefix + key]);
916
+ const duplicateMutations = Object.keys(childRouter._def.mutations).filter(key => !!this._def['mutations'][prefix + key]);
917
+ const duplicateSubscriptions = Object.keys(childRouter._def.subscriptions).filter(key => !!this._def['subscriptions'][prefix + key]);
918
+ const duplicates = [...duplicateQueries, ...duplicateMutations, ...duplicateSubscriptions];
919
+
920
+ if (duplicates.length) {
921
+ throw new Error(`Duplicate endpoint(s): ${duplicates.join(', ')}`);
922
+ }
923
+
924
+ const mergeProcedures = defs => {
925
+ const newDefs = safeObject();
926
+
927
+ for (const [key, procedure] of Object.entries(defs)) {
928
+ const newProcedure = procedure.inheritMiddlewares(this._def.middlewares);
929
+ newDefs[key] = newProcedure;
930
+ }
931
+
932
+ return Router.prefixProcedures(newDefs, prefix);
933
+ };
934
+
935
+ return new Router({ ...this._def,
936
+ queries: safeObject(this._def.queries, mergeProcedures(childRouter._def.queries)),
937
+ mutations: safeObject(this._def.mutations, mergeProcedures(childRouter._def.mutations)),
938
+ subscriptions: safeObject(this._def.subscriptions, mergeProcedures(childRouter._def.subscriptions))
939
+ });
940
+ }
941
+ /**
942
+ * Invoke procedure. Only for internal use within library.
943
+ */
944
+
945
+
946
+ async call(opts) {
947
+ const {
948
+ type,
949
+ path
950
+ } = opts;
951
+ const defTarget = PROCEDURE_DEFINITION_MAP[type];
952
+ const defs = this._def[defTarget];
953
+ const procedure = defs[path];
954
+
955
+ if (!procedure) {
956
+ throw new TRPCError.TRPCError({
957
+ code: 'NOT_FOUND',
958
+ message: `No "${type}"-procedure on path "${path}"`
959
+ });
960
+ }
961
+
962
+ return procedure.call(opts);
963
+ }
964
+
965
+ createCaller(ctx) {
966
+ return {
967
+ query: (path, ...args) => {
968
+ return this.call({
969
+ type: 'query',
970
+ ctx,
971
+ path,
972
+ rawInput: args[0]
973
+ });
974
+ },
975
+ mutation: (path, ...args) => {
976
+ return this.call({
977
+ type: 'mutation',
978
+ ctx,
979
+ path,
980
+ rawInput: args[0]
981
+ });
982
+ },
983
+ subscription: (path, ...args) => {
984
+ return this.call({
985
+ type: 'subscription',
986
+ ctx,
987
+ path,
988
+ rawInput: args[0]
989
+ });
990
+ }
991
+ };
992
+ }
993
+ /**
994
+ * Function to be called before any procedure is invoked
995
+ * @link https://trpc.io/docs/middlewares
996
+ */
997
+
998
+
999
+ middleware(middleware) {
1000
+ return new Router({ ...this._def,
1001
+ middlewares: [...this._def.middlewares, middleware]
1002
+ });
1003
+ }
1004
+ /**
1005
+ * Format errors
1006
+ * @link https://trpc.io/docs/error-formatting
1007
+ */
1008
+
1009
+
1010
+ formatError(errorFormatter) {
1011
+ if (this._def.errorFormatter !== defaultFormatter) {
1012
+ throw new Error('You seem to have double `formatError()`-calls in your router tree');
1013
+ }
1014
+
1015
+ return new Router({ ...this._def,
1016
+ errorFormatter: errorFormatter
1017
+ });
1018
+ }
1019
+
1020
+ getErrorShape(opts) {
1021
+ const {
1022
+ path,
1023
+ error
1024
+ } = opts;
1025
+ const {
1026
+ code
1027
+ } = opts.error;
1028
+ const shape = {
1029
+ message: error.message,
1030
+ code: envelopes.TRPC_ERROR_CODES_BY_KEY[code],
1031
+ data: {
1032
+ code,
1033
+ httpStatus: resolveHTTPResponse.getHTTPStatusCodeFromError(error)
1034
+ }
1035
+ };
1036
+
1037
+ if (process.env.NODE_ENV !== 'production' && typeof opts.error.stack === 'string') {
1038
+ shape.data.stack = opts.error.stack;
1039
+ }
1040
+
1041
+ if (typeof path === 'string') {
1042
+ shape.data.path = path;
1043
+ }
1044
+
1045
+ return this._def.errorFormatter({ ...opts,
1046
+ shape
1047
+ });
1048
+ }
1049
+ /**
1050
+ * Add data transformer to serialize/deserialize input args + output
1051
+ * @link https://trpc.io/docs/data-transformers
1052
+ */
1053
+
1054
+
1055
+ transformer(_transformer) {
1056
+ const transformer = getDataTransformer(_transformer);
1057
+
1058
+ if (this._def.transformer !== defaultTransformer) {
1059
+ throw new Error('You seem to have double `transformer()`-calls in your router tree');
1060
+ }
1061
+
1062
+ return new Router({ ...this._def,
1063
+ transformer
1064
+ });
1065
+ }
1066
+ /**
1067
+ * Flattens the generics of TQueries/TMutations/TSubscriptions.
1068
+ * ⚠️ Experimental - might disappear. ⚠️
1069
+ *
1070
+ * @alpha
1071
+ */
1072
+
1073
+
1074
+ flat() {
1075
+ return this;
1076
+ }
1077
+ /**
1078
+ * Interop mode for v9.x -> v10.x
1079
+ */
1080
+
1081
+
1082
+ interop() {
1083
+ return migrateRouter(this);
1084
+ }
1085
+
1086
+ }
1087
+ /**
1088
+ * @deprecated
1089
+ */
1090
+
1091
+ function router() {
1092
+ return new Router();
1093
+ }
1094
+
1095
+ exports.callProcedure = callProcedure;
1096
+ exports.createBuilder = createBuilder;
1097
+ exports.createRouterFactory = createRouterFactory;
1098
+ exports.defaultFormatter = defaultFormatter;
1099
+ exports.defaultTransformer = defaultTransformer;
1100
+ exports.getDataTransformer = getDataTransformer$1;
1101
+ exports.mergeWithoutOverrides = mergeWithoutOverrides;
1102
+ exports.procedureTypes = procedureTypes;
1103
+ exports.router = router;