@trpc/server 11.0.0-alpha-tmp-subscription-connection-state.488 → 11.0.0-alpha-tmp-12-06-react.665

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 (276) hide show
  1. package/dist/@trpc/server/http.d.ts +1 -1
  2. package/dist/@trpc/server/http.d.ts.map +1 -1
  3. package/dist/@trpc/server/index.d.ts +5 -1
  4. package/dist/@trpc/server/index.d.ts.map +1 -1
  5. package/dist/adapters/aws-lambda/getPlanner.d.ts.map +1 -1
  6. package/dist/adapters/aws-lambda/getPlanner.js +2 -2
  7. package/dist/adapters/aws-lambda/getPlanner.mjs +2 -2
  8. package/dist/adapters/aws-lambda/index.d.ts.map +1 -1
  9. package/dist/adapters/aws-lambda/index.js +2 -0
  10. package/dist/adapters/aws-lambda/index.mjs +2 -0
  11. package/dist/adapters/express.d.ts.map +1 -1
  12. package/dist/adapters/express.js +27 -7
  13. package/dist/adapters/express.mjs +27 -7
  14. package/dist/adapters/fastify/fastifyRequestHandler.js +3 -1
  15. package/dist/adapters/fastify/fastifyRequestHandler.mjs +3 -1
  16. package/dist/adapters/fastify/fastifyTRPCPlugin.d.ts.map +1 -1
  17. package/dist/adapters/fastify/fastifyTRPCPlugin.js +9 -2
  18. package/dist/adapters/fastify/fastifyTRPCPlugin.mjs +10 -3
  19. package/dist/adapters/fetch/fetchRequestHandler.js +9 -8
  20. package/dist/adapters/fetch/fetchRequestHandler.mjs +9 -8
  21. package/dist/adapters/next-app-dir/nextAppDirCaller.d.ts.map +1 -1
  22. package/dist/adapters/next-app-dir/nextAppDirCaller.js +10 -5
  23. package/dist/adapters/next-app-dir/nextAppDirCaller.mjs +10 -5
  24. package/dist/adapters/next-app-dir/notFound.js +2 -0
  25. package/dist/adapters/next-app-dir/notFound.mjs +2 -0
  26. package/dist/adapters/next-app-dir/redirect.js +16 -1
  27. package/dist/adapters/next-app-dir/redirect.mjs +16 -1
  28. package/dist/adapters/next-app-dir/rethrowNextErrors.d.ts.map +1 -1
  29. package/dist/adapters/next-app-dir/rethrowNextErrors.js +4 -3
  30. package/dist/adapters/next-app-dir/rethrowNextErrors.mjs +4 -3
  31. package/dist/adapters/next.d.ts.map +1 -1
  32. package/dist/adapters/next.js +23 -30
  33. package/dist/adapters/next.mjs +24 -31
  34. package/dist/adapters/node-http/incomingMessageToRequest.d.ts +2 -1
  35. package/dist/adapters/node-http/incomingMessageToRequest.d.ts.map +1 -1
  36. package/dist/adapters/node-http/incomingMessageToRequest.js +83 -40
  37. package/dist/adapters/node-http/incomingMessageToRequest.mjs +83 -41
  38. package/dist/adapters/node-http/index.js +2 -0
  39. package/dist/adapters/node-http/index.mjs +2 -2
  40. package/dist/adapters/node-http/nodeHTTPRequestHandler.d.ts +7 -0
  41. package/dist/adapters/node-http/nodeHTTPRequestHandler.d.ts.map +1 -1
  42. package/dist/adapters/node-http/nodeHTTPRequestHandler.js +70 -58
  43. package/dist/adapters/node-http/nodeHTTPRequestHandler.mjs +70 -59
  44. package/dist/adapters/node-http/writeResponse.d.ts +18 -0
  45. package/dist/adapters/node-http/writeResponse.d.ts.map +1 -0
  46. package/dist/adapters/node-http/writeResponse.js +82 -0
  47. package/dist/adapters/node-http/writeResponse.mjs +79 -0
  48. package/dist/adapters/standalone.d.ts +5 -2
  49. package/dist/adapters/standalone.d.ts.map +1 -1
  50. package/dist/adapters/standalone.js +25 -13
  51. package/dist/adapters/standalone.mjs +26 -14
  52. package/dist/adapters/ws.d.ts +14 -4
  53. package/dist/adapters/ws.d.ts.map +1 -1
  54. package/dist/adapters/ws.js +236 -90
  55. package/dist/adapters/ws.mjs +237 -92
  56. package/dist/bundle-analysis.json +411 -294
  57. package/dist/http.js +2 -4
  58. package/dist/http.mjs +2 -2
  59. package/dist/index.js +6 -2
  60. package/dist/index.mjs +3 -1
  61. package/dist/node_modules/.pnpm/@rollup_plugin-typescript@12.1.1_rollup@4.27.4_tslib@2.8.1_typescript@5.7.2/node_modules/tslib/tslib.es6.js +73 -0
  62. package/dist/observable/behaviorSubject.d.ts +15 -0
  63. package/dist/observable/behaviorSubject.d.ts.map +1 -0
  64. package/dist/observable/behaviorSubject.js +40 -0
  65. package/dist/observable/behaviorSubject.mjs +38 -0
  66. package/dist/observable/index.d.ts +3 -3
  67. package/dist/observable/index.d.ts.map +1 -1
  68. package/dist/observable/index.js +5 -0
  69. package/dist/observable/index.mjs +3 -2
  70. package/dist/observable/observable.d.ts +2 -1
  71. package/dist/observable/observable.d.ts.map +1 -1
  72. package/dist/observable/observable.js +31 -8
  73. package/dist/observable/observable.mjs +31 -8
  74. package/dist/observable/operators.d.ts +2 -0
  75. package/dist/observable/operators.d.ts.map +1 -1
  76. package/dist/observable/operators.js +35 -0
  77. package/dist/observable/operators.mjs +34 -1
  78. package/dist/rpc.js +2 -0
  79. package/dist/rpc.mjs +2 -0
  80. package/dist/shared.js +2 -0
  81. package/dist/shared.mjs +2 -0
  82. package/dist/unstable-core-do-not-import/clientish/inference.d.ts.map +1 -1
  83. package/dist/unstable-core-do-not-import/clientish/inferrable.d.ts.map +1 -1
  84. package/dist/unstable-core-do-not-import/clientish/serialize.d.ts +2 -2
  85. package/dist/unstable-core-do-not-import/clientish/serialize.d.ts.map +1 -1
  86. package/dist/unstable-core-do-not-import/createProxy.js +1 -1
  87. package/dist/unstable-core-do-not-import/createProxy.mjs +1 -1
  88. package/dist/unstable-core-do-not-import/error/TRPCError.d.ts +1 -1
  89. package/dist/unstable-core-do-not-import/error/TRPCError.js +16 -1
  90. package/dist/unstable-core-do-not-import/error/TRPCError.mjs +16 -1
  91. package/dist/unstable-core-do-not-import/error/formatter.js +1 -1
  92. package/dist/unstable-core-do-not-import/error/formatter.mjs +1 -1
  93. package/dist/unstable-core-do-not-import/error/getErrorShape.js +2 -2
  94. package/dist/unstable-core-do-not-import/error/getErrorShape.mjs +2 -2
  95. package/dist/unstable-core-do-not-import/http/contentType.js +3 -3
  96. package/dist/unstable-core-do-not-import/http/contentType.mjs +3 -3
  97. package/dist/unstable-core-do-not-import/http/getHTTPStatusCode.d.ts +6 -1
  98. package/dist/unstable-core-do-not-import/http/getHTTPStatusCode.d.ts.map +1 -1
  99. package/dist/unstable-core-do-not-import/http/getHTTPStatusCode.js +28 -0
  100. package/dist/unstable-core-do-not-import/http/getHTTPStatusCode.mjs +25 -1
  101. package/dist/unstable-core-do-not-import/http/isAbortError.d.ts +4 -0
  102. package/dist/unstable-core-do-not-import/http/isAbortError.d.ts.map +1 -0
  103. package/dist/unstable-core-do-not-import/http/isAbortError.js +9 -0
  104. package/dist/unstable-core-do-not-import/http/isAbortError.mjs +7 -0
  105. package/dist/unstable-core-do-not-import/http/resolveResponse.d.ts.map +1 -1
  106. package/dist/unstable-core-do-not-import/http/resolveResponse.js +187 -92
  107. package/dist/unstable-core-do-not-import/http/resolveResponse.mjs +189 -94
  108. package/dist/unstable-core-do-not-import/http/types.d.ts +1 -1
  109. package/dist/unstable-core-do-not-import/initTRPC.d.ts +11 -11
  110. package/dist/unstable-core-do-not-import/initTRPC.d.ts.map +1 -1
  111. package/dist/unstable-core-do-not-import/initTRPC.js +11 -11
  112. package/dist/unstable-core-do-not-import/initTRPC.mjs +11 -11
  113. package/dist/unstable-core-do-not-import/middleware.d.ts +2 -1
  114. package/dist/unstable-core-do-not-import/middleware.d.ts.map +1 -1
  115. package/dist/unstable-core-do-not-import/middleware.js +2 -2
  116. package/dist/unstable-core-do-not-import/middleware.mjs +2 -2
  117. package/dist/unstable-core-do-not-import/parser.d.ts +5 -1
  118. package/dist/unstable-core-do-not-import/parser.d.ts.map +1 -1
  119. package/dist/unstable-core-do-not-import/parser.js +4 -0
  120. package/dist/unstable-core-do-not-import/parser.mjs +4 -0
  121. package/dist/unstable-core-do-not-import/procedure.d.ts +8 -2
  122. package/dist/unstable-core-do-not-import/procedure.d.ts.map +1 -1
  123. package/dist/unstable-core-do-not-import/procedureBuilder.d.ts +32 -13
  124. package/dist/unstable-core-do-not-import/procedureBuilder.d.ts.map +1 -1
  125. package/dist/unstable-core-do-not-import/procedureBuilder.js +33 -39
  126. package/dist/unstable-core-do-not-import/procedureBuilder.mjs +33 -39
  127. package/dist/unstable-core-do-not-import/rootConfig.d.ts +17 -17
  128. package/dist/unstable-core-do-not-import/rootConfig.d.ts.map +1 -1
  129. package/dist/unstable-core-do-not-import/router.d.ts +4 -3
  130. package/dist/unstable-core-do-not-import/router.d.ts.map +1 -1
  131. package/dist/unstable-core-do-not-import/router.js +6 -5
  132. package/dist/unstable-core-do-not-import/router.mjs +6 -5
  133. package/dist/unstable-core-do-not-import/rpc/codes.d.ts +2 -9
  134. package/dist/unstable-core-do-not-import/rpc/codes.d.ts.map +1 -1
  135. package/dist/unstable-core-do-not-import/rpc/envelopes.d.ts +11 -6
  136. package/dist/unstable-core-do-not-import/rpc/envelopes.d.ts.map +1 -1
  137. package/dist/unstable-core-do-not-import/rpc/parseTRPCMessage.d.ts.map +1 -1
  138. package/dist/unstable-core-do-not-import/rpc/parseTRPCMessage.js +7 -3
  139. package/dist/unstable-core-do-not-import/rpc/parseTRPCMessage.mjs +7 -3
  140. package/dist/unstable-core-do-not-import/stream/jsonl.d.ts +31 -16
  141. package/dist/unstable-core-do-not-import/stream/jsonl.d.ts.map +1 -1
  142. package/dist/unstable-core-do-not-import/stream/jsonl.js +440 -318
  143. package/dist/unstable-core-do-not-import/stream/jsonl.mjs +440 -318
  144. package/dist/unstable-core-do-not-import/stream/sse.d.ts +63 -41
  145. package/dist/unstable-core-do-not-import/stream/sse.d.ts.map +1 -1
  146. package/dist/unstable-core-do-not-import/stream/sse.js +300 -119
  147. package/dist/unstable-core-do-not-import/stream/sse.mjs +302 -119
  148. package/dist/unstable-core-do-not-import/stream/sse.types.d.ts +31 -0
  149. package/dist/unstable-core-do-not-import/stream/sse.types.d.ts.map +1 -0
  150. package/dist/unstable-core-do-not-import/stream/tracked.d.ts +31 -0
  151. package/dist/unstable-core-do-not-import/stream/tracked.d.ts.map +1 -0
  152. package/dist/unstable-core-do-not-import/stream/tracked.js +29 -0
  153. package/dist/unstable-core-do-not-import/stream/tracked.mjs +25 -0
  154. package/dist/unstable-core-do-not-import/stream/utils/asyncIterable.d.ts +17 -0
  155. package/dist/unstable-core-do-not-import/stream/utils/asyncIterable.d.ts.map +1 -0
  156. package/dist/unstable-core-do-not-import/stream/utils/asyncIterable.js +171 -0
  157. package/dist/unstable-core-do-not-import/stream/utils/asyncIterable.mjs +167 -0
  158. package/dist/unstable-core-do-not-import/stream/utils/createDeferred.d.ts +0 -11
  159. package/dist/unstable-core-do-not-import/stream/utils/createDeferred.d.ts.map +1 -1
  160. package/dist/unstable-core-do-not-import/stream/utils/createDeferred.js +0 -29
  161. package/dist/unstable-core-do-not-import/stream/utils/createDeferred.mjs +1 -29
  162. package/dist/unstable-core-do-not-import/stream/utils/disposable.d.ts +17 -0
  163. package/dist/unstable-core-do-not-import/stream/utils/disposable.d.ts.map +1 -0
  164. package/dist/unstable-core-do-not-import/stream/utils/disposable.js +44 -0
  165. package/dist/unstable-core-do-not-import/stream/utils/disposable.mjs +41 -0
  166. package/dist/unstable-core-do-not-import/stream/utils/readableStreamFrom.d.ts +8 -0
  167. package/dist/unstable-core-do-not-import/stream/utils/readableStreamFrom.d.ts.map +1 -0
  168. package/dist/unstable-core-do-not-import/stream/utils/readableStreamFrom.js +25 -0
  169. package/dist/unstable-core-do-not-import/stream/utils/readableStreamFrom.mjs +23 -0
  170. package/dist/unstable-core-do-not-import/stream/utils/timerResource.d.ts +5 -0
  171. package/dist/unstable-core-do-not-import/stream/utils/timerResource.d.ts.map +1 -0
  172. package/dist/unstable-core-do-not-import/stream/utils/timerResource.js +26 -0
  173. package/dist/unstable-core-do-not-import/stream/utils/timerResource.mjs +23 -0
  174. package/dist/unstable-core-do-not-import/stream/utils/withPing.d.ts +7 -0
  175. package/dist/unstable-core-do-not-import/stream/utils/withPing.d.ts.map +1 -0
  176. package/dist/unstable-core-do-not-import/stream/utils/withPing.js +130 -0
  177. package/dist/unstable-core-do-not-import/stream/utils/withPing.mjs +127 -0
  178. package/dist/unstable-core-do-not-import/transformer.d.ts +2 -4
  179. package/dist/unstable-core-do-not-import/transformer.d.ts.map +1 -1
  180. package/dist/unstable-core-do-not-import/transformer.js +1 -1
  181. package/dist/unstable-core-do-not-import/transformer.mjs +1 -1
  182. package/dist/unstable-core-do-not-import/types.d.ts +26 -3
  183. package/dist/unstable-core-do-not-import/types.d.ts.map +1 -1
  184. package/dist/unstable-core-do-not-import/utils.d.ts +15 -0
  185. package/dist/unstable-core-do-not-import/utils.d.ts.map +1 -1
  186. package/dist/unstable-core-do-not-import/utils.js +49 -1
  187. package/dist/unstable-core-do-not-import/utils.mjs +45 -2
  188. package/dist/unstable-core-do-not-import.d.ts +4 -2
  189. package/dist/unstable-core-do-not-import.d.ts.map +1 -1
  190. package/dist/unstable-core-do-not-import.js +18 -9
  191. package/dist/unstable-core-do-not-import.mjs +7 -7
  192. package/dist/vendor/unpromise/index.d.ts +3 -0
  193. package/dist/vendor/unpromise/index.d.ts.map +1 -0
  194. package/dist/vendor/unpromise/types.d.ts +28 -0
  195. package/dist/vendor/unpromise/types.d.ts.map +1 -0
  196. package/dist/vendor/unpromise/unpromise.d.ts +121 -0
  197. package/dist/vendor/unpromise/unpromise.d.ts.map +1 -0
  198. package/dist/vendor/unpromise/unpromise.js +292 -0
  199. package/dist/vendor/unpromise/unpromise.mjs +289 -0
  200. package/package.json +20 -17
  201. package/src/@trpc/server/http.ts +0 -2
  202. package/src/@trpc/server/index.ts +6 -0
  203. package/src/adapters/aws-lambda/getPlanner.ts +2 -2
  204. package/src/adapters/aws-lambda/index.ts +5 -6
  205. package/src/adapters/express.ts +21 -9
  206. package/src/adapters/fastify/fastifyRequestHandler.ts +1 -1
  207. package/src/adapters/fastify/fastifyTRPCPlugin.ts +16 -5
  208. package/src/adapters/fetch/fetchRequestHandler.ts +2 -2
  209. package/src/adapters/next-app-dir/nextAppDirCaller.ts +3 -0
  210. package/src/adapters/next-app-dir/rethrowNextErrors.ts +3 -2
  211. package/src/adapters/next.ts +29 -34
  212. package/src/adapters/node-http/incomingMessageToRequest.ts +110 -40
  213. package/src/adapters/node-http/nodeHTTPRequestHandler.ts +85 -63
  214. package/src/adapters/node-http/writeResponse.ts +94 -0
  215. package/src/adapters/standalone.ts +35 -18
  216. package/src/adapters/ws.ts +152 -62
  217. package/src/observable/behaviorSubject.ts +55 -0
  218. package/src/observable/index.ts +22 -3
  219. package/src/observable/observable.ts +32 -14
  220. package/src/observable/operators.ts +47 -0
  221. package/src/unstable-core-do-not-import/clientish/inference.ts +4 -4
  222. package/src/unstable-core-do-not-import/clientish/inferrable.ts +6 -6
  223. package/src/unstable-core-do-not-import/clientish/serialize.ts +5 -5
  224. package/src/unstable-core-do-not-import/http/getHTTPStatusCode.ts +37 -4
  225. package/src/unstable-core-do-not-import/http/isAbortError.ts +7 -0
  226. package/src/unstable-core-do-not-import/http/resolveResponse.ts +192 -85
  227. package/src/unstable-core-do-not-import/http/types.ts +1 -1
  228. package/src/unstable-core-do-not-import/initTRPC.ts +14 -20
  229. package/src/unstable-core-do-not-import/middleware.ts +5 -4
  230. package/src/unstable-core-do-not-import/parser.ts +17 -6
  231. package/src/unstable-core-do-not-import/procedure.ts +17 -2
  232. package/src/unstable-core-do-not-import/procedureBuilder.ts +138 -123
  233. package/src/unstable-core-do-not-import/rootConfig.ts +20 -17
  234. package/src/unstable-core-do-not-import/router.ts +15 -16
  235. package/src/unstable-core-do-not-import/rpc/codes.ts +2 -10
  236. package/src/unstable-core-do-not-import/rpc/envelopes.ts +18 -7
  237. package/src/unstable-core-do-not-import/rpc/parseTRPCMessage.ts +5 -1
  238. package/src/unstable-core-do-not-import/stream/jsonl.ts +293 -294
  239. package/src/unstable-core-do-not-import/stream/sse.ts +349 -191
  240. package/src/unstable-core-do-not-import/stream/sse.types.ts +44 -0
  241. package/src/unstable-core-do-not-import/stream/tracked.ts +49 -0
  242. package/src/unstable-core-do-not-import/stream/utils/asyncIterable.ts +89 -0
  243. package/src/unstable-core-do-not-import/stream/utils/createDeferred.ts +0 -36
  244. package/src/unstable-core-do-not-import/stream/utils/disposable.ts +52 -0
  245. package/src/unstable-core-do-not-import/stream/utils/readableStreamFrom.ts +28 -0
  246. package/src/unstable-core-do-not-import/stream/utils/timerResource.ts +29 -0
  247. package/src/unstable-core-do-not-import/stream/utils/withPing.ts +47 -0
  248. package/src/unstable-core-do-not-import/transformer.ts +1 -1
  249. package/src/unstable-core-do-not-import/types.ts +35 -10
  250. package/src/unstable-core-do-not-import/utils.ts +56 -1
  251. package/src/unstable-core-do-not-import.ts +4 -2
  252. package/src/vendor/unpromise/ATTRIBUTION.txt +1 -0
  253. package/src/vendor/unpromise/LICENSE +20 -0
  254. package/src/vendor/unpromise/index.ts +7 -0
  255. package/src/vendor/unpromise/types.ts +55 -0
  256. package/src/vendor/unpromise/unpromise.ts +380 -0
  257. package/dist/unstable-core-do-not-import/http/batchStreamFormatter.d.ts +0 -24
  258. package/dist/unstable-core-do-not-import/http/batchStreamFormatter.d.ts.map +0 -1
  259. package/dist/unstable-core-do-not-import/http/batchStreamFormatter.js +0 -32
  260. package/dist/unstable-core-do-not-import/http/batchStreamFormatter.mjs +0 -30
  261. package/dist/unstable-core-do-not-import/http/toURL.d.ts +0 -2
  262. package/dist/unstable-core-do-not-import/http/toURL.d.ts.map +0 -1
  263. package/dist/unstable-core-do-not-import/http/toURL.js +0 -8
  264. package/dist/unstable-core-do-not-import/http/toURL.mjs +0 -6
  265. package/dist/unstable-core-do-not-import/stream/utils/createReadableStream.d.ts +0 -10
  266. package/dist/unstable-core-do-not-import/stream/utils/createReadableStream.d.ts.map +0 -1
  267. package/dist/unstable-core-do-not-import/stream/utils/createReadableStream.js +0 -31
  268. package/dist/unstable-core-do-not-import/stream/utils/createReadableStream.mjs +0 -29
  269. package/dist/unstable-core-do-not-import/stream/utils/createServer.d.ts +0 -7
  270. package/dist/unstable-core-do-not-import/stream/utils/createServer.d.ts.map +0 -1
  271. package/dist/unstable-core-do-not-import/types.js +0 -11
  272. package/dist/unstable-core-do-not-import/types.mjs +0 -9
  273. package/src/unstable-core-do-not-import/http/batchStreamFormatter.ts +0 -29
  274. package/src/unstable-core-do-not-import/http/toURL.ts +0 -7
  275. package/src/unstable-core-do-not-import/stream/utils/createReadableStream.ts +0 -31
  276. package/src/unstable-core-do-not-import/stream/utils/createServer.ts +0 -44
