@typed/fx 2.0.0-beta.0 → 2.0.0-beta.10

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 (640) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +58 -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 +245 -0
  10. package/dist/Fx/combinators/additive.d.ts.map +1 -0
  11. package/dist/Fx/combinators/additive.js +243 -0
  12. package/dist/Fx/combinators/catch.d.ts +246 -12
  13. package/dist/Fx/combinators/catch.d.ts.map +1 -1
  14. package/dist/Fx/combinators/catch.js +236 -12
  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 +40 -0
  19. package/dist/Fx/combinators/changesWithEffect.d.ts.map +1 -0
  20. package/dist/Fx/combinators/changesWithEffect.js +48 -0
  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 +71 -0
  37. package/dist/Fx/combinators/dropUntil.d.ts.map +1 -0
  38. package/dist/Fx/combinators/dropUntil.js +65 -0
  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 +51 -4
  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 +45 -0
  109. package/dist/Fx/combinators/index.d.ts.map +1 -1
  110. package/dist/Fx/combinators/index.js +45 -0
  111. package/dist/Fx/combinators/keyed.d.ts +124 -10
  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 +40 -0
  130. package/dist/Fx/combinators/mapBoth.d.ts.map +1 -0
  131. package/dist/Fx/combinators/mapBoth.js +33 -0
  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 +33 -0
  136. package/dist/Fx/combinators/mapError.d.ts.map +1 -0
  137. package/dist/Fx/combinators/mapError.js +32 -0
  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 +162 -8
  157. package/dist/Fx/combinators/provide.d.ts.map +1 -1
  158. package/dist/Fx/combinators/provide.js +154 -6
  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 +45 -0
  166. package/dist/Fx/combinators/result.d.ts.map +1 -0
  167. package/dist/Fx/combinators/result.js +46 -0
  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 +72 -0
  175. package/dist/Fx/combinators/scan.d.ts.map +1 -0
  176. package/dist/Fx/combinators/scan.js +77 -0
  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 +45 -1
  181. package/dist/Fx/combinators/skip.d.ts.map +1 -1
  182. package/dist/Fx/combinators/skip.js +43 -1
  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 +117 -0
  190. package/dist/Fx/combinators/skipWhile.d.ts.map +1 -0
  191. package/dist/Fx/combinators/skipWhile.js +134 -0
  192. package/dist/Fx/combinators/slice.d.ts +97 -2
  193. package/dist/Fx/combinators/slice.d.ts.map +1 -1
  194. package/dist/Fx/combinators/slice.js +45 -1
  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 +46 -1
  202. package/dist/Fx/combinators/take.d.ts.map +1 -1
  203. package/dist/Fx/combinators/take.js +44 -1
  204. package/dist/Fx/combinators/takeUntil.d.ts +62 -2
  205. package/dist/Fx/combinators/takeUntil.d.ts.map +1 -1
  206. package/dist/Fx/combinators/takeUntil.js +62 -2
  207. package/dist/Fx/combinators/takeWhile.d.ts +60 -0
  208. package/dist/Fx/combinators/takeWhile.d.ts.map +1 -0
  209. package/dist/Fx/combinators/takeWhile.js +54 -0
  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 +135 -0
  241. package/dist/Fx/combinators/zip.d.ts.map +1 -0
  242. package/dist/Fx/combinators/zip.js +160 -0
  243. package/dist/Fx/constructors/at.d.ts +23 -3
  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 +31 -2
  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 +55 -0
  306. package/dist/Fx/internal/effectableWithOverride.d.ts.map +1 -0
  307. package/dist/Fx/internal/effectableWithOverride.js +46 -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 +1286 -98
  342. package/dist/Push/Push.d.ts.map +1 -1
  343. package/dist/Push/Push.js +1074 -88
  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 +137 -16
  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 +1242 -43
  456. package/dist/RefSubject/RefSubject.d.ts.map +1 -1
  457. package/dist/RefSubject/RefSubject.js +1012 -86
  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 +789 -3
  480. package/dist/Sink/combinators.d.ts.map +1 -1
  481. package/dist/Sink/combinators.js +812 -7
  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 +475 -25
  486. package/dist/Versioned/Versioned.d.ts.map +1 -1
  487. package/dist/Versioned/Versioned.js +298 -46
  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 +125 -11
  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/catch.ts +0 -165
  498. package/src/Fx/combinators/causes.ts +0 -23
  499. package/src/Fx/combinators/compact.ts +0 -15
  500. package/src/Fx/combinators/continueWith.ts +0 -78
  501. package/src/Fx/combinators/ensuring.ts +0 -23
  502. package/src/Fx/combinators/exhaustLatestMap.ts +0 -74
  503. package/src/Fx/combinators/exhaustLatestMapEffect.ts +0 -25
  504. package/src/Fx/combinators/exhaustMap.ts +0 -36
  505. package/src/Fx/combinators/exhaustMapEffect.ts +0 -23
  506. package/src/Fx/combinators/exit.ts +0 -15
  507. package/src/Fx/combinators/filter.ts +0 -22
  508. package/src/Fx/combinators/filterEffect.ts +0 -31
  509. package/src/Fx/combinators/filterMap.ts +0 -23
  510. package/src/Fx/combinators/filterMapEffect.ts +0 -32
  511. package/src/Fx/combinators/filterMapLoop.ts +0 -35
  512. package/src/Fx/combinators/filterMapLoopCause.ts +0 -36
  513. package/src/Fx/combinators/filterMapLoopCauseEffect.ts +0 -46
  514. package/src/Fx/combinators/filterMapLoopEffect.ts +0 -36
  515. package/src/Fx/combinators/flatMap.ts +0 -51
  516. package/src/Fx/combinators/flatMapConcurrently.ts +0 -36
  517. package/src/Fx/combinators/flatMapConcurrentlyEffect.ts +0 -26
  518. package/src/Fx/combinators/flatMapEffect.ts +0 -42
  519. package/src/Fx/combinators/flip.ts +0 -14
  520. package/src/Fx/combinators/gen.ts +0 -24
  521. package/src/Fx/combinators/genScoped.ts +0 -24
  522. package/src/Fx/combinators/index.ts +0 -51
  523. package/src/Fx/combinators/keyed.ts +0 -369
  524. package/src/Fx/combinators/loop.ts +0 -27
  525. package/src/Fx/combinators/loopCause.ts +0 -34
  526. package/src/Fx/combinators/loopCauseEffect.ts +0 -36
  527. package/src/Fx/combinators/loopEffect.ts +0 -34
  528. package/src/Fx/combinators/map.ts +0 -22
  529. package/src/Fx/combinators/mapEffect.ts +0 -32
  530. package/src/Fx/combinators/mergeAll.ts +0 -22
  531. package/src/Fx/combinators/mergeOrdered.ts +0 -123
  532. package/src/Fx/combinators/onError.ts +0 -40
  533. package/src/Fx/combinators/onExit.ts +0 -82
  534. package/src/Fx/combinators/onInterrupt.ts +0 -87
  535. package/src/Fx/combinators/provide.ts +0 -62
  536. package/src/Fx/combinators/skip.ts +0 -20
  537. package/src/Fx/combinators/skipRepeats.ts +0 -15
  538. package/src/Fx/combinators/skipRepeatsWith.ts +0 -40
  539. package/src/Fx/combinators/slice.ts +0 -32
  540. package/src/Fx/combinators/switchMap.ts +0 -55
  541. package/src/Fx/combinators/switchMapEffect.ts +0 -25
  542. package/src/Fx/combinators/take.ts +0 -17
  543. package/src/Fx/combinators/takeUntil.ts +0 -50
  544. package/src/Fx/combinators/tapEffect.ts +0 -39
  545. package/src/Fx/combinators/tuple.ts +0 -79
  546. package/src/Fx/combinators/unwrap.ts +0 -21
  547. package/src/Fx/combinators/unwrapScoped.ts +0 -26
  548. package/src/Fx/combinators/when.ts +0 -64
  549. package/src/Fx/combinators/withSpan.ts +0 -24
  550. package/src/Fx/constructors/at.ts +0 -23
  551. package/src/Fx/constructors/die.ts +0 -17
  552. package/src/Fx/constructors/empty.ts +0 -10
  553. package/src/Fx/constructors/fail.ts +0 -14
  554. package/src/Fx/constructors/failCause.ts +0 -14
  555. package/src/Fx/constructors/fn.ts +0 -245
  556. package/src/Fx/constructors/fromEffect.ts +0 -24
  557. package/src/Fx/constructors/fromFailures.ts +0 -19
  558. package/src/Fx/constructors/fromIterable.ts +0 -15
  559. package/src/Fx/constructors/fromSchedule.ts +0 -18
  560. package/src/Fx/constructors/fromYieldable.ts +0 -17
  561. package/src/Fx/constructors/index.ts +0 -15
  562. package/src/Fx/constructors/interrupt.ts +0 -13
  563. package/src/Fx/constructors/make.ts +0 -103
  564. package/src/Fx/constructors/periodic.ts +0 -15
  565. package/src/Fx/constructors/succeed.ts +0 -37
  566. package/src/Fx/constructors/suspend.ts +0 -6
  567. package/src/Fx/index.ts +0 -6
  568. package/src/Fx/internal/DeferredRef.ts +0 -87
  569. package/src/Fx/internal/UnionToTuple.ts +0 -12
  570. package/src/Fx/internal/diff.ts +0 -191
  571. package/src/Fx/internal/equivalence.ts +0 -12
  572. package/src/Fx/internal/multicast.ts +0 -51
  573. package/src/Fx/internal/ring-buffer.ts +0 -60
  574. package/src/Fx/internal/scope.ts +0 -58
  575. package/src/Fx/internal/yieldable.ts +0 -31
  576. package/src/Fx/run/collect.ts +0 -79
  577. package/src/Fx/run/first.ts +0 -20
  578. package/src/Fx/run/fork.ts +0 -40
  579. package/src/Fx/run/index.ts +0 -5
  580. package/src/Fx/run/observe.ts +0 -114
  581. package/src/Fx/run/runPromise.ts +0 -32
  582. package/src/Fx/stream.ts +0 -42
  583. package/src/Fx.catch.test.ts +0 -61
  584. package/src/Fx.fn.test.ts +0 -51
  585. package/src/Fx.lifecycle.test.ts +0 -80
  586. package/src/Fx.test.ts +0 -71
  587. package/src/Fx.ts +0 -1
  588. package/src/Push/Push.ts +0 -903
  589. package/src/Push/index.ts +0 -1
  590. package/src/Push.test.ts +0 -26
  591. package/src/Push.ts +0 -1
  592. package/src/RefSubject/RefArray.ts +0 -512
  593. package/src/RefSubject/RefBigDecimal.test.ts +0 -56
  594. package/src/RefSubject/RefBigDecimal.ts +0 -295
  595. package/src/RefSubject/RefBigInt.test.ts +0 -56
  596. package/src/RefSubject/RefBigInt.ts +0 -189
  597. package/src/RefSubject/RefBoolean.test.ts +0 -57
  598. package/src/RefSubject/RefBoolean.ts +0 -185
  599. package/src/RefSubject/RefCause.test.ts +0 -53
  600. package/src/RefSubject/RefCause.ts +0 -146
  601. package/src/RefSubject/RefChunk.ts +0 -510
  602. package/src/RefSubject/RefDateTime.test.ts +0 -43
  603. package/src/RefSubject/RefDateTime.ts +0 -264
  604. package/src/RefSubject/RefDuration.test.ts +0 -49
  605. package/src/RefSubject/RefDuration.ts +0 -188
  606. package/src/RefSubject/RefGraph.ts +0 -650
  607. package/src/RefSubject/RefHashMap.ts +0 -465
  608. package/src/RefSubject/RefHashRing.ts +0 -262
  609. package/src/RefSubject/RefHashSet.ts +0 -308
  610. package/src/RefSubject/RefIterable.ts +0 -445
  611. package/src/RefSubject/RefOption.test.ts +0 -67
  612. package/src/RefSubject/RefOption.ts +0 -193
  613. package/src/RefSubject/RefRecord.ts +0 -612
  614. package/src/RefSubject/RefResult.test.ts +0 -63
  615. package/src/RefSubject/RefResult.ts +0 -209
  616. package/src/RefSubject/RefString.test.ts +0 -61
  617. package/src/RefSubject/RefString.ts +0 -256
  618. package/src/RefSubject/RefStruct.test.ts +0 -60
  619. package/src/RefSubject/RefStruct.ts +0 -253
  620. package/src/RefSubject/RefSubject.ts +0 -2545
  621. package/src/RefSubject/RefTrie.ts +0 -356
  622. package/src/RefSubject/RefTuple.test.ts +0 -60
  623. package/src/RefSubject/RefTuple.ts +0 -231
  624. package/src/RefSubject/index.ts +0 -21
  625. package/src/RefSubject.test.ts +0 -65
  626. package/src/RefSubject.ts +0 -1
  627. package/src/Sink/Sink.ts +0 -159
  628. package/src/Sink/combinators.ts +0 -993
  629. package/src/Sink/index.ts +0 -2
  630. package/src/Sink.ts +0 -1
  631. package/src/Subject/Subject.ts +0 -441
  632. package/src/Subject/index.ts +0 -1
  633. package/src/Subject.test.ts +0 -47
  634. package/src/Subject.ts +0 -1
  635. package/src/Versioned/Versioned.ts +0 -521
  636. package/src/Versioned/index.ts +0 -1
  637. package/src/Versioned.test.ts +0 -23
  638. package/src/Versioned.ts +0 -1
  639. package/src/index.ts +0 -7
  640. package/tsconfig.json +0 -6
