@trpc/server 11.0.0-next.92 → 11.0.0-rc.330

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 (470) hide show
  1. package/README.md +6 -6
  2. package/adapters/next-app-dir/index.d.ts +1 -0
  3. package/adapters/next-app-dir/index.js +1 -0
  4. package/dist/@trpc/server/http.d.ts +8 -0
  5. package/dist/@trpc/server/http.d.ts.map +1 -0
  6. package/dist/@trpc/server/index.d.ts +61 -0
  7. package/dist/@trpc/server/index.d.ts.map +1 -0
  8. package/dist/@trpc/server/rpc.d.ts +3 -0
  9. package/dist/@trpc/server/rpc.d.ts.map +1 -0
  10. package/dist/adapters/aws-lambda/index.d.ts +11 -2
  11. package/dist/adapters/aws-lambda/index.d.ts.map +1 -1
  12. package/dist/adapters/aws-lambda/index.js +27 -106
  13. package/dist/adapters/aws-lambda/index.mjs +14 -91
  14. package/dist/adapters/aws-lambda/utils.d.ts +14 -14
  15. package/dist/adapters/aws-lambda/utils.d.ts.map +1 -1
  16. package/dist/adapters/aws-lambda/utils.js +100 -0
  17. package/dist/adapters/aws-lambda/utils.mjs +93 -0
  18. package/dist/adapters/express.d.ts +11 -2
  19. package/dist/adapters/express.d.ts.map +1 -1
  20. package/dist/adapters/express.js +2 -14
  21. package/dist/adapters/express.mjs +2 -12
  22. package/dist/adapters/fastify/fastifyRequestHandler.d.ts +4 -4
  23. package/dist/adapters/fastify/fastifyRequestHandler.d.ts.map +1 -1
  24. package/dist/adapters/fastify/fastifyRequestHandler.js +80 -0
  25. package/dist/adapters/fastify/fastifyRequestHandler.mjs +78 -0
  26. package/dist/adapters/fastify/fastifyTRPCPlugin.d.ts +13 -4
  27. package/dist/adapters/fastify/fastifyTRPCPlugin.d.ts.map +1 -1
  28. package/dist/adapters/fastify/fastifyTRPCPlugin.js +48 -0
  29. package/dist/adapters/fastify/fastifyTRPCPlugin.mjs +46 -0
  30. package/dist/adapters/fastify/index.js +4 -126
  31. package/dist/adapters/fastify/index.mjs +2 -126
  32. package/dist/adapters/fetch/fetchRequestHandler.d.ts +11 -2
  33. package/dist/adapters/fetch/fetchRequestHandler.d.ts.map +1 -1
  34. package/dist/adapters/fetch/fetchRequestHandler.js +118 -0
  35. package/dist/adapters/fetch/fetchRequestHandler.mjs +116 -0
  36. package/dist/adapters/fetch/index.js +2 -106
  37. package/dist/adapters/fetch/index.mjs +1 -107
  38. package/dist/adapters/fetch/types.d.ts +13 -4
  39. package/dist/adapters/fetch/types.d.ts.map +1 -1
  40. package/dist/adapters/next-app-dir/formDataToObject.d.ts +2 -0
  41. package/dist/adapters/next-app-dir/formDataToObject.d.ts.map +1 -0
  42. package/dist/adapters/next-app-dir/formDataToObject.js +34 -0
  43. package/dist/adapters/next-app-dir/formDataToObject.mjs +32 -0
  44. package/dist/adapters/next-app-dir/nextAppDirCaller.d.ts +24 -0
  45. package/dist/adapters/next-app-dir/nextAppDirCaller.d.ts.map +1 -0
  46. package/dist/adapters/next-app-dir/nextAppDirCaller.js +85 -0
  47. package/dist/adapters/next-app-dir/nextAppDirCaller.mjs +83 -0
  48. package/dist/adapters/next-app-dir/notFound.d.ts +7 -0
  49. package/dist/adapters/next-app-dir/notFound.d.ts.map +1 -0
  50. package/dist/adapters/next-app-dir/notFound.js +15 -0
  51. package/dist/adapters/next-app-dir/notFound.mjs +13 -0
  52. package/dist/adapters/next-app-dir/redirect.d.ts +18 -0
  53. package/dist/adapters/next-app-dir/redirect.d.ts.map +1 -0
  54. package/dist/adapters/next-app-dir/redirect.js +33 -0
  55. package/dist/adapters/next-app-dir/redirect.mjs +30 -0
  56. package/dist/adapters/next-app-dir/rethrowNextErrors.d.ts +6 -0
  57. package/dist/adapters/next-app-dir/rethrowNextErrors.d.ts.map +1 -0
  58. package/dist/adapters/next-app-dir/rethrowNextErrors.js +23 -0
  59. package/dist/adapters/next-app-dir/rethrowNextErrors.mjs +21 -0
  60. package/dist/adapters/next-app-dir.d.ts +4 -0
  61. package/dist/adapters/next-app-dir.d.ts.map +1 -0
  62. package/dist/adapters/next-app-dir.js +11 -0
  63. package/dist/adapters/next-app-dir.mjs +3 -0
  64. package/dist/adapters/next.d.ts +16 -3
  65. package/dist/adapters/next.d.ts.map +1 -1
  66. package/dist/adapters/next.js +19 -19
  67. package/dist/adapters/next.mjs +18 -16
  68. package/dist/adapters/node-http/content-type/form-data/fileUploadHandler.d.ts +6 -3
  69. package/dist/adapters/node-http/content-type/form-data/fileUploadHandler.d.ts.map +1 -1
  70. package/dist/adapters/node-http/content-type/form-data/fileUploadHandler.js +161 -0
  71. package/dist/adapters/node-http/content-type/form-data/fileUploadHandler.mjs +157 -0
  72. package/dist/adapters/node-http/content-type/form-data/index.d.ts +6 -8
  73. package/dist/adapters/node-http/content-type/form-data/index.d.ts.map +1 -1
  74. package/dist/adapters/node-http/content-type/form-data/index.js +21 -647
  75. package/dist/adapters/node-http/content-type/form-data/index.mjs +10 -632
  76. package/dist/adapters/node-http/content-type/form-data/memoryUploadHandler.d.ts +2 -2
  77. package/dist/adapters/node-http/content-type/form-data/memoryUploadHandler.d.ts.map +1 -1
  78. package/dist/adapters/node-http/content-type/form-data/memoryUploadHandler.js +29 -0
  79. package/dist/adapters/node-http/content-type/form-data/memoryUploadHandler.mjs +27 -0
  80. package/dist/adapters/node-http/content-type/form-data/streamSlice.d.ts +2 -1
  81. package/dist/adapters/node-http/content-type/form-data/streamSlice.d.ts.map +1 -1
  82. package/dist/adapters/node-http/content-type/form-data/streamSlice.js +46 -0
  83. package/dist/adapters/node-http/content-type/form-data/streamSlice.mjs +44 -0
  84. package/dist/adapters/node-http/content-type/form-data/uploadHandler.d.ts +2 -2
  85. package/dist/adapters/node-http/content-type/form-data/uploadHandler.d.ts.map +1 -1
  86. package/dist/adapters/node-http/content-type/form-data/uploadHandler.js +30 -0
  87. package/dist/adapters/node-http/content-type/form-data/uploadHandler.mjs +26 -0
  88. package/dist/adapters/node-http/content-type/json/getPostBody.d.ts +2 -2
  89. package/dist/adapters/node-http/content-type/json/getPostBody.d.ts.map +1 -1
  90. package/dist/adapters/node-http/content-type/json/getPostBody.js +53 -0
  91. package/dist/adapters/node-http/content-type/json/getPostBody.mjs +51 -0
  92. package/dist/adapters/node-http/content-type/json/index.js +5 -42
  93. package/dist/adapters/node-http/content-type/json/index.mjs +4 -39
  94. package/dist/adapters/node-http/index.js +1 -14
  95. package/dist/adapters/node-http/index.mjs +1 -12
  96. package/dist/adapters/node-http/internals/contentType.d.ts +3 -3
  97. package/dist/adapters/node-http/internals/contentType.d.ts.map +1 -1
  98. package/dist/{contentType-8c16408e.js → adapters/node-http/internals/contentType.js} +1 -0
  99. package/dist/{contentType-3194ed5f.mjs → adapters/node-http/internals/contentType.mjs} +2 -1
  100. package/dist/adapters/node-http/nodeHTTPRequestHandler.d.ts +11 -2
  101. package/dist/adapters/node-http/nodeHTTPRequestHandler.d.ts.map +1 -1
  102. package/dist/{nodeHTTPRequestHandler-18f3370e.js → adapters/node-http/nodeHTTPRequestHandler.js} +18 -10
  103. package/dist/{nodeHTTPRequestHandler-0986c5a1.mjs → adapters/node-http/nodeHTTPRequestHandler.mjs} +18 -10
  104. package/dist/adapters/node-http/types.d.ts +18 -9
  105. package/dist/adapters/node-http/types.d.ts.map +1 -1
  106. package/dist/adapters/standalone.d.ts +11 -2
  107. package/dist/adapters/standalone.d.ts.map +1 -1
  108. package/dist/adapters/standalone.js +9 -22
  109. package/dist/adapters/standalone.mjs +9 -16
  110. package/dist/adapters/ws.d.ts +18 -17
  111. package/dist/adapters/ws.d.ts.map +1 -1
  112. package/dist/adapters/ws.js +34 -22
  113. package/dist/adapters/ws.mjs +27 -14
  114. package/dist/bundle-analysis.json +382 -495
  115. package/dist/http.d.ts +2 -0
  116. package/dist/http.d.ts.map +1 -0
  117. package/dist/http.js +17 -0
  118. package/dist/http.mjs +6 -0
  119. package/dist/index.d.ts +1 -14
  120. package/dist/index.d.ts.map +1 -1
  121. package/dist/index.js +16 -86
  122. package/dist/index.mjs +8 -81
  123. package/dist/observable/index.d.ts +4 -4
  124. package/dist/observable/index.d.ts.map +1 -1
  125. package/dist/observable/index.js +6 -149
  126. package/dist/observable/index.mjs +2 -147
  127. package/dist/observable/observable.d.ts +9 -1
  128. package/dist/observable/observable.d.ts.map +1 -1
  129. package/dist/{observable-464116ac.js → observable/observable.js} +50 -20
  130. package/dist/{observable-ade1bad8.mjs → observable/observable.mjs} +50 -21
  131. package/dist/observable/operators.d.ts +8 -0
  132. package/dist/observable/operators.d.ts.map +1 -0
  133. package/dist/observable/operators.js +99 -0
  134. package/dist/observable/operators.mjs +95 -0
  135. package/dist/observable/types.d.ts +2 -5
  136. package/dist/observable/types.d.ts.map +1 -1
  137. package/dist/rpc.d.ts +2 -0
  138. package/dist/rpc.d.ts.map +1 -0
  139. package/dist/{rpc/index.js → rpc.js} +3 -4
  140. package/dist/rpc.mjs +3 -0
  141. package/dist/shared.d.ts +26 -0
  142. package/dist/shared.d.ts.map +1 -0
  143. package/dist/shared.js +10 -0
  144. package/dist/shared.mjs +3 -0
  145. package/dist/unstable-core-do-not-import/clientish/inference.d.ts +17 -0
  146. package/dist/unstable-core-do-not-import/clientish/inference.d.ts.map +1 -0
  147. package/dist/unstable-core-do-not-import/clientish/inferrable.d.ts +32 -0
  148. package/dist/unstable-core-do-not-import/clientish/inferrable.d.ts.map +1 -0
  149. package/dist/unstable-core-do-not-import/clientish/serialize.d.ts +62 -0
  150. package/dist/unstable-core-do-not-import/clientish/serialize.d.ts.map +1 -0
  151. package/dist/{shared/createProxy/index.d.ts → unstable-core-do-not-import/createProxy.d.ts} +1 -1
  152. package/dist/unstable-core-do-not-import/createProxy.d.ts.map +1 -0
  153. package/dist/{index-784ff647.js → unstable-core-do-not-import/createProxy.js} +0 -51
  154. package/dist/unstable-core-do-not-import/createProxy.mjs +49 -0
  155. package/dist/{error → unstable-core-do-not-import/error}/TRPCError.d.ts +3 -2
  156. package/dist/unstable-core-do-not-import/error/TRPCError.d.ts.map +1 -0
  157. package/dist/{TRPCError-ae7b67e8.js → unstable-core-do-not-import/error/TRPCError.js} +25 -25
  158. package/dist/{TRPCError-816ff32e.mjs → unstable-core-do-not-import/error/TRPCError.mjs} +24 -25
  159. package/dist/{error → unstable-core-do-not-import/error}/formatter.d.ts +11 -6
  160. package/dist/unstable-core-do-not-import/error/formatter.d.ts.map +1 -0
  161. package/dist/unstable-core-do-not-import/error/formatter.js +7 -0
  162. package/dist/unstable-core-do-not-import/error/formatter.mjs +5 -0
  163. package/dist/unstable-core-do-not-import/error/getErrorShape.d.ts +15 -0
  164. package/dist/unstable-core-do-not-import/error/getErrorShape.d.ts.map +1 -0
  165. package/dist/unstable-core-do-not-import/error/getErrorShape.js +31 -0
  166. package/dist/unstable-core-do-not-import/error/getErrorShape.mjs +29 -0
  167. package/dist/unstable-core-do-not-import/http/batchStreamFormatter.d.ts.map +1 -0
  168. package/dist/{batchStreamFormatter-fc1ffb26.mjs → unstable-core-do-not-import/http/batchStreamFormatter.mjs} +1 -1
  169. package/dist/{http → unstable-core-do-not-import/http}/contentType.d.ts +3 -3
  170. package/dist/unstable-core-do-not-import/http/contentType.d.ts.map +1 -0
  171. package/dist/{contentType-90bad7bb.js → unstable-core-do-not-import/http/contentType.js} +1 -1
  172. package/dist/{contentType-93515a46.mjs → unstable-core-do-not-import/http/contentType.mjs} +2 -2
  173. package/dist/unstable-core-do-not-import/http/getHTTPStatusCode.d.ts +5 -0
  174. package/dist/unstable-core-do-not-import/http/getHTTPStatusCode.d.ts.map +1 -0
  175. package/dist/unstable-core-do-not-import/http/getHTTPStatusCode.js +52 -0
  176. package/dist/unstable-core-do-not-import/http/getHTTPStatusCode.mjs +49 -0
  177. package/dist/unstable-core-do-not-import/http/index.d.ts +12 -0
  178. package/dist/unstable-core-do-not-import/http/index.d.ts.map +1 -0
  179. package/dist/{http → unstable-core-do-not-import/http}/resolveHTTPResponse.d.ts +4 -5
  180. package/dist/unstable-core-do-not-import/http/resolveHTTPResponse.d.ts.map +1 -0
  181. package/dist/{resolveHTTPResponse-5def1b0c.js → unstable-core-do-not-import/http/resolveHTTPResponse.js} +60 -63
  182. package/dist/{resolveHTTPResponse-55c648bd.mjs → unstable-core-do-not-import/http/resolveHTTPResponse.mjs} +54 -57
  183. package/dist/unstable-core-do-not-import/http/toURL.d.ts +2 -0
  184. package/dist/unstable-core-do-not-import/http/toURL.d.ts.map +1 -0
  185. package/dist/unstable-core-do-not-import/http/toURL.js +8 -0
  186. package/dist/unstable-core-do-not-import/http/toURL.mjs +6 -0
  187. package/dist/unstable-core-do-not-import/http/types.d.ts +109 -0
  188. package/dist/unstable-core-do-not-import/http/types.d.ts.map +1 -0
  189. package/dist/unstable-core-do-not-import/initTRPC.d.ts +102 -0
  190. package/dist/unstable-core-do-not-import/initTRPC.d.ts.map +1 -0
  191. package/dist/unstable-core-do-not-import/initTRPC.js +81 -0
  192. package/dist/unstable-core-do-not-import/initTRPC.mjs +79 -0
  193. package/dist/unstable-core-do-not-import/middleware.d.ts +106 -0
  194. package/dist/unstable-core-do-not-import/middleware.d.ts.map +1 -0
  195. package/dist/unstable-core-do-not-import/middleware.js +96 -0
  196. package/dist/unstable-core-do-not-import/middleware.mjs +90 -0
  197. package/dist/{core → unstable-core-do-not-import}/parser.d.ts +3 -7
  198. package/dist/unstable-core-do-not-import/parser.d.ts.map +1 -0
  199. package/dist/unstable-core-do-not-import/parser.js +37 -0
  200. package/dist/unstable-core-do-not-import/parser.mjs +35 -0
  201. package/dist/unstable-core-do-not-import/procedure.d.ts +75 -0
  202. package/dist/unstable-core-do-not-import/procedure.d.ts.map +1 -0
  203. package/dist/unstable-core-do-not-import/procedure.js +9 -0
  204. package/dist/unstable-core-do-not-import/procedure.mjs +7 -0
  205. package/dist/unstable-core-do-not-import/procedureBuilder.d.ts +134 -0
  206. package/dist/unstable-core-do-not-import/procedureBuilder.d.ts.map +1 -0
  207. package/dist/unstable-core-do-not-import/procedureBuilder.js +204 -0
  208. package/dist/unstable-core-do-not-import/procedureBuilder.mjs +201 -0
  209. package/dist/{core/internals/config.d.ts → unstable-core-do-not-import/rootConfig.d.ts} +19 -27
  210. package/dist/unstable-core-do-not-import/rootConfig.d.ts.map +1 -0
  211. package/dist/unstable-core-do-not-import/rootConfig.js +8 -0
  212. package/dist/unstable-core-do-not-import/rootConfig.mjs +6 -0
  213. package/dist/unstable-core-do-not-import/router.d.ts +81 -0
  214. package/dist/unstable-core-do-not-import/router.d.ts.map +1 -0
  215. package/dist/unstable-core-do-not-import/router.js +168 -0
  216. package/dist/unstable-core-do-not-import/router.mjs +163 -0
  217. package/dist/{rpc → unstable-core-do-not-import/rpc}/codes.d.ts +8 -16
  218. package/dist/unstable-core-do-not-import/rpc/codes.d.ts.map +1 -0
  219. package/dist/{codes-87f6824b.js → unstable-core-do-not-import/rpc/codes.js} +19 -13
  220. package/dist/{codes-c924c3db.mjs → unstable-core-do-not-import/rpc/codes.mjs} +20 -13
  221. package/dist/{rpc → unstable-core-do-not-import/rpc}/envelopes.d.ts +6 -4
  222. package/dist/unstable-core-do-not-import/rpc/envelopes.d.ts.map +1 -0
  223. package/dist/unstable-core-do-not-import/rpc/index.d.ts +5 -0
  224. package/dist/unstable-core-do-not-import/rpc/index.d.ts.map +1 -0
  225. package/dist/unstable-core-do-not-import/rpc/parseTRPCMessage.d.ts.map +1 -0
  226. package/dist/{parseTRPCMessage-1377f305.js → unstable-core-do-not-import/rpc/parseTRPCMessage.js} +5 -2
  227. package/dist/{parseTRPCMessage-a0f17853.mjs → unstable-core-do-not-import/rpc/parseTRPCMessage.mjs} +6 -3
  228. package/dist/unstable-core-do-not-import/transformer.d.ts +101 -0
  229. package/dist/unstable-core-do-not-import/transformer.d.ts.map +1 -0
  230. package/dist/unstable-core-do-not-import/transformer.js +106 -0
  231. package/dist/unstable-core-do-not-import/transformer.mjs +101 -0
  232. package/dist/unstable-core-do-not-import/types.d.ts +103 -0
  233. package/dist/unstable-core-do-not-import/types.d.ts.map +1 -0
  234. package/dist/unstable-core-do-not-import/types.js +11 -0
  235. package/dist/unstable-core-do-not-import/types.mjs +9 -0
  236. package/dist/unstable-core-do-not-import/utils.d.ts +19 -0
  237. package/dist/unstable-core-do-not-import/utils.d.ts.map +1 -0
  238. package/dist/unstable-core-do-not-import/utils.js +37 -0
  239. package/dist/unstable-core-do-not-import/utils.mjs +32 -0
  240. package/dist/unstable-core-do-not-import.d.ts +31 -0
  241. package/dist/unstable-core-do-not-import.d.ts.map +1 -0
  242. package/dist/unstable-core-do-not-import.js +66 -0
  243. package/dist/unstable-core-do-not-import.mjs +21 -0
  244. package/package.json +51 -69
  245. package/src/@trpc/server/http.ts +27 -0
  246. package/src/@trpc/server/index.ts +100 -0
  247. package/src/@trpc/server/rpc.ts +26 -0
  248. package/src/adapters/aws-lambda/index.ts +21 -10
  249. package/src/adapters/aws-lambda/utils.ts +33 -26
  250. package/src/adapters/express.ts +18 -4
  251. package/src/adapters/fastify/fastifyRequestHandler.ts +22 -12
  252. package/src/adapters/fastify/fastifyTRPCPlugin.ts +21 -9
  253. package/src/adapters/fetch/fetchRequestHandler.ts +36 -12
  254. package/src/adapters/fetch/types.ts +18 -4
  255. package/src/adapters/next-app-dir/formDataToObject.ts +36 -0
  256. package/src/adapters/next-app-dir/nextAppDirCaller.ts +129 -0
  257. package/src/adapters/next-app-dir/notFound.ts +12 -0
  258. package/src/adapters/next-app-dir/redirect.ts +30 -0
  259. package/src/adapters/next-app-dir/rethrowNextErrors.ts +25 -0
  260. package/src/adapters/next-app-dir.ts +3 -0
  261. package/src/adapters/next.ts +30 -14
  262. package/src/adapters/node-http/content-type/form-data/fileUploadHandler.ts +11 -4
  263. package/src/adapters/node-http/content-type/form-data/index.ts +18 -18
  264. package/src/adapters/node-http/content-type/form-data/memoryUploadHandler.ts +3 -2
  265. package/src/adapters/node-http/content-type/form-data/streamSlice.ts +7 -2
  266. package/src/adapters/node-http/content-type/form-data/uploadHandler.ts +2 -2
  267. package/src/adapters/node-http/content-type/json/getPostBody.ts +20 -3
  268. package/src/adapters/node-http/content-type/json/index.ts +1 -1
  269. package/src/adapters/node-http/internals/contentType.ts +5 -3
  270. package/src/adapters/node-http/nodeHTTPRequestHandler.ts +28 -16
  271. package/src/adapters/node-http/types.ts +24 -9
  272. package/src/adapters/standalone.ts +22 -8
  273. package/src/adapters/ws.ts +68 -39
  274. package/src/http.ts +1 -0
  275. package/src/index.ts +1 -20
  276. package/src/observable/index.ts +10 -4
  277. package/src/observable/observable.ts +63 -3
  278. package/src/observable/operators.ts +114 -0
  279. package/src/observable/types.ts +1 -5
  280. package/src/rpc.ts +1 -0
  281. package/src/shared.ts +26 -0
  282. package/src/unstable-core-do-not-import/clientish/inference.ts +60 -0
  283. package/src/unstable-core-do-not-import/clientish/inferrable.ts +49 -0
  284. package/src/unstable-core-do-not-import/clientish/serialize.ts +122 -0
  285. package/src/{error → unstable-core-do-not-import/error}/TRPCError.ts +33 -27
  286. package/src/{error → unstable-core-do-not-import/error}/formatter.ts +12 -19
  287. package/src/{shared → unstable-core-do-not-import/error}/getErrorShape.ts +8 -8
  288. package/src/{http → unstable-core-do-not-import/http}/contentType.ts +4 -4
  289. package/src/{http → unstable-core-do-not-import/http}/getHTTPStatusCode.ts +8 -8
  290. package/src/unstable-core-do-not-import/http/index.ts +29 -0
  291. package/src/{http → unstable-core-do-not-import/http}/resolveHTTPResponse.ts +69 -69
  292. package/src/unstable-core-do-not-import/http/toURL.ts +7 -0
  293. package/src/unstable-core-do-not-import/http/types.ts +126 -0
  294. package/src/unstable-core-do-not-import/initTRPC.ts +151 -0
  295. package/src/unstable-core-do-not-import/middleware.ts +238 -0
  296. package/src/unstable-core-do-not-import/parser.ts +94 -0
  297. package/src/unstable-core-do-not-import/procedure.ts +94 -0
  298. package/src/unstable-core-do-not-import/procedureBuilder.ts +623 -0
  299. package/src/{core/internals/config.ts → unstable-core-do-not-import/rootConfig.ts} +22 -33
  300. package/src/unstable-core-do-not-import/router.ts +363 -0
  301. package/src/{rpc → unstable-core-do-not-import/rpc}/codes.ts +30 -3
  302. package/src/{rpc → unstable-core-do-not-import/rpc}/envelopes.ts +6 -9
  303. package/src/unstable-core-do-not-import/rpc/index.ts +21 -0
  304. package/src/{rpc → unstable-core-do-not-import/rpc}/parseTRPCMessage.ts +4 -3
  305. package/src/unstable-core-do-not-import/transformer.ts +194 -0
  306. package/src/unstable-core-do-not-import/types.ts +157 -0
  307. package/src/unstable-core-do-not-import/utils.ts +43 -0
  308. package/src/unstable-core-do-not-import.ts +30 -0
  309. package/unstable-core-do-not-import/index.d.ts +1 -0
  310. package/unstable-core-do-not-import/index.js +1 -0
  311. package/dist/TRPCError-efecb077.js +0 -63
  312. package/dist/batchStreamFormatter-2c1405a1.js +0 -31
  313. package/dist/codes-e5bb4d58.js +0 -48
  314. package/dist/config-5de7eae5.js +0 -10
  315. package/dist/config-60fc2667.js +0 -7
  316. package/dist/config-ab4c1c6b.mjs +0 -5
  317. package/dist/contentType-24c44bba.js +0 -5
  318. package/dist/contentType-9940f5d7.js +0 -58
  319. package/dist/core/index.d.ts +0 -9
  320. package/dist/core/index.d.ts.map +0 -1
  321. package/dist/core/initTRPC.d.ts +0 -105
  322. package/dist/core/initTRPC.d.ts.map +0 -1
  323. package/dist/core/internals/builderTypes.d.ts +0 -11
  324. package/dist/core/internals/builderTypes.d.ts.map +0 -1
  325. package/dist/core/internals/config.d.ts.map +0 -1
  326. package/dist/core/internals/getParseFn.d.ts +0 -4
  327. package/dist/core/internals/getParseFn.d.ts.map +0 -1
  328. package/dist/core/internals/mergeRouters.d.ts +0 -15
  329. package/dist/core/internals/mergeRouters.d.ts.map +0 -1
  330. package/dist/core/internals/mergeWithoutOverrides.d.ts +0 -5
  331. package/dist/core/internals/mergeWithoutOverrides.d.ts.map +0 -1
  332. package/dist/core/internals/omitPrototype.d.ts +0 -6
  333. package/dist/core/internals/omitPrototype.d.ts.map +0 -1
  334. package/dist/core/internals/procedureBuilder.d.ts +0 -113
  335. package/dist/core/internals/procedureBuilder.d.ts.map +0 -1
  336. package/dist/core/internals/utils.d.ts +0 -51
  337. package/dist/core/internals/utils.d.ts.map +0 -1
  338. package/dist/core/middleware.d.ts +0 -158
  339. package/dist/core/middleware.d.ts.map +0 -1
  340. package/dist/core/parser.d.ts.map +0 -1
  341. package/dist/core/procedure.d.ts +0 -72
  342. package/dist/core/procedure.d.ts.map +0 -1
  343. package/dist/core/router.d.ts +0 -65
  344. package/dist/core/router.d.ts.map +0 -1
  345. package/dist/core/types.d.ts +0 -24
  346. package/dist/core/types.d.ts.map +0 -1
  347. package/dist/error/TRPCError.d.ts.map +0 -1
  348. package/dist/error/formatter.d.ts.map +0 -1
  349. package/dist/error/utils.d.ts +0 -9
  350. package/dist/error/utils.d.ts.map +0 -1
  351. package/dist/http/batchStreamFormatter.d.ts.map +0 -1
  352. package/dist/http/contentType.d.ts.map +0 -1
  353. package/dist/http/getHTTPStatusCode.d.ts +0 -24
  354. package/dist/http/getHTTPStatusCode.d.ts.map +0 -1
  355. package/dist/http/index.d.ts +0 -5
  356. package/dist/http/index.d.ts.map +0 -1
  357. package/dist/http/index.js +0 -21
  358. package/dist/http/index.mjs +0 -9
  359. package/dist/http/internals/types.d.ts +0 -32
  360. package/dist/http/internals/types.d.ts.map +0 -1
  361. package/dist/http/resolveHTTPResponse.d.ts.map +0 -1
  362. package/dist/http/types.d.ts +0 -46
  363. package/dist/http/types.d.ts.map +0 -1
  364. package/dist/index-46cb3130.js +0 -94
  365. package/dist/index-f91d720c.mjs +0 -97
  366. package/dist/internals/invert.d.ts +0 -12
  367. package/dist/internals/invert.d.ts.map +0 -1
  368. package/dist/internals/types.d.ts +0 -26
  369. package/dist/internals/types.d.ts.map +0 -1
  370. package/dist/nodeHTTPRequestHandler-388f5fce.js +0 -107
  371. package/dist/observable/internals/identity.d.ts +0 -2
  372. package/dist/observable/internals/identity.d.ts.map +0 -1
  373. package/dist/observable/internals/observableToPromise.d.ts +0 -10
  374. package/dist/observable/internals/observableToPromise.d.ts.map +0 -1
  375. package/dist/observable/internals/pipe.d.ts +0 -4
  376. package/dist/observable/internals/pipe.d.ts.map +0 -1
  377. package/dist/observable/operators/index.d.ts +0 -4
  378. package/dist/observable/operators/index.d.ts.map +0 -1
  379. package/dist/observable/operators/map.d.ts +0 -3
  380. package/dist/observable/operators/map.d.ts.map +0 -1
  381. package/dist/observable/operators/share.d.ts +0 -6
  382. package/dist/observable/operators/share.d.ts.map +0 -1
  383. package/dist/observable/operators/tap.d.ts +0 -3
  384. package/dist/observable/operators/tap.d.ts.map +0 -1
  385. package/dist/observable-15588f28.js +0 -83
  386. package/dist/parseTRPCMessage-95955211.js +0 -63
  387. package/dist/resolveHTTPResponse-8d474952.js +0 -267
  388. package/dist/router-3c22fe56.js +0 -159
  389. package/dist/router-5274e533.mjs +0 -153
  390. package/dist/router-a1635eab.js +0 -147
  391. package/dist/rpc/codes.d.ts.map +0 -1
  392. package/dist/rpc/envelopes.d.ts.map +0 -1
  393. package/dist/rpc/index.d.ts +0 -4
  394. package/dist/rpc/index.d.ts.map +0 -1
  395. package/dist/rpc/index.mjs +0 -2
  396. package/dist/rpc/parseTRPCMessage.d.ts.map +0 -1
  397. package/dist/shared/createProxy/index.d.ts.map +0 -1
  398. package/dist/shared/getErrorShape.d.ts +0 -15
  399. package/dist/shared/getErrorShape.d.ts.map +0 -1
  400. package/dist/shared/index.d.ts +0 -7
  401. package/dist/shared/index.d.ts.map +0 -1
  402. package/dist/shared/index.js +0 -14
  403. package/dist/shared/index.mjs +0 -3
  404. package/dist/shared/internal/serialize.d.ts +0 -30
  405. package/dist/shared/internal/serialize.d.ts.map +0 -1
  406. package/dist/shared/jsonify.d.ts +0 -11
  407. package/dist/shared/jsonify.d.ts.map +0 -1
  408. package/dist/shared/transformTRPCResponse.d.ts +0 -9
  409. package/dist/shared/transformTRPCResponse.d.ts.map +0 -1
  410. package/dist/shared/types.d.ts +0 -6
  411. package/dist/shared/types.d.ts.map +0 -1
  412. package/dist/transformTRPCResponse-1153b421.mjs +0 -53
  413. package/dist/transformTRPCResponse-20ce3b68.js +0 -54
  414. package/dist/transformTRPCResponse-e65f34e9.js +0 -56
  415. package/dist/transformer.d.ts +0 -74
  416. package/dist/transformer.d.ts.map +0 -1
  417. package/dist/types.d.ts +0 -83
  418. package/dist/types.d.ts.map +0 -1
  419. package/dist/unstableInternalsExport-10cc2bae.mjs +0 -353
  420. package/dist/unstableInternalsExport-a064a7dd.js +0 -349
  421. package/dist/unstableInternalsExport-bf8496ea.js +0 -363
  422. package/dist/unstableInternalsExport.d.ts +0 -11
  423. package/dist/unstableInternalsExport.d.ts.map +0 -1
  424. package/dist/unstableInternalsExport.js +0 -16
  425. package/dist/unstableInternalsExport.mjs +0 -5
  426. package/src/core/index.ts +0 -28
  427. package/src/core/initTRPC.ts +0 -169
  428. package/src/core/internals/builderTypes.ts +0 -11
  429. package/src/core/internals/getParseFn.ts +0 -43
  430. package/src/core/internals/mergeRouters.ts +0 -90
  431. package/src/core/internals/mergeWithoutOverrides.ts +0 -19
  432. package/src/core/internals/omitPrototype.ts +0 -9
  433. package/src/core/internals/procedureBuilder.ts +0 -394
  434. package/src/core/internals/utils.ts +0 -84
  435. package/src/core/middleware.ts +0 -295
  436. package/src/core/parser.ts +0 -57
  437. package/src/core/procedure.ts +0 -88
  438. package/src/core/router.ts +0 -226
  439. package/src/core/types.ts +0 -67
  440. package/src/error/utils.ts +0 -23
  441. package/src/http/index.ts +0 -4
  442. package/src/http/internals/types.ts +0 -40
  443. package/src/http/types.ts +0 -51
  444. package/src/internals/invert.ts +0 -21
  445. package/src/internals/types.ts +0 -27
  446. package/src/observable/internals/identity.ts +0 -3
  447. package/src/observable/internals/observableToPromise.ts +0 -49
  448. package/src/observable/internals/pipe.ts +0 -23
  449. package/src/observable/operators/index.ts +0 -3
  450. package/src/observable/operators/map.ts +0 -25
  451. package/src/observable/operators/share.ts +0 -65
  452. package/src/observable/operators/tap.ts +0 -26
  453. package/src/rpc/index.ts +0 -3
  454. package/src/shared/index.ts +0 -10
  455. package/src/shared/internal/serialize.ts +0 -65
  456. package/src/shared/jsonify.ts +0 -22
  457. package/src/shared/transformTRPCResponse.ts +0 -40
  458. package/src/shared/types.ts +0 -9
  459. package/src/transformer.ts +0 -94
  460. package/src/types.ts +0 -125
  461. package/src/unstableInternalsExport.ts +0 -10
  462. package/subscription/index.d.ts +0 -1
  463. package/subscription/index.js +0 -1
  464. package/unstableInternalsExport/index.d.ts +0 -1
  465. package/unstableInternalsExport/index.js +0 -1
  466. /package/dist/{http → unstable-core-do-not-import/http}/batchStreamFormatter.d.ts +0 -0
  467. /package/dist/{batchStreamFormatter-93cdcdd4.js → unstable-core-do-not-import/http/batchStreamFormatter.js} +0 -0
  468. /package/dist/{rpc → unstable-core-do-not-import/rpc}/parseTRPCMessage.d.ts +0 -0
  469. /package/src/{shared/createProxy/index.ts → unstable-core-do-not-import/createProxy.ts} +0 -0
  470. /package/src/{http → unstable-core-do-not-import/http}/batchStreamFormatter.ts +0 -0
