@typed/fx 2.0.0-beta.4 → 2.0.0-beta.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +34 -20
- package/dist/Fx/Fx.d.ts +362 -10
- package/dist/Fx/Fx.d.ts.map +1 -1
- package/dist/Fx/Fx.js +32 -1
- package/dist/Fx/TypeId.d.ts +49 -3
- package/dist/Fx/TypeId.d.ts.map +1 -1
- package/dist/Fx/TypeId.js +39 -2
- package/dist/Fx/combinators/additive.d.ts +156 -5
- package/dist/Fx/combinators/additive.d.ts.map +1 -1
- package/dist/Fx/combinators/additive.js +156 -5
- package/dist/Fx/combinators/catch.d.ts +195 -22
- package/dist/Fx/combinators/catch.d.ts.map +1 -1
- package/dist/Fx/combinators/catch.js +186 -16
- package/dist/Fx/combinators/causes.d.ts +24 -1
- package/dist/Fx/combinators/causes.d.ts.map +1 -1
- package/dist/Fx/combinators/causes.js +24 -1
- package/dist/Fx/combinators/changesWithEffect.d.ts +20 -0
- package/dist/Fx/combinators/changesWithEffect.d.ts.map +1 -1
- package/dist/Fx/combinators/changesWithEffect.js +20 -0
- package/dist/Fx/combinators/compact.d.ts +17 -0
- package/dist/Fx/combinators/compact.d.ts.map +1 -1
- package/dist/Fx/combinators/compact.js +17 -0
- package/dist/Fx/combinators/concatMap.d.ts +86 -0
- package/dist/Fx/combinators/concatMap.d.ts.map +1 -0
- package/dist/Fx/combinators/concatMap.js +86 -0
- package/dist/Fx/combinators/continueWith.d.ts +109 -1
- package/dist/Fx/combinators/continueWith.d.ts.map +1 -1
- package/dist/Fx/combinators/continueWith.js +109 -1
- package/dist/Fx/combinators/debounce.d.ts +34 -0
- package/dist/Fx/combinators/debounce.d.ts.map +1 -0
- package/dist/Fx/combinators/debounce.js +35 -0
- package/dist/Fx/combinators/delay.d.ts +34 -0
- package/dist/Fx/combinators/delay.d.ts.map +1 -0
- package/dist/Fx/combinators/delay.js +31 -0
- package/dist/Fx/combinators/dropUntil.d.ts +42 -0
- package/dist/Fx/combinators/dropUntil.d.ts.map +1 -1
- package/dist/Fx/combinators/dropUntil.js +42 -0
- package/dist/Fx/combinators/during.d.ts +38 -0
- package/dist/Fx/combinators/during.d.ts.map +1 -0
- package/dist/Fx/combinators/during.js +85 -0
- package/dist/Fx/combinators/ensuring.d.ts +33 -3
- package/dist/Fx/combinators/ensuring.d.ts.map +1 -1
- package/dist/Fx/combinators/ensuring.js +33 -3
- package/dist/Fx/combinators/exhaustLatestMap.d.ts +40 -4
- package/dist/Fx/combinators/exhaustLatestMap.d.ts.map +1 -1
- package/dist/Fx/combinators/exhaustLatestMap.js +40 -4
- package/dist/Fx/combinators/exhaustLatestMapEffect.d.ts +39 -3
- package/dist/Fx/combinators/exhaustLatestMapEffect.d.ts.map +1 -1
- package/dist/Fx/combinators/exhaustLatestMapEffect.js +39 -3
- package/dist/Fx/combinators/exhaustMap.d.ts +37 -0
- package/dist/Fx/combinators/exhaustMap.d.ts.map +1 -1
- package/dist/Fx/combinators/exhaustMap.js +37 -0
- package/dist/Fx/combinators/exhaustMapEffect.d.ts +32 -0
- package/dist/Fx/combinators/exhaustMapEffect.d.ts.map +1 -1
- package/dist/Fx/combinators/exhaustMapEffect.js +32 -0
- package/dist/Fx/combinators/exit.d.ts +22 -1
- package/dist/Fx/combinators/exit.d.ts.map +1 -1
- package/dist/Fx/combinators/exit.js +22 -1
- package/dist/Fx/combinators/filter.d.ts +16 -0
- package/dist/Fx/combinators/filter.d.ts.map +1 -1
- package/dist/Fx/combinators/filter.js +16 -0
- package/dist/Fx/combinators/filterEffect.d.ts +21 -0
- package/dist/Fx/combinators/filterEffect.d.ts.map +1 -1
- package/dist/Fx/combinators/filterEffect.js +21 -0
- package/dist/Fx/combinators/filterMap.d.ts +19 -0
- package/dist/Fx/combinators/filterMap.d.ts.map +1 -1
- package/dist/Fx/combinators/filterMap.js +19 -0
- package/dist/Fx/combinators/filterMapEffect.d.ts +20 -0
- package/dist/Fx/combinators/filterMapEffect.d.ts.map +1 -1
- package/dist/Fx/combinators/filterMapEffect.js +20 -0
- package/dist/Fx/combinators/filterMapLoop.d.ts +19 -0
- package/dist/Fx/combinators/filterMapLoop.d.ts.map +1 -1
- package/dist/Fx/combinators/filterMapLoop.js +19 -0
- package/dist/Fx/combinators/filterMapLoopCause.d.ts +20 -0
- package/dist/Fx/combinators/filterMapLoopCause.d.ts.map +1 -1
- package/dist/Fx/combinators/filterMapLoopCause.js +20 -0
- package/dist/Fx/combinators/filterMapLoopCauseEffect.d.ts +20 -0
- package/dist/Fx/combinators/filterMapLoopCauseEffect.d.ts.map +1 -1
- package/dist/Fx/combinators/filterMapLoopCauseEffect.js +20 -0
- package/dist/Fx/combinators/filterMapLoopEffect.d.ts +20 -0
- package/dist/Fx/combinators/filterMapLoopEffect.d.ts.map +1 -1
- package/dist/Fx/combinators/filterMapLoopEffect.js +20 -0
- package/dist/Fx/combinators/flatMap.d.ts +48 -3
- package/dist/Fx/combinators/flatMap.d.ts.map +1 -1
- package/dist/Fx/combinators/flatMap.js +35 -2
- package/dist/Fx/combinators/flatMapConcurrently.d.ts +50 -3
- package/dist/Fx/combinators/flatMapConcurrently.d.ts.map +1 -1
- package/dist/Fx/combinators/flatMapConcurrently.js +47 -1
- package/dist/Fx/combinators/flatMapConcurrentlyEffect.d.ts +47 -3
- package/dist/Fx/combinators/flatMapConcurrentlyEffect.d.ts.map +1 -1
- package/dist/Fx/combinators/flatMapConcurrentlyEffect.js +39 -1
- package/dist/Fx/combinators/flatMapEffect.d.ts +44 -2
- package/dist/Fx/combinators/flatMapEffect.d.ts.map +1 -1
- package/dist/Fx/combinators/flatMapEffect.js +31 -1
- package/dist/Fx/combinators/flip.d.ts +33 -1
- package/dist/Fx/combinators/flip.d.ts.map +1 -1
- package/dist/Fx/combinators/flip.js +33 -1
- package/dist/Fx/combinators/gen.d.ts +28 -9
- package/dist/Fx/combinators/gen.d.ts.map +1 -1
- package/dist/Fx/combinators/gen.js +27 -3
- package/dist/Fx/combinators/genScoped.d.ts +32 -9
- package/dist/Fx/combinators/genScoped.d.ts.map +1 -1
- package/dist/Fx/combinators/genScoped.js +30 -2
- package/dist/Fx/combinators/grouped.d.ts +89 -0
- package/dist/Fx/combinators/grouped.d.ts.map +1 -0
- package/dist/Fx/combinators/grouped.js +146 -0
- package/dist/Fx/combinators/index.d.ts +35 -0
- package/dist/Fx/combinators/index.d.ts.map +1 -1
- package/dist/Fx/combinators/index.js +35 -0
- package/dist/Fx/combinators/keyed.d.ts +121 -7
- package/dist/Fx/combinators/keyed.d.ts.map +1 -1
- package/dist/Fx/combinators/keyed.js +64 -6
- package/dist/Fx/combinators/loop.d.ts +16 -0
- package/dist/Fx/combinators/loop.d.ts.map +1 -1
- package/dist/Fx/combinators/loop.js +16 -0
- package/dist/Fx/combinators/loopCause.d.ts +17 -0
- package/dist/Fx/combinators/loopCause.d.ts.map +1 -1
- package/dist/Fx/combinators/loopCause.js +17 -0
- package/dist/Fx/combinators/loopCauseEffect.d.ts +18 -0
- package/dist/Fx/combinators/loopCauseEffect.d.ts.map +1 -1
- package/dist/Fx/combinators/loopCauseEffect.js +18 -0
- package/dist/Fx/combinators/loopEffect.d.ts +23 -0
- package/dist/Fx/combinators/loopEffect.d.ts.map +1 -1
- package/dist/Fx/combinators/loopEffect.js +23 -0
- package/dist/Fx/combinators/map.d.ts +45 -0
- package/dist/Fx/combinators/map.d.ts.map +1 -1
- package/dist/Fx/combinators/map.js +42 -0
- package/dist/Fx/combinators/mapBoth.d.ts +19 -0
- package/dist/Fx/combinators/mapBoth.d.ts.map +1 -1
- package/dist/Fx/combinators/mapBoth.js +19 -0
- package/dist/Fx/combinators/mapEffect.d.ts +24 -0
- package/dist/Fx/combinators/mapEffect.d.ts.map +1 -1
- package/dist/Fx/combinators/mapEffect.js +24 -0
- package/dist/Fx/combinators/mapError.d.ts +20 -4
- package/dist/Fx/combinators/mapError.d.ts.map +1 -1
- package/dist/Fx/combinators/mapError.js +20 -4
- package/dist/Fx/combinators/mergeAll.d.ts +34 -0
- package/dist/Fx/combinators/mergeAll.d.ts.map +1 -1
- package/dist/Fx/combinators/mergeAll.js +34 -0
- package/dist/Fx/combinators/mergeOrdered.d.ts +35 -3
- package/dist/Fx/combinators/mergeOrdered.d.ts.map +1 -1
- package/dist/Fx/combinators/mergeOrdered.js +35 -3
- package/dist/Fx/combinators/onError.d.ts +33 -3
- package/dist/Fx/combinators/onError.d.ts.map +1 -1
- package/dist/Fx/combinators/onError.js +33 -3
- package/dist/Fx/combinators/onExit.d.ts +28 -2
- package/dist/Fx/combinators/onExit.d.ts.map +1 -1
- package/dist/Fx/combinators/onExit.js +28 -2
- package/dist/Fx/combinators/onInterrupt.d.ts +48 -3
- package/dist/Fx/combinators/onInterrupt.d.ts.map +1 -1
- package/dist/Fx/combinators/onInterrupt.js +48 -3
- package/dist/Fx/combinators/pairwise.d.ts +28 -0
- package/dist/Fx/combinators/pairwise.d.ts.map +1 -0
- package/dist/Fx/combinators/pairwise.js +31 -0
- package/dist/Fx/combinators/provide.d.ts +130 -9
- package/dist/Fx/combinators/provide.d.ts.map +1 -1
- package/dist/Fx/combinators/provide.js +130 -9
- package/dist/Fx/combinators/race.d.ts +92 -0
- package/dist/Fx/combinators/race.d.ts.map +1 -0
- package/dist/Fx/combinators/race.js +149 -0
- package/dist/Fx/combinators/repeat.d.ts +41 -0
- package/dist/Fx/combinators/repeat.d.ts.map +1 -0
- package/dist/Fx/combinators/repeat.js +57 -0
- package/dist/Fx/combinators/result.d.ts +22 -0
- package/dist/Fx/combinators/result.d.ts.map +1 -1
- package/dist/Fx/combinators/result.js +26 -12
- package/dist/Fx/combinators/retry.d.ts +53 -0
- package/dist/Fx/combinators/retry.d.ts.map +1 -0
- package/dist/Fx/combinators/retry.js +71 -0
- package/dist/Fx/combinators/sample.d.ts +31 -0
- package/dist/Fx/combinators/sample.d.ts.map +1 -0
- package/dist/Fx/combinators/sample.js +42 -0
- package/dist/Fx/combinators/scan.d.ts +39 -0
- package/dist/Fx/combinators/scan.d.ts.map +1 -1
- package/dist/Fx/combinators/scan.js +39 -0
- package/dist/Fx/combinators/since.d.ts +30 -0
- package/dist/Fx/combinators/since.d.ts.map +1 -0
- package/dist/Fx/combinators/since.js +39 -0
- package/dist/Fx/combinators/skip.d.ts +31 -0
- package/dist/Fx/combinators/skip.d.ts.map +1 -1
- package/dist/Fx/combinators/skip.js +31 -0
- package/dist/Fx/combinators/skipRepeats.d.ts +16 -0
- package/dist/Fx/combinators/skipRepeats.d.ts.map +1 -1
- package/dist/Fx/combinators/skipRepeats.js +16 -0
- package/dist/Fx/combinators/skipRepeatsWith.d.ts +17 -0
- package/dist/Fx/combinators/skipRepeatsWith.d.ts.map +1 -1
- package/dist/Fx/combinators/skipRepeatsWith.js +17 -0
- package/dist/Fx/combinators/skipWhile.d.ts +68 -0
- package/dist/Fx/combinators/skipWhile.d.ts.map +1 -1
- package/dist/Fx/combinators/skipWhile.js +68 -0
- package/dist/Fx/combinators/slice.d.ts +82 -0
- package/dist/Fx/combinators/slice.d.ts.map +1 -1
- package/dist/Fx/combinators/slice.js +33 -0
- package/dist/Fx/combinators/switchMap.d.ts +38 -0
- package/dist/Fx/combinators/switchMap.d.ts.map +1 -1
- package/dist/Fx/combinators/switchMap.js +38 -0
- package/dist/Fx/combinators/switchMapEffect.d.ts +37 -0
- package/dist/Fx/combinators/switchMapEffect.d.ts.map +1 -1
- package/dist/Fx/combinators/switchMapEffect.js +37 -0
- package/dist/Fx/combinators/take.d.ts +32 -0
- package/dist/Fx/combinators/take.d.ts.map +1 -1
- package/dist/Fx/combinators/take.js +32 -0
- package/dist/Fx/combinators/takeUntil.d.ts +46 -0
- package/dist/Fx/combinators/takeUntil.d.ts.map +1 -1
- package/dist/Fx/combinators/takeUntil.js +46 -0
- package/dist/Fx/combinators/takeWhile.d.ts +31 -0
- package/dist/Fx/combinators/takeWhile.d.ts.map +1 -1
- package/dist/Fx/combinators/takeWhile.js +31 -0
- package/dist/Fx/combinators/tapEffect.d.ts +16 -0
- package/dist/Fx/combinators/tapEffect.d.ts.map +1 -1
- package/dist/Fx/combinators/tapEffect.js +16 -0
- package/dist/Fx/combinators/throttle.d.ts +79 -0
- package/dist/Fx/combinators/throttle.d.ts.map +1 -0
- package/dist/Fx/combinators/throttle.js +99 -0
- package/dist/Fx/combinators/timeout.d.ts +76 -0
- package/dist/Fx/combinators/timeout.d.ts.map +1 -0
- package/dist/Fx/combinators/timeout.js +110 -0
- package/dist/Fx/combinators/tuple.d.ts +30 -0
- package/dist/Fx/combinators/tuple.d.ts.map +1 -1
- package/dist/Fx/combinators/tuple.js +34 -3
- package/dist/Fx/combinators/until.d.ts +27 -0
- package/dist/Fx/combinators/until.d.ts.map +1 -0
- package/dist/Fx/combinators/until.js +56 -0
- package/dist/Fx/combinators/unwrap.d.ts +29 -0
- package/dist/Fx/combinators/unwrap.d.ts.map +1 -1
- package/dist/Fx/combinators/unwrap.js +29 -0
- package/dist/Fx/combinators/unwrapScoped.d.ts +33 -0
- package/dist/Fx/combinators/unwrapScoped.d.ts.map +1 -1
- package/dist/Fx/combinators/unwrapScoped.js +33 -0
- package/dist/Fx/combinators/when.d.ts +35 -0
- package/dist/Fx/combinators/when.d.ts.map +1 -1
- package/dist/Fx/combinators/when.js +36 -1
- package/dist/Fx/combinators/withLatestFrom.d.ts +58 -0
- package/dist/Fx/combinators/withLatestFrom.d.ts.map +1 -0
- package/dist/Fx/combinators/withLatestFrom.js +68 -0
- package/dist/Fx/combinators/withSpan.d.ts +35 -1
- package/dist/Fx/combinators/withSpan.d.ts.map +1 -1
- package/dist/Fx/combinators/withSpan.js +34 -3
- package/dist/Fx/combinators/zip.d.ts +60 -0
- package/dist/Fx/combinators/zip.d.ts.map +1 -1
- package/dist/Fx/combinators/zip.js +60 -0
- package/dist/Fx/constructors/at.d.ts +20 -0
- package/dist/Fx/constructors/at.d.ts.map +1 -1
- package/dist/Fx/constructors/at.js +20 -0
- package/dist/Fx/constructors/die.d.ts +21 -0
- package/dist/Fx/constructors/die.d.ts.map +1 -1
- package/dist/Fx/constructors/die.js +21 -0
- package/dist/Fx/constructors/empty.d.ts +18 -0
- package/dist/Fx/constructors/empty.d.ts.map +1 -1
- package/dist/Fx/constructors/empty.js +18 -0
- package/dist/Fx/constructors/fail.d.ts +21 -0
- package/dist/Fx/constructors/fail.d.ts.map +1 -1
- package/dist/Fx/constructors/fail.js +21 -0
- package/dist/Fx/constructors/failCause.d.ts +22 -0
- package/dist/Fx/constructors/failCause.d.ts.map +1 -1
- package/dist/Fx/constructors/failCause.js +22 -0
- package/dist/Fx/constructors/fn.d.ts +113 -13
- package/dist/Fx/constructors/fn.d.ts.map +1 -1
- package/dist/Fx/constructors/fn.js +36 -0
- package/dist/Fx/constructors/fromEffect.d.ts +43 -1
- package/dist/Fx/constructors/fromEffect.d.ts.map +1 -1
- package/dist/Fx/constructors/fromEffect.js +43 -1
- package/dist/Fx/constructors/fromFailures.d.ts +24 -0
- package/dist/Fx/constructors/fromFailures.d.ts.map +1 -1
- package/dist/Fx/constructors/fromFailures.js +24 -0
- package/dist/Fx/constructors/fromIterable.d.ts +22 -0
- package/dist/Fx/constructors/fromIterable.d.ts.map +1 -1
- package/dist/Fx/constructors/fromIterable.js +22 -0
- package/dist/Fx/constructors/fromSchedule.d.ts +23 -0
- package/dist/Fx/constructors/fromSchedule.d.ts.map +1 -1
- package/dist/Fx/constructors/fromSchedule.js +25 -2
- package/dist/Fx/constructors/index.d.ts +2 -1
- package/dist/Fx/constructors/index.d.ts.map +1 -1
- package/dist/Fx/constructors/index.js +2 -1
- package/dist/Fx/constructors/interrupt.d.ts +21 -1
- package/dist/Fx/constructors/interrupt.d.ts.map +1 -1
- package/dist/Fx/constructors/interrupt.js +21 -1
- package/dist/Fx/constructors/make.d.ts +146 -1
- package/dist/Fx/constructors/make.d.ts.map +1 -1
- package/dist/Fx/constructors/make.js +54 -3
- package/dist/Fx/constructors/periodic.d.ts +29 -0
- package/dist/Fx/constructors/periodic.d.ts.map +1 -1
- package/dist/Fx/constructors/periodic.js +29 -0
- package/dist/Fx/constructors/succeed.d.ts +75 -3
- package/dist/Fx/constructors/succeed.d.ts.map +1 -1
- package/dist/Fx/constructors/succeed.js +75 -3
- package/dist/Fx/constructors/suspend.d.ts +28 -0
- package/dist/Fx/constructors/suspend.d.ts.map +1 -1
- package/dist/Fx/constructors/suspend.js +28 -0
- package/dist/Fx/constructors/sync.d.ts +32 -0
- package/dist/Fx/constructors/sync.d.ts.map +1 -0
- package/dist/Fx/constructors/sync.js +32 -0
- package/dist/Fx/internal/DeferredRef.d.ts +259 -7
- package/dist/Fx/internal/DeferredRef.d.ts.map +1 -1
- package/dist/Fx/internal/DeferredRef.js +260 -9
- package/dist/Fx/internal/UnionToTuple.d.ts +22 -0
- package/dist/Fx/internal/UnionToTuple.d.ts.map +1 -1
- package/dist/Fx/internal/diff.d.ts +586 -0
- package/dist/Fx/internal/diff.d.ts.map +1 -1
- package/dist/Fx/internal/diff.js +120 -9
- package/dist/Fx/internal/effectableEvaluateKey.d.ts +30 -0
- package/dist/Fx/internal/effectableEvaluateKey.d.ts.map +1 -0
- package/dist/Fx/internal/effectableEvaluateKey.js +29 -0
- package/dist/Fx/internal/effectableWithOverride.d.ts +55 -0
- package/dist/Fx/internal/effectableWithOverride.d.ts.map +1 -0
- package/dist/Fx/internal/effectableWithOverride.js +46 -0
- package/dist/Fx/internal/equivalence.d.ts +29 -0
- package/dist/Fx/internal/equivalence.d.ts.map +1 -1
- package/dist/Fx/internal/equivalence.js +29 -0
- package/dist/Fx/internal/multicast.d.ts +145 -2
- package/dist/Fx/internal/multicast.d.ts.map +1 -1
- package/dist/Fx/internal/multicast.js +146 -4
- package/dist/Fx/internal/ring-buffer.d.ts +149 -0
- package/dist/Fx/internal/ring-buffer.d.ts.map +1 -1
- package/dist/Fx/internal/ring-buffer.js +155 -0
- package/dist/Fx/internal/scope.d.ts +184 -0
- package/dist/Fx/internal/scope.d.ts.map +1 -1
- package/dist/Fx/internal/scope.js +150 -0
- package/dist/Fx/internal/yieldable.d.ts +117 -2
- package/dist/Fx/internal/yieldable.d.ts.map +1 -1
- package/dist/Fx/internal/yieldable.js +86 -3
- package/dist/Fx/run/collect.d.ts +89 -0
- package/dist/Fx/run/collect.d.ts.map +1 -1
- package/dist/Fx/run/collect.js +90 -1
- package/dist/Fx/run/first.d.ts +22 -0
- package/dist/Fx/run/first.d.ts.map +1 -1
- package/dist/Fx/run/first.js +22 -0
- package/dist/Fx/run/fork.d.ts +50 -0
- package/dist/Fx/run/fork.d.ts.map +1 -1
- package/dist/Fx/run/fork.js +50 -0
- package/dist/Fx/run/observe.d.ts +106 -0
- package/dist/Fx/run/observe.d.ts.map +1 -1
- package/dist/Fx/run/observe.js +106 -0
- package/dist/Fx/run/runPromise.d.ts +43 -0
- package/dist/Fx/run/runPromise.d.ts.map +1 -1
- package/dist/Fx/run/runPromise.js +43 -0
- package/dist/Fx/stream.d.ts +92 -0
- package/dist/Fx/stream.d.ts.map +1 -1
- package/dist/Fx/stream.js +60 -1
- package/dist/Push/Push.d.ts +1216 -91
- package/dist/Push/Push.d.ts.map +1 -1
- package/dist/Push/Push.js +1012 -83
- package/dist/RefArray.d.ts +2 -0
- package/dist/RefArray.d.ts.map +1 -0
- package/dist/RefArray.js +1 -0
- package/dist/RefBigDecimal.d.ts +2 -0
- package/dist/RefBigDecimal.d.ts.map +1 -0
- package/dist/RefBigDecimal.js +1 -0
- package/dist/RefBigInt.d.ts +2 -0
- package/dist/RefBigInt.d.ts.map +1 -0
- package/dist/RefBigInt.js +1 -0
- package/dist/RefBoolean.d.ts +2 -0
- package/dist/RefBoolean.d.ts.map +1 -0
- package/dist/RefBoolean.js +1 -0
- package/dist/RefCause.d.ts +2 -0
- package/dist/RefCause.d.ts.map +1 -0
- package/dist/RefCause.js +1 -0
- package/dist/RefChunk.d.ts +2 -0
- package/dist/RefChunk.d.ts.map +1 -0
- package/dist/RefChunk.js +1 -0
- package/dist/RefDateTime.d.ts +2 -0
- package/dist/RefDateTime.d.ts.map +1 -0
- package/dist/RefDateTime.js +1 -0
- package/dist/RefDuration.d.ts +2 -0
- package/dist/RefDuration.d.ts.map +1 -0
- package/dist/RefDuration.js +1 -0
- package/dist/RefGraph.d.ts +2 -0
- package/dist/RefGraph.d.ts.map +1 -0
- package/dist/RefGraph.js +1 -0
- package/dist/RefHashMap.d.ts +2 -0
- package/dist/RefHashMap.d.ts.map +1 -0
- package/dist/RefHashMap.js +1 -0
- package/dist/RefHashRing.d.ts +2 -0
- package/dist/RefHashRing.d.ts.map +1 -0
- package/dist/RefHashRing.js +1 -0
- package/dist/RefHashSet.d.ts +2 -0
- package/dist/RefHashSet.d.ts.map +1 -0
- package/dist/RefHashSet.js +1 -0
- package/dist/RefIterable.d.ts +2 -0
- package/dist/RefIterable.d.ts.map +1 -0
- package/dist/RefIterable.js +1 -0
- package/dist/RefOption.d.ts +2 -0
- package/dist/RefOption.d.ts.map +1 -0
- package/dist/RefOption.js +1 -0
- package/dist/RefRecord.d.ts +2 -0
- package/dist/RefRecord.d.ts.map +1 -0
- package/dist/RefRecord.js +1 -0
- package/dist/RefResult.d.ts +2 -0
- package/dist/RefResult.d.ts.map +1 -0
- package/dist/RefResult.js +1 -0
- package/dist/RefString.d.ts +2 -0
- package/dist/RefString.d.ts.map +1 -0
- package/dist/RefString.js +1 -0
- package/dist/RefStruct.d.ts +2 -0
- package/dist/RefStruct.d.ts.map +1 -0
- package/dist/RefStruct.js +1 -0
- package/dist/RefSubject/Hydration.d.ts +504 -0
- package/dist/RefSubject/Hydration.d.ts.map +1 -0
- package/dist/RefSubject/Hydration.js +300 -0
- package/dist/RefSubject/RefArray.d.ts +351 -4
- package/dist/RefSubject/RefArray.d.ts.map +1 -1
- package/dist/RefSubject/RefArray.js +339 -3
- package/dist/RefSubject/RefBigDecimal.d.ts +221 -1
- package/dist/RefSubject/RefBigDecimal.d.ts.map +1 -1
- package/dist/RefSubject/RefBigDecimal.js +210 -1
- package/dist/RefSubject/RefBigInt.d.ts +166 -1
- package/dist/RefSubject/RefBigInt.d.ts.map +1 -1
- package/dist/RefSubject/RefBigInt.js +155 -1
- package/dist/RefSubject/RefBoolean.d.ts +166 -1
- package/dist/RefSubject/RefBoolean.d.ts.map +1 -1
- package/dist/RefSubject/RefBoolean.js +155 -1
- package/dist/RefSubject/RefCause.d.ts +122 -1
- package/dist/RefSubject/RefCause.d.ts.map +1 -1
- package/dist/RefSubject/RefCause.js +111 -1
- package/dist/RefSubject/RefChunk.d.ts +406 -1
- package/dist/RefSubject/RefChunk.d.ts.map +1 -1
- package/dist/RefSubject/RefChunk.js +394 -0
- package/dist/RefSubject/RefDateTime.d.ts +122 -1
- package/dist/RefSubject/RefDateTime.d.ts.map +1 -1
- package/dist/RefSubject/RefDateTime.js +111 -1
- package/dist/RefSubject/RefDuration.d.ts +155 -1
- package/dist/RefSubject/RefDuration.d.ts.map +1 -1
- package/dist/RefSubject/RefDuration.js +144 -1
- package/dist/RefSubject/RefGraph.d.ts +320 -6
- package/dist/RefSubject/RefGraph.d.ts.map +1 -1
- package/dist/RefSubject/RefGraph.js +303 -0
- package/dist/RefSubject/RefHashMap.d.ts +296 -1
- package/dist/RefSubject/RefHashMap.d.ts.map +1 -1
- package/dist/RefSubject/RefHashMap.js +284 -0
- package/dist/RefSubject/RefHashRing.d.ts +146 -2
- package/dist/RefSubject/RefHashRing.d.ts.map +1 -1
- package/dist/RefSubject/RefHashRing.js +133 -0
- package/dist/RefSubject/RefHashSet.d.ts +230 -1
- package/dist/RefSubject/RefHashSet.d.ts.map +1 -1
- package/dist/RefSubject/RefHashSet.js +218 -0
- package/dist/RefSubject/RefIterable.d.ts +327 -1
- package/dist/RefSubject/RefIterable.d.ts.map +1 -1
- package/dist/RefSubject/RefIterable.js +315 -0
- package/dist/RefSubject/RefOption.d.ts +144 -1
- package/dist/RefSubject/RefOption.d.ts.map +1 -1
- package/dist/RefSubject/RefOption.js +133 -1
- package/dist/RefSubject/RefRecord.d.ts +339 -1
- package/dist/RefSubject/RefRecord.d.ts.map +1 -1
- package/dist/RefSubject/RefRecord.js +327 -0
- package/dist/RefSubject/RefResult.d.ts +155 -23
- package/dist/RefSubject/RefResult.d.ts.map +1 -1
- package/dist/RefSubject/RefResult.js +122 -1
- package/dist/RefSubject/RefString.d.ts +188 -1
- package/dist/RefSubject/RefString.d.ts.map +1 -1
- package/dist/RefSubject/RefString.js +177 -1
- package/dist/RefSubject/RefStruct.d.ts +156 -1
- package/dist/RefSubject/RefStruct.d.ts.map +1 -1
- package/dist/RefSubject/RefStruct.js +145 -1
- package/dist/RefSubject/RefSubject.d.ts +1166 -13
- package/dist/RefSubject/RefSubject.d.ts.map +1 -1
- package/dist/RefSubject/RefSubject.js +843 -51
- package/dist/RefSubject/RefTrie.d.ts +290 -4
- package/dist/RefSubject/RefTrie.d.ts.map +1 -1
- package/dist/RefSubject/RefTrie.js +278 -3
- package/dist/RefSubject/RefTuple.d.ts +117 -1
- package/dist/RefSubject/RefTuple.d.ts.map +1 -1
- package/dist/RefSubject/RefTuple.js +106 -1
- package/dist/RefSubject/index.d.ts +1 -0
- package/dist/RefSubject/index.d.ts.map +1 -1
- package/dist/RefSubject/index.js +1 -0
- package/dist/RefSubject.d.ts +2 -1
- package/dist/RefSubject.d.ts.map +1 -1
- package/dist/RefSubject.js +2 -1
- package/dist/RefTrie.d.ts +2 -0
- package/dist/RefTrie.d.ts.map +1 -0
- package/dist/RefTrie.js +1 -0
- package/dist/RefTuple.d.ts +2 -0
- package/dist/RefTuple.d.ts.map +1 -0
- package/dist/RefTuple.js +1 -0
- package/dist/Sink/Sink.d.ts +381 -10
- package/dist/Sink/Sink.d.ts.map +1 -1
- package/dist/Sink/Sink.js +49 -2
- package/dist/Sink/combinators.d.ts +731 -2
- package/dist/Sink/combinators.d.ts.map +1 -1
- package/dist/Sink/combinators.js +706 -4
- package/dist/Subject/Subject.d.ts +1013 -19
- package/dist/Subject/Subject.d.ts.map +1 -1
- package/dist/Subject/Subject.js +901 -36
- package/dist/Versioned/Versioned.d.ts +424 -7
- package/dist/Versioned/Versioned.d.ts.map +1 -1
- package/dist/Versioned/Versioned.js +238 -12
- package/dist/index.d.ts +22 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +22 -3
- package/package.json +123 -14
- package/dist/Fx/constructors/fromYieldable.d.ts +0 -12
- package/dist/Fx/constructors/fromYieldable.d.ts.map +0 -1
- package/dist/Fx/constructors/fromYieldable.js +0 -12
- package/src/Fx/Fx.ts +0 -164
- package/src/Fx/TypeId.ts +0 -25
- package/src/Fx/combinators/additive.ts +0 -142
- package/src/Fx/combinators/catch.ts +0 -416
- package/src/Fx/combinators/causes.ts +0 -23
- package/src/Fx/combinators/changesWithEffect.ts +0 -66
- package/src/Fx/combinators/compact.ts +0 -15
- package/src/Fx/combinators/continueWith.ts +0 -78
- package/src/Fx/combinators/dropUntil.ts +0 -47
- package/src/Fx/combinators/ensuring.ts +0 -23
- package/src/Fx/combinators/exhaustLatestMap.ts +0 -74
- package/src/Fx/combinators/exhaustLatestMapEffect.ts +0 -25
- package/src/Fx/combinators/exhaustMap.ts +0 -36
- package/src/Fx/combinators/exhaustMapEffect.ts +0 -23
- package/src/Fx/combinators/exit.ts +0 -15
- package/src/Fx/combinators/filter.ts +0 -22
- package/src/Fx/combinators/filterEffect.ts +0 -31
- package/src/Fx/combinators/filterMap.ts +0 -23
- package/src/Fx/combinators/filterMapEffect.ts +0 -32
- package/src/Fx/combinators/filterMapLoop.ts +0 -35
- package/src/Fx/combinators/filterMapLoopCause.ts +0 -36
- package/src/Fx/combinators/filterMapLoopCauseEffect.ts +0 -46
- package/src/Fx/combinators/filterMapLoopEffect.ts +0 -36
- package/src/Fx/combinators/flatMap.ts +0 -51
- package/src/Fx/combinators/flatMapConcurrently.ts +0 -39
- package/src/Fx/combinators/flatMapConcurrentlyEffect.ts +0 -26
- package/src/Fx/combinators/flatMapEffect.ts +0 -42
- package/src/Fx/combinators/flip.ts +0 -14
- package/src/Fx/combinators/gen.ts +0 -24
- package/src/Fx/combinators/genScoped.ts +0 -24
- package/src/Fx/combinators/index.ts +0 -61
- package/src/Fx/combinators/keyed.ts +0 -369
- package/src/Fx/combinators/loop.ts +0 -27
- package/src/Fx/combinators/loopCause.ts +0 -34
- package/src/Fx/combinators/loopCauseEffect.ts +0 -36
- package/src/Fx/combinators/loopEffect.ts +0 -34
- package/src/Fx/combinators/map.ts +0 -22
- package/src/Fx/combinators/mapBoth.ts +0 -40
- package/src/Fx/combinators/mapEffect.ts +0 -32
- package/src/Fx/combinators/mapError.ts +0 -28
- package/src/Fx/combinators/mergeAll.ts +0 -22
- package/src/Fx/combinators/mergeOrdered.ts +0 -123
- package/src/Fx/combinators/onError.ts +0 -40
- package/src/Fx/combinators/onExit.ts +0 -82
- package/src/Fx/combinators/onInterrupt.ts +0 -87
- package/src/Fx/combinators/provide.ts +0 -124
- package/src/Fx/combinators/result.ts +0 -39
- package/src/Fx/combinators/scan.ts +0 -82
- package/src/Fx/combinators/skip.ts +0 -41
- package/src/Fx/combinators/skipRepeats.ts +0 -15
- package/src/Fx/combinators/skipRepeatsWith.ts +0 -40
- package/src/Fx/combinators/skipWhile.ts +0 -100
- package/src/Fx/combinators/slice.ts +0 -55
- package/src/Fx/combinators/switchMap.ts +0 -55
- package/src/Fx/combinators/switchMapEffect.ts +0 -25
- package/src/Fx/combinators/take.ts +0 -38
- package/src/Fx/combinators/takeUntil.ts +0 -88
- package/src/Fx/combinators/takeWhile.ts +0 -47
- package/src/Fx/combinators/tapEffect.ts +0 -39
- package/src/Fx/combinators/tuple.ts +0 -79
- package/src/Fx/combinators/unwrap.ts +0 -21
- package/src/Fx/combinators/unwrapScoped.ts +0 -26
- package/src/Fx/combinators/when.ts +0 -64
- package/src/Fx/combinators/withSpan.ts +0 -24
- package/src/Fx/combinators/zip.ts +0 -175
- package/src/Fx/constructors/at.ts +0 -23
- package/src/Fx/constructors/die.ts +0 -17
- package/src/Fx/constructors/empty.ts +0 -10
- package/src/Fx/constructors/fail.ts +0 -14
- package/src/Fx/constructors/failCause.ts +0 -14
- package/src/Fx/constructors/fn.ts +0 -245
- package/src/Fx/constructors/fromEffect.ts +0 -24
- package/src/Fx/constructors/fromFailures.ts +0 -19
- package/src/Fx/constructors/fromIterable.ts +0 -15
- package/src/Fx/constructors/fromSchedule.ts +0 -18
- package/src/Fx/constructors/fromYieldable.ts +0 -17
- package/src/Fx/constructors/index.ts +0 -15
- package/src/Fx/constructors/interrupt.ts +0 -13
- package/src/Fx/constructors/make.ts +0 -103
- package/src/Fx/constructors/periodic.ts +0 -15
- package/src/Fx/constructors/succeed.ts +0 -37
- package/src/Fx/constructors/suspend.ts +0 -6
- package/src/Fx/index.ts +0 -6
- package/src/Fx/internal/DeferredRef.ts +0 -87
- package/src/Fx/internal/UnionToTuple.ts +0 -12
- package/src/Fx/internal/diff.ts +0 -191
- package/src/Fx/internal/equivalence.ts +0 -12
- package/src/Fx/internal/multicast.ts +0 -51
- package/src/Fx/internal/ring-buffer.ts +0 -60
- package/src/Fx/internal/scope.ts +0 -58
- package/src/Fx/internal/yieldable.ts +0 -31
- package/src/Fx/run/collect.ts +0 -79
- package/src/Fx/run/first.ts +0 -20
- package/src/Fx/run/fork.ts +0 -40
- package/src/Fx/run/index.ts +0 -5
- package/src/Fx/run/observe.ts +0 -114
- package/src/Fx/run/runPromise.ts +0 -32
- package/src/Fx/stream.ts +0 -42
- package/src/Fx.additive-combinators.test.ts +0 -126
- package/src/Fx.catch-additive.test.ts +0 -206
- package/src/Fx.catch.test.ts +0 -60
- package/src/Fx.dropUntil.test.ts +0 -61
- package/src/Fx.fn.test.ts +0 -51
- package/src/Fx.lifecycle.test.ts +0 -79
- package/src/Fx.mapError-mapBoth.test.ts +0 -101
- package/src/Fx.provide-combinators.test.ts +0 -94
- package/src/Fx.result-changesWithEffect.test.ts +0 -112
- package/src/Fx.scan.test.ts +0 -73
- package/src/Fx.takeWhile-skipWhile.test.ts +0 -84
- package/src/Fx.test.ts +0 -71
- package/src/Fx.ts +0 -1
- package/src/Fx.zip-merge-additive.test.ts +0 -171
- package/src/Fx.zip.test.ts +0 -133
- package/src/Push/Push.ts +0 -1093
- package/src/Push/index.ts +0 -1
- package/src/Push.additive.test.ts +0 -256
- package/src/Push.test.ts +0 -26
- package/src/Push.ts +0 -1
- package/src/RefSubject/RefArray.ts +0 -516
- package/src/RefSubject/RefBigDecimal.test.ts +0 -56
- package/src/RefSubject/RefBigDecimal.ts +0 -295
- package/src/RefSubject/RefBigInt.test.ts +0 -56
- package/src/RefSubject/RefBigInt.ts +0 -189
- package/src/RefSubject/RefBoolean.test.ts +0 -57
- package/src/RefSubject/RefBoolean.ts +0 -185
- package/src/RefSubject/RefCause.test.ts +0 -53
- package/src/RefSubject/RefCause.ts +0 -146
- package/src/RefSubject/RefChunk.ts +0 -516
- package/src/RefSubject/RefDateTime.test.ts +0 -43
- package/src/RefSubject/RefDateTime.ts +0 -261
- package/src/RefSubject/RefDuration.test.ts +0 -49
- package/src/RefSubject/RefDuration.ts +0 -188
- package/src/RefSubject/RefGraph.ts +0 -649
- package/src/RefSubject/RefHashMap.ts +0 -474
- package/src/RefSubject/RefHashRing.ts +0 -262
- package/src/RefSubject/RefHashSet.ts +0 -308
- package/src/RefSubject/RefIterable.ts +0 -454
- package/src/RefSubject/RefOption.test.ts +0 -67
- package/src/RefSubject/RefOption.ts +0 -193
- package/src/RefSubject/RefRecord.ts +0 -621
- package/src/RefSubject/RefResult.test.ts +0 -63
- package/src/RefSubject/RefResult.ts +0 -209
- package/src/RefSubject/RefString.test.ts +0 -61
- package/src/RefSubject/RefString.ts +0 -256
- package/src/RefSubject/RefStruct.test.ts +0 -60
- package/src/RefSubject/RefStruct.ts +0 -253
- package/src/RefSubject/RefSubject.ts +0 -2642
- package/src/RefSubject/RefTrie.ts +0 -365
- package/src/RefSubject/RefTuple.test.ts +0 -60
- package/src/RefSubject/RefTuple.ts +0 -231
- package/src/RefSubject/index.ts +0 -21
- package/src/RefSubject.additive-parity.test.ts +0 -101
- package/src/RefSubject.test.ts +0 -65
- package/src/RefSubject.ts +0 -1
- package/src/Sink/Sink.ts +0 -159
- package/src/Sink/combinators.ts +0 -1115
- package/src/Sink/index.ts +0 -2
- package/src/Sink.combinators.test.ts +0 -88
- package/src/Sink.reduce-collect-head-last.test.ts +0 -107
- package/src/Sink.ts +0 -1
- package/src/Subject/Subject.ts +0 -440
- package/src/Subject/index.ts +0 -1
- package/src/Subject.test.ts +0 -47
- package/src/Subject.ts +0 -1
- package/src/Versioned/Versioned.ts +0 -595
- package/src/Versioned/index.ts +0 -1
- package/src/Versioned.filterMap.test.ts +0 -91
- package/src/Versioned.test.ts +0 -23
- package/src/Versioned.ts +0 -1
- package/src/index.ts +0 -7
package/dist/Fx/TypeId.d.ts
CHANGED
|
@@ -1,18 +1,64 @@
|
|
|
1
1
|
import type { Fx } from "./Fx.js";
|
|
2
2
|
/**
|
|
3
|
-
*
|
|
3
|
+
* Runtime symbol carried by every `Fx` implementation.
|
|
4
|
+
*
|
|
5
|
+
* @remarks
|
|
6
|
+
* ## Why
|
|
7
|
+
*
|
|
8
|
+
* A global symbol lets independent packages recognize an `Fx` structurally without
|
|
9
|
+
* invoking it or relying on a concrete implementation class.
|
|
10
|
+
*
|
|
11
|
+
* ## Ownership and lifetime
|
|
12
|
+
*
|
|
13
|
+
* Reading or comparing the symbol starts no work and acquires no resources.
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* ```ts
|
|
17
|
+
* import { FxTypeId, succeed } from "@typed/fx/Fx"
|
|
18
|
+
*
|
|
19
|
+
* const carriesFxProtocol = FxTypeId in succeed("ready")
|
|
20
|
+
* ```
|
|
21
|
+
*
|
|
4
22
|
* @since 1.0.0
|
|
5
23
|
* @category symbol
|
|
6
24
|
*/
|
|
7
25
|
export declare const FxTypeId: unique symbol;
|
|
8
26
|
/**
|
|
9
|
-
*
|
|
27
|
+
* Type of the `FxTypeId` protocol symbol.
|
|
28
|
+
*
|
|
29
|
+
* @remarks
|
|
30
|
+
* ## Why
|
|
31
|
+
*
|
|
32
|
+
* Implementations can declare the exact computed property required by `Fx`.
|
|
33
|
+
*
|
|
34
|
+
* ## Ownership and lifetime
|
|
35
|
+
*
|
|
36
|
+
* This alias performs no runtime work.
|
|
10
37
|
* @since 1.0.0
|
|
11
38
|
* @category symbol
|
|
12
39
|
*/
|
|
13
40
|
export type FxTypeId = typeof FxTypeId;
|
|
14
41
|
/**
|
|
15
|
-
* Checks
|
|
42
|
+
* Checks whether a value carries the `FxTypeId` protocol property.
|
|
43
|
+
*
|
|
44
|
+
* @remarks
|
|
45
|
+
* ## Why
|
|
46
|
+
*
|
|
47
|
+
* Interoperability code can distinguish an already constructed `Fx` from effects,
|
|
48
|
+
* streams, iterables, and arbitrary values before choosing an explicit adapter.
|
|
49
|
+
*
|
|
50
|
+
* ## Ownership and lifetime
|
|
51
|
+
*
|
|
52
|
+
* The guard performs one property check. It does not subscribe to or run the value.
|
|
53
|
+
*
|
|
54
|
+
* @example
|
|
55
|
+
* ```ts
|
|
56
|
+
* import { isFx, succeed } from "@typed/fx/Fx"
|
|
57
|
+
*
|
|
58
|
+
* const candidate: unknown = succeed(42)
|
|
59
|
+
* const value = isFx(candidate) ? candidate : succeed(candidate)
|
|
60
|
+
* ```
|
|
61
|
+
*
|
|
16
62
|
* @since 1.0.0
|
|
17
63
|
* @category guards
|
|
18
64
|
*/
|
package/dist/Fx/TypeId.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TypeId.d.ts","sourceRoot":"","sources":["../../src/Fx/TypeId.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC;AAElC
|
|
1
|
+
{"version":3,"file":"TypeId.d.ts","sourceRoot":"","sources":["../../src/Fx/TypeId.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC;AAElC;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,eAAO,MAAM,QAAQ,eAA6B,CAAC;AAEnD;;;;;;;;;;;;;GAaG;AACH,MAAM,MAAM,QAAQ,GAAG,OAAO,QAAQ,CAAC;AAEvC;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,IAAI,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAEvD"}
|
package/dist/Fx/TypeId.js
CHANGED
|
@@ -1,12 +1,49 @@
|
|
|
1
1
|
import { hasProperty } from "effect/Predicate";
|
|
2
2
|
/**
|
|
3
|
-
*
|
|
3
|
+
* Runtime symbol carried by every `Fx` implementation.
|
|
4
|
+
*
|
|
5
|
+
* @remarks
|
|
6
|
+
* ## Why
|
|
7
|
+
*
|
|
8
|
+
* A global symbol lets independent packages recognize an `Fx` structurally without
|
|
9
|
+
* invoking it or relying on a concrete implementation class.
|
|
10
|
+
*
|
|
11
|
+
* ## Ownership and lifetime
|
|
12
|
+
*
|
|
13
|
+
* Reading or comparing the symbol starts no work and acquires no resources.
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* ```ts
|
|
17
|
+
* import { FxTypeId, succeed } from "@typed/fx/Fx"
|
|
18
|
+
*
|
|
19
|
+
* const carriesFxProtocol = FxTypeId in succeed("ready")
|
|
20
|
+
* ```
|
|
21
|
+
*
|
|
4
22
|
* @since 1.0.0
|
|
5
23
|
* @category symbol
|
|
6
24
|
*/
|
|
7
25
|
export const FxTypeId = Symbol.for("@typed/fx/Fx");
|
|
8
26
|
/**
|
|
9
|
-
* Checks
|
|
27
|
+
* Checks whether a value carries the `FxTypeId` protocol property.
|
|
28
|
+
*
|
|
29
|
+
* @remarks
|
|
30
|
+
* ## Why
|
|
31
|
+
*
|
|
32
|
+
* Interoperability code can distinguish an already constructed `Fx` from effects,
|
|
33
|
+
* streams, iterables, and arbitrary values before choosing an explicit adapter.
|
|
34
|
+
*
|
|
35
|
+
* ## Ownership and lifetime
|
|
36
|
+
*
|
|
37
|
+
* The guard performs one property check. It does not subscribe to or run the value.
|
|
38
|
+
*
|
|
39
|
+
* @example
|
|
40
|
+
* ```ts
|
|
41
|
+
* import { isFx, succeed } from "@typed/fx/Fx"
|
|
42
|
+
*
|
|
43
|
+
* const candidate: unknown = succeed(42)
|
|
44
|
+
* const value = isFx(candidate) ? candidate : succeed(candidate)
|
|
45
|
+
* ```
|
|
46
|
+
*
|
|
10
47
|
* @since 1.0.0
|
|
11
48
|
* @category guards
|
|
12
49
|
*/
|
|
@@ -6,8 +6,34 @@ import type { Fx } from "../Fx.js";
|
|
|
6
6
|
* **Completion:** The merged stream completes when **both** input streams have
|
|
7
7
|
* completed.
|
|
8
8
|
*
|
|
9
|
-
* **
|
|
10
|
-
* the
|
|
9
|
+
* **Failures:** Every failure Cause is delivered to the downstream Sink. Delivery does not make
|
|
10
|
+
* `Fx.run` fail, so `merge` does not itself cancel the sibling; a terminal observer may choose to.
|
|
11
|
+
*
|
|
12
|
+
* @remarks
|
|
13
|
+
* ## Why
|
|
14
|
+
* `merge` preserves both producers instead of imposing a pairing relationship. Each input value is
|
|
15
|
+
* emitted once as soon as its source pushes it, so inter-source ordering is intentionally undefined.
|
|
16
|
+
*
|
|
17
|
+
* ## Ownership and lifetime
|
|
18
|
+
* Both runs are children of the consumer and completion waits for both. Downstream interruption
|
|
19
|
+
* cancels the remaining runs. A source Cause is only sent to `sink.onFailure`; whether that callback
|
|
20
|
+
* ends observation is Sink policy, not an intrinsic terminal rule of `merge`.
|
|
21
|
+
*
|
|
22
|
+
* @example
|
|
23
|
+
* ```ts
|
|
24
|
+
* import { Effect, Ref } from "effect"
|
|
25
|
+
* import { Fx, Sink } from "@typed/fx"
|
|
26
|
+
*
|
|
27
|
+
* const program = Effect.gen(function* () {
|
|
28
|
+
* const deliveries = yield* Ref.make<Array<string>>([])
|
|
29
|
+
* const sink = Sink.make(
|
|
30
|
+
* () => Ref.update(deliveries, (xs) => [...xs, "failure"]),
|
|
31
|
+
* (value: string) => Ref.update(deliveries, (xs) => [...xs, value])
|
|
32
|
+
* )
|
|
33
|
+
* yield* Fx.merge(Fx.fail("left failed"), Fx.succeed("right continued")).run(sink)
|
|
34
|
+
* return yield* Ref.get(deliveries) // both "failure" and "right continued"
|
|
35
|
+
* })
|
|
36
|
+
* ```
|
|
11
37
|
*
|
|
12
38
|
* @param that - The second Fx stream.
|
|
13
39
|
* @returns An Fx that emits values from both streams.
|
|
@@ -26,9 +52,35 @@ export declare const merge: {
|
|
|
26
52
|
* **Completion:** The concatenated stream completes when the **second** stream
|
|
27
53
|
* completes (the first must complete before the second starts).
|
|
28
54
|
*
|
|
29
|
-
* **
|
|
30
|
-
*
|
|
31
|
-
*
|
|
55
|
+
* **Failures:** A source Cause is delivered to the Sink. Because `Fx.run` is infallible, delivery
|
|
56
|
+
* alone does not suppress the continuation: the right source is run after the left run returns.
|
|
57
|
+
*
|
|
58
|
+
* @remarks
|
|
59
|
+
* ## Why
|
|
60
|
+
* `concat` makes subscription order explicit: the right source is not acquired until the left run
|
|
61
|
+
* returns. It preserves every value and each source's internal order. A failure callback can be
|
|
62
|
+
* followed by continuation values when the Sink handles the Cause without interrupting the run.
|
|
63
|
+
*
|
|
64
|
+
* ## Ownership and lifetime
|
|
65
|
+
* Only one source is active at a time. Interruption stops the active source and prevents later
|
|
66
|
+
* acquisition. Failure is Sink delivery rather than a failing `Fx.run` Effect, so it does not by
|
|
67
|
+
* itself prevent the right source from being acquired.
|
|
68
|
+
*
|
|
69
|
+
* @example
|
|
70
|
+
* ```ts
|
|
71
|
+
* import { Effect, Ref } from "effect"
|
|
72
|
+
* import { Fx, Sink } from "@typed/fx"
|
|
73
|
+
*
|
|
74
|
+
* const program = Effect.gen(function* () {
|
|
75
|
+
* const deliveries = yield* Ref.make<Array<string>>([])
|
|
76
|
+
* const sink = Sink.make(
|
|
77
|
+
* () => Ref.update(deliveries, (xs) => [...xs, "failure"]),
|
|
78
|
+
* (value: string) => Ref.update(deliveries, (xs) => [...xs, value])
|
|
79
|
+
* )
|
|
80
|
+
* yield* Fx.concat(Fx.fail("left failed"), Fx.succeed("right still runs")).run(sink)
|
|
81
|
+
* return yield* Ref.get(deliveries) // ["failure", "right still runs"]
|
|
82
|
+
* })
|
|
83
|
+
* ```
|
|
32
84
|
*
|
|
33
85
|
* @param that - The second Fx stream (run after the first completes).
|
|
34
86
|
* @returns An Fx that emits values from the first stream, then the second.
|
|
@@ -43,6 +95,34 @@ export declare const concat: {
|
|
|
43
95
|
* Zips two Fx streams in strict lockstep and emits only the left value.
|
|
44
96
|
* Completes when the **first** of the two streams completes.
|
|
45
97
|
*
|
|
98
|
+
* @remarks
|
|
99
|
+
* ## Why
|
|
100
|
+
* `zipLeft` uses the right source as a one-for-one pacing or validation partner while retaining the
|
|
101
|
+
* left payload. It emits one left value per completed pair and preserves pair order.
|
|
102
|
+
*
|
|
103
|
+
* ## Ownership and lifetime
|
|
104
|
+
* Both sources run concurrently. The first run to complete ends pairing and interrupts the other,
|
|
105
|
+
* while consumer interruption stops both. A failure Cause is delivered to the Sink but does not by
|
|
106
|
+
* itself end pairing; a producer may continue and supply a value afterward.
|
|
107
|
+
*
|
|
108
|
+
* @example
|
|
109
|
+
* ```ts
|
|
110
|
+
* import { Cause, Effect, Ref } from "effect"
|
|
111
|
+
* import { Fx, Sink } from "@typed/fx"
|
|
112
|
+
*
|
|
113
|
+
* const program = Effect.gen(function* () {
|
|
114
|
+
* const deliveries = yield* Ref.make<Array<string>>([])
|
|
115
|
+
* const left = Fx.make<number, string>((sink) =>
|
|
116
|
+
* sink.onFailure(Cause.fail("warning")).pipe(Effect.andThen(sink.onSuccess(1)))
|
|
117
|
+
* )
|
|
118
|
+
* yield* Fx.zipLeft(left, Fx.succeed("pair")).run(Sink.make(
|
|
119
|
+
* () => Ref.update(deliveries, (xs) => [...xs, "failure"]),
|
|
120
|
+
* (value) => Ref.update(deliveries, (xs) => [...xs, `value:${value}`])
|
|
121
|
+
* ))
|
|
122
|
+
* return yield* Ref.get(deliveries) // ["failure", "value:1"]
|
|
123
|
+
* })
|
|
124
|
+
* ```
|
|
125
|
+
*
|
|
46
126
|
* @param that - The second Fx stream.
|
|
47
127
|
* @returns An Fx that emits values from the left stream only.
|
|
48
128
|
* @since 1.0.0
|
|
@@ -56,6 +136,29 @@ export declare const zipLeft: {
|
|
|
56
136
|
* Zips two Fx streams in strict lockstep and emits only the right value.
|
|
57
137
|
* Completes when the **first** of the two streams completes.
|
|
58
138
|
*
|
|
139
|
+
* @remarks
|
|
140
|
+
* ## Why
|
|
141
|
+
* `zipRight` pairs both sources but deliberately keeps the right payload. It emits once per pair,
|
|
142
|
+
* in pairing order, and never emits an unmatched right value.
|
|
143
|
+
*
|
|
144
|
+
* ## Ownership and lifetime
|
|
145
|
+
* Both runs belong to the consumer. The first completion or consumer interruption cancels the
|
|
146
|
+
* remaining run and releases the lockstep queues. Failure is Sink delivery, not an automatic stop;
|
|
147
|
+
* pairing can continue when the failing producer remains active and later emits a value.
|
|
148
|
+
*
|
|
149
|
+
* @example
|
|
150
|
+
* ```ts
|
|
151
|
+
* import { Cause, Effect } from "effect"
|
|
152
|
+
* import { Fx, Sink } from "@typed/fx"
|
|
153
|
+
*
|
|
154
|
+
* const left = Fx.make<number, string>((sink) =>
|
|
155
|
+
* sink.onFailure(Cause.fail("warning")).pipe(Effect.andThen(sink.onSuccess(1)))
|
|
156
|
+
* )
|
|
157
|
+
* const program = Fx.zipRight(left, Fx.succeed("paired")).run(
|
|
158
|
+
* Sink.make(Effect.logError, Effect.log)
|
|
159
|
+
* ) // logs the failure and then "paired"
|
|
160
|
+
* ```
|
|
161
|
+
*
|
|
59
162
|
* @param that - The second Fx stream.
|
|
60
163
|
* @returns An Fx that emits values from the right stream only.
|
|
61
164
|
* @since 1.0.0
|
|
@@ -69,6 +172,30 @@ export declare const zipRight: {
|
|
|
69
172
|
* Merges two Fx streams and emits only values from the left stream.
|
|
70
173
|
* Both streams run concurrently; completion when **both** complete.
|
|
71
174
|
*
|
|
175
|
+
* @remarks
|
|
176
|
+
* ## Why
|
|
177
|
+
* `mergeLeft` keeps the right producer's lifetime and failure signal while suppressing its values.
|
|
178
|
+
* Every left value is emitted once; right emissions only affect scheduling.
|
|
179
|
+
*
|
|
180
|
+
* ## Ownership and lifetime
|
|
181
|
+
* Both sources are acquired together and owned by the consuming run. Interruption cancels both and
|
|
182
|
+
* normal completion waits for both. A Cause from either source is delivered to the Sink but does not
|
|
183
|
+
* intrinsically cancel its sibling; right successes remain suppressed by the filter.
|
|
184
|
+
*
|
|
185
|
+
* @example
|
|
186
|
+
* ```ts
|
|
187
|
+
* import { Effect, Ref } from "effect"
|
|
188
|
+
* import { Fx, Sink } from "@typed/fx"
|
|
189
|
+
*
|
|
190
|
+
* const program = Effect.gen(function* () {
|
|
191
|
+
* const failures = yield* Ref.make(0)
|
|
192
|
+
* yield* Fx.mergeLeft(Fx.succeed("visible"), Fx.fail("hidden side failed")).run(
|
|
193
|
+
* Sink.make(() => Ref.update(failures, (n) => n + 1), () => Effect.void)
|
|
194
|
+
* )
|
|
195
|
+
* return yield* Ref.get(failures) // 1; failure is still delivered
|
|
196
|
+
* })
|
|
197
|
+
* ```
|
|
198
|
+
*
|
|
72
199
|
* @param that - The second Fx stream (values are dropped).
|
|
73
200
|
* @returns An Fx that emits only values from the left stream.
|
|
74
201
|
* @since 1.0.0
|
|
@@ -82,6 +209,30 @@ export declare const mergeLeft: {
|
|
|
82
209
|
* Merges two Fx streams and emits only values from the right stream.
|
|
83
210
|
* Both streams run concurrently; completion when **both** complete.
|
|
84
211
|
*
|
|
212
|
+
* @remarks
|
|
213
|
+
* ## Why
|
|
214
|
+
* `mergeRight` observes the left producer's completion and failure while exposing only right
|
|
215
|
+
* values. Each right value is emitted once with no deterministic ordering against hidden left work.
|
|
216
|
+
*
|
|
217
|
+
* ## Ownership and lifetime
|
|
218
|
+
* The consumer owns both concurrent runs and normal completion waits for both. Interruption cancels
|
|
219
|
+
* both. A Cause is delivered to the Sink without inherently canceling the sibling; left successes
|
|
220
|
+
* remain suppressed even while their failures are observable.
|
|
221
|
+
*
|
|
222
|
+
* @example
|
|
223
|
+
* ```ts
|
|
224
|
+
* import { Effect, Ref } from "effect"
|
|
225
|
+
* import { Fx, Sink } from "@typed/fx"
|
|
226
|
+
*
|
|
227
|
+
* const program = Effect.gen(function* () {
|
|
228
|
+
* const values = yield* Ref.make<Array<string>>([])
|
|
229
|
+
* yield* Fx.mergeRight(Fx.fail("hidden side failed"), Fx.succeed("visible")).run(
|
|
230
|
+
* Sink.make(() => Effect.void, (value) => Ref.update(values, (xs) => [...xs, value]))
|
|
231
|
+
* )
|
|
232
|
+
* return yield* Ref.get(values) // ["visible"]
|
|
233
|
+
* })
|
|
234
|
+
* ```
|
|
235
|
+
*
|
|
85
236
|
* @param that - The second Fx stream.
|
|
86
237
|
* @returns An Fx that emits only values from the right stream.
|
|
87
238
|
* @since 1.0.0
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"additive.d.ts","sourceRoot":"","sources":["../../../src/Fx/combinators/additive.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,UAAU,CAAC;AAOnC
|
|
1
|
+
{"version":3,"file":"additive.d.ts","sourceRoot":"","sources":["../../../src/Fx/combinators/additive.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,8 +11,34 @@ import { zip } from "./zip.js";
|
|
|
11
11
|
* **Completion:** The merged stream completes when **both** input streams have
|
|
12
12
|
* completed.
|
|
13
13
|
*
|
|
14
|
-
* **
|
|
15
|
-
* the
|
|
14
|
+
* **Failures:** Every failure Cause is delivered to the downstream Sink. Delivery does not make
|
|
15
|
+
* `Fx.run` fail, so `merge` does not itself cancel the sibling; a terminal observer may choose to.
|
|
16
|
+
*
|
|
17
|
+
* @remarks
|
|
18
|
+
* ## Why
|
|
19
|
+
* `merge` preserves both producers instead of imposing a pairing relationship. Each input value is
|
|
20
|
+
* emitted once as soon as its source pushes it, so inter-source ordering is intentionally undefined.
|
|
21
|
+
*
|
|
22
|
+
* ## Ownership and lifetime
|
|
23
|
+
* Both runs are children of the consumer and completion waits for both. Downstream interruption
|
|
24
|
+
* cancels the remaining runs. A source Cause is only sent to `sink.onFailure`; whether that callback
|
|
25
|
+
* ends observation is Sink policy, not an intrinsic terminal rule of `merge`.
|
|
26
|
+
*
|
|
27
|
+
* @example
|
|
28
|
+
* ```ts
|
|
29
|
+
* import { Effect, Ref } from "effect"
|
|
30
|
+
* import { Fx, Sink } from "@typed/fx"
|
|
31
|
+
*
|
|
32
|
+
* const program = Effect.gen(function* () {
|
|
33
|
+
* const deliveries = yield* Ref.make<Array<string>>([])
|
|
34
|
+
* const sink = Sink.make(
|
|
35
|
+
* () => Ref.update(deliveries, (xs) => [...xs, "failure"]),
|
|
36
|
+
* (value: string) => Ref.update(deliveries, (xs) => [...xs, value])
|
|
37
|
+
* )
|
|
38
|
+
* yield* Fx.merge(Fx.fail("left failed"), Fx.succeed("right continued")).run(sink)
|
|
39
|
+
* return yield* Ref.get(deliveries) // both "failure" and "right continued"
|
|
40
|
+
* })
|
|
41
|
+
* ```
|
|
16
42
|
*
|
|
17
43
|
* @param that - The second Fx stream.
|
|
18
44
|
* @returns An Fx that emits values from both streams.
|
|
@@ -28,9 +54,35 @@ export const merge = dual(2, (self, that) => mergeAll(self, that));
|
|
|
28
54
|
* **Completion:** The concatenated stream completes when the **second** stream
|
|
29
55
|
* completes (the first must complete before the second starts).
|
|
30
56
|
*
|
|
31
|
-
* **
|
|
32
|
-
*
|
|
33
|
-
*
|
|
57
|
+
* **Failures:** A source Cause is delivered to the Sink. Because `Fx.run` is infallible, delivery
|
|
58
|
+
* alone does not suppress the continuation: the right source is run after the left run returns.
|
|
59
|
+
*
|
|
60
|
+
* @remarks
|
|
61
|
+
* ## Why
|
|
62
|
+
* `concat` makes subscription order explicit: the right source is not acquired until the left run
|
|
63
|
+
* returns. It preserves every value and each source's internal order. A failure callback can be
|
|
64
|
+
* followed by continuation values when the Sink handles the Cause without interrupting the run.
|
|
65
|
+
*
|
|
66
|
+
* ## Ownership and lifetime
|
|
67
|
+
* Only one source is active at a time. Interruption stops the active source and prevents later
|
|
68
|
+
* acquisition. Failure is Sink delivery rather than a failing `Fx.run` Effect, so it does not by
|
|
69
|
+
* itself prevent the right source from being acquired.
|
|
70
|
+
*
|
|
71
|
+
* @example
|
|
72
|
+
* ```ts
|
|
73
|
+
* import { Effect, Ref } from "effect"
|
|
74
|
+
* import { Fx, Sink } from "@typed/fx"
|
|
75
|
+
*
|
|
76
|
+
* const program = Effect.gen(function* () {
|
|
77
|
+
* const deliveries = yield* Ref.make<Array<string>>([])
|
|
78
|
+
* const sink = Sink.make(
|
|
79
|
+
* () => Ref.update(deliveries, (xs) => [...xs, "failure"]),
|
|
80
|
+
* (value: string) => Ref.update(deliveries, (xs) => [...xs, value])
|
|
81
|
+
* )
|
|
82
|
+
* yield* Fx.concat(Fx.fail("left failed"), Fx.succeed("right still runs")).run(sink)
|
|
83
|
+
* return yield* Ref.get(deliveries) // ["failure", "right still runs"]
|
|
84
|
+
* })
|
|
85
|
+
* ```
|
|
34
86
|
*
|
|
35
87
|
* @param that - The second Fx stream (run after the first completes).
|
|
36
88
|
* @returns An Fx that emits values from the first stream, then the second.
|
|
@@ -42,6 +94,34 @@ export const concat = dual(2, (self, that) => continueWith(self, () => that));
|
|
|
42
94
|
* Zips two Fx streams in strict lockstep and emits only the left value.
|
|
43
95
|
* Completes when the **first** of the two streams completes.
|
|
44
96
|
*
|
|
97
|
+
* @remarks
|
|
98
|
+
* ## Why
|
|
99
|
+
* `zipLeft` uses the right source as a one-for-one pacing or validation partner while retaining the
|
|
100
|
+
* left payload. It emits one left value per completed pair and preserves pair order.
|
|
101
|
+
*
|
|
102
|
+
* ## Ownership and lifetime
|
|
103
|
+
* Both sources run concurrently. The first run to complete ends pairing and interrupts the other,
|
|
104
|
+
* while consumer interruption stops both. A failure Cause is delivered to the Sink but does not by
|
|
105
|
+
* itself end pairing; a producer may continue and supply a value afterward.
|
|
106
|
+
*
|
|
107
|
+
* @example
|
|
108
|
+
* ```ts
|
|
109
|
+
* import { Cause, Effect, Ref } from "effect"
|
|
110
|
+
* import { Fx, Sink } from "@typed/fx"
|
|
111
|
+
*
|
|
112
|
+
* const program = Effect.gen(function* () {
|
|
113
|
+
* const deliveries = yield* Ref.make<Array<string>>([])
|
|
114
|
+
* const left = Fx.make<number, string>((sink) =>
|
|
115
|
+
* sink.onFailure(Cause.fail("warning")).pipe(Effect.andThen(sink.onSuccess(1)))
|
|
116
|
+
* )
|
|
117
|
+
* yield* Fx.zipLeft(left, Fx.succeed("pair")).run(Sink.make(
|
|
118
|
+
* () => Ref.update(deliveries, (xs) => [...xs, "failure"]),
|
|
119
|
+
* (value) => Ref.update(deliveries, (xs) => [...xs, `value:${value}`])
|
|
120
|
+
* ))
|
|
121
|
+
* return yield* Ref.get(deliveries) // ["failure", "value:1"]
|
|
122
|
+
* })
|
|
123
|
+
* ```
|
|
124
|
+
*
|
|
45
125
|
* @param that - The second Fx stream.
|
|
46
126
|
* @returns An Fx that emits values from the left stream only.
|
|
47
127
|
* @since 1.0.0
|
|
@@ -52,6 +132,29 @@ export const zipLeft = dual(2, (self, that) => map(zip(self, that), (pair) => pa
|
|
|
52
132
|
* Zips two Fx streams in strict lockstep and emits only the right value.
|
|
53
133
|
* Completes when the **first** of the two streams completes.
|
|
54
134
|
*
|
|
135
|
+
* @remarks
|
|
136
|
+
* ## Why
|
|
137
|
+
* `zipRight` pairs both sources but deliberately keeps the right payload. It emits once per pair,
|
|
138
|
+
* in pairing order, and never emits an unmatched right value.
|
|
139
|
+
*
|
|
140
|
+
* ## Ownership and lifetime
|
|
141
|
+
* Both runs belong to the consumer. The first completion or consumer interruption cancels the
|
|
142
|
+
* remaining run and releases the lockstep queues. Failure is Sink delivery, not an automatic stop;
|
|
143
|
+
* pairing can continue when the failing producer remains active and later emits a value.
|
|
144
|
+
*
|
|
145
|
+
* @example
|
|
146
|
+
* ```ts
|
|
147
|
+
* import { Cause, Effect } from "effect"
|
|
148
|
+
* import { Fx, Sink } from "@typed/fx"
|
|
149
|
+
*
|
|
150
|
+
* const left = Fx.make<number, string>((sink) =>
|
|
151
|
+
* sink.onFailure(Cause.fail("warning")).pipe(Effect.andThen(sink.onSuccess(1)))
|
|
152
|
+
* )
|
|
153
|
+
* const program = Fx.zipRight(left, Fx.succeed("paired")).run(
|
|
154
|
+
* Sink.make(Effect.logError, Effect.log)
|
|
155
|
+
* ) // logs the failure and then "paired"
|
|
156
|
+
* ```
|
|
157
|
+
*
|
|
55
158
|
* @param that - The second Fx stream.
|
|
56
159
|
* @returns An Fx that emits values from the right stream only.
|
|
57
160
|
* @since 1.0.0
|
|
@@ -62,6 +165,30 @@ export const zipRight = dual(2, (self, that) => map(zip(self, that), (pair) => p
|
|
|
62
165
|
* Merges two Fx streams and emits only values from the left stream.
|
|
63
166
|
* Both streams run concurrently; completion when **both** complete.
|
|
64
167
|
*
|
|
168
|
+
* @remarks
|
|
169
|
+
* ## Why
|
|
170
|
+
* `mergeLeft` keeps the right producer's lifetime and failure signal while suppressing its values.
|
|
171
|
+
* Every left value is emitted once; right emissions only affect scheduling.
|
|
172
|
+
*
|
|
173
|
+
* ## Ownership and lifetime
|
|
174
|
+
* Both sources are acquired together and owned by the consuming run. Interruption cancels both and
|
|
175
|
+
* normal completion waits for both. A Cause from either source is delivered to the Sink but does not
|
|
176
|
+
* intrinsically cancel its sibling; right successes remain suppressed by the filter.
|
|
177
|
+
*
|
|
178
|
+
* @example
|
|
179
|
+
* ```ts
|
|
180
|
+
* import { Effect, Ref } from "effect"
|
|
181
|
+
* import { Fx, Sink } from "@typed/fx"
|
|
182
|
+
*
|
|
183
|
+
* const program = Effect.gen(function* () {
|
|
184
|
+
* const failures = yield* Ref.make(0)
|
|
185
|
+
* yield* Fx.mergeLeft(Fx.succeed("visible"), Fx.fail("hidden side failed")).run(
|
|
186
|
+
* Sink.make(() => Ref.update(failures, (n) => n + 1), () => Effect.void)
|
|
187
|
+
* )
|
|
188
|
+
* return yield* Ref.get(failures) // 1; failure is still delivered
|
|
189
|
+
* })
|
|
190
|
+
* ```
|
|
191
|
+
*
|
|
65
192
|
* @param that - The second Fx stream (values are dropped).
|
|
66
193
|
* @returns An Fx that emits only values from the left stream.
|
|
67
194
|
* @since 1.0.0
|
|
@@ -78,6 +205,30 @@ export const mergeLeft = dual(2, (self, that) => {
|
|
|
78
205
|
* Merges two Fx streams and emits only values from the right stream.
|
|
79
206
|
* Both streams run concurrently; completion when **both** complete.
|
|
80
207
|
*
|
|
208
|
+
* @remarks
|
|
209
|
+
* ## Why
|
|
210
|
+
* `mergeRight` observes the left producer's completion and failure while exposing only right
|
|
211
|
+
* values. Each right value is emitted once with no deterministic ordering against hidden left work.
|
|
212
|
+
*
|
|
213
|
+
* ## Ownership and lifetime
|
|
214
|
+
* The consumer owns both concurrent runs and normal completion waits for both. Interruption cancels
|
|
215
|
+
* both. A Cause is delivered to the Sink without inherently canceling the sibling; left successes
|
|
216
|
+
* remain suppressed even while their failures are observable.
|
|
217
|
+
*
|
|
218
|
+
* @example
|
|
219
|
+
* ```ts
|
|
220
|
+
* import { Effect, Ref } from "effect"
|
|
221
|
+
* import { Fx, Sink } from "@typed/fx"
|
|
222
|
+
*
|
|
223
|
+
* const program = Effect.gen(function* () {
|
|
224
|
+
* const values = yield* Ref.make<Array<string>>([])
|
|
225
|
+
* yield* Fx.mergeRight(Fx.fail("hidden side failed"), Fx.succeed("visible")).run(
|
|
226
|
+
* Sink.make(() => Effect.void, (value) => Ref.update(values, (xs) => [...xs, value]))
|
|
227
|
+
* )
|
|
228
|
+
* return yield* Ref.get(values) // ["visible"]
|
|
229
|
+
* })
|
|
230
|
+
* ```
|
|
231
|
+
*
|
|
81
232
|
* @param that - The second Fx stream.
|
|
82
233
|
* @returns An Fx that emits only values from the right stream.
|
|
83
234
|
* @since 1.0.0
|