@typed/fx 2.0.0-beta.4 → 2.0.0-beta.6

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 (663) hide show
  1. package/README.md +34 -20
  2. package/dist/Fx/Fx.d.ts +362 -10
  3. package/dist/Fx/Fx.d.ts.map +1 -1
  4. package/dist/Fx/Fx.js +32 -1
  5. package/dist/Fx/TypeId.d.ts +49 -3
  6. package/dist/Fx/TypeId.d.ts.map +1 -1
  7. package/dist/Fx/TypeId.js +39 -2
  8. package/dist/Fx/combinators/additive.d.ts +156 -5
  9. package/dist/Fx/combinators/additive.d.ts.map +1 -1
  10. package/dist/Fx/combinators/additive.js +156 -5
  11. package/dist/Fx/combinators/catch.d.ts +195 -22
  12. package/dist/Fx/combinators/catch.d.ts.map +1 -1
  13. package/dist/Fx/combinators/catch.js +186 -16
  14. package/dist/Fx/combinators/causes.d.ts +24 -1
  15. package/dist/Fx/combinators/causes.d.ts.map +1 -1
  16. package/dist/Fx/combinators/causes.js +24 -1
  17. package/dist/Fx/combinators/changesWithEffect.d.ts +20 -0
  18. package/dist/Fx/combinators/changesWithEffect.d.ts.map +1 -1
  19. package/dist/Fx/combinators/changesWithEffect.js +20 -0
  20. package/dist/Fx/combinators/compact.d.ts +17 -0
  21. package/dist/Fx/combinators/compact.d.ts.map +1 -1
  22. package/dist/Fx/combinators/compact.js +17 -0
  23. package/dist/Fx/combinators/concatMap.d.ts +86 -0
  24. package/dist/Fx/combinators/concatMap.d.ts.map +1 -0
  25. package/dist/Fx/combinators/concatMap.js +86 -0
  26. package/dist/Fx/combinators/continueWith.d.ts +109 -1
  27. package/dist/Fx/combinators/continueWith.d.ts.map +1 -1
  28. package/dist/Fx/combinators/continueWith.js +109 -1
  29. package/dist/Fx/combinators/debounce.d.ts +34 -0
  30. package/dist/Fx/combinators/debounce.d.ts.map +1 -0
  31. package/dist/Fx/combinators/debounce.js +35 -0
  32. package/dist/Fx/combinators/delay.d.ts +34 -0
  33. package/dist/Fx/combinators/delay.d.ts.map +1 -0
  34. package/dist/Fx/combinators/delay.js +31 -0
  35. package/dist/Fx/combinators/dropUntil.d.ts +42 -0
  36. package/dist/Fx/combinators/dropUntil.d.ts.map +1 -1
  37. package/dist/Fx/combinators/dropUntil.js +42 -0
  38. package/dist/Fx/combinators/during.d.ts +38 -0
  39. package/dist/Fx/combinators/during.d.ts.map +1 -0
  40. package/dist/Fx/combinators/during.js +85 -0
  41. package/dist/Fx/combinators/ensuring.d.ts +33 -3
  42. package/dist/Fx/combinators/ensuring.d.ts.map +1 -1
  43. package/dist/Fx/combinators/ensuring.js +33 -3
  44. package/dist/Fx/combinators/exhaustLatestMap.d.ts +40 -4
  45. package/dist/Fx/combinators/exhaustLatestMap.d.ts.map +1 -1
  46. package/dist/Fx/combinators/exhaustLatestMap.js +40 -4
  47. package/dist/Fx/combinators/exhaustLatestMapEffect.d.ts +39 -3
  48. package/dist/Fx/combinators/exhaustLatestMapEffect.d.ts.map +1 -1
  49. package/dist/Fx/combinators/exhaustLatestMapEffect.js +39 -3
  50. package/dist/Fx/combinators/exhaustMap.d.ts +37 -0
  51. package/dist/Fx/combinators/exhaustMap.d.ts.map +1 -1
  52. package/dist/Fx/combinators/exhaustMap.js +37 -0
  53. package/dist/Fx/combinators/exhaustMapEffect.d.ts +32 -0
  54. package/dist/Fx/combinators/exhaustMapEffect.d.ts.map +1 -1
  55. package/dist/Fx/combinators/exhaustMapEffect.js +32 -0
  56. package/dist/Fx/combinators/exit.d.ts +22 -1
  57. package/dist/Fx/combinators/exit.d.ts.map +1 -1
  58. package/dist/Fx/combinators/exit.js +22 -1
  59. package/dist/Fx/combinators/filter.d.ts +16 -0
  60. package/dist/Fx/combinators/filter.d.ts.map +1 -1
  61. package/dist/Fx/combinators/filter.js +16 -0
  62. package/dist/Fx/combinators/filterEffect.d.ts +21 -0
  63. package/dist/Fx/combinators/filterEffect.d.ts.map +1 -1
  64. package/dist/Fx/combinators/filterEffect.js +21 -0
  65. package/dist/Fx/combinators/filterMap.d.ts +19 -0
  66. package/dist/Fx/combinators/filterMap.d.ts.map +1 -1
  67. package/dist/Fx/combinators/filterMap.js +19 -0
  68. package/dist/Fx/combinators/filterMapEffect.d.ts +20 -0
  69. package/dist/Fx/combinators/filterMapEffect.d.ts.map +1 -1
  70. package/dist/Fx/combinators/filterMapEffect.js +20 -0
  71. package/dist/Fx/combinators/filterMapLoop.d.ts +19 -0
  72. package/dist/Fx/combinators/filterMapLoop.d.ts.map +1 -1
  73. package/dist/Fx/combinators/filterMapLoop.js +19 -0
  74. package/dist/Fx/combinators/filterMapLoopCause.d.ts +20 -0
  75. package/dist/Fx/combinators/filterMapLoopCause.d.ts.map +1 -1
  76. package/dist/Fx/combinators/filterMapLoopCause.js +20 -0
  77. package/dist/Fx/combinators/filterMapLoopCauseEffect.d.ts +20 -0
  78. package/dist/Fx/combinators/filterMapLoopCauseEffect.d.ts.map +1 -1
  79. package/dist/Fx/combinators/filterMapLoopCauseEffect.js +20 -0
  80. package/dist/Fx/combinators/filterMapLoopEffect.d.ts +20 -0
  81. package/dist/Fx/combinators/filterMapLoopEffect.d.ts.map +1 -1
  82. package/dist/Fx/combinators/filterMapLoopEffect.js +20 -0
  83. package/dist/Fx/combinators/flatMap.d.ts +48 -3
  84. package/dist/Fx/combinators/flatMap.d.ts.map +1 -1
  85. package/dist/Fx/combinators/flatMap.js +35 -2
  86. package/dist/Fx/combinators/flatMapConcurrently.d.ts +50 -3
  87. package/dist/Fx/combinators/flatMapConcurrently.d.ts.map +1 -1
  88. package/dist/Fx/combinators/flatMapConcurrently.js +47 -1
  89. package/dist/Fx/combinators/flatMapConcurrentlyEffect.d.ts +47 -3
  90. package/dist/Fx/combinators/flatMapConcurrentlyEffect.d.ts.map +1 -1
  91. package/dist/Fx/combinators/flatMapConcurrentlyEffect.js +39 -1
  92. package/dist/Fx/combinators/flatMapEffect.d.ts +44 -2
  93. package/dist/Fx/combinators/flatMapEffect.d.ts.map +1 -1
  94. package/dist/Fx/combinators/flatMapEffect.js +31 -1
  95. package/dist/Fx/combinators/flip.d.ts +33 -1
  96. package/dist/Fx/combinators/flip.d.ts.map +1 -1
  97. package/dist/Fx/combinators/flip.js +33 -1
  98. package/dist/Fx/combinators/gen.d.ts +28 -9
  99. package/dist/Fx/combinators/gen.d.ts.map +1 -1
  100. package/dist/Fx/combinators/gen.js +27 -3
  101. package/dist/Fx/combinators/genScoped.d.ts +32 -9
  102. package/dist/Fx/combinators/genScoped.d.ts.map +1 -1
  103. package/dist/Fx/combinators/genScoped.js +30 -2
  104. package/dist/Fx/combinators/grouped.d.ts +89 -0
  105. package/dist/Fx/combinators/grouped.d.ts.map +1 -0
  106. package/dist/Fx/combinators/grouped.js +146 -0
  107. package/dist/Fx/combinators/index.d.ts +35 -0
  108. package/dist/Fx/combinators/index.d.ts.map +1 -1
  109. package/dist/Fx/combinators/index.js +35 -0
  110. package/dist/Fx/combinators/keyed.d.ts +121 -7
  111. package/dist/Fx/combinators/keyed.d.ts.map +1 -1
  112. package/dist/Fx/combinators/keyed.js +64 -6
  113. package/dist/Fx/combinators/loop.d.ts +16 -0
  114. package/dist/Fx/combinators/loop.d.ts.map +1 -1
  115. package/dist/Fx/combinators/loop.js +16 -0
  116. package/dist/Fx/combinators/loopCause.d.ts +17 -0
  117. package/dist/Fx/combinators/loopCause.d.ts.map +1 -1
  118. package/dist/Fx/combinators/loopCause.js +17 -0
  119. package/dist/Fx/combinators/loopCauseEffect.d.ts +18 -0
  120. package/dist/Fx/combinators/loopCauseEffect.d.ts.map +1 -1
  121. package/dist/Fx/combinators/loopCauseEffect.js +18 -0
  122. package/dist/Fx/combinators/loopEffect.d.ts +23 -0
  123. package/dist/Fx/combinators/loopEffect.d.ts.map +1 -1
  124. package/dist/Fx/combinators/loopEffect.js +23 -0
  125. package/dist/Fx/combinators/map.d.ts +45 -0
  126. package/dist/Fx/combinators/map.d.ts.map +1 -1
  127. package/dist/Fx/combinators/map.js +42 -0
  128. package/dist/Fx/combinators/mapBoth.d.ts +19 -0
  129. package/dist/Fx/combinators/mapBoth.d.ts.map +1 -1
  130. package/dist/Fx/combinators/mapBoth.js +19 -0
  131. package/dist/Fx/combinators/mapEffect.d.ts +24 -0
  132. package/dist/Fx/combinators/mapEffect.d.ts.map +1 -1
  133. package/dist/Fx/combinators/mapEffect.js +24 -0
  134. package/dist/Fx/combinators/mapError.d.ts +20 -4
  135. package/dist/Fx/combinators/mapError.d.ts.map +1 -1
  136. package/dist/Fx/combinators/mapError.js +20 -4
  137. package/dist/Fx/combinators/mergeAll.d.ts +34 -0
  138. package/dist/Fx/combinators/mergeAll.d.ts.map +1 -1
  139. package/dist/Fx/combinators/mergeAll.js +34 -0
  140. package/dist/Fx/combinators/mergeOrdered.d.ts +35 -3
  141. package/dist/Fx/combinators/mergeOrdered.d.ts.map +1 -1
  142. package/dist/Fx/combinators/mergeOrdered.js +35 -3
  143. package/dist/Fx/combinators/onError.d.ts +33 -3
  144. package/dist/Fx/combinators/onError.d.ts.map +1 -1
  145. package/dist/Fx/combinators/onError.js +33 -3
  146. package/dist/Fx/combinators/onExit.d.ts +28 -2
  147. package/dist/Fx/combinators/onExit.d.ts.map +1 -1
  148. package/dist/Fx/combinators/onExit.js +28 -2
  149. package/dist/Fx/combinators/onInterrupt.d.ts +48 -3
  150. package/dist/Fx/combinators/onInterrupt.d.ts.map +1 -1
  151. package/dist/Fx/combinators/onInterrupt.js +48 -3
  152. package/dist/Fx/combinators/pairwise.d.ts +28 -0
  153. package/dist/Fx/combinators/pairwise.d.ts.map +1 -0
  154. package/dist/Fx/combinators/pairwise.js +31 -0
  155. package/dist/Fx/combinators/provide.d.ts +130 -9
  156. package/dist/Fx/combinators/provide.d.ts.map +1 -1
  157. package/dist/Fx/combinators/provide.js +130 -9
  158. package/dist/Fx/combinators/race.d.ts +92 -0
  159. package/dist/Fx/combinators/race.d.ts.map +1 -0
  160. package/dist/Fx/combinators/race.js +149 -0
  161. package/dist/Fx/combinators/repeat.d.ts +41 -0
  162. package/dist/Fx/combinators/repeat.d.ts.map +1 -0
  163. package/dist/Fx/combinators/repeat.js +57 -0
  164. package/dist/Fx/combinators/result.d.ts +22 -0
  165. package/dist/Fx/combinators/result.d.ts.map +1 -1
  166. package/dist/Fx/combinators/result.js +26 -12
  167. package/dist/Fx/combinators/retry.d.ts +53 -0
  168. package/dist/Fx/combinators/retry.d.ts.map +1 -0
  169. package/dist/Fx/combinators/retry.js +71 -0
  170. package/dist/Fx/combinators/sample.d.ts +31 -0
  171. package/dist/Fx/combinators/sample.d.ts.map +1 -0
  172. package/dist/Fx/combinators/sample.js +42 -0
  173. package/dist/Fx/combinators/scan.d.ts +39 -0
  174. package/dist/Fx/combinators/scan.d.ts.map +1 -1
  175. package/dist/Fx/combinators/scan.js +39 -0
  176. package/dist/Fx/combinators/since.d.ts +30 -0
  177. package/dist/Fx/combinators/since.d.ts.map +1 -0
  178. package/dist/Fx/combinators/since.js +39 -0
  179. package/dist/Fx/combinators/skip.d.ts +31 -0
  180. package/dist/Fx/combinators/skip.d.ts.map +1 -1
  181. package/dist/Fx/combinators/skip.js +31 -0
  182. package/dist/Fx/combinators/skipRepeats.d.ts +16 -0
  183. package/dist/Fx/combinators/skipRepeats.d.ts.map +1 -1
  184. package/dist/Fx/combinators/skipRepeats.js +16 -0
  185. package/dist/Fx/combinators/skipRepeatsWith.d.ts +17 -0
  186. package/dist/Fx/combinators/skipRepeatsWith.d.ts.map +1 -1
  187. package/dist/Fx/combinators/skipRepeatsWith.js +17 -0
  188. package/dist/Fx/combinators/skipWhile.d.ts +68 -0
  189. package/dist/Fx/combinators/skipWhile.d.ts.map +1 -1
  190. package/dist/Fx/combinators/skipWhile.js +68 -0
  191. package/dist/Fx/combinators/slice.d.ts +82 -0
  192. package/dist/Fx/combinators/slice.d.ts.map +1 -1
  193. package/dist/Fx/combinators/slice.js +33 -0
  194. package/dist/Fx/combinators/switchMap.d.ts +38 -0
  195. package/dist/Fx/combinators/switchMap.d.ts.map +1 -1
  196. package/dist/Fx/combinators/switchMap.js +38 -0
  197. package/dist/Fx/combinators/switchMapEffect.d.ts +37 -0
  198. package/dist/Fx/combinators/switchMapEffect.d.ts.map +1 -1
  199. package/dist/Fx/combinators/switchMapEffect.js +37 -0
  200. package/dist/Fx/combinators/take.d.ts +32 -0
  201. package/dist/Fx/combinators/take.d.ts.map +1 -1
  202. package/dist/Fx/combinators/take.js +32 -0
  203. package/dist/Fx/combinators/takeUntil.d.ts +46 -0
  204. package/dist/Fx/combinators/takeUntil.d.ts.map +1 -1
  205. package/dist/Fx/combinators/takeUntil.js +46 -0
  206. package/dist/Fx/combinators/takeWhile.d.ts +31 -0
  207. package/dist/Fx/combinators/takeWhile.d.ts.map +1 -1
  208. package/dist/Fx/combinators/takeWhile.js +31 -0
  209. package/dist/Fx/combinators/tapEffect.d.ts +16 -0
  210. package/dist/Fx/combinators/tapEffect.d.ts.map +1 -1
  211. package/dist/Fx/combinators/tapEffect.js +16 -0
  212. package/dist/Fx/combinators/throttle.d.ts +79 -0
  213. package/dist/Fx/combinators/throttle.d.ts.map +1 -0
  214. package/dist/Fx/combinators/throttle.js +99 -0
  215. package/dist/Fx/combinators/timeout.d.ts +76 -0
  216. package/dist/Fx/combinators/timeout.d.ts.map +1 -0
  217. package/dist/Fx/combinators/timeout.js +110 -0
  218. package/dist/Fx/combinators/tuple.d.ts +30 -0
  219. package/dist/Fx/combinators/tuple.d.ts.map +1 -1
  220. package/dist/Fx/combinators/tuple.js +34 -3
  221. package/dist/Fx/combinators/until.d.ts +27 -0
  222. package/dist/Fx/combinators/until.d.ts.map +1 -0
  223. package/dist/Fx/combinators/until.js +56 -0
  224. package/dist/Fx/combinators/unwrap.d.ts +29 -0
  225. package/dist/Fx/combinators/unwrap.d.ts.map +1 -1
  226. package/dist/Fx/combinators/unwrap.js +29 -0
  227. package/dist/Fx/combinators/unwrapScoped.d.ts +33 -0
  228. package/dist/Fx/combinators/unwrapScoped.d.ts.map +1 -1
  229. package/dist/Fx/combinators/unwrapScoped.js +33 -0
  230. package/dist/Fx/combinators/when.d.ts +35 -0
  231. package/dist/Fx/combinators/when.d.ts.map +1 -1
  232. package/dist/Fx/combinators/when.js +36 -1
  233. package/dist/Fx/combinators/withLatestFrom.d.ts +58 -0
  234. package/dist/Fx/combinators/withLatestFrom.d.ts.map +1 -0
  235. package/dist/Fx/combinators/withLatestFrom.js +68 -0
  236. package/dist/Fx/combinators/withSpan.d.ts +35 -1
  237. package/dist/Fx/combinators/withSpan.d.ts.map +1 -1
  238. package/dist/Fx/combinators/withSpan.js +34 -3
  239. package/dist/Fx/combinators/zip.d.ts +60 -0
  240. package/dist/Fx/combinators/zip.d.ts.map +1 -1
  241. package/dist/Fx/combinators/zip.js +60 -0
  242. package/dist/Fx/constructors/at.d.ts +20 -0
  243. package/dist/Fx/constructors/at.d.ts.map +1 -1
  244. package/dist/Fx/constructors/at.js +20 -0
  245. package/dist/Fx/constructors/die.d.ts +21 -0
  246. package/dist/Fx/constructors/die.d.ts.map +1 -1
  247. package/dist/Fx/constructors/die.js +21 -0
  248. package/dist/Fx/constructors/empty.d.ts +18 -0
  249. package/dist/Fx/constructors/empty.d.ts.map +1 -1
  250. package/dist/Fx/constructors/empty.js +18 -0
  251. package/dist/Fx/constructors/fail.d.ts +21 -0
  252. package/dist/Fx/constructors/fail.d.ts.map +1 -1
  253. package/dist/Fx/constructors/fail.js +21 -0
  254. package/dist/Fx/constructors/failCause.d.ts +22 -0
  255. package/dist/Fx/constructors/failCause.d.ts.map +1 -1
  256. package/dist/Fx/constructors/failCause.js +22 -0
  257. package/dist/Fx/constructors/fn.d.ts +113 -13
  258. package/dist/Fx/constructors/fn.d.ts.map +1 -1
  259. package/dist/Fx/constructors/fn.js +36 -0
  260. package/dist/Fx/constructors/fromEffect.d.ts +43 -1
  261. package/dist/Fx/constructors/fromEffect.d.ts.map +1 -1
  262. package/dist/Fx/constructors/fromEffect.js +43 -1
  263. package/dist/Fx/constructors/fromFailures.d.ts +24 -0
  264. package/dist/Fx/constructors/fromFailures.d.ts.map +1 -1
  265. package/dist/Fx/constructors/fromFailures.js +24 -0
  266. package/dist/Fx/constructors/fromIterable.d.ts +22 -0
  267. package/dist/Fx/constructors/fromIterable.d.ts.map +1 -1
  268. package/dist/Fx/constructors/fromIterable.js +22 -0
  269. package/dist/Fx/constructors/fromSchedule.d.ts +23 -0
  270. package/dist/Fx/constructors/fromSchedule.d.ts.map +1 -1
  271. package/dist/Fx/constructors/fromSchedule.js +25 -2
  272. package/dist/Fx/constructors/index.d.ts +2 -1
  273. package/dist/Fx/constructors/index.d.ts.map +1 -1
  274. package/dist/Fx/constructors/index.js +2 -1
  275. package/dist/Fx/constructors/interrupt.d.ts +21 -1
  276. package/dist/Fx/constructors/interrupt.d.ts.map +1 -1
  277. package/dist/Fx/constructors/interrupt.js +21 -1
  278. package/dist/Fx/constructors/make.d.ts +146 -1
  279. package/dist/Fx/constructors/make.d.ts.map +1 -1
  280. package/dist/Fx/constructors/make.js +54 -3
  281. package/dist/Fx/constructors/periodic.d.ts +29 -0
  282. package/dist/Fx/constructors/periodic.d.ts.map +1 -1
  283. package/dist/Fx/constructors/periodic.js +29 -0
  284. package/dist/Fx/constructors/succeed.d.ts +75 -3
  285. package/dist/Fx/constructors/succeed.d.ts.map +1 -1
  286. package/dist/Fx/constructors/succeed.js +75 -3
  287. package/dist/Fx/constructors/suspend.d.ts +28 -0
  288. package/dist/Fx/constructors/suspend.d.ts.map +1 -1
  289. package/dist/Fx/constructors/suspend.js +28 -0
  290. package/dist/Fx/constructors/sync.d.ts +32 -0
  291. package/dist/Fx/constructors/sync.d.ts.map +1 -0
  292. package/dist/Fx/constructors/sync.js +32 -0
  293. package/dist/Fx/internal/DeferredRef.d.ts +259 -7
  294. package/dist/Fx/internal/DeferredRef.d.ts.map +1 -1
  295. package/dist/Fx/internal/DeferredRef.js +260 -9
  296. package/dist/Fx/internal/UnionToTuple.d.ts +22 -0
  297. package/dist/Fx/internal/UnionToTuple.d.ts.map +1 -1
  298. package/dist/Fx/internal/diff.d.ts +586 -0
  299. package/dist/Fx/internal/diff.d.ts.map +1 -1
  300. package/dist/Fx/internal/diff.js +120 -9
  301. package/dist/Fx/internal/effectableEvaluateKey.d.ts +30 -0
  302. package/dist/Fx/internal/effectableEvaluateKey.d.ts.map +1 -0
  303. package/dist/Fx/internal/effectableEvaluateKey.js +29 -0
  304. package/dist/Fx/internal/effectableWithOverride.d.ts +55 -0
  305. package/dist/Fx/internal/effectableWithOverride.d.ts.map +1 -0
  306. package/dist/Fx/internal/effectableWithOverride.js +46 -0
  307. package/dist/Fx/internal/equivalence.d.ts +29 -0
  308. package/dist/Fx/internal/equivalence.d.ts.map +1 -1
  309. package/dist/Fx/internal/equivalence.js +29 -0
  310. package/dist/Fx/internal/multicast.d.ts +145 -2
  311. package/dist/Fx/internal/multicast.d.ts.map +1 -1
  312. package/dist/Fx/internal/multicast.js +146 -4
  313. package/dist/Fx/internal/ring-buffer.d.ts +149 -0
  314. package/dist/Fx/internal/ring-buffer.d.ts.map +1 -1
  315. package/dist/Fx/internal/ring-buffer.js +155 -0
  316. package/dist/Fx/internal/scope.d.ts +184 -0
  317. package/dist/Fx/internal/scope.d.ts.map +1 -1
  318. package/dist/Fx/internal/scope.js +150 -0
  319. package/dist/Fx/internal/yieldable.d.ts +117 -2
  320. package/dist/Fx/internal/yieldable.d.ts.map +1 -1
  321. package/dist/Fx/internal/yieldable.js +86 -3
  322. package/dist/Fx/run/collect.d.ts +89 -0
  323. package/dist/Fx/run/collect.d.ts.map +1 -1
  324. package/dist/Fx/run/collect.js +90 -1
  325. package/dist/Fx/run/first.d.ts +22 -0
  326. package/dist/Fx/run/first.d.ts.map +1 -1
  327. package/dist/Fx/run/first.js +22 -0
  328. package/dist/Fx/run/fork.d.ts +50 -0
  329. package/dist/Fx/run/fork.d.ts.map +1 -1
  330. package/dist/Fx/run/fork.js +50 -0
  331. package/dist/Fx/run/observe.d.ts +106 -0
  332. package/dist/Fx/run/observe.d.ts.map +1 -1
  333. package/dist/Fx/run/observe.js +106 -0
  334. package/dist/Fx/run/runPromise.d.ts +43 -0
  335. package/dist/Fx/run/runPromise.d.ts.map +1 -1
  336. package/dist/Fx/run/runPromise.js +43 -0
  337. package/dist/Fx/stream.d.ts +92 -0
  338. package/dist/Fx/stream.d.ts.map +1 -1
  339. package/dist/Fx/stream.js +60 -1
  340. package/dist/Push/Push.d.ts +1216 -91
  341. package/dist/Push/Push.d.ts.map +1 -1
  342. package/dist/Push/Push.js +1012 -83
  343. package/dist/RefArray.d.ts +2 -0
  344. package/dist/RefArray.d.ts.map +1 -0
  345. package/dist/RefArray.js +1 -0
  346. package/dist/RefBigDecimal.d.ts +2 -0
  347. package/dist/RefBigDecimal.d.ts.map +1 -0
  348. package/dist/RefBigDecimal.js +1 -0
  349. package/dist/RefBigInt.d.ts +2 -0
  350. package/dist/RefBigInt.d.ts.map +1 -0
  351. package/dist/RefBigInt.js +1 -0
  352. package/dist/RefBoolean.d.ts +2 -0
  353. package/dist/RefBoolean.d.ts.map +1 -0
  354. package/dist/RefBoolean.js +1 -0
  355. package/dist/RefCause.d.ts +2 -0
  356. package/dist/RefCause.d.ts.map +1 -0
  357. package/dist/RefCause.js +1 -0
  358. package/dist/RefChunk.d.ts +2 -0
  359. package/dist/RefChunk.d.ts.map +1 -0
  360. package/dist/RefChunk.js +1 -0
  361. package/dist/RefDateTime.d.ts +2 -0
  362. package/dist/RefDateTime.d.ts.map +1 -0
  363. package/dist/RefDateTime.js +1 -0
  364. package/dist/RefDuration.d.ts +2 -0
  365. package/dist/RefDuration.d.ts.map +1 -0
  366. package/dist/RefDuration.js +1 -0
  367. package/dist/RefGraph.d.ts +2 -0
  368. package/dist/RefGraph.d.ts.map +1 -0
  369. package/dist/RefGraph.js +1 -0
  370. package/dist/RefHashMap.d.ts +2 -0
  371. package/dist/RefHashMap.d.ts.map +1 -0
  372. package/dist/RefHashMap.js +1 -0
  373. package/dist/RefHashRing.d.ts +2 -0
  374. package/dist/RefHashRing.d.ts.map +1 -0
  375. package/dist/RefHashRing.js +1 -0
  376. package/dist/RefHashSet.d.ts +2 -0
  377. package/dist/RefHashSet.d.ts.map +1 -0
  378. package/dist/RefHashSet.js +1 -0
  379. package/dist/RefIterable.d.ts +2 -0
  380. package/dist/RefIterable.d.ts.map +1 -0
  381. package/dist/RefIterable.js +1 -0
  382. package/dist/RefOption.d.ts +2 -0
  383. package/dist/RefOption.d.ts.map +1 -0
  384. package/dist/RefOption.js +1 -0
  385. package/dist/RefRecord.d.ts +2 -0
  386. package/dist/RefRecord.d.ts.map +1 -0
  387. package/dist/RefRecord.js +1 -0
  388. package/dist/RefResult.d.ts +2 -0
  389. package/dist/RefResult.d.ts.map +1 -0
  390. package/dist/RefResult.js +1 -0
  391. package/dist/RefString.d.ts +2 -0
  392. package/dist/RefString.d.ts.map +1 -0
  393. package/dist/RefString.js +1 -0
  394. package/dist/RefStruct.d.ts +2 -0
  395. package/dist/RefStruct.d.ts.map +1 -0
  396. package/dist/RefStruct.js +1 -0
  397. package/dist/RefSubject/Hydration.d.ts +504 -0
  398. package/dist/RefSubject/Hydration.d.ts.map +1 -0
  399. package/dist/RefSubject/Hydration.js +300 -0
  400. package/dist/RefSubject/RefArray.d.ts +351 -4
  401. package/dist/RefSubject/RefArray.d.ts.map +1 -1
  402. package/dist/RefSubject/RefArray.js +339 -3
  403. package/dist/RefSubject/RefBigDecimal.d.ts +221 -1
  404. package/dist/RefSubject/RefBigDecimal.d.ts.map +1 -1
  405. package/dist/RefSubject/RefBigDecimal.js +210 -1
  406. package/dist/RefSubject/RefBigInt.d.ts +166 -1
  407. package/dist/RefSubject/RefBigInt.d.ts.map +1 -1
  408. package/dist/RefSubject/RefBigInt.js +155 -1
  409. package/dist/RefSubject/RefBoolean.d.ts +166 -1
  410. package/dist/RefSubject/RefBoolean.d.ts.map +1 -1
  411. package/dist/RefSubject/RefBoolean.js +155 -1
  412. package/dist/RefSubject/RefCause.d.ts +122 -1
  413. package/dist/RefSubject/RefCause.d.ts.map +1 -1
  414. package/dist/RefSubject/RefCause.js +111 -1
  415. package/dist/RefSubject/RefChunk.d.ts +406 -1
  416. package/dist/RefSubject/RefChunk.d.ts.map +1 -1
  417. package/dist/RefSubject/RefChunk.js +394 -0
  418. package/dist/RefSubject/RefDateTime.d.ts +122 -1
  419. package/dist/RefSubject/RefDateTime.d.ts.map +1 -1
  420. package/dist/RefSubject/RefDateTime.js +111 -1
  421. package/dist/RefSubject/RefDuration.d.ts +155 -1
  422. package/dist/RefSubject/RefDuration.d.ts.map +1 -1
  423. package/dist/RefSubject/RefDuration.js +144 -1
  424. package/dist/RefSubject/RefGraph.d.ts +320 -6
  425. package/dist/RefSubject/RefGraph.d.ts.map +1 -1
  426. package/dist/RefSubject/RefGraph.js +303 -0
  427. package/dist/RefSubject/RefHashMap.d.ts +296 -1
  428. package/dist/RefSubject/RefHashMap.d.ts.map +1 -1
  429. package/dist/RefSubject/RefHashMap.js +284 -0
  430. package/dist/RefSubject/RefHashRing.d.ts +146 -2
  431. package/dist/RefSubject/RefHashRing.d.ts.map +1 -1
  432. package/dist/RefSubject/RefHashRing.js +133 -0
  433. package/dist/RefSubject/RefHashSet.d.ts +230 -1
  434. package/dist/RefSubject/RefHashSet.d.ts.map +1 -1
  435. package/dist/RefSubject/RefHashSet.js +218 -0
  436. package/dist/RefSubject/RefIterable.d.ts +327 -1
  437. package/dist/RefSubject/RefIterable.d.ts.map +1 -1
  438. package/dist/RefSubject/RefIterable.js +315 -0
  439. package/dist/RefSubject/RefOption.d.ts +144 -1
  440. package/dist/RefSubject/RefOption.d.ts.map +1 -1
  441. package/dist/RefSubject/RefOption.js +133 -1
  442. package/dist/RefSubject/RefRecord.d.ts +339 -1
  443. package/dist/RefSubject/RefRecord.d.ts.map +1 -1
  444. package/dist/RefSubject/RefRecord.js +327 -0
  445. package/dist/RefSubject/RefResult.d.ts +155 -23
  446. package/dist/RefSubject/RefResult.d.ts.map +1 -1
  447. package/dist/RefSubject/RefResult.js +122 -1
  448. package/dist/RefSubject/RefString.d.ts +188 -1
  449. package/dist/RefSubject/RefString.d.ts.map +1 -1
  450. package/dist/RefSubject/RefString.js +177 -1
  451. package/dist/RefSubject/RefStruct.d.ts +156 -1
  452. package/dist/RefSubject/RefStruct.d.ts.map +1 -1
  453. package/dist/RefSubject/RefStruct.js +145 -1
  454. package/dist/RefSubject/RefSubject.d.ts +1166 -13
  455. package/dist/RefSubject/RefSubject.d.ts.map +1 -1
  456. package/dist/RefSubject/RefSubject.js +843 -51
  457. package/dist/RefSubject/RefTrie.d.ts +290 -4
  458. package/dist/RefSubject/RefTrie.d.ts.map +1 -1
  459. package/dist/RefSubject/RefTrie.js +278 -3
  460. package/dist/RefSubject/RefTuple.d.ts +117 -1
  461. package/dist/RefSubject/RefTuple.d.ts.map +1 -1
  462. package/dist/RefSubject/RefTuple.js +106 -1
  463. package/dist/RefSubject/index.d.ts +1 -0
  464. package/dist/RefSubject/index.d.ts.map +1 -1
  465. package/dist/RefSubject/index.js +1 -0
  466. package/dist/RefSubject.d.ts +2 -1
  467. package/dist/RefSubject.d.ts.map +1 -1
  468. package/dist/RefSubject.js +2 -1
  469. package/dist/RefTrie.d.ts +2 -0
  470. package/dist/RefTrie.d.ts.map +1 -0
  471. package/dist/RefTrie.js +1 -0
  472. package/dist/RefTuple.d.ts +2 -0
  473. package/dist/RefTuple.d.ts.map +1 -0
  474. package/dist/RefTuple.js +1 -0
  475. package/dist/Sink/Sink.d.ts +381 -10
  476. package/dist/Sink/Sink.d.ts.map +1 -1
  477. package/dist/Sink/Sink.js +49 -2
  478. package/dist/Sink/combinators.d.ts +731 -2
  479. package/dist/Sink/combinators.d.ts.map +1 -1
  480. package/dist/Sink/combinators.js +706 -4
  481. package/dist/Subject/Subject.d.ts +1013 -19
  482. package/dist/Subject/Subject.d.ts.map +1 -1
  483. package/dist/Subject/Subject.js +901 -36
  484. package/dist/Versioned/Versioned.d.ts +424 -7
  485. package/dist/Versioned/Versioned.d.ts.map +1 -1
  486. package/dist/Versioned/Versioned.js +238 -12
  487. package/dist/index.d.ts +22 -3
  488. package/dist/index.d.ts.map +1 -1
  489. package/dist/index.js +22 -3
  490. package/package.json +123 -14
  491. package/dist/Fx/constructors/fromYieldable.d.ts +0 -12
  492. package/dist/Fx/constructors/fromYieldable.d.ts.map +0 -1
  493. package/dist/Fx/constructors/fromYieldable.js +0 -12
  494. package/src/Fx/Fx.ts +0 -164
  495. package/src/Fx/TypeId.ts +0 -25
  496. package/src/Fx/combinators/additive.ts +0 -142
  497. package/src/Fx/combinators/catch.ts +0 -416
  498. package/src/Fx/combinators/causes.ts +0 -23
  499. package/src/Fx/combinators/changesWithEffect.ts +0 -66
  500. package/src/Fx/combinators/compact.ts +0 -15
  501. package/src/Fx/combinators/continueWith.ts +0 -78
  502. package/src/Fx/combinators/dropUntil.ts +0 -47
  503. package/src/Fx/combinators/ensuring.ts +0 -23
  504. package/src/Fx/combinators/exhaustLatestMap.ts +0 -74
  505. package/src/Fx/combinators/exhaustLatestMapEffect.ts +0 -25
  506. package/src/Fx/combinators/exhaustMap.ts +0 -36
  507. package/src/Fx/combinators/exhaustMapEffect.ts +0 -23
  508. package/src/Fx/combinators/exit.ts +0 -15
  509. package/src/Fx/combinators/filter.ts +0 -22
  510. package/src/Fx/combinators/filterEffect.ts +0 -31
  511. package/src/Fx/combinators/filterMap.ts +0 -23
  512. package/src/Fx/combinators/filterMapEffect.ts +0 -32
  513. package/src/Fx/combinators/filterMapLoop.ts +0 -35
  514. package/src/Fx/combinators/filterMapLoopCause.ts +0 -36
  515. package/src/Fx/combinators/filterMapLoopCauseEffect.ts +0 -46
  516. package/src/Fx/combinators/filterMapLoopEffect.ts +0 -36
  517. package/src/Fx/combinators/flatMap.ts +0 -51
  518. package/src/Fx/combinators/flatMapConcurrently.ts +0 -39
  519. package/src/Fx/combinators/flatMapConcurrentlyEffect.ts +0 -26
  520. package/src/Fx/combinators/flatMapEffect.ts +0 -42
  521. package/src/Fx/combinators/flip.ts +0 -14
  522. package/src/Fx/combinators/gen.ts +0 -24
  523. package/src/Fx/combinators/genScoped.ts +0 -24
  524. package/src/Fx/combinators/index.ts +0 -61
  525. package/src/Fx/combinators/keyed.ts +0 -369
  526. package/src/Fx/combinators/loop.ts +0 -27
  527. package/src/Fx/combinators/loopCause.ts +0 -34
  528. package/src/Fx/combinators/loopCauseEffect.ts +0 -36
  529. package/src/Fx/combinators/loopEffect.ts +0 -34
  530. package/src/Fx/combinators/map.ts +0 -22
  531. package/src/Fx/combinators/mapBoth.ts +0 -40
  532. package/src/Fx/combinators/mapEffect.ts +0 -32
  533. package/src/Fx/combinators/mapError.ts +0 -28
  534. package/src/Fx/combinators/mergeAll.ts +0 -22
  535. package/src/Fx/combinators/mergeOrdered.ts +0 -123
  536. package/src/Fx/combinators/onError.ts +0 -40
  537. package/src/Fx/combinators/onExit.ts +0 -82
  538. package/src/Fx/combinators/onInterrupt.ts +0 -87
  539. package/src/Fx/combinators/provide.ts +0 -124
  540. package/src/Fx/combinators/result.ts +0 -39
  541. package/src/Fx/combinators/scan.ts +0 -82
  542. package/src/Fx/combinators/skip.ts +0 -41
  543. package/src/Fx/combinators/skipRepeats.ts +0 -15
  544. package/src/Fx/combinators/skipRepeatsWith.ts +0 -40
  545. package/src/Fx/combinators/skipWhile.ts +0 -100
  546. package/src/Fx/combinators/slice.ts +0 -55
  547. package/src/Fx/combinators/switchMap.ts +0 -55
  548. package/src/Fx/combinators/switchMapEffect.ts +0 -25
  549. package/src/Fx/combinators/take.ts +0 -38
  550. package/src/Fx/combinators/takeUntil.ts +0 -88
  551. package/src/Fx/combinators/takeWhile.ts +0 -47
  552. package/src/Fx/combinators/tapEffect.ts +0 -39
  553. package/src/Fx/combinators/tuple.ts +0 -79
  554. package/src/Fx/combinators/unwrap.ts +0 -21
  555. package/src/Fx/combinators/unwrapScoped.ts +0 -26
  556. package/src/Fx/combinators/when.ts +0 -64
  557. package/src/Fx/combinators/withSpan.ts +0 -24
  558. package/src/Fx/combinators/zip.ts +0 -175
  559. package/src/Fx/constructors/at.ts +0 -23
  560. package/src/Fx/constructors/die.ts +0 -17
  561. package/src/Fx/constructors/empty.ts +0 -10
  562. package/src/Fx/constructors/fail.ts +0 -14
  563. package/src/Fx/constructors/failCause.ts +0 -14
  564. package/src/Fx/constructors/fn.ts +0 -245
  565. package/src/Fx/constructors/fromEffect.ts +0 -24
  566. package/src/Fx/constructors/fromFailures.ts +0 -19
  567. package/src/Fx/constructors/fromIterable.ts +0 -15
  568. package/src/Fx/constructors/fromSchedule.ts +0 -18
  569. package/src/Fx/constructors/fromYieldable.ts +0 -17
  570. package/src/Fx/constructors/index.ts +0 -15
  571. package/src/Fx/constructors/interrupt.ts +0 -13
  572. package/src/Fx/constructors/make.ts +0 -103
  573. package/src/Fx/constructors/periodic.ts +0 -15
  574. package/src/Fx/constructors/succeed.ts +0 -37
  575. package/src/Fx/constructors/suspend.ts +0 -6
  576. package/src/Fx/index.ts +0 -6
  577. package/src/Fx/internal/DeferredRef.ts +0 -87
  578. package/src/Fx/internal/UnionToTuple.ts +0 -12
  579. package/src/Fx/internal/diff.ts +0 -191
  580. package/src/Fx/internal/equivalence.ts +0 -12
  581. package/src/Fx/internal/multicast.ts +0 -51
  582. package/src/Fx/internal/ring-buffer.ts +0 -60
  583. package/src/Fx/internal/scope.ts +0 -58
  584. package/src/Fx/internal/yieldable.ts +0 -31
  585. package/src/Fx/run/collect.ts +0 -79
  586. package/src/Fx/run/first.ts +0 -20
  587. package/src/Fx/run/fork.ts +0 -40
  588. package/src/Fx/run/index.ts +0 -5
  589. package/src/Fx/run/observe.ts +0 -114
  590. package/src/Fx/run/runPromise.ts +0 -32
  591. package/src/Fx/stream.ts +0 -42
  592. package/src/Fx.additive-combinators.test.ts +0 -126
  593. package/src/Fx.catch-additive.test.ts +0 -206
  594. package/src/Fx.catch.test.ts +0 -60
  595. package/src/Fx.dropUntil.test.ts +0 -61
  596. package/src/Fx.fn.test.ts +0 -51
  597. package/src/Fx.lifecycle.test.ts +0 -79
  598. package/src/Fx.mapError-mapBoth.test.ts +0 -101
  599. package/src/Fx.provide-combinators.test.ts +0 -94
  600. package/src/Fx.result-changesWithEffect.test.ts +0 -112
  601. package/src/Fx.scan.test.ts +0 -73
  602. package/src/Fx.takeWhile-skipWhile.test.ts +0 -84
  603. package/src/Fx.test.ts +0 -71
  604. package/src/Fx.ts +0 -1
  605. package/src/Fx.zip-merge-additive.test.ts +0 -171
  606. package/src/Fx.zip.test.ts +0 -133
  607. package/src/Push/Push.ts +0 -1093
  608. package/src/Push/index.ts +0 -1
  609. package/src/Push.additive.test.ts +0 -256
  610. package/src/Push.test.ts +0 -26
  611. package/src/Push.ts +0 -1
  612. package/src/RefSubject/RefArray.ts +0 -516
  613. package/src/RefSubject/RefBigDecimal.test.ts +0 -56
  614. package/src/RefSubject/RefBigDecimal.ts +0 -295
  615. package/src/RefSubject/RefBigInt.test.ts +0 -56
  616. package/src/RefSubject/RefBigInt.ts +0 -189
  617. package/src/RefSubject/RefBoolean.test.ts +0 -57
  618. package/src/RefSubject/RefBoolean.ts +0 -185
  619. package/src/RefSubject/RefCause.test.ts +0 -53
  620. package/src/RefSubject/RefCause.ts +0 -146
  621. package/src/RefSubject/RefChunk.ts +0 -516
  622. package/src/RefSubject/RefDateTime.test.ts +0 -43
  623. package/src/RefSubject/RefDateTime.ts +0 -261
  624. package/src/RefSubject/RefDuration.test.ts +0 -49
  625. package/src/RefSubject/RefDuration.ts +0 -188
  626. package/src/RefSubject/RefGraph.ts +0 -649
  627. package/src/RefSubject/RefHashMap.ts +0 -474
  628. package/src/RefSubject/RefHashRing.ts +0 -262
  629. package/src/RefSubject/RefHashSet.ts +0 -308
  630. package/src/RefSubject/RefIterable.ts +0 -454
  631. package/src/RefSubject/RefOption.test.ts +0 -67
  632. package/src/RefSubject/RefOption.ts +0 -193
  633. package/src/RefSubject/RefRecord.ts +0 -621
  634. package/src/RefSubject/RefResult.test.ts +0 -63
  635. package/src/RefSubject/RefResult.ts +0 -209
  636. package/src/RefSubject/RefString.test.ts +0 -61
  637. package/src/RefSubject/RefString.ts +0 -256
  638. package/src/RefSubject/RefStruct.test.ts +0 -60
  639. package/src/RefSubject/RefStruct.ts +0 -253
  640. package/src/RefSubject/RefSubject.ts +0 -2642
  641. package/src/RefSubject/RefTrie.ts +0 -365
  642. package/src/RefSubject/RefTuple.test.ts +0 -60
  643. package/src/RefSubject/RefTuple.ts +0 -231
  644. package/src/RefSubject/index.ts +0 -21
  645. package/src/RefSubject.additive-parity.test.ts +0 -101
  646. package/src/RefSubject.test.ts +0 -65
  647. package/src/RefSubject.ts +0 -1
  648. package/src/Sink/Sink.ts +0 -159
  649. package/src/Sink/combinators.ts +0 -1115
  650. package/src/Sink/index.ts +0 -2
  651. package/src/Sink.combinators.test.ts +0 -88
  652. package/src/Sink.reduce-collect-head-last.test.ts +0 -107
  653. package/src/Sink.ts +0 -1
  654. package/src/Subject/Subject.ts +0 -440
  655. package/src/Subject/index.ts +0 -1
  656. package/src/Subject.test.ts +0 -47
  657. package/src/Subject.ts +0 -1
  658. package/src/Versioned/Versioned.ts +0 -595
  659. package/src/Versioned/index.ts +0 -1
  660. package/src/Versioned.filterMap.test.ts +0 -91
  661. package/src/Versioned.test.ts +0 -23
  662. package/src/Versioned.ts +0 -1
  663. package/src/index.ts +0 -7