@@ -0,0 +1,60 @@
1
+ import type { inferObservableValue } from '../../observable';
2
+ import type {
3
+ AnyProcedure,
4
+ inferProcedureInput,
5
+ inferProcedureOutput,
6
+ } from '../procedure';
7
+ import type { AnyRouter, RouterRecord } from '../router';
8
+ import type {
9
+ AnyClientTypes,
10
+ inferClientTypes,
11
+ InferrableClientTypes,
12
+ } from './inferrable';
13
+ import type { Serialize } from './serialize';
14
+
15
+ /**
16
+ * @internal
17
+ */
18
+
19
+ export type inferTransformedProcedureOutput<
20
+ TInferrable extends InferrableClientTypes,
21
+ TProcedure extends AnyProcedure,
22
+ > = inferClientTypes<TInferrable>['transformer'] extends false
23
+ ? Serialize<inferProcedureOutput<TProcedure>>
24
+ : inferProcedureOutput<TProcedure>;
25
+ /** @internal */
26
+
27
+ export type inferTransformedSubscriptionOutput<
28
+ TInferrable extends InferrableClientTypes,
29
+ TProcedure extends AnyProcedure,
30
+ > = inferClientTypes<TInferrable>['transformer'] extends false
31
+ ? Serialize<inferObservableValue<inferProcedureOutput<TProcedure>>>
32
+ : inferObservableValue<inferProcedureOutput<TProcedure>>;
33
+
34
+ export type GetInferenceHelpers<
35
+ TType extends 'input' | 'output',
36
+ TRoot extends AnyClientTypes,
37
+ TRecord extends RouterRecord,
38
+ > = {
39
+ [TKey in keyof TRecord]: TRecord[TKey] extends infer $Value
40
+ ? $Value extends RouterRecord
41
+ ? GetInferenceHelpers<TType, TRoot, $Value>
42
+ : $Value extends AnyProcedure
43
+ ? TType extends 'input'
44
+ ? inferProcedureInput<$Value>
45
+ : inferTransformedProcedureOutput<TRoot, $Value>
46
+ : never
47
+ : never;
48
+ };
49
+
50
+ export type inferRouterInputs<TRouter extends AnyRouter> = GetInferenceHelpers<
51
+ 'input',
52
+ TRouter['_def']['_config']['$types'],
53
+ TRouter['_def']['record']
54
+ >;
55
+
56
+ export type inferRouterOutputs<TRouter extends AnyRouter> = GetInferenceHelpers<
57
+ 'output',
58
+ TRouter['_def']['_config']['$types'],
59
+ TRouter['_def']['record']
60
+ >;
@@ -0,0 +1,49 @@
1
+ import type { AnyRootTypes } from '../rootConfig';
2
+
3
+ export type AnyClientTypes = Pick<AnyRootTypes, 'errorShape' | 'transformer'>;
4
+
5
+ /**
6
+ * Result of `initTRPC.create()`
7
+ */
8
+ type InitLike = {
9
+ _config: {
10
+ $types: AnyClientTypes;
11
+ };
12
+ };
13
+
14
+ /**
15
+ * Result of `initTRPC.create().router()`
16
+ */
17
+ type RouterLike = {
18
+ _def: InitLike;
19
+ };
20
+
21
+ /**
22
+ * Result of `initTRPC.create()._config`
23
+ */
24
+ type RootConfigLike = {
25
+ $types: AnyClientTypes;
26
+ };
27
+
28
+ /**
29
+ * Anything that can be inferred to the root config types needed for a TRPC client
30
+ */
31
+ export type InferrableClientTypes =
32
+ | RouterLike
33
+ | InitLike
34
+ | RootConfigLike
35
+ | AnyClientTypes;
36
+
37
+ /**
38
+ * Infer the root types from a InferrableClientTypes
39
+ */
40
+ export type inferClientTypes<TInferrable extends InferrableClientTypes> =
41
+ TInferrable extends AnyClientTypes
42
+ ? TInferrable
43
+ : TInferrable extends RootConfigLike
44
+ ? TInferrable['$types']
45
+ : TInferrable extends InitLike
46
+ ? TInferrable['_config']['$types']
47
+ : TInferrable extends RouterLike
48
+ ? TInferrable['_def']['_config']['$types']
49
+ : never;
@@ -0,0 +1,122 @@
1
+ /* eslint-disable @typescript-eslint/naming-convention */
2
+ import type { Simplify, WithoutIndexSignature } from '../types';
3
+
4
+ /**
5
+ * @link https://github.com/remix-run/remix/blob/2248669ed59fd716e267ea41df5d665d4781f4a9/packages/remix-server-runtime/serialize.ts
6
+ */
7
+ type JsonPrimitive = boolean | number | string | null;
8
+ // eslint-disable-next-line @typescript-eslint/ban-types
9
+ type NonJsonPrimitive = Function | symbol | undefined;
10
+ /*
11
+ * `any` is the only type that can let you equate `0` with `1`
12
+ * See https://stackoverflow.com/a/49928360/1490091
13
+ */
14
+ type IsAny<T> = 0 extends T & 1 ? true : false;
15
+
16
+ // `undefined` is a weird one that's technically not valid JSON,
17
+ // but the return value of `JSON.parse` can be `undefined` so we
18
+ // support it as both a Primitive and a NonJsonPrimitive
19
+ type JsonReturnable = JsonPrimitive | undefined;
20
+
21
+ type IsRecord<T extends object> = keyof WithoutIndexSignature<T> extends never
22
+ ? true
23
+ : false;
24
+
25
+ /* prettier-ignore */
26
+ export type Serialize<T> =
27
+ IsAny<T> extends true ? any :
28
+ unknown extends T ? unknown :
29
+ T extends JsonReturnable ? T :
30
+ T extends Map<any, any> | Set<any> ? object :
31
+ T extends NonJsonPrimitive ? never :
32
+ T extends { toJSON(): infer U } ? U :
33
+ T extends [] ? [] :
34
+ T extends [unknown, ...unknown[]] ? SerializeTuple<T> :
35
+ T extends readonly (infer U)[] ? (U extends NonJsonPrimitive ? null : Serialize<U>)[] :
36
+ T extends object ?
37
+ IsRecord<T> extends true ? Record<keyof T, Serialize<T[keyof T]>> :
38
+ Simplify<SerializeObject<UndefinedToOptional<T>>> :
39
+ never;
40
+
41
+ /** JSON serialize [tuples](https://www.typescriptlang.org/docs/handbook/2/objects.html#tuple-types) */
42
+ type SerializeTuple<T extends [unknown, ...unknown[]]> = {
43
+ [K in keyof T]: T[K] extends NonJsonPrimitive ? null : Serialize<T[K]>;
44
+ };
45
+
46
+ // prettier-ignore
47
+ type SerializeObjectKey<T extends Record<any, any>, K> =
48
+ // never include entries where the key is a symbol
49
+ K extends symbol ? never :
50
+ // always include entries where the value is any
51
+ IsAny<T[K]> extends true ? K :
52
+ // always include entries where the value is unknown
53
+ unknown extends T[K] ? K :
54
+ // never include entries where the value is a non-JSON primitive
55
+ T[K] extends NonJsonPrimitive ? never :
56
+ // otherwise serialize the value
57
+ K;
58
+ /**
59
+ * JSON serialize objects (not including arrays) and classes
60
+ * @internal
61
+ **/
62
+ export type SerializeObject<T extends object> = {
63
+ [K in keyof T as SerializeObjectKey<T, K>]: Serialize<T[K]>;
64
+ };
65
+
66
+ /**
67
+ * Extract keys from T where the value dosen't extend undefined
68
+ * Note: Can't parse IndexSignature or Record types
69
+ */
70
+ type FilterDefinedKeys<T extends object> = Exclude<
71
+ {
72
+ [K in keyof T]: undefined extends T[K] ? never : K;
73
+ }[keyof T],
74
+ undefined
75
+ >;
76
+
77
+ /**
78
+ * Get value of exactOptionalPropertyTypes config
79
+ */
80
+ type ExactOptionalPropertyTypes = { a?: 0 | undefined } extends {
81
+ a?: 0;
82
+ }
83
+ ? false
84
+ : true;
85
+
86
+ /**
87
+ * Check if T has an index signature
88
+ */
89
+ type HasIndexSignature<T extends object> = string extends keyof T
90
+ ? true
91
+ : false;
92
+
93
+ /**
94
+ * { [key: string]: number | undefined } --> { [key: string]: number }
95
+ */
96
+ type HandleIndexSignature<T extends object> = {
97
+ [K in keyof Omit<T, keyof WithoutIndexSignature<T>>]: Exclude<
98
+ T[K],
99
+ undefined
100
+ >;
101
+ };
102
+
103
+ /**
104
+ * { a: number | undefined } --> { a?: number }
105
+ * Note: Can't parse IndexSignature or Record types
106
+ */
107
+ type HandleUndefined<T extends object> = {
108
+ [K in keyof Omit<T, FilterDefinedKeys<T>>]?: Exclude<T[K], undefined>;
109
+ };
110
+
111
+ /**
112
+ * Handle undefined, index signature and records
113
+ */
114
+ type UndefinedToOptional<T extends object> =
115
+ // Property is not a union with `undefined`, keep as-is
116
+ Pick<WithoutIndexSignature<T>, FilterDefinedKeys<WithoutIndexSignature<T>>> &
117
+ // If following is true, don't merge undefined or optional into index signature if any in T
118
+ (ExactOptionalPropertyTypes extends true
119
+ ? HandleIndexSignature<T> & HandleUndefined<WithoutIndexSignature<T>>
120
+ : HasIndexSignature<T> extends true
121
+ ? HandleIndexSignature<T>
122
+ : HandleUndefined<T>);
@@ -1,33 +1,10 @@
1
- import { TRPC_ERROR_CODE_KEY } from '../rpc/codes';
2
- import { isObject } from './utils';
3
-
4
- export function getTRPCErrorFromUnknown(cause: unknown): TRPCError {
5
- if (cause instanceof TRPCError) {
6
- return cause;
7
- }
8
- if (cause instanceof Error && cause.name === 'TRPCError') {
9
- // https://github.com/trpc/trpc/pull/4848
10
- return cause as TRPCError;
11
- }
12
-
13
- const trpcError = new TRPCError({
14
- code: 'INTERNAL_SERVER_ERROR',
15
- cause,
16
- });
17
-
18
- // Inherit stack from error
19
- if (cause instanceof Error && cause.stack) {
20
- trpcError.stack = cause.stack;
21
- }
22
-
23
- return trpcError;
24
- }
1
+ import type { TRPC_ERROR_CODE_KEY } from '../rpc/codes';
2
+ import { isObject } from '../utils';
25
3
 
