@typed/fx 1.17.4 → 1.18.0
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 +5 -0
- package/dist/cjs/Computed.js +111 -74
- package/dist/cjs/Computed.js.map +1 -1
- package/dist/cjs/Emitter.js +37 -0
- package/dist/cjs/Emitter.js.map +1 -0
- package/dist/cjs/Filtered.js +91 -74
- package/dist/cjs/Filtered.js.map +1 -1
- package/dist/cjs/Form.js +123 -0
- package/dist/cjs/Form.js.map +1 -0
- package/dist/cjs/FormEntry.js +78 -0
- package/dist/cjs/FormEntry.js.map +1 -0
- package/dist/cjs/Fx.js +1303 -31
- package/dist/cjs/Fx.js.map +1 -1
- package/dist/cjs/Guard.js +67 -0
- package/dist/cjs/Guard.js.map +1 -0
- package/dist/cjs/Idle.js +176 -0
- package/dist/cjs/Idle.js.map +1 -0
- package/dist/cjs/Match.js +156 -0
- package/dist/cjs/Match.js.map +1 -0
- package/dist/cjs/Model.js +119 -0
- package/dist/cjs/Model.js.map +1 -0
- package/dist/cjs/Pull.js +50 -0
- package/dist/cjs/Pull.js.map +1 -0
- package/dist/cjs/RefArray.js +248 -94
- package/dist/cjs/RefArray.js.map +1 -1
- package/dist/cjs/RefAsyncData.js +187 -0
- package/dist/cjs/RefAsyncData.js.map +1 -0
- package/dist/cjs/RefAsyncDataArray.js +38 -0
- package/dist/cjs/RefAsyncDataArray.js.map +1 -0
- package/dist/cjs/RefBoolean.js +45 -0
- package/dist/cjs/RefBoolean.js.map +1 -0
- package/dist/cjs/RefChunk.js +210 -0
- package/dist/cjs/RefChunk.js.map +1 -0
- package/dist/cjs/RefHashMap.js +198 -0
- package/dist/cjs/RefHashMap.js.map +1 -0
- package/dist/cjs/RefHashSet.js +96 -0
- package/dist/cjs/RefHashSet.js.map +1 -0
- package/dist/cjs/RefNumber.js +49 -0
- package/dist/cjs/RefNumber.js.map +1 -0
- package/dist/cjs/RefSubject.js +234 -431
- package/dist/cjs/RefSubject.js.map +1 -1
- package/dist/cjs/Sink.js +118 -8
- package/dist/cjs/Sink.js.map +1 -1
- package/dist/cjs/Stream.js +82 -0
- package/dist/cjs/Stream.js.map +1 -0
- package/dist/cjs/Subject.js +87 -49
- package/dist/cjs/Subject.js.map +1 -1
- package/dist/cjs/TypeId.js +27 -0
- package/dist/cjs/TypeId.js.map +1 -0
- package/dist/cjs/Typeclass.js +383 -0
- package/dist/cjs/Typeclass.js.map +1 -0
- package/dist/cjs/Versioned.js +111 -0
- package/dist/cjs/Versioned.js.map +1 -0
- package/dist/cjs/index.js +52 -213
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/internal/bounds.js +26 -0
- package/dist/cjs/internal/bounds.js.map +1 -0
- package/dist/cjs/internal/core-ref-subject.js +254 -0
- package/dist/cjs/internal/core-ref-subject.js.map +1 -0
- package/dist/cjs/internal/core-subject.js +108 -0
- package/dist/cjs/internal/core-subject.js.map +1 -0
- package/dist/cjs/internal/core.js +924 -0
- package/dist/cjs/internal/core.js.map +1 -0
- package/dist/cjs/internal/deferred-ref.js +32 -0
- package/dist/cjs/internal/deferred-ref.js.map +1 -0
- package/dist/cjs/internal/effect-operator.js +147 -0
- package/dist/cjs/internal/effect-operator.js.map +1 -0
- package/dist/cjs/internal/effect-primitive.js +47 -0
- package/dist/cjs/internal/effect-primitive.js.map +1 -0
- package/dist/cjs/internal/fx-effect-proto.js +58 -0
- package/dist/cjs/internal/fx-effect-proto.js.map +1 -0
- package/dist/cjs/internal/fx-primitive.js +193 -0
- package/dist/cjs/internal/fx-primitive.js.map +1 -0
- package/dist/cjs/internal/fx.js +240 -0
- package/dist/cjs/internal/fx.js.map +1 -0
- package/dist/cjs/internal/helpers.js +270 -0
- package/dist/cjs/internal/helpers.js.map +1 -0
- package/dist/cjs/internal/keyed.js +198 -0
- package/dist/cjs/internal/keyed.js.map +1 -0
- package/dist/cjs/internal/matchers.js +34 -0
- package/dist/cjs/internal/matchers.js.map +1 -0
- package/dist/cjs/internal/protos.js +110 -0
- package/dist/cjs/internal/protos.js.map +1 -0
- package/dist/cjs/internal/provide.js +78 -0
- package/dist/cjs/internal/provide.js.map +1 -0
- package/dist/cjs/internal/requestIdleCallback.js +22 -0
- package/dist/cjs/internal/requestIdleCallback.js.map +1 -0
- package/dist/cjs/internal/run.js +54 -0
- package/dist/cjs/internal/run.js.map +1 -0
- package/dist/cjs/internal/schema-ref-subject.js +132 -0
- package/dist/cjs/internal/schema-ref-subject.js.map +1 -0
- package/dist/cjs/internal/share.js +79 -0
- package/dist/cjs/internal/share.js.map +1 -0
- package/dist/cjs/internal/strategies.js +34 -0
- package/dist/cjs/internal/strategies.js.map +1 -0
- package/dist/cjs/internal/sync-operator.js +92 -0
- package/dist/cjs/internal/sync-operator.js.map +1 -0
- package/dist/cjs/internal/versioned-transform.js +46 -0
- package/dist/cjs/internal/versioned-transform.js.map +1 -0
- package/dist/cjs/internal/withKey.js +69 -0
- package/dist/cjs/internal/withKey.js.map +1 -0
- package/dist/dts/Computed.d.ts +106 -0
- package/dist/dts/Computed.d.ts.map +1 -0
- package/dist/dts/Emitter.d.ts +31 -0
- package/dist/dts/Emitter.d.ts.map +1 -0
- package/dist/dts/Filtered.d.ts +97 -0
- package/dist/dts/Filtered.d.ts.map +1 -0
- package/dist/dts/Form.d.ts +126 -0
- package/dist/dts/Form.d.ts.map +1 -0
- package/dist/dts/FormEntry.d.ts +53 -0
- package/dist/dts/FormEntry.d.ts.map +1 -0
- package/dist/dts/Fx.d.ts +2006 -0
- package/dist/dts/Fx.d.ts.map +1 -0
- package/dist/dts/Guard.d.ts +95 -0
- package/dist/dts/Guard.d.ts.map +1 -0
- package/dist/dts/Idle.d.ts +84 -0
- package/dist/dts/Idle.d.ts.map +1 -0
- package/dist/dts/Match.d.ts +66 -0
- package/dist/dts/Match.d.ts.map +1 -0
- package/dist/dts/Model.d.ts +200 -0
- package/dist/dts/Model.d.ts.map +1 -0
- package/dist/dts/Pull.d.ts +37 -0
- package/dist/dts/Pull.d.ts.map +1 -0
- package/dist/dts/RefArray.d.ts +281 -0
- package/dist/dts/RefArray.d.ts.map +1 -0
- package/dist/dts/RefAsyncData.d.ts +236 -0
- package/dist/dts/RefAsyncData.d.ts.map +1 -0
- package/dist/dts/RefAsyncDataArray.d.ts +56 -0
- package/dist/dts/RefAsyncDataArray.d.ts.map +1 -0
- package/dist/dts/RefBoolean.d.ts +47 -0
- package/dist/dts/RefBoolean.d.ts.map +1 -0
- package/dist/dts/RefChunk.d.ts +232 -0
- package/dist/dts/RefChunk.d.ts.map +1 -0
- package/dist/dts/RefHashMap.d.ts +190 -0
- package/dist/dts/RefHashMap.d.ts.map +1 -0
- package/dist/dts/RefHashSet.d.ts +104 -0
- package/dist/dts/RefHashSet.d.ts.map +1 -0
- package/dist/dts/RefNumber.d.ts +48 -0
- package/dist/dts/RefNumber.d.ts.map +1 -0
- package/dist/dts/RefSubject.d.ts +282 -0
- package/dist/dts/RefSubject.d.ts.map +1 -0
- package/dist/dts/Sink.d.ts +152 -0
- package/dist/dts/Sink.d.ts.map +1 -0
- package/dist/dts/Stream.d.ts +60 -0
- package/dist/dts/Stream.d.ts.map +1 -0
- package/dist/dts/Subject.d.ts +69 -0
- package/dist/dts/Subject.d.ts.map +1 -0
- package/dist/dts/TypeId.d.ts +41 -0
- package/dist/dts/TypeId.d.ts.map +1 -0
- package/dist/dts/Typeclass.d.ts +284 -0
- package/dist/dts/Typeclass.d.ts.map +1 -0
- package/dist/dts/Versioned.d.ts +143 -0
- package/dist/dts/Versioned.d.ts.map +1 -0
- package/dist/dts/index.d.ts +56 -0
- package/dist/dts/index.d.ts.map +1 -0
- package/dist/dts/internal/bounds.d.ts +9 -0
- package/dist/dts/internal/bounds.d.ts.map +1 -0
- package/dist/dts/internal/core-ref-subject.d.ts +100 -0
- package/dist/dts/internal/core-ref-subject.d.ts.map +1 -0
- package/dist/dts/internal/core-subject.d.ts +5 -0
- package/dist/dts/internal/core-subject.d.ts.map +1 -0
- package/dist/dts/internal/core.d.ts +456 -0
- package/dist/dts/internal/core.d.ts.map +1 -0
- package/dist/dts/internal/deferred-ref.d.ts +12 -0
- package/dist/dts/internal/deferred-ref.d.ts.map +1 -0
- package/dist/dts/internal/effect-operator.d.ts +37 -0
- package/dist/dts/internal/effect-operator.d.ts.map +1 -0
- package/dist/dts/internal/effect-primitive.d.ts +6 -0
- package/dist/dts/internal/effect-primitive.d.ts.map +1 -0
- package/dist/dts/internal/fx-effect-proto.d.ts +30 -0
- package/dist/dts/internal/fx-effect-proto.d.ts.map +1 -0
- package/dist/dts/internal/fx-primitive.d.ts +109 -0
- package/dist/dts/internal/fx-primitive.d.ts.map +1 -0
- package/dist/dts/internal/fx.d.ts +245 -0
- package/dist/dts/internal/fx.d.ts.map +1 -0
- package/dist/dts/internal/helpers.d.ts +48 -0
- package/dist/dts/internal/helpers.d.ts.map +1 -0
- package/dist/dts/internal/keyed.d.ts +4 -0
- package/dist/dts/internal/keyed.d.ts.map +1 -0
- package/dist/dts/internal/matchers.d.ts +33 -0
- package/dist/dts/internal/matchers.d.ts.map +1 -0
- package/dist/dts/internal/protos.d.ts +50 -0
- package/dist/dts/internal/protos.d.ts.map +1 -0
- package/dist/dts/internal/provide.d.ts +40 -0
- package/dist/dts/internal/provide.d.ts.map +1 -0
- package/dist/dts/internal/requestIdleCallback.d.ts +3 -0
- package/dist/dts/internal/requestIdleCallback.d.ts.map +1 -0
- package/dist/dts/internal/run.d.ts +8 -0
- package/dist/dts/internal/run.d.ts.map +1 -0
- package/dist/dts/internal/schema-ref-subject.d.ts +5 -0
- package/dist/dts/internal/schema-ref-subject.d.ts.map +1 -0
- package/dist/dts/internal/share.d.ts +30 -0
- package/dist/dts/internal/share.d.ts.map +1 -0
- package/dist/dts/internal/strategies.d.ts +9 -0
- package/dist/dts/internal/strategies.d.ts.map +1 -0
- package/dist/dts/internal/sync-operator.d.ts +28 -0
- package/dist/dts/internal/sync-operator.d.ts.map +1 -0
- package/dist/dts/internal/versioned-transform.d.ts +17 -0
- package/dist/dts/internal/versioned-transform.d.ts.map +1 -0
- package/dist/dts/internal/withKey.d.ts +4 -0
- package/dist/dts/internal/withKey.d.ts.map +1 -0
- package/dist/esm/Computed.js +103 -0
- package/dist/esm/Computed.js.map +1 -0
- package/dist/esm/Emitter.js +28 -0
- package/dist/esm/Emitter.js.map +1 -0
- package/dist/esm/Filtered.js +83 -0
- package/dist/esm/Filtered.js.map +1 -0
- package/dist/esm/Form.js +111 -0
- package/dist/esm/Form.js.map +1 -0
- package/dist/esm/FormEntry.js +72 -0
- package/dist/esm/FormEntry.js.map +1 -0
- package/dist/esm/Fx.js +1298 -0
- package/dist/esm/Fx.js.map +1 -0
- package/dist/esm/Guard.js +56 -0
- package/dist/esm/Guard.js.map +1 -0
- package/dist/esm/Idle.js +166 -0
- package/dist/esm/Idle.js.map +1 -0
- package/dist/esm/Match.js +149 -0
- package/dist/esm/Match.js.map +1 -0
- package/dist/esm/Model.js +100 -0
- package/dist/esm/Model.js.map +1 -0
- package/dist/esm/Pull.js +41 -0
- package/dist/esm/Pull.js.map +1 -0
- package/dist/esm/RefArray.js +232 -0
- package/dist/esm/RefArray.js.map +1 -0
- package/dist/esm/RefAsyncData.js +163 -0
- package/dist/esm/RefAsyncData.js.map +1 -0
- package/dist/esm/RefAsyncDataArray.js +27 -0
- package/dist/esm/RefAsyncDataArray.js.map +1 -0
- package/dist/esm/RefBoolean.js +31 -0
- package/dist/esm/RefBoolean.js.map +1 -0
- package/dist/esm/RefChunk.js +194 -0
- package/dist/esm/RefChunk.js.map +1 -0
- package/dist/esm/RefHashMap.js +176 -0
- package/dist/esm/RefHashMap.js.map +1 -0
- package/dist/esm/RefHashSet.js +83 -0
- package/dist/esm/RefHashSet.js.map +1 -0
- package/dist/esm/RefNumber.js +35 -0
- package/dist/esm/RefNumber.js.map +1 -0
- package/dist/esm/RefSubject.js +217 -0
- package/dist/esm/RefSubject.js.map +1 -0
- package/dist/esm/Sink.js +108 -0
- package/dist/esm/Sink.js.map +1 -0
- package/dist/esm/Stream.js +72 -0
- package/dist/esm/Stream.js.map +1 -0
- package/dist/esm/Subject.js +84 -0
- package/dist/esm/Subject.js.map +1 -0
- package/dist/esm/TypeId.js +21 -0
- package/dist/esm/TypeId.js.map +1 -0
- package/dist/esm/Typeclass.js +375 -0
- package/dist/esm/Typeclass.js.map +1 -0
- package/dist/esm/Versioned.js +94 -0
- package/dist/esm/Versioned.js.map +1 -0
- package/dist/esm/index.js +56 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/internal/bounds.js +13 -0
- package/dist/esm/internal/bounds.js.map +1 -0
- package/dist/esm/internal/core-ref-subject.js +242 -0
- package/dist/esm/internal/core-ref-subject.js.map +1 -0
- package/dist/esm/internal/core-subject.js +90 -0
- package/dist/esm/internal/core-subject.js.map +1 -0
- package/dist/esm/internal/core.js +841 -0
- package/dist/esm/internal/core.js.map +1 -0
- package/dist/esm/internal/deferred-ref.js +23 -0
- package/dist/esm/internal/deferred-ref.js.map +1 -0
- package/dist/esm/internal/effect-operator.js +127 -0
- package/dist/esm/internal/effect-operator.js.map +1 -0
- package/dist/esm/internal/effect-primitive.js +41 -0
- package/dist/esm/internal/effect-primitive.js.map +1 -0
- package/dist/esm/internal/fx-effect-proto.js +43 -0
- package/dist/esm/internal/fx-effect-proto.js.map +1 -0
- package/dist/esm/internal/fx-primitive.js +175 -0
- package/dist/esm/internal/fx-primitive.js.map +1 -0
- package/dist/esm/internal/fx.js +216 -0
- package/dist/esm/internal/fx.js.map +1 -0
- package/dist/esm/internal/helpers.js +253 -0
- package/dist/esm/internal/helpers.js.map +1 -0
- package/dist/esm/internal/keyed.js +156 -0
- package/dist/esm/internal/keyed.js.map +1 -0
- package/dist/esm/internal/matchers.js +38 -0
- package/dist/esm/internal/matchers.js.map +1 -0
- package/dist/esm/internal/protos.js +98 -0
- package/dist/esm/internal/protos.js.map +1 -0
- package/dist/esm/internal/provide.js +64 -0
- package/dist/esm/internal/provide.js.map +1 -0
- package/dist/esm/internal/requestIdleCallback.js +16 -0
- package/dist/esm/internal/requestIdleCallback.js.map +1 -0
- package/dist/esm/internal/run.js +32 -0
- package/dist/esm/internal/run.js.map +1 -0
- package/dist/esm/internal/schema-ref-subject.js +121 -0
- package/dist/esm/internal/schema-ref-subject.js.map +1 -0
- package/dist/esm/internal/share.js +64 -0
- package/dist/esm/internal/share.js.map +1 -0
- package/dist/esm/internal/strategies.js +8 -0
- package/dist/esm/internal/strategies.js.map +1 -0
- package/dist/esm/internal/sync-operator.js +67 -0
- package/dist/esm/internal/sync-operator.js.map +1 -0
- package/dist/esm/internal/versioned-transform.js +37 -0
- package/dist/esm/internal/versioned-transform.js.map +1 -0
- package/dist/esm/internal/withKey.js +57 -0
- package/dist/esm/internal/withKey.js.map +1 -0
- package/dist/esm/package.json +4 -0
- package/package.json +240 -30
- package/src/Computed.ts +247 -121
- package/src/Emitter.ts +54 -0
- package/src/Filtered.ts +239 -128
- package/src/Form.ts +373 -0
- package/src/FormEntry.ts +174 -0
- package/src/Fx.ts +2632 -43
- package/src/Guard.ts +159 -0
- package/src/Idle.ts +284 -0
- package/src/Match.ts +273 -0
- package/src/Model.ts +483 -0
- package/src/Pull.ts +96 -0
- package/src/RefArray.ts +507 -223
- package/src/RefAsyncData.ts +547 -0
- package/src/RefAsyncDataArray.ts +135 -0
- package/src/RefBoolean.ts +71 -0
- package/src/RefChunk.ts +403 -0
- package/src/RefHashMap.ts +319 -0
- package/src/RefHashSet.ts +188 -0
- package/src/RefNumber.ts +77 -0
- package/src/RefSubject.ts +583 -740
- package/src/Sink.ts +268 -11
- package/src/Stream.ts +128 -0
- package/src/Subject.ts +129 -23
- package/src/TypeId.ts +47 -0
- package/src/Typeclass.ts +460 -0
- package/src/Versioned.ts +302 -0
- package/src/index.ts +64 -1083
- package/src/internal/bounds.ts +21 -0
- package/src/internal/core-ref-subject.ts +528 -0
- package/src/internal/core-subject.ts +143 -0
- package/src/internal/core.ts +2198 -0
- package/src/internal/deferred-ref.ts +26 -0
- package/src/internal/effect-operator.ts +282 -0
- package/src/internal/effect-primitive.ts +230 -0
- package/src/internal/fx-effect-proto.ts +56 -0
- package/src/internal/fx-primitive.ts +223 -0
- package/src/internal/fx.ts +619 -0
- package/src/internal/helpers.ts +428 -0
- package/src/internal/keyed.ts +281 -0
- package/src/internal/matchers.ts +83 -0
- package/src/internal/protos.ts +132 -0
- package/src/internal/provide.ts +143 -0
- package/src/internal/requestIdleCallback.ts +20 -0
- package/src/internal/run.ts +51 -0
- package/src/internal/schema-ref-subject.ts +163 -0
- package/src/internal/share.ts +105 -0
- package/src/internal/strategies.ts +15 -0
- package/src/internal/sync-operator.ts +125 -0
- package/src/internal/versioned-transform.ts +48 -0
- package/src/internal/withKey.ts +92 -0
- package/dist/Computed.d.ts +0 -60
- package/dist/Computed.d.ts.map +0 -1
- package/dist/Computed.js +0 -51
- package/dist/Computed.js.map +0 -1
- package/dist/Filtered.d.ts +0 -52
- package/dist/Filtered.d.ts.map +0 -1
- package/dist/Filtered.js +0 -51
- package/dist/Filtered.js.map +0 -1
- package/dist/Fx.d.ts +0 -27
- package/dist/Fx.d.ts.map +0 -1
- package/dist/Fx.js +0 -28
- package/dist/Fx.js.map +0 -1
- package/dist/RefArray.d.ts +0 -116
- package/dist/RefArray.d.ts.map +0 -1
- package/dist/RefArray.js +0 -67
- package/dist/RefArray.js.map +0 -1
- package/dist/RefRemoteData.d.ts +0 -44
- package/dist/RefRemoteData.d.ts.map +0 -1
- package/dist/RefRemoteData.js +0 -63
- package/dist/RefRemoteData.js.map +0 -1
- package/dist/RefSubject.d.ts +0 -53
- package/dist/RefSubject.d.ts.map +0 -1
- package/dist/RefSubject.js +0 -404
- package/dist/RefSubject.js.map +0 -1
- package/dist/RefTransform.d.ts +0 -74
- package/dist/RefTransform.d.ts.map +0 -1
- package/dist/RefTransform.js +0 -86
- package/dist/RefTransform.js.map +0 -1
- package/dist/Sink.d.ts +0 -8
- package/dist/Sink.d.ts.map +0 -1
- package/dist/Sink.js +0 -7
- package/dist/Sink.js.map +0 -1
- package/dist/Subject.d.ts +0 -18
- package/dist/Subject.d.ts.map +0 -1
- package/dist/Subject.js +0 -24
- package/dist/Subject.js.map +0 -1
- package/dist/Transducer.d.ts +0 -2
- package/dist/Transducer.d.ts.map +0 -1
- package/dist/Transducer.js +0 -2
- package/dist/Transducer.js.map +0 -1
- package/dist/at.d.ts +0 -4
- package/dist/at.d.ts.map +0 -1
- package/dist/at.js +0 -6
- package/dist/at.js.map +0 -1
- package/dist/catchAllCause.d.ts +0 -14
- package/dist/catchAllCause.d.ts.map +0 -1
- package/dist/catchAllCause.js +0 -39
- package/dist/catchAllCause.js.map +0 -1
- package/dist/cjs/Computed.d.ts +0 -60
- package/dist/cjs/Computed.d.ts.map +0 -1
- package/dist/cjs/Filtered.d.ts +0 -52
- package/dist/cjs/Filtered.d.ts.map +0 -1
- package/dist/cjs/Fx.d.ts +0 -27
- package/dist/cjs/Fx.d.ts.map +0 -1
- package/dist/cjs/RefArray.d.ts +0 -116
- package/dist/cjs/RefArray.d.ts.map +0 -1
- package/dist/cjs/RefRemoteData.d.ts +0 -44
- package/dist/cjs/RefRemoteData.d.ts.map +0 -1
- package/dist/cjs/RefRemoteData.js +0 -93
- package/dist/cjs/RefRemoteData.js.map +0 -1
- package/dist/cjs/RefSubject.d.ts +0 -53
- package/dist/cjs/RefSubject.d.ts.map +0 -1
- package/dist/cjs/RefTransform.d.ts +0 -74
- package/dist/cjs/RefTransform.d.ts.map +0 -1
- package/dist/cjs/RefTransform.js +0 -113
- package/dist/cjs/RefTransform.js.map +0 -1
- package/dist/cjs/Sink.d.ts +0 -8
- package/dist/cjs/Sink.d.ts.map +0 -1
- package/dist/cjs/Subject.d.ts +0 -18
- package/dist/cjs/Subject.d.ts.map +0 -1
- package/dist/cjs/Transducer.d.ts +0 -2
- package/dist/cjs/Transducer.d.ts.map +0 -1
- package/dist/cjs/Transducer.js +0 -3
- package/dist/cjs/Transducer.js.map +0 -1
- package/dist/cjs/at.d.ts +0 -4
- package/dist/cjs/at.d.ts.map +0 -1
- package/dist/cjs/at.js +0 -33
- package/dist/cjs/at.js.map +0 -1
- package/dist/cjs/catchAllCause.d.ts +0 -14
- package/dist/cjs/catchAllCause.d.ts.map +0 -1
- package/dist/cjs/catchAllCause.js +0 -71
- package/dist/cjs/catchAllCause.js.map +0 -1
- package/dist/cjs/combineAll.d.ts +0 -6
- package/dist/cjs/combineAll.d.ts.map +0 -1
- package/dist/cjs/combineAll.js +0 -55
- package/dist/cjs/combineAll.js.map +0 -1
- package/dist/cjs/combineAllDiscard.d.ts +0 -3
- package/dist/cjs/combineAllDiscard.d.ts.map +0 -1
- package/dist/cjs/combineAllDiscard.js +0 -49
- package/dist/cjs/combineAllDiscard.js.map +0 -1
- package/dist/cjs/continueWith.d.ts +0 -7
- package/dist/cjs/continueWith.d.ts.map +0 -1
- package/dist/cjs/continueWith.js +0 -47
- package/dist/cjs/continueWith.js.map +0 -1
- package/dist/cjs/data-first.d.ts +0 -68
- package/dist/cjs/data-first.d.ts.map +0 -1
- package/dist/cjs/data-first.js +0 -84
- package/dist/cjs/data-first.js.map +0 -1
- package/dist/cjs/debounce.d.ts +0 -4
- package/dist/cjs/debounce.d.ts.map +0 -1
- package/dist/cjs/debounce.js +0 -33
- package/dist/cjs/debounce.js.map +0 -1
- package/dist/cjs/delay.d.ts +0 -4
- package/dist/cjs/delay.d.ts.map +0 -1
- package/dist/cjs/delay.js +0 -33
- package/dist/cjs/delay.js.map +0 -1
- package/dist/cjs/empty.d.ts +0 -3
- package/dist/cjs/empty.d.ts.map +0 -1
- package/dist/cjs/empty.js +0 -33
- package/dist/cjs/empty.js.map +0 -1
- package/dist/cjs/exhaustMap.d.ts +0 -7
- package/dist/cjs/exhaustMap.d.ts.map +0 -1
- package/dist/cjs/exhaustMap.js +0 -23
- package/dist/cjs/exhaustMap.js.map +0 -1
- package/dist/cjs/exhaustMapCause.d.ts +0 -8
- package/dist/cjs/exhaustMapCause.d.ts.map +0 -1
- package/dist/cjs/exhaustMapCause.js +0 -50
- package/dist/cjs/exhaustMapCause.js.map +0 -1
- package/dist/cjs/exhaustMapLatest.d.ts +0 -7
- package/dist/cjs/exhaustMapLatest.d.ts.map +0 -1
- package/dist/cjs/exhaustMapLatest.js +0 -23
- package/dist/cjs/exhaustMapLatest.js.map +0 -1
- package/dist/cjs/exhaustMapLatestCause.d.ts +0 -8
- package/dist/cjs/exhaustMapLatestCause.d.ts.map +0 -1
- package/dist/cjs/exhaustMapLatestCause.js +0 -50
- package/dist/cjs/exhaustMapLatestCause.js.map +0 -1
- package/dist/cjs/failCause.d.ts +0 -8
- package/dist/cjs/failCause.d.ts.map +0 -1
- package/dist/cjs/failCause.js +0 -45
- package/dist/cjs/failCause.js.map +0 -1
- package/dist/cjs/filter.d.ts +0 -7
- package/dist/cjs/filter.d.ts.map +0 -1
- package/dist/cjs/filter.js +0 -38
- package/dist/cjs/filter.js.map +0 -1
- package/dist/cjs/filterMap.d.ts +0 -5
- package/dist/cjs/filterMap.d.ts.map +0 -1
- package/dist/cjs/filterMap.js +0 -38
- package/dist/cjs/filterMap.js.map +0 -1
- package/dist/cjs/flatMap.d.ts +0 -7
- package/dist/cjs/flatMap.d.ts.map +0 -1
- package/dist/cjs/flatMap.js +0 -23
- package/dist/cjs/flatMap.js.map +0 -1
- package/dist/cjs/fromArray.d.ts +0 -3
- package/dist/cjs/fromArray.d.ts.map +0 -1
- package/dist/cjs/fromArray.js +0 -42
- package/dist/cjs/fromArray.js.map +0 -1
- package/dist/cjs/fromDequeue.d.ts +0 -5
- package/dist/cjs/fromDequeue.d.ts.map +0 -1
- package/dist/cjs/fromDequeue.js +0 -49
- package/dist/cjs/fromDequeue.js.map +0 -1
- package/dist/cjs/fromEffect.d.ts +0 -4
- package/dist/cjs/fromEffect.d.ts.map +0 -1
- package/dist/cjs/fromEffect.js +0 -46
- package/dist/cjs/fromEffect.js.map +0 -1
- package/dist/cjs/fromEmitter.d.ts +0 -11
- package/dist/cjs/fromEmitter.d.ts.map +0 -1
- package/dist/cjs/fromEmitter.js +0 -53
- package/dist/cjs/fromEmitter.js.map +0 -1
- package/dist/cjs/fromFxEffect.d.ts +0 -4
- package/dist/cjs/fromFxEffect.d.ts.map +0 -1
- package/dist/cjs/fromFxEffect.js +0 -33
- package/dist/cjs/fromFxEffect.js.map +0 -1
- package/dist/cjs/fromHub.d.ts +0 -5
- package/dist/cjs/fromHub.d.ts.map +0 -1
- package/dist/cjs/fromHub.js +0 -34
- package/dist/cjs/fromHub.js.map +0 -1
- package/dist/cjs/fromIterable.d.ts +0 -3
- package/dist/cjs/fromIterable.d.ts.map +0 -1
- package/dist/cjs/fromIterable.js +0 -47
- package/dist/cjs/fromIterable.js.map +0 -1
- package/dist/cjs/gen.d.ts +0 -7
- package/dist/cjs/gen.d.ts.map +0 -1
- package/dist/cjs/gen.js +0 -33
- package/dist/cjs/gen.js.map +0 -1
- package/dist/cjs/helpers.d.ts +0 -12
- package/dist/cjs/helpers.d.ts.map +0 -1
- package/dist/cjs/helpers.js +0 -90
- package/dist/cjs/helpers.js.map +0 -1
- package/dist/cjs/hold.d.ts +0 -14
- package/dist/cjs/hold.d.ts.map +0 -1
- package/dist/cjs/hold.js +0 -56
- package/dist/cjs/hold.js.map +0 -1
- package/dist/cjs/index.d.ts +0 -391
- package/dist/cjs/index.d.ts.map +0 -1
- package/dist/cjs/keyed.d.ts +0 -4
- package/dist/cjs/keyed.d.ts.map +0 -1
- package/dist/cjs/keyed.js +0 -183
- package/dist/cjs/keyed.js.map +0 -1
- package/dist/cjs/map.d.ts +0 -4
- package/dist/cjs/map.d.ts.map +0 -1
- package/dist/cjs/map.js +0 -37
- package/dist/cjs/map.js.map +0 -1
- package/dist/cjs/mapEffect.d.ts +0 -7
- package/dist/cjs/mapEffect.d.ts.map +0 -1
- package/dist/cjs/mapEffect.js +0 -36
- package/dist/cjs/mapEffect.js.map +0 -1
- package/dist/cjs/mergeAll.d.ts +0 -5
- package/dist/cjs/mergeAll.d.ts.map +0 -1
- package/dist/cjs/mergeAll.js +0 -45
- package/dist/cjs/mergeAll.js.map +0 -1
- package/dist/cjs/mergeBufferConcurrently.d.ts +0 -8
- package/dist/cjs/mergeBufferConcurrently.d.ts.map +0 -1
- package/dist/cjs/mergeBufferConcurrently.js +0 -97
- package/dist/cjs/mergeBufferConcurrently.js.map +0 -1
- package/dist/cjs/mergeConcurrently.d.ts +0 -3
- package/dist/cjs/mergeConcurrently.d.ts.map +0 -1
- package/dist/cjs/mergeConcurrently.js +0 -69
- package/dist/cjs/mergeConcurrently.js.map +0 -1
- package/dist/cjs/multicast.d.ts +0 -32
- package/dist/cjs/multicast.d.ts.map +0 -1
- package/dist/cjs/multicast.js +0 -110
- package/dist/cjs/multicast.js.map +0 -1
- package/dist/cjs/never.d.ts +0 -3
- package/dist/cjs/never.d.ts.map +0 -1
- package/dist/cjs/never.js +0 -33
- package/dist/cjs/never.js.map +0 -1
- package/dist/cjs/observe.d.ts +0 -9
- package/dist/cjs/observe.d.ts.map +0 -1
- package/dist/cjs/observe.js +0 -52
- package/dist/cjs/observe.js.map +0 -1
- package/dist/cjs/onExit.d.ts +0 -5
- package/dist/cjs/onExit.d.ts.map +0 -1
- package/dist/cjs/onExit.js +0 -33
- package/dist/cjs/onExit.js.map +0 -1
- package/dist/cjs/onInterrupt.d.ts +0 -6
- package/dist/cjs/onInterrupt.d.ts.map +0 -1
- package/dist/cjs/onInterrupt.js +0 -33
- package/dist/cjs/onInterrupt.js.map +0 -1
- package/dist/cjs/orElse.d.ts +0 -4
- package/dist/cjs/orElse.d.ts.map +0 -1
- package/dist/cjs/orElse.js +0 -34
- package/dist/cjs/orElse.js.map +0 -1
- package/dist/cjs/promise.d.ts +0 -8
- package/dist/cjs/promise.d.ts.map +0 -1
- package/dist/cjs/promise.js +0 -54
- package/dist/cjs/promise.js.map +0 -1
- package/dist/cjs/provide.d.ts +0 -12
- package/dist/cjs/provide.d.ts.map +0 -1
- package/dist/cjs/provide.js +0 -62
- package/dist/cjs/provide.js.map +0 -1
- package/dist/cjs/reduce.d.ts +0 -5
- package/dist/cjs/reduce.d.ts.map +0 -1
- package/dist/cjs/reduce.js +0 -37
- package/dist/cjs/reduce.js.map +0 -1
- package/dist/cjs/scan.d.ts +0 -3
- package/dist/cjs/scan.d.ts.map +0 -1
- package/dist/cjs/scan.js +0 -36
- package/dist/cjs/scan.js.map +0 -1
- package/dist/cjs/scoped.d.ts +0 -4
- package/dist/cjs/scoped.d.ts.map +0 -1
- package/dist/cjs/scoped.js +0 -33
- package/dist/cjs/scoped.js.map +0 -1
- package/dist/cjs/skipRepeats.d.ts +0 -5
- package/dist/cjs/skipRepeats.d.ts.map +0 -1
- package/dist/cjs/skipRepeats.js +0 -46
- package/dist/cjs/skipRepeats.js.map +0 -1
- package/dist/cjs/skipWhile.d.ts +0 -5
- package/dist/cjs/skipWhile.d.ts.map +0 -1
- package/dist/cjs/skipWhile.js +0 -46
- package/dist/cjs/skipWhile.js.map +0 -1
- package/dist/cjs/slice.d.ts +0 -5
- package/dist/cjs/slice.d.ts.map +0 -1
- package/dist/cjs/slice.js +0 -55
- package/dist/cjs/slice.js.map +0 -1
- package/dist/cjs/snapshotEffect.d.ts +0 -5
- package/dist/cjs/snapshotEffect.d.ts.map +0 -1
- package/dist/cjs/snapshotEffect.js +0 -50
- package/dist/cjs/snapshotEffect.js.map +0 -1
- package/dist/cjs/struct.d.ts +0 -5
- package/dist/cjs/struct.d.ts.map +0 -1
- package/dist/cjs/struct.js +0 -10
- package/dist/cjs/struct.js.map +0 -1
- package/dist/cjs/succeed.d.ts +0 -4
- package/dist/cjs/succeed.d.ts.map +0 -1
- package/dist/cjs/succeed.js +0 -10
- package/dist/cjs/succeed.js.map +0 -1
- package/dist/cjs/suspend.d.ts +0 -3
- package/dist/cjs/suspend.d.ts.map +0 -1
- package/dist/cjs/suspend.js +0 -9
- package/dist/cjs/suspend.js.map +0 -1
- package/dist/cjs/switchMap.d.ts +0 -7
- package/dist/cjs/switchMap.d.ts.map +0 -1
- package/dist/cjs/switchMap.js +0 -46
- package/dist/cjs/switchMap.js.map +0 -1
- package/dist/cjs/switchMapCause.d.ts +0 -9
- package/dist/cjs/switchMapCause.d.ts.map +0 -1
- package/dist/cjs/switchMapCause.js +0 -61
- package/dist/cjs/switchMapCause.js.map +0 -1
- package/dist/cjs/switchMatch.d.ts +0 -8
- package/dist/cjs/switchMatch.d.ts.map +0 -1
- package/dist/cjs/switchMatch.js +0 -50
- package/dist/cjs/switchMatch.js.map +0 -1
- package/dist/cjs/takeWhile.d.ts +0 -5
- package/dist/cjs/takeWhile.d.ts.map +0 -1
- package/dist/cjs/takeWhile.js +0 -46
- package/dist/cjs/takeWhile.js.map +0 -1
- package/dist/cjs/tap.d.ts +0 -5
- package/dist/cjs/tap.d.ts.map +0 -1
- package/dist/cjs/tap.js +0 -37
- package/dist/cjs/tap.js.map +0 -1
- package/dist/cjs/tapCause.d.ts +0 -8
- package/dist/cjs/tapCause.d.ts.map +0 -1
- package/dist/cjs/tapCause.js +0 -50
- package/dist/cjs/tapCause.js.map +0 -1
- package/dist/cjs/test-utils.d.ts +0 -5
- package/dist/cjs/test-utils.d.ts.map +0 -1
- package/dist/cjs/test-utils.js +0 -52
- package/dist/cjs/test-utils.js.map +0 -1
- package/dist/cjs/throttle.d.ts +0 -4
- package/dist/cjs/throttle.d.ts.map +0 -1
- package/dist/cjs/throttle.js +0 -34
- package/dist/cjs/throttle.js.map +0 -1
- package/dist/cjs/toArray.d.ts +0 -5
- package/dist/cjs/toArray.d.ts.map +0 -1
- package/dist/cjs/toArray.js +0 -36
- package/dist/cjs/toArray.js.map +0 -1
- package/dist/cjs/toChunk.d.ts +0 -6
- package/dist/cjs/toChunk.d.ts.map +0 -1
- package/dist/cjs/toChunk.js +0 -38
- package/dist/cjs/toChunk.js.map +0 -1
- package/dist/cjs/toEnqueue.d.ts +0 -6
- package/dist/cjs/toEnqueue.d.ts.map +0 -1
- package/dist/cjs/toEnqueue.js +0 -9
- package/dist/cjs/toEnqueue.js.map +0 -1
- package/dist/cjs/toReadonlyArray.d.ts +0 -5
- package/dist/cjs/toReadonlyArray.d.ts.map +0 -1
- package/dist/cjs/toReadonlyArray.js +0 -9
- package/dist/cjs/toReadonlyArray.js.map +0 -1
- package/dist/cjs/toStream.d.ts +0 -4
- package/dist/cjs/toStream.d.ts.map +0 -1
- package/dist/cjs/toStream.js +0 -39
- package/dist/cjs/toStream.js.map +0 -1
- package/dist/combineAll.d.ts +0 -6
- package/dist/combineAll.d.ts.map +0 -1
- package/dist/combineAll.js +0 -27
- package/dist/combineAll.js.map +0 -1
- package/dist/combineAllDiscard.d.ts +0 -3
- package/dist/combineAllDiscard.d.ts.map +0 -1
- package/dist/combineAllDiscard.js +0 -22
- package/dist/combineAllDiscard.js.map +0 -1
- package/dist/continueWith.d.ts +0 -7
- package/dist/continueWith.d.ts.map +0 -1
- package/dist/continueWith.js +0 -17
- package/dist/continueWith.js.map +0 -1
- package/dist/data-first.d.ts +0 -68
- package/dist/data-first.d.ts.map +0 -1
- package/dist/data-first.js +0 -68
- package/dist/data-first.js.map +0 -1
- package/dist/debounce.d.ts +0 -4
- package/dist/debounce.d.ts.map +0 -1
- package/dist/debounce.js +0 -6
- package/dist/debounce.js.map +0 -1
- package/dist/delay.d.ts +0 -4
- package/dist/delay.d.ts.map +0 -1
- package/dist/delay.js +0 -6
- package/dist/delay.js.map +0 -1
- package/dist/empty.d.ts +0 -3
- package/dist/empty.d.ts.map +0 -1
- package/dist/empty.js +0 -6
- package/dist/empty.js.map +0 -1
- package/dist/exhaustMap.d.ts +0 -7
- package/dist/exhaustMap.d.ts.map +0 -1
- package/dist/exhaustMap.js +0 -16
- package/dist/exhaustMap.js.map +0 -1
- package/dist/exhaustMapCause.d.ts +0 -8
- package/dist/exhaustMapCause.d.ts.map +0 -1
- package/dist/exhaustMapCause.js +0 -20
- package/dist/exhaustMapCause.js.map +0 -1
- package/dist/exhaustMapLatest.d.ts +0 -7
- package/dist/exhaustMapLatest.d.ts.map +0 -1
- package/dist/exhaustMapLatest.js +0 -16
- package/dist/exhaustMapLatest.js.map +0 -1
- package/dist/exhaustMapLatestCause.d.ts +0 -8
- package/dist/exhaustMapLatestCause.d.ts.map +0 -1
- package/dist/exhaustMapLatestCause.js +0 -20
- package/dist/exhaustMapLatestCause.js.map +0 -1
- package/dist/failCause.d.ts +0 -8
- package/dist/failCause.d.ts.map +0 -1
- package/dist/failCause.js +0 -15
- package/dist/failCause.js.map +0 -1
- package/dist/filter.d.ts +0 -7
- package/dist/filter.d.ts.map +0 -1
- package/dist/filter.js +0 -10
- package/dist/filter.js.map +0 -1
- package/dist/filterMap.d.ts +0 -5
- package/dist/filterMap.d.ts.map +0 -1
- package/dist/filterMap.js +0 -10
- package/dist/filterMap.js.map +0 -1
- package/dist/flatMap.d.ts +0 -7
- package/dist/flatMap.d.ts.map +0 -1
- package/dist/flatMap.js +0 -16
- package/dist/flatMap.js.map +0 -1
- package/dist/fromArray.d.ts +0 -3
- package/dist/fromArray.d.ts.map +0 -1
- package/dist/fromArray.js +0 -15
- package/dist/fromArray.js.map +0 -1
- package/dist/fromDequeue.d.ts +0 -5
- package/dist/fromDequeue.d.ts.map +0 -1
- package/dist/fromDequeue.js +0 -21
- package/dist/fromDequeue.js.map +0 -1
- package/dist/fromEffect.d.ts +0 -4
- package/dist/fromEffect.d.ts.map +0 -1
- package/dist/fromEffect.js +0 -19
- package/dist/fromEffect.js.map +0 -1
- package/dist/fromEmitter.d.ts +0 -11
- package/dist/fromEmitter.d.ts.map +0 -1
- package/dist/fromEmitter.js +0 -26
- package/dist/fromEmitter.js.map +0 -1
- package/dist/fromFxEffect.d.ts +0 -4
- package/dist/fromFxEffect.d.ts.map +0 -1
- package/dist/fromFxEffect.js +0 -6
- package/dist/fromFxEffect.js.map +0 -1
- package/dist/fromHub.d.ts +0 -5
- package/dist/fromHub.d.ts.map +0 -1
- package/dist/fromHub.js +0 -7
- package/dist/fromHub.js.map +0 -1
- package/dist/fromIterable.d.ts +0 -3
- package/dist/fromIterable.d.ts.map +0 -1
- package/dist/fromIterable.js +0 -20
- package/dist/fromIterable.js.map +0 -1
- package/dist/gen.d.ts +0 -7
- package/dist/gen.d.ts.map +0 -1
- package/dist/gen.js +0 -6
- package/dist/gen.js.map +0 -1
- package/dist/helpers.d.ts +0 -12
- package/dist/helpers.d.ts.map +0 -1
- package/dist/helpers.js +0 -59
- package/dist/helpers.js.map +0 -1
- package/dist/hold.d.ts +0 -14
- package/dist/hold.d.ts.map +0 -1
- package/dist/hold.js +0 -28
- package/dist/hold.js.map +0 -1
- package/dist/index.d.ts +0 -391
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -139
- package/dist/index.js.map +0 -1
- package/dist/keyed.d.ts +0 -4
- package/dist/keyed.d.ts.map +0 -1
- package/dist/keyed.js +0 -156
- package/dist/keyed.js.map +0 -1
- package/dist/map.d.ts +0 -4
- package/dist/map.d.ts.map +0 -1
- package/dist/map.js +0 -9
- package/dist/map.js.map +0 -1
- package/dist/mapEffect.d.ts +0 -7
- package/dist/mapEffect.d.ts.map +0 -1
- package/dist/mapEffect.js +0 -9
- package/dist/mapEffect.js.map +0 -1
- package/dist/mergeAll.d.ts +0 -5
- package/dist/mergeAll.d.ts.map +0 -1
- package/dist/mergeAll.js +0 -16
- package/dist/mergeAll.js.map +0 -1
- package/dist/mergeBufferConcurrently.d.ts +0 -8
- package/dist/mergeBufferConcurrently.d.ts.map +0 -1
- package/dist/mergeBufferConcurrently.js +0 -70
- package/dist/mergeBufferConcurrently.js.map +0 -1
- package/dist/mergeConcurrently.d.ts +0 -3
- package/dist/mergeConcurrently.d.ts.map +0 -1
- package/dist/mergeConcurrently.js +0 -42
- package/dist/mergeConcurrently.js.map +0 -1
- package/dist/multicast.d.ts +0 -32
- package/dist/multicast.d.ts.map +0 -1
- package/dist/multicast.js +0 -82
- package/dist/multicast.js.map +0 -1
- package/dist/never.d.ts +0 -3
- package/dist/never.d.ts.map +0 -1
- package/dist/never.js +0 -6
- package/dist/never.js.map +0 -1
- package/dist/observe.d.ts +0 -9
- package/dist/observe.d.ts.map +0 -1
- package/dist/observe.js +0 -22
- package/dist/observe.js.map +0 -1
- package/dist/onExit.d.ts +0 -5
- package/dist/onExit.d.ts.map +0 -1
- package/dist/onExit.js +0 -6
- package/dist/onExit.js.map +0 -1
- package/dist/onInterrupt.d.ts +0 -6
- package/dist/onInterrupt.d.ts.map +0 -1
- package/dist/onInterrupt.js +0 -6
- package/dist/onInterrupt.js.map +0 -1
- package/dist/orElse.d.ts +0 -4
- package/dist/orElse.d.ts.map +0 -1
- package/dist/orElse.js +0 -7
- package/dist/orElse.js.map +0 -1
- package/dist/promise.d.ts +0 -8
- package/dist/promise.d.ts.map +0 -1
- package/dist/promise.js +0 -22
- package/dist/promise.js.map +0 -1
- package/dist/provide.d.ts +0 -12
- package/dist/provide.d.ts.map +0 -1
- package/dist/provide.js +0 -29
- package/dist/provide.js.map +0 -1
- package/dist/reduce.d.ts +0 -5
- package/dist/reduce.d.ts.map +0 -1
- package/dist/reduce.js +0 -10
- package/dist/reduce.js.map +0 -1
- package/dist/scan.d.ts +0 -3
- package/dist/scan.d.ts.map +0 -1
- package/dist/scan.js +0 -9
- package/dist/scan.js.map +0 -1
- package/dist/scoped.d.ts +0 -4
- package/dist/scoped.d.ts.map +0 -1
- package/dist/scoped.js +0 -6
- package/dist/scoped.js.map +0 -1
- package/dist/skipRepeats.d.ts +0 -5
- package/dist/skipRepeats.d.ts.map +0 -1
- package/dist/skipRepeats.js +0 -15
- package/dist/skipRepeats.js.map +0 -1
- package/dist/skipWhile.d.ts +0 -5
- package/dist/skipWhile.d.ts.map +0 -1
- package/dist/skipWhile.js +0 -18
- package/dist/skipWhile.js.map +0 -1
- package/dist/slice.d.ts +0 -5
- package/dist/slice.d.ts.map +0 -1
- package/dist/slice.js +0 -26
- package/dist/slice.js.map +0 -1
- package/dist/snapshotEffect.d.ts +0 -5
- package/dist/snapshotEffect.d.ts.map +0 -1
- package/dist/snapshotEffect.js +0 -22
- package/dist/snapshotEffect.js.map +0 -1
- package/dist/struct.d.ts +0 -5
- package/dist/struct.d.ts.map +0 -1
- package/dist/struct.js +0 -6
- package/dist/struct.js.map +0 -1
- package/dist/succeed.d.ts +0 -4
- package/dist/succeed.d.ts.map +0 -1
- package/dist/succeed.js +0 -6
- package/dist/succeed.js.map +0 -1
- package/dist/suspend.d.ts +0 -3
- package/dist/suspend.d.ts.map +0 -1
- package/dist/suspend.js +0 -5
- package/dist/suspend.js.map +0 -1
- package/dist/switchMap.d.ts +0 -7
- package/dist/switchMap.d.ts.map +0 -1
- package/dist/switchMap.js +0 -16
- package/dist/switchMap.js.map +0 -1
- package/dist/switchMapCause.d.ts +0 -9
- package/dist/switchMapCause.d.ts.map +0 -1
- package/dist/switchMapCause.js +0 -30
- package/dist/switchMapCause.js.map +0 -1
- package/dist/switchMatch.d.ts +0 -8
- package/dist/switchMatch.d.ts.map +0 -1
- package/dist/switchMatch.js +0 -20
- package/dist/switchMatch.js.map +0 -1
- package/dist/takeWhile.d.ts +0 -5
- package/dist/takeWhile.d.ts.map +0 -1
- package/dist/takeWhile.js +0 -18
- package/dist/takeWhile.js.map +0 -1
- package/dist/tap.d.ts +0 -5
- package/dist/tap.d.ts.map +0 -1
- package/dist/tap.js +0 -9
- package/dist/tap.js.map +0 -1
- package/dist/tapCause.d.ts +0 -8
- package/dist/tapCause.d.ts.map +0 -1
- package/dist/tapCause.js +0 -20
- package/dist/tapCause.js.map +0 -1
- package/dist/test-utils.d.ts +0 -5
- package/dist/test-utils.d.ts.map +0 -1
- package/dist/test-utils.js +0 -24
- package/dist/test-utils.js.map +0 -1
- package/dist/throttle.d.ts +0 -4
- package/dist/throttle.d.ts.map +0 -1
- package/dist/throttle.js +0 -7
- package/dist/throttle.js.map +0 -1
- package/dist/toArray.d.ts +0 -5
- package/dist/toArray.d.ts.map +0 -1
- package/dist/toArray.js +0 -9
- package/dist/toArray.js.map +0 -1
- package/dist/toChunk.d.ts +0 -6
- package/dist/toChunk.d.ts.map +0 -1
- package/dist/toChunk.js +0 -11
- package/dist/toChunk.js.map +0 -1
- package/dist/toEnqueue.d.ts +0 -6
- package/dist/toEnqueue.d.ts.map +0 -1
- package/dist/toEnqueue.js +0 -5
- package/dist/toEnqueue.js.map +0 -1
- package/dist/toReadonlyArray.d.ts +0 -5
- package/dist/toReadonlyArray.d.ts.map +0 -1
- package/dist/toReadonlyArray.js +0 -5
- package/dist/toReadonlyArray.js.map +0 -1
- package/dist/toStream.d.ts +0 -4
- package/dist/toStream.d.ts.map +0 -1
- package/dist/toStream.js +0 -12
- package/dist/toStream.js.map +0 -1
- package/dist/tsconfig.cjs.build.tsbuildinfo +0 -1
- package/eslintrc.json +0 -3
- package/project.json +0 -43
- package/readme.md +0 -3
- package/src/RefRemoteData.test.ts +0 -100
- package/src/RefRemoteData.ts +0 -172
- package/src/RefSubject.test.ts +0 -437
- package/src/RefTransform.ts +0 -210
- package/src/Transducer.ts +0 -0
- package/src/at.ts +0 -8
- package/src/catchAllCause.test.ts +0 -23
- package/src/catchAllCause.ts +0 -82
- package/src/combineAll.ts +0 -65
- package/src/combineAllDiscard.ts +0 -46
- package/src/continueWith.test.ts +0 -17
- package/src/continueWith.ts +0 -30
- package/src/data-first.ts +0 -67
- package/src/debounce.test.ts +0 -18
- package/src/debounce.ts +0 -9
- package/src/delay.test.ts +0 -13
- package/src/delay.ts +0 -8
- package/src/empty.test.ts +0 -10
- package/src/empty.ts +0 -7
- package/src/exhaustMap.test.ts +0 -19
- package/src/exhaustMap.ts +0 -31
- package/src/exhaustMapCause.test.ts +0 -23
- package/src/exhaustMapCause.ts +0 -41
- package/src/exhaustMapLatest.test.ts +0 -19
- package/src/exhaustMapLatest.ts +0 -31
- package/src/exhaustMapLatestCause.test.ts +0 -23
- package/src/exhaustMapLatestCause.ts +0 -41
- package/src/failCause.test.ts +0 -21
- package/src/failCause.ts +0 -20
- package/src/filter.ts +0 -23
- package/src/filterMap.ts +0 -19
- package/src/flatMap.test.ts +0 -19
- package/src/flatMap.ts +0 -31
- package/src/fromArray.test.ts +0 -11
- package/src/fromArray.ts +0 -21
- package/src/fromDequeue.ts +0 -39
- package/src/fromEffect.test.ts +0 -16
- package/src/fromEffect.ts +0 -23
- package/src/fromEmitter.test.ts +0 -33
- package/src/fromEmitter.ts +0 -46
- package/src/fromFxEffect.test.ts +0 -17
- package/src/fromFxEffect.ts +0 -11
- package/src/fromHub.ts +0 -10
- package/src/fromIterable.test.ts +0 -11
- package/src/fromIterable.ts +0 -27
- package/src/gen.test.ts +0 -30
- package/src/gen.ts +0 -28
- package/src/helpers.ts +0 -142
- package/src/hold.test.ts +0 -37
- package/src/hold.ts +0 -36
- package/src/keyed.test.ts +0 -47
- package/src/keyed.ts +0 -278
- package/src/map.test.ts +0 -17
- package/src/map.ts +0 -11
- package/src/mapEffect.ts +0 -20
- package/src/mergeAll.test.ts +0 -17
- package/src/mergeAll.ts +0 -38
- package/src/mergeBufferConcurrently.test.ts +0 -37
- package/src/mergeBufferConcurrently.ts +0 -106
- package/src/mergeConcurrently.test.ts +0 -20
- package/src/mergeConcurrently.ts +0 -57
- package/src/multicast.test.ts +0 -88
- package/src/multicast.ts +0 -131
- package/src/never.ts +0 -7
- package/src/observe.ts +0 -43
- package/src/onExit.ts +0 -13
- package/src/onInterrupt.ts +0 -16
- package/src/orElse.ts +0 -16
- package/src/promise.ts +0 -37
- package/src/provide.ts +0 -76
- package/src/reduce.ts +0 -19
- package/src/scan.ts +0 -15
- package/src/scoped.ts +0 -8
- package/src/skipRepeats.ts +0 -29
- package/src/skipWhile.test.ts +0 -27
- package/src/skipWhile.ts +0 -31
- package/src/slice.test.ts +0 -26
- package/src/slice.ts +0 -43
- package/src/snapshotEffect.ts +0 -49
- package/src/struct.ts +0 -18
- package/src/succeed.ts +0 -7
- package/src/suspend.ts +0 -5
- package/src/switchMap.test.ts +0 -19
- package/src/switchMap.ts +0 -38
- package/src/switchMapCause.test.ts +0 -23
- package/src/switchMapCause.ts +0 -57
- package/src/switchMatch.test.ts +0 -26
- package/src/switchMatch.ts +0 -62
- package/src/takeWhile.test.ts +0 -27
- package/src/takeWhile.ts +0 -34
- package/src/tap.ts +0 -22
- package/src/tapCause.ts +0 -44
- package/src/test-utils.ts +0 -38
- package/src/throttle.test.ts +0 -18
- package/src/throttle.ts +0 -13
- package/src/toArray.ts +0 -16
- package/src/toChunk.ts +0 -16
- package/src/toEnqueue.ts +0 -13
- package/src/toReadonlyArray.ts +0 -11
- package/src/toStream.ts +0 -23
- package/tsconfig.build.json +0 -8
- package/tsconfig.build.tsbuildinfo +0 -1
- package/tsconfig.cjs.build.json +0 -13
- package/tsconfig.json +0 -18
- package/vite.config.js +0 -3
package/src/RefSubject.ts
CHANGED
|
@@ -1,800 +1,643 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
import {
|
|
9
|
-
import * as
|
|
10
|
-
import
|
|
11
|
-
import
|
|
12
|
-
import * as
|
|
13
|
-
import
|
|
14
|
-
|
|
15
|
-
import {
|
|
16
|
-
import
|
|
17
|
-
import
|
|
18
|
-
import
|
|
19
|
-
import {
|
|
20
|
-
import {
|
|
21
|
-
import
|
|
22
|
-
import {
|
|
23
|
-
import
|
|
24
|
-
import {
|
|
25
|
-
import {
|
|
26
|
-
import {
|
|
27
|
-
import
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
export const RefSubjectTypeId = Symbol.for('@typed/fx/RefSubject')
|
|
38
|
-
export type RefSubjectTypeId = typeof RefSubjectTypeId
|
|
39
|
-
|
|
40
|
-
export interface RefSubject<in out E, in out A>
|
|
41
|
-
extends Subject<E, A>,
|
|
42
|
-
Computed<never, E, A>,
|
|
43
|
-
Pipeable {
|
|
1
|
+
/**
|
|
2
|
+
* A RefSubject is the core abstraction for keeping state and subscribing to its
|
|
3
|
+
* changes over time.
|
|
4
|
+
*
|
|
5
|
+
* @since 1.18.0
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import type { Schema } from "@effect/schema"
|
|
9
|
+
import * as C from "@typed/context"
|
|
10
|
+
import type { Stream, SubscriptionRef } from "effect"
|
|
11
|
+
import { Cause, Exit, identity } from "effect"
|
|
12
|
+
import * as Effect from "effect/Effect"
|
|
13
|
+
import { equals } from "effect/Equal"
|
|
14
|
+
import type { Equivalence } from "effect/Equivalence"
|
|
15
|
+
import { dual } from "effect/Function"
|
|
16
|
+
import type * as Layer from "effect/Layer"
|
|
17
|
+
import * as Option from "effect/Option"
|
|
18
|
+
import type * as Scope from "effect/Scope"
|
|
19
|
+
import { Computed, fromTag } from "./Computed"
|
|
20
|
+
import { Filtered } from "./Filtered"
|
|
21
|
+
import type * as Fx from "./Fx"
|
|
22
|
+
import { fromStream, provide, skipRepeatsWith } from "./internal/core"
|
|
23
|
+
import * as coreRefSubject from "./internal/core-ref-subject"
|
|
24
|
+
import { exit, fromFxEffect } from "./internal/fx"
|
|
25
|
+
import { FxEffectBase } from "./internal/protos"
|
|
26
|
+
import { fromRefSubject, toRefSubject } from "./internal/schema-ref-subject"
|
|
27
|
+
import type * as Subject from "./Subject"
|
|
28
|
+
import { ComputedTypeId, RefSubjectTypeId } from "./TypeId"
|
|
29
|
+
import * as Versioned from "./Versioned"
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* A RefSubject is a Subject that has a current value that can be read and updated.
|
|
33
|
+
* @since 1.18.0
|
|
34
|
+
* @category models
|
|
35
|
+
*/
|
|
36
|
+
export interface RefSubject<R, in out E, in out A> extends Computed<R, E, A>, Subject.Subject<R, E, A> {
|
|
44
37
|
readonly [RefSubjectTypeId]: RefSubjectTypeId
|
|
45
38
|
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
39
|
+
/**
|
|
40
|
+
* Get the current value of this RefSubject. If the RefSubject has not been initialized
|
|
41
|
+
* then the initial value will be computed and returned. Concurrent calls to `get` will
|
|
42
|
+
* only compute the initial value once.
|
|
43
|
+
* @since 1.18.0
|
|
44
|
+
*/
|
|
45
|
+
readonly get: Effect.Effect<R, E, A>
|
|
51
46
|
|
|
52
|
-
|
|
47
|
+
/**
|
|
48
|
+
* Set the current value of this RefSubject.
|
|
49
|
+
* @since 1.18.0
|
|
50
|
+
*/
|
|
51
|
+
readonly set: (a: A) => Effect.Effect<R, never, A>
|
|
53
52
|
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
53
|
+
/**
|
|
54
|
+
* Modify the current value of this RefSubject using the provided function.
|
|
55
|
+
* @since 1.18.0
|
|
56
|
+
*/
|
|
57
|
+
readonly update: (f: (a: A) => A) => Effect.Effect<R, E, A>
|
|
57
58
|
|
|
58
|
-
|
|
59
|
+
/**
|
|
60
|
+
* Modify the current value of this RefSubject and compute a new value.
|
|
61
|
+
* @since 1.18.0
|
|
62
|
+
*/
|
|
63
|
+
readonly modify: <B>(f: (a: A) => readonly [B, A]) => Effect.Effect<R, E, B>
|
|
59
64
|
|
|
60
|
-
|
|
65
|
+
/**
|
|
66
|
+
* Delete the current value of this RefSubject. If it was not initialized the Option.none will be returned.
|
|
67
|
+
* Otherwise the current value will be returned as an Option.some and the RefSubject will be uninitialized.
|
|
68
|
+
* If there are existing subscribers to this RefSubject then the RefSubject will be re-initialized.
|
|
69
|
+
* @since 1.18.0
|
|
70
|
+
*/
|
|
71
|
+
readonly delete: Effect.Effect<R, never, Option.Option<A>>
|
|
61
72
|
|
|
62
|
-
|
|
73
|
+
/**
|
|
74
|
+
* Modify the current value of this RefSubject and compute a new value using the provided effectful function.
|
|
75
|
+
* @since 1.18.0
|
|
76
|
+
*/
|
|
77
|
+
readonly modifyEffect: <R2, E2, B>(
|
|
78
|
+
f: (a: A) => Effect.Effect<R2, E2, readonly [B, A]>
|
|
79
|
+
) => Effect.Effect<R | R2, E | E2, B>
|
|
63
80
|
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
81
|
+
/**
|
|
82
|
+
* Modify the current value of this RefSubject using the provided effectful function.
|
|
83
|
+
* @since 1.18.0
|
|
84
|
+
*/
|
|
85
|
+
readonly updateEffect: <R2, E2>(f: (a: A) => Effect.Effect<R2, E2, A>) => Effect.Effect<R | R2, E | E2, A>
|
|
67
86
|
|
|
68
87
|
/**
|
|
69
|
-
*
|
|
70
|
-
*
|
|
88
|
+
* Modify the current value of this RefSubject and compute a new value using the provided effectful function.
|
|
89
|
+
* The key difference is it will allow running a workflow and setting the value multiple times. Optionally,
|
|
90
|
+
* another function can be provided to change the value
|
|
91
|
+
* @since 1.18.0
|
|
71
92
|
*/
|
|
72
|
-
readonly
|
|
73
|
-
|
|
93
|
+
readonly runUpdate: <R2, E2, B, R3 = never, E3 = never>(
|
|
94
|
+
updates: (
|
|
95
|
+
get: RefSubject<R, E, A>["get"],
|
|
96
|
+
set: RefSubject<R, E, A>["set"]
|
|
97
|
+
) => Effect.Effect<R2, E2, B>,
|
|
98
|
+
onInterrupt?: (a: A) => Effect.Effect<R3, E3, A>
|
|
99
|
+
) => Effect.Effect<R | R2 | R3, E | E2 | E3, B>
|
|
74
100
|
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
eq?: Equivalence.Equivalence<A>,
|
|
80
|
-
): Effect.Effect<R | Scope.Scope, never, RefSubject<E, A>> {
|
|
81
|
-
return Effect.contextWithEffect((context) =>
|
|
82
|
-
Effect.suspend(() => {
|
|
83
|
-
const ref = RefSubject.unsafeMake(
|
|
84
|
-
Effect.provideContext(effect, context),
|
|
85
|
-
Context.get(context, Scope.Scope),
|
|
86
|
-
eq,
|
|
87
|
-
)
|
|
88
|
-
|
|
89
|
-
return Effect.as(
|
|
90
|
-
Effect.addFinalizer(() => ref.end()),
|
|
91
|
-
ref,
|
|
92
|
-
)
|
|
93
|
-
}),
|
|
94
|
-
)
|
|
101
|
+
/**
|
|
102
|
+
* Interrupt the current Fibers.
|
|
103
|
+
*/
|
|
104
|
+
readonly interrupt: Effect.Effect<R, never, void>
|
|
95
105
|
}
|
|
96
106
|
|
|
107
|
+
/**
|
|
108
|
+
* @since 1.18.0
|
|
109
|
+
*/
|
|
97
110
|
export namespace RefSubject {
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
export function tuple<const Refs extends readonly Any[]>(
|
|
109
|
-
...refs: Refs
|
|
110
|
-
): RefSubject<
|
|
111
|
-
Fx.Error<Refs[number]>,
|
|
112
|
-
{
|
|
113
|
-
readonly [K in keyof Refs]: Fx.Success<Refs[K]>
|
|
114
|
-
}
|
|
115
|
-
> {
|
|
116
|
-
return makeRefFromPrimitive<
|
|
117
|
-
Fx.Error<Refs[number]>,
|
|
118
|
-
{
|
|
119
|
-
readonly [K in keyof Refs]: Fx.Success<Refs[K]>
|
|
120
|
-
}
|
|
121
|
-
>(tupleRefPrimitive<Refs>(refs))
|
|
122
|
-
}
|
|
123
|
-
|
|
124
|
-
export function struct<const Refs extends Readonly<Record<string, Any>>>(
|
|
125
|
-
refs: Refs,
|
|
126
|
-
): RefSubject<
|
|
127
|
-
Fx.Error<Refs[string]>,
|
|
128
|
-
{
|
|
129
|
-
readonly [K in keyof Refs]: Fx.Success<Refs[K]>
|
|
130
|
-
}
|
|
131
|
-
> {
|
|
132
|
-
return makeRefFromPrimitive(structRefPrimitive<Refs>(refs))
|
|
133
|
-
}
|
|
134
|
-
|
|
135
|
-
export function all<S extends ReadonlyArray<Any>>(
|
|
136
|
-
subjects: S,
|
|
137
|
-
): RefSubject<
|
|
138
|
-
Fx.Error<S[number]>,
|
|
139
|
-
{
|
|
140
|
-
readonly [K in keyof S]: Fx.Success<S[K]>
|
|
141
|
-
}
|
|
142
|
-
>
|
|
143
|
-
|
|
144
|
-
export function all<S extends ReadonlyArray<Any>>(
|
|
145
|
-
...subjects: S
|
|
146
|
-
): RefSubject<
|
|
147
|
-
Fx.Error<S[number]>,
|
|
148
|
-
{
|
|
149
|
-
readonly [K in keyof S]: Fx.Success<S[K]>
|
|
150
|
-
}
|
|
151
|
-
>
|
|
152
|
-
|
|
153
|
-
export function all<S extends Readonly<Record<string, Any>>>(
|
|
154
|
-
subjects: S,
|
|
155
|
-
): RefSubject<
|
|
156
|
-
Fx.Error<S[string]>,
|
|
157
|
-
{
|
|
158
|
-
readonly [K in keyof S]: Fx.Success<S[K]>
|
|
159
|
-
}
|
|
160
|
-
>
|
|
161
|
-
|
|
162
|
-
export function all(...subjects: any): any {
|
|
163
|
-
/// MUST be a tuple if more than one argument
|
|
164
|
-
if (subjects.length > 1) {
|
|
165
|
-
return tuple(...subjects)
|
|
166
|
-
}
|
|
167
|
-
|
|
168
|
-
// Otherwise a single param is either a tuple or a struct
|
|
169
|
-
const singleParam = subjects[0]
|
|
170
|
-
|
|
171
|
-
if (Array.isArray(singleParam)) {
|
|
172
|
-
return tuple(...singleParam)
|
|
173
|
-
}
|
|
174
|
-
|
|
175
|
-
return struct(singleParam)
|
|
176
|
-
}
|
|
177
|
-
}
|
|
178
|
-
|
|
179
|
-
export function isRefSubject<E, A>(u: unknown): u is RefSubject<E, A> {
|
|
180
|
-
return isFx<never, E, A>(u) && RefSubjectTypeId in u
|
|
181
|
-
}
|
|
182
|
-
|
|
183
|
-
// Internals for RefSubject
|
|
184
|
-
|
|
185
|
-
function makeGetFromContext<E, A>(ctx: RefSubjectContext<E, A>): RefSubject<E, A>['get'] {
|
|
186
|
-
return Effect.suspend(() => {
|
|
187
|
-
const current = MutableRef.get(ctx.currentRef)
|
|
188
|
-
|
|
189
|
-
if (Option.isSome(current)) {
|
|
190
|
-
return Effect.succeed(current.value)
|
|
191
|
-
}
|
|
192
|
-
|
|
193
|
-
const fiber = MutableRef.get(ctx.initializingFiberRef)
|
|
194
|
-
|
|
195
|
-
if (Option.isSome(fiber)) {
|
|
196
|
-
return Fiber.join(fiber.value)
|
|
197
|
-
}
|
|
198
|
-
|
|
199
|
-
return Effect.tap(ctx.lock(initializeFromContext(ctx)), (a) => ctx.hold.event(a))
|
|
200
|
-
})
|
|
201
|
-
}
|
|
202
|
-
|
|
203
|
-
function initializeFromContext<E, A>(ctx: RefSubjectContext<E, A>): Effect.Effect<never, E, A> {
|
|
204
|
-
return Effect.uninterruptibleMask((restore) =>
|
|
205
|
-
Effect.flatMap(Effect.forkIn(restore(ctx.initial), ctx.scope), (fiber) => {
|
|
206
|
-
MutableRef.set(ctx.initializingFiberRef, Option.some(fiber))
|
|
207
|
-
|
|
208
|
-
return Fiber.join(fiber).pipe(
|
|
209
|
-
Effect.tap((a) =>
|
|
210
|
-
Effect.sync(() => {
|
|
211
|
-
MutableRef.increment(ctx.version)
|
|
212
|
-
MutableRef.set(ctx.currentRef, Option.some(a))
|
|
213
|
-
}),
|
|
214
|
-
),
|
|
215
|
-
Effect.ensuring(Effect.sync(() => MutableRef.set(ctx.initializingFiberRef, Option.none()))),
|
|
216
|
-
)
|
|
217
|
-
}),
|
|
218
|
-
)
|
|
219
|
-
}
|
|
220
|
-
|
|
221
|
-
function makeRefMethods<E, A>(
|
|
222
|
-
primitive: RefPrimitive<E, A>,
|
|
223
|
-
): Pick<RefSubject<E, A>, 'modify' | 'updateEffect' | 'update'> {
|
|
224
|
-
const modify = makeModify<E, A>(primitive.modifyEffect)
|
|
225
|
-
const updateEffect = makeUpdateEffect<E, A>(primitive.modifyEffect)
|
|
226
|
-
const update = makeUpdate<E, A>(updateEffect)
|
|
227
|
-
|
|
228
|
-
return {
|
|
229
|
-
modify,
|
|
230
|
-
updateEffect,
|
|
231
|
-
update,
|
|
232
|
-
} as const
|
|
233
|
-
}
|
|
234
|
-
|
|
235
|
-
function makeModifyEffectFromContext<E, A>(
|
|
236
|
-
get: RefSubject<E, A>['get'],
|
|
237
|
-
ctx: RefSubjectContext<E, A>,
|
|
238
|
-
): RefSubject<E, A>['modifyEffect'] {
|
|
239
|
-
return (f) =>
|
|
240
|
-
Effect.flatMap(get, (a1) =>
|
|
241
|
-
ctx.lock(
|
|
242
|
-
Effect.flatMap(f(a1), ([b, a2]) =>
|
|
243
|
-
Effect.suspend(() => {
|
|
244
|
-
MutableRef.set(ctx.currentRef, Option.some(a2))
|
|
245
|
-
|
|
246
|
-
if (ctx.eq(a1, a2)) {
|
|
247
|
-
return Effect.succeed(b)
|
|
248
|
-
}
|
|
249
|
-
|
|
250
|
-
MutableRef.increment(ctx.version)
|
|
251
|
-
|
|
252
|
-
return Effect.as(ctx.hold.event(a2), b)
|
|
253
|
-
}),
|
|
254
|
-
),
|
|
255
|
-
),
|
|
256
|
-
)
|
|
257
|
-
}
|
|
258
|
-
|
|
259
|
-
function makeMultiUpdateFromContext<E, A>(
|
|
260
|
-
get: RefSubject<E, A>['get'],
|
|
261
|
-
set: RefSubject<E, A>['set'],
|
|
262
|
-
lock: RefSubjectContext<E, A>['lock'],
|
|
263
|
-
): RefSubject<E, A>['multiUpdate'] {
|
|
264
|
-
return (f) => get.pipe(Effect.flatMap((current) => lock(f(current, set))))
|
|
265
|
-
}
|
|
266
|
-
|
|
267
|
-
function makeModify<E, A>(
|
|
268
|
-
modifyEffect: RefSubject<E, A>['modifyEffect'],
|
|
269
|
-
): RefSubject<E, A>['modify'] {
|
|
270
|
-
return (f) => modifyEffect((a) => Effect.sync(() => f(a)))
|
|
271
|
-
}
|
|
272
|
-
|
|
273
|
-
function makeUpdateEffect<E, A>(
|
|
274
|
-
modifyEffect: RefSubject<E, A>['modifyEffect'],
|
|
275
|
-
): RefSubject<E, A>['updateEffect'] {
|
|
276
|
-
return (f) => modifyEffect((a) => Effect.map(f(a), (a) => [a, a]))
|
|
277
|
-
}
|
|
278
|
-
|
|
279
|
-
function makeUpdate<E, A>(
|
|
280
|
-
updateEffect: RefSubject<E, A>['updateEffect'],
|
|
281
|
-
): RefSubject<E, A>['update'] {
|
|
282
|
-
return (f) => updateEffect((a) => Effect.sync(() => f(a)))
|
|
283
|
-
}
|
|
284
|
-
|
|
285
|
-
function makeSetFromContext<E, A>(ctx: RefSubjectContext<E, A>): RefSubject<E, A>['set'] {
|
|
286
|
-
return (a: A) =>
|
|
287
|
-
Effect.suspend(() => {
|
|
288
|
-
const fiber = MutableRef.get(ctx.initializingFiberRef)
|
|
289
|
-
|
|
290
|
-
return pipe(
|
|
291
|
-
fiber,
|
|
292
|
-
Option.match({ onNone: () => Effect.unit, onSome: Fiber.await }),
|
|
293
|
-
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
294
|
-
Effect.flatMap((_: unknown) => {
|
|
295
|
-
const current = MutableRef.get(ctx.currentRef)
|
|
296
|
-
|
|
297
|
-
MutableRef.set(ctx.currentRef, Option.some(a))
|
|
298
|
-
|
|
299
|
-
// Only emit if the value has changed
|
|
300
|
-
if (Option.isNone(current) || (Option.isSome(current) && !ctx.eq(current.value, a))) {
|
|
301
|
-
// Increment the version
|
|
302
|
-
MutableRef.increment(ctx.version)
|
|
303
|
-
return Effect.as(ctx.hold.event(a), a)
|
|
304
|
-
}
|
|
305
|
-
|
|
306
|
-
return Effect.succeed(a)
|
|
307
|
-
}),
|
|
308
|
-
)
|
|
309
|
-
})
|
|
310
|
-
}
|
|
311
|
-
|
|
312
|
-
function makeDeleteFromContext<E, A>(
|
|
313
|
-
ctx: RefSubjectContext<E, A>,
|
|
314
|
-
get: RefSubject<E, A>['get'],
|
|
315
|
-
): RefSubject<E, A>['delete'] {
|
|
316
|
-
return Effect.suspend(() => {
|
|
317
|
-
const current = MutableRef.get(ctx.currentRef)
|
|
318
|
-
|
|
319
|
-
if (Option.isSome(current)) {
|
|
320
|
-
MutableRef.set(ctx.version, 0)
|
|
321
|
-
MutableRef.set(ctx.currentRef, Option.none())
|
|
322
|
-
|
|
323
|
-
// Attempt to reinitialize the subject if there are observers
|
|
324
|
-
if (ctx.hold.observers.length > 0) {
|
|
325
|
-
return Effect.forkDaemon(get).pipe(Effect.as(current))
|
|
326
|
-
}
|
|
327
|
-
}
|
|
328
|
-
|
|
329
|
-
return Effect.succeed(current)
|
|
330
|
-
})
|
|
331
|
-
}
|
|
332
|
-
|
|
333
|
-
function makeEndFromContext<E, A>(ctx: RefSubjectContext<E, A>): RefSubject<E, A>['end'] {
|
|
334
|
-
return () =>
|
|
335
|
-
Effect.suspend(() => {
|
|
336
|
-
MutableRef.set(ctx.version, 0)
|
|
337
|
-
|
|
338
|
-
const fibers = [
|
|
339
|
-
ctx.hold.fiber || Fiber.unit,
|
|
340
|
-
Option.getOrElse(MutableRef.get(ctx.initializingFiberRef), () => Fiber.unit),
|
|
341
|
-
]
|
|
342
|
-
|
|
343
|
-
return Fiber.interruptAll(fibers)
|
|
344
|
-
})
|
|
345
|
-
}
|
|
346
|
-
|
|
347
|
-
function makeFiltered<E, A>(
|
|
348
|
-
f: () => RefSubject<E, A>,
|
|
349
|
-
): Pick<
|
|
350
|
-
RefSubject<E, A>,
|
|
351
|
-
'filterMapEffect' | 'filterMap' | 'filterEffect' | 'filter' | 'filterNotEffect' | 'filterNot'
|
|
352
|
-
> {
|
|
353
|
-
const get = makeMemoizedGet(f)
|
|
354
|
-
|
|
355
|
-
function filterMapEffect<R2, E2, B>(f: (a: A) => Effect.Effect<R2, E2, Option.Option<B>>) {
|
|
356
|
-
return new FilteredImpl(get(), f)
|
|
357
|
-
}
|
|
111
|
+
/**
|
|
112
|
+
* @since 1.18.0
|
|
113
|
+
*/
|
|
114
|
+
export type Any =
|
|
115
|
+
| RefSubject<any, any, any>
|
|
116
|
+
| RefSubject<never, any, any>
|
|
117
|
+
| RefSubject<any, never, any>
|
|
118
|
+
| RefSubject<never, never, any>
|
|
358
119
|
|
|
359
|
-
|
|
360
|
-
|
|
120
|
+
/**
|
|
121
|
+
* A Contextual wrapper around a RefSubject
|
|
122
|
+
* @since 1.18.0
|
|
123
|
+
* @category models
|
|
124
|
+
*/
|
|
125
|
+
export interface Tagged<I, E, A> extends RefSubject<I, E, A> {
|
|
126
|
+
readonly tag: C.Tagged<I, RefSubject<never, E, A>>
|
|
127
|
+
|
|
128
|
+
/**
|
|
129
|
+
* Make a layer initializing a RefSubject
|
|
130
|
+
* @since 1.18.0
|
|
131
|
+
*/
|
|
132
|
+
readonly make: <R = never>(
|
|
133
|
+
fx: Exclude<Fx.FxInput<R, E, A>, Iterable<A>>,
|
|
134
|
+
eq?: Equivalence<A>
|
|
135
|
+
) => Layer.Layer<R, never, I>
|
|
136
|
+
|
|
137
|
+
/**
|
|
138
|
+
* Make a layer initializing a RefSubject
|
|
139
|
+
* @since 1.18.0
|
|
140
|
+
*/
|
|
141
|
+
readonly of: (value: A, eq?: Equivalence<A>) => Layer.Layer<never, never, I>
|
|
142
|
+
|
|
143
|
+
/**
|
|
144
|
+
* Provide an implementation of this RefSubject
|
|
145
|
+
* @since 1.18.0
|
|
146
|
+
*/
|
|
147
|
+
readonly provide: <R2>(fx: Fx.FxInput<R2, E, A>, eq?: Equivalence<A>) => <R3, E3, C>(
|
|
148
|
+
effect: Effect.Effect<R3, E3, C>
|
|
149
|
+
) => Effect.Effect<R2 | Exclude<R3, I> | Scope.Scope, E | E3, C>
|
|
150
|
+
|
|
151
|
+
/**
|
|
152
|
+
* Provide an implementation of this RefSubject
|
|
153
|
+
* @since 1.18.0
|
|
154
|
+
*/
|
|
155
|
+
readonly provideFx: <R2>(fx: Fx.FxInput<R2, E, A>, eq?: Equivalence<A>) => <R3, E3, C>(
|
|
156
|
+
effect: Fx.Fx<R3, E3, C>
|
|
157
|
+
) => Fx.Fx<R2 | Exclude<R3, I> | Scope.Scope, E | E3, C>
|
|
361
158
|
}
|
|
362
159
|
|
|
363
|
-
|
|
364
|
-
|
|
160
|
+
/**
|
|
161
|
+
* A Contextual wrapper around a RefSubject
|
|
162
|
+
* @since 1.18.0
|
|
163
|
+
* @category models
|
|
164
|
+
*/
|
|
165
|
+
export interface Derived<R0, R, E, A> extends RefSubject<R, E, A> {
|
|
166
|
+
readonly persist: Effect.Effect<R0, never, void>
|
|
365
167
|
}
|
|
366
168
|
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
169
|
+
/**
|
|
170
|
+
* Extract the Identifier from a RefSubject
|
|
171
|
+
* @since 1.18.0
|
|
172
|
+
*/
|
|
173
|
+
export type Context<T> = T extends RefSubject<infer I, infer _, infer __> ? I : never
|
|
370
174
|
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
175
|
+
/**
|
|
176
|
+
* Extract the Error from a RefSubject
|
|
177
|
+
* @since 1.18.0
|
|
178
|
+
*/
|
|
179
|
+
export type Error<T> = T extends RefSubject<infer _, infer E, infer __> ? E : never
|
|
374
180
|
|
|
375
|
-
|
|
376
|
-
|
|
181
|
+
/**
|
|
182
|
+
* Extract the State from a RefSubject
|
|
183
|
+
* @since 1.18.0
|
|
184
|
+
*/
|
|
185
|
+
export type Success<T> = T extends RefSubject<infer _, infer __, infer S> ? S : never
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
/**
|
|
189
|
+
* Extract the Identifier from a RefSubject
|
|
190
|
+
* @since 1.18.0
|
|
191
|
+
*/
|
|
192
|
+
export type Context<T> = RefSubject.Context<T>
|
|
193
|
+
|
|
194
|
+
/**
|
|
195
|
+
* Extract the Error from a RefSubject
|
|
196
|
+
* @since 1.18.0
|
|
197
|
+
*/
|
|
198
|
+
export type Error<T> = RefSubject.Error<T>
|
|
199
|
+
|
|
200
|
+
/**
|
|
201
|
+
* Extract the State from a RefSubject
|
|
202
|
+
* @since 1.18.0
|
|
203
|
+
*/
|
|
204
|
+
export type Success<T> = RefSubject.Success<T>
|
|
205
|
+
|
|
206
|
+
/**
|
|
207
|
+
* Construct a RefSubject with a lazily initialized value.
|
|
208
|
+
* @since 1.18.0
|
|
209
|
+
* @category constructors
|
|
210
|
+
*/
|
|
211
|
+
export function fromEffect<R, E, A>(
|
|
212
|
+
initial: Effect.Effect<R, E, A>,
|
|
213
|
+
eq?: Equivalence<A>
|
|
214
|
+
): Effect.Effect<R | Scope.Scope, never, RefSubject<never, E, A>> {
|
|
215
|
+
return coreRefSubject.fromEffect(initial, eq)
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
/**
|
|
219
|
+
* Construct a RefSubject from a synchronous value.
|
|
220
|
+
* @since 1.18.0
|
|
221
|
+
* @category constructors
|
|
222
|
+
*/
|
|
223
|
+
export function of<A, E = never>(
|
|
224
|
+
initial: A,
|
|
225
|
+
eq?: Equivalence<A>
|
|
226
|
+
): Effect.Effect<Scope.Scope, never, RefSubject<never, E, A>> {
|
|
227
|
+
return fromEffect<never, E, A>(Effect.succeed(initial), eq)
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
/**
|
|
231
|
+
* Construct a RefSubject from a synchronous value.
|
|
232
|
+
* @since 1.18.0
|
|
233
|
+
* @category constructors
|
|
234
|
+
*/
|
|
235
|
+
export function sync<A, E = never>(
|
|
236
|
+
initial: () => A,
|
|
237
|
+
eq?: Equivalence<A>
|
|
238
|
+
): Effect.Effect<Scope.Scope, never, RefSubject<never, E, A>> {
|
|
239
|
+
return fromEffect<never, E, A>(Effect.sync(initial), eq)
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
/**
|
|
243
|
+
* Construct a RefSubject from any Fx value.
|
|
244
|
+
*
|
|
245
|
+
* @since 1.18.0
|
|
246
|
+
* @category constructors
|
|
247
|
+
*/
|
|
248
|
+
export function make<R, E, A>(
|
|
249
|
+
fx: Effect.Effect<R, E, A>,
|
|
250
|
+
eq?: Equivalence<A>
|
|
251
|
+
): Effect.Effect<R | Scope.Scope, never, RefSubject<never, E, A>>
|
|
252
|
+
export function make<R, E, A>(
|
|
253
|
+
fx: Fx.FxInput<R, E, A>,
|
|
254
|
+
eq?: Equivalence<A>
|
|
255
|
+
): Effect.Effect<R | Scope.Scope, never, RefSubject<never, E, A>>
|
|
256
|
+
|
|
257
|
+
export function make<R, E, A>(
|
|
258
|
+
fx: Fx.FxInput<R, E, A>,
|
|
259
|
+
eq?: Equivalence<A>
|
|
260
|
+
): Effect.Effect<R | Scope.Scope, never, RefSubject<never, E, A>> {
|
|
261
|
+
return coreRefSubject.make(fx, eq)
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
/**
|
|
265
|
+
* Create a contextual wrapper around a RefSubject while maintaing the full API of
|
|
266
|
+
* a Ref Subject.
|
|
267
|
+
* @since 1.18.0
|
|
268
|
+
* @category constructors
|
|
269
|
+
*/
|
|
270
|
+
export function tagged<A>(defaultEq?: Equivalence<A>): {
|
|
271
|
+
<const I extends C.IdentifierConstructor<any>>(
|
|
272
|
+
identifier: (id: typeof C.id) => I
|
|
273
|
+
): RefSubject.Tagged<C.IdentifierOf<I>, never, A>
|
|
274
|
+
<const I>(identifier: I | string): RefSubject.Tagged<C.IdentifierOf<I>, never, A>
|
|
275
|
+
}
|
|
276
|
+
export function tagged<E, A>(defaultEq?: Equivalence<A>): {
|
|
277
|
+
<const I extends C.IdentifierConstructor<any>>(
|
|
278
|
+
identifier: (id: typeof C.id) => I
|
|
279
|
+
): RefSubject.Tagged<C.IdentifierOf<I>, E, A>
|
|
280
|
+
<const I>(identifier: I | string): RefSubject.Tagged<C.IdentifierOf<I>, E, A>
|
|
281
|
+
}
|
|
282
|
+
|
|
283
|
+
export function tagged(defaultEq?: Equivalence<any>): {
|
|
284
|
+
<const I extends C.IdentifierConstructor<any>>(
|
|
285
|
+
identifier: (id: typeof C.id) => I
|
|
286
|
+
): RefSubject.Tagged<C.IdentifierOf<I>, any, any> | RefSubject.Tagged<C.IdentifierOf<I>, never, any>
|
|
287
|
+
<const I>(
|
|
288
|
+
identifier: I | string
|
|
289
|
+
): RefSubject.Tagged<C.IdentifierOf<I>, any, any> | RefSubject.Tagged<C.IdentifierOf<I>, never, any>
|
|
290
|
+
} {
|
|
291
|
+
function makeTagged<const I extends C.IdentifierFactory<any>>(
|
|
292
|
+
identifier: I
|
|
293
|
+
): RefSubject.Tagged<C.IdentifierOf<I>, any, any>
|
|
294
|
+
function makeTagged<const I>(identifier: I): RefSubject.Tagged<C.IdentifierOf<I>, any, any>
|
|
295
|
+
function makeTagged<const I>(identifier: I): RefSubject.Tagged<C.IdentifierOf<I>, any, any> {
|
|
296
|
+
return new ContextImpl(C.Tagged<I, RefSubject<never, any, any>>(identifier), defaultEq) as any
|
|
377
297
|
}
|
|
378
298
|
|
|
379
|
-
return
|
|
380
|
-
filterMapEffect,
|
|
381
|
-
filterMap,
|
|
382
|
-
filterEffect,
|
|
383
|
-
filter,
|
|
384
|
-
filterNotEffect,
|
|
385
|
-
filterNot,
|
|
386
|
-
} as const
|
|
299
|
+
return makeTagged
|
|
387
300
|
}
|
|
388
301
|
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
const get = makeMemoizedGet(f)
|
|
393
|
-
|
|
394
|
-
function mapEffect<R2, E2, B>(f: (a: A) => Effect.Effect<R2, E2, B>): Computed<R2, E | E2, B> {
|
|
395
|
-
return new ComputedImpl(get(), f)
|
|
396
|
-
}
|
|
397
|
-
|
|
398
|
-
function map<B>(f: (a: A) => B): Computed<never, E, B> {
|
|
399
|
-
return mapEffect((a) => Effect.sync(() => f(a)))
|
|
400
|
-
}
|
|
302
|
+
class ContextImpl<I, E, A> extends FxEffectBase<I, E, A, I, E, A> implements RefSubject<I, E, A> {
|
|
303
|
+
readonly [RefSubjectTypeId]: RefSubjectTypeId = RefSubjectTypeId
|
|
304
|
+
readonly [ComputedTypeId]: ComputedTypeId = ComputedTypeId
|
|
401
305
|
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
306
|
+
readonly version: RefSubject<I, E, A>["version"]
|
|
307
|
+
readonly subscriberCount: RefSubject<I, E, A>["subscriberCount"]
|
|
308
|
+
readonly get: RefSubject<I, E, A>["get"]
|
|
309
|
+
readonly delete: RefSubject<I, E, A>["delete"]
|
|
310
|
+
readonly interrupt: RefSubject<I, E, A>["interrupt"]
|
|
407
311
|
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
): Pick<RefSubject<E, A>, 'transformBoth' | 'transform' | 'transformGet'> {
|
|
411
|
-
const get = makeMemoizedGet(f)
|
|
312
|
+
constructor(readonly tag: C.Tagged<I, RefSubject<never, E, A>>, readonly defaultEq?: Equivalence<A>) {
|
|
313
|
+
super()
|
|
412
314
|
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
315
|
+
this.version = tag.withEffect((ref) => ref.version)
|
|
316
|
+
this.subscriberCount = tag.withEffect((ref) => ref.subscriberCount)
|
|
317
|
+
this.get = tag.withEffect((ref) => ref.get)
|
|
318
|
+
this.delete = tag.withEffect((ref) => ref.delete)
|
|
319
|
+
this.interrupt = tag.withEffect((r) => r.interrupt)
|
|
418
320
|
}
|
|
419
321
|
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
): RefTransform<R3, E3, C, never, E, A> {
|
|
423
|
-
return transformBoth(f, identity)
|
|
322
|
+
protected toFx(): Fx.Fx<I, E, A> {
|
|
323
|
+
return fromFxEffect(this.tag)
|
|
424
324
|
}
|
|
425
325
|
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
): RefTransform<never, E, A, R3, E3, C> {
|
|
429
|
-
return transformBoth(identity, f)
|
|
326
|
+
protected toEffect(): Effect.Effect<I, E, A> {
|
|
327
|
+
return this.get
|
|
430
328
|
}
|
|
431
329
|
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
} as const
|
|
437
|
-
}
|
|
438
|
-
|
|
439
|
-
const placeholders = {
|
|
440
|
-
_tag: 'Commit',
|
|
441
|
-
[Effect.EffectTypeId]: refVariance,
|
|
442
|
-
i0: undefined,
|
|
443
|
-
i1: undefined,
|
|
444
|
-
i2: undefined,
|
|
445
|
-
[Equal.symbol](that: unknown) {
|
|
446
|
-
return this === that
|
|
447
|
-
},
|
|
448
|
-
[Hash.symbol]() {
|
|
449
|
-
return Hash.random(this)
|
|
450
|
-
},
|
|
451
|
-
pipe() {
|
|
452
|
-
// eslint-disable-next-line prefer-rest-params
|
|
453
|
-
return pipeArguments(this, arguments)
|
|
454
|
-
},
|
|
455
|
-
}
|
|
456
|
-
|
|
457
|
-
function makeEffectMethods<E, A>(
|
|
458
|
-
get: RefSubject<E, A>['get'],
|
|
459
|
-
): Pick<RefSubject<E, A>, Extract<keyof Effect.Effect<never, E, A>, keyof RefSubject<E, A>>> {
|
|
460
|
-
return Object.assign(
|
|
461
|
-
{
|
|
462
|
-
commit() {
|
|
463
|
-
return get
|
|
464
|
-
},
|
|
465
|
-
} as const,
|
|
466
|
-
placeholders,
|
|
467
|
-
) as any
|
|
468
|
-
}
|
|
330
|
+
runUpdate: RefSubject<I, E, A>["runUpdate"] = (
|
|
331
|
+
f,
|
|
332
|
+
onInterrupt
|
|
333
|
+
) => this.tag.withEffect((ref) => ref.runUpdate(f, onInterrupt))
|
|
469
334
|
|
|
470
|
-
|
|
471
|
-
|
|
335
|
+
modifyEffect: <R2, E2, B>(f: (a: A) => Effect.Effect<R2, E2, readonly [B, A]>) => Effect.Effect<I | R2, E | E2, B> = (
|
|
336
|
+
f
|
|
337
|
+
) => this.tag.withEffect((ref) => ref.modifyEffect(f))
|
|
338
|
+
|
|
339
|
+
modify: <B>(f: (a: A) => readonly [B, A]) => Effect.Effect<I, E, B> = (f) =>
|
|
340
|
+
this.tag.withEffect((ref) => ref.modify(f))
|
|
341
|
+
|
|
342
|
+
updateEffect: <R2, E2>(f: (a: A) => Effect.Effect<R2, E2, A>) => Effect.Effect<I | R2, E | E2, A> = (f) =>
|
|
343
|
+
this.tag.withEffect((ref) => ref.updateEffect(f))
|
|
472
344
|
|
|
473
|
-
|
|
474
|
-
if (Option.isNone(memoized)) {
|
|
475
|
-
memoized = Option.some(f())
|
|
476
|
-
}
|
|
345
|
+
update: (f: (a: A) => A) => Effect.Effect<I, E, A> = (f) => this.tag.withEffect((ref) => ref.update(f))
|
|
477
346
|
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
347
|
+
set: (a: A) => Effect.Effect<I, never, A> = (a) => this.tag.withEffect((ref) => ref.set(a))
|
|
348
|
+
|
|
349
|
+
mapEffect: <R2, E2, B>(f: (a: A) => Effect.Effect<R2, E2, B>) => Computed<R2, E | E2, B> = (f) =>
|
|
350
|
+
Computed(this as any, f)
|
|
351
|
+
|
|
352
|
+
map: <B>(f: (a: A) => B) => Computed<I, E, B> = (f) => Computed(this as any, (a: A) => Effect.sync(() => f(a)))
|
|
353
|
+
|
|
354
|
+
filterMapEffect: <R2, E2, B>(
|
|
355
|
+
f: (a: A) => Effect.Effect<R2, E2, Option.Option<B>>
|
|
356
|
+
) => Filtered<R2, E | E2, B> = (f) => Filtered(this as any, f)
|
|
357
|
+
|
|
358
|
+
filterMap: <B>(f: (a: A) => Option.Option<B>) => Filtered<never, E, B> = (f) =>
|
|
359
|
+
Filtered(this as any, (a: A) => Effect.sync(() => f(a)))
|
|
360
|
+
|
|
361
|
+
filter: (f: (a: A) => boolean) => Filtered<I, E, A> = (f) =>
|
|
362
|
+
this.filterMap((a) => f(a) ? Option.some(a) : Option.none())
|
|
363
|
+
|
|
364
|
+
filterEffect: <R2, E2>(f: (a: A) => Effect.Effect<R2, E2, boolean>) => Filtered<I | R2, E | E2, A> = (f) =>
|
|
365
|
+
this.filterMapEffect((a) => Effect.map(f(a), (b) => b ? Option.some(a) : Option.none()))
|
|
366
|
+
|
|
367
|
+
skipRepeats: (eq?: Equivalence<A> | undefined) => Computed<I, E, A> = (eq = equals) =>
|
|
368
|
+
fromTag(this.tag, (s) => s.skipRepeats(eq))
|
|
369
|
+
|
|
370
|
+
onFailure: (cause: Cause.Cause<E>) => Effect.Effect<I, never, unknown> = (cause) =>
|
|
371
|
+
this.tag.withEffect((ref) => ref.onFailure(cause))
|
|
372
|
+
|
|
373
|
+
onSuccess: (value: A) => Effect.Effect<I, never, unknown> = (a) => this.tag.withEffect((ref) => ref.onSuccess(a))
|
|
374
|
+
|
|
375
|
+
make = <R>(fx: Fx.Fx<R, E, A>, eq?: Equivalence<A>): Layer.Layer<R, never, I> =>
|
|
376
|
+
this.tag.scoped(make(fx, eq || this.defaultEq))
|
|
377
|
+
|
|
378
|
+
of = (value: A, eq?: Equivalence<A>): Layer.Layer<never, never, I> => this.tag.scoped(of(value, eq))
|
|
379
|
+
|
|
380
|
+
provide = <R2>(fx: Fx.Fx<R2, E, A>, eq?: Equivalence<A>) => Effect.provide(this.make(fx, eq || this.defaultEq))
|
|
381
|
+
|
|
382
|
+
provideFx = <R2>(fx: Fx.Fx<R2, E, A>, eq?: Equivalence<A>) => provide(this.make(fx, eq || this.defaultEq))
|
|
383
|
+
}
|
|
384
|
+
|
|
385
|
+
/**
|
|
386
|
+
* Construct a RefSubject from any Fx value.
|
|
387
|
+
*
|
|
388
|
+
* @since 1.18.0
|
|
389
|
+
* @category constructors
|
|
390
|
+
*/
|
|
391
|
+
export function makeWithExtension<R, E, A, B>(
|
|
392
|
+
fx: Effect.Effect<R, E, A>,
|
|
393
|
+
f: (ref: RefSubject<never, E, A>) => B,
|
|
394
|
+
eq?: Equivalence<A>
|
|
395
|
+
): Effect.Effect<R, never, RefSubject<never, E, A> & B>
|
|
396
|
+
export function makeWithExtension<R, E, A, B>(
|
|
397
|
+
fx: Fx.FxInput<R, E, A>,
|
|
398
|
+
f: (ref: RefSubject<never, E, A>) => B,
|
|
399
|
+
eq?: Equivalence<A>
|
|
400
|
+
): Effect.Effect<R | Scope.Scope, never, RefSubject<never, E, A> & B>
|
|
401
|
+
|
|
402
|
+
export function makeWithExtension<R, E, A, B>(
|
|
403
|
+
fx: Fx.FxInput<R, E, A>,
|
|
404
|
+
f: (ref: RefSubject<never, E, A>) => B,
|
|
405
|
+
eq?: Equivalence<A>
|
|
406
|
+
): Effect.Effect<R | Scope.Scope, never, RefSubject<never, E, A> & B> {
|
|
407
|
+
return coreRefSubject.makeWithExtension(fx, f, eq)
|
|
408
|
+
}
|
|
409
|
+
|
|
410
|
+
/**
|
|
411
|
+
* Construct a RefSubject with an initial value and the specified subject.
|
|
412
|
+
* @since 1.18.0
|
|
413
|
+
* @category constructors
|
|
414
|
+
*/
|
|
415
|
+
export const unsafeMake: <R, E, A>(
|
|
416
|
+
initial: Effect.Effect<R, E, A>,
|
|
417
|
+
subject: Subject.Subject<R, E, A>,
|
|
418
|
+
eq?: Equivalence<A>
|
|
419
|
+
) => RefSubject<R, E, A> = coreRefSubject.unsafeMake
|
|
420
|
+
|
|
421
|
+
/**
|
|
422
|
+
* Flatten an RefSubject of an Option into a Filtered.
|
|
423
|
+
* @since 1.18.0
|
|
424
|
+
* @category combinators
|
|
425
|
+
*/
|
|
426
|
+
export const compact = <R, E, A>(refSubject: RefSubject<R, E, Option.Option<A>>): Filtered<R, E, A> =>
|
|
427
|
+
refSubject.filterMap(identity)
|
|
428
|
+
|
|
429
|
+
/**
|
|
430
|
+
* Split a RefSubject's into 2 Filtered values that track its errors and
|
|
431
|
+
* success values separately.
|
|
432
|
+
* @since 1.18.0
|
|
433
|
+
* @category combinators
|
|
434
|
+
*/
|
|
435
|
+
export const split = <R, E, A>(
|
|
436
|
+
refSubject: RefSubject<R, E, A>
|
|
437
|
+
): readonly [Filtered<R, never, E>, Filtered<R, never, A>] => {
|
|
438
|
+
const versioned = Versioned.transform(refSubject, exit, Effect.exit)
|
|
439
|
+
const left = Filtered(versioned, getLeft)
|
|
440
|
+
const right = Filtered(versioned, getRight)
|
|
441
|
+
|
|
442
|
+
return [left, right] as const
|
|
443
|
+
}
|
|
444
|
+
|
|
445
|
+
const getLeft = <E, A>(exit: Exit.Exit<E, A>) =>
|
|
446
|
+
Effect.succeed(
|
|
447
|
+
Exit.match(exit, {
|
|
448
|
+
onFailure: (cause) => Cause.failureOption(cause),
|
|
449
|
+
onSuccess: () => Option.none()
|
|
450
|
+
})
|
|
451
|
+
)
|
|
481
452
|
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
hold: HoldFx<never, E, A>
|
|
490
|
-
version: MutableRef.MutableRef<number>
|
|
491
|
-
}
|
|
453
|
+
const getRight = <E, A>(exit: Exit.Exit<E, A>) =>
|
|
454
|
+
Effect.succeed(
|
|
455
|
+
Exit.match(exit, {
|
|
456
|
+
onFailure: Option.none,
|
|
457
|
+
onSuccess: Option.some
|
|
458
|
+
})
|
|
459
|
+
)
|
|
492
460
|
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
461
|
+
/**
|
|
462
|
+
* MakeRefSubject is a RefSubject factory function dervied from a Schema.
|
|
463
|
+
* @since 1.18.0
|
|
464
|
+
*/
|
|
465
|
+
export type MakeRefSubject<O> = {
|
|
466
|
+
<R, E>(
|
|
467
|
+
input: RefSubject<R, E, O>,
|
|
468
|
+
eq?: Equivalence<O>
|
|
469
|
+
): Effect.Effect<R | Scope.Scope, never, ToDerived<R, E, O>>
|
|
470
|
+
|
|
471
|
+
<R, E>(input: Effect.Effect<R, E, O>, eq?: Equivalence<O>): Effect.Effect<R | Scope.Scope, never, ToRefSubject<E, O>>
|
|
472
|
+
|
|
473
|
+
<R, E>(
|
|
474
|
+
input: Stream.Stream<R, E, O>,
|
|
475
|
+
eq?: Equivalence<O>
|
|
476
|
+
): Effect.Effect<R | Scope.Scope, never, ToRefSubject<E, O>>
|
|
477
|
+
|
|
478
|
+
<R, E>(input: Fx.Fx<R, E, O>, eq?: Equivalence<O>): Effect.Effect<R | Scope.Scope, never, ToRefSubject<E, O>>
|
|
479
|
+
|
|
480
|
+
<E>(input: Cause.Cause<E>, eq?: Equivalence<O>): Effect.Effect<Scope.Scope, never, ToRefSubject<E, O>>
|
|
481
|
+
|
|
482
|
+
<R, E>(
|
|
483
|
+
input: Fx.FxInput<R, E, O>,
|
|
484
|
+
eq?: Equivalence<O>
|
|
485
|
+
): Effect.Effect<R | Scope.Scope, never, ToRefSubject<E, O>>
|
|
486
|
+
}
|
|
487
|
+
|
|
488
|
+
/**
|
|
489
|
+
* Converts an error `E` and an output `O` into a RefSubject or a Record of RefSubjects if
|
|
490
|
+
* the ouput value is a Record as well.
|
|
491
|
+
* @since 1.18.0
|
|
492
|
+
*/
|
|
493
|
+
export type ToRefSubject<E, O> = O extends Readonly<Record<PropertyKey, any>> ? {
|
|
494
|
+
readonly [K in keyof O]: ToRefSubject<E, O[K]>
|
|
495
|
+
} :
|
|
496
|
+
RefSubject<never, E, O> // TODO: We should apply ParseErrors here too somehow
|
|
497
|
+
|
|
498
|
+
/**
|
|
499
|
+
* Converts an error `E` and an output `O` into a RefSubject or a Record of RefSubjects if
|
|
500
|
+
* the ouput value is a Record as well.
|
|
501
|
+
* @since 1.18.0
|
|
502
|
+
*/
|
|
503
|
+
export type ToDerived<R, E, O> = ToRefSubject<E, O> & {
|
|
504
|
+
readonly persist: Effect.Effect<R, E, O>
|
|
505
|
+
}
|
|
506
|
+
|
|
507
|
+
/**
|
|
508
|
+
* Derive a RefSubjectSchema using the "from" or "encoded" value represented by a Schema.
|
|
509
|
+
* @since 1.18.0
|
|
510
|
+
*/
|
|
511
|
+
export function deriveFromSchema<I, O>(schema: Schema.Schema<I, O>): MakeRefSubject<I> {
|
|
512
|
+
return fromRefSubject(schema)
|
|
513
|
+
}
|
|
514
|
+
|
|
515
|
+
/**
|
|
516
|
+
* Derive a RefSubjectSchema using the "to" or "decoded" value represented by a Schema.
|
|
517
|
+
* @since 1.18.0
|
|
518
|
+
*/
|
|
519
|
+
export function deriveToSchema<I, O>(schema: Schema.Schema<I, O>): MakeRefSubject<O> {
|
|
520
|
+
return toRefSubject(schema)
|
|
521
|
+
}
|
|
522
|
+
|
|
523
|
+
/**
|
|
524
|
+
* @since 1.18.0
|
|
525
|
+
*/
|
|
526
|
+
export const tuple: <const REFS extends ReadonlyArray<RefSubject.Any>>(
|
|
527
|
+
...refs: REFS
|
|
528
|
+
) => RefSubject<
|
|
529
|
+
RefSubject.Context<REFS[number]>,
|
|
530
|
+
RefSubject.Error<REFS[number]>,
|
|
531
|
+
{ readonly [K in keyof REFS]: RefSubject.Success<REFS[K]> }
|
|
532
|
+
> = coreRefSubject.tuple
|
|
533
|
+
|
|
534
|
+
/**
|
|
535
|
+
* @since 1.18.0
|
|
536
|
+
*/
|
|
537
|
+
export const struct: <const REFS extends Readonly<Record<PropertyKey, RefSubject.Any>>>(
|
|
538
|
+
refs: REFS
|
|
539
|
+
) => RefSubject<
|
|
540
|
+
RefSubject.Context<REFS[string]>,
|
|
541
|
+
RefSubject.Error<REFS[string]>,
|
|
542
|
+
{ readonly [K in keyof REFS]: RefSubject.Success<REFS[K]> }
|
|
543
|
+
> = coreRefSubject.struct
|
|
544
|
+
|
|
545
|
+
/**
|
|
546
|
+
* @since 1.18.0
|
|
547
|
+
*/
|
|
548
|
+
export function fromSubscriptionRef<A>(
|
|
549
|
+
subscriptionRef: SubscriptionRef.SubscriptionRef<A>
|
|
550
|
+
): Effect.Effect<Scope.Scope, never, RefSubject<never, never, A>> {
|
|
551
|
+
return coreRefSubject.make(fromStream(subscriptionRef.changes))
|
|
552
|
+
}
|
|
553
|
+
|
|
554
|
+
/**
|
|
555
|
+
* @since 1.18.0
|
|
556
|
+
*/
|
|
557
|
+
export const transform: {
|
|
558
|
+
<A, B>(from: (a: A) => B, to: (b: B) => A): <R, E>(ref: RefSubject<R, E, A>) => RefSubject<R, E, B>
|
|
559
|
+
<R, E, A, B>(ref: RefSubject<R, E, A>, from: (a: A) => B, to: (b: B) => A): RefSubject<R, E, B>
|
|
560
|
+
} = dual(3, function transform<R, E, A, B>(
|
|
561
|
+
ref: RefSubject<R, E, A>,
|
|
562
|
+
from: (a: A) => B,
|
|
563
|
+
to: (b: B) => A
|
|
564
|
+
): RefSubject<R, E, B> {
|
|
565
|
+
return new TransformImpl(ref, from, to)
|
|
566
|
+
})
|
|
567
|
+
|
|
568
|
+
class TransformImpl<R, E, A, B> extends FxEffectBase<R, E, B, R, E, B> implements RefSubject<R, E, B> {
|
|
569
|
+
readonly [RefSubjectTypeId]: RefSubjectTypeId = RefSubjectTypeId
|
|
570
|
+
readonly [ComputedTypeId]: ComputedTypeId = ComputedTypeId
|
|
571
|
+
|
|
572
|
+
readonly version: RefSubject<R, E, B>["version"]
|
|
573
|
+
readonly subscriberCount: RefSubject<R, E, B>["subscriberCount"]
|
|
574
|
+
readonly get: RefSubject<R, E, B>["get"]
|
|
575
|
+
readonly delete: RefSubject<R, E, B>["delete"]
|
|
576
|
+
readonly interrupt: RefSubject<R, E, B>["interrupt"]
|
|
577
|
+
|
|
578
|
+
constructor(
|
|
579
|
+
readonly ref: RefSubject<R, E, A>,
|
|
580
|
+
readonly from: (a: A) => B,
|
|
581
|
+
readonly to: (b: B) => A
|
|
582
|
+
) {
|
|
583
|
+
super()
|
|
584
|
+
|
|
585
|
+
this.version = ref.version
|
|
586
|
+
this.subscriberCount = ref.subscriberCount
|
|
587
|
+
this.get = Effect.map(ref.get, from)
|
|
588
|
+
this.delete = Effect.map(ref.delete, Option.map(from))
|
|
589
|
+
this.interrupt = ref.interrupt
|
|
508
590
|
}
|
|
509
591
|
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
function unsafeMakeRefPrimitive<E, A>(
|
|
514
|
-
initial: Effect.Effect<never, E, A>,
|
|
515
|
-
scope: Scope.Scope,
|
|
516
|
-
eq: Equivalence.Equivalence<A>,
|
|
517
|
-
): RefPrimitive<E, A> {
|
|
518
|
-
const ctx = makeRefSubjectContext(initial, scope, eq)
|
|
519
|
-
const get = makeGetFromContext(ctx)
|
|
520
|
-
const set = makeSetFromContext(ctx)
|
|
521
|
-
const multiUpdate = makeMultiUpdateFromContext(get, set, ctx.lock)
|
|
522
|
-
|
|
523
|
-
function run<R2>(sink: Sink<R2, E, A>) {
|
|
524
|
-
return Effect.suspend(() => {
|
|
525
|
-
const current = MutableRef.get(ctx.hold.current)
|
|
526
|
-
|
|
527
|
-
if (Option.isNone(current)) {
|
|
528
|
-
return pipe(
|
|
529
|
-
primitive.get,
|
|
530
|
-
Effect.catchAllCause(sink.error),
|
|
531
|
-
Effect.flatMap(() => ctx.hold.run(sink)),
|
|
532
|
-
)
|
|
533
|
-
}
|
|
534
|
-
|
|
535
|
-
return ctx.hold.run(sink)
|
|
536
|
-
})
|
|
592
|
+
protected toFx(): Fx.Fx<R, E, B> {
|
|
593
|
+
return this.ref.map(this.from)
|
|
537
594
|
}
|
|
538
595
|
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
end: makeEndFromContext(ctx),
|
|
542
|
-
eq,
|
|
543
|
-
error: (cause) => ctx.hold.error(cause),
|
|
544
|
-
event: set,
|
|
545
|
-
get,
|
|
546
|
-
modifyEffect: makeModifyEffectFromContext(get, ctx),
|
|
547
|
-
run,
|
|
548
|
-
set,
|
|
549
|
-
multiUpdate,
|
|
550
|
-
version: ctx.version,
|
|
596
|
+
protected toEffect(): Effect.Effect<R, E, B> {
|
|
597
|
+
return this.ref.map(this.from)
|
|
551
598
|
}
|
|
552
599
|
|
|
553
|
-
|
|
554
|
-
|
|
600
|
+
set: RefSubject<R, E, B>["set"] = (b) => Effect.map(this.ref.set(this.to(b)), this.from)
|
|
601
|
+
update: RefSubject<R, E, B>["update"] = (f) => Effect.map(this.ref.update((a) => this.to(f(this.from(a)))), this.from)
|
|
555
602
|
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
[FxTypeId]: refVariance,
|
|
559
|
-
[RefSubjectTypeId]: RefSubjectTypeId,
|
|
560
|
-
[ComputedTypeId]: ComputedTypeId,
|
|
561
|
-
...primitive,
|
|
562
|
-
...makeRefMethods(primitive),
|
|
563
|
-
...makeEffectMethods(primitive.get),
|
|
564
|
-
...makeFiltered(() => ref),
|
|
565
|
-
...makeComputedMethods(() => ref),
|
|
566
|
-
...makeTransformMethods(() => ref),
|
|
567
|
-
version() {
|
|
568
|
-
return MutableRef.get(primitive.version)
|
|
569
|
-
},
|
|
570
|
-
}
|
|
603
|
+
updateEffect: RefSubject<R, E, B>["updateEffect"] = (f) =>
|
|
604
|
+
Effect.map(this.ref.updateEffect((a) => Effect.map(f(this.from(a)), this.to)), this.from)
|
|
571
605
|
|
|
572
|
-
|
|
573
|
-
|
|
606
|
+
modifyEffect: RefSubject<R, E, B>["modifyEffect"] = (f) =>
|
|
607
|
+
this.ref.modifyEffect((a) => Effect.map(f(this.from(a)), ([c, b]) => [c, this.to(b)] as const))
|
|
574
608
|
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
// Subject
|
|
582
|
-
event: RefSubject<E, A>['event']
|
|
583
|
-
error: RefSubject<E, A>['error']
|
|
584
|
-
end: RefSubject<E, A>['end']
|
|
585
|
-
|
|
586
|
-
// Ref
|
|
587
|
-
eq: RefSubject<E, A>['eq']
|
|
588
|
-
get: RefSubject<E, A>['get']
|
|
589
|
-
modifyEffect: RefSubject<E, A>['modifyEffect']
|
|
590
|
-
set: RefSubject<E, A>['set']
|
|
591
|
-
delete: RefSubject<E, A>['delete']
|
|
592
|
-
multiUpdate: RefSubject<E, A>['multiUpdate']
|
|
593
|
-
|
|
594
|
-
// Primitive
|
|
595
|
-
version: MutableRef.MutableRef<number>
|
|
596
|
-
}
|
|
609
|
+
modify: RefSubject<R, E, B>["modify"] = (f) =>
|
|
610
|
+
this.ref.modify((a) => {
|
|
611
|
+
const [c, b] = f(this.from(a))
|
|
612
|
+
return [c, this.to(b)] as const
|
|
613
|
+
})
|
|
597
614
|
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
function tupleRefPrimitive<const Refs extends ReadonlyArray<RefSubject.Any>>(
|
|
601
|
-
refs: Refs,
|
|
602
|
-
): RefPrimitive<Fx.Error<Refs[number]>, { readonly [K in keyof Refs]: Fx.Success<Refs[K]> }> {
|
|
603
|
-
type _E = Fx.Error<Refs[number]>
|
|
604
|
-
type _A = { readonly [K in keyof Refs]: Fx.Success<Refs[K]> }
|
|
605
|
-
|
|
606
|
-
const hold = new HoldFx(combineAll(...refs) as any as Fx<never, _E, _A>)
|
|
607
|
-
const eq = Equivalence.tuple(...refs.map((ref) => ref.eq))
|
|
608
|
-
const get = Effect.all(
|
|
609
|
-
refs.map((ref) => ref.get),
|
|
610
|
-
unboundedConcurrency,
|
|
611
|
-
) as Effect.Effect<never, _E, _A>
|
|
612
|
-
const set = (value: { readonly [K in keyof Refs]: Fx.Success<Refs[K]> }) =>
|
|
613
|
-
Effect.all(
|
|
614
|
-
value.map((v, i) => refs[i].set(v)),
|
|
615
|
-
unboundedConcurrency,
|
|
616
|
-
) as Effect.Effect<never, never, _A>
|
|
617
|
-
const multiUpdate = makeMultiUpdateFromContext(get, set, identity)
|
|
618
|
-
|
|
619
|
-
const primitive: RefPrimitive<_E, _A> = {
|
|
620
|
-
multiUpdate,
|
|
621
|
-
delete: Effect.map(
|
|
622
|
-
Effect.all(
|
|
623
|
-
refs.map((ref) => ref.delete),
|
|
624
|
-
unboundedConcurrency,
|
|
625
|
-
),
|
|
626
|
-
(values) => Option.all(values),
|
|
627
|
-
) as Effect.Effect<never, _E, Option.Option<_A>>,
|
|
628
|
-
end: () =>
|
|
629
|
-
Effect.all(
|
|
630
|
-
refs.map((ref) => ref.end()),
|
|
631
|
-
unboundedConcurrency,
|
|
632
|
-
),
|
|
633
|
-
eq,
|
|
634
|
-
error: (error) => hold.error(error),
|
|
635
|
-
event: (value) =>
|
|
636
|
-
Effect.all(
|
|
637
|
-
value.map((v, i) => refs[i].event(v)),
|
|
638
|
-
unboundedConcurrency,
|
|
639
|
-
),
|
|
640
|
-
get,
|
|
641
|
-
modifyEffect: makeModifyEffectTuple(refs, get, eq),
|
|
642
|
-
run: (sink) => hold.run(sink),
|
|
643
|
-
set,
|
|
644
|
-
version: MutableRef.make(0),
|
|
645
|
-
}
|
|
615
|
+
runUpdate: RefSubject<R, E, B>["runUpdate"] = (f) =>
|
|
616
|
+
this.ref.runUpdate((get, set) => f(Effect.map(get, this.from), (b) => Effect.map(set(this.to(b)), this.from)))
|
|
646
617
|
|
|
647
|
-
|
|
648
|
-
}
|
|
618
|
+
mapEffect: RefSubject<R, E, B>["mapEffect"] = (f) => Computed(this, f)
|
|
649
619
|
|
|
650
|
-
|
|
651
|
-
const Refs extends ReadonlyArray<RefSubject.Any>,
|
|
652
|
-
E,
|
|
653
|
-
A extends readonly any[],
|
|
654
|
-
>(
|
|
655
|
-
refs: Refs,
|
|
656
|
-
get: Effect.Effect<never, E, A>,
|
|
657
|
-
eq: Equivalence.Equivalence<A>,
|
|
658
|
-
): RefSubject<E, A>['modifyEffect'] {
|
|
659
|
-
return <R2, E2, B>(f: (a: A) => Effect.Effect<R2, E2, readonly [B, A]>) => {
|
|
660
|
-
return Effect.gen(function* ($) {
|
|
661
|
-
const current = yield* $(get)
|
|
662
|
-
const [b, a] = yield* $(f(current))
|
|
663
|
-
|
|
664
|
-
if (eq(a, current)) {
|
|
665
|
-
return b
|
|
666
|
-
}
|
|
667
|
-
|
|
668
|
-
yield* $(
|
|
669
|
-
Effect.all(
|
|
670
|
-
refs.map((ref, i) => ref.set(a[i])),
|
|
671
|
-
unboundedConcurrency,
|
|
672
|
-
),
|
|
673
|
-
)
|
|
674
|
-
|
|
675
|
-
return b
|
|
676
|
-
})
|
|
677
|
-
}
|
|
678
|
-
}
|
|
679
|
-
|
|
680
|
-
function structRefPrimitive<const Refs extends Readonly<Record<string, RefSubject.Any>>>(
|
|
681
|
-
refs: Refs,
|
|
682
|
-
): RefPrimitive<Fx.Error<Refs[string]>, { readonly [K in keyof Refs]: Fx.Success<Refs[K]> }> {
|
|
683
|
-
type _E = Fx.Error<Refs[string]>
|
|
684
|
-
type _A = { readonly [K in keyof Refs]: Fx.Success<Refs[K]> }
|
|
685
|
-
|
|
686
|
-
const hold = new HoldFx(struct(refs)) as HoldFx<never, _E, _A>
|
|
687
|
-
const eq = Equivalence.struct(mapRecord(refs, (ref) => ref.eq))
|
|
688
|
-
const get = Effect.all(
|
|
689
|
-
mapRecord(refs, (ref) => ref.get),
|
|
690
|
-
unboundedConcurrency,
|
|
691
|
-
) as Effect.Effect<never, _E, _A>
|
|
692
|
-
const set = (value: { readonly [K in keyof Refs]: Fx.Success<Refs[K]> }) =>
|
|
693
|
-
Effect.all(
|
|
694
|
-
mapRecord(value, (v, i) => refs[i].set(v)),
|
|
695
|
-
unboundedConcurrency,
|
|
696
|
-
) as Effect.Effect<never, never, _A>
|
|
697
|
-
const multiUpdate = makeMultiUpdateFromContext(get, set, identity)
|
|
698
|
-
|
|
699
|
-
const primitive: RefPrimitive<_E, _A> = {
|
|
700
|
-
multiUpdate,
|
|
701
|
-
delete: Effect.map(
|
|
702
|
-
Effect.all(
|
|
703
|
-
mapRecord(refs, (ref) => ref.delete),
|
|
704
|
-
unboundedConcurrency,
|
|
705
|
-
),
|
|
706
|
-
(values) => Option.all(values),
|
|
707
|
-
) as Effect.Effect<never, _E, Option.Option<_A>>,
|
|
708
|
-
end: () =>
|
|
709
|
-
Effect.all(
|
|
710
|
-
mapRecord(refs, (ref) => ref.end()),
|
|
711
|
-
unboundedConcurrency,
|
|
712
|
-
),
|
|
713
|
-
eq,
|
|
714
|
-
error: (error) => hold.error(error),
|
|
715
|
-
event: (value) =>
|
|
716
|
-
Effect.all(
|
|
717
|
-
mapRecord(value, (v, i) => refs[i].event(v)),
|
|
718
|
-
unboundedConcurrency,
|
|
719
|
-
),
|
|
720
|
-
get,
|
|
721
|
-
modifyEffect: makeModifyEffectStruct(refs, get, eq),
|
|
722
|
-
run: (sink) => hold.run(sink),
|
|
723
|
-
set: (value) =>
|
|
724
|
-
Effect.all(
|
|
725
|
-
mapRecord(value, (v, i) => refs[i].set(v)),
|
|
726
|
-
unboundedConcurrency,
|
|
727
|
-
) as Effect.Effect<never, never, _A>,
|
|
728
|
-
version: MutableRef.make(0),
|
|
729
|
-
}
|
|
620
|
+
map: RefSubject<R, E, B>["map"] = (f) => this.mapEffect((b) => Effect.sync(() => f(b)))
|
|
730
621
|
|
|
731
|
-
|
|
732
|
-
}
|
|
622
|
+
filterMapEffect: RefSubject<R, E, B>["filterMapEffect"] = (f) => Filtered(this, f)
|
|
733
623
|
|
|
734
|
-
|
|
735
|
-
const Refs extends Readonly<Record<string, RefSubject.Any>>,
|
|
736
|
-
E,
|
|
737
|
-
A extends Readonly<Record<string, any>>,
|
|
738
|
-
>(
|
|
739
|
-
refs: Refs,
|
|
740
|
-
get: Effect.Effect<never, E, A>,
|
|
741
|
-
eq: Equivalence.Equivalence<A>,
|
|
742
|
-
): RefSubject<E, A>['modifyEffect'] {
|
|
743
|
-
return <R2, E2, B>(f: (a: A) => Effect.Effect<R2, E2, readonly [B, A]>) => {
|
|
744
|
-
return Effect.gen(function* ($) {
|
|
745
|
-
const current = yield* $(get)
|
|
746
|
-
const [b, a] = yield* $(f(current))
|
|
747
|
-
|
|
748
|
-
if (eq(a, current)) {
|
|
749
|
-
return b
|
|
750
|
-
}
|
|
751
|
-
|
|
752
|
-
yield* $(
|
|
753
|
-
Effect.all(
|
|
754
|
-
mapRecord(refs, (ref, i) => ref.set(a[i])),
|
|
755
|
-
unboundedConcurrency,
|
|
756
|
-
),
|
|
757
|
-
)
|
|
758
|
-
|
|
759
|
-
return b
|
|
760
|
-
})
|
|
761
|
-
}
|
|
762
|
-
}
|
|
624
|
+
filterMap: RefSubject<R, E, B>["filterMap"] = (f) => Filtered(this, (a) => Effect.sync(() => f(a)))
|
|
763
625
|
|
|
764
|
-
|
|
765
|
-
record: Readonly<Record<K, A>>,
|
|
766
|
-
f: (a: A, k: K) => B,
|
|
767
|
-
): { readonly [_ in K]: B } {
|
|
768
|
-
const result: Record<K, B> = {} as any
|
|
626
|
+
filter: RefSubject<R, E, B>["filter"] = (f) => this.filterMap((a) => f(a) ? Option.some(a) : Option.none())
|
|
769
627
|
|
|
770
|
-
|
|
771
|
-
|
|
772
|
-
}
|
|
628
|
+
filterEffect: RefSubject<R, E, B>["filterEffect"] = (f) =>
|
|
629
|
+
this.filterMapEffect((a) => Effect.map(f(a), (b) => b ? Option.some(a) : Option.none()))
|
|
773
630
|
|
|
774
|
-
|
|
775
|
-
}
|
|
631
|
+
onSuccess: RefSubject<R, E, B>["onSuccess"] = (b) => this.ref.onSuccess(this.to(b))
|
|
776
632
|
|
|
777
|
-
|
|
778
|
-
readonly eq?: Equivalence.Equivalence<A>
|
|
779
|
-
readonly onValue?: (value: A) => Effect.Effect<R2, E2, unknown>
|
|
780
|
-
}
|
|
633
|
+
onFailure: RefSubject<R, E, B>["onFailure"] = (b) => this.ref.onFailure(b)
|
|
781
634
|
|
|
782
|
-
|
|
783
|
-
|
|
784
|
-
|
|
785
|
-
|
|
786
|
-
|
|
787
|
-
|
|
788
|
-
|
|
789
|
-
|
|
790
|
-
closed ? Effect.unit : ref.set(value),
|
|
791
|
-
)
|
|
792
|
-
|
|
793
|
-
const to = switchMatchCauseEffect(fx, ref.error, event)
|
|
794
|
-
const from = params.onValue ? switchMatchCauseEffect(ref, ref.error, params.onValue) : unit
|
|
795
|
-
const both = merge(from, to)
|
|
796
|
-
|
|
797
|
-
return Effect.as(Effect.forkScoped(Effect.catchAllCause(drain(both), ref.error)), ref)
|
|
798
|
-
}),
|
|
799
|
-
)
|
|
635
|
+
skipRepeats: (eq?: Equivalence<B> | undefined) => Computed<R, E, B> = (eq = equals) =>
|
|
636
|
+
Computed<R, E, B, never, never, B>(
|
|
637
|
+
Versioned.transformFx<R, never, R, E, B, R, E, B, R, E, B>(
|
|
638
|
+
this,
|
|
639
|
+
skipRepeatsWith(eq)
|
|
640
|
+
),
|
|
641
|
+
Effect.succeed
|
|
642
|
+
)
|
|
800
643
|
}
|