@@ -1,14 +1,93 @@
1
1
  import * as Effect from "effect/Effect";
2
2
  import * as Fiber from "effect/Fiber";
3
- export class MulticastEffect extends Effect.YieldableClass {
3
+ import { EffectableWithOverride } from "./effectableWithOverride.js";
4
+ /** An Effect-compatible wrapper that joins the currently recorded detached execution.
5
+ *
6
+ * @remarks
7
+ * ## Why
8
+ *
9
+ * Some sampled state computations are expensive but may be requested concurrently. The wrapper
10
+ * lets later callers join the same in-flight fiber, preserving one result, typed failure, and Cause
11
+ * for that run. After completion the recorded fiber is cleared and a later call starts fresh work.
12
+ *
13
+ * ## Ownership and lifetime
14
+ *
15
+ * The first caller starts `effect` in a detached fiber using that caller's services. Interrupting a
16
+ * joining caller stops only its wait; the detached computation continues until completion or an
17
+ * explicit `interrupt`. A directly constructed instance has no automatic finalizer. Prefer
18
+ * `makeMulticastEffect` when a Scope should interrupt remaining work.
19
+ *
20
+ * ## Concurrency and interruption
21
+ *
22
+ * Calls made after `_fiber` is recorded join that fiber. Recording uses mutable instance state
23
+ * rather than a semaphore, so this is a low-level primitive whose callers must not assume a stronger
24
+ * atomic-start guarantee than the implementation provides. Completion or explicit interruption
25
+ * clears the matching record; all joiners observe the fiber's exact success, typed error, defect,
26
+ * or interruption.
27
+ *
28
+ * This path is published for advanced state implementations and may change between prereleases.
29
+ *
30
+ * @example
31
+ * ```ts
32
+ * import { MulticastEffect } from "@typed/fx/Fx/internal/multicast"
33
+ * import * as Effect from "effect/Effect"
34
+ *
35
+ * const sharedWhileRunning = new MulticastEffect(Effect.succeed("ready"))
36
+ * const value = Effect.runSync(sharedWhileRunning)
37
+ * ```
38
+ *
39
+ * @since 1.0.0
40
+ * @category advanced
41
+ * @stability internal-but-published
42
+ */
43
+ export class MulticastEffect extends EffectableWithOverride {
4
44
  _fiber = null;
45
+ /** Underlying computation started when no recorded fiber is running.
46
+ *
47
+ * @remarks
48
+ * ## Why
49
+ *
50
+ * Keeping the source Effect visible lets advanced implementations inspect or compose the exact
51
+ * work whose in-flight execution is shared.
52
+ *
53
+ * ## Ownership and lifetime
54
+ *
55
+ * The wrapper retains this immutable Effect description; resources begin only when it is run.
56
+ *
57
+ * @since 1.0.0
58
+ * @category effects
59
+ */
5
60
  effect;
61
+ /** Creates a wrapper without attaching its future detached fiber to a Scope.
62
+ *
63
+ * @remarks
64
+ * ## Why
65
+ *
66
+ * Direct construction supports owners such as Versioned that already expose an explicit
67
+ * interruption boundary and do not need acquisition itself to require Scope.
68
+ *
69
+ * ## Ownership and lifetime
70
+ *
71
+ * Construction retains only the Effect description and starts no work. The first evaluation may
72
+ * start a detached fiber, which remains this instance's responsibility until it completes or
73
+ * `interrupt` is run. Use `makeMulticastEffect` when Scope closure should provide that cleanup.
74
+ *
75
+ * @example
76
+ * ```ts
77
+ * import { MulticastEffect } from "@typed/fx/Fx/internal/multicast"
78
+ * import * as Effect from "effect/Effect"
79
+ *
80
+ * const shared = new MulticastEffect(Effect.succeed("ready"))
81
+ * const result = Effect.runSync(shared)
82
+ * ```
83
+ *
84
+ * @since 1.0.0
85
+ * @category constructors
86
+ */
6
87
  constructor(effect) {
7
88
  super();
8
89
  this.effect = effect;
9
- }
10
- asEffect() {
11
- return Effect.suspend(() => {
90
+ this.override = Effect.suspend(() => {
12
91
  if (this._fiber) {
13
92
  return Fiber.join(this._fiber);
14
93
  }
@@ -17,6 +96,38 @@ export class MulticastEffect extends Effect.YieldableClass {
17
96
  }
18
97
  });
19
98
  }
99
+ /** Effect view that joins the recorded fiber or starts and records a detached one.
100
+ *
101
+ * @remarks
102
+ * ## Why
103
+ *
104
+ * Effect evaluation is the common entry point through which concurrent callers share work.
105
+ *
106
+ * ## Ownership and lifetime
107
+ *
108
+ * A newly started fiber is detached from the joining caller and remains recorded until completion
109
+ * or explicit interruption.
110
+ *
111
+ * @since 1.0.0
112
+ * @category effects
113
+ */
114
+ override;
115
+ /** Interrupts the currently recorded fiber as the calling fiber and clears the record.
116
+ *
117
+ * @remarks
118
+ * ## Why
119
+ *
120
+ * If no fiber is recorded, the Effect succeeds immediately. Interruption of the child is awaited,
121
+ * and cleanup clears the field even when interruption observation itself is interrupted.
122
+ *
123
+ * ## Ownership and lifetime
124
+ *
125
+ * The Effect owns only this interruption action; it does not prevent a later execution from
126
+ * starting a fresh fiber.
127
+ *
128
+ * @since 1.0.0
129
+ * @category lifecycle
130
+ */
20
131
  interrupt() {
21
132
  return Effect.withFiber((fiber) => {
22
133
  if (this._fiber) {
@@ -29,4 +140,35 @@ export class MulticastEffect extends Effect.YieldableClass {
29
140
  });
30
141
  }
31
142
  }
143
+ /** Acquires a scoped `MulticastEffect` whose finalizer interrupts recorded work.
144
+ *
145
+ * @remarks
146
+ * ## Why
147
+ *
148
+ * The scoped constructor makes the detached-fiber lifetime explicit and prevents a computation
149
+ * from surviving the application lifetime that requested sharing.
150
+ *
151
+ * ## Ownership and lifetime
152
+ *
153
+ * Acquisition allocates the wrapper but does not start `effect`. The first execution starts work;
154
+ * closing the required Scope calls `interrupt` and waits for the recorded fiber to terminate. The
155
+ * original effect's `E` and `R` channels are preserved when the wrapper is executed.
156
+ *
157
+ * @example
158
+ * ```ts
159
+ * import { makeMulticastEffect } from "@typed/fx/Fx/internal/multicast"
160
+ * import * as Effect from "effect/Effect"
161
+ *
162
+ * const program = Effect.gen(function* () {
163
+ * const shared = yield* makeMulticastEffect(Effect.succeed("ready"))
164
+ * return yield* shared
165
+ * })
166
+ *
167
+ * Effect.runSync(Effect.scoped(program))
168
+ * ```
169
+ *
170
+ * @since 1.0.0
171
+ * @category constructors
172
+ * @stability internal-but-published
173
+ */
32
174
  export const makeMulticastEffect = (effect) => Effect.acquireRelease(Effect.sync(() => new MulticastEffect(effect)), (multicastEffect) => multicastEffect.interrupt());
@@ -1,14 +1,163 @@
1
1
  import { type Effect } from "effect/Effect";
2
+ /** A fixed-capacity FIFO buffer that overwrites its oldest value when full.
3
+ *
4
+ * @remarks
5
+ * ## Why
6
+ *
7
+ * Replay subjects need bounded history with O(1) append cost and deterministic oldest-to-newest
8
+ * replay, without shifting an array on every publication.
9
+ *
10
+ * ## Ownership and lifetime
11
+ *
12
+ * The instance exclusively owns an array of `capacity` slots and retains at most that many values.
13
+ * It acquires no Scope. `clear` replaces the backing array so retained values can be collected;
14
+ * callers decide when that cleanup occurs.
15
+ *
16
+ * ## Errors and complexity
17
+ *
18
+ * Construction throws `Cause.IllegalArgumentError` synchronously unless capacity is an integer from
19
+ * 1 through 4,294,967,295. `push`, `size`, and indexed access are O(1). `forEach` builds and executes
20
+ * an O(size) sequential Effect chain. This published implementation utility may change between
21
+ * prereleases.
22
+ *
23
+ * @example
24
+ * ```ts
25
+ * import { RingBuffer } from "@typed/fx/Fx/internal/ring-buffer"
26
+ * import * as Effect from "effect/Effect"
27
+ *
28
+ * const buffer = new RingBuffer<number>(2)
29
+ * buffer.push(1)
30
+ * buffer.push(2)
31
+ * buffer.push(3)
32
+ * Effect.runSync(buffer.forEach((value) => Effect.sync(() => console.log(value)))) // 2, 3
33
+ * ```
34
+ *
35
+ * @since 1.0.0
36
+ * @category advanced
37
+ * @stability internal-but-published
38
+ */
2
39
  export declare class RingBuffer<A> {
40
+ /** Maximum number of values retained by this buffer.
41
+ *
42
+ * @remarks
43
+ * ## Why
44
+ *
45
+ * A fixed bound makes replay retention and overwrite behavior predictable.
46
+ *
47
+ * ## Ownership and lifetime
48
+ *
49
+ * Immutable scalar metadata retained for the instance lifetime.
50
+ *
51
+ * @since 1.0.0
52
+ * @category state
53
+ */
3
54
  readonly capacity: number;
55
+ /** Allocates an empty backing array for a validated capacity.
56
+ *
57
+ * @remarks
58
+ * ## Why
59
+ *
60
+ * Validating at the allocation boundary prevents modulo-by-zero behavior, impossible array
61
+ * lengths, and an unbounded replay contract before any value can be retained.
62
+ *
63
+ * ## Ownership and lifetime
64
+ *
65
+ * Construction allocates and exclusively owns one sparse array of `capacity` slots. No Scope or
66
+ * Effect is acquired. Invalid capacity is thrown synchronously as `Cause.IllegalArgumentError`,
67
+ * not returned through an Effect error channel.
68
+ *
69
+ * @example
70
+ * ```ts
71
+ * import { RingBuffer } from "@typed/fx/Fx/internal/ring-buffer"
72
+ * import * as Cause from "effect/Cause"
73
+ *
74
+ * const buffer = new RingBuffer<string>(2)
75
+ * buffer.capacity // 2
76
+ *
77
+ * try {
78
+ * new RingBuffer(0)
79
+ * } catch (error) {
80
+ * Cause.isIllegalArgumentError(error) // true
81
+ * }
82
+ * ```
83
+ *
84
+ * @since 1.0.0
85
+ * @category constructors
86
+ */
4
87
  constructor(capacity: number);
5
88
  private _buffer;
6
89
  private _size;
7
90
  private _head;
91
+ /** Current number of retained values, from zero through `capacity`.
92
+ *
93
+ * @remarks
94
+ * ## Why
95
+ *
96
+ * Callers can inspect occupancy without exposing backing-array indices.
97
+ *
98
+ * ## Ownership and lifetime
99
+ *
100
+ * Reading the counter is O(1) and acquires no resources.
101
+ *
102
+ * @since 1.0.0
103
+ * @category state
104
+ */
8
105
  get size(): number;
106
+ /** Appends one value, overwriting the oldest value when the buffer is full.
107
+ *
108
+ * @remarks
109
+ * ## Why
110
+ *
111
+ * The operation mutates this buffer in O(1) time and performs no Effect or cleanup action.
112
+ *
113
+ * ## Ownership and lifetime
114
+ *
115
+ * The buffer retains `a` until overwrite, `clear`, or collection; an overwritten value is released.
116
+ *
117
+ * @since 1.0.0
118
+ * @category mutations
119
+ */
9
120
  push(a: A): void;
10
121
  private at;
122
+ /** Runs an Effect for each retained value in oldest-to-newest order.
123
+ *
124
+ * @remarks
125
+ * ## Why
126
+ *
127
+ * Effects are sequenced with `flatMap`; failure, defect, or interruption stops later values. The
128
+ * callback receives a zero-based replay index rather than the backing-array index. The method
129
+ * preserves callback errors and services and does not clear the buffer.
130
+ *
131
+ * `_size` and the first callback invocation are captured eagerly when `forEach` is called. For
132
+ * sizes greater than one, later slots are read and their callbacks are invoked lazily as the
133
+ * returned Effect executes. This is deliberately not a snapshot: mutating or clearing the buffer
134
+ * between construction and execution can combine the earlier first Effect with later values from
135
+ * the mutated buffer. Callers that require one coherent replay must not mutate the buffer until
136
+ * the Effect completes.
137
+ *
138
+ * ## Ownership and lifetime
139
+ *
140
+ * The returned Effect borrows the current retained values while executing and owns no additional
141
+ * lifetime after completion.
142
+ *
143
+ * @since 1.0.0
144
+ * @category effects
145
+ */
11
146
  forEach<B, E2, R2>(f: (a: A, i: number) => Effect<B, E2, R2>): Effect<unknown, E2, R2>;
147
+ /** Drops all retained values and resets insertion to the start of a fresh backing array.
148
+ *
149
+ * @remarks
150
+ * ## Why
151
+ *
152
+ * Capacity is unchanged. The operation acquires no Scope and runs synchronously.
153
+ *
154
+ * ## Ownership and lifetime
155
+ *
156
+ * Replacing the array releases every retained value from this instance at once.
157
+ *
158
+ * @since 1.0.0
159
+ * @category mutations
160
+ */
12
161
  clear(): void;
13
162
  }
14
163
  //# sourceMappingURL=ring-buffer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ring-buffer.d.ts","sourceRoot":"","sources":["../../../src/Fx/internal/ring-buffer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,MAAM,EAA0B,MAAM,eAAe,CAAC;AAEpE,qBAAa,UAAU,CAAC,CAAC;IACvB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;gBAEd,QAAQ,EAAE,MAAM;IAK5B,OAAO,CAAC,OAAO,CAAW;IAC1B,OAAO,CAAC,KAAK,CAAK;IAClB,OAAO,CAAC,KAAK,CAAK;IAElB,IAAI,IAAI,WAEP;IAED,IAAI,CAAC,CAAC,EAAE,CAAC;IAQT,OAAO,CAAC,EAAE;IAOV,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC;IAqB5D,KAAK;CAKN"}
1
+ {"version":3,"file":"ring-buffer.d.ts","sourceRoot":"","sources":["../../../src/Fx/internal/ring-buffer.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,MAAM,EAA0B,MAAM,eAAe,CAAC;AAMpE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,qBAAa,UAAU,CAAC,CAAC;IACvB;;;;;;;;;;;;;OAaG;IACH,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAE1B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA+BG;IACH,YAAY,QAAQ,EAAE,MAAM,EAM3B;IAED,OAAO,CAAC,OAAO,CAAW;IAC1B,OAAO,CAAC,KAAK,CAAK;IAClB,OAAO,CAAC,KAAK,CAAK;IAElB;;;;;;;;;;;;;OAaG;IACH,IAAI,IAAI,WAEP;IAED;;;;;;;;;;;;;OAaG;IACH,IAAI,CAAC,CAAC,EAAE,CAAC,QAMR;IAED,OAAO,CAAC,EAAE;IAOV;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACH,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,2BAmB3D;IAED;;;;;;;;;;;;;OAaG;IACH,KAAK,SAIJ;CACF"}
@@ -1,16 +1,133 @@
1
+ import * as Cause from "effect/Cause";
1
2
  import { flatMap, void as void_ } from "effect/Effect";
3
+ const MAX_ARRAY_LENGTH = 4294967295;
4
+ const INVALID_CAPACITY_MESSAGE = "Ring buffer capacity must be an integer from 1 through 4294967295";
5
+ /** A fixed-capacity FIFO buffer that overwrites its oldest value when full.
6
+ *
7
+ * @remarks
8
+ * ## Why
9
+ *
10
+ * Replay subjects need bounded history with O(1) append cost and deterministic oldest-to-newest
11
+ * replay, without shifting an array on every publication.
12
+ *
13
+ * ## Ownership and lifetime
14
+ *
15
+ * The instance exclusively owns an array of `capacity` slots and retains at most that many values.
16
+ * It acquires no Scope. `clear` replaces the backing array so retained values can be collected;
17
+ * callers decide when that cleanup occurs.
18
+ *
19
+ * ## Errors and complexity
20
+ *
21
+ * Construction throws `Cause.IllegalArgumentError` synchronously unless capacity is an integer from
22
+ * 1 through 4,294,967,295. `push`, `size`, and indexed access are O(1). `forEach` builds and executes
23
+ * an O(size) sequential Effect chain. This published implementation utility may change between
24
+ * prereleases.
25
+ *
26
+ * @example
27
+ * ```ts
28
+ * import { RingBuffer } from "@typed/fx/Fx/internal/ring-buffer"
29
+ * import * as Effect from "effect/Effect"
30
+ *
31
+ * const buffer = new RingBuffer<number>(2)
32
+ * buffer.push(1)
33
+ * buffer.push(2)
34
+ * buffer.push(3)
35
+ * Effect.runSync(buffer.forEach((value) => Effect.sync(() => console.log(value)))) // 2, 3
36
+ * ```
37
+ *
38
+ * @since 1.0.0
39
+ * @category advanced
40
+ * @stability internal-but-published
41
+ */
2
42
  export class RingBuffer {
43
+ /** Maximum number of values retained by this buffer.
44
+ *
45
+ * @remarks
46
+ * ## Why
47
+ *
48
+ * A fixed bound makes replay retention and overwrite behavior predictable.
49
+ *
50
+ * ## Ownership and lifetime
51
+ *
52
+ * Immutable scalar metadata retained for the instance lifetime.
53
+ *
54
+ * @since 1.0.0
55
+ * @category state
56
+ */
3
57
  capacity;
58
+ /** Allocates an empty backing array for a validated capacity.
59
+ *
60
+ * @remarks
61
+ * ## Why
62
+ *
63
+ * Validating at the allocation boundary prevents modulo-by-zero behavior, impossible array
64
+ * lengths, and an unbounded replay contract before any value can be retained.
65
+ *
66
+ * ## Ownership and lifetime
67
+ *
68
+ * Construction allocates and exclusively owns one sparse array of `capacity` slots. No Scope or
69
+ * Effect is acquired. Invalid capacity is thrown synchronously as `Cause.IllegalArgumentError`,
70
+ * not returned through an Effect error channel.
71
+ *
72
+ * @example
73
+ * ```ts
74
+ * import { RingBuffer } from "@typed/fx/Fx/internal/ring-buffer"
75
+ * import * as Cause from "effect/Cause"
76
+ *
77
+ * const buffer = new RingBuffer<string>(2)
78
+ * buffer.capacity // 2
79
+ *
80
+ * try {
81
+ * new RingBuffer(0)
82
+ * } catch (error) {
83
+ * Cause.isIllegalArgumentError(error) // true
84
+ * }
85
+ * ```
86
+ *
87
+ * @since 1.0.0
88
+ * @category constructors
89
+ */
4
90
  constructor(capacity) {
91
+ if (!Number.isInteger(capacity) || capacity < 1 || capacity > MAX_ARRAY_LENGTH) {
92
+ throw new Cause.IllegalArgumentError(INVALID_CAPACITY_MESSAGE);
93
+ }
5
94
  this.capacity = capacity;
6
95
  this._buffer = Array(this.capacity);
7
96
  }
8
97
  _buffer;
9
98
  _size = 0;
10
99
  _head = 0;
100
+ /** Current number of retained values, from zero through `capacity`.
101
+ *
102
+ * @remarks
103
+ * ## Why
104
+ *
105
+ * Callers can inspect occupancy without exposing backing-array indices.
106
+ *
107
+ * ## Ownership and lifetime
108
+ *
109
+ * Reading the counter is O(1) and acquires no resources.
110
+ *
111
+ * @since 1.0.0
112
+ * @category state
113
+ */
11
114
  get size() {
12
115
  return this._size;
13
116
  }
117
+ /** Appends one value, overwriting the oldest value when the buffer is full.
118
+ *
119
+ * @remarks
120
+ * ## Why
121
+ *
122
+ * The operation mutates this buffer in O(1) time and performs no Effect or cleanup action.
123
+ *
124
+ * ## Ownership and lifetime
125
+ *
126
+ * The buffer retains `a` until overwrite, `clear`, or collection; an overwritten value is released.
127
+ *
128
+ * @since 1.0.0
129
+ * @category mutations
130
+ */
14
131
  push(a) {
15
132
  this._buffer[this._head] = a;
16
133
  this._head = (this._head + 1) % this.capacity;
@@ -24,6 +141,30 @@ export class RingBuffer {
24
141
  }
25
142
  return this._buffer[(this._head + index) % this.capacity];
26
143
  }
144
+ /** Runs an Effect for each retained value in oldest-to-newest order.
145
+ *
146
+ * @remarks
147
+ * ## Why
148
+ *
149
+ * Effects are sequenced with `flatMap`; failure, defect, or interruption stops later values. The
150
+ * callback receives a zero-based replay index rather than the backing-array index. The method
151
+ * preserves callback errors and services and does not clear the buffer.
152
+ *
153
+ * `_size` and the first callback invocation are captured eagerly when `forEach` is called. For
154
+ * sizes greater than one, later slots are read and their callbacks are invoked lazily as the
155
+ * returned Effect executes. This is deliberately not a snapshot: mutating or clearing the buffer
156
+ * between construction and execution can combine the earlier first Effect with later values from
157
+ * the mutated buffer. Callers that require one coherent replay must not mutate the buffer until
158
+ * the Effect completes.
159
+ *
160
+ * ## Ownership and lifetime
161
+ *
162
+ * The returned Effect borrows the current retained values while executing and owns no additional
163
+ * lifetime after completion.
164
+ *
165
+ * @since 1.0.0
166
+ * @category effects
167
+ */
27
168
  forEach(f) {
28
169
  switch (this._size) {
29
170
  case 0:
@@ -44,6 +185,20 @@ export class RingBuffer {
44
185
  }
45
186
  }
46
187
  }
188
+ /** Drops all retained values and resets insertion to the start of a fresh backing array.
189
+ *
190
+ * @remarks
191
+ * ## Why
192
+ *
193
+ * Capacity is unchanged. The operation acquires no Scope and runs synchronously.
194
+ *
195
+ * ## Ownership and lifetime
196
+ *
197
+ * Replacing the array releases every retained value from this instance at once.
198
+ *
199
+ * @since 1.0.0
200
+ * @category mutations
201
+ */
47
202
  clear() {
48
203
  this._buffer = Array(this.capacity);
49
204
  this._size = 0;