26
4
  class UnknownCauseError extends Error {
27
5
  [key: string]: unknown;
28
6
  }
29
-
30
- function getCauseFromUnknown(cause: unknown): Error | undefined {
7
+ export function getCauseFromUnknown(cause: unknown): Error | undefined {
31
8
  if (cause instanceof Error) {
32
9
  return cause;
33
10
  }
@@ -54,8 +31,32 @@ function getCauseFromUnknown(cause: unknown): Error | undefined {
54
31
  return undefined;
55
32
  }
56
33
 
34
+ export function getTRPCErrorFromUnknown(cause: unknown): TRPCError {
35
+ if (cause instanceof TRPCError) {
36
+ return cause;
37
+ }
38
+ if (cause instanceof Error && cause.name === 'TRPCError') {
39
+ // https://github.com/trpc/trpc/pull/4848
40
+ return cause as TRPCError;
41
+ }
42
+
43
+ const trpcError = new TRPCError({
44
+ code: 'INTERNAL_SERVER_ERROR',
45
+ cause,
46
+ });
47
+
48
+ // Inherit stack from error
49
+ if (cause instanceof Error && cause.stack) {
50
+ trpcError.stack = cause.stack;
51
+ }
52
+
53
+ return trpcError;
54
+ }
55
+
57
56
  export class TRPCError extends Error {
58
- public readonly cause?: Error;
57
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
58
+ // @ts-ignore override doesn't work in all environments due to "This member cannot have an 'override' modifier because it is not declared in the base class 'Error'"
59
+ public override readonly cause?: Error;
59
60
  public readonly code;
60
61
 
61
62
  constructor(opts: {
@@ -72,5 +73,10 @@ export class TRPCError extends Error {
72
73
 
73
74
  this.code = opts.code;
74
75
  this.name = 'TRPCError';
76
+
77
+ if (!this.cause) {
78
+ // < ES2022 / < Node 16.9.0 compatability
79
+ this.cause = cause;
80
+ }
75
81
  }
76
82
  }
@@ -1,17 +1,15 @@
1
- import { ProcedureType } from '../core';
2
- import {
1
+ import type { ProcedureType } from '../procedure';
2
+ import type {
3
3
  TRPC_ERROR_CODE_KEY,
4
4
  TRPC_ERROR_CODE_NUMBER,
5
5
  TRPCErrorShape,
6
6
  } from '../rpc';
7
- import { TRPCError } from './TRPCError';
7
+ import type { TRPCError } from './TRPCError';
8
8
 
9
9
  /**
10
10
  * @internal
11
11
  */
12
- export type ErrorFormatter<TContext, TShape extends TRPCErrorShape<number>> = ({
13
- error,
14
- }: {
12
+ export type ErrorFormatter<TContext, TShape extends TRPCErrorShape> = (opts: {
15
13
  error: TRPCError;
16
14
  type: ProcedureType | 'unknown';
17
15
  path: string | undefined;
@@ -20,35 +18,30 @@ export type ErrorFormatter<TContext, TShape extends TRPCErrorShape<number>> = ({
20
18
  shape: DefaultErrorShape;
21
19
  }) => TShape;
22
20
 
23
- export type ErrorFormatterShape<TType> = TType extends ErrorFormatter<
24
- any,
25
- infer TShape
26
- >
27
- ? TShape
28
- : DefaultErrorShape;
29
21
  /**
30
22
  * @internal
31
23
  */
32
24
  export type DefaultErrorData = {
33
25
  code: TRPC_ERROR_CODE_KEY;
34
26
  httpStatus: number;
27
+ /**
28
+ * Path to the procedure that threw the error
29
+ */
35
30
  path?: string;
31
+ /**
32
+ * Stack trace of the error (only in development)
33
+ */
36
34
  stack?: string;
37
35
  };
38
36
 
39
37
  /**
40
38
  * @internal
41
39
  */
42
- export interface DefaultErrorShape
43
- extends TRPCErrorShape<TRPC_ERROR_CODE_NUMBER, DefaultErrorData> {
40
+ export interface DefaultErrorShape extends TRPCErrorShape<DefaultErrorData> {
44
41
  message: string;
45
42
  code: TRPC_ERROR_CODE_NUMBER;
46
43
  }
47
44
 
48
- export const defaultFormatter: ErrorFormatter<any, any> = ({
49
- shape,
50
- }: {
51
- shape: DefaultErrorShape;
52
- }) => {
45
+ export const defaultFormatter: ErrorFormatter<any, any> = ({ shape }) => {
53
46
  return shape;
54
47
  };
@@ -1,21 +1,21 @@
1
- import { ProcedureType } from '../core';
2
- import { AnyRootConfig } from '../core/internals/config';
3
- import { DefaultErrorShape } from '../error/formatter';
4
- import { TRPCError } from '../error/TRPCError';
5
1
  import { getHTTPStatusCodeFromError } from '../http/getHTTPStatusCode';
2
+ import type { ProcedureType } from '../procedure';
3
+ import type { AnyRootTypes, RootConfig } from '../rootConfig';
6
4
  import { TRPC_ERROR_CODES_BY_KEY } from '../rpc';
5
+ import type { DefaultErrorShape } from './formatter';
6
+ import type { TRPCError } from './TRPCError';
7
7
 
8
8
  /**
9
9
  * @internal
10
10
  */
11
- export function getErrorShape<TConfig extends AnyRootConfig>(opts: {
12
- config: TConfig;
11
+ export function getErrorShape<TRoot extends AnyRootTypes>(opts: {
12
+ config: RootConfig<TRoot>;
13
13
  error: TRPCError;
14
14
  type: ProcedureType | 'unknown';
15
15
  path: string | undefined;
16
16
  input: unknown;
17
- ctx: TConfig['$types']['ctx'] | undefined;
18
- }): TConfig['$types']['errorShape'] {
17
+ ctx: TRoot['ctx'] | undefined;
18
+ }): TRoot['errorShape'] {
19
19
  const { path, error, config } = opts;
20
20
  const { code } = opts.error;
21
21
  const shape: DefaultErrorShape = {
@@ -1,9 +1,9 @@
1
1
  /* eslint-disable @typescript-eslint/no-non-null-assertion */
2
- import { AnyRouter } from '../core';
3
2
  import { TRPCError } from '../error/TRPCError';
4
- import { CombinedDataTransformer } from '../transformer';
5
- import { MaybePromise } from '../types';
6
- import { HTTPRequest } from './types';
3
+ import type { AnyRouter } from '../router';
4
+ import type { CombinedDataTransformer } from '../transformer';
5
+ import type { MaybePromise } from '../types';
6
+ import type { HTTPRequest } from './types';
7
7
 
8
8
  type GetInputs = (opts: {
9
9
  req: HTTPRequest;
@@ -1,11 +1,8 @@
1
- import { TRPCError } from '../error/TRPCError';
2
- import { invert } from '../internals/invert';
3
- import { TRPC_ERROR_CODES_BY_KEY, TRPCResponse } from '../rpc';
1
+ import type { DefaultErrorData } from '../error/formatter';
2
+ import type { TRPCError } from '../error/TRPCError';
3
+ import type { TRPC_ERROR_CODES_BY_KEY, TRPCResponse } from '../rpc';
4
+ import { TRPC_ERROR_CODES_BY_NUMBER } from '../rpc';
4
5
 
5
- export const TRPC_ERROR_CODES_BY_NUMBER = invert(TRPC_ERROR_CODES_BY_KEY);
6
- type ValueOf<TType> = TType[keyof TType];
7
-
8
- export type TRPC_ERROR_CODE_NUMBER = ValueOf<typeof TRPC_ERROR_CODES_BY_KEY>;
9
6
  const JSONRPC2_TO_HTTP_CODE: Record<
10
7
  keyof typeof TRPC_ERROR_CODES_BY_KEY,
11
8
  number
@@ -20,6 +17,7 @@ const JSONRPC2_TO_HTTP_CODE: Record<
20
17
  CONFLICT: 409,
21
18
  PRECONDITION_FAILED: 412,
22
19
  PAYLOAD_TOO_LARGE: 413,
20
+ UNSUPPORTED_MEDIA_TYPE: 415,
23
21
  UNPROCESSABLE_CONTENT: 422,
24
22
  TOO_MANY_REQUESTS: 429,
25
23
  CLIENT_CLOSED_REQUEST: 499,
@@ -36,7 +34,9 @@ export function getHTTPStatusCode(json: TRPCResponse | TRPCResponse[]) {
36
34
  const httpStatuses = new Set(
37
35
  arr.map((res) => {
38
36
  if ('error' in res) {
39
- const data = res.error.data;
37
+ const data = res.error.data as
38
+ | Record<string, unknown>
39
+ | DefaultErrorData;
40
40
  if (typeof data.httpStatus === 'number') {
41
41
  return data.httpStatus;
42
42
  }
@@ -0,0 +1,29 @@
1
+ export {
2
+ getHTTPStatusCode,
3
+ getHTTPStatusCodeFromError,
4
+ } from './getHTTPStatusCode';
5
+ export { resolveHTTPResponse } from './resolveHTTPResponse';
6
+ export type {
7
+ BaseHandlerOptions,
8
+ HTTPBaseHandlerOptions,
9
+ HTTPHeaders,
10
+ HTTPRequest,
11
+ HTTPResponse,
12
+ /**
13
+ * @deprecated Use `HTTPErrorHandler` instead
14
+ */
15
+ HTTPErrorHandler as OnErrorFunction,
16
+ HTTPErrorHandler,
17
+ ProcedureCall,
18
+ ResolveHTTPRequestOptionsContextFn,
19
+ ResponseChunk,
20
+ ResponseMeta,
21
+ ResponseMetaFn,
22
+ TRPCRequestInfo,
23
+ } from './types';
24
+
25
+ export { getBatchStreamFormatter } from './batchStreamFormatter';
26
+ export type { BaseContentTypeHandler, BodyResult } from './contentType';
27
+ export { getJsonContentTypeInputs } from './contentType';
28
+
29
+ export { toURL } from './toURL';
@@ -1,25 +1,25 @@
1
- import {
1
+ import { getErrorShape } from '../error/getErrorShape';
2
+ import { getTRPCErrorFromUnknown, TRPCError } from '../error/TRPCError';
3
+ import type { ProcedureType } from '../procedure';
4
+ import type {
2
5
  AnyRouter,
3
- callProcedure,
4
6
  inferRouterContext,
5
7
  inferRouterError,
6
- ProcedureType,
7
- } from '../core';
8
- import { getTRPCErrorFromUnknown, TRPCError } from '../error/TRPCError';
9
- import { TRPCResponse } from '../rpc';
10
- import { getErrorShape } from '../shared/getErrorShape';
11
- import { transformTRPCResponse } from '../shared/transformTRPCResponse';
12
- import { Maybe } from '../types';
13
- import {
14
- BaseContentTypeHandler,
15
- getJsonContentTypeInputs,
16
- } from './contentType';
8
+ } from '../router';
9
+ import { callProcedure } from '../router';
10
+ import type { TRPCResponse } from '../rpc';
11
+ import { transformTRPCResponse } from '../transformer';
12
+ import type { Maybe } from '../types';
13
+ import type { BaseContentTypeHandler } from './contentType';
14
+ import { getJsonContentTypeInputs } from './contentType';
17
15
  import { getHTTPStatusCode } from './getHTTPStatusCode';
18
- import { HTTPHeaders, HTTPResponse, ResponseChunk } from './internals/types';
19
- import {
16
+ import type {
20
17
  HTTPBaseHandlerOptions,
18
+ HTTPHeaders,
21
19
  HTTPRequest,
20
+ HTTPResponse,
22
21
  ResolveHTTPRequestOptionsContextFn,
22
+ ResponseChunk,
23
23
  TRPCRequestInfo,
24
24
  } from './types';
25
25
 
@@ -132,51 +132,6 @@ function initResponse<
132
132
  };
133
133
  }
134
134
 
135
- async function inputToProcedureCall<
136
- TRouter extends AnyRouter,
137
- TRequest extends HTTPRequest,
138
- >(procedureOpts: {
139
- opts: Pick<
140
- ResolveHTTPRequestOptions<TRouter, TRequest>,
141
- 'onError' | 'req' | 'router'
142
- >;
143
- ctx: inferRouterContext<TRouter> | undefined;
144
- type: 'mutation' | 'query';
145
- input: unknown;
146
- path: string;
147
- }): Promise<TRPCResponse<unknown, inferRouterError<TRouter>>> {
148
- const { opts, ctx, type, input, path } = procedureOpts;
149
- try {
150
- const data = await callProcedure({
151
- procedures: opts.router._def.procedures,
152
- path,
153
- getRawInput: async () => input,
154
- ctx,
155
- type,
156
- });
157
- return {
158
- result: {
159
- data,
160
- },
161
- };
162
- } catch (cause) {
163
- const error = getTRPCErrorFromUnknown(cause);
164
-
165
- opts.onError?.({ error, path, input, ctx, type: type, req: opts.req });
166
-
167
- return {
168
- error: getErrorShape({
169
- config: opts.router._def._config,
170
- error,
171
- type,
172
- path,
173
- input,
174
- ctx,
175
- }),
176
- };
177
- }
178
- }
179
-
180
135
  function caughtErrorToData<
181
136
  TRouter extends AnyRouter,
182
137
  TRequest extends HTTPRequest,
@@ -278,7 +233,9 @@ export async function resolveHTTPResponse<
278
233
  }
279
234
  const contentTypeHandler =
280
235
  opts.contentTypeHandler ?? fallbackContentTypeHandler;
281
- const batchingEnabled = opts.batching?.enabled ?? true;
236
+ const allowBatching = opts.allowBatching ?? opts.batching?.enabled ?? true;
237
+ const allowMethodOverride = opts.allowMethodOverride ?? false;
238
+
282
239
  const type =
283
240
  HTTP_METHOD_PROCEDURE_TYPE_MAP[req.method] ?? ('unknown' as const);
284
241
  let ctx: inferRouterContext<TRouter> | undefined = undefined;
@@ -295,8 +252,11 @@ export async function resolveHTTPResponse<
295
252
  if (opts.error) {
296
253
  throw opts.error;
297
254
  }
298
- if (isBatchCall && !batchingEnabled) {
299
- throw new Error(`Batching is not enabled on the server`);
255
+ if (isBatchCall && !allowBatching) {
256
+ throw new TRPCError({
257
+ code: 'BAD_REQUEST',
258
+ message: `Batching is not enabled on the server`,
259
+ });
300
260
  }
301
261
  /* istanbul ignore if -- @preserve */
302
262
  if (type === 'subscription') {
@@ -331,9 +291,52 @@ export async function resolveHTTPResponse<
331
291
  })),
332
292
  };
333
293
  ctx = await opts.createContext({ info });
334
- const promises = paths.map((path, index) =>
335
- inputToProcedureCall({ opts, ctx, type, input: inputs[index], path }),
336
- );
294
+
295
+ const errors: TRPCError[] = [];
296
+
297
+ const promises: Promise<
298
+ TRPCResponse<unknown, inferRouterError<TRouter>>
299
+ >[] = paths.map(async (path, index) => {
300
+ const input = inputs[index];
301
+ try {
302
+ const data = await callProcedure({
303
+ procedures: opts.router._def.procedures,
304
+ path,
305
+ getRawInput: async () => input,
306
+ ctx,
307
+ type,
308
+ allowMethodOverride,
309
+ });
310
+ return {
311
+ result: {
312
+ data,
313
+ },
314
+ };
315
+ } catch (cause) {
316
+ const error = getTRPCErrorFromUnknown(cause);
317
+ errors.push(error);
318
+
319
+ opts.onError?.({
320
+ error,
321
+ path,
322
+ input,
323
+ ctx,
324
+ type: type,
325
+ req: opts.req,
326
+ });
327
+
328
+ return {
329
+ error: getErrorShape({
330
+ config: opts.router._def._config,
331
+ error,
332
+ type,
333
+ path,
334
+ input,
335
+ ctx,
336
+ }),
337
+ };
338
+ }
339
+ });
337
340
 
338
341
  if (!isStreamCall) {
339
342
  /**
@@ -344,9 +347,6 @@ export async function resolveHTTPResponse<
344
347
  */
345
348
 
346
349
  const untransformedJSON = await Promise.all(promises);
347
- const errors = untransformedJSON.flatMap((response) =>
348
- 'error' in response ? [response.error] : [],
349
- );
350
350
 
351
351
  const headResponse = initResponse({
352
352
  ctx,
@@ -0,0 +1,7 @@
1
+ export function toURL(urlOrPathname: string): URL {
2
+ const url = urlOrPathname.startsWith('/')
3
+ ? `http://127.0.0.1${urlOrPathname}`
4
+ : urlOrPathname;
5
+
6
+ return new URL(url);
7
+ }