@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
@@ -1,11 +1,53 @@
1
+ import * as Effect from "effect/Effect";
1
2
  import { dual } from "effect/Function";
2
3
  import { slice } from "./slice.js";
4
+ import { unwrap } from "./unwrap.js";
3
5
  /**
4
6
  * Skips the first `n` elements of an Fx.
5
7
  *
8
+ * @remarks
9
+ * ## Why
10
+ * `skip` discards only the first `n` pushes, then forwards every later value in source order.
11
+ *
12
+ * ## Ownership and lifetime
13
+ * A counter is local to each run and no resource is acquired. Completion, failure, services, and
14
+ * interruption otherwise follow the source.
15
+ *
16
+ * @example
17
+ * ```ts
18
+ * import { Fx } from "@typed/fx"
19
+ *
20
+ * const tail = Fx.fromIterable([1, 2, 3]).pipe(Fx.skip(1))
21
+ * ```
22
+ *
6
23
  * @param n - The number of elements to skip.
7
24
  * @returns An `Fx` that emits values after the first `n` elements.
8
25
  * @since 1.0.0
9
- * @category combinators
26
+ * @category Selecting values
10
27
  */
11
28
  export const skip = dual(2, (fx, n) => slice(fx, { skip: n, take: Infinity }));
29
+ /**
30
+ * Skips the first `n` elements where `n` is produced by an Effect.
31
+ *
32
+ * @remarks
33
+ * ## Why
34
+ * `skipEffect` obtains the prefix length at consumption time before subscribing to the source.
35
+ *
36
+ * ## Ownership and lifetime
37
+ * The count Effect runs once per run and can fail, require services, or be interrupted. The source
38
+ * is acquired only after the count succeeds.
39
+ *
40
+ * @example
41
+ * ```ts
42
+ * import { Effect } from "effect"
43
+ * import { Fx } from "@typed/fx"
44
+ *
45
+ * const tail = Fx.fromIterable([1, 2]).pipe(Fx.skipEffect(Effect.succeed(1)))
46
+ * ```
47
+ *
48
+ * @param count - Effect that produces the number of elements to skip.
49
+ * @returns An `Fx` that emits values after the first `n` elements.
50
+ * @since 1.0.0
51
+ * @category Selecting values
52
+ */
53
+ export const skipEffect = dual(2, (fx, count) => unwrap(Effect.map(count, (n) => skip(fx, n))));
@@ -2,10 +2,26 @@ import type { Fx } from "../Fx.js";
2
2
  /**
3
3
  * Drops elements that are equal to the previous element using standard equality.
4
4
  *
5
+ * @remarks
6
+ * ## Why
7
+ * `skipRepeats` removes only consecutive duplicates using Effect's structural equality. The first
8
+ * value always emits; distinct values remain ordered, and a value may emit again after a change.
9
+ *
10
+ * ## Ownership and lifetime
11
+ * One previous value is retained for each run and released when it ends. The operation owns no
12
+ * external resource and preserves source errors, services, and interruption.
13
+ *
14
+ * @example
15
+ * ```ts
16
+ * import { Fx } from "@typed/fx"
17
+ *
18
+ * const distinctRuns = Fx.fromIterable([1, 1, 2, 1]).pipe(Fx.skipRepeats)
19
+ * ```
20
+ *
5
21
  * @param fx - The `Fx` stream.
6
22
  * @returns An `Fx` with consecutive duplicates removed.
7
23
  * @since 1.0.0
8
- * @category combinators
24
+ * @category Selecting values
9
25
  */
10
26
  export declare const skipRepeats: <A, E, R>(fx: Fx<A, E, R>) => Fx<A, E, R>;
11
27
  //# sourceMappingURL=skipRepeats.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"skipRepeats.d.ts","sourceRoot":"","sources":["../../../src/Fx/combinators/skipRepeats.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,UAAU,CAAC;AAKnC;;;;;;;GAOG;AACH,eAAO,MAAM,WAAW,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAgB,CAAC"}
