@typed/fx 2.0.0-beta.1 → 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.
- package/LICENSE +21 -0
- package/README.md +35 -21
- package/dist/Fx/Fx.d.ts +371 -19
- package/dist/Fx/Fx.d.ts.map +1 -1
- package/dist/Fx/Fx.js +37 -6
- package/dist/Fx/TypeId.d.ts +52 -6
- package/dist/Fx/TypeId.d.ts.map +1 -1
- package/dist/Fx/TypeId.js +41 -4
- package/dist/Fx/combinators/additive.d.ts +162 -11
- package/dist/Fx/combinators/additive.d.ts.map +1 -1
- package/dist/Fx/combinators/additive.js +162 -11
- package/dist/Fx/combinators/catch.d.ts +202 -29
- package/dist/Fx/combinators/catch.d.ts.map +1 -1
- package/dist/Fx/combinators/catch.js +193 -23
- package/dist/Fx/combinators/causes.d.ts +25 -2
- package/dist/Fx/combinators/causes.d.ts.map +1 -1
- package/dist/Fx/combinators/causes.js +25 -2
- package/dist/Fx/combinators/changesWithEffect.d.ts +21 -1
- package/dist/Fx/combinators/changesWithEffect.d.ts.map +1 -1
- package/dist/Fx/combinators/changesWithEffect.js +21 -1
- package/dist/Fx/combinators/compact.d.ts +18 -1
- package/dist/Fx/combinators/compact.d.ts.map +1 -1
- package/dist/Fx/combinators/compact.js +18 -1
- 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 +113 -5
- package/dist/Fx/combinators/continueWith.d.ts.map +1 -1
- package/dist/Fx/combinators/continueWith.js +113 -5
- 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 +36 -0
- package/dist/Fx/combinators/delay.d.ts.map +1 -0
- package/dist/Fx/combinators/delay.js +33 -0
- package/dist/Fx/combinators/dropUntil.d.ts +44 -2
- package/dist/Fx/combinators/dropUntil.d.ts.map +1 -1
- package/dist/Fx/combinators/dropUntil.js +44 -2
- 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 +34 -4
- package/dist/Fx/combinators/ensuring.d.ts.map +1 -1
- package/dist/Fx/combinators/ensuring.js +34 -4
- package/dist/Fx/combinators/exhaustLatestMap.d.ts +41 -5
- package/dist/Fx/combinators/exhaustLatestMap.d.ts.map +1 -1
- package/dist/Fx/combinators/exhaustLatestMap.js +41 -5
- package/dist/Fx/combinators/exhaustLatestMapEffect.d.ts +40 -4
- package/dist/Fx/combinators/exhaustLatestMapEffect.d.ts.map +1 -1
- package/dist/Fx/combinators/exhaustLatestMapEffect.js +40 -4
- package/dist/Fx/combinators/exhaustMap.d.ts +38 -1
- package/dist/Fx/combinators/exhaustMap.d.ts.map +1 -1
- package/dist/Fx/combinators/exhaustMap.js +38 -1
- package/dist/Fx/combinators/exhaustMapEffect.d.ts +33 -1
- package/dist/Fx/combinators/exhaustMapEffect.d.ts.map +1 -1
- package/dist/Fx/combinators/exhaustMapEffect.js +33 -1
- package/dist/Fx/combinators/exit.d.ts +23 -2
- package/dist/Fx/combinators/exit.d.ts.map +1 -1
- package/dist/Fx/combinators/exit.js +23 -2
- package/dist/Fx/combinators/filter.d.ts +17 -1
- package/dist/Fx/combinators/filter.d.ts.map +1 -1
- package/dist/Fx/combinators/filter.js +17 -1
- package/dist/Fx/combinators/filterEffect.d.ts +22 -1
- package/dist/Fx/combinators/filterEffect.d.ts.map +1 -1
- package/dist/Fx/combinators/filterEffect.js +22 -1
- package/dist/Fx/combinators/filterMap.d.ts +20 -1
- package/dist/Fx/combinators/filterMap.d.ts.map +1 -1
- package/dist/Fx/combinators/filterMap.js +20 -1
- package/dist/Fx/combinators/filterMapEffect.d.ts +21 -1
- package/dist/Fx/combinators/filterMapEffect.d.ts.map +1 -1
- package/dist/Fx/combinators/filterMapEffect.js +21 -1
- package/dist/Fx/combinators/filterMapLoop.d.ts +20 -1
- package/dist/Fx/combinators/filterMapLoop.d.ts.map +1 -1
- package/dist/Fx/combinators/filterMapLoop.js +20 -1
- package/dist/Fx/combinators/filterMapLoopCause.d.ts +21 -1
- package/dist/Fx/combinators/filterMapLoopCause.d.ts.map +1 -1
- package/dist/Fx/combinators/filterMapLoopCause.js +21 -1
- package/dist/Fx/combinators/filterMapLoopCauseEffect.d.ts +21 -1
- package/dist/Fx/combinators/filterMapLoopCauseEffect.d.ts.map +1 -1
- package/dist/Fx/combinators/filterMapLoopCauseEffect.js +21 -1
- package/dist/Fx/combinators/filterMapLoopEffect.d.ts +21 -1
- package/dist/Fx/combinators/filterMapLoopEffect.d.ts.map +1 -1
- package/dist/Fx/combinators/filterMapLoopEffect.js +21 -1
- package/dist/Fx/combinators/flatMap.d.ts +50 -5
- package/dist/Fx/combinators/flatMap.d.ts.map +1 -1
- package/dist/Fx/combinators/flatMap.js +36 -3
- package/dist/Fx/combinators/flatMapConcurrently.d.ts +51 -4
- package/dist/Fx/combinators/flatMapConcurrently.d.ts.map +1 -1
- package/dist/Fx/combinators/flatMapConcurrently.js +48 -2
- package/dist/Fx/combinators/flatMapConcurrentlyEffect.d.ts +48 -4
- package/dist/Fx/combinators/flatMapConcurrentlyEffect.d.ts.map +1 -1
- package/dist/Fx/combinators/flatMapConcurrentlyEffect.js +40 -2
- package/dist/Fx/combinators/flatMapEffect.d.ts +46 -4
- package/dist/Fx/combinators/flatMapEffect.d.ts.map +1 -1
- package/dist/Fx/combinators/flatMapEffect.js +32 -2
- package/dist/Fx/combinators/flip.d.ts +34 -2
- package/dist/Fx/combinators/flip.d.ts.map +1 -1
- package/dist/Fx/combinators/flip.js +34 -2
- package/dist/Fx/combinators/gen.d.ts +29 -10
- package/dist/Fx/combinators/gen.d.ts.map +1 -1
- package/dist/Fx/combinators/gen.js +28 -4
- package/dist/Fx/combinators/genScoped.d.ts +33 -10
- package/dist/Fx/combinators/genScoped.d.ts.map +1 -1
- package/dist/Fx/combinators/genScoped.js +31 -3
- 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 +123 -9
- package/dist/Fx/combinators/keyed.d.ts.map +1 -1
- package/dist/Fx/combinators/keyed.js +69 -11
- package/dist/Fx/combinators/loop.d.ts +17 -1
- package/dist/Fx/combinators/loop.d.ts.map +1 -1
- package/dist/Fx/combinators/loop.js +17 -1
- package/dist/Fx/combinators/loopCause.d.ts +18 -1
- package/dist/Fx/combinators/loopCause.d.ts.map +1 -1
- package/dist/Fx/combinators/loopCause.js +18 -1
- package/dist/Fx/combinators/loopCauseEffect.d.ts +19 -1
- package/dist/Fx/combinators/loopCauseEffect.d.ts.map +1 -1
- package/dist/Fx/combinators/loopCauseEffect.js +19 -1
- package/dist/Fx/combinators/loopEffect.d.ts +24 -1
- package/dist/Fx/combinators/loopEffect.d.ts.map +1 -1
- package/dist/Fx/combinators/loopEffect.js +24 -1
- package/dist/Fx/combinators/map.d.ts +46 -1
- package/dist/Fx/combinators/map.d.ts.map +1 -1
- package/dist/Fx/combinators/map.js +43 -1
- package/dist/Fx/combinators/mapBoth.d.ts +20 -1
- package/dist/Fx/combinators/mapBoth.d.ts.map +1 -1
- package/dist/Fx/combinators/mapBoth.js +20 -1
- package/dist/Fx/combinators/mapEffect.d.ts +25 -1
- package/dist/Fx/combinators/mapEffect.d.ts.map +1 -1
- package/dist/Fx/combinators/mapEffect.js +25 -1
- package/dist/Fx/combinators/mapError.d.ts +21 -5
- package/dist/Fx/combinators/mapError.d.ts.map +1 -1
- package/dist/Fx/combinators/mapError.js +21 -5
- package/dist/Fx/combinators/mergeAll.d.ts +35 -1
- package/dist/Fx/combinators/mergeAll.d.ts.map +1 -1
- package/dist/Fx/combinators/mergeAll.js +35 -1
- package/dist/Fx/combinators/mergeOrdered.d.ts +36 -4
- package/dist/Fx/combinators/mergeOrdered.d.ts.map +1 -1
- package/dist/Fx/combinators/mergeOrdered.js +68 -14
- package/dist/Fx/combinators/onError.d.ts +34 -4
- package/dist/Fx/combinators/onError.d.ts.map +1 -1
- package/dist/Fx/combinators/onError.js +34 -4
- package/dist/Fx/combinators/onExit.d.ts +29 -3
- package/dist/Fx/combinators/onExit.d.ts.map +1 -1
- package/dist/Fx/combinators/onExit.js +29 -3
- package/dist/Fx/combinators/onInterrupt.d.ts +49 -4
- package/dist/Fx/combinators/onInterrupt.d.ts.map +1 -1
- package/dist/Fx/combinators/onInterrupt.js +49 -4
- 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 +141 -20
- package/dist/Fx/combinators/provide.d.ts.map +1 -1
- package/dist/Fx/combinators/provide.js +137 -16
- 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 +23 -1
- package/dist/Fx/combinators/result.d.ts.map +1 -1
- package/dist/Fx/combinators/result.js +27 -13
- 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 +41 -2
- package/dist/Fx/combinators/scan.d.ts.map +1 -1
- package/dist/Fx/combinators/scan.js +43 -4
- 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 +33 -2
- package/dist/Fx/combinators/skip.d.ts.map +1 -1
- package/dist/Fx/combinators/skip.js +33 -2
- package/dist/Fx/combinators/skipRepeats.d.ts +17 -1
- package/dist/Fx/combinators/skipRepeats.d.ts.map +1 -1
- package/dist/Fx/combinators/skipRepeats.js +17 -1
- package/dist/Fx/combinators/skipRepeatsWith.d.ts +18 -1
- package/dist/Fx/combinators/skipRepeatsWith.d.ts.map +1 -1
- package/dist/Fx/combinators/skipRepeatsWith.js +18 -1
- package/dist/Fx/combinators/skipWhile.d.ts +72 -4
- package/dist/Fx/combinators/skipWhile.d.ts.map +1 -1
- package/dist/Fx/combinators/skipWhile.js +72 -4
- package/dist/Fx/combinators/slice.d.ts +85 -3
- package/dist/Fx/combinators/slice.d.ts.map +1 -1
- package/dist/Fx/combinators/slice.js +35 -2
- package/dist/Fx/combinators/switchMap.d.ts +39 -1
- package/dist/Fx/combinators/switchMap.d.ts.map +1 -1
- package/dist/Fx/combinators/switchMap.js +43 -5
- package/dist/Fx/combinators/switchMapEffect.d.ts +38 -1
- package/dist/Fx/combinators/switchMapEffect.d.ts.map +1 -1
- package/dist/Fx/combinators/switchMapEffect.js +38 -1
- package/dist/Fx/combinators/take.d.ts +34 -2
- package/dist/Fx/combinators/take.d.ts.map +1 -1
- package/dist/Fx/combinators/take.js +34 -2
- package/dist/Fx/combinators/takeUntil.d.ts +49 -3
- package/dist/Fx/combinators/takeUntil.d.ts.map +1 -1
- package/dist/Fx/combinators/takeUntil.js +49 -3
- package/dist/Fx/combinators/takeWhile.d.ts +33 -2
- package/dist/Fx/combinators/takeWhile.d.ts.map +1 -1
- package/dist/Fx/combinators/takeWhile.js +33 -2
- package/dist/Fx/combinators/tapEffect.d.ts +17 -1
- package/dist/Fx/combinators/tapEffect.d.ts.map +1 -1
- package/dist/Fx/combinators/tapEffect.js +17 -1
- 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 +32 -2
- package/dist/Fx/combinators/tuple.d.ts.map +1 -1
- package/dist/Fx/combinators/tuple.js +36 -5
- 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 +31 -2
- package/dist/Fx/combinators/unwrap.d.ts.map +1 -1
- package/dist/Fx/combinators/unwrap.js +30 -1
- package/dist/Fx/combinators/unwrapScoped.d.ts +34 -1
- package/dist/Fx/combinators/unwrapScoped.d.ts.map +1 -1
- package/dist/Fx/combinators/unwrapScoped.js +34 -1
- package/dist/Fx/combinators/when.d.ts +37 -2
- package/dist/Fx/combinators/when.d.ts.map +1 -1
- package/dist/Fx/combinators/when.js +38 -3
- 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 +64 -4
- package/dist/Fx/combinators/zip.d.ts.map +1 -1
- package/dist/Fx/combinators/zip.js +64 -4
- package/dist/Fx/constructors/at.d.ts +21 -1
- package/dist/Fx/constructors/at.d.ts.map +1 -1
- package/dist/Fx/constructors/at.js +21 -1
- package/dist/Fx/constructors/die.d.ts +22 -1
- package/dist/Fx/constructors/die.d.ts.map +1 -1
- package/dist/Fx/constructors/die.js +22 -1
- package/dist/Fx/constructors/empty.d.ts +19 -1
- package/dist/Fx/constructors/empty.d.ts.map +1 -1
- package/dist/Fx/constructors/empty.js +19 -1
- package/dist/Fx/constructors/fail.d.ts +22 -1
- package/dist/Fx/constructors/fail.d.ts.map +1 -1
- package/dist/Fx/constructors/fail.js +22 -1
- package/dist/Fx/constructors/failCause.d.ts +23 -1
- package/dist/Fx/constructors/failCause.d.ts.map +1 -1
- package/dist/Fx/constructors/failCause.js +23 -1
- package/dist/Fx/constructors/fn.d.ts +116 -16
- 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 +45 -3
- package/dist/Fx/constructors/fromEffect.d.ts.map +1 -1
- package/dist/Fx/constructors/fromEffect.js +45 -3
- package/dist/Fx/constructors/fromFailures.d.ts +25 -1
- package/dist/Fx/constructors/fromFailures.d.ts.map +1 -1
- package/dist/Fx/constructors/fromFailures.js +25 -1
- package/dist/Fx/constructors/fromIterable.d.ts +23 -1
- package/dist/Fx/constructors/fromIterable.d.ts.map +1 -1
- package/dist/Fx/constructors/fromIterable.js +23 -1
- package/dist/Fx/constructors/fromSchedule.d.ts +26 -1
- package/dist/Fx/constructors/fromSchedule.d.ts.map +1 -1
- package/dist/Fx/constructors/fromSchedule.js +28 -3
- 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 +22 -2
- package/dist/Fx/constructors/interrupt.d.ts.map +1 -1
- package/dist/Fx/constructors/interrupt.js +22 -2
- package/dist/Fx/constructors/make.d.ts +151 -4
- package/dist/Fx/constructors/make.d.ts.map +1 -1
- package/dist/Fx/constructors/make.js +60 -7
- package/dist/Fx/constructors/periodic.d.ts +30 -1
- package/dist/Fx/constructors/periodic.d.ts.map +1 -1
- package/dist/Fx/constructors/periodic.js +30 -1
- package/dist/Fx/constructors/succeed.d.ts +79 -7
- package/dist/Fx/constructors/succeed.d.ts.map +1 -1
- package/dist/Fx/constructors/succeed.js +79 -7
- 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 +93 -4
- package/dist/Fx/run/collect.d.ts.map +1 -1
- package/dist/Fx/run/collect.js +94 -5
- package/dist/Fx/run/first.d.ts +23 -1
- package/dist/Fx/run/first.d.ts.map +1 -1
- package/dist/Fx/run/first.js +23 -1
- package/dist/Fx/run/fork.d.ts +52 -2
- package/dist/Fx/run/fork.d.ts.map +1 -1
- package/dist/Fx/run/fork.js +52 -2
- package/dist/Fx/run/observe.d.ts +112 -4
- package/dist/Fx/run/observe.d.ts.map +1 -1
- package/dist/Fx/run/observe.js +137 -16
- package/dist/Fx/run/runPromise.d.ts +45 -2
- package/dist/Fx/run/runPromise.d.ts.map +1 -1
- package/dist/Fx/run/runPromise.js +45 -2
- 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 +1229 -104
- package/dist/Push/Push.d.ts.map +1 -1
- package/dist/Push/Push.js +1024 -95
- 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 +382 -35
- package/dist/RefSubject/RefArray.d.ts.map +1 -1
- package/dist/RefSubject/RefArray.js +374 -40
- package/dist/RefSubject/RefBigDecimal.d.ts +241 -21
- package/dist/RefSubject/RefBigDecimal.d.ts.map +1 -1
- package/dist/RefSubject/RefBigDecimal.js +229 -20
- package/dist/RefSubject/RefBigInt.d.ts +181 -16
- package/dist/RefSubject/RefBigInt.d.ts.map +1 -1
- package/dist/RefSubject/RefBigInt.js +169 -15
- package/dist/RefSubject/RefBoolean.d.ts +181 -16
- package/dist/RefSubject/RefBoolean.d.ts.map +1 -1
- package/dist/RefSubject/RefBoolean.js +169 -15
- package/dist/RefSubject/RefCause.d.ts +133 -12
- package/dist/RefSubject/RefCause.d.ts.map +1 -1
- package/dist/RefSubject/RefCause.js +121 -11
- package/dist/RefSubject/RefChunk.d.ts +481 -76
- package/dist/RefSubject/RefChunk.d.ts.map +1 -1
- package/dist/RefSubject/RefChunk.js +471 -75
- package/dist/RefSubject/RefDateTime.d.ts +133 -12
- package/dist/RefSubject/RefDateTime.d.ts.map +1 -1
- package/dist/RefSubject/RefDateTime.js +122 -12
- package/dist/RefSubject/RefDuration.d.ts +169 -15
- package/dist/RefSubject/RefDuration.d.ts.map +1 -1
- package/dist/RefSubject/RefDuration.js +157 -14
- package/dist/RefSubject/RefGraph.d.ts +349 -35
- package/dist/RefSubject/RefGraph.d.ts.map +1 -1
- package/dist/RefSubject/RefGraph.js +334 -32
- package/dist/RefSubject/RefHashMap.d.ts +323 -28
- package/dist/RefSubject/RefHashMap.d.ts.map +1 -1
- package/dist/RefSubject/RefHashMap.js +317 -29
- package/dist/RefSubject/RefHashRing.d.ts +159 -15
- package/dist/RefSubject/RefHashRing.d.ts.map +1 -1
- package/dist/RefSubject/RefHashRing.js +145 -12
- package/dist/RefSubject/RefHashSet.d.ts +251 -22
- package/dist/RefSubject/RefHashSet.d.ts.map +1 -1
- package/dist/RefSubject/RefHashSet.js +238 -20
- package/dist/RefSubject/RefIterable.d.ts +358 -32
- package/dist/RefSubject/RefIterable.d.ts.map +1 -1
- package/dist/RefSubject/RefIterable.js +350 -30
- package/dist/RefSubject/RefOption.d.ts +157 -14
- package/dist/RefSubject/RefOption.d.ts.map +1 -1
- package/dist/RefSubject/RefOption.js +145 -13
- package/dist/RefSubject/RefRecord.d.ts +402 -64
- package/dist/RefSubject/RefRecord.d.ts.map +1 -1
- package/dist/RefSubject/RefRecord.js +364 -39
- package/dist/RefSubject/RefResult.d.ts +167 -35
- package/dist/RefSubject/RefResult.d.ts.map +1 -1
- package/dist/RefSubject/RefResult.js +133 -12
- package/dist/RefSubject/RefString.d.ts +205 -18
- package/dist/RefSubject/RefString.d.ts.map +1 -1
- package/dist/RefSubject/RefString.js +193 -17
- package/dist/RefSubject/RefStruct.d.ts +169 -14
- package/dist/RefSubject/RefStruct.d.ts.map +1 -1
- package/dist/RefSubject/RefStruct.js +157 -13
- package/dist/RefSubject/RefSubject.d.ts +1197 -45
- package/dist/RefSubject/RefSubject.d.ts.map +1 -1
- package/dist/RefSubject/RefSubject.js +935 -88
- package/dist/RefSubject/RefTrie.d.ts +323 -37
- package/dist/RefSubject/RefTrie.d.ts.map +1 -1
- package/dist/RefSubject/RefTrie.js +311 -31
- package/dist/RefSubject/RefTuple.d.ts +127 -11
- package/dist/RefSubject/RefTuple.d.ts.map +1 -1
- package/dist/RefSubject/RefTuple.js +114 -9
- 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 +396 -23
- package/dist/Sink/Sink.d.ts.map +1 -1
- package/dist/Sink/Sink.js +55 -7
- package/dist/Sink/combinators.d.ts +740 -11
- package/dist/Sink/combinators.d.ts.map +1 -1
- package/dist/Sink/combinators.js +716 -14
- package/dist/Subject/Subject.d.ts +1022 -27
- package/dist/Subject/Subject.d.ts.map +1 -1
- package/dist/Subject/Subject.js +909 -43
- package/dist/Versioned/Versioned.d.ts +447 -27
- package/dist/Versioned/Versioned.d.ts.map +1 -1
- package/dist/Versioned/Versioned.js +282 -48
- package/dist/index.d.ts +22 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +22 -3
- package/package.json +126 -16
- 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 -421
- 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 -1072
- 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 -512
- 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 -510
- package/src/RefSubject/RefDateTime.test.ts +0 -43
- package/src/RefSubject/RefDateTime.ts +0 -264
- package/src/RefSubject/RefDuration.test.ts +0 -49
- package/src/RefSubject/RefDuration.ts +0 -188
- package/src/RefSubject/RefGraph.ts +0 -650
- package/src/RefSubject/RefHashMap.ts +0 -465
- package/src/RefSubject/RefHashRing.ts +0 -262
- package/src/RefSubject/RefHashSet.ts +0 -308
- package/src/RefSubject/RefIterable.ts +0 -445
- package/src/RefSubject/RefOption.test.ts +0 -67
- package/src/RefSubject/RefOption.ts +0 -193
- package/src/RefSubject/RefRecord.ts +0 -612
- 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 -2646
- package/src/RefSubject/RefTrie.ts +0 -356
- 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 -441
- 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 -597
- 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
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import * as Cause from "effect/Cause";
|
|
2
|
+
import * as Deferred from "effect/Deferred";
|
|
3
|
+
import * as Effect from "effect/Effect";
|
|
4
|
+
import * as Exit from "effect/Exit";
|
|
5
|
+
import * as Fiber from "effect/Fiber";
|
|
6
|
+
import * as Scope from "effect/Scope";
|
|
7
|
+
import { make as makeSink } from "../../Sink/Sink.js";
|
|
8
|
+
import { make } from "../constructors/make.js";
|
|
9
|
+
import { take } from "./take.js";
|
|
10
|
+
/**
|
|
11
|
+
* Forwards `events` only between a start signal and that signal's first stop event.
|
|
12
|
+
*
|
|
13
|
+
* @remarks
|
|
14
|
+
* ## Why
|
|
15
|
+
*
|
|
16
|
+
* Push lifetimes are often controlled by other push lifetimes: a pointer move
|
|
17
|
+
* matters between pointer-down and pointer-up, for example. `during` models
|
|
18
|
+
* that gate without converting either side into polling state.
|
|
19
|
+
*
|
|
20
|
+
* ## Ownership and lifetime
|
|
21
|
+
*
|
|
22
|
+
* `events` and the outer `signals` Fx start concurrently in one child Scope.
|
|
23
|
+
* Only the first outer value is used; that value must itself be an Fx, whose
|
|
24
|
+
* first value closes the gate. Event values before the start signal and after
|
|
25
|
+
* the stop signal are discarded. Completion of `events` completes the result.
|
|
26
|
+
* A failure from events, signals, or the selected stop Fx terminates everything;
|
|
27
|
+
* closing or interrupting the returned Fx interrupts all remaining fibers and
|
|
28
|
+
* closes the private Scope.
|
|
29
|
+
*
|
|
30
|
+
* @example
|
|
31
|
+
* ```ts
|
|
32
|
+
* import { during } from "@typed/fx/Fx"
|
|
33
|
+
* import { delay } from "@typed/fx/Fx"
|
|
34
|
+
* import { periodic, succeed } from "@typed/fx/Fx"
|
|
35
|
+
*
|
|
36
|
+
* const pointerMoves = periodic("16 millis")
|
|
37
|
+
* const pointerDown = succeed(delay(succeed(undefined), "1 second"))
|
|
38
|
+
* const activeMoves = during(pointerMoves, pointerDown)
|
|
39
|
+
* ```
|
|
40
|
+
*
|
|
41
|
+
* @since 1.0.0
|
|
42
|
+
* @category Time and rate
|
|
43
|
+
*/
|
|
44
|
+
export function during(events, signals) {
|
|
45
|
+
return make(Effect.fn(function* (sink) {
|
|
46
|
+
const scope = yield* Scope.make();
|
|
47
|
+
yield* Effect.gen(function* () {
|
|
48
|
+
const eventsGate = yield* Deferred.make();
|
|
49
|
+
let phase = "waiting";
|
|
50
|
+
let stoppedEvents = false;
|
|
51
|
+
const eventsFiber = yield* Effect.forkIn(Deferred.await(eventsGate).pipe(Effect.andThen(events.run(makeSink((cause) => Effect.suspend(() => {
|
|
52
|
+
if (phase === "stopped")
|
|
53
|
+
return Effect.void;
|
|
54
|
+
phase = "stopped";
|
|
55
|
+
return sink.onFailure(cause);
|
|
56
|
+
}), (value) => Effect.suspend(() => phase === "active" ? sink.onSuccess(value) : Effect.void))))), scope, { startImmediately: true, uninterruptible: false });
|
|
57
|
+
const stopEvents = Effect.uninterruptible(Effect.suspend(() => {
|
|
58
|
+
if (phase !== "active")
|
|
59
|
+
return Effect.void;
|
|
60
|
+
phase = "stopped";
|
|
61
|
+
stoppedEvents = true;
|
|
62
|
+
return Fiber.interrupt(eventsFiber);
|
|
63
|
+
}));
|
|
64
|
+
const failAndStopEvents = (cause) => Effect.uninterruptible(Effect.suspend(() => {
|
|
65
|
+
if (phase === "stopped")
|
|
66
|
+
return Effect.void;
|
|
67
|
+
phase = "stopped";
|
|
68
|
+
stoppedEvents = true;
|
|
69
|
+
return sink.onFailure(cause).pipe(Effect.andThen(Fiber.interrupt(eventsFiber)));
|
|
70
|
+
}));
|
|
71
|
+
yield* Effect.forkIn(take(signals, 1).run(makeSink(failAndStopEvents, (stopSignal) => Effect.suspend(() => {
|
|
72
|
+
if (phase !== "waiting")
|
|
73
|
+
return Effect.void;
|
|
74
|
+
phase = "active";
|
|
75
|
+
return Effect.asVoid(Effect.forkIn(take(stopSignal, 1).run(makeSink(failAndStopEvents, () => stopEvents)), scope, { startImmediately: true, uninterruptible: false }));
|
|
76
|
+
}))), scope, { startImmediately: true, uninterruptible: false });
|
|
77
|
+
yield* Deferred.succeed(eventsGate, undefined);
|
|
78
|
+
const eventsExit = yield* Fiber.await(eventsFiber);
|
|
79
|
+
if (Exit.isFailure(eventsExit) &&
|
|
80
|
+
!(stoppedEvents && Cause.hasInterruptsOnly(eventsExit.cause))) {
|
|
81
|
+
return yield* Effect.failCause(eventsExit.cause);
|
|
82
|
+
}
|
|
83
|
+
}).pipe(Effect.onExit((exit) => Scope.close(scope, exit)));
|
|
84
|
+
}));
|
|
85
|
+
}
|
|
@@ -1,13 +1,43 @@
|
|
|
1
1
|
import * as Effect from "effect/Effect";
|
|
2
2
|
import type { Fx } from "../Fx.js";
|
|
3
3
|
/**
|
|
4
|
-
*
|
|
4
|
+
* Runs a finalizer with no typed error after the Fx run ends for any reason.
|
|
5
5
|
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
6
|
+
* @remarks
|
|
7
|
+
* ## Why
|
|
8
|
+
*
|
|
9
|
+
* Resources sometimes belong to the subscription as a whole rather than to
|
|
10
|
+
* individual values. `ensuring` attaches unconditional teardown without
|
|
11
|
+
* changing the source's success or typed-error channels.
|
|
12
|
+
*
|
|
13
|
+
* ## Ownership and lifetime
|
|
14
|
+
*
|
|
15
|
+
* The finalizer runs exactly once after normal completion, failure, defect, or
|
|
16
|
+
* interruption of the source run and follows Effect's `ensuring` finalization
|
|
17
|
+
* semantics. Its `never` typed-error channel does not make it incapable of
|
|
18
|
+
* defecting or being interrupted: a finalizer defect can fail a successful run
|
|
19
|
+
* or combine with the source Cause. Its services are required for the subscription.
|
|
20
|
+
*
|
|
21
|
+
* @example
|
|
22
|
+
* ```ts
|
|
23
|
+
* import { Effect } from "effect"
|
|
24
|
+
* import { ensuring } from "@typed/fx/Fx"
|
|
25
|
+
* import { succeed } from "@typed/fx/Fx"
|
|
26
|
+
*
|
|
27
|
+
* const observed = ensuring(succeed("ready"), Effect.log("subscription closed"))
|
|
28
|
+
* ```
|
|
29
|
+
*
|
|
30
|
+
* @example A `never` typed-error channel can still contain a defect
|
|
31
|
+
* ```ts
|
|
32
|
+
* import { Effect } from "effect"
|
|
33
|
+
* import { ensuring } from "@typed/fx/Fx"
|
|
34
|
+
* import { succeed } from "@typed/fx/Fx"
|
|
35
|
+
*
|
|
36
|
+
* const defectiveFinalizer = ensuring(succeed("ready"), Effect.die("close failed"))
|
|
37
|
+
* ```
|
|
8
38
|
*
|
|
9
39
|
* @since 1.0.0
|
|
10
|
-
* @category
|
|
40
|
+
* @category Resource lifetime
|
|
11
41
|
*/
|
|
12
42
|
export declare const ensuring: {
|
|
13
43
|
<R2>(finalizer: Effect.Effect<void, never, R2>): <A, E, R>(self: Fx<A, E, R>) => Fx<A, E, R | R2>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ensuring.d.ts","sourceRoot":"","sources":["../../../src/Fx/combinators/ensuring.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAGxC,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,UAAU,CAAC;AAEnC
|
|
1
|
+
{"version":3,"file":"ensuring.d.ts","sourceRoot":"","sources":["../../../src/Fx/combinators/ensuring.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAGxC,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,UAAU,CAAC;AAEnC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AACH,eAAO,MAAM,QAAQ,EAAE;IACrB,CAAC,EAAE,EAAE,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;IAElG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;CAK/F,CAAC"}
|
|
@@ -2,12 +2,42 @@ import * as Effect from "effect/Effect";
|
|
|
2
2
|
import { dual } from "effect/Function";
|
|
3
3
|
import { make } from "../constructors/make.js";
|
|
4
4
|
/**
|
|
5
|
-
*
|
|
5
|
+
* Runs a finalizer with no typed error after the Fx run ends for any reason.
|
|
6
6
|
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
7
|
+
* @remarks
|
|
8
|
+
* ## Why
|
|
9
|
+
*
|
|
10
|
+
* Resources sometimes belong to the subscription as a whole rather than to
|
|
11
|
+
* individual values. `ensuring` attaches unconditional teardown without
|
|
12
|
+
* changing the source's success or typed-error channels.
|
|
13
|
+
*
|
|
14
|
+
* ## Ownership and lifetime
|
|
15
|
+
*
|
|
16
|
+
* The finalizer runs exactly once after normal completion, failure, defect, or
|
|
17
|
+
* interruption of the source run and follows Effect's `ensuring` finalization
|
|
18
|
+
* semantics. Its `never` typed-error channel does not make it incapable of
|
|
19
|
+
* defecting or being interrupted: a finalizer defect can fail a successful run
|
|
20
|
+
* or combine with the source Cause. Its services are required for the subscription.
|
|
21
|
+
*
|
|
22
|
+
* @example
|
|
23
|
+
* ```ts
|
|
24
|
+
* import { Effect } from "effect"
|
|
25
|
+
* import { ensuring } from "@typed/fx/Fx"
|
|
26
|
+
* import { succeed } from "@typed/fx/Fx"
|
|
27
|
+
*
|
|
28
|
+
* const observed = ensuring(succeed("ready"), Effect.log("subscription closed"))
|
|
29
|
+
* ```
|
|
30
|
+
*
|
|
31
|
+
* @example A `never` typed-error channel can still contain a defect
|
|
32
|
+
* ```ts
|
|
33
|
+
* import { Effect } from "effect"
|
|
34
|
+
* import { ensuring } from "@typed/fx/Fx"
|
|
35
|
+
* import { succeed } from "@typed/fx/Fx"
|
|
36
|
+
*
|
|
37
|
+
* const defectiveFinalizer = ensuring(succeed("ready"), Effect.die("close failed"))
|
|
38
|
+
* ```
|
|
9
39
|
*
|
|
10
40
|
* @since 1.0.0
|
|
11
|
-
* @category
|
|
41
|
+
* @category Resource lifetime
|
|
12
42
|
*/
|
|
13
43
|
export const ensuring = dual(2, (self, finalizer) => make((sink) => self.run(sink).pipe(Effect.ensuring(finalizer))));
|
|
@@ -1,15 +1,51 @@
|
|
|
1
1
|
import type { FlatMapLike } from "./flatMap.js";
|
|
2
2
|
/**
|
|
3
|
-
* Maps each element
|
|
4
|
-
* If a new element arrives while an inner Fx is running, the new element is buffered (overwriting any previously buffered value).
|
|
5
|
-
* When the current inner Fx completes, the latest buffered Fx is run.
|
|
3
|
+
* Maps each element to an inner Fx, running one now and retaining only the latest waiting value.
|
|
6
4
|
*
|
|
7
|
-
*
|
|
5
|
+
* @remarks
|
|
6
|
+
* ## Why
|
|
7
|
+
*
|
|
8
|
+
* `exhaustLatestMap` fits work that cannot overlap but must eventually reflect
|
|
9
|
+
* the newest request. Unlike {@link exhaustMap}, it remembers one pending value;
|
|
10
|
+
* unlike {@link concatMap}, it does not let a backlog grow.
|
|
11
|
+
*
|
|
12
|
+
* ## Admission, buffering, and cardinality
|
|
13
|
+
*
|
|
14
|
+
* The first value while idle starts immediately. While that inner runs, each new
|
|
15
|
+
* value replaces the single pending inner Effect; replaced values never run.
|
|
16
|
+
* When the active inner completes, the latest pending inner starts. An admitted
|
|
17
|
+
* inner may emit any number of values, in that inner's order.
|
|
18
|
+
*
|
|
19
|
+
* ## Ownership and lifetime
|
|
20
|
+
*
|
|
21
|
+
* Source and admitted-inner failures are forwarded and both environments remain
|
|
22
|
+
* typed. The required `Scope` owns every active inner fiber. Source completion
|
|
23
|
+
* waits until the active and final pending inner finish; interruption closes the
|
|
24
|
+
* Scope and runs inner finalizers. The one-slot pending buffer retains work, not
|
|
25
|
+
* emitted output.
|
|
26
|
+
*
|
|
27
|
+
* @example
|
|
28
|
+
* ```ts
|
|
29
|
+
* import { Fx } from "@typed/fx"
|
|
30
|
+
* import { Effect } from "effect"
|
|
31
|
+
*
|
|
32
|
+
* const refreshes = Fx.mergeAll(
|
|
33
|
+
* Fx.at("v1", "0 millis"),
|
|
34
|
+
* Fx.at("v2", "5 millis"),
|
|
35
|
+
* Fx.at("v3", "10 millis")
|
|
36
|
+
* )
|
|
37
|
+
* const latestEventually = Fx.exhaustLatestMap(refreshes, (version) =>
|
|
38
|
+
* Fx.at(`indexed:${version}`, "20 millis")
|
|
39
|
+
* )
|
|
40
|
+
*
|
|
41
|
+
* Effect.runPromise(Effect.scoped(Fx.collectAll(latestEventually))).then(console.log)
|
|
42
|
+
* // ["indexed:v1", "indexed:v3"]
|
|
43
|
+
* ```
|
|
8
44
|
*
|
|
9
45
|
* @param f - A function that maps an element `A` to a new `Fx<B>`.
|
|
10
46
|
* @returns An `Fx` that emits values from the inner streams.
|
|
11
47
|
* @since 1.0.0
|
|
12
|
-
* @category
|
|
48
|
+
* @category Concurrent work
|
|
13
49
|
*/
|
|
14
50
|
export declare const exhaustLatestMap: FlatMapLike;
|
|
15
51
|
//# sourceMappingURL=exhaustLatestMap.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"exhaustLatestMap.d.ts","sourceRoot":"","sources":["../../../src/Fx/combinators/exhaustLatestMap.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAEhD
|
|
1
|
+
{"version":3,"file":"exhaustLatestMap.d.ts","sourceRoot":"","sources":["../../../src/Fx/combinators/exhaustLatestMap.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAEhD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+CG;AACH,eAAO,MAAM,gBAAgB,EAAE,WAmD9B,CAAC"}
|
|
@@ -5,16 +5,52 @@ import { make as makeSink } from "../../Sink/Sink.js";
|
|
|
5
5
|
import { make } from "../constructors/make.js";
|
|
6
6
|
import { extendScope } from "../internal/scope.js";
|
|
7
7
|
/**
|
|
8
|
-
* Maps each element
|
|
9
|
-
* If a new element arrives while an inner Fx is running, the new element is buffered (overwriting any previously buffered value).
|
|
10
|
-
* When the current inner Fx completes, the latest buffered Fx is run.
|
|
8
|
+
* Maps each element to an inner Fx, running one now and retaining only the latest waiting value.
|
|
11
9
|
*
|
|
12
|
-
*
|
|
10
|
+
* @remarks
|
|
11
|
+
* ## Why
|
|
12
|
+
*
|
|
13
|
+
* `exhaustLatestMap` fits work that cannot overlap but must eventually reflect
|
|
14
|
+
* the newest request. Unlike {@link exhaustMap}, it remembers one pending value;
|
|
15
|
+
* unlike {@link concatMap}, it does not let a backlog grow.
|
|
16
|
+
*
|
|
17
|
+
* ## Admission, buffering, and cardinality
|
|
18
|
+
*
|
|
19
|
+
* The first value while idle starts immediately. While that inner runs, each new
|
|
20
|
+
* value replaces the single pending inner Effect; replaced values never run.
|
|
21
|
+
* When the active inner completes, the latest pending inner starts. An admitted
|
|
22
|
+
* inner may emit any number of values, in that inner's order.
|
|
23
|
+
*
|
|
24
|
+
* ## Ownership and lifetime
|
|
25
|
+
*
|
|
26
|
+
* Source and admitted-inner failures are forwarded and both environments remain
|
|
27
|
+
* typed. The required `Scope` owns every active inner fiber. Source completion
|
|
28
|
+
* waits until the active and final pending inner finish; interruption closes the
|
|
29
|
+
* Scope and runs inner finalizers. The one-slot pending buffer retains work, not
|
|
30
|
+
* emitted output.
|
|
31
|
+
*
|
|
32
|
+
* @example
|
|
33
|
+
* ```ts
|
|
34
|
+
* import { Fx } from "@typed/fx"
|
|
35
|
+
* import { Effect } from "effect"
|
|
36
|
+
*
|
|
37
|
+
* const refreshes = Fx.mergeAll(
|
|
38
|
+
* Fx.at("v1", "0 millis"),
|
|
39
|
+
* Fx.at("v2", "5 millis"),
|
|
40
|
+
* Fx.at("v3", "10 millis")
|
|
41
|
+
* )
|
|
42
|
+
* const latestEventually = Fx.exhaustLatestMap(refreshes, (version) =>
|
|
43
|
+
* Fx.at(`indexed:${version}`, "20 millis")
|
|
44
|
+
* )
|
|
45
|
+
*
|
|
46
|
+
* Effect.runPromise(Effect.scoped(Fx.collectAll(latestEventually))).then(console.log)
|
|
47
|
+
* // ["indexed:v1", "indexed:v3"]
|
|
48
|
+
* ```
|
|
13
49
|
*
|
|
14
50
|
* @param f - A function that maps an element `A` to a new `Fx<B>`.
|
|
15
51
|
* @returns An `Fx` that emits values from the inner streams.
|
|
16
52
|
* @since 1.0.0
|
|
17
|
-
* @category
|
|
53
|
+
* @category Concurrent work
|
|
18
54
|
*/
|
|
19
55
|
export const exhaustLatestMap = dual(2, (self, f) => {
|
|
20
56
|
return make(Effect.fn(function* (sink) {
|
|
@@ -1,13 +1,49 @@
|
|
|
1
1
|
import type { FlatMapEffectLike } from "./flatMapEffect.js";
|
|
2
2
|
/**
|
|
3
|
-
* Maps each element
|
|
4
|
-
*
|
|
5
|
-
*
|
|
3
|
+
* Maps each element to an Effect, running one now and retaining only the latest waiting value.
|
|
4
|
+
*
|
|
5
|
+
* @remarks
|
|
6
|
+
* ## Why
|
|
7
|
+
*
|
|
8
|
+
* This is the Effect-producing form of {@link exhaustLatestMap}: it serializes
|
|
9
|
+
* Effects while bounding pending work to one replaceable latest request.
|
|
10
|
+
*
|
|
11
|
+
* ## Admission, buffering, and cardinality
|
|
12
|
+
*
|
|
13
|
+
* The first value while idle starts one Effect. While it runs, each callback is
|
|
14
|
+
* evaluated and the constructed Effect replaces the single pending Effect. Each
|
|
15
|
+
* admitted Effect emits exactly one successful result; superseded pending
|
|
16
|
+
* Effects never run and emit nothing.
|
|
17
|
+
*
|
|
18
|
+
* ## Ownership and lifetime
|
|
19
|
+
*
|
|
20
|
+
* Source and admitted Effect failures remain typed, as do callback service
|
|
21
|
+
* requirements. The required `Scope` owns the active Effect; source completion
|
|
22
|
+
* drains the final pending value, while interruption discards pending work and
|
|
23
|
+
* runs active finalizers.
|
|
24
|
+
*
|
|
25
|
+
* @example
|
|
26
|
+
* ```ts
|
|
27
|
+
* import { Fx } from "@typed/fx"
|
|
28
|
+
* import { Effect } from "effect"
|
|
29
|
+
*
|
|
30
|
+
* const refreshes = Fx.mergeAll(
|
|
31
|
+
* Fx.at("v1", "0 millis"),
|
|
32
|
+
* Fx.at("v2", "5 millis"),
|
|
33
|
+
* Fx.at("v3", "10 millis")
|
|
34
|
+
* )
|
|
35
|
+
* const indexed = Fx.exhaustLatestMapEffect(refreshes, (version) =>
|
|
36
|
+
* Effect.as(Effect.sleep("20 millis"), `indexed:${version}`)
|
|
37
|
+
* )
|
|
38
|
+
*
|
|
39
|
+
* Effect.runPromise(Effect.scoped(Fx.collectAll(indexed))).then(console.log)
|
|
40
|
+
* // ["indexed:v1", "indexed:v3"]
|
|
41
|
+
* ```
|
|
6
42
|
*
|
|
7
43
|
* @param f - A function that maps an element `A` to an `Effect<B>`.
|
|
8
44
|
* @returns An `Fx` that emits the results of the effects.
|
|
9
45
|
* @since 1.0.0
|
|
10
|
-
* @category
|
|
46
|
+
* @category Concurrent work
|
|
11
47
|
*/
|
|
12
48
|
export declare const exhaustLatestMapEffect: FlatMapEffectLike;
|
|
13
49
|
//# sourceMappingURL=exhaustLatestMapEffect.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"exhaustLatestMapEffect.d.ts","sourceRoot":"","sources":["../../../src/Fx/combinators/exhaustLatestMapEffect.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAE5D
|
|
1
|
+
{"version":3,"file":"exhaustLatestMapEffect.d.ts","sourceRoot":"","sources":["../../../src/Fx/combinators/exhaustLatestMapEffect.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAE5D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AACH,eAAO,MAAM,sBAAsB,EAAE,iBAMpC,CAAC"}
|
|
@@ -2,13 +2,49 @@ import { dual, flow } from "effect/Function";
|
|
|
2
2
|
import { fromEffect } from "../constructors/fromEffect.js";
|
|
3
3
|
import { exhaustLatestMap } from "./exhaustLatestMap.js";
|
|
4
4
|
/**
|
|
5
|
-
* Maps each element
|
|
6
|
-
*
|
|
7
|
-
*
|
|
5
|
+
* Maps each element to an Effect, running one now and retaining only the latest waiting value.
|
|
6
|
+
*
|
|
7
|
+
* @remarks
|
|
8
|
+
* ## Why
|
|
9
|
+
*
|
|
10
|
+
* This is the Effect-producing form of {@link exhaustLatestMap}: it serializes
|
|
11
|
+
* Effects while bounding pending work to one replaceable latest request.
|
|
12
|
+
*
|
|
13
|
+
* ## Admission, buffering, and cardinality
|
|
14
|
+
*
|
|
15
|
+
* The first value while idle starts one Effect. While it runs, each callback is
|
|
16
|
+
* evaluated and the constructed Effect replaces the single pending Effect. Each
|
|
17
|
+
* admitted Effect emits exactly one successful result; superseded pending
|
|
18
|
+
* Effects never run and emit nothing.
|
|
19
|
+
*
|
|
20
|
+
* ## Ownership and lifetime
|
|
21
|
+
*
|
|
22
|
+
* Source and admitted Effect failures remain typed, as do callback service
|
|
23
|
+
* requirements. The required `Scope` owns the active Effect; source completion
|
|
24
|
+
* drains the final pending value, while interruption discards pending work and
|
|
25
|
+
* runs active finalizers.
|
|
26
|
+
*
|
|
27
|
+
* @example
|
|
28
|
+
* ```ts
|
|
29
|
+
* import { Fx } from "@typed/fx"
|
|
30
|
+
* import { Effect } from "effect"
|
|
31
|
+
*
|
|
32
|
+
* const refreshes = Fx.mergeAll(
|
|
33
|
+
* Fx.at("v1", "0 millis"),
|
|
34
|
+
* Fx.at("v2", "5 millis"),
|
|
35
|
+
* Fx.at("v3", "10 millis")
|
|
36
|
+
* )
|
|
37
|
+
* const indexed = Fx.exhaustLatestMapEffect(refreshes, (version) =>
|
|
38
|
+
* Effect.as(Effect.sleep("20 millis"), `indexed:${version}`)
|
|
39
|
+
* )
|
|
40
|
+
*
|
|
41
|
+
* Effect.runPromise(Effect.scoped(Fx.collectAll(indexed))).then(console.log)
|
|
42
|
+
* // ["indexed:v1", "indexed:v3"]
|
|
43
|
+
* ```
|
|
8
44
|
*
|
|
9
45
|
* @param f - A function that maps an element `A` to an `Effect<B>`.
|
|
10
46
|
* @returns An `Fx` that emits the results of the effects.
|
|
11
47
|
* @since 1.0.0
|
|
12
|
-
* @category
|
|
48
|
+
* @category Concurrent work
|
|
13
49
|
*/
|
|
14
50
|
export const exhaustLatestMapEffect = dual(2, (self, f) => exhaustLatestMap(self, flow(f, fromEffect)));
|
|
@@ -2,10 +2,47 @@ import type { FlatMapLike } from "./flatMap.js";
|
|
|
2
2
|
/**
|
|
3
3
|
* Maps each element of an Fx to a new Fx, ignoring new elements until the current inner Fx completes.
|
|
4
4
|
*
|
|
5
|
+
* @remarks
|
|
6
|
+
* ## Why
|
|
7
|
+
*
|
|
8
|
+
* `exhaustMap` is an admission policy for work that must never overlap and does
|
|
9
|
+
* not need a backlog, such as ignoring repeated submit events while one submit
|
|
10
|
+
* is running.
|
|
11
|
+
*
|
|
12
|
+
* ## Admission, ordering, and cardinality
|
|
13
|
+
*
|
|
14
|
+
* The first source value observed while idle admits one inner Fx. For values
|
|
15
|
+
* arriving while it runs, `f` is still evaluated to construct an inner, but that
|
|
16
|
+
* inner is not run and no value is queued. Every admitted inner may emit any
|
|
17
|
+
* number of values in its own order.
|
|
18
|
+
*
|
|
19
|
+
* ## Ownership and lifetime
|
|
20
|
+
*
|
|
21
|
+
* Source and admitted-inner failures are forwarded and their services remain
|
|
22
|
+
* typed. A `FiberHandle` in the required `Scope` owns the active inner. Source
|
|
23
|
+
* completion waits for that inner; interruption closes the handle and the
|
|
24
|
+
* inner's child Scope, running its finalizers.
|
|
25
|
+
*
|
|
26
|
+
* @example
|
|
27
|
+
* ```ts
|
|
28
|
+
* import { Fx } from "@typed/fx"
|
|
29
|
+
* import { Effect } from "effect"
|
|
30
|
+
*
|
|
31
|
+
* const submits = Fx.mergeAll(
|
|
32
|
+
* Fx.at("first", "0 millis"),
|
|
33
|
+
* Fx.at("ignored while busy", "5 millis"),
|
|
34
|
+
* Fx.at("later", "30 millis")
|
|
35
|
+
* )
|
|
36
|
+
* const accepted = Fx.exhaustMap(submits, (command) => Fx.at(command, "20 millis"))
|
|
37
|
+
*
|
|
38
|
+
* Effect.runPromise(Effect.scoped(Fx.collectAll(accepted))).then(console.log)
|
|
39
|
+
* // ["first", "later"]
|
|
40
|
+
* ```
|
|
41
|
+
*
|
|
5
42
|
* @param f - A function that maps an element `A` to a new `Fx<B>`.
|
|
6
43
|
* @returns An `Fx` that emits values from the active inner stream.
|
|
7
44
|
* @since 1.0.0
|
|
8
|
-
* @category
|
|
45
|
+
* @category Concurrent work
|
|
9
46
|
*/
|
|
10
47
|
export declare const exhaustMap: FlatMapLike;
|
|
11
48
|
//# sourceMappingURL=exhaustMap.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"exhaustMap.d.ts","sourceRoot":"","sources":["../../../src/Fx/combinators/exhaustMap.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAEhD
|
|
1
|
+
{"version":3,"file":"exhaustMap.d.ts","sourceRoot":"","sources":["../../../src/Fx/combinators/exhaustMap.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAEhD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4CG;AACH,eAAO,MAAM,UAAU,EAAE,WAiBxB,CAAC"}
|
|
@@ -7,10 +7,47 @@ import { extendScope } from "../internal/scope.js";
|
|
|
7
7
|
/**
|
|
8
8
|
* Maps each element of an Fx to a new Fx, ignoring new elements until the current inner Fx completes.
|
|
9
9
|
*
|
|
10
|
+
* @remarks
|
|
11
|
+
* ## Why
|
|
12
|
+
*
|
|
13
|
+
* `exhaustMap` is an admission policy for work that must never overlap and does
|
|
14
|
+
* not need a backlog, such as ignoring repeated submit events while one submit
|
|
15
|
+
* is running.
|
|
16
|
+
*
|
|
17
|
+
* ## Admission, ordering, and cardinality
|
|
18
|
+
*
|
|
19
|
+
* The first source value observed while idle admits one inner Fx. For values
|
|
20
|
+
* arriving while it runs, `f` is still evaluated to construct an inner, but that
|
|
21
|
+
* inner is not run and no value is queued. Every admitted inner may emit any
|
|
22
|
+
* number of values in its own order.
|
|
23
|
+
*
|
|
24
|
+
* ## Ownership and lifetime
|
|
25
|
+
*
|
|
26
|
+
* Source and admitted-inner failures are forwarded and their services remain
|
|
27
|
+
* typed. A `FiberHandle` in the required `Scope` owns the active inner. Source
|
|
28
|
+
* completion waits for that inner; interruption closes the handle and the
|
|
29
|
+
* inner's child Scope, running its finalizers.
|
|
30
|
+
*
|
|
31
|
+
* @example
|
|
32
|
+
* ```ts
|
|
33
|
+
* import { Fx } from "@typed/fx"
|
|
34
|
+
* import { Effect } from "effect"
|
|
35
|
+
*
|
|
36
|
+
* const submits = Fx.mergeAll(
|
|
37
|
+
* Fx.at("first", "0 millis"),
|
|
38
|
+
* Fx.at("ignored while busy", "5 millis"),
|
|
39
|
+
* Fx.at("later", "30 millis")
|
|
40
|
+
* )
|
|
41
|
+
* const accepted = Fx.exhaustMap(submits, (command) => Fx.at(command, "20 millis"))
|
|
42
|
+
*
|
|
43
|
+
* Effect.runPromise(Effect.scoped(Fx.collectAll(accepted))).then(console.log)
|
|
44
|
+
* // ["first", "later"]
|
|
45
|
+
* ```
|
|
46
|
+
*
|
|
10
47
|
* @param f - A function that maps an element `A` to a new `Fx<B>`.
|
|
11
48
|
* @returns An `Fx` that emits values from the active inner stream.
|
|
12
49
|
* @since 1.0.0
|
|
13
|
-
* @category
|
|
50
|
+
* @category Concurrent work
|
|
14
51
|
*/
|
|
15
52
|
export const exhaustMap = dual(2, (self, f) => make(Effect.fn(function* (sink) {
|
|
16
53
|
const handle = yield* FiberHandle.make();
|
|
@@ -2,10 +2,42 @@ import type { FlatMapEffectLike } from "./flatMapEffect.js";
|
|
|
2
2
|
/**
|
|
3
3
|
* Maps each element of an Fx to an Effect, ignoring new elements until the current effect completes.
|
|
4
4
|
*
|
|
5
|
+
* @remarks
|
|
6
|
+
* ## Why
|
|
7
|
+
*
|
|
8
|
+
* This Effect-producing form of {@link exhaustMap} prevents overlapping command
|
|
9
|
+
* Effects while deliberately applying no queue or latest-value replay policy.
|
|
10
|
+
*
|
|
11
|
+
* ## Admission and cardinality
|
|
12
|
+
*
|
|
13
|
+
* The first value while idle starts one Effect and emits its one successful
|
|
14
|
+
* result. For values received while it runs, `f` is still evaluated to construct
|
|
15
|
+
* an Effect, but that Effect is not run or queued.
|
|
16
|
+
*
|
|
17
|
+
* ## Ownership and lifetime
|
|
18
|
+
*
|
|
19
|
+
* Source and callback Effect failures remain typed and callback services are
|
|
20
|
+
* added to the output requirements. The active Effect is owned by the returned
|
|
21
|
+
* Fx's required `Scope`; completion waits for it and interruption runs its
|
|
22
|
+
* finalizers.
|
|
23
|
+
*
|
|
24
|
+
* @example
|
|
25
|
+
* ```ts
|
|
26
|
+
* import { Fx } from "@typed/fx"
|
|
27
|
+
* import { Effect } from "effect"
|
|
28
|
+
*
|
|
29
|
+
* const accepted = Fx.exhaustMapEffect(Fx.fromIterable([1, 2]), (id) =>
|
|
30
|
+
* Effect.as(Effect.sleep("20 millis"), `saved:${id}`)
|
|
31
|
+
* )
|
|
32
|
+
*
|
|
33
|
+
* Effect.runPromise(Effect.scoped(Fx.collectAll(accepted))).then(console.log)
|
|
34
|
+
* // ["saved:1"]: the second Effect is constructed but not admitted
|
|
35
|
+
* ```
|
|
36
|
+
*
|
|
5
37
|
* @param f - A function that maps an element `A` to an `Effect<B>`.
|
|
6
38
|
* @returns An `Fx` that emits the results of the active effect.
|
|
7
39
|
* @since 1.0.0
|
|
8
|
-
* @category
|
|
40
|
+
* @category Concurrent work
|
|
9
41
|
*/
|
|
10
42
|
export declare const exhaustMapEffect: FlatMapEffectLike;
|
|
11
43
|
//# sourceMappingURL=exhaustMapEffect.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"exhaustMapEffect.d.ts","sourceRoot":"","sources":["../../../src/Fx/combinators/exhaustMapEffect.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAE5D
|
|
1
|
+
{"version":3,"file":"exhaustMapEffect.d.ts","sourceRoot":"","sources":["../../../src/Fx/combinators/exhaustMapEffect.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAE5D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,eAAO,MAAM,gBAAgB,EAAE,iBAM9B,CAAC"}
|
|
@@ -4,9 +4,41 @@ import { exhaustMap } from "./exhaustMap.js";
|
|
|
4
4
|
/**
|
|
5
5
|
* Maps each element of an Fx to an Effect, ignoring new elements until the current effect completes.
|
|
6
6
|
*
|
|
7
|
+
* @remarks
|
|
8
|
+
* ## Why
|
|
9
|
+
*
|
|
10
|
+
* This Effect-producing form of {@link exhaustMap} prevents overlapping command
|
|
11
|
+
* Effects while deliberately applying no queue or latest-value replay policy.
|
|
12
|
+
*
|
|
13
|
+
* ## Admission and cardinality
|
|
14
|
+
*
|
|
15
|
+
* The first value while idle starts one Effect and emits its one successful
|
|
16
|
+
* result. For values received while it runs, `f` is still evaluated to construct
|
|
17
|
+
* an Effect, but that Effect is not run or queued.
|
|
18
|
+
*
|
|
19
|
+
* ## Ownership and lifetime
|
|
20
|
+
*
|
|
21
|
+
* Source and callback Effect failures remain typed and callback services are
|
|
22
|
+
* added to the output requirements. The active Effect is owned by the returned
|
|
23
|
+
* Fx's required `Scope`; completion waits for it and interruption runs its
|
|
24
|
+
* finalizers.
|
|
25
|
+
*
|
|
26
|
+
* @example
|
|
27
|
+
* ```ts
|
|
28
|
+
* import { Fx } from "@typed/fx"
|
|
29
|
+
* import { Effect } from "effect"
|
|
30
|
+
*
|
|
31
|
+
* const accepted = Fx.exhaustMapEffect(Fx.fromIterable([1, 2]), (id) =>
|
|
32
|
+
* Effect.as(Effect.sleep("20 millis"), `saved:${id}`)
|
|
33
|
+
* )
|
|
34
|
+
*
|
|
35
|
+
* Effect.runPromise(Effect.scoped(Fx.collectAll(accepted))).then(console.log)
|
|
36
|
+
* // ["saved:1"]: the second Effect is constructed but not admitted
|
|
37
|
+
* ```
|
|
38
|
+
*
|
|
7
39
|
* @param f - A function that maps an element `A` to an `Effect<B>`.
|
|
8
40
|
* @returns An `Fx` that emits the results of the active effect.
|
|
9
41
|
* @since 1.0.0
|
|
10
|
-
* @category
|
|
42
|
+
* @category Concurrent work
|
|
11
43
|
*/
|
|
12
44
|
export const exhaustMapEffect = dual(2, (self, f) => exhaustMap(self, flow(f, fromEffect)));
|
|
@@ -1,12 +1,33 @@
|
|
|
1
1
|
import type * as Exit from "effect/Exit";
|
|
2
2
|
import type { Fx } from "../Fx.js";
|
|
3
3
|
/**
|
|
4
|
-
* Materializes
|
|
4
|
+
* Materializes every success and the terminal failure as infallible `Exit` values.
|
|
5
|
+
*
|
|
6
|
+
* @remarks
|
|
7
|
+
* ## Why
|
|
8
|
+
*
|
|
9
|
+
* Turning both channels into data lets downstream Fx composition inspect
|
|
10
|
+
* complete Effect causes without terminating the pipeline.
|
|
11
|
+
*
|
|
12
|
+
* ## Ownership and lifetime
|
|
13
|
+
*
|
|
14
|
+
* Each source value becomes `Exit.succeed` in arrival order. A source failure,
|
|
15
|
+
* including a defect or interrupt, becomes one `Exit.failCause`, after which
|
|
16
|
+
* the returned Fx completes with error type `never`. It acquires no resource
|
|
17
|
+
* beyond the single source subscription.
|
|
18
|
+
*
|
|
19
|
+
* @example
|
|
20
|
+
* ```ts
|
|
21
|
+
* import { exit } from "@typed/fx/Fx"
|
|
22
|
+
* import { fail } from "@typed/fx/Fx"
|
|
23
|
+
*
|
|
24
|
+
* const outcomes = exit(fail("offline"))
|
|
25
|
+
* ```
|
|
5
26
|
*
|
|
6
27
|
* @param fx - The `Fx` stream.
|
|
7
28
|
* @returns An `Fx` emitting `Exit<A, E>`.
|
|
8
29
|
* @since 1.0.0
|
|
9
|
-
* @category
|
|
30
|
+
* @category Errors and recovery
|
|
10
31
|
*/
|
|
11
32
|
export declare const exit: <A, E, R>(fx: Fx<A, E, R>) => Fx<Exit.Exit<A, E>, never, R>;
|
|
12
33
|
//# sourceMappingURL=exit.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"exit.d.ts","sourceRoot":"","sources":["../../../src/Fx/combinators/exit.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,IAAI,MAAM,aAAa,CAAC;AAGzC,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,UAAU,CAAC;AAEnC
|
|
1
|
+
{"version":3,"file":"exit.d.ts","sourceRoot":"","sources":["../../../src/Fx/combinators/exit.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,IAAI,MAAM,aAAa,CAAC;AAGzC,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,UAAU,CAAC;AAEnC;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,eAAO,MAAM,IAAI,GAAI,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CACJ,CAAC"}
|