@@ -15,12 +15,44 @@ const matchesTag = (tag, error) => {
15
15
  return tag.some((t) => t === error._tag);
16
16
  };
17
17
  /**
18
- * Recovers from a typed failure of an Fx by switching to a fallback Fx.
18
+ * Recovers from the first typed failure of an Fx by running a fallback Fx.
19
19
  *
20
- * Mirrors `Effect.catch` / `Effect.catchAll` (catches `Cause.Fail` only).
20
+ * @remarks
21
+ * ## Why
22
+ *
23
+ * Typed failures are part of an Fx's public error channel, so callers often
24
+ * need to replace a failed producer based on its first typed failure. This is
25
+ * the push-stream counterpart of Effect's typed recovery.
26
+ *
27
+ * ## Ownership and lifetime
28
+ *
29
+ * The source runs until it reports a Cause containing a `Fail`. The first typed
30
+ * failure starts exactly one fallback and the entire original Cause is replaced,
31
+ * including any defects or interrupts composed beside that Fail. A Cause with
32
+ * no Fail passes through unchanged. Source values already delivered remain
33
+ * delivered. The fallback's services become requirements of the returned Fx,
34
+ * and external interruption stops whichever run is active.
35
+ *
36
+ * @example
37
+ * ```ts
38
+ * import { catch as recover } from "@typed/fx/Fx"
39
+ * import { fail, succeed } from "@typed/fx/Fx"
40
+ *
41
+ * const resilient = recover(fail("offline"), (error) => succeed(error.length))
42
+ * ```
43
+ *
44
+ * @example Recovering a Fail discards its complete composite Cause
45
+ * ```ts
46
+ * import { Cause } from "effect"
47
+ * import { catch as recover } from "@typed/fx/Fx"
48
+ * import { failCause, succeed } from "@typed/fx/Fx"
49
+ *
50
+ * const composite = Cause.combine(Cause.fail("offline"), Cause.die("socket defect"))
51
+ * const recovered = recover(failCause(composite), () => succeed("cached"))
52
+ * ```
21
53
  *
22
54
  * @since 1.0.0
23
- * @category combinators
55
+ * @category Errors and recovery
24
56
  */
