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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (663) hide show
  1. package/README.md +34 -20
  2. package/dist/Fx/Fx.d.ts +362 -10
  3. package/dist/Fx/Fx.d.ts.map +1 -1
  4. package/dist/Fx/Fx.js +32 -1
  5. package/dist/Fx/TypeId.d.ts +49 -3
  6. package/dist/Fx/TypeId.d.ts.map +1 -1
  7. package/dist/Fx/TypeId.js +39 -2
  8. package/dist/Fx/combinators/additive.d.ts +156 -5
  9. package/dist/Fx/combinators/additive.d.ts.map +1 -1
  10. package/dist/Fx/combinators/additive.js +156 -5
  11. package/dist/Fx/combinators/catch.d.ts +195 -22
  12. package/dist/Fx/combinators/catch.d.ts.map +1 -1
  13. package/dist/Fx/combinators/catch.js +186 -16
  14. package/dist/Fx/combinators/causes.d.ts +24 -1
  15. package/dist/Fx/combinators/causes.d.ts.map +1 -1
  16. package/dist/Fx/combinators/causes.js +24 -1
  17. package/dist/Fx/combinators/changesWithEffect.d.ts +20 -0
  18. package/dist/Fx/combinators/changesWithEffect.d.ts.map +1 -1
  19. package/dist/Fx/combinators/changesWithEffect.js +20 -0
  20. package/dist/Fx/combinators/compact.d.ts +17 -0
  21. package/dist/Fx/combinators/compact.d.ts.map +1 -1
  22. package/dist/Fx/combinators/compact.js +17 -0
  23. package/dist/Fx/combinators/concatMap.d.ts +86 -0
  24. package/dist/Fx/combinators/concatMap.d.ts.map +1 -0
  25. package/dist/Fx/combinators/concatMap.js +86 -0
  26. package/dist/Fx/combinators/continueWith.d.ts +109 -1
  27. package/dist/Fx/combinators/continueWith.d.ts.map +1 -1
  28. package/dist/Fx/combinators/continueWith.js +109 -1
  29. package/dist/Fx/combinators/debounce.d.ts +34 -0
  30. package/dist/Fx/combinators/debounce.d.ts.map +1 -0
  31. package/dist/Fx/combinators/debounce.js +35 -0
  32. package/dist/Fx/combinators/delay.d.ts +34 -0
  33. package/dist/Fx/combinators/delay.d.ts.map +1 -0
  34. package/dist/Fx/combinators/delay.js +31 -0
  35. package/dist/Fx/combinators/dropUntil.d.ts +42 -0
  36. package/dist/Fx/combinators/dropUntil.d.ts.map +1 -1
  37. package/dist/Fx/combinators/dropUntil.js +42 -0
  38. package/dist/Fx/combinators/during.d.ts +38 -0
  39. package/dist/Fx/combinators/during.d.ts.map +1 -0
  40. package/dist/Fx/combinators/during.js +85 -0
  41. package/dist/Fx/combinators/ensuring.d.ts +33 -3
  42. package/dist/Fx/combinators/ensuring.d.ts.map +1 -1
  43. package/dist/Fx/combinators/ensuring.js +33 -3
  44. package/dist/Fx/combinators/exhaustLatestMap.d.ts +40 -4
  45. package/dist/Fx/combinators/exhaustLatestMap.d.ts.map +1 -1
  46. package/dist/Fx/combinators/exhaustLatestMap.js +40 -4
  47. package/dist/Fx/combinators/exhaustLatestMapEffect.d.ts +39 -3
  48. package/dist/Fx/combinators/exhaustLatestMapEffect.d.ts.map +1 -1
  49. package/dist/Fx/combinators/exhaustLatestMapEffect.js +39 -3
  50. package/dist/Fx/combinators/exhaustMap.d.ts +37 -0
  51. package/dist/Fx/combinators/exhaustMap.d.ts.map +1 -1
  52. package/dist/Fx/combinators/exhaustMap.js +37 -0
  53. package/dist/Fx/combinators/exhaustMapEffect.d.ts +32 -0
  54. package/dist/Fx/combinators/exhaustMapEffect.d.ts.map +1 -1
  55. package/dist/Fx/combinators/exhaustMapEffect.js +32 -0
  56. package/dist/Fx/combinators/exit.d.ts +22 -1
  57. package/dist/Fx/combinators/exit.d.ts.map +1 -1
  58. package/dist/Fx/combinators/exit.js +22 -1
  59. package/dist/Fx/combinators/filter.d.ts +16 -0
  60. package/dist/Fx/combinators/filter.d.ts.map +1 -1
  61. package/dist/Fx/combinators/filter.js +16 -0
  62. package/dist/Fx/combinators/filterEffect.d.ts +21 -0
  63. package/dist/Fx/combinators/filterEffect.d.ts.map +1 -1
  64. package/dist/Fx/combinators/filterEffect.js +21 -0
  65. package/dist/Fx/combinators/filterMap.d.ts +19 -0
  66. package/dist/Fx/combinators/filterMap.d.ts.map +1 -1
  67. package/dist/Fx/combinators/filterMap.js +19 -0
  68. package/dist/Fx/combinators/filterMapEffect.d.ts +20 -0
  69. package/dist/Fx/combinators/filterMapEffect.d.ts.map +1 -1
  70. package/dist/Fx/combinators/filterMapEffect.js +20 -0
  71. package/dist/Fx/combinators/filterMapLoop.d.ts +19 -0
  72. package/dist/Fx/combinators/filterMapLoop.d.ts.map +1 -1
  73. package/dist/Fx/combinators/filterMapLoop.js +19 -0
  74. package/dist/Fx/combinators/filterMapLoopCause.d.ts +20 -0
  75. package/dist/Fx/combinators/filterMapLoopCause.d.ts.map +1 -1
  76. package/dist/Fx/combinators/filterMapLoopCause.js +20 -0
  77. package/dist/Fx/combinators/filterMapLoopCauseEffect.d.ts +20 -0
  78. package/dist/Fx/combinators/filterMapLoopCauseEffect.d.ts.map +1 -1
  79. package/dist/Fx/combinators/filterMapLoopCauseEffect.js +20 -0
  80. package/dist/Fx/combinators/filterMapLoopEffect.d.ts +20 -0
  81. package/dist/Fx/combinators/filterMapLoopEffect.d.ts.map +1 -1
  82. package/dist/Fx/combinators/filterMapLoopEffect.js +20 -0
  83. package/dist/Fx/combinators/flatMap.d.ts +48 -3
  84. package/dist/Fx/combinators/flatMap.d.ts.map +1 -1
  85. package/dist/Fx/combinators/flatMap.js +35 -2
  86. package/dist/Fx/combinators/flatMapConcurrently.d.ts +50 -3
  87. package/dist/Fx/combinators/flatMapConcurrently.d.ts.map +1 -1
  88. package/dist/Fx/combinators/flatMapConcurrently.js +47 -1
  89. package/dist/Fx/combinators/flatMapConcurrentlyEffect.d.ts +47 -3
  90. package/dist/Fx/combinators/flatMapConcurrentlyEffect.d.ts.map +1 -1
  91. package/dist/Fx/combinators/flatMapConcurrentlyEffect.js +39 -1
  92. package/dist/Fx/combinators/flatMapEffect.d.ts +44 -2
  93. package/dist/Fx/combinators/flatMapEffect.d.ts.map +1 -1
  94. package/dist/Fx/combinators/flatMapEffect.js +31 -1
  95. package/dist/Fx/combinators/flip.d.ts +33 -1
  96. package/dist/Fx/combinators/flip.d.ts.map +1 -1
  97. package/dist/Fx/combinators/flip.js +33 -1
  98. package/dist/Fx/combinators/gen.d.ts +28 -9
  99. package/dist/Fx/combinators/gen.d.ts.map +1 -1
  100. package/dist/Fx/combinators/gen.js +27 -3
  101. package/dist/Fx/combinators/genScoped.d.ts +32 -9
  102. package/dist/Fx/combinators/genScoped.d.ts.map +1 -1
  103. package/dist/Fx/combinators/genScoped.js +30 -2
  104. package/dist/Fx/combinators/grouped.d.ts +89 -0
  105. package/dist/Fx/combinators/grouped.d.ts.map +1 -0
  106. package/dist/Fx/combinators/grouped.js +146 -0
  107. package/dist/Fx/combinators/index.d.ts +35 -0
  108. package/dist/Fx/combinators/index.d.ts.map +1 -1
  109. package/dist/Fx/combinators/index.js +35 -0
  110. package/dist/Fx/combinators/keyed.d.ts +121 -7
  111. package/dist/Fx/combinators/keyed.d.ts.map +1 -1
  112. package/dist/Fx/combinators/keyed.js +64 -6
  113. package/dist/Fx/combinators/loop.d.ts +16 -0
  114. package/dist/Fx/combinators/loop.d.ts.map +1 -1
  115. package/dist/Fx/combinators/loop.js +16 -0
  116. package/dist/Fx/combinators/loopCause.d.ts +17 -0
  117. package/dist/Fx/combinators/loopCause.d.ts.map +1 -1
  118. package/dist/Fx/combinators/loopCause.js +17 -0
  119. package/dist/Fx/combinators/loopCauseEffect.d.ts +18 -0
  120. package/dist/Fx/combinators/loopCauseEffect.d.ts.map +1 -1
  121. package/dist/Fx/combinators/loopCauseEffect.js +18 -0
  122. package/dist/Fx/combinators/loopEffect.d.ts +23 -0
  123. package/dist/Fx/combinators/loopEffect.d.ts.map +1 -1
  124. package/dist/Fx/combinators/loopEffect.js +23 -0
  125. package/dist/Fx/combinators/map.d.ts +45 -0
  126. package/dist/Fx/combinators/map.d.ts.map +1 -1
  127. package/dist/Fx/combinators/map.js +42 -0
  128. package/dist/Fx/combinators/mapBoth.d.ts +19 -0
  129. package/dist/Fx/combinators/mapBoth.d.ts.map +1 -1
  130. package/dist/Fx/combinators/mapBoth.js +19 -0
  131. package/dist/Fx/combinators/mapEffect.d.ts +24 -0
  132. package/dist/Fx/combinators/mapEffect.d.ts.map +1 -1
  133. package/dist/Fx/combinators/mapEffect.js +24 -0
  134. package/dist/Fx/combinators/mapError.d.ts +20 -4
  135. package/dist/Fx/combinators/mapError.d.ts.map +1 -1
  136. package/dist/Fx/combinators/mapError.js +20 -4
  137. package/dist/Fx/combinators/mergeAll.d.ts +34 -0
  138. package/dist/Fx/combinators/mergeAll.d.ts.map +1 -1
  139. package/dist/Fx/combinators/mergeAll.js +34 -0
  140. package/dist/Fx/combinators/mergeOrdered.d.ts +35 -3
  141. package/dist/Fx/combinators/mergeOrdered.d.ts.map +1 -1
  142. package/dist/Fx/combinators/mergeOrdered.js +35 -3
  143. package/dist/Fx/combinators/onError.d.ts +33 -3
  144. package/dist/Fx/combinators/onError.d.ts.map +1 -1
  145. package/dist/Fx/combinators/onError.js +33 -3
  146. package/dist/Fx/combinators/onExit.d.ts +28 -2
  147. package/dist/Fx/combinators/onExit.d.ts.map +1 -1
  148. package/dist/Fx/combinators/onExit.js +28 -2
  149. package/dist/Fx/combinators/onInterrupt.d.ts +48 -3
  150. package/dist/Fx/combinators/onInterrupt.d.ts.map +1 -1
  151. package/dist/Fx/combinators/onInterrupt.js +48 -3
  152. package/dist/Fx/combinators/pairwise.d.ts +28 -0
  153. package/dist/Fx/combinators/pairwise.d.ts.map +1 -0
  154. package/dist/Fx/combinators/pairwise.js +31 -0
  155. package/dist/Fx/combinators/provide.d.ts +130 -9
  156. package/dist/Fx/combinators/provide.d.ts.map +1 -1
  157. package/dist/Fx/combinators/provide.js +130 -9
  158. package/dist/Fx/combinators/race.d.ts +92 -0
  159. package/dist/Fx/combinators/race.d.ts.map +1 -0
  160. package/dist/Fx/combinators/race.js +149 -0
  161. package/dist/Fx/combinators/repeat.d.ts +41 -0
  162. package/dist/Fx/combinators/repeat.d.ts.map +1 -0
  163. package/dist/Fx/combinators/repeat.js +57 -0
  164. package/dist/Fx/combinators/result.d.ts +22 -0
  165. package/dist/Fx/combinators/result.d.ts.map +1 -1
  166. package/dist/Fx/combinators/result.js +26 -12
  167. package/dist/Fx/combinators/retry.d.ts +53 -0
  168. package/dist/Fx/combinators/retry.d.ts.map +1 -0
  169. package/dist/Fx/combinators/retry.js +71 -0
  170. package/dist/Fx/combinators/sample.d.ts +31 -0
  171. package/dist/Fx/combinators/sample.d.ts.map +1 -0
  172. package/dist/Fx/combinators/sample.js +42 -0
  173. package/dist/Fx/combinators/scan.d.ts +39 -0
  174. package/dist/Fx/combinators/scan.d.ts.map +1 -1
  175. package/dist/Fx/combinators/scan.js +39 -0
  176. package/dist/Fx/combinators/since.d.ts +30 -0
  177. package/dist/Fx/combinators/since.d.ts.map +1 -0
  178. package/dist/Fx/combinators/since.js +39 -0
  179. package/dist/Fx/combinators/skip.d.ts +31 -0
  180. package/dist/Fx/combinators/skip.d.ts.map +1 -1
  181. package/dist/Fx/combinators/skip.js +31 -0
  182. package/dist/Fx/combinators/skipRepeats.d.ts +16 -0
  183. package/dist/Fx/combinators/skipRepeats.d.ts.map +1 -1
  184. package/dist/Fx/combinators/skipRepeats.js +16 -0
  185. package/dist/Fx/combinators/skipRepeatsWith.d.ts +17 -0
  186. package/dist/Fx/combinators/skipRepeatsWith.d.ts.map +1 -1
  187. package/dist/Fx/combinators/skipRepeatsWith.js +17 -0
  188. package/dist/Fx/combinators/skipWhile.d.ts +68 -0
  189. package/dist/Fx/combinators/skipWhile.d.ts.map +1 -1
  190. package/dist/Fx/combinators/skipWhile.js +68 -0
  191. package/dist/Fx/combinators/slice.d.ts +82 -0
  192. package/dist/Fx/combinators/slice.d.ts.map +1 -1
  193. package/dist/Fx/combinators/slice.js +33 -0
  194. package/dist/Fx/combinators/switchMap.d.ts +38 -0
  195. package/dist/Fx/combinators/switchMap.d.ts.map +1 -1
  196. package/dist/Fx/combinators/switchMap.js +38 -0
  197. package/dist/Fx/combinators/switchMapEffect.d.ts +37 -0
  198. package/dist/Fx/combinators/switchMapEffect.d.ts.map +1 -1
  199. package/dist/Fx/combinators/switchMapEffect.js +37 -0
  200. package/dist/Fx/combinators/take.d.ts +32 -0
  201. package/dist/Fx/combinators/take.d.ts.map +1 -1
  202. package/dist/Fx/combinators/take.js +32 -0
  203. package/dist/Fx/combinators/takeUntil.d.ts +46 -0
  204. package/dist/Fx/combinators/takeUntil.d.ts.map +1 -1
  205. package/dist/Fx/combinators/takeUntil.js +46 -0
  206. package/dist/Fx/combinators/takeWhile.d.ts +31 -0
  207. package/dist/Fx/combinators/takeWhile.d.ts.map +1 -1
  208. package/dist/Fx/combinators/takeWhile.js +31 -0
  209. package/dist/Fx/combinators/tapEffect.d.ts +16 -0
  210. package/dist/Fx/combinators/tapEffect.d.ts.map +1 -1
  211. package/dist/Fx/combinators/tapEffect.js +16 -0
  212. package/dist/Fx/combinators/throttle.d.ts +79 -0
  213. package/dist/Fx/combinators/throttle.d.ts.map +1 -0
  214. package/dist/Fx/combinators/throttle.js +99 -0
  215. package/dist/Fx/combinators/timeout.d.ts +76 -0
  216. package/dist/Fx/combinators/timeout.d.ts.map +1 -0
  217. package/dist/Fx/combinators/timeout.js +110 -0
  218. package/dist/Fx/combinators/tuple.d.ts +30 -0
  219. package/dist/Fx/combinators/tuple.d.ts.map +1 -1
  220. package/dist/Fx/combinators/tuple.js +34 -3
  221. package/dist/Fx/combinators/until.d.ts +27 -0
  222. package/dist/Fx/combinators/until.d.ts.map +1 -0
  223. package/dist/Fx/combinators/until.js +56 -0
  224. package/dist/Fx/combinators/unwrap.d.ts +29 -0
  225. package/dist/Fx/combinators/unwrap.d.ts.map +1 -1
  226. package/dist/Fx/combinators/unwrap.js +29 -0
  227. package/dist/Fx/combinators/unwrapScoped.d.ts +33 -0
  228. package/dist/Fx/combinators/unwrapScoped.d.ts.map +1 -1
  229. package/dist/Fx/combinators/unwrapScoped.js +33 -0
  230. package/dist/Fx/combinators/when.d.ts +35 -0
  231. package/dist/Fx/combinators/when.d.ts.map +1 -1
  232. package/dist/Fx/combinators/when.js +36 -1
  233. package/dist/Fx/combinators/withLatestFrom.d.ts +58 -0
  234. package/dist/Fx/combinators/withLatestFrom.d.ts.map +1 -0
  235. package/dist/Fx/combinators/withLatestFrom.js +68 -0
  236. package/dist/Fx/combinators/withSpan.d.ts +35 -1
  237. package/dist/Fx/combinators/withSpan.d.ts.map +1 -1
  238. package/dist/Fx/combinators/withSpan.js +34 -3
  239. package/dist/Fx/combinators/zip.d.ts +60 -0
  240. package/dist/Fx/combinators/zip.d.ts.map +1 -1
  241. package/dist/Fx/combinators/zip.js +60 -0
  242. package/dist/Fx/constructors/at.d.ts +20 -0
  243. package/dist/Fx/constructors/at.d.ts.map +1 -1
  244. package/dist/Fx/constructors/at.js +20 -0
  245. package/dist/Fx/constructors/die.d.ts +21 -0
  246. package/dist/Fx/constructors/die.d.ts.map +1 -1
  247. package/dist/Fx/constructors/die.js +21 -0
  248. package/dist/Fx/constructors/empty.d.ts +18 -0
  249. package/dist/Fx/constructors/empty.d.ts.map +1 -1
  250. package/dist/Fx/constructors/empty.js +18 -0
  251. package/dist/Fx/constructors/fail.d.ts +21 -0
  252. package/dist/Fx/constructors/fail.d.ts.map +1 -1
  253. package/dist/Fx/constructors/fail.js +21 -0
  254. package/dist/Fx/constructors/failCause.d.ts +22 -0
  255. package/dist/Fx/constructors/failCause.d.ts.map +1 -1
  256. package/dist/Fx/constructors/failCause.js +22 -0
  257. package/dist/Fx/constructors/fn.d.ts +113 -13
  258. package/dist/Fx/constructors/fn.d.ts.map +1 -1
  259. package/dist/Fx/constructors/fn.js +36 -0
  260. package/dist/Fx/constructors/fromEffect.d.ts +43 -1
  261. package/dist/Fx/constructors/fromEffect.d.ts.map +1 -1
  262. package/dist/Fx/constructors/fromEffect.js +43 -1
  263. package/dist/Fx/constructors/fromFailures.d.ts +24 -0
  264. package/dist/Fx/constructors/fromFailures.d.ts.map +1 -1
  265. package/dist/Fx/constructors/fromFailures.js +24 -0
  266. package/dist/Fx/constructors/fromIterable.d.ts +22 -0
  267. package/dist/Fx/constructors/fromIterable.d.ts.map +1 -1
  268. package/dist/Fx/constructors/fromIterable.js +22 -0
  269. package/dist/Fx/constructors/fromSchedule.d.ts +23 -0
  270. package/dist/Fx/constructors/fromSchedule.d.ts.map +1 -1
  271. package/dist/Fx/constructors/fromSchedule.js +25 -2
  272. package/dist/Fx/constructors/index.d.ts +2 -1
  273. package/dist/Fx/constructors/index.d.ts.map +1 -1
  274. package/dist/Fx/constructors/index.js +2 -1
  275. package/dist/Fx/constructors/interrupt.d.ts +21 -1
  276. package/dist/Fx/constructors/interrupt.d.ts.map +1 -1
  277. package/dist/Fx/constructors/interrupt.js +21 -1
  278. package/dist/Fx/constructors/make.d.ts +146 -1
  279. package/dist/Fx/constructors/make.d.ts.map +1 -1
  280. package/dist/Fx/constructors/make.js +54 -3
  281. package/dist/Fx/constructors/periodic.d.ts +29 -0
  282. package/dist/Fx/constructors/periodic.d.ts.map +1 -1
  283. package/dist/Fx/constructors/periodic.js +29 -0
  284. package/dist/Fx/constructors/succeed.d.ts +75 -3
  285. package/dist/Fx/constructors/succeed.d.ts.map +1 -1
  286. package/dist/Fx/constructors/succeed.js +75 -3
  287. package/dist/Fx/constructors/suspend.d.ts +28 -0
  288. package/dist/Fx/constructors/suspend.d.ts.map +1 -1
  289. package/dist/Fx/constructors/suspend.js +28 -0
  290. package/dist/Fx/constructors/sync.d.ts +32 -0
  291. package/dist/Fx/constructors/sync.d.ts.map +1 -0
  292. package/dist/Fx/constructors/sync.js +32 -0
  293. package/dist/Fx/internal/DeferredRef.d.ts +259 -7
  294. package/dist/Fx/internal/DeferredRef.d.ts.map +1 -1
  295. package/dist/Fx/internal/DeferredRef.js +260 -9
  296. package/dist/Fx/internal/UnionToTuple.d.ts +22 -0
  297. package/dist/Fx/internal/UnionToTuple.d.ts.map +1 -1
  298. package/dist/Fx/internal/diff.d.ts +586 -0
  299. package/dist/Fx/internal/diff.d.ts.map +1 -1
  300. package/dist/Fx/internal/diff.js +120 -9
  301. package/dist/Fx/internal/effectableEvaluateKey.d.ts +30 -0
  302. package/dist/Fx/internal/effectableEvaluateKey.d.ts.map +1 -0
  303. package/dist/Fx/internal/effectableEvaluateKey.js +29 -0
  304. package/dist/Fx/internal/effectableWithOverride.d.ts +55 -0
  305. package/dist/Fx/internal/effectableWithOverride.d.ts.map +1 -0
  306. package/dist/Fx/internal/effectableWithOverride.js +46 -0
  307. package/dist/Fx/internal/equivalence.d.ts +29 -0
  308. package/dist/Fx/internal/equivalence.d.ts.map +1 -1
  309. package/dist/Fx/internal/equivalence.js +29 -0
  310. package/dist/Fx/internal/multicast.d.ts +145 -2
  311. package/dist/Fx/internal/multicast.d.ts.map +1 -1
  312. package/dist/Fx/internal/multicast.js +146 -4
  313. package/dist/Fx/internal/ring-buffer.d.ts +149 -0
  314. package/dist/Fx/internal/ring-buffer.d.ts.map +1 -1
  315. package/dist/Fx/internal/ring-buffer.js +155 -0
  316. package/dist/Fx/internal/scope.d.ts +184 -0
  317. package/dist/Fx/internal/scope.d.ts.map +1 -1
  318. package/dist/Fx/internal/scope.js +150 -0
  319. package/dist/Fx/internal/yieldable.d.ts +117 -2
  320. package/dist/Fx/internal/yieldable.d.ts.map +1 -1
  321. package/dist/Fx/internal/yieldable.js +86 -3
  322. package/dist/Fx/run/collect.d.ts +89 -0
  323. package/dist/Fx/run/collect.d.ts.map +1 -1
  324. package/dist/Fx/run/collect.js +90 -1
  325. package/dist/Fx/run/first.d.ts +22 -0
  326. package/dist/Fx/run/first.d.ts.map +1 -1
  327. package/dist/Fx/run/first.js +22 -0
  328. package/dist/Fx/run/fork.d.ts +50 -0
  329. package/dist/Fx/run/fork.d.ts.map +1 -1
  330. package/dist/Fx/run/fork.js +50 -0
  331. package/dist/Fx/run/observe.d.ts +106 -0
  332. package/dist/Fx/run/observe.d.ts.map +1 -1
  333. package/dist/Fx/run/observe.js +106 -0
  334. package/dist/Fx/run/runPromise.d.ts +43 -0
  335. package/dist/Fx/run/runPromise.d.ts.map +1 -1
  336. package/dist/Fx/run/runPromise.js +43 -0
  337. package/dist/Fx/stream.d.ts +92 -0
  338. package/dist/Fx/stream.d.ts.map +1 -1
  339. package/dist/Fx/stream.js +60 -1
  340. package/dist/Push/Push.d.ts +1216 -91
  341. package/dist/Push/Push.d.ts.map +1 -1
  342. package/dist/Push/Push.js +1012 -83
  343. package/dist/RefArray.d.ts +2 -0
  344. package/dist/RefArray.d.ts.map +1 -0
  345. package/dist/RefArray.js +1 -0
  346. package/dist/RefBigDecimal.d.ts +2 -0
  347. package/dist/RefBigDecimal.d.ts.map +1 -0
  348. package/dist/RefBigDecimal.js +1 -0
  349. package/dist/RefBigInt.d.ts +2 -0
  350. package/dist/RefBigInt.d.ts.map +1 -0
  351. package/dist/RefBigInt.js +1 -0
  352. package/dist/RefBoolean.d.ts +2 -0
  353. package/dist/RefBoolean.d.ts.map +1 -0
  354. package/dist/RefBoolean.js +1 -0
  355. package/dist/RefCause.d.ts +2 -0
  356. package/dist/RefCause.d.ts.map +1 -0
  357. package/dist/RefCause.js +1 -0
  358. package/dist/RefChunk.d.ts +2 -0
  359. package/dist/RefChunk.d.ts.map +1 -0
  360. package/dist/RefChunk.js +1 -0
  361. package/dist/RefDateTime.d.ts +2 -0
  362. package/dist/RefDateTime.d.ts.map +1 -0
  363. package/dist/RefDateTime.js +1 -0
  364. package/dist/RefDuration.d.ts +2 -0
  365. package/dist/RefDuration.d.ts.map +1 -0
  366. package/dist/RefDuration.js +1 -0
  367. package/dist/RefGraph.d.ts +2 -0
  368. package/dist/RefGraph.d.ts.map +1 -0
  369. package/dist/RefGraph.js +1 -0
  370. package/dist/RefHashMap.d.ts +2 -0
  371. package/dist/RefHashMap.d.ts.map +1 -0
  372. package/dist/RefHashMap.js +1 -0
  373. package/dist/RefHashRing.d.ts +2 -0
  374. package/dist/RefHashRing.d.ts.map +1 -0
  375. package/dist/RefHashRing.js +1 -0
  376. package/dist/RefHashSet.d.ts +2 -0
  377. package/dist/RefHashSet.d.ts.map +1 -0
  378. package/dist/RefHashSet.js +1 -0
  379. package/dist/RefIterable.d.ts +2 -0
  380. package/dist/RefIterable.d.ts.map +1 -0
  381. package/dist/RefIterable.js +1 -0
  382. package/dist/RefOption.d.ts +2 -0
  383. package/dist/RefOption.d.ts.map +1 -0
  384. package/dist/RefOption.js +1 -0
  385. package/dist/RefRecord.d.ts +2 -0
  386. package/dist/RefRecord.d.ts.map +1 -0
  387. package/dist/RefRecord.js +1 -0
  388. package/dist/RefResult.d.ts +2 -0
  389. package/dist/RefResult.d.ts.map +1 -0
  390. package/dist/RefResult.js +1 -0
  391. package/dist/RefString.d.ts +2 -0
  392. package/dist/RefString.d.ts.map +1 -0
  393. package/dist/RefString.js +1 -0
  394. package/dist/RefStruct.d.ts +2 -0
  395. package/dist/RefStruct.d.ts.map +1 -0
  396. package/dist/RefStruct.js +1 -0
  397. package/dist/RefSubject/Hydration.d.ts +504 -0
  398. package/dist/RefSubject/Hydration.d.ts.map +1 -0
  399. package/dist/RefSubject/Hydration.js +300 -0
  400. package/dist/RefSubject/RefArray.d.ts +351 -4
  401. package/dist/RefSubject/RefArray.d.ts.map +1 -1
  402. package/dist/RefSubject/RefArray.js +339 -3
  403. package/dist/RefSubject/RefBigDecimal.d.ts +221 -1
  404. package/dist/RefSubject/RefBigDecimal.d.ts.map +1 -1
  405. package/dist/RefSubject/RefBigDecimal.js +210 -1
  406. package/dist/RefSubject/RefBigInt.d.ts +166 -1
  407. package/dist/RefSubject/RefBigInt.d.ts.map +1 -1
  408. package/dist/RefSubject/RefBigInt.js +155 -1
  409. package/dist/RefSubject/RefBoolean.d.ts +166 -1
  410. package/dist/RefSubject/RefBoolean.d.ts.map +1 -1
  411. package/dist/RefSubject/RefBoolean.js +155 -1
  412. package/dist/RefSubject/RefCause.d.ts +122 -1
  413. package/dist/RefSubject/RefCause.d.ts.map +1 -1
  414. package/dist/RefSubject/RefCause.js +111 -1
  415. package/dist/RefSubject/RefChunk.d.ts +406 -1
  416. package/dist/RefSubject/RefChunk.d.ts.map +1 -1
  417. package/dist/RefSubject/RefChunk.js +394 -0
  418. package/dist/RefSubject/RefDateTime.d.ts +122 -1
  419. package/dist/RefSubject/RefDateTime.d.ts.map +1 -1
  420. package/dist/RefSubject/RefDateTime.js +111 -1
  421. package/dist/RefSubject/RefDuration.d.ts +155 -1
  422. package/dist/RefSubject/RefDuration.d.ts.map +1 -1
  423. package/dist/RefSubject/RefDuration.js +144 -1
  424. package/dist/RefSubject/RefGraph.d.ts +320 -6
  425. package/dist/RefSubject/RefGraph.d.ts.map +1 -1
  426. package/dist/RefSubject/RefGraph.js +303 -0
  427. package/dist/RefSubject/RefHashMap.d.ts +296 -1
  428. package/dist/RefSubject/RefHashMap.d.ts.map +1 -1
  429. package/dist/RefSubject/RefHashMap.js +284 -0
  430. package/dist/RefSubject/RefHashRing.d.ts +146 -2
  431. package/dist/RefSubject/RefHashRing.d.ts.map +1 -1
  432. package/dist/RefSubject/RefHashRing.js +133 -0
  433. package/dist/RefSubject/RefHashSet.d.ts +230 -1
  434. package/dist/RefSubject/RefHashSet.d.ts.map +1 -1
  435. package/dist/RefSubject/RefHashSet.js +218 -0
  436. package/dist/RefSubject/RefIterable.d.ts +327 -1
  437. package/dist/RefSubject/RefIterable.d.ts.map +1 -1
  438. package/dist/RefSubject/RefIterable.js +315 -0
  439. package/dist/RefSubject/RefOption.d.ts +144 -1
  440. package/dist/RefSubject/RefOption.d.ts.map +1 -1
  441. package/dist/RefSubject/RefOption.js +133 -1
  442. package/dist/RefSubject/RefRecord.d.ts +339 -1
  443. package/dist/RefSubject/RefRecord.d.ts.map +1 -1
  444. package/dist/RefSubject/RefRecord.js +327 -0
  445. package/dist/RefSubject/RefResult.d.ts +155 -23
  446. package/dist/RefSubject/RefResult.d.ts.map +1 -1
  447. package/dist/RefSubject/RefResult.js +122 -1
  448. package/dist/RefSubject/RefString.d.ts +188 -1
  449. package/dist/RefSubject/RefString.d.ts.map +1 -1
  450. package/dist/RefSubject/RefString.js +177 -1
  451. package/dist/RefSubject/RefStruct.d.ts +156 -1
  452. package/dist/RefSubject/RefStruct.d.ts.map +1 -1
  453. package/dist/RefSubject/RefStruct.js +145 -1
  454. package/dist/RefSubject/RefSubject.d.ts +1166 -13
  455. package/dist/RefSubject/RefSubject.d.ts.map +1 -1
  456. package/dist/RefSubject/RefSubject.js +843 -51
  457. package/dist/RefSubject/RefTrie.d.ts +290 -4
  458. package/dist/RefSubject/RefTrie.d.ts.map +1 -1
  459. package/dist/RefSubject/RefTrie.js +278 -3
  460. package/dist/RefSubject/RefTuple.d.ts +117 -1
  461. package/dist/RefSubject/RefTuple.d.ts.map +1 -1
  462. package/dist/RefSubject/RefTuple.js +106 -1
  463. package/dist/RefSubject/index.d.ts +1 -0
  464. package/dist/RefSubject/index.d.ts.map +1 -1
  465. package/dist/RefSubject/index.js +1 -0
  466. package/dist/RefSubject.d.ts +2 -1
  467. package/dist/RefSubject.d.ts.map +1 -1
  468. package/dist/RefSubject.js +2 -1
  469. package/dist/RefTrie.d.ts +2 -0
  470. package/dist/RefTrie.d.ts.map +1 -0
  471. package/dist/RefTrie.js +1 -0
  472. package/dist/RefTuple.d.ts +2 -0
  473. package/dist/RefTuple.d.ts.map +1 -0
  474. package/dist/RefTuple.js +1 -0
  475. package/dist/Sink/Sink.d.ts +381 -10
  476. package/dist/Sink/Sink.d.ts.map +1 -1
  477. package/dist/Sink/Sink.js +49 -2
  478. package/dist/Sink/combinators.d.ts +731 -2
  479. package/dist/Sink/combinators.d.ts.map +1 -1
  480. package/dist/Sink/combinators.js +706 -4
  481. package/dist/Subject/Subject.d.ts +1013 -19
  482. package/dist/Subject/Subject.d.ts.map +1 -1
  483. package/dist/Subject/Subject.js +901 -36
  484. package/dist/Versioned/Versioned.d.ts +424 -7
  485. package/dist/Versioned/Versioned.d.ts.map +1 -1
  486. package/dist/Versioned/Versioned.js +238 -12
  487. package/dist/index.d.ts +22 -3
  488. package/dist/index.d.ts.map +1 -1
  489. package/dist/index.js +22 -3
  490. package/package.json +123 -14
  491. package/dist/Fx/constructors/fromYieldable.d.ts +0 -12
  492. package/dist/Fx/constructors/fromYieldable.d.ts.map +0 -1
  493. package/dist/Fx/constructors/fromYieldable.js +0 -12
  494. package/src/Fx/Fx.ts +0 -164
  495. package/src/Fx/TypeId.ts +0 -25
  496. package/src/Fx/combinators/additive.ts +0 -142
  497. package/src/Fx/combinators/catch.ts +0 -416
  498. package/src/Fx/combinators/causes.ts +0 -23
  499. package/src/Fx/combinators/changesWithEffect.ts +0 -66
  500. package/src/Fx/combinators/compact.ts +0 -15
  501. package/src/Fx/combinators/continueWith.ts +0 -78
  502. package/src/Fx/combinators/dropUntil.ts +0 -47
  503. package/src/Fx/combinators/ensuring.ts +0 -23
  504. package/src/Fx/combinators/exhaustLatestMap.ts +0 -74
  505. package/src/Fx/combinators/exhaustLatestMapEffect.ts +0 -25
  506. package/src/Fx/combinators/exhaustMap.ts +0 -36
  507. package/src/Fx/combinators/exhaustMapEffect.ts +0 -23
  508. package/src/Fx/combinators/exit.ts +0 -15
  509. package/src/Fx/combinators/filter.ts +0 -22
  510. package/src/Fx/combinators/filterEffect.ts +0 -31
  511. package/src/Fx/combinators/filterMap.ts +0 -23
  512. package/src/Fx/combinators/filterMapEffect.ts +0 -32
  513. package/src/Fx/combinators/filterMapLoop.ts +0 -35
  514. package/src/Fx/combinators/filterMapLoopCause.ts +0 -36
  515. package/src/Fx/combinators/filterMapLoopCauseEffect.ts +0 -46
  516. package/src/Fx/combinators/filterMapLoopEffect.ts +0 -36
  517. package/src/Fx/combinators/flatMap.ts +0 -51
  518. package/src/Fx/combinators/flatMapConcurrently.ts +0 -39
  519. package/src/Fx/combinators/flatMapConcurrentlyEffect.ts +0 -26
  520. package/src/Fx/combinators/flatMapEffect.ts +0 -42
  521. package/src/Fx/combinators/flip.ts +0 -14
  522. package/src/Fx/combinators/gen.ts +0 -24
  523. package/src/Fx/combinators/genScoped.ts +0 -24
  524. package/src/Fx/combinators/index.ts +0 -61
  525. package/src/Fx/combinators/keyed.ts +0 -369
  526. package/src/Fx/combinators/loop.ts +0 -27
  527. package/src/Fx/combinators/loopCause.ts +0 -34
  528. package/src/Fx/combinators/loopCauseEffect.ts +0 -36
  529. package/src/Fx/combinators/loopEffect.ts +0 -34
  530. package/src/Fx/combinators/map.ts +0 -22
  531. package/src/Fx/combinators/mapBoth.ts +0 -40
  532. package/src/Fx/combinators/mapEffect.ts +0 -32
  533. package/src/Fx/combinators/mapError.ts +0 -28
  534. package/src/Fx/combinators/mergeAll.ts +0 -22
  535. package/src/Fx/combinators/mergeOrdered.ts +0 -123
  536. package/src/Fx/combinators/onError.ts +0 -40
  537. package/src/Fx/combinators/onExit.ts +0 -82
  538. package/src/Fx/combinators/onInterrupt.ts +0 -87
  539. package/src/Fx/combinators/provide.ts +0 -124
  540. package/src/Fx/combinators/result.ts +0 -39
  541. package/src/Fx/combinators/scan.ts +0 -82
  542. package/src/Fx/combinators/skip.ts +0 -41
  543. package/src/Fx/combinators/skipRepeats.ts +0 -15
  544. package/src/Fx/combinators/skipRepeatsWith.ts +0 -40
  545. package/src/Fx/combinators/skipWhile.ts +0 -100
  546. package/src/Fx/combinators/slice.ts +0 -55
  547. package/src/Fx/combinators/switchMap.ts +0 -55
  548. package/src/Fx/combinators/switchMapEffect.ts +0 -25
  549. package/src/Fx/combinators/take.ts +0 -38
  550. package/src/Fx/combinators/takeUntil.ts +0 -88
  551. package/src/Fx/combinators/takeWhile.ts +0 -47
  552. package/src/Fx/combinators/tapEffect.ts +0 -39
  553. package/src/Fx/combinators/tuple.ts +0 -79
  554. package/src/Fx/combinators/unwrap.ts +0 -21
  555. package/src/Fx/combinators/unwrapScoped.ts +0 -26
  556. package/src/Fx/combinators/when.ts +0 -64
  557. package/src/Fx/combinators/withSpan.ts +0 -24
  558. package/src/Fx/combinators/zip.ts +0 -175
  559. package/src/Fx/constructors/at.ts +0 -23
  560. package/src/Fx/constructors/die.ts +0 -17
  561. package/src/Fx/constructors/empty.ts +0 -10
  562. package/src/Fx/constructors/fail.ts +0 -14
  563. package/src/Fx/constructors/failCause.ts +0 -14
  564. package/src/Fx/constructors/fn.ts +0 -245
  565. package/src/Fx/constructors/fromEffect.ts +0 -24
  566. package/src/Fx/constructors/fromFailures.ts +0 -19
  567. package/src/Fx/constructors/fromIterable.ts +0 -15
  568. package/src/Fx/constructors/fromSchedule.ts +0 -18
  569. package/src/Fx/constructors/fromYieldable.ts +0 -17
  570. package/src/Fx/constructors/index.ts +0 -15
  571. package/src/Fx/constructors/interrupt.ts +0 -13
  572. package/src/Fx/constructors/make.ts +0 -103
  573. package/src/Fx/constructors/periodic.ts +0 -15
  574. package/src/Fx/constructors/succeed.ts +0 -37
  575. package/src/Fx/constructors/suspend.ts +0 -6
  576. package/src/Fx/index.ts +0 -6
  577. package/src/Fx/internal/DeferredRef.ts +0 -87
  578. package/src/Fx/internal/UnionToTuple.ts +0 -12
  579. package/src/Fx/internal/diff.ts +0 -191
  580. package/src/Fx/internal/equivalence.ts +0 -12
  581. package/src/Fx/internal/multicast.ts +0 -51
  582. package/src/Fx/internal/ring-buffer.ts +0 -60
  583. package/src/Fx/internal/scope.ts +0 -58
  584. package/src/Fx/internal/yieldable.ts +0 -31
  585. package/src/Fx/run/collect.ts +0 -79
  586. package/src/Fx/run/first.ts +0 -20
  587. package/src/Fx/run/fork.ts +0 -40
  588. package/src/Fx/run/index.ts +0 -5
  589. package/src/Fx/run/observe.ts +0 -114
  590. package/src/Fx/run/runPromise.ts +0 -32
  591. package/src/Fx/stream.ts +0 -42
  592. package/src/Fx.additive-combinators.test.ts +0 -126
  593. package/src/Fx.catch-additive.test.ts +0 -206
  594. package/src/Fx.catch.test.ts +0 -60
  595. package/src/Fx.dropUntil.test.ts +0 -61
  596. package/src/Fx.fn.test.ts +0 -51
  597. package/src/Fx.lifecycle.test.ts +0 -79
  598. package/src/Fx.mapError-mapBoth.test.ts +0 -101
  599. package/src/Fx.provide-combinators.test.ts +0 -94
  600. package/src/Fx.result-changesWithEffect.test.ts +0 -112
  601. package/src/Fx.scan.test.ts +0 -73
  602. package/src/Fx.takeWhile-skipWhile.test.ts +0 -84
  603. package/src/Fx.test.ts +0 -71
  604. package/src/Fx.ts +0 -1
  605. package/src/Fx.zip-merge-additive.test.ts +0 -171
  606. package/src/Fx.zip.test.ts +0 -133
  607. package/src/Push/Push.ts +0 -1093
  608. package/src/Push/index.ts +0 -1
  609. package/src/Push.additive.test.ts +0 -256
  610. package/src/Push.test.ts +0 -26
  611. package/src/Push.ts +0 -1
  612. package/src/RefSubject/RefArray.ts +0 -516
  613. package/src/RefSubject/RefBigDecimal.test.ts +0 -56
  614. package/src/RefSubject/RefBigDecimal.ts +0 -295
  615. package/src/RefSubject/RefBigInt.test.ts +0 -56
  616. package/src/RefSubject/RefBigInt.ts +0 -189
  617. package/src/RefSubject/RefBoolean.test.ts +0 -57
  618. package/src/RefSubject/RefBoolean.ts +0 -185
  619. package/src/RefSubject/RefCause.test.ts +0 -53
  620. package/src/RefSubject/RefCause.ts +0 -146
  621. package/src/RefSubject/RefChunk.ts +0 -516
  622. package/src/RefSubject/RefDateTime.test.ts +0 -43
  623. package/src/RefSubject/RefDateTime.ts +0 -261
  624. package/src/RefSubject/RefDuration.test.ts +0 -49
  625. package/src/RefSubject/RefDuration.ts +0 -188
  626. package/src/RefSubject/RefGraph.ts +0 -649
  627. package/src/RefSubject/RefHashMap.ts +0 -474
  628. package/src/RefSubject/RefHashRing.ts +0 -262
  629. package/src/RefSubject/RefHashSet.ts +0 -308
  630. package/src/RefSubject/RefIterable.ts +0 -454
  631. package/src/RefSubject/RefOption.test.ts +0 -67
  632. package/src/RefSubject/RefOption.ts +0 -193
  633. package/src/RefSubject/RefRecord.ts +0 -621
  634. package/src/RefSubject/RefResult.test.ts +0 -63
  635. package/src/RefSubject/RefResult.ts +0 -209
  636. package/src/RefSubject/RefString.test.ts +0 -61
  637. package/src/RefSubject/RefString.ts +0 -256
  638. package/src/RefSubject/RefStruct.test.ts +0 -60
  639. package/src/RefSubject/RefStruct.ts +0 -253
  640. package/src/RefSubject/RefSubject.ts +0 -2642
  641. package/src/RefSubject/RefTrie.ts +0 -365
  642. package/src/RefSubject/RefTuple.test.ts +0 -60
  643. package/src/RefSubject/RefTuple.ts +0 -231
  644. package/src/RefSubject/index.ts +0 -21
  645. package/src/RefSubject.additive-parity.test.ts +0 -101
  646. package/src/RefSubject.test.ts +0 -65
  647. package/src/RefSubject.ts +0 -1
  648. package/src/Sink/Sink.ts +0 -159
  649. package/src/Sink/combinators.ts +0 -1115
  650. package/src/Sink/index.ts +0 -2
  651. package/src/Sink.combinators.test.ts +0 -88
  652. package/src/Sink.reduce-collect-head-last.test.ts +0 -107
  653. package/src/Sink.ts +0 -1
  654. package/src/Subject/Subject.ts +0 -440
  655. package/src/Subject/index.ts +0 -1
  656. package/src/Subject.test.ts +0 -47
  657. package/src/Subject.ts +0 -1
  658. package/src/Versioned/Versioned.ts +0 -595
  659. package/src/Versioned/index.ts +0 -1
  660. package/src/Versioned.filterMap.test.ts +0 -91
  661. package/src/Versioned.test.ts +0 -23
  662. package/src/Versioned.ts +0 -1
  663. package/src/index.ts +0 -7
