@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
@@ -1,24 +1,16 @@
1
- import { TRPC_ERROR_CODE_KEY } from './rpc/codes';
2
- import { getMessageFromUnkownError } from './internals/errors';
1
+ import { getMessageFromUnkownError } from '../error/utils';
2
+ import { TRPC_ERROR_CODE_KEY } from '../rpc/codes';
3
3
 
4
4
  export class TRPCError extends Error {
5
- /**
6
- * @deprecated use `cause`
7
- */
8
- public readonly originalError?: unknown;
9
- public readonly cause?: unknown;
5
+ public readonly cause?;
10
6
  public readonly code;
11
7
 
12
8
  constructor(opts: {
13
9
  message?: string;
14
10
  code: TRPC_ERROR_CODE_KEY;
15
- /**
16
- * @deprecated use `cause`
17
- */
18
- originalError?: unknown;
19
- cause?: unknown;
11
+ cause?: Error;
20
12
  }) {
21
- const cause = opts.cause ?? opts.originalError;
13
+ const cause = opts.cause;
22
14
  const code = opts.code;
23
15
  const message = opts.message ?? getMessageFromUnkownError(cause, code);
24
16
 
@@ -27,7 +19,7 @@ export class TRPCError extends Error {
27
19
  super(message, { cause });
28
20
 
29
21
  this.code = code;
30
- this.cause = this.originalError = cause;
22
+ this.cause = cause;
31
23
  this.name = 'TRPCError';
32
24
 
33
25
  Object.setPrototypeOf(this, new.target.prototype);
@@ -0,0 +1,51 @@
1
+ import { ProcedureType } from '../core';
2
+ import {
3
+ TRPCErrorShape,
4
+ TRPC_ERROR_CODE_KEY,
5
+ TRPC_ERROR_CODE_NUMBER,
6
+ } from '../rpc';
7
+ import { TRPCError } from './TRPCError';
8
+
9
+ /**
10
+ * @internal
11
+ */
12
+ export type ErrorFormatter<TContext, TShape extends TRPCErrorShape<number>> = ({
13
+ error,
14
+ }: {
15
+ error: TRPCError;
16
+ type: ProcedureType | 'unknown';
17
+ path: string | undefined;
18
+ input: unknown;
19
+ ctx: undefined | TContext;
20
+ shape: DefaultErrorShape;
21
+ }) => TShape;
22
+
23
+ export type ErrorFormatterShape<T> = T extends ErrorFormatter<any, infer TShape>
24
+ ? TShape
25
+ : DefaultErrorShape;
26
+ /**
27
+ * @internal
28
+ */
29
+ export type DefaultErrorData = {
30
+ code: TRPC_ERROR_CODE_KEY;
31
+ httpStatus: number;
32
+ path?: string;
33
+ stack?: string;
34
+ };
35
+
36
+ /**
37
+ * @internal
38
+ */
39
+ export interface DefaultErrorShape
40
+ extends TRPCErrorShape<TRPC_ERROR_CODE_NUMBER, DefaultErrorData> {
41
+ message: string;
42
+ code: TRPC_ERROR_CODE_NUMBER;
43
+ }
44
+
45
+ export const defaultFormatter: ErrorFormatter<any, any> = ({
46
+ shape,
47
+ }: {
48
+ shape: DefaultErrorShape;
49
+ }) => {
50
+ return shape;
51
+ };
@@ -1,4 +1,4 @@
1
- import { TRPCError } from '../TRPCError';
1
+ import { TRPCError } from './TRPCError';
2
2
 
3
3
  export function getMessageFromUnkownError(
4
4
  err: unknown,
@@ -20,14 +20,33 @@ export function getErrorFromUnknown(cause: unknown): TRPCError {
20
20
  if (cause instanceof Error && cause.name === 'TRPCError') {
21
21
  return cause as TRPCError;
22
22
  }
23
+
24
+ let errorCause: Error | undefined = undefined;
25
+ let stack: string | undefined = undefined;
26
+ let message: string | undefined = undefined;
27
+
28
+ if (cause instanceof Error) {
29
+ errorCause = cause;
30
+ // take stack trace from cause
31
+ stack = cause.stack;
32
+ message = cause.message;
33
+ }
34
+
23
35
  const err = new TRPCError({
24
36
  code: 'INTERNAL_SERVER_ERROR',
25
- cause,
37
+ cause: errorCause,
38
+ message,
26
39
  });
27
40
 
28
- // take stack trace from cause
41
+ err.stack = stack;
42
+
43
+ return err;
44
+ }
45
+
46
+ export function getCauseFromUnknown(cause: unknown) {
29
47
  if (cause instanceof Error) {
30
- err.stack = cause.stack;
48
+ return cause;
31
49
  }
32
- return err;
50
+
51
+ return undefined;
33
52
  }
package/src/http/index.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import { assertNotBrowser } from '../assertNotBrowser';
2
2
 
3
3
  export * from './resolveHTTPResponse';
4
- export * from './ResponseMeta';
4
+ export * from './types';
5
5
 
6
6
  assertNotBrowser();
@@ -1,6 +1,6 @@
1
- import { TRPCResponse, TRPC_ERROR_CODES_BY_KEY } from '../../rpc';
2
- import { TRPCError } from '../../TRPCError';
1
+ import { TRPCError } from '../../error/TRPCError';
3
2
  import { invert } from '../../internals/invert';
3
+ import { TRPCResponse, TRPC_ERROR_CODES_BY_KEY } from '../../rpc';
4
4
 
5
5
  export const TRPC_ERROR_CODES_BY_NUMBER = invert(TRPC_ERROR_CODES_BY_KEY);
6
6
  type ValueOf<T> = T[keyof T];
@@ -17,6 +17,7 @@ const JSONRPC2_TO_HTTP_CODE: Record<
17
17
  UNAUTHORIZED: 401,
18
18
  FORBIDDEN: 403,
19
19
  TIMEOUT: 408,
20
+ CONFLICT: 409,
20
21
  CLIENT_CLOSED_REQUEST: 499,
21
22
  PRECONDITION_FAILED: 412,
22
23
  PAYLOAD_TOO_LARGE: 413,
@@ -1,15 +1,9 @@
1
- import {
2
- AnyRouter,
3
- Dict,
4
- inferRouterContext,
5
- inferRouterError,
6
- ProcedureType,
7
- ResponseMeta,
8
- TRPCError,
9
- } from '@trpc/server';
10
- import { URLSearchParams } from 'url';
11
- import { BaseHandlerOptions } from '../../internals/BaseHandlerOptions';
1
+ import { AnyRouter, ProcedureType, inferRouterDef } from '../../core';
2
+ import { TRPCError } from '../../error/TRPCError';
3
+ import { BaseHandlerOptions } from '../../internals/types';
12
4
  import { TRPCResponse } from '../../rpc';
5
+ import { Dict } from '../../types';
6
+ import { ResponseMeta } from '../types';
13
7
 
14
8
  export type HTTPHeaders = Dict<string | string[]>;
15
9
 
@@ -26,9 +20,12 @@ export interface HTTPRequest {
26
20
  body: unknown;
27
21
  }
28
22
 
29
- type ResponseMetaFn<TRouter extends AnyRouter> = (opts: {
30
- data: TRPCResponse<unknown, inferRouterError<TRouter>>[];
31
- ctx?: inferRouterContext<TRouter>;
23
+ /**
24
+ * @internal
25
+ */
26
+ export type ResponseMetaFn<TRouter extends AnyRouter> = (opts: {
27
+ data: TRPCResponse<unknown, inferRouterDef<TRouter>['_error']>[];
28
+ ctx?: inferRouterDef<TRouter>['_ctx'];
32
29
  /**
33
30
  * The different tRPC paths requested
34
31
  **/
@@ -1,22 +1,21 @@
1
1
  /* eslint-disable @typescript-eslint/no-non-null-assertion */
2
- import { Maybe } from '@trpc/server';
3
- import { callProcedure } from '../internals/callProcedure';
4
- import { getErrorFromUnknown } from '../internals/errors';
5
- import { transformTRPCResponse } from '../internals/transformTRPCResponse';
6
2
  import {
7
3
  AnyRouter,
4
+ ProcedureType,
8
5
  inferRouterContext,
9
6
  inferRouterError,
10
- ProcedureType,
11
- } from '../router';
12
- import { TRPCErrorResponse, TRPCResponse, TRPCResultResponse } from '../rpc';
13
- import { TRPCError } from '../TRPCError';
7
+ } from '../core';
8
+ import { TRPCError } from '../error/TRPCError';
9
+ import { getCauseFromUnknown, getErrorFromUnknown } from '../error/utils';
10
+ import { transformTRPCResponse } from '../internals/transformTRPCResponse';
11
+ import { TRPCResponse } from '../rpc';
12
+ import { Maybe } from '../types';
14
13
  import { getHTTPStatusCode } from './internals/getHTTPStatusCode';
15
14
  import {
15
+ HTTPBaseHandlerOptions,
16
16
  HTTPHeaders,
17
17
  HTTPRequest,
18
18
  HTTPResponse,
19
- HTTPBaseHandlerOptions,
20
19
  } from './internals/types';
21
20
 
22
21
  const HTTP_METHOD_PROCEDURE_TYPE_MAP: Record<
@@ -36,11 +35,15 @@ function getRawProcedureInputOrThrow(req: HTTPRequest) {
36
35
  const raw = req.query.get('input');
37
36
  return JSON.parse(raw!);
38
37
  }
39
- return typeof req.body === 'string' ? JSON.parse(req.body) : req.body;
40
- } catch (cause) {
38
+ if (typeof req.body === 'string') {
39
+ // A mutation with no inputs will have req.body === ''
40
+ return req.body.length === 0 ? undefined : JSON.parse(req.body);
41
+ }
42
+ return req.body;
43
+ } catch (err) {
41
44
  throw new TRPCError({
42
45
  code: 'PARSE_ERROR',
43
- cause,
46
+ cause: getCauseFromUnknown(err),
44
47
  });
45
48
  }
46
49
  }
@@ -170,14 +173,10 @@ export async function resolveHTTPResponse<
170
173
  const rawResults = await Promise.all(
171
174
  paths.map(async (path, index) => {
172
175
  const input = inputs[index];
176
+
173
177
  try {
174
- const output = await callProcedure({
175
- ctx,
176
- router,
177
- path,
178
- input,
179
- type,
180
- });
178
+ const caller = router.createCaller(ctx);
179
+ const output = await caller[type](path, input as any);
181
180
  return {
182
181
  input,
183
182
  path,
@@ -196,12 +195,11 @@ export async function resolveHTTPResponse<
196
195
  }),
197
196
  );
198
197
  const errors = rawResults.flatMap((obj) => (obj.error ? [obj.error] : []));
199
- const resultEnvelopes = rawResults.map((obj) => {
198
+ const resultEnvelopes = rawResults.map((obj): TRouterResponse => {
200
199
  const { path, input } = obj;
201
200
 
202
201
  if (obj.error) {
203
- const json: TRPCErrorResponse<TRouterError> = {
204
- id: null,
202
+ return {
205
203
  error: router.getErrorShape({
206
204
  error: obj.error,
207
205
  type,
@@ -210,20 +208,16 @@ export async function resolveHTTPResponse<
210
208
  ctx,
211
209
  }),
212
210
  };
213
- return json;
214
211
  } else {
215
- const json: TRPCResultResponse<unknown> = {
216
- id: null,
212
+ return {
217
213
  result: {
218
- type: 'data',
219
214
  data: obj.data,
220
215
  },
221
216
  };
222
- return json;
223
217
  }
224
218
  });
225
219
 
226
- const result = isBatchCall ? resultEnvelopes : resultEnvelopes[0];
220
+ const result = isBatchCall ? resultEnvelopes : resultEnvelopes[0]!;
227
221
  return endResponse(result, errors);
228
222
  } catch (cause) {
229
223
  // we get here if
@@ -233,16 +227,6 @@ export async function resolveHTTPResponse<
233
227
  // - input deserialization fails
234
228
  const error = getErrorFromUnknown(cause);
235
229
 
236
- const json: TRPCErrorResponse<TRouterError> = {
237
- id: null,
238
- error: router.getErrorShape({
239
- error,
240
- type,
241
- path: undefined,
242
- input: undefined,
243
- ctx,
244
- }),
245
- };
246
230
  onError?.({
247
231
  error,
248
232
  path: undefined,
@@ -251,6 +235,17 @@ export async function resolveHTTPResponse<
251
235
  type: type,
252
236
  req,
253
237
  });
254
- return endResponse(json, [error]);
238
+ return endResponse(
239
+ {
240
+ error: router.getErrorShape({
241
+ error,
242
+ type,
243
+ path: undefined,
244
+ input: undefined,
245
+ ctx,
246
+ }),
247
+ },
248
+ [error],
249
+ );
255
250
  }
256
251
  }
File without changes
package/src/index.ts CHANGED
@@ -1,11 +1,8 @@
1
1
  export * from './assertNotBrowser';
2
2
  export * from './http';
3
- export * from './subscription';
4
3
  export * from './transformer';
5
- export * from './TRPCError';
4
+ export * from './error/TRPCError';
6
5
  export * from './types';
7
-
8
- // deprecated
9
- export * from './deprecated/createHttpServer';
10
- export * from './deprecated/requestHandler';
11
- export * from './deprecated/LegacyRouter';
6
+ export { router } from './deprecated/router';
7
+ export * from './core';
8
+ export * from './internals';
@@ -1,33 +1,38 @@
1
- import { AnyRouter } from '../router';
2
- import { TRPCResponse } from '../rpc';
1
+ import { AnyRouter } from '../core/router';
2
+ import { TRPCResponse, TRPCResponseMessage } from '../rpc';
3
3
 
4
- function transformTRPCResponseItem(
5
- router: AnyRouter,
6
- item: TRPCResponse,
7
- ): TRPCResponse {
4
+ function transformTRPCResponseItem<
5
+ TResponseItem extends TRPCResponse | TRPCResponseMessage,
6
+ >(router: AnyRouter, item: TResponseItem): TResponseItem {
8
7
  if ('error' in item) {
9
8
  return {
10
9
  ...item,
11
10
  error: router._def.transformer.output.serialize(item.error),
12
11
  };
13
12
  }
14
- if (item.result.type !== 'data') {
15
- return item;
13
+
14
+ if ('data' in item.result) {
15
+ return {
16
+ ...item,
17
+ result: {
18
+ ...item.result,
19
+ data: router._def.transformer.output.serialize(item.result.data),
20
+ },
21
+ };
16
22
  }
17
- return {
18
- ...item,
19
- result: {
20
- ...item.result,
21
- data: router._def.transformer.output.serialize(item.result.data),
22
- },
23
- };
23
+
24
+ return item;
24
25
  }
25
26
 
26
27
  /**
27
28
  * Takes a unserialized `TRPCResponse` and serializes it with the router's transformers
28
29
  **/
29
30
  export function transformTRPCResponse<
30
- TResponse extends TRPCResponse | TRPCResponse[],
31
+ TResponse extends
32
+ | TRPCResponse
33
+ | TRPCResponse[]
34
+ | TRPCResponseMessage
35
+ | TRPCResponseMessage[],
31
36
  >(router: AnyRouter, itemOrItems: TResponse) {
32
37
  return Array.isArray(itemOrItems)
33
38
  ? itemOrItems.map((item) => transformTRPCResponseItem(router, item))
@@ -0,0 +1,24 @@
1
+ import { inferRouterDef } from '../core';
2
+ import { ProcedureType } from '../core';
3
+ import { AnyRouter } from '../core/router';
4
+ import { TRPCError } from '../error/TRPCError';
5
+
6
+ /**
7
+ * Base interface for any response handler
8
+ */
9
+ export interface BaseHandlerOptions<TRouter extends AnyRouter, TRequest> {
10
+ onError?: OnErrorFunction<TRouter, TRequest>;
11
+ batching?: {
12
+ enabled: boolean;
13
+ };
14
+ router: TRouter;
15
+ }
16
+
17
+ export type OnErrorFunction<TRouter extends AnyRouter, TRequest> = (opts: {
18
+ error: TRPCError;
19
+ type: ProcedureType | 'unknown';
20
+ path: string | undefined;
21
+ req: TRequest;
22
+ input: unknown;
23
+ ctx: undefined | inferRouterDef<TRouter>['_ctx'];
24
+ }) => void;
@@ -0,0 +1,14 @@
1
+ /**
2
+ * These types have to be exported so users can generate their own types definitions files
3
+ */
4
+ export type { DefaultErrorShape } from './error/formatter';
5
+ export type { mergeRoutersGeneric } from './core/internals/__generated__/mergeRoutersGeneric';
6
+ export type { ProcedureBuilder } from './core/internals/procedureBuilder';
7
+ export type { Overwrite, unsetMarker } from './core/internals/utils';
8
+ export type { MiddlewareFunction } from './core/middleware';
9
+ export type { Router, RouterDef } from './core/router';
10
+ export type {
11
+ MutationProcedure,
12
+ QueryProcedure,
13
+ SubscriptionProcedure,
14
+ } from './core/procedure';
@@ -0,0 +1,4 @@
1
+ export * from './observable';
2
+ export * from './types';
3
+ export * from './operators';
4
+ export { observableToPromise } from './internals/observableToPromise';
@@ -0,0 +1,3 @@
1
+ export function identity<T>(x: T): T {
2
+ return x;
3
+ }
@@ -0,0 +1,49 @@
1
+ import { Observable } from '../types';
2
+
3
+ export class ObservableAbortError extends Error {
4
+ constructor(message: string) {
5
+ super(message);
6
+ this.name = 'ObservableAbortError';
7
+ Object.setPrototypeOf(this, ObservableAbortError.prototype);
8
+ }
9
+ }
10
+
11
+ /** @internal */
12
+ export function observableToPromise<TValue>(
13
+ observable: Observable<TValue, unknown>,
14
+ ) {
15
+ let abort: () => void;
16
+ const promise = new Promise<TValue>((resolve, reject) => {
17
+ let isDone = false;
18
+ function onDone() {
19
+ if (isDone) {
20
+ return;
21
+ }
22
+ isDone = true;
23
+ reject(new ObservableAbortError('This operation was aborted.'));
24
+ obs$.unsubscribe();
25
+ }
26
+ const obs$ = observable.subscribe({
27
+ next(data) {
28
+ isDone = true;
29
+ resolve(data);
30
+ onDone();
31
+ },
32
+ error(data) {
33
+ isDone = true;
34
+ reject(data);
35
+ onDone();
36
+ },
37
+ complete() {
38
+ isDone = true;
39
+ onDone();
40
+ },
41
+ });
42
+ abort = onDone;
43
+ });
44
+ return {
45
+ promise,
46
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
47
+ abort: abort!,
48
+ };
49
+ }
@@ -0,0 +1,23 @@
1
+ import { UnaryFunction } from '../types';
2
+ import { identity } from './identity';
3
+
4
+ /** @internal */
5
+ export function pipeFromArray<T, R>(
6
+ fns: Array<UnaryFunction<T, R>>,
7
+ ): UnaryFunction<T, R> {
8
+ if (fns.length === 0) {
9
+ return identity as UnaryFunction<any, any>;
10
+ }
11
+
12
+ if (fns.length === 1) {
13
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
14
+ return fns[0]!;
15
+ }
16
+
17
+ return function piped(input: T): R {
18
+ return fns.reduce(
19
+ (prev: any, fn: UnaryFunction<T, R>) => fn(prev),
20
+ input as any,
21
+ );
22
+ };
23
+ }
@@ -0,0 +1,101 @@
1
+ /* eslint-disable @typescript-eslint/no-empty-function */
2
+ import { observable, share, tap } from '.';
3
+
4
+ test('vanilla observable - complete()', () => {
5
+ const obs = observable<number, Error>((observer) => {
6
+ observer.next(1);
7
+ observer.complete();
8
+ });
9
+
10
+ const next = jest.fn();
11
+ const error = jest.fn();
12
+ const complete = jest.fn();
13
+ obs.subscribe({
14
+ next,
15
+ error,
16
+ complete,
17
+ });
18
+ expect(next.mock.calls).toHaveLength(1);
19
+ expect(complete.mock.calls).toHaveLength(1);
20
+ expect(error.mock.calls).toHaveLength(0);
21
+ expect(next.mock.calls[0]![0]!).toBe(1);
22
+ });
23
+
24
+ test('vanilla observable - unsubscribe()', () => {
25
+ const obs$ = observable<number, Error>((observer) => {
26
+ observer.next(1);
27
+ });
28
+
29
+ const next = jest.fn();
30
+ const error = jest.fn();
31
+ const complete = jest.fn();
32
+ const sub = obs$.subscribe({
33
+ next,
34
+ error,
35
+ complete,
36
+ });
37
+ sub.unsubscribe();
38
+ expect(next.mock.calls).toHaveLength(1);
39
+ expect(complete.mock.calls).toHaveLength(0);
40
+ expect(error.mock.calls).toHaveLength(0);
41
+ expect(next.mock.calls[0]![0]!).toBe(1);
42
+ });
43
+
44
+ test('pipe - combine operators', () => {
45
+ const taps = {
46
+ next: jest.fn(),
47
+ complete: jest.fn(),
48
+ error: jest.fn(),
49
+ };
50
+ const obs = observable<number, Error>((observer) => {
51
+ observer.next(1);
52
+ }).pipe(
53
+ // operators:
54
+ share(),
55
+ tap(taps),
56
+ );
57
+ {
58
+ const next = jest.fn();
59
+ const error = jest.fn();
60
+ const complete = jest.fn();
61
+ obs.subscribe({
62
+ next,
63
+ error,
64
+ complete,
65
+ });
66
+ expect(next.mock.calls).toHaveLength(1);
67
+ expect(complete.mock.calls).toHaveLength(0);
68
+ expect(error.mock.calls).toHaveLength(0);
69
+ expect(next.mock.calls[0]![0]!).toBe(1);
70
+ }
71
+
72
+ {
73
+ const next = jest.fn();
74
+ const error = jest.fn();
75
+ const complete = jest.fn();
76
+ obs.subscribe({
77
+ next,
78
+ error,
79
+ complete,
80
+ });
81
+ expect(next.mock.calls).toHaveLength(0);
82
+ expect(complete.mock.calls).toHaveLength(0);
83
+ expect(error.mock.calls).toHaveLength(0);
84
+ }
85
+
86
+ expect({
87
+ next: taps.next.mock.calls,
88
+ error: taps.error.mock.calls,
89
+ complete: taps.complete.mock.calls,
90
+ }).toMatchInlineSnapshot(`
91
+ Object {
92
+ "complete": Array [],
93
+ "error": Array [],
94
+ "next": Array [
95
+ Array [
96
+ 1,
97
+ ],
98
+ ],
99
+ }
100
+ `);
101
+ });