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