@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
|
@@ -2,13 +2,58 @@ import type { Fx } from "../Fx.js";
|
|
|
2
2
|
/**
|
|
3
3
|
* Transforms the elements of an Fx using a provided function.
|
|
4
4
|
*
|
|
5
|
+
* @remarks
|
|
6
|
+
* ## Why
|
|
7
|
+
* `map` changes each pushed value without changing when values arrive. It emits exactly once for
|
|
8
|
+
* every upstream success, in upstream order; the callback is synchronous and cannot add failures
|
|
9
|
+
* or services.
|
|
10
|
+
*
|
|
11
|
+
* ## Ownership and lifetime
|
|
12
|
+
* This operation acquires no resources and retains no state. Running the result runs the source in
|
|
13
|
+
* the same Scope, and interruption or failure is forwarded unchanged.
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* ```ts
|
|
17
|
+
* import { Fx } from "@typed/fx"
|
|
18
|
+
*
|
|
19
|
+
* const labels = Fx.fromIterable([1, 2, 3]).pipe(Fx.map((n) => `item-${n}`))
|
|
20
|
+
* ```
|
|
21
|
+
*
|
|
5
22
|
* @param f - A function that transforms values of type `A` to `B`.
|
|
6
23
|
* @returns An `Fx` that emits values of type `B`.
|
|
7
24
|
* @since 1.0.0
|
|
8
|
-
* @category
|
|
25
|
+
* @category Transforming values
|
|
9
26
|
*/
|
|
10
27
|
export declare const map: {
|
|
11
28
|
<A, B>(f: (a: A) => B): <E, R>(self: Fx<A, E, R>) => Fx<B, E, R>;
|
|
12
29
|
<A, E, R, B>(self: Fx<A, E, R>, f: (a: A) => B): Fx<B, E, R>;
|
|
13
30
|
};
|
|
31
|
+
/**
|
|
32
|
+
* Replaces all emitted values from the Fx with the provided value `b`.
|
|
33
|
+
*
|
|
34
|
+
* @remarks
|
|
35
|
+
* ## Why
|
|
36
|
+
* `as` preserves upstream timing and cardinality while intentionally discarding each value. It is
|
|
37
|
+
* useful when occurrence matters but payload does not.
|
|
38
|
+
*
|
|
39
|
+
* ## Ownership and lifetime
|
|
40
|
+
* This operation is a pure `map`; it acquires no resources, retains no state, and forwards source
|
|
41
|
+
* failure, completion, services, and interruption unchanged.
|
|
42
|
+
*
|
|
43
|
+
* @example
|
|
44
|
+
* ```ts
|
|
45
|
+
* import { Fx } from "@typed/fx"
|
|
46
|
+
*
|
|
47
|
+
* const refreshes = Fx.fromIterable(["click", "retry"]).pipe(Fx.as("refresh" as const))
|
|
48
|
+
* ```
|
|
49
|
+
*
|
|
50
|
+
* @param b - The value to emit instead.
|
|
51
|
+
* @returns An Fx that emits `b` for every element.
|
|
52
|
+
* @since 1.0.0
|
|
53
|
+
* @category Transforming values
|
|
54
|
+
*/
|
|
55
|
+
export declare const as: {
|
|
56
|
+
<B>(b: B): <A, E, R>(self: Fx<A, E, R>) => Fx<B, E, R>;
|
|
57
|
+
<A, E, R, B>(self: Fx<A, E, R>, b: B): Fx<B, E, R>;
|
|
58
|
+
};
|
|
14
59
|
//# sourceMappingURL=map.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"map.d.ts","sourceRoot":"","sources":["../../../src/Fx/combinators/map.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,UAAU,CAAC;AAEnC
|
|
1
|
+
{"version":3,"file":"map.d.ts","sourceRoot":"","sources":["../../../src/Fx/combinators/map.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,UAAU,CAAC;AAEnC;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,eAAO,MAAM,GAAG,EAAE;IAChB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAEjE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;CAG9D,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,eAAO,MAAM,EAAE,EAAE;IACf,CAAC,CAAC,EAAE,CAAC,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,CAAC,CAAC;IACvD,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;CACgC,CAAC"}
|
|
@@ -4,9 +4,51 @@ import { make } from "../constructors/make.js";
|
|
|
4
4
|
/**
|
|
5
5
|
* Transforms the elements of an Fx using a provided function.
|
|
6
6
|
*
|
|
7
|
+
* @remarks
|
|
8
|
+
* ## Why
|
|
9
|
+
* `map` changes each pushed value without changing when values arrive. It emits exactly once for
|
|
10
|
+
* every upstream success, in upstream order; the callback is synchronous and cannot add failures
|
|
11
|
+
* or services.
|
|
12
|
+
*
|
|
13
|
+
* ## Ownership and lifetime
|
|
14
|
+
* This operation acquires no resources and retains no state. Running the result runs the source in
|
|
15
|
+
* the same Scope, and interruption or failure is forwarded unchanged.
|
|
16
|
+
*
|
|
17
|
+
* @example
|
|
18
|
+
* ```ts
|
|
19
|
+
* import { Fx } from "@typed/fx"
|
|
20
|
+
*
|
|
21
|
+
* const labels = Fx.fromIterable([1, 2, 3]).pipe(Fx.map((n) => `item-${n}`))
|
|
22
|
+
* ```
|
|
23
|
+
*
|
|
7
24
|
* @param f - A function that transforms values of type `A` to `B`.
|
|
8
25
|
* @returns An `Fx` that emits values of type `B`.
|
|
9
26
|
* @since 1.0.0
|
|
10
|
-
* @category
|
|
27
|
+
* @category Transforming values
|
|
11
28
|
*/
|
|
12
29
|
export const map = dual(2, (self, f) => make((sink) => self.run(sinkCore.map(sink, f))));
|
|
30
|
+
/**
|
|
31
|
+
* Replaces all emitted values from the Fx with the provided value `b`.
|
|
32
|
+
*
|
|
33
|
+
* @remarks
|
|
34
|
+
* ## Why
|
|
35
|
+
* `as` preserves upstream timing and cardinality while intentionally discarding each value. It is
|
|
36
|
+
* useful when occurrence matters but payload does not.
|
|
37
|
+
*
|
|
38
|
+
* ## Ownership and lifetime
|
|
39
|
+
* This operation is a pure `map`; it acquires no resources, retains no state, and forwards source
|
|
40
|
+
* failure, completion, services, and interruption unchanged.
|
|
41
|
+
*
|
|
42
|
+
* @example
|
|
43
|
+
* ```ts
|
|
44
|
+
* import { Fx } from "@typed/fx"
|
|
45
|
+
*
|
|
46
|
+
* const refreshes = Fx.fromIterable(["click", "retry"]).pipe(Fx.as("refresh" as const))
|
|
47
|
+
* ```
|
|
48
|
+
*
|
|
49
|
+
* @param b - The value to emit instead.
|
|
50
|
+
* @returns An Fx that emits `b` for every element.
|
|
51
|
+
* @since 1.0.0
|
|
52
|
+
* @category Transforming values
|
|
53
|
+
*/
|
|
54
|
+
export const as = dual(2, (self, b) => map(self, () => b));
|
|
@@ -5,8 +5,27 @@ import type { Fx } from "../Fx.js";
|
|
|
5
5
|
* Mirrors `Effect.mapBoth`: `onSuccess` maps emitted values, `onFailure` maps the
|
|
6
6
|
* typed failure (via `Cause.map`); defects and interrupts are preserved.
|
|
7
7
|
*
|
|
8
|
+
* @remarks
|
|
9
|
+
* ## Why
|
|
10
|
+
* `mapBoth` transforms success values and typed failures together while preserving the rest of an
|
|
11
|
+
* Effect `Cause`. Every success still emits once in order; only typed failure values are mapped.
|
|
12
|
+
*
|
|
13
|
+
* ## Ownership and lifetime
|
|
14
|
+
* Both callbacks are synchronous and the operation acquires no resources. Defects, interruption,
|
|
15
|
+
* service requirements, and source lifetime pass through unchanged.
|
|
16
|
+
*
|
|
17
|
+
* @example
|
|
18
|
+
* ```ts
|
|
19
|
+
* import { Fx } from "@typed/fx"
|
|
20
|
+
*
|
|
21
|
+
* const normalized = Fx.fail("offline").pipe(Fx.mapBoth({
|
|
22
|
+
* onFailure: (message) => new Error(message),
|
|
23
|
+
* onSuccess: (value) => String(value),
|
|
24
|
+
* }))
|
|
25
|
+
* ```
|
|
26
|
+
*
|
|
8
27
|
* @since 1.0.0
|
|
9
|
-
* @category
|
|
28
|
+
* @category Errors and recovery
|
|
10
29
|
*/
|
|
11
30
|
export declare const mapBoth: {
|
|
12
31
|
<E, E2, A, A2>(options: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mapBoth.d.ts","sourceRoot":"","sources":["../../../src/Fx/combinators/mapBoth.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,UAAU,CAAC;AAEnC
|
|
1
|
+
{"version":3,"file":"mapBoth.d.ts","sourceRoot":"","sources":["../../../src/Fx/combinators/mapBoth.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,UAAU,CAAC;AAEnC;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,eAAO,MAAM,OAAO,EAAE;IACpB,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE;QACtB,QAAQ,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC;QACjC,QAAQ,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC;KAClC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;IAE5C,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EACd,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EACjB,OAAO,EAAE;QAAE,QAAQ,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC;QAAC,QAAQ,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAA;KAAE,GAC9E,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;CAelB,CAAC"}
|
|
@@ -8,7 +8,26 @@ import { make } from "../constructors/make.js";
|
|
|
8
8
|
* Mirrors `Effect.mapBoth`: `onSuccess` maps emitted values, `onFailure` maps the
|
|
9
9
|
* typed failure (via `Cause.map`); defects and interrupts are preserved.
|
|
10
10
|
*
|
|
11
|
+
* @remarks
|
|
12
|
+
* ## Why
|
|
13
|
+
* `mapBoth` transforms success values and typed failures together while preserving the rest of an
|
|
14
|
+
* Effect `Cause`. Every success still emits once in order; only typed failure values are mapped.
|
|
15
|
+
*
|
|
16
|
+
* ## Ownership and lifetime
|
|
17
|
+
* Both callbacks are synchronous and the operation acquires no resources. Defects, interruption,
|
|
18
|
+
* service requirements, and source lifetime pass through unchanged.
|
|
19
|
+
*
|
|
20
|
+
* @example
|
|
21
|
+
* ```ts
|
|
22
|
+
* import { Fx } from "@typed/fx"
|
|
23
|
+
*
|
|
24
|
+
* const normalized = Fx.fail("offline").pipe(Fx.mapBoth({
|
|
25
|
+
* onFailure: (message) => new Error(message),
|
|
26
|
+
* onSuccess: (value) => String(value),
|
|
27
|
+
* }))
|
|
28
|
+
* ```
|
|
29
|
+
*
|
|
11
30
|
* @since 1.0.0
|
|
12
|
-
* @category
|
|
31
|
+
* @category Errors and recovery
|
|
13
32
|
*/
|
|
14
33
|
export const mapBoth = dual(2, (self, options) => make((sink) => self.run(makeSink((cause) => sink.onFailure(Cause.map(cause, options.onFailure)), (a) => sink.onSuccess(options.onSuccess(a))))));
|
|
@@ -3,10 +3,34 @@ import type { Fx } from "../Fx.js";
|
|
|
3
3
|
/**
|
|
4
4
|
* Transforms the elements of an Fx using a provided Effectful function.
|
|
5
5
|
*
|
|
6
|
+
* @remarks
|
|
7
|
+
* ## Why
|
|
8
|
+
* `mapEffect` performs one Effectful transformation for every input and emits once for each
|
|
9
|
+
* successful callback. It does not serialize sink invocations: ordering and concurrency are owned
|
|
10
|
+
* by the producer, so overlapping callbacks may complete and emit out of input order.
|
|
11
|
+
*
|
|
12
|
+
* ## Ownership and lifetime
|
|
13
|
+
* Each callback Effect belongs to the producer delivery that invoked it. Failure is routed to the
|
|
14
|
+
* Sink, services remain required, and interruption is local to that delivery. The combinator adds
|
|
15
|
+
* no queue, semaphore, result retention, or independent fiber.
|
|
16
|
+
*
|
|
17
|
+
* @example
|
|
18
|
+
* ```ts
|
|
19
|
+
* import { Effect } from "effect"
|
|
20
|
+
* import { Fx } from "@typed/fx"
|
|
21
|
+
*
|
|
22
|
+
* const concurrent = Fx.make<number>((sink) =>
|
|
23
|
+
* Effect.all([sink.onSuccess(1), sink.onSuccess(2)], { concurrency: "unbounded", discard: true })
|
|
24
|
+
* )
|
|
25
|
+
* const program = Fx.collectAll(
|
|
26
|
+
* concurrent.pipe(Fx.mapEffect((n) => Effect.sleep(n === 1 ? "10 millis" : "0 millis").pipe(Effect.as(n))))
|
|
27
|
+
* ) // producer concurrency permits [2, 1]
|
|
28
|
+
* ```
|
|
29
|
+
*
|
|
6
30
|
* @param f - A function that transforms values of type `A` to an Effect of `B`.
|
|
7
31
|
* @returns An `Fx` that emits values of type `B`.
|
|
8
32
|
* @since 1.0.0
|
|
9
|
-
* @category
|
|
33
|
+
* @category Transforming values
|
|
10
34
|
*/
|
|
11
35
|
export declare const mapEffect: {
|
|
12
36
|
<A, B, E2, R2>(f: (a: A) => Effect.Effect<B, E2, R2>): <E, R>(fx: Fx<A, E | E2, R>) => Fx<B, E | E2, R | R2>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mapEffect.d.ts","sourceRoot":"","sources":["../../../src/Fx/combinators/mapEffect.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,MAAM,eAAe,CAAC;AAK7C,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,UAAU,CAAC;AAEnC
|
|
1
|
+
{"version":3,"file":"mapEffect.d.ts","sourceRoot":"","sources":["../../../src/Fx/combinators/mapEffect.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,MAAM,eAAe,CAAC;AAK7C,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,UAAU,CAAC;AAEnC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,eAAO,MAAM,SAAS,EAAE;IACtB,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EACX,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,GACpC,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,CAAC,EAAE,EAAE,EAAE,EAAE,EACjB,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,EACpB,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,GACpC,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;CAQ1B,CAAC"}
|
|
@@ -4,9 +4,33 @@ import { make } from "../constructors/make.js";
|
|
|
4
4
|
/**
|
|
5
5
|
* Transforms the elements of an Fx using a provided Effectful function.
|
|
6
6
|
*
|
|
7
|
+
* @remarks
|
|
8
|
+
* ## Why
|
|
9
|
+
* `mapEffect` performs one Effectful transformation for every input and emits once for each
|
|
10
|
+
* successful callback. It does not serialize sink invocations: ordering and concurrency are owned
|
|
11
|
+
* by the producer, so overlapping callbacks may complete and emit out of input order.
|
|
12
|
+
*
|
|
13
|
+
* ## Ownership and lifetime
|
|
14
|
+
* Each callback Effect belongs to the producer delivery that invoked it. Failure is routed to the
|
|
15
|
+
* Sink, services remain required, and interruption is local to that delivery. The combinator adds
|
|
16
|
+
* no queue, semaphore, result retention, or independent fiber.
|
|
17
|
+
*
|
|
18
|
+
* @example
|
|
19
|
+
* ```ts
|
|
20
|
+
* import { Effect } from "effect"
|
|
21
|
+
* import { Fx } from "@typed/fx"
|
|
22
|
+
*
|
|
23
|
+
* const concurrent = Fx.make<number>((sink) =>
|
|
24
|
+
* Effect.all([sink.onSuccess(1), sink.onSuccess(2)], { concurrency: "unbounded", discard: true })
|
|
25
|
+
* )
|
|
26
|
+
* const program = Fx.collectAll(
|
|
27
|
+
* concurrent.pipe(Fx.mapEffect((n) => Effect.sleep(n === 1 ? "10 millis" : "0 millis").pipe(Effect.as(n))))
|
|
28
|
+
* ) // producer concurrency permits [2, 1]
|
|
29
|
+
* ```
|
|
30
|
+
*
|
|
7
31
|
* @param f - A function that transforms values of type `A` to an Effect of `B`.
|
|
8
32
|
* @returns An `Fx` that emits values of type `B`.
|
|
9
33
|
* @since 1.0.0
|
|
10
|
-
* @category
|
|
34
|
+
* @category Transforming values
|
|
11
35
|
*/
|
|
12
36
|
export const mapEffect = dual(2, (self, f) => make((sink) => self.run(sinkCore.mapEffect(sink, f))));
|
|
@@ -1,14 +1,30 @@
|
|
|
1
1
|
import type { Fx } from "../Fx.js";
|
|
2
2
|
/**
|
|
3
|
-
* Transforms
|
|
3
|
+
* Transforms typed failures while preserving defects and interruption.
|
|
4
4
|
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
5
|
+
* @remarks
|
|
6
|
+
* ## Why
|
|
7
7
|
*
|
|
8
|
-
*
|
|
8
|
+
* Libraries can expose a domain error without losing the richer Cause that
|
|
9
|
+
* Effect uses for defects, interruption, and composed failures.
|
|
10
|
+
*
|
|
11
|
+
* ## Ownership and lifetime
|
|
12
|
+
*
|
|
13
|
+
* The mapping function runs synchronously for each `Cause.Fail` reported by
|
|
14
|
+
* the source. It does not run for defects or interrupts, which pass through
|
|
15
|
+
* unchanged. Values retain order and cardinality. No resource is acquired and
|
|
16
|
+
* the returned Fx has the same subscription lifetime and services as its source.
|
|
17
|
+
*
|
|
18
|
+
* @example
|
|
19
|
+
* ```ts
|
|
20
|
+
* import { mapError } from "@typed/fx/Fx"
|
|
21
|
+
* import { fail } from "@typed/fx/Fx"
|
|
22
|
+
*
|
|
23
|
+
* const domainFailure = mapError(fail(404), (status) => ({ _tag: "HttpError", status }))
|
|
24
|
+
* ```
|
|
9
25
|
*
|
|
10
26
|
* @since 1.0.0
|
|
11
|
-
* @category
|
|
27
|
+
* @category Errors and recovery
|
|
12
28
|
*/
|
|
13
29
|
export declare const mapError: {
|
|
14
30
|
<E, E2>(f: (e: E) => E2): <A, R>(self: Fx<A, E, R>) => Fx<A, E2, R>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mapError.d.ts","sourceRoot":"","sources":["../../../src/Fx/combinators/mapError.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,UAAU,CAAC;AAEnC
|
|
1
|
+
{"version":3,"file":"mapError.d.ts","sourceRoot":"","sources":["../../../src/Fx/combinators/mapError.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,UAAU,CAAC;AAEnC;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,eAAO,MAAM,QAAQ,EAAE;IACrB,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;IAEpE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;CAKjE,CAAC"}
|
|
@@ -3,14 +3,30 @@ import { dual } from "effect/Function";
|
|
|
3
3
|
import { make as makeSink } from "../../Sink/Sink.js";
|
|
4
4
|
import { make } from "../constructors/make.js";
|
|
5
5
|
/**
|
|
6
|
-
* Transforms
|
|
6
|
+
* Transforms typed failures while preserving defects and interruption.
|
|
7
7
|
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
8
|
+
* @remarks
|
|
9
|
+
* ## Why
|
|
10
10
|
*
|
|
11
|
-
*
|
|
11
|
+
* Libraries can expose a domain error without losing the richer Cause that
|
|
12
|
+
* Effect uses for defects, interruption, and composed failures.
|
|
13
|
+
*
|
|
14
|
+
* ## Ownership and lifetime
|
|
15
|
+
*
|
|
16
|
+
* The mapping function runs synchronously for each `Cause.Fail` reported by
|
|
17
|
+
* the source. It does not run for defects or interrupts, which pass through
|
|
18
|
+
* unchanged. Values retain order and cardinality. No resource is acquired and
|
|
19
|
+
* the returned Fx has the same subscription lifetime and services as its source.
|
|
20
|
+
*
|
|
21
|
+
* @example
|
|
22
|
+
* ```ts
|
|
23
|
+
* import { mapError } from "@typed/fx/Fx"
|
|
24
|
+
* import { fail } from "@typed/fx/Fx"
|
|
25
|
+
*
|
|
26
|
+
* const domainFailure = mapError(fail(404), (status) => ({ _tag: "HttpError", status }))
|
|
27
|
+
* ```
|
|
12
28
|
*
|
|
13
29
|
* @since 1.0.0
|
|
14
|
-
* @category
|
|
30
|
+
* @category Errors and recovery
|
|
15
31
|
*/
|
|
16
32
|
export const mapError = dual(2, (self, f) => make((sink) => self.run(makeSink((cause) => sink.onFailure(Cause.map(cause, f)), sink.onSuccess))));
|
|
@@ -2,10 +2,44 @@ import type { Fx } from "../Fx.js";
|
|
|
2
2
|
/**
|
|
3
3
|
* Merges multiple Fx streams into a single Fx that emits values from all input streams concurrently.
|
|
4
4
|
*
|
|
5
|
+
* @remarks
|
|
6
|
+
* ## Why
|
|
7
|
+
*
|
|
8
|
+
* `mergeAll` combines a known set of independent push producers without adding
|
|
9
|
+
* a source-of-sources or choosing a winner.
|
|
10
|
+
*
|
|
11
|
+
* ## Concurrency, ordering, and cardinality
|
|
12
|
+
*
|
|
13
|
+
* All inputs start concurrently. Every non-interruption value from every input
|
|
14
|
+
* is forwarded once. Each input preserves its own order, while values across
|
|
15
|
+
* inputs interleave by arrival; there is no buffering to restore argument order.
|
|
16
|
+
* An empty argument list completes without emitting.
|
|
17
|
+
*
|
|
18
|
+
* ## Ownership and lifetime
|
|
19
|
+
*
|
|
20
|
+
* Typed failures from any input are forwarded and every input environment is
|
|
21
|
+
* required. Interrupt-only causes from sibling cancellation are suppressed at
|
|
22
|
+
* the Sink boundary. The observing fiber owns all concurrent runs: completion
|
|
23
|
+
* waits for all inputs, and interruption cancels the remaining runs and their
|
|
24
|
+
* resource lifetimes.
|
|
25
|
+
*
|
|
26
|
+
* @example
|
|
27
|
+
* ```ts
|
|
28
|
+
* import { Fx } from "@typed/fx"
|
|
29
|
+
* import { Effect } from "effect"
|
|
30
|
+
*
|
|
31
|
+
* const events = Fx.mergeAll(
|
|
32
|
+
* Fx.at("slow", "20 millis"),
|
|
33
|
+
* Fx.at("fast", "1 millis")
|
|
34
|
+
* )
|
|
35
|
+
* Effect.runPromise(Fx.collectAll(events)).then(console.log)
|
|
36
|
+
* // ["fast", "slow"]
|
|
37
|
+
* ```
|
|
38
|
+
*
|
|
5
39
|
* @param fx - The Fx streams to merge.
|
|
6
40
|
* @returns An `Fx` that emits values from all input streams.
|
|
7
41
|
* @since 1.0.0
|
|
8
|
-
* @category
|
|
42
|
+
* @category Combining sources
|
|
9
43
|
*/
|
|
10
44
|
export declare const mergeAll: <FX extends ReadonlyArray<Fx<any, any, any>>>(...fx: FX) => Fx<Fx.Success<FX[number]>, Fx.Error<FX[number]>, Fx.Services<FX[number]>>;
|
|
11
45
|
//# sourceMappingURL=mergeAll.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mergeAll.d.ts","sourceRoot":"","sources":["../../../src/Fx/combinators/mergeAll.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,UAAU,CAAC;AAEnC
|
|
1
|
+
{"version":3,"file":"mergeAll.d.ts","sourceRoot":"","sources":["../../../src/Fx/combinators/mergeAll.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,UAAU,CAAC;AAEnC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AACH,eAAO,MAAM,QAAQ,GAAI,EAAE,SAAS,aAAa,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,SAC3D,EAAE,KACR,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAMxE,CAAC"}
|
|
@@ -4,10 +4,44 @@ import { make } from "../constructors/make.js";
|
|
|
4
4
|
/**
|
|
5
5
|
* Merges multiple Fx streams into a single Fx that emits values from all input streams concurrently.
|
|
6
6
|
*
|
|
7
|
+
* @remarks
|
|
8
|
+
* ## Why
|
|
9
|
+
*
|
|
10
|
+
* `mergeAll` combines a known set of independent push producers without adding
|
|
11
|
+
* a source-of-sources or choosing a winner.
|
|
12
|
+
*
|
|
13
|
+
* ## Concurrency, ordering, and cardinality
|
|
14
|
+
*
|
|
15
|
+
* All inputs start concurrently. Every non-interruption value from every input
|
|
16
|
+
* is forwarded once. Each input preserves its own order, while values across
|
|
17
|
+
* inputs interleave by arrival; there is no buffering to restore argument order.
|
|
18
|
+
* An empty argument list completes without emitting.
|
|
19
|
+
*
|
|
20
|
+
* ## Ownership and lifetime
|
|
21
|
+
*
|
|
22
|
+
* Typed failures from any input are forwarded and every input environment is
|
|
23
|
+
* required. Interrupt-only causes from sibling cancellation are suppressed at
|
|
24
|
+
* the Sink boundary. The observing fiber owns all concurrent runs: completion
|
|
25
|
+
* waits for all inputs, and interruption cancels the remaining runs and their
|
|
26
|
+
* resource lifetimes.
|
|
27
|
+
*
|
|
28
|
+
* @example
|
|
29
|
+
* ```ts
|
|
30
|
+
* import { Fx } from "@typed/fx"
|
|
31
|
+
* import { Effect } from "effect"
|
|
32
|
+
*
|
|
33
|
+
* const events = Fx.mergeAll(
|
|
34
|
+
* Fx.at("slow", "20 millis"),
|
|
35
|
+
* Fx.at("fast", "1 millis")
|
|
36
|
+
* )
|
|
37
|
+
* Effect.runPromise(Fx.collectAll(events)).then(console.log)
|
|
38
|
+
* // ["fast", "slow"]
|
|
39
|
+
* ```
|
|
40
|
+
*
|
|
7
41
|
* @param fx - The Fx streams to merge.
|
|
8
42
|
* @returns An `Fx` that emits values from all input streams.
|
|
9
43
|
* @since 1.0.0
|
|
10
|
-
* @category
|
|
44
|
+
* @category Combining sources
|
|
11
45
|
*/
|
|
12
46
|
export const mergeAll = (...fx) => make((sink) => Effect.forEach(fx, (fx) => fx.run(skipInterrupt(sink)), {
|
|
13
47
|
concurrency: fx.length,
|
|
@@ -1,14 +1,46 @@
|
|
|
1
1
|
import type { Fx } from "../Fx.js";
|
|
2
2
|
/**
|
|
3
|
-
*
|
|
3
|
+
* Runs multiple Fx streams concurrently while draining their values in argument order.
|
|
4
4
|
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
5
|
+
* @remarks
|
|
6
|
+
* ## Why
|
|
7
|
+
*
|
|
8
|
+
* `mergeOrdered` overlaps production latency while preserving the same output
|
|
9
|
+
* grouping as sequential concatenation. It is useful only when that ordering is
|
|
10
|
+
* worth retaining later results in memory.
|
|
11
|
+
*
|
|
12
|
+
* ## Concurrency, ordering, and buffering
|
|
13
|
+
*
|
|
14
|
+
* Every input starts immediately. Input zero forwards as it produces. Values
|
|
15
|
+
* from each later input are buffered until every earlier input ends, then drained
|
|
16
|
+
* in that input's emission order before the next buffer is released. Buffering
|
|
17
|
+
* is unbounded: a fast or infinite later input can retain arbitrary values while
|
|
18
|
+
* an earlier input remains open.
|
|
19
|
+
*
|
|
20
|
+
* ## Ownership and lifetime
|
|
21
|
+
*
|
|
22
|
+
* Non-interruption failures are forwarded. Interrupt-only causes mark that input
|
|
23
|
+
* ended so they cannot deadlock later buffers. All input services remain typed.
|
|
24
|
+
* The observing fiber owns all runs and buffers; completion waits for all inputs,
|
|
25
|
+
* while interruption discards buffers and interrupts remaining resource scopes.
|
|
26
|
+
*
|
|
27
|
+
* @example
|
|
28
|
+
* ```ts
|
|
29
|
+
* import { Fx } from "@typed/fx"
|
|
30
|
+
* import { Effect } from "effect"
|
|
31
|
+
*
|
|
32
|
+
* const ordered = Fx.mergeOrdered(
|
|
33
|
+
* Fx.at("slow first", "20 millis"),
|
|
34
|
+
* Fx.at("fast second", "1 millis")
|
|
35
|
+
* )
|
|
36
|
+
* Effect.runPromise(Fx.collectAll(ordered)).then(console.log)
|
|
37
|
+
* // ["slow first", "fast second"]: the second value waits in its buffer
|
|
38
|
+
* ```
|
|
7
39
|
*
|
|
8
40
|
* @param fx - The Fx streams to merge.
|
|
9
41
|
* @returns An `Fx` that emits values in order.
|
|
10
42
|
* @since 1.0.0
|
|
11
|
-
* @category
|
|
43
|
+
* @category Combining sources
|
|
12
44
|
*/
|
|
13
45
|
export declare function mergeOrdered<FX extends ReadonlyArray<Fx<any, any, any>>>(...fx: FX): Fx<Fx.Success<FX[number]>, Fx.Error<FX[number]>, Fx.Services<FX[number]>>;
|
|
14
46
|
//# sourceMappingURL=mergeOrdered.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mergeOrdered.d.ts","sourceRoot":"","sources":["../../../src/Fx/combinators/mergeOrdered.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"mergeOrdered.d.ts","sourceRoot":"","sources":["../../../src/Fx/combinators/mergeOrdered.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,UAAU,CAAC;AAEnC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AACH,wBAAgB,YAAY,CAAC,EAAE,SAAS,aAAa,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,EACtE,GAAG,EAAE,EAAE,EAAE,GACR,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAoB3E"}
|
|
@@ -2,36 +2,75 @@ import * as Cause from "effect/Cause";
|
|
|
2
2
|
import * as Deferred from "effect/Deferred";
|
|
3
3
|
import * as Effect from "effect/Effect";
|
|
4
4
|
import * as Exit from "effect/Exit";
|
|
5
|
+
import * as Fiber from "effect/Fiber";
|
|
5
6
|
import * as Sink from "../../Sink/Sink.js";
|
|
6
7
|
import { make } from "../constructors/make.js";
|
|
7
8
|
/**
|
|
8
|
-
*
|
|
9
|
+
* Runs multiple Fx streams concurrently while draining their values in argument order.
|
|
9
10
|
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
11
|
+
* @remarks
|
|
12
|
+
* ## Why
|
|
13
|
+
*
|
|
14
|
+
* `mergeOrdered` overlaps production latency while preserving the same output
|
|
15
|
+
* grouping as sequential concatenation. It is useful only when that ordering is
|
|
16
|
+
* worth retaining later results in memory.
|
|
17
|
+
*
|
|
18
|
+
* ## Concurrency, ordering, and buffering
|
|
19
|
+
*
|
|
20
|
+
* Every input starts immediately. Input zero forwards as it produces. Values
|
|
21
|
+
* from each later input are buffered until every earlier input ends, then drained
|
|
22
|
+
* in that input's emission order before the next buffer is released. Buffering
|
|
23
|
+
* is unbounded: a fast or infinite later input can retain arbitrary values while
|
|
24
|
+
* an earlier input remains open.
|
|
25
|
+
*
|
|
26
|
+
* ## Ownership and lifetime
|
|
27
|
+
*
|
|
28
|
+
* Non-interruption failures are forwarded. Interrupt-only causes mark that input
|
|
29
|
+
* ended so they cannot deadlock later buffers. All input services remain typed.
|
|
30
|
+
* The observing fiber owns all runs and buffers; completion waits for all inputs,
|
|
31
|
+
* while interruption discards buffers and interrupts remaining resource scopes.
|
|
32
|
+
*
|
|
33
|
+
* @example
|
|
34
|
+
* ```ts
|
|
35
|
+
* import { Fx } from "@typed/fx"
|
|
36
|
+
* import { Effect } from "effect"
|
|
37
|
+
*
|
|
38
|
+
* const ordered = Fx.mergeOrdered(
|
|
39
|
+
* Fx.at("slow first", "20 millis"),
|
|
40
|
+
* Fx.at("fast second", "1 millis")
|
|
41
|
+
* )
|
|
42
|
+
* Effect.runPromise(Fx.collectAll(ordered)).then(console.log)
|
|
43
|
+
* // ["slow first", "fast second"]: the second value waits in its buffer
|
|
44
|
+
* ```
|
|
12
45
|
*
|
|
13
46
|
* @param fx - The Fx streams to merge.
|
|
14
47
|
* @returns An `Fx` that emits values in order.
|
|
15
48
|
* @since 1.0.0
|
|
16
|
-
* @category
|
|
49
|
+
* @category Combining sources
|
|
17
50
|
*/
|
|
18
51
|
export function mergeOrdered(...fx) {
|
|
19
52
|
return make(Effect.fn(function* (sink) {
|
|
20
|
-
const { makeSink, onEnd } = withBuffers(fx.length, sink);
|
|
21
|
-
|
|
53
|
+
const { makeSink, onEnd, discard } = withBuffers(fx.length, sink);
|
|
54
|
+
const run = Effect.forEach(fx, (fx, i) => Effect.onExit(fx.run(makeSink(i)), () => onEnd(i)), {
|
|
22
55
|
concurrency: "unbounded",
|
|
23
56
|
discard: true,
|
|
24
57
|
});
|
|
58
|
+
yield* Effect.acquireUseRelease(run.pipe(Effect.forkChild({ startImmediately: true })), Fiber.join, (fiber) => discard.pipe(Effect.andThen(Fiber.interrupt(fiber))));
|
|
25
59
|
}));
|
|
26
60
|
}
|
|
27
61
|
function withBuffers(size, sink) {
|
|
28
62
|
const buffers = indexedBuffers(size, sink);
|
|
29
63
|
const onSuccess = (index, value) => buffers.get(index).onSuccess(value);
|
|
30
64
|
const onEnd = (index) => buffers.get(index).onEnd;
|
|
65
|
+
const discard = Effect.sync(() => {
|
|
66
|
+
for (const buffer of buffers.values())
|
|
67
|
+
buffer.discard();
|
|
68
|
+
});
|
|
31
69
|
const makeSink = (index) => Sink.make((cause) => (Cause.hasInterruptsOnly(cause) ? onEnd(index) : sink.onFailure(cause)), (value) => onSuccess(index, value));
|
|
32
70
|
return {
|
|
33
71
|
onSuccess,
|
|
34
72
|
onEnd,
|
|
73
|
+
discard,
|
|
35
74
|
makeSink,
|
|
36
75
|
};
|
|
37
76
|
}
|
|
@@ -60,12 +99,16 @@ function indexedBuffers(size, sink) {
|
|
|
60
99
|
}
|
|
61
100
|
function IndexedBuffer(state, sink, onDone) {
|
|
62
101
|
let buffer = [];
|
|
102
|
+
let active = true;
|
|
103
|
+
const forward = (value) => Effect.suspend(() => (active ? sink.onSuccess(value) : Effect.void));
|
|
63
104
|
const onSuccess = (value) => {
|
|
105
|
+
if (!active)
|
|
106
|
+
return Effect.void;
|
|
64
107
|
if (state.ready) {
|
|
65
108
|
if (buffer.length === 0)
|
|
66
|
-
return
|
|
109
|
+
return forward(value);
|
|
67
110
|
buffer.push(value);
|
|
68
|
-
const effect = Effect.forEach(buffer,
|
|
111
|
+
const effect = Effect.forEach(buffer, forward);
|
|
69
112
|
buffer = [];
|
|
70
113
|
return effect;
|
|
71
114
|
}
|
|
@@ -74,16 +117,27 @@ function IndexedBuffer(state, sink, onDone) {
|
|
|
74
117
|
return Effect.void;
|
|
75
118
|
}
|
|
76
119
|
};
|
|
77
|
-
const onEnd = Effect.
|
|
78
|
-
if (
|
|
79
|
-
return
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
120
|
+
const onEnd = Effect.suspend(() => {
|
|
121
|
+
if (!active)
|
|
122
|
+
return Effect.void;
|
|
123
|
+
return Effect.flatMap(Deferred.await(state.deferred), () => {
|
|
124
|
+
if (!active)
|
|
125
|
+
return Effect.void;
|
|
126
|
+
if (buffer.length === 0)
|
|
127
|
+
return onDone;
|
|
128
|
+
const effect = Effect.forEach(buffer, forward);
|
|
129
|
+
buffer = [];
|
|
130
|
+
return Effect.ensuring(effect, onDone);
|
|
131
|
+
});
|
|
83
132
|
});
|
|
84
133
|
return {
|
|
85
134
|
state,
|
|
86
135
|
onSuccess,
|
|
87
136
|
onEnd,
|
|
137
|
+
discard: () => {
|
|
138
|
+
active = false;
|
|
139
|
+
buffer = [];
|
|
140
|
+
Deferred.doneUnsafe(state.deferred, Exit.void);
|
|
141
|
+
},
|
|
88
142
|
};
|
|
89
143
|
}
|