@@ -9,6 +9,15 @@ import type { Sink } from "./Sink.js";
9
9
  /**
10
10
  * Transforms values before they reach the sink using a pure function.
11
11
  *
12
+ * @remarks
13
+ * ## Why
14
+ * Contramapping adapts a consumer to a new input without changing the producer or allocating an
15
+ * intermediate Fx.
16
+ *
17
+ * ## Ownership and lifetime
18
+ * Mapping is synchronous, preserves one-for-one input order, and acquires no resources. Thrown
19
+ * exceptions are defects. The wrapped sink still owns its callback effects and service needs.
20
+ *
12
21
  * @example
13
22
  * ```ts
14
23
  * import { Effect } from "effect"
@@ -34,12 +43,49 @@ import type { Sink } from "./Sink.js";
34
43
  * @category combinators
35
44
  */
36
45
  export declare function map<A, E, R, B>(sink: Sink<A, E, R>, f: (b: B) => A): Sink<B, E, R>;
37
- /** Alias for `map`: transforms input values before they reach the sink. @since 1.0.0 @category combinators */
46
+ /**
47
+ * Alias for `map`, named for the input-side direction of the transformation.
48
+ *
49
+ * @remarks
50
+ * ## Why
51
+ * `mapInput` makes contravariant Sink pipelines easier to read beside output-mapping APIs.
52
+ *
53
+ * ## Ownership and lifetime
54
+ * It is exactly `map`: synchronous, one-for-one, ordered, and resource-free.
55
+ *
56
+ * @example
57
+ * ```ts
58
+ * import { Effect } from "effect"
59
+ * import * as Sink from "@typed/fx/Sink"
60
+ * const numbers = Sink.make(Effect.logError, (value: number) => Effect.log(value))
61
+ * const strings = Sink.mapInput(numbers, Number)
62
+ * ```
63
+ *
64
+ * @since 1.0.0
65
+ * @category combinators
66
+ */
38
67
  export declare const mapInput: typeof map;
