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

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,79 +0,0 @@
1
- import * as Effect from "effect/Effect";
2
- import type * as Fiber from "effect/Fiber";
3
- import { dual } from "effect/Function";
4
- import { take } from "../combinators/take.js";
5
- import type { Fx } from "../Fx.js";
6
- import { observe } from "./observe.js";
7
-
8
- /**
9
- * Collects all values emitted by an `Fx` into an array.
10
- *
11
- * @param fx - The `Fx` to collect values from.
12
- * @returns An `Effect` that produces an array of all values when the `Fx` completes.
13
- * @since 1.0.0
14
- * @category runners
15
- */
16
- export const collectAll = <A, E = never, R = never>(
17
- fx: Fx<A, E, R>,
18
- ): Effect.Effect<ReadonlyArray<A>, E, R> =>
19
- Effect.suspend(() => {
20
- const values: Array<A> = [];
21
-
22
- return fx.pipe(
23
- observe((value) => Effect.sync(() => values.push(value))),
24
- (_) => Effect.map(_.asEffect(), () => values),
25
- );
26
- });
27
-
28
- /**
29
- * Forks the collection of all values from an `Fx`.
30
- *
31
- * @param fx - The `Fx` to collect values from.
32
- * @returns An `Effect` that produces a `Fiber` which computes the array of values.
33
- * @since 1.0.0
34
- * @category runners
35
- */
36
- export const collectAllFork = <A, E = never, R = never>(
37
- fx: Fx<A, E, R>,
38
- ): Effect.Effect<Fiber.Fiber<ReadonlyArray<A>, E>, never, R> =>
39
- Effect.forkChild(collectAll(fx), {
40
- startImmediately: true,
41
- uninterruptible: false,
42
- });
43
-
44
- /**
45
- * Collects the first `n` values emitted by an `Fx` into an array.
46
- *
47
- * @param fx - The `Fx` to collect values from.
48
- * @param upTo - The maximum number of values to collect.
49
- * @returns An `Effect` that produces an array of up to `n` values.
50
- * @since 1.0.0
51
- * @category runners
52
- */
53
- export const collectUpTo: {
54
- (upTo: number): <A, E, R>(fx: Fx<A, E, R>) => Effect.Effect<ReadonlyArray<A>, E, R>;
55
-
56
- <A, E, R>(fx: Fx<A, E, R>, upTo: number): Effect.Effect<ReadonlyArray<A>, E, R>;
57
- } = dual(
58
- 2,
59
- <A, E, R>(fx: Fx<A, E, R>, upTo: number): Effect.Effect<ReadonlyArray<A>, E, R> =>
60
- fx.pipe(take(upTo), collectAll),
61
- );
62
-
63
- /**
64
- * Forks the collection of up to `n` values from an `Fx`.
65
- *
66
- * @param fx - The `Fx` to collect values from.
67
- * @param upTo - The maximum number of values to collect.
68
- * @returns An `Effect` that produces a `Fiber` which computes the array of values.
69
- * @since 1.0.0
70
- * @category runners
71
- */
72
- export const collectUpToFork = <A, E = never, R = never>(
73
- fx: Fx<A, E, R>,
74
- upTo: number,
75
- ): Effect.Effect<Fiber.Fiber<ReadonlyArray<A>, E>, never, R> =>
76
- Effect.forkChild(collectUpTo(fx, upTo), {
77
- startImmediately: true,
78
- uninterruptible: false,
79
- });
@@ -1,20 +0,0 @@
1
- import { head } from "effect/Array";
2
- import type { Effect } from "effect/Effect";
3
- import { map } from "effect/Effect";
4
- import { pipe } from "effect/Function";
5
- import type { Option } from "effect/Option";
6
- import type { Fx } from "../Fx.js";
7
- import { collectUpTo } from "./collect.js";
8
-
9
- /**
10
- * Returns the first value emitted by the `Fx` wrapped in an `Option`.
11
- * If the `Fx` is empty, returns `None`.
12
- *
13
- * @param fx - The `Fx` stream.
14
- * @returns An `Effect` that produces `Some(firstValue)` or `None`.
15
- * @since 1.0.0
16
- * @category runners
17
- */
18
- export function first<A, E, R>(fx: Fx<A, E, R>): Effect<Option<A>, E, R> {
19
- return pipe(fx, collectUpTo(1), map(head));
20
- }
@@ -1,40 +0,0 @@
1
- import type { Effect, RunOptions } from "effect/Effect";
2
- import { forkChild as effectFork, runFork as effectRunFork } from "effect/Effect";
3
- import type { Fiber } from "effect/Fiber";
4
- import type { Fx } from "../Fx.js";
5
- import { drain } from "./observe.js";
6
-
7
- /**
8
- * Forks the execution of an `Fx` into a background fiber.
9
- * The stream will run until it completes or the fiber is interrupted.
10
- *
11
- * @param fx - The `Fx` stream to fork.
12
- * @param options - Configuration for the forked fiber.
13
- * @returns An `Effect` that produces a `Fiber`.
14
- * @since 1.0.0
15
- * @category runners
16
- */
17
- export const fork = <A, E, R>(
18
- fx: Fx<A, E, R>,
19
- options?: {
20
- readonly startImmediately?: boolean;
21
- readonly uninterruptible?: boolean;
22
- },
23
- ): Effect<Fiber<unknown, E>, never, R> =>
24
- effectFork(drain(fx), {
25
- startImmediately: options?.startImmediately ?? true,
26
- uninterruptible: options?.uninterruptible ?? false,
27
- });
28
-
29
- /**
30
- * Runs an `Fx` in a new fiber, using the standard `Effect.runFork`.
31
- * This is useful for integrating with the top-level Effect runtime.
32
- *
33
- * @param fx - The `Fx` stream to run.
34
- * @param options - `RunOptions` for the execution.
35
- * @returns The created `Fiber`.
36
- * @since 1.0.0
37
- * @category runners
38
- */
39
- export const runFork = <A, E>(fx: Fx<A, E>, options?: RunOptions): Fiber<void, E> =>
40
- effectRunFork(drain(fx), options);
@@ -1,5 +0,0 @@
1
- export * from "./collect.js";
2
- export * from "./first.js";
3
- export * from "./fork.js";
4
- export * from "./observe.js";
5
- export * from "./runPromise.js";
@@ -1,114 +0,0 @@
1
- import type { Cause } from "effect/Cause";
2
- import type { Effect } from "effect/Effect";
3
- import {
4
- callback,
5
- catchCause,
6
- failCause,
7
- forkScoped,
8
- isEffect,
9
- matchCauseEffect,
10
- runForkWith,
11
- contextWith,
12
- sync,
13
- void as void_,
14
- } from "effect/Effect";
15
- import { interrupt } from "effect/Fiber";
16
- import { dual } from "effect/Function";
17
- import type { Layer } from "effect/Layer";
18
- import { effectDiscard } from "effect/Layer";
19
- import type { Scope } from "effect/Scope";
20
- import { make } from "../../Sink/Sink.js";
21
- import type { Fx } from "../Fx.js";
22
-
23
- /**
24
- * Observes the values of an `Fx` stream using a callback function.
25
- * The callback can return `void` or an `Effect` which will be executed for each value.
26
- *
27
- * @param fx - The `Fx` stream to observe.
28
- * @param f - The function to call for each emitted value.
29
- * @returns An `Effect` that completes when the stream ends.
30
- * @since 1.0.0
31
- * @category runners
32
- */
33
- export const observe: {
34
- <A, E2 = never, R2 = never>(
35
- f: (value: A) => void | Effect<unknown, E2, R2>,
36
- ): <E, R>(fx: Fx<A, E, R>) => Effect<unknown, E | E2, R | R2>;
37
-
38
- <A, E, R, E2 = never, R2 = never>(
39
- fx: Fx<A, E, R>,
40
- f: (value: A) => void | Effect<unknown, E2, R2>,
41
- ): Effect<unknown, E | E2, R | R2>;
42
- } = dual(
43
- 2,
44
- <A, E, R, E2 = never, R2 = never>(
45
- fx: Fx<A, E, R>,
46
- f: (value: A) => void | Effect<unknown, E2, R2>,
47
- ): Effect<unknown, E | E2, R | R2> =>
48
- contextWith((services) =>
49
- callback<void, E | E2, R | R2>((resume) => {
50
- const onFailure = (cause: Cause<E | E2>) => sync(() => resume(failCause(cause)));
51
- const onSuccess = (value: A) => {
52
- const result = f(value);
53
- return isEffect(result) ? catchCause(result, onFailure) : void_;
54
- };
55
- const onDone = () => sync(() => resume(void_));
56
-
57
- return fx.run(make(onFailure, onSuccess)).pipe(
58
- matchCauseEffect(make(onFailure, onDone)),
59
- runForkWith(services),
60
- interrupt, // Interrupt fiber when callback is interrupted
61
- );
62
- }),
63
- ),
64
- );
65
-
66
- /**
67
- * Runs an `Fx` stream to completion, discarding all values.
68
- * Useful when the side effects of the stream are all that matter.
69
- *
70
- * @param fx - The `Fx` stream to drain.
71
- * @returns An `Effect` that completes when the stream ends.
72
- * @since 1.0.0
73
- * @category runners
74
- */
75
- export const drain = <A, E, R>(fx: Fx<A, E, R>): Effect<void, E, R> => observe(fx, () => void_);
76
-
77
- /**
78
- * Runs an `Fx` stream as a Layer.
79
- * The stream is forked in the background when the layer is acquired.
80
- *
81
- * @param fx - The `Fx` stream to run.
82
- * @returns A `Layer` that manages the background execution of the stream.
83
- * @since 1.0.0
84
- * @category runners
85
- */
86
- export const drainLayer = <A, E, R>(fx: Fx<A, E, R>): Layer<never, E, Exclude<R, Scope>> =>
87
- effectDiscard(forkScoped(drain(fx)));
88
-
89
- /**
90
- * Observes the values of an `Fx` stream using a callback function and returns a `Layer`.
91
- * The callback can return `void` or an `Effect` which will be executed for each value.
92
- *
93
- * @param fx - The `Fx` stream to observe.
94
- * @param f - The function to call for each emitted value.
95
- * @returns A `Layer` that manages the background execution of the stream.
96
- * @since 1.0.0
97
- * @category runners
98
- */
99
- export const observeLayer: {
100
- <A, E2 = never, R2 = never>(
101
- f: (value: A) => void | Effect<unknown, E2, R2>,
102
- ): <E, R>(fx: Fx<A, E, R>) => Layer<never, E | E2, Exclude<R | R2, Scope>>;
103
-
104
- <A, E, R, E2 = never, R2 = never>(
105
- fx: Fx<A, E, R>,
106
- f: (value: A) => void | Effect<unknown, E2, R2>,
107
- ): Layer<never, E | E2, Exclude<R | R2, Scope>>;
108
- } = dual(
109
- 2,
110
- <A, E, R, E2 = never, R2 = never>(
111
- fx: Fx<A, E, R>,
112
- f: (value: A) => void | Effect<unknown, E2, R2>,
113
- ): Layer<never, E | E2, Exclude<R | R2, Scope>> => effectDiscard(forkScoped(observe(fx, f))),
114
- );
@@ -1,32 +0,0 @@
1
- import type { RunOptions } from "effect/Effect";
2
- import * as Effect from "effect/Effect";
3
- import type * as Exit from "effect/Exit";
4
- import type { Fx } from "../Fx.js";
5
- import { drain } from "./observe.js";
6
-
7
- /**
8
- * Runs an `Fx` stream to completion and returns a Promise of the Exit.
9
- *
10
- * @param fx - The `Fx` stream to run.
11
- * @param options - `RunOptions` for execution.
12
- * @returns A Promise resolving to the `Exit` of the execution.
13
- * @since 1.0.0
14
- * @category runners
15
- */
16
- export const runPromiseExit = <A, E>(
17
- fx: Fx<A, E>,
18
- options?: RunOptions,
19
- ): Promise<Exit.Exit<void, E>> => Effect.runPromiseExit(drain(fx), options);
20
-
21
- /**
22
- * Runs an `Fx` stream to completion and returns a Promise.
23
- * Rejects if the stream fails.
24
- *
25
- * @param fx - The `Fx` stream to run.
26
- * @param options - `RunOptions` for execution.
27
- * @returns A Promise that resolves when the stream completes.
28
- * @since 1.0.0
29
- * @category runners
30
- */
31
- export const runPromise = <A, E>(fx: Fx<A, E>, options?: RunOptions): Promise<unknown> =>
32
- Effect.runPromise(drain(fx), options);
package/src/Fx/stream.ts DELETED
@@ -1,42 +0,0 @@
1
- import type * as Effect from "effect/Effect";
2
- import { pipe } from "effect/Function";
3
- import * as Queue from "effect/Queue";
4
- import * as Stream from "effect/Stream";
5
- import * as Sink from "../Sink/Sink.js";
6
- import { make } from "./constructors/make.js";
7
- import type * as Fx from "./Fx.js";
8
-
9
- export type ToStreamOptions = Parameters<typeof Stream.callback<unknown, unknown, unknown>>[1];
10
-
11
- export const toStream = <A, E, R>(
12
- fx: Fx.Fx<A, E, R>,
13
- options?: ToStreamOptions,
14
- ): Stream.Stream<A, E, R> =>
15
- Stream.callback<A, E, R>(
16
- (queue) =>
17
- fx.run(
18
- Sink.make(
19
- (cause) => Queue.failCause(queue, cause),
20
- (value) => Queue.offer(queue, value),
21
- ),
22
- ),
23
- options,
24
- );
25
-
26
- export type FromStreamOptions = Parameters<
27
- typeof Stream.mapEffect<unknown, unknown, unknown, unknown>
28
- >[1];
29
-
30
- export const fromStream = <A, E, R>(
31
- stream: Stream.Stream<A, E, R>,
32
- options?: FromStreamOptions,
33
- ): Fx.Fx<A, E, R> =>
34
- make<A, E, R>(
35
- <RSink = never>(sink: Sink.Sink<A, E, RSink>): Effect.Effect<unknown, never, R | RSink> =>
36
- pipe(
37
- stream,
38
- Stream.mapEffect(sink.onSuccess, options),
39
- Stream.catchCause((cause) => Stream.fromEffect(sink.onFailure(cause))),
40
- Stream.runDrain,
41
- ),
42
- );
@@ -1,126 +0,0 @@
1
- import { assert, describe, it } from "vitest";
2
- import * as Effect from "effect/Effect";
3
- import * as Exit from "effect/Exit";
4
- import { concat, merge } from "./Fx/combinators/additive.js";
5
- import { Fx } from "./index.js";
6
-
7
- describe("Fx additive combinators", () => {
8
- describe("merge (binary)", () => {
9
- it("emits values from both streams and completes when both complete", () =>
10
- Effect.gen(function* () {
11
- const fx1 = Fx.fromIterable([1, 2]);
12
- const fx2 = Fx.fromIterable([3, 4]);
13
- const merged = merge(fx1, fx2);
14
- const result = yield* Fx.collectAll(merged);
15
- assert.strictEqual(result.length, 4);
16
- assert.deepStrictEqual(
17
- [...result].sort((a, b) => a - b),
18
- [1, 2, 3, 4],
19
- );
20
- }).pipe(Effect.scoped, Effect.runPromise));
21
-
22
- it("completes when both streams are empty", () =>
23
- Effect.gen(function* () {
24
- const merged = merge(Fx.fromIterable([]), Fx.fromIterable([]));
25
- const result = yield* Fx.collectAll(merged);
26
- assert.deepStrictEqual(result, []);
27
- }).pipe(Effect.scoped, Effect.runPromise));
28
-
29
- it("fails when first stream fails", () =>
30
- Effect.gen(function* () {
31
- const failFx = Fx.fail("err" as const);
32
- const goodFx = Fx.fromIterable([1, 2]);
33
- const merged = merge(failFx, goodFx);
34
- const exit = yield* Effect.exit(Fx.collectAll(merged));
35
- assert(Exit.isFailure(exit));
36
- }).pipe(Effect.scoped, Effect.runPromise));
37
-
38
- it("fails when second stream fails", () =>
39
- Effect.gen(function* () {
40
- const goodFx = Fx.fromIterable([1, 2]);
41
- const failFx = Fx.fail("err" as const);
42
- const merged = merge(goodFx, failFx);
43
- const exit = yield* Effect.exit(Fx.collectAll(merged));
44
- assert(Exit.isFailure(exit));
45
- }).pipe(Effect.scoped, Effect.runPromise));
46
- });
47
-
48
- describe("concat", () => {
49
- it("emits first stream then second stream in order", () =>
50
- Effect.gen(function* () {
51
- const fx1 = Fx.fromIterable([1, 2]);
52
- const fx2 = Fx.fromIterable([3, 4]);
53
- const concatenated = concat(fx1, fx2);
54
- const result = yield* Fx.collectAll(concatenated);
55
- assert.deepStrictEqual(result, [1, 2, 3, 4]);
56
- }).pipe(Effect.scoped, Effect.runPromise));
57
-
58
- it("completes when second stream completes", () =>
59
- Effect.gen(function* () {
60
- const concatenated = concat(Fx.fromIterable([1]), Fx.fromIterable([2, 3]));
61
- const result = yield* Fx.collectAll(concatenated);
62
- assert.deepStrictEqual(result, [1, 2, 3]);
63
- }).pipe(Effect.scoped, Effect.runPromise));
64
-
65
- it("fails when first stream fails (second never runs)", () =>
66
- Effect.gen(function* () {
67
- const concatenated = concat(Fx.fail("err" as const), Fx.fromIterable([1, 2]));
68
- const exit = yield* Effect.exit(Fx.collectAll(concatenated));
69
- assert(Exit.isFailure(exit));
70
- }).pipe(Effect.scoped, Effect.runPromise));
71
-
72
- it("fails when second stream fails after first completed", () =>
73
- Effect.gen(function* () {
74
- const concatenated = concat(Fx.fromIterable([1, 2]), Fx.fail("err" as const));
75
- const exit = yield* Effect.exit(Fx.collectAll(concatenated));
76
- assert(Exit.isFailure(exit));
77
- }).pipe(Effect.scoped, Effect.runPromise));
78
-
79
- it("completes with first stream only when second is empty", () =>
80
- Effect.gen(function* () {
81
- const concatenated = concat(Fx.fromIterable([1, 2]), Fx.fromIterable([]));
82
- const result = yield* Fx.collectAll(concatenated);
83
- assert.deepStrictEqual(result, [1, 2]);
84
- }).pipe(Effect.scoped, Effect.runPromise));
85
- });
86
- it("takeEffect uses count from Effect", () =>
87
- Effect.gen(function* () {
88
- const fx = Fx.fromIterable([1, 2, 3, 4]).pipe(Fx.takeEffect(Effect.succeed(2)));
89
- const result = yield* Fx.collectAll(fx);
90
- assert.deepStrictEqual(result, [1, 2]);
91
- }).pipe(Effect.scoped, Effect.runPromise));
92
-
93
- it("skipEffect uses count from Effect", () =>
94
- Effect.gen(function* () {
95
- const fx = Fx.fromIterable([1, 2, 3, 4]).pipe(Fx.skipEffect(Effect.succeed(2)));
96
- const result = yield* Fx.collectAll(fx);
97
- assert.deepStrictEqual(result, [3, 4]);
98
- }).pipe(Effect.scoped, Effect.runPromise));
99
-
100
- it("sliceEffect uses bounds from Effect", () =>
101
- Effect.gen(function* () {
102
- const fx = Fx.fromIterable([1, 2, 3, 4]).pipe(
103
- Fx.sliceEffect(Effect.succeed({ skip: 1, take: 2 })),
104
- );
105
- const result = yield* Fx.collectAll(fx);
106
- assert.deepStrictEqual(result, [2, 3]);
107
- }).pipe(Effect.scoped, Effect.runPromise));
108
-
109
- it("takeUntilEffect stops when predicate effect succeeds with true", () =>
110
- Effect.gen(function* () {
111
- const fx = Fx.fromIterable([1, 2, 3, 4]).pipe(
112
- Fx.takeUntilEffect((n) => Effect.succeed(n > 2)),
113
- );
114
- const result = yield* Fx.collectAll(fx);
115
- assert.deepStrictEqual(result, [1, 2]);
116
- }).pipe(Effect.scoped, Effect.runPromise));
117
-
118
- it("takeUntilEffect fails when predicate effect fails", () =>
119
- Effect.gen(function* () {
120
- const fx = Fx.fromIterable([1, 2, 3]).pipe(
121
- Fx.takeUntilEffect((n) => (n === 2 ? Effect.fail("boom") : Effect.succeed(false))),
122
- );
123
- const exit = yield* Effect.exit(Fx.collectAll(fx));
124
- assert(Exit.isFailure(exit));
125
- }).pipe(Effect.scoped, Effect.runPromise));
126
- });
@@ -1,206 +0,0 @@
1
- import { assert, describe, it } from "vitest";
2
- import * as Cause from "effect/Cause";
3
- import { Data } from "effect";
4
- import * as Effect from "effect/Effect";
5
- import * as Exit from "effect/Exit";
6
- import * as Result from "effect/Result";
7
- import { catchCauseIf, catchIf, catchTags } from "./Fx/combinators/catch.js";
8
- import { Fx } from "./index.js";
9
-
10
- describe("Fx.catchIf", () => {
11
- it("recovers when predicate is true (typed failure)", () =>
12
- Effect.gen(function* () {
13
- const fx = Fx.fail(42).pipe(
14
- catchIf(
15
- (n: number) => n > 10,
16
- (n) => Fx.succeed(`recovered:${n}`),
17
- ),
18
- );
19
- const result = yield* Fx.collectAll(fx);
20
- assert.deepStrictEqual(result, ["recovered:42"]);
21
- }).pipe(Effect.scoped, Effect.runPromise));
22
-
23
- it("does not recover when predicate is false (re-fails)", () =>
24
- Effect.gen(function* () {
25
- const fx = Fx.fail(3).pipe(
26
- catchIf(
27
- (n: number) => n > 10,
28
- (n) => Fx.succeed(`recovered:${n}`),
29
- ),
30
- );
31
- const exit = yield* Effect.exit(Fx.collectAll(fx));
32
- assert(Exit.isFailure(exit));
33
- const failResult = Cause.findFail(exit.cause);
34
- assert(failResult._tag === "Success");
35
- assert.strictEqual(failResult.success.error, 3);
36
- }).pipe(Effect.scoped, Effect.runPromise));
37
-
38
- it("does not recover from defects (only Fail is considered)", () =>
39
- Effect.gen(function* () {
40
- const fx = Fx.die("defect").pipe(
41
- catchIf(
42
- () => true,
43
- () => Fx.succeed("nope"),
44
- ),
45
- );
46
- const exit = yield* Effect.exit(Fx.collectAll(fx));
47
- assert(Exit.isFailure(exit));
48
- assert(Cause.hasDies(exit.cause));
49
- }).pipe(Effect.scoped, Effect.runPromise));
50
-
51
- it("success path is unchanged", () =>
52
- Effect.gen(function* () {
53
- const fx = Fx.fromIterable([1, 2, 3]).pipe(
54
- catchIf(
55
- (_: string) => true,
56
- () => Fx.succeed(-1),
57
- ),
58
- );
59
- const result = yield* Fx.collectAll(fx);
60
- assert.deepStrictEqual(result, [1, 2, 3]);
61
- }).pipe(Effect.scoped, Effect.runPromise));
62
-
63
- it("dual call style (data-first)", () =>
64
- Effect.gen(function* () {
65
- const fx = catchIf(
66
- Fx.fail("err"),
67
- (e: string) => e.length > 0,
68
- (e) => Fx.succeed(e.toUpperCase()),
69
- );
70
- const result = yield* Fx.collectAll(fx);
71
- assert.deepStrictEqual(result, ["ERR"]);
72
- }).pipe(Effect.scoped, Effect.runPromise));
73
- });
74
-
75
- describe("Fx.catchCauseIf", () => {
76
- it("recovers when predicate is true (e.g. has fails)", () =>
77
- Effect.gen(function* () {
78
- const fx = Fx.fail("boom").pipe(
79
- catchCauseIf(Cause.hasFails, (cause) => {
80
- const r = Cause.findFail(cause);
81
- const msg = Result.isSuccess(r) ? r.success.error : "?";
82
- return Fx.succeed(`recovered:${msg}`);
83
- }),
84
- );
85
- const result = yield* Fx.collectAll(fx);
86
- assert.strictEqual(result[0], "recovered:boom");
87
- }).pipe(Effect.scoped, Effect.runPromise));
88
-
89
- it("recovers from defects when predicate matches cause", () =>
90
- Effect.gen(function* () {
91
- const fx = Fx.die("defect").pipe(catchCauseIf(Cause.hasDies, () => Fx.succeed("ok")));
92
- const result = yield* Fx.collectAll(fx);
93
- assert.deepStrictEqual(result, ["ok"]);
94
- }).pipe(Effect.scoped, Effect.runPromise));
95
-
96
- it("does not recover when predicate is false", () =>
97
- Effect.gen(function* () {
98
- const fx = Fx.die("oops").pipe(catchCauseIf(Cause.isEmpty, () => Fx.succeed("no")));
99
- const exit = yield* Effect.exit(Fx.collectAll(fx));
100
- assert(Exit.isFailure(exit));
101
- assert(Cause.hasDies(exit.cause));
102
- }).pipe(Effect.scoped, Effect.runPromise));
103
-
104
- it("success path is unchanged", () =>
105
- Effect.gen(function* () {
106
- const fx = Fx.fromIterable([1, 2]).pipe(
107
- catchCauseIf(
108
- () => true,
109
- () => Fx.succeed(0),
110
- ),
111
- );
112
- const result = yield* Fx.collectAll(fx);
113
- assert.deepStrictEqual(result, [1, 2]);
114
- }).pipe(Effect.scoped, Effect.runPromise));
115
-
116
- it("dual call style (data-first)", () =>
117
- Effect.gen(function* () {
118
- const fx = catchCauseIf(Fx.fail("x"), Cause.hasFails, (cause) =>
119
- Fx.succeed(Result.isSuccess(Cause.findFail(cause)) ? "handled" : "unhandled"),
120
- );
121
- const result = yield* Fx.collectAll(fx);
122
- assert.strictEqual(result[0], "handled");
123
- }).pipe(Effect.scoped, Effect.runPromise));
124
- });
125
-
126
- describe("Fx.catchTags", () => {
127
- class ErrorA extends Data.TaggedError("A")<{ readonly n: number }> {}
128
- class ErrorB extends Data.TaggedError("B")<{ readonly msg: string }> {}
129
-
130
- it("recovers from multiple tagged failures with one call", () =>
131
- Effect.gen(function* () {
132
- const fx = Fx.fail(new ErrorA({ n: 1 })).pipe(
133
- catchTags({
134
- A: (e) => Fx.succeed(`A:${e.n}`),
135
- B: (e) => Fx.succeed(`B:${e.msg}`),
136
- }),
137
- );
138
- const result = yield* Fx.collectAll(fx);
139
- assert.deepStrictEqual(result, ["A:1"]);
140
- }).pipe(Effect.scoped, Effect.runPromise));
141
-
142
- it("matches second tag when first fails with B", () =>
143
- Effect.gen(function* () {
144
- const fx = Fx.fail(new ErrorB({ msg: "hello" })).pipe(
145
- catchTags({
146
- A: (e) => Fx.succeed(`A:${e.n}`),
147
- B: (e) => Fx.succeed(`B:${e.msg}`),
148
- }),
149
- );
150
- const result = yield* Fx.collectAll(fx);
151
- assert.deepStrictEqual(result, ["B:hello"]);
152
- }).pipe(Effect.scoped, Effect.runPromise));
153
-
154
- it("does not catch untagged or other tags (re-fails)", () =>
155
- Effect.gen(function* () {
156
- const fx = Fx.fail("plain").pipe(
157
- catchTags({
158
- A: () => Fx.succeed(1),
159
- B: () => Fx.succeed(2),
160
- } as {
161
- A: (e: ErrorA) => Fx<number, never, never>;
162
- B: (e: ErrorB) => Fx<number, never, never>;
163
- }),
164
- );
165
- const exit = yield* Effect.exit(Fx.collectAll(fx));
166
- assert(Exit.isFailure(exit));
167
- const failResult = Cause.findFail(exit.cause);
168
- assert(failResult._tag === "Success");
169
- assert.strictEqual(failResult.success.error, "plain");
170
- }).pipe(Effect.scoped, Effect.runPromise));
171
-
172
- it("does not recover from defects (only Fail with _tag)", () =>
173
- Effect.gen(function* () {
174
- const fx = Fx.die("defect").pipe(
175
- catchTags({
176
- A: () => Fx.succeed(1),
177
- B: () => Fx.succeed(2),
178
- }),
179
- );
180
- const exit = yield* Effect.exit(Fx.collectAll(fx));
181
- assert(Exit.isFailure(exit));
182
- assert(Cause.hasDies(exit.cause));
183
- }).pipe(Effect.scoped, Effect.runPromise));
184
-
185
- it("success path is unchanged", () =>
186
- Effect.gen(function* () {
187
- const fx = Fx.fromIterable([1, 2, 3]).pipe(
188
- catchTags({
189
- A: () => Fx.succeed(-1),
190
- B: () => Fx.succeed(-2),
191
- }),
192
- );
193
- const result = yield* Fx.collectAll(fx);
194
- assert.deepStrictEqual(result, [1, 2, 3]);
195
- }).pipe(Effect.scoped, Effect.runPromise));
196
-
197
- it("dual call style (data-first)", () =>
198
- Effect.gen(function* () {
199
- const fx = catchTags(Fx.fail(new ErrorA({ n: 42 })), {
200
- A: (e) => Fx.succeed(e.n * 2),
201
- B: () => Fx.succeed(0),
202
- });
203
- const result = yield* Fx.collectAll(fx);
204
- assert.deepStrictEqual(result, [84]);
205
- }).pipe(Effect.scoped, Effect.runPromise));
206
- });