@typed/fx 1.18.4 → 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/Emitter/package.json +6 -0
- package/Form/package.json +6 -0
- package/FormEntry/package.json +6 -0
- package/Fx/package.json +6 -0
- package/Guard/package.json +6 -0
- package/Idle/package.json +6 -0
- package/Match/package.json +6 -0
- package/Pull/package.json +6 -0
- package/Push/package.json +6 -0
- package/RefArray/package.json +6 -0
- package/RefChunk/package.json +6 -0
- package/RefHashMap/package.json +6 -0
- package/RefHashSet/package.json +6 -0
- package/RefSubject/package.json +6 -0
- package/Sink/package.json +6 -0
- package/Stream/package.json +6 -0
- package/Subject/package.json +6 -0
- package/TypeId/package.json +6 -0
- package/Typeclass/package.json +6 -0
- package/Versioned/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 +983 -1387
- 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 +1685 -1851
- 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/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
|
-
|
|
1180
|
-
|
|
998
|
+
* @since 1.20.0
|
|
999
|
+
*/
|
|
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)
|
|
1004
|
+
|
|
1005
|
+
/**
|
|
1006
|
+
* @since 1.20.0
|
|
1007
|
+
*/
|
|
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)
|
|
1012
|
+
|
|
1013
|
+
/**
|
|
1014
|
+
* @since 1.20.0
|
|
1181
1015
|
*/
|
|
1182
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)
|
|
1028
|
+
|
|
1029
|
+
/**
|
|
1030
|
+
* @since 1.20.0
|
|
1031
|
+
*/
|
|
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>
|
|
1036
|
+
|
|
1183
1037
|
<R, E, A, R2>(
|
|
1184
|
-
|
|
1185
|
-
|
|
1186
|
-
):
|
|
1038
|
+
fx: Fx<R, E, A>,
|
|
1039
|
+
f: (exit: Exit.Exit<never, unknown>) => Effect.Effect<R2, never, unknown>
|
|
1040
|
+
): Fx<R | R2, E, A>
|
|
1041
|
+
} = dual(2, core.onExit)
|
|
1042
|
+
|
|
1043
|
+
/**
|
|
1044
|
+
* @since 1.20.0
|
|
1045
|
+
*/
|
|
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>
|
|
1187
1050
|
<R, E, A, R2>(
|
|
1188
1051
|
fx: Fx<R, E, A>,
|
|
1189
|
-
f: (
|
|
1190
|
-
|
|
1191
|
-
|
|
1192
|
-
} = core.middleware
|
|
1052
|
+
f: (interruptors: HashSet.HashSet<FiberId.FiberId>) => Effect.Effect<R2, never, unknown>
|
|
1053
|
+
): Fx<R | R2, E, A>
|
|
1054
|
+
} = dual(2, core.onInterrupt)
|
|
1193
1055
|
|
|
1194
1056
|
/**
|
|
1195
|
-
*
|
|
1196
|
-
*
|
|
1197
|
-
* @since 1.18.0
|
|
1198
|
-
* @category combinators
|
|
1057
|
+
* @since 1.20.0
|
|
1199
1058
|
*/
|
|
1200
|
-
export const
|
|
1201
|
-
<
|
|
1202
|
-
<R, E, A,
|
|
1203
|
-
} = 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)
|
|
1204
1063
|
|
|
1205
1064
|
/**
|
|
1206
|
-
*
|
|
1207
|
-
*
|
|
1208
|
-
* @since 1.18.0
|
|
1209
|
-
* @category combinators
|
|
1065
|
+
* @since 1.20.0
|
|
1210
1066
|
*/
|
|
1211
|
-
export const
|
|
1212
|
-
R,
|
|
1213
|
-
E,
|
|
1214
|
-
A
|
|
1215
|
-
>(fx: Fx<R, E, A>): Fx<R, E, readonly [previous: Option.Option<A>, current: A]> =>
|
|
1216
|
-
loop(
|
|
1217
|
-
fx,
|
|
1218
|
-
Option.none<A>(),
|
|
1219
|
-
(previous, current) => [[previous, current] as const, Option.some(current)]
|
|
1220
|
-
)
|
|
1067
|
+
export const scoped: <R, E, A>(fx: Fx<R, E, A>) => Fx<Exclude<R, Scope.Scope>, E, A> = core.scoped
|
|
1221
1068
|
|
|
1222
1069
|
/**
|
|
1223
|
-
*
|
|
1224
|
-
* useing an Effect. A SynchronizedRef is utilized to ensure ordering of events.
|
|
1225
|
-
*
|
|
1226
|
-
* @since 1.18.0
|
|
1227
|
-
* @category combinators
|
|
1070
|
+
* @since 1.20.0
|
|
1228
1071
|
*/
|
|
1229
|
-
export const
|
|
1230
|
-
<
|
|
1231
|
-
|
|
1232
|
-
|
|
1233
|
-
): <R, E>(fx: Fx<R, E, A>) => Fx<R | R2, E | E2, C>
|
|
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)
|
|
1234
1076
|
|
|
1235
|
-
|
|
1236
|
-
|
|
1237
|
-
|
|
1238
|
-
|
|
1239
|
-
):
|
|
1240
|
-
|
|
1077
|
+
/**
|
|
1078
|
+
* @since 1.20.0
|
|
1079
|
+
*/
|
|
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)
|
|
1241
1084
|
|
|
1242
1085
|
/**
|
|
1243
|
-
*
|
|
1244
|
-
*
|
|
1245
|
-
* @since 1.18.0
|
|
1246
|
-
* @category combinators
|
|
1086
|
+
* @since 1.20.0
|
|
1247
1087
|
*/
|
|
1248
|
-
export const
|
|
1249
|
-
<B>(value: B): <R, E, A>(fx: Fx<R, E, A>) => Fx<R, E, A | B>
|
|
1250
|
-
<R, E, A, B>(fx: Fx<R, E, A>, value: B): Fx<R, E, A | B>
|
|
1251
|
-
} = core.startWith
|
|
1088
|
+
export const interruptible: <R, E, A>(fx: Fx<R, E, A>) => Fx<R, E, A> = core.interruptible
|
|
1252
1089
|
|
|
1253
1090
|
/**
|
|
1254
|
-
*
|
|
1255
|
-
*
|
|
1256
|
-
* @since 1.18.0
|
|
1257
|
-
* @category combinators
|
|
1091
|
+
* @since 1.20.0
|
|
1258
1092
|
*/
|
|
1259
|
-
export const
|
|
1260
|
-
<B>(value: B): <R, E, A>(fx: Fx<R, E, A>) => Fx<R, E, A | B>
|
|
1261
|
-
<R, E, A, B>(fx: Fx<R, E, A>, value: B): Fx<R, E, A | B>
|
|
1262
|
-
} = core.endWith
|
|
1093
|
+
export const uninterruptible: <R, E, A>(fx: Fx<R, E, A>) => Fx<R, E, A> = core.uninterruptible
|
|
1263
1094
|
|
|
1264
1095
|
/**
|
|
1265
|
-
*
|
|
1266
|
-
*
|
|
1267
|
-
* @since 1.18.0
|
|
1268
|
-
* @category combinators
|
|
1096
|
+
* @since 1.20.0
|
|
1269
1097
|
*/
|
|
1270
|
-
export const
|
|
1271
|
-
<A
|
|
1272
|
-
<R, E,
|
|
1273
|
-
} = core.
|
|
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)
|
|
1274
1102
|
|
|
1275
1103
|
/**
|
|
1276
|
-
*
|
|
1277
|
-
*
|
|
1278
|
-
* @since 1.18.0
|
|
1279
|
-
* @category combinators
|
|
1104
|
+
* @since 1.20.0
|
|
1280
1105
|
*/
|
|
1281
|
-
export const
|
|
1282
|
-
<A, B,
|
|
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
|
|
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)
|
|
1288
1110
|
|
|
1289
1111
|
/**
|
|
1290
|
-
*
|
|
1291
|
-
* with the provided FlattenStrategy.
|
|
1292
|
-
* @since 1.18.0
|
|
1293
|
-
* @category flattening
|
|
1112
|
+
* @since 1.20.0
|
|
1294
1113
|
*/
|
|
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
|
|
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)
|
|
1306
1118
|
|
|
1307
1119
|
/**
|
|
1308
|
-
*
|
|
1309
|
-
* with the provided FlattenStrategy.
|
|
1310
|
-
* @since 1.18.0
|
|
1311
|
-
* @category flattening
|
|
1120
|
+
* @since 1.20.0
|
|
1312
1121
|
*/
|
|
1313
|
-
export const
|
|
1314
|
-
<E,
|
|
1315
|
-
|
|
1316
|
-
|
|
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
|
|
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)
|
|
1324
1126
|
|
|
1325
1127
|
/**
|
|
1326
|
-
*
|
|
1327
|
-
*
|
|
1328
|
-
* @since 1.18.0
|
|
1329
|
-
* @category flattening
|
|
1128
|
+
* @since 1.20.0
|
|
1330
1129
|
*/
|
|
1331
|
-
export const
|
|
1332
|
-
<E,
|
|
1333
|
-
|
|
1334
|
-
|
|
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
|
|
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)
|
|
1340
1134
|
|
|
1341
1135
|
/**
|
|
1342
|
-
*
|
|
1343
|
-
*
|
|
1344
|
-
* @since 1.18.0
|
|
1345
|
-
* @category flattening
|
|
1136
|
+
* @since 1.20.0
|
|
1346
1137
|
*/
|
|
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
|
|
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)
|
|
1356
1142
|
|
|
1357
1143
|
/**
|
|
1358
|
-
*
|
|
1359
|
-
*
|
|
1360
|
-
* @since 1.18.0
|
|
1361
|
-
* @category flattening
|
|
1144
|
+
* @since 1.20.0
|
|
1362
1145
|
*/
|
|
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
|
|
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)
|
|
1374
1150
|
|
|
1375
1151
|
/**
|
|
1376
|
-
*
|
|
1377
|
-
*
|
|
1378
|
-
* @since 1.18.0
|
|
1379
|
-
* @category flattening
|
|
1152
|
+
* @since 1.20.0
|
|
1380
1153
|
*/
|
|
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
|
|
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)
|
|
1392
1158
|
|
|
1393
1159
|
/**
|
|
1394
|
-
*
|
|
1395
|
-
* Fx emitted and interrupting the previous.
|
|
1396
|
-
*
|
|
1397
|
-
* @since 1.18.0
|
|
1398
|
-
* @category flattening
|
|
1160
|
+
* @since 1.20.0
|
|
1399
1161
|
*/
|
|
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
|
|
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)
|
|
1409
1166
|
|
|
1410
1167
|
/**
|
|
1411
|
-
*
|
|
1412
|
-
* Fx emitted and interrupting the previous.
|
|
1413
|
-
*
|
|
1414
|
-
* @since 1.18.0
|
|
1415
|
-
* @category flattening
|
|
1168
|
+
* @since 1.20.0
|
|
1416
1169
|
*/
|
|
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
|
|
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)
|
|
1426
1174
|
|
|
1427
1175
|
/**
|
|
1428
|
-
*
|
|
1429
|
-
* Fx emitted and dropping any subsequent Fx until it has completed.
|
|
1430
|
-
*
|
|
1431
|
-
* @since 1.18.0
|
|
1432
|
-
* @category flattening
|
|
1176
|
+
* @since 1.20.0
|
|
1433
1177
|
*/
|
|
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
|
|
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)
|
|
1443
1182
|
|
|
1444
1183
|
/**
|
|
1445
|
-
*
|
|
1446
|
-
* Fx emitted and dropping any subsequent Fx until it has completed.
|
|
1447
|
-
*
|
|
1448
|
-
* @since 1.18.0
|
|
1449
|
-
* @category flattening
|
|
1184
|
+
* @since 1.20.0
|
|
1450
1185
|
*/
|
|
1451
|
-
export const
|
|
1452
|
-
<E,
|
|
1453
|
-
|
|
1454
|
-
|
|
1455
|
-
|
|
1456
|
-
|
|
1457
|
-
|
|
1458
|
-
|
|
1459
|
-
|
|
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)
|
|
1190
|
+
|
|
1191
|
+
/**
|
|
1192
|
+
* @since 1.20.0
|
|
1193
|
+
*/
|
|
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)
|
|
1460
1205
|
|
|
1461
1206
|
/**
|
|
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
|
|
1207
|
+
* @since 1.20.0
|
|
1468
1208
|
*/
|
|
1469
|
-
export const
|
|
1470
|
-
|
|
1471
|
-
|
|
1472
|
-
|
|
1473
|
-
|
|
1474
|
-
|
|
1475
|
-
|
|
1476
|
-
):
|
|
1477
|
-
|
|
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)
|
|
1478
1226
|
|
|
1479
1227
|
/**
|
|
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
|
|
1228
|
+
* @since 1.20.0
|
|
1486
1229
|
*/
|
|
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
|
|
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)
|
|
1496
1234
|
|
|
1497
1235
|
/**
|
|
1498
|
-
*
|
|
1499
|
-
*
|
|
1500
|
-
* @since 1.18.0
|
|
1501
|
-
* @category flattening
|
|
1236
|
+
* @since 1.20.0
|
|
1502
1237
|
*/
|
|
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
|
|
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)
|
|
1520
1242
|
|
|
1521
1243
|
/**
|
|
1522
|
-
*
|
|
1523
|
-
*
|
|
1524
|
-
* @since 1.18.0
|
|
1525
|
-
* @category flattening
|
|
1244
|
+
* @since 1.20.0
|
|
1526
1245
|
*/
|
|
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
|
|
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)
|
|
1544
1250
|
|
|
1545
1251
|
/**
|
|
1546
|
-
*
|
|
1547
|
-
*
|
|
1548
|
-
* @since 1.18.0
|
|
1549
|
-
* @category flattening
|
|
1252
|
+
* @since 1.20.0
|
|
1550
1253
|
*/
|
|
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
|
|
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)
|
|
1566
1258
|
|
|
1567
1259
|
/**
|
|
1568
|
-
*
|
|
1569
|
-
*
|
|
1570
|
-
* @since 1.18.0
|
|
1571
|
-
* @category flattening
|
|
1260
|
+
* @since 1.20.0
|
|
1572
1261
|
*/
|
|
1573
|
-
export const
|
|
1574
|
-
<
|
|
1575
|
-
|
|
1576
|
-
|
|
1577
|
-
<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>(
|
|
1578
1268
|
fx: Fx<R, E, A>,
|
|
1579
|
-
|
|
1580
|
-
|
|
1581
|
-
|
|
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)
|
|
1582
1273
|
|
|
1583
1274
|
/**
|
|
1584
|
-
*
|
|
1585
|
-
*
|
|
1586
|
-
* @since 1.18.0
|
|
1587
|
-
* @category flattening
|
|
1275
|
+
* @since 1.20.0
|
|
1588
1276
|
*/
|
|
1589
|
-
export const
|
|
1590
|
-
<
|
|
1591
|
-
|
|
1592
|
-
|
|
1593
|
-
|
|
1594
|
-
|
|
1595
|
-
|
|
1596
|
-
|
|
1597
|
-
<R, E, A, R2
|
|
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>(
|
|
1598
1289
|
fx: Fx<R, E, A>,
|
|
1599
|
-
|
|
1600
|
-
|
|
1601
|
-
|
|
1602
|
-
readonly concurrency: number
|
|
1603
|
-
}
|
|
1604
|
-
): Fx<R | R2 | R3, E2 | E3, B | C>
|
|
1605
|
-
} = core.matchCauseConcurrently
|
|
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)
|
|
1606
1293
|
|
|
1607
1294
|
/**
|
|
1608
|
-
*
|
|
1609
|
-
*
|
|
1610
|
-
* @since 1.18.0
|
|
1611
|
-
* @category flattening
|
|
1295
|
+
* @since 1.20.0
|
|
1612
1296
|
*/
|
|
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
|
|
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)
|
|
1630
1301
|
|
|
1631
1302
|
/**
|
|
1632
|
-
*
|
|
1633
|
-
* Fx emitted and interrupting the previous.
|
|
1634
|
-
*
|
|
1635
|
-
* @since 1.18.0
|
|
1636
|
-
* @category flattening
|
|
1303
|
+
* @since 1.20.0
|
|
1637
1304
|
*/
|
|
1638
|
-
export const
|
|
1639
|
-
<E, R2 = never, E2 = never, B = never, A = never, R3 = never, E3 = never, C = never>(
|
|
1640
|
-
options: {
|
|
1641
|
-
readonly onFailure: (cause: Cause.Cause<E>) => FxInput<R2, E2, B>
|
|
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
|
|
1305
|
+
export const multicast: <R, E, A>(fx: Fx<R, E, A>) => Fx<Scope.Scope | R, E, A> = coreShare.multicast
|
|
1653
1306
|
|
|
1654
1307
|
/**
|
|
1655
|
-
*
|
|
1656
|
-
* Fx emitted and interrupting the previous.
|
|
1657
|
-
*
|
|
1658
|
-
* @since 1.18.0
|
|
1659
|
-
* @category flattening
|
|
1308
|
+
* @since 1.20.0
|
|
1660
1309
|
*/
|
|
1661
|
-
export const
|
|
1662
|
-
<E, R2 = never, E2 = never, B = never, A = never, R3 = never, E3 = never, C = never>(
|
|
1663
|
-
options: { readonly onFailure: (error: E) => FxInput<R2, E2, B>; readonly onSuccess: (a: A) => FxInput<R3, E3, C> }
|
|
1664
|
-
): <R>(fx: Fx<R, E, A>) => Fx<R2 | R3 | R, E2 | E3, B | C>
|
|
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
|
|
1310
|
+
export const hold: <R, E, A>(fx: Fx<R, E, A>) => Fx<Scope.Scope | R, E, A> = coreShare.hold
|
|
1670
1311
|
|
|
1671
1312
|
/**
|
|
1672
|
-
*
|
|
1673
|
-
* Fx emitted and dropping any subsequent Fx until it has completed.
|
|
1674
|
-
*
|
|
1675
|
-
* @since 1.18.0
|
|
1676
|
-
* @category flattening
|
|
1313
|
+
* @since 1.20.0
|
|
1677
1314
|
*/
|
|
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
|
|
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)
|
|
1693
1319
|
|
|
1694
1320
|
/**
|
|
1695
|
-
*
|
|
1696
|
-
* Fx emitted and dropping any subsequent Fx until it has completed.
|
|
1697
|
-
*
|
|
1698
|
-
* @since 1.18.0
|
|
1699
|
-
* @category flattening
|
|
1321
|
+
* @since 1.20.0
|
|
1700
1322
|
*/
|
|
1701
|
-
export const
|
|
1702
|
-
<E,
|
|
1703
|
-
|
|
1704
|
-
|
|
1705
|
-
<R, E, A, R2 = never, E2 = never, B = never, R3 = never, E3 = never, C = never>(
|
|
1706
|
-
fx: Fx<R, E, A>,
|
|
1707
|
-
options: { readonly onFailure: (error: E) => FxInput<R2, E2, B>; readonly onSuccess: (a: A) => FxInput<R3, E3, C> }
|
|
1708
|
-
): Fx<R | R2 | R3, E2 | E3, B | C>
|
|
1709
|
-
} = core.exhaustMatch
|
|
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)
|
|
1710
1327
|
|
|
1711
1328
|
/**
|
|
1712
|
-
*
|
|
1713
|
-
|
|
1714
|
-
|
|
1715
|
-
|
|
1716
|
-
|
|
1717
|
-
|
|
1718
|
-
*/
|
|
1719
|
-
export const exhaustLatestMatchCause: {
|
|
1720
|
-
<E, R2 = never, E2 = never, B = never, A = never, R3 = never, E3 = never, C = never>(
|
|
1721
|
-
options: {
|
|
1722
|
-
readonly onFailure: (cause: Cause.Cause<E>) => FxInput<R2, E2, B>
|
|
1723
|
-
readonly onSuccess: (a: A) => FxInput<R3, E3, C>
|
|
1724
|
-
}
|
|
1725
|
-
): <R>(fx: Fx<R, E, A>) => Fx<R2 | R3 | R, E2 | E3, B | C>
|
|
1726
|
-
<R, E, A, R2 = never, E2 = never, B = never, R3 = never, E3 = never, C = never>(
|
|
1727
|
-
fx: Fx<R, E, A>,
|
|
1728
|
-
options: {
|
|
1729
|
-
readonly onFailure: (cause: Cause.Cause<E>) => FxInput<R2, E2, B>
|
|
1730
|
-
readonly onSuccess: (a: A) => FxInput<R3, E3, C>
|
|
1731
|
-
}
|
|
1732
|
-
): Fx<R | R2 | R3, E2 | E3, B | C>
|
|
1733
|
-
} = core.exhaustLatestMatchCause
|
|
1329
|
+
* @since 1.20.0
|
|
1330
|
+
*/
|
|
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)
|
|
1734
1335
|
|
|
1735
1336
|
/**
|
|
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
|
|
1337
|
+
* @since 1.20.0
|
|
1742
1338
|
*/
|
|
1743
|
-
export const
|
|
1744
|
-
<E,
|
|
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
|
|
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)
|
|
1752
1343
|
|
|
1753
1344
|
/**
|
|
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
|
|
1345
|
+
* @since 1.20.0
|
|
1760
1346
|
*/
|
|
1761
|
-
export const
|
|
1762
|
-
<
|
|
1763
|
-
|
|
1764
|
-
|
|
1765
|
-
|
|
1766
|
-
<R, E, A, R2, E2, R3, E3>(
|
|
1767
|
-
fx: Fx<R, E, A>,
|
|
1768
|
-
window: Fx<R2, E2, Fx<R3, E3, unknown>>
|
|
1769
|
-
): Fx<R | R2 | R3, E | E2 | E3, A>
|
|
1770
|
-
} = core.during
|
|
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)
|
|
1771
1351
|
|
|
1772
1352
|
/**
|
|
1773
|
-
*
|
|
1774
|
-
*
|
|
1775
|
-
* @since 1.18.0
|
|
1776
|
-
* @category time slicing
|
|
1353
|
+
* @since 1.20.0
|
|
1777
1354
|
*/
|
|
1778
|
-
export const
|
|
1779
|
-
<
|
|
1780
|
-
<R, E, A
|
|
1781
|
-
} = 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)
|
|
1782
1359
|
|
|
1783
1360
|
/**
|
|
1784
|
-
*
|
|
1785
|
-
*
|
|
1786
|
-
* @since 1.18.0
|
|
1787
|
-
* @category time slicing
|
|
1361
|
+
* @since 1.20.0
|
|
1788
1362
|
*/
|
|
1789
|
-
export const
|
|
1790
|
-
<
|
|
1791
|
-
<R, E, A,
|
|
1792
|
-
} = core.
|
|
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)
|
|
1793
1367
|
|
|
1794
1368
|
/**
|
|
1795
|
-
*
|
|
1796
|
-
*
|
|
1797
|
-
* @since 1.18.0
|
|
1798
|
-
* @category context
|
|
1369
|
+
* @since 1.20.0
|
|
1799
1370
|
*/
|
|
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
|
|
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)
|
|
1808
1375
|
|
|
1809
1376
|
/**
|
|
1810
|
-
*
|
|
1811
|
-
* @since 1.18.0
|
|
1812
|
-
* @category context
|
|
1377
|
+
* @since 1.20.0
|
|
1813
1378
|
*/
|
|
1814
|
-
export const
|
|
1815
|
-
<
|
|
1816
|
-
|
|
1817
|
-
|
|
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>(
|
|
1384
|
+
fx: Fx<R, E, A>,
|
|
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)
|
|
1818
1388
|
|
|
1819
1389
|
/**
|
|
1820
|
-
*
|
|
1821
|
-
*
|
|
1822
|
-
* @since 1.18.0
|
|
1823
|
-
* @category context
|
|
1390
|
+
* @since 1.20.0
|
|
1824
1391
|
*/
|
|
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
|
|
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)
|
|
1836
1396
|
|
|
1837
1397
|
/**
|
|
1838
|
-
*
|
|
1839
|
-
*
|
|
1840
|
-
* @since 1.18.0
|
|
1841
|
-
* @category slicing
|
|
1398
|
+
* @since 1.20.0
|
|
1842
1399
|
*/
|
|
1843
|
-
export const
|
|
1844
|
-
<
|
|
1845
|
-
|
|
1846
|
-
|
|
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)
|
|
1847
1406
|
|
|
1848
1407
|
/**
|
|
1849
|
-
*
|
|
1850
|
-
*
|
|
1851
|
-
* @since 1.18.0
|
|
1852
|
-
* @category slicing
|
|
1408
|
+
* @since 1.20.0
|
|
1853
1409
|
*/
|
|
1854
|
-
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)
|
|
1855
1414
|
|
|
1856
1415
|
/**
|
|
1857
|
-
*
|
|
1858
|
-
*
|
|
1859
|
-
* @since 1.18.0
|
|
1860
|
-
* @category combinators
|
|
1416
|
+
* @since 1.20.0
|
|
1861
1417
|
*/
|
|
1862
|
-
export const
|
|
1863
|
-
<R2
|
|
1864
|
-
|
|
1865
|
-
|
|
1866
|
-
|
|
1867
|
-
<R, E, A, R2 = never, E2 = never, B = never, R3 = never, E3 = never, C = never>(
|
|
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>(
|
|
1868
1423
|
fx: Fx<R, E, A>,
|
|
1869
|
-
|
|
1870
|
-
|
|
1871
|
-
|
|
1872
|
-
} = core.snapshot
|
|
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)
|
|
1873
1427
|
|
|
1874
1428
|
/**
|
|
1875
|
-
*
|
|
1876
|
-
* provided Subject.
|
|
1877
|
-
*
|
|
1878
|
-
* @since 1.18.0
|
|
1879
|
-
* @category sharing
|
|
1429
|
+
* @since 1.20.0
|
|
1880
1430
|
*/
|
|
1881
|
-
export const
|
|
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)
|
|
1882
1437
|
|
|
1883
1438
|
/**
|
|
1884
|
-
*
|
|
1885
|
-
*
|
|
1886
|
-
* @since 1.18.0
|
|
1887
|
-
* @category sharing
|
|
1439
|
+
* @since 1.20.0
|
|
1888
1440
|
*/
|
|
1889
|
-
export const
|
|
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)
|
|
1890
1453
|
|
|
1891
1454
|
/**
|
|
1892
|
-
*
|
|
1893
|
-
* recent event and emitting it to new subscribers.
|
|
1894
|
-
*
|
|
1895
|
-
* @since 1.18.0
|
|
1896
|
-
* @category sharing
|
|
1455
|
+
* @since 1.20.0
|
|
1897
1456
|
*/
|
|
1898
|
-
export const
|
|
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)
|
|
1899
1461
|
|
|
1900
1462
|
/**
|
|
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
|
|
1463
|
+
* @since 1.20.0
|
|
1906
1464
|
*/
|
|
1907
|
-
export const
|
|
1908
|
-
|
|
1909
|
-
|
|
1910
|
-
|
|
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)
|
|
1911
1476
|
|
|
1912
1477
|
/**
|
|
1913
|
-
*
|
|
1914
|
-
* events have occurred before emitting a value.
|
|
1915
|
-
* @since 1.18.0
|
|
1916
|
-
* @category time slicing
|
|
1478
|
+
* @since 1.20.0
|
|
1917
1479
|
*/
|
|
1918
|
-
export const
|
|
1919
|
-
|
|
1920
|
-
|
|
1921
|
-
|
|
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)
|
|
1922
1490
|
|
|
1923
1491
|
/**
|
|
1924
|
-
*
|
|
1925
|
-
* an event after the last event.
|
|
1926
|
-
* @since 1.18.0
|
|
1927
|
-
* @category time slicing
|
|
1492
|
+
* @since 1.20.0
|
|
1928
1493
|
*/
|
|
1929
|
-
export const
|
|
1930
|
-
|
|
1931
|
-
|
|
1932
|
-
|
|
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)
|
|
1933
1505
|
|
|
1934
1506
|
/**
|
|
1935
|
-
*
|
|
1936
|
-
* events have occurred before emitting a value.
|
|
1937
|
-
* @since 1.18.0
|
|
1938
|
-
* @category combinators
|
|
1507
|
+
* @since 1.20.0
|
|
1939
1508
|
*/
|
|
1940
|
-
export const
|
|
1941
|
-
|
|
1942
|
-
|
|
1943
|
-
|
|
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)
|
|
1944
1515
|
|
|
1945
1516
|
/**
|
|
1946
|
-
*
|
|
1947
|
-
* @since 1.18.0
|
|
1948
|
-
* @category constructors
|
|
1517
|
+
* @since 1.20.0
|
|
1949
1518
|
*/
|
|
1950
|
-
export const
|
|
1951
|
-
|
|
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)
|
|
1952
1530
|
|
|
1953
1531
|
/**
|
|
1954
|
-
*
|
|
1955
|
-
* @since 1.18.0
|
|
1532
|
+
* @since 1.20.0
|
|
1956
1533
|
*/
|
|
1957
|
-
export
|
|
1958
|
-
:
|
|
1959
|
-
|
|
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)
|
|
1960
1544
|
|
|
1961
1545
|
/**
|
|
1962
|
-
*
|
|
1963
|
-
* @since 1.18.0
|
|
1546
|
+
* @since 1.20.0
|
|
1964
1547
|
*/
|
|
1965
|
-
export
|
|
1966
|
-
|
|
1967
|
-
|
|
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>(
|
|
1555
|
+
fx: Fx<R, E, A>,
|
|
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)
|
|
1968
1561
|
|
|
1969
1562
|
/**
|
|
1970
|
-
*
|
|
1971
|
-
* @since 1.18.0
|
|
1563
|
+
* @since 1.20.0
|
|
1972
1564
|
*/
|
|
1973
|
-
export
|
|
1974
|
-
|
|
1975
|
-
|
|
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>(
|
|
1572
|
+
fx: Fx<R, E, A>,
|
|
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)
|
|
1976
1578
|
|
|
1977
1579
|
/**
|
|
1978
|
-
*
|
|
1979
|
-
* @since 1.18.0
|
|
1980
|
-
* @category constructors
|
|
1580
|
+
* @since 1.20.0
|
|
1981
1581
|
*/
|
|
1982
|
-
export
|
|
1983
|
-
|
|
1984
|
-
|
|
1985
|
-
|
|
1986
|
-
|
|
1582
|
+
export const switchMapCause: {
|
|
1583
|
+
<R, E, A, R2, E2, B>(
|
|
1584
|
+
fx: Fx<R, E, A>,
|
|
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)
|
|
1987
1594
|
|
|
1988
1595
|
/**
|
|
1989
|
-
*
|
|
1990
|
-
* @since 1.18.0
|
|
1991
|
-
* @category constructors
|
|
1596
|
+
* @since 1.20.0
|
|
1992
1597
|
*/
|
|
1993
|
-
export
|
|
1994
|
-
|
|
1995
|
-
|
|
1996
|
-
|
|
1997
|
-
|
|
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)
|
|
1998
1610
|
|
|
1999
1611
|
/**
|
|
2000
|
-
*
|
|
2001
|
-
* @since 1.18.0
|
|
2002
|
-
* @category lifecycles
|
|
1612
|
+
* @since 1.20.0
|
|
2003
1613
|
*/
|
|
2004
|
-
export const
|
|
2005
|
-
<R2>(
|
|
2006
|
-
f: (
|
|
2007
|
-
|
|
2008
|
-
<R, E, A,
|
|
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>(
|
|
2009
1621
|
fx: Fx<R, E, A>,
|
|
2010
|
-
f: (
|
|
2011
|
-
|
|
2012
|
-
|
|
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)
|
|
2013
1626
|
|
|
2014
1627
|
/**
|
|
2015
|
-
*
|
|
2016
|
-
* @since 1.18.0
|
|
2017
|
-
* @category lifecycles
|
|
1628
|
+
* @since 1.20.0
|
|
2018
1629
|
*/
|
|
2019
|
-
export const
|
|
2020
|
-
<R2>(
|
|
2021
|
-
f: (
|
|
2022
|
-
|
|
2023
|
-
<R, E, A,
|
|
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>(
|
|
2024
1637
|
fx: Fx<R, E, A>,
|
|
2025
|
-
f: (
|
|
2026
|
-
|
|
2027
|
-
|
|
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)
|
|
2028
1642
|
|
|
2029
1643
|
/**
|
|
2030
|
-
*
|
|
2031
|
-
* @since 1.18.0
|
|
2032
|
-
* @category lifecycles
|
|
1644
|
+
* @since 1.20.0
|
|
2033
1645
|
*/
|
|
2034
|
-
export const
|
|
2035
|
-
<R2>(
|
|
2036
|
-
f: (cause: Cause.Cause<
|
|
2037
|
-
|
|
2038
|
-
|
|
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>(
|
|
2039
1653
|
fx: Fx<R, E, A>,
|
|
2040
|
-
f: (cause: Cause.Cause<
|
|
2041
|
-
|
|
2042
|
-
|
|
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)
|
|
2043
1659
|
|
|
2044
1660
|
/**
|
|
2045
|
-
*
|
|
2046
|
-
* @since 1.18.0
|
|
2047
|
-
* @category context
|
|
1661
|
+
* @since 1.20.0
|
|
2048
1662
|
*/
|
|
2049
|
-
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)
|
|
2050
1677
|
|
|
2051
1678
|
/**
|
|
2052
|
-
*
|
|
2053
|
-
* @since 1.18.0
|
|
2054
|
-
* @category combinators
|
|
1679
|
+
* @since 1.20.0
|
|
2055
1680
|
*/
|
|
2056
|
-
export const
|
|
2057
|
-
|
|
2058
|
-
|
|
2059
|
-
|
|
2060
|
-
<R,
|
|
2061
|
-
|
|
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)
|
|
2062
1693
|
|
|
2063
1694
|
/**
|
|
2064
|
-
*
|
|
2065
|
-
* @since 1.18.0
|
|
2066
|
-
* @category combinators
|
|
1695
|
+
* @since 1.20.0
|
|
2067
1696
|
*/
|
|
2068
|
-
export const
|
|
2069
|
-
|
|
2070
|
-
|
|
2071
|
-
|
|
2072
|
-
<R,
|
|
2073
|
-
|
|
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>
|
|
1702
|
+
|
|
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)
|
|
2074
1709
|
|
|
2075
1710
|
/**
|
|
2076
|
-
*
|
|
2077
|
-
* @since 1.18.0
|
|
2078
|
-
* @category constructors
|
|
1711
|
+
* @since 1.20.0
|
|
2079
1712
|
*/
|
|
2080
|
-
export const
|
|
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)
|
|
2081
1725
|
|
|
2082
1726
|
/**
|
|
2083
|
-
*
|
|
2084
|
-
* @since 1.18.0
|
|
2085
|
-
* @category constructors
|
|
1727
|
+
* @since 1.20.0
|
|
2086
1728
|
*/
|
|
2087
|
-
export const
|
|
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)
|
|
2088
1741
|
|
|
2089
1742
|
/**
|
|
2090
|
-
*
|
|
2091
|
-
* @since 1.18.0
|
|
2092
|
-
* @category Do
|
|
1743
|
+
* @since 1.20.0
|
|
2093
1744
|
*/
|
|
2094
|
-
export
|
|
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
|
|
1749
|
+
}
|
|
2095
1750
|
|
|
2096
1751
|
/**
|
|
2097
|
-
*
|
|
2098
|
-
|
|
2099
|
-
|
|
2100
|
-
|
|
2101
|
-
|
|
2102
|
-
|
|
2103
|
-
name: Exclude<N, keyof A>,
|
|
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
|
|
2134
|
-
|
|
2135
|
-
export {
|
|
2136
|
-
/**
|
|
2137
|
-
* Do simulation
|
|
2138
|
-
* @since 1.18.0
|
|
2139
|
-
* @category Do
|
|
2140
|
-
*/
|
|
2141
|
-
let_ as let
|
|
1752
|
+
* @since 1.20.0
|
|
1753
|
+
*/
|
|
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
|
|
2142
1758
|
}
|
|
2143
1759
|
|
|
2144
1760
|
/**
|
|
2145
|
-
*
|
|
2146
|
-
* @since 1.18.0
|
|
2147
|
-
* @category combinators
|
|
1761
|
+
* @since 1.20.0
|
|
2148
1762
|
*/
|
|
2149
|
-
export const
|
|
2150
|
-
<
|
|
2151
|
-
|
|
2152
|
-
|
|
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
|
-
) =>
|
|
2092
|
+
) => Fx<any, any, any>
|
|
2524
2093
|
}
|
|
2525
2094
|
|
|
2526
2095
|
/**
|
|
2527
|
-
* @since 1.
|
|
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
|
|
2542
|
-
}
|
|
2543
|
-
|
|
2544
|
-
/**
|
|
2545
|
-
* @since 1.18.0
|
|
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,19 +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)
|
|
2337
|
+
|
|
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))
|
|
2659
2388
|
|
|
2660
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
|
-
|
|
2666
|
-
|
|
2667
|
-
|
|
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
|
+
|
|
2493
|
+
/**
|
|
2494
|
+
* @since 1.20.0
|
|
2495
|
+
*/
|
|
2496
|
+
abstract toFx(): Fx<R, E, A>
|
|
2497
|
+
|
|
2498
|
+
/**
|
|
2499
|
+
* @since 1.20.0
|
|
2500
|
+
*/
|
|
2501
|
+
abstract toEffect(): Effect.Effect<R2, E2, B>
|
|
2668
2502
|
}
|