@typed/fx 2.0.0-beta.1 → 2.0.0-beta.11
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 +70 -0
- package/dist/Fx/internal/effectableWithOverride.d.ts.map +1 -0
- package/dist/Fx/internal/effectableWithOverride.js +54 -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
|
@@ -1,11 +1,195 @@
|
|
|
1
1
|
import * as Effect from "effect/Effect";
|
|
2
2
|
import * as Fiber from "effect/Fiber";
|
|
3
3
|
import * as Scope from "effect/Scope";
|
|
4
|
+
/** Finalizer execution order accepted by the published Fx scope helpers.
|
|
5
|
+
*
|
|
6
|
+
* @remarks
|
|
7
|
+
* ## Why
|
|
8
|
+
*
|
|
9
|
+
* Fx operators sometimes require deterministic teardown and sometimes permit independent
|
|
10
|
+
* finalizers to run concurrently. This narrower type exposes only the strategies these helpers
|
|
11
|
+
* intentionally forward to Effect Scope.
|
|
12
|
+
*
|
|
13
|
+
* ## Ownership and lifetime
|
|
14
|
+
*
|
|
15
|
+
* This is compile-time metadata and acquires no runtime resources.
|
|
16
|
+
*
|
|
17
|
+
* @since 1.0.0
|
|
18
|
+
* @category type-level
|
|
19
|
+
* @stability internal-but-published
|
|
20
|
+
*/
|
|
4
21
|
export type ExecutionStrategy = "sequential" | "parallel";
|
|
22
|
+
/** Forks a closeable child from the current Scope and passes it to an Effect builder.
|
|
23
|
+
*
|
|
24
|
+
* @remarks
|
|
25
|
+
* ## Why
|
|
26
|
+
*
|
|
27
|
+
* Operators need a lifetime they can close independently while still guaranteeing that the parent
|
|
28
|
+
* Scope eventually closes it if the operator is interrupted.
|
|
29
|
+
*
|
|
30
|
+
* ## Ownership and lifetime
|
|
31
|
+
*
|
|
32
|
+
* The caller's required Scope owns the forked child. This helper does not close the child when `f`
|
|
33
|
+
* returns; parent closure does. Use `withExtendedScope` when the child must close at the returned
|
|
34
|
+
* Effect's exit. `f` retains its exact value, typed error, and service channels.
|
|
35
|
+
*
|
|
36
|
+
* @example
|
|
37
|
+
* ```ts
|
|
38
|
+
* import { withCloseableScope } from "@typed/fx/Fx/internal/scope"
|
|
39
|
+
* import * as Effect from "effect/Effect"
|
|
40
|
+
*
|
|
41
|
+
* const child = withCloseableScope((scope) => Effect.succeed(scope), "sequential")
|
|
42
|
+
* const scope = Effect.runSync(Effect.scoped(child))
|
|
43
|
+
* ```
|
|
44
|
+
*
|
|
45
|
+
* @since 1.0.0
|
|
46
|
+
* @category lifecycle
|
|
47
|
+
* @stability internal-but-published
|
|
48
|
+
*/
|
|
5
49
|
export declare const withCloseableScope: <A, E, R>(f: (scope: Scope.Closeable) => Effect.Effect<A, E, R>, executionStrategy?: ExecutionStrategy) => Effect.Effect<A, E, R | Scope.Scope>;
|
|
50
|
+
/** Runs an Effect in a child Scope and closes that child when the Effect exits.
|
|
51
|
+
*
|
|
52
|
+
* @remarks
|
|
53
|
+
* ## Why
|
|
54
|
+
*
|
|
55
|
+
* Flattening and timing operators often need resources acquired by one inner Effect to survive its
|
|
56
|
+
* local construction but not the enclosing operator run.
|
|
57
|
+
*
|
|
58
|
+
* ## Ownership and lifetime
|
|
59
|
+
*
|
|
60
|
+
* A sequentially closing child Scope is forked from the required parent Scope, installed as the
|
|
61
|
+
* Effect's `Scope.Scope` service, and closed with the same `Exit` on success, typed failure, defect,
|
|
62
|
+
* or interruption. Non-Scope services and the `A`/`E` channels are unchanged.
|
|
63
|
+
*
|
|
64
|
+
* @example
|
|
65
|
+
* ```ts
|
|
66
|
+
* import { extendScope } from "@typed/fx/Fx/internal/scope"
|
|
67
|
+
* import * as Effect from "effect/Effect"
|
|
68
|
+
*
|
|
69
|
+
* const value = Effect.scoped(extendScope(Effect.succeed("ready")))
|
|
70
|
+
* ```
|
|
71
|
+
*
|
|
72
|
+
* @since 1.0.0
|
|
73
|
+
* @category lifecycle
|
|
74
|
+
* @stability internal-but-published
|
|
75
|
+
*/
|
|
6
76
|
export declare const extendScope: <A, E, R>(effect: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R | Scope.Scope>;
|
|
77
|
+
/** Builds and runs an Effect inside a child Scope that closes at the Effect's exit.
|
|
78
|
+
*
|
|
79
|
+
* @remarks
|
|
80
|
+
* ## Why
|
|
81
|
+
*
|
|
82
|
+
* This combines access to the closeable child with guaranteed local teardown, allowing an operator
|
|
83
|
+
* to register resources and also close the lifetime explicitly before the parent ends.
|
|
84
|
+
*
|
|
85
|
+
* ## Ownership and lifetime
|
|
86
|
+
*
|
|
87
|
+
* The required parent Scope owns the child as a fallback. The child is provided to `f` as the
|
|
88
|
+
* current Scope and is also closed with `f`'s exact `Exit`. `executionStrategy` controls ordering of
|
|
89
|
+
* its finalizers. The helper preserves typed errors and remaining service requirements.
|
|
90
|
+
*
|
|
91
|
+
* @example
|
|
92
|
+
* ```ts
|
|
93
|
+
* import { withExtendedScope } from "@typed/fx/Fx/internal/scope"
|
|
94
|
+
* import * as Effect from "effect/Effect"
|
|
95
|
+
* import * as Scope from "effect/Scope"
|
|
96
|
+
*
|
|
97
|
+
* const program = withExtendedScope((scope) =>
|
|
98
|
+
* Scope.addFinalizer(scope, Effect.log("child closed"))
|
|
99
|
+
* )
|
|
100
|
+
* Effect.runSync(Effect.scoped(program))
|
|
101
|
+
* ```
|
|
102
|
+
*
|
|
103
|
+
* @since 1.0.0
|
|
104
|
+
* @category lifecycle
|
|
105
|
+
* @stability internal-but-published
|
|
106
|
+
*/
|
|
7
107
|
export declare const withExtendedScope: <A, E, R>(f: (scope: Scope.Closeable) => Effect.Effect<A, E, R>, executionStrategy?: ExecutionStrategy) => Effect.Effect<A, E, R | Scope.Scope>;
|
|
108
|
+
/** Starts Effects as interruptible fibers owned by an operator's child Scope.
|
|
109
|
+
*
|
|
110
|
+
* @remarks
|
|
111
|
+
* ## Why
|
|
112
|
+
*
|
|
113
|
+
* Passing a constrained fork function prevents nested work from escaping the exact lifetime an Fx
|
|
114
|
+
* operator established for it.
|
|
115
|
+
*
|
|
116
|
+
* ## Ownership and lifetime
|
|
117
|
+
*
|
|
118
|
+
* Each returned Fiber is closed by that child Scope. The forked Effect keeps its own typed error and
|
|
119
|
+
* service channels; fiber creation itself cannot fail in the typed channel.
|
|
120
|
+
*
|
|
121
|
+
* @since 1.0.0
|
|
122
|
+
* @category type-level
|
|
123
|
+
* @stability internal-but-published
|
|
124
|
+
*/
|
|
8
125
|
export type Fork = <A, E, R>(effect: Effect.Effect<A, E, R>) => Effect.Effect<Fiber.Fiber<A, E>, never, R>;
|
|
126
|
+
/** Provides a child Scope and a function for forking interruptible work into it.
|
|
127
|
+
*
|
|
128
|
+
* @remarks
|
|
129
|
+
* ## Why
|
|
130
|
+
*
|
|
131
|
+
* Concurrent Fx operators need all child fibers to terminate together when their operator run ends,
|
|
132
|
+
* including failure and interruption paths.
|
|
133
|
+
*
|
|
134
|
+
* ## Ownership and lifetime
|
|
135
|
+
*
|
|
136
|
+
* The helper uses `withExtendedScope`, so the child closes on every exit and remains attached to the
|
|
137
|
+
* required parent Scope. Forks use `Effect.forkIn` with `uninterruptible: false` and
|
|
138
|
+
* `startImmediately: false`; their services come from the Effect supplied to `fork`. Finalizer order
|
|
139
|
+
* follows `executionStrategy`.
|
|
140
|
+
*
|
|
141
|
+
* @example
|
|
142
|
+
* ```ts
|
|
143
|
+
* import { withScopedFork } from "@typed/fx/Fx/internal/scope"
|
|
144
|
+
* import * as Effect from "effect/Effect"
|
|
145
|
+
* import * as Fiber from "effect/Fiber"
|
|
146
|
+
*
|
|
147
|
+
* const program = withScopedFork((fork) =>
|
|
148
|
+
* Effect.flatMap(fork(Effect.succeed(1)), Fiber.join)
|
|
149
|
+
* )
|
|
150
|
+
* Effect.runSync(Effect.scoped(program))
|
|
151
|
+
* ```
|
|
152
|
+
*
|
|
153
|
+
* @since 1.0.0
|
|
154
|
+
* @category lifecycle
|
|
155
|
+
* @stability internal-but-published
|
|
156
|
+
*/
|
|
9
157
|
export declare const withScopedFork: <A, E, R>(f: (fork: Fork, scope: Scope.Closeable) => Effect.Effect<A, E, R>, executionStrategy?: ExecutionStrategy) => Effect.Effect<A, E, R | Scope.Scope>;
|
|
158
|
+
/** Suspends until a Scope starts running its finalizers.
|
|
159
|
+
*
|
|
160
|
+
* @remarks
|
|
161
|
+
* ## Why
|
|
162
|
+
*
|
|
163
|
+
* Subjects remain subscribed for the lifetime of their observing Scope even when there is no other
|
|
164
|
+
* Effect work to await. Registering a finalizer turns that lifetime boundary into a completion
|
|
165
|
+
* signal without polling.
|
|
166
|
+
*
|
|
167
|
+
* ## Ownership and lifetime
|
|
168
|
+
*
|
|
169
|
+
* Execution registers one finalizer on `scope` from a small helper fiber using the current
|
|
170
|
+
* scheduler. The Effect resumes when that finalizer runs. Cancelling the callback interrupts the
|
|
171
|
+
* registration fiber; once registration has completed, the finalizer belongs to `scope`. No typed
|
|
172
|
+
* errors or services are introduced.
|
|
173
|
+
*
|
|
174
|
+
* @example
|
|
175
|
+
* ```ts
|
|
176
|
+
* import { awaitScopeClose } from "@typed/fx/Fx/internal/scope"
|
|
177
|
+
* import * as Effect from "effect/Effect"
|
|
178
|
+
* import * as Exit from "effect/Exit"
|
|
179
|
+
* import * as Fiber from "effect/Fiber"
|
|
180
|
+
* import * as Scope from "effect/Scope"
|
|
181
|
+
*
|
|
182
|
+
* const program = Effect.gen(function* () {
|
|
183
|
+
* const scope = yield* Scope.make()
|
|
184
|
+
* const waiter = yield* Effect.forkDetach(awaitScopeClose(scope))
|
|
185
|
+
* yield* Scope.close(scope, Exit.void)
|
|
186
|
+
* yield* Fiber.join(waiter)
|
|
187
|
+
* })
|
|
188
|
+
* ```
|
|
189
|
+
*
|
|
190
|
+
* @since 1.0.0
|
|
191
|
+
* @category lifecycle
|
|
192
|
+
* @stability internal-but-published
|
|
193
|
+
*/
|
|
10
194
|
export declare function awaitScopeClose(scope: Scope.Scope): Effect.Effect<unknown, never, never>;
|
|
11
195
|
//# sourceMappingURL=scope.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scope.d.ts","sourceRoot":"","sources":["../../../src/Fx/internal/scope.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AAEtC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AAEtC,MAAM,MAAM,iBAAiB,GAAG,YAAY,GAAG,UAAU,CAAC;AAE1D,eAAO,MAAM,kBAAkB,GAAI,CAAC,EAAE,CAAC,EAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"scope.d.ts","sourceRoot":"","sources":["../../../src/Fx/internal/scope.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AAEtC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AAEtC;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,MAAM,iBAAiB,GAAG,YAAY,GAAG,UAAU,CAAC;AAE1D;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,eAAO,MAAM,kBAAkB,GAAI,CAAC,EAAE,CAAC,EAAE,CAAC,KACrC,CAAC,KAAK,EAAE,KAAK,CAAC,SAAS,KAAK,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,sBACjC,iBAAiB,KACpC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,KAAK,CACiD,CAAC;AAExF;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,eAAO,MAAM,WAAW,GAAI,CAAC,EAAE,CAAC,EAAE,CAAC,UACzB,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAC7B,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,KAAK,CAInC,CAAC;AAEJ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,eAAO,MAAM,iBAAiB,GAAI,CAAC,EAAE,CAAC,EAAE,CAAC,KACpC,CAAC,KAAK,EAAE,KAAK,CAAC,SAAS,KAAK,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,sBACjC,iBAAiB,KACpC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,KAAK,CAKnC,CAAC;AAEJ;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,MAAM,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EACzB,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAC3B,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;AAEhD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,eAAO,MAAM,cAAc,GAAI,CAAC,EAAE,CAAC,EAAE,CAAC,KACjC,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,SAAS,KAAK,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,sBAC7C,iBAAiB,KACpC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,KAAK,CAQnC,CAAC;AAEJ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,wCASjD"}
|
|
@@ -1,10 +1,160 @@
|
|
|
1
1
|
import * as Effect from "effect/Effect";
|
|
2
2
|
import * as Fiber from "effect/Fiber";
|
|
3
3
|
import * as Scope from "effect/Scope";
|
|
4
|
+
/** Forks a closeable child from the current Scope and passes it to an Effect builder.
|
|
5
|
+
*
|
|
6
|
+
* @remarks
|
|
7
|
+
* ## Why
|
|
8
|
+
*
|
|
9
|
+
* Operators need a lifetime they can close independently while still guaranteeing that the parent
|
|
10
|
+
* Scope eventually closes it if the operator is interrupted.
|
|
11
|
+
*
|
|
12
|
+
* ## Ownership and lifetime
|
|
13
|
+
*
|
|
14
|
+
* The caller's required Scope owns the forked child. This helper does not close the child when `f`
|
|
15
|
+
* returns; parent closure does. Use `withExtendedScope` when the child must close at the returned
|
|
16
|
+
* Effect's exit. `f` retains its exact value, typed error, and service channels.
|
|
17
|
+
*
|
|
18
|
+
* @example
|
|
19
|
+
* ```ts
|
|
20
|
+
* import { withCloseableScope } from "@typed/fx/Fx/internal/scope"
|
|
21
|
+
* import * as Effect from "effect/Effect"
|
|
22
|
+
*
|
|
23
|
+
* const child = withCloseableScope((scope) => Effect.succeed(scope), "sequential")
|
|
24
|
+
* const scope = Effect.runSync(Effect.scoped(child))
|
|
25
|
+
* ```
|
|
26
|
+
*
|
|
27
|
+
* @since 1.0.0
|
|
28
|
+
* @category lifecycle
|
|
29
|
+
* @stability internal-but-published
|
|
30
|
+
*/
|
|
4
31
|
export const withCloseableScope = (f, executionStrategy) => Effect.scopedWith((scope) => Effect.flatMap(Scope.fork(scope, executionStrategy), f));
|
|
32
|
+
/** Runs an Effect in a child Scope and closes that child when the Effect exits.
|
|
33
|
+
*
|
|
34
|
+
* @remarks
|
|
35
|
+
* ## Why
|
|
36
|
+
*
|
|
37
|
+
* Flattening and timing operators often need resources acquired by one inner Effect to survive its
|
|
38
|
+
* local construction but not the enclosing operator run.
|
|
39
|
+
*
|
|
40
|
+
* ## Ownership and lifetime
|
|
41
|
+
*
|
|
42
|
+
* A sequentially closing child Scope is forked from the required parent Scope, installed as the
|
|
43
|
+
* Effect's `Scope.Scope` service, and closed with the same `Exit` on success, typed failure, defect,
|
|
44
|
+
* or interruption. Non-Scope services and the `A`/`E` channels are unchanged.
|
|
45
|
+
*
|
|
46
|
+
* @example
|
|
47
|
+
* ```ts
|
|
48
|
+
* import { extendScope } from "@typed/fx/Fx/internal/scope"
|
|
49
|
+
* import * as Effect from "effect/Effect"
|
|
50
|
+
*
|
|
51
|
+
* const value = Effect.scoped(extendScope(Effect.succeed("ready")))
|
|
52
|
+
* ```
|
|
53
|
+
*
|
|
54
|
+
* @since 1.0.0
|
|
55
|
+
* @category lifecycle
|
|
56
|
+
* @stability internal-but-published
|
|
57
|
+
*/
|
|
5
58
|
export const extendScope = (effect) => withCloseableScope((scope) => Scope.provide(effect.pipe(Effect.onExit((exit) => Scope.close(scope, exit))), scope), "sequential");
|
|
59
|
+
/** Builds and runs an Effect inside a child Scope that closes at the Effect's exit.
|
|
60
|
+
*
|
|
61
|
+
* @remarks
|
|
62
|
+
* ## Why
|
|
63
|
+
*
|
|
64
|
+
* This combines access to the closeable child with guaranteed local teardown, allowing an operator
|
|
65
|
+
* to register resources and also close the lifetime explicitly before the parent ends.
|
|
66
|
+
*
|
|
67
|
+
* ## Ownership and lifetime
|
|
68
|
+
*
|
|
69
|
+
* The required parent Scope owns the child as a fallback. The child is provided to `f` as the
|
|
70
|
+
* current Scope and is also closed with `f`'s exact `Exit`. `executionStrategy` controls ordering of
|
|
71
|
+
* its finalizers. The helper preserves typed errors and remaining service requirements.
|
|
72
|
+
*
|
|
73
|
+
* @example
|
|
74
|
+
* ```ts
|
|
75
|
+
* import { withExtendedScope } from "@typed/fx/Fx/internal/scope"
|
|
76
|
+
* import * as Effect from "effect/Effect"
|
|
77
|
+
* import * as Scope from "effect/Scope"
|
|
78
|
+
*
|
|
79
|
+
* const program = withExtendedScope((scope) =>
|
|
80
|
+
* Scope.addFinalizer(scope, Effect.log("child closed"))
|
|
81
|
+
* )
|
|
82
|
+
* Effect.runSync(Effect.scoped(program))
|
|
83
|
+
* ```
|
|
84
|
+
*
|
|
85
|
+
* @since 1.0.0
|
|
86
|
+
* @category lifecycle
|
|
87
|
+
* @stability internal-but-published
|
|
88
|
+
*/
|
|
6
89
|
export const withExtendedScope = (f, executionStrategy) => withCloseableScope((scope) => Scope.provide(f(scope).pipe(Effect.onExit((exit) => Scope.close(scope, exit))), scope), executionStrategy);
|
|
90
|
+
/** Provides a child Scope and a function for forking interruptible work into it.
|
|
91
|
+
*
|
|
92
|
+
* @remarks
|
|
93
|
+
* ## Why
|
|
94
|
+
*
|
|
95
|
+
* Concurrent Fx operators need all child fibers to terminate together when their operator run ends,
|
|
96
|
+
* including failure and interruption paths.
|
|
97
|
+
*
|
|
98
|
+
* ## Ownership and lifetime
|
|
99
|
+
*
|
|
100
|
+
* The helper uses `withExtendedScope`, so the child closes on every exit and remains attached to the
|
|
101
|
+
* required parent Scope. Forks use `Effect.forkIn` with `uninterruptible: false` and
|
|
102
|
+
* `startImmediately: false`; their services come from the Effect supplied to `fork`. Finalizer order
|
|
103
|
+
* follows `executionStrategy`.
|
|
104
|
+
*
|
|
105
|
+
* @example
|
|
106
|
+
* ```ts
|
|
107
|
+
* import { withScopedFork } from "@typed/fx/Fx/internal/scope"
|
|
108
|
+
* import * as Effect from "effect/Effect"
|
|
109
|
+
* import * as Fiber from "effect/Fiber"
|
|
110
|
+
*
|
|
111
|
+
* const program = withScopedFork((fork) =>
|
|
112
|
+
* Effect.flatMap(fork(Effect.succeed(1)), Fiber.join)
|
|
113
|
+
* )
|
|
114
|
+
* Effect.runSync(Effect.scoped(program))
|
|
115
|
+
* ```
|
|
116
|
+
*
|
|
117
|
+
* @since 1.0.0
|
|
118
|
+
* @category lifecycle
|
|
119
|
+
* @stability internal-but-published
|
|
120
|
+
*/
|
|
7
121
|
export const withScopedFork = (f, executionStrategy) => withExtendedScope((scope) => f((eff) => Effect.forkIn(eff, scope, { uninterruptible: false, startImmediately: false }), scope), executionStrategy);
|
|
122
|
+
/** Suspends until a Scope starts running its finalizers.
|
|
123
|
+
*
|
|
124
|
+
* @remarks
|
|
125
|
+
* ## Why
|
|
126
|
+
*
|
|
127
|
+
* Subjects remain subscribed for the lifetime of their observing Scope even when there is no other
|
|
128
|
+
* Effect work to await. Registering a finalizer turns that lifetime boundary into a completion
|
|
129
|
+
* signal without polling.
|
|
130
|
+
*
|
|
131
|
+
* ## Ownership and lifetime
|
|
132
|
+
*
|
|
133
|
+
* Execution registers one finalizer on `scope` from a small helper fiber using the current
|
|
134
|
+
* scheduler. The Effect resumes when that finalizer runs. Cancelling the callback interrupts the
|
|
135
|
+
* registration fiber; once registration has completed, the finalizer belongs to `scope`. No typed
|
|
136
|
+
* errors or services are introduced.
|
|
137
|
+
*
|
|
138
|
+
* @example
|
|
139
|
+
* ```ts
|
|
140
|
+
* import { awaitScopeClose } from "@typed/fx/Fx/internal/scope"
|
|
141
|
+
* import * as Effect from "effect/Effect"
|
|
142
|
+
* import * as Exit from "effect/Exit"
|
|
143
|
+
* import * as Fiber from "effect/Fiber"
|
|
144
|
+
* import * as Scope from "effect/Scope"
|
|
145
|
+
*
|
|
146
|
+
* const program = Effect.gen(function* () {
|
|
147
|
+
* const scope = yield* Scope.make()
|
|
148
|
+
* const waiter = yield* Effect.forkDetach(awaitScopeClose(scope))
|
|
149
|
+
* yield* Scope.close(scope, Exit.void)
|
|
150
|
+
* yield* Fiber.join(waiter)
|
|
151
|
+
* })
|
|
152
|
+
* ```
|
|
153
|
+
*
|
|
154
|
+
* @since 1.0.0
|
|
155
|
+
* @category lifecycle
|
|
156
|
+
* @stability internal-but-published
|
|
157
|
+
*/
|
|
8
158
|
export function awaitScopeClose(scope) {
|
|
9
159
|
return Effect.callback(function (cb) {
|
|
10
160
|
return Fiber.interrupt(Effect.runFork(Scope.addFinalizerExit(scope, () => Effect.sync(() => cb(Effect.void))), { scheduler: this }));
|
|
@@ -2,16 +2,131 @@ import * as Effect from "effect/Effect";
|
|
|
2
2
|
import type { Sink } from "../../Sink/Sink.js";
|
|
3
3
|
import type * as Fx from "../Fx.js";
|
|
4
4
|
import { FxTypeId } from "../TypeId.js";
|
|
5
|
-
|
|
5
|
+
import { EffectableWithOverride } from "./effectableWithOverride.js";
|
|
6
|
+
/** Base class for values that are both an Fx push source and an Effect-compatible sample.
|
|
7
|
+
*
|
|
8
|
+
* @remarks
|
|
9
|
+
* ## Why
|
|
10
|
+
*
|
|
11
|
+
* RefSubject and Versioned values need one object that composes through Fx operators when observed
|
|
12
|
+
* and through Effect operators when a current value is requested. This class supplies the shared
|
|
13
|
+
* brands, pipeability, and Effect evaluator bridge without forcing the two channels to have the
|
|
14
|
+
* same value, error, or service types.
|
|
15
|
+
*
|
|
16
|
+
* ## Ownership and lifetime
|
|
17
|
+
*
|
|
18
|
+
* The base class acquires no resources. `run` defines the push subscription lifetime and `toEffect`
|
|
19
|
+
* defines sampling. The first Effect evaluation memoizes the Effect object returned by `toEffect`,
|
|
20
|
+
* not its result: each execution still follows that Effect's own acquisition, error, interruption,
|
|
21
|
+
* and cleanup behavior.
|
|
22
|
+
*
|
|
23
|
+
* This is a published advanced extension point coupled to Typed's Fx brand and Effect evaluator
|
|
24
|
+
* protocol. Its shape may change between prereleases.
|
|
25
|
+
*
|
|
26
|
+
* @example
|
|
27
|
+
* ```ts
|
|
28
|
+
* import { YieldableFx } from "@typed/fx/Fx/internal/yieldable"
|
|
29
|
+
* import type { Sink } from "@typed/fx/Sink/Sink"
|
|
30
|
+
* import * as Effect from "effect/Effect"
|
|
31
|
+
*
|
|
32
|
+
* class One extends YieldableFx<number, never, never, number, never, never> {
|
|
33
|
+
* run<R>(sink: Sink<number, never, R>): Effect.Effect<unknown, never, R> {
|
|
34
|
+
* return sink.onSuccess(1)
|
|
35
|
+
* }
|
|
36
|
+
* toEffect() {
|
|
37
|
+
* return Effect.succeed(1)
|
|
38
|
+
* }
|
|
39
|
+
* }
|
|
40
|
+
* ```
|
|
41
|
+
*
|
|
42
|
+
* @since 1.0.0
|
|
43
|
+
* @category advanced
|
|
44
|
+
* @stability internal-but-published
|
|
45
|
+
*/
|
|
46
|
+
export declare abstract class YieldableFx<A, E, R, B, E2, R2> extends EffectableWithOverride<B, E2, R2> implements Fx.Fx<A, E, R> {
|
|
47
|
+
/** Fx variance marker that makes subclasses valid `Fx<A, E, R>` values.
|
|
48
|
+
*
|
|
49
|
+
* @remarks
|
|
50
|
+
* ## Why
|
|
51
|
+
*
|
|
52
|
+
* The marker carries Fx's value, error, and service variance through subclass types.
|
|
53
|
+
*
|
|
54
|
+
* ## Ownership and lifetime
|
|
55
|
+
*
|
|
56
|
+
* Immutable protocol metadata shared through the instance; it acquires no resources.
|
|
57
|
+
*
|
|
58
|
+
* @since 1.0.0
|
|
59
|
+
* @category symbols
|
|
60
|
+
*/
|
|
6
61
|
readonly [FxTypeId]: {
|
|
7
62
|
_A: <A_1>(a: A_1) => A_1;
|
|
8
63
|
_E: <A_1>(a: A_1) => A_1;
|
|
9
64
|
_R: <A_1>(a: A_1) => A_1;
|
|
10
65
|
};
|
|
66
|
+
/** Subscribes a Sink to the pushed channel.
|
|
67
|
+
*
|
|
68
|
+
* @remarks
|
|
69
|
+
* ## Why
|
|
70
|
+
*
|
|
71
|
+
* Implementations determine cardinality, ordering, and subscription cleanup. The contract exposes
|
|
72
|
+
* no typed failure because failures are delivered to the Sink; required services combine `R` with
|
|
73
|
+
* the sink's `RSink`.
|
|
74
|
+
*
|
|
75
|
+
* ## Ownership and lifetime
|
|
76
|
+
*
|
|
77
|
+
* The implementation owns the subscription and must bind cleanup to the lifetime visible in its
|
|
78
|
+
* service requirements.
|
|
79
|
+
*
|
|
80
|
+
* @since 1.0.0
|
|
81
|
+
* @category effects
|
|
82
|
+
*/
|
|
11
83
|
abstract run<RSink>(sink: Sink<A, E, RSink>): Effect.Effect<unknown, never, R | RSink>;
|
|
84
|
+
/** Builds the Effect used when the value is sampled or yielded.
|
|
85
|
+
*
|
|
86
|
+
* @remarks
|
|
87
|
+
* ## Why
|
|
88
|
+
*
|
|
89
|
+
* The returned Effect object is memoized by `override`; its result is not automatically cached.
|
|
90
|
+
*
|
|
91
|
+
* ## Ownership and lifetime
|
|
92
|
+
*
|
|
93
|
+
* Implementations define acquisition and finalization; the base class retains the returned Effect.
|
|
94
|
+
*
|
|
95
|
+
* @since 1.0.0
|
|
96
|
+
* @category effects
|
|
97
|
+
*/
|
|
12
98
|
abstract toEffect(): Effect.Effect<B, E2, R2>;
|
|
99
|
+
/** Pipes this dual Fx/Effect value through Effect or Typed combinators.
|
|
100
|
+
*
|
|
101
|
+
* @remarks
|
|
102
|
+
* ## Why
|
|
103
|
+
*
|
|
104
|
+
* Delegates to Effect's `pipeArguments` and acquires no resources.
|
|
105
|
+
*
|
|
106
|
+
* ## Ownership and lifetime
|
|
107
|
+
*
|
|
108
|
+
* Returns the combinator result and retains no state beyond whatever that result captures.
|
|
109
|
+
*
|
|
110
|
+
* @since 1.0.0
|
|
111
|
+
* @category combinators
|
|
112
|
+
*/
|
|
13
113
|
pipe(): unknown;
|
|
14
114
|
protected _effect: Effect.Effect<B, E2, R2> | null;
|
|
15
|
-
|
|
115
|
+
/** Memoized Effect view used by Effect's evaluator protocol.
|
|
116
|
+
*
|
|
117
|
+
* @remarks
|
|
118
|
+
* ## Why
|
|
119
|
+
*
|
|
120
|
+
* The getter calls `toEffect` at most once per instance. It does not run the Effect and therefore
|
|
121
|
+
* does not memoize successes or failures.
|
|
122
|
+
*
|
|
123
|
+
* ## Ownership and lifetime
|
|
124
|
+
*
|
|
125
|
+
* The instance retains the Effect description for its lifetime; each execution owns its own work.
|
|
126
|
+
*
|
|
127
|
+
* @since 1.0.0
|
|
128
|
+
* @category effects
|
|
129
|
+
*/
|
|
130
|
+
get override(): Effect.Effect<B, E2, R2>;
|
|
16
131
|
}
|
|
17
132
|
//# sourceMappingURL=yieldable.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"yieldable.d.ts","sourceRoot":"","sources":["../../../src/Fx/internal/yieldable.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAGxC,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,KAAK,KAAK,EAAE,MAAM,UAAU,CAAC;AACpC,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"yieldable.d.ts","sourceRoot":"","sources":["../../../src/Fx/internal/yieldable.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAGxC,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,KAAK,KAAK,EAAE,MAAM,UAAU,CAAC;AACpC,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACxC,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAQrE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,8BAAsB,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAClD,SAAQ,sBAAsB,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CACxC,YAAW,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAEzB;;;;;;;;;;;;;OAaG;IACH,QAAQ,CAAC,CAAC,QAAQ,CAAC;;;;MAAY;IAE/B;;;;;;;;;;;;;;;;OAgBG;IACH,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC;IAEvF;;;;;;;;;;;;;OAaG;IACH,QAAQ,CAAC,QAAQ,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IAE9C;;;;;;;;;;;;;OAaG;IACH,IAAI,YAEH;IAGD,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,GAAG,IAAI,CAAQ;IAC1D;;;;;;;;;;;;;;OAcG;IACH,IAAI,QAAQ,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAEvC;CACF"}
|
|
@@ -1,20 +1,103 @@
|
|
|
1
|
-
import * as Effect from "effect/Effect";
|
|
2
1
|
import { identity } from "effect/Function";
|
|
3
2
|
import { pipeArguments } from "effect/Pipeable";
|
|
4
3
|
import { FxTypeId } from "../TypeId.js";
|
|
4
|
+
import { EffectableWithOverride } from "./effectableWithOverride.js";
|
|
5
5
|
const VARIANCE = {
|
|
6
6
|
_A: identity,
|
|
7
7
|
_E: identity,
|
|
8
8
|
_R: identity,
|
|
9
9
|
};
|
|
10
|
-
|
|
10
|
+
/** Base class for values that are both an Fx push source and an Effect-compatible sample.
|
|
11
|
+
*
|
|
12
|
+
* @remarks
|
|
13
|
+
* ## Why
|
|
14
|
+
*
|
|
15
|
+
* RefSubject and Versioned values need one object that composes through Fx operators when observed
|
|
16
|
+
* and through Effect operators when a current value is requested. This class supplies the shared
|
|
17
|
+
* brands, pipeability, and Effect evaluator bridge without forcing the two channels to have the
|
|
18
|
+
* same value, error, or service types.
|
|
19
|
+
*
|
|
20
|
+
* ## Ownership and lifetime
|
|
21
|
+
*
|
|
22
|
+
* The base class acquires no resources. `run` defines the push subscription lifetime and `toEffect`
|
|
23
|
+
* defines sampling. The first Effect evaluation memoizes the Effect object returned by `toEffect`,
|
|
24
|
+
* not its result: each execution still follows that Effect's own acquisition, error, interruption,
|
|
25
|
+
* and cleanup behavior.
|
|
26
|
+
*
|
|
27
|
+
* This is a published advanced extension point coupled to Typed's Fx brand and Effect evaluator
|
|
28
|
+
* protocol. Its shape may change between prereleases.
|
|
29
|
+
*
|
|
30
|
+
* @example
|
|
31
|
+
* ```ts
|
|
32
|
+
* import { YieldableFx } from "@typed/fx/Fx/internal/yieldable"
|
|
33
|
+
* import type { Sink } from "@typed/fx/Sink/Sink"
|
|
34
|
+
* import * as Effect from "effect/Effect"
|
|
35
|
+
*
|
|
36
|
+
* class One extends YieldableFx<number, never, never, number, never, never> {
|
|
37
|
+
* run<R>(sink: Sink<number, never, R>): Effect.Effect<unknown, never, R> {
|
|
38
|
+
* return sink.onSuccess(1)
|
|
39
|
+
* }
|
|
40
|
+
* toEffect() {
|
|
41
|
+
* return Effect.succeed(1)
|
|
42
|
+
* }
|
|
43
|
+
* }
|
|
44
|
+
* ```
|
|
45
|
+
*
|
|
46
|
+
* @since 1.0.0
|
|
47
|
+
* @category advanced
|
|
48
|
+
* @stability internal-but-published
|
|
49
|
+
*/
|
|
50
|
+
export class YieldableFx extends EffectableWithOverride {
|
|
51
|
+
/** Fx variance marker that makes subclasses valid `Fx<A, E, R>` values.
|
|
52
|
+
*
|
|
53
|
+
* @remarks
|
|
54
|
+
* ## Why
|
|
55
|
+
*
|
|
56
|
+
* The marker carries Fx's value, error, and service variance through subclass types.
|
|
57
|
+
*
|
|
58
|
+
* ## Ownership and lifetime
|
|
59
|
+
*
|
|
60
|
+
* Immutable protocol metadata shared through the instance; it acquires no resources.
|
|
61
|
+
*
|
|
62
|
+
* @since 1.0.0
|
|
63
|
+
* @category symbols
|
|
64
|
+
*/
|
|
11
65
|
[FxTypeId] = VARIANCE;
|
|
66
|
+
/** Pipes this dual Fx/Effect value through Effect or Typed combinators.
|
|
67
|
+
*
|
|
68
|
+
* @remarks
|
|
69
|
+
* ## Why
|
|
70
|
+
*
|
|
71
|
+
* Delegates to Effect's `pipeArguments` and acquires no resources.
|
|
72
|
+
*
|
|
73
|
+
* ## Ownership and lifetime
|
|
74
|
+
*
|
|
75
|
+
* Returns the combinator result and retains no state beyond whatever that result captures.
|
|
76
|
+
*
|
|
77
|
+
* @since 1.0.0
|
|
78
|
+
* @category combinators
|
|
79
|
+
*/
|
|
12
80
|
pipe() {
|
|
13
81
|
return pipeArguments(this, arguments);
|
|
14
82
|
}
|
|
15
83
|
// Memoize the effect
|
|
16
84
|
_effect = null;
|
|
17
|
-
|
|
85
|
+
/** Memoized Effect view used by Effect's evaluator protocol.
|
|
86
|
+
*
|
|
87
|
+
* @remarks
|
|
88
|
+
* ## Why
|
|
89
|
+
*
|
|
90
|
+
* The getter calls `toEffect` at most once per instance. It does not run the Effect and therefore
|
|
91
|
+
* does not memoize successes or failures.
|
|
92
|
+
*
|
|
93
|
+
* ## Ownership and lifetime
|
|
94
|
+
*
|
|
95
|
+
* The instance retains the Effect description for its lifetime; each execution owns its own work.
|
|
96
|
+
*
|
|
97
|
+
* @since 1.0.0
|
|
98
|
+
* @category effects
|
|
99
|
+
*/
|
|
100
|
+
get override() {
|
|
18
101
|
return (this._effect ??= this.toEffect());
|
|
19
102
|
}
|
|
20
103
|
}
|