@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/Fx.ts
CHANGED
|
@@ -1,68 +1,2657 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
/**
|
|
2
|
+
* Fx<R, E, A> is a representation of an `Effect`-ful workflow that exists over
|
|
3
|
+
* the time dimension. It operates within a context `R`, can fail with an `E`,
|
|
4
|
+
* and succeed with an `A`.
|
|
5
|
+
*
|
|
6
|
+
* Any `Fx`, shorthand for "Effects", can emit 0 or more errors or events over an
|
|
7
|
+
* indefinite period of time. This is in contrast to `Effect` which can only
|
|
8
|
+
* produce exactly 1 error or event.
|
|
9
|
+
*
|
|
10
|
+
* It is defined as a super-type of `Effect`, `Stream`, and `Cause`. This
|
|
11
|
+
* allows for all operators that accept an `Fx` to also capable of
|
|
12
|
+
* accepting an `Effect`, `Stream`, or `Cause`. An Effect or Cause represents a single
|
|
13
|
+
* event or error, while a Stream represents a series of events or errors that will
|
|
14
|
+
* be pulled from the producer as soon as possible.
|
|
15
|
+
*
|
|
16
|
+
* @since 1.18.0
|
|
17
|
+
*/
|
|
5
18
|
|
|
6
|
-
import
|
|
19
|
+
import type * as Context from "@typed/context"
|
|
20
|
+
import type { Stream } from "effect"
|
|
21
|
+
import * as Cause from "effect/Cause"
|
|
22
|
+
import type * as Chunk from "effect/Chunk"
|
|
23
|
+
import type { DurationInput } from "effect/Duration"
|
|
24
|
+
import * as Effect from "effect/Effect"
|
|
25
|
+
import * as Either from "effect/Either"
|
|
26
|
+
import type { Equivalence } from "effect/Equivalence"
|
|
27
|
+
import type * as Exit from "effect/Exit"
|
|
28
|
+
import type * as Fiber from "effect/Fiber"
|
|
29
|
+
import type * as FiberId from "effect/FiberId"
|
|
30
|
+
import type { FiberRef } from "effect/FiberRef"
|
|
31
|
+
import { constant, dual, identity } from "effect/Function"
|
|
32
|
+
import type * as HashSet from "effect/HashSet"
|
|
33
|
+
import type { Inspectable } from "effect/Inspectable"
|
|
34
|
+
import type * as Layer from "effect/Layer"
|
|
35
|
+
import * as Option from "effect/Option"
|
|
36
|
+
import type { Pipeable } from "effect/Pipeable"
|
|
37
|
+
import type * as PubSub from "effect/PubSub"
|
|
38
|
+
import type * as Queue from "effect/Queue"
|
|
39
|
+
import type * as Request from "effect/Request"
|
|
40
|
+
import type * as Runtime from "effect/Runtime"
|
|
41
|
+
import type * as Schedule from "effect/Schedule"
|
|
42
|
+
import type { Scheduler } from "effect/Scheduler"
|
|
43
|
+
import type * as Scope from "effect/Scope"
|
|
44
|
+
import type * as Tracer from "effect/Tracer"
|
|
45
|
+
import type { Emitter } from "./Emitter"
|
|
46
|
+
import * as core from "./internal/core"
|
|
47
|
+
import * as internal from "./internal/fx"
|
|
48
|
+
import * as primitive from "./internal/fx-primitive"
|
|
49
|
+
import * as internalKeyed from "./internal/keyed"
|
|
50
|
+
import * as internalRun from "./internal/run"
|
|
51
|
+
import * as Share from "./internal/share"
|
|
52
|
+
import * as strategies from "./internal/strategies"
|
|
53
|
+
import * as internalWithKey from "./internal/withKey"
|
|
54
|
+
import { type RefSubject, transform } from "./RefSubject"
|
|
55
|
+
import type * as Sink from "./Sink"
|
|
56
|
+
import type { Subject } from "./Subject"
|
|
57
|
+
import { TypeId } from "./TypeId"
|
|
7
58
|
|
|
8
|
-
|
|
9
|
-
export type FxTypeId = typeof FxTypeId
|
|
59
|
+
/* #region Model */
|
|
10
60
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
61
|
+
/**
|
|
62
|
+
* Fx<R, E, A> is a representation of an `Effect`-ful workflow that exists over
|
|
63
|
+
* the time dimension. It operates within a context `R`, can fail with an `E`,
|
|
64
|
+
* and succeed with an `A`.
|
|
65
|
+
*
|
|
66
|
+
* @since 1.18.0
|
|
67
|
+
* @category models
|
|
68
|
+
*/
|
|
69
|
+
export interface Fx<R, E, A> extends Fx.Variance<R, E, A>, Pipeable, Inspectable {}
|
|
70
|
+
|
|
71
|
+
/**
|
|
72
|
+
* FxInput<R, E, A> are all the types that can be transformed into an Fx
|
|
73
|
+
*
|
|
74
|
+
* @since 1.18.0
|
|
75
|
+
* @category models
|
|
76
|
+
*/
|
|
77
|
+
export type FxInput<R, E, A> = Fx<R, E, A> | Effect.Effect<R, E, A> | Cause.Cause<E> | Iterable<A>
|
|
78
|
+
|
|
79
|
+
/**
|
|
80
|
+
* @since 1.18.0
|
|
81
|
+
*/
|
|
82
|
+
export namespace Fx {
|
|
83
|
+
/**
|
|
84
|
+
* Extract the Context, Error, or Success type from an Fx
|
|
85
|
+
* @since 1.18.0
|
|
86
|
+
*/
|
|
87
|
+
export type Context<T> = T extends Fx<infer R, infer _E, infer _A> ? R : never
|
|
88
|
+
|
|
89
|
+
/**
|
|
90
|
+
* Extract the Error type from an Fx
|
|
91
|
+
* @since 1.18.0
|
|
92
|
+
*/
|
|
93
|
+
export type Error<T> = T extends Fx<infer _R, infer E, infer _A> ? E : never
|
|
94
|
+
|
|
95
|
+
/**
|
|
96
|
+
* Extract the Success type from an Fx
|
|
97
|
+
* @since 1.18.0
|
|
98
|
+
*/
|
|
99
|
+
export type Success<T> = T extends Fx<infer _R, infer _E, infer A> ? A : never
|
|
100
|
+
|
|
101
|
+
/**
|
|
102
|
+
* Configures the variance of an Fx
|
|
103
|
+
* @since 1.18.0
|
|
104
|
+
* @category models
|
|
105
|
+
*/
|
|
106
|
+
export interface Variance<R, E, A> {
|
|
107
|
+
readonly [TypeId]: {
|
|
108
|
+
readonly _R: (_: never) => R
|
|
109
|
+
readonly _E: (_: never) => E
|
|
110
|
+
readonly _A: (_: never) => A
|
|
111
|
+
}
|
|
16
112
|
}
|
|
17
113
|
|
|
18
|
-
|
|
114
|
+
/**
|
|
115
|
+
* @since 1.18.0
|
|
116
|
+
*/
|
|
117
|
+
export type FromInput<T extends FxInput<any, any, any>> = [T] extends [ReadonlyArray<infer A>] ? Fx<never, never, A>
|
|
118
|
+
: [T] extends [Iterable<infer A>] ? Fx<never, never, A>
|
|
119
|
+
: [T] extends [Cause.Cause<infer E>] ? Fx<never, E, never>
|
|
120
|
+
: [T] extends [Fx<infer R, infer E, infer A>] ? Fx<R, E, A>
|
|
121
|
+
: [T] extends [Effect.Effect<infer R, infer E, infer A>] ? Fx<R, E, A>
|
|
122
|
+
: never
|
|
19
123
|
}
|
|
20
124
|
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
125
|
+
/**
|
|
126
|
+
* FlattenStrategy is a representation of how higher-order effect operators should flatten
|
|
127
|
+
* nested Fx.
|
|
128
|
+
*
|
|
129
|
+
* @since 1.18.0
|
|
130
|
+
* @category FlattenStrategy
|
|
131
|
+
*/
|
|
132
|
+
export type FlattenStrategy = Unbounded | Bounded | Switch | Exhaust | ExhaustLatest
|
|
133
|
+
|
|
134
|
+
/**
|
|
135
|
+
* Strategy which will allow for an unbounded number of concurrent effects to be run.
|
|
136
|
+
* @since 1.18.0
|
|
137
|
+
* @category FlattenStrategy
|
|
138
|
+
*/
|
|
139
|
+
export interface Unbounded {
|
|
140
|
+
readonly _tag: "Unbounded"
|
|
25
141
|
}
|
|
26
142
|
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
143
|
+
/**
|
|
144
|
+
* Singleton instance of Unbounded
|
|
145
|
+
* @since 1.18.0
|
|
146
|
+
* @category FlattenStrategy
|
|
147
|
+
*/
|
|
148
|
+
export const Unbounded: Unbounded = strategies.Unbounded
|
|
149
|
+
|
|
150
|
+
/**
|
|
151
|
+
* Strategy which will allow for a bounded number of concurrent effects to be run.
|
|
152
|
+
* @since 1.18.0
|
|
153
|
+
* @category FlattenStrategy
|
|
154
|
+
*/
|
|
155
|
+
export interface Bounded {
|
|
156
|
+
readonly _tag: "Bounded"
|
|
157
|
+
readonly capacity: number
|
|
33
158
|
}
|
|
34
159
|
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
160
|
+
/**
|
|
161
|
+
* Construct a Bounded strategy
|
|
162
|
+
* @since 1.18.0
|
|
163
|
+
* @category FlattenStrategy
|
|
164
|
+
*/
|
|
165
|
+
export const Bounded: (capacity: number) => Bounded = strategies.Bounded
|
|
39
166
|
|
|
40
|
-
|
|
167
|
+
/**
|
|
168
|
+
* Strategy which will switch to a new effect as soon as it is available.
|
|
169
|
+
* @since 1.18.0
|
|
170
|
+
* @category FlattenStrategy
|
|
171
|
+
*/
|
|
172
|
+
export interface Switch {
|
|
173
|
+
readonly _tag: "Switch"
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
/**
|
|
177
|
+
* Singleton instance of Switch
|
|
178
|
+
* @since 1.18.0
|
|
179
|
+
* @category FlattenStrategy
|
|
180
|
+
*/
|
|
181
|
+
export const Switch: Switch = strategies.Switch
|
|
41
182
|
|
|
42
|
-
|
|
183
|
+
/**
|
|
184
|
+
* Strategy which will always favor the first Fx, dropping any Fx emitted while
|
|
185
|
+
* the first Fx is still running. When the first Fx finished, the next event
|
|
186
|
+
* will execute.
|
|
187
|
+
*
|
|
188
|
+
* @since 1.18.0
|
|
189
|
+
* @category FlattenStrategy
|
|
190
|
+
*/
|
|
191
|
+
export interface Exhaust {
|
|
192
|
+
readonly _tag: "Exhaust"
|
|
43
193
|
}
|
|
44
194
|
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
195
|
+
/**
|
|
196
|
+
* Singleton instance of Exhaust
|
|
197
|
+
* @since 1.18.0
|
|
198
|
+
* @category FlattenStrategy
|
|
199
|
+
*/
|
|
200
|
+
export const Exhaust: Exhaust = strategies.Exhaust
|
|
201
|
+
|
|
202
|
+
/**
|
|
203
|
+
* Strategy which will always favor the latest Fx, dropping any Fx emitted while
|
|
204
|
+
* the latest Fx is still running. When the latest Fx finishes, the last seend event
|
|
205
|
+
* will execute.
|
|
206
|
+
*
|
|
207
|
+
* @since 1.18.0
|
|
208
|
+
* @category FlattenStrategy
|
|
209
|
+
*/
|
|
210
|
+
export interface ExhaustLatest {
|
|
211
|
+
readonly _tag: "ExhaustLatest"
|
|
49
212
|
}
|
|
50
213
|
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
214
|
+
/**
|
|
215
|
+
* Singleton instance of ExhaustLatest
|
|
216
|
+
* @since 1.18.0
|
|
217
|
+
* @category FlattenStrategy
|
|
218
|
+
*/
|
|
219
|
+
export const ExhaustLatest: ExhaustLatest = strategies.ExhaustLatest
|
|
220
|
+
|
|
221
|
+
/**
|
|
222
|
+
* MergeStrategy is a representation of how multiple Fx should be merged together.
|
|
223
|
+
* @since 1.18.0
|
|
224
|
+
* @category MergeStrategy
|
|
225
|
+
*/
|
|
226
|
+
export type MergeStrategy = Unordered | Ordered | Switch
|
|
227
|
+
|
|
228
|
+
/**
|
|
229
|
+
* Strategy which will merge Fx in an unordered fashion.
|
|
230
|
+
* @since 1.18.0
|
|
231
|
+
* @category MergeStrategy
|
|
232
|
+
*/
|
|
233
|
+
export interface Unordered {
|
|
234
|
+
readonly _tag: "Unordered"
|
|
235
|
+
readonly concurrency: number
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
/**
|
|
239
|
+
* Construct an Unordered strategy
|
|
240
|
+
* @since 1.18.0
|
|
241
|
+
* @category MergeStrategy
|
|
242
|
+
*/
|
|
243
|
+
export const Unordered: (concurrency: number) => Unordered = strategies.Unordered
|
|
244
|
+
|
|
245
|
+
/**
|
|
246
|
+
* Strategy which will merge Fx in an ordered fashion with
|
|
247
|
+
* the specified level of concurrency.
|
|
248
|
+
* @since 1.18.0
|
|
249
|
+
* @category MergeStrategy
|
|
250
|
+
*/
|
|
251
|
+
export interface Ordered {
|
|
252
|
+
readonly _tag: "Ordered"
|
|
253
|
+
readonly concurrency: number
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
/**
|
|
257
|
+
* Construct an Ordered strategy
|
|
258
|
+
* @since 1.18.0
|
|
259
|
+
* @category MergeStrategy
|
|
260
|
+
*/
|
|
261
|
+
export const Ordered: (concurrency: number) => Ordered = strategies.Ordered
|
|
262
|
+
|
|
263
|
+
/* #endregion */
|
|
264
|
+
|
|
265
|
+
/* #region Constructor */
|
|
266
|
+
|
|
267
|
+
/* #region Core */
|
|
268
|
+
|
|
269
|
+
/**
|
|
270
|
+
* An Fx which will immediately end producing 0 events and 0 errors.
|
|
271
|
+
* @since 1.18.0
|
|
272
|
+
* @category constructors
|
|
273
|
+
*/
|
|
274
|
+
export const empty: Fx<never, never, never> = core.empty
|
|
275
|
+
|
|
276
|
+
/**
|
|
277
|
+
* Construct an Fx<never, E, A> from a Cause<E>
|
|
278
|
+
* @since 1.18.0
|
|
279
|
+
* @category constructors
|
|
280
|
+
*/
|
|
281
|
+
export const failCause: <E>(cause: Cause.Cause<E>) => Fx<never, E, never> = core.failCause
|
|
282
|
+
|
|
283
|
+
/**
|
|
284
|
+
* Construct an Fx<never, never, never> from a defect
|
|
285
|
+
* @since 1.18.0
|
|
286
|
+
* @category constructors
|
|
287
|
+
*/
|
|
288
|
+
export const die = (defect: unknown): Fx<never, never, never> => failCause(Cause.die(defect))
|
|
289
|
+
|
|
290
|
+
/**
|
|
291
|
+
* Interrupt the current Fx with the specified FiberId
|
|
292
|
+
* @since 1.18.0
|
|
293
|
+
* @category constructors
|
|
294
|
+
*/
|
|
295
|
+
export const interrupt = (id: FiberId.FiberId): Fx<never, never, never> => failCause(Cause.interrupt(id))
|
|
296
|
+
|
|
297
|
+
/**
|
|
298
|
+
* Construct an Fx which will fail with the specified error.
|
|
299
|
+
* @since 1.18.0
|
|
300
|
+
* @category constructors
|
|
301
|
+
*/
|
|
302
|
+
export const fail: <E>(error: E) => Fx<never, E, never> = core.fail
|
|
303
|
+
|
|
304
|
+
/**
|
|
305
|
+
* Construct an Fx<R, E, A> from an Effect<R, E, A>
|
|
306
|
+
* @since 1.18.0
|
|
307
|
+
* @category constructors
|
|
308
|
+
*/
|
|
309
|
+
export const fromEffect: <R, E, A>(effect: Effect.Effect<R, E, A>) => Fx<R, E, A> = core.fromEffect
|
|
310
|
+
|
|
311
|
+
/**
|
|
312
|
+
* Construct an Fx from an Iterable
|
|
313
|
+
* @since 1.18.0
|
|
314
|
+
* @category constructors
|
|
315
|
+
*/
|
|
316
|
+
export const fromIterable: {
|
|
317
|
+
<A extends ReadonlyArray<any>>(array: A): Fx<never, never, A[number]>
|
|
318
|
+
<A>(iterable: Iterable<A>): Fx<never, never, A>
|
|
319
|
+
} = core.fromIterable
|
|
320
|
+
|
|
321
|
+
/**
|
|
322
|
+
* Construct an Fx<R, E, A> from an Effect<R, E, A>
|
|
323
|
+
* @since 1.18.0
|
|
324
|
+
* @category constructors
|
|
325
|
+
*/
|
|
326
|
+
export const fromStream: <R, E, A>(effect: Stream.Stream<R, E, A>) => Fx<R, E, A> = core.fromStream
|
|
327
|
+
|
|
328
|
+
/**
|
|
329
|
+
* Construct an Fx<R, E, A> from an Effect<R, E, A>
|
|
330
|
+
* @since 1.18.0
|
|
331
|
+
* @category constructors
|
|
332
|
+
*/
|
|
333
|
+
export const from: {
|
|
334
|
+
<A extends ReadonlyArray<any>>(array: A): Fx<never, never, A[number]>
|
|
335
|
+
<A>(iterable: Iterable<A>): Fx<never, never, A>
|
|
336
|
+
<E>(cause: Cause.Cause<E>): Fx<never, E, never>
|
|
337
|
+
<R, E, A>(fx: FxInput<R, E, A>): Fx<R, E, A>
|
|
338
|
+
<A>(value: A): Fx<never, never, A>
|
|
339
|
+
} = core.from
|
|
340
|
+
|
|
341
|
+
/**
|
|
342
|
+
* Construct an Fx by describing an Effectful workflow that has access to a Sink
|
|
343
|
+
* to emit events and errors.
|
|
344
|
+
* @since 1.18.0
|
|
345
|
+
* @category constructors
|
|
346
|
+
*/
|
|
347
|
+
export const fromSink: <R, E, A>(f: (sink: Sink.Sink<E, A>) => Effect.Effect<R, E, unknown>) => Fx<R, E, A> =
|
|
348
|
+
core.fromSink
|
|
349
|
+
|
|
350
|
+
/**
|
|
351
|
+
* Construct an Fx by describing an Scoped Effect that has access to an Emitter
|
|
352
|
+
* to emit events and errors.
|
|
353
|
+
* @since 1.18.0
|
|
354
|
+
* @category constructors
|
|
355
|
+
*/
|
|
356
|
+
export const fromEmitter: <R, E, A>(
|
|
357
|
+
f: (emitter: Emitter<E, A>) => Effect.Effect<R | Scope.Scope, never, unknown>
|
|
358
|
+
) => Fx<Exclude<R, Scope.Scope>, E, A> = core.fromEmitter
|
|
359
|
+
|
|
360
|
+
/**
|
|
361
|
+
* An Fx which will never emit any errors or events, and will never end
|
|
362
|
+
* @since 1.18.0
|
|
363
|
+
* @category constructors
|
|
364
|
+
*/
|
|
365
|
+
export const never: Fx<never, never, never> = core.never
|
|
366
|
+
|
|
367
|
+
/**
|
|
368
|
+
* Construct an Fx which will emit the specified value and then end.
|
|
369
|
+
* @since 1.18.0
|
|
370
|
+
* @category constructors
|
|
371
|
+
*/
|
|
372
|
+
export const succeed: <A>(value: A) => Fx<never, never, A> = core.succeed
|
|
373
|
+
|
|
374
|
+
/**
|
|
375
|
+
* Construct an Fx which will emit the return of a synchronous function and then end.
|
|
376
|
+
* @since 1.18.0
|
|
377
|
+
* @category constructors
|
|
378
|
+
*/
|
|
379
|
+
export const sync: <A>(f: () => A) => Fx<never, never, A> = core.sync
|
|
380
|
+
|
|
381
|
+
/**
|
|
382
|
+
* Lazily construct an Fx.
|
|
383
|
+
* @since 1.18.0
|
|
384
|
+
* @category constructors
|
|
385
|
+
*/
|
|
386
|
+
export const suspend: <R, E, A>(f: () => Fx<R, E, A>) => Fx<R, E, A> = core.suspend
|
|
387
|
+
|
|
388
|
+
/**
|
|
389
|
+
* Helper for constructing your own custom subtypes of an Fx
|
|
390
|
+
* @since 1.18.0
|
|
391
|
+
* @category Subtyping
|
|
392
|
+
*/
|
|
393
|
+
export abstract class ToFx<R, E, A> extends primitive.ToFx<R, E, A> implements Fx<R, E, A> {
|
|
394
|
+
/**
|
|
395
|
+
* Your implementation of an Fx is returned by this function.
|
|
396
|
+
* @since 1.18.0
|
|
397
|
+
*/
|
|
398
|
+
abstract toFx(): Fx<R, E, A>
|
|
399
|
+
}
|
|
400
|
+
|
|
401
|
+
/**
|
|
402
|
+
* Create an Fx which will emit a value after waiting for a specified duration.
|
|
403
|
+
* @since 1.18.0
|
|
404
|
+
* @category constructors
|
|
405
|
+
*/
|
|
406
|
+
export const at: {
|
|
407
|
+
(delay: DurationInput): <A>(value: A) => Fx<never, never, A>
|
|
408
|
+
<A>(value: A, delay: DurationInput): Fx<never, never, A>
|
|
409
|
+
} = internal.at
|
|
410
|
+
|
|
411
|
+
/**
|
|
412
|
+
* Type-alias for a Effect.forkIn(scope) that returns a Fiber
|
|
413
|
+
* @since 1.18.0
|
|
414
|
+
* @category models
|
|
415
|
+
*/
|
|
416
|
+
export type ScopedFork = <R, E, A>(effect: Effect.Effect<R, E, A>) => Effect.Effect<R, never, Fiber.Fiber<E, A>>
|
|
417
|
+
|
|
418
|
+
/**
|
|
419
|
+
* Type-alias for Effect.forkIn(scope) which runs the Effect runtime
|
|
420
|
+
* of an Fx in a Scope. Used in for higher-order operators.
|
|
421
|
+
*
|
|
422
|
+
* @since 1.18.0
|
|
423
|
+
* @category models
|
|
424
|
+
*/
|
|
425
|
+
export type FxFork = <R>(
|
|
426
|
+
effect: Effect.Effect<R, never, void>
|
|
427
|
+
) => Effect.Effect<R, never, void>
|
|
428
|
+
|
|
429
|
+
/**
|
|
430
|
+
* Params for withScopedFork
|
|
431
|
+
* @since 1.18.0
|
|
432
|
+
* @category params
|
|
433
|
+
*/
|
|
434
|
+
export type WithScopedForkParams<E, A> = {
|
|
435
|
+
readonly sink: Sink.Sink<E, A>
|
|
436
|
+
readonly fork: ScopedFork
|
|
437
|
+
readonly scope: Scope.Scope
|
|
438
|
+
}
|
|
439
|
+
|
|
440
|
+
/**
|
|
441
|
+
* Construct an Fx which can fork effects into a Scope.
|
|
442
|
+
* @since 1.18.0
|
|
443
|
+
* @category constructors
|
|
444
|
+
*/
|
|
445
|
+
export const withScopedFork: <R, E, A>(
|
|
446
|
+
f: (params: WithScopedForkParams<E, A>) => Effect.Effect<R, never, unknown>
|
|
447
|
+
) => Fx<R, E, A> = core.withScopedFork
|
|
448
|
+
|
|
449
|
+
/**
|
|
450
|
+
* Params for withEarlyExit
|
|
451
|
+
* @since 1.18.0
|
|
452
|
+
* @category params
|
|
453
|
+
*/
|
|
454
|
+
export type WithEarlyExitParams<E, A> = {
|
|
455
|
+
readonly sink: Sink.WithEarlyExit<E, A>
|
|
456
|
+
readonly fork: ScopedFork
|
|
457
|
+
readonly scope: Scope.Scope
|
|
458
|
+
}
|
|
459
|
+
|
|
460
|
+
/**
|
|
461
|
+
* Construct an Fx which can exit early from a Scope.
|
|
462
|
+
* @since 1.18.0
|
|
463
|
+
* @category constructors
|
|
464
|
+
*/
|
|
465
|
+
export const withEarlyExit: <R, E, A>(
|
|
466
|
+
f: (params: WithEarlyExitParams<E, A>) => Effect.Effect<R, never, unknown>
|
|
467
|
+
) => Fx<R, E, A> = core.withEarlyExit
|
|
468
|
+
|
|
469
|
+
/**
|
|
470
|
+
* Params for withFlattenStrategy
|
|
471
|
+
* @since 1.18.0
|
|
472
|
+
* @category params
|
|
473
|
+
*/
|
|
474
|
+
export type WithFlattenStrategyParams<E, A> = {
|
|
475
|
+
readonly sink: Sink.Sink<E, A>
|
|
476
|
+
readonly fork: FxFork
|
|
477
|
+
readonly scope: Scope.Scope
|
|
478
|
+
}
|
|
479
|
+
|
|
480
|
+
/**
|
|
481
|
+
* Construct an Fx which can flatten nested Fx.
|
|
482
|
+
* @since 1.18.0
|
|
483
|
+
* @category constructors
|
|
484
|
+
*/
|
|
485
|
+
export const withFlattenStrategy: <R, E, A>(
|
|
486
|
+
f: (params: WithFlattenStrategyParams<E, A>) => Effect.Effect<R, never, unknown>,
|
|
487
|
+
strategy: FlattenStrategy
|
|
488
|
+
) => Fx<R, E, A> = core.withFlattenStrategy
|
|
489
|
+
|
|
490
|
+
/* #endregion */
|
|
491
|
+
|
|
492
|
+
/* #region Additions */
|
|
493
|
+
|
|
494
|
+
/**
|
|
495
|
+
* Acquire a resource, use it to construct an Fx, and then release the resource
|
|
496
|
+
* after the Fx has exited.
|
|
497
|
+
*
|
|
498
|
+
* @since 1.18.0
|
|
499
|
+
* @category constructors
|
|
500
|
+
*/
|
|
501
|
+
export const acquireUseRelease: {
|
|
502
|
+
<A, R2, E2, B, R3, E3>(
|
|
503
|
+
use: (a: A) => FxInput<R2, E2, B>,
|
|
504
|
+
release: (a: A, exit: Exit.Exit<unknown, unknown>) => Effect.Effect<R3, E3, unknown>
|
|
505
|
+
): <R, E>(acquire: Effect.Effect<R, E, A>) => Fx<R | R2 | R3, E | E2 | E3, B>
|
|
506
|
+
|
|
507
|
+
<R, E, A, R2, E2, B, R3, E3>(
|
|
508
|
+
acquire: Effect.Effect<R, E, A>,
|
|
509
|
+
use: (a: A) => FxInput<R2, E2, B>,
|
|
510
|
+
release: (a: A, exit: Exit.Exit<unknown, unknown>) => Effect.Effect<R3, E3, unknown>
|
|
511
|
+
): Fx<R | R2 | R3, E | E2 | E3, B>
|
|
512
|
+
} = core.acquireUseRelease
|
|
513
|
+
|
|
514
|
+
/**
|
|
515
|
+
* Combine multiple Fx into a single Fx that will emit the results of all Fx
|
|
516
|
+
* as a tuple of values.
|
|
517
|
+
*
|
|
518
|
+
* @since 1.18.0
|
|
519
|
+
* @category constructors
|
|
520
|
+
*/
|
|
521
|
+
export const combine: <const FX extends ReadonlyArray<Fx<any, any, any>>>(
|
|
522
|
+
fxs: FX
|
|
523
|
+
) => Fx<Fx.Context<FX[number]>, Fx.Error<FX[number]>, { readonly [K in keyof FX]: Fx.Success<FX[K]> }> = core.combine
|
|
524
|
+
|
|
525
|
+
/**
|
|
526
|
+
* Combine a record of Fx into a single Fx that will emit the results of all Fx
|
|
527
|
+
* as a record of values.
|
|
528
|
+
*
|
|
529
|
+
* @since 1.18.0
|
|
530
|
+
* @category constructors
|
|
531
|
+
*/
|
|
532
|
+
export const struct: <const FX extends Readonly<Record<string, Fx<any, any, any>>>>(
|
|
533
|
+
fxs: FX
|
|
534
|
+
) => Fx<Fx.Context<FX[string]>, Fx.Error<FX[string]>, { readonly [K in keyof FX]: Fx.Success<FX[K]> }> = (fx) =>
|
|
535
|
+
map(combine(Object.entries(fx).map(([k, fx]) => map(fx, (v) => [k, v] as const))), Object.fromEntries)
|
|
536
|
+
|
|
537
|
+
/**
|
|
538
|
+
* Combine multiple Fx into a single Fx that will emit the results of all Fx
|
|
539
|
+
* as they occur.
|
|
540
|
+
* @since 1.18.0
|
|
541
|
+
* @category constructors
|
|
542
|
+
*/
|
|
543
|
+
export const merge: <const FX extends ReadonlyArray<Fx<any, any, any>>>(
|
|
544
|
+
fxs: FX
|
|
545
|
+
) => Fx<Fx.Context<FX[number]>, Fx.Error<FX[number]>, Fx.Success<FX[number]>> = core.merge
|
|
546
|
+
|
|
547
|
+
/**
|
|
548
|
+
* Combine multiple Fx into a single Fx that will emit the results of all Fx
|
|
549
|
+
* as they occur, but only allowing `n` concurrent Fx to run at a time.
|
|
550
|
+
*
|
|
551
|
+
* @since 1.18.0
|
|
552
|
+
* @category constructors
|
|
553
|
+
*/
|
|
554
|
+
export const mergeConcurrently: {
|
|
555
|
+
(concurrency: number): <const FX extends ReadonlyArray<Fx<any, any, any>>>(
|
|
556
|
+
fxs: FX
|
|
557
|
+
) => Fx<Fx.Context<FX[number]>, Fx.Error<FX[number]>, Fx.Success<FX[number]>>
|
|
558
|
+
<const FX extends ReadonlyArray<Fx<any, any, any>>>(
|
|
559
|
+
fxs: FX,
|
|
560
|
+
concurrency: number
|
|
561
|
+
): Fx<Fx.Context<FX[number]>, Fx.Error<FX[number]>, Fx.Success<FX[number]>>
|
|
562
|
+
} = core.mergeConcurrently
|
|
563
|
+
|
|
564
|
+
/**
|
|
565
|
+
* Combine multiple Fx into a single Fx that will emit the results of all Fx
|
|
566
|
+
* in the order the Fx were provided. All Fx will be executed concurrently,
|
|
567
|
+
* and the results will be buffered if necessary to preserve ordering.
|
|
568
|
+
*
|
|
569
|
+
* @since 1.18.0
|
|
570
|
+
* @category constructors
|
|
571
|
+
*/
|
|
572
|
+
export const mergeBuffer: <const FX extends ReadonlyArray<Fx<any, any, any>>>(
|
|
573
|
+
fxs: FX
|
|
574
|
+
) => Fx<Fx.Context<FX[number]>, Fx.Error<FX[number]>, Fx.Success<FX[number]>> = core.mergeBuffer
|
|
575
|
+
|
|
576
|
+
/**
|
|
577
|
+
* Combine multiple Fx into a single Fx that will emit the results of all Fx
|
|
578
|
+
* in the order the Fx were provided. All Fx will be executed concurrently, limited
|
|
579
|
+
* by the provided concurrency, and the results will be buffered if necessary to preserve ordering.
|
|
580
|
+
*
|
|
581
|
+
* @since 1.18.0
|
|
582
|
+
* @category constructors
|
|
583
|
+
*/
|
|
584
|
+
export const mergeBufferConcurrently: {
|
|
585
|
+
(concurrency: number): <const FX extends ReadonlyArray<Fx<any, any, any>>>(
|
|
586
|
+
fxs: FX
|
|
587
|
+
) => Fx<Fx.Context<FX[number]>, Fx.Error<FX[number]>, Fx.Success<FX[number]>>
|
|
588
|
+
<const FX extends ReadonlyArray<Fx<any, any, any>>>(
|
|
589
|
+
fxs: FX,
|
|
590
|
+
concurrency: number
|
|
591
|
+
): Fx<Fx.Context<FX[number]>, Fx.Error<FX[number]>, Fx.Success<FX[number]>>
|
|
592
|
+
} = core.mergeBufferConcurrently
|
|
593
|
+
|
|
594
|
+
/**
|
|
595
|
+
* Merge together multiple Fx into a single Fx that will emit the results of all Fx
|
|
596
|
+
* allowing only 1 Fx to run at a time.
|
|
597
|
+
*
|
|
598
|
+
* @since 1.18.0
|
|
599
|
+
* @category constructors
|
|
600
|
+
*/
|
|
601
|
+
export const mergeSwitch = <const FX extends ReadonlyArray<Fx<any, any, any>>>(
|
|
602
|
+
fxs: FX
|
|
603
|
+
): Fx<
|
|
604
|
+
Fx.Context<FX[number]>,
|
|
605
|
+
Fx.Error<FX[number]>,
|
|
606
|
+
Fx.Success<FX[number]>
|
|
607
|
+
> => core.mergeSwitch(fxs)
|
|
608
|
+
|
|
609
|
+
/**
|
|
610
|
+
* Merge together multiple Fx into a single Fx that will emit the results of the
|
|
611
|
+
* first Fx to emit a value.
|
|
612
|
+
*
|
|
613
|
+
* @since 1.18.0
|
|
614
|
+
* @category constructors
|
|
615
|
+
*/
|
|
616
|
+
export const race: <const FX extends ReadonlyArray<Fx<any, any, any>>>(
|
|
617
|
+
fxs: FX
|
|
618
|
+
) => Fx<Fx.Context<FX[number]>, Fx.Error<FX[number]>, Fx.Success<FX[number]>> = core.race
|
|
619
|
+
|
|
620
|
+
/**
|
|
621
|
+
* Schedule an Effect to run using the provided Schedule, emitting its success of failure
|
|
622
|
+
* at the intervals specified by the Schedule.
|
|
623
|
+
*
|
|
624
|
+
* @since 1.18.0
|
|
625
|
+
* @category constructors
|
|
626
|
+
*/
|
|
627
|
+
export const fromScheduled: {
|
|
628
|
+
<R2>(scheduled: Schedule.Schedule<R2, unknown, unknown>): <R, E, A>(fx: Effect.Effect<R, E, A>) => Fx<R | R2, E, A>
|
|
629
|
+
<R, E, A, R2>(fx: Effect.Effect<R, E, A>, scheduled: Schedule.Schedule<R2, unknown, unknown>): Fx<R | R2, E, A>
|
|
630
|
+
} = core.fromScheduled
|
|
631
|
+
|
|
632
|
+
/**
|
|
633
|
+
* Schedule an Effect to run at the specified duration.
|
|
634
|
+
*
|
|
635
|
+
* @since 1.18.0
|
|
636
|
+
* @category constructors
|
|
637
|
+
*/
|
|
638
|
+
export const periodic: {
|
|
639
|
+
(duration: DurationInput): <R, E, A>(fx: Effect.Effect<R, E, A>) => Fx<R, E, A>
|
|
640
|
+
<R, E, A>(fx: Effect.Effect<R, E, A>, duration: DurationInput): Fx<R, E, A>
|
|
641
|
+
} = core.periodic
|
|
642
|
+
|
|
643
|
+
/**
|
|
644
|
+
* Consume a Dequeue as soon as values become available and emit them as a Fx.
|
|
645
|
+
* @since 1.18.0
|
|
646
|
+
* @category constructors
|
|
647
|
+
*/
|
|
648
|
+
export const fromDequeue: {
|
|
649
|
+
<A>(dequeue: Queue.Dequeue<A>): Fx<never, never, A>
|
|
650
|
+
<I, A>(dequeue: Context.Dequeue<I, A>): Fx<I, never, A>
|
|
651
|
+
} = internal.fromDequeue
|
|
652
|
+
|
|
653
|
+
/**
|
|
654
|
+
* Consume a PubSub as soon as values become available and emit them as a Fx.
|
|
655
|
+
* @since 1.18.0
|
|
656
|
+
* @category constructors
|
|
657
|
+
*/
|
|
658
|
+
export const fromPubSub: {
|
|
659
|
+
<A>(PubSub: PubSub.PubSub<A>): Fx<Scope.Scope, never, A>
|
|
660
|
+
<I, A>(PubSub: Context.PubSub<I, A>): Fx<Scope.Scope | I, never, A>
|
|
661
|
+
} = internal.fromPubSub
|
|
662
|
+
|
|
663
|
+
/* #endregion */
|
|
664
|
+
|
|
665
|
+
/* #region Running */
|
|
666
|
+
|
|
667
|
+
/**
|
|
668
|
+
* Run an Fx to completion with the provided Sink. The
|
|
669
|
+
* Effect will resolve with the first Error of the Fx.
|
|
670
|
+
* @since 1.18.0
|
|
671
|
+
* @category running
|
|
672
|
+
*/
|
|
673
|
+
export const run: {
|
|
674
|
+
<E, A, R2>(
|
|
675
|
+
sink: Sink.WithContext<R2, E, A>
|
|
676
|
+
): <R>(fx: Fx<R, E, A>) => Effect.Effect<R | R2, never, unknown>
|
|
677
|
+
|
|
678
|
+
<R, E, A, R2>(
|
|
679
|
+
fx: Fx<R, E, A>,
|
|
680
|
+
sink: Sink.WithContext<R2, E, A>
|
|
681
|
+
): Effect.Effect<R | R2, never, unknown>
|
|
682
|
+
} = dual(2, internalRun.run)
|
|
683
|
+
|
|
684
|
+
/**
|
|
685
|
+
* Observe an Fx with the provided success value handler. The
|
|
686
|
+
* Effect will resolve with the first Error of the Fx.
|
|
687
|
+
*
|
|
688
|
+
* @since 1.18.0
|
|
689
|
+
* @category running
|
|
690
|
+
*/
|
|
691
|
+
export const observe: {
|
|
692
|
+
<A, R2, E2>(
|
|
693
|
+
onSuccees: (a: A) => Effect.Effect<R2, E2, unknown>
|
|
694
|
+
): <R, E>(fx: Fx<R, E, A>) => Effect.Effect<R | R2, E | E2, void>
|
|
695
|
+
<R, E, A, R2, E2>(
|
|
696
|
+
fx: Fx<R, E, A>,
|
|
697
|
+
onSuccees: (a: A) => Effect.Effect<R2, E2, unknown>
|
|
698
|
+
): Effect.Effect<R | R2, E | E2, void>
|
|
699
|
+
} = dual(2, core.observe)
|
|
700
|
+
|
|
701
|
+
/**
|
|
702
|
+
* Run an Fx to completion. The Effect will resolve with the first Error of the Fx.
|
|
703
|
+
*
|
|
704
|
+
* @since 1.18.0
|
|
705
|
+
* @category running
|
|
706
|
+
*/
|
|
707
|
+
export const drain: <R, E, A>(fx: Fx<R, E, A>) => Effect.Effect<R, E, void> = core.drain
|
|
708
|
+
|
|
709
|
+
/**
|
|
710
|
+
* Reduce an Fx to a single value.
|
|
711
|
+
* @since 1.18.0
|
|
712
|
+
* @category running
|
|
713
|
+
*/
|
|
714
|
+
export const reduce: {
|
|
715
|
+
<A, B>(seed: B, f: (acc: B, a: A) => B): <R, E>(fx: Fx<R, E, A>) => Effect.Effect<R, E, B>
|
|
716
|
+
<R, E, A, B>(fx: Fx<R, E, A>, seed: B, f: (acc: B, a: A) => B): Effect.Effect<R, E, B>
|
|
717
|
+
} = core.reduce
|
|
718
|
+
|
|
719
|
+
/**
|
|
720
|
+
* Run an Fx to completion, collecting all emitted values into an Array.
|
|
721
|
+
* @since 1.18.0
|
|
722
|
+
* @category running
|
|
723
|
+
*/
|
|
724
|
+
export const toArray: <R, E, A>(fx: Fx<R, E, A>) => Effect.Effect<R, E, Array<A>> = core.toArray
|
|
725
|
+
|
|
726
|
+
/**
|
|
727
|
+
* Run an Fx to completion, collecting all emitted values into a ReadonlyArray.
|
|
728
|
+
* @since 1.18.0
|
|
729
|
+
* @category running
|
|
730
|
+
*/
|
|
731
|
+
export const toReadonlyArray: <R, E, A>(fx: Fx<R, E, A>) => Effect.Effect<R, E, ReadonlyArray<A>> = core.toReadonlyArray
|
|
732
|
+
|
|
733
|
+
/**
|
|
734
|
+
* Run an Fx to completion, collecting all emitted values into a Chunk.
|
|
735
|
+
* @since 1.18.0
|
|
736
|
+
* @category running
|
|
737
|
+
*/
|
|
738
|
+
export const toChunk: <R, E, A>(fx: Fx<R, E, A>) => Effect.Effect<R, E, Chunk.Chunk<A>> = core.toChunk
|
|
739
|
+
|
|
740
|
+
/**
|
|
741
|
+
* Consume an Fx and place its values into an Enqueue.
|
|
742
|
+
* @since 1.18.0
|
|
743
|
+
* @category running
|
|
744
|
+
*/
|
|
745
|
+
export const toEnqueue: {
|
|
746
|
+
<A, B>(enqueue: Queue.Enqueue<A | B>): <R, E>(fx: Fx<R, E, A>) => Effect.Effect<R, E, void>
|
|
747
|
+
<I, A, B>(enqueue: Context.Enqueue<I, A | B>): <R, E>(fx: Fx<R, E, A>) => Effect.Effect<I | R, E, void>
|
|
748
|
+
<R, E, A, B>(fx: Fx<R, E, A>, enqueue: Queue.Enqueue<A | B>): Effect.Effect<R, E, void>
|
|
749
|
+
<R, E, I, A, B>(fx: Fx<R, E, A>, enqueue: Context.Enqueue<I, A | B>): Effect.Effect<R, E, void>
|
|
750
|
+
} = internal.toEnqueue
|
|
751
|
+
|
|
752
|
+
/* #endregion */
|
|
753
|
+
|
|
754
|
+
/* #region Combinators */
|
|
755
|
+
|
|
756
|
+
/**
|
|
757
|
+
* Map over the success value of an Fx.
|
|
758
|
+
* @since 1.18.0
|
|
759
|
+
* @category combinators
|
|
760
|
+
*/
|
|
761
|
+
export const map: {
|
|
762
|
+
<A, B>(f: (a: A) => B): <R, E>(fx: Fx<R, E, A>) => Fx<R, E, B>
|
|
763
|
+
<R, E, A, B>(fx: Fx<R, E, A>, f: (a: A) => B): Fx<R, E, B>
|
|
764
|
+
} = core.map
|
|
765
|
+
|
|
766
|
+
/**
|
|
767
|
+
* Map over both failure and success values of an Fx.
|
|
768
|
+
* @since 1.18.0
|
|
769
|
+
* @category combinators
|
|
770
|
+
*/
|
|
771
|
+
export const mapBoth: {
|
|
772
|
+
<E, E2, A, B>(
|
|
773
|
+
options: { readonly onFailure: (e: E) => E2; readonly onSuccess: (a: A) => B }
|
|
774
|
+
): <R>(fx: Fx<R, E, A>) => Fx<R, E2, B>
|
|
775
|
+
<R, E, A, E2, B>(
|
|
776
|
+
fx: Fx<R, E, A>,
|
|
777
|
+
options: { readonly onFailure: (e: E) => E2; readonly onSuccess: (a: A) => B }
|
|
778
|
+
): Fx<R, E2, B>
|
|
779
|
+
} = core.mapBoth
|
|
780
|
+
|
|
781
|
+
/**
|
|
782
|
+
* Filter the success value of an Fx.
|
|
783
|
+
* @since 1.18.0
|
|
784
|
+
* @category combinators
|
|
785
|
+
*/
|
|
786
|
+
export const filter: {
|
|
787
|
+
<A, B extends A>(f: (a: A) => a is B): <R, E>(fx: Fx<R, E, A>) => Fx<R, E, B>
|
|
788
|
+
<A>(f: (a: A) => boolean): <R, E>(fx: Fx<R, E, A>) => Fx<R, E, A>
|
|
789
|
+
<R, E, A, B extends A>(fx: Fx<R, E, A>, f: (a: A) => a is B): Fx<R, E, B>
|
|
790
|
+
<R, E, A>(fx: Fx<R, E, A>, f: (a: A) => boolean): Fx<R, E, A>
|
|
791
|
+
} = core.filter
|
|
792
|
+
|
|
793
|
+
/**
|
|
794
|
+
* Filter and map the success value of an Fx.
|
|
795
|
+
* @since 1.18.0
|
|
796
|
+
* @category combinators
|
|
797
|
+
*/
|
|
798
|
+
export const filterMap: {
|
|
799
|
+
<A, B>(f: (a: A) => Option.Option<B>): <R, E>(fx: Fx<R, E, A>) => Fx<R, E, B>
|
|
800
|
+
<R, E, A, B>(fx: Fx<R, E, A>, f: (a: A) => Option.Option<B>): Fx<R, E, B>
|
|
801
|
+
} = core.filterMap
|
|
802
|
+
|
|
803
|
+
/**
|
|
804
|
+
* Unwrap Options by filtering any None values.
|
|
805
|
+
* @since 1.18.0
|
|
806
|
+
* @category combinators
|
|
807
|
+
*/
|
|
808
|
+
export const compact: <R, E, A>(fx: Fx<R, E, Option.Option<A>>) => Fx<R, E, A> = core.compact
|
|
809
|
+
/**
|
|
810
|
+
* Map over the Cause of an Fx.
|
|
811
|
+
* @since 1.18.0
|
|
812
|
+
* @category errors
|
|
813
|
+
*/
|
|
814
|
+
export const mapErrorCause: {
|
|
815
|
+
<E, E2>(f: (a: Cause.Cause<E>) => Cause.Cause<E2>): <R, A>(fx: Fx<R, E, A>) => Fx<R, E2, A>
|
|
816
|
+
<R, E, A, E2>(fx: Fx<R, E, A>, f: (a: Cause.Cause<E>) => Cause.Cause<E2>): Fx<R, E2, A>
|
|
817
|
+
} = core.mapErrorCause
|
|
818
|
+
|
|
819
|
+
/**
|
|
820
|
+
* Map over the Error of an Fx.
|
|
821
|
+
* @since 1.18.0
|
|
822
|
+
* @category errors
|
|
823
|
+
*/
|
|
824
|
+
export const mapError: {
|
|
825
|
+
<E, E2>(f: (a: E) => E2): <R, A>(fx: Fx<R, E, A>) => Fx<R, E2, A>
|
|
826
|
+
<R, E, A, E2>(fx: Fx<R, E, A>, f: (a: E) => E2): Fx<R, E2, A>
|
|
827
|
+
} = core.mapError
|
|
828
|
+
|
|
829
|
+
/**
|
|
830
|
+
* Filter the Cause of an Fx.
|
|
831
|
+
* @since 1.18.0
|
|
832
|
+
* @category errors
|
|
833
|
+
*/
|
|
834
|
+
export const filterErrorCause: {
|
|
835
|
+
<E, E2 extends E>(f: (a: Cause.Cause<E>) => a is Cause.Cause<E2>): <R, A>(fx: Fx<R, E, A>) => Fx<R, E2, A>
|
|
836
|
+
<E>(f: (a: Cause.Cause<E>) => boolean): <R, A>(fx: Fx<R, E, A>) => Fx<R, E, A>
|
|
837
|
+
<R, E, E2 extends E, A>(fx: Fx<R, E, A>, f: (a: Cause.Cause<E>) => a is Cause.Cause<E2>): Fx<R, E2, A>
|
|
838
|
+
<R, E, A>(fx: Fx<R, E, A>, f: (a: Cause.Cause<E>) => boolean): Fx<R, E, A>
|
|
839
|
+
} = core.filterCause
|
|
840
|
+
|
|
841
|
+
/**
|
|
842
|
+
* Filter and map the Cause of an Fx.
|
|
843
|
+
* @since 1.18.0
|
|
844
|
+
* @category errors
|
|
845
|
+
*/
|
|
846
|
+
export const filterMapCause: {
|
|
847
|
+
<E, E2>(f: (a: Cause.Cause<E>) => Option.Option<Cause.Cause<E2>>): <R, A>(fx: Fx<R, E, A>) => Fx<R, E2, A>
|
|
848
|
+
<R, E, A, E2>(fx: Fx<R, E, A>, f: (a: Cause.Cause<E>) => Option.Option<Cause.Cause<E2>>): Fx<R, E2, A>
|
|
849
|
+
} = core.filterMapCause
|
|
850
|
+
|
|
851
|
+
/**
|
|
852
|
+
* Filter the Error of an Fx.
|
|
853
|
+
* @since 1.18.0
|
|
854
|
+
* @category errors
|
|
855
|
+
*/
|
|
856
|
+
export const filterError: {
|
|
857
|
+
<E, E2 extends E>(f: (a: E) => a is E2): <R, A>(fx: Fx<R, E, A>) => Fx<R, E2, A>
|
|
858
|
+
<E>(f: (a: E) => boolean): <R, A>(fx: Fx<R, E, A>) => Fx<R, E, A>
|
|
859
|
+
<R, E, E2 extends E, A>(fx: Fx<R, E, A>, f: (a: E) => a is E2): Fx<R, E2, A>
|
|
860
|
+
<R, E, A>(fx: Fx<R, E, A>, f: (a: E) => boolean): Fx<R, E, A>
|
|
861
|
+
} = core.filterError
|
|
862
|
+
|
|
863
|
+
/**
|
|
864
|
+
* Filter and map the error of an Fx.
|
|
865
|
+
* @since 1.18.0
|
|
866
|
+
* @category errors
|
|
867
|
+
*/
|
|
868
|
+
export const filterMapError: {
|
|
869
|
+
<E, E2>(f: (a: E) => Option.Option<E2>): <R, A>(fx: Fx<R, E, A>) => Fx<R, E2, A>
|
|
870
|
+
<R, E, A, E2>(fx: Fx<R, E, A>, f: (a: E) => Option.Option<E2>): Fx<R, E2, A>
|
|
871
|
+
} = core.filterMapError
|
|
872
|
+
|
|
873
|
+
/**
|
|
874
|
+
* Filter and map the error of an Fx using an Effect.
|
|
875
|
+
* @since 1.18.0
|
|
876
|
+
* @category errors
|
|
877
|
+
*/
|
|
878
|
+
export const filterMapErrorEffect: {
|
|
879
|
+
<E, R2, E2, B>(f: (e: E) => Effect.Effect<R2, E2, Option.Option<B>>): <R, A>(fx: Fx<R, E, A>) => Fx<R2 | R, E2 | B, A>
|
|
880
|
+
<R, E, A, R2, E2, B>(fx: Fx<R, E, A>, f: (e: E) => Effect.Effect<R2, E2, Option.Option<B>>): Fx<R | R2, E2 | B, A>
|
|
881
|
+
} = core.filterMapErrorEffect
|
|
882
|
+
|
|
883
|
+
/**
|
|
884
|
+
* Map the success value of an Fx to another Fx, flattening the result
|
|
885
|
+
* with the provided FlattenStrategy.
|
|
886
|
+
* @since 1.18.0
|
|
887
|
+
* @category flattening
|
|
888
|
+
*/
|
|
889
|
+
export const flatMapWithStrategy: {
|
|
890
|
+
<A, R2, E2, B>(
|
|
891
|
+
f: (a: A) => FxInput<R2, E2, B>,
|
|
892
|
+
strategy: FlattenStrategy
|
|
893
|
+
): <R, E>(fx: Fx<R, E, A>) => Fx<R | R2, E | E2, B>
|
|
894
|
+
<R, E, A, R2, E2, B>(
|
|
895
|
+
fx: Fx<R, E, A>,
|
|
896
|
+
f: (a: A) => FxInput<R2, E2, B>,
|
|
897
|
+
strategy: FlattenStrategy
|
|
898
|
+
): Fx<R | R2, E | E2, B>
|
|
899
|
+
} = dual(3, core.flatMapWithStrategy)
|
|
900
|
+
|
|
901
|
+
/**
|
|
902
|
+
* Map the success value of an Fx to another Fx, switching to the latest
|
|
903
|
+
* Fx emitted and interrupting the previous.
|
|
904
|
+
* @since 1.18.0
|
|
905
|
+
* @category flattening
|
|
906
|
+
*/
|
|
907
|
+
export const switchMap: {
|
|
908
|
+
<A, R2 = never, E2 = never, B = never>(
|
|
909
|
+
f: (a: A) => FxInput<R2, E2, B>
|
|
910
|
+
): <R, E>(fx: Fx<R, E, A>) => Fx<R | R2, E | E2, B>
|
|
911
|
+
<R, E, A, R2 = never, E2 = never, B = never>(fx: Fx<R, E, A>, f: (a: A) => FxInput<R2, E2, B>): Fx<R | R2, E | E2, B>
|
|
912
|
+
} = core.switchMap
|
|
913
|
+
|
|
914
|
+
/**
|
|
915
|
+
* Map the success value of an Fx to another Fx, switching to the latest
|
|
916
|
+
* Fx emitted and interrupting the previous.
|
|
917
|
+
* @since 1.18.0
|
|
918
|
+
* @category flattening
|
|
919
|
+
*/
|
|
920
|
+
export const switchLatest: {
|
|
921
|
+
<R, E, R2, E2, B>(fx: Fx<R, E, FxInput<R2, E2, B>>): Fx<R | R2, E | E2, B>
|
|
922
|
+
} = core.switchMap((x) => x)
|
|
923
|
+
|
|
924
|
+
/**
|
|
925
|
+
* Map the success value of an Fx to another Fx, prefering the first
|
|
926
|
+
* Fx emitted and dropping any subsequent Fx until it has completed.
|
|
927
|
+
* @since 1.18.0
|
|
928
|
+
* @category flattening
|
|
929
|
+
*/
|
|
930
|
+
export const exhaustMap: {
|
|
931
|
+
<A, R2 = never, E2 = never, B = never>(
|
|
932
|
+
f: (a: A) => FxInput<R2, E2, B>
|
|
933
|
+
): <R, E>(fx: Fx<R, E, A>) => Fx<R | R2, E | E2, B>
|
|
934
|
+
<R, E, A, R2 = never, E2 = never, B = never>(fx: Fx<R, E, A>, f: (a: A) => FxInput<R2, E2, B>): Fx<R | R2, E | E2, B>
|
|
935
|
+
} = core.exhaustMap
|
|
936
|
+
|
|
937
|
+
/**
|
|
938
|
+
* Flatten a nested Fx, prefering the first
|
|
939
|
+
* Fx emitted and dropping any subsequent Fx until it has completed.
|
|
940
|
+
* @since 1.18.0
|
|
941
|
+
* @category flattening
|
|
942
|
+
*/
|
|
943
|
+
export const exhaust: <R, E, R2, E2, A>(fx: Fx<R, E, Fx<R2, E2, A>>) => Fx<R | R2, E | E2, A> = core.exhaust
|
|
944
|
+
|
|
945
|
+
/**
|
|
946
|
+
* Map the success value of an Fx to another Fx, prefering the first
|
|
947
|
+
* until completion, and then running the last emitted Fx if they are not
|
|
948
|
+
* the same Fx.
|
|
949
|
+
*
|
|
950
|
+
* @since 1.18.0
|
|
951
|
+
* @category flattening
|
|
952
|
+
*/
|
|
953
|
+
export const exhaustMapLatest: {
|
|
954
|
+
<A, R2 = never, E2 = never, B = never>(
|
|
955
|
+
f: (a: A) => FxInput<R2, E2, B>
|
|
956
|
+
): <R, E>(fx: Fx<R, E, A>) => Fx<R | R2, E | E2, B>
|
|
957
|
+
<R, E, A, R2 = never, E2 = never, B = never>(fx: Fx<R, E, A>, f: (a: A) => FxInput<R2, E2, B>): Fx<R | R2, E | E2, B>
|
|
958
|
+
} = core.exhaustMapLatest
|
|
959
|
+
|
|
960
|
+
/**
|
|
961
|
+
* Flatten a nested Fx, prefering the first until completion, and then running the last emitted Fx if they are not
|
|
962
|
+
* the same Fx.
|
|
963
|
+
*
|
|
964
|
+
* @since 1.18.0
|
|
965
|
+
* @category flattening
|
|
966
|
+
*/
|
|
967
|
+
export const exhaustLatest: <R, E, R2, E2, A>(fx: Fx<R, E, Fx<R2, E2, A>>) => Fx<R | R2, E | E2, A> = core.exhaustLatest
|
|
968
|
+
|
|
969
|
+
/**
|
|
970
|
+
* Map the success value of an Fx to another Fx with unbounded concurrency.
|
|
971
|
+
*
|
|
972
|
+
* @since 1.18.0
|
|
973
|
+
* @category flattening
|
|
974
|
+
*/
|
|
975
|
+
export const flatMap: {
|
|
976
|
+
<A, R2 = never, E2 = never, B = never>(
|
|
977
|
+
f: (a: A) => FxInput<R2, E2, B>
|
|
978
|
+
): <R, E>(fx: Fx<R, E, A>) => Fx<R | R2, E | E2, B>
|
|
979
|
+
<R, E, A, R2 = never, E2 = never, B = never>(fx: Fx<R, E, A>, f: (a: A) => FxInput<R2, E2, B>): Fx<R | R2, E | E2, B>
|
|
980
|
+
} = core.flatMap
|
|
981
|
+
|
|
982
|
+
/**
|
|
983
|
+
* Map the success value of an Fx to another Fx with unbounded concurrency.
|
|
984
|
+
*
|
|
985
|
+
* @since 1.18.0
|
|
986
|
+
* @category flattening
|
|
987
|
+
*/
|
|
988
|
+
export const flatten: <R, E, R2, E2, A>(fx: Fx<R, E, Fx<R2, E2, A>>) => Fx<R | R2, E | E2, A> = core.flatten
|
|
989
|
+
|
|
990
|
+
/**
|
|
991
|
+
* Map the success value of an Fx to another Fx with the specified concurrency.
|
|
992
|
+
*
|
|
993
|
+
* @since 1.18.0
|
|
994
|
+
* @category flattening
|
|
995
|
+
*/
|
|
996
|
+
export const flatMapConcurrently: {
|
|
997
|
+
<A, R2 = never, E2 = never, B = never>(
|
|
998
|
+
f: (a: A) => FxInput<R2, E2, B>,
|
|
999
|
+
concurrency: number
|
|
1000
|
+
): <R, E>(fx: Fx<R, E, A>) => Fx<R | R2, E | E2, B>
|
|
1001
|
+
<R, E, A, R2 = never, E2 = never, B = never>(
|
|
1002
|
+
fx: Fx<R, E, A>,
|
|
1003
|
+
f: (a: A) => FxInput<R2, E2, B>,
|
|
1004
|
+
concurrency: number
|
|
1005
|
+
): Fx<R | R2, E | E2, B>
|
|
1006
|
+
} = core.flatMapConcurrently
|
|
1007
|
+
|
|
1008
|
+
/**
|
|
1009
|
+
* Map the success value of an Fx to another Fx one at a time.
|
|
1010
|
+
*
|
|
1011
|
+
* @since 1.18.0
|
|
1012
|
+
* @category flattening
|
|
1013
|
+
*/
|
|
1014
|
+
export const concatMap: {
|
|
1015
|
+
<A, R2 = never, E2 = never, B = never>(
|
|
1016
|
+
f: (a: A) => FxInput<R2, E2, B>
|
|
1017
|
+
): <R, E>(fx: Fx<R, E, A>) => Fx<R | R2, E | E2, B>
|
|
1018
|
+
<R, E, A, R2 = never, E2 = never, B = never>(fx: Fx<R, E, A>, f: (a: A) => FxInput<R2, E2, B>): Fx<R | R2, E | E2, B>
|
|
1019
|
+
} = core.concatMap
|
|
1020
|
+
|
|
1021
|
+
/**
|
|
1022
|
+
* Skip and take a number of values from an Fx.
|
|
1023
|
+
*
|
|
1024
|
+
* @since 1.18.0
|
|
1025
|
+
* @category slicing
|
|
1026
|
+
*/
|
|
1027
|
+
export const slice: {
|
|
1028
|
+
(skip: number, take: number): <R, E, A>(fx: Fx<R, E, A>) => Fx<R, E, A>
|
|
1029
|
+
<R, E, A>(fx: Fx<R, E, A>, skip: number, take: number): Fx<R, E, A>
|
|
1030
|
+
} = core.slice
|
|
1031
|
+
|
|
1032
|
+
/**
|
|
1033
|
+
* Take a number of values from an Fx.
|
|
1034
|
+
*
|
|
1035
|
+
* @since 1.18.0
|
|
1036
|
+
* @category slicing
|
|
1037
|
+
*/
|
|
1038
|
+
export const take: {
|
|
1039
|
+
(n: number): <R, E, A>(fx: Fx<R, E, A>) => Fx<R, E, A>
|
|
1040
|
+
<R, E, A>(fx: Fx<R, E, A>, n: number): Fx<R, E, A>
|
|
1041
|
+
} = core.take
|
|
1042
|
+
|
|
1043
|
+
/**
|
|
1044
|
+
* Drop a number of values from an Fx.
|
|
1045
|
+
*
|
|
1046
|
+
* @since 1.18.0
|
|
1047
|
+
* @category slicing
|
|
1048
|
+
*/
|
|
1049
|
+
export const drop: {
|
|
1050
|
+
(n: number): <R, E, A>(fx: Fx<R, E, A>) => Fx<R, E, A>
|
|
1051
|
+
<R, E, A>(fx: Fx<R, E, A>, n: number): Fx<R, E, A>
|
|
1052
|
+
} = core.drop
|
|
1053
|
+
|
|
1054
|
+
/**
|
|
1055
|
+
* Take values from an Fx while the predicate returns true.
|
|
1056
|
+
*
|
|
1057
|
+
* @since 1.18.0
|
|
1058
|
+
* @category slicing
|
|
1059
|
+
*/
|
|
1060
|
+
export const takeWhile: {
|
|
1061
|
+
<A, R2, E2>(predicate: (a: A) => Effect.Effect<R2, E2, boolean>): <R, E>(fx: Fx<R, E, A>) => Fx<R | R2, E | E2, A>
|
|
1062
|
+
<R, E, A, R2, E2>(fx: Fx<R, E, A>, predicate: (a: A) => Effect.Effect<R2, E2, boolean>): Fx<R | R2, E | E2, A>
|
|
1063
|
+
} = core.takeWhile
|
|
1064
|
+
|
|
1065
|
+
/**
|
|
1066
|
+
* Take values from an Fx until the predicate returns true.
|
|
1067
|
+
*
|
|
1068
|
+
* @since 1.18.0
|
|
1069
|
+
* @category slicing
|
|
1070
|
+
*/
|
|
1071
|
+
export const takeUntil: {
|
|
1072
|
+
<A, R2, E2>(predicate: (a: A) => Effect.Effect<R2, E2, boolean>): <R, E>(fx: Fx<R, E, A>) => Fx<R | R2, E | E2, A>
|
|
1073
|
+
<R, E, A, R2, E2>(fx: Fx<R, E, A>, predicate: (a: A) => Effect.Effect<R2, E2, boolean>): Fx<R | R2, E | E2, A>
|
|
1074
|
+
} = core.takeUntil
|
|
1075
|
+
|
|
1076
|
+
/**
|
|
1077
|
+
* Drop values from an Fx while the predicate returns true.
|
|
1078
|
+
*
|
|
1079
|
+
* @since 1.18.0
|
|
1080
|
+
* @category slicing
|
|
1081
|
+
*/
|
|
1082
|
+
export const dropWhile: {
|
|
1083
|
+
<A, R2, E2>(predicate: (a: A) => Effect.Effect<R2, E2, boolean>): <R, E>(fx: Fx<R, E, A>) => Fx<R | R2, E | E2, A>
|
|
1084
|
+
<R, E, A, R2, E2>(fx: Fx<R, E, A>, predicate: (a: A) => Effect.Effect<R2, E2, boolean>): Fx<R | R2, E | E2, A>
|
|
1085
|
+
} = core.dropWhile
|
|
1086
|
+
|
|
1087
|
+
/**
|
|
1088
|
+
* Drop values from an Fx until the predicate returns true.
|
|
1089
|
+
*
|
|
1090
|
+
* @since 1.18.0
|
|
1091
|
+
* @category slicing
|
|
1092
|
+
*/
|
|
1093
|
+
export const dropUntil: {
|
|
1094
|
+
<A, R2, E2>(predicate: (a: A) => Effect.Effect<R2, E2, boolean>): <R, E>(fx: Fx<R, E, A>) => Fx<R | R2, E | E2, A>
|
|
1095
|
+
<R, E, A, R2, E2>(fx: Fx<R, E, A>, predicate: (a: A) => Effect.Effect<R2, E2, boolean>): Fx<R | R2, E | E2, A>
|
|
1096
|
+
} = core.dropUntil
|
|
1097
|
+
|
|
1098
|
+
/**
|
|
1099
|
+
* Drop values from an Fx after the predicate returns true.
|
|
1100
|
+
*
|
|
1101
|
+
* @since 1.18.0
|
|
1102
|
+
* @category slicing
|
|
1103
|
+
*/
|
|
1104
|
+
export const dropAfter: {
|
|
1105
|
+
<A, R2, E2>(predicate: (a: A) => Effect.Effect<R2, E2, boolean>): <R, E>(fx: Fx<R, E, A>) => Fx<R | R2, E | E2, A>
|
|
1106
|
+
<R, E, A, R2, E2>(fx: Fx<R, E, A>, predicate: (a: A) => Effect.Effect<R2, E2, boolean>): Fx<R | R2, E | E2, A>
|
|
1107
|
+
} = core.dropAfter
|
|
1108
|
+
|
|
1109
|
+
/**
|
|
1110
|
+
* Concatenate an Fx after the successful completion of another Fx
|
|
1111
|
+
*
|
|
1112
|
+
* @since 1.18.0
|
|
1113
|
+
* @category combinators
|
|
1114
|
+
*/
|
|
1115
|
+
export const continueWith: {
|
|
1116
|
+
<R2, E2, B>(f: () => Fx<R2, E2, B>): <R, E, A>(fx: Fx<R, E, A>) => Fx<R | R2, E | E2, A | B>
|
|
1117
|
+
<R, E, A, R2, E2, B>(fx: Fx<R, E, A>, f: () => Fx<R2, E2, B>): Fx<R | R2, E | E2, A | B>
|
|
1118
|
+
} = core.continueWith
|
|
1119
|
+
|
|
1120
|
+
/**
|
|
1121
|
+
* Concatenate an Fx after the failure of another Fx
|
|
1122
|
+
*
|
|
1123
|
+
* @since 1.18.0
|
|
1124
|
+
* @category combinators
|
|
1125
|
+
*/
|
|
1126
|
+
export const orElse: {
|
|
1127
|
+
<E, R2, E2, B>(f: (cause: Cause.Cause<E>) => FxInput<R2, E2, B>): <R, A>(fx: Fx<R, E, A>) => Fx<R | R2, E2, A | B>
|
|
1128
|
+
<R, E, A, R2, E2, B>(fx: Fx<R, E, A>, f: (cause: Cause.Cause<E>) => Fx<R2, E2, A>): Fx<R | R2, E2, A | B>
|
|
1129
|
+
} = core.recoverWith
|
|
1130
|
+
|
|
1131
|
+
/**
|
|
1132
|
+
* Map the success value of an Fx to an Effect, doesn't fork any fibers like flatMap* etc.
|
|
1133
|
+
*
|
|
1134
|
+
* @since 1.18.0
|
|
1135
|
+
* @category combinators
|
|
1136
|
+
*/
|
|
1137
|
+
export const mapEffect: {
|
|
1138
|
+
<A, R2, E2, B>(f: (a: A) => Effect.Effect<R2, E2, B>): <R, E>(fx: Fx<R, E, A>) => Fx<R | R2, E | E2, B>
|
|
1139
|
+
<R, E, A, R2, E2, B>(fx: Fx<R, E, A>, f: (a: A) => Effect.Effect<R2, E2, B>): Fx<R | R2, E | E2, B>
|
|
1140
|
+
} = core.mapEffect
|
|
1141
|
+
|
|
1142
|
+
/**
|
|
1143
|
+
* Perform an Effect for each value emitted by an Fx, not affecting the output of the Fx.
|
|
1144
|
+
*
|
|
1145
|
+
* @since 1.18.0
|
|
1146
|
+
* @category combinators
|
|
1147
|
+
*/
|
|
1148
|
+
export const tap: {
|
|
1149
|
+
<A, R2, E2, B>(f: (a: A) => Effect.Effect<R2, E2, B>): <R, E>(fx: Fx<R, E, A>) => Fx<R | R2, E | E2, A>
|
|
1150
|
+
<R, E, A, R2, E2, B>(fx: Fx<R, E, A>, f: (a: A) => Effect.Effect<R2, E2, B>): Fx<R | R2, E | E2, A>
|
|
1151
|
+
} = core.tap
|
|
1152
|
+
|
|
1153
|
+
/**
|
|
1154
|
+
* Filter the success value of an Fx with an Effect.
|
|
1155
|
+
*
|
|
1156
|
+
* @since 1.18.0
|
|
1157
|
+
* @category combinators
|
|
1158
|
+
*/
|
|
1159
|
+
export const filterEffect: {
|
|
1160
|
+
<A, R2, E2>(predicate: (a: A) => Effect.Effect<R2, E2, boolean>): <R, E>(fx: Fx<R, E, A>) => Fx<R | R2, E | E2, A>
|
|
1161
|
+
<R, E, A, R2, E2>(fx: Fx<R, E, A>, predicate: (a: A) => Effect.Effect<R2, E2, boolean>): Fx<R | R2, E | E2, A>
|
|
1162
|
+
} = core.filterEffect
|
|
1163
|
+
|
|
1164
|
+
/**
|
|
1165
|
+
* Filter and map the success value of an Fx with an Effect.
|
|
1166
|
+
*
|
|
1167
|
+
* @since 1.18.0
|
|
1168
|
+
* @category combinators
|
|
1169
|
+
*/
|
|
1170
|
+
export const filterMapEffect: {
|
|
1171
|
+
<A, R2, E2, B>(f: (a: A) => Effect.Effect<R2, E2, Option.Option<B>>): <R, E>(fx: Fx<R, E, A>) => Fx<R | R2, E | E2, B>
|
|
1172
|
+
<R, E, A, R2, E2, B>(fx: Fx<R, E, A>, f: (a: A) => Effect.Effect<R2, E2, Option.Option<B>>): Fx<R | R2, E | E2, B>
|
|
1173
|
+
} = core.filterMapEffect
|
|
1174
|
+
|
|
1175
|
+
/**
|
|
1176
|
+
* Apply a function to the constructed Effect that represents the running Fx.
|
|
1177
|
+
*
|
|
1178
|
+
* @since 1.18.0
|
|
1179
|
+
* @category combinators
|
|
1180
|
+
*/
|
|
1181
|
+
export const middleware: {
|
|
1182
|
+
<R, E, A, R2>(
|
|
1183
|
+
f: (effect: Effect.Effect<R, never, unknown>) => Effect.Effect<R2, never, unknown>,
|
|
1184
|
+
g?: (sink: Sink.Sink<E, A>) => Sink.Sink<E, A>
|
|
1185
|
+
): (fx: Fx<R, E, A>) => Fx<R2, E, A>
|
|
1186
|
+
<R, E, A, R2>(
|
|
1187
|
+
fx: Fx<R, E, A>,
|
|
1188
|
+
f: (effect: Effect.Effect<R, never, unknown>) => Effect.Effect<R2, never, unknown>,
|
|
1189
|
+
g?: (sink: Sink.Sink<E, A>) => Sink.Sink<E, A>
|
|
1190
|
+
): Fx<R2, E, A>
|
|
1191
|
+
} = core.middleware
|
|
1192
|
+
|
|
1193
|
+
/**
|
|
1194
|
+
* Accumulate a value over the success values of an Fx and atomically produce derived value.
|
|
1195
|
+
*
|
|
1196
|
+
* @since 1.18.0
|
|
1197
|
+
* @category combinators
|
|
1198
|
+
*/
|
|
1199
|
+
export const loop: {
|
|
1200
|
+
<A, B, C>(seed: B, f: (acc: B, a: A) => readonly [C, B]): <R, E>(fx: Fx<R, E, A>) => Fx<R, E, C>
|
|
1201
|
+
<R, E, A, B, C>(fx: Fx<R, E, A>, seed: B, f: (acc: B, a: A) => readonly [C, B]): Fx<R, E, C>
|
|
1202
|
+
} = core.loop
|
|
54
1203
|
|
|
55
|
-
|
|
1204
|
+
/**
|
|
1205
|
+
* Emit values with their previously emitted values when possible.
|
|
1206
|
+
*
|
|
1207
|
+
* @since 1.18.0
|
|
1208
|
+
* @category combinators
|
|
1209
|
+
*/
|
|
1210
|
+
export const withPrevious: <R, E, A>(fx: Fx<R, E, A>) => Fx<R, E, readonly [previous: Option.Option<A>, current: A]> = <
|
|
1211
|
+
R,
|
|
1212
|
+
E,
|
|
1213
|
+
A
|
|
1214
|
+
>(fx: Fx<R, E, A>): Fx<R, E, readonly [previous: Option.Option<A>, current: A]> =>
|
|
1215
|
+
loop(
|
|
1216
|
+
fx,
|
|
1217
|
+
Option.none<A>(),
|
|
1218
|
+
(previous, current) => [[previous, current] as const, Option.some(current)]
|
|
1219
|
+
)
|
|
56
1220
|
|
|
57
|
-
|
|
1221
|
+
/**
|
|
1222
|
+
* Accumulate a value over the success values of an Fx and atomically produce derived value
|
|
1223
|
+
* useing an Effect. A SynchronizedRef is utilized to ensure ordering of events.
|
|
1224
|
+
*
|
|
1225
|
+
* @since 1.18.0
|
|
1226
|
+
* @category combinators
|
|
1227
|
+
*/
|
|
1228
|
+
export const loopEffect: {
|
|
1229
|
+
<B, A, R2, E2, C>(
|
|
1230
|
+
seed: B,
|
|
1231
|
+
f: (acc: B, a: A) => Effect.Effect<R2, E2, readonly [C, B]>
|
|
1232
|
+
): <R, E>(fx: Fx<R, E, A>) => Fx<R | R2, E | E2, C>
|
|
58
1233
|
|
|
59
|
-
|
|
1234
|
+
<R, E, A, B, R2, E2, C>(
|
|
1235
|
+
fx: Fx<R, E, A>,
|
|
1236
|
+
seed: B,
|
|
1237
|
+
f: (acc: B, a: A) => Effect.Effect<R2, E2, readonly [C, B]>
|
|
1238
|
+
): Fx<R | R2, E | E2, C>
|
|
1239
|
+
} = core.loopEffect
|
|
60
1240
|
|
|
61
|
-
|
|
1241
|
+
/**
|
|
1242
|
+
* Prepends a value to the beginning of an Fx.
|
|
1243
|
+
*
|
|
1244
|
+
* @since 1.18.0
|
|
1245
|
+
* @category combinators
|
|
1246
|
+
*/
|
|
1247
|
+
export const startWith: {
|
|
1248
|
+
<B>(value: B): <R, E, A>(fx: Fx<R, E, A>) => Fx<R, E, A | B>
|
|
1249
|
+
<R, E, A, B>(fx: Fx<R, E, A>, value: B): Fx<R, E, A | B>
|
|
1250
|
+
} = core.startWith
|
|
1251
|
+
|
|
1252
|
+
/**
|
|
1253
|
+
* Appends a value to the end of an Fx.
|
|
1254
|
+
*
|
|
1255
|
+
* @since 1.18.0
|
|
1256
|
+
* @category combinators
|
|
1257
|
+
*/
|
|
1258
|
+
export const endWith: {
|
|
1259
|
+
<B>(value: B): <R, E, A>(fx: Fx<R, E, A>) => Fx<R, E, A | B>
|
|
1260
|
+
<R, E, A, B>(fx: Fx<R, E, A>, value: B): Fx<R, E, A | B>
|
|
1261
|
+
} = core.endWith
|
|
1262
|
+
|
|
1263
|
+
/**
|
|
1264
|
+
* Run a reducer over the success values of an Fx.
|
|
1265
|
+
*
|
|
1266
|
+
* @since 1.18.0
|
|
1267
|
+
* @category combinators
|
|
1268
|
+
*/
|
|
1269
|
+
export const scan: {
|
|
1270
|
+
<A, B>(seed: B, f: (acc: B, a: A) => B): <R, E>(fx: Fx<R, E, A>) => Fx<R, E, B>
|
|
1271
|
+
<R, E, A, B>(fx: Fx<R, E, A>, seed: B, f: (acc: B, a: A) => B): Fx<R, E, B>
|
|
1272
|
+
} = core.scan
|
|
1273
|
+
|
|
1274
|
+
/**
|
|
1275
|
+
* Run an Effect-ful reducer over the success values of an Fx.
|
|
1276
|
+
*
|
|
1277
|
+
* @since 1.18.0
|
|
1278
|
+
* @category combinators
|
|
1279
|
+
*/
|
|
1280
|
+
export const scanEffect: {
|
|
1281
|
+
<A, B, R2, E2>(
|
|
1282
|
+
seed: B,
|
|
1283
|
+
f: (acc: B, a: A) => Effect.Effect<R2, E2, B>
|
|
1284
|
+
): <R, E>(fx: Fx<R, E, A>) => Fx<R | R2, E | E2, B>
|
|
1285
|
+
<R, E, A, B, R2, E2>(fx: Fx<R, E, A>, seed: B, f: (acc: B, a: A) => Effect.Effect<R2, E2, B>): Fx<R | R2, E | E2, B>
|
|
1286
|
+
} = core.scanEffect
|
|
1287
|
+
|
|
1288
|
+
/**
|
|
1289
|
+
* Map the failures of an Fx to another Fx, flattening the result
|
|
1290
|
+
* with the provided FlattenStrategy.
|
|
1291
|
+
* @since 1.18.0
|
|
1292
|
+
* @category flattening
|
|
1293
|
+
*/
|
|
1294
|
+
export const flatMapCauseWithStrategy: {
|
|
1295
|
+
<E, R2 = never, E2 = never, B = never>(
|
|
1296
|
+
f: (cause: Cause.Cause<E>) => FxInput<R2, E2, B>,
|
|
1297
|
+
strategy: FlattenStrategy
|
|
1298
|
+
): <R, A>(fx: Fx<R, E, A>) => Fx<R | R2, E2, A | B>
|
|
1299
|
+
<R, E, A, R2 = never, E2 = never, B = never>(
|
|
1300
|
+
fx: Fx<R, E, A>,
|
|
1301
|
+
f: (cause: Cause.Cause<E>) => FxInput<R2, E2, B>,
|
|
1302
|
+
strategy: FlattenStrategy
|
|
1303
|
+
): Fx<R | R2, E2, A | B>
|
|
1304
|
+
} = core.flatMapCauseWithStrategy
|
|
1305
|
+
|
|
1306
|
+
/**
|
|
1307
|
+
* Map the failures of an Fx to another Fx, flattening the result
|
|
1308
|
+
* with the provided FlattenStrategy.
|
|
1309
|
+
* @since 1.18.0
|
|
1310
|
+
* @category flattening
|
|
1311
|
+
*/
|
|
1312
|
+
export const flatMapErrorWithStrategy: {
|
|
1313
|
+
<E, R2 = never, E2 = never, B = never>(
|
|
1314
|
+
f: (error: E) => FxInput<R2, E2, B>,
|
|
1315
|
+
strategy: FlattenStrategy
|
|
1316
|
+
): <R, A>(fx: Fx<R, E, A>) => Fx<R2 | R, E2, B | A>
|
|
1317
|
+
<R, E, A, R2 = never, E2 = never, B = never>(
|
|
1318
|
+
fx: Fx<R, E, A>,
|
|
1319
|
+
f: (error: E) => FxInput<R2, E2, B>,
|
|
1320
|
+
strategy: FlattenStrategy
|
|
1321
|
+
): Fx<R | R2, E2, A | B>
|
|
1322
|
+
} = core.flatMapErrorWithStrategy
|
|
1323
|
+
|
|
1324
|
+
/**
|
|
1325
|
+
* Map the failures of an Fx to another Fx, flattening the result with unbounded concurrency.
|
|
1326
|
+
*
|
|
1327
|
+
* @since 1.18.0
|
|
1328
|
+
* @category flattening
|
|
1329
|
+
*/
|
|
1330
|
+
export const flatMapCause: {
|
|
1331
|
+
<E, R2 = never, E2 = never, B = never>(
|
|
1332
|
+
f: (cause: Cause.Cause<E>) => FxInput<R2, E2, B>
|
|
1333
|
+
): <R, A>(fx: Fx<R, E, A>) => Fx<R | R2, E2, A | B>
|
|
1334
|
+
<R, E, A, R2 = never, E2 = never, B = never>(
|
|
1335
|
+
fx: Fx<R, E, A>,
|
|
1336
|
+
f: (cause: Cause.Cause<E>) => FxInput<R2, E2, B>
|
|
1337
|
+
): Fx<R | R2, E2, A | B>
|
|
1338
|
+
} = core.flatMapCause
|
|
1339
|
+
|
|
1340
|
+
/**
|
|
1341
|
+
* Map the failures of an Fx to another Fx, flattening the result with unbounded concurrency.
|
|
1342
|
+
*
|
|
1343
|
+
* @since 1.18.0
|
|
1344
|
+
* @category flattening
|
|
1345
|
+
*/
|
|
1346
|
+
export const flatMapError: {
|
|
1347
|
+
<E, R2 = never, E2 = never, B = never>(
|
|
1348
|
+
f: (error: E) => FxInput<R2, E2, B>
|
|
1349
|
+
): <R, A>(fx: Fx<R, E, A>) => Fx<R | R2, E2, A | B>
|
|
1350
|
+
<R, E, A, R2 = never, E2 = never, B = never>(
|
|
1351
|
+
fx: Fx<R, E, A>,
|
|
1352
|
+
f: (error: E) => FxInput<R2, E2, B>
|
|
1353
|
+
): Fx<R | R2, E2, A | B>
|
|
1354
|
+
} = core.flatMapError
|
|
1355
|
+
|
|
1356
|
+
/**
|
|
1357
|
+
* Map the failures of an Fx to another Fx with the specified concurrency.
|
|
1358
|
+
*
|
|
1359
|
+
* @since 1.18.0
|
|
1360
|
+
* @category flattening
|
|
1361
|
+
*/
|
|
1362
|
+
export const flatMapCauseConcurrently: {
|
|
1363
|
+
<E, R2 = never, E2 = never, B = never>(
|
|
1364
|
+
f: (cause: Cause.Cause<E>) => FxInput<R2, E2, B>,
|
|
1365
|
+
concurrency: number
|
|
1366
|
+
): <R, A>(fx: Fx<R, E, A>) => Fx<R | R2, E2, A | B>
|
|
1367
|
+
<R, E, A, R2 = never, E2 = never, B = never>(
|
|
1368
|
+
fx: Fx<R, E, A>,
|
|
1369
|
+
f: (cause: Cause.Cause<E>) => FxInput<R2, E2, B>,
|
|
1370
|
+
concurrency: number
|
|
1371
|
+
): Fx<R | R2, E2, A | B>
|
|
1372
|
+
} = core.flatMapCauseConcurrently
|
|
1373
|
+
|
|
1374
|
+
/**
|
|
1375
|
+
* Map the failures of an Fx to another Fx with the specified concurrency.
|
|
1376
|
+
*
|
|
1377
|
+
* @since 1.18.0
|
|
1378
|
+
* @category flattening
|
|
1379
|
+
*/
|
|
1380
|
+
export const flatMapErrorConcurrently: {
|
|
1381
|
+
<E, R2 = never, E2 = never, B = never>(
|
|
1382
|
+
f: (error: E) => FxInput<R2, E2, B>,
|
|
1383
|
+
concurrency: number
|
|
1384
|
+
): <R, A>(fx: Fx<R, E, A>) => Fx<R2 | R, E2, B | A>
|
|
1385
|
+
<R, E, A, R2 = never, E2 = never, B = never>(
|
|
1386
|
+
fx: Fx<R, E, A>,
|
|
1387
|
+
f: (error: E) => FxInput<R2, E2, B>,
|
|
1388
|
+
concurrency: number
|
|
1389
|
+
): Fx<R | R2, E2, A | B>
|
|
1390
|
+
} = core.flatMapErrorConcurrently
|
|
1391
|
+
|
|
1392
|
+
/**
|
|
1393
|
+
* Map the failures of an Fx to another Fx, switching to the latest
|
|
1394
|
+
* Fx emitted and interrupting the previous.
|
|
1395
|
+
*
|
|
1396
|
+
* @since 1.18.0
|
|
1397
|
+
* @category flattening
|
|
1398
|
+
*/
|
|
1399
|
+
export const switchMapCause: {
|
|
1400
|
+
<E, R2 = never, E2 = never, B = never>(
|
|
1401
|
+
f: (cause: Cause.Cause<E>) => FxInput<R2, E2, B>
|
|
1402
|
+
): <R, A>(fx: Fx<R, E, A>) => Fx<R | R2, E2, A | B>
|
|
1403
|
+
<R, E, A, R2 = never, E2 = never, B = never>(
|
|
1404
|
+
fx: Fx<R, E, A>,
|
|
1405
|
+
f: (cause: Cause.Cause<E>) => FxInput<R2, E2, B>
|
|
1406
|
+
): Fx<R | R2, E2, A | B>
|
|
1407
|
+
} = core.switchMapCause
|
|
1408
|
+
|
|
1409
|
+
/**
|
|
1410
|
+
* Map the failures of an Fx to another Fx, switching to the latest
|
|
1411
|
+
* Fx emitted and interrupting the previous.
|
|
1412
|
+
*
|
|
1413
|
+
* @since 1.18.0
|
|
1414
|
+
* @category flattening
|
|
1415
|
+
*/
|
|
1416
|
+
export const switchMapError: {
|
|
1417
|
+
<E, R2 = never, E2 = never, B = never>(
|
|
1418
|
+
f: (error: E) => FxInput<R2, E2, B>
|
|
1419
|
+
): <R, A>(fx: Fx<R, E, A>) => Fx<R2 | R, E2, B | A>
|
|
1420
|
+
<R, E, A, R2 = never, E2 = never, B = never>(
|
|
1421
|
+
fx: Fx<R, E, A>,
|
|
1422
|
+
f: (error: E) => FxInput<R2, E2, B>
|
|
1423
|
+
): Fx<R | R2, E2, A | B>
|
|
1424
|
+
} = core.switchMapError
|
|
1425
|
+
|
|
1426
|
+
/**
|
|
1427
|
+
* Map the failures of an Fx to another Fx, prefering the first
|
|
1428
|
+
* Fx emitted and dropping any subsequent Fx until it has completed.
|
|
1429
|
+
*
|
|
1430
|
+
* @since 1.18.0
|
|
1431
|
+
* @category flattening
|
|
1432
|
+
*/
|
|
1433
|
+
export const exhaustMapCause: {
|
|
1434
|
+
<E, R2 = never, E2 = never, B = never>(
|
|
1435
|
+
f: (cause: Cause.Cause<E>) => FxInput<R2, E2, B>
|
|
1436
|
+
): <R, A>(fx: Fx<R, E, A>) => Fx<R | R2, E2, A | B>
|
|
1437
|
+
<R, E, A, R2 = never, E2 = never, B = never>(
|
|
1438
|
+
fx: Fx<R, E, A>,
|
|
1439
|
+
f: (cause: Cause.Cause<E>) => FxInput<R2, E2, B>
|
|
1440
|
+
): Fx<R | R2, E2, A | B>
|
|
1441
|
+
} = core.exhaustMapCause
|
|
1442
|
+
|
|
1443
|
+
/**
|
|
1444
|
+
* Map the failures of an Fx to another Fx, prefering the first
|
|
1445
|
+
* Fx emitted and dropping any subsequent Fx until it has completed.
|
|
1446
|
+
*
|
|
1447
|
+
* @since 1.18.0
|
|
1448
|
+
* @category flattening
|
|
1449
|
+
*/
|
|
1450
|
+
export const exhaustMapError: {
|
|
1451
|
+
<E, R2 = never, E2 = never, B = never>(
|
|
1452
|
+
f: (error: E) => FxInput<R2, E2, B>
|
|
1453
|
+
): <R, A>(fx: Fx<R, E, A>) => Fx<R2 | R, E2, B | A>
|
|
1454
|
+
<R, E, A, R2 = never, E2 = never, B = never>(
|
|
1455
|
+
fx: Fx<R, E, A>,
|
|
1456
|
+
f: (error: E) => FxInput<R2, E2, B>
|
|
1457
|
+
): Fx<R | R2, E2, A | B>
|
|
1458
|
+
} = core.exhaustMapError
|
|
1459
|
+
|
|
1460
|
+
/**
|
|
1461
|
+
* Map the failures of an Fx to another Fx, prefering the first
|
|
1462
|
+
* until completion, and then running the last emitted Fx if they are not
|
|
1463
|
+
* the same Fx.
|
|
1464
|
+
*
|
|
1465
|
+
* @since 1.18.0
|
|
1466
|
+
* @category flattening
|
|
1467
|
+
*/
|
|
1468
|
+
export const exhaustMapLatestCause: {
|
|
1469
|
+
<E, R2 = never, E2 = never, B = never>(
|
|
1470
|
+
f: (cause: Cause.Cause<E>) => FxInput<R2, E2, B>
|
|
1471
|
+
): <R, A>(fx: Fx<R, E, A>) => Fx<R | R2, E2, A | B>
|
|
1472
|
+
<R, E, A, R2 = never, E2 = never, B = never>(
|
|
1473
|
+
fx: Fx<R, E, A>,
|
|
1474
|
+
f: (cause: Cause.Cause<E>) => FxInput<R2, E2, B>
|
|
1475
|
+
): Fx<R | R2, E2, A | B>
|
|
1476
|
+
} = core.exhaustMapLatestCause
|
|
1477
|
+
|
|
1478
|
+
/**
|
|
1479
|
+
* Map the failures of an Fx to another Fx, prefering the first
|
|
1480
|
+
* until completion, and then running the last emitted Fx if they are not
|
|
1481
|
+
* the same Fx.
|
|
1482
|
+
*
|
|
1483
|
+
* @since 1.18.0
|
|
1484
|
+
* @category flattening
|
|
1485
|
+
*/
|
|
1486
|
+
export const exhaustMapLatestError: {
|
|
1487
|
+
<E, R2 = never, E2 = never, B = never>(
|
|
1488
|
+
f: (error: E) => FxInput<R2, E2, B>
|
|
1489
|
+
): <R, A>(fx: Fx<R, E, A>) => Fx<R2 | R, E2, B | A>
|
|
1490
|
+
<R, E, A, R2 = never, E2 = never, B = never>(
|
|
1491
|
+
fx: Fx<R, E, A>,
|
|
1492
|
+
f: (error: E) => FxInput<R2, E2, B>
|
|
1493
|
+
): Fx<R | R2, E2, A | B>
|
|
1494
|
+
} = core.exhaustMapLatestError
|
|
1495
|
+
|
|
1496
|
+
/**
|
|
1497
|
+
* Map over the failures and successes of an Fx, flattening both using the same strategy.
|
|
1498
|
+
*
|
|
1499
|
+
* @since 1.18.0
|
|
1500
|
+
* @category flattening
|
|
1501
|
+
*/
|
|
1502
|
+
export const matchCauseWithStrategy: {
|
|
1503
|
+
<E, R2 = never, E2 = never, B = never, A = never, R3 = never, E3 = never, C = never>(
|
|
1504
|
+
options: {
|
|
1505
|
+
readonly onFailure: (cause: Cause.Cause<E>) => FxInput<R2, E2, B>
|
|
1506
|
+
readonly onSuccess: (a: A) => FxInput<R3, E3, C>
|
|
1507
|
+
readonly strategy: FlattenStrategy
|
|
1508
|
+
}
|
|
1509
|
+
): <R, A>(fx: Fx<R, E, A>) => Fx<R2 | R, E2, B | A>
|
|
1510
|
+
<R, E, A, R2 = never, E2 = never, B = never, R3 = never, E3 = never, C = never>(
|
|
1511
|
+
fx: Fx<R, E, A>,
|
|
1512
|
+
options: {
|
|
1513
|
+
readonly onFailure: (cause: Cause.Cause<E>) => FxInput<R2, E2, B>
|
|
1514
|
+
readonly onSuccess: (a: A) => FxInput<R3, E3, C>
|
|
1515
|
+
readonly strategy: FlattenStrategy
|
|
1516
|
+
}
|
|
1517
|
+
): Fx<R | R2, E2 | E3, B | C>
|
|
1518
|
+
} = core.matchCauseWithStrategy
|
|
1519
|
+
|
|
1520
|
+
/**
|
|
1521
|
+
* Map over the failures and successes of an Fx, flattening both using the same strategy.
|
|
1522
|
+
*
|
|
1523
|
+
* @since 1.18.0
|
|
1524
|
+
* @category flattening
|
|
1525
|
+
*/
|
|
1526
|
+
export const matchErrorWithStrategy: {
|
|
1527
|
+
<E, R2 = never, E2 = never, B = never, A = never, R3 = never, E3 = never, C = never>(
|
|
1528
|
+
options: {
|
|
1529
|
+
readonly onFailure: (error: E) => FxInput<R2, E2, B>
|
|
1530
|
+
readonly onSuccess: (a: A) => FxInput<R3, E3, C>
|
|
1531
|
+
readonly strategy: FlattenStrategy
|
|
1532
|
+
}
|
|
1533
|
+
): <R, A>(fx: Fx<R, E, A>) => Fx<R2 | R, E2, B | A>
|
|
1534
|
+
<R, E, A, R2 = never, E2 = never, B = never, R3 = never, E3 = never, C = never>(
|
|
1535
|
+
fx: Fx<R, E, A>,
|
|
1536
|
+
options: {
|
|
1537
|
+
readonly onFailure: (error: E) => FxInput<R2, E2, B>
|
|
1538
|
+
readonly onSuccess: (a: A) => FxInput<R3, E3, C>
|
|
1539
|
+
readonly strategy: FlattenStrategy
|
|
1540
|
+
}
|
|
1541
|
+
): Fx<R | R2, E2 | E3, B | C>
|
|
1542
|
+
} = core.matchErrorWithStrategy
|
|
1543
|
+
|
|
1544
|
+
/**
|
|
1545
|
+
* Map over the failures and successes of an Fx, flattening both with unbounded concurrency.
|
|
1546
|
+
*
|
|
1547
|
+
* @since 1.18.0
|
|
1548
|
+
* @category flattening
|
|
1549
|
+
*/
|
|
1550
|
+
export const matchCause: {
|
|
1551
|
+
<E, R2 = never, E2 = never, B = never, A = never, R3 = never, E3 = never, C = never>(
|
|
1552
|
+
options: {
|
|
1553
|
+
readonly onFailure: (cause: Cause.Cause<E>) => FxInput<R2, E2, B>
|
|
1554
|
+
readonly onSuccess: (a: A) => FxInput<R3, E3, C>
|
|
1555
|
+
}
|
|
1556
|
+
): <R>(fx: Fx<R, E, A>) => Fx<R2 | R3 | R, E2 | E3, B | C>
|
|
1557
|
+
<R, E, A, R2 = never, E2 = never, B = never, R3 = never, E3 = never, C = never>(
|
|
1558
|
+
fx: Fx<R, E, A>,
|
|
1559
|
+
options: {
|
|
1560
|
+
readonly onFailure: (cause: Cause.Cause<E>) => FxInput<R2, E2, B>
|
|
1561
|
+
readonly onSuccess: (a: A) => FxInput<R3, E3, C>
|
|
1562
|
+
}
|
|
1563
|
+
): Fx<R | R2 | R3, E2 | E3, B | C>
|
|
1564
|
+
} = core.matchCause
|
|
1565
|
+
|
|
1566
|
+
/**
|
|
1567
|
+
* Map over the failures and successes of an Fx, flattening both with unbounded concurrency.
|
|
1568
|
+
*
|
|
1569
|
+
* @since 1.18.0
|
|
1570
|
+
* @category flattening
|
|
1571
|
+
*/
|
|
1572
|
+
export const match: {
|
|
1573
|
+
<E, R2 = never, E2 = never, B = never, A = never, R3 = never, E3 = never, C = never>(
|
|
1574
|
+
options: { readonly onFailure: (error: E) => FxInput<R2, E2, B>; readonly onSuccess: (a: A) => FxInput<R3, E3, C> }
|
|
1575
|
+
): <R>(fx: Fx<R, E, A>) => Fx<R2 | R3 | R, E2 | E3, B | C>
|
|
1576
|
+
<R, E, A, R2 = never, E2 = never, B = never, R3 = never, E3 = never, C = never>(
|
|
1577
|
+
fx: Fx<R, E, A>,
|
|
1578
|
+
options: { readonly onFailure: (error: E) => FxInput<R2, E2, B>; readonly onSuccess: (a: A) => FxInput<R3, E3, C> }
|
|
1579
|
+
): Fx<R | R2 | R3, E2 | E3, B | C>
|
|
1580
|
+
} = core.match
|
|
1581
|
+
|
|
1582
|
+
/**
|
|
1583
|
+
* Map over the failures and successes of an Fx, flattening both with the specified concurrency.
|
|
1584
|
+
*
|
|
1585
|
+
* @since 1.18.0
|
|
1586
|
+
* @category flattening
|
|
1587
|
+
*/
|
|
1588
|
+
export const matchCauseConcurrently: {
|
|
1589
|
+
<E, R2 = never, E2 = never, B = never, A = never, R3 = never, E3 = never, C = never>(
|
|
1590
|
+
options: {
|
|
1591
|
+
readonly onFailure: (cause: Cause.Cause<E>) => FxInput<R2, E2, B>
|
|
1592
|
+
readonly onSuccess: (a: A) => FxInput<R3, E3, C>
|
|
1593
|
+
readonly concurrency: number
|
|
1594
|
+
}
|
|
1595
|
+
): <R>(fx: Fx<R, E, A>) => Fx<R2 | R3 | R, E2 | E3, B | C>
|
|
1596
|
+
<R, E, A, R2 = never, E2 = never, B = never, R3 = never, E3 = never, C = never>(
|
|
1597
|
+
fx: Fx<R, E, A>,
|
|
1598
|
+
options: {
|
|
1599
|
+
readonly onFailure: (cause: Cause.Cause<E>) => FxInput<R2, E2, B>
|
|
1600
|
+
readonly onSuccess: (a: A) => FxInput<R3, E3, C>
|
|
1601
|
+
readonly concurrency: number
|
|
1602
|
+
}
|
|
1603
|
+
): Fx<R | R2 | R3, E2 | E3, B | C>
|
|
1604
|
+
} = core.matchCauseConcurrently
|
|
1605
|
+
|
|
1606
|
+
/**
|
|
1607
|
+
* Map over the failures and successes of an Fx, flattening both with the specified concurrency.
|
|
1608
|
+
*
|
|
1609
|
+
* @since 1.18.0
|
|
1610
|
+
* @category flattening
|
|
1611
|
+
*/
|
|
1612
|
+
export const matchErrorConcurrently: {
|
|
1613
|
+
<E, R2 = never, E2 = never, B = never, A = never, R3 = never, E3 = never, C = never>(
|
|
1614
|
+
options: {
|
|
1615
|
+
readonly onFailure: (error: E) => FxInput<R2, E2, B>
|
|
1616
|
+
readonly onSuccess: (a: A) => FxInput<R3, E3, C>
|
|
1617
|
+
readonly concurrency: number
|
|
1618
|
+
}
|
|
1619
|
+
): <R>(fx: Fx<R, E, A>) => Fx<R2 | R3 | R, E2 | E3, B | C>
|
|
1620
|
+
<R, E, A, R2 = never, E2 = never, B = never, R3 = never, E3 = never, C = never>(
|
|
1621
|
+
fx: Fx<R, E, A>,
|
|
1622
|
+
options: {
|
|
1623
|
+
readonly onFailure: (error: E) => FxInput<R2, E2, B>
|
|
1624
|
+
readonly onSuccess: (a: A) => FxInput<R3, E3, C>
|
|
1625
|
+
readonly concurrency: number
|
|
1626
|
+
}
|
|
1627
|
+
): Fx<R | R2 | R3, E2 | E3, B | C>
|
|
1628
|
+
} = core.matchErrorConcurrently
|
|
1629
|
+
|
|
1630
|
+
/**
|
|
1631
|
+
* Map over the failures and successes of an Fx, switching to the latest
|
|
1632
|
+
* Fx emitted and interrupting the previous.
|
|
1633
|
+
*
|
|
1634
|
+
* @since 1.18.0
|
|
1635
|
+
* @category flattening
|
|
1636
|
+
*/
|
|
1637
|
+
export const switchMatchCause: {
|
|
1638
|
+
<E, R2 = never, E2 = never, B = never, A = never, R3 = never, E3 = never, C = never>(
|
|
1639
|
+
options: {
|
|
1640
|
+
readonly onFailure: (cause: Cause.Cause<E>) => FxInput<R2, E2, B>
|
|
1641
|
+
readonly onSuccess: (a: A) => FxInput<R3, E3, C>
|
|
1642
|
+
}
|
|
1643
|
+
): <R>(fx: Fx<R, E, A>) => Fx<R2 | R3 | R, E2 | E3, B | C>
|
|
1644
|
+
<R, E, A, R2 = never, E2 = never, B = never, R3 = never, E3 = never, C = never>(
|
|
1645
|
+
fx: Fx<R, E, A>,
|
|
1646
|
+
options: {
|
|
1647
|
+
readonly onFailure: (cause: Cause.Cause<E>) => FxInput<R2, E2, B>
|
|
1648
|
+
readonly onSuccess: (a: A) => FxInput<R3, E3, C>
|
|
1649
|
+
}
|
|
1650
|
+
): Fx<R | R2 | R3, E2 | E3, B | C>
|
|
1651
|
+
} = core.switchMatchCause
|
|
1652
|
+
|
|
1653
|
+
/**
|
|
1654
|
+
* Map over the failures and successes of an Fx, switching to the latest
|
|
1655
|
+
* Fx emitted and interrupting the previous.
|
|
1656
|
+
*
|
|
1657
|
+
* @since 1.18.0
|
|
1658
|
+
* @category flattening
|
|
1659
|
+
*/
|
|
1660
|
+
export const switchMatch: {
|
|
1661
|
+
<E, R2 = never, E2 = never, B = never, A = never, R3 = never, E3 = never, C = never>(
|
|
1662
|
+
options: { readonly onFailure: (error: E) => FxInput<R2, E2, B>; readonly onSuccess: (a: A) => FxInput<R3, E3, C> }
|
|
1663
|
+
): <R>(fx: Fx<R, E, A>) => Fx<R2 | R3 | R, E2 | E3, B | C>
|
|
1664
|
+
<R, E, A, R2 = never, E2 = never, B = never, R3 = never, E3 = never, C = never>(
|
|
1665
|
+
fx: Fx<R, E, A>,
|
|
1666
|
+
options: { readonly onFailure: (error: E) => FxInput<R2, E2, B>; readonly onSuccess: (a: A) => FxInput<R3, E3, C> }
|
|
1667
|
+
): Fx<R | R2 | R3, E2 | E3, B | C>
|
|
1668
|
+
} = core.switchMatch
|
|
1669
|
+
|
|
1670
|
+
/**
|
|
1671
|
+
* Map over the failures and successes of an Fx, prefering the first
|
|
1672
|
+
* Fx emitted and dropping any subsequent Fx until it has completed.
|
|
1673
|
+
*
|
|
1674
|
+
* @since 1.18.0
|
|
1675
|
+
* @category flattening
|
|
1676
|
+
*/
|
|
1677
|
+
export const exhaustMatchCause: {
|
|
1678
|
+
<E, R2 = never, E2 = never, B = never, A = never, R3 = never, E3 = never, C = never>(
|
|
1679
|
+
options: {
|
|
1680
|
+
readonly onFailure: (cause: Cause.Cause<E>) => FxInput<R2, E2, B>
|
|
1681
|
+
readonly onSuccess: (a: A) => FxInput<R3, E3, C>
|
|
1682
|
+
}
|
|
1683
|
+
): <R>(fx: Fx<R, E, A>) => Fx<R2 | R3 | R, E2 | E3, B | C>
|
|
1684
|
+
<R, E, A, R2 = never, E2 = never, B = never, R3 = never, E3 = never, C = never>(
|
|
1685
|
+
fx: Fx<R, E, A>,
|
|
1686
|
+
options: {
|
|
1687
|
+
readonly onFailure: (cause: Cause.Cause<E>) => FxInput<R2, E2, B>
|
|
1688
|
+
readonly onSuccess: (a: A) => FxInput<R3, E3, C>
|
|
1689
|
+
}
|
|
1690
|
+
): Fx<R | R2 | R3, E2 | E3, B | C>
|
|
1691
|
+
} = core.exhaustMatchCause
|
|
1692
|
+
|
|
1693
|
+
/**
|
|
1694
|
+
* Map over the failures and successes of an Fx, prefering the first
|
|
1695
|
+
* Fx emitted and dropping any subsequent Fx until it has completed.
|
|
1696
|
+
*
|
|
1697
|
+
* @since 1.18.0
|
|
1698
|
+
* @category flattening
|
|
1699
|
+
*/
|
|
1700
|
+
export const exhaustMatch: {
|
|
1701
|
+
<E, R2 = never, E2 = never, B = never, A = never, R3 = never, E3 = never, C = never>(
|
|
1702
|
+
options: { readonly onFailure: (error: E) => FxInput<R2, E2, B>; readonly onSuccess: (a: A) => FxInput<R3, E3, C> }
|
|
1703
|
+
): <R>(fx: Fx<R, E, A>) => Fx<R2 | R3 | R, E2 | E3, B | C>
|
|
1704
|
+
<R, E, A, R2 = never, E2 = never, B = never, R3 = never, E3 = never, C = never>(
|
|
1705
|
+
fx: Fx<R, E, A>,
|
|
1706
|
+
options: { readonly onFailure: (error: E) => FxInput<R2, E2, B>; readonly onSuccess: (a: A) => FxInput<R3, E3, C> }
|
|
1707
|
+
): Fx<R | R2 | R3, E2 | E3, B | C>
|
|
1708
|
+
} = core.exhaustMatch
|
|
1709
|
+
|
|
1710
|
+
/**
|
|
1711
|
+
* Map over the failures and successes of an Fx, prefering the first
|
|
1712
|
+
* Fx emitted and starting the latest Fx when the first completes
|
|
1713
|
+
* if they are not the same Fx.
|
|
1714
|
+
*
|
|
1715
|
+
* @since 1.18.0
|
|
1716
|
+
* @category flattening
|
|
1717
|
+
*/
|
|
1718
|
+
export const exhaustLatestMatchCause: {
|
|
1719
|
+
<E, R2 = never, E2 = never, B = never, A = never, R3 = never, E3 = never, C = never>(
|
|
1720
|
+
options: {
|
|
1721
|
+
readonly onFailure: (cause: Cause.Cause<E>) => FxInput<R2, E2, B>
|
|
1722
|
+
readonly onSuccess: (a: A) => FxInput<R3, E3, C>
|
|
1723
|
+
}
|
|
1724
|
+
): <R>(fx: Fx<R, E, A>) => Fx<R2 | R3 | R, E2 | E3, B | C>
|
|
1725
|
+
<R, E, A, R2 = never, E2 = never, B = never, R3 = never, E3 = never, C = never>(
|
|
1726
|
+
fx: Fx<R, E, A>,
|
|
1727
|
+
options: {
|
|
1728
|
+
readonly onFailure: (cause: Cause.Cause<E>) => FxInput<R2, E2, B>
|
|
1729
|
+
readonly onSuccess: (a: A) => FxInput<R3, E3, C>
|
|
1730
|
+
}
|
|
1731
|
+
): Fx<R | R2 | R3, E2 | E3, B | C>
|
|
1732
|
+
} = core.exhaustLatestMatchCause
|
|
1733
|
+
|
|
1734
|
+
/**
|
|
1735
|
+
* Map over the failures and successes of an Fx, prefering the first
|
|
1736
|
+
* Fx emitted and starting the latest Fx when the first completes
|
|
1737
|
+
* if they are not the same Fx.
|
|
1738
|
+
*
|
|
1739
|
+
* @since 1.18.0
|
|
1740
|
+
* @category flattening
|
|
1741
|
+
*/
|
|
1742
|
+
export const exhaustLatestMatch: {
|
|
1743
|
+
<E, R2 = never, E2 = never, B = never, A = never, R3 = never, E3 = never, C = never>(
|
|
1744
|
+
options: { readonly onFailure: (error: E) => FxInput<R2, E2, B>; readonly onSuccess: (a: A) => FxInput<R3, E3, C> }
|
|
1745
|
+
): <R>(fx: Fx<R, E, A>) => Fx<R2 | R3 | R, E2 | E3, B | C>
|
|
1746
|
+
<R, E, A, R2 = never, E2 = never, B = never, R3 = never, E3 = never, C = never>(
|
|
1747
|
+
fx: Fx<R, E, A>,
|
|
1748
|
+
options: { readonly onFailure: (error: E) => FxInput<R2, E2, B>; readonly onSuccess: (a: A) => FxInput<R3, E3, C> }
|
|
1749
|
+
): Fx<R | R2 | R3, E2 | E3, B | C>
|
|
1750
|
+
} = core.exhaustLatestMatch
|
|
1751
|
+
|
|
1752
|
+
/**
|
|
1753
|
+
* Listen to the events of an Fx within the provided window. When the window Fx
|
|
1754
|
+
* emits the inner stream, the fx will begin allowing events to pass through,
|
|
1755
|
+
* and when the inner stream emits, the fx will be interrupted.
|
|
1756
|
+
*
|
|
1757
|
+
* @since 1.18.0
|
|
1758
|
+
* @category time slicing
|
|
1759
|
+
*/
|
|
1760
|
+
export const during: {
|
|
1761
|
+
<R2, E2, R3, E3>(
|
|
1762
|
+
window: Fx<R2, E2, Fx<R3, E3, unknown>>
|
|
1763
|
+
): <R, E, A>(fx: Fx<R, E, A>) => Fx<R | R2 | R3, E | E2 | E3, A>
|
|
1764
|
+
|
|
1765
|
+
<R, E, A, R2, E2, R3, E3>(
|
|
1766
|
+
fx: Fx<R, E, A>,
|
|
1767
|
+
window: Fx<R2, E2, Fx<R3, E3, unknown>>
|
|
1768
|
+
): Fx<R | R2 | R3, E | E2 | E3, A>
|
|
1769
|
+
} = core.during
|
|
1770
|
+
|
|
1771
|
+
/**
|
|
1772
|
+
* Listen to the events of an Fx after the provided window emits.
|
|
1773
|
+
*
|
|
1774
|
+
* @since 1.18.0
|
|
1775
|
+
* @category time slicing
|
|
1776
|
+
*/
|
|
1777
|
+
export const since: {
|
|
1778
|
+
<R2, E2>(window: Fx<R2, E2, unknown>): <R, E, A>(fx: Fx<R, E, A>) => Fx<R | R2, E | E2, A>
|
|
1779
|
+
<R, E, A, R2, E2>(fx: Fx<R, E, A>, window: Fx<R2, E2, unknown>): Fx<R | R2, E | E2, A>
|
|
1780
|
+
} = core.since
|
|
1781
|
+
|
|
1782
|
+
/**
|
|
1783
|
+
* Listen to the events of an Fx until the provided window emits.
|
|
1784
|
+
*
|
|
1785
|
+
* @since 1.18.0
|
|
1786
|
+
* @category time slicing
|
|
1787
|
+
*/
|
|
1788
|
+
export const until: {
|
|
1789
|
+
<R2, E2>(window: Fx<R2, E2, unknown>): <R, E, A>(fx: Fx<R, E, A>) => Fx<R | R2, E | E2, A>
|
|
1790
|
+
<R, E, A, R2, E2>(fx: Fx<R, E, A>, window: Fx<R2, E2, unknown>): Fx<R | R2, E | E2, A>
|
|
1791
|
+
} = core.until
|
|
1792
|
+
|
|
1793
|
+
/**
|
|
1794
|
+
* Provide the environment to an Fx.
|
|
1795
|
+
*
|
|
1796
|
+
* @since 1.18.0
|
|
1797
|
+
* @category context
|
|
1798
|
+
*/
|
|
1799
|
+
export const provide: {
|
|
1800
|
+
<R2, E2, S>(layer: Layer.Layer<R2, E2, S>): <R, E, A>(fx: Fx<R, E, A>) => Fx<R2 | Exclude<R, S>, E2 | E, A>
|
|
1801
|
+
<R2>(runtime: Runtime.Runtime<R2>): <R, E, A>(fx: Fx<R, E, A>) => Fx<Exclude<R, R2>, E, A>
|
|
1802
|
+
<R2>(context: Context.Context<R2>): <R, E, A>(fx: Fx<R, E, A>) => Fx<Exclude<R, R2>, E, A>
|
|
1803
|
+
<R, E, A, R2, E2, S>(fx: Fx<R, E, A>, layer: Layer.Layer<R2, E2, S>): Fx<Exclude<R, S> | R2, E | E2, A>
|
|
1804
|
+
<R, E, A, R2>(fx: Fx<R, E, A>, runtime: Runtime.Runtime<R2>): Fx<Exclude<R, R2>, E, A>
|
|
1805
|
+
<R, E, A, R2>(fx: Fx<R, E, A>, context: Context.Context<R2>): Fx<Exclude<R, R2>, E, A>
|
|
1806
|
+
} = core.provide
|
|
1807
|
+
|
|
1808
|
+
/**
|
|
1809
|
+
* Provide a service to an Fx using a Tag.
|
|
1810
|
+
* @since 1.18.0
|
|
1811
|
+
* @category context
|
|
1812
|
+
*/
|
|
1813
|
+
export const provideService: {
|
|
1814
|
+
<I, S>(tag: Context.Tag<I, S>, service: S): <R, E, A>(fx: Fx<R, E, A>) => Fx<Exclude<R, I>, E, A>
|
|
1815
|
+
<R, E, A, I, S>(fx: Fx<R, E, A>, tag: Context.Tag<I, S>, service: S): Fx<Exclude<R, I>, E, A>
|
|
1816
|
+
} = core.provideService
|
|
1817
|
+
|
|
1818
|
+
/**
|
|
1819
|
+
* Provide a service using an Effect to an Fx using a Tag.
|
|
1820
|
+
*
|
|
1821
|
+
* @since 1.18.0
|
|
1822
|
+
* @category context
|
|
1823
|
+
*/
|
|
1824
|
+
export const provideServiceEffect: {
|
|
1825
|
+
<I, S, R2, E2>(
|
|
1826
|
+
tag: Context.Tag<I, S>,
|
|
1827
|
+
service: Effect.Effect<R2, E2, S>
|
|
1828
|
+
): <R, E, A>(fx: Fx<R, E, A>) => Fx<R2 | Exclude<R, I>, E, A>
|
|
1829
|
+
<R, E, A, I, S, R2, E2>(
|
|
1830
|
+
fx: Fx<R, E, A>,
|
|
1831
|
+
tag: Context.Tag<I, S>,
|
|
1832
|
+
service: Effect.Effect<R2, E2, S>
|
|
1833
|
+
): Fx<R2 | Exclude<R, I>, E, A>
|
|
1834
|
+
} = core.provideServiceEffect
|
|
1835
|
+
|
|
1836
|
+
/**
|
|
1837
|
+
* Skip repeated values, using the provided Equivalence to compare values.
|
|
1838
|
+
*
|
|
1839
|
+
* @since 1.18.0
|
|
1840
|
+
* @category slicing
|
|
1841
|
+
*/
|
|
1842
|
+
export const skipRepeatsWith: {
|
|
1843
|
+
<A>(eq: Equivalence<A>): <R, E>(fx: Fx<R, E, A>) => Fx<R, E, A>
|
|
1844
|
+
<R, E, A>(fx: Fx<R, E, A>, eq: Equivalence<A>): Fx<R, E, A>
|
|
1845
|
+
} = core.skipRepeatsWith
|
|
1846
|
+
|
|
1847
|
+
/**
|
|
1848
|
+
* Skip repeated values, using @effect/data/Equal for value comparison.
|
|
1849
|
+
*
|
|
1850
|
+
* @since 1.18.0
|
|
1851
|
+
* @category slicing
|
|
1852
|
+
*/
|
|
1853
|
+
export const skipRepeats: <R, E, A>(fx: Fx<R, E, A>) => Fx<R, E, A> = core.skipRepeats
|
|
1854
|
+
|
|
1855
|
+
/**
|
|
1856
|
+
* Sample the values of an Fx, or Effect, during the events of another Fx.
|
|
1857
|
+
*
|
|
1858
|
+
* @since 1.18.0
|
|
1859
|
+
* @category combinators
|
|
1860
|
+
*/
|
|
1861
|
+
export const snapshot: {
|
|
1862
|
+
<R2 = never, E2 = never, B = never, A = never, R3 = never, E3 = never, C = never>(
|
|
1863
|
+
sampled: FxInput<R2, E2, B>,
|
|
1864
|
+
f: (a: A, b: B) => Effect.Effect<R3, E3, C>
|
|
1865
|
+
): <R, E>(fx: Fx<R, E, A>) => Fx<R | R2 | R3, E | E2 | E3, C>
|
|
1866
|
+
<R, E, A, R2 = never, E2 = never, B = never, R3 = never, E3 = never, C = never>(
|
|
1867
|
+
fx: Fx<R, E, A>,
|
|
1868
|
+
sampled: FxInput<R2, E2, B>,
|
|
1869
|
+
f: (a: A, b: B) => Effect.Effect<R3, E3, C>
|
|
1870
|
+
): Fx<R | R2 | R3, E | E2 | E3, C>
|
|
1871
|
+
} = core.snapshot
|
|
1872
|
+
|
|
1873
|
+
/**
|
|
1874
|
+
* Share the output of an Fx, or Effect, with other Fx's using the behavior of the
|
|
1875
|
+
* provided Subject.
|
|
1876
|
+
*
|
|
1877
|
+
* @since 1.18.0
|
|
1878
|
+
* @category sharing
|
|
1879
|
+
*/
|
|
1880
|
+
export const share: <R, E, A, R2>(fx: Fx<R, E, A>, subject: Subject<R2, E, A>) => Fx<R | R2, E, A> = Share.share
|
|
1881
|
+
|
|
1882
|
+
/**
|
|
1883
|
+
* Effeciently share an underlying stream with multiple subscribers.
|
|
1884
|
+
*
|
|
1885
|
+
* @since 1.18.0
|
|
1886
|
+
* @category sharing
|
|
1887
|
+
*/
|
|
1888
|
+
export const multicast: <R, E, A>(fx: Fx<R, E, A>) => Fx<R, E, A> = Share.multicast
|
|
1889
|
+
|
|
1890
|
+
/**
|
|
1891
|
+
* Effeciently share an underlying stream with multiple subscribers, saving the most
|
|
1892
|
+
* recent event and emitting it to new subscribers.
|
|
1893
|
+
*
|
|
1894
|
+
* @since 1.18.0
|
|
1895
|
+
* @category sharing
|
|
1896
|
+
*/
|
|
1897
|
+
export const hold: <R, E, A>(fx: Fx<R, E, A>) => Fx<R, E, A> = Share.hold
|
|
1898
|
+
|
|
1899
|
+
/**
|
|
1900
|
+
* Effeciently share an underlying stream with multiple subscribers,
|
|
1901
|
+
* saving up to the most recent `n` events and emitting them to new subscribers.
|
|
1902
|
+
*
|
|
1903
|
+
* @since 1.18.0
|
|
1904
|
+
* @category sharing
|
|
1905
|
+
*/
|
|
1906
|
+
export const replay: {
|
|
1907
|
+
(capacity: number): <R, E, A>(fx: Fx<R, E, A>) => Fx<R, E, A>
|
|
1908
|
+
<R, E, A>(fx: Fx<R, E, A>, capacity: number): Fx<R, E, A>
|
|
1909
|
+
} = Share.replay
|
|
1910
|
+
|
|
1911
|
+
/**
|
|
1912
|
+
* Create an Fx which will wait a specified duration of time where no
|
|
1913
|
+
* events have occurred before emitting a value.
|
|
1914
|
+
* @since 1.18.0
|
|
1915
|
+
* @category time slicing
|
|
1916
|
+
*/
|
|
1917
|
+
export const debounce: {
|
|
1918
|
+
(delay: DurationInput): <R, E, A>(fx: Fx<R, E, A>) => Fx<R, E, A>
|
|
1919
|
+
<R, E, A>(fx: Fx<R, E, A>, delay: DurationInput): Fx<R, E, A>
|
|
1920
|
+
} = internal.debounce
|
|
1921
|
+
|
|
1922
|
+
/**
|
|
1923
|
+
* Create an Fx which will wait a specified duration of time before emitting
|
|
1924
|
+
* an event after the last event.
|
|
1925
|
+
* @since 1.18.0
|
|
1926
|
+
* @category time slicing
|
|
1927
|
+
*/
|
|
1928
|
+
export const throttle: {
|
|
1929
|
+
(delay: DurationInput): <R, E, A>(fx: Fx<R, E, A>) => Fx<R, E, A>
|
|
1930
|
+
<R, E, A>(fx: Fx<R, E, A>, delay: DurationInput): Fx<R, E, A>
|
|
1931
|
+
} = internal.throttle
|
|
1932
|
+
|
|
1933
|
+
/**
|
|
1934
|
+
* Create an Fx which will wait a specified duration of time where no
|
|
1935
|
+
* events have occurred before emitting a value.
|
|
1936
|
+
* @since 1.18.0
|
|
1937
|
+
* @category combinators
|
|
1938
|
+
*/
|
|
1939
|
+
export const delay: {
|
|
1940
|
+
(delay: DurationInput): <R, E, A>(fx: Fx<R, E, A>) => Fx<R, E, A>
|
|
1941
|
+
<R, E, A>(fx: Fx<R, E, A>, delay: DurationInput): Fx<R, E, A>
|
|
1942
|
+
} = internal.delay
|
|
1943
|
+
|
|
1944
|
+
/**
|
|
1945
|
+
* Run an Effect to produce an Fx to run.
|
|
1946
|
+
* @since 1.18.0
|
|
1947
|
+
* @category constructors
|
|
1948
|
+
*/
|
|
1949
|
+
export const fromFxEffect: <R, E, R2, E2, B>(fxEffect: Effect.Effect<R, E, Fx<R2, E2, B>>) => Fx<R | R2, E | E2, B> =
|
|
1950
|
+
internal.fromFxEffect
|
|
1951
|
+
|
|
1952
|
+
/**
|
|
1953
|
+
* Extract the context from an EffectGen
|
|
1954
|
+
* @since 1.18.0
|
|
1955
|
+
*/
|
|
1956
|
+
export type EffectGenContext<T> = [T] extends [never] ? never
|
|
1957
|
+
: [T] extends [Effect.EffectGen<infer R, any, any>] ? R
|
|
1958
|
+
: never
|
|
1959
|
+
|
|
1960
|
+
/**
|
|
1961
|
+
* Extract the error from an EffectGen
|
|
1962
|
+
* @since 1.18.0
|
|
1963
|
+
*/
|
|
1964
|
+
export type EffectGenError<T> = [T] extends [never] ? never
|
|
1965
|
+
: [T] extends [Effect.EffectGen<any, infer E, any>] ? E
|
|
1966
|
+
: never
|
|
1967
|
+
|
|
1968
|
+
/**
|
|
1969
|
+
* Extract the success value from an EffectGen
|
|
1970
|
+
* @since 1.18.0
|
|
1971
|
+
*/
|
|
1972
|
+
export type EffectGenSuccess<T> = [T] extends [never] ? never
|
|
1973
|
+
: [T] extends [Effect.EffectGen<any, any, infer A>] ? A
|
|
1974
|
+
: never
|
|
1975
|
+
|
|
1976
|
+
/**
|
|
1977
|
+
* Utilize Effect.gen to construct an Fx
|
|
1978
|
+
* @since 1.18.0
|
|
1979
|
+
* @category constructors
|
|
1980
|
+
*/
|
|
1981
|
+
export function gen<Yield extends Effect.EffectGen<any, any, any>, R, E, A>(
|
|
1982
|
+
f: (_: Effect.Adapter) => Generator<Yield, Fx<R, E, A>, any>
|
|
1983
|
+
): Fx<R | EffectGenContext<Yield>, E | EffectGenError<Yield>, A> {
|
|
1984
|
+
return fromFxEffect(Effect.gen(f))
|
|
1985
|
+
}
|
|
1986
|
+
|
|
1987
|
+
/**
|
|
1988
|
+
* Utilize Effect.gen to construct an Fx
|
|
1989
|
+
* @since 1.18.0
|
|
1990
|
+
* @category constructors
|
|
1991
|
+
*/
|
|
1992
|
+
export function genScoped<Yield extends Effect.EffectGen<any, any, any>, R, E, A>(
|
|
1993
|
+
f: (_: Effect.Adapter) => Generator<Yield, Fx<R, E, A>, any>
|
|
1994
|
+
): Fx<Exclude<R | EffectGenContext<Yield>, Scope.Scope>, E | EffectGenError<Yield>, A> {
|
|
1995
|
+
return scoped(fromFxEffect(Effect.gen(f)))
|
|
1996
|
+
}
|
|
1997
|
+
|
|
1998
|
+
/**
|
|
1999
|
+
* Run an Effect when an Fx exits
|
|
2000
|
+
* @since 1.18.0
|
|
2001
|
+
* @category lifecycles
|
|
2002
|
+
*/
|
|
2003
|
+
export const onExit: {
|
|
2004
|
+
<R2>(
|
|
2005
|
+
f: (exit: Exit.Exit<never, unknown>) => Effect.Effect<R2, never, unknown>
|
|
2006
|
+
): <R, E, A>(fx: Fx<R, E, A>) => Fx<R | R2, E, A>
|
|
2007
|
+
<R, E, A, R2>(
|
|
2008
|
+
fx: Fx<R, E, A>,
|
|
2009
|
+
f: (exit: Exit.Exit<never, unknown>) => Effect.Effect<R2, never, unknown>
|
|
2010
|
+
): Fx<R | R2, E, A>
|
|
2011
|
+
} = internal.onExit
|
|
2012
|
+
|
|
2013
|
+
/**
|
|
2014
|
+
* Run an Effect when an Fx is interrupted
|
|
2015
|
+
* @since 1.18.0
|
|
2016
|
+
* @category lifecycles
|
|
2017
|
+
*/
|
|
2018
|
+
export const onInterrupt: {
|
|
2019
|
+
<R2>(
|
|
2020
|
+
f: (interruptors: HashSet.HashSet<FiberId.FiberId>) => Effect.Effect<R2, never, unknown>
|
|
2021
|
+
): <R, E, A>(fx: Fx<R, E, A>) => Fx<R | R2, E, A>
|
|
2022
|
+
<R, E, A, R2>(
|
|
2023
|
+
fx: Fx<R, E, A>,
|
|
2024
|
+
f: (interruptors: HashSet.HashSet<FiberId.FiberId>) => Effect.Effect<R2, never, unknown>
|
|
2025
|
+
): Fx<R | R2, E, A>
|
|
2026
|
+
} = internal.onInterrupt
|
|
2027
|
+
|
|
2028
|
+
/**
|
|
2029
|
+
* Run an Effect when an Fx ends with an error
|
|
2030
|
+
* @since 1.18.0
|
|
2031
|
+
* @category lifecycles
|
|
2032
|
+
*/
|
|
2033
|
+
export const onError: {
|
|
2034
|
+
<R2>(
|
|
2035
|
+
f: (cause: Cause.Cause<never>) => Effect.Effect<R2, never, unknown>
|
|
2036
|
+
): <R, E, A>(fx: Fx<R, E, A>) => Fx<R | R2, E, A>
|
|
2037
|
+
<R, E, A, R2>(
|
|
2038
|
+
fx: Fx<R, E, A>,
|
|
2039
|
+
f: (cause: Cause.Cause<never>) => Effect.Effect<R2, never, unknown>
|
|
2040
|
+
): Fx<R | R2, E, A>
|
|
2041
|
+
} = internal.onError
|
|
2042
|
+
|
|
2043
|
+
/**
|
|
2044
|
+
* Provide a Scope to an Fx
|
|
2045
|
+
* @since 1.18.0
|
|
2046
|
+
* @category context
|
|
2047
|
+
*/
|
|
2048
|
+
export const scoped: <R, E, A>(fx: Fx<R, E, A>) => Fx<Exclude<R, Scope.Scope>, E, A> = internal.scoped
|
|
2049
|
+
|
|
2050
|
+
/**
|
|
2051
|
+
* Annotate the logs of an Fx
|
|
2052
|
+
* @since 1.18.0
|
|
2053
|
+
* @category combinators
|
|
2054
|
+
*/
|
|
2055
|
+
export const annotateLogs: {
|
|
2056
|
+
(key: string, value: unknown): <R, E, A>(fx: Fx<R, E, A>) => Fx<R, E, A>
|
|
2057
|
+
(values: Record<string, unknown>): <R, E, A>(fx: Fx<R, E, A>) => Fx<R, E, A>
|
|
2058
|
+
<R, E, A>(fx: Fx<R, E, A>, key: string, value: unknown): Fx<R, E, A>
|
|
2059
|
+
<R, E, A>(fx: Fx<R, E, A>, values: Record<string, unknown>): Fx<R, E, A>
|
|
2060
|
+
} = internal.annotateLogs
|
|
2061
|
+
|
|
2062
|
+
/**
|
|
2063
|
+
* Annotate the spans of an Fx
|
|
2064
|
+
* @since 1.18.0
|
|
2065
|
+
* @category combinators
|
|
2066
|
+
*/
|
|
2067
|
+
export const annotateSpans: {
|
|
2068
|
+
(key: string, value: unknown): <R, E, A>(fx: Fx<R, E, A>) => Fx<R, E, A>
|
|
2069
|
+
(values: Record<string, unknown>): <R, E, A>(fx: Fx<R, E, A>) => Fx<R, E, A>
|
|
2070
|
+
<R, E, A>(fx: Fx<R, E, A>, key: string, value: unknown): Fx<R, E, A>
|
|
2071
|
+
<R, E, A>(fx: Fx<R, E, A>, values: Record<string, unknown>): Fx<R, E, A>
|
|
2072
|
+
} = internal.annotateSpans
|
|
2073
|
+
|
|
2074
|
+
/**
|
|
2075
|
+
* Create an Fx which will succeed with Option.None
|
|
2076
|
+
* @since 1.18.0
|
|
2077
|
+
* @category constructors
|
|
2078
|
+
*/
|
|
2079
|
+
export const succeedNone: <A = never>() => Fx<never, never, Option.Option<A>> = internal.succeedNone
|
|
2080
|
+
|
|
2081
|
+
/**
|
|
2082
|
+
* Create an Fx which will succeed with Option.Some
|
|
2083
|
+
* @since 1.18.0
|
|
2084
|
+
* @category constructors
|
|
2085
|
+
*/
|
|
2086
|
+
export const succeedSome: <A>(value: A) => Fx<never, never, Option.Option<A>> = internal.succeedSome
|
|
2087
|
+
|
|
2088
|
+
/**
|
|
2089
|
+
* Do simulation
|
|
2090
|
+
* @since 1.18.0
|
|
2091
|
+
* @category Do
|
|
2092
|
+
*/
|
|
2093
|
+
export const Do: Fx<never, never, {}> = internal.Do
|
|
2094
|
+
|
|
2095
|
+
/**
|
|
2096
|
+
* Do simulation
|
|
2097
|
+
* @since 1.18.0
|
|
2098
|
+
* @category Do
|
|
2099
|
+
*/
|
|
2100
|
+
export const bind: {
|
|
2101
|
+
<N extends string, A extends object, R2, E2, B>(
|
|
2102
|
+
name: Exclude<N, keyof A>,
|
|
2103
|
+
f: (a: A) => Fx<R2, E2, B>
|
|
2104
|
+
): <R1, E1>(self: Fx<R1, E1, A>) => Fx<R2 | R1, E2 | E1, { [K in N | keyof A]: K extends keyof A ? A[K] : B }>
|
|
2105
|
+
<R1, E1, A1 extends object, N extends string, R2, E2, B>(
|
|
2106
|
+
self: Fx<R1, E1, A1>,
|
|
2107
|
+
name: Exclude<N, keyof A1>,
|
|
2108
|
+
f: (a: A1) => Fx<R2, E2, B>
|
|
2109
|
+
): Fx<R1 | R2, E1 | E2, { [K in N | keyof A1]: K extends keyof A1 ? A1[K] : B }>
|
|
2110
|
+
} = internal.bind
|
|
2111
|
+
|
|
2112
|
+
/**
|
|
2113
|
+
* Do simulation
|
|
2114
|
+
* @since 1.18.0
|
|
2115
|
+
* @category Do
|
|
2116
|
+
*/
|
|
2117
|
+
export const bindTo: {
|
|
2118
|
+
<N extends string>(name: N): <R, E, A>(self: Fx<R, E, A>) => Fx<R, E, { [K in N]: A }>
|
|
2119
|
+
<R, E, A, N extends string>(self: Fx<R, E, A>, name: N): Fx<R, E, { [K_1 in N]: A }>
|
|
2120
|
+
} = internal.bindTo
|
|
2121
|
+
|
|
2122
|
+
const let_: {
|
|
2123
|
+
<N extends string, A extends object, B>(
|
|
2124
|
+
name: Exclude<N, keyof A>,
|
|
2125
|
+
f: (a: A) => B
|
|
2126
|
+
): <R1, E1>(self: Fx<R1, E1, A>) => Fx<R1, E1, { [K in N | keyof A]: K extends keyof A ? A[K] : B }>
|
|
2127
|
+
<R1, E1, A1 extends object, N extends string, B>(
|
|
2128
|
+
self: Fx<R1, E1, A1>,
|
|
2129
|
+
name: Exclude<N, keyof A1>,
|
|
2130
|
+
f: (a: A1) => B
|
|
2131
|
+
): Fx<R1, E1, { [K in N | keyof A1]: K extends keyof A1 ? A1[K] : B }>
|
|
2132
|
+
} = internal.let
|
|
2133
|
+
|
|
2134
|
+
export {
|
|
2135
|
+
/**
|
|
2136
|
+
* Do simulation
|
|
2137
|
+
* @since 1.18.0
|
|
2138
|
+
* @category Do
|
|
2139
|
+
*/
|
|
2140
|
+
let_ as let
|
|
62
2141
|
}
|
|
63
2142
|
|
|
64
|
-
|
|
65
|
-
|
|
2143
|
+
/**
|
|
2144
|
+
* Ensure a finalizer runs on Fx ext.
|
|
2145
|
+
* @since 1.18.0
|
|
2146
|
+
* @category combinators
|
|
2147
|
+
*/
|
|
2148
|
+
export const ensuring: {
|
|
2149
|
+
<R2>(finalizer: Effect.Effect<R2, never, unknown>): <R, E, A>(self: Fx<R, E, A>) => Fx<R2 | R, E, A>
|
|
2150
|
+
<R, E, A, R2>(self: Fx<R, E, A>, finalizer: Effect.Effect<R2, never, unknown>): Fx<R | R2, E, A>
|
|
2151
|
+
} = internal.ensuring
|
|
2152
|
+
|
|
2153
|
+
/**
|
|
2154
|
+
* Capture the errors and success values as Exit
|
|
2155
|
+
* @since 1.18.0
|
|
2156
|
+
* @category combinators
|
|
2157
|
+
*/
|
|
2158
|
+
export const exit: <R, E, A>(fx: Fx<R, E, A>) => Fx<R, never, Exit.Exit<E, A>> = internal.exit
|
|
2159
|
+
|
|
2160
|
+
/**
|
|
2161
|
+
* Capture the errors and success values as Either
|
|
2162
|
+
* @since 1.18.0
|
|
2163
|
+
* @category combinators
|
|
2164
|
+
*/
|
|
2165
|
+
export const either: <R, E, A>(fx: Fx<R, E, A>) => Fx<R, never, Either.Either<E, A>> = internal.either
|
|
2166
|
+
|
|
2167
|
+
/**
|
|
2168
|
+
* Run an Fx until finding a value which satisfies the predicate.
|
|
2169
|
+
* @since 1.18.0
|
|
2170
|
+
* @category running
|
|
2171
|
+
*/
|
|
2172
|
+
export const findFirst: {
|
|
2173
|
+
<A, R2, E2>(
|
|
2174
|
+
f: (a: A) => Effect.Effect<R2, E2, boolean>
|
|
2175
|
+
): <R, E>(fx: Fx<R, E, A>) => Effect.Effect<R2 | R, E2 | E, Option.Option<A>>
|
|
2176
|
+
<R, E, A, R2, E2>(
|
|
2177
|
+
fx: Fx<R, E, A>,
|
|
2178
|
+
f: (a: A) => Effect.Effect<R2, E2, boolean>
|
|
2179
|
+
): Effect.Effect<R | R2, E | E2, Option.Option<A>>
|
|
2180
|
+
} = internal.findFirst
|
|
2181
|
+
|
|
2182
|
+
/**
|
|
2183
|
+
* Grab the first value emitted by an Fx
|
|
2184
|
+
* @since 1.18.0
|
|
2185
|
+
* @category running
|
|
2186
|
+
*/
|
|
2187
|
+
export const first: <R, E, A>(fx: Fx<R, E, A>) => Effect.Effect<R, E, Option.Option<A>> = findFirst(
|
|
2188
|
+
constant(Effect.succeed(true))
|
|
2189
|
+
)
|
|
2190
|
+
|
|
2191
|
+
/**
|
|
2192
|
+
* Transform success values into failures and failures into successes.
|
|
2193
|
+
* @since 1.18.0
|
|
2194
|
+
* @category combinators
|
|
2195
|
+
*/
|
|
2196
|
+
export const flip: <R, E, A>(fx: Fx<R, E, A>) => Fx<R, A, E> = internal.flip
|
|
2197
|
+
|
|
2198
|
+
/**
|
|
2199
|
+
* Lift a nullable value into an Fx
|
|
2200
|
+
* @since 1.18.0
|
|
2201
|
+
* @category constructors
|
|
2202
|
+
*/
|
|
2203
|
+
export const fromNullable: <A>(value: void | A | null | undefined) => Fx<never, never, NonNullable<A>> =
|
|
2204
|
+
internal.fromNullable
|
|
2205
|
+
|
|
2206
|
+
const if_: {
|
|
2207
|
+
<R2, E2, B, R3, E3, C>(
|
|
2208
|
+
onTrue: Fx<R2, E2, B>,
|
|
2209
|
+
onFalse: Fx<R3, E3, C>
|
|
2210
|
+
): {
|
|
2211
|
+
<R, E>(bool: Fx<R, E, boolean>): Fx<R2 | R3 | R, E2 | E3 | E, B | C>
|
|
2212
|
+
(bool: boolean): Fx<R2 | R3, E2 | E3, B | C>
|
|
2213
|
+
}
|
|
2214
|
+
<R, E, R2, E2, B, R3, E3, C>(
|
|
2215
|
+
bool: Fx<R, E, boolean>,
|
|
2216
|
+
onTrue: Fx<R2, E2, B>,
|
|
2217
|
+
onFalse: Fx<R3, E3, C>
|
|
2218
|
+
): Fx<R | R2 | R3, E | E2 | E3, B | C>
|
|
2219
|
+
<R2, E2, B, R3, E3, C>(
|
|
2220
|
+
bool: boolean,
|
|
2221
|
+
onTrue: Fx<R2, E2, B>,
|
|
2222
|
+
onFalse: Fx<R3, E3, C>
|
|
2223
|
+
): Fx<R2 | R3, E2 | E3, B | C>
|
|
2224
|
+
} = internal.if
|
|
2225
|
+
|
|
2226
|
+
export {
|
|
2227
|
+
/**
|
|
2228
|
+
* Logical if/else using Fx.
|
|
2229
|
+
* @since 1.18.0
|
|
2230
|
+
* @category combinators
|
|
2231
|
+
*/
|
|
2232
|
+
if_ as if
|
|
66
2233
|
}
|
|
67
2234
|
|
|
68
|
-
|
|
2235
|
+
/**
|
|
2236
|
+
* Logical if/else using static values.
|
|
2237
|
+
* @since 1.18.0
|
|
2238
|
+
* @category combinators
|
|
2239
|
+
*/
|
|
2240
|
+
export const when: {
|
|
2241
|
+
<B, C>(
|
|
2242
|
+
onTrue: B,
|
|
2243
|
+
onFalse: C
|
|
2244
|
+
): { <R, E>(bool: Fx<R, E, boolean>): Fx<R, E, B | C>; (bool: boolean): Fx<never, never, B | C> }
|
|
2245
|
+
<R, E, B, C>(bool: Fx<R, E, boolean>, onTrue: B, onFalse: C): Fx<R, E, B | C>
|
|
2246
|
+
<B, C>(bool: boolean, onTrue: B, onFalse: C): Fx<never, never, B | C>
|
|
2247
|
+
} = internal.when
|
|
2248
|
+
|
|
2249
|
+
/**
|
|
2250
|
+
* Mark an Fx as interruptible
|
|
2251
|
+
* @since 1.18.0
|
|
2252
|
+
* @category combinators
|
|
2253
|
+
*/
|
|
2254
|
+
export const interruptible: <R, E, A>(fx: Fx<R, E, A>) => Fx<R, E, A> = internal.interruptible
|
|
2255
|
+
|
|
2256
|
+
/**
|
|
2257
|
+
* Mark an Fx as uninterruptible
|
|
2258
|
+
* @since 1.18.0
|
|
2259
|
+
* @category combinators
|
|
2260
|
+
*/
|
|
2261
|
+
export const uninterruptible: <R, E, A>(fx: Fx<R, E, A>) => Fx<R, E, A> = internal.uninterruptible
|
|
2262
|
+
|
|
2263
|
+
/**
|
|
2264
|
+
* Locally set the value of a FiberRef
|
|
2265
|
+
* @since 1.18.0
|
|
2266
|
+
* @category FiberRef
|
|
2267
|
+
*/
|
|
2268
|
+
export const locally: {
|
|
2269
|
+
<A>(self: FiberRef<A>, value: A): <R, E, B>(use: Fx<R, E, B>) => Fx<R, E, B>
|
|
2270
|
+
<R, E, B, A>(use: Fx<R, E, B>, self: FiberRef<A>, value: A): Fx<R, E, B>
|
|
2271
|
+
} = internal.locally
|
|
2272
|
+
|
|
2273
|
+
/**
|
|
2274
|
+
* Locally set the value of a FiberRef by updating the current value
|
|
2275
|
+
* @since 1.18.0
|
|
2276
|
+
* @category FiberRef
|
|
2277
|
+
*/
|
|
2278
|
+
export const locallyWith: {
|
|
2279
|
+
<A>(self: FiberRef<A>, f: (a: A) => A): <R, E, B>(use: Fx<R, E, B>) => Fx<R, E, B>
|
|
2280
|
+
<R, E, B, A>(use: Fx<R, E, B>, self: FiberRef<A>, f: (a: A) => A): Fx<R, E, B>
|
|
2281
|
+
} = internal.locallyWith
|
|
2282
|
+
|
|
2283
|
+
/**
|
|
2284
|
+
* Enable/disable tracer timing for an Fx
|
|
2285
|
+
* @since 1.18.0
|
|
2286
|
+
* @category tracing
|
|
2287
|
+
*/
|
|
2288
|
+
export const withTracerTiming: {
|
|
2289
|
+
(enabled: boolean): <R, E, A>(fx: Fx<R, E, A>) => Fx<R, E, A>
|
|
2290
|
+
<R, E, A>(fx: Fx<R, E, A>, enabled: boolean): Fx<R, E, A>
|
|
2291
|
+
} = internal.withTracerTiming
|
|
2292
|
+
|
|
2293
|
+
/**
|
|
2294
|
+
* Configure the concurreny limit of Fibers running within an Fx
|
|
2295
|
+
* @since 1.18.0
|
|
2296
|
+
* @category concurrency
|
|
2297
|
+
*/
|
|
2298
|
+
export const withConcurrency: {
|
|
2299
|
+
(concurrency: number | "unbounded"): <R, E, A>(fx: Fx<R, E, A>) => Fx<R, E, A>
|
|
2300
|
+
<R, E, A>(fx: Fx<R, E, A>, concurrency: number | "unbounded"): Fx<R, E, A>
|
|
2301
|
+
} = internal.withConcurrency
|
|
2302
|
+
|
|
2303
|
+
/**
|
|
2304
|
+
* Add a span to your log messages
|
|
2305
|
+
* @since 1.18.0
|
|
2306
|
+
* @category logging
|
|
2307
|
+
*/
|
|
2308
|
+
export const withLogSpan: {
|
|
2309
|
+
(span: string): <R, E, A>(fx: Fx<R, E, A>) => Fx<R, E, A>
|
|
2310
|
+
<R, E, A>(fx: Fx<R, E, A>, span: string): Fx<R, E, A>
|
|
2311
|
+
} = internal.withLogSpan
|
|
2312
|
+
|
|
2313
|
+
/**
|
|
2314
|
+
* Configure the maximum number of operations to run before yielding to the runtime
|
|
2315
|
+
* @since 1.18.0
|
|
2316
|
+
* @category concurrency
|
|
2317
|
+
*/
|
|
2318
|
+
export const withMaxOpsBeforeYield: {
|
|
2319
|
+
(maxOps: number): <R, E, A>(fx: Fx<R, E, A>) => Fx<R, E, A>
|
|
2320
|
+
<R, E, A>(fx: Fx<R, E, A>, maxOps: number): Fx<R, E, A>
|
|
2321
|
+
} = internal.withMaxOpsBeforeYield
|
|
2322
|
+
|
|
2323
|
+
/**
|
|
2324
|
+
* Set the parent Span of an Fx
|
|
2325
|
+
* @since 1.18.0
|
|
2326
|
+
* @category tracing
|
|
2327
|
+
*/
|
|
2328
|
+
export const withParentSpan: {
|
|
2329
|
+
(parentSpan: Tracer.ParentSpan): <R, E, A>(fx: Fx<R, E, A>) => Fx<R, E, A>
|
|
2330
|
+
<R, E, A>(fx: Fx<R, E, A>, parentSpan: Tracer.ParentSpan): Fx<R, E, A>
|
|
2331
|
+
} = internal.withParentSpan
|
|
2332
|
+
|
|
2333
|
+
/**
|
|
2334
|
+
* Enable/disable request batching within an Fx
|
|
2335
|
+
* @since 1.18.0
|
|
2336
|
+
* @category batching
|
|
2337
|
+
*/
|
|
2338
|
+
export const withRequestBatching: {
|
|
2339
|
+
(requestBatching: boolean): <R, E, A>(fx: Fx<R, E, A>) => Fx<R, E, A>
|
|
2340
|
+
<R, E, A>(fx: Fx<R, E, A>, requestBatching: boolean): Fx<R, E, A>
|
|
2341
|
+
} = internal.withRequestBatching
|
|
2342
|
+
|
|
2343
|
+
/**
|
|
2344
|
+
* Set the request cache Effects running within an Fx
|
|
2345
|
+
* @since 1.18.0
|
|
2346
|
+
* @category batching
|
|
2347
|
+
*/
|
|
2348
|
+
export const withRequestCache: {
|
|
2349
|
+
(cache: Request.Cache): <R, E, A>(fx: Fx<R, E, A>) => Fx<R, E, A>
|
|
2350
|
+
<R, E, A>(fx: Fx<R, E, A>, cache: Request.Cache): Fx<R, E, A>
|
|
2351
|
+
} = internal.withRequestCache
|
|
2352
|
+
|
|
2353
|
+
/**
|
|
2354
|
+
* Enable/disable request caching within an Fx
|
|
2355
|
+
* @since 1.18.0
|
|
2356
|
+
* @category batching
|
|
2357
|
+
*/
|
|
2358
|
+
export const withRequestCaching: {
|
|
2359
|
+
(requestCaching: boolean): <R, E, A>(fx: Fx<R, E, A>) => Fx<R, E, A>
|
|
2360
|
+
<R, E, A>(fx: Fx<R, E, A>, requestCaching: boolean): Fx<R, E, A>
|
|
2361
|
+
} = internal.withRequestCaching
|
|
2362
|
+
|
|
2363
|
+
/**
|
|
2364
|
+
* Configure the scheduler to use within an Fx
|
|
2365
|
+
* @since 1.18.0
|
|
2366
|
+
* @category concurrency
|
|
2367
|
+
*/
|
|
2368
|
+
export const withScheduler: {
|
|
2369
|
+
(scheduler: Scheduler): <R, E, A>(fx: Fx<R, E, A>) => Fx<R, E, A>
|
|
2370
|
+
<R, E, A>(fx: Fx<R, E, A>, scheduler: Scheduler): Fx<R, E, A>
|
|
2371
|
+
} = internal.withScheduler
|
|
2372
|
+
|
|
2373
|
+
/**
|
|
2374
|
+
* Set the span of an Fx
|
|
2375
|
+
* @since 1.18.0
|
|
2376
|
+
* @category tracing
|
|
2377
|
+
*/
|
|
2378
|
+
export const withSpan: {
|
|
2379
|
+
(
|
|
2380
|
+
name: string,
|
|
2381
|
+
options?: {
|
|
2382
|
+
readonly attributes?: Record<string, unknown>
|
|
2383
|
+
readonly links?: ReadonlyArray<Tracer.SpanLink>
|
|
2384
|
+
readonly parent?: Tracer.ParentSpan
|
|
2385
|
+
readonly root?: boolean
|
|
2386
|
+
readonly context?: Context.Context<never>
|
|
2387
|
+
}
|
|
2388
|
+
): <R, E, A>(self: Fx<R, E, A>) => Fx<R, E, A>
|
|
2389
|
+
<R, E, A>(
|
|
2390
|
+
self: Fx<R, E, A>,
|
|
2391
|
+
name: string,
|
|
2392
|
+
options?: {
|
|
2393
|
+
readonly attributes?: Record<string, unknown>
|
|
2394
|
+
readonly links?: ReadonlyArray<Tracer.SpanLink>
|
|
2395
|
+
readonly parent?: Tracer.ParentSpan
|
|
2396
|
+
readonly root?: boolean
|
|
2397
|
+
readonly context?: Context.Context<never>
|
|
2398
|
+
}
|
|
2399
|
+
): Fx<R, E, A>
|
|
2400
|
+
} = internal.withSpan
|
|
2401
|
+
|
|
2402
|
+
/**
|
|
2403
|
+
* Set the tracer used within an Fx
|
|
2404
|
+
* @since 1.18.0
|
|
2405
|
+
* @category tracing
|
|
2406
|
+
*/
|
|
2407
|
+
export const withTracer: {
|
|
2408
|
+
(tracer: Tracer.Tracer): <R, E, A>(fx: Fx<R, E, A>) => Fx<R, E, A>
|
|
2409
|
+
<R, E, A>(fx: Fx<R, E, A>, tracer: Tracer.Tracer): Fx<R, E, A>
|
|
2410
|
+
} = internal.withTracer
|
|
2411
|
+
|
|
2412
|
+
/**
|
|
2413
|
+
* Partition an Fx into two Fx's based on a either-returning function.
|
|
2414
|
+
* @since 1.18.0
|
|
2415
|
+
* @category combinators
|
|
2416
|
+
*/
|
|
2417
|
+
export const partitionMap: {
|
|
2418
|
+
<A, B, C>(f: (a: A) => Either.Either<B, C>): <R, E>(self: Fx<R, E, A>) => readonly [Fx<R, E, B>, Fx<R, E, C>]
|
|
2419
|
+
<R, E, A, B, C>(self: Fx<R, E, A>, f: (a: A) => Either.Either<B, C>): readonly [Fx<R, E, B>, Fx<R, E, C>]
|
|
2420
|
+
} = internal.partitionMap
|
|
2421
|
+
|
|
2422
|
+
/**
|
|
2423
|
+
* Convert a list of keyed values into persistent workflows for given each key of the list
|
|
2424
|
+
* even when the list has been re-ordered.
|
|
2425
|
+
*
|
|
2426
|
+
* @since 1.18.0
|
|
2427
|
+
* @category combinators
|
|
2428
|
+
*/
|
|
2429
|
+
export const keyed: {
|
|
2430
|
+
<A, B, R2, E2, C>(
|
|
2431
|
+
getKey: (a: A) => B,
|
|
2432
|
+
f: (
|
|
2433
|
+
ref: RefSubject<never, never, A>,
|
|
2434
|
+
key: B
|
|
2435
|
+
) => FxInput<R2, E2, C>
|
|
2436
|
+
): <R, E>(fx: Fx<R, E, ReadonlyArray<A>>) => Fx<R | R2, E | E2, ReadonlyArray<C>>
|
|
2437
|
+
|
|
2438
|
+
<R, E, A, B, R2, E2, C>(
|
|
2439
|
+
fx: Fx<R, E, ReadonlyArray<A>>,
|
|
2440
|
+
getKey: (a: A) => B,
|
|
2441
|
+
f: (
|
|
2442
|
+
ref: RefSubject<never, never, A>,
|
|
2443
|
+
key: B
|
|
2444
|
+
) => FxInput<R2, E2, C>
|
|
2445
|
+
): Fx<R | R2, E | E2, ReadonlyArray<C>>
|
|
2446
|
+
} = dual(3, internalKeyed.keyed)
|
|
2447
|
+
|
|
2448
|
+
/**
|
|
2449
|
+
* Map an Fx of values into workflows similar to Fx.switchMap, but
|
|
2450
|
+
* instead of providing the value directly, it is exposed as a RefSubject to
|
|
2451
|
+
* allow creating a persistent workflows similar to Fx.keyed but for a single value.
|
|
2452
|
+
*
|
|
2453
|
+
* @since 1.18.0
|
|
2454
|
+
* @category combinators
|
|
2455
|
+
*/
|
|
2456
|
+
export const withKey: {
|
|
2457
|
+
<A, B, R2, E2, C>(
|
|
2458
|
+
getKey: (a: A) => B,
|
|
2459
|
+
f: (
|
|
2460
|
+
ref: RefSubject<never, never, A>,
|
|
2461
|
+
key: B
|
|
2462
|
+
) => FxInput<R2, E2, C>
|
|
2463
|
+
): <R, E>(fx: Fx<R, E, A>) => Fx<R | R2, E | E2, C>
|
|
2464
|
+
|
|
2465
|
+
<R, E, A, B, R2, E2, C>(
|
|
2466
|
+
fx: Fx<R, E, A>,
|
|
2467
|
+
getKey: (a: A) => B,
|
|
2468
|
+
f: (
|
|
2469
|
+
ref: RefSubject<never, never, A>,
|
|
2470
|
+
key: B
|
|
2471
|
+
) => FxInput<R2, E2, C>
|
|
2472
|
+
): Fx<R | R2, E | E2, C>
|
|
2473
|
+
} = dual(3, internalWithKey.withKey)
|
|
2474
|
+
|
|
2475
|
+
const getTag = (a: { readonly _tag: string }): string => a._tag
|
|
2476
|
+
|
|
2477
|
+
/**
|
|
2478
|
+
* Match over a tagged union of values into a set of persistent workflows
|
|
2479
|
+
* that allow listening to changes of values with the same tag using the same
|
|
2480
|
+
* Fx.
|
|
2481
|
+
*
|
|
2482
|
+
* @since 1.18.0
|
|
2483
|
+
* @category combinators
|
|
2484
|
+
*/
|
|
2485
|
+
export const matchTags: {
|
|
2486
|
+
<A extends { readonly _tag: string }, Matchers extends DefaultMatchersFrom<A>>(
|
|
2487
|
+
matchers: Matchers
|
|
2488
|
+
): <R, E>(fx: Fx<R, E, A>) => Fx<
|
|
2489
|
+
R | Fx.Context<Fx.FromInput<ReturnType<Matchers[keyof Matchers]>>>,
|
|
2490
|
+
E | Fx.Error<Fx.FromInput<ReturnType<Matchers[keyof Matchers]>>>,
|
|
2491
|
+
Fx.Success<Fx.FromInput<ReturnType<Matchers[keyof Matchers]>>>
|
|
2492
|
+
>
|
|
2493
|
+
|
|
2494
|
+
<R, E, A extends { readonly _tag: string }, Matchers extends DefaultMatchersFrom<A>>(
|
|
2495
|
+
fx: Fx<R, E, A>,
|
|
2496
|
+
matchers: Matchers
|
|
2497
|
+
): Fx<
|
|
2498
|
+
R | Fx.Context<Fx.FromInput<ReturnType<Matchers[keyof Matchers]>>>,
|
|
2499
|
+
E | Fx.Error<Fx.FromInput<ReturnType<Matchers[keyof Matchers]>>>,
|
|
2500
|
+
Fx.Success<Fx.FromInput<ReturnType<Matchers[keyof Matchers]>>>
|
|
2501
|
+
>
|
|
2502
|
+
} = dual(
|
|
2503
|
+
2,
|
|
2504
|
+
function matchTags<R, E, A extends { readonly _tag: string }, Matchers extends DefaultMatchersFrom<A>>(
|
|
2505
|
+
fx: Fx<R, E, A>,
|
|
2506
|
+
matchers: Matchers
|
|
2507
|
+
): Fx<
|
|
2508
|
+
R | Fx.Context<Fx.FromInput<ReturnType<Matchers[keyof Matchers]>>>,
|
|
2509
|
+
E | Fx.Error<Fx.FromInput<ReturnType<Matchers[keyof Matchers]>>>,
|
|
2510
|
+
Fx.Success<Fx.FromInput<ReturnType<Matchers[keyof Matchers]>>>
|
|
2511
|
+
> {
|
|
2512
|
+
return withKey(fx, getTag, (ref, tag: A["_tag"]) => matchers[tag](ref as any))
|
|
2513
|
+
}
|
|
2514
|
+
)
|
|
2515
|
+
|
|
2516
|
+
/**
|
|
2517
|
+
* @since 1.18.0
|
|
2518
|
+
*/
|
|
2519
|
+
export type DefaultMatchersFrom<A extends { readonly _tag: string }> = {
|
|
2520
|
+
readonly [Tag in A["_tag"]]: (
|
|
2521
|
+
value: RefSubject<never, never, Extract<A, { readonly _tag: Tag }>>
|
|
2522
|
+
) => FxInput<any, any, any>
|
|
2523
|
+
}
|
|
2524
|
+
|
|
2525
|
+
/**
|
|
2526
|
+
* @since 1.18.0
|
|
2527
|
+
*/
|
|
2528
|
+
export const drainLayer: <FXS extends ReadonlyArray<Fx<any, never, any>>>(...fxs: FXS) => Layer.Layer<
|
|
2529
|
+
Exclude<Fx.Context<FXS[number]>, Scope.Scope>,
|
|
2530
|
+
never,
|
|
2531
|
+
never
|
|
2532
|
+
> = internal.drainLayer
|
|
2533
|
+
|
|
2534
|
+
/* #endregion */
|
|
2535
|
+
|
|
2536
|
+
/**
|
|
2537
|
+
* @since 1.18.0
|
|
2538
|
+
*/
|
|
2539
|
+
export function isFx<R = unknown, E = unknown, A = unknown>(u: unknown): u is Fx<R, E, A> {
|
|
2540
|
+
return typeof u === "object" && u !== null && TypeId in u
|
|
2541
|
+
}
|
|
2542
|
+
|
|
2543
|
+
/**
|
|
2544
|
+
* @since 1.18.0
|
|
2545
|
+
*/
|
|
2546
|
+
export const matchOption: {
|
|
2547
|
+
<A, R2 = never, E2 = never, B = never, R3 = never, E3 = never, C = never>(
|
|
2548
|
+
onNone: () => FxInput<R2, E2, B>,
|
|
2549
|
+
onSome: (a: RefSubject<never, never, A>) => FxInput<R3, E3, C>
|
|
2550
|
+
): <R, E>(fx: Fx<R, E, Option.Option<A>>) => Fx<R | R2, E | E2, B | C>
|
|
2551
|
+
|
|
2552
|
+
<R, E, A, R2 = never, E2 = never, B = never, R3 = never, E3 = never, C = never>(
|
|
2553
|
+
fx: Fx<R, E, Option.Option<A>>,
|
|
2554
|
+
onNone: () => FxInput<R2, E2, B>,
|
|
2555
|
+
onSome: (a: RefSubject<never, never, A>) => FxInput<R3, E3, C>
|
|
2556
|
+
): Fx<R | R2, E | E2, B | C>
|
|
2557
|
+
} = dual(
|
|
2558
|
+
3,
|
|
2559
|
+
function matchOption<R, E, A, R2 = never, E2 = never, B = never, R3 = never, E3 = never, C = never>(
|
|
2560
|
+
fx: Fx<R, E, Option.Option<A>>,
|
|
2561
|
+
onNone: () => FxInput<R2, E2, B>,
|
|
2562
|
+
onSome: (a: RefSubject<never, never, A>) => FxInput<R3, E3, C>
|
|
2563
|
+
): Fx<R | R2, E | E2, B | C> {
|
|
2564
|
+
return matchTags(fx, {
|
|
2565
|
+
None: onNone,
|
|
2566
|
+
Some: (some) => onSome(transform(some, (s) => s.value, (value) => Option.some(value) as Option.Some<A>))
|
|
2567
|
+
})
|
|
2568
|
+
}
|
|
2569
|
+
)
|
|
2570
|
+
|
|
2571
|
+
/**
|
|
2572
|
+
* @since 1.18.0
|
|
2573
|
+
*/
|
|
2574
|
+
export const getOrElse: {
|
|
2575
|
+
<A, R2 = never, E2 = never, B = never>(
|
|
2576
|
+
orElse: () => FxInput<R2, E2, B>
|
|
2577
|
+
): <R, E>(fx: Fx<R, E, Option.Option<A>>) => Fx<R | R2, E | E2, A | B>
|
|
2578
|
+
|
|
2579
|
+
<R, E, A, R2 = never, E2 = never, B = never>(
|
|
2580
|
+
fx: Fx<R, E, Option.Option<A>>,
|
|
2581
|
+
orElse: () => FxInput<R2, E2, B>
|
|
2582
|
+
): Fx<R | R2, E | E2, A | B>
|
|
2583
|
+
} = dual(
|
|
2584
|
+
2,
|
|
2585
|
+
function getOrElse<R, E, A, R2 = never, E2 = never, B = never>(
|
|
2586
|
+
fx: Fx<R, E, Option.Option<A>>,
|
|
2587
|
+
orElse: () => FxInput<R2, E2, B>
|
|
2588
|
+
): Fx<R | R2, E | E2, A | B> {
|
|
2589
|
+
return matchOption(fx, orElse, identity)
|
|
2590
|
+
}
|
|
2591
|
+
)
|
|
2592
|
+
|
|
2593
|
+
/**
|
|
2594
|
+
* @since 1.18.0
|
|
2595
|
+
*/
|
|
2596
|
+
export const matchEither: {
|
|
2597
|
+
<E1, A, R2 = never, E2 = never, B = never, R3 = never, E3 = never, C = never>(
|
|
2598
|
+
onLeft: (e: RefSubject<never, never, E1>) => FxInput<R2, E2, B>,
|
|
2599
|
+
onRight: (a: RefSubject<never, never, A>) => FxInput<R3, E3, C>
|
|
2600
|
+
): <R, E>(fx: Fx<R, E, Either.Either<E1, A>>) => Fx<R | R2, E | E2, B | C>
|
|
2601
|
+
|
|
2602
|
+
<R, E, E1, A, R2 = never, E2 = never, B = never, R3 = never, E3 = never, C = never>(
|
|
2603
|
+
fx: Fx<R, E, Either.Either<E1, A>>,
|
|
2604
|
+
onLeft: (e: RefSubject<never, never, E1>) => FxInput<R2, E2, B>,
|
|
2605
|
+
onRight: (a: RefSubject<never, never, A>) => FxInput<R3, E3, C>
|
|
2606
|
+
): Fx<R | R2, E | E2, B | C>
|
|
2607
|
+
} = dual(
|
|
2608
|
+
3,
|
|
2609
|
+
function matchEither<R, E, E1, A, R2 = never, E2 = never, B = never, R3 = never, E3 = never, C = never>(
|
|
2610
|
+
fx: Fx<R, E, Either.Either<E1, A>>,
|
|
2611
|
+
onLeft: (e: RefSubject<never, never, E1>) => FxInput<R2, E2, B>,
|
|
2612
|
+
onRight: (a: RefSubject<never, never, A>) => FxInput<R3, E3, C>
|
|
2613
|
+
): Fx<R | R2, E | E2, B | C> {
|
|
2614
|
+
return matchTags(fx, {
|
|
2615
|
+
Left: (left) => onLeft(transform(left, (a) => a.left, (a) => Either.left(a) as Either.Left<E1, A>)),
|
|
2616
|
+
Right: (right) => onRight(transform(right, (s) => s.right, (value) => Either.right(value) as Either.Right<E1, A>))
|
|
2617
|
+
})
|
|
2618
|
+
}
|
|
2619
|
+
)
|
|
2620
|
+
|
|
2621
|
+
/**
|
|
2622
|
+
* @since 1.18.0
|
|
2623
|
+
*/
|
|
2624
|
+
export const fork = <R, E, A>(fx: Fx<R, E, A>): Effect.Effect<R, never, Fiber.RuntimeFiber<E, void>> =>
|
|
2625
|
+
Effect.fork(drain(fx))
|
|
2626
|
+
|
|
2627
|
+
/**
|
|
2628
|
+
* @since 1.18.0
|
|
2629
|
+
*/
|
|
2630
|
+
export const forkScoped = <R, E, A>(
|
|
2631
|
+
fx: Fx<R, E, A>
|
|
2632
|
+
): Effect.Effect<R | Scope.Scope, never, Fiber.RuntimeFiber<E, void>> => Effect.forkScoped(drain(fx))
|
|
2633
|
+
|
|
2634
|
+
/**
|
|
2635
|
+
* @since 1.18.0
|
|
2636
|
+
*/
|
|
2637
|
+
export const forkDaemon = <R, E, A>(fx: Fx<R, E, A>): Effect.Effect<R, never, Fiber.RuntimeFiber<E, void>> =>
|
|
2638
|
+
Effect.forkDaemon(drain(fx))
|
|
2639
|
+
|
|
2640
|
+
/**
|
|
2641
|
+
* @since 1.18.0
|
|
2642
|
+
*/
|
|
2643
|
+
export const forkIn: {
|
|
2644
|
+
(scope: Scope.Scope): <R, E, A>(fx: Fx<R, E, A>) => Effect.Effect<R, never, Fiber.RuntimeFiber<E, void>>
|
|
2645
|
+
<R, E, A>(fx: Fx<R, E, A>, scope: Scope.Scope): Effect.Effect<R, never, Fiber.RuntimeFiber<E, void>>
|
|
2646
|
+
} = dual(2, <R, E, A>(
|
|
2647
|
+
fx: Fx<R, E, A>,
|
|
2648
|
+
scope: Scope.Scope
|
|
2649
|
+
): Effect.Effect<R, never, Fiber.RuntimeFiber<E, void>> => Effect.forkIn(drain(fx), scope))
|
|
2650
|
+
|
|
2651
|
+
/**
|
|
2652
|
+
* @since 1.18.0
|
|
2653
|
+
*/
|
|
2654
|
+
export const mergeRace: {
|
|
2655
|
+
<R2, E2, B>(other: Fx<R2, E2, B>): <R, E, A>(fx: Fx<R, E, A>) => Fx<R2 | R, E2 | E, B | A>
|
|
2656
|
+
<R, E, A, R2, E2, B>(fx: Fx<R, E, A>, other: Fx<R2, E2, B>): Fx<R | R2, E | E2, A | B>
|
|
2657
|
+
} = internal.mergeRace
|