@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,233 +1,334 @@
1
1
  'use strict';
2
2
 
3
- var TRPCError = require('../error/TRPCError.js');
3
+ var unpromise = require('../../vendor/unpromise/unpromise.js');
4
4
  var utils = require('../utils.js');
5
+ var asyncIterable = require('./utils/asyncIterable.js');
5
6
  var createDeferred = require('./utils/createDeferred.js');
6
- var createReadableStream = require('./utils/createReadableStream.js');
7
+ var disposable = require('./utils/disposable.js');
8
+ var readableStreamFrom = require('./utils/readableStreamFrom.js');
7
9
 
10
+ function _define_property(obj, key, value) {
11
+ if (key in obj) {
12
+ Object.defineProperty(obj, key, {
13
+ value: value,
14
+ enumerable: true,
15
+ configurable: true,
16
+ writable: true
17
+ });
18
+ } else {
19
+ obj[key] = value;
20
+ }
21
+ return obj;
22
+ }
23
+ function _ts_add_disposable_resource(env, value, async) {
24
+ if (value !== null && value !== void 0) {
25
+ if (typeof value !== "object" && typeof value !== "function") throw new TypeError("Object expected.");
26
+ var dispose, inner;
27
+ if (async) {
28
+ if (!Symbol.asyncDispose) throw new TypeError("Symbol.asyncDispose is not defined.");
29
+ dispose = value[Symbol.asyncDispose];
30
+ }
31
+ if (dispose === void 0) {
32
+ if (!Symbol.dispose) throw new TypeError("Symbol.dispose is not defined.");
33
+ dispose = value[Symbol.dispose];
34
+ if (async) inner = dispose;
35
+ }
36
+ if (typeof dispose !== "function") throw new TypeError("Object not disposable.");
37
+ if (inner) dispose = function() {
38
+ try {
39
+ inner.call(this);
40
+ } catch (e) {
41
+ return Promise.reject(e);
42
+ }
43
+ };
44
+ env.stack.push({
45
+ value: value,
46
+ dispose: dispose,
47
+ async: async
48
+ });
49
+ } else if (async) {
50
+ env.stack.push({
51
+ async: true
52
+ });
53
+ }
54
+ return value;
55
+ }
56
+ function _ts_dispose_resources(env) {
57
+ var _SuppressedError = typeof SuppressedError === "function" ? SuppressedError : function(error, suppressed, message) {
58
+ var e = new Error(message);
59
+ return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
60
+ };
61
+ return (_ts_dispose_resources = function _ts_dispose_resources(env) {
62
+ function fail(e) {
63
+ env.error = env.hasError ? new _SuppressedError(e, env.error, "An error was suppressed during disposal.") : e;
64
+ env.hasError = true;
65
+ }
66
+ var r, s = 0;
67
+ function next() {
68
+ while(r = env.stack.pop()){
69
+ try {
70
+ if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);
71
+ if (r.dispose) {
72
+ var result = r.dispose.call(r.value);
73
+ if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) {
74
+ fail(e);
75
+ return next();
76
+ });
77
+ } else s |= 1;
78
+ } catch (e) {
79
+ fail(e);
80
+ }
81
+ }
82
+ if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();
83
+ if (env.hasError) throw env.error;
84
+ }
85
+ return next();
86
+ })(env);
87
+ }
88
+ // ---------- types
8
89
  // ---------- types
9
90
  const CHUNK_VALUE_TYPE_PROMISE = 0;
10
91
  const CHUNK_VALUE_TYPE_ASYNC_ITERABLE = 1;
11
92
  const PROMISE_STATUS_FULFILLED = 0;
12
93
  const PROMISE_STATUS_REJECTED = 1;
13
94
  const ASYNC_ITERABLE_STATUS_RETURN = 0;
14
- const ASYNC_ITERABLE_STATUS_VALUE = 1;
95
+ const ASYNC_ITERABLE_STATUS_YIELD = 1;
15
96
  const ASYNC_ITERABLE_STATUS_ERROR = 2;
16
97
  function isPromise(value) {
17
98
  return (utils.isObject(value) || utils.isFunction(value)) && typeof value?.['then'] === 'function' && typeof value?.['catch'] === 'function';
18
99
  }
