@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,121 @@
1
+ import { DefaultErrorShape } from '../error/formatter';
2
+ import { CombinedDataTransformer } from '../transformer';
3
+ import { RootConfig } from './internals/config';
4
+ import {
5
+ ProcedureBuilderDef,
6
+ ProcedureCallOptions,
7
+ } from './internals/procedureBuilder';
8
+ import { UnsetMarker } from './internals/utils';
9
+
10
+ type ClientContext = Record<string, unknown>;
11
+
12
+ /**
13
+ * @internal
14
+ */
15
+ export interface ProcedureOptions {
16
+ /**
17
+ * Client-side context
18
+ */
19
+ context?: ClientContext;
20
+ signal?: AbortSignal;
21
+ }
22
+
23
+ /**
24
+ * FIXME: this should only take 1 generic argument instead of a list
25
+ * @internal
26
+ */
27
+ export interface ProcedureParams<
28
+ TConfig extends RootConfig = {
29
+ transformer: CombinedDataTransformer;
30
+ errorShape: DefaultErrorShape;
31
+ ctx: Record<string, unknown>;
32
+ meta: Record<string, unknown>;
33
+ },
34
+ TContextIn = unknown,
35
+ TContextOut = unknown,
36
+ TInputIn = unknown,
37
+ TInputOut = unknown,
38
+ TOutputIn = unknown,
39
+ TOutputOut = unknown,
40
+ TMeta = unknown,
41
+ > {
42
+ // FIXME make non-optional
43
+ _config: TConfig;
44
+ /**
45
+ * @internal
46
+ */
47
+ _meta: TMeta;
48
+ /**
49
+ * @internal
50
+ */
51
+ _ctx_in: TContextIn;
52
+ /**
53
+ * @internal
54
+ */
55
+ _ctx_out: TContextOut;
56
+ /**
57
+ * @internal
58
+ */
59
+ _input_in: TInputIn;
60
+ /**
61
+ * @internal
62
+ */
63
+ _input_out: TInputOut;
64
+ /**
65
+ * @internal
66
+ */
67
+ _output_in: TOutputIn;
68
+ /**
69
+ * @internal
70
+ */
71
+ _output_out: TOutputOut;
72
+ }
73
+
74
+ /**
75
+ * @internal
76
+ */
77
+ export type ProcedureArgs<TParams extends ProcedureParams> =
78
+ TParams['_input_in'] extends UnsetMarker
79
+ ? [input?: undefined | void, opts?: ProcedureOptions]
80
+ : undefined extends TParams['_input_in']
81
+ ? [input?: TParams['_input_in'] | void, opts?: ProcedureOptions]
82
+ : [input: TParams['_input_in'], opts?: ProcedureOptions];
83
+
84
+ /**
85
+ *
86
+ * @internal
87
+ */
88
+ export interface ProcedureBase<TParams extends ProcedureParams> {
89
+ _def: TParams & ProcedureBuilderDef;
90
+ /**
91
+ * @deprecated use `._def.meta` instead
92
+ */
93
+ meta?: TParams['_meta'];
94
+ _procedure: true;
95
+ /**
96
+ * @internal
97
+ */
98
+ (opts: ProcedureCallOptions): Promise<unknown>;
99
+ }
100
+
101
+ export interface QueryProcedure<TParams extends ProcedureParams>
102
+ extends ProcedureBase<TParams> {
103
+ _query: true;
104
+ }
105
+
106
+ export interface MutationProcedure<TParams extends ProcedureParams>
107
+ extends ProcedureBase<TParams> {
108
+ _mutation: true;
109
+ }
110
+
111
+ export interface SubscriptionProcedure<TParams extends ProcedureParams>
112
+ extends ProcedureBase<TParams> {
113
+ _subscription: true;
114
+ }
115
+
116
+ export type Procedure<TParams extends ProcedureParams> =
117
+ | QueryProcedure<TParams>
118
+ | MutationProcedure<TParams>
119
+ | SubscriptionProcedure<TParams>;
120
+
121
+ export type AnyProcedure = Procedure<any>;
@@ -0,0 +1,351 @@
1
+ import { inferProcedureOutput } from '.';
2
+ import { Filter } from '..';
3
+ import { TRPCError } from '../error/TRPCError';
4
+ import {
5
+ DefaultErrorShape,
6
+ ErrorFormatter,
7
+ defaultFormatter,
8
+ } from '../error/formatter';
9
+ import { getHTTPStatusCodeFromError } from '../http/internals/getHTTPStatusCode';
10
+ import { TRPCErrorShape, TRPC_ERROR_CODES_BY_KEY } from '../rpc';
11
+ import { createProxy } from '../shared';
12
+ import { CombinedDataTransformer, defaultTransformer } from '../transformer';
13
+ import { RootConfig } from './internals/config';
14
+ import { mergeWithoutOverrides } from './internals/mergeWithoutOverrides';
15
+ import { omitPrototype } from './internals/omitPrototype';
16
+ import { ProcedureCallOptions } from './internals/procedureBuilder';
17
+ import {
18
+ AnyProcedure,
19
+ MutationProcedure,
20
+ Procedure,
21
+ ProcedureArgs,
22
+ QueryProcedure,
23
+ SubscriptionProcedure,
24
+ } from './procedure';
25
+ import { ProcedureType, procedureTypes } from './types';
26
+
27
+ /** @internal **/
28
+ export type ProcedureRecord = Record<string, Procedure<any>>;
29
+
30
+ export type ProcedureRouterRecord = Record<string, Procedure<any> | AnyRouter>;
31
+
32
+ export interface ProcedureStructure {
33
+ queries: Record<string, QueryProcedure<any>>;
34
+ mutations: Record<string, MutationProcedure<any>>;
35
+ subscriptions: Record<string, SubscriptionProcedure<any>>;
36
+ procedures: ProcedureRecord;
37
+ }
38
+
39
+ export interface RouterDef<
40
+ // FIXME this should use RootConfig
41
+ TContext,
42
+ TErrorShape extends TRPCErrorShape<number>,
43
+ TMeta extends Record<string, unknown>,
44
+ TRecord extends ProcedureRouterRecord,
45
+ > {
46
+ router: true;
47
+ /**
48
+ * @internal
49
+ */
50
+ _ctx: TContext;
51
+ /**
52
+ * @internal
53
+ */
54
+ _errorShape: TErrorShape;
55
+ /**
56
+ * @internal
57
+ */
58
+ _meta: TMeta;
59
+ errorFormatter: ErrorFormatter<TContext, TErrorShape>;
60
+ transformer: CombinedDataTransformer;
61
+ // FIXME this is slow:
62
+ // - I think this has to go & be replaced by something by only using `TRecord` without `& SimpleFlatten...`
63
+ // - Potentially, we have a `legacyProcedures` record where we only register the old things that are availble by string path
64
+ procedures: TRecord;
65
+ /**
66
+ * V9 procedures
67
+ * @deprecated
68
+ */
69
+ legacy: {};
70
+ routers: Filter<TRecord, Router<any>>;
71
+ record: TRecord;
72
+ /**
73
+ * FIXME remove?
74
+ * @deprecated
75
+ */
76
+ subscriptions: Filter<TRecord, SubscriptionProcedure<any> & { _old: true }>;
77
+ /**
78
+ * FIXME remove?
79
+ * @deprecated
80
+ */
81
+ queries: Filter<TRecord, QueryProcedure<any> & { _old: true }>;
82
+ /**
83
+ * FIXME remove?
84
+ * @deprecated
85
+ */
86
+ mutations: Filter<TRecord, MutationProcedure<any> & { _old: true }>;
87
+ }
88
+
89
+ export type AnyRouterDef<TContext = any> = RouterDef<TContext, any, any, any>;
90
+
91
+ /**
92
+ * @internal
93
+ */
94
+ export type inferHandlerInput<TProcedure extends Procedure<any>> =
95
+ TProcedure extends Procedure<infer TDef>
96
+ ? undefined extends TDef['_input_in'] // ? is input optional
97
+ ? unknown extends TDef['_input_in'] // ? is input unset
98
+ ? [(null | undefined)?] // -> there is no input
99
+ : [(TDef['_input_in'] | null | undefined)?] // -> there is optional input
100
+ : [TDef['_input_in']] // -> input is required
101
+ : [(undefined | null)?]; // -> there is no input
102
+
103
+ /**
104
+ * @internal
105
+ */
106
+ type inferHandlerFn<TProcedures extends Record<string, Procedure<any>>> = <
107
+ TProcedure extends TProcedures[TPath],
108
+ TPath extends keyof TProcedures & string,
109
+ >(
110
+ path: TPath,
111
+ ...args: inferHandlerInput<TProcedure>
112
+ ) => Promise<inferProcedureOutput<TProcedure>>;
113
+
114
+ type DecorateProcedure<TProcedure extends Procedure<any>> = (
115
+ input: ProcedureArgs<TProcedure['_def']>[0],
116
+ ) => Promise<TProcedure['_def']['_output_out']>;
117
+
118
+ type assertProcedure<T> = T extends Procedure<any> ? T : never;
119
+
120
+ /**
121
+ * @internal
122
+ */
123
+ type DecoratedProcedureRecord<TProcedures extends ProcedureRouterRecord> = {
124
+ [TKey in keyof TProcedures]: TProcedures[TKey] extends AnyRouter
125
+ ? DecoratedProcedureRecord<TProcedures[TKey]['_def']['record']>
126
+ : DecorateProcedure<assertProcedure<TProcedures[TKey]>>;
127
+ };
128
+
129
+ /**
130
+ * @internal
131
+ */
132
+ type RouterCaller<TDef extends AnyRouterDef> = (ctx: TDef['_ctx']) => {
133
+ /**
134
+ * @deprecated
135
+ */
136
+ query: inferHandlerFn<TDef['queries']>;
137
+ /**
138
+ * @deprecated
139
+ */
140
+ mutation: inferHandlerFn<TDef['mutations']>;
141
+ /**
142
+ * @deprecated
143
+ */
144
+ subscription: inferHandlerFn<TDef['subscriptions']>;
145
+ } & DecoratedProcedureRecord<TDef['record']>;
146
+
147
+ export interface Router<TDef extends AnyRouterDef> {
148
+ _def: TDef;
149
+ /** @deprecated **/
150
+ errorFormatter: TDef['errorFormatter'];
151
+ /** @deprecated **/
152
+ transformer: TDef['transformer'];
153
+ createCaller: RouterCaller<TDef>;
154
+ // FIXME rename me and deprecate
155
+ getErrorShape(opts: {
156
+ error: TRPCError;
157
+ type: ProcedureType | 'unknown';
158
+ path: string | undefined;
159
+ input: unknown;
160
+ ctx: undefined | TDef['_ctx'];
161
+ }): TDef['_errorShape'];
162
+ }
163
+
164
+ /**
165
+ * @internal
166
+ */
167
+ export type RouterDefaultOptions<TContext> = Pick<
168
+ AnyRouterDef<TContext>,
169
+ 'transformer' | 'errorFormatter'
170
+ >;
171
+
172
+ /**
173
+ * @internal
174
+ */
175
+ export type RouterBuildOptions<TContext> = Partial<
176
+ Pick<AnyRouterDef<TContext>, 'procedures'>
177
+ >;
178
+
179
+ export type AnyRouter = Router<any>;
180
+
181
+ function isRouter(
182
+ procedureOrRouter: AnyProcedure | AnyRouter,
183
+ ): procedureOrRouter is AnyRouter {
184
+ return 'router' in procedureOrRouter._def;
185
+ }
186
+
187
+ const emptyRouter = {
188
+ _ctx: null as any,
189
+ _errorShape: null as any,
190
+ _meta: null as any,
191
+ queries: {},
192
+ mutations: {},
193
+ subscriptions: {},
194
+ errorFormatter: defaultFormatter,
195
+ transformer: defaultTransformer,
196
+ };
197
+
198
+ /**
199
+ *
200
+ * @internal
201
+ */
202
+ export function createRouterFactory<TConfig extends RootConfig>(
203
+ defaults?: RouterDefaultOptions<TConfig['ctx']>,
204
+ ) {
205
+ return function createRouterInner<
206
+ TProcRouterRecord extends ProcedureRouterRecord,
207
+ >(
208
+ opts: TProcRouterRecord,
209
+ ): Router<
210
+ RouterDef<
211
+ TConfig['ctx'],
212
+ TConfig['errorShape'],
213
+ TConfig['meta'],
214
+ TProcRouterRecord
215
+ >
216
+ > &
217
+ TProcRouterRecord {
218
+ const routerProcedures: Record<string, Procedure<any>> = omitPrototype({});
219
+ function recursiveGetPaths(procedures: ProcedureRouterRecord, path = '') {
220
+ for (const [key, procedureOrRouter] of Object.entries(procedures ?? {})) {
221
+ const newPath = `${path}${key}`;
222
+
223
+ if (isRouter(procedureOrRouter)) {
224
+ recursiveGetPaths(procedureOrRouter._def.procedures, `${newPath}.`);
225
+ continue;
226
+ }
227
+
228
+ routerProcedures[newPath] = procedureOrRouter;
229
+ }
230
+ }
231
+
232
+ recursiveGetPaths(opts);
233
+
234
+ const result = mergeWithoutOverrides<
235
+ RouterDefaultOptions<TConfig['ctx']> & RouterBuildOptions<TConfig['ctx']>
236
+ >(
237
+ {
238
+ transformer: defaults?.transformer ?? defaultTransformer,
239
+ errorFormatter: defaults?.errorFormatter ?? defaultFormatter,
240
+ },
241
+ { procedures: routerProcedures },
242
+ );
243
+
244
+ const _def: AnyRouterDef<TConfig['ctx']> = {
245
+ router: true,
246
+ legacy: {},
247
+ procedures: {},
248
+ ...emptyRouter,
249
+ ...result,
250
+ record: opts,
251
+ queries: Object.entries(result.procedures || {})
252
+ .filter((pair) => (pair[1] as any)._def.query)
253
+ .reduce((acc, [key, val]) => ({ ...acc, [key]: val }), {}),
254
+ mutations: Object.entries(result.procedures || {})
255
+ .filter((pair) => (pair[1] as any)._def.mutation)
256
+ .reduce((acc, [key, val]) => ({ ...acc, [key]: val }), {}),
257
+ subscriptions: Object.entries(result.procedures || {})
258
+ .filter((pair) => (pair[1] as any)._def.subscription)
259
+ .reduce((acc, [key, val]) => ({ ...acc, [key]: val }), {}),
260
+ routers: Object.entries(result.procedures || {})
261
+ .filter((pair) => (pair[1] as any)._def._router)
262
+ .reduce((acc, [key, val]) => ({ ...acc, [key]: val }), {}),
263
+ };
264
+
265
+ const router: AnyRouter = {
266
+ ...opts,
267
+ _def,
268
+ transformer: _def.transformer,
269
+ errorFormatter: _def.errorFormatter,
270
+ createCaller(ctx) {
271
+ const proxy = createProxy(({ path, args }) => {
272
+ // interop mode
273
+ if (
274
+ path.length === 1 &&
275
+ procedureTypes.includes(path[0] as ProcedureType)
276
+ ) {
277
+ return callProcedure({
278
+ procedures: _def.procedures,
279
+ path: args[0] as string,
280
+ rawInput: args[1],
281
+ ctx,
282
+ type: path[0] as ProcedureType,
283
+ });
284
+ }
285
+
286
+ const fullPath = path.join('.');
287
+ const procedure = _def.procedures[fullPath] as AnyProcedure;
288
+
289
+ let type: ProcedureType = 'query';
290
+ if (procedure._def.mutation) {
291
+ type = 'mutation';
292
+ } else if (procedure._def.subscription) {
293
+ type = 'subscription';
294
+ }
295
+
296
+ return procedure({
297
+ path: fullPath,
298
+ rawInput: args[0],
299
+ ctx,
300
+ type,
301
+ });
302
+ });
303
+
304
+ return proxy as ReturnType<RouterCaller<any>>;
305
+ },
306
+ getErrorShape(opts) {
307
+ const { path, error } = opts;
308
+ const { code } = opts.error;
309
+ const shape: DefaultErrorShape = {
310
+ message: error.message,
311
+ code: TRPC_ERROR_CODES_BY_KEY[code],
312
+ data: {
313
+ code,
314
+ httpStatus: getHTTPStatusCodeFromError(error),
315
+ },
316
+ };
317
+ if (
318
+ process.env.NODE_ENV !== 'production' &&
319
+ typeof opts.error.stack === 'string'
320
+ ) {
321
+ shape.data.stack = opts.error.stack;
322
+ }
323
+ if (typeof path === 'string') {
324
+ shape.data.path = path;
325
+ }
326
+ return this._def.errorFormatter({ ...opts, shape });
327
+ },
328
+ };
329
+ return router as any;
330
+ };
331
+ }
332
+
333
+ /**
334
+ * @internal
335
+ */
336
+ export function callProcedure(
337
+ opts: ProcedureCallOptions & { procedures: ProcedureRouterRecord },
338
+ ) {
339
+ const { type, path } = opts;
340
+
341
+ if (!(path in opts.procedures) || !opts.procedures[path]?._def[type]) {
342
+ throw new TRPCError({
343
+ code: 'NOT_FOUND',
344
+ message: `No "${type}"-procedure on path "${path}"`,
345
+ });
346
+ }
347
+
348
+ const procedure = opts.procedures[path] as AnyProcedure;
349
+
350
+ return procedure(opts);
351
+ }
@@ -0,0 +1,58 @@
1
+ import { inferObservableValue } from '../observable';
2
+ import { Procedure, ProcedureArgs } from './procedure';
3
+ import { AnyRouter, AnyRouterDef, Router } from './router';
4
+
5
+ export type inferRouterDef<TRouter extends AnyRouter> = TRouter extends Router<
6
+ infer TParams
7
+ >
8
+ ? TParams extends AnyRouterDef<any>
9
+ ? TParams
10
+ : never
11
+ : never;
12
+
13
+ export type inferRouterContext<TRouter extends AnyRouter> =
14
+ inferRouterDef<TRouter>['_ctx'];
15
+ export type inferRouterError<TRouter extends AnyRouter> =
16
+ inferRouterDef<TRouter>['_errorShape'];
17
+ export type inferRouterMeta<TRouter extends AnyRouter> =
18
+ inferRouterDef<TRouter>['_meta'];
19
+
20
+ export const procedureTypes = ['query', 'mutation', 'subscription'] as const;
21
+ /**
22
+ * @public
23
+ */
24
+ export type ProcedureType = typeof procedureTypes[number];
25
+
26
+ export type inferHandlerInput<TProcedure extends Procedure<any>> =
27
+ ProcedureArgs<inferProcedureParams<TProcedure>>;
28
+
29
+ export type inferProcedureInput<TProcedure extends Procedure<any>> =
30
+ inferHandlerInput<TProcedure>[0];
31
+
32
+ // /**
33
+ // * @internal
34
+ // */
35
+ // type inferProcedureFn<TProcedure extends Procedure<any>> =
36
+ // TProcedure extends QueryProcedure<any>
37
+ // ? TProcedure['query']
38
+ // : TProcedure extends SubscriptionProcedure<any>
39
+ // ? TProcedure['subscription']
40
+ // : TProcedure extends MutationProcedure<any>
41
+ // ? TProcedure['mutate']
42
+ // : never;
43
+
44
+ export type inferProcedureParams<TProcedure> = TProcedure extends Procedure<any>
45
+ ? TProcedure['_def']
46
+ : never;
47
+ export type inferProcedureOutput<TProcedure> =
48
+ inferProcedureParams<TProcedure>['_output_out'];
49
+
50
+ export type inferSubscriptionOutput<
51
+ TRouter extends AnyRouter,
52
+ TPath extends keyof TRouter['_def']['subscriptions'] & string,
53
+ > = inferObservableValue<
54
+ inferProcedureOutput<TRouter['_def']['subscriptions'][TPath]>
55
+ >;
56
+
57
+ export type inferProcedureClientError<T extends Procedure<any>> =
58
+ inferProcedureParams<T>['_config']['errorShape'];
@@ -1,6 +1,9 @@
1
+ import { Observable } from '../../observable';
1
2
  import { AnyRouter, ProcedureType } from '../router';
