@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
@@ -1,12 +1,27 @@
1
- import { AnyRouter } from '../../core';
2
- import {
3
- getBatchStreamFormatter,
1
+ /**
2
+ * If you're making an adapter for tRPC and looking at this file for reference, you should import types and functions from `@trpc/server` and `@trpc/server/http`
3
+ *
4
+ * @example
5
+ * ```ts
6
+ * import type { AnyTRPCRouter } from '@trpc/server'
7
+ * import type { HTTPBaseHandlerOptions } from '@trpc/server/http'
8
+ * ```
9
+ */
10
+ // @trpc/server
11
+
12
+ import type { AnyRouter } from '../../@trpc/server';
13
+ import type {
4
14
  HTTPRequest,
15
+ HTTPResponse,
5
16
  ResolveHTTPRequestOptionsContextFn,
6
- } from '../../http';
7
- import { HTTPResponse, ResponseChunk } from '../../http/internals/types';
8
- import { resolveHTTPResponse } from '../../http/resolveHTTPResponse';
9
- import { FetchHandlerOptions } from './types';
17
+ ResponseChunk,
18
+ } from '../../@trpc/server/http';
19
+ import {
20
+ getBatchStreamFormatter,
21
+ resolveHTTPResponse,
22
+ toURL,
23
+ } from '../../@trpc/server/http';
24
+ import type { FetchHandlerOptions } from './types';
10
25
 
11
26
  export type FetchHandlerRequestOptions<TRouter extends AnyRouter> =
12
27
  FetchHandlerOptions<TRouter> & {
@@ -14,6 +29,13 @@ export type FetchHandlerRequestOptions<TRouter extends AnyRouter> =
14
29
  endpoint: string;
15
30
  };
16
31
 