@@ -1,9 +1,15 @@
1
1
  'use strict';
2
2
 
3
+ var getErrorShape = require('../../unstable-core-do-not-import/error/getErrorShape.js');
3
4
  var TRPCError = require('../../unstable-core-do-not-import/error/TRPCError.js');
5
+ var utils = require('../../unstable-core-do-not-import/utils.js');
4
6
  var resolveResponse = require('../../unstable-core-do-not-import/http/resolveResponse.js');
5
7
  require('../../unstable-core-do-not-import/rootConfig.js');
8
+ var transformer = require('../../unstable-core-do-not-import/transformer.js');
9
+ require('../../vendor/unpromise/unpromise.js');
10
+ require('../../unstable-core-do-not-import/stream/utils/disposable.js');
6
11
  var incomingMessageToRequest = require('./incomingMessageToRequest.js');
12
+ var writeResponse = require('./writeResponse.js');
7
13
 
8
14
  /**
9
15
  * 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`
@@ -14,70 +20,76 @@ var incomingMessageToRequest = require('./incomingMessageToRequest.js');
14
20
  * import type { HTTPBaseHandlerOptions } from '@trpc/server/http'
15
21
  * ```
16
22
  */ // @trpc/server
17
- async function nodeHTTPRequestHandler(opts) {
18
- const handleViaMiddleware = opts.middleware ?? ((_req, _res, next)=>next());
19
- return handleViaMiddleware(opts.req, opts.res, async (err)=>{
20
- const req = incomingMessageToRequest.incomingMessageToRequest(opts.req, {
21
- maxBodySize: opts.maxBodySize ?? null
23
+ /**
24
+ * @internal
25
+ */ function internal_exceptionHandler(opts) {
26
+ return (cause)=>{
27
+ const { res, req } = opts;
28
+ const error = TRPCError.getTRPCErrorFromUnknown(cause);
29
+ const shape = getErrorShape.getErrorShape({
30
+ config: opts.router._def._config,
31
+ error,
32
+ type: 'unknown',
33
+ path: undefined,
34
+ input: undefined,
35
+ ctx: undefined
22
36
  });
23
- // Build tRPC dependencies
24
- const createContext = async (innerOpts)=>{
25
- return await opts.createContext?.({
26
- ...opts,
27
- ...innerOpts
28
- });
29
- };
30
- const response = await resolveResponse.resolveResponse({
31
- ...opts,
37
+ opts.onError?.({
32
38
  req,
33
- error: err ? TRPCError.getTRPCErrorFromUnknown(err) : null,
34
- createContext,
35
- onError (o) {
36
- opts?.onError?.({
37
- ...o,
38
- req: opts.req
39
- });
40
- }
39
+ error,
40
+ type: 'unknown',
41
+ path: undefined,
42
+ input: undefined,
43
+ ctx: undefined
44
+ });
45
+ const transformed = transformer.transformTRPCResponse(opts.router._def._config, {
46
+ error: shape
41
47
  });
42
- const { res } = opts;
43
- if (res.statusCode === 200) {
44
- // if the status code is set, we assume that it's been manually overridden
45
- res.statusCode = response.status;
46
- }
47
- for (const [key, value] of response.headers){
48
- res.setHeader(key, value);
49
- }
50
- if (response.body) {
51
- const reader = response.body.getReader();
52
- const onAbort = ()=>{
53
- // cancelling the reader will cause the whole stream to be cancelled
54
- reader.cancel().catch(()=>{
55
- // console.error('reader.cancel() error', err);
48
+ res.statusCode = shape.data.httpStatus;
49
+ res.end(JSON.stringify(transformed));
50
+ };
51
+ }
52
+ /**
53
+ * @remark the promise never rejects
54
+ */ async function nodeHTTPRequestHandler(opts) {
55
+ return new Promise((resolve)=>{
56
+ const handleViaMiddleware = opts.middleware ?? ((_req, _res, next)=>next());
57
+ opts.res.once('finish', ()=>{
58
+ resolve();
59
+ });
60
+ return handleViaMiddleware(opts.req, opts.res, (err)=>{
61
+ utils.run(async ()=>{
62
+ const request = incomingMessageToRequest.incomingMessageToRequest(opts.req, opts.res, {
63
+ maxBodySize: opts.maxBodySize ?? null
56
64
  });
57
- };
58
- req.signal.addEventListener('abort', onAbort, {
59
- once: true
60
- });
61
- while(true){
62
- const { done , value: value1 } = await reader.read();
63
- if (done) {
64
- break;
65
- }
66
- if (!res.writable) {
67
- break;
68
- }
69
- if (res.write(value1) === false) {
70
- await new Promise((resolve)=>{
71
- res.once('drain', resolve);
65
+ // Build tRPC dependencies
66
+ const createContext = async (innerOpts)=>{
67
+ return await opts.createContext?.({
68
+ ...opts,
69
+ ...innerOpts
72
70
  });
73
- }
74
- // IMPORTANT - flush the response buffer, otherwise the client will not receive the data until `.end()`
75
- res.flush?.();
76
- }
77
- req.signal.removeEventListener('abort', onAbort);
78
- }
79
- res.end();
71
+ };
72
+ const response = await resolveResponse.resolveResponse({
73
+ ...opts,
74
+ req: request,
75
+ error: err ? TRPCError.getTRPCErrorFromUnknown(err) : null,
76
+ createContext,
77
+ onError (o) {
78
+ opts?.onError?.({
79
+ ...o,
80
+ req: opts.req
81
+ });
82
+ }
83
+ });
84
+ await writeResponse.writeResponse({
85
+ request,
86
+ response,
87
+ rawResponse: opts.res
88
+ });
89
+ }).catch(internal_exceptionHandler(opts));
90
+ });
80
91
  });
81
92
  }
82
93
 
94
+ exports.internal_exceptionHandler = internal_exceptionHandler;
83
95
  exports.nodeHTTPRequestHandler = nodeHTTPRequestHandler;
@@ -1,7 +1,13 @@
1
+ import { getErrorShape } from '../../unstable-core-do-not-import/error/getErrorShape.mjs';
1
2
  import { getTRPCErrorFromUnknown } from '../../unstable-core-do-not-import/error/TRPCError.mjs';
3
+ import { run } from '../../unstable-core-do-not-import/utils.mjs';
2
4
  import { resolveResponse } from '../../unstable-core-do-not-import/http/resolveResponse.mjs';
3
5
  import '../../unstable-core-do-not-import/rootConfig.mjs';
6
+ import { transformTRPCResponse } from '../../unstable-core-do-not-import/transformer.mjs';
7
+ import '../../vendor/unpromise/unpromise.mjs';
8
+ import '../../unstable-core-do-not-import/stream/utils/disposable.mjs';
4
9
  import { incomingMessageToRequest } from './incomingMessageToRequest.mjs';
10
+ import { writeResponse } from './writeResponse.mjs';
5
11
 
6
12
  /**
7
13
  * 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`
@@ -12,70 +18,75 @@ import { incomingMessageToRequest } from './incomingMessageToRequest.mjs';
12
18
  * import type { HTTPBaseHandlerOptions } from '@trpc/server/http'
13
19
  * ```
14
20
  */ // @trpc/server
15
- async function nodeHTTPRequestHandler(opts) {
16
- const handleViaMiddleware = opts.middleware ?? ((_req, _res, next)=>next());
17
- return handleViaMiddleware(opts.req, opts.res, async (err)=>{
18
- const req = incomingMessageToRequest(opts.req, {
19
- maxBodySize: opts.maxBodySize ?? null
21
+ /**
22
+ * @internal
23
+ */ function internal_exceptionHandler(opts) {
24
+ return (cause)=>{
25
+ const { res, req } = opts;
26
+ const error = getTRPCErrorFromUnknown(cause);
27
+ const shape = getErrorShape({
28
+ config: opts.router._def._config,
29
+ error,
30
+ type: 'unknown',
31
+ path: undefined,
32
+ input: undefined,
33
+ ctx: undefined
20
34
  });
21
- // Build tRPC dependencies
22
- const createContext = async (innerOpts)=>{
23
- return await opts.createContext?.({
24
- ...opts,
25
- ...innerOpts
26
- });
27
- };
28
- const response = await resolveResponse({
29
- ...opts,
35
+ opts.onError?.({
30
36
  req,
31
- error: err ? getTRPCErrorFromUnknown(err) : null,
32
- createContext,
33
- onError (o) {
34
- opts?.onError?.({
35
- ...o,
36
- req: opts.req
37
- });
38
- }
37
+ error,
38
+ type: 'unknown',
39
+ path: undefined,
40
+ input: undefined,
41
+ ctx: undefined
42
+ });
43
+ const transformed = transformTRPCResponse(opts.router._def._config, {
44
+ error: shape
39
45
  });
40
- const { res } = opts;
41
- if (res.statusCode === 200) {
42
- // if the status code is set, we assume that it's been manually overridden
43
- res.statusCode = response.status;
44
- }
45
- for (const [key, value] of response.headers){
46
- res.setHeader(key, value);
47
- }
48
- if (response.body) {
49
- const reader = response.body.getReader();
50
- const onAbort = ()=>{
51
- // cancelling the reader will cause the whole stream to be cancelled
52
- reader.cancel().catch(()=>{
53
- // console.error('reader.cancel() error', err);
46
+ res.statusCode = shape.data.httpStatus;
47
+ res.end(JSON.stringify(transformed));
48
+ };
49
+ }
50
+ /**
51
+ * @remark the promise never rejects
52
+ */ async function nodeHTTPRequestHandler(opts) {
53
+ return new Promise((resolve)=>{
54
+ const handleViaMiddleware = opts.middleware ?? ((_req, _res, next)=>next());
55
+ opts.res.once('finish', ()=>{
56
+ resolve();
57
+ });
58
+ return handleViaMiddleware(opts.req, opts.res, (err)=>{
59
+ run(async ()=>{
60
+ const request = incomingMessageToRequest(opts.req, opts.res, {
61
+ maxBodySize: opts.maxBodySize ?? null
54
62
  });
55
- };
56
- req.signal.addEventListener('abort', onAbort, {
57
- once: true
58
- });
59
- while(true){
60
- const { done , value: value1 } = await reader.read();
61
- if (done) {
62
- break;
63
- }
64
- if (!res.writable) {
65
- break;
66
- }
67
- if (res.write(value1) === false) {
68
- await new Promise((resolve)=>{
69
- res.once('drain', resolve);
63
+ // Build tRPC dependencies
64
+ const createContext = async (innerOpts)=>{
65
+ return await opts.createContext?.({
66
+ ...opts,
67
+ ...innerOpts
70
68
  });
71
- }
72
- // IMPORTANT - flush the response buffer, otherwise the client will not receive the data until `.end()`
73
- res.flush?.();
74
- }
75
- req.signal.removeEventListener('abort', onAbort);
76
- }
77
- res.end();
69
+ };
70
+ const response = await resolveResponse({
71
+ ...opts,
72
+ req: request,
73
+ error: err ? getTRPCErrorFromUnknown(err) : null,
74
+ createContext,
75
+ onError (o) {
76
+ opts?.onError?.({
77
+ ...o,
78
+ req: opts.req
79
+ });
80
+ }
81
+ });
82
+ await writeResponse({
83
+ request,
84
+ response,
85
+ rawResponse: opts.res
86
+ });
87
+ }).catch(internal_exceptionHandler(opts));
88
+ });
78
89
  });
79
90
  }
80
91
 
81
- export { nodeHTTPRequestHandler };
92
+ export { internal_exceptionHandler, nodeHTTPRequestHandler };
@@ -0,0 +1,18 @@
1
+ import type { NodeHTTPResponse } from './types';
2
+ /**
3
+ * @internal
4
+ */
5
+ export declare function writeResponseBody(opts: {
6
+ res: NodeHTTPResponse;
7
+ signal: AbortSignal;
8
+ body: NonNullable<Response['body']>;
9
+ }): Promise<void>;
10
+ /**
11
+ * @internal
12
+ */
13
+ export declare function writeResponse(opts: {
14
+ request: Request;
15
+ response: Response;
16
+ rawResponse: NodeHTTPResponse;
17
+ }): Promise<void>;
18
+ //# sourceMappingURL=writeResponse.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"writeResponse.d.ts","sourceRoot":"","sources":["../../../src/adapters/node-http/writeResponse.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AA4BhD;;GAEG;AAEH,wBAAsB,iBAAiB,CAAC,IAAI,EAAE;IAC5C,GAAG,EAAE,gBAAgB,CAAC;IACtB,MAAM,EAAE,WAAW,CAAC;IACpB,IAAI,EAAE,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;CACrC,iBAoBA;AACD;;GAEG;AAEH,wBAAsB,aAAa,CAAC,IAAI,EAAE;IACxC,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,QAAQ,CAAC;IACnB,WAAW,EAAE,gBAAgB,CAAC;CAC/B,iBA0BA"}
@@ -0,0 +1,82 @@
1
+ 'use strict';
2
+
3
+ var isAbortError = require('../../unstable-core-do-not-import/http/isAbortError.js');
4
+ require('../../vendor/unpromise/unpromise.js');
5
+ require('../../unstable-core-do-not-import/stream/utils/disposable.js');
6
+ require('../../unstable-core-do-not-import/rootConfig.js');
7
+
8
+ // eslint-disable-next-line no-restricted-imports
9
+ async function writeResponseBodyChunk(res, chunk) {
10
+ // useful for debugging 🙃
11
+ // console.debug('writing', new TextDecoder().decode(chunk));
12
+ if (res.write(chunk) === false) {
13
+ await new Promise((resolve, reject)=>{
14
+ const onError = (err)=>{
15
+ reject(err);
16
+ cleanup();
17
+ };
18
+ const onDrain = ()=>{
19
+ resolve();
20
+ cleanup();
21
+ };
22
+ const cleanup = ()=>{
23
+ res.off('error', onError);
24
+ res.off('drain', onDrain);
25
+ };
26
+ res.once('error', onError);
27
+ res.once('drain', onDrain);
28
+ });
29
+ }
30
+ }
31
+ /**
32
+ * @internal
33
+ */ async function writeResponseBody(opts) {
34
+ const { res } = opts;
35
+ try {
36
+ const writableStream = new WritableStream({
37
+ async write (chunk) {
38
+ await writeResponseBodyChunk(res, chunk);
39
+ res.flush?.();
40
+ }
41
+ });
42
+ await opts.body.pipeTo(writableStream, {
43
+ signal: opts.signal
44
+ });
45
+ } catch (err) {
46
+ if (isAbortError.isAbortError(err)) {
47
+ return;
48
+ }
49
+ throw err;
50
+ }
51
+ }
52
+ /**
53
+ * @internal
54
+ */ async function writeResponse(opts) {
55
+ const { response, rawResponse } = opts;
56
+ // Only override status code if it hasn't been explicitly set in a procedure etc
57
+ if (rawResponse.statusCode === 200) {
58
+ rawResponse.statusCode = response.status;
59
+ }
60
+ for (const [key, value] of response.headers){
61
+ rawResponse.setHeader(key, value);
62
+ }
63
+ try {
64
+ if (response.body) {
65
+ await writeResponseBody({
66
+ res: rawResponse,
67
+ signal: opts.request.signal,
68
+ body: response.body
69
+ });
70
+ }
71
+ } catch (err) {
72
+ if (!rawResponse.headersSent) {
73
+ rawResponse.statusCode = 500;
74
+ }
75
+ throw err;
76
+ } finally{
77
+ rawResponse.end();
78
+ }
79
+ }
80
+
81
+ exports.writeResponse = writeResponse;
82
+ exports.writeResponseBody = writeResponseBody;
@@ -0,0 +1,79 @@
1
+ import { isAbortError } from '../../unstable-core-do-not-import/http/isAbortError.mjs';
2
+ import '../../vendor/unpromise/unpromise.mjs';
3
+ import '../../unstable-core-do-not-import/stream/utils/disposable.mjs';
4
+ import '../../unstable-core-do-not-import/rootConfig.mjs';
5
+
6
+ // eslint-disable-next-line no-restricted-imports
7
+ async function writeResponseBodyChunk(res, chunk) {
8
+ // useful for debugging 🙃
9
+ // console.debug('writing', new TextDecoder().decode(chunk));
10
+ if (res.write(chunk) === false) {
11
+ await new Promise((resolve, reject)=>{
12
+ const onError = (err)=>{
13
+ reject(err);
14
+ cleanup();
15
+ };
16
+ const onDrain = ()=>{
17
+ resolve();
18
+ cleanup();
19
+ };
20
+ const cleanup = ()=>{
21
+ res.off('error', onError);
22
+ res.off('drain', onDrain);
23
+ };
24
+ res.once('error', onError);
25
+ res.once('drain', onDrain);
26
+ });
27
+ }
28
+ }
29
+ /**
30
+ * @internal
31
+ */ async function writeResponseBody(opts) {
32
+ const { res } = opts;
33
+ try {
34
+ const writableStream = new WritableStream({
35
+ async write (chunk) {
36
+ await writeResponseBodyChunk(res, chunk);
37
+ res.flush?.();
38
+ }
39
+ });
40
+ await opts.body.pipeTo(writableStream, {
41
+ signal: opts.signal
42
+ });
43
+ } catch (err) {
44
+ if (isAbortError(err)) {
45
+ return;
46
+ }
47
+ throw err;
48
+ }
49
+ }
50
+ /**
51
+ * @internal
52
+ */ async function writeResponse(opts) {
53
+ const { response, rawResponse } = opts;
54
+ // Only override status code if it hasn't been explicitly set in a procedure etc
55
+ if (rawResponse.statusCode === 200) {
56
+ rawResponse.statusCode = response.status;
57
+ }
58
+ for (const [key, value] of response.headers){
59
+ rawResponse.setHeader(key, value);
60
+ }
61
+ try {
62
+ if (response.body) {
63
+ await writeResponseBody({
64
+ res: rawResponse,
65
+ signal: opts.request.signal,
66
+ body: response.body
67
+ });
68
+ }
69
+ } catch (err) {
70
+ if (!rawResponse.headersSent) {
71
+ rawResponse.statusCode = 500;
72
+ }
73
+ throw err;
74
+ } finally{
75
+ rawResponse.end();
76
+ }
77
+ }
78
+
79
+ export { writeResponse, writeResponseBody };
@@ -8,10 +8,13 @@
8
8
  * ```
9
9
  */
10
10
  import http from 'http';
11
- import type { AnyRouter } from '../@trpc/server';
11
+ import { type AnyRouter } from '../@trpc/server';
12
12
  import type { NodeHTTPCreateContextFnOptions, NodeHTTPHandlerOptions } from './node-http';
13
13
  export type CreateHTTPHandlerOptions<TRouter extends AnyRouter> = NodeHTTPHandlerOptions<TRouter, http.IncomingMessage, http.ServerResponse>;
14
14
  export type CreateHTTPContextOptions = NodeHTTPCreateContextFnOptions<http.IncomingMessage, http.ServerResponse>;
15
- export declare function createHTTPHandler<TRouter extends AnyRouter>(opts: CreateHTTPHandlerOptions<TRouter>): (req: http.IncomingMessage, res: http.ServerResponse) => Promise<void>;
15
+ /**
16
+ * @internal
17
+ */
18
+ export declare function createHTTPHandler<TRouter extends AnyRouter>(opts: CreateHTTPHandlerOptions<TRouter>): http.RequestListener;
16
19
  export declare function createHTTPServer<TRouter extends AnyRouter>(opts: CreateHTTPHandlerOptions<TRouter>): http.Server<typeof http.IncomingMessage, typeof http.ServerResponse>;
17
20
  //# sourceMappingURL=standalone.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"standalone.d.ts","sourceRoot":"","sources":["../../src/adapters/standalone.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAEjD,OAAO,KAAK,EACV,8BAA8B,EAC9B,sBAAsB,EACvB,MAAM,aAAa,CAAC;AAGrB,MAAM,MAAM,wBAAwB,CAAC,OAAO,SAAS,SAAS,IAC5D,sBAAsB,CAAC,OAAO,EAAE,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;AAE7E,MAAM,MAAM,wBAAwB,GAAG,8BAA8B,CACnE,IAAI,CAAC,eAAe,EACpB,IAAI,CAAC,cAAc,CACpB,CAAC;AAEF,wBAAgB,iBAAiB,CAAC,OAAO,SAAS,SAAS,EACzD,IAAI,EAAE,wBAAwB,CAAC,OAAO,CAAC,SAEpB,IAAI,CAAC,eAAe,OAAO,IAAI,CAAC,cAAc,mBAclE;AAED,wBAAgB,gBAAgB,CAAC,OAAO,SAAS,SAAS,EACxD,IAAI,EAAE,wBAAwB,CAAC,OAAO,CAAC,wEAIxC"}
1
+ {"version":3,"file":"standalone.d.ts","sourceRoot":"","sources":["../../src/adapters/standalone.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAGjD,OAAO,KAAK,EACV,8BAA8B,EAC9B,sBAAsB,EACvB,MAAM,aAAa,CAAC;AAOrB,MAAM,MAAM,wBAAwB,CAAC,OAAO,SAAS,SAAS,IAC5D,sBAAsB,CAAC,OAAO,EAAE,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;AAE7E,MAAM,MAAM,wBAAwB,GAAG,8BAA8B,CACnE,IAAI,CAAC,eAAe,EACpB,IAAI,CAAC,cAAc,CACpB,CAAC;AAEF;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,SAAS,SAAS,EACzD,IAAI,EAAE,wBAAwB,CAAC,OAAO,CAAC,GACtC,IAAI,CAAC,eAAe,CAyBtB;AAED,wBAAgB,gBAAgB,CAAC,OAAO,SAAS,SAAS,EACxD,IAAI,EAAE,wBAAwB,CAAC,OAAO,CAAC,wEAGxC"}
@@ -1,27 +1,39 @@
1
1
  'use strict';
2
2
 
3
3
  var http = require('node:http');
4
- var toURL = require('../unstable-core-do-not-import/http/toURL.js');
4
+ var utils = require('../unstable-core-do-not-import/utils.js');
5
+ require('../vendor/unpromise/unpromise.js');
6
+ require('../unstable-core-do-not-import/stream/utils/disposable.js');
5
7
  require('../unstable-core-do-not-import/rootConfig.js');
6
8
  var nodeHTTPRequestHandler = require('./node-http/nodeHTTPRequestHandler.js');
9
+ var incomingMessageToRequest = require('./node-http/incomingMessageToRequest.js');
7
10
 
8
- function createHTTPHandler(opts) {
9
- return async (req, res)=>{
10
- const url = toURL.toURL(req.url);
11
- // get procedure path and remove the leading slash
12
- // /procedure -> procedure
13
- const path = url.pathname.slice(1);
14
- await nodeHTTPRequestHandler.nodeHTTPRequestHandler({
15
- ...opts,
11
+ /**
12
+ * @internal
13
+ */ function createHTTPHandler(opts) {
14
+ return (req, res)=>{
15
+ let path = '';
16
+ utils.run(async ()=>{
17
+ const url = incomingMessageToRequest.createURL(req);
18
+ // get procedure path and remove the leading slash
19
+ // /procedure -> procedure
20
+ path = url.pathname.slice(1);
21
+ await nodeHTTPRequestHandler.nodeHTTPRequestHandler({
22
+ ...opts,
23
+ req,
24
+ res,
25
+ path
26
+ });
27
+ }).catch(nodeHTTPRequestHandler.internal_exceptionHandler({
16
28
  req,
17
29
  res,
18
- path
19
- });
30
+ path,
31
+ ...opts
32
+ }));
20
33
  };
21
34
  }
22
35
  function createHTTPServer(opts) {
23
- const handler = createHTTPHandler(opts);
24
- return http.createServer(handler);
36
+ return http.createServer(createHTTPHandler(opts));
25
37
  }
26
38
 
27
39
  exports.createHTTPHandler = createHTTPHandler;
@@ -1,25 +1,37 @@
1
1
  import http from 'node:http';
2
- import { toURL } from '../unstable-core-do-not-import/http/toURL.mjs';
2
+ import { run } from '../unstable-core-do-not-import/utils.mjs';
3
+ import '../vendor/unpromise/unpromise.mjs';
4
+ import '../unstable-core-do-not-import/stream/utils/disposable.mjs';
3
5
  import '../unstable-core-do-not-import/rootConfig.mjs';
4
- import { nodeHTTPRequestHandler } from './node-http/nodeHTTPRequestHandler.mjs';
6
+ import { nodeHTTPRequestHandler, internal_exceptionHandler } from './node-http/nodeHTTPRequestHandler.mjs';
7
+ import { createURL } from './node-http/incomingMessageToRequest.mjs';
5
8
 
6
- function createHTTPHandler(opts) {
7
- return async (req, res)=>{
8
- const url = toURL(req.url);
9
- // get procedure path and remove the leading slash
10
- // /procedure -> procedure
11
- const path = url.pathname.slice(1);
12
- await nodeHTTPRequestHandler({
13
- ...opts,
9
+ /**
10
+ * @internal
11
+ */ function createHTTPHandler(opts) {
12
+ return (req, res)=>{
13
+ let path = '';
14
+ run(async ()=>{
15
+ const url = createURL(req);
16
+ // get procedure path and remove the leading slash
17
+ // /procedure -> procedure
18
+ path = url.pathname.slice(1);
19
+ await nodeHTTPRequestHandler({
20
+ ...opts,
21
+ req,
22
+ res,
23
+ path
24
+ });
25
+ }).catch(internal_exceptionHandler({
14
26
  req,
15
27
  res,
16
- path
17
- });
28
+ path,
29
+ ...opts
30
+ }));
18
31
  };
19
32
  }
20
33
  function createHTTPServer(opts) {
21
- const handler = createHTTPHandler(opts);
22
- return http.createServer(handler);
34
+ return http.createServer(createHTTPHandler(opts));
23
35
  }
24
36
 
25
37
  export { createHTTPHandler, createHTTPServer };
@@ -3,7 +3,7 @@ import type ws from 'ws';
3
3
  import type { AnyRouter, CreateContextCallback, inferRouterContext } from '../@trpc/server';
4
4
  import { type BaseHandlerOptions } from '../@trpc/server/http';
5
5
  import { type MaybePromise } from '../unstable-core-do-not-import';
6
- import type { NodeHTTPCreateContextFnOptions } from './node-http';
6
+ import { type NodeHTTPCreateContextFnOptions } from './node-http';
7
7
  /**
8
8
  * @public
9
9
  */
@@ -27,17 +27,27 @@ export type WSSHandlerOptions<TRouter extends AnyRouter> = WSConnectionHandlerOp
27
27
  enabled: boolean;
28
28
  /**
29
29
  * Heartbeat interval in milliseconds
30
- * @default 30000
30
+ * @default 30_000
31
31
  */
32
32
  pingMs?: number;
33
33
  /**
34
34
  * Terminate the WebSocket if no pong is received after this many milliseconds
35
- * @default 5000
35
+ * @default 5_000
36
36
  */
37
37
  pongWaitMs?: number;
38
38
  };
39
+ /**
40
+ * Disable responding to ping messages from the client
41
+ * **Not recommended** - this is mainly used for testing
42
+ * @default false
43
+ */
44
+ dangerouslyDisablePong?: boolean;
39
45
  };
40
- export declare function getWSConnectionHandler<TRouter extends AnyRouter>(opts: WSConnectionHandlerOptions<TRouter>): (client: ws.WebSocket, req: IncomingMessage) => Promise<void>;
46
+ export declare function getWSConnectionHandler<TRouter extends AnyRouter>(opts: WSSHandlerOptions<TRouter>): (client: ws.WebSocket, req: IncomingMessage) => Promise<void>;
47
+ /**
48
+ * Handle WebSocket keep-alive messages
49
+ */
50
+ export declare function handleKeepAlive(client: ws.WebSocket, pingMs?: number, pongWaitMs?: number): void;
41
51
  export declare function applyWSSHandler<TRouter extends AnyRouter>(opts: WSSHandlerOptions<TRouter>): {
42
52
  broadcastReconnectNotification: () => void;
43
53
  };