2
- import { Subscription } from '../subscription';
3
3
 
4
+ /**
5
+ * @deprecated
6
+ */
4
7
  export async function callProcedure<
5
8
  TRouter extends AnyRouter<TContext>,
6
9
  TContext,
@@ -10,7 +13,7 @@ export async function callProcedure<
10
13
  router: TRouter;
11
14
  ctx: TContext;
12
15
  type: ProcedureType;
13
- }): Promise<unknown | Subscription<TRouter>> {
16
+ }): Promise<unknown | Observable<TRouter, any>> {
14
17
  const { type, path, input } = opts;
15
18
 
16
19
  const caller = opts.router.createCaller(opts.ctx);
@@ -21,7 +24,10 @@ export async function callProcedure<
21
24
  return caller.mutation(path, input as any);
22
25
  }
23
26
  if (type === 'subscription') {
24
- const sub = (await caller.subscription(path, input as any)) as Subscription;
27
+ const sub = (await caller.subscription(path, input as any)) as Observable<
28
+ any,
29
+ any
30
+ >;
25
31
  return sub;
26
32
  }
27
33
  /* istanbul ignore next */
@@ -1,7 +1,13 @@
1
+ import { TRPCError } from '../../error/TRPCError';
1
2
  import { ProcedureType } from '../router';
