@trpc/server 11.0.0-alpha-tmp-subscription-connection-state.489 → 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 (274) 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 +1 -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 +217 -101
  55. package/dist/adapters/ws.mjs +217 -102
  56. package/dist/bundle-analysis.json +412 -310
  57. package/dist/http.js +2 -4
  58. package/dist/http.mjs +2 -2
  59. package/dist/index.js +3 -0
  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 +180 -96
  107. package/dist/unstable-core-do-not-import/http/resolveResponse.mjs +182 -98
  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 +31 -12
  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 +7 -10
  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.js +2 -2
  138. package/dist/unstable-core-do-not-import/rpc/parseTRPCMessage.mjs +2 -2
  139. package/dist/unstable-core-do-not-import/stream/jsonl.d.ts +25 -14
  140. package/dist/unstable-core-do-not-import/stream/jsonl.d.ts.map +1 -1
  141. package/dist/unstable-core-do-not-import/stream/jsonl.js +439 -318
  142. package/dist/unstable-core-do-not-import/stream/jsonl.mjs +439 -318
  143. package/dist/unstable-core-do-not-import/stream/sse.d.ts +58 -18
  144. package/dist/unstable-core-do-not-import/stream/sse.d.ts.map +1 -1
  145. package/dist/unstable-core-do-not-import/stream/sse.js +297 -122
  146. package/dist/unstable-core-do-not-import/stream/sse.mjs +298 -123
  147. package/dist/unstable-core-do-not-import/stream/sse.types.d.ts +31 -0
  148. package/dist/unstable-core-do-not-import/stream/sse.types.d.ts.map +1 -0
  149. package/dist/unstable-core-do-not-import/stream/tracked.d.ts +2 -2
  150. package/dist/unstable-core-do-not-import/stream/tracked.d.ts.map +1 -1
  151. package/dist/unstable-core-do-not-import/stream/tracked.js +1 -1
  152. package/dist/unstable-core-do-not-import/stream/tracked.mjs +1 -1
  153. package/dist/unstable-core-do-not-import/stream/utils/asyncIterable.d.ts +17 -0
  154. package/dist/unstable-core-do-not-import/stream/utils/asyncIterable.d.ts.map +1 -0
  155. package/dist/unstable-core-do-not-import/stream/utils/asyncIterable.js +171 -0
  156. package/dist/unstable-core-do-not-import/stream/utils/asyncIterable.mjs +167 -0
  157. package/dist/unstable-core-do-not-import/stream/utils/createDeferred.d.ts +0 -11
  158. package/dist/unstable-core-do-not-import/stream/utils/createDeferred.d.ts.map +1 -1
  159. package/dist/unstable-core-do-not-import/stream/utils/createDeferred.js +0 -29
  160. package/dist/unstable-core-do-not-import/stream/utils/createDeferred.mjs +1 -29
  161. package/dist/unstable-core-do-not-import/stream/utils/disposable.d.ts +17 -0
  162. package/dist/unstable-core-do-not-import/stream/utils/disposable.d.ts.map +1 -0
  163. package/dist/unstable-core-do-not-import/stream/utils/disposable.js +44 -0
  164. package/dist/unstable-core-do-not-import/stream/utils/disposable.mjs +41 -0
  165. package/dist/unstable-core-do-not-import/stream/utils/readableStreamFrom.d.ts +8 -0
  166. package/dist/unstable-core-do-not-import/stream/utils/readableStreamFrom.d.ts.map +1 -0
  167. package/dist/unstable-core-do-not-import/stream/utils/readableStreamFrom.js +25 -0
  168. package/dist/unstable-core-do-not-import/stream/utils/readableStreamFrom.mjs +23 -0
  169. package/dist/unstable-core-do-not-import/stream/utils/timerResource.d.ts +5 -0
  170. package/dist/unstable-core-do-not-import/stream/utils/timerResource.d.ts.map +1 -0
  171. package/dist/unstable-core-do-not-import/stream/utils/timerResource.js +26 -0
  172. package/dist/unstable-core-do-not-import/stream/utils/timerResource.mjs +23 -0
  173. package/dist/unstable-core-do-not-import/stream/utils/withPing.d.ts +7 -0
  174. package/dist/unstable-core-do-not-import/stream/utils/withPing.d.ts.map +1 -0
  175. package/dist/unstable-core-do-not-import/stream/utils/withPing.js +130 -0
  176. package/dist/unstable-core-do-not-import/stream/utils/withPing.mjs +127 -0
  177. package/dist/unstable-core-do-not-import/transformer.d.ts +2 -5
  178. package/dist/unstable-core-do-not-import/transformer.d.ts.map +1 -1
  179. package/dist/unstable-core-do-not-import/transformer.js +1 -1
  180. package/dist/unstable-core-do-not-import/transformer.mjs +1 -1
  181. package/dist/unstable-core-do-not-import/types.d.ts +26 -3
  182. package/dist/unstable-core-do-not-import/types.d.ts.map +1 -1
  183. package/dist/unstable-core-do-not-import/utils.d.ts +15 -0
  184. package/dist/unstable-core-do-not-import/utils.d.ts.map +1 -1
  185. package/dist/unstable-core-do-not-import/utils.js +49 -1
  186. package/dist/unstable-core-do-not-import/utils.mjs +45 -2
  187. package/dist/unstable-core-do-not-import.d.ts +3 -2
  188. package/dist/unstable-core-do-not-import.d.ts.map +1 -1
  189. package/dist/unstable-core-do-not-import.js +14 -7
  190. package/dist/unstable-core-do-not-import.mjs +5 -6
  191. package/dist/vendor/unpromise/index.d.ts +3 -0
  192. package/dist/vendor/unpromise/index.d.ts.map +1 -0
  193. package/dist/vendor/unpromise/types.d.ts +28 -0
  194. package/dist/vendor/unpromise/types.d.ts.map +1 -0
  195. package/dist/vendor/unpromise/unpromise.d.ts +121 -0
  196. package/dist/vendor/unpromise/unpromise.d.ts.map +1 -0
  197. package/dist/vendor/unpromise/unpromise.js +292 -0
  198. package/dist/vendor/unpromise/unpromise.mjs +289 -0
  199. package/package.json +20 -17
  200. package/src/@trpc/server/http.ts +0 -2
  201. package/src/@trpc/server/index.ts +2 -0
  202. package/src/adapters/aws-lambda/getPlanner.ts +2 -2
  203. package/src/adapters/aws-lambda/index.ts +5 -6
  204. package/src/adapters/express.ts +21 -9
  205. package/src/adapters/fastify/fastifyRequestHandler.ts +1 -1
  206. package/src/adapters/fastify/fastifyTRPCPlugin.ts +16 -5
  207. package/src/adapters/fetch/fetchRequestHandler.ts +2 -2
  208. package/src/adapters/next-app-dir/nextAppDirCaller.ts +3 -0
  209. package/src/adapters/next-app-dir/rethrowNextErrors.ts +3 -2
  210. package/src/adapters/next.ts +29 -34
  211. package/src/adapters/node-http/incomingMessageToRequest.ts +110 -40
  212. package/src/adapters/node-http/nodeHTTPRequestHandler.ts +85 -63
  213. package/src/adapters/node-http/writeResponse.ts +94 -0
  214. package/src/adapters/standalone.ts +35 -18
  215. package/src/adapters/ws.ts +111 -57
  216. package/src/observable/behaviorSubject.ts +55 -0
  217. package/src/observable/index.ts +22 -3
  218. package/src/observable/observable.ts +32 -14
  219. package/src/observable/operators.ts +47 -0
  220. package/src/unstable-core-do-not-import/clientish/inference.ts +4 -4
  221. package/src/unstable-core-do-not-import/clientish/inferrable.ts +6 -6
  222. package/src/unstable-core-do-not-import/clientish/serialize.ts +5 -5
  223. package/src/unstable-core-do-not-import/http/getHTTPStatusCode.ts +37 -4
  224. package/src/unstable-core-do-not-import/http/isAbortError.ts +7 -0
  225. package/src/unstable-core-do-not-import/http/resolveResponse.ts +185 -90
  226. package/src/unstable-core-do-not-import/http/types.ts +1 -1
  227. package/src/unstable-core-do-not-import/initTRPC.ts +14 -20
  228. package/src/unstable-core-do-not-import/middleware.ts +5 -4
  229. package/src/unstable-core-do-not-import/parser.ts +17 -6
  230. package/src/unstable-core-do-not-import/procedure.ts +17 -2
  231. package/src/unstable-core-do-not-import/procedureBuilder.ts +137 -122
  232. package/src/unstable-core-do-not-import/rootConfig.ts +20 -20
  233. package/src/unstable-core-do-not-import/router.ts +15 -16
  234. package/src/unstable-core-do-not-import/rpc/codes.ts +2 -10
  235. package/src/unstable-core-do-not-import/rpc/envelopes.ts +7 -12
  236. package/src/unstable-core-do-not-import/stream/jsonl.ts +287 -296
  237. package/src/unstable-core-do-not-import/stream/sse.ts +338 -171
  238. package/src/unstable-core-do-not-import/stream/sse.types.ts +44 -0
  239. package/src/unstable-core-do-not-import/stream/tracked.ts +5 -11
  240. package/src/unstable-core-do-not-import/stream/utils/asyncIterable.ts +89 -0
  241. package/src/unstable-core-do-not-import/stream/utils/createDeferred.ts +0 -36
  242. package/src/unstable-core-do-not-import/stream/utils/disposable.ts +52 -0
  243. package/src/unstable-core-do-not-import/stream/utils/readableStreamFrom.ts +28 -0
  244. package/src/unstable-core-do-not-import/stream/utils/timerResource.ts +29 -0
  245. package/src/unstable-core-do-not-import/stream/utils/withPing.ts +47 -0
  246. package/src/unstable-core-do-not-import/transformer.ts +1 -1
  247. package/src/unstable-core-do-not-import/types.ts +35 -10
  248. package/src/unstable-core-do-not-import/utils.ts +56 -1
  249. package/src/unstable-core-do-not-import.ts +3 -2
  250. package/src/vendor/unpromise/ATTRIBUTION.txt +1 -0
  251. package/src/vendor/unpromise/LICENSE +20 -0
  252. package/src/vendor/unpromise/index.ts +7 -0
  253. package/src/vendor/unpromise/types.ts +55 -0
  254. package/src/vendor/unpromise/unpromise.ts +380 -0
  255. package/dist/unstable-core-do-not-import/http/batchStreamFormatter.d.ts +0 -24
  256. package/dist/unstable-core-do-not-import/http/batchStreamFormatter.d.ts.map +0 -1
  257. package/dist/unstable-core-do-not-import/http/batchStreamFormatter.js +0 -32
  258. package/dist/unstable-core-do-not-import/http/batchStreamFormatter.mjs +0 -30
  259. package/dist/unstable-core-do-not-import/http/toURL.d.ts +0 -2
  260. package/dist/unstable-core-do-not-import/http/toURL.d.ts.map +0 -1
  261. package/dist/unstable-core-do-not-import/http/toURL.js +0 -8
  262. package/dist/unstable-core-do-not-import/http/toURL.mjs +0 -6
  263. package/dist/unstable-core-do-not-import/stream/utils/createReadableStream.d.ts +0 -10
  264. package/dist/unstable-core-do-not-import/stream/utils/createReadableStream.d.ts.map +0 -1
  265. package/dist/unstable-core-do-not-import/stream/utils/createReadableStream.js +0 -31
  266. package/dist/unstable-core-do-not-import/stream/utils/createReadableStream.mjs +0 -29
  267. package/dist/unstable-core-do-not-import/stream/utils/createServer.d.ts +0 -7
  268. package/dist/unstable-core-do-not-import/stream/utils/createServer.d.ts.map +0 -1
  269. package/dist/unstable-core-do-not-import/types.js +0 -11
  270. package/dist/unstable-core-do-not-import/types.mjs +0 -9
  271. package/src/unstable-core-do-not-import/http/batchStreamFormatter.ts +0 -29
  272. package/src/unstable-core-do-not-import/http/toURL.ts +0 -7
  273. package/src/unstable-core-do-not-import/stream/utils/createReadableStream.ts +0 -31
  274. package/src/unstable-core-do-not-import/stream/utils/createServer.ts +0 -44