39
68
  /**
40
69
  * Maps the error channel of a sink using the provided function.
41
70
  * Failures are mapped via `Cause.map`; defects and interrupts are preserved.
42
71
  *
72
+ * @remarks
73
+ * ## Why
74
+ * A producer's typed error can be translated into the vocabulary expected by an existing consumer
75
+ * without losing Cause structure.
76
+ *
77
+ * ## Ownership and lifetime
78
+ * Mapping is synchronous and resource-free. Success order is unchanged; only `Fail` reasons are
79
+ * mapped, while defects and interruption reasons pass through untouched.
80
+ *
81
+ * @example
82
+ * ```ts
83
+ * import { Effect } from "effect"
84
+ * import * as Sink from "@typed/fx/Sink"
85
+ * const target: Sink.Sink<number, string> = Sink.make(Effect.logError, Effect.log)
86
+ * const acceptsNumbers = Sink.mapError(target, (error: number) => `code:${error}`)
87
+ * ```
88
+ *
43
89
  * @since 1.0.0
44
90
  * @category combinators
45
91
  */
@@ -47,6 +93,14 @@ export declare function mapError<A, E, E2, R>(sink: Sink<A, E2, R>, f: (e: E) =>
47
93
  /**
48
94
  * Filters and transforms values before they reach the sink using a function that returns an `Option`.
49
95
  *
96
+ * @remarks
97
+ * ## Why
98
+ * Selection and transformation happen at the consumer boundary without constructing another Fx.
99
+ *
100
+ * ## Ownership and lifetime
101
+ * Inputs are inspected synchronously in arrival order. `Some` invokes the wrapped sink once;
102
+ * `None` invokes it zero times. The adapter acquires no resources and failures pass through.
103
+ *
50
104
  * @example
51
105
  * ```ts
52
106
  * import { Effect, Option } from "effect"
@@ -73,10 +127,40 @@ export declare function mapError<A, E, E2, R>(sink: Sink<A, E2, R>, f: (e: E) =>
73
127
  * @category combinators
74
128
  */
75
129
  export declare function filterMap<A, E, R, B>(sink: Sink<A, E, R>, f: (b: B) => Option.Option<A>): Sink<B, E, R>;
130
+ /**
131
+ * Forwards `Some` values and discards `None` values.
132
+ *
133
+ * @remarks
134
+ * ## Why
135
+ * `compact` consumes optional producer output with the same zero-or-one cardinality as `filterMap`.
136
+ *
137
+ * ## Ownership and lifetime
138
+ * Option inspection is synchronous and resource-free. Present values retain arrival order; failure
139
+ * causes pass through unchanged.
140
+ *
141
+ * @example
142
+ * ```ts
143
+ * import { Effect, Option } from "effect"
144
+ * import * as Sink from "@typed/fx/Sink"
145
+ * const sink = Sink.compact(Sink.make(Effect.logError, (n: number) => Effect.log(n)))
146
+ * sink.onSuccess(Option.some(1))
147
+ * ```
148
+ *
149
+ * @since 1.0.0
150
+ * @category combinators
151
+ */
76
152
  export declare function compact<A, E, R>(sink: Sink<A, E, R>): Sink<Option.Option<A>, E, R>;
77
153
  /**
78
154
  * Filters values before they reach the sink using a predicate function.
79
155
  *
156
+ * @remarks
157
+ * ## Why
158
+ * Predicate filtering narrows consumer traffic without changing the producer.
159
+ *
160
+ * ## Ownership and lifetime
161
+ * The predicate runs synchronously in arrival order. Matching values invoke the wrapped sink once;
162
+ * non-matches invoke it zero times. The adapter acquires no resources.
163
+ *
80
164
  * @example
81
165
  * ```ts
82
166
  * import { Effect } from "effect"
@@ -101,77 +185,574 @@ export declare function compact<A, E, R>(sink: Sink<A, E, R>): Sink<Option.Optio
101
185
  * @category combinators
102
186
  */
103
187
  export declare function filter<A, E, R>(sink: Sink<A, E, R>, f: (a: A) => boolean): Sink<A, E, R>;
188
+ /**
189
+ * Runs a producer-style callback with a sink that can complete the surrounding Effect early.
190
+ *
191
+ * @remarks
192
+ * ## Why
193
+ * Consumer combinators can stop upstream work after a bound or predicate without representing
194
+ * normal completion as failure.
195
+ *
196
+ * ## Ownership and lifetime
197
+ * The returned Effect owns the callback fiber. Completion, `earlyExit`, or interruption aborts that
198
+ * fiber through the supplied signal; deliveries after exit are ignored. The callback's services are
199
+ * combined with the wrapped sink's services.
200
+ *
201
+ * @example
202
+ * ```ts
203
+ * import { Effect } from "effect"
204
+ * import * as Sink from "@typed/fx/Sink"
205
+ * const base = Sink.make(Effect.logError, Effect.log)
206
+ * const program = Sink.withEarlyExit(base, (sink) => sink.onSuccess("done").pipe(Effect.andThen(sink.earlyExit)))
207
+ * ```
208
+ *
209
+ * @since 1.0.0
210
+ * @category lifecycle
211
+ */
104
212
  export declare function withEarlyExit<A, E, R, R2>(sink: Sink<A, E, R>, f: (sink: Sink.WithEarlyExit<A, E, R>, params: {
105
213
  signal: AbortSignal;
106
214
  scheduler: Scheduler;
107
215
  }) => Effect.Effect<unknown, never, R2>): Effect.Effect<void, never, R | R2>;
216
+ /**
217
+ * Runs a callback with an early-exit sink and a private Effect `Ref` initialized to `state`.
218
+ *
219
+ * @remarks
220
+ * ## Why
221
+ * It supports stateful consumer protocols while keeping their state local to one run.
222
+ *
223
+ * ## Ownership and lifetime
224
+ * Each execution creates one Ref and owns it until exit or interruption. Ref operations are lazy
225
+ * atomic Effects: serialized callback execution preserves producer order, while concurrent execution
226
+ * is ordered by scheduling. No state is shared across `withState` executions.
227
+ *
228
+ * @example
229
+ * ```ts
230
+ * import { Effect, Ref } from "effect"
231
+ * import * as Sink from "@typed/fx/Sink"
232
+ * const base = Sink.make(Effect.logError, Effect.log)
233
+ * const program = Sink.withState(base, 0, ({ state, earlyExit }) => Ref.set(state, 1).pipe(Effect.andThen(earlyExit)))
234
+ * ```
235
+ *
236
+ * @since 1.0.0
237
+ * @category lifecycle
238
+ */
108
239
  export declare function withState<A, E, R, B, R2>(sink: Sink<A, E, R>, state: B, f: (sink: Sink.WithState<A, E, R, B>, params: {
109
240
  signal: AbortSignal;
110
241
  scheduler: Scheduler;
111
242
  }) => Effect.Effect<unknown, never, R2>): Effect.Effect<void, never, R | R2>;
243
+ /**
244
+ * Runs a callback with private state whose effectful reads and writes are serialized.
245
+ *
246
+ * @remarks
247
+ * ## Why
248
+ * Overlapping asynchronous callbacks need a lock to prevent multiple updates from reading the same
249
+ * prior state.
250
+ *
251
+ * ## Ownership and lifetime
252
+ * Each execution owns one mutable cell and one single-permit semaphore. Modify Effects serialize in
253
+ * semaphore-acquisition order, release the permit on completion or interruption, and expose their
254
+ * typed errors and services. Constructing an Effect does not acquire the permit; running it does.
255
+ * Exit aborts the surrounding callback fiber.
256
+ *
257
+ * @example
258
+ * ```ts
259
+ * import { Effect } from "effect"
260
+ * import * as Sink from "@typed/fx/Sink"
261
+ * const base = Sink.make(Effect.logError, Effect.log)
262
+ * const program = Sink.withStateSemaphore(base, 0, (state) =>
263
+ * state.updateEffect((n) => Effect.succeed(n + 1)).pipe(Effect.andThen(state.earlyExit)))
264
+ * ```
265
+ *
266
+ * @since 1.0.0
267
+ * @category lifecycle
268
+ */
112
269
  export declare function withStateSemaphore<A, E, R, B, R2>(sink: Sink<A, E, R>, state: B, f: (sink: Sink.WithStateSemaphore<A, E, R, B>, params: {
113
270
  signal: AbortSignal;
114
271
  scheduler: Scheduler;
115
272
  }) => Effect.Effect<unknown, never, R2>): Effect.Effect<void, never, R | R2>;
273
+ /**
274
+ * Threads pure state through successful inputs and forwards one derived value per input.
275
+ *
276
+ * @remarks
277
+ * ## Why
278
+ * `loop` implements an ordered consumer-side state machine without exposing mutable state to the
279
+ * producer.
280
+ *
281
+ * ## Ownership and lifetime
282
+ * Each adapted sink owns its seed. Updates are synchronous and follow callback invocation order;
283
+ * every input produces exactly one downstream success. Failures bypass the state machine. Reusing
284
+ * the same sink for another producer run continues from its retained seed; create a new sink to reset.
285
+ *
286
+ * @example
287
+ * ```ts
288
+ * import { Effect } from "effect"
289
+ * import * as Sink from "@typed/fx/Sink"
290
+ * const totals = Sink.loop(Sink.make(Effect.logError, Effect.log), 0, (sum, n: number) => [sum + n, sum + n])
291
+ * ```
292
+ *
293
+ * @since 1.0.0
294
+ * @category combinators
295
+ */
116
296
  export declare const loop: {
117
297
  <B, A, C>(seed: B, f: (acc: B, a: A) => readonly [C, B]): <E, R>(sink: Sink<C, E, R>) => Sink<A, E, R>;
118
298
  <A, E, R, B, C>(sink: Sink<C, E, R>, seed: B, f: (acc: B, a: A) => readonly [C, B]): Sink<A, E, R>;
119
299
  };
300
+ /**
301
+ * Threads pure state through failure causes and forwards one transformed cause per failure.
302
+ *
303
+ * @remarks
304
+ * ## Why
305
+ * Stateful error translation can retain retry or protocol context while preserving full Cause
306
+ * information.
307
+ *
308
+ * ## Ownership and lifetime
309
+ * Each adapted sink owns its seed. Failure callbacks update it synchronously in invocation order;
310
+ * successes pass through unchanged. Reusing the sink continues from its retained seed; create a new
311
+ * sink to reset. No resources are acquired.
312
+ *
313
+ * @example
314
+ * ```ts
315
+ * import { Cause, Effect } from "effect"
316
+ * import * as Sink from "@typed/fx/Sink"
317
+ * const target: Sink.Sink<number, string> = Sink.make(Effect.logError, Effect.log)
318
+ * const counted = Sink.loopCause(target, 0, (n, cause: Cause.Cause<string>) => [cause, n + 1])
319
+ * ```
320
+ *
321
+ * @since 1.0.0
322
+ * @category combinators
323
+ */
120
324
  export declare const loopCause: {
121
325
  <B, A, C>(seed: B, f: (acc: B, a: Cause.Cause<A>) => readonly [Cause.Cause<C>, B]): <E, R>(sink: Sink<A, C, R>) => Sink<A, E, R>;
122
326
  <A, E, R, B, C>(sink: Sink<A, C, R>, seed: B, f: (acc: B, a: Cause.Cause<E>) => readonly [Cause.Cause<C>, B]): Sink<A, E, R>;
123
327
  };
328
+ /**
329
+ * Threads pure state through successes and optionally forwards a derived value.
330
+ *
331
+ * @remarks
332
+ * ## Why
333
+ * It combines consumer-side state, filtering, and mapping in one ordered transition.
334
+ *
335
+ * ## Ownership and lifetime
336
+ * Each adapted sink owns its seed. Every input updates state synchronously; `Some` emits once and
337
+ * `None` emits nothing. Failures pass through. Reusing the sink continues from its retained seed;
338
+ * create a new sink to reset. The adapter acquires no resources.
339
+ *
340
+ * @example
341
+ * ```ts
342
+ * import { Effect, Option } from "effect"
343
+ * import * as Sink from "@typed/fx/Sink"
344
+ * const target = Sink.make(Effect.logError, Effect.log)
345
+ * const everyOther = Sink.filterMapLoop(target, false, (skip, n: number) => [skip ? Option.none() : Option.some(n), !skip])
346
+ * ```
347
+ *
348
+ * @since 1.0.0
349
+ * @category combinators
350
+ */
124
351
  export declare const filterMapLoop: {
125
352
  <B, A, C>(seed: B, f: (acc: B, a: A) => readonly [Option.Option<C>, B]): <E, R>(sink: Sink<C, E, R>) => Sink<A, E, R>;
126
353
  <A, E, R, B, C>(sink: Sink<C, E, R>, seed: B, f: (acc: B, a: A) => readonly [Option.Option<C>, B]): Sink<A, E, R>;
127
354
  };
355
+ /**
356
+ * Threads pure state through failures and optionally forwards a transformed cause.
357
+ *
358
+ * @remarks
359
+ * ## Why
360
+ * Stateful failure suppression and translation can be expressed without discarding Cause structure.
361
+ *
362
+ * ## Ownership and lifetime
363
+ * Each adapted sink owns its seed. Failure callbacks update state synchronously in invocation order;
364
+ * `Some` forwards once and `None` suppresses the failure. Successes pass through unchanged. Reusing
365
+ * the sink continues from its retained seed; create a new sink to reset.
366
+ *
367
+ * @example
368
+ * ```ts
369
+ * import { Cause, Effect, Option } from "effect"
370
+ * import * as Sink from "@typed/fx/Sink"
371
+ * const target: Sink.Sink<number, string> = Sink.make(Effect.logError, Effect.log)
372
+ * const first = Sink.filterMapLoopCause(target, true, (keep, cause: Cause.Cause<string>) => [keep ? Option.some(cause) : Option.none(), false])
373
+ * ```
374
+ *
375
+ * @since 1.0.0
376
+ * @category combinators
377
+ */
128
378
  export declare const filterMapLoopCause: {
129
379
  <B, A, C>(seed: B, f: (acc: B, a: Cause.Cause<A>) => readonly [Option.Option<Cause.Cause<C>>, B]): <E, R>(sink: Sink<A, C, R>) => Sink<A, E, R>;
130
380
  <A, E, R, B, C>(sink: Sink<A, C, R>, seed: B, f: (acc: B, a: Cause.Cause<E>) => readonly [Option.Option<Cause.Cause<C>>, B]): Sink<A, E, R>;
131
381
  };
382
+ /**
383
+ * Threads state through an effectful success transformation and forwards one value on success.
384
+ *
385
+ * @remarks
386
+ * ## Why
387
+ * Stateful consumer transitions can consult Effect services or fail without moving the state
388
+ * machine into the producer.
389
+ *
390
+ * ## Ownership and lifetime
391
+ * Callback invocation constructs a transition Effect from the seed visible at that moment. The
392
+ * adapter does not serialize those Effects: overlapping callbacks can read the same seed, and
393
+ * successful transitions commit in completion order. A failure is sent to the wrapped sink and does
394
+ * not commit. The sink instance retains its last committed seed when reused by another producer run;
395
+ * construct a new adapted sink to reset it. Transition services and interruption remain typed.
396
+ *
397
+ * @example
398
+ * ```ts
399
+ * import { Effect } from "effect"
400
+ * import * as Sink from "@typed/fx/Sink"
401
+ * const target = Sink.make(Effect.logError, Effect.log)
402
+ * const totals = Sink.loopEffect(target, 0, (sum, n: number) => Effect.succeed([sum + n, sum + n] as const))
403
+ * ```
404
+ *
405
+ * @since 1.0.0
406
+ * @category combinators
407
+ */
132
408
  export declare const loopEffect: {
133
409
  <B, A, E2, R2, C>(seed: B, f: (acc: B, a: A) => Effect.Effect<readonly [C, B], E2, R2>): <E, R>(sink: Sink<C, E | E2, R>) => Sink<A, E | E2, R | R2>;
134
410
  <A, E, R, B, C>(sink: Sink<C, E, R>, seed: B, f: (acc: B, a: A) => Effect.Effect<readonly [C, B], E, R>): Sink<A, E, R>;
135
411
  };
412
+ /**
413
+ * Threads state through an effectful success transition and optionally forwards its value.
414
+ *
415
+ * @remarks
416
+ * ## Why
417
+ * One transition can perform service-backed work, update state, and decide whether the consumer
418
+ * should observe a value.
419
+ *
420
+ * ## Ownership and lifetime
421
+ * Callback invocation constructs a transition Effect from the seed visible at that moment. The
422
+ * adapter does not serialize those Effects: overlapping callbacks can read the same seed, and
423
+ * successful transitions commit in completion order. `Some` then invokes the wrapped sink once,
424
+ * `None` not at all, and failure invokes its failure callback without committing. The sink instance
425
+ * retains its seed across producer runs; construct a new one to reset it.
426
+ *
427
+ * @example
428
+ * ```ts
429
+ * import { Effect, Option } from "effect"
430
+ * import * as Sink from "@typed/fx/Sink"
431
+ * const target = Sink.make(Effect.logError, Effect.log)
432
+ * const sink = Sink.filterMapLoopEffect(target, 0, (count, n: number) => Effect.succeed([Option.some(n), count + 1] as const))
433
+ * ```
434
+ *
435
+ * @since 1.0.0
436
+ * @category combinators
437
+ */
136
438
  export declare const filterMapLoopEffect: {
137
439
  <B, A, E2, R2, C>(seed: B, f: (acc: B, a: A) => Effect.Effect<readonly [Option.Option<C>, B], E2, R2>): <E, R>(sink: Sink<C, E, R>) => Sink<A, E | E2, R | R2>;
138
440
  <A, E, R, B, R2, C>(sink: Sink<C, E, R>, seed: B, f: (acc: B, a: A) => Effect.Effect<readonly [Option.Option<C>, B], E, R2>): Sink<A, E, R | R2>;
139
441
  };
442
+ /**
443
+ * Threads state through an effectful failure transformation.
444
+ *
445
+ * @remarks
446
+ * ## Why
447
+ * Failure handling can consult services and retain state while preserving the original Cause when
448
+ * the handler itself fails.
449
+ *
450
+ * ## Ownership and lifetime
451
+ * Callback invocation constructs a transition Effect from the seed visible at that moment. The
452
+ * adapter does not serialize those Effects: overlapping failures can read the same seed, and
453
+ * successful transitions commit in completion order. A transition failure is combined with the
454
+ * original cause and does not commit. Success values bypass the state machine. The sink instance
455
+ * retains its seed across producer runs; construct a new one to reset it.
456
+ *
457
+ * @example
458
+ * ```ts
459
+ * import { Effect } from "effect"
460
+ * import * as Sink from "@typed/fx/Sink"
461
+ * const target = Sink.make(Effect.logError, Effect.log)
462
+ * const sink = Sink.loopCauseEffect(target, 0, (count, cause) => Effect.succeed([cause, count + 1] as const))
463
+ * ```
464
+ *
465
+ * @since 1.0.0
466
+ * @category combinators
467
+ */
140
468
  export declare const loopCauseEffect: {
141
469
  <A, E, R2, B, C>(seed: B, f: (acc: B, a: Cause.Cause<E>) => Effect.Effect<readonly [Cause.Cause<C>, B], E, R2>): <R>(sink: Sink<A, E | C, R>) => Sink<A, E, R | R2>;
142
470
  <A, E, R, B, C, R2>(sink: Sink<A, E | C, R>, seed: B, f: (acc: B, a: Cause.Cause<E>) => Effect.Effect<readonly [Cause.Cause<C>, B], E, R2>): Sink<A, E, R | R2>;
143
471
  };
472
+ /**
473
+ * Threads state through an effectful failure transition and optionally forwards a cause.
474
+ *
475
+ * @remarks
476
+ * ## Why
477
+ * It supports service-backed, stateful failure suppression or translation at the consumer boundary.
478
+ *
479
+ * ## Ownership and lifetime
480
+ * Callback invocation constructs a transition Effect from the seed visible at that moment. The
481
+ * adapter does not serialize those Effects: overlapping failures can read the same seed, and
482
+ * successful transitions commit in completion order. `Some` forwards one cause, `None` suppresses
483
+ * it, and transition failure is forwarded without committing. Successes pass through. The sink
484
+ * instance retains its seed across producer runs; construct a new one to reset it.
485
+ *
486
+ * @example
487
+ * ```ts
488
+ * import { Cause, Effect, Option } from "effect"
489
+ * import * as Sink from "@typed/fx/Sink"
490
+ * const target: Sink.Sink<number, string> = Sink.make(Effect.logError, Effect.log)
491
+ * const sink = Sink.filterMapLoopCauseEffect(target, false, (seen, cause: Cause.Cause<string>) =>
492
+ * Effect.succeed([seen ? Option.none() : Option.some(cause), true] as const))
493
+ * ```
494
+ *
495
+ * @since 1.0.0
496
+ * @category combinators
497
+ */
144
498
  export declare function filterMapLoopCauseEffect<A, E, R, B, E2, R2, C>(sink: Sink<A, E2 | C, R>, seed: B, f: (acc: B, a: Cause.Cause<E>) => Effect.Effect<readonly [Option.Option<Cause.Cause<C>>, B], E2, R2>): Sink<A, E, R | R2>;
499
+ /**
500
+ * Zero-based skip count and maximum take count used by `slice`.
501
+ *
502
+ * @remarks
503
+ * ## Why
504
+ * A named bound makes the consumer's two independent limits explicit.
505
+ *
506
+ * ## Ownership and lifetime
507
+ * Bounds are immutable values and acquire no resources. Each `slice` execution copies their counts
508
+ * into private mutable counters.
509
+ *
510
+ * @example
511
+ * ```ts
512
+ * import type { Bounds } from "@typed/fx/Sink"
513
+ * const secondAndThird: Bounds = { skip: 1, take: 2 }
514
+ * ```
515
+ *
516
+ * @since 1.0.0
517
+ * @category models
518
+ */
145
519
  export interface Bounds {
520
+ /**
521
+ * Number of initial successful values to discard.
522
+ *
523
+ * @remarks
524
+ * ## Why
525
+ * A separate skip count allows bounded windows to begin after an ignored prefix.
526
+ *
527
+ * ## Ownership and lifetime
528
+ * This immutable number acquires no resources; `slice` copies it into invocation-local state.
529
+ *
530
+ * @since 1.0.0
531
+ * @category bounds
532
+ */
146
533
  readonly skip: number;
534
+ /**
535
+ * Maximum number of later successful values to forward before early exit.
536
+ *
537
+ * @remarks
538
+ * ## Why
539
+ * A take count bounds downstream work and gives `slice` its normal completion point.
540
+ *
541
+ * ## Ownership and lifetime
542
+ * This immutable number acquires no resources; `slice` copies it into invocation-local state.
543
+ *
544
+ * @since 1.0.0
545
+ * @category bounds
546
+ */
147
547
  readonly take: number;
148
548
  }
549
+ /**
550
+ * Runs a producer callback through a bounded view of a sink.
551
+ *
552
+ * @remarks
553
+ * ## Why
554
+ * Consumers can skip an initial prefix and stop after a fixed number of values, allowing the
555
+ * surrounding producer work to finish early.
556
+ *
557
+ * ## Ownership and lifetime
558
+ * Each execution owns fresh counters and an early-exit callback. Successes remain ordered; at most
559
+ * `take` values are delivered after `skip` values. Failures always pass through. Reaching the bound
560
+ * completes and aborts the callback fiber; negative bounds are not normalized.
561
+ *
562
+ * @example
563
+ * ```ts
564
+ * import { Effect } from "effect"
565
+ * import * as Sink from "@typed/fx/Sink"
566
+ * const target = Sink.make(Effect.logError, Effect.log)
567
+ * const program = Sink.slice(target, { skip: 1, take: 2 }, (bounded) => bounded.onSuccess("kept"))
568
+ * ```
569
+ *
570
+ * @since 1.0.0
571
+ * @category lifecycle
572
+ */
149
573
  export declare const slice: {
150
574
  <A, E, R, R2>(bounds: Bounds, f: (sink: Sink<A, E, R>) => Effect.Effect<unknown, never, R2>): (sink: Sink<A, E, R>) => Effect.Effect<void, never, R | R2>;
151
575
  <A, E, R, R2>(sink: Sink<A, E, R>, bounds: Bounds, f: (sink: Sink<A, E, R>) => Effect.Effect<unknown, never, R2>): Effect.Effect<void, never, R | R2>;
152
576
  };
577
+ /**
578
+ * Runs an Effect for each input and forwards its successful value to the sink.
579
+ *
580
+ * @remarks
581
+ * ## Why
582
+ * Consumer-side adaptation can use services and typed failure without creating an intermediate Fx.
583
+ *
584
+ * ## Ownership and lifetime
585
+ * One transition Effect runs per callback invocation. Its success is forwarded once; its complete
586
+ * failure Cause is sent to `onFailure`. Calls themselves are not serialized by this adapter, so
587
+ * ordering follows the invoking producer. Services join the sink requirements; interruption is local
588
+ * to each callback Effect.
589
+ *
590
+ * @example
591
+ * ```ts
592
+ * import { Effect } from "effect"
593
+ * import * as Sink from "@typed/fx/Sink"
594
+ * const numbers = Sink.mapEffect(Sink.make(Effect.logError, Effect.log), (text: string) =>
595
+ * Effect.succeed(Number(text)))
596
+ * ```
597
+ *
598
+ * @since 1.0.0
599
+ * @category combinators
600
+ */
153
601
  export declare const mapEffect: {
154
602
  <B, A, E2, R2>(f: (b: B) => Effect.Effect<A, E2, R2>): <E, R>(sink: Sink<A, E | E2, R>) => Sink<B, E | E2, R | R2>;
155
603
  <A, E, R, B, E2, R2>(sink: Sink<A, E | E2, R>, f: (b: B) => Effect.Effect<A, E2, R2>): Sink<B, E | E2, R | R2>;
156
604
  };
157
- /** Alias for `mapEffect`: transforms input with an effect before the sink. @since 1.0.0 @category combinators */
605
+ /**
606
+ * Alias for `mapEffect`, named for the input-side direction of the effectful transformation.
607
+ *
608
+ * @remarks
609
+ * ## Why
610
+ * The name highlights that Sink composition is contravariant in successful input.
611
+ *
612
+ * ## Ownership and lifetime
613
+ * It is exactly `mapEffect`: one Effect per input, with the same failures, services, ordering, and
614
+ * interruption behavior.
615
+ *
616
+ * @example
617
+ * ```ts
618
+ * import { Effect } from "effect"
619
+ * import * as Sink from "@typed/fx/Sink"
620
+ * const sink = Sink.mapInputEffect(Sink.make(Effect.logError, Effect.log), (n: number) => Effect.succeed(String(n)))
621
+ * ```
622
+ *
623
+ * @since 1.0.0
624
+ * @category combinators
625
+ */
158
626
  export declare const mapInputEffect: {
159
627
  <B, A, E2, R2>(f: (b: B) => Effect.Effect<A, E2, R2>): <E, R>(sink: Sink<A, E | E2, R>) => Sink<B, E | E2, R | R2>;
160
628
  <A, E, R, B, E2, R2>(sink: Sink<A, E | E2, R>, f: (b: B) => Effect.Effect<A, E2, R2>): Sink<B, E | E2, R | R2>;
161
629
  };
630
+ /**
631
+ * Runs an Effect for each input and forwards its optional successful value.
632
+ *
633
+ * @remarks
634
+ * ## Why
635
+ * Service-backed validation, selection, and transformation can happen in one consumer adapter.
636
+ *
637
+ * ## Ownership and lifetime
638
+ * Each input runs one Effect. `Some` invokes the sink once, `None` zero times, and failure is routed
639
+ * as a Cause. Invocation order and concurrency are controlled by the producer; services and
640
+ * interruption remain explicit in the returned sink.
641
+ *
642
+ * @example
643
+ * ```ts
644
+ * import { Effect, Option } from "effect"
645
+ * import * as Sink from "@typed/fx/Sink"
646
+ * const sink = Sink.filterMapEffect(Sink.make(Effect.logError, Effect.log), (n: number) =>
647
+ * Effect.succeed(n > 0 ? Option.some(n) : Option.none()))
648
+ * ```
649
+ *
650
+ * @since 1.0.0
651
+ * @category combinators
652
+ */
162
653
  export declare const filterMapEffect: {
163
654
  <B, A, E2, R2>(f: (b: B) => Effect.Effect<Option.Option<A>, E2, R2>): <E, R>(sink: Sink<A, E | E2, R>) => Sink<B, E | E2, R | R2>;
164
655
  <A, E, R, B, E2, R2>(sink: Sink<A, E | E2, R>, f: (b: B) => Effect.Effect<Option.Option<A>, E2, R2>): Sink<B, E | E2, R | R2>;
165
656
  };
657
+ /**
658
+ * Runs an effectful predicate and forwards inputs for which it succeeds with `true`.
659
+ *
660
+ * @remarks
661
+ * ## Why
662
+ * A consumer can filter using service-backed or asynchronous policy without changing the producer.
663
+ *
664
+ * ## Ownership and lifetime
665
+ * Each input runs one predicate Effect. `true` forwards once, `false` not at all, and predicate
666
+ * failure reaches the sink's failure callback. The producer controls callback ordering and
667
+ * concurrency; predicate services and interruption remain typed.
668
+ *
669
+ * @example
670
+ * ```ts
671
+ * import { Effect } from "effect"
672
+ * import * as Sink from "@typed/fx/Sink"
673
+ * const positive = Sink.filterEffect(Sink.make(Effect.logError, Effect.log), (n: number) => Effect.succeed(n > 0))
674
+ * ```
675
+ *
676
+ * @since 1.0.0
677
+ * @category combinators
678
+ */
166
679
  export declare const filterEffect: {
167
680
  <A, E2, R2>(f: (a: A) => Effect.Effect<boolean, E2, R2>): <E, R>(sink: Sink<A, E | E2, R>) => Sink<A, E | E2, R | R2>;
168
681
  <A, E, R>(sink: Sink<A, E, R>, f: (a: A) => Effect.Effect<boolean, E, R>): Sink<A, E, R>;
169
682
  };
683
+ /**
684
+ * Runs an effectful observation before forwarding each successful input unchanged.
685
+ *
686
+ * @remarks
687
+ * ## Why
688
+ * Logging, metrics, and other observations can be attached at the consumer boundary without
689
+ * changing the value type.
690
+ *
691
+ * ## Ownership and lifetime
692
+ * The tap Effect completes before the value is forwarded. If it fails, its Cause is delivered and
693
+ * the value is not forwarded. The producer controls call order and concurrency; tap services and
694
+ * interruption are reflected by the returned sink.
695
+ *
696
+ * @example
697
+ * ```ts
698
+ * import { Effect } from "effect"
699
+ * import * as Sink from "@typed/fx/Sink"
700
+ * const observed = Sink.tapEffect(Sink.make(Effect.logError, Effect.log), (n: number) => Effect.log(`saw ${n}`))
701
+ * ```
702
+ *
703
+ * @since 1.0.0
704
+ * @category combinators
705
+ */
170
706
  export declare const tapEffect: {
171
707
  <A, E2, R2>(f: (a: A) => Effect.Effect<unknown, E2, R2>): <E, R>(sink: Sink<A, E | E2, R>) => Sink<A, E | E2, R | R2>;
172
708
  <A, E, R, E2, R2>(sink: Sink<A, E | E2, R>, f: (a: A) => Effect.Effect<unknown, E2, R2>): Sink<A, E | E2, R | R2>;
173
709
  };
710
+ /**
711
+ * Exchanges a sink's typed success and failure channels.
712
+ *
713
+ * @remarks
714
+ * ## Why
715
+ * Error-oriented consumers can be reused as value consumers, and vice versa, without changing the
716
+ * producer-side protocol.
717
+ *
718
+ * ## Ownership and lifetime
719
+ * A successful input becomes `Cause.fail` downstream. For an incoming Cause, the first typed `Fail`
720
+ * reason becomes a success and every remaining reason is discarded, including later failures,
721
+ * defects, or interruption reasons. A Cause with no typed failure passes through intact. The adapter
722
+ * is synchronous, ordered, and resource-free; use `exit` when the whole Cause must remain observable.
723
+ *
724
+ * @example
725
+ * ```ts
726
+ * import { Effect } from "effect"
727
+ * import * as Sink from "@typed/fx/Sink"
728
+ * const errorsAsValues = Sink.flip(Sink.make(Effect.logError, (value: number) => Effect.log(value)))
729
+ * ```
730
+ *
731
+ * @since 1.0.0
732
+ * @category errors
733
+ */
174
734
  export declare const flip: <A, E, R>(sink: Sink<A, E, R>) => Sink<E, A, R>;
735
+ /**
736
+ * Materializes both sink channels as successful Effect `Exit` values.
737
+ *
738
+ * @remarks
739
+ * ## Why
740
+ * A single infallible consumer can record or inspect success and the complete failure Cause as data.
741
+ *
742
+ * ## Ownership and lifetime
743
+ * Every input produces exactly one downstream success: `Exit.succeed` for values or
744
+ * `Exit.failCause` for failures. Order is preserved and the adapter acquires no resources.
745
+ *
746
+ * @example
747
+ * ```ts
748
+ * import { Effect } from "effect"
749
+ * import * as Sink from "@typed/fx/Sink"
750
+ * const exits = Sink.exit(Sink.make(Effect.logError, Effect.log))
751
+ * ```
752
+ *
753
+ * @since 1.0.0
754
+ * @category errors
755
+ */
175
756
  export declare const exit: <A, E, R>(sink: Sink<Exit.Exit<A, E>, never, R>) => ExitSink<A, E, R>;
176
757
  declare class ExitSink<A, E, R> implements Sink<A, E, R> {
177
758
  readonly sink: Sink<Exit.Exit<A, E>, never, R>;
@@ -179,14 +760,82 @@ declare class ExitSink<A, E, R> implements Sink<A, E, R> {
179
760
  onSuccess(value: A): Effect.Effect<unknown, never, R>;
180
761
  onFailure(cause: Cause.Cause<E>): Effect.Effect<unknown, never, R>;
181
762
  }
763
+ /**
764
+ * Runs a producer callback until the first matching value has been forwarded.
765
+ *
766
+ * @remarks
767
+ * ## Why
768
+ * Unlike a filtering operation, `dropAfter` includes the boundary value and then terminates
769
+ * producer work normally.
770
+ *
771
+ * ## Ownership and lifetime
772
+ * Values are forwarded in order through the first predicate match, then early exit completes and
773
+ * aborts the callback fiber. Callback failure is caught and sent to the original sink. The predicate
774
+ * is synchronous; thrown exceptions are defects.
775
+ *
776
+ * @example
777
+ * ```ts
778
+ * import { Effect } from "effect"
779
+ * import * as Sink from "@typed/fx/Sink"
780
+ * const target = Sink.make(Effect.logError, Effect.log)
781
+ * const program = Sink.dropAfter(target, (n: number) => n >= 10, (limited) => limited.onSuccess(10))
782
+ * ```
783
+ *
784
+ * @since 1.0.0
785
+ * @category lifecycle
786
+ */
182
787
  export declare const dropAfter: {
183
788
  <A, E, R, R2>(sink: Sink<A, E, R>, predicate: Predicate<A>, f: (sink: Sink<A, E, R>) => Effect.Effect<unknown, E, R2>): Effect.Effect<void, never, R | R2>;
184
789
  };
790
+ /**
791
+ * Suppresses failure causes made entirely of interruption reasons.
792
+ *
793
+ * @remarks
794
+ * ## Why
795
+ * Some terminal consumers treat expected cancellation as silent completion while still needing
796
+ * typed failures and defects.
797
+ *
798
+ * ## Ownership and lifetime
799
+ * Successes pass through unchanged. A pure interruption Cause invokes no downstream callback;
800
+ * mixed or non-interruption causes are preserved. The adapter does not change fiber ownership or
801
+ * cleanup and acquires no resources.
802
+ *
803
+ * @example
804
+ * ```ts
805
+ * import { Effect } from "effect"
806
+ * import * as Sink from "@typed/fx/Sink"
807
+ * const quietCancellation = Sink.skipInterrupt(Sink.make(Effect.logError, Effect.log))
808
+ * ```
809
+ *
810
+ * @since 1.0.0
811
+ * @category errors
812
+ */
185
813
  export declare const skipInterrupt: <A, E, R>(sink: Sink<A, E, R>) => Sink<A, E, R>;
186
814
  /**
187
815
  * Reduces values into a single result using a pure function. Pass a `Ref<B>`
188
816
  * (e.g. from `Ref.make(initial)`); after running, read the result with `Ref.get(ref)`.
189
817
  *
818
+ * @remarks
819
+ * ## Why
820
+ * An existing Ref provides an explicit, independently readable result location for consumer-side
821
+ * aggregation.
822
+ *
823
+ * ## Ownership and lifetime
824
+ * The caller owns the Ref. Each success returns a lazy atomic `Ref.update`; invoking `onSuccess`
825
+ * does not update immediately. If the producer executes callback Effects serially, values reduce in
826
+ * that execution order. Concurrent execution is still atomic but may be scheduled in a different
827
+ * order than callback invocation. Failures are ignored and a thrown reducer exception is a defect.
828
+ *
829
+ * @example
830
+ * ```ts
831
+ * import { Effect, Ref } from "effect"
832
+ * import * as Sink from "@typed/fx/Sink"
833
+ * const program = Effect.gen(function* () {
834
+ * const total = yield* Ref.make(0)
835
+ * return Sink.reduce(total, (sum, n: number) => sum + n)
836
+ * })
837
+ * ```
838
+ *
190
839
  * @since 1.0.0
191
840
  * @category combinators
192
841
  */
@@ -196,6 +845,28 @@ export declare function reduce<A, B, E>(ref: Ref.Ref<B>, f: (b: B, a: A) => B):
196
845
  * after running, read the result with `Ref.get(ref)`. If the reducer effect fails,
197
846
  * the ref is left unchanged (Sink onSuccess is typed as never failing).
198
847
  *
848
+ * @remarks
849
+ * ## Why
850
+ * Aggregation may require Effect services or asynchronous work while the result remains explicitly
851
+ * available through a caller-owned Ref.
852
+ *
853
+ * ## Ownership and lifetime
854
+ * The caller owns the Ref. Each success returns a lazy read/reduce/write Effect; invocation alone does
855
+ * no work. The three steps are not one atomic operation. Serialized producers preserve execution
856
+ * order, while overlapping executions can read the same value and commit in completion order.
857
+ * Reducer failures, producer failures, and interrupted writes are ignored. Use
858
+ * `withStateSemaphore` when the whole effectful transition must be serialized.
859
+ *
860
+ * @example
861
+ * ```ts
862
+ * import { Effect, Ref } from "effect"
863
+ * import * as Sink from "@typed/fx/Sink"
864
+ * const program = Effect.gen(function* () {
865
+ * const total = yield* Ref.make(0)
866
+ * return Sink.reduceEffect(total, (sum, n: number) => Effect.succeed(sum + n))
867
+ * })
868
+ * ```
869
+ *
199
870
  * @since 1.0.0
200
871
  * @category combinators
201
872
  */
@@ -204,6 +875,26 @@ export declare function reduceEffect<A, B, E, E2, R2>(ref: Ref.Ref<B>, f: (b: B,
204
875
  * Collects all values into an array. Pass a `Ref<ReadonlyArray<A>>` (e.g. `Ref.make([])`);
205
876
  * after running, read the result with `Ref.get(ref)`.
206
877
  *
878
+ * @remarks
879
+ * ## Why
880
+ * Collection remains an explicit consumer concern and the accumulated result can be read without
881
+ * changing the producer.
882
+ *
883
+ * ## Ownership and lifetime
884
+ * The caller owns the Ref. Each success returns a lazy atomic `Ref.update` that allocates a new array.
885
+ * Serialized producers collect in callback-Effect execution order. Concurrent updates remain atomic,
886
+ * but execution scheduling—not invocation order—determines array order. Failures are ignored.
887
+ *
888
+ * @example
889
+ * ```ts
890
+ * import { Effect, Ref } from "effect"
891
+ * import * as Sink from "@typed/fx/Sink"
892
+ * const program = Effect.gen(function* () {
893
+ * const values = yield* Ref.make<ReadonlyArray<number>>([])
894
+ * return Sink.collect(values)
895
+ * })
896
+ * ```
897
+ *
207
898
  * @since 1.0.0
208
899
  * @category combinators
209
900
  */
@@ -212,6 +903,25 @@ export declare function collect<A, E>(ref: Ref.Ref<ReadonlyArray<A>>): Sink<A, E
212
903
  * Keeps only the first value. Pass a `Ref<Option.Option<A>>` (e.g. `Ref.make(Option.none())`);
213
904
  * after running, read the result with `Ref.get(ref)`.
214
905
  *
906
+ * @remarks
907
+ * ## Why
908
+ * The first observed value can be retained in a caller-owned location without stopping the producer.
909
+ *
910
+ * ## Ownership and lifetime
911
+ * The caller owns the Ref. Each success returns a lazy atomic update. The first update Effect to
912
+ * execute while the Ref is `None` stores its value; that is the first callback only when the producer
913
+ * executes callback Effects serially. Later updates leave `Some` unchanged. Failures are ignored.
914
+ *
915
+ * @example
916
+ * ```ts
917
+ * import { Effect, Option, Ref } from "effect"
918
+ * import * as Sink from "@typed/fx/Sink"
919
+ * const program = Effect.gen(function* () {
920
+ * const first = yield* Ref.make<Option.Option<number>>(Option.none())
921
+ * return Sink.head(first)
922
+ * })
923
+ * ```
924
+ *
215
925
  * @since 1.0.0
216
926
  * @category combinators
217
927
  */
@@ -220,6 +930,25 @@ export declare function head<A, E>(ref: Ref.Ref<Option.Option<A>>): Sink<A, E, n
220
930
  * Keeps only the last value. Pass a `Ref<Option.Option<A>>` (e.g. `Ref.make(Option.none())`);
221
931
  * after running, read the result with `Ref.get(ref)`.
222
932
  *
933
+ * @remarks
934
+ * ## Why
935
+ * The latest observed value can be retained independently of producer completion.
936
+ *
937
+ * ## Ownership and lifetime
938
+ * The caller owns the Ref. Each success returns a lazy atomic `Ref.set`. With serialized callback
939
+ * Effects the last callback wins; with concurrent execution the last set to execute wins, which may
940
+ * differ from invocation order. Failures are ignored and the sink acquires no resources.
941
+ *
942
+ * @example
943
+ * ```ts
944
+ * import { Effect, Option, Ref } from "effect"
945
+ * import * as Sink from "@typed/fx/Sink"
946
+ * const program = Effect.gen(function* () {
947
+ * const latest = yield* Ref.make<Option.Option<number>>(Option.none())
948
+ * return Sink.last(latest)
949
+ * })
950
+ * ```
951
+ *
223
952
  * @since 1.0.0
224
953
  * @category combinators
225
954
  */