2
- import { TRPCError } from '../TRPCError';
3
3
 
4
- export const middlewareMarker = Symbol('middlewareMarker');
4
+ /**
5
+ * @deprecated
6
+ */
7
+ export const middlewareMarker = 'middlewareMarker' as 'middlewareMarker' & {
8
+ __brand: 'middlewareMarker';
9
+ };
10
+
5
11
  interface MiddlewareResultBase<TContext> {
6
12
  /**
7
13
  * All middlewares should pass through their `next()`'s output.
@@ -11,11 +17,18 @@ interface MiddlewareResultBase<TContext> {
11
17
  ctx: TContext;
12
18
  }
13
19
 
20
+ /**
21
+ * @deprecated
22
+ */
14
23
  interface MiddlewareOKResult<TContext> extends MiddlewareResultBase<TContext> {
15
24
  ok: true;
16
25
  data: unknown;
17
26
  // this could be extended with `input`/`rawInput` later
18
27
  }
28
+
29
+ /**
30
+ * @deprecated
31
+ */
19
32
  interface MiddlewareErrorResult<TContext>
20
33
  extends MiddlewareResultBase<TContext> {
21
34
  ok: false;
@@ -23,15 +36,22 @@ interface MiddlewareErrorResult<TContext>
23
36
  // we could guarantee it's always of this type
24
37
  }
25
38
 
39
+ /**
40
+ * @deprecated
41
+ */
26
42
  export type MiddlewareResult<TContext> =
27
43
  | MiddlewareOKResult<TContext>
28
44
  | MiddlewareErrorResult<TContext>;
29
45
 
30
- export type MiddlewareFunction<TInputContext, TContext> = (opts: {
46
+ /**
47
+ * @deprecated
48
+ */
49
+ export type MiddlewareFunction<TInputContext, TContext, TMeta> = (opts: {
31
50
  ctx: TInputContext;
32
51
  type: ProcedureType;
33
52
  path: string;
34
53
  rawInput: unknown;
54
+ meta?: TMeta;
35
55
  next: {
36
56
  (): Promise<MiddlewareResult<TInputContext>>;
37
57
  <T>(opts: { ctx: T }): Promise<MiddlewareResult<T>>;