@typed/fx 2.0.0-beta.1 → 2.0.0-beta.11

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 (664) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +35 -21
  3. package/dist/Fx/Fx.d.ts +371 -19
  4. package/dist/Fx/Fx.d.ts.map +1 -1
  5. package/dist/Fx/Fx.js +37 -6
  6. package/dist/Fx/TypeId.d.ts +52 -6
  7. package/dist/Fx/TypeId.d.ts.map +1 -1
  8. package/dist/Fx/TypeId.js +41 -4
  9. package/dist/Fx/combinators/additive.d.ts +162 -11
  10. package/dist/Fx/combinators/additive.d.ts.map +1 -1
  11. package/dist/Fx/combinators/additive.js +162 -11
  12. package/dist/Fx/combinators/catch.d.ts +202 -29
  13. package/dist/Fx/combinators/catch.d.ts.map +1 -1
  14. package/dist/Fx/combinators/catch.js +193 -23
  15. package/dist/Fx/combinators/causes.d.ts +25 -2
  16. package/dist/Fx/combinators/causes.d.ts.map +1 -1
  17. package/dist/Fx/combinators/causes.js +25 -2
  18. package/dist/Fx/combinators/changesWithEffect.d.ts +21 -1
  19. package/dist/Fx/combinators/changesWithEffect.d.ts.map +1 -1
  20. package/dist/Fx/combinators/changesWithEffect.js +21 -1
  21. package/dist/Fx/combinators/compact.d.ts +18 -1
  22. package/dist/Fx/combinators/compact.d.ts.map +1 -1
  23. package/dist/Fx/combinators/compact.js +18 -1
  24. package/dist/Fx/combinators/concatMap.d.ts +86 -0
  25. package/dist/Fx/combinators/concatMap.d.ts.map +1 -0
  26. package/dist/Fx/combinators/concatMap.js +86 -0
  27. package/dist/Fx/combinators/continueWith.d.ts +113 -5
  28. package/dist/Fx/combinators/continueWith.d.ts.map +1 -1
  29. package/dist/Fx/combinators/continueWith.js +113 -5
  30. package/dist/Fx/combinators/debounce.d.ts +34 -0
  31. package/dist/Fx/combinators/debounce.d.ts.map +1 -0
  32. package/dist/Fx/combinators/debounce.js +35 -0
  33. package/dist/Fx/combinators/delay.d.ts +36 -0
  34. package/dist/Fx/combinators/delay.d.ts.map +1 -0
  35. package/dist/Fx/combinators/delay.js +33 -0
  36. package/dist/Fx/combinators/dropUntil.d.ts +44 -2
  37. package/dist/Fx/combinators/dropUntil.d.ts.map +1 -1
  38. package/dist/Fx/combinators/dropUntil.js +44 -2
  39. package/dist/Fx/combinators/during.d.ts +38 -0
  40. package/dist/Fx/combinators/during.d.ts.map +1 -0
  41. package/dist/Fx/combinators/during.js +85 -0
  42. package/dist/Fx/combinators/ensuring.d.ts +34 -4
  43. package/dist/Fx/combinators/ensuring.d.ts.map +1 -1
  44. package/dist/Fx/combinators/ensuring.js +34 -4
  45. package/dist/Fx/combinators/exhaustLatestMap.d.ts +41 -5
  46. package/dist/Fx/combinators/exhaustLatestMap.d.ts.map +1 -1
  47. package/dist/Fx/combinators/exhaustLatestMap.js +41 -5
  48. package/dist/Fx/combinators/exhaustLatestMapEffect.d.ts +40 -4
  49. package/dist/Fx/combinators/exhaustLatestMapEffect.d.ts.map +1 -1
  50. package/dist/Fx/combinators/exhaustLatestMapEffect.js +40 -4
  51. package/dist/Fx/combinators/exhaustMap.d.ts +38 -1
  52. package/dist/Fx/combinators/exhaustMap.d.ts.map +1 -1
  53. package/dist/Fx/combinators/exhaustMap.js +38 -1
  54. package/dist/Fx/combinators/exhaustMapEffect.d.ts +33 -1
  55. package/dist/Fx/combinators/exhaustMapEffect.d.ts.map +1 -1
  56. package/dist/Fx/combinators/exhaustMapEffect.js +33 -1
  57. package/dist/Fx/combinators/exit.d.ts +23 -2
  58. package/dist/Fx/combinators/exit.d.ts.map +1 -1
  59. package/dist/Fx/combinators/exit.js +23 -2
  60. package/dist/Fx/combinators/filter.d.ts +17 -1
  61. package/dist/Fx/combinators/filter.d.ts.map +1 -1
  62. package/dist/Fx/combinators/filter.js +17 -1
  63. package/dist/Fx/combinators/filterEffect.d.ts +22 -1
  64. package/dist/Fx/combinators/filterEffect.d.ts.map +1 -1
  65. package/dist/Fx/combinators/filterEffect.js +22 -1
  66. package/dist/Fx/combinators/filterMap.d.ts +20 -1
  67. package/dist/Fx/combinators/filterMap.d.ts.map +1 -1
  68. package/dist/Fx/combinators/filterMap.js +20 -1
  69. package/dist/Fx/combinators/filterMapEffect.d.ts +21 -1
  70. package/dist/Fx/combinators/filterMapEffect.d.ts.map +1 -1
  71. package/dist/Fx/combinators/filterMapEffect.js +21 -1
  72. package/dist/Fx/combinators/filterMapLoop.d.ts +20 -1
  73. package/dist/Fx/combinators/filterMapLoop.d.ts.map +1 -1
  74. package/dist/Fx/combinators/filterMapLoop.js +20 -1
  75. package/dist/Fx/combinators/filterMapLoopCause.d.ts +21 -1
  76. package/dist/Fx/combinators/filterMapLoopCause.d.ts.map +1 -1
  77. package/dist/Fx/combinators/filterMapLoopCause.js +21 -1
  78. package/dist/Fx/combinators/filterMapLoopCauseEffect.d.ts +21 -1
  79. package/dist/Fx/combinators/filterMapLoopCauseEffect.d.ts.map +1 -1
  80. package/dist/Fx/combinators/filterMapLoopCauseEffect.js +21 -1
  81. package/dist/Fx/combinators/filterMapLoopEffect.d.ts +21 -1
  82. package/dist/Fx/combinators/filterMapLoopEffect.d.ts.map +1 -1
  83. package/dist/Fx/combinators/filterMapLoopEffect.js +21 -1
  84. package/dist/Fx/combinators/flatMap.d.ts +50 -5
  85. package/dist/Fx/combinators/flatMap.d.ts.map +1 -1
  86. package/dist/Fx/combinators/flatMap.js +36 -3
  87. package/dist/Fx/combinators/flatMapConcurrently.d.ts +51 -4
  88. package/dist/Fx/combinators/flatMapConcurrently.d.ts.map +1 -1
  89. package/dist/Fx/combinators/flatMapConcurrently.js +48 -2
  90. package/dist/Fx/combinators/flatMapConcurrentlyEffect.d.ts +48 -4
  91. package/dist/Fx/combinators/flatMapConcurrentlyEffect.d.ts.map +1 -1
  92. package/dist/Fx/combinators/flatMapConcurrentlyEffect.js +40 -2
  93. package/dist/Fx/combinators/flatMapEffect.d.ts +46 -4
  94. package/dist/Fx/combinators/flatMapEffect.d.ts.map +1 -1
  95. package/dist/Fx/combinators/flatMapEffect.js +32 -2
  96. package/dist/Fx/combinators/flip.d.ts +34 -2
  97. package/dist/Fx/combinators/flip.d.ts.map +1 -1
  98. package/dist/Fx/combinators/flip.js +34 -2
  99. package/dist/Fx/combinators/gen.d.ts +29 -10
  100. package/dist/Fx/combinators/gen.d.ts.map +1 -1
  101. package/dist/Fx/combinators/gen.js +28 -4
  102. package/dist/Fx/combinators/genScoped.d.ts +33 -10
  103. package/dist/Fx/combinators/genScoped.d.ts.map +1 -1
  104. package/dist/Fx/combinators/genScoped.js +31 -3
  105. package/dist/Fx/combinators/grouped.d.ts +89 -0
  106. package/dist/Fx/combinators/grouped.d.ts.map +1 -0
  107. package/dist/Fx/combinators/grouped.js +146 -0
  108. package/dist/Fx/combinators/index.d.ts +35 -0
  109. package/dist/Fx/combinators/index.d.ts.map +1 -1
  110. package/dist/Fx/combinators/index.js +35 -0
  111. package/dist/Fx/combinators/keyed.d.ts +123 -9
  112. package/dist/Fx/combinators/keyed.d.ts.map +1 -1
  113. package/dist/Fx/combinators/keyed.js +69 -11
  114. package/dist/Fx/combinators/loop.d.ts +17 -1
  115. package/dist/Fx/combinators/loop.d.ts.map +1 -1
  116. package/dist/Fx/combinators/loop.js +17 -1
  117. package/dist/Fx/combinators/loopCause.d.ts +18 -1
  118. package/dist/Fx/combinators/loopCause.d.ts.map +1 -1
  119. package/dist/Fx/combinators/loopCause.js +18 -1
  120. package/dist/Fx/combinators/loopCauseEffect.d.ts +19 -1
  121. package/dist/Fx/combinators/loopCauseEffect.d.ts.map +1 -1
  122. package/dist/Fx/combinators/loopCauseEffect.js +19 -1
  123. package/dist/Fx/combinators/loopEffect.d.ts +24 -1
  124. package/dist/Fx/combinators/loopEffect.d.ts.map +1 -1
  125. package/dist/Fx/combinators/loopEffect.js +24 -1
  126. package/dist/Fx/combinators/map.d.ts +46 -1
  127. package/dist/Fx/combinators/map.d.ts.map +1 -1
  128. package/dist/Fx/combinators/map.js +43 -1
  129. package/dist/Fx/combinators/mapBoth.d.ts +20 -1
  130. package/dist/Fx/combinators/mapBoth.d.ts.map +1 -1
  131. package/dist/Fx/combinators/mapBoth.js +20 -1
  132. package/dist/Fx/combinators/mapEffect.d.ts +25 -1
  133. package/dist/Fx/combinators/mapEffect.d.ts.map +1 -1
  134. package/dist/Fx/combinators/mapEffect.js +25 -1
  135. package/dist/Fx/combinators/mapError.d.ts +21 -5
  136. package/dist/Fx/combinators/mapError.d.ts.map +1 -1
  137. package/dist/Fx/combinators/mapError.js +21 -5
  138. package/dist/Fx/combinators/mergeAll.d.ts +35 -1
  139. package/dist/Fx/combinators/mergeAll.d.ts.map +1 -1
  140. package/dist/Fx/combinators/mergeAll.js +35 -1
  141. package/dist/Fx/combinators/mergeOrdered.d.ts +36 -4
  142. package/dist/Fx/combinators/mergeOrdered.d.ts.map +1 -1
  143. package/dist/Fx/combinators/mergeOrdered.js +68 -14
  144. package/dist/Fx/combinators/onError.d.ts +34 -4
  145. package/dist/Fx/combinators/onError.d.ts.map +1 -1
  146. package/dist/Fx/combinators/onError.js +34 -4
  147. package/dist/Fx/combinators/onExit.d.ts +29 -3
  148. package/dist/Fx/combinators/onExit.d.ts.map +1 -1
  149. package/dist/Fx/combinators/onExit.js +29 -3
  150. package/dist/Fx/combinators/onInterrupt.d.ts +49 -4
  151. package/dist/Fx/combinators/onInterrupt.d.ts.map +1 -1
  152. package/dist/Fx/combinators/onInterrupt.js +49 -4
  153. package/dist/Fx/combinators/pairwise.d.ts +28 -0
  154. package/dist/Fx/combinators/pairwise.d.ts.map +1 -0
  155. package/dist/Fx/combinators/pairwise.js +31 -0
  156. package/dist/Fx/combinators/provide.d.ts +141 -20
  157. package/dist/Fx/combinators/provide.d.ts.map +1 -1
  158. package/dist/Fx/combinators/provide.js +137 -16
  159. package/dist/Fx/combinators/race.d.ts +92 -0
  160. package/dist/Fx/combinators/race.d.ts.map +1 -0
  161. package/dist/Fx/combinators/race.js +149 -0
  162. package/dist/Fx/combinators/repeat.d.ts +41 -0
  163. package/dist/Fx/combinators/repeat.d.ts.map +1 -0
  164. package/dist/Fx/combinators/repeat.js +57 -0
  165. package/dist/Fx/combinators/result.d.ts +23 -1
  166. package/dist/Fx/combinators/result.d.ts.map +1 -1
  167. package/dist/Fx/combinators/result.js +27 -13
  168. package/dist/Fx/combinators/retry.d.ts +53 -0
  169. package/dist/Fx/combinators/retry.d.ts.map +1 -0
  170. package/dist/Fx/combinators/retry.js +71 -0
  171. package/dist/Fx/combinators/sample.d.ts +31 -0
  172. package/dist/Fx/combinators/sample.d.ts.map +1 -0
  173. package/dist/Fx/combinators/sample.js +42 -0
  174. package/dist/Fx/combinators/scan.d.ts +41 -2
  175. package/dist/Fx/combinators/scan.d.ts.map +1 -1
  176. package/dist/Fx/combinators/scan.js +43 -4
  177. package/dist/Fx/combinators/since.d.ts +30 -0
  178. package/dist/Fx/combinators/since.d.ts.map +1 -0
  179. package/dist/Fx/combinators/since.js +39 -0
  180. package/dist/Fx/combinators/skip.d.ts +33 -2
  181. package/dist/Fx/combinators/skip.d.ts.map +1 -1
  182. package/dist/Fx/combinators/skip.js +33 -2
  183. package/dist/Fx/combinators/skipRepeats.d.ts +17 -1
  184. package/dist/Fx/combinators/skipRepeats.d.ts.map +1 -1
  185. package/dist/Fx/combinators/skipRepeats.js +17 -1
  186. package/dist/Fx/combinators/skipRepeatsWith.d.ts +18 -1
  187. package/dist/Fx/combinators/skipRepeatsWith.d.ts.map +1 -1
  188. package/dist/Fx/combinators/skipRepeatsWith.js +18 -1
  189. package/dist/Fx/combinators/skipWhile.d.ts +72 -4
  190. package/dist/Fx/combinators/skipWhile.d.ts.map +1 -1
  191. package/dist/Fx/combinators/skipWhile.js +72 -4
  192. package/dist/Fx/combinators/slice.d.ts +85 -3
  193. package/dist/Fx/combinators/slice.d.ts.map +1 -1
  194. package/dist/Fx/combinators/slice.js +35 -2
  195. package/dist/Fx/combinators/switchMap.d.ts +39 -1
  196. package/dist/Fx/combinators/switchMap.d.ts.map +1 -1
  197. package/dist/Fx/combinators/switchMap.js +43 -5
  198. package/dist/Fx/combinators/switchMapEffect.d.ts +38 -1
  199. package/dist/Fx/combinators/switchMapEffect.d.ts.map +1 -1
  200. package/dist/Fx/combinators/switchMapEffect.js +38 -1
  201. package/dist/Fx/combinators/take.d.ts +34 -2
  202. package/dist/Fx/combinators/take.d.ts.map +1 -1
  203. package/dist/Fx/combinators/take.js +34 -2
  204. package/dist/Fx/combinators/takeUntil.d.ts +49 -3
  205. package/dist/Fx/combinators/takeUntil.d.ts.map +1 -1
  206. package/dist/Fx/combinators/takeUntil.js +49 -3
  207. package/dist/Fx/combinators/takeWhile.d.ts +33 -2
  208. package/dist/Fx/combinators/takeWhile.d.ts.map +1 -1
  209. package/dist/Fx/combinators/takeWhile.js +33 -2
  210. package/dist/Fx/combinators/tapEffect.d.ts +17 -1
  211. package/dist/Fx/combinators/tapEffect.d.ts.map +1 -1
  212. package/dist/Fx/combinators/tapEffect.js +17 -1
  213. package/dist/Fx/combinators/throttle.d.ts +79 -0
  214. package/dist/Fx/combinators/throttle.d.ts.map +1 -0
  215. package/dist/Fx/combinators/throttle.js +99 -0
  216. package/dist/Fx/combinators/timeout.d.ts +76 -0
  217. package/dist/Fx/combinators/timeout.d.ts.map +1 -0
  218. package/dist/Fx/combinators/timeout.js +110 -0
  219. package/dist/Fx/combinators/tuple.d.ts +32 -2
  220. package/dist/Fx/combinators/tuple.d.ts.map +1 -1
  221. package/dist/Fx/combinators/tuple.js +36 -5
  222. package/dist/Fx/combinators/until.d.ts +27 -0
  223. package/dist/Fx/combinators/until.d.ts.map +1 -0
  224. package/dist/Fx/combinators/until.js +56 -0
  225. package/dist/Fx/combinators/unwrap.d.ts +31 -2
  226. package/dist/Fx/combinators/unwrap.d.ts.map +1 -1
  227. package/dist/Fx/combinators/unwrap.js +30 -1
  228. package/dist/Fx/combinators/unwrapScoped.d.ts +34 -1
  229. package/dist/Fx/combinators/unwrapScoped.d.ts.map +1 -1
  230. package/dist/Fx/combinators/unwrapScoped.js +34 -1
  231. package/dist/Fx/combinators/when.d.ts +37 -2
  232. package/dist/Fx/combinators/when.d.ts.map +1 -1
  233. package/dist/Fx/combinators/when.js +38 -3
  234. package/dist/Fx/combinators/withLatestFrom.d.ts +58 -0
  235. package/dist/Fx/combinators/withLatestFrom.d.ts.map +1 -0
  236. package/dist/Fx/combinators/withLatestFrom.js +68 -0
  237. package/dist/Fx/combinators/withSpan.d.ts +35 -1
  238. package/dist/Fx/combinators/withSpan.d.ts.map +1 -1
  239. package/dist/Fx/combinators/withSpan.js +34 -3
  240. package/dist/Fx/combinators/zip.d.ts +64 -4
  241. package/dist/Fx/combinators/zip.d.ts.map +1 -1
  242. package/dist/Fx/combinators/zip.js +64 -4
  243. package/dist/Fx/constructors/at.d.ts +21 -1
  244. package/dist/Fx/constructors/at.d.ts.map +1 -1
  245. package/dist/Fx/constructors/at.js +21 -1
  246. package/dist/Fx/constructors/die.d.ts +22 -1
  247. package/dist/Fx/constructors/die.d.ts.map +1 -1
  248. package/dist/Fx/constructors/die.js +22 -1
  249. package/dist/Fx/constructors/empty.d.ts +19 -1
  250. package/dist/Fx/constructors/empty.d.ts.map +1 -1
  251. package/dist/Fx/constructors/empty.js +19 -1
  252. package/dist/Fx/constructors/fail.d.ts +22 -1
  253. package/dist/Fx/constructors/fail.d.ts.map +1 -1
  254. package/dist/Fx/constructors/fail.js +22 -1
  255. package/dist/Fx/constructors/failCause.d.ts +23 -1
  256. package/dist/Fx/constructors/failCause.d.ts.map +1 -1
  257. package/dist/Fx/constructors/failCause.js +23 -1
  258. package/dist/Fx/constructors/fn.d.ts +116 -16
  259. package/dist/Fx/constructors/fn.d.ts.map +1 -1
  260. package/dist/Fx/constructors/fn.js +36 -0
  261. package/dist/Fx/constructors/fromEffect.d.ts +45 -3
  262. package/dist/Fx/constructors/fromEffect.d.ts.map +1 -1
  263. package/dist/Fx/constructors/fromEffect.js +45 -3
  264. package/dist/Fx/constructors/fromFailures.d.ts +25 -1
  265. package/dist/Fx/constructors/fromFailures.d.ts.map +1 -1
  266. package/dist/Fx/constructors/fromFailures.js +25 -1
  267. package/dist/Fx/constructors/fromIterable.d.ts +23 -1
  268. package/dist/Fx/constructors/fromIterable.d.ts.map +1 -1
  269. package/dist/Fx/constructors/fromIterable.js +23 -1
  270. package/dist/Fx/constructors/fromSchedule.d.ts +26 -1
  271. package/dist/Fx/constructors/fromSchedule.d.ts.map +1 -1
  272. package/dist/Fx/constructors/fromSchedule.js +28 -3
  273. package/dist/Fx/constructors/index.d.ts +2 -1
  274. package/dist/Fx/constructors/index.d.ts.map +1 -1
  275. package/dist/Fx/constructors/index.js +2 -1
  276. package/dist/Fx/constructors/interrupt.d.ts +22 -2
  277. package/dist/Fx/constructors/interrupt.d.ts.map +1 -1
  278. package/dist/Fx/constructors/interrupt.js +22 -2
  279. package/dist/Fx/constructors/make.d.ts +151 -4
  280. package/dist/Fx/constructors/make.d.ts.map +1 -1
  281. package/dist/Fx/constructors/make.js +60 -7
  282. package/dist/Fx/constructors/periodic.d.ts +30 -1
  283. package/dist/Fx/constructors/periodic.d.ts.map +1 -1
  284. package/dist/Fx/constructors/periodic.js +30 -1
  285. package/dist/Fx/constructors/succeed.d.ts +79 -7
  286. package/dist/Fx/constructors/succeed.d.ts.map +1 -1
  287. package/dist/Fx/constructors/succeed.js +79 -7
  288. package/dist/Fx/constructors/suspend.d.ts +28 -0
  289. package/dist/Fx/constructors/suspend.d.ts.map +1 -1
  290. package/dist/Fx/constructors/suspend.js +28 -0
  291. package/dist/Fx/constructors/sync.d.ts +32 -0
  292. package/dist/Fx/constructors/sync.d.ts.map +1 -0
  293. package/dist/Fx/constructors/sync.js +32 -0
  294. package/dist/Fx/internal/DeferredRef.d.ts +259 -7
  295. package/dist/Fx/internal/DeferredRef.d.ts.map +1 -1
  296. package/dist/Fx/internal/DeferredRef.js +260 -9
  297. package/dist/Fx/internal/UnionToTuple.d.ts +22 -0
  298. package/dist/Fx/internal/UnionToTuple.d.ts.map +1 -1
  299. package/dist/Fx/internal/diff.d.ts +586 -0
  300. package/dist/Fx/internal/diff.d.ts.map +1 -1
  301. package/dist/Fx/internal/diff.js +120 -9
  302. package/dist/Fx/internal/effectableEvaluateKey.d.ts +30 -0
  303. package/dist/Fx/internal/effectableEvaluateKey.d.ts.map +1 -0
  304. package/dist/Fx/internal/effectableEvaluateKey.js +29 -0
  305. package/dist/Fx/internal/effectableWithOverride.d.ts +70 -0
  306. package/dist/Fx/internal/effectableWithOverride.d.ts.map +1 -0
  307. package/dist/Fx/internal/effectableWithOverride.js +54 -0
  308. package/dist/Fx/internal/equivalence.d.ts +29 -0
  309. package/dist/Fx/internal/equivalence.d.ts.map +1 -1
  310. package/dist/Fx/internal/equivalence.js +29 -0
  311. package/dist/Fx/internal/multicast.d.ts +145 -2
  312. package/dist/Fx/internal/multicast.d.ts.map +1 -1
  313. package/dist/Fx/internal/multicast.js +146 -4
  314. package/dist/Fx/internal/ring-buffer.d.ts +149 -0
  315. package/dist/Fx/internal/ring-buffer.d.ts.map +1 -1
  316. package/dist/Fx/internal/ring-buffer.js +155 -0
  317. package/dist/Fx/internal/scope.d.ts +184 -0
  318. package/dist/Fx/internal/scope.d.ts.map +1 -1
  319. package/dist/Fx/internal/scope.js +150 -0
  320. package/dist/Fx/internal/yieldable.d.ts +117 -2
  321. package/dist/Fx/internal/yieldable.d.ts.map +1 -1
  322. package/dist/Fx/internal/yieldable.js +86 -3
  323. package/dist/Fx/run/collect.d.ts +93 -4
  324. package/dist/Fx/run/collect.d.ts.map +1 -1
  325. package/dist/Fx/run/collect.js +94 -5
  326. package/dist/Fx/run/first.d.ts +23 -1
  327. package/dist/Fx/run/first.d.ts.map +1 -1
  328. package/dist/Fx/run/first.js +23 -1
  329. package/dist/Fx/run/fork.d.ts +52 -2
  330. package/dist/Fx/run/fork.d.ts.map +1 -1
  331. package/dist/Fx/run/fork.js +52 -2
  332. package/dist/Fx/run/observe.d.ts +112 -4
  333. package/dist/Fx/run/observe.d.ts.map +1 -1
  334. package/dist/Fx/run/observe.js +137 -16
  335. package/dist/Fx/run/runPromise.d.ts +45 -2
  336. package/dist/Fx/run/runPromise.d.ts.map +1 -1
  337. package/dist/Fx/run/runPromise.js +45 -2
  338. package/dist/Fx/stream.d.ts +92 -0
  339. package/dist/Fx/stream.d.ts.map +1 -1
  340. package/dist/Fx/stream.js +60 -1
  341. package/dist/Push/Push.d.ts +1229 -104
  342. package/dist/Push/Push.d.ts.map +1 -1
  343. package/dist/Push/Push.js +1024 -95
  344. package/dist/RefArray.d.ts +2 -0
  345. package/dist/RefArray.d.ts.map +1 -0
  346. package/dist/RefArray.js +1 -0
  347. package/dist/RefBigDecimal.d.ts +2 -0
  348. package/dist/RefBigDecimal.d.ts.map +1 -0
  349. package/dist/RefBigDecimal.js +1 -0
  350. package/dist/RefBigInt.d.ts +2 -0
  351. package/dist/RefBigInt.d.ts.map +1 -0
  352. package/dist/RefBigInt.js +1 -0
  353. package/dist/RefBoolean.d.ts +2 -0
  354. package/dist/RefBoolean.d.ts.map +1 -0
  355. package/dist/RefBoolean.js +1 -0
  356. package/dist/RefCause.d.ts +2 -0
  357. package/dist/RefCause.d.ts.map +1 -0
  358. package/dist/RefCause.js +1 -0
  359. package/dist/RefChunk.d.ts +2 -0
  360. package/dist/RefChunk.d.ts.map +1 -0
  361. package/dist/RefChunk.js +1 -0
  362. package/dist/RefDateTime.d.ts +2 -0
  363. package/dist/RefDateTime.d.ts.map +1 -0
  364. package/dist/RefDateTime.js +1 -0
  365. package/dist/RefDuration.d.ts +2 -0
  366. package/dist/RefDuration.d.ts.map +1 -0
  367. package/dist/RefDuration.js +1 -0
  368. package/dist/RefGraph.d.ts +2 -0
  369. package/dist/RefGraph.d.ts.map +1 -0
  370. package/dist/RefGraph.js +1 -0
  371. package/dist/RefHashMap.d.ts +2 -0
  372. package/dist/RefHashMap.d.ts.map +1 -0
  373. package/dist/RefHashMap.js +1 -0
  374. package/dist/RefHashRing.d.ts +2 -0
  375. package/dist/RefHashRing.d.ts.map +1 -0
  376. package/dist/RefHashRing.js +1 -0
  377. package/dist/RefHashSet.d.ts +2 -0
  378. package/dist/RefHashSet.d.ts.map +1 -0
  379. package/dist/RefHashSet.js +1 -0
  380. package/dist/RefIterable.d.ts +2 -0
  381. package/dist/RefIterable.d.ts.map +1 -0
  382. package/dist/RefIterable.js +1 -0
  383. package/dist/RefOption.d.ts +2 -0
  384. package/dist/RefOption.d.ts.map +1 -0
  385. package/dist/RefOption.js +1 -0
  386. package/dist/RefRecord.d.ts +2 -0
  387. package/dist/RefRecord.d.ts.map +1 -0
  388. package/dist/RefRecord.js +1 -0
  389. package/dist/RefResult.d.ts +2 -0
  390. package/dist/RefResult.d.ts.map +1 -0
  391. package/dist/RefResult.js +1 -0
  392. package/dist/RefString.d.ts +2 -0
  393. package/dist/RefString.d.ts.map +1 -0
  394. package/dist/RefString.js +1 -0
  395. package/dist/RefStruct.d.ts +2 -0
  396. package/dist/RefStruct.d.ts.map +1 -0
  397. package/dist/RefStruct.js +1 -0
  398. package/dist/RefSubject/Hydration.d.ts +504 -0
  399. package/dist/RefSubject/Hydration.d.ts.map +1 -0
  400. package/dist/RefSubject/Hydration.js +300 -0
  401. package/dist/RefSubject/RefArray.d.ts +382 -35
  402. package/dist/RefSubject/RefArray.d.ts.map +1 -1
  403. package/dist/RefSubject/RefArray.js +374 -40
  404. package/dist/RefSubject/RefBigDecimal.d.ts +241 -21
  405. package/dist/RefSubject/RefBigDecimal.d.ts.map +1 -1
  406. package/dist/RefSubject/RefBigDecimal.js +229 -20
  407. package/dist/RefSubject/RefBigInt.d.ts +181 -16
  408. package/dist/RefSubject/RefBigInt.d.ts.map +1 -1
  409. package/dist/RefSubject/RefBigInt.js +169 -15
  410. package/dist/RefSubject/RefBoolean.d.ts +181 -16
  411. package/dist/RefSubject/RefBoolean.d.ts.map +1 -1
  412. package/dist/RefSubject/RefBoolean.js +169 -15
  413. package/dist/RefSubject/RefCause.d.ts +133 -12
  414. package/dist/RefSubject/RefCause.d.ts.map +1 -1
  415. package/dist/RefSubject/RefCause.js +121 -11
  416. package/dist/RefSubject/RefChunk.d.ts +481 -76
  417. package/dist/RefSubject/RefChunk.d.ts.map +1 -1
  418. package/dist/RefSubject/RefChunk.js +471 -75
  419. package/dist/RefSubject/RefDateTime.d.ts +133 -12
  420. package/dist/RefSubject/RefDateTime.d.ts.map +1 -1
  421. package/dist/RefSubject/RefDateTime.js +122 -12
  422. package/dist/RefSubject/RefDuration.d.ts +169 -15
  423. package/dist/RefSubject/RefDuration.d.ts.map +1 -1
  424. package/dist/RefSubject/RefDuration.js +157 -14
  425. package/dist/RefSubject/RefGraph.d.ts +349 -35
  426. package/dist/RefSubject/RefGraph.d.ts.map +1 -1
  427. package/dist/RefSubject/RefGraph.js +334 -32
  428. package/dist/RefSubject/RefHashMap.d.ts +323 -28
  429. package/dist/RefSubject/RefHashMap.d.ts.map +1 -1
  430. package/dist/RefSubject/RefHashMap.js +317 -29
  431. package/dist/RefSubject/RefHashRing.d.ts +159 -15
  432. package/dist/RefSubject/RefHashRing.d.ts.map +1 -1
  433. package/dist/RefSubject/RefHashRing.js +145 -12
  434. package/dist/RefSubject/RefHashSet.d.ts +251 -22
  435. package/dist/RefSubject/RefHashSet.d.ts.map +1 -1
  436. package/dist/RefSubject/RefHashSet.js +238 -20
  437. package/dist/RefSubject/RefIterable.d.ts +358 -32
  438. package/dist/RefSubject/RefIterable.d.ts.map +1 -1
  439. package/dist/RefSubject/RefIterable.js +350 -30
  440. package/dist/RefSubject/RefOption.d.ts +157 -14
  441. package/dist/RefSubject/RefOption.d.ts.map +1 -1
  442. package/dist/RefSubject/RefOption.js +145 -13
  443. package/dist/RefSubject/RefRecord.d.ts +402 -64
  444. package/dist/RefSubject/RefRecord.d.ts.map +1 -1
  445. package/dist/RefSubject/RefRecord.js +364 -39
  446. package/dist/RefSubject/RefResult.d.ts +167 -35
  447. package/dist/RefSubject/RefResult.d.ts.map +1 -1
  448. package/dist/RefSubject/RefResult.js +133 -12
  449. package/dist/RefSubject/RefString.d.ts +205 -18
  450. package/dist/RefSubject/RefString.d.ts.map +1 -1
  451. package/dist/RefSubject/RefString.js +193 -17
  452. package/dist/RefSubject/RefStruct.d.ts +169 -14
  453. package/dist/RefSubject/RefStruct.d.ts.map +1 -1
  454. package/dist/RefSubject/RefStruct.js +157 -13
  455. package/dist/RefSubject/RefSubject.d.ts +1197 -45
  456. package/dist/RefSubject/RefSubject.d.ts.map +1 -1
  457. package/dist/RefSubject/RefSubject.js +935 -88
  458. package/dist/RefSubject/RefTrie.d.ts +323 -37
  459. package/dist/RefSubject/RefTrie.d.ts.map +1 -1
  460. package/dist/RefSubject/RefTrie.js +311 -31
  461. package/dist/RefSubject/RefTuple.d.ts +127 -11
  462. package/dist/RefSubject/RefTuple.d.ts.map +1 -1
  463. package/dist/RefSubject/RefTuple.js +114 -9
  464. package/dist/RefSubject/index.d.ts +1 -0
  465. package/dist/RefSubject/index.d.ts.map +1 -1
  466. package/dist/RefSubject/index.js +1 -0
  467. package/dist/RefSubject.d.ts +2 -1
  468. package/dist/RefSubject.d.ts.map +1 -1
  469. package/dist/RefSubject.js +2 -1
  470. package/dist/RefTrie.d.ts +2 -0
  471. package/dist/RefTrie.d.ts.map +1 -0
  472. package/dist/RefTrie.js +1 -0
  473. package/dist/RefTuple.d.ts +2 -0
  474. package/dist/RefTuple.d.ts.map +1 -0
  475. package/dist/RefTuple.js +1 -0
  476. package/dist/Sink/Sink.d.ts +396 -23
  477. package/dist/Sink/Sink.d.ts.map +1 -1
  478. package/dist/Sink/Sink.js +55 -7
  479. package/dist/Sink/combinators.d.ts +740 -11
  480. package/dist/Sink/combinators.d.ts.map +1 -1
  481. package/dist/Sink/combinators.js +716 -14
  482. package/dist/Subject/Subject.d.ts +1022 -27
  483. package/dist/Subject/Subject.d.ts.map +1 -1
  484. package/dist/Subject/Subject.js +909 -43
  485. package/dist/Versioned/Versioned.d.ts +447 -27
  486. package/dist/Versioned/Versioned.d.ts.map +1 -1
  487. package/dist/Versioned/Versioned.js +282 -48
  488. package/dist/index.d.ts +22 -3
  489. package/dist/index.d.ts.map +1 -1
  490. package/dist/index.js +22 -3
  491. package/package.json +126 -16
  492. package/dist/Fx/constructors/fromYieldable.d.ts +0 -12
  493. package/dist/Fx/constructors/fromYieldable.d.ts.map +0 -1
  494. package/dist/Fx/constructors/fromYieldable.js +0 -12
  495. package/src/Fx/Fx.ts +0 -164
  496. package/src/Fx/TypeId.ts +0 -25
  497. package/src/Fx/combinators/additive.ts +0 -142
  498. package/src/Fx/combinators/catch.ts +0 -421
  499. package/src/Fx/combinators/causes.ts +0 -23
  500. package/src/Fx/combinators/changesWithEffect.ts +0 -66
  501. package/src/Fx/combinators/compact.ts +0 -15
  502. package/src/Fx/combinators/continueWith.ts +0 -78
  503. package/src/Fx/combinators/dropUntil.ts +0 -47
  504. package/src/Fx/combinators/ensuring.ts +0 -23
  505. package/src/Fx/combinators/exhaustLatestMap.ts +0 -74
  506. package/src/Fx/combinators/exhaustLatestMapEffect.ts +0 -25
  507. package/src/Fx/combinators/exhaustMap.ts +0 -36
  508. package/src/Fx/combinators/exhaustMapEffect.ts +0 -23
  509. package/src/Fx/combinators/exit.ts +0 -15
  510. package/src/Fx/combinators/filter.ts +0 -22
  511. package/src/Fx/combinators/filterEffect.ts +0 -31
  512. package/src/Fx/combinators/filterMap.ts +0 -23
  513. package/src/Fx/combinators/filterMapEffect.ts +0 -32
  514. package/src/Fx/combinators/filterMapLoop.ts +0 -35
  515. package/src/Fx/combinators/filterMapLoopCause.ts +0 -36
  516. package/src/Fx/combinators/filterMapLoopCauseEffect.ts +0 -46
  517. package/src/Fx/combinators/filterMapLoopEffect.ts +0 -36
  518. package/src/Fx/combinators/flatMap.ts +0 -51
  519. package/src/Fx/combinators/flatMapConcurrently.ts +0 -39
  520. package/src/Fx/combinators/flatMapConcurrentlyEffect.ts +0 -26
  521. package/src/Fx/combinators/flatMapEffect.ts +0 -42
  522. package/src/Fx/combinators/flip.ts +0 -14
  523. package/src/Fx/combinators/gen.ts +0 -24
  524. package/src/Fx/combinators/genScoped.ts +0 -24
  525. package/src/Fx/combinators/index.ts +0 -61
  526. package/src/Fx/combinators/keyed.ts +0 -369
  527. package/src/Fx/combinators/loop.ts +0 -27
  528. package/src/Fx/combinators/loopCause.ts +0 -34
  529. package/src/Fx/combinators/loopCauseEffect.ts +0 -36
  530. package/src/Fx/combinators/loopEffect.ts +0 -34
  531. package/src/Fx/combinators/map.ts +0 -22
  532. package/src/Fx/combinators/mapBoth.ts +0 -40
  533. package/src/Fx/combinators/mapEffect.ts +0 -32
  534. package/src/Fx/combinators/mapError.ts +0 -28
  535. package/src/Fx/combinators/mergeAll.ts +0 -22
  536. package/src/Fx/combinators/mergeOrdered.ts +0 -123
  537. package/src/Fx/combinators/onError.ts +0 -40
  538. package/src/Fx/combinators/onExit.ts +0 -82
  539. package/src/Fx/combinators/onInterrupt.ts +0 -87
  540. package/src/Fx/combinators/provide.ts +0 -124
  541. package/src/Fx/combinators/result.ts +0 -39
  542. package/src/Fx/combinators/scan.ts +0 -82
  543. package/src/Fx/combinators/skip.ts +0 -41
  544. package/src/Fx/combinators/skipRepeats.ts +0 -15
  545. package/src/Fx/combinators/skipRepeatsWith.ts +0 -40
  546. package/src/Fx/combinators/skipWhile.ts +0 -100
  547. package/src/Fx/combinators/slice.ts +0 -55
  548. package/src/Fx/combinators/switchMap.ts +0 -55
  549. package/src/Fx/combinators/switchMapEffect.ts +0 -25
  550. package/src/Fx/combinators/take.ts +0 -38
  551. package/src/Fx/combinators/takeUntil.ts +0 -88
  552. package/src/Fx/combinators/takeWhile.ts +0 -47
  553. package/src/Fx/combinators/tapEffect.ts +0 -39
  554. package/src/Fx/combinators/tuple.ts +0 -79
  555. package/src/Fx/combinators/unwrap.ts +0 -21
  556. package/src/Fx/combinators/unwrapScoped.ts +0 -26
  557. package/src/Fx/combinators/when.ts +0 -64
  558. package/src/Fx/combinators/withSpan.ts +0 -24
  559. package/src/Fx/combinators/zip.ts +0 -175
  560. package/src/Fx/constructors/at.ts +0 -23
  561. package/src/Fx/constructors/die.ts +0 -17
  562. package/src/Fx/constructors/empty.ts +0 -10
  563. package/src/Fx/constructors/fail.ts +0 -14
  564. package/src/Fx/constructors/failCause.ts +0 -14
  565. package/src/Fx/constructors/fn.ts +0 -245
  566. package/src/Fx/constructors/fromEffect.ts +0 -24
  567. package/src/Fx/constructors/fromFailures.ts +0 -19
  568. package/src/Fx/constructors/fromIterable.ts +0 -15
  569. package/src/Fx/constructors/fromSchedule.ts +0 -18
  570. package/src/Fx/constructors/fromYieldable.ts +0 -17
  571. package/src/Fx/constructors/index.ts +0 -15
  572. package/src/Fx/constructors/interrupt.ts +0 -13
  573. package/src/Fx/constructors/make.ts +0 -103
  574. package/src/Fx/constructors/periodic.ts +0 -15
  575. package/src/Fx/constructors/succeed.ts +0 -37
  576. package/src/Fx/constructors/suspend.ts +0 -6
  577. package/src/Fx/index.ts +0 -6
  578. package/src/Fx/internal/DeferredRef.ts +0 -87
  579. package/src/Fx/internal/UnionToTuple.ts +0 -12
  580. package/src/Fx/internal/diff.ts +0 -191
  581. package/src/Fx/internal/equivalence.ts +0 -12
  582. package/src/Fx/internal/multicast.ts +0 -51
  583. package/src/Fx/internal/ring-buffer.ts +0 -60
  584. package/src/Fx/internal/scope.ts +0 -58
  585. package/src/Fx/internal/yieldable.ts +0 -31
  586. package/src/Fx/run/collect.ts +0 -79
  587. package/src/Fx/run/first.ts +0 -20
  588. package/src/Fx/run/fork.ts +0 -40
  589. package/src/Fx/run/index.ts +0 -5
  590. package/src/Fx/run/observe.ts +0 -114
  591. package/src/Fx/run/runPromise.ts +0 -32
  592. package/src/Fx/stream.ts +0 -42
  593. package/src/Fx.additive-combinators.test.ts +0 -126
  594. package/src/Fx.catch-additive.test.ts +0 -206
  595. package/src/Fx.catch.test.ts +0 -60
  596. package/src/Fx.dropUntil.test.ts +0 -61
  597. package/src/Fx.fn.test.ts +0 -51
  598. package/src/Fx.lifecycle.test.ts +0 -79
  599. package/src/Fx.mapError-mapBoth.test.ts +0 -101
  600. package/src/Fx.provide-combinators.test.ts +0 -94
  601. package/src/Fx.result-changesWithEffect.test.ts +0 -112
  602. package/src/Fx.scan.test.ts +0 -73
  603. package/src/Fx.takeWhile-skipWhile.test.ts +0 -84
  604. package/src/Fx.test.ts +0 -71
  605. package/src/Fx.ts +0 -1
  606. package/src/Fx.zip-merge-additive.test.ts +0 -171
  607. package/src/Fx.zip.test.ts +0 -133
  608. package/src/Push/Push.ts +0 -1072
  609. package/src/Push/index.ts +0 -1
  610. package/src/Push.additive.test.ts +0 -256
  611. package/src/Push.test.ts +0 -26
  612. package/src/Push.ts +0 -1
  613. package/src/RefSubject/RefArray.ts +0 -512
  614. package/src/RefSubject/RefBigDecimal.test.ts +0 -56
  615. package/src/RefSubject/RefBigDecimal.ts +0 -295
  616. package/src/RefSubject/RefBigInt.test.ts +0 -56
  617. package/src/RefSubject/RefBigInt.ts +0 -189
  618. package/src/RefSubject/RefBoolean.test.ts +0 -57
  619. package/src/RefSubject/RefBoolean.ts +0 -185
  620. package/src/RefSubject/RefCause.test.ts +0 -53
  621. package/src/RefSubject/RefCause.ts +0 -146
  622. package/src/RefSubject/RefChunk.ts +0 -510
  623. package/src/RefSubject/RefDateTime.test.ts +0 -43
  624. package/src/RefSubject/RefDateTime.ts +0 -264
  625. package/src/RefSubject/RefDuration.test.ts +0 -49
  626. package/src/RefSubject/RefDuration.ts +0 -188
  627. package/src/RefSubject/RefGraph.ts +0 -650
  628. package/src/RefSubject/RefHashMap.ts +0 -465
  629. package/src/RefSubject/RefHashRing.ts +0 -262
  630. package/src/RefSubject/RefHashSet.ts +0 -308
  631. package/src/RefSubject/RefIterable.ts +0 -445
  632. package/src/RefSubject/RefOption.test.ts +0 -67
  633. package/src/RefSubject/RefOption.ts +0 -193
  634. package/src/RefSubject/RefRecord.ts +0 -612
  635. package/src/RefSubject/RefResult.test.ts +0 -63
  636. package/src/RefSubject/RefResult.ts +0 -209
  637. package/src/RefSubject/RefString.test.ts +0 -61
  638. package/src/RefSubject/RefString.ts +0 -256
  639. package/src/RefSubject/RefStruct.test.ts +0 -60
  640. package/src/RefSubject/RefStruct.ts +0 -253
  641. package/src/RefSubject/RefSubject.ts +0 -2646
  642. package/src/RefSubject/RefTrie.ts +0 -356
  643. package/src/RefSubject/RefTuple.test.ts +0 -60
  644. package/src/RefSubject/RefTuple.ts +0 -231
  645. package/src/RefSubject/index.ts +0 -21
  646. package/src/RefSubject.additive-parity.test.ts +0 -101
  647. package/src/RefSubject.test.ts +0 -65
  648. package/src/RefSubject.ts +0 -1
  649. package/src/Sink/Sink.ts +0 -159
  650. package/src/Sink/combinators.ts +0 -1115
  651. package/src/Sink/index.ts +0 -2
  652. package/src/Sink.combinators.test.ts +0 -88
  653. package/src/Sink.reduce-collect-head-last.test.ts +0 -107
  654. package/src/Sink.ts +0 -1
  655. package/src/Subject/Subject.ts +0 -441
  656. package/src/Subject/index.ts +0 -1
  657. package/src/Subject.test.ts +0 -47
  658. package/src/Subject.ts +0 -1
  659. package/src/Versioned/Versioned.ts +0 -597
  660. package/src/Versioned/index.ts +0 -1
  661. package/src/Versioned.filterMap.test.ts +0 -91
  662. package/src/Versioned.test.ts +0 -23
  663. package/src/Versioned.ts +0 -1
  664. 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
- forkChild,
8
- isEffect,
9
- matchCauseEffect,
10
- runForkWith,
11
- servicesWith,
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
- servicesWith((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(forkChild(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(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
- });