@@ -1 +1 @@
1
- {"version":3,"file":"ws.d.ts","sourceRoot":"","sources":["../../src/adapters/ws.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,MAAM,CAAC;AAC5C,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,EACV,SAAS,EACT,qBAAqB,EACrB,kBAAkB,EACnB,MAAM,iBAAiB,CAAC;AASzB,OAAO,EAAS,KAAK,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AActE,OAAO,EAKL,KAAK,YAAY,EAClB,MAAM,gCAAgC,CAAC;AACxC,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,aAAa,CAAC;AAQlE;;GAEG;AACH,MAAM,MAAM,yBAAyB,GAAG,8BAA8B,CACpE,eAAe,EACf,EAAE,CAAC,SAAS,CACb,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,kBAAkB,CAAC,OAAO,SAAS,SAAS,IAAI,CAC1D,IAAI,EAAE,yBAAyB,KAC5B,YAAY,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC;AAE/C,MAAM,MAAM,0BAA0B,CAAC,OAAO,SAAS,SAAS,IAC9D,kBAAkB,CAAC,OAAO,EAAE,eAAe,CAAC,GAC1C,qBAAqB,CACnB,kBAAkB,CAAC,OAAO,CAAC,EAC3B,kBAAkB,CAAC,OAAO,CAAC,CAC5B,CAAC;AAEN;;GAEG;AACH,MAAM,MAAM,iBAAiB,CAAC,OAAO,SAAS,SAAS,IACrD,0BAA0B,CAAC,OAAO,CAAC,GAAG;IACpC,GAAG,EAAE,EAAE,CAAC,eAAe,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE;QACV;;;WAGG;QACH,OAAO,EAAE,OAAO,CAAC;QACjB;;;WAGG;QACH,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB;;;WAGG;QACH,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB,CAAC;CACH,CAAC;AAGJ,wBAAgB,sBAAsB,CAAC,OAAO,SAAS,SAAS,EAC9D,IAAI,EAAE,0BAA0B,CAAC,OAAO,CAAC,YAKnB,EAAE,CAAC,SAAS,OAAO,eAAe,mBAuWzD;AAiCD,wBAAgB,eAAe,CAAC,OAAO,SAAS,SAAS,EACvD,IAAI,EAAE,iBAAiB,CAAC,OAAO,CAAC;;EA+BjC"}
1
+ {"version":3,"file":"ws.d.ts","sourceRoot":"","sources":["../../src/adapters/ws.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,MAAM,CAAC;AAC5C,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,EACV,SAAS,EACT,qBAAqB,EACrB,kBAAkB,EACnB,MAAM,iBAAiB,CAAC;AASzB,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAa/D,OAAO,EAKL,KAAK,YAAY,EAClB,MAAM,gCAAgC,CAAC;AAIxC,OAAO,EAAa,KAAK,8BAA8B,EAAE,MAAM,aAAa,CAAC;AAQ7E;;GAEG;AACH,MAAM,MAAM,yBAAyB,GAAG,8BAA8B,CACpE,eAAe,EACf,EAAE,CAAC,SAAS,CACb,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,kBAAkB,CAAC,OAAO,SAAS,SAAS,IAAI,CAC1D,IAAI,EAAE,yBAAyB,KAC5B,YAAY,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC;AAE/C,MAAM,MAAM,0BAA0B,CAAC,OAAO,SAAS,SAAS,IAC9D,kBAAkB,CAAC,OAAO,EAAE,eAAe,CAAC,GAC1C,qBAAqB,CACnB,kBAAkB,CAAC,OAAO,CAAC,EAC3B,kBAAkB,CAAC,OAAO,CAAC,CAC5B,CAAC;AAEN;;GAEG;AACH,MAAM,MAAM,iBAAiB,CAAC,OAAO,SAAS,SAAS,IACrD,0BAA0B,CAAC,OAAO,CAAC,GAAG;IACpC,GAAG,EAAE,EAAE,CAAC,eAAe,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE;QACV;;;WAGG;QACH,OAAO,EAAE,OAAO,CAAC;QACjB;;;WAGG;QACH,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB;;;WAGG;QACH,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB,CAAC;IACF;;;;OAIG;IACH,sBAAsB,CAAC,EAAE,OAAO,CAAC;CAClC,CAAC;AAGJ,wBAAgB,sBAAsB,CAAC,OAAO,SAAS,SAAS,EAC9D,IAAI,EAAE,iBAAiB,CAAC,OAAO,CAAC,YAKV,EAAE,CAAC,SAAS,OAAO,eAAe,mBAkYzD;AAED;;GAEG;AACH,wBAAgB,eAAe,CAC7B,MAAM,EAAE,EAAE,CAAC,SAAS,EACpB,MAAM,SAAS,EACf,UAAU,SAAQ,QAiCnB;AAED,wBAAgB,eAAe,CAAC,OAAO,SAAS,SAAS,EACvD,IAAI,EAAE,iBAAiB,CAAC,OAAO,CAAC;;EAwCjC"}
@@ -6,23 +6,95 @@ var utils = require('../unstable-core-do-not-import/utils.js');
6
6
  var parseConnectionParams = require('../unstable-core-do-not-import/http/parseConnectionParams.js');
7
7
  var parseTRPCMessage = require('../unstable-core-do-not-import/rpc/parseTRPCMessage.js');
8
8
  var observable = require('../observable/observable.js');
9
+ var unpromise = require('../vendor/unpromise/unpromise.js');
10
+ var asyncIterable = require('../unstable-core-do-not-import/stream/utils/asyncIterable.js');
11
+ require('../unstable-core-do-not-import/stream/utils/disposable.js');
9
12
  var tracked = require('../unstable-core-do-not-import/stream/tracked.js');
10
13
  var transformer = require('../unstable-core-do-not-import/transformer.js');
11
- var toURL = require('../unstable-core-do-not-import/http/toURL.js');
12
14
  require('../unstable-core-do-not-import/rootConfig.js');
13
15
  var router = require('../unstable-core-do-not-import/router.js');
16
+ var incomingMessageToRequest = require('./node-http/incomingMessageToRequest.js');
14
17
 
18
+ function _ts_add_disposable_resource(env, value, async) {
19
+ if (value !== null && value !== void 0) {
20
+ if (typeof value !== "object" && typeof value !== "function") throw new TypeError("Object expected.");
21
+ var dispose, inner;
22
+ {
23
+ if (!Symbol.asyncDispose) throw new TypeError("Symbol.asyncDispose is not defined.");
24
+ dispose = value[Symbol.asyncDispose];
25
+ }
26
+ if (dispose === void 0) {
27
+ if (!Symbol.dispose) throw new TypeError("Symbol.dispose is not defined.");
28
+ dispose = value[Symbol.dispose];
29
+ inner = dispose;
30
+ }
31
+ if (typeof dispose !== "function") throw new TypeError("Object not disposable.");
32
+ if (inner) dispose = function() {
33
+ try {
34
+ inner.call(this);
35
+ } catch (e) {
36
+ return Promise.reject(e);
37
+ }
38
+ };
39
+ env.stack.push({
40
+ value: value,
41
+ dispose: dispose,
42
+ async: async
43
+ });
44
+ } else {
45
+ env.stack.push({
46
+ async: true
47
+ });
48
+ }
49
+ return value;
50
+ }
51
+ function _ts_dispose_resources(env) {
52
+ var _SuppressedError = typeof SuppressedError === "function" ? SuppressedError : function(error, suppressed, message) {
53
+ var e = new Error(message);
54
+ return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
55
+ };
56
+ return (_ts_dispose_resources = function _ts_dispose_resources(env) {
57
+ function fail(e) {
58
+ env.error = env.hasError ? new _SuppressedError(e, env.error, "An error was suppressed during disposal.") : e;
59
+ env.hasError = true;
60
+ }
61
+ var r, s = 0;
62
+ function next() {
63
+ while(r = env.stack.pop()){
64
+ try {
65
+ if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);
66
+ if (r.dispose) {
67
+ var result = r.dispose.call(r.value);
68
+ if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) {
69
+ fail(e);
70
+ return next();
71
+ });
72
+ } else s |= 1;
73
+ } catch (e) {
74
+ fail(e);
75
+ }
76
+ }
77
+ if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();
78
+ if (env.hasError) throw env.error;
79
+ }
80
+ return next();
81
+ })(env);
82
+ }
15
83
  /**
16
84
  * Importing ws causes a build error
17
- * @link https://github.com/trpc/trpc/pull/5279
85
+ * @see https://github.com/trpc/trpc/pull/5279
18
86
  */ const WEBSOCKET_OPEN = 1; /* ws.WebSocket.OPEN */