1
+ {"version":3,"file":"skipRepeats.d.ts","sourceRoot":"","sources":["../../../src/Fx/combinators/skipRepeats.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,UAAU,CAAC;AAKnC;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,eAAO,MAAM,WAAW,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAgB,CAAC"}
@@ -4,9 +4,25 @@ const skipRepeats_ = skipRepeatsWith(equals);
4
4
  /**
5
5
  * Drops elements that are equal to the previous element using standard equality.
6
6
  *
7
+ * @remarks
8
+ * ## Why
9
+ * `skipRepeats` removes only consecutive duplicates using Effect's structural equality. The first
10
+ * value always emits; distinct values remain ordered, and a value may emit again after a change.
11
+ *
12
+ * ## Ownership and lifetime
13
+ * One previous value is retained for each run and released when it ends. The operation owns no
14
+ * external resource and preserves source errors, services, and interruption.
15
+ *
16
+ * @example
17
+ * ```ts
18
+ * import { Fx } from "@typed/fx"
19
+ *
20
+ * const distinctRuns = Fx.fromIterable([1, 1, 2, 1]).pipe(Fx.skipRepeats)
21
+ * ```
22
+ *
7
23
  * @param fx - The `Fx` stream.
8
24
  * @returns An `Fx` with consecutive duplicates removed.
9
25
  * @since 1.0.0
10
- * @category combinators
26
+ * @category Selecting values
11
27
  */
12
28
  export const skipRepeats = skipRepeats_;
@@ -3,10 +3,27 @@ import type { Fx } from "../Fx.js";
3
3
  /**
4
4
  * Drops elements that are equal to the previous element using a custom equivalence function.
5
5
  *
6
+ * @remarks
7
+ * ## Why
8
+ * `skipRepeatsWith` defines consecutive equality for values that need domain-specific comparison.
9
+ * It compares against the last emitted value, emits the first value, and otherwise preserves order.
10
+ *
11
+ * ## Ownership and lifetime
12
+ * The per-run previous-value state is updated atomically and released when observation ends. The
13
+ * pure equivalence adds no failures or services and acquires no resource.
14
+ *
15
+ * @example
16
+ * ```ts
17
+ * import { Fx } from "@typed/fx"
18
+ *
19
+ * const byId = Fx.skipRepeatsWith<{ id: number }>((a, b) => a.id === b.id)
20
+ * const changes = Fx.fromIterable([{ id: 1 }, { id: 1 }, { id: 2 }]).pipe(byId)
21
+ * ```
22
+ *
6
23
  * @param Eq - The equivalence function to use.
7
24
  * @returns An `Fx` with consecutive duplicates removed.
8
25
  * @since 1.0.0
9
- * @category combinators
26
+ * @category Selecting values
10
27
  */
11
28
  export declare const skipRepeatsWith: <A>(Eq: Equivalence.Equivalence<A>) => <E, R>(fx: Fx<A, E, R>) => Fx<A, E, R>;
12
29
  //# sourceMappingURL=skipRepeatsWith.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"skipRepeatsWith.d.ts","sourceRoot":"","sources":["../../../src/Fx/combinators/skipRepeatsWith.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,WAAW,MAAM,oBAAoB,CAAC;AAMvD,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,UAAU,CAAC;AAEnC;;;;;;;GAOG;AACH,eAAO,MAAM,eAAe,GACzB,CAAC,EAAE,IAAI,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC,MACjC,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAoBhC,CAAC"}
1
+ {"version":3,"file":"skipRepeatsWith.d.ts","sourceRoot":"","sources":["../../../src/Fx/combinators/skipRepeatsWith.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,WAAW,MAAM,oBAAoB,CAAC;AAMvD,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,UAAU,CAAC;AAEnC;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,eAAO,MAAM,eAAe,GACzB,CAAC,MAAM,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC,MACjC,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAoBhC,CAAC"}
@@ -7,10 +7,27 @@ import { make } from "../constructors/make.js";
7
7
  /**
8
8
  * Drops elements that are equal to the previous element using a custom equivalence function.
9
9
  *
10
+ * @remarks
11
+ * ## Why
12
+ * `skipRepeatsWith` defines consecutive equality for values that need domain-specific comparison.
13
+ * It compares against the last emitted value, emits the first value, and otherwise preserves order.
14
+ *
15
+ * ## Ownership and lifetime
16
+ * The per-run previous-value state is updated atomically and released when observation ends. The
17
+ * pure equivalence adds no failures or services and acquires no resource.
18
+ *
19
+ * @example
20
+ * ```ts
21
+ * import { Fx } from "@typed/fx"
22
+ *
23
+ * const byId = Fx.skipRepeatsWith<{ id: number }>((a, b) => a.id === b.id)
24
+ * const changes = Fx.fromIterable([{ id: 1 }, { id: 1 }, { id: 2 }]).pipe(byId)
25
+ * ```
26
+ *
10
27
  * @param Eq - The equivalence function to use.
11
28
  * @returns An `Fx` with consecutive duplicates removed.
12
29
  * @since 1.0.0
13
- * @category combinators
30
+ * @category Selecting values
14
31
  */
15
32
  export const skipRepeatsWith = (Eq) => (fx) => make((sink) => sinkCore.withState(sink, Option.none(), (sink) => fx.run(makeSink(sink.onFailure, (a2) => Effect.flatten(Ref.modify(sink.state, Option.match({
16
33
  onNone: () => [sink.onSuccess(a2), Option.some(a2)],
@@ -0,0 +1,117 @@
1
+ import * as Effect from "effect/Effect";
2
+ import type { Fx } from "../Fx.js";
3
+ /**
4
+ * Skips elements from an Fx while a predicate returns true.
5
+ * Emits from the first element for which the predicate returns false (including that element) and all following elements.
6
+ *
7
+ * @remarks
8
+ * ## Why
9
+ * `skipWhile` discards only the longest matching prefix. The first false value opens the gate and is
10
+ * emitted; later values are forwarded without re-running the predicate.
11
+ *
12
+ * ## Ownership and lifetime
13
+ * One boolean gate is owned by each run and then discarded. No resource is acquired and source
14
+ * errors, services, and interruption are preserved.
15
+ *
16
+ * @example
17
+ * ```ts
18
+ * import { Fx } from "@typed/fx"
19
+ * const values = Fx.fromIterable([1, 2, 1]).pipe(Fx.skipWhile((n) => n < 2))
20
+ * ```
21
+ *
22
+ * @param predicate - The predicate function.
23
+ * @returns An `Fx` that emits once the predicate first fails.
24
+ * @since 1.0.0
25
+ * @category Selecting values
26
+ */
27
+ export declare const skipWhile: {
28
+ <A>(predicate: (a: A) => boolean): <E, R>(fx: Fx<A, E, R>) => Fx<A, E, R>;
29
+ <A, E, R>(fx: Fx<A, E, R>, predicate: (a: A) => boolean): Fx<A, E, R>;
30
+ };
31
+ /**
32
+ * Skips elements from an Fx while an effectful predicate returns true.
33
+ * Emits from the first element for which the predicate effect succeeds with false (including that element) and all following elements.
34
+ *
35
+ * @remarks
36
+ * ## Why
37
+ * `skipWhileEffect` performs Effectful prefix decisions. The gate opens at the first false result,
38
+ * but the implementation eagerly constructs and runs `predicate(a)` before reading that gate, so
39
+ * the predicate still runs for every later input even though those values are always forwarded.
40
+ *
41
+ * ## Ownership and lifetime
42
+ * The gate belongs to one run, while predicate invocation inherits the producer's ordering and
43
+ * concurrency. Predicate failure is delivered even after the gate opened; services remain required
44
+ * and interruption cancels whichever callback Effects the producer attached to the run.
45
+ *
46
+ * @example
47
+ * ```ts
48
+ * import { Effect, Ref } from "effect"
49
+ * import { Fx } from "@typed/fx"
50
+ * const program = Effect.gen(function* () {
51
+ * const checks = yield* Ref.make(0)
52
+ * const values = yield* Fx.collectAll(
53
+ * Fx.fromIterable([2, 3]).pipe(
54
+ * Fx.skipWhileEffect((n) => Ref.update(checks, (count) => count + 1).pipe(Effect.as(n < 2)))
55
+ * )
56
+ * )
57
+ * return { values, checks: yield* Ref.get(checks) } // { values: [2, 3], checks: 2 }
58
+ * })
59
+ * ```
60
+ *
61
+ * @param predicate - Effectful predicate function.
62
+ * @returns An `Fx` that emits once the predicate first fails.
63
+ * @since 1.0.0
64
+ * @category Selecting values
65
+ */
66
+ export declare const skipWhileEffect: {
67
+ <A, E2, R2>(predicate: (a: A) => Effect.Effect<boolean, E2, R2>): <E, R>(fx: Fx<A, E, R>) => Fx<A, E | E2, R | R2>;
68
+ <A, E, R, E2, R2>(fx: Fx<A, E, R>, predicate: (a: A) => Effect.Effect<boolean, E2, R2>): Fx<A, E | E2, R | R2>;
69
+ };
70
+ /**
71
+ * Alias of `skipWhile` for Effect parity (`dropWhile` naming).
72
+ *
73
+ * @remarks
74
+ * ## Why
75
+ * `dropWhile` provides Effect Stream naming for the same prefix-dropping behavior as `skipWhile`.
76
+ *
77
+ * ## Ownership and lifetime
78
+ * This alias has exactly `skipWhile`'s per-run gate and acquires no additional resource.
79
+ *
80
+ * @example
81
+ * ```ts
82
+ * import { Fx } from "@typed/fx"
83
+ * const values = Fx.fromIterable([0, 1]).pipe(Fx.dropWhile((n) => n === 0))
84
+ * ```
85
+ *
86
+ * @since 1.0.0
87
+ * @category Selecting values
88
+ */
89
+ export declare const dropWhile: {
90
+ <A>(predicate: (a: A) => boolean): <E, R>(fx: Fx<A, E, R>) => Fx<A, E, R>;
91
+ <A, E, R>(fx: Fx<A, E, R>, predicate: (a: A) => boolean): Fx<A, E, R>;
92
+ };
93
+ /**
94
+ * Alias of `skipWhileEffect` for Effect parity (`dropWhileEffect` naming).
95
+ *
96
+ * @remarks
97
+ * ## Why
98
+ * `dropWhileEffect` provides Effect Stream naming for Effectful prefix dropping.
99
+ *
100
+ * ## Ownership and lifetime
101
+ * This alias retains `skipWhileEffect`'s failure, service, state, and interruption semantics.
102
+ *
103
+ * @example
104
+ * ```ts
105
+ * import { Effect } from "effect"
106
+ * import { Fx } from "@typed/fx"
107
+ * const values = Fx.fromIterable([0, 1]).pipe(Fx.dropWhileEffect((n) => Effect.succeed(n === 0)))
108
+ * ```
109
+ *
110
+ * @since 1.0.0
111
+ * @category Selecting values
112
+ */
113
+ export declare const dropWhileEffect: {
114
+ <A, E2, R2>(predicate: (a: A) => Effect.Effect<boolean, E2, R2>): <E, R>(fx: Fx<A, E, R>) => Fx<A, E | E2, R | R2>;
115
+ <A, E, R, E2, R2>(fx: Fx<A, E, R>, predicate: (a: A) => Effect.Effect<boolean, E2, R2>): Fx<A, E | E2, R | R2>;
116
+ };
117
+ //# sourceMappingURL=skipWhile.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skipWhile.d.ts","sourceRoot":"","sources":["../../../src/Fx/combinators/skipWhile.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAIxC,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,UAAU,CAAC;AAGnC;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,eAAO,MAAM,SAAS,EAAE;IACtB,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,OAAO,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAC1E,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,OAAO,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;CAkBvE,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,eAAO,MAAM,eAAe,EAAE;IAC5B,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EACR,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,EAAE,EAAE,CAAC,GAClD,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;IACpD,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EACd,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EACf,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,EAAE,EAAE,CAAC,GAClD,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;CA2B1B,CAAC;AAEF;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,SAAS;KA/GnB,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC,KAAK,OAAO,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;KACxE,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC,KAAK,OAAO,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;CA8GrC,CAAC;AAEnC;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,eAAe;KA5EzB,CAAC,EAAE,EAAE,EAAE,EAAE,aACG,CAAC,CAAC,EAAE,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,EAAE,EAAE,CAAC,GAClD,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC;KAClD,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,MACV,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,aACJ,CAAC,CAAC,EAAE,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,EAAE,EAAE,CAAC,GAClD,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC;CAsEoB,CAAC"}
@@ -0,0 +1,134 @@
1
+ import * as Effect from "effect/Effect";
2
+ import { dual } from "effect/Function";
3
+ import * as Ref from "effect/Ref";
4
+ import { make as makeFx } from "../constructors/make.js";
5
+ import { make as makeSink } from "../../Sink/Sink.js";
6
+ /**
7
+ * Skips elements from an Fx while a predicate returns true.
8
+ * Emits from the first element for which the predicate returns false (including that element) and all following elements.
9
+ *
10
+ * @remarks
11
+ * ## Why
12
+ * `skipWhile` discards only the longest matching prefix. The first false value opens the gate and is
13
+ * emitted; later values are forwarded without re-running the predicate.
14
+ *
15
+ * ## Ownership and lifetime
16
+ * One boolean gate is owned by each run and then discarded. No resource is acquired and source
17
+ * errors, services, and interruption are preserved.
18
+ *
19
+ * @example
20
+ * ```ts
21
+ * import { Fx } from "@typed/fx"
22
+ * const values = Fx.fromIterable([1, 2, 1]).pipe(Fx.skipWhile((n) => n < 2))
23
+ * ```
24
+ *
25
+ * @param predicate - The predicate function.
26
+ * @returns An `Fx` that emits once the predicate first fails.
27
+ * @since 1.0.0
28
+ * @category Selecting values
29
+ */
30
+ export const skipWhile = dual(2, (fx, predicate) => makeFx((sink) => Effect.gen(function* () {
31
+ const skippingRef = yield* Ref.make(true);
32
+ const skipSink = makeSink(sink.onFailure, (a) => Effect.gen(function* () {
33
+ const skipping = yield* Ref.get(skippingRef);
34
+ if (skipping) {
35
+ if (predicate(a))
36
+ return;
37
+ yield* Ref.set(skippingRef, false);
38
+ }
39
+ return yield* sink.onSuccess(a);
40
+ }));
41
+ return yield* fx.run(skipSink);
42
+ })));
43
+ /**
44
+ * Skips elements from an Fx while an effectful predicate returns true.
45
+ * Emits from the first element for which the predicate effect succeeds with false (including that element) and all following elements.
46
+ *
47
+ * @remarks
48
+ * ## Why
49
+ * `skipWhileEffect` performs Effectful prefix decisions. The gate opens at the first false result,
50
+ * but the implementation eagerly constructs and runs `predicate(a)` before reading that gate, so
51
+ * the predicate still runs for every later input even though those values are always forwarded.
52
+ *
53
+ * ## Ownership and lifetime
54
+ * The gate belongs to one run, while predicate invocation inherits the producer's ordering and
55
+ * concurrency. Predicate failure is delivered even after the gate opened; services remain required
56
+ * and interruption cancels whichever callback Effects the producer attached to the run.
57
+ *
58
+ * @example
59
+ * ```ts
60
+ * import { Effect, Ref } from "effect"
61
+ * import { Fx } from "@typed/fx"
62
+ * const program = Effect.gen(function* () {
63
+ * const checks = yield* Ref.make(0)
64
+ * const values = yield* Fx.collectAll(
65
+ * Fx.fromIterable([2, 3]).pipe(
66
+ * Fx.skipWhileEffect((n) => Ref.update(checks, (count) => count + 1).pipe(Effect.as(n < 2)))
67
+ * )
68
+ * )
69
+ * return { values, checks: yield* Ref.get(checks) } // { values: [2, 3], checks: 2 }
70
+ * })
71
+ * ```
72
+ *
73
+ * @param predicate - Effectful predicate function.
74
+ * @returns An `Fx` that emits once the predicate first fails.
75
+ * @since 1.0.0
76
+ * @category Selecting values
77
+ */
78
+ export const skipWhileEffect = dual(2, (fx, predicate) => makeFx((sink) => Effect.gen(function* () {
79
+ const skippingRef = yield* Ref.make(true);
80
+ const skipSink = makeSink(sink.onFailure, (a) => Effect.matchCauseEffect(predicate(a), {
81
+ onFailure: sink.onFailure,
82
+ onSuccess: (ok) => Effect.gen(function* () {
83
+ const skipping = yield* Ref.get(skippingRef);
84
+ if (skipping) {
85
+ if (ok)
86
+ return;
87
+ yield* Ref.set(skippingRef, false);
88
+ }
89
+ return yield* sink.onSuccess(a);
90
+ }),
91
+ }));
92
+ return yield* fx.run(skipSink);
93
+ })));
94
+ /**
95
+ * Alias of `skipWhile` for Effect parity (`dropWhile` naming).
96
+ *
97
+ * @remarks
98
+ * ## Why
99
+ * `dropWhile` provides Effect Stream naming for the same prefix-dropping behavior as `skipWhile`.
100
+ *
101
+ * ## Ownership and lifetime
102
+ * This alias has exactly `skipWhile`'s per-run gate and acquires no additional resource.
103
+ *
104
+ * @example
105
+ * ```ts
106
+ * import { Fx } from "@typed/fx"
107
+ * const values = Fx.fromIterable([0, 1]).pipe(Fx.dropWhile((n) => n === 0))
108
+ * ```
109
+ *
110
+ * @since 1.0.0
111
+ * @category Selecting values
112
+ */
113
+ export const dropWhile = skipWhile;
114
+ /**
115
+ * Alias of `skipWhileEffect` for Effect parity (`dropWhileEffect` naming).
116
+ *
117
+ * @remarks
118
+ * ## Why
119
+ * `dropWhileEffect` provides Effect Stream naming for Effectful prefix dropping.
120
+ *
121
+ * ## Ownership and lifetime
122
+ * This alias retains `skipWhileEffect`'s failure, service, state, and interruption semantics.
123
+ *
124
+ * @example
125
+ * ```ts
126
+ * import { Effect } from "effect"
127
+ * import { Fx } from "@typed/fx"
128
+ * const values = Fx.fromIterable([0, 1]).pipe(Fx.dropWhileEffect((n) => Effect.succeed(n === 0)))
129
+ * ```
130
+ *
131
+ * @since 1.0.0
132
+ * @category Selecting values
133
+ */
134
+ export const dropWhileEffect = skipWhileEffect;
@@ -1,23 +1,118 @@
1
+ import * as Effect from "effect/Effect";
1
2
  import type { Fx } from "../Fx.js";
2
3
  /**
3
4
  * Defines the bounds for slicing an Fx stream.
5
+ *
6
+ * @remarks
7
+ * ## Why
8
+ * `Bounds` keeps the two independent slice decisions explicit: `skip` counts discarded prefix
9
+ * values and `take` bounds the following output.
10
+ *
11
+ * ## Ownership and lifetime
12
+ * This immutable model acquires no resources. A consumer decides how to normalize unusual numeric
13
+ * values when applying it.
14
+ *
15
+ * @example
16
+ * ```ts
17
+ * import type { Fx } from "@typed/fx"
18
+ *
19
+ * const page: Fx.Bounds = { skip: 20, take: 10 }
20
+ * ```
4
21
  * @since 1.0.0
5
- * @category models
22
+ * @category Operator options
6
23
  */
7
24
  export interface Bounds {
25
+ /**
26
+ * Number of source values discarded before the slice can emit.
27
+ *
28
+ * @remarks
29
+ * ## Why
30
+ * Keeping the prefix count separate from `take` permits windows that begin anywhere in a source.
31
+ *
32
+ * ## Ownership and lifetime
33
+ * This number stores no state and acquires no resources; `slice` copies it into a per-run counter.
34
+ *
35
+ * @example
36
+ * ```ts
37
+ * import type { Fx } from "@typed/fx"
38
+ * const bounds: Fx.Bounds = { skip: 2, take: 1 }
39
+ * ```
40
+ */
8
41
  readonly skip: number;
42
+ /**
43
+ * Maximum number of values emitted after the skipped prefix.
44
+ *
45
+ * @remarks
46
+ * ## Why
47
+ * The output bound makes early completion explicit without buffering the selected values.
48
+ *
49
+ * ## Ownership and lifetime
50
+ * This number stores no state and acquires no resources; `slice` owns the corresponding counter
51
+ * only for the duration of one run.
52
+ *
53
+ * @example
54
+ * ```ts
55
+ * import type { Fx } from "@typed/fx"
56
+ * const bounds: Fx.Bounds = { skip: 0, take: 10 }
57
+ * ```
58
+ */
9
59
  readonly take: number;
10
60
  }
11
61
  /**
12
62
  * Slices an Fx by skipping a number of elements and then taking a number of elements.
13
63
  *
64
+ * @remarks
65
+ * ## Why
66
+ * `slice` expresses prefix omission and bounded output in one counter. It retains source order,
67
+ * emits at most `take` values after `skip`, and completes early once that bound is reached.
68
+ *
69
+ * ## Ownership and lifetime
70
+ * Counters are local to one run. Early completion stops upstream work; otherwise source failure,
71
+ * services, and consumer interruption are forwarded.
72
+ *
73
+ * @example
74
+ * ```ts
75
+ * import { Fx } from "@typed/fx"
76
+ *
77
+ * const page = Fx.fromIterable([1, 2, 3, 4]).pipe(Fx.slice({ skip: 1, take: 2 }))
78
+ * ```
79
+ *
14
80
  * @param bounds - The `Bounds` specifying how many elements to skip and take.
15
81
  * @returns An `Fx` representing the slice.
16
82
  * @since 1.0.0
17
- * @category combinators
83
+ * @category Selecting values
18
84
  */
19
85
  export declare const slice: {
20
86
  (bounds: Bounds): <A, E, R>(fx: Fx<A, E, R>) => Fx<A, E, R>;
21
87
  <A, E, R>(fx: Fx<A, E, R>, bounds: Bounds): Fx<A, E, R>;
22
88
  };
89
+ /**
90
+ * Slices an Fx with bounds produced by an Effect.
91
+ *
92
+ * @remarks
93
+ * ## Why
94
+ * `sliceEffect` delays selection of the bounds until consumption, allowing configuration to fail or
95
+ * require services before the source is subscribed.
96
+ *
97
+ * ## Ownership and lifetime
98
+ * The bounds Effect runs once per consumer. If it fails or is interrupted the source never starts;
99
+ * after success, ordinary `slice` owns only its per-run counters.
100
+ *
101
+ * @example
102
+ * ```ts
103
+ * import { Effect } from "effect"
104
+ * import { Fx } from "@typed/fx"
105
+ *
106
+ * const page = Fx.fromIterable([1, 2, 3]).pipe(Fx.sliceEffect(Effect.succeed({ skip: 1, take: 1 })))
107
+ * ```
108
+ *
109
+ * @param bounds - Effect that produces slice bounds.
110
+ * @returns An `Fx` representing the slice.
111
+ * @since 1.0.0
112
+ * @category Selecting values
113
+ */
114
+ export declare const sliceEffect: {
115
+ <E2, R2>(bounds: Effect.Effect<Bounds, E2, R2>): <A, E, R>(fx: Fx<A, E, R>) => Fx<A, E | E2, R | R2>;
116
+ <A, E, R, E2, R2>(fx: Fx<A, E, R>, bounds: Effect.Effect<Bounds, E2, R2>): Fx<A, E | E2, R | R2>;
117
+ };
23
118
  //# sourceMappingURL=slice.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"slice.d.ts","sourceRoot":"","sources":["../../../src/Fx/combinators/slice.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,UAAU,CAAC;AAEnC;;;;GAIG;AACH,MAAM,WAAW,MAAM;IACrB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,KAAK,EAAE;IAClB,CAAC,MAAM,EAAE,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAE5D,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;CAKzD,CAAC"}
1
+ {"version":3,"file":"slice.d.ts","sourceRoot":"","sources":["../../../src/Fx/combinators/slice.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAIxC,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,UAAU,CAAC;AAGnC;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,WAAW,MAAM;IACrB;;;;;;;;;;;;;;;OAeG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB;;;;;;;;;;;;;;;;OAgBG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,eAAO,MAAM,KAAK,EAAE;IAClB,CAAC,MAAM,EAAE,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAE5D,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;CAGzD,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,eAAO,MAAM,WAAW,EAAE;IACxB,CAAC,EAAE,EAAE,EAAE,EACL,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC,GACpC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;IACvD,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;CAOlG,CAAC"}
@@ -1,12 +1,56 @@
1
+ import * as Effect from "effect/Effect";
1
2
  import { dual } from "effect/Function";
2
3
  import * as sinkCore from "../../Sink/combinators.js";
3
4
  import { make } from "../constructors/make.js";
5
+ import { unwrap } from "./unwrap.js";
4
6
  /**
5
7
  * Slices an Fx by skipping a number of elements and then taking a number of elements.
6
8
  *
9
+ * @remarks
10
+ * ## Why
11
+ * `slice` expresses prefix omission and bounded output in one counter. It retains source order,
12
+ * emits at most `take` values after `skip`, and completes early once that bound is reached.
13
+ *
14
+ * ## Ownership and lifetime
15
+ * Counters are local to one run. Early completion stops upstream work; otherwise source failure,
16
+ * services, and consumer interruption are forwarded.
17
+ *
18
+ * @example
19
+ * ```ts
20
+ * import { Fx } from "@typed/fx"
21
+ *
22
+ * const page = Fx.fromIterable([1, 2, 3, 4]).pipe(Fx.slice({ skip: 1, take: 2 }))
23
+ * ```
24
+ *
7
25
  * @param bounds - The `Bounds` specifying how many elements to skip and take.
8
26
  * @returns An `Fx` representing the slice.
9
27
  * @since 1.0.0
10
- * @category combinators
28
+ * @category Selecting values
11
29
  */
12
30
  export const slice = dual(2, (fx, bounds) => make((sink) => sinkCore.slice(sink, bounds, (sink) => fx.run(sink))));
31
+ /**
32
+ * Slices an Fx with bounds produced by an Effect.
33
+ *
34
+ * @remarks
35
+ * ## Why
36
+ * `sliceEffect` delays selection of the bounds until consumption, allowing configuration to fail or
37
+ * require services before the source is subscribed.
38
+ *
39
+ * ## Ownership and lifetime
40
+ * The bounds Effect runs once per consumer. If it fails or is interrupted the source never starts;
41
+ * after success, ordinary `slice` owns only its per-run counters.
42
+ *
43
+ * @example
44
+ * ```ts
45
+ * import { Effect } from "effect"
46
+ * import { Fx } from "@typed/fx"
47
+ *
48
+ * const page = Fx.fromIterable([1, 2, 3]).pipe(Fx.sliceEffect(Effect.succeed({ skip: 1, take: 1 })))
49
+ * ```
50
+ *
51
+ * @param bounds - Effect that produces slice bounds.
52
+ * @returns An `Fx` representing the slice.
53
+ * @since 1.0.0
54
+ * @category Selecting values
55
+ */
56
+ export const sliceEffect = dual(2, (fx, bounds) => unwrap(Effect.map(bounds, (b) => slice(fx, b))));
@@ -4,10 +4,48 @@ import type { FlatMapLike } from "./flatMap.js";
4
4
  *
5
5
  * When a new element is emitted, the previous inner Fx is cancelled.
6
6
  *
7
+ * @remarks
8
+ * ## Why
9
+ *
10
+ * `switchMap` models work whose result becomes obsolete when a newer source
11
+ * value arrives, such as suggestions for the current query. Cancellation is the
12
+ * policy: obsolete work is not allowed to finish in the background.
13
+ *
14
+ * ## Switching, ordering, and cardinality
15
+ *
16
+ * Every source value calls `f`. Before the new inner starts, the previous inner
17
+ * is interrupted and its interruption is awaited. Only the latest inner remains
18
+ * active; values it emitted before replacement remain visible, while later
19
+ * values from the replaced inner are suppressed. There is no result buffer.
20
+ *
21
+ * ## Ownership and lifetime
22
+ *
23
+ * Source and current-inner failures are forwarded and their services remain
24
+ * typed. The returned Fx requires `Scope`, which owns the current inner fiber.
25
+ * Source completion waits for the latest inner. Replacing or interrupting the
26
+ * output closes obsolete inner work and runs its scoped finalizers before the
27
+ * replacement proceeds.
28
+ *
29
+ * @example
30
+ * ```ts
31
+ * import { Fx } from "@typed/fx"
32
+ * import { Effect } from "effect"
33
+ *
34
+ * const queries = Fx.mergeAll(
35
+ * Fx.at("typed", "0 millis"),
36
+ * Fx.at("typed fx", "5 millis")
37
+ * )
38
+ * const suggestions = Fx.switchMap(queries, (query) =>
39
+ * Fx.ensuring(Fx.at(query, "20 millis"), Effect.log(`${query} closed`))
40
+ * )
41
+ * Effect.runPromise(Effect.scoped(Fx.collectAll(suggestions))).then(console.log)
42
+ * // logs cleanup for "typed" and resolves ["typed fx"]
43
+ * ```
44
+ *
7
45
  * @param f - A function that maps an element `A` to a new `Fx<B>`.
8
46
  * @returns An `Fx` that emits values from the latest inner stream.
9
47
  * @since 1.0.0
10
- * @category combinators
48
+ * @category Concurrent work
11
49
  */
12
50
  export declare const switchMap: FlatMapLike;
13
51
  //# sourceMappingURL=switchMap.d.ts.map