19
100
  class MaxDepthError extends Error {
20
101
  constructor(path){
21
- super('Max depth reached at path: ' + path.join('.'));
22
- this.path = path;
102
+ super('Max depth reached at path: ' + path.join('.')), _define_property(this, "path", void 0), this.path = path;
23
103
  }
24
104
  }
25
- function createBatchStreamProducer(opts) {
26
- const { data } = opts;
27
- let counter = 0;
28
- const placeholder = 0;
29
- const stream = createReadableStream.createReadableStream();
30
- const pending = new Set();
31
- function maybeClose() {
32
- if (pending.size === 0 && !stream.cancelled()) {
33
- stream.controller.close();
34
- }
35
- }
36
- function dehydratePromise(promise, path) {
37
- //
38
- const error = checkMaxDepth(path);
39
- if (error) {
40
- promise.catch(()=>{
41
- // ignore
105
+ async function* createBatchStreamProducer(opts) {
106
+ const env = {
107
+ stack: [],
108
+ error: void 0,
109
+ hasError: false
110
+ };
111
+ try {
112
+ const { data } = opts;
113
+ let counter = 0;
114
+ const placeholder = 0;
115
+ const queue = _ts_add_disposable_resource(env, disposable.makeAsyncResource(new Set(), async ()=>{
116
+ await Promise.all(Array.from(queue).map((it)=>it.iterator.return?.()));
117
+ }), true);
118
+ ;
119
+ function registerAsync(callback) {
120
+ const idx = counter++;
121
+ const iterator = callback(idx)[Symbol.asyncIterator]();
122
+ const nextPromise = iterator.next();
123
+ nextPromise.catch(()=>{
124
+ // prevent unhandled promise rejection
42
125
  });
43
- promise = Promise.reject(error);
44
- }
45
- const idx = counter++;
46
- pending.add(idx);
47
- Promise.race([
48
- promise,
49
- stream.cancelledPromise
50
- ]).then((it)=>{
51
- if (it === null) {
52
- return;
53
- }
54
- stream.controller.enqueue([
55
- idx,
56
- PROMISE_STATUS_FULFILLED,
57
- dehydrate(it, path)
58
- ]);
59
- }).catch((cause)=>{
60
- opts.onError?.({
61
- error: cause,
62
- path
126
+ queue.add({
127
+ iterator,
128
+ nextPromise
63
129
  });
64
- stream.controller.enqueue([
65
- idx,
66
- PROMISE_STATUS_REJECTED,
67
- opts.formatError?.({
68
- error: cause,
69
- path
70
- })
71
- ]);
72
- }).finally(()=>{
73
- pending.delete(idx);
74
- maybeClose();
75
- });
76
- return idx;
77
- }
78
- function dehydrateAsyncIterable(iterable, path) {
79
- const error = checkMaxDepth(path);
80
- if (error) {
81
- iterable = {
82
- [Symbol.asyncIterator] () {
83
- throw error;
84
- }
85
- };
130
+ return idx;
86
131
  }
87
- const idx = counter++;
88
- pending.add(idx);
89
- utils.run(async ()=>{
90
- const iterator = iterable[Symbol.asyncIterator]();
91
- while(true){
92
- const next = await Promise.race([
93
- iterator.next().catch(TRPCError.getTRPCErrorFromUnknown),
94
- stream.cancelledPromise
95
- ]);
96
- if (next instanceof Error) {
132
+ function encodePromise(promise, path) {
133
+ return registerAsync(async function*(idx) {
134
+ const error = checkMaxDepth(path);
135
+ if (error) {
136
+ // Catch any errors from the original promise to ensure they're reported
137
+ promise.catch((cause)=>{
138
+ opts.onError?.({
139
+ error: cause,
140
+ path
141
+ });
142
+ });
143
+ // Replace the promise with a rejected one containing the max depth error
144
+ promise = Promise.reject(error);
145
+ }
146
+ try {
147
+ const next = await promise;
148
+ return [
149
+ idx,
150
+ PROMISE_STATUS_FULFILLED,
151
+ encode(next, path)
152
+ ];
153
+ } catch (cause) {
97
154
  opts.onError?.({
98
- error: next,
155
+ error: cause,
99
156
  path
100
157
  });
101
- stream.controller.enqueue([
158
+ return [
102
159
  idx,
103
- ASYNC_ITERABLE_STATUS_ERROR,
160
+ PROMISE_STATUS_REJECTED,
104
161
  opts.formatError?.({
105
- error: next,
162
+ error: cause,
106
163
  path
107
164
  })
108
- ]);
109
- return;
165
+ ];
110
166
  }
111
- if (next === 'cancelled') {
112
- await iterator.return?.();
113
- break;
114
- }
115
- if (next.done) {
116
- stream.controller.enqueue([
117
- idx,
118
- ASYNC_ITERABLE_STATUS_RETURN,
119
- dehydrate(next.value, path)
120
- ]);
121
- break;
167
+ });
168
+ }
169
+ function encodeAsyncIterable(iterable, path) {
170
+ return registerAsync(async function*(idx) {
171
+ const env = {
172
+ stack: [],
173
+ error: void 0,
174
+ hasError: false
175
+ };
176
+ try {
177
+ const error = checkMaxDepth(path);
178
+ if (error) {
179
+ throw error;
180
+ }
181
+ const iterator = _ts_add_disposable_resource(env, asyncIterable.iteratorResource(iterable), true);
182
+ ;
183
+ try {
184
+ while(true){
185
+ const next = await iterator.next();
186
+ if (next.done) {
187
+ return [
188
+ idx,
189
+ ASYNC_ITERABLE_STATUS_RETURN,
190
+ encode(next.value, path)
191
+ ];
192
+ }
193
+ yield [
194
+ idx,
195
+ ASYNC_ITERABLE_STATUS_YIELD,
196
+ encode(next.value, path)
197
+ ];
198
+ }
199
+ } catch (cause) {
200
+ opts.onError?.({
201
+ error: cause,
202
+ path
203
+ });
204
+ return [
205
+ idx,
206
+ ASYNC_ITERABLE_STATUS_ERROR,
207
+ opts.formatError?.({
208
+ error: cause,
209
+ path
210
+ })
211
+ ];
212
+ }
213
+ } catch (e) {
214
+ env.error = e;
215
+ env.hasError = true;
216
+ } finally{
217
+ const result = _ts_dispose_resources(env);
218
+ if (result) await result;
122
219
  }
123
- stream.controller.enqueue([
124
- idx,
125
- ASYNC_ITERABLE_STATUS_VALUE,
126
- dehydrate(next.value, path)
127
- ]);
128
- }
129
- pending.delete(idx);
130
- maybeClose();
131
- }).catch((cause)=>{
132
- // this shouldn't happen, but node crashes if we don't catch it
133
- opts.onError?.({
134
- error: new Error('You found a bug - please report it on https://github.com/trpc/trpc', // eslint-disable-next-line @typescript-eslint/ban-ts-comment
135
- // @ts-ignore https://github.com/tc39/proposal-error-cause
136
- {
137
- cause
138
- }),
139
- path
140
220
  });
141
- });
142
- return idx;
143
- }
144
- function checkMaxDepth(path) {
145
- if (opts.maxDepth && path.length > opts.maxDepth) {
146
- return new MaxDepthError(path);
147
221
  }
148
- return null;
149
- }
150
- function dehydrateChunk(value, path) {
151
- if (isPromise(value)) {
152
- return [
153
- CHUNK_VALUE_TYPE_PROMISE,
154
- dehydratePromise(value, path)
155
- ];
222
+ function checkMaxDepth(path) {
223
+ if (opts.maxDepth && path.length > opts.maxDepth) {
224
+ return new MaxDepthError(path);
225
+ }
226
+ return null;
156
227
  }
157
- if (utils.isAsyncIterable(value)) {
158
- if (opts.maxDepth && path.length >= opts.maxDepth) {
159
- throw new Error('Max depth reached');
228
+ function encodeAsync(value, path) {
229
+ if (isPromise(value)) {
230
+ return [
231
+ CHUNK_VALUE_TYPE_PROMISE,
232
+ encodePromise(value, path)
233
+ ];
160
234
  }
161
- return [
162
- CHUNK_VALUE_TYPE_ASYNC_ITERABLE,
163
- dehydrateAsyncIterable(value, path)
164
- ];
235
+ if (utils.isAsyncIterable(value)) {
236
+ if (opts.maxDepth && path.length >= opts.maxDepth) {
237
+ throw new Error('Max depth reached');
238
+ }
239
+ return [
240
+ CHUNK_VALUE_TYPE_ASYNC_ITERABLE,
241
+ encodeAsyncIterable(value, path)
242
+ ];
243
+ }
244
+ return null;
165
245
  }
166
- return null;
167
- }
168
- function dehydrate(value, path) {
169
- const reg = dehydrateChunk(value, path);
170
- if (reg) {
246
+ function encode(value, path) {
247
+ if (value === undefined) {
248
+ return [
249
+ []
250
+ ];
251
+ }
252
+ if (!utils.isObject(value)) {
253
+ return [
254
+ [
255
+ value
256
+ ]
257
+ ];
258
+ }
259
+ const reg = encodeAsync(value, path);
260
+ if (reg) {
261
+ return [
262
+ [
263
+ placeholder
264
+ ],
265
+ [
266
+ null,
267
+ ...reg
268
+ ]
269
+ ];
270
+ }
271
+ const newObj = {};
272
+ const asyncValues = [];
273
+ for (const [key, item] of Object.entries(value)){
274
+ const transformed = encodeAsync(item, [
275
+ ...path,
276
+ key
277
+ ]);
278
+ if (!transformed) {
279
+ newObj[key] = item;
280
+ continue;
281
+ }
282
+ newObj[key] = placeholder;
283
+ asyncValues.push([
284
+ key,
285
+ ...transformed
286
+ ]);
287
+ }
171
288
  return [
172
289
  [
173
- placeholder
290
+ newObj
174
291
  ],
175
- [
176
- null,
177
- ...reg
178
- ]
292
+ ...asyncValues
179
293
  ];
180
294
  }
181
- if (!utils.isObject(value)) {
182
- return [
183
- [
184
- value
185
- ]
186
- ];
187
- }
188
- const newObj = {};
189
- const asyncValues = [];
190
- for (const [key, item] of Object.entries(value)){
191
- const transformed = dehydrateChunk(item, [
192
- ...path,
295
+ const newHead = {};
296
+ for (const [key, item] of Object.entries(data)){
297
+ newHead[key] = encode(item, [
193
298
  key
194
299
  ]);
195
- if (!transformed) {
196
- newObj[key] = item;
197
- continue;
300
+ }
301
+ yield newHead;
302
+ // Process all async iterables in parallel by racing their next values
303
+ while(queue.size > 0){
304
+ // Race all iterators to get the next value from any of them
305
+ const [entry, res] = await unpromise.Unpromise.race(Array.from(queue).map(async (it)=>[
306
+ it,
307
+ await it.nextPromise
308
+ ]));
309
+ yield res.value;
310
+ // Remove current iterator and re-add if not done
311
+ queue.delete(entry);
312
+ if (!res.done) {
313
+ entry.nextPromise = entry.iterator.next();
314
+ queue.add(entry);
198
315
  }
199
- newObj[key] = placeholder;
200
- asyncValues.push([
201
- key,
202
- ...transformed
203
- ]);
204
316
  }
205
- return [
206
- [
207
- newObj
208
- ],
209
- ...asyncValues
210
- ];
317
+ } catch (e) {
318
+ env.error = e;
319
+ env.hasError = true;
320
+ } finally{
321
+ const result = _ts_dispose_resources(env);
322
+ if (result) await result;
211
323
  }
212
- const newHead = {};
213
- for (const [key, item] of Object.entries(data)){
214
- newHead[key] = dehydrate(item, [
215
- key
216
- ]);
217
- }
218
- return [
219
- newHead,
220
- stream.readable
221
- ];
222
324
  }
223
325
  /**
224
326
  * JSON Lines stream producer
225
327
  * @see https://jsonlines.org/
226
328
  */ function jsonlStreamProducer(opts) {
227
- let [head, stream] = createBatchStreamProducer(opts);
228
- const { serialize } = opts;
329
+ let stream = readableStreamFrom.readableStreamFrom(createBatchStreamProducer(opts));
330
+ const { serialize } = opts;
229
331
  if (serialize) {
230
- head = serialize(head);
231
332
  stream = stream.pipeThrough(new TransformStream({
232
333
  transform (chunk, controller) {
233
334
  controller.enqueue(serialize(chunk));
@@ -235,9 +336,6 @@ function createBatchStreamProducer(opts) {
235
336
  }));
236
337
  }
237
338
  return stream.pipeThrough(new TransformStream({
238
- start (controller) {
239
- controller.enqueue(JSON.stringify(head) + '\n');
240
- },
241
339
  transform (chunk, controller) {
242
340
  controller.enqueue(JSON.stringify(chunk) + '\n');
243
341
  }
@@ -254,24 +352,26 @@ class StreamInterruptedError extends Error {
254
352
  }
255
353
  class AsyncError extends Error {
256
354
  constructor(data){
257
- super('Received error from server');
258
- this.data = data;
355
+ super('Received error from server'), _define_property(this, "data", void 0), this.data = data;
259
356
  }
260
357
  }
261
358
  const nodeJsStreamToReaderEsque = (source)=>{
262
359
  return {
263
360
  getReader () {
264
- const { readable , controller } = createReadableStream.createReadableStream();
265
- source.on('data', (chunk)=>{
266
- controller.enqueue(chunk);
267
- });
268
- source.on('end', ()=>{
269
- controller.close();
270
- });
271
- source.on('error', (error)=>{
272
- controller.error(error);
361
+ const stream = new ReadableStream({
362
+ start (controller) {
363
+ source.on('data', (chunk)=>{
364
+ controller.enqueue(chunk);
365
+ });
366
+ source.on('end', ()=>{
367
+ controller.close();
368
+ });
369
+ source.on('error', (error)=>{
370
+ controller.error(error);
371
+ });
372
+ }
273
373
  });
274
- return readable.getReader();
374
+ return stream.getReader();
275
375
  }
276
376
  };
277
377
  };
@@ -280,7 +380,7 @@ function createLineAccumulator(from) {
280
380
  let lineAggregate = '';
281
381
  return new ReadableStream({
282
382
  async pull (controller) {
283
- const { done , value } = await reader.read();
383
+ const { done, value } = await reader.read();
284
384
  if (done) {
285
385
  controller.close();
286
386
  } else {
@@ -317,11 +417,84 @@ function createConsumerStream(from) {
317
417
  }
318
418
  }));
319
419
  }
420
+ /**
421
+ * Creates a handler for managing stream controllers and their lifecycle
422
+ */ function createStreamsManager(abortController) {
423
+ const controllerMap = new Map();
424
+ /**
425
+ * Checks if there are no pending controllers or deferred promises
426
+ */ function isEmpty() {
427
+ return Array.from(controllerMap.values()).every((c)=>c.closed);
428
+ }
429
+ /**
430
+ * Creates a stream controller
431
+ */ function createStreamController() {
432
+ let originalController;
433
+ const stream = new ReadableStream({
434
+ start (controller) {
435
+ originalController = controller;
436
+ }
437
+ });
438
+ const streamController = {
439
+ enqueue: (v)=>originalController.enqueue(v),
440
+ close: ()=>{
441
+ originalController.close();
442
+ // mark as closed and remove methods
443
+ Object.assign(streamController, {
444
+ closed: true,
445
+ close: ()=>{
446
+ // noop
447
+ },
448
+ enqueue: ()=>{
449
+ // noop
450
+ },
451
+ getReaderResource: null
452
+ });
453
+ if (isEmpty()) {
454
+ abortController.abort();
455
+ }
456
+ },
457
+ closed: false,
458
+ getReaderResource: ()=>{
459
+ const reader = stream.getReader();
460
+ return disposable.makeResource(reader, ()=>{
461
+ reader.releaseLock();
462
+ streamController.close();
463
+ });
464
+ }
465
+ };
466
+ return streamController;
467
+ }
468
+ /**
469
+ * Gets or creates a stream controller
470
+ */ function getOrCreate(chunkId) {
471
+ let c = controllerMap.get(chunkId);
472
+ if (!c) {
473
+ c = createStreamController();
474
+ controllerMap.set(chunkId, c);
475
+ }
476
+ return c;
477
+ }
478
+ /**
479
+ * Cancels all pending controllers and rejects deferred promises
480
+ */ function cancelAll(reason) {
481
+ const error = new StreamInterruptedError(reason);
482
+ for (const controller of controllerMap.values()){
483
+ controller.enqueue(error);
484
+ controller.close();
485
+ }
486
+ }
487
+ return {
488
+ getOrCreate,
489
+ isEmpty,
490
+ cancelAll
491
+ };
492
+ }
320
493
  /**
321
494
  * JSON Lines stream consumer
322
495
  * @see https://jsonlines.org/
323
496
  */ async function jsonlStreamConsumer(opts) {
324
- const { deserialize =(v)=>v } = opts;
497
+ const { deserialize = (v)=>v } = opts;
325
498
  let source = createConsumerStream(opts.from);
326
499
  if (deserialize) {
327
500
  source = source.pipeThrough(new TransformStream({
@@ -331,149 +504,105 @@ function createConsumerStream(from) {
331
504
  }));
332
505
  }
333
506
  let headDeferred = createDeferred.createDeferred();
334
- const chunkDeferred = new Map();
335
- const controllers = new Map();
336
- const maybeAbort = ()=>{
337
- if (chunkDeferred.size === 0 && Array.from(controllers.values()).every((it)=>it.returned)) {
338
- // nothing is listening to the stream anymore
339
- opts.abortController?.abort();
340
- }
341
- };
342
- function hydrateChunkDefinition(value) {
507
+ const streamManager = createStreamsManager(opts.abortController);
508
+ function decodeChunkDefinition(value) {
343
509
  const [_path, type, chunkId] = value;
344
- const { readable , controller } = createReadableStream.createReadableStream();
345
- const wrapper = {
346
- controller,
347
- returned: false
348
- };
349
- controllers.set(chunkId, wrapper);
350
- // resolve chunk deferred if it exists
351
- const deferred = chunkDeferred.get(chunkId);
352
- if (deferred) {
353
- deferred.resolve(wrapper);
354
- chunkDeferred.delete(chunkId);
355
- }
510
+ const controller = streamManager.getOrCreate(chunkId);
356
511
  switch(type){
357
512
  case CHUNK_VALUE_TYPE_PROMISE:
358
513
  {
359
- return new Promise((resolve, reject)=>{
360
- // listen for next value in the stream
361
- const reader = readable.getReader();
362
- reader.read().then((it)=>{
363
- if (it.done) {
364
- reject(new Error('Promise chunk ended without value'));
365
- return;
366
- }
367
- if (it.value instanceof StreamInterruptedError) {
368
- reject(it.value);
369
- return;
514
+ return utils.run(async ()=>{
515
+ const env = {
516
+ stack: [],
517
+ error: void 0,
518
+ hasError: false
519
+ };
520
+ try {
521
+ const reader = _ts_add_disposable_resource(env, controller.getReaderResource(), false);
522
+ ;
523
+ const { value } = await reader.read();
524
+ if (value instanceof StreamInterruptedError) {
525
+ throw value;
370
526
  }
371
- const value = it.value;
372
527
  const [_chunkId, status, data] = value;
373
528
  switch(status){
374
529
  case PROMISE_STATUS_FULFILLED:
375
- resolve(hydrate(data));
376
- break;
530
+ return decode(data);
377
531
  case PROMISE_STATUS_REJECTED:
378
- reject(opts.formatError?.({
532
+ throw opts.formatError?.({
379
533
  error: data
380
- }) ?? new AsyncError(data));
381
- break;
534
+ }) ?? new AsyncError(data);
382
535
  }
383
- }).catch(reject).finally(()=>{
384
- // reader.releaseLock();
385
- controllers.delete(chunkId);
386
- maybeAbort();
387
- });
536
+ } catch (e) {
537
+ env.error = e;
538
+ env.hasError = true;
539
+ } finally{
540
+ _ts_dispose_resources(env);
541
+ }
388
542
  });
389
543
  }
390
544
  case CHUNK_VALUE_TYPE_ASYNC_ITERABLE:
391
545
  {
392
- return {
393
- [Symbol.asyncIterator]: ()=>{
394
- const reader = readable.getReader();
395
- const iterator = {
396
- next: async ()=>{
397
- const { done , value } = await reader.read();
398
- if (value instanceof StreamInterruptedError) {
399
- throw value;
400
- }
401
- if (done) {
402
- controllers.delete(chunkId);
403
- maybeAbort();
404
- return {
405
- done: true,
406
- value: undefined
407
- };
408
- }
409
- const [_chunkId, status, data] = value;
410
- switch(status){
411
- case ASYNC_ITERABLE_STATUS_VALUE:
412
- return {
413
- done: false,
414
- value: hydrate(data)
415
- };
416
- case ASYNC_ITERABLE_STATUS_RETURN:
417
- controllers.delete(chunkId);
418
- maybeAbort();
419
- return {
420
- done: true,
421
- value: hydrate(data)
422
- };
423
- case ASYNC_ITERABLE_STATUS_ERROR:
424
- controllers.delete(chunkId);
425
- maybeAbort();
426
- throw opts.formatError?.({
427
- error: data
428
- }) ?? new AsyncError(data);
429
- }
430
- },
431
- return: async ()=>{
432
- wrapper.returned = true;
433
- maybeAbort();
434
- return {
435
- done: true,
436
- value: undefined
437
- };
546
+ return utils.run(async function*() {
547
+ const env = {
548
+ stack: [],
549
+ error: void 0,
550
+ hasError: false
551
+ };
552
+ try {
553
+ const reader = _ts_add_disposable_resource(env, controller.getReaderResource(), false);
554
+ ;
555
+ while(true){
556
+ const { value } = await reader.read();
557
+ if (value instanceof StreamInterruptedError) {
558
+ throw value;
438
559
  }
439
- };
440
- return iterator;
560
+ const [_chunkId, status, data] = value;
561
+ switch(status){
562
+ case ASYNC_ITERABLE_STATUS_YIELD:
563
+ yield decode(data);
564
+ break;
565
+ case ASYNC_ITERABLE_STATUS_RETURN:
566
+ return decode(data);
567
+ case ASYNC_ITERABLE_STATUS_ERROR:
568
+ throw opts.formatError?.({
569
+ error: data
570
+ }) ?? new AsyncError(data);
571
+ }
572
+ }
573
+ } catch (e) {
574
+ env.error = e;
575
+ env.hasError = true;
576
+ } finally{
577
+ _ts_dispose_resources(env);
441
578
  }
442
- };
579
+ });
443
580
  }
444
581
  }
445
582
  }
446
- function hydrate(value) {
583
+ function decode(value) {
447
584
  const [[data], ...asyncProps] = value;
448
- for (const value1 of asyncProps){
449
- const [key] = value1;
450
- const hydrated = hydrateChunkDefinition(value1);
585
+ for (const value of asyncProps){
586
+ const [key] = value;
587
+ const decoded = decodeChunkDefinition(value);
451
588
  if (key === null) {
452
- return hydrated;
589
+ return decoded;
453
590
  }
454
- data[key] = hydrated;
591
+ data[key] = decoded;
455
592
  }
456
593
  return data;
457
594
  }
458
595
  const closeOrAbort = (reason)=>{
459
596
  const error = new StreamInterruptedError(reason);
460
597
  headDeferred?.reject(error);
461
- for (const deferred of chunkDeferred.values()){
462
- deferred.reject(error);
463
- }
464
- chunkDeferred.clear();
465
- for (const { controller } of controllers.values()){
466
- controller.enqueue(error);
467
- controller.close();
468
- }
469
- controllers.clear();
598
+ streamManager.cancelAll(error);
470
599
  };
471
600
  source.pipeTo(new WritableStream({
472
- async write (chunkOrHead) {
601
+ write (chunkOrHead) {
473
602
  if (headDeferred) {
474
603
  const head = chunkOrHead;
475
604
  for (const [key, value] of Object.entries(chunkOrHead)){
476
- const parsed = hydrate(value);
605
+ const parsed = decode(value);
477
606
  head[key] = parsed;
478
607
  }
479
608
  headDeferred.resolve(head);
@@ -482,20 +611,14 @@ function createConsumerStream(from) {
482
611
  }
483
612
  const chunk = chunkOrHead;
484
613
  const [idx] = chunk;
485
- let wrapper = controllers.get(idx);
486
- if (!wrapper) {
487
- let deferred = chunkDeferred.get(idx);
488
- if (!deferred) {
489
- deferred = createDeferred.createDeferred();
490
- chunkDeferred.set(idx, deferred);
491
- }
492
- wrapper = await deferred.promise;
493
- }
494
- wrapper.controller.enqueue(chunk);
614
+ const controller = streamManager.getOrCreate(idx);
615
+ controller.enqueue(chunk);
495
616
  },
496
617
  close: closeOrAbort,
497
618
  abort: closeOrAbort
498
- })).catch((error)=>{
619
+ }), {
620
+ signal: opts.abortController.signal
621
+ }).catch((error)=>{
499
622
  opts.onError?.({
500
623
  error
501
624
  });
@@ -503,9 +626,7 @@ function createConsumerStream(from) {
503
626
  });
504
627
  return [
505
628
  await headDeferred.promise,
506
- {
507
- controllers
508
- }
629
+ streamManager
509
630
  ];
510
631
  }
511
632