25
57
  export const catch_ = dual(2, (self, f) => make((sink) => self.run(makeSink((cause) => {
26
58
  const result = Cause.findFail(cause);
@@ -31,29 +63,96 @@ export const catch_ = dual(2, (self, f) => make((sink) => self.run(makeSink((cau
31
63
  }, sink.onSuccess))));
32
64
  export { catch_ as catch };
33
65
  /**
34
- * An alias for {@link catch}.
66
+ * Uses the Effect-style `catchAll` name for {@link catch}.
67
+ *
68
+ * @remarks
69
+ * ## Why
70
+ *
71
+ * The alias lets Effect users apply the same typed-failure recovery vocabulary
72
+ * to Fx without introducing different runtime behavior.
73
+ *
74
+ * ## Ownership and lifetime
75
+ *
76
+ * It has exactly the source/fallback switching, failure, service, and
77
+ * interruption semantics of {@link catch}; it allocates no wrapper resource
78
+ * beyond that combinator.
79
+ *
80
+ * @example
81
+ * ```ts
82
+ * import { catchAll } from "@typed/fx/Fx"
83
+ * import { fail, succeed } from "@typed/fx/Fx"
84
+ *
85
+ * const recovered = catchAll(fail("missing"), () => succeed("default"))
86
+ * ```
35
87
  *
36
88
  * @since 1.0.0
37
- * @category combinators
89
+ * @category Errors and recovery
38
90
  */
39
91
  export const catchAll = catch_;
40
92
  /**
41
- * Recovers from *any* failure cause of an Fx (including defects and interrupts)
42
- * by switching to a fallback Fx.
93
+ * Recovers from any failure cause by running a fallback Fx.
94
+ *
95
+ * @remarks
96
+ * ## Why
97
+ *
98
+ * A full `Cause` retains typed failures, defects, interruption, and composed
99
+ * causes. Handling that structure explicitly is necessary at boundaries that
100
+ * must translate every termination mode rather than only expected errors.
101
+ *
102
+ * ## Ownership and lifetime
103
+ *
104
+ * The handler runs once after the source reports a cause and its returned Fx
105
+ * continues in the same subscription. It receives the cause unchanged. Values
106
+ * emitted before failure are not replayed, and the fallback's errors and
107
+ * services replace the recovered source error and join its requirements.
108
+ * Because interruption is catchable here, use this only when intentionally
109
+ * translating interruption rather than for ordinary typed recovery.
43
110
  *
44
- * Mirrors `Effect.catchCause`.
111
+ * @example
112
+ * ```ts
113
+ * import { Cause } from "effect"
114
+ * import { catchCause } from "@typed/fx/Fx"
115
+ * import { failCause, succeed } from "@typed/fx/Fx"
116
+ *
117
+ * const reported = catchCause(failCause(Cause.die("boom")), (cause) =>
118
+ * succeed(Cause.pretty(cause))
119
+ * )
120
+ * ```
45
121
  *
46
122
  * @since 1.0.0
47
- * @category combinators
123
+ * @category Errors and recovery
48
124
  */
49
125
  export const catchCause = dual(2, (self, f) => make((sink) => self.run(makeSink((cause) => f(cause).run(sink), sink.onSuccess))));
50
126
  /**
51
- * Recovers from a typed failure by matching on the `_tag` field of the error.
127
+ * Recovers selected tagged typed failures by running a fallback Fx.
128
+ *
129
+ * @remarks
130
+ * ## Why
131
+ *
132
+ * Tagged error unions are idiomatic Effect APIs. Selecting one or more tags
133
+ * narrows the handler input and removes only those variants from the returned
134
+ * error channel, preserving the rest for later composition.
135
+ *
136
+ * ## Ownership and lifetime
137
+ *
138
+ * The source owns the subscription until its Cause contains a Fail whose tag
139
+ * matches. That first matching Fail starts one handler Fx and replaces the
140
+ * entire original Cause, including any defects or interrupts composed with it.
141
+ * A Cause with no Fail, or a first Fail with another tag, passes through intact.
142
+ * The fallback is lazy and contributes its errors and services to the result.
52
143
  *
53
- * Mirrors `Effect.catchTag`.
144
+ * @example
145
+ * ```ts
146
+ * import { catchTag } from "@typed/fx/Fx"
147
+ * import { fail, succeed } from "@typed/fx/Fx"
148
+ *
149
+ * type Missing = { readonly _tag: "Missing"; readonly id: string }
150
+ * const source = fail<Missing>({ _tag: "Missing", id: "42" })
151
+ * const recovered = catchTag(source, "Missing", ({ id }) => succeed(`missing:${id}`))
152
+ * ```
54
153
  *
55
154
  * @since 1.0.0
56
- * @category combinators
155
+ * @category Errors and recovery
57
156
  */
58
157
  export const catchTag = dual(3, (self, k, f) => make((sink) => self.run(makeSink((cause) => {
59
158
  const result = Cause.findFail(cause);
@@ -67,3 +166,128 @@ export const catchTag = dual(3, (self, k, f) => make((sink) => self.run(makeSink
67
166
  return sink.onFailure(cause);
68
167
  }
69
168
  }, sink.onSuccess))));
169
+ /**
170
+ * Recovers a typed failure only when a predicate accepts it.
171
+ *
172
+ * @remarks
173
+ * ## Why
174
+ *
175
+ * Some typed errors are distinguished by values rather than tags. Predicate
176
+ * recovery handles that subset while retaining `E` in the result because a
177
+ * rejected error can still escape.
178
+ *
179
+ * ## Ownership and lifetime
180
+ *
181
+ * The predicate is evaluated on the first Fail found anywhere in the source
182
+ * Cause. A match starts one lazy fallback and replaces that entire Cause,
183
+ * including any defects or interrupts composed with the Fail. A rejection, or
184
+ * a Cause containing no Fail, forwards the original Cause unchanged. The
185
+ * fallback contributes its errors and services and shares the subscription.
186
+ *
187
+ * @example
188
+ * ```ts
189
+ * import { catchIf } from "@typed/fx/Fx"
190
+ * import { fail, succeed } from "@typed/fx/Fx"
191
+ *
192
+ * const recovered = catchIf(fail(404), (status) => status === 404, () => succeed("missing"))
193
+ * ```
194
+ *
195
+ * @since 1.0.0
196
+ * @category Errors and recovery
197
+ */
198
+ export const catchIf = dual(3, (self, predicate, f) => make((sink) => self.run(makeSink((cause) => {
199
+ const result = Cause.findFail(cause);
200
+ if (Result.isFailure(result)) {
201
+ return sink.onFailure(result.failure);
202
+ }
203
+ const error = result.success.error;
204
+ if (predicate(error)) {
205
+ return f(error).run(sink);
206
+ }
207
+ return sink.onFailure(cause);
208
+ }, sink.onSuccess))));
209
+ /**
210
+ * Recovers a failure cause only when a predicate accepts the complete cause.
211
+ *
212
+ * @remarks
213
+ * ## Why
214
+ *
215
+ * Cause-level predicates can distinguish defects, interruption, sequential or
216
+ * parallel cause structure that a typed-error predicate cannot observe.
217
+ *
218
+ * ## Ownership and lifetime
219
+ *
220
+ * The predicate receives the source cause unchanged. A match starts one lazy
221
+ * fallback in the same subscription; otherwise the original cause propagates.
222
+ * The fallback's requirements and errors are added, prior source values stay
223
+ * delivered, and interrupting the returned Fx interrupts its active run.
224
+ *
225
+ * @example
226
+ * ```ts
227
+ * import { Cause } from "effect"
228
+ * import { catchCauseIf } from "@typed/fx/Fx"
229
+ * import { failCause, succeed } from "@typed/fx/Fx"
230
+ *
231
+ * const recovered = catchCauseIf(
232
+ * failCause(Cause.die("bad decoder")),
233
+ * Cause.hasDies,
234
+ * () => succeed("reported")
235
+ * )
236
+ * ```
237
+ *
238
+ * @since 1.0.0
239
+ * @category Errors and recovery
240
+ */
241
+ export const catchCauseIf = dual(3, (self, predicate, f) => make((sink) => self.run(makeSink((cause) => (predicate(cause) ? f(cause).run(sink) : sink.onFailure(cause)), sink.onSuccess))));
242
+ /**
243
+ * Recovers several tagged typed-error variants with one handler table.
244
+ *
245
+ * @remarks
246
+ * ## Why
247
+ *
248
+ * A handler table keeps multi-variant recovery exhaustive and preserves the
249
+ * precise success, error, and service unions produced by each selected case.
250
+ * Unlisted variants remain visible in the returned error channel.
251
+ *
252
+ * ## Ownership and lifetime
253
+ *
254
+ * The first Fail found anywhere in the source Cause is inspected. A listed tag
255
+ * starts exactly one handler Fx and replaces the entire original Cause,
256
+ * including any defects or interrupts composed with that Fail. An untagged or
257
+ * unlisted first Fail, or a Cause with no Fail, propagates intact. Handlers are
258
+ * lazy and contribute their individual errors and service requirements.
259
+ *
260
+ * @example
261
+ * ```ts
262
+ * import { catchTags } from "@typed/fx/Fx"
263
+ * import { fail, succeed } from "@typed/fx/Fx"
264
+ *
265
+ * type Failure =
266
+ * | { readonly _tag: "Missing"; readonly id: string }
267
+ * | { readonly _tag: "Forbidden" }
268
+ * const source = fail<Failure>({ _tag: "Missing", id: "42" })
269
+ * const recovered = catchTags(source, {
270
+ * Missing: ({ id }) => succeed(`missing:${id}`),
271
+ * Forbidden: () => succeed("forbidden")
272
+ * })
273
+ * ```
274
+ *
275
+ * @since 1.0.0
276
+ * @category Errors and recovery
277
+ */
278
+ export const catchTags = dual(2, (self, cases) => make((sink) => self.run(makeSink((cause) => {
279
+ const result = Cause.findFail(cause);
280
+ if (Result.isFailure(result)) {
281
+ return sink.onFailure(result.failure);
282
+ }
283
+ const error = result.success.error;
284
+ if (!hasTag(error)) {
285
+ return sink.onFailure(cause);
286
+ }
287
+ const tag = error._tag;
288
+ const handler = cases[tag];
289
+ if (handler !== undefined) {
290
+ return handler(error).run(sink);
291
+ }
292
+ return sink.onFailure(cause);
293
+ }, sink.onSuccess))));
@@ -1,12 +1,35 @@
1
1
  import type * as Cause from "effect/Cause";
2
2
  import type { Fx } from "../Fx.js";
3
3
  /**
4
- * Emits only the failure causes from an Fx, discarding successful values.
4
+ * Emits the source's terminal failure cause and discards every successful value.
5
+ *
6
+ * @remarks
7
+ * ## Why
8
+ *
9
+ * Failure telemetry and supervision often need the complete Effect `Cause`
10
+ * without treating that cause as another failure. Materializing only the
11
+ * failure side makes those pipelines ordinary, infallible Fx values.
12
+ *
13
+ * ## Ownership and lifetime
14
+ *
15
+ * The source is subscribed once. Success values are dropped in arrival order;
16
+ * a terminal cause is emitted once and the returned Fx completes without a
17
+ * typed error. Defects and interruption are retained inside the emitted cause.
18
+ * No resource is acquired beyond the source subscription.
19
+ *
20
+ * @example
21
+ * ```ts
22
+ * import { Cause } from "effect"
23
+ * import { causes } from "@typed/fx/Fx"
24
+ * import { failCause } from "@typed/fx/Fx"
25
+ *
26
+ * const failures = causes(failCause(Cause.fail("offline")))
27
+ * ```
5
28
  *
6
29
  * @param fx - The `Fx` stream.
7
30
  * @returns An `Fx` emitting `Cause<E>`.
8
31
  * @since 1.0.0
9
- * @category combinators
32
+ * @category Errors and recovery
10
33
  */
11
34
  export declare const causes: <A, E, R>(fx: Fx<A, E, R>) => Fx<Cause.Cause<E>, never, R>;
12
35
  //# sourceMappingURL=causes.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"causes.d.ts","sourceRoot":"","sources":["../../../src/Fx/combinators/causes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,KAAK,MAAM,cAAc,CAAC;AAG3C,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,UAAU,CAAC;AAInC;;;;;;;GAOG;AACH,eAAO,MAAM,MAAM,GAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAG,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAO1E,CAAC"}
1
+ {"version":3,"file":"causes.d.ts","sourceRoot":"","sources":["../../../src/Fx/combinators/causes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,KAAK,MAAM,cAAc,CAAC;AAG3C,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,UAAU,CAAC;AAInC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,eAAO,MAAM,MAAM,GAAI,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAG,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAO1E,CAAC"}
@@ -3,12 +3,35 @@ import * as Option from "effect/Option";
3
3
  import { exit } from "./exit.js";
4
4
  import { filterMap } from "./filterMap.js";
5
5
  /**
6
- * Emits only the failure causes from an Fx, discarding successful values.
6
+ * Emits the source's terminal failure cause and discards every successful value.
7
+ *
8
+ * @remarks
9
+ * ## Why
10
+ *
11
+ * Failure telemetry and supervision often need the complete Effect `Cause`
12
+ * without treating that cause as another failure. Materializing only the
13
+ * failure side makes those pipelines ordinary, infallible Fx values.
14
+ *
15
+ * ## Ownership and lifetime
16
+ *
17
+ * The source is subscribed once. Success values are dropped in arrival order;
18
+ * a terminal cause is emitted once and the returned Fx completes without a
19
+ * typed error. Defects and interruption are retained inside the emitted cause.
20
+ * No resource is acquired beyond the source subscription.
21
+ *
22
+ * @example
23
+ * ```ts
24
+ * import { Cause } from "effect"
25
+ * import { causes } from "@typed/fx/Fx"
26
+ * import { failCause } from "@typed/fx/Fx"
27
+ *
28
+ * const failures = causes(failCause(Cause.fail("offline")))
29
+ * ```
7
30
  *
8
31
  * @param fx - The `Fx` stream.
9
32
  * @returns An `Fx` emitting `Cause<E>`.
10
33
  * @since 1.0.0
11
- * @category combinators
34
+ * @category Errors and recovery
12
35
  */
13
36
  export const causes = (fx) => filterMap(exit(fx), Exit.match({
14
37
  onFailure: Option.some,
@@ -0,0 +1,40 @@
1
+ import * as Effect from "effect/Effect";
2
+ import type { Fx } from "../Fx.js";
3
+ /**
4
+ * Drops consecutive elements that are considered equal by an effectful predicate.
5
+ * When the effect returns `true`, the element is skipped; when `false`, it is emitted.
6
+ *
7
+ * This is the effectful variant of `skipRepeatsWith`: instead of a pure
8
+ * `Equivalence<A>`, you supply `(prev, next) => Effect<boolean>` where `true`
9
+ * means "equal" (skip) and `false` means "changed" (emit).
10
+ *
11
+ * @remarks
12
+ * ## Why
13
+ * `changesWithEffect` supports service-backed or failing equivalence checks. The first value always
14
+ * emits; every later value is compared with the last emitted value and emits only when the effect
15
+ * returns `false`, preserving source order.
16
+ *
17
+ * ## Ownership and lifetime
18
+ * One previous value and a semaphore are scoped to each run. Comparison effects are serialized,
19
+ * interrupted with the run, and add their failures and services to the resulting Fx.
20
+ *
21
+ * @example
22
+ * ```ts
23
+ * import { Effect } from "effect"
24
+ * import { Fx } from "@typed/fx"
25
+ *
26
+ * const changes = Fx.fromIterable([1, 1, 2]).pipe(
27
+ * Fx.changesWithEffect((previous, next) => Effect.succeed(previous === next)),
28
+ * )
29
+ * ```
30
+ *
31
+ * @param f - Effectful function: `(prev, next) => Effect<boolean>`. Return `true` to skip (treat as duplicate), `false` to emit.
32
+ * @returns An `Fx` with consecutive "equal" elements removed.
33
+ * @since 1.0.0
34
+ * @category Selecting values
35
+ */
36
+ export declare const changesWithEffect: {
37
+ <A, E2, R2>(f: (prev: A, next: A) => Effect.Effect<boolean, E2, R2>): <E, R>(fx: Fx<A, E | E2, R>) => Fx<A, E | E2, R | R2>;
38
+ <A, E, R, E2, R2>(fx: Fx<A, E | E2, R>, f: (prev: A, next: A) => Effect.Effect<boolean, E2, R2>): Fx<A, E | E2, R | R2>;
39
+ };
40
+ //# sourceMappingURL=changesWithEffect.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"changesWithEffect.d.ts","sourceRoot":"","sources":["../../../src/Fx/combinators/changesWithEffect.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAMxC,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,UAAU,CAAC;AAEnC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,eAAO,MAAM,iBAAiB,EAAE;IAC9B,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EACR,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,EAAE,EAAE,CAAC,GACtD,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;IAEzD,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EACd,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,EACpB,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,EAAE,EAAE,CAAC,GACtD,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;CAoC1B,CAAC"}
@@ -0,0 +1,48 @@
1
+ import * as Effect from "effect/Effect";
2
+ import { dual } from "effect/Function";
3
+ import * as Option from "effect/Option";
4
+ import * as sinkCore from "../../Sink/combinators.js";
5
+ import { make as makeSink } from "../../Sink/Sink.js";
6
+ import { make } from "../constructors/make.js";
7
+ /**
8
+ * Drops consecutive elements that are considered equal by an effectful predicate.
9
+ * When the effect returns `true`, the element is skipped; when `false`, it is emitted.
10
+ *
11
+ * This is the effectful variant of `skipRepeatsWith`: instead of a pure
12
+ * `Equivalence<A>`, you supply `(prev, next) => Effect<boolean>` where `true`
13
+ * means "equal" (skip) and `false` means "changed" (emit).
14
+ *
15
+ * @remarks
16
+ * ## Why
17
+ * `changesWithEffect` supports service-backed or failing equivalence checks. The first value always
18
+ * emits; every later value is compared with the last emitted value and emits only when the effect
19
+ * returns `false`, preserving source order.
20
+ *
21
+ * ## Ownership and lifetime
22
+ * One previous value and a semaphore are scoped to each run. Comparison effects are serialized,
23
+ * interrupted with the run, and add their failures and services to the resulting Fx.
24
+ *
25
+ * @example
26
+ * ```ts
27
+ * import { Effect } from "effect"
28
+ * import { Fx } from "@typed/fx"
29
+ *
30
+ * const changes = Fx.fromIterable([1, 1, 2]).pipe(
31
+ * Fx.changesWithEffect((previous, next) => Effect.succeed(previous === next)),
32
+ * )
33
+ * ```
34
+ *
35
+ * @param f - Effectful function: `(prev, next) => Effect<boolean>`. Return `true` to skip (treat as duplicate), `false` to emit.
36
+ * @returns An `Fx` with consecutive "equal" elements removed.
37
+ * @since 1.0.0
38
+ * @category Selecting values
39
+ */
40
+ export const changesWithEffect = dual(2, (fx, f) => make((sink) => sinkCore.withStateSemaphore(sink, Option.none(), (s) => fx.run(makeSink(s.onFailure, (a2) => Effect.matchCauseEffect(Effect.flatMap(s.get, (state) => Option.match(state, {
41
+ onNone: () => Effect.flatMap(s.onSuccess(a2), () => s.updateEffect(() => Effect.succeed(Option.some(a2)))),
42
+ onSome: (prev) => Effect.matchCauseEffect(f(prev, a2), {
43
+ onFailure: (cause) => s.onFailure(cause),
44
+ onSuccess: (equal) => equal
45
+ ? s.updateEffect(() => Effect.succeed(Option.some(prev)))
46
+ : Effect.flatMap(s.onSuccess(a2), () => s.updateEffect(() => Effect.succeed(Option.some(a2)))),
47
+ }),
48
+ })), { onFailure: (cause) => s.onFailure(cause), onSuccess: () => Effect.void }))))));
@@ -3,10 +3,27 @@ import type { Fx } from "../Fx.js";
3
3
  /**
4
4
  * Compacts an Fx of Options, discarding `None` values and unwrapping `Some` values.
5
5
  *
6
+ * @remarks
7
+ * ## Why
8
+ * `compact` turns optional pushed values into ordinary pushed values without inventing a sentinel.
9
+ * It emits once for each `Some`, never for `None`, and preserves the order of retained values.
10
+ *
11
+ * ## Ownership and lifetime
12
+ * This is a stateless sink transformation. It acquires no resources and forwards source failures,
13
+ * services, completion, and interruption unchanged.
14
+ *
15
+ * @example
16
+ * ```ts
17
+ * import { Option } from "effect"
18
+ * import { Fx } from "@typed/fx"
19
+ *
20
+ * const present = Fx.fromIterable([Option.some(1), Option.none(), Option.some(2)]).pipe(Fx.compact)
21
+ * ```
22
+ *
6
23
  * @param self - An `Fx` emitting `Option<A>`.
7
24
  * @returns An `Fx` emitting `A`.
8
25
  * @since 1.0.0
9
- * @category combinators
26
+ * @category Selecting values
10
27
  */
11
28
  export declare const compact: <A, E, R>(self: Fx<Option.Option<A>, E, R>) => Fx<A, E, R>;
12
29
  //# sourceMappingURL=compact.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"compact.d.ts","sourceRoot":"","sources":["../../../src/Fx/combinators/compact.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,MAAM,eAAe,CAAC;AAG7C,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,UAAU,CAAC;AAEnC;;;;;;;GAOG;AACH,eAAO,MAAM,OAAO,GAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CACnB,CAAC"}
1
+ {"version":3,"file":"compact.d.ts","sourceRoot":"","sources":["../../../src/Fx/combinators/compact.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,MAAM,eAAe,CAAC;AAG7C,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,UAAU,CAAC;AAEnC;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,eAAO,MAAM,OAAO,GAAI,CAAC,EAAE,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CACnB,CAAC"}
@@ -3,9 +3,26 @@ import { make } from "../constructors/make.js";
3
3
  /**
4
4
  * Compacts an Fx of Options, discarding `None` values and unwrapping `Some` values.
5
5
  *
6
+ * @remarks
7
+ * ## Why
8
+ * `compact` turns optional pushed values into ordinary pushed values without inventing a sentinel.
9
+ * It emits once for each `Some`, never for `None`, and preserves the order of retained values.
10
+ *
11
+ * ## Ownership and lifetime
12
+ * This is a stateless sink transformation. It acquires no resources and forwards source failures,
13
+ * services, completion, and interruption unchanged.
14
+ *
15
+ * @example
16
+ * ```ts
17
+ * import { Option } from "effect"
18
+ * import { Fx } from "@typed/fx"
19
+ *
20
+ * const present = Fx.fromIterable([Option.some(1), Option.none(), Option.some(2)]).pipe(Fx.compact)
21
+ * ```
22
+ *
6
23
  * @param self - An `Fx` emitting `Option<A>`.
7
24
  * @returns An `Fx` emitting `A`.
8
25
  * @since 1.0.0
9
- * @category combinators
26
+ * @category Selecting values
10
27
  */
11
28
  export const compact = (self) => make((sink) => self.run(sinkCore.compact(sink)));
@@ -0,0 +1,86 @@
1
+ import type { FlatMapLike } from "./flatMap.js";
2
+ import type { FlatMapEffectLike } from "./flatMapEffect.js";
3
+ /**
4
+ * Maps each element to an inner Fx and concatenates the results sequentially.
5
+ *
6
+ * @remarks
7
+ * ## Why
8
+ *
9
+ * `concatMap` is the flattening policy for work that must not overlap: the next
10
+ * source value is admitted only after the current inner Fx completes. It is the
11
+ * bounded-concurrency form of {@link flatMapConcurrently} with a limit of one.
12
+ *
13
+ * ## Ordering and cardinality
14
+ *
15
+ * Every source value creates exactly one inner Fx. Inner values retain both
16
+ * source order and their order within each inner Fx; no inner value is buffered
17
+ * behind a later inner because later inners have not started yet.
18
+ *
19
+ * ## Ownership and lifetime
20
+ *
21
+ * Source and inner failures are forwarded to the output Sink, and both service
22
+ * requirements remain in the returned type. The required `Scope` owns the
23
+ * admitted inner fiber; interruption closes it and prevents queued source work
24
+ * from starting. No values are dropped, switched, or replayed.
25
+ *
26
+ * @example
27
+ * ```ts
28
+ * import { Fx } from "@typed/fx"
29
+ * import { Effect } from "effect"
30
+ *
31
+ * const ordered = Fx.concatMap(Fx.fromIterable([
32
+ * { id: "first", wait: "20 millis" as const },
33
+ * { id: "second", wait: "1 millis" as const }
34
+ * ]), ({ id, wait }) => Fx.at(id, wait))
35
+ *
36
+ * const program = Effect.scoped(Fx.collectAll(ordered))
37
+ * Effect.runPromise(program).then(console.log)
38
+ * // ["first", "second"]: the one-millisecond inner is not started early
39
+ * ```
40
+ *
41
+ * @since 1.0.0
42
+ * @category Concurrent work
43
+ */
44
+ export declare const concatMap: FlatMapLike;
45
+ /**
46
+ * Maps each element to an Effect and concatenates the results sequentially.
47
+ *
48
+ * @remarks
49
+ * ## Why
50
+ *
51
+ * This is the Effect-producing form of {@link concatMap}. It makes serialized
52
+ * commands explicit without requiring callers to wrap each Effect with
53
+ * `Fx.fromEffect`.
54
+ *
55
+ * ## Ordering and cardinality
56
+ *
57
+ * Each source value starts one Effect only after the previous Effect has
58
+ * completed. Each successful Effect emits exactly one value, so output order is
59
+ * source order and there is no overlap or buffering of successful results.
60
+ *
61
+ * ## Ownership and lifetime
62
+ *
63
+ * Source failures and Effect failures remain typed; callback services are added
64
+ * to the output requirements. The returned Fx requires `Scope`, which owns the
65
+ * active callback Effect and interrupts it when observation ends.
66
+ *
67
+ * @example
68
+ * ```ts
69
+ * import { Fx } from "@typed/fx"
70
+ * import { Effect } from "effect"
71
+ *
72
+ * const saved = Fx.concatMapEffect(Fx.fromIterable([
73
+ * { id: "first", wait: "20 millis" as const },
74
+ * { id: "second", wait: "1 millis" as const }
75
+ * ]), ({ id, wait }) => Effect.as(Effect.sleep(wait), id))
76
+ *
77
+ * const program = Effect.scoped(Fx.collectAll(saved))
78
+ * Effect.runPromise(program).then(console.log)
79
+ * // ["first", "second"]
80
+ * ```
81
+ *
82
+ * @since 1.0.0
83
+ * @category Concurrent work
84
+ */
85
+ export declare const concatMapEffect: FlatMapEffectLike;
86
+ //# sourceMappingURL=concatMap.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"concatMap.d.ts","sourceRoot":"","sources":["../../../src/Fx/combinators/concatMap.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAE5D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AACH,eAAO,MAAM,SAAS,EAAE,WAOvB,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,eAAO,MAAM,eAAe,EAAE,iBAM7B,CAAC"}