@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.
- package/README.md +34 -20
- package/dist/Fx/Fx.d.ts +362 -10
- package/dist/Fx/Fx.d.ts.map +1 -1
- package/dist/Fx/Fx.js +32 -1
- package/dist/Fx/TypeId.d.ts +49 -3
- package/dist/Fx/TypeId.d.ts.map +1 -1
- package/dist/Fx/TypeId.js +39 -2
- package/dist/Fx/combinators/additive.d.ts +156 -5
- package/dist/Fx/combinators/additive.d.ts.map +1 -1
- package/dist/Fx/combinators/additive.js +156 -5
- package/dist/Fx/combinators/catch.d.ts +195 -22
- package/dist/Fx/combinators/catch.d.ts.map +1 -1
- package/dist/Fx/combinators/catch.js +186 -16
- package/dist/Fx/combinators/causes.d.ts +24 -1
- package/dist/Fx/combinators/causes.d.ts.map +1 -1
- package/dist/Fx/combinators/causes.js +24 -1
- package/dist/Fx/combinators/changesWithEffect.d.ts +20 -0
- package/dist/Fx/combinators/changesWithEffect.d.ts.map +1 -1
- package/dist/Fx/combinators/changesWithEffect.js +20 -0
- package/dist/Fx/combinators/compact.d.ts +17 -0
- package/dist/Fx/combinators/compact.d.ts.map +1 -1
- package/dist/Fx/combinators/compact.js +17 -0
- package/dist/Fx/combinators/concatMap.d.ts +86 -0
- package/dist/Fx/combinators/concatMap.d.ts.map +1 -0
- package/dist/Fx/combinators/concatMap.js +86 -0
- package/dist/Fx/combinators/continueWith.d.ts +109 -1
- package/dist/Fx/combinators/continueWith.d.ts.map +1 -1
- package/dist/Fx/combinators/continueWith.js +109 -1
- package/dist/Fx/combinators/debounce.d.ts +34 -0
- package/dist/Fx/combinators/debounce.d.ts.map +1 -0
- package/dist/Fx/combinators/debounce.js +35 -0
- package/dist/Fx/combinators/delay.d.ts +34 -0
- package/dist/Fx/combinators/delay.d.ts.map +1 -0
- package/dist/Fx/combinators/delay.js +31 -0
- package/dist/Fx/combinators/dropUntil.d.ts +42 -0
- package/dist/Fx/combinators/dropUntil.d.ts.map +1 -1
- package/dist/Fx/combinators/dropUntil.js +42 -0
- package/dist/Fx/combinators/during.d.ts +38 -0
- package/dist/Fx/combinators/during.d.ts.map +1 -0
- package/dist/Fx/combinators/during.js +85 -0
- package/dist/Fx/combinators/ensuring.d.ts +33 -3
- package/dist/Fx/combinators/ensuring.d.ts.map +1 -1
- package/dist/Fx/combinators/ensuring.js +33 -3
- package/dist/Fx/combinators/exhaustLatestMap.d.ts +40 -4
- package/dist/Fx/combinators/exhaustLatestMap.d.ts.map +1 -1
- package/dist/Fx/combinators/exhaustLatestMap.js +40 -4
- package/dist/Fx/combinators/exhaustLatestMapEffect.d.ts +39 -3
- package/dist/Fx/combinators/exhaustLatestMapEffect.d.ts.map +1 -1
- package/dist/Fx/combinators/exhaustLatestMapEffect.js +39 -3
- package/dist/Fx/combinators/exhaustMap.d.ts +37 -0
- package/dist/Fx/combinators/exhaustMap.d.ts.map +1 -1
- package/dist/Fx/combinators/exhaustMap.js +37 -0
- package/dist/Fx/combinators/exhaustMapEffect.d.ts +32 -0
- package/dist/Fx/combinators/exhaustMapEffect.d.ts.map +1 -1
- package/dist/Fx/combinators/exhaustMapEffect.js +32 -0
- package/dist/Fx/combinators/exit.d.ts +22 -1
- package/dist/Fx/combinators/exit.d.ts.map +1 -1
- package/dist/Fx/combinators/exit.js +22 -1
- package/dist/Fx/combinators/filter.d.ts +16 -0
- package/dist/Fx/combinators/filter.d.ts.map +1 -1
- package/dist/Fx/combinators/filter.js +16 -0
- package/dist/Fx/combinators/filterEffect.d.ts +21 -0
- package/dist/Fx/combinators/filterEffect.d.ts.map +1 -1
- package/dist/Fx/combinators/filterEffect.js +21 -0
- package/dist/Fx/combinators/filterMap.d.ts +19 -0
- package/dist/Fx/combinators/filterMap.d.ts.map +1 -1
- package/dist/Fx/combinators/filterMap.js +19 -0
- package/dist/Fx/combinators/filterMapEffect.d.ts +20 -0
- package/dist/Fx/combinators/filterMapEffect.d.ts.map +1 -1
- package/dist/Fx/combinators/filterMapEffect.js +20 -0
- package/dist/Fx/combinators/filterMapLoop.d.ts +19 -0
- package/dist/Fx/combinators/filterMapLoop.d.ts.map +1 -1
- package/dist/Fx/combinators/filterMapLoop.js +19 -0
- package/dist/Fx/combinators/filterMapLoopCause.d.ts +20 -0
- package/dist/Fx/combinators/filterMapLoopCause.d.ts.map +1 -1
- package/dist/Fx/combinators/filterMapLoopCause.js +20 -0
- package/dist/Fx/combinators/filterMapLoopCauseEffect.d.ts +20 -0
- package/dist/Fx/combinators/filterMapLoopCauseEffect.d.ts.map +1 -1
- package/dist/Fx/combinators/filterMapLoopCauseEffect.js +20 -0
- package/dist/Fx/combinators/filterMapLoopEffect.d.ts +20 -0
- package/dist/Fx/combinators/filterMapLoopEffect.d.ts.map +1 -1
- package/dist/Fx/combinators/filterMapLoopEffect.js +20 -0
- package/dist/Fx/combinators/flatMap.d.ts +48 -3
- package/dist/Fx/combinators/flatMap.d.ts.map +1 -1
- package/dist/Fx/combinators/flatMap.js +35 -2
- package/dist/Fx/combinators/flatMapConcurrently.d.ts +50 -3
- package/dist/Fx/combinators/flatMapConcurrently.d.ts.map +1 -1
- package/dist/Fx/combinators/flatMapConcurrently.js +47 -1
- package/dist/Fx/combinators/flatMapConcurrentlyEffect.d.ts +47 -3
- package/dist/Fx/combinators/flatMapConcurrentlyEffect.d.ts.map +1 -1
- package/dist/Fx/combinators/flatMapConcurrentlyEffect.js +39 -1
- package/dist/Fx/combinators/flatMapEffect.d.ts +44 -2
- package/dist/Fx/combinators/flatMapEffect.d.ts.map +1 -1
- package/dist/Fx/combinators/flatMapEffect.js +31 -1
- package/dist/Fx/combinators/flip.d.ts +33 -1
- package/dist/Fx/combinators/flip.d.ts.map +1 -1
- package/dist/Fx/combinators/flip.js +33 -1
- package/dist/Fx/combinators/gen.d.ts +28 -9
- package/dist/Fx/combinators/gen.d.ts.map +1 -1
- package/dist/Fx/combinators/gen.js +27 -3
- package/dist/Fx/combinators/genScoped.d.ts +32 -9
- package/dist/Fx/combinators/genScoped.d.ts.map +1 -1
- package/dist/Fx/combinators/genScoped.js +30 -2
- package/dist/Fx/combinators/grouped.d.ts +89 -0
- package/dist/Fx/combinators/grouped.d.ts.map +1 -0
- package/dist/Fx/combinators/grouped.js +146 -0
- package/dist/Fx/combinators/index.d.ts +35 -0
- package/dist/Fx/combinators/index.d.ts.map +1 -1
- package/dist/Fx/combinators/index.js +35 -0
- package/dist/Fx/combinators/keyed.d.ts +121 -7
- package/dist/Fx/combinators/keyed.d.ts.map +1 -1
- package/dist/Fx/combinators/keyed.js +64 -6
- package/dist/Fx/combinators/loop.d.ts +16 -0
- package/dist/Fx/combinators/loop.d.ts.map +1 -1
- package/dist/Fx/combinators/loop.js +16 -0
- package/dist/Fx/combinators/loopCause.d.ts +17 -0
- package/dist/Fx/combinators/loopCause.d.ts.map +1 -1
- package/dist/Fx/combinators/loopCause.js +17 -0
- package/dist/Fx/combinators/loopCauseEffect.d.ts +18 -0
- package/dist/Fx/combinators/loopCauseEffect.d.ts.map +1 -1
- package/dist/Fx/combinators/loopCauseEffect.js +18 -0
- package/dist/Fx/combinators/loopEffect.d.ts +23 -0
- package/dist/Fx/combinators/loopEffect.d.ts.map +1 -1
- package/dist/Fx/combinators/loopEffect.js +23 -0
- package/dist/Fx/combinators/map.d.ts +45 -0
- package/dist/Fx/combinators/map.d.ts.map +1 -1
- package/dist/Fx/combinators/map.js +42 -0
- package/dist/Fx/combinators/mapBoth.d.ts +19 -0
- package/dist/Fx/combinators/mapBoth.d.ts.map +1 -1
- package/dist/Fx/combinators/mapBoth.js +19 -0
- package/dist/Fx/combinators/mapEffect.d.ts +24 -0
- package/dist/Fx/combinators/mapEffect.d.ts.map +1 -1
- package/dist/Fx/combinators/mapEffect.js +24 -0
- package/dist/Fx/combinators/mapError.d.ts +20 -4
- package/dist/Fx/combinators/mapError.d.ts.map +1 -1
- package/dist/Fx/combinators/mapError.js +20 -4
- package/dist/Fx/combinators/mergeAll.d.ts +34 -0
- package/dist/Fx/combinators/mergeAll.d.ts.map +1 -1
- package/dist/Fx/combinators/mergeAll.js +34 -0
- package/dist/Fx/combinators/mergeOrdered.d.ts +35 -3
- package/dist/Fx/combinators/mergeOrdered.d.ts.map +1 -1
- package/dist/Fx/combinators/mergeOrdered.js +35 -3
- package/dist/Fx/combinators/onError.d.ts +33 -3
- package/dist/Fx/combinators/onError.d.ts.map +1 -1
- package/dist/Fx/combinators/onError.js +33 -3
- package/dist/Fx/combinators/onExit.d.ts +28 -2
- package/dist/Fx/combinators/onExit.d.ts.map +1 -1
- package/dist/Fx/combinators/onExit.js +28 -2
- package/dist/Fx/combinators/onInterrupt.d.ts +48 -3
- package/dist/Fx/combinators/onInterrupt.d.ts.map +1 -1
- package/dist/Fx/combinators/onInterrupt.js +48 -3
- package/dist/Fx/combinators/pairwise.d.ts +28 -0
- package/dist/Fx/combinators/pairwise.d.ts.map +1 -0
- package/dist/Fx/combinators/pairwise.js +31 -0
- package/dist/Fx/combinators/provide.d.ts +130 -9
- package/dist/Fx/combinators/provide.d.ts.map +1 -1
- package/dist/Fx/combinators/provide.js +130 -9
- package/dist/Fx/combinators/race.d.ts +92 -0
- package/dist/Fx/combinators/race.d.ts.map +1 -0
- package/dist/Fx/combinators/race.js +149 -0
- package/dist/Fx/combinators/repeat.d.ts +41 -0
- package/dist/Fx/combinators/repeat.d.ts.map +1 -0
- package/dist/Fx/combinators/repeat.js +57 -0
- package/dist/Fx/combinators/result.d.ts +22 -0
- package/dist/Fx/combinators/result.d.ts.map +1 -1
- package/dist/Fx/combinators/result.js +26 -12
- package/dist/Fx/combinators/retry.d.ts +53 -0
- package/dist/Fx/combinators/retry.d.ts.map +1 -0
- package/dist/Fx/combinators/retry.js +71 -0
- package/dist/Fx/combinators/sample.d.ts +31 -0
- package/dist/Fx/combinators/sample.d.ts.map +1 -0
- package/dist/Fx/combinators/sample.js +42 -0
- package/dist/Fx/combinators/scan.d.ts +39 -0
- package/dist/Fx/combinators/scan.d.ts.map +1 -1
- package/dist/Fx/combinators/scan.js +39 -0
- package/dist/Fx/combinators/since.d.ts +30 -0
- package/dist/Fx/combinators/since.d.ts.map +1 -0
- package/dist/Fx/combinators/since.js +39 -0
- package/dist/Fx/combinators/skip.d.ts +31 -0
- package/dist/Fx/combinators/skip.d.ts.map +1 -1
- package/dist/Fx/combinators/skip.js +31 -0
- package/dist/Fx/combinators/skipRepeats.d.ts +16 -0
- package/dist/Fx/combinators/skipRepeats.d.ts.map +1 -1
- package/dist/Fx/combinators/skipRepeats.js +16 -0
- package/dist/Fx/combinators/skipRepeatsWith.d.ts +17 -0
- package/dist/Fx/combinators/skipRepeatsWith.d.ts.map +1 -1
- package/dist/Fx/combinators/skipRepeatsWith.js +17 -0
- package/dist/Fx/combinators/skipWhile.d.ts +68 -0
- package/dist/Fx/combinators/skipWhile.d.ts.map +1 -1
- package/dist/Fx/combinators/skipWhile.js +68 -0
- package/dist/Fx/combinators/slice.d.ts +82 -0
- package/dist/Fx/combinators/slice.d.ts.map +1 -1
- package/dist/Fx/combinators/slice.js +33 -0
- package/dist/Fx/combinators/switchMap.d.ts +38 -0
- package/dist/Fx/combinators/switchMap.d.ts.map +1 -1
- package/dist/Fx/combinators/switchMap.js +38 -0
- package/dist/Fx/combinators/switchMapEffect.d.ts +37 -0
- package/dist/Fx/combinators/switchMapEffect.d.ts.map +1 -1
- package/dist/Fx/combinators/switchMapEffect.js +37 -0
- package/dist/Fx/combinators/take.d.ts +32 -0
- package/dist/Fx/combinators/take.d.ts.map +1 -1
- package/dist/Fx/combinators/take.js +32 -0
- package/dist/Fx/combinators/takeUntil.d.ts +46 -0
- package/dist/Fx/combinators/takeUntil.d.ts.map +1 -1
- package/dist/Fx/combinators/takeUntil.js +46 -0
- package/dist/Fx/combinators/takeWhile.d.ts +31 -0
- package/dist/Fx/combinators/takeWhile.d.ts.map +1 -1
- package/dist/Fx/combinators/takeWhile.js +31 -0
- package/dist/Fx/combinators/tapEffect.d.ts +16 -0
- package/dist/Fx/combinators/tapEffect.d.ts.map +1 -1
- package/dist/Fx/combinators/tapEffect.js +16 -0
- package/dist/Fx/combinators/throttle.d.ts +79 -0
- package/dist/Fx/combinators/throttle.d.ts.map +1 -0
- package/dist/Fx/combinators/throttle.js +99 -0
- package/dist/Fx/combinators/timeout.d.ts +76 -0
- package/dist/Fx/combinators/timeout.d.ts.map +1 -0
- package/dist/Fx/combinators/timeout.js +110 -0
- package/dist/Fx/combinators/tuple.d.ts +30 -0
- package/dist/Fx/combinators/tuple.d.ts.map +1 -1
- package/dist/Fx/combinators/tuple.js +34 -3
- package/dist/Fx/combinators/until.d.ts +27 -0
- package/dist/Fx/combinators/until.d.ts.map +1 -0
- package/dist/Fx/combinators/until.js +56 -0
- package/dist/Fx/combinators/unwrap.d.ts +29 -0
- package/dist/Fx/combinators/unwrap.d.ts.map +1 -1
- package/dist/Fx/combinators/unwrap.js +29 -0
- package/dist/Fx/combinators/unwrapScoped.d.ts +33 -0
- package/dist/Fx/combinators/unwrapScoped.d.ts.map +1 -1
- package/dist/Fx/combinators/unwrapScoped.js +33 -0
- package/dist/Fx/combinators/when.d.ts +35 -0
- package/dist/Fx/combinators/when.d.ts.map +1 -1
- package/dist/Fx/combinators/when.js +36 -1
- package/dist/Fx/combinators/withLatestFrom.d.ts +58 -0
- package/dist/Fx/combinators/withLatestFrom.d.ts.map +1 -0
- package/dist/Fx/combinators/withLatestFrom.js +68 -0
- package/dist/Fx/combinators/withSpan.d.ts +35 -1
- package/dist/Fx/combinators/withSpan.d.ts.map +1 -1
- package/dist/Fx/combinators/withSpan.js +34 -3
- package/dist/Fx/combinators/zip.d.ts +60 -0
- package/dist/Fx/combinators/zip.d.ts.map +1 -1
- package/dist/Fx/combinators/zip.js +60 -0
- package/dist/Fx/constructors/at.d.ts +20 -0
- package/dist/Fx/constructors/at.d.ts.map +1 -1
- package/dist/Fx/constructors/at.js +20 -0
- package/dist/Fx/constructors/die.d.ts +21 -0
- package/dist/Fx/constructors/die.d.ts.map +1 -1
- package/dist/Fx/constructors/die.js +21 -0
- package/dist/Fx/constructors/empty.d.ts +18 -0
- package/dist/Fx/constructors/empty.d.ts.map +1 -1
- package/dist/Fx/constructors/empty.js +18 -0
- package/dist/Fx/constructors/fail.d.ts +21 -0
- package/dist/Fx/constructors/fail.d.ts.map +1 -1
- package/dist/Fx/constructors/fail.js +21 -0
- package/dist/Fx/constructors/failCause.d.ts +22 -0
- package/dist/Fx/constructors/failCause.d.ts.map +1 -1
- package/dist/Fx/constructors/failCause.js +22 -0
- package/dist/Fx/constructors/fn.d.ts +113 -13
- package/dist/Fx/constructors/fn.d.ts.map +1 -1
- package/dist/Fx/constructors/fn.js +36 -0
- package/dist/Fx/constructors/fromEffect.d.ts +43 -1
- package/dist/Fx/constructors/fromEffect.d.ts.map +1 -1
- package/dist/Fx/constructors/fromEffect.js +43 -1
- package/dist/Fx/constructors/fromFailures.d.ts +24 -0
- package/dist/Fx/constructors/fromFailures.d.ts.map +1 -1
- package/dist/Fx/constructors/fromFailures.js +24 -0
- package/dist/Fx/constructors/fromIterable.d.ts +22 -0
- package/dist/Fx/constructors/fromIterable.d.ts.map +1 -1
- package/dist/Fx/constructors/fromIterable.js +22 -0
- package/dist/Fx/constructors/fromSchedule.d.ts +23 -0
- package/dist/Fx/constructors/fromSchedule.d.ts.map +1 -1
- package/dist/Fx/constructors/fromSchedule.js +25 -2
- package/dist/Fx/constructors/index.d.ts +2 -1
- package/dist/Fx/constructors/index.d.ts.map +1 -1
- package/dist/Fx/constructors/index.js +2 -1
- package/dist/Fx/constructors/interrupt.d.ts +21 -1
- package/dist/Fx/constructors/interrupt.d.ts.map +1 -1
- package/dist/Fx/constructors/interrupt.js +21 -1
- package/dist/Fx/constructors/make.d.ts +146 -1
- package/dist/Fx/constructors/make.d.ts.map +1 -1
- package/dist/Fx/constructors/make.js +54 -3
- package/dist/Fx/constructors/periodic.d.ts +29 -0
- package/dist/Fx/constructors/periodic.d.ts.map +1 -1
- package/dist/Fx/constructors/periodic.js +29 -0
- package/dist/Fx/constructors/succeed.d.ts +75 -3
- package/dist/Fx/constructors/succeed.d.ts.map +1 -1
- package/dist/Fx/constructors/succeed.js +75 -3
- package/dist/Fx/constructors/suspend.d.ts +28 -0
- package/dist/Fx/constructors/suspend.d.ts.map +1 -1
- package/dist/Fx/constructors/suspend.js +28 -0
- package/dist/Fx/constructors/sync.d.ts +32 -0
- package/dist/Fx/constructors/sync.d.ts.map +1 -0
- package/dist/Fx/constructors/sync.js +32 -0
- package/dist/Fx/internal/DeferredRef.d.ts +259 -7
- package/dist/Fx/internal/DeferredRef.d.ts.map +1 -1
- package/dist/Fx/internal/DeferredRef.js +260 -9
- package/dist/Fx/internal/UnionToTuple.d.ts +22 -0
- package/dist/Fx/internal/UnionToTuple.d.ts.map +1 -1
- package/dist/Fx/internal/diff.d.ts +586 -0
- package/dist/Fx/internal/diff.d.ts.map +1 -1
- package/dist/Fx/internal/diff.js +120 -9
- package/dist/Fx/internal/effectableEvaluateKey.d.ts +30 -0
- package/dist/Fx/internal/effectableEvaluateKey.d.ts.map +1 -0
- package/dist/Fx/internal/effectableEvaluateKey.js +29 -0
- package/dist/Fx/internal/effectableWithOverride.d.ts +55 -0
- package/dist/Fx/internal/effectableWithOverride.d.ts.map +1 -0
- package/dist/Fx/internal/effectableWithOverride.js +46 -0
- package/dist/Fx/internal/equivalence.d.ts +29 -0
- package/dist/Fx/internal/equivalence.d.ts.map +1 -1
- package/dist/Fx/internal/equivalence.js +29 -0
- package/dist/Fx/internal/multicast.d.ts +145 -2
- package/dist/Fx/internal/multicast.d.ts.map +1 -1
- package/dist/Fx/internal/multicast.js +146 -4
- package/dist/Fx/internal/ring-buffer.d.ts +149 -0
- package/dist/Fx/internal/ring-buffer.d.ts.map +1 -1
- package/dist/Fx/internal/ring-buffer.js +155 -0
- package/dist/Fx/internal/scope.d.ts +184 -0
- package/dist/Fx/internal/scope.d.ts.map +1 -1
- package/dist/Fx/internal/scope.js +150 -0
- package/dist/Fx/internal/yieldable.d.ts +117 -2
- package/dist/Fx/internal/yieldable.d.ts.map +1 -1
- package/dist/Fx/internal/yieldable.js +86 -3
- package/dist/Fx/run/collect.d.ts +89 -0
- package/dist/Fx/run/collect.d.ts.map +1 -1
- package/dist/Fx/run/collect.js +90 -1
- package/dist/Fx/run/first.d.ts +22 -0
- package/dist/Fx/run/first.d.ts.map +1 -1
- package/dist/Fx/run/first.js +22 -0
- package/dist/Fx/run/fork.d.ts +50 -0
- package/dist/Fx/run/fork.d.ts.map +1 -1
- package/dist/Fx/run/fork.js +50 -0
- package/dist/Fx/run/observe.d.ts +106 -0
- package/dist/Fx/run/observe.d.ts.map +1 -1
- package/dist/Fx/run/observe.js +106 -0
- package/dist/Fx/run/runPromise.d.ts +43 -0
- package/dist/Fx/run/runPromise.d.ts.map +1 -1
- package/dist/Fx/run/runPromise.js +43 -0
- package/dist/Fx/stream.d.ts +92 -0
- package/dist/Fx/stream.d.ts.map +1 -1
- package/dist/Fx/stream.js +60 -1
- package/dist/Push/Push.d.ts +1216 -91
- package/dist/Push/Push.d.ts.map +1 -1
- package/dist/Push/Push.js +1012 -83
- package/dist/RefArray.d.ts +2 -0
- package/dist/RefArray.d.ts.map +1 -0
- package/dist/RefArray.js +1 -0
- package/dist/RefBigDecimal.d.ts +2 -0
- package/dist/RefBigDecimal.d.ts.map +1 -0
- package/dist/RefBigDecimal.js +1 -0
- package/dist/RefBigInt.d.ts +2 -0
- package/dist/RefBigInt.d.ts.map +1 -0
- package/dist/RefBigInt.js +1 -0
- package/dist/RefBoolean.d.ts +2 -0
- package/dist/RefBoolean.d.ts.map +1 -0
- package/dist/RefBoolean.js +1 -0
- package/dist/RefCause.d.ts +2 -0
- package/dist/RefCause.d.ts.map +1 -0
- package/dist/RefCause.js +1 -0
- package/dist/RefChunk.d.ts +2 -0
- package/dist/RefChunk.d.ts.map +1 -0
- package/dist/RefChunk.js +1 -0
- package/dist/RefDateTime.d.ts +2 -0
- package/dist/RefDateTime.d.ts.map +1 -0
- package/dist/RefDateTime.js +1 -0
- package/dist/RefDuration.d.ts +2 -0
- package/dist/RefDuration.d.ts.map +1 -0
- package/dist/RefDuration.js +1 -0
- package/dist/RefGraph.d.ts +2 -0
- package/dist/RefGraph.d.ts.map +1 -0
- package/dist/RefGraph.js +1 -0
- package/dist/RefHashMap.d.ts +2 -0
- package/dist/RefHashMap.d.ts.map +1 -0
- package/dist/RefHashMap.js +1 -0
- package/dist/RefHashRing.d.ts +2 -0
- package/dist/RefHashRing.d.ts.map +1 -0
- package/dist/RefHashRing.js +1 -0
- package/dist/RefHashSet.d.ts +2 -0
- package/dist/RefHashSet.d.ts.map +1 -0
- package/dist/RefHashSet.js +1 -0
- package/dist/RefIterable.d.ts +2 -0
- package/dist/RefIterable.d.ts.map +1 -0
- package/dist/RefIterable.js +1 -0
- package/dist/RefOption.d.ts +2 -0
- package/dist/RefOption.d.ts.map +1 -0
- package/dist/RefOption.js +1 -0
- package/dist/RefRecord.d.ts +2 -0
- package/dist/RefRecord.d.ts.map +1 -0
- package/dist/RefRecord.js +1 -0
- package/dist/RefResult.d.ts +2 -0
- package/dist/RefResult.d.ts.map +1 -0
- package/dist/RefResult.js +1 -0
- package/dist/RefString.d.ts +2 -0
- package/dist/RefString.d.ts.map +1 -0
- package/dist/RefString.js +1 -0
- package/dist/RefStruct.d.ts +2 -0
- package/dist/RefStruct.d.ts.map +1 -0
- package/dist/RefStruct.js +1 -0
- package/dist/RefSubject/Hydration.d.ts +504 -0
- package/dist/RefSubject/Hydration.d.ts.map +1 -0
- package/dist/RefSubject/Hydration.js +300 -0
- package/dist/RefSubject/RefArray.d.ts +351 -4
- package/dist/RefSubject/RefArray.d.ts.map +1 -1
- package/dist/RefSubject/RefArray.js +339 -3
- package/dist/RefSubject/RefBigDecimal.d.ts +221 -1
- package/dist/RefSubject/RefBigDecimal.d.ts.map +1 -1
- package/dist/RefSubject/RefBigDecimal.js +210 -1
- package/dist/RefSubject/RefBigInt.d.ts +166 -1
- package/dist/RefSubject/RefBigInt.d.ts.map +1 -1
- package/dist/RefSubject/RefBigInt.js +155 -1
- package/dist/RefSubject/RefBoolean.d.ts +166 -1
- package/dist/RefSubject/RefBoolean.d.ts.map +1 -1
- package/dist/RefSubject/RefBoolean.js +155 -1
- package/dist/RefSubject/RefCause.d.ts +122 -1
- package/dist/RefSubject/RefCause.d.ts.map +1 -1
- package/dist/RefSubject/RefCause.js +111 -1
- package/dist/RefSubject/RefChunk.d.ts +406 -1
- package/dist/RefSubject/RefChunk.d.ts.map +1 -1
- package/dist/RefSubject/RefChunk.js +394 -0
- package/dist/RefSubject/RefDateTime.d.ts +122 -1
- package/dist/RefSubject/RefDateTime.d.ts.map +1 -1
- package/dist/RefSubject/RefDateTime.js +111 -1
- package/dist/RefSubject/RefDuration.d.ts +155 -1
- package/dist/RefSubject/RefDuration.d.ts.map +1 -1
- package/dist/RefSubject/RefDuration.js +144 -1
- package/dist/RefSubject/RefGraph.d.ts +320 -6
- package/dist/RefSubject/RefGraph.d.ts.map +1 -1
- package/dist/RefSubject/RefGraph.js +303 -0
- package/dist/RefSubject/RefHashMap.d.ts +296 -1
- package/dist/RefSubject/RefHashMap.d.ts.map +1 -1
- package/dist/RefSubject/RefHashMap.js +284 -0
- package/dist/RefSubject/RefHashRing.d.ts +146 -2
- package/dist/RefSubject/RefHashRing.d.ts.map +1 -1
- package/dist/RefSubject/RefHashRing.js +133 -0
- package/dist/RefSubject/RefHashSet.d.ts +230 -1
- package/dist/RefSubject/RefHashSet.d.ts.map +1 -1
- package/dist/RefSubject/RefHashSet.js +218 -0
- package/dist/RefSubject/RefIterable.d.ts +327 -1
- package/dist/RefSubject/RefIterable.d.ts.map +1 -1
- package/dist/RefSubject/RefIterable.js +315 -0
- package/dist/RefSubject/RefOption.d.ts +144 -1
- package/dist/RefSubject/RefOption.d.ts.map +1 -1
- package/dist/RefSubject/RefOption.js +133 -1
- package/dist/RefSubject/RefRecord.d.ts +339 -1
- package/dist/RefSubject/RefRecord.d.ts.map +1 -1
- package/dist/RefSubject/RefRecord.js +327 -0
- package/dist/RefSubject/RefResult.d.ts +155 -23
- package/dist/RefSubject/RefResult.d.ts.map +1 -1
- package/dist/RefSubject/RefResult.js +122 -1
- package/dist/RefSubject/RefString.d.ts +188 -1
- package/dist/RefSubject/RefString.d.ts.map +1 -1
- package/dist/RefSubject/RefString.js +177 -1
- package/dist/RefSubject/RefStruct.d.ts +156 -1
- package/dist/RefSubject/RefStruct.d.ts.map +1 -1
- package/dist/RefSubject/RefStruct.js +145 -1
- package/dist/RefSubject/RefSubject.d.ts +1166 -13
- package/dist/RefSubject/RefSubject.d.ts.map +1 -1
- package/dist/RefSubject/RefSubject.js +843 -51
- package/dist/RefSubject/RefTrie.d.ts +290 -4
- package/dist/RefSubject/RefTrie.d.ts.map +1 -1
- package/dist/RefSubject/RefTrie.js +278 -3
- package/dist/RefSubject/RefTuple.d.ts +117 -1
- package/dist/RefSubject/RefTuple.d.ts.map +1 -1
- package/dist/RefSubject/RefTuple.js +106 -1
- package/dist/RefSubject/index.d.ts +1 -0
- package/dist/RefSubject/index.d.ts.map +1 -1
- package/dist/RefSubject/index.js +1 -0
- package/dist/RefSubject.d.ts +2 -1
- package/dist/RefSubject.d.ts.map +1 -1
- package/dist/RefSubject.js +2 -1
- package/dist/RefTrie.d.ts +2 -0
- package/dist/RefTrie.d.ts.map +1 -0
- package/dist/RefTrie.js +1 -0
- package/dist/RefTuple.d.ts +2 -0
- package/dist/RefTuple.d.ts.map +1 -0
- package/dist/RefTuple.js +1 -0
- package/dist/Sink/Sink.d.ts +381 -10
- package/dist/Sink/Sink.d.ts.map +1 -1
- package/dist/Sink/Sink.js +49 -2
- package/dist/Sink/combinators.d.ts +731 -2
- package/dist/Sink/combinators.d.ts.map +1 -1
- package/dist/Sink/combinators.js +706 -4
- package/dist/Subject/Subject.d.ts +1013 -19
- package/dist/Subject/Subject.d.ts.map +1 -1
- package/dist/Subject/Subject.js +901 -36
- package/dist/Versioned/Versioned.d.ts +424 -7
- package/dist/Versioned/Versioned.d.ts.map +1 -1
- package/dist/Versioned/Versioned.js +238 -12
- package/dist/index.d.ts +22 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +22 -3
- package/package.json +123 -14
- package/dist/Fx/constructors/fromYieldable.d.ts +0 -12
- package/dist/Fx/constructors/fromYieldable.d.ts.map +0 -1
- package/dist/Fx/constructors/fromYieldable.js +0 -12
- package/src/Fx/Fx.ts +0 -164
- package/src/Fx/TypeId.ts +0 -25
- package/src/Fx/combinators/additive.ts +0 -142
- package/src/Fx/combinators/catch.ts +0 -416
- package/src/Fx/combinators/causes.ts +0 -23
- package/src/Fx/combinators/changesWithEffect.ts +0 -66
- package/src/Fx/combinators/compact.ts +0 -15
- package/src/Fx/combinators/continueWith.ts +0 -78
- package/src/Fx/combinators/dropUntil.ts +0 -47
- package/src/Fx/combinators/ensuring.ts +0 -23
- package/src/Fx/combinators/exhaustLatestMap.ts +0 -74
- package/src/Fx/combinators/exhaustLatestMapEffect.ts +0 -25
- package/src/Fx/combinators/exhaustMap.ts +0 -36
- package/src/Fx/combinators/exhaustMapEffect.ts +0 -23
- package/src/Fx/combinators/exit.ts +0 -15
- package/src/Fx/combinators/filter.ts +0 -22
- package/src/Fx/combinators/filterEffect.ts +0 -31
- package/src/Fx/combinators/filterMap.ts +0 -23
- package/src/Fx/combinators/filterMapEffect.ts +0 -32
- package/src/Fx/combinators/filterMapLoop.ts +0 -35
- package/src/Fx/combinators/filterMapLoopCause.ts +0 -36
- package/src/Fx/combinators/filterMapLoopCauseEffect.ts +0 -46
- package/src/Fx/combinators/filterMapLoopEffect.ts +0 -36
- package/src/Fx/combinators/flatMap.ts +0 -51
- package/src/Fx/combinators/flatMapConcurrently.ts +0 -39
- package/src/Fx/combinators/flatMapConcurrentlyEffect.ts +0 -26
- package/src/Fx/combinators/flatMapEffect.ts +0 -42
- package/src/Fx/combinators/flip.ts +0 -14
- package/src/Fx/combinators/gen.ts +0 -24
- package/src/Fx/combinators/genScoped.ts +0 -24
- package/src/Fx/combinators/index.ts +0 -61
- package/src/Fx/combinators/keyed.ts +0 -369
- package/src/Fx/combinators/loop.ts +0 -27
- package/src/Fx/combinators/loopCause.ts +0 -34
- package/src/Fx/combinators/loopCauseEffect.ts +0 -36
- package/src/Fx/combinators/loopEffect.ts +0 -34
- package/src/Fx/combinators/map.ts +0 -22
- package/src/Fx/combinators/mapBoth.ts +0 -40
- package/src/Fx/combinators/mapEffect.ts +0 -32
- package/src/Fx/combinators/mapError.ts +0 -28
- package/src/Fx/combinators/mergeAll.ts +0 -22
- package/src/Fx/combinators/mergeOrdered.ts +0 -123
- package/src/Fx/combinators/onError.ts +0 -40
- package/src/Fx/combinators/onExit.ts +0 -82
- package/src/Fx/combinators/onInterrupt.ts +0 -87
- package/src/Fx/combinators/provide.ts +0 -124
- package/src/Fx/combinators/result.ts +0 -39
- package/src/Fx/combinators/scan.ts +0 -82
- package/src/Fx/combinators/skip.ts +0 -41
- package/src/Fx/combinators/skipRepeats.ts +0 -15
- package/src/Fx/combinators/skipRepeatsWith.ts +0 -40
- package/src/Fx/combinators/skipWhile.ts +0 -100
- package/src/Fx/combinators/slice.ts +0 -55
- package/src/Fx/combinators/switchMap.ts +0 -55
- package/src/Fx/combinators/switchMapEffect.ts +0 -25
- package/src/Fx/combinators/take.ts +0 -38
- package/src/Fx/combinators/takeUntil.ts +0 -88
- package/src/Fx/combinators/takeWhile.ts +0 -47
- package/src/Fx/combinators/tapEffect.ts +0 -39
- package/src/Fx/combinators/tuple.ts +0 -79
- package/src/Fx/combinators/unwrap.ts +0 -21
- package/src/Fx/combinators/unwrapScoped.ts +0 -26
- package/src/Fx/combinators/when.ts +0 -64
- package/src/Fx/combinators/withSpan.ts +0 -24
- package/src/Fx/combinators/zip.ts +0 -175
- package/src/Fx/constructors/at.ts +0 -23
- package/src/Fx/constructors/die.ts +0 -17
- package/src/Fx/constructors/empty.ts +0 -10
- package/src/Fx/constructors/fail.ts +0 -14
- package/src/Fx/constructors/failCause.ts +0 -14
- package/src/Fx/constructors/fn.ts +0 -245
- package/src/Fx/constructors/fromEffect.ts +0 -24
- package/src/Fx/constructors/fromFailures.ts +0 -19
- package/src/Fx/constructors/fromIterable.ts +0 -15
- package/src/Fx/constructors/fromSchedule.ts +0 -18
- package/src/Fx/constructors/fromYieldable.ts +0 -17
- package/src/Fx/constructors/index.ts +0 -15
- package/src/Fx/constructors/interrupt.ts +0 -13
- package/src/Fx/constructors/make.ts +0 -103
- package/src/Fx/constructors/periodic.ts +0 -15
- package/src/Fx/constructors/succeed.ts +0 -37
- package/src/Fx/constructors/suspend.ts +0 -6
- package/src/Fx/index.ts +0 -6
- package/src/Fx/internal/DeferredRef.ts +0 -87
- package/src/Fx/internal/UnionToTuple.ts +0 -12
- package/src/Fx/internal/diff.ts +0 -191
- package/src/Fx/internal/equivalence.ts +0 -12
- package/src/Fx/internal/multicast.ts +0 -51
- package/src/Fx/internal/ring-buffer.ts +0 -60
- package/src/Fx/internal/scope.ts +0 -58
- package/src/Fx/internal/yieldable.ts +0 -31
- package/src/Fx/run/collect.ts +0 -79
- package/src/Fx/run/first.ts +0 -20
- package/src/Fx/run/fork.ts +0 -40
- package/src/Fx/run/index.ts +0 -5
- package/src/Fx/run/observe.ts +0 -114
- package/src/Fx/run/runPromise.ts +0 -32
- package/src/Fx/stream.ts +0 -42
- package/src/Fx.additive-combinators.test.ts +0 -126
- package/src/Fx.catch-additive.test.ts +0 -206
- package/src/Fx.catch.test.ts +0 -60
- package/src/Fx.dropUntil.test.ts +0 -61
- package/src/Fx.fn.test.ts +0 -51
- package/src/Fx.lifecycle.test.ts +0 -79
- package/src/Fx.mapError-mapBoth.test.ts +0 -101
- package/src/Fx.provide-combinators.test.ts +0 -94
- package/src/Fx.result-changesWithEffect.test.ts +0 -112
- package/src/Fx.scan.test.ts +0 -73
- package/src/Fx.takeWhile-skipWhile.test.ts +0 -84
- package/src/Fx.test.ts +0 -71
- package/src/Fx.ts +0 -1
- package/src/Fx.zip-merge-additive.test.ts +0 -171
- package/src/Fx.zip.test.ts +0 -133
- package/src/Push/Push.ts +0 -1093
- package/src/Push/index.ts +0 -1
- package/src/Push.additive.test.ts +0 -256
- package/src/Push.test.ts +0 -26
- package/src/Push.ts +0 -1
- package/src/RefSubject/RefArray.ts +0 -516
- package/src/RefSubject/RefBigDecimal.test.ts +0 -56
- package/src/RefSubject/RefBigDecimal.ts +0 -295
- package/src/RefSubject/RefBigInt.test.ts +0 -56
- package/src/RefSubject/RefBigInt.ts +0 -189
- package/src/RefSubject/RefBoolean.test.ts +0 -57
- package/src/RefSubject/RefBoolean.ts +0 -185
- package/src/RefSubject/RefCause.test.ts +0 -53
- package/src/RefSubject/RefCause.ts +0 -146
- package/src/RefSubject/RefChunk.ts +0 -516
- package/src/RefSubject/RefDateTime.test.ts +0 -43
- package/src/RefSubject/RefDateTime.ts +0 -261
- package/src/RefSubject/RefDuration.test.ts +0 -49
- package/src/RefSubject/RefDuration.ts +0 -188
- package/src/RefSubject/RefGraph.ts +0 -649
- package/src/RefSubject/RefHashMap.ts +0 -474
- package/src/RefSubject/RefHashRing.ts +0 -262
- package/src/RefSubject/RefHashSet.ts +0 -308
- package/src/RefSubject/RefIterable.ts +0 -454
- package/src/RefSubject/RefOption.test.ts +0 -67
- package/src/RefSubject/RefOption.ts +0 -193
- package/src/RefSubject/RefRecord.ts +0 -621
- package/src/RefSubject/RefResult.test.ts +0 -63
- package/src/RefSubject/RefResult.ts +0 -209
- package/src/RefSubject/RefString.test.ts +0 -61
- package/src/RefSubject/RefString.ts +0 -256
- package/src/RefSubject/RefStruct.test.ts +0 -60
- package/src/RefSubject/RefStruct.ts +0 -253
- package/src/RefSubject/RefSubject.ts +0 -2642
- package/src/RefSubject/RefTrie.ts +0 -365
- package/src/RefSubject/RefTuple.test.ts +0 -60
- package/src/RefSubject/RefTuple.ts +0 -231
- package/src/RefSubject/index.ts +0 -21
- package/src/RefSubject.additive-parity.test.ts +0 -101
- package/src/RefSubject.test.ts +0 -65
- package/src/RefSubject.ts +0 -1
- package/src/Sink/Sink.ts +0 -159
- package/src/Sink/combinators.ts +0 -1115
- package/src/Sink/index.ts +0 -2
- package/src/Sink.combinators.test.ts +0 -88
- package/src/Sink.reduce-collect-head-last.test.ts +0 -107
- package/src/Sink.ts +0 -1
- package/src/Subject/Subject.ts +0 -440
- package/src/Subject/index.ts +0 -1
- package/src/Subject.test.ts +0 -47
- package/src/Subject.ts +0 -1
- package/src/Versioned/Versioned.ts +0 -595
- package/src/Versioned/index.ts +0 -1
- package/src/Versioned.filterMap.test.ts +0 -91
- package/src/Versioned.test.ts +0 -23
- package/src/Versioned.ts +0 -1
- package/src/index.ts +0 -7
|
@@ -8,6 +8,26 @@ import type { Fx } from "../Fx.js";
|
|
|
8
8
|
* `Equivalence<A>`, you supply `(prev, next) => Effect<boolean>` where `true`
|
|
9
9
|
* means "equal" (skip) and `false` means "changed" (emit).
|
|
10
10
|
*
|
|
11
|
+
* @remarks
|
|
12
|
+
* ## Why
|
|
13
|
+
* `changesWithEffect` supports service-backed or failing equivalence checks. The first value always
|
|
14
|
+
* emits; every later value is compared with the last emitted value and emits only when the effect
|
|
15
|
+
* returns `false`, preserving source order.
|
|
16
|
+
*
|
|
17
|
+
* ## Ownership and lifetime
|
|
18
|
+
* One previous value and a semaphore are scoped to each run. Comparison effects are serialized,
|
|
19
|
+
* interrupted with the run, and add their failures and services to the resulting Fx.
|
|
20
|
+
*
|
|
21
|
+
* @example
|
|
22
|
+
* ```ts
|
|
23
|
+
* import { Effect } from "effect"
|
|
24
|
+
* import { Fx } from "@typed/fx"
|
|
25
|
+
*
|
|
26
|
+
* const changes = Fx.fromIterable([1, 1, 2]).pipe(
|
|
27
|
+
* Fx.changesWithEffect((previous, next) => Effect.succeed(previous === next)),
|
|
28
|
+
* )
|
|
29
|
+
* ```
|
|
30
|
+
*
|
|
11
31
|
* @param f - Effectful function: `(prev, next) => Effect<boolean>`. Return `true` to skip (treat as duplicate), `false` to emit.
|
|
12
32
|
* @returns An `Fx` with consecutive "equal" elements removed.
|
|
13
33
|
* @since 1.0.0
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"changesWithEffect.d.ts","sourceRoot":"","sources":["../../../src/Fx/combinators/changesWithEffect.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAMxC,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,UAAU,CAAC;AAEnC
|
|
1
|
+
{"version":3,"file":"changesWithEffect.d.ts","sourceRoot":"","sources":["../../../src/Fx/combinators/changesWithEffect.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAMxC,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,UAAU,CAAC;AAEnC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,eAAO,MAAM,iBAAiB,EAAE;IAC9B,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EACR,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,EAAE,EAAE,CAAC,GACtD,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;IAEzD,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EACd,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,EACpB,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,EAAE,EAAE,CAAC,GACtD,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;CAoC1B,CAAC"}
|
|
@@ -12,6 +12,26 @@ import { make } from "../constructors/make.js";
|
|
|
12
12
|
* `Equivalence<A>`, you supply `(prev, next) => Effect<boolean>` where `true`
|
|
13
13
|
* means "equal" (skip) and `false` means "changed" (emit).
|
|
14
14
|
*
|
|
15
|
+
* @remarks
|
|
16
|
+
* ## Why
|
|
17
|
+
* `changesWithEffect` supports service-backed or failing equivalence checks. The first value always
|
|
18
|
+
* emits; every later value is compared with the last emitted value and emits only when the effect
|
|
19
|
+
* returns `false`, preserving source order.
|
|
20
|
+
*
|
|
21
|
+
* ## Ownership and lifetime
|
|
22
|
+
* One previous value and a semaphore are scoped to each run. Comparison effects are serialized,
|
|
23
|
+
* interrupted with the run, and add their failures and services to the resulting Fx.
|
|
24
|
+
*
|
|
25
|
+
* @example
|
|
26
|
+
* ```ts
|
|
27
|
+
* import { Effect } from "effect"
|
|
28
|
+
* import { Fx } from "@typed/fx"
|
|
29
|
+
*
|
|
30
|
+
* const changes = Fx.fromIterable([1, 1, 2]).pipe(
|
|
31
|
+
* Fx.changesWithEffect((previous, next) => Effect.succeed(previous === next)),
|
|
32
|
+
* )
|
|
33
|
+
* ```
|
|
34
|
+
*
|
|
15
35
|
* @param f - Effectful function: `(prev, next) => Effect<boolean>`. Return `true` to skip (treat as duplicate), `false` to emit.
|
|
16
36
|
* @returns An `Fx` with consecutive "equal" elements removed.
|
|
17
37
|
* @since 1.0.0
|
|
@@ -3,6 +3,23 @@ import type { Fx } from "../Fx.js";
|
|
|
3
3
|
/**
|
|
4
4
|
* Compacts an Fx of Options, discarding `None` values and unwrapping `Some` values.
|
|
5
5
|
*
|
|
6
|
+
* @remarks
|
|
7
|
+
* ## Why
|
|
8
|
+
* `compact` turns optional pushed values into ordinary pushed values without inventing a sentinel.
|
|
9
|
+
* It emits once for each `Some`, never for `None`, and preserves the order of retained values.
|
|
10
|
+
*
|
|
11
|
+
* ## Ownership and lifetime
|
|
12
|
+
* This is a stateless sink transformation. It acquires no resources and forwards source failures,
|
|
13
|
+
* services, completion, and interruption unchanged.
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* ```ts
|
|
17
|
+
* import { Option } from "effect"
|
|
18
|
+
* import { Fx } from "@typed/fx"
|
|
19
|
+
*
|
|
20
|
+
* const present = Fx.fromIterable([Option.some(1), Option.none(), Option.some(2)]).pipe(Fx.compact)
|
|
21
|
+
* ```
|
|
22
|
+
*
|
|
6
23
|
* @param self - An `Fx` emitting `Option<A>`.
|
|
7
24
|
* @returns An `Fx` emitting `A`.
|
|
8
25
|
* @since 1.0.0
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compact.d.ts","sourceRoot":"","sources":["../../../src/Fx/combinators/compact.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,MAAM,eAAe,CAAC;AAG7C,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,UAAU,CAAC;AAEnC
|
|
1
|
+
{"version":3,"file":"compact.d.ts","sourceRoot":"","sources":["../../../src/Fx/combinators/compact.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,MAAM,eAAe,CAAC;AAG7C,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,UAAU,CAAC;AAEnC;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,eAAO,MAAM,OAAO,GAAI,CAAC,EAAE,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CACnB,CAAC"}
|
|
@@ -3,6 +3,23 @@ import { make } from "../constructors/make.js";
|
|
|
3
3
|
/**
|
|
4
4
|
* Compacts an Fx of Options, discarding `None` values and unwrapping `Some` values.
|
|
5
5
|
*
|
|
6
|
+
* @remarks
|
|
7
|
+
* ## Why
|
|
8
|
+
* `compact` turns optional pushed values into ordinary pushed values without inventing a sentinel.
|
|
9
|
+
* It emits once for each `Some`, never for `None`, and preserves the order of retained values.
|
|
10
|
+
*
|
|
11
|
+
* ## Ownership and lifetime
|
|
12
|
+
* This is a stateless sink transformation. It acquires no resources and forwards source failures,
|
|
13
|
+
* services, completion, and interruption unchanged.
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* ```ts
|
|
17
|
+
* import { Option } from "effect"
|
|
18
|
+
* import { Fx } from "@typed/fx"
|
|
19
|
+
*
|
|
20
|
+
* const present = Fx.fromIterable([Option.some(1), Option.none(), Option.some(2)]).pipe(Fx.compact)
|
|
21
|
+
* ```
|
|
22
|
+
*
|
|
6
23
|
* @param self - An `Fx` emitting `Option<A>`.
|
|
7
24
|
* @returns An `Fx` emitting `A`.
|
|
8
25
|
* @since 1.0.0
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import type { FlatMapLike } from "./flatMap.js";
|
|
2
|
+
import type { FlatMapEffectLike } from "./flatMapEffect.js";
|
|
3
|
+
/**
|
|
4
|
+
* Maps each element to an inner Fx and concatenates the results sequentially.
|
|
5
|
+
*
|
|
6
|
+
* @remarks
|
|
7
|
+
* ## Why
|
|
8
|
+
*
|
|
9
|
+
* `concatMap` is the flattening policy for work that must not overlap: the next
|
|
10
|
+
* source value is admitted only after the current inner Fx completes. It is the
|
|
11
|
+
* bounded-concurrency form of {@link flatMapConcurrently} with a limit of one.
|
|
12
|
+
*
|
|
13
|
+
* ## Ordering and cardinality
|
|
14
|
+
*
|
|
15
|
+
* Every source value creates exactly one inner Fx. Inner values retain both
|
|
16
|
+
* source order and their order within each inner Fx; no inner value is buffered
|
|
17
|
+
* behind a later inner because later inners have not started yet.
|
|
18
|
+
*
|
|
19
|
+
* ## Ownership and lifetime
|
|
20
|
+
*
|
|
21
|
+
* Source and inner failures are forwarded to the output Sink, and both service
|
|
22
|
+
* requirements remain in the returned type. The required `Scope` owns the
|
|
23
|
+
* admitted inner fiber; interruption closes it and prevents queued source work
|
|
24
|
+
* from starting. No values are dropped, switched, or replayed.
|
|
25
|
+
*
|
|
26
|
+
* @example
|
|
27
|
+
* ```ts
|
|
28
|
+
* import { Fx } from "@typed/fx"
|
|
29
|
+
* import { Effect } from "effect"
|
|
30
|
+
*
|
|
31
|
+
* const ordered = Fx.concatMap(Fx.fromIterable([
|
|
32
|
+
* { id: "first", wait: "20 millis" as const },
|
|
33
|
+
* { id: "second", wait: "1 millis" as const }
|
|
34
|
+
* ]), ({ id, wait }) => Fx.at(id, wait))
|
|
35
|
+
*
|
|
36
|
+
* const program = Effect.scoped(Fx.collectAll(ordered))
|
|
37
|
+
* Effect.runPromise(program).then(console.log)
|
|
38
|
+
* // ["first", "second"]: the one-millisecond inner is not started early
|
|
39
|
+
* ```
|
|
40
|
+
*
|
|
41
|
+
* @since 1.0.0
|
|
42
|
+
* @category combinators
|
|
43
|
+
*/
|
|
44
|
+
export declare const concatMap: FlatMapLike;
|
|
45
|
+
/**
|
|
46
|
+
* Maps each element to an Effect and concatenates the results sequentially.
|
|
47
|
+
*
|
|
48
|
+
* @remarks
|
|
49
|
+
* ## Why
|
|
50
|
+
*
|
|
51
|
+
* This is the Effect-producing form of {@link concatMap}. It makes serialized
|
|
52
|
+
* commands explicit without requiring callers to wrap each Effect with
|
|
53
|
+
* `Fx.fromEffect`.
|
|
54
|
+
*
|
|
55
|
+
* ## Ordering and cardinality
|
|
56
|
+
*
|
|
57
|
+
* Each source value starts one Effect only after the previous Effect has
|
|
58
|
+
* completed. Each successful Effect emits exactly one value, so output order is
|
|
59
|
+
* source order and there is no overlap or buffering of successful results.
|
|
60
|
+
*
|
|
61
|
+
* ## Ownership and lifetime
|
|
62
|
+
*
|
|
63
|
+
* Source failures and Effect failures remain typed; callback services are added
|
|
64
|
+
* to the output requirements. The returned Fx requires `Scope`, which owns the
|
|
65
|
+
* active callback Effect and interrupts it when observation ends.
|
|
66
|
+
*
|
|
67
|
+
* @example
|
|
68
|
+
* ```ts
|
|
69
|
+
* import { Fx } from "@typed/fx"
|
|
70
|
+
* import { Effect } from "effect"
|
|
71
|
+
*
|
|
72
|
+
* const saved = Fx.concatMapEffect(Fx.fromIterable([
|
|
73
|
+
* { id: "first", wait: "20 millis" as const },
|
|
74
|
+
* { id: "second", wait: "1 millis" as const }
|
|
75
|
+
* ]), ({ id, wait }) => Effect.as(Effect.sleep(wait), id))
|
|
76
|
+
*
|
|
77
|
+
* const program = Effect.scoped(Fx.collectAll(saved))
|
|
78
|
+
* Effect.runPromise(program).then(console.log)
|
|
79
|
+
* // ["first", "second"]
|
|
80
|
+
* ```
|
|
81
|
+
*
|
|
82
|
+
* @since 1.0.0
|
|
83
|
+
* @category combinators
|
|
84
|
+
*/
|
|
85
|
+
export declare const concatMapEffect: FlatMapEffectLike;
|
|
86
|
+
//# sourceMappingURL=concatMap.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"concatMap.d.ts","sourceRoot":"","sources":["../../../src/Fx/combinators/concatMap.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAE5D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AACH,eAAO,MAAM,SAAS,EAAE,WAOvB,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,eAAO,MAAM,eAAe,EAAE,iBAM7B,CAAC"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import { dual, flow } from "effect/Function";
|
|
2
|
+
import { fromEffect } from "../constructors/fromEffect.js";
|
|
3
|
+
import { flatMapConcurrently } from "./flatMapConcurrently.js";
|
|
4
|
+
/**
|
|
5
|
+
* Maps each element to an inner Fx and concatenates the results sequentially.
|
|
6
|
+
*
|
|
7
|
+
* @remarks
|
|
8
|
+
* ## Why
|
|
9
|
+
*
|
|
10
|
+
* `concatMap` is the flattening policy for work that must not overlap: the next
|
|
11
|
+
* source value is admitted only after the current inner Fx completes. It is the
|
|
12
|
+
* bounded-concurrency form of {@link flatMapConcurrently} with a limit of one.
|
|
13
|
+
*
|
|
14
|
+
* ## Ordering and cardinality
|
|
15
|
+
*
|
|
16
|
+
* Every source value creates exactly one inner Fx. Inner values retain both
|
|
17
|
+
* source order and their order within each inner Fx; no inner value is buffered
|
|
18
|
+
* behind a later inner because later inners have not started yet.
|
|
19
|
+
*
|
|
20
|
+
* ## Ownership and lifetime
|
|
21
|
+
*
|
|
22
|
+
* Source and inner failures are forwarded to the output Sink, and both service
|
|
23
|
+
* requirements remain in the returned type. The required `Scope` owns the
|
|
24
|
+
* admitted inner fiber; interruption closes it and prevents queued source work
|
|
25
|
+
* from starting. No values are dropped, switched, or replayed.
|
|
26
|
+
*
|
|
27
|
+
* @example
|
|
28
|
+
* ```ts
|
|
29
|
+
* import { Fx } from "@typed/fx"
|
|
30
|
+
* import { Effect } from "effect"
|
|
31
|
+
*
|
|
32
|
+
* const ordered = Fx.concatMap(Fx.fromIterable([
|
|
33
|
+
* { id: "first", wait: "20 millis" as const },
|
|
34
|
+
* { id: "second", wait: "1 millis" as const }
|
|
35
|
+
* ]), ({ id, wait }) => Fx.at(id, wait))
|
|
36
|
+
*
|
|
37
|
+
* const program = Effect.scoped(Fx.collectAll(ordered))
|
|
38
|
+
* Effect.runPromise(program).then(console.log)
|
|
39
|
+
* // ["first", "second"]: the one-millisecond inner is not started early
|
|
40
|
+
* ```
|
|
41
|
+
*
|
|
42
|
+
* @since 1.0.0
|
|
43
|
+
* @category combinators
|
|
44
|
+
*/
|
|
45
|
+
export const concatMap = dual(2, (self, f) => flatMapConcurrently(self, f, 1));
|
|
46
|
+
/**
|
|
47
|
+
* Maps each element to an Effect and concatenates the results sequentially.
|
|
48
|
+
*
|
|
49
|
+
* @remarks
|
|
50
|
+
* ## Why
|
|
51
|
+
*
|
|
52
|
+
* This is the Effect-producing form of {@link concatMap}. It makes serialized
|
|
53
|
+
* commands explicit without requiring callers to wrap each Effect with
|
|
54
|
+
* `Fx.fromEffect`.
|
|
55
|
+
*
|
|
56
|
+
* ## Ordering and cardinality
|
|
57
|
+
*
|
|
58
|
+
* Each source value starts one Effect only after the previous Effect has
|
|
59
|
+
* completed. Each successful Effect emits exactly one value, so output order is
|
|
60
|
+
* source order and there is no overlap or buffering of successful results.
|
|
61
|
+
*
|
|
62
|
+
* ## Ownership and lifetime
|
|
63
|
+
*
|
|
64
|
+
* Source failures and Effect failures remain typed; callback services are added
|
|
65
|
+
* to the output requirements. The returned Fx requires `Scope`, which owns the
|
|
66
|
+
* active callback Effect and interrupts it when observation ends.
|
|
67
|
+
*
|
|
68
|
+
* @example
|
|
69
|
+
* ```ts
|
|
70
|
+
* import { Fx } from "@typed/fx"
|
|
71
|
+
* import { Effect } from "effect"
|
|
72
|
+
*
|
|
73
|
+
* const saved = Fx.concatMapEffect(Fx.fromIterable([
|
|
74
|
+
* { id: "first", wait: "20 millis" as const },
|
|
75
|
+
* { id: "second", wait: "1 millis" as const }
|
|
76
|
+
* ]), ({ id, wait }) => Effect.as(Effect.sleep(wait), id))
|
|
77
|
+
*
|
|
78
|
+
* const program = Effect.scoped(Fx.collectAll(saved))
|
|
79
|
+
* Effect.runPromise(program).then(console.log)
|
|
80
|
+
* // ["first", "second"]
|
|
81
|
+
* ```
|
|
82
|
+
*
|
|
83
|
+
* @since 1.0.0
|
|
84
|
+
* @category combinators
|
|
85
|
+
*/
|
|
86
|
+
export const concatMapEffect = dual(2, (self, f) => concatMap(self, flow(f, fromEffect)));
|
|
@@ -1,6 +1,44 @@
|
|
|
1
1
|
import type { Fx } from "../Fx.js";
|
|
2
2
|
/**
|
|
3
|
-
*
|
|
3
|
+
* Continues an Fx with a lazily created Fx after the first run returns.
|
|
4
|
+
*
|
|
5
|
+
* @remarks
|
|
6
|
+
* ## Why
|
|
7
|
+
*
|
|
8
|
+
* This sequences two producer runs without converting either to a pull
|
|
9
|
+
* collection. The thunk is lazy, so the continuation is not constructed until
|
|
10
|
+
* the first `Fx.run` Effect returns.
|
|
11
|
+
*
|
|
12
|
+
* ## Ordering and cardinality
|
|
13
|
+
*
|
|
14
|
+
* All successes from `fx` are delivered before successes from `f()`. A source
|
|
15
|
+
* failure is also delivered to the shared Sink, but delivery does not fail
|
|
16
|
+
* `Fx.run`: `Sink.onFailure` returns an Effect whose error channel is `never`.
|
|
17
|
+
* After that handler returns, the continuation still runs. The two producers
|
|
18
|
+
* never run concurrently.
|
|
19
|
+
*
|
|
20
|
+
* ## Ownership and lifetime
|
|
21
|
+
*
|
|
22
|
+
* Failures and service requirements from both producers remain on the public
|
|
23
|
+
* type and both failures are delivered to the same Sink. The returned Fx owns
|
|
24
|
+
* neither input. Interruption or a defect that prevents the first run Effect
|
|
25
|
+
* from returning also prevents the continuation from starting.
|
|
26
|
+
*
|
|
27
|
+
* @example
|
|
28
|
+
* ```ts
|
|
29
|
+
* import { Fx, Sink } from "@typed/fx"
|
|
30
|
+
* import { Effect } from "effect"
|
|
31
|
+
*
|
|
32
|
+
* const events: Array<string> = []
|
|
33
|
+
* const phases = Fx.continueWith(Fx.fail("offline"), () => Fx.succeed("fallback"))
|
|
34
|
+
* const program = phases.run(Sink.make(
|
|
35
|
+
* () => Effect.sync(() => events.push("failure delivered")),
|
|
36
|
+
* (value) => Effect.sync(() => events.push(value))
|
|
37
|
+
* ))
|
|
38
|
+
*
|
|
39
|
+
* Effect.runPromise(program).then(() => console.log(events))
|
|
40
|
+
* // ["failure delivered", "fallback"]
|
|
41
|
+
* ```
|
|
4
42
|
*
|
|
5
43
|
* @param f - A function that returns the next Fx to run.
|
|
6
44
|
* @returns An `Fx` that emits values from the first Fx, then from the second Fx.
|
|
@@ -14,6 +52,30 @@ export declare const continueWith: {
|
|
|
14
52
|
/**
|
|
15
53
|
* Appends a value to the end of an Fx.
|
|
16
54
|
*
|
|
55
|
+
* @remarks
|
|
56
|
+
* ## Why
|
|
57
|
+
*
|
|
58
|
+
* `append` is the constant-value specialization of {@link continueWith}. It
|
|
59
|
+
* emits a terminal marker after the source run returns, including after a source
|
|
60
|
+
* failure has been delivered to the Sink.
|
|
61
|
+
*
|
|
62
|
+
* ## Ownership and lifetime
|
|
63
|
+
*
|
|
64
|
+
* The value is emitted exactly once after every source success and any delivered
|
|
65
|
+
* source failure. Interruption or a defect that prevents the source run from
|
|
66
|
+
* returning suppresses it. No resource is acquired; the source error, services,
|
|
67
|
+
* and observation lifetime are unchanged.
|
|
68
|
+
*
|
|
69
|
+
* @example
|
|
70
|
+
* ```ts
|
|
71
|
+
* import { Fx } from "@typed/fx"
|
|
72
|
+
* import { Effect } from "effect"
|
|
73
|
+
*
|
|
74
|
+
* const framed = Fx.append(Fx.fromIterable([1, 2]), "done")
|
|
75
|
+
* Effect.runPromise(Fx.collectAll(framed)).then(console.log)
|
|
76
|
+
* // [1, 2, "done"]
|
|
77
|
+
* ```
|
|
78
|
+
*
|
|
17
79
|
* @param value - The value to append.
|
|
18
80
|
* @returns An `Fx` that emits values from the input Fx, then the appended value.
|
|
19
81
|
* @since 1.0.0
|
|
@@ -26,6 +88,29 @@ export declare const append: {
|
|
|
26
88
|
/**
|
|
27
89
|
* Prepends a value to the beginning of an Fx.
|
|
28
90
|
*
|
|
91
|
+
* @remarks
|
|
92
|
+
* ## Why
|
|
93
|
+
*
|
|
94
|
+
* `prepend` emits an initial marker through the same Sink before the source is
|
|
95
|
+
* observed, without allocating a separate collection or state holder.
|
|
96
|
+
*
|
|
97
|
+
* ## Ownership and lifetime
|
|
98
|
+
*
|
|
99
|
+
* The value is emitted exactly once before the source run starts, then every
|
|
100
|
+
* source success or failure is delivered. Interruption or a defect in the Sink's
|
|
101
|
+
* prepended-value handler prevents the source from starting. The operation
|
|
102
|
+
* acquires no resource and retains source failure, services, and lifetime.
|
|
103
|
+
*
|
|
104
|
+
* @example
|
|
105
|
+
* ```ts
|
|
106
|
+
* import { Fx } from "@typed/fx"
|
|
107
|
+
* import { Effect } from "effect"
|
|
108
|
+
*
|
|
109
|
+
* const framed = Fx.prepend(Fx.fromIterable([1, 2]), "start")
|
|
110
|
+
* Effect.runPromise(Fx.collectAll(framed)).then(console.log)
|
|
111
|
+
* // ["start", 1, 2]
|
|
112
|
+
* ```
|
|
113
|
+
*
|
|
29
114
|
* @param value - The value to prepend.
|
|
30
115
|
* @returns An `Fx` that emits the prepended value, then values from the input Fx.
|
|
31
116
|
* @since 1.0.0
|
|
@@ -38,6 +123,29 @@ export declare const prepend: {
|
|
|
38
123
|
/**
|
|
39
124
|
* Wraps an Fx with a start and end value.
|
|
40
125
|
*
|
|
126
|
+
* @remarks
|
|
127
|
+
* ## Why
|
|
128
|
+
*
|
|
129
|
+
* `delimit` composes {@link prepend} and {@link append} for protocols whose
|
|
130
|
+
* normal run must be bracketed by values rather than resource finalizers.
|
|
131
|
+
*
|
|
132
|
+
* ## Ownership and lifetime
|
|
133
|
+
*
|
|
134
|
+
* `before` is emitted once, followed by every source success or delivered source
|
|
135
|
+
* failure, then `after` once when the source run Effect returns. Interruption or
|
|
136
|
+
* a defect suppresses `after`; this is Sink sequencing, not `Effect.ensuring`.
|
|
137
|
+
* No resource is acquired and source requirements are kept.
|
|
138
|
+
*
|
|
139
|
+
* @example
|
|
140
|
+
* ```ts
|
|
141
|
+
* import { Fx } from "@typed/fx"
|
|
142
|
+
* import { Effect } from "effect"
|
|
143
|
+
*
|
|
144
|
+
* const framed = Fx.delimit(Fx.fromIterable([1, 2]), "[", "]")
|
|
145
|
+
* Effect.runPromise(Fx.collectAll(framed)).then(console.log)
|
|
146
|
+
* // ["[", 1, 2, "]"]
|
|
147
|
+
* ```
|
|
148
|
+
*
|
|
41
149
|
* @param before - The value to emit before the Fx starts.
|
|
42
150
|
* @param after - The value to emit after the Fx completes.
|
|
43
151
|
* @returns An `Fx` that emits `before`, then values from the input Fx, then `after`.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"continueWith.d.ts","sourceRoot":"","sources":["../../../src/Fx/combinators/continueWith.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,UAAU,CAAC;AAEnC
|
|
1
|
+
{"version":3,"file":"continueWith.d.ts","sourceRoot":"","sources":["../../../src/Fx/combinators/continueWith.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,UAAU,CAAC;AAEnC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AACH,eAAO,MAAM,YAAY,EAAE;IACzB,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;IAE7F,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;CAK1F,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,eAAO,MAAM,MAAM,EAAE;IACnB,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAE7D,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;CAK1D,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,eAAO,MAAM,OAAO,EAAE;IACpB,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAE7D,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;CAK1D,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,eAAO,MAAM,OAAO,EAAE;IACpB,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAE/E,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;CAK5E,CAAC"}
|
|
@@ -3,7 +3,45 @@ import { dual } from "effect/Function";
|
|
|
3
3
|
import { make } from "../constructors/make.js";
|
|
4
4
|
import { succeed } from "../constructors/succeed.js";
|
|
5
5
|
/**
|
|
6
|
-
*
|
|
6
|
+
* Continues an Fx with a lazily created Fx after the first run returns.
|
|
7
|
+
*
|
|
8
|
+
* @remarks
|
|
9
|
+
* ## Why
|
|
10
|
+
*
|
|
11
|
+
* This sequences two producer runs without converting either to a pull
|
|
12
|
+
* collection. The thunk is lazy, so the continuation is not constructed until
|
|
13
|
+
* the first `Fx.run` Effect returns.
|
|
14
|
+
*
|
|
15
|
+
* ## Ordering and cardinality
|
|
16
|
+
*
|
|
17
|
+
* All successes from `fx` are delivered before successes from `f()`. A source
|
|
18
|
+
* failure is also delivered to the shared Sink, but delivery does not fail
|
|
19
|
+
* `Fx.run`: `Sink.onFailure` returns an Effect whose error channel is `never`.
|
|
20
|
+
* After that handler returns, the continuation still runs. The two producers
|
|
21
|
+
* never run concurrently.
|
|
22
|
+
*
|
|
23
|
+
* ## Ownership and lifetime
|
|
24
|
+
*
|
|
25
|
+
* Failures and service requirements from both producers remain on the public
|
|
26
|
+
* type and both failures are delivered to the same Sink. The returned Fx owns
|
|
27
|
+
* neither input. Interruption or a defect that prevents the first run Effect
|
|
28
|
+
* from returning also prevents the continuation from starting.
|
|
29
|
+
*
|
|
30
|
+
* @example
|
|
31
|
+
* ```ts
|
|
32
|
+
* import { Fx, Sink } from "@typed/fx"
|
|
33
|
+
* import { Effect } from "effect"
|
|
34
|
+
*
|
|
35
|
+
* const events: Array<string> = []
|
|
36
|
+
* const phases = Fx.continueWith(Fx.fail("offline"), () => Fx.succeed("fallback"))
|
|
37
|
+
* const program = phases.run(Sink.make(
|
|
38
|
+
* () => Effect.sync(() => events.push("failure delivered")),
|
|
39
|
+
* (value) => Effect.sync(() => events.push(value))
|
|
40
|
+
* ))
|
|
41
|
+
*
|
|
42
|
+
* Effect.runPromise(program).then(() => console.log(events))
|
|
43
|
+
* // ["failure delivered", "fallback"]
|
|
44
|
+
* ```
|
|
7
45
|
*
|
|
8
46
|
* @param f - A function that returns the next Fx to run.
|
|
9
47
|
* @returns An `Fx` that emits values from the first Fx, then from the second Fx.
|
|
@@ -14,6 +52,30 @@ export const continueWith = dual(2, (fx, f) => make((sink) => Effect.flatMap(fx.
|
|
|
14
52
|
/**
|
|
15
53
|
* Appends a value to the end of an Fx.
|
|
16
54
|
*
|
|
55
|
+
* @remarks
|
|
56
|
+
* ## Why
|
|
57
|
+
*
|
|
58
|
+
* `append` is the constant-value specialization of {@link continueWith}. It
|
|
59
|
+
* emits a terminal marker after the source run returns, including after a source
|
|
60
|
+
* failure has been delivered to the Sink.
|
|
61
|
+
*
|
|
62
|
+
* ## Ownership and lifetime
|
|
63
|
+
*
|
|
64
|
+
* The value is emitted exactly once after every source success and any delivered
|
|
65
|
+
* source failure. Interruption or a defect that prevents the source run from
|
|
66
|
+
* returning suppresses it. No resource is acquired; the source error, services,
|
|
67
|
+
* and observation lifetime are unchanged.
|
|
68
|
+
*
|
|
69
|
+
* @example
|
|
70
|
+
* ```ts
|
|
71
|
+
* import { Fx } from "@typed/fx"
|
|
72
|
+
* import { Effect } from "effect"
|
|
73
|
+
*
|
|
74
|
+
* const framed = Fx.append(Fx.fromIterable([1, 2]), "done")
|
|
75
|
+
* Effect.runPromise(Fx.collectAll(framed)).then(console.log)
|
|
76
|
+
* // [1, 2, "done"]
|
|
77
|
+
* ```
|
|
78
|
+
*
|
|
17
79
|
* @param value - The value to append.
|
|
18
80
|
* @returns An `Fx` that emits values from the input Fx, then the appended value.
|
|
19
81
|
* @since 1.0.0
|
|
@@ -23,6 +85,29 @@ export const append = dual(2, (fx, value) => continueWith(fx, () => succeed(valu
|
|
|
23
85
|
/**
|
|
24
86
|
* Prepends a value to the beginning of an Fx.
|
|
25
87
|
*
|
|
88
|
+
* @remarks
|
|
89
|
+
* ## Why
|
|
90
|
+
*
|
|
91
|
+
* `prepend` emits an initial marker through the same Sink before the source is
|
|
92
|
+
* observed, without allocating a separate collection or state holder.
|
|
93
|
+
*
|
|
94
|
+
* ## Ownership and lifetime
|
|
95
|
+
*
|
|
96
|
+
* The value is emitted exactly once before the source run starts, then every
|
|
97
|
+
* source success or failure is delivered. Interruption or a defect in the Sink's
|
|
98
|
+
* prepended-value handler prevents the source from starting. The operation
|
|
99
|
+
* acquires no resource and retains source failure, services, and lifetime.
|
|
100
|
+
*
|
|
101
|
+
* @example
|
|
102
|
+
* ```ts
|
|
103
|
+
* import { Fx } from "@typed/fx"
|
|
104
|
+
* import { Effect } from "effect"
|
|
105
|
+
*
|
|
106
|
+
* const framed = Fx.prepend(Fx.fromIterable([1, 2]), "start")
|
|
107
|
+
* Effect.runPromise(Fx.collectAll(framed)).then(console.log)
|
|
108
|
+
* // ["start", 1, 2]
|
|
109
|
+
* ```
|
|
110
|
+
*
|
|
26
111
|
* @param value - The value to prepend.
|
|
27
112
|
* @returns An `Fx` that emits the prepended value, then values from the input Fx.
|
|
28
113
|
* @since 1.0.0
|
|
@@ -32,6 +117,29 @@ export const prepend = dual(2, (fx, value) => continueWith(succeed(value), () =>
|
|
|
32
117
|
/**
|
|
33
118
|
* Wraps an Fx with a start and end value.
|
|
34
119
|
*
|
|
120
|
+
* @remarks
|
|
121
|
+
* ## Why
|
|
122
|
+
*
|
|
123
|
+
* `delimit` composes {@link prepend} and {@link append} for protocols whose
|
|
124
|
+
* normal run must be bracketed by values rather than resource finalizers.
|
|
125
|
+
*
|
|
126
|
+
* ## Ownership and lifetime
|
|
127
|
+
*
|
|
128
|
+
* `before` is emitted once, followed by every source success or delivered source
|
|
129
|
+
* failure, then `after` once when the source run Effect returns. Interruption or
|
|
130
|
+
* a defect suppresses `after`; this is Sink sequencing, not `Effect.ensuring`.
|
|
131
|
+
* No resource is acquired and source requirements are kept.
|
|
132
|
+
*
|
|
133
|
+
* @example
|
|
134
|
+
* ```ts
|
|
135
|
+
* import { Fx } from "@typed/fx"
|
|
136
|
+
* import { Effect } from "effect"
|
|
137
|
+
*
|
|
138
|
+
* const framed = Fx.delimit(Fx.fromIterable([1, 2]), "[", "]")
|
|
139
|
+
* Effect.runPromise(Fx.collectAll(framed)).then(console.log)
|
|
140
|
+
* // ["[", 1, 2, "]"]
|
|
141
|
+
* ```
|
|
142
|
+
*
|
|
35
143
|
* @param before - The value to emit before the Fx starts.
|
|
36
144
|
* @param after - The value to emit after the Fx completes.
|
|
37
145
|
* @returns An `Fx` that emits `before`, then values from the input Fx, then `after`.
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { Duration, Scope } from "effect";
|
|
2
|
+
import { Fx } from "../Fx.js";
|
|
3
|
+
/**
|
|
4
|
+
* Emits a value only after no newer source value arrives for `duration`.
|
|
5
|
+
*
|
|
6
|
+
* @remarks
|
|
7
|
+
* ## Why
|
|
8
|
+
*
|
|
9
|
+
* Bursty producers such as text input should often trigger work only after
|
|
10
|
+
* they settle. Debouncing represents that quiet-period rule in the Fx graph.
|
|
11
|
+
*
|
|
12
|
+
* ## Ownership and lifetime
|
|
13
|
+
*
|
|
14
|
+
* Each value starts a scoped sleep. A newer value interrupts the previous
|
|
15
|
+
* sleep and replaces its pending value, so at most the latest value is emitted
|
|
16
|
+
* after a quiet period. Source errors terminate the result. Interruption stops
|
|
17
|
+
* both source and pending timer; `Scope` owns those switching lifetimes.
|
|
18
|
+
*
|
|
19
|
+
* @example
|
|
20
|
+
* ```ts
|
|
21
|
+
* import { debounce } from "@typed/fx/Fx"
|
|
22
|
+
* import { fromIterable } from "@typed/fx/Fx"
|
|
23
|
+
*
|
|
24
|
+
* const settled = debounce(fromIterable(["t", "ty", "typed"]), "250 millis")
|
|
25
|
+
* ```
|
|
26
|
+
*
|
|
27
|
+
* @since 1.0.0
|
|
28
|
+
* @category combinators
|
|
29
|
+
*/
|
|
30
|
+
export declare const debounce: {
|
|
31
|
+
(duration: Duration.Input): <A, E, R>(fx: Fx<A, E, R>) => Fx<A, E, R | Scope.Scope>;
|
|
32
|
+
<A, E, R>(fx: Fx<A, E, R>, duration: Duration.Input): Fx<A, E, R | Scope.Scope>;
|
|
33
|
+
};
|
|
34
|
+
//# sourceMappingURL=debounce.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"debounce.d.ts","sourceRoot":"","sources":["../../../src/Fx/combinators/debounce.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAU,KAAK,EAAE,MAAM,QAAQ,CAAC;AACjD,OAAO,EAAE,EAAE,EAAE,MAAM,UAAU,CAAC;AAK9B;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,eAAO,MAAM,QAAQ,EAAE;IACrB,CAAC,QAAQ,EAAE,QAAQ,CAAC,KAAK,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,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;IACpF,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;CAUjF,CAAC"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { Effect } from "effect";
|
|
2
|
+
import { switchMap } from "./switchMap.js";
|
|
3
|
+
import { make } from "../constructors/make.js";
|
|
4
|
+
import { dual } from "effect/Function";
|
|
5
|
+
/**
|
|
6
|
+
* Emits a value only after no newer source value arrives for `duration`.
|
|
7
|
+
*
|
|
8
|
+
* @remarks
|
|
9
|
+
* ## Why
|
|
10
|
+
*
|
|
11
|
+
* Bursty producers such as text input should often trigger work only after
|
|
12
|
+
* they settle. Debouncing represents that quiet-period rule in the Fx graph.
|
|
13
|
+
*
|
|
14
|
+
* ## Ownership and lifetime
|
|
15
|
+
*
|
|
16
|
+
* Each value starts a scoped sleep. A newer value interrupts the previous
|
|
17
|
+
* sleep and replaces its pending value, so at most the latest value is emitted
|
|
18
|
+
* after a quiet period. Source errors terminate the result. Interruption stops
|
|
19
|
+
* both source and pending timer; `Scope` owns those switching lifetimes.
|
|
20
|
+
*
|
|
21
|
+
* @example
|
|
22
|
+
* ```ts
|
|
23
|
+
* import { debounce } from "@typed/fx/Fx"
|
|
24
|
+
* import { fromIterable } from "@typed/fx/Fx"
|
|
25
|
+
*
|
|
26
|
+
* const settled = debounce(fromIterable(["t", "ty", "typed"]), "250 millis")
|
|
27
|
+
* ```
|
|
28
|
+
*
|
|
29
|
+
* @since 1.0.0
|
|
30
|
+
* @category combinators
|
|
31
|
+
*/
|
|
32
|
+
export const debounce = dual(2, (fx, duration) => switchMap(fx, (a) => make(Effect.fn(function* (sink) {
|
|
33
|
+
yield* Effect.sleep(duration);
|
|
34
|
+
yield* sink.onSuccess(a);
|
|
35
|
+
}))));
|