@typed/fx 2.0.0-beta.0 → 2.0.0-beta.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +58 -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 +245 -0
- package/dist/Fx/combinators/additive.d.ts.map +1 -0
- package/dist/Fx/combinators/additive.js +243 -0
- package/dist/Fx/combinators/catch.d.ts +246 -12
- package/dist/Fx/combinators/catch.d.ts.map +1 -1
- package/dist/Fx/combinators/catch.js +236 -12
- 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 +40 -0
- package/dist/Fx/combinators/changesWithEffect.d.ts.map +1 -0
- package/dist/Fx/combinators/changesWithEffect.js +48 -0
- 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 +71 -0
- package/dist/Fx/combinators/dropUntil.d.ts.map +1 -0
- package/dist/Fx/combinators/dropUntil.js +65 -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 +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 +51 -4
- 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 +45 -0
- package/dist/Fx/combinators/index.d.ts.map +1 -1
- package/dist/Fx/combinators/index.js +45 -0
- package/dist/Fx/combinators/keyed.d.ts +124 -10
- 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 +40 -0
- package/dist/Fx/combinators/mapBoth.d.ts.map +1 -0
- package/dist/Fx/combinators/mapBoth.js +33 -0
- 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 +33 -0
- package/dist/Fx/combinators/mapError.d.ts.map +1 -0
- package/dist/Fx/combinators/mapError.js +32 -0
- 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 +162 -8
- package/dist/Fx/combinators/provide.d.ts.map +1 -1
- package/dist/Fx/combinators/provide.js +154 -6
- 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 +45 -0
- package/dist/Fx/combinators/result.d.ts.map +1 -0
- package/dist/Fx/combinators/result.js +46 -0
- 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 +72 -0
- package/dist/Fx/combinators/scan.d.ts.map +1 -0
- package/dist/Fx/combinators/scan.js +77 -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 +45 -1
- package/dist/Fx/combinators/skip.d.ts.map +1 -1
- package/dist/Fx/combinators/skip.js +43 -1
- 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 +117 -0
- package/dist/Fx/combinators/skipWhile.d.ts.map +1 -0
- package/dist/Fx/combinators/skipWhile.js +134 -0
- package/dist/Fx/combinators/slice.d.ts +97 -2
- package/dist/Fx/combinators/slice.d.ts.map +1 -1
- package/dist/Fx/combinators/slice.js +45 -1
- 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 +46 -1
- package/dist/Fx/combinators/take.d.ts.map +1 -1
- package/dist/Fx/combinators/take.js +44 -1
- package/dist/Fx/combinators/takeUntil.d.ts +62 -2
- package/dist/Fx/combinators/takeUntil.d.ts.map +1 -1
- package/dist/Fx/combinators/takeUntil.js +62 -2
- package/dist/Fx/combinators/takeWhile.d.ts +60 -0
- package/dist/Fx/combinators/takeWhile.d.ts.map +1 -0
- package/dist/Fx/combinators/takeWhile.js +54 -0
- 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 +135 -0
- package/dist/Fx/combinators/zip.d.ts.map +1 -0
- package/dist/Fx/combinators/zip.js +160 -0
- package/dist/Fx/constructors/at.d.ts +23 -3
- 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 +31 -2
- package/dist/Fx/constructors/periodic.d.ts.map +1 -1
- package/dist/Fx/constructors/periodic.js +30 -1
- package/dist/Fx/constructors/succeed.d.ts +79 -7
- package/dist/Fx/constructors/succeed.d.ts.map +1 -1
- package/dist/Fx/constructors/succeed.js +79 -7
- package/dist/Fx/constructors/suspend.d.ts +28 -0
- package/dist/Fx/constructors/suspend.d.ts.map +1 -1
- package/dist/Fx/constructors/suspend.js +28 -0
- package/dist/Fx/constructors/sync.d.ts +32 -0
- package/dist/Fx/constructors/sync.d.ts.map +1 -0
- package/dist/Fx/constructors/sync.js +32 -0
- package/dist/Fx/internal/DeferredRef.d.ts +259 -7
- package/dist/Fx/internal/DeferredRef.d.ts.map +1 -1
- package/dist/Fx/internal/DeferredRef.js +260 -9
- package/dist/Fx/internal/UnionToTuple.d.ts +22 -0
- package/dist/Fx/internal/UnionToTuple.d.ts.map +1 -1
- package/dist/Fx/internal/diff.d.ts +586 -0
- package/dist/Fx/internal/diff.d.ts.map +1 -1
- package/dist/Fx/internal/diff.js +120 -9
- package/dist/Fx/internal/effectableEvaluateKey.d.ts +30 -0
- package/dist/Fx/internal/effectableEvaluateKey.d.ts.map +1 -0
- package/dist/Fx/internal/effectableEvaluateKey.js +29 -0
- package/dist/Fx/internal/effectableWithOverride.d.ts +55 -0
- package/dist/Fx/internal/effectableWithOverride.d.ts.map +1 -0
- package/dist/Fx/internal/effectableWithOverride.js +46 -0
- package/dist/Fx/internal/equivalence.d.ts +29 -0
- package/dist/Fx/internal/equivalence.d.ts.map +1 -1
- package/dist/Fx/internal/equivalence.js +29 -0
- package/dist/Fx/internal/multicast.d.ts +145 -2
- package/dist/Fx/internal/multicast.d.ts.map +1 -1
- package/dist/Fx/internal/multicast.js +146 -4
- package/dist/Fx/internal/ring-buffer.d.ts +149 -0
- package/dist/Fx/internal/ring-buffer.d.ts.map +1 -1
- package/dist/Fx/internal/ring-buffer.js +155 -0
- package/dist/Fx/internal/scope.d.ts +184 -0
- package/dist/Fx/internal/scope.d.ts.map +1 -1
- package/dist/Fx/internal/scope.js +150 -0
- package/dist/Fx/internal/yieldable.d.ts +117 -2
- package/dist/Fx/internal/yieldable.d.ts.map +1 -1
- package/dist/Fx/internal/yieldable.js +86 -3
- package/dist/Fx/run/collect.d.ts +93 -4
- package/dist/Fx/run/collect.d.ts.map +1 -1
- package/dist/Fx/run/collect.js +94 -5
- package/dist/Fx/run/first.d.ts +23 -1
- package/dist/Fx/run/first.d.ts.map +1 -1
- package/dist/Fx/run/first.js +23 -1
- package/dist/Fx/run/fork.d.ts +52 -2
- package/dist/Fx/run/fork.d.ts.map +1 -1
- package/dist/Fx/run/fork.js +52 -2
- package/dist/Fx/run/observe.d.ts +112 -4
- package/dist/Fx/run/observe.d.ts.map +1 -1
- package/dist/Fx/run/observe.js +137 -16
- package/dist/Fx/run/runPromise.d.ts +45 -2
- package/dist/Fx/run/runPromise.d.ts.map +1 -1
- package/dist/Fx/run/runPromise.js +45 -2
- package/dist/Fx/stream.d.ts +92 -0
- package/dist/Fx/stream.d.ts.map +1 -1
- package/dist/Fx/stream.js +60 -1
- package/dist/Push/Push.d.ts +1286 -98
- package/dist/Push/Push.d.ts.map +1 -1
- package/dist/Push/Push.js +1074 -88
- 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 +137 -16
- 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 +1242 -43
- package/dist/RefSubject/RefSubject.d.ts.map +1 -1
- package/dist/RefSubject/RefSubject.js +1012 -86
- 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 +789 -3
- package/dist/Sink/combinators.d.ts.map +1 -1
- package/dist/Sink/combinators.js +812 -7
- 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 +475 -25
- package/dist/Versioned/Versioned.d.ts.map +1 -1
- package/dist/Versioned/Versioned.js +298 -46
- package/dist/index.d.ts +22 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +22 -3
- package/package.json +125 -11
- 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/catch.ts +0 -165
- package/src/Fx/combinators/causes.ts +0 -23
- package/src/Fx/combinators/compact.ts +0 -15
- package/src/Fx/combinators/continueWith.ts +0 -78
- 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 -36
- 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 -51
- 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/mapEffect.ts +0 -32
- 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 -62
- package/src/Fx/combinators/skip.ts +0 -20
- package/src/Fx/combinators/skipRepeats.ts +0 -15
- package/src/Fx/combinators/skipRepeatsWith.ts +0 -40
- package/src/Fx/combinators/slice.ts +0 -32
- package/src/Fx/combinators/switchMap.ts +0 -55
- package/src/Fx/combinators/switchMapEffect.ts +0 -25
- package/src/Fx/combinators/take.ts +0 -17
- package/src/Fx/combinators/takeUntil.ts +0 -50
- 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/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.catch.test.ts +0 -61
- package/src/Fx.fn.test.ts +0 -51
- package/src/Fx.lifecycle.test.ts +0 -80
- package/src/Fx.test.ts +0 -71
- package/src/Fx.ts +0 -1
- package/src/Push/Push.ts +0 -903
- package/src/Push/index.ts +0 -1
- 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 -2545
- 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.test.ts +0 -65
- package/src/RefSubject.ts +0 -1
- package/src/Sink/Sink.ts +0 -159
- package/src/Sink/combinators.ts +0 -993
- package/src/Sink/index.ts +0 -2
- 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 -521
- package/src/Versioned/index.ts +0 -1
- package/src/Versioned.test.ts +0 -23
- package/src/Versioned.ts +0 -1
- package/src/index.ts +0 -7
- package/tsconfig.json +0 -6
|
@@ -10,29 +10,73 @@ import type * as Fx from "../Fx/index.js";
|
|
|
10
10
|
import * as RefSubject from "./RefSubject.js";
|
|
11
11
|
/**
|
|
12
12
|
* A RefHashRing is a RefSubject specialized over a HashRing.
|
|
13
|
+
* @remarks
|
|
14
|
+
* ## Why
|
|
15
|
+
*
|
|
16
|
+
* Defines hash ring state with the same current-read, pushed-update, and synchronized-write
|
|
17
|
+
* contract as RefSubject.
|
|
18
|
+
*
|
|
19
|
+
* ## Ownership and lifetime
|
|
20
|
+
*
|
|
21
|
+
* RefHashRing is a contract and performs no acquisition. Implementations retain the errors,
|
|
22
|
+
* services, interruption, and Scope requirements expressed by its members.
|
|
23
|
+
*
|
|
13
24
|
* @since 1.18.0
|
|
14
|
-
* @category models
|
|
25
|
+
* @category State models
|
|
15
26
|
*/
|
|
16
27
|
export interface RefHashRing<in out A extends PrimaryKey.PrimaryKey, in out E = never, out R = never> extends RefSubject.RefSubject<HashRing.HashRing<A>, E, R> {
|
|
17
28
|
}
|
|
18
29
|
/**
|
|
19
30
|
* Creates a new `RefHashRing` from a HashRing, `Effect`, or `Fx`.
|
|
31
|
+
* @remarks
|
|
32
|
+
* ## Why
|
|
33
|
+
*
|
|
34
|
+
* Creates hash ring state with equality suited to that Effect data type, so unchanged values do
|
|
35
|
+
* not produce redundant pushed updates.
|
|
36
|
+
*
|
|
37
|
+
* ## Ownership and lifetime
|
|
38
|
+
*
|
|
39
|
+
* The creation Effect requires Scope. It owns initializer acquisition, live source subscriptions,
|
|
40
|
+
* and cleanup; source failures and services stay on reads and pushes.
|
|
41
|
+
*
|
|
20
42
|
* @since 1.18.0
|
|
21
|
-
* @category
|
|
43
|
+
* @category Constructors
|
|
22
44
|
*/
|
|
23
|
-
export declare function make<A extends PrimaryKey.PrimaryKey, E, R>(initial: HashRing.HashRing<A> | Effect.Effect<HashRing.HashRing<A>, E, R> | Fx.Fx<HashRing.HashRing<A>, E, R>): Effect.Effect<RefHashRing<A, E>, never, R | Scope.Scope>;
|
|
45
|
+
export declare function make<A extends PrimaryKey.PrimaryKey, E = never, R = never>(initial: HashRing.HashRing<A> | Effect.Effect<HashRing.HashRing<A>, E, R> | Fx.Fx<HashRing.HashRing<A>, E, R>): Effect.Effect<RefHashRing<A, E>, never, R | Scope.Scope>;
|
|
24
46
|
/**
|
|
25
47
|
* Creates a new empty RefHashRing.
|
|
48
|
+
* @remarks
|
|
49
|
+
* ## Why
|
|
50
|
+
*
|
|
51
|
+
* Creates a new empty RefHashRing. The operation remains attached to the RefSubject's versioned
|
|
52
|
+
* state boundary.
|
|
53
|
+
*
|
|
54
|
+
* ## Ownership and lifetime
|
|
55
|
+
*
|
|
56
|
+
* Running empty performs one serialized hash ring transition and resolves with its committed
|
|
57
|
+
* value. It acquires no resource; failures and services remain those of the source ref.
|
|
58
|
+
*
|
|
26
59
|
* @since 1.18.0
|
|
27
|
-
* @category
|
|
60
|
+
* @category Constructors
|
|
28
61
|
*/
|
|
29
|
-
export declare function empty<A extends PrimaryKey.PrimaryKey, E, R>(options?: {
|
|
62
|
+
export declare function empty<A extends PrimaryKey.PrimaryKey, E = never, R = never>(options?: {
|
|
30
63
|
readonly baseWeight?: number;
|
|
31
64
|
}): Effect.Effect<RefHashRing<A, E>, never, R | Scope.Scope>;
|
|
32
65
|
/**
|
|
33
66
|
* Add a node to the HashRing.
|
|
67
|
+
* @remarks
|
|
68
|
+
* ## Why
|
|
69
|
+
*
|
|
70
|
+
* Add a node to the HashRing. The operation remains attached to the RefSubject's versioned state
|
|
71
|
+
* boundary.
|
|
72
|
+
*
|
|
73
|
+
* ## Ownership and lifetime
|
|
74
|
+
*
|
|
75
|
+
* Running add performs one serialized hash ring transition and resolves with its committed value.
|
|
76
|
+
* It acquires no resource; failures and services remain those of the source ref.
|
|
77
|
+
*
|
|
34
78
|
* @since 1.18.0
|
|
35
|
-
* @category
|
|
79
|
+
* @category State updates
|
|
36
80
|
*/
|
|
37
81
|
export declare const add: {
|
|
38
82
|
<A extends PrimaryKey.PrimaryKey>(node: A, options?: {
|
|
@@ -44,8 +88,19 @@ export declare const add: {
|
|
|
44
88
|
};
|
|
45
89
|
/**
|
|
46
90
|
* Add multiple nodes to the HashRing.
|
|
91
|
+
* @remarks
|
|
92
|
+
* ## Why
|
|
93
|
+
*
|
|
94
|
+
* Add multiple nodes to the HashRing. The operation remains attached to the RefSubject's versioned
|
|
95
|
+
* state boundary.
|
|
96
|
+
*
|
|
97
|
+
* ## Ownership and lifetime
|
|
98
|
+
*
|
|
99
|
+
* Running add many performs one serialized hash ring transition and resolves with its committed
|
|
100
|
+
* value. It acquires no resource; failures and services remain those of the source ref.
|
|
101
|
+
*
|
|
47
102
|
* @since 1.18.0
|
|
48
|
-
* @category
|
|
103
|
+
* @category State updates
|
|
49
104
|
*/
|
|
50
105
|
export declare const addMany: {
|
|
51
106
|
<A extends PrimaryKey.PrimaryKey>(nodes: Iterable<A>, options?: {
|
|
@@ -57,8 +112,19 @@ export declare const addMany: {
|
|
|
57
112
|
};
|
|
58
113
|
/**
|
|
59
114
|
* Remove a node from the HashRing.
|
|
115
|
+
* @remarks
|
|
116
|
+
* ## Why
|
|
117
|
+
*
|
|
118
|
+
* Applies remove to the committed hash ring value and publishes only the result, preserving its
|
|
119
|
+
* element order and equality rules.
|
|
120
|
+
*
|
|
121
|
+
* ## Ownership and lifetime
|
|
122
|
+
*
|
|
123
|
+
* Running remove performs one serialized hash ring transition and resolves with its committed
|
|
124
|
+
* value. It acquires no resource; failures and services remain those of the source ref.
|
|
125
|
+
*
|
|
60
126
|
* @since 1.18.0
|
|
61
|
-
* @category
|
|
127
|
+
* @category State updates
|
|
62
128
|
*/
|
|
63
129
|
export declare const remove: {
|
|
64
130
|
<A extends PrimaryKey.PrimaryKey>(node: A): <E, R>(ref: RefHashRing<A, E, R>) => Effect.Effect<HashRing.HashRing<A>, E, R>;
|
|
@@ -66,8 +132,19 @@ export declare const remove: {
|
|
|
66
132
|
};
|
|
67
133
|
/**
|
|
68
134
|
* Check if a node exists in the HashRing.
|
|
135
|
+
* @remarks
|
|
136
|
+
* ## Why
|
|
137
|
+
*
|
|
138
|
+
* Makes has a live projection of the hash ring; consumers can sample it now or observe it without
|
|
139
|
+
* copying the source state.
|
|
140
|
+
*
|
|
141
|
+
* ## Ownership and lifetime
|
|
142
|
+
*
|
|
143
|
+
* The has view retains no independent state. An Effect read samples the source once; Fx
|
|
144
|
+
* observation follows later pushes and its observing Scope owns subscription cleanup.
|
|
145
|
+
*
|
|
69
146
|
* @since 1.18.0
|
|
70
|
-
* @category
|
|
147
|
+
* @category State predicates
|
|
71
148
|
*/
|
|
72
149
|
export declare const has: {
|
|
73
150
|
<A extends PrimaryKey.PrimaryKey>(node: A): <E, R>(ref: RefHashRing<A, E, R>) => RefSubject.Computed<boolean, E, R>;
|
|
@@ -75,21 +152,54 @@ export declare const has: {
|
|
|
75
152
|
};
|
|
76
153
|
/**
|
|
77
154
|
* Get the number of nodes in the HashRing.
|
|
155
|
+
* @remarks
|
|
156
|
+
* ## Why
|
|
157
|
+
*
|
|
158
|
+
* Makes size a live projection of the hash ring; consumers can sample it now or observe it without
|
|
159
|
+
* copying the source state.
|
|
160
|
+
*
|
|
161
|
+
* ## Ownership and lifetime
|
|
162
|
+
*
|
|
163
|
+
* The size view retains no independent state. An Effect read samples the source once; Fx
|
|
164
|
+
* observation follows later pushes and its observing Scope owns subscription cleanup.
|
|
165
|
+
*
|
|
78
166
|
* @since 1.18.0
|
|
79
|
-
* @category
|
|
167
|
+
* @category Derived queries
|
|
80
168
|
*/
|
|
81
169
|
export declare const size: <A extends PrimaryKey.PrimaryKey, E, R>(ref: RefHashRing<A, E, R>) => RefSubject.Computed<number, E, R>;
|
|
82
170
|
/**
|
|
83
171
|
* Check if the HashRing is empty.
|
|
172
|
+
* @remarks
|
|
173
|
+
* ## Why
|
|
174
|
+
*
|
|
175
|
+
* Makes is empty a live projection of the hash ring; consumers can sample it now or observe it
|
|
176
|
+
* without copying the source state.
|
|
177
|
+
*
|
|
178
|
+
* ## Ownership and lifetime
|
|
179
|
+
*
|
|
180
|
+
* The is empty view retains no independent state. An Effect read samples the source once; Fx
|
|
181
|
+
* observation follows later pushes and its observing Scope owns subscription cleanup.
|
|
182
|
+
*
|
|
84
183
|
* @since 1.18.0
|
|
85
|
-
* @category
|
|
184
|
+
* @category State predicates
|
|
86
185
|
*/
|
|
87
186
|
export declare const isEmpty: <A extends PrimaryKey.PrimaryKey, E, R>(ref: RefHashRing<A, E, R>) => RefSubject.Computed<boolean, E, R>;
|
|
88
187
|
/**
|
|
89
188
|
* Get the node which should handle a given input string as a Computed.
|
|
90
189
|
* Returns undefined if the ring is empty.
|
|
190
|
+
* @remarks
|
|
191
|
+
* ## Why
|
|
192
|
+
*
|
|
193
|
+
* Projects the selected node for current reads and later pushes. An empty ring is represented by
|
|
194
|
+
* `undefined` inside the Computed value; it does not become Filtered or add `NoSuchElementError`.
|
|
195
|
+
*
|
|
196
|
+
* ## Ownership and lifetime
|
|
197
|
+
*
|
|
198
|
+
* The get node view retains no independent state. An Effect read samples the source once; Fx
|
|
199
|
+
* observation follows later pushes and its observing Scope owns subscription cleanup.
|
|
200
|
+
*
|
|
91
201
|
* @since 1.18.0
|
|
92
|
-
* @category
|
|
202
|
+
* @category Derived queries
|
|
93
203
|
*/
|
|
94
204
|
export declare const getNode: {
|
|
95
205
|
(input: string): <A extends PrimaryKey.PrimaryKey, E, R>(ref: RefHashRing<A, E, R>) => RefSubject.Computed<A | undefined, E, R>;
|
|
@@ -97,8 +207,20 @@ export declare const getNode: {
|
|
|
97
207
|
};
|
|
98
208
|
/**
|
|
99
209
|
* Get shard distribution across nodes.
|
|
210
|
+
* @remarks
|
|
211
|
+
* ## Why
|
|
212
|
+
*
|
|
213
|
+
* Projects the shard distribution for current reads and later pushes. An empty ring is represented
|
|
214
|
+
* by `undefined` inside the Computed value; it does not become Filtered or add
|
|
215
|
+
* `NoSuchElementError`.
|
|
216
|
+
*
|
|
217
|
+
* ## Ownership and lifetime
|
|
218
|
+
*
|
|
219
|
+
* The get shards view retains no independent state. An Effect read samples the source once; Fx
|
|
220
|
+
* observation follows later pushes and its observing Scope owns subscription cleanup.
|
|
221
|
+
*
|
|
100
222
|
* @since 1.18.0
|
|
101
|
-
* @category
|
|
223
|
+
* @category Derived queries
|
|
102
224
|
*/
|
|
103
225
|
export declare const getShards: {
|
|
104
226
|
(count: number): <A extends PrimaryKey.PrimaryKey, E, R>(ref: RefHashRing<A, E, R>) => RefSubject.Computed<Array<A> | undefined, E, R>;
|
|
@@ -106,15 +228,37 @@ export declare const getShards: {
|
|
|
106
228
|
};
|
|
107
229
|
/**
|
|
108
230
|
* Get all nodes as an array.
|
|
231
|
+
* @remarks
|
|
232
|
+
* ## Why
|
|
233
|
+
*
|
|
234
|
+
* Projects hash ring state with values for both current reads and future pushes, avoiding a second
|
|
235
|
+
* mutable cache of the derived value.
|
|
236
|
+
*
|
|
237
|
+
* ## Ownership and lifetime
|
|
238
|
+
*
|
|
239
|
+
* The values view retains no independent state. An Effect read samples the source once; Fx
|
|
240
|
+
* observation follows later pushes and its observing Scope owns subscription cleanup.
|
|
241
|
+
*
|
|
109
242
|
* @since 1.18.0
|
|
110
|
-
* @category
|
|
243
|
+
* @category Derived queries
|
|
111
244
|
*/
|
|
112
245
|
export declare const values: <A extends PrimaryKey.PrimaryKey, E, R>(ref: RefHashRing<A, E, R>) => RefSubject.Computed<Array<A>, E, R>;
|
|
113
246
|
/**
|
|
114
247
|
* Get the node which should handle a given input string as a Filtered.
|
|
115
248
|
* Fails if the ring is empty.
|
|
249
|
+
* @remarks
|
|
250
|
+
* ## Why
|
|
251
|
+
*
|
|
252
|
+
* Models the possibly absent result of get as Filtered state, so absence stays explicit while
|
|
253
|
+
* later source versions can make a value available.
|
|
254
|
+
*
|
|
255
|
+
* ## Ownership and lifetime
|
|
256
|
+
*
|
|
257
|
+
* The get view retains no independent value. Its Effect read fails with NoSuchElement
|
|
258
|
+
* while absent; the observing Scope owns and finalizes its Fx subscription.
|
|
259
|
+
*
|
|
116
260
|
* @since 1.18.0
|
|
117
|
-
* @category
|
|
261
|
+
* @category Optional queries
|
|
118
262
|
*/
|
|
119
263
|
export declare const get: {
|
|
120
264
|
(input: string): <A extends PrimaryKey.PrimaryKey, E, R>(ref: RefHashRing<A, E, R>) => RefSubject.Filtered<A, E, R>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RefHashRing.d.ts","sourceRoot":"","sources":["../../src/RefSubject/RefHashRing.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,KAAK,MAAM,MAAM,eAAe,CAAC;AAG7C,OAAO,KAAK,QAAQ,MAAM,iBAAiB,CAAC;AAE5C,OAAO,KAAK,KAAK,UAAU,MAAM,mBAAmB,CAAC;AACrD,OAAO,KAAK,KAAK,KAAK,MAAM,cAAc,CAAC;AAC3C,OAAO,KAAK,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,KAAK,UAAU,MAAM,iBAAiB,CAAC;AAE9C
|
|
1
|
+
{"version":3,"file":"RefHashRing.d.ts","sourceRoot":"","sources":["../../src/RefSubject/RefHashRing.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,16 +9,38 @@ import * as Option from "effect/Option";
|
|
|
9
9
|
import * as RefSubject from "./RefSubject.js";
|
|
10
10
|
/**
|
|
11
11
|
* Creates a new `RefHashRing` from a HashRing, `Effect`, or `Fx`.
|
|
12
|
+
* @remarks
|
|
13
|
+
* ## Why
|
|
14
|
+
*
|
|
15
|
+
* Creates hash ring state with equality suited to that Effect data type, so unchanged values do
|
|
16
|
+
* not produce redundant pushed updates.
|
|
17
|
+
*
|
|
18
|
+
* ## Ownership and lifetime
|
|
19
|
+
*
|
|
20
|
+
* The creation Effect requires Scope. It owns initializer acquisition, live source subscriptions,
|
|
21
|
+
* and cleanup; source failures and services stay on reads and pushes.
|
|
22
|
+
*
|
|
12
23
|
* @since 1.18.0
|
|
13
|
-
* @category
|
|
24
|
+
* @category Constructors
|
|
14
25
|
*/
|
|
15
26
|
export function make(initial) {
|
|
16
27
|
return RefSubject.make(initial, { eq: equals });
|
|
17
28
|
}
|
|
18
29
|
/**
|
|
19
30
|
* Creates a new empty RefHashRing.
|
|
31
|
+
* @remarks
|
|
32
|
+
* ## Why
|
|
33
|
+
*
|
|
34
|
+
* Creates a new empty RefHashRing. The operation remains attached to the RefSubject's versioned
|
|
35
|
+
* state boundary.
|
|
36
|
+
*
|
|
37
|
+
* ## Ownership and lifetime
|
|
38
|
+
*
|
|
39
|
+
* Running empty performs one serialized hash ring transition and resolves with its committed
|
|
40
|
+
* value. It acquires no resource; failures and services remain those of the source ref.
|
|
41
|
+
*
|
|
20
42
|
* @since 1.18.0
|
|
21
|
-
* @category
|
|
43
|
+
* @category Constructors
|
|
22
44
|
*/
|
|
23
45
|
export function empty(options) {
|
|
24
46
|
return RefSubject.make(HashRing.make(options), { eq: equals });
|
|
@@ -33,24 +55,57 @@ function copyRing(ring) {
|
|
|
33
55
|
// ========================================
|
|
34
56
|
/**
|
|
35
57
|
* Add a node to the HashRing.
|
|
58
|
+
* @remarks
|
|
59
|
+
* ## Why
|
|
60
|
+
*
|
|
61
|
+
* Add a node to the HashRing. The operation remains attached to the RefSubject's versioned state
|
|
62
|
+
* boundary.
|
|
63
|
+
*
|
|
64
|
+
* ## Ownership and lifetime
|
|
65
|
+
*
|
|
66
|
+
* Running add performs one serialized hash ring transition and resolves with its committed value.
|
|
67
|
+
* It acquires no resource; failures and services remain those of the source ref.
|
|
68
|
+
*
|
|
36
69
|
* @since 1.18.0
|
|
37
|
-
* @category
|
|
70
|
+
* @category State updates
|
|
38
71
|
*/
|
|
39
72
|
export const add = dual((args) => RefSubject.isRefSubject(args[0]), function add(ref, node, options) {
|
|
40
73
|
return RefSubject.update(ref, (ring) => HashRing.add(copyRing(ring), node, options));
|
|
41
74
|
});
|
|
42
75
|
/**
|
|
43
76
|
* Add multiple nodes to the HashRing.
|
|
77
|
+
* @remarks
|
|
78
|
+
* ## Why
|
|
79
|
+
*
|
|
80
|
+
* Add multiple nodes to the HashRing. The operation remains attached to the RefSubject's versioned
|
|
81
|
+
* state boundary.
|
|
82
|
+
*
|
|
83
|
+
* ## Ownership and lifetime
|
|
84
|
+
*
|
|
85
|
+
* Running add many performs one serialized hash ring transition and resolves with its committed
|
|
86
|
+
* value. It acquires no resource; failures and services remain those of the source ref.
|
|
87
|
+
*
|
|
44
88
|
* @since 1.18.0
|
|
45
|
-
* @category
|
|
89
|
+
* @category State updates
|
|
46
90
|
*/
|
|
47
91
|
export const addMany = dual((args) => RefSubject.isRefSubject(args[0]), function addMany(ref, nodes, options) {
|
|
48
92
|
return RefSubject.update(ref, (ring) => HashRing.addMany(copyRing(ring), nodes, options));
|
|
49
93
|
});
|
|
50
94
|
/**
|
|
51
95
|
* Remove a node from the HashRing.
|
|
96
|
+
* @remarks
|
|
97
|
+
* ## Why
|
|
98
|
+
*
|
|
99
|
+
* Applies remove to the committed hash ring value and publishes only the result, preserving its
|
|
100
|
+
* element order and equality rules.
|
|
101
|
+
*
|
|
102
|
+
* ## Ownership and lifetime
|
|
103
|
+
*
|
|
104
|
+
* Running remove performs one serialized hash ring transition and resolves with its committed
|
|
105
|
+
* value. It acquires no resource; failures and services remain those of the source ref.
|
|
106
|
+
*
|
|
52
107
|
* @since 1.18.0
|
|
53
|
-
* @category
|
|
108
|
+
* @category State updates
|
|
54
109
|
*/
|
|
55
110
|
export const remove = dual(2, function remove(ref, node) {
|
|
56
111
|
return RefSubject.update(ref, (ring) => HashRing.remove(copyRing(ring), node));
|
|
@@ -60,45 +115,112 @@ export const remove = dual(2, function remove(ref, node) {
|
|
|
60
115
|
// ========================================
|
|
61
116
|
/**
|
|
62
117
|
* Check if a node exists in the HashRing.
|
|
118
|
+
* @remarks
|
|
119
|
+
* ## Why
|
|
120
|
+
*
|
|
121
|
+
* Makes has a live projection of the hash ring; consumers can sample it now or observe it without
|
|
122
|
+
* copying the source state.
|
|
123
|
+
*
|
|
124
|
+
* ## Ownership and lifetime
|
|
125
|
+
*
|
|
126
|
+
* The has view retains no independent state. An Effect read samples the source once; Fx
|
|
127
|
+
* observation follows later pushes and its observing Scope owns subscription cleanup.
|
|
128
|
+
*
|
|
63
129
|
* @since 1.18.0
|
|
64
|
-
* @category
|
|
130
|
+
* @category State predicates
|
|
65
131
|
*/
|
|
66
132
|
export const has = dual(2, function has(ref, node) {
|
|
67
133
|
return RefSubject.map(ref, HashRing.has(node));
|
|
68
134
|
});
|
|
69
135
|
/**
|
|
70
136
|
* Get the number of nodes in the HashRing.
|
|
137
|
+
* @remarks
|
|
138
|
+
* ## Why
|
|
139
|
+
*
|
|
140
|
+
* Makes size a live projection of the hash ring; consumers can sample it now or observe it without
|
|
141
|
+
* copying the source state.
|
|
142
|
+
*
|
|
143
|
+
* ## Ownership and lifetime
|
|
144
|
+
*
|
|
145
|
+
* The size view retains no independent state. An Effect read samples the source once; Fx
|
|
146
|
+
* observation follows later pushes and its observing Scope owns subscription cleanup.
|
|
147
|
+
*
|
|
71
148
|
* @since 1.18.0
|
|
72
|
-
* @category
|
|
149
|
+
* @category Derived queries
|
|
73
150
|
*/
|
|
74
151
|
export const size = (ref) => RefSubject.map(ref, (ring) => ring.nodes.size);
|
|
75
152
|
/**
|
|
76
153
|
* Check if the HashRing is empty.
|
|
154
|
+
* @remarks
|
|
155
|
+
* ## Why
|
|
156
|
+
*
|
|
157
|
+
* Makes is empty a live projection of the hash ring; consumers can sample it now or observe it
|
|
158
|
+
* without copying the source state.
|
|
159
|
+
*
|
|
160
|
+
* ## Ownership and lifetime
|
|
161
|
+
*
|
|
162
|
+
* The is empty view retains no independent state. An Effect read samples the source once; Fx
|
|
163
|
+
* observation follows later pushes and its observing Scope owns subscription cleanup.
|
|
164
|
+
*
|
|
77
165
|
* @since 1.18.0
|
|
78
|
-
* @category
|
|
166
|
+
* @category State predicates
|
|
79
167
|
*/
|
|
80
168
|
export const isEmpty = (ref) => RefSubject.map(ref, (ring) => ring.nodes.size === 0);
|
|
81
169
|
/**
|
|
82
170
|
* Get the node which should handle a given input string as a Computed.
|
|
83
171
|
* Returns undefined if the ring is empty.
|
|
172
|
+
* @remarks
|
|
173
|
+
* ## Why
|
|
174
|
+
*
|
|
175
|
+
* Projects the selected node for current reads and later pushes. An empty ring is represented by
|
|
176
|
+
* `undefined` inside the Computed value; it does not become Filtered or add `NoSuchElementError`.
|
|
177
|
+
*
|
|
178
|
+
* ## Ownership and lifetime
|
|
179
|
+
*
|
|
180
|
+
* The get node view retains no independent state. An Effect read samples the source once; Fx
|
|
181
|
+
* observation follows later pushes and its observing Scope owns subscription cleanup.
|
|
182
|
+
*
|
|
84
183
|
* @since 1.18.0
|
|
85
|
-
* @category
|
|
184
|
+
* @category Derived queries
|
|
86
185
|
*/
|
|
87
186
|
export const getNode = dual(2, function getNode(ref, input) {
|
|
88
187
|
return RefSubject.map(ref, (ring) => HashRing.get(ring, input));
|
|
89
188
|
});
|
|
90
189
|
/**
|
|
91
190
|
* Get shard distribution across nodes.
|
|
191
|
+
* @remarks
|
|
192
|
+
* ## Why
|
|
193
|
+
*
|
|
194
|
+
* Projects the shard distribution for current reads and later pushes. An empty ring is represented
|
|
195
|
+
* by `undefined` inside the Computed value; it does not become Filtered or add
|
|
196
|
+
* `NoSuchElementError`.
|
|
197
|
+
*
|
|
198
|
+
* ## Ownership and lifetime
|
|
199
|
+
*
|
|
200
|
+
* The get shards view retains no independent state. An Effect read samples the source once; Fx
|
|
201
|
+
* observation follows later pushes and its observing Scope owns subscription cleanup.
|
|
202
|
+
*
|
|
92
203
|
* @since 1.18.0
|
|
93
|
-
* @category
|
|
204
|
+
* @category Derived queries
|
|
94
205
|
*/
|
|
95
206
|
export const getShards = dual(2, function getShards(ref, count) {
|
|
96
207
|
return RefSubject.map(ref, (ring) => HashRing.getShards(ring, count));
|
|
97
208
|
});
|
|
98
209
|
/**
|
|
99
210
|
* Get all nodes as an array.
|
|
211
|
+
* @remarks
|
|
212
|
+
* ## Why
|
|
213
|
+
*
|
|
214
|
+
* Projects hash ring state with values for both current reads and future pushes, avoiding a second
|
|
215
|
+
* mutable cache of the derived value.
|
|
216
|
+
*
|
|
217
|
+
* ## Ownership and lifetime
|
|
218
|
+
*
|
|
219
|
+
* The values view retains no independent state. An Effect read samples the source once; Fx
|
|
220
|
+
* observation follows later pushes and its observing Scope owns subscription cleanup.
|
|
221
|
+
*
|
|
100
222
|
* @since 1.18.0
|
|
101
|
-
* @category
|
|
223
|
+
* @category Derived queries
|
|
102
224
|
*/
|
|
103
225
|
export const values = (ref) => RefSubject.map(ref, (ring) => Array.from(ring));
|
|
104
226
|
// ========================================
|
|
@@ -107,8 +229,19 @@ export const values = (ref) => RefSubject.map(ref, (ring) => Array.from(ring));
|
|
|
107
229
|
/**
|
|
108
230
|
* Get the node which should handle a given input string as a Filtered.
|
|
109
231
|
* Fails if the ring is empty.
|
|
232
|
+
* @remarks
|
|
233
|
+
* ## Why
|
|
234
|
+
*
|
|
235
|
+
* Models the possibly absent result of get as Filtered state, so absence stays explicit while
|
|
236
|
+
* later source versions can make a value available.
|
|
237
|
+
*
|
|
238
|
+
* ## Ownership and lifetime
|
|
239
|
+
*
|
|
240
|
+
* The get view retains no independent value. Its Effect read fails with NoSuchElement
|
|
241
|
+
* while absent; the observing Scope owns and finalizes its Fx subscription.
|
|
242
|
+
*
|
|
110
243
|
* @since 1.18.0
|
|
111
|
-
* @category
|
|
244
|
+
* @category Optional queries
|
|
112
245
|
*/
|
|
113
246
|
export const get = dual(2, function get(ref, input) {
|
|
114
247
|
return RefSubject.filterMap(ref, (ring) => Option.fromUndefinedOr(HashRing.get(ring, input)));
|