32
+ const trimSlashes = (path: string): string => {
33
+ path = path.startsWith('/') ? path.slice(1) : path;
34
+ path = path.endsWith('/') ? path.slice(0, -1) : path;
35
+
36
+ return path;
37
+ };
38
+
17
39
  export async function fetchRequestHandler<TRouter extends AnyRouter>(
18
40
  opts: FetchHandlerRequestOptions<TRouter>,
19
41
  ): Promise<Response> {
@@ -25,8 +47,12 @@ export async function fetchRequestHandler<TRouter extends AnyRouter>(
25
47
  return opts.createContext?.({ req: opts.req, resHeaders, ...innerOpts });
26
48
  };
27
49
 
28
- const url = new URL(opts.req.url);
29
- const path = url.pathname.slice(opts.endpoint.length + 1);
50
+ const url = toURL(opts.req.url);
51
+
52
+ const pathname = trimSlashes(url.pathname);
53
+ const endpoint = trimSlashes(opts.endpoint);
54
+ const path = trimSlashes(pathname.slice(endpoint.length));
55
+
30
56
  const req: HTTPRequest = {
31
57
  query: url.searchParams,
32
58
  method: opts.req.method,
@@ -92,12 +118,10 @@ export async function fetchRequestHandler<TRouter extends AnyRouter>(
92
118
  };
93
119
 
94
120
  resolveHTTPResponse({
121
+ ...opts,
95
122
  req,
96
123
  createContext,
97
124
  path,
98
- router: opts.router,
99
- batching: opts.batching,
100
- responseMeta: opts.responseMeta,
101
125
  onError(o) {
102
126
  opts?.onError?.({ ...o, req: opts.req });
103
127
  },
@@ -1,5 +1,19 @@
1
- import { AnyRouter, inferRouterContext } from '../../core';
2
- import { HTTPBaseHandlerOptions, TRPCRequestInfo } from '../../http';
1
+ /**
2
+ * If you're making an adapter for tRPC and looking at this file for reference, you should import types and functions from `@trpc/server` and `@trpc/server/http`
3
+ *
4
+ * @example
5
+ * ```ts
6
+ * import type { AnyTRPCRouter } from '@trpc/server'
7
+ * import type { HTTPBaseHandlerOptions } from '@trpc/server/http'
8
+ * ```
9
+ */
10
+ // @trpc/server
11
+ import type { AnyRouter, inferRouterContext } from '../../@trpc/server';
12
+ // @trpc/server/http
13
+ import type {
14
+ HTTPBaseHandlerOptions,
15
+ TRPCRequestInfo,
16
+ } from '../../@trpc/server/http';
3
17
 
4
18
  export type FetchCreateContextFnOptions = {
5
19
  req: Request;
@@ -15,13 +29,13 @@ export type FetchCreateContextOption<TRouter extends AnyRouter> =
15
29
  unknown extends inferRouterContext<TRouter>
16
30
  ? {
17
31
  /**
18
- * @link https://trpc.io/docs/context
32
+ * @link https://trpc.io/docs/v11/context
19
33
  **/
20
34
  createContext?: FetchCreateContextFn<TRouter>;
21
35
  }
22
36
  : {
23
37
  /**
24
- * @link https://trpc.io/docs/context
38
+ * @link https://trpc.io/docs/v11/context
25
39
  **/
26
40
  createContext: FetchCreateContextFn<TRouter>;
27
41
  };
@@ -0,0 +1,36 @@
1
+ /* eslint-disable @typescript-eslint/no-non-null-assertion */
2
+ function set(
3
+ obj: Record<string, any>,
4
+ path: string[] | string,
5
+ value: unknown,
6
+ ): void {
7
+ if (typeof path === 'string') {
8
+ path = path.split(/[\.\[\]]/).filter(Boolean);
9
+ }
10
+
11
+ if (path.length > 1) {
12
+ const p = path.shift()!;
13
+ const isArrayIndex = /^\d+$/.test(path[0]!);
14
+ obj[p] = obj[p] || (isArrayIndex ? [] : {});
15
+ set(obj[p], path, value);
16
+ return;
17
+ }
18
+ const p = path[0]!;
19
+ if (obj[p] === undefined) {
20
+ obj[p] = value;
21
+ } else if (Array.isArray(obj[p])) {
22
+ obj[p].push(value);
23
+ } else {
24
+ obj[p] = [obj[p], value];
25
+ }
26
+ }
27
+
28
+ export function formDataToObject(formData: FormData) {
29
+ const obj: Record<string, unknown> = {};
30
+
31
+ for (const [key, value] of formData.entries()) {
32
+ set(obj, key, value);
33
+ }
34
+
35
+ return obj;
36
+ }
@@ -0,0 +1,129 @@
1
+ import { getTRPCErrorFromUnknown, TRPCError } from '../../@trpc/server';
2
+ // FIXME: fix lint rule, this is ok
3
+ // eslint-disable-next-line no-restricted-imports
4
+ import type { ErrorHandlerOptions } from '../../unstable-core-do-not-import/procedure';
5
+ // FIXME: fix lint rule, this is ok
6
+ // eslint-disable-next-line no-restricted-imports
7
+ import type { CallerOverride } from '../../unstable-core-do-not-import/procedureBuilder';
8
+ // FIXME: fix lint rule, this is ok
9
+ // eslint-disable-next-line no-restricted-imports
10
+ import type {
11
+ MaybePromise,
12
+ Simplify,
13
+ } from '../../unstable-core-do-not-import/types';
14
+ import { formDataToObject } from './formDataToObject';
15
+ import { TRPCRedirectError } from './redirect';
16
+ import { rethrowNextErrors } from './rethrowNextErrors';
17
+
18
+ type ContextCallback<TContext> = object extends TContext
19
+ ? {
20
+ createContext?: () => MaybePromise<TContext>;
21
+ }
22
+ : {
23
+ createContext: () => MaybePromise<TContext>;
24
+ };
25
+
26
+ /**
27
+ * Create a caller that works with Next.js React Server Components & Server Actions
28
+ */
29
+ export function nextAppDirCaller<TContext>(
30
+ config: Simplify<
31
+ {
32
+ /**
33
+ * Transform form data to a `Record` before passing it to the procedure
34
+ * @default true
35
+ */
36
+ normalizeFormData?: boolean;
37
+ /**
38
+ * Called when an error occurs in the handler
39
+ */
40
+ onError?: (opts: ErrorHandlerOptions<TContext>) => void;
41
+ } & ContextCallback<TContext>
42
+ >,
43
+ ): CallerOverride<TContext> {
44
+ const {
45
+ normalizeFormData = true,
46
+
47
+ // rethrowNextErrors = true
48
+ } = config;
49
+ const createContext = async (): Promise<TContext> => {
50
+ return config?.createContext?.() ?? ({} as TContext);
51
+ };
52
+ return async (opts) => {
53
+ const ctx: TContext = await createContext().catch((cause) => {
54
+ const error = new TRPCError({
55
+ code: 'INTERNAL_SERVER_ERROR',
56
+ message: 'Failed to create context',
57
+ cause,
58
+ });
59
+
60
+ throw error;
61
+ });
62
+
63
+ const handleError = (cause: unknown) => {
64
+ const error = getTRPCErrorFromUnknown(cause);
65
+
66
+ config.onError?.({
67
+ ctx,
68
+ error,
69
+ input: opts.args[0],
70
+ path: '',
71
+ type: opts._def.type,
72
+ });
73
+
74
+ rethrowNextErrors(error);
75
+
76
+ throw error;
77
+ };
78
+ switch (opts._def.type) {
79
+ case 'mutation': {
80
+ /**
81
+ * When you wrap an action with useFormState, it gets an extra argument as its first argument.
82
+ * The submitted form data is therefore its second argument instead of its first as it would usually be.
83
+ * The new first argument that gets added is the current state of the form.
84
+ * @see https://react.dev/reference/react-dom/hooks/useFormState#my-action-can-no-longer-read-the-submitted-form-data
85
+ */
86
+ let input = opts.args.length === 1 ? opts.args[0] : opts.args[1];
87
+ if (normalizeFormData && input instanceof FormData) {
88
+ input = formDataToObject(input);
89
+ }
90
+
91
+ return await opts
92
+ .invoke({
93
+ type: opts._def.type,
94
+ ctx,
95
+ getRawInput: async () => input,
96
+ path: '',
97
+ input,
98
+ })
99
+ .then((data) => {
100
+ if (data instanceof TRPCRedirectError) throw data;
101
+ return data;
102
+ })
103
+ .catch(handleError);
104
+ }
105
+ case 'query': {
106
+ const input = opts.args[0];
107
+ return await opts
108
+ .invoke({
109
+ type: opts._def.type,
110
+ ctx,
111
+ getRawInput: async () => input,
112
+ path: '',
113
+ input,
114
+ })
115
+ .then((data) => {
116
+ if (data instanceof TRPCRedirectError) throw data;
117
+ return data;
118
+ })
119
+ .catch(handleError);
120
+ }
121
+ default: {
122
+ throw new TRPCError({
123
+ code: 'NOT_IMPLEMENTED',
124
+ message: `Not implemented for type ${opts._def.type}`,
125
+ });
126
+ }
127
+ }
128
+ };
129
+ }
@@ -0,0 +1,12 @@
1
+ import type { notFound as __notFound } from 'next/navigation';
2
+ import { TRPCError } from '../../@trpc/server';
3
+
4
+ /**
5
+ * Like `next/navigation`'s `notFound()` but throws a `TRPCError` that later will be handled by Next.js
6
+ * @public
7
+ */
8
+ export const notFound: typeof __notFound = () => {
9
+ throw new TRPCError({
10
+ code: 'NOT_FOUND',
11
+ });
12
+ };
@@ -0,0 +1,30 @@
1
+ import type { RedirectType } from 'next/navigation';
2
+ import { TRPCError } from '../../@trpc/server';
3
+
4
+ /**
5
+ * @internal
6
+ */
7
+ export class TRPCRedirectError extends TRPCError {
8
+ public readonly args;
9
+ constructor(url: URL | string, redirectType?: RedirectType) {
10
+ super({
11
+ // TODO(?): This should maybe a custom error code
12
+ code: 'UNPROCESSABLE_CONTENT',
13
+ message: `Redirect error to "${url}" that will be handled by Next.js`,
14
+ });
15
+
16
+ this.args = [url.toString(), redirectType] as const;
17
+ }
18
+ }
19
+
20
+ /**
21
+ * Like `next/navigation`'s `redirect()` but throws a `TRPCError` that later will be handled by Next.js
22
+ * This provides better typesafety than the `next/navigation`'s `redirect()` since the action continues
23
+ * to execute on the frontend even if Next's `redirect()` has a return type of `never`.
24
+ * @public
25
+ * @remark You should only use this if you're also using `nextAppDirCaller`.
26
+ */
27
+ export const redirect = (url: URL | string, redirectType?: RedirectType) => {
28
+ // We rethrow this internally so the returntype on the client is undefined.
29
+ return new TRPCRedirectError(url, redirectType) as unknown as undefined;
30
+ };
@@ -0,0 +1,25 @@
1
+ import { isNotFoundError } from 'next/dist/client/components/not-found';
2
+ import { isRedirectError } from 'next/dist/client/components/redirect';
3
+ import {
4
+ notFound as __notFound,
5
+ redirect as __redirect,
6
+ } from 'next/navigation';
7
+ import type { TRPCError } from '../../@trpc/server';
8
+ import { TRPCRedirectError } from './redirect';
9
+
10
+ /**
11
+ * Rethrow errors that should be handled by Next.js
12
+ */
13
+
14
+ export const rethrowNextErrors = (error: TRPCError) => {
15
+ if (error.code === 'NOT_FOUND') {
16
+ __notFound();
17
+ }
18
+ if (error instanceof TRPCRedirectError) {
19
+ __redirect(...error.args);
20
+ }
21
+ const { cause } = error;
22
+ if (isRedirectError(cause) || isNotFoundError(cause)) {
23
+ throw error.cause;
24
+ }
25
+ };
@@ -0,0 +1,3 @@
1
+ export { nextAppDirCaller as experimental_nextAppDirCaller } from './next-app-dir/nextAppDirCaller';
2
+ export { redirect as experimental_redirect } from './next-app-dir/redirect';
3
+ export { notFound as experimental_notFound } from './next-app-dir/notFound';
@@ -1,32 +1,43 @@
1
+ /**
2
+ * If you're making an adapter for tRPC and looking at this file for reference, you should import types and functions from `@trpc/server` and `@trpc/server/http`
3
+ *
4
+ * @example
5
+ * ```ts
6
+ * import type { AnyTRPCRouter } from '@trpc/server'
7
+ * import type { HTTPBaseHandlerOptions } from '@trpc/server/http'
8
+ * ```
9
+ */
10
+ import type { NextApiHandler, NextApiRequest, NextApiResponse } from 'next';
11
+ // @trpc/server
12
+ import type { AnyRouter } from '../@trpc/server';
13
+ // @trpc/server
14
+ import { getErrorShape, TRPCError } from '../@trpc/server';
1
15
  import type {
2
- NextApiHandler,
3
- NextApiRequest,
4
- NextApiResponse,
5
- } from 'next/types';
6
- import { AnyRouter } from '../core';
7
- import { TRPCError } from '../error/TRPCError';
8
- import { getErrorShape } from '../shared/getErrorShape';
9
- import {
10
16
  NodeHTTPCreateContextFnOptions,
11
17
  NodeHTTPHandlerOptions,
12
- nodeHTTPRequestHandler,
13
18
  } from './node-http';
19
+ import { nodeHTTPRequestHandler } from './node-http';
14
20
 
15
21
  export type CreateNextContextOptions = NodeHTTPCreateContextFnOptions<
16
22
  NextApiRequest,
17
23
  NextApiResponse
18
24
  >;
19
25
 
26
+ /**
27
+ * Preventing "TypeScript where it's tough not to get "The inferred type of 'xxxx' cannot be named without a reference to [...]"
28
+ */
29
+ export type { NextApiHandler, NextApiRequest, NextApiResponse } from 'next';
30
+
20
31
  export function createNextApiHandler<TRouter extends AnyRouter>(
21
32
  opts: NodeHTTPHandlerOptions<TRouter, NextApiRequest, NextApiResponse>,
22
33
  ): NextApiHandler {
23
34
  return async (req, res) => {
24
35
  function getPath(): string | null {
25
- if (typeof req.query.trpc === 'string') {
26
- return req.query.trpc;
36
+ if (typeof req.query['trpc'] === 'string') {
37
+ return req.query['trpc'];
27
38
  }
28
- if (Array.isArray(req.query.trpc)) {
29
- return req.query.trpc.join('/');
39
+ if (Array.isArray(req.query['trpc'])) {
40
+ return req.query['trpc'].join('/');
30
41
  }
31
42
  return null;
32
43
  }
@@ -54,7 +65,12 @@ export function createNextApiHandler<TRouter extends AnyRouter>(
54
65
  }
55
66
 
56
67
  await nodeHTTPRequestHandler({
57
- ...opts,
68
+ // FIXME: no typecasting should be needed here
69
+ ...(opts as NodeHTTPHandlerOptions<
70
+ AnyRouter,
71
+ NextApiRequest,
72
+ NextApiResponse
73
+ >),
58
74
  req,
59
75
  res,
60
76
  path,
@@ -8,7 +8,7 @@
8
8
  */
9
9
 
10
10
  /**
11
- * @see https://github.com/remix-run/remix/blob/0bcb4a304dd2f08f6032c3bf0c3aa7eb5b976901/packages/remix-node/upload/fileUploadHandler.ts
11
+ * @link https://github.com/remix-run/remix/blob/0bcb4a304dd2f08f6032c3bf0c3aa7eb5b976901/packages/remix-node/upload/fileUploadHandler.ts
12
12
  */
13
13
  import { randomBytes } from 'node:crypto';
14
14
  import { createReadStream, createWriteStream, statSync } from 'node:fs';
@@ -18,7 +18,8 @@ import { basename, dirname, extname, resolve as resolvePath } from 'node:path';
18
18
  import { finished, Readable } from 'node:stream';
19
19
  import { promisify } from 'node:util';
20
20
  import { streamSlice } from './streamSlice';
21
- import { MaxPartSizeExceededError, UploadHandler } from './uploadHandler';
21
+ import type { UploadHandler } from './uploadHandler';
22
+ import { MaxPartSizeExceededError } from './uploadHandler';
22
23
 
23
24
  export async function readableStreamToString(
24
25
  stream: ReadableStream<Uint8Array>,
@@ -183,6 +184,12 @@ export function createFileUploadHandler({
183
184
  return new NodeOnDiskFile(filepath, contentType);
184
185
  };
185
186
  }
187
+ type NodeJSReadableStreamEsque = {
188
+ on(
189
+ eventName: string | symbol,
190
+ listener: (...args: any[]) => void,
191
+ ): NodeJSReadableStreamEsque;
192
+ };
186
193
 
187
194
  export class NodeOnDiskFile {
188
195
  name: string;
@@ -245,8 +252,8 @@ export class NodeOnDiskFile {
245
252
  }
246
253
 
247
254
  stream(): ReadableStream<any>;
248
- stream(): NodeJS.ReadableStream;
249
- stream(): NodeJS.ReadableStream | ReadableStream<any> {
255
+ stream(): NodeJSReadableStreamEsque;
256
+ stream(): NodeJSReadableStreamEsque | ReadableStream<any> {
250
257
  let stream: Readable = createReadStream(this.filepath);
251
258
  if (this.slicer) {
252
259
  stream = stream.pipe(streamSlice(this.slicer.start, this.slicer.end));
@@ -6,20 +6,19 @@
6
6
  */
7
7
 
8
8
  /**
9
- * @see https://github.com/remix-run/remix/blob/0bcb4a304dd2f08f6032c3bf0c3aa7eb5b976901/packages/remix-server-runtime/formData.ts
9
+ * @link https://github.com/remix-run/remix/blob/0bcb4a304dd2f08f6032c3bf0c3aa7eb5b976901/packages/remix-server-runtime/formData.ts
10
10
  */
11
11
  import * as fs from 'fs/promises';
12
12
  import { Readable } from 'node:stream';
13
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
14
+ // @ts-ignore the type definitions for this package are borked
13
15
  import { streamMultipart } from '@web3-storage/multipart-parser';
14
- import { CombinedDataTransformer } from '../../../../transformer';
16
+ // @trpc/server
15
17
  import { createNodeHTTPContentTypeHandler } from '../../internals/contentType';
16
- import { NodeHTTPRequest } from '../../types';
18
+ import type { NodeHTTPRequest } from '../../types';
17
19
  import { NodeOnDiskFile } from './fileUploadHandler';
18
- import {
19
- MaxBodySizeExceededError,
20
- UploadHandler,
21
- UploadHandlerPart,
22
- } from './uploadHandler';
20
+ import type { UploadHandler, UploadHandlerPart } from './uploadHandler';
21
+ import { MaxBodySizeExceededError } from './uploadHandler';
23
22
 
24
23
  const utfTextDecoder = new TextDecoder('utf-8');
25
24
 
@@ -31,7 +30,7 @@ const utfTextDecoder = new TextDecoder('utf-8');
31
30
  * @param uploadHandler A function that handles file uploads and returns a value to be used in the request body. If uploaded to disk, the returned value is a NodeOnDiskFile. If uploaded to memory, the returned value is a File.
32
31
  * @param maxBodySize The maximum size of the request body in bytes. Defaults to Infinity.
33
32
  *
34
- * @see https://remix.run/utils/parse-multipart-form-data
33
+ * @link https://remix.run/utils/parse-multipart-form-data
35
34
  */
36
35
  async function parseMultipartFormData(
37
36
  request: NodeHTTPRequest,
@@ -136,8 +135,7 @@ export const nodeHTTPFormDataContentTypeHandler =
136
135
  0: undefined,
137
136
  };
138
137
  }
139
- const transformer = opts.router._def._config
140
- .transformer as CombinedDataTransformer;
138
+ const transformer = opts.router._def._config.transformer;
141
139
 
142
140
  const deserializedInput = transformer.input.deserialize(
143
141
  JSON.parse(unparsedInput),
@@ -148,16 +146,18 @@ export const nodeHTTPFormDataContentTypeHandler =
148
146
  },
149
147
  });
150
148
 
151
- export { parseMultipartFormData as experimental_parseMultipartFormData };
152
- export { createMemoryUploadHandler as experimental_createMemoryUploadHandler } from './memoryUploadHandler';
153
149
  export {
154
- createFileUploadHandler as experimental_createFileUploadHandler,
155
150
  NodeOnDiskFile as experimental_NodeOnDiskFile,
151
+ createFileUploadHandler as experimental_createFileUploadHandler,
156
152
  } from './fileUploadHandler';
153
+ export { createMemoryUploadHandler as experimental_createMemoryUploadHandler } from './memoryUploadHandler';
157
154
  export {
158
- composeUploadHandlers as experimental_composeUploadHandlers,
159
- MaxPartSizeExceededError,
160
155
  MaxBodySizeExceededError,
156
+ MaxPartSizeExceededError,
157
+ composeUploadHandlers as experimental_composeUploadHandlers,
158
+ type UploadHandler,
161
159
  } from './uploadHandler';
162
- export { type UploadHandler } from './uploadHandler';
163
- export { isMultipartFormDataRequest as experimental_isMultipartFormDataRequest };
160
+ export {
161
+ isMultipartFormDataRequest as experimental_isMultipartFormDataRequest,
162
+ parseMultipartFormData as experimental_parseMultipartFormData,
163
+ };
@@ -6,9 +6,10 @@
6
6
  */
7
7
 
8
8
  /**
9
- * @see https://github.com/remix-run/remix/blob/0bcb4a304dd2f08f6032c3bf0c3aa7eb5b976901/packages/remix-server-runtime/upload/memoryUploadHandler.ts
9
+ * @link https://github.com/remix-run/remix/blob/0bcb4a304dd2f08f6032c3bf0c3aa7eb5b976901/packages/remix-server-runtime/upload/memoryUploadHandler.ts
10
10
  */
11
- import { MaxPartSizeExceededError, UploadHandler } from './uploadHandler';
11
+ import type { UploadHandler } from './uploadHandler';
12
+ import { MaxPartSizeExceededError } from './uploadHandler';
12
13
 
13
14
  export type MemoryUploadHandlerFilterArgs = {
14
15
  filename?: string;
@@ -1,4 +1,5 @@
1
- import { Transform, TransformCallback } from 'node:stream';
1
+ import type { TransformCallback } from 'node:stream';
2
+ import { Transform } from 'node:stream';
2
3
 
3
4
  class SliceStream extends Transform {
4
5
  private indexOffset = 0;
@@ -9,7 +10,11 @@ class SliceStream extends Transform {
9
10
  super();
10
11
  }
11
12
 
12
- _transform(chunk: any, _: BufferEncoding, done: TransformCallback): void {
13
+ override _transform(
14
+ chunk: any,
15
+ _: BufferEncoding,
16
+ done: TransformCallback,
17
+ ): void {
13
18
  this.indexOffset += chunk.length;
14
19
 
15
20
  if (!this.emitUp && this.indexOffset >= this.startIndex) {
@@ -1,7 +1,7 @@
1
- import { NodeOnDiskFile } from './fileUploadHandler';
1
+ import type { NodeOnDiskFile } from './fileUploadHandler';
2
2
 
3
3
  /**
4
- * @see https://github.com/remix-run/remix/blob/0bcb4a304dd2f08f6032c3bf0c3aa7eb5b976901/packages/remix-server-runtime/formData.ts
4
+ * @link https://github.com/remix-run/remix/blob/0bcb4a304dd2f08f6032c3bf0c3aa7eb5b976901/packages/remix-server-runtime/formData.ts
5
5
  */
6
6
  export type UploadHandlerPart = {
7
7
  name: string;
@@ -1,6 +1,7 @@
1
- import { TRPCError } from '../../../../error/TRPCError';
2
- import { BodyResult } from '../../../../http/contentType';
3
- import { NodeHTTPRequest } from '../../types';
1
+ // @trpc/server
2
+ import { TRPCError } from '../../../../@trpc/server';
3
+ import type { BodyResult } from '../../../../@trpc/server/http';
4
+ import type { NodeHTTPRequest } from '../../types';
4
5
 
5
6
  export async function getPostBody(opts: {
6
7
  req: NodeHTTPRequest;
@@ -8,6 +9,22 @@ export async function getPostBody(opts: {
8
9
  }): Promise<BodyResult> {
9
10
  const { req, maxBodySize = Infinity } = opts;
10
11
  return new Promise((resolve) => {
12
+ if (
13
+ !req.headers['content-type']?.startsWith('application/json') &&
14
+ (!req.method ||
15
+ (req.method !== 'GET' &&
16
+ req.method !== 'OPTIONS' &&
17
+ req.method !== 'HEAD'))
18
+ ) {
19
+ resolve({
20
+ ok: false,
21
+ error: new TRPCError({
22
+ code: 'UNSUPPORTED_MEDIA_TYPE',
23
+ message: 'Invalid Content-Type header (expected application/json)',
24
+ }),
25
+ });
26
+ return;
27
+ }
11
28
  if ('body' in req) {
12
29
  resolve({
13
30
  ok: true,
@@ -1,4 +1,4 @@
1
- import { getJsonContentTypeInputs } from '../../../../http/contentType';
1
+ import { getJsonContentTypeInputs } from '../../../../@trpc/server/http';
2
2
  import { createNodeHTTPContentTypeHandler } from '../../internals/contentType';
3
3
  import { getPostBody } from './getPostBody';
4
4
 
@@ -1,6 +1,8 @@
1
- import { AnyRouter } from '../../../core';
2
- import { BaseContentTypeHandler } from '../../../http/contentType';
3
- import {
1
+ // @trpc/server
2
+ import type { AnyRouter } from '../../../@trpc/server';
3
+ // @trpc/server/http
4
+ import type { BaseContentTypeHandler } from '../../../@trpc/server/http';
5
+ import type {
4
6
  NodeHTTPRequest,
5
7
  NodeHTTPRequestHandlerOptions,
6
8
  NodeHTTPResponse,