@trpc/server 10.0.0-alpha.8 → 10.0.0-proxy-alpha.53

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