19
87
  const unsetContextPromiseSymbol = Symbol('unsetContextPromise');
20
88
  function getWSConnectionHandler(opts) {
21
- const { createContext , router: router$1 } = opts;
22
- const { transformer: transformer$1 } = router$1._def._config;
89
+ const { createContext, router: router$1 } = opts;
90
+ const { transformer: transformer$1 } = router$1._def._config;
23
91
  return async (client, req)=>{
24
92
  const clientSubscriptions = new Map();
25
93
  const abortController = new AbortController();
94
+ if (opts.keepAlive?.enabled) {
95
+ const { pingMs, pongWaitMs } = opts.keepAlive;
96
+ handleKeepAlive(client, pingMs, pongWaitMs);
97
+ }
26
98
  function respond(untransformedJSON) {
27
99
  client.send(JSON.stringify(transformer.transformTRPCResponse(router$1._def._config, untransformedJSON)));
28
100
  }
@@ -75,9 +147,9 @@ function getWSConnectionHandler(opts) {
75
147
  *
76
148
  * - the context promise will be created immediately on connection if no connectionParams are expected
77
149
  * - if connection params are expected, they will be created once received
78
- */ let ctxPromise = toURL.toURL(req.url ?? '').searchParams.get('connectionParams') === '1' ? unsetContextPromiseSymbol : createCtxPromise(()=>null);
150
+ */ let ctxPromise = incomingMessageToRequest.createURL(req).searchParams.get('connectionParams') === '1' ? unsetContextPromiseSymbol : createCtxPromise(()=>null);
79
151
  async function handleRequest(msg) {
80
- const { id , jsonrpc } = msg;
152
+ const { id, jsonrpc } = msg;
81
153
  /* istanbul ignore next -- @preserve */ if (id === null) {
82
154
  throw new TRPCError.TRPCError({
83
155
  code: 'BAD_REQUEST',
@@ -88,8 +160,8 @@ function getWSConnectionHandler(opts) {
88
160
  clientSubscriptions.get(id)?.abort();
89
161
  return;
90
162
  }
91
- const { path , lastEventId } = msg.params;
92
- let { input } = msg.params;
163
+ const { path, lastEventId } = msg.params;
164
+ let { input } = msg.params;
93
165
  const type = msg.method;
94
166
  try {
95
167
  if (lastEventId !== undefined) {
@@ -105,12 +177,14 @@ function getWSConnectionHandler(opts) {
105
177
  }
106
178
  }
107
179
  await ctxPromise; // asserts context has been set
180
+ const abortController = new AbortController();
108
181
  const result = await router.callProcedure({
109
182
  procedures: router$1._def.procedures,
110
183
  path,
111
184
  getRawInput: async ()=>input,
112
185
  ctx,
113
- type
186
+ type,
187
+ signal: abortController.signal
114
188
  });
115
189
  const isIterableResult = utils.isAsyncIterable(result) || observable.isObservable(result);
116
190
  if (type !== 'subscription') {
@@ -149,76 +223,95 @@ function getWSConnectionHandler(opts) {
149
223
  code: 'BAD_REQUEST'
150
224
  });
151
225
  }
152
- const iterable = observable.isObservable(result) ? observable.observableToAsyncIterable(result) : result;
153
- const iterator = iterable[Symbol.asyncIterator]();
154
- const abortController = new AbortController();
155
- const abortPromise = new Promise((resolve)=>{
156
- abortController.signal.onabort = ()=>resolve('abort');
157
- });
226
+ const iterable = observable.isObservable(result) ? observable.observableToAsyncIterable(result, abortController.signal) : result;
158
227
  utils.run(async ()=>{
159
- while(true){
160
- const next = await Promise.race([
161
- iterator.next().catch(TRPCError.getTRPCErrorFromUnknown),
162
- abortPromise
163
- ]);
164
- if (next === 'abort') {
165
- await iterator.return?.();
166
- break;
167
- }
168
- if (next instanceof Error) {
169
- const error = TRPCError.getTRPCErrorFromUnknown(next);
170
- opts.onError?.({
171
- error,
172
- path,
173
- type,
174
- ctx,
175
- req,
176
- input
177
- });
228
+ const env = {
229
+ stack: [],
230
+ error: void 0,
231
+ hasError: false
232
+ };
233
+ try {
234
+ const iterator = _ts_add_disposable_resource(env, asyncIterable.iteratorResource(iterable), true);
235
+ ;
236
+ const abortPromise = new Promise((resolve)=>{
237
+ abortController.signal.onabort = ()=>resolve('abort');
238
+ });
239
+ // We need those declarations outside the loop for garbage collection reasons. If they
240
+ // were declared inside, they would not be freed until the next value is present.
241
+ let next;
242
+ let result;
243
+ while(true){
244
+ next = await unpromise.Unpromise.race([
245
+ iterator.next().catch(TRPCError.getTRPCErrorFromUnknown),
246
+ abortPromise
247
+ ]);
248
+ if (next === 'abort') {
249
+ await iterator.return?.();
250
+ break;
251
+ }
252
+ if (next instanceof Error) {
253
+ const error = TRPCError.getTRPCErrorFromUnknown(next);
254
+ opts.onError?.({
255
+ error,
256
+ path,
257
+ type,
258
+ ctx,
259
+ req,
260
+ input
261
+ });
262
+ respond({
263
+ id,
264
+ jsonrpc,
265
+ error: getErrorShape.getErrorShape({
266
+ config: router$1._def._config,
267
+ error,
268
+ type,
269
+ path,
270
+ input,
271
+ ctx
272
+ })
273
+ });
274
+ break;
275
+ }
276
+ if (next.done) {
277
+ break;
278
+ }
279
+ result = {
280
+ type: 'data',
281
+ data: next.value
282
+ };
283
+ if (tracked.isTrackedEnvelope(next.value)) {
284
+ const [id, data] = next.value;
285
+ result.id = id;
286
+ result.data = {
287
+ id,
288
+ data
289
+ };
290
+ }
178
291
  respond({
179
292
  id,
180
293
  jsonrpc,
181
- error: getErrorShape.getErrorShape({
182
- config: router$1._def._config,
183
- error,
184
- type,
185
- path,
186
- input,
187
- ctx
188
- })
294
+ result
189
295
  });
190
- break;
191
- }
192
- if (next.done) {
193
- break;
194
- }
195
- const result = {
196
- type: 'data',
197
- data: next.value
198
- };
199
- if (tracked.isTrackedEnvelope(next.value)) {
200
- const [id1, data] = next.value;
201
- result.id = id1;
202
- result.data = {
203
- id: id1,
204
- data
205
- };
296
+ // free up references for garbage collection
297
+ next = null;
298
+ result = null;
206
299
  }
207
300
  respond({
208
301
  id,
209
302
  jsonrpc,
210
- result
303
+ result: {
304
+ type: 'stopped'
305
+ }
211
306
  });
307
+ clientSubscriptions.delete(id);
308
+ } catch (e) {
309
+ env.error = e;
310
+ env.hasError = true;
311
+ } finally{
312
+ const result = _ts_dispose_resources(env);
313
+ if (result) await result;
212
314
  }
213
- await iterator.return?.();
214
- respond({
215
- id,
216
- jsonrpc,
217
- result: {
218
- type: 'stopped'
219
- }
220
- });
221
- clientSubscriptions.delete(id);
222
315
  }).catch((cause)=>{
223
316
  const error = TRPCError.getTRPCErrorFromUnknown(cause);
224
317
  opts.onError?.({
@@ -276,13 +369,24 @@ function getWSConnectionHandler(opts) {
276
369
  });
277
370
  }
278
371
  }
279
- client.on('message', async (message)=>{
372
+ client.on('message', async (rawData)=>{
373
+ // eslint-disable-next-line @typescript-eslint/no-base-to-string
374
+ const msgStr = rawData.toString();
375
+ if (msgStr === 'PONG') {
376
+ return;
377
+ }
378
+ if (msgStr === 'PING') {
379
+ if (!opts.dangerouslyDisablePong) {
380
+ client.send('PONG');
381
+ }
382
+ return;
383
+ }
280
384
  if (ctxPromise === unsetContextPromiseSymbol) {
281
385
  // If the ctxPromise wasn't created immediately, we're expecting the first message to be a TRPCConnectionParamsMessage
282
386
  ctxPromise = createCtxPromise(()=>{
283
387
  let msg;
284
388
  try {
285
- msg = JSON.parse(message.toString());
389
+ msg = JSON.parse(msgStr);
286
390
  if (!utils.isObject(msg)) {
287
391
  throw new Error('Message was not an object');
288
392
  }
@@ -299,7 +403,7 @@ function getWSConnectionHandler(opts) {
299
403
  return;
300
404
  }
301
405
  try {
302
- const msgJSON = JSON.parse(message.toString());
406
+ const msgJSON = JSON.parse(msgStr);
303
407
  const msgs = Array.isArray(msgJSON) ? msgJSON : [
304
408
  msgJSON
305
409
  ];
@@ -345,48 +449,59 @@ function getWSConnectionHandler(opts) {
345
449
  abortController.abort();
346
450
  });
347
451
  if (ctxPromise !== unsetContextPromiseSymbol) {
348
- // prevent unhandled promise rejection errors
349
- await ctxPromise.catch(()=>null);
452
+ await ctxPromise;
350
453
  }
351
454
  };
352
455
  }
353
456
  /**
354
457
  * Handle WebSocket keep-alive messages
355
458
  */ function handleKeepAlive(client, pingMs = 30000, pongWaitMs = 5000) {
356
- let heartbeatTimeout;
357
- const heartbeatInterval = setInterval(()=>{
358
- if (client.readyState !== WEBSOCKET_OPEN) {
359
- return;
360
- }
361
- // First we send a ping message and wait for a pong
362
- client.ping();
363
- // We set a timeout to close the connection if the pong is not received
364
- heartbeatTimeout = setTimeout(()=>{
365
- client.terminate();
366
- clearInterval(heartbeatInterval);
367
- }, pongWaitMs);
368
- }, pingMs).unref();
369
- // When we receive a pong message, we clear the timeout
370
- client.on('pong', ()=>{
371
- heartbeatTimeout && clearTimeout(heartbeatTimeout);
372
- });
373
- // If the connection is closed, we clear the interval
459
+ let timeout = undefined;
460
+ let ping = undefined;
461
+ const schedulePing = ()=>{
462
+ const scheduleTimeout = ()=>{
463
+ timeout = setTimeout(()=>{
464
+ client.terminate();
465
+ }, pongWaitMs);
466
+ };
467
+ ping = setTimeout(()=>{
468
+ client.send('PING');
469
+ scheduleTimeout();
470
+ }, pingMs);
471
+ };
472
+ const onMessage = ()=>{
473
+ clearTimeout(ping);
474
+ clearTimeout(timeout);
475
+ schedulePing();
476
+ };
477
+ client.on('message', onMessage);
374
478
  client.on('close', ()=>{
375
- clearInterval(heartbeatInterval);
479
+ clearTimeout(ping);
480
+ clearTimeout(timeout);
376
481
  });
482
+ schedulePing();
377
483
  }
378
484
  function applyWSSHandler(opts) {
379
- const { wss , prefix , keepAlive } = opts;
380
485
  const onConnection = getWSConnectionHandler(opts);
381
- wss.on('connection', async (client, req)=>{
382
- if (prefix && !req.url?.startsWith(prefix)) {
486
+ opts.wss.on('connection', (client, req)=>{
487
+ if (opts.prefix && !req.url?.startsWith(opts.prefix)) {
383
488
  return;
384
489
  }
385
- await onConnection(client, req);
386
- if (keepAlive?.enabled) {
387
- const { pingMs , pongWaitMs } = keepAlive;
388
- handleKeepAlive(client, pingMs, pongWaitMs);
389
- }
490
+ onConnection(client, req).catch((cause)=>{
491
+ opts.onError?.({
492
+ error: new TRPCError.TRPCError({
493
+ code: 'INTERNAL_SERVER_ERROR',
494
+ cause,
495
+ message: 'Failed to handle WebSocket connection'
496
+ }),
497
+ req: req,
498
+ path: undefined,
499
+ type: 'unknown',
500
+ ctx: undefined,
501
+ input: undefined
502
+ });
503
+ client.close();
504
+ });
390
505
  });
391
506
  return {
392
507
  broadcastReconnectNotification: ()=>{
@@ -395,7 +510,7 @@ function applyWSSHandler(opts) {
395
510
  method: 'reconnect'
396
511
  };
397
512
  const data = JSON.stringify(response);
398
- for (const client of wss.clients){
513
+ for (const client of opts.wss.clients){
399
514
  if (client.readyState === WEBSOCKET_OPEN) {
400
515
  client.send(data);
401
516
  }
@@ -406,3 +521,4 @@ function applyWSSHandler(opts) {
406
521
 
407
522
  exports.applyWSSHandler = applyWSSHandler;
408
523
  exports.getWSConnectionHandler = getWSConnectionHandler;
524
+ exports.handleKeepAlive = handleKeepAlive;