@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/internal/fx.ts
DELETED
|
@@ -1,619 +0,0 @@
|
|
|
1
|
-
import * as Chainable from "@effect/typeclass/Chainable"
|
|
2
|
-
import * as Covariant from "@effect/typeclass/Covariant"
|
|
3
|
-
import * as Invariant from "@effect/typeclass/Invariant"
|
|
4
|
-
import type * as Context from "@typed/context"
|
|
5
|
-
import { Fiber } from "effect"
|
|
6
|
-
import type * as Cause from "effect/Cause"
|
|
7
|
-
import * as Clock from "effect/Clock"
|
|
8
|
-
import type { ConfigProvider } from "effect/ConfigProvider"
|
|
9
|
-
import type { DurationInput } from "effect/Duration"
|
|
10
|
-
import * as Effect from "effect/Effect"
|
|
11
|
-
import * as Either from "effect/Either"
|
|
12
|
-
import * as Exit from "effect/Exit"
|
|
13
|
-
import type * as FiberId from "effect/FiberId"
|
|
14
|
-
import type * as FiberRef from "effect/FiberRef"
|
|
15
|
-
import { dual } from "effect/Function"
|
|
16
|
-
import type * as HashSet from "effect/HashSet"
|
|
17
|
-
import * as Layer from "effect/Layer"
|
|
18
|
-
import * as Option from "effect/Option"
|
|
19
|
-
import type * as PubSub from "effect/PubSub"
|
|
20
|
-
import * as Queue from "effect/Queue"
|
|
21
|
-
import type * as Request from "effect/Request"
|
|
22
|
-
import type { Scheduler } from "effect/Scheduler"
|
|
23
|
-
import type * as Scope from "effect/Scope"
|
|
24
|
-
import * as Tracer from "effect/Tracer"
|
|
25
|
-
import type { Fx, FxInput } from "../Fx.js"
|
|
26
|
-
import * as Sink from "../Sink.js"
|
|
27
|
-
import * as Typeclass from "../Typeclass.js"
|
|
28
|
-
import * as core from "./core.js"
|
|
29
|
-
import { run } from "./run.js"
|
|
30
|
-
import { multicast } from "./share.js"
|
|
31
|
-
|
|
32
|
-
/**
|
|
33
|
-
* Create an Fx which will emit a value after waiting for a specified duration.
|
|
34
|
-
* @since 1.18.0
|
|
35
|
-
*/
|
|
36
|
-
export const at: {
|
|
37
|
-
(delay: DurationInput): <A>(value: A) => Fx<never, never, A>
|
|
38
|
-
<A>(value: A, delay: DurationInput): Fx<never, never, A>
|
|
39
|
-
} = dual(2, function<A>(value: A, delay: DurationInput): Fx<never, never, A> {
|
|
40
|
-
return core.fromEffect(Effect.delay(Effect.succeed(value), delay))
|
|
41
|
-
})
|
|
42
|
-
|
|
43
|
-
/**
|
|
44
|
-
* Create an Fx which will wait a specified duration of time where no
|
|
45
|
-
* events have occurred before emitting a value.
|
|
46
|
-
* @since 1.18.0
|
|
47
|
-
*/
|
|
48
|
-
export const debounce: {
|
|
49
|
-
(delay: DurationInput): <R, E, A>(fx: Fx<R, E, A>) => Fx<R, E, A>
|
|
50
|
-
<R, E, A>(fx: Fx<R, E, A>, delay: DurationInput): Fx<R, E, A>
|
|
51
|
-
} = dual(2, function<R, E, A>(fx: Fx<R, E, A>, delay: DurationInput): Fx<R, E, A> {
|
|
52
|
-
return core.switchMap(fx, (a) => core.fromEffect(Effect.delay(Effect.succeed(a), delay)))
|
|
53
|
-
})
|
|
54
|
-
|
|
55
|
-
/**
|
|
56
|
-
* Create an Fx which will wait a specified duration of time before emitting
|
|
57
|
-
* an event after the last event.
|
|
58
|
-
* @since 1.18.0
|
|
59
|
-
*/
|
|
60
|
-
export const throttle: {
|
|
61
|
-
(delay: DurationInput): <R, E, A>(fx: Fx<R, E, A>) => Fx<R, E, A>
|
|
62
|
-
<R, E, A>(fx: Fx<R, E, A>, delay: DurationInput): Fx<R, E, A>
|
|
63
|
-
} = dual(2, function<R, E, A>(fx: Fx<R, E, A>, delay: DurationInput): Fx<R, E, A> {
|
|
64
|
-
return core.exhaustMap(fx, (a) => core.fromEffect(Effect.delay(Effect.succeed(a), delay)))
|
|
65
|
-
})
|
|
66
|
-
|
|
67
|
-
/**
|
|
68
|
-
* Create an Fx which will wait a specified duration of time where no
|
|
69
|
-
* events have occurred before emitting a value.
|
|
70
|
-
* @since 1.18.0
|
|
71
|
-
*/
|
|
72
|
-
export const delay: {
|
|
73
|
-
(delay: DurationInput): <R, E, A>(fx: Fx<R, E, A>) => Fx<R, E, A>
|
|
74
|
-
<R, E, A>(fx: Fx<R, E, A>, delay: DurationInput): Fx<R, E, A>
|
|
75
|
-
} = dual(2, function<R, E, A>(fx: Fx<R, E, A>, delay: DurationInput): Fx<R, E, A> {
|
|
76
|
-
return core.flatMap(fx, (a) => core.fromEffect(Effect.delay(Effect.succeed(a), delay)))
|
|
77
|
-
})
|
|
78
|
-
|
|
79
|
-
/**
|
|
80
|
-
* Run an Effect to produce an Fx to run.
|
|
81
|
-
* @since 1.18.0
|
|
82
|
-
*/
|
|
83
|
-
export const fromFxEffect = <R, E, R2, E2, B>(fxEffect: Effect.Effect<R, E, Fx<R2, E2, B>>): Fx<R | R2, E | E2, B> =>
|
|
84
|
-
core.fromSink((sink) => Effect.flatMap(fxEffect, (fx) => run(fx, sink)))
|
|
85
|
-
|
|
86
|
-
/**
|
|
87
|
-
* Run an Effect when an Fx exits
|
|
88
|
-
* @since 1.18.0
|
|
89
|
-
*/
|
|
90
|
-
export const onExit: {
|
|
91
|
-
<R2>(
|
|
92
|
-
f: (exit: Exit.Exit<never, unknown>) => Effect.Effect<R2, never, unknown>
|
|
93
|
-
): <R, E, A>(fx: Fx<R, E, A>) => Fx<R | R2, E, A>
|
|
94
|
-
<R, E, A, R2>(
|
|
95
|
-
fx: Fx<R, E, A>,
|
|
96
|
-
f: (exit: Exit.Exit<never, unknown>) => Effect.Effect<R2, never, unknown>
|
|
97
|
-
): Fx<R | R2, E, A>
|
|
98
|
-
} = dual(2, function onExit<R, E, A, R2>(
|
|
99
|
-
fx: Fx<R, E, A>,
|
|
100
|
-
f: (exit: Exit.Exit<never, unknown>) => Effect.Effect<R2, never, unknown>
|
|
101
|
-
): Fx<R | R2, E, A> {
|
|
102
|
-
return core.middleware(fx, Effect.onExit(f))
|
|
103
|
-
})
|
|
104
|
-
|
|
105
|
-
/**
|
|
106
|
-
* Run an Effect when an Fx is interrupted
|
|
107
|
-
* @since 1.18.0
|
|
108
|
-
*/
|
|
109
|
-
export const onInterrupt: {
|
|
110
|
-
<R2>(
|
|
111
|
-
f: (interruptors: HashSet.HashSet<FiberId.FiberId>) => Effect.Effect<R2, never, unknown>
|
|
112
|
-
): <R, E, A>(fx: Fx<R, E, A>) => Fx<R | R2, E, A>
|
|
113
|
-
<R, E, A, R2>(
|
|
114
|
-
fx: Fx<R, E, A>,
|
|
115
|
-
f: (interruptors: HashSet.HashSet<FiberId.FiberId>) => Effect.Effect<R2, never, unknown>
|
|
116
|
-
): Fx<R | R2, E, A>
|
|
117
|
-
} = dual(2, function onInterrupt<R, E, A, R2>(
|
|
118
|
-
fx: Fx<R, E, A>,
|
|
119
|
-
f: (interruptors: HashSet.HashSet<FiberId.FiberId>) => Effect.Effect<R2, never, unknown>
|
|
120
|
-
): Fx<R | R2, E, A> {
|
|
121
|
-
return core.middleware(fx, Effect.onInterrupt(f))
|
|
122
|
-
})
|
|
123
|
-
|
|
124
|
-
/**
|
|
125
|
-
* Run an Effect when an Fx ends with an error
|
|
126
|
-
* @since 1.18.0
|
|
127
|
-
*/
|
|
128
|
-
export const onError: {
|
|
129
|
-
<R2>(
|
|
130
|
-
f: (cause: Cause.Cause<never>) => Effect.Effect<R2, never, unknown>
|
|
131
|
-
): <R, E, A>(fx: Fx<R, E, A>) => Fx<R | R2, E, A>
|
|
132
|
-
<R, E, A, R2>(
|
|
133
|
-
fx: Fx<R, E, A>,
|
|
134
|
-
f: (cause: Cause.Cause<never>) => Effect.Effect<R2, never, unknown>
|
|
135
|
-
): Fx<R | R2, E, A>
|
|
136
|
-
} = dual(2, function onError<R, E, A, R2>(
|
|
137
|
-
fx: Fx<R, E, A>,
|
|
138
|
-
f: (cause: Cause.Cause<never>) => Effect.Effect<R2, never, unknown>
|
|
139
|
-
): Fx<R | R2, E, A> {
|
|
140
|
-
return core.middleware(fx, Effect.onError(f))
|
|
141
|
-
})
|
|
142
|
-
|
|
143
|
-
export const scoped = <R, E, A>(fx: Fx<R, E, A>): Fx<Exclude<R, Scope.Scope>, E, A> =>
|
|
144
|
-
core.middleware(fx, Effect.scoped)
|
|
145
|
-
|
|
146
|
-
export const annotateLogs: {
|
|
147
|
-
(key: string, value: unknown): <R, E, A>(fx: Fx<R, E, A>) => Fx<R, E, A>
|
|
148
|
-
(values: Record<string, unknown>): <R, E, A>(fx: Fx<R, E, A>) => Fx<R, E, A>
|
|
149
|
-
<R, E, A>(fx: Fx<R, E, A>, key: string, value: unknown): Fx<R, E, A>
|
|
150
|
-
<R, E, A>(fx: Fx<R, E, A>, values: Record<string, unknown>): Fx<R, E, A>
|
|
151
|
-
} = dual(3, function annotateLogs<R, E, A>(
|
|
152
|
-
fx: Fx<R, E, A>,
|
|
153
|
-
key: string | Record<string, unknown>,
|
|
154
|
-
value?: unknown
|
|
155
|
-
): Fx<R, E, A> {
|
|
156
|
-
return core.middleware(fx, (effect) => Effect.annotateLogs(effect, key as string, value as unknown))
|
|
157
|
-
})
|
|
158
|
-
|
|
159
|
-
export const annotateSpans: {
|
|
160
|
-
(key: string, value: unknown): <R, E, A>(fx: Fx<R, E, A>) => Fx<R, E, A>
|
|
161
|
-
(values: Record<string, unknown>): <R, E, A>(fx: Fx<R, E, A>) => Fx<R, E, A>
|
|
162
|
-
<R, E, A>(fx: Fx<R, E, A>, key: string, value: unknown): Fx<R, E, A>
|
|
163
|
-
<R, E, A>(fx: Fx<R, E, A>, values: Record<string, unknown>): Fx<R, E, A>
|
|
164
|
-
} = dual(3, function annotateSpans<R, E, A>(
|
|
165
|
-
fx: Fx<R, E, A>,
|
|
166
|
-
key: string | Record<string, unknown>,
|
|
167
|
-
value?: unknown
|
|
168
|
-
): Fx<R, E, A> {
|
|
169
|
-
return core.middleware(fx, (effect) => Effect.annotateSpans(effect, key as string, value as unknown))
|
|
170
|
-
})
|
|
171
|
-
|
|
172
|
-
export const succeedNone = <A = never>(): Fx<never, never, Option.Option<A>> => core.succeed(Option.none<A>())
|
|
173
|
-
|
|
174
|
-
export const succeedSome = <A>(value: A): Fx<never, never, Option.Option<A>> => core.succeed(Option.some<A>(value))
|
|
175
|
-
|
|
176
|
-
export const asSome: <R, E, A>(self: Fx<R, E, A>) => Fx<R, E, Option.Option<A>> = (self) => core.map(self, Option.some)
|
|
177
|
-
|
|
178
|
-
export const asSomeError: <R, E, A>(self: Fx<R, E, A>) => Fx<R, Option.Option<E>, A> = (self) =>
|
|
179
|
-
core.mapError(self, Option.some)
|
|
180
|
-
|
|
181
|
-
export const Do: Fx<never, never, {}> = core.succeed<{}>({})
|
|
182
|
-
|
|
183
|
-
export const bind: {
|
|
184
|
-
<N extends string, A extends object, R2, E2, B>(
|
|
185
|
-
name: Exclude<N, keyof A>,
|
|
186
|
-
f: (a: A) => Fx<R2, E2, B>
|
|
187
|
-
): <R1, E1>(self: Fx<R1, E1, A>) => Fx<R1 | R2, E1 | E2, { [K in N | keyof A]: K extends keyof A ? A[K] : B }>
|
|
188
|
-
<R1, E1, A1 extends object, N extends string, R2, E2, B>(
|
|
189
|
-
self: Fx<R1, E1, A1>,
|
|
190
|
-
name: Exclude<N, keyof A1>,
|
|
191
|
-
f: (a: A1) => Fx<R2, E2, B>
|
|
192
|
-
): Fx<R1 | R2, E1 | E2, { [K in N | keyof A1]: K extends keyof A1 ? A1[K] : B }>
|
|
193
|
-
} = Chainable.bind(Typeclass.Monad)
|
|
194
|
-
|
|
195
|
-
export const bindTo: {
|
|
196
|
-
<N extends string>(name: N): <R, E, A>(self: Fx<R, E, A>) => Fx<R, E, { [K in N]: A }>
|
|
197
|
-
<R, E, A, N extends string>(self: Fx<R, E, A>, name: N): Fx<R, E, { [K_1 in N]: A }>
|
|
198
|
-
} = Invariant.bindTo(Typeclass.Invariant)
|
|
199
|
-
|
|
200
|
-
const let_: {
|
|
201
|
-
<N extends string, A extends object, B>(
|
|
202
|
-
name: Exclude<N, keyof A>,
|
|
203
|
-
f: (a: A) => B
|
|
204
|
-
): <R1, E1>(self: Fx<R1, E1, A>) => Fx<R1, E1, { [K in N | keyof A]: K extends keyof A ? A[K] : B }>
|
|
205
|
-
<R1, E1, A1 extends object, N extends string, B>(
|
|
206
|
-
self: Fx<R1, E1, A1>,
|
|
207
|
-
name: Exclude<N, keyof A1>,
|
|
208
|
-
f: (a: A1) => B
|
|
209
|
-
): Fx<R1, E1, { [K in N | keyof A1]: K extends keyof A1 ? A1[K] : B }>
|
|
210
|
-
} = Covariant.let(Typeclass.Monad)
|
|
211
|
-
|
|
212
|
-
export { let_ as let }
|
|
213
|
-
|
|
214
|
-
export const ensuring: {
|
|
215
|
-
<R2>(finalizer: Effect.Effect<R2, never, unknown>): <R, E, A>(self: Fx<R, E, A>) => Fx<R | R2, E, A>
|
|
216
|
-
<R, E, A, R2>(self: Fx<R, E, A>, finalizer: Effect.Effect<R2, never, unknown>): Fx<R | R2, E, A>
|
|
217
|
-
} = dual(2, function<R, E, A, R2>(
|
|
218
|
-
self: Fx<R, E, A>,
|
|
219
|
-
finalizer: Effect.Effect<R2, never, unknown>
|
|
220
|
-
): Fx<R | R2, E, A> {
|
|
221
|
-
return core.middleware(self, (effect) => Effect.ensuring(effect, finalizer))
|
|
222
|
-
})
|
|
223
|
-
|
|
224
|
-
export const exit = <R, E, A>(fx: Fx<R, E, A>): Fx<R, never, Exit.Exit<E, A>> =>
|
|
225
|
-
core.matchCause(fx, {
|
|
226
|
-
onFailure: (cause) => core.succeed(Exit.failCause(cause)),
|
|
227
|
-
onSuccess: (a) => core.succeed(Exit.succeed(a))
|
|
228
|
-
})
|
|
229
|
-
|
|
230
|
-
export const either = <R, E, A>(fx: Fx<R, E, A>): Fx<R, never, Either.Either<E, A>> =>
|
|
231
|
-
core.match(fx, {
|
|
232
|
-
onFailure: (error) => core.succeed(Either.left(error)),
|
|
233
|
-
onSuccess: (a) => core.succeed(Either.right(a))
|
|
234
|
-
})
|
|
235
|
-
|
|
236
|
-
export const findFirst: {
|
|
237
|
-
<A, R2, E2>(
|
|
238
|
-
f: (a: A) => Effect.Effect<R2, E2, boolean>
|
|
239
|
-
): <R, E>(fx: Fx<R, E, A>) => Effect.Effect<R | R2, E | E2, Option.Option<A>>
|
|
240
|
-
<R, E, A, R2, E2>(
|
|
241
|
-
fx: Fx<R, E, A>,
|
|
242
|
-
f: (a: A) => Effect.Effect<R2, E2, boolean>
|
|
243
|
-
): Effect.Effect<R | R2, E | E2, Option.Option<A>>
|
|
244
|
-
} = dual(2, function findFirst<R, E, A, R2, E2>(
|
|
245
|
-
fx: Fx<R, E, A>,
|
|
246
|
-
f: (a: A) => Effect.Effect<R2, E2, boolean>
|
|
247
|
-
): Effect.Effect<R | R2, E | E2, Option.Option<A>> {
|
|
248
|
-
return Effect.asyncEffect((resume) =>
|
|
249
|
-
Effect.zipRight(
|
|
250
|
-
run(
|
|
251
|
-
fx,
|
|
252
|
-
Sink.WithContext(
|
|
253
|
-
(cause) => Effect.sync(() => resume(Effect.failCause(cause))),
|
|
254
|
-
(a) =>
|
|
255
|
-
Effect.matchCause(f(a), {
|
|
256
|
-
onFailure: (cause) => resume(Effect.failCause(cause)),
|
|
257
|
-
onSuccess: (b) => b ? resume(Effect.succeedSome(a)) : Effect.unit
|
|
258
|
-
})
|
|
259
|
-
)
|
|
260
|
-
),
|
|
261
|
-
Effect.sync(() => resume(Effect.succeedNone))
|
|
262
|
-
)
|
|
263
|
-
)
|
|
264
|
-
})
|
|
265
|
-
|
|
266
|
-
export const flip = <R, E, A>(fx: Fx<R, E, A>): Fx<R, A, E> =>
|
|
267
|
-
core.match(fx, {
|
|
268
|
-
onFailure: (error: E) => core.succeed(error),
|
|
269
|
-
onSuccess: (a) => core.fail(a)
|
|
270
|
-
})
|
|
271
|
-
|
|
272
|
-
export const fromNullable = <A>(value: A | null | undefined | void): Fx<never, never, NonNullable<A>> => {
|
|
273
|
-
if (value === null || value === undefined) {
|
|
274
|
-
return core.empty
|
|
275
|
-
} else {
|
|
276
|
-
return core.succeed(value)
|
|
277
|
-
}
|
|
278
|
-
}
|
|
279
|
-
|
|
280
|
-
const if_: {
|
|
281
|
-
<R2, E2, B, R3, E3, C>(
|
|
282
|
-
onTrue: FxInput<R2, E2, B>,
|
|
283
|
-
onFalse: FxInput<R3, E3, C>
|
|
284
|
-
): {
|
|
285
|
-
<R, E>(bool: Fx<R, E, boolean>): Fx<R | R2 | R3, E | E2 | E3, B | C>
|
|
286
|
-
(bool: boolean): Fx<R2 | R3, E2 | E3, B | C>
|
|
287
|
-
}
|
|
288
|
-
|
|
289
|
-
<R, E, R2, E2, B, R3, E3, C>(
|
|
290
|
-
bool: Fx<R, E, boolean>,
|
|
291
|
-
onTrue: FxInput<R2, E2, B>,
|
|
292
|
-
onFalse: FxInput<R3, E3, C>
|
|
293
|
-
): Fx<R | R2 | R3, E | E2 | E3, B | C>
|
|
294
|
-
|
|
295
|
-
<R2, E2, B, R3, E3, C>(
|
|
296
|
-
bool: boolean,
|
|
297
|
-
onTrue: FxInput<R2, E2, B>,
|
|
298
|
-
onFalse: FxInput<R3, E3, C>
|
|
299
|
-
): Fx<R2 | R3, E2 | E3, B | C>
|
|
300
|
-
} = dual(3, function if_<R, E, R2, E2, B, R3, E3, C>(
|
|
301
|
-
bool: boolean | Fx<R, E, boolean>,
|
|
302
|
-
onTrue: FxInput<R2, E2, B>,
|
|
303
|
-
onFalse: FxInput<R3, E3, C>
|
|
304
|
-
): Fx<R | R2 | R3, E | E2 | E3, B | C> {
|
|
305
|
-
if (typeof bool === "boolean") {
|
|
306
|
-
return bool ? core.from(onTrue) : core.from(onFalse)
|
|
307
|
-
} else {
|
|
308
|
-
return core.switchMap(
|
|
309
|
-
bool,
|
|
310
|
-
(bool): FxInput<R2 | R3, E2 | E3, B | C> => (bool ? onTrue : onFalse)
|
|
311
|
-
)
|
|
312
|
-
}
|
|
313
|
-
})
|
|
314
|
-
|
|
315
|
-
export { if_ as if }
|
|
316
|
-
|
|
317
|
-
export const when: {
|
|
318
|
-
<B, C>(
|
|
319
|
-
onTrue: B,
|
|
320
|
-
onFalse: C
|
|
321
|
-
): {
|
|
322
|
-
<R, E>(bool: Fx<R, E, boolean>): Fx<R, E, B | C>
|
|
323
|
-
(bool: boolean): Fx<never, never, B | C>
|
|
324
|
-
}
|
|
325
|
-
|
|
326
|
-
<R, E, B, C>(
|
|
327
|
-
bool: Fx<R, E, boolean>,
|
|
328
|
-
onTrue: B,
|
|
329
|
-
onFalse: C
|
|
330
|
-
): Fx<R, E, B | C>
|
|
331
|
-
|
|
332
|
-
<B, C>(
|
|
333
|
-
bool: boolean,
|
|
334
|
-
onTrue: B,
|
|
335
|
-
onFalse: C
|
|
336
|
-
): Fx<never, never, B | C>
|
|
337
|
-
} = dual(3, function when_<R, E, B, C>(
|
|
338
|
-
bool: boolean | Fx<R, E, boolean>,
|
|
339
|
-
onTrue: B,
|
|
340
|
-
onFalse: C
|
|
341
|
-
): Fx<R, E, B | C> {
|
|
342
|
-
if (typeof bool === "boolean") {
|
|
343
|
-
return bool ? core.from(onTrue) : core.from(onFalse)
|
|
344
|
-
} else {
|
|
345
|
-
return core.map(
|
|
346
|
-
bool,
|
|
347
|
-
(bool): B | C => (bool ? onTrue : onFalse)
|
|
348
|
-
)
|
|
349
|
-
}
|
|
350
|
-
})
|
|
351
|
-
|
|
352
|
-
export const interruptible = <R, E, A>(fx: Fx<R, E, A>): Fx<R, E, A> => core.middleware(fx, Effect.interruptible)
|
|
353
|
-
|
|
354
|
-
export const uninterruptible = <R, E, A>(fx: Fx<R, E, A>): Fx<R, E, A> => core.middleware(fx, Effect.uninterruptible)
|
|
355
|
-
|
|
356
|
-
export const locally: {
|
|
357
|
-
<A>(self: FiberRef.FiberRef<A>, value: A): <R, E, B>(use: Fx<R, E, B>) => Fx<R, E, B>
|
|
358
|
-
<R, E, B, A>(use: Fx<R, E, B>, self: FiberRef.FiberRef<A>, value: A): Fx<R, E, B>
|
|
359
|
-
} = dual(3, function locally<R, E, B, A>(
|
|
360
|
-
use: Fx<R, E, B>,
|
|
361
|
-
self: FiberRef.FiberRef<A>,
|
|
362
|
-
value: A
|
|
363
|
-
): Fx<R, E, B> {
|
|
364
|
-
return core.middleware(use, (effect) => Effect.locally(effect, self, value))
|
|
365
|
-
})
|
|
366
|
-
|
|
367
|
-
export const locallyWith: {
|
|
368
|
-
<A>(self: FiberRef.FiberRef<A>, f: (a: A) => A): <R, E, B>(use: Fx<R, E, B>) => Fx<R, E, B>
|
|
369
|
-
<R, E, B, A>(use: Fx<R, E, B>, self: FiberRef.FiberRef<A>, f: (a: A) => A): Fx<R, E, B>
|
|
370
|
-
} = dual(3, function locally<R, E, B, A>(
|
|
371
|
-
use: Fx<R, E, B>,
|
|
372
|
-
self: FiberRef.FiberRef<A>,
|
|
373
|
-
f: (a: A) => A
|
|
374
|
-
): Fx<R, E, B> {
|
|
375
|
-
return core.middleware(use, (effect) => Effect.locallyWith(effect, self, f))
|
|
376
|
-
})
|
|
377
|
-
|
|
378
|
-
export const withTracerTiming: {
|
|
379
|
-
(enabled: boolean): <R, E, A>(fx: Fx<R, E, A>) => Fx<R, E, A>
|
|
380
|
-
<R, E, A>(fx: Fx<R, E, A>, enabled: boolean): Fx<R, E, A>
|
|
381
|
-
} = dual(2, function withTracerTiming<R, E, A>(
|
|
382
|
-
fx: Fx<R, E, A>,
|
|
383
|
-
enabled: boolean
|
|
384
|
-
): Fx<R, E, A> {
|
|
385
|
-
return core.middleware(fx, (effect) => Effect.withTracerTiming(effect, enabled))
|
|
386
|
-
})
|
|
387
|
-
|
|
388
|
-
export const withConcurrency: {
|
|
389
|
-
(concurrency: number | "unbounded"): <R, E, A>(fx: Fx<R, E, A>) => Fx<R, E, A>
|
|
390
|
-
<R, E, A>(fx: Fx<R, E, A>, concurrency: number | "unbounded"): Fx<R, E, A>
|
|
391
|
-
} = dual(2, function withConcurrency<R, E, A>(
|
|
392
|
-
fx: Fx<R, E, A>,
|
|
393
|
-
concurrency: number | "unbounded"
|
|
394
|
-
): Fx<R, E, A> {
|
|
395
|
-
return core.middleware(fx, (effect) => Effect.withConcurrency(effect, concurrency))
|
|
396
|
-
})
|
|
397
|
-
|
|
398
|
-
export const withConfigProvider: {
|
|
399
|
-
(configProvider: ConfigProvider): <R, E, A>(fx: Fx<R, E, A>) => Fx<R, E, A>
|
|
400
|
-
<R, E, A>(fx: Fx<R, E, A>, configProvider: ConfigProvider): Fx<R, E, A>
|
|
401
|
-
} = dual(2, function withConfigProvider<R, E, A>(
|
|
402
|
-
fx: Fx<R, E, A>,
|
|
403
|
-
configProvider: ConfigProvider
|
|
404
|
-
): Fx<R, E, A> {
|
|
405
|
-
return core.middleware(fx, (effect) => Effect.withConfigProvider(effect, configProvider))
|
|
406
|
-
})
|
|
407
|
-
|
|
408
|
-
export const withLogSpan: {
|
|
409
|
-
(span: string): <R, E, A>(fx: Fx<R, E, A>) => Fx<R, E, A>
|
|
410
|
-
<R, E, A>(fx: Fx<R, E, A>, span: string): Fx<R, E, A>
|
|
411
|
-
} = dual(2, function withLogSpan<R, E, A>(
|
|
412
|
-
fx: Fx<R, E, A>,
|
|
413
|
-
span: string
|
|
414
|
-
): Fx<R, E, A> {
|
|
415
|
-
return core.middleware(fx, (effect) => Effect.withLogSpan(effect, span))
|
|
416
|
-
})
|
|
417
|
-
|
|
418
|
-
export const withMaxOpsBeforeYield: {
|
|
419
|
-
(maxOps: number): <R, E, A>(fx: Fx<R, E, A>) => Fx<R, E, A>
|
|
420
|
-
<R, E, A>(fx: Fx<R, E, A>, maxOps: number): Fx<R, E, A>
|
|
421
|
-
} = dual(2, function withMaxOpsBeforeYield<R, E, A>(
|
|
422
|
-
fx: Fx<R, E, A>,
|
|
423
|
-
maxOps: number
|
|
424
|
-
): Fx<R, E, A> {
|
|
425
|
-
return core.middleware(fx, (effect) => Effect.withMaxOpsBeforeYield(effect, maxOps))
|
|
426
|
-
})
|
|
427
|
-
|
|
428
|
-
export const withParentSpan: {
|
|
429
|
-
(parentSpan: Tracer.ParentSpan): <R, E, A>(fx: Fx<R, E, A>) => Fx<R, E, A>
|
|
430
|
-
<R, E, A>(fx: Fx<R, E, A>, parentSpan: Tracer.ParentSpan): Fx<R, E, A>
|
|
431
|
-
} = dual(2, function withParentSpan<R, E, A>(
|
|
432
|
-
fx: Fx<R, E, A>,
|
|
433
|
-
parentSpan: Tracer.ParentSpan
|
|
434
|
-
): Fx<R, E, A> {
|
|
435
|
-
return core.middleware(fx, (effect) => Effect.withParentSpan(effect, parentSpan))
|
|
436
|
-
})
|
|
437
|
-
|
|
438
|
-
export const withRequestBatching: {
|
|
439
|
-
(requestBatching: boolean): <R, E, A>(fx: Fx<R, E, A>) => Fx<R, E, A>
|
|
440
|
-
<R, E, A>(fx: Fx<R, E, A>, requestBatching: boolean): Fx<R, E, A>
|
|
441
|
-
} = dual(2, function withRequestBatching<R, E, A>(
|
|
442
|
-
fx: Fx<R, E, A>,
|
|
443
|
-
requestBatching: boolean
|
|
444
|
-
): Fx<R, E, A> {
|
|
445
|
-
return core.middleware(fx, (effect) => Effect.withRequestBatching(effect, requestBatching))
|
|
446
|
-
})
|
|
447
|
-
|
|
448
|
-
export const withRequestCache: {
|
|
449
|
-
(cache: Request.Cache): <R, E, A>(fx: Fx<R, E, A>) => Fx<R, E, A>
|
|
450
|
-
<R, E, A>(fx: Fx<R, E, A>, cache: Request.Cache): Fx<R, E, A>
|
|
451
|
-
} = dual(2, function withRequestCache<R, E, A>(
|
|
452
|
-
fx: Fx<R, E, A>,
|
|
453
|
-
cache: Request.Cache
|
|
454
|
-
): Fx<R, E, A> {
|
|
455
|
-
return core.middleware(fx, (effect) => Effect.withRequestCache(effect, cache))
|
|
456
|
-
})
|
|
457
|
-
|
|
458
|
-
export const withRequestCaching: {
|
|
459
|
-
(requestCaching: boolean): <R, E, A>(fx: Fx<R, E, A>) => Fx<R, E, A>
|
|
460
|
-
<R, E, A>(fx: Fx<R, E, A>, requestCaching: boolean): Fx<R, E, A>
|
|
461
|
-
} = dual(2, function withRequestCaching<R, E, A>(
|
|
462
|
-
fx: Fx<R, E, A>,
|
|
463
|
-
requestCaching: boolean
|
|
464
|
-
): Fx<R, E, A> {
|
|
465
|
-
return core.middleware(fx, (effect) => Effect.withRequestCaching(effect, requestCaching))
|
|
466
|
-
})
|
|
467
|
-
|
|
468
|
-
export const withScheduler: {
|
|
469
|
-
(scheduler: Scheduler): <R, E, A>(fx: Fx<R, E, A>) => Fx<R, E, A>
|
|
470
|
-
<R, E, A>(fx: Fx<R, E, A>, scheduler: Scheduler): Fx<R, E, A>
|
|
471
|
-
} = dual(2, function withScheduler<R, E, A>(
|
|
472
|
-
fx: Fx<R, E, A>,
|
|
473
|
-
scheduler: Scheduler
|
|
474
|
-
): Fx<R, E, A> {
|
|
475
|
-
return core.middleware(fx, (effect) => Effect.withScheduler(effect, scheduler))
|
|
476
|
-
})
|
|
477
|
-
|
|
478
|
-
export const withSpan: {
|
|
479
|
-
(
|
|
480
|
-
name: string,
|
|
481
|
-
options?: {
|
|
482
|
-
readonly attributes?: Record<string, unknown>
|
|
483
|
-
readonly links?: ReadonlyArray<Tracer.SpanLink>
|
|
484
|
-
readonly parent?: Tracer.ParentSpan
|
|
485
|
-
readonly root?: boolean
|
|
486
|
-
readonly context?: Context.Context<never>
|
|
487
|
-
}
|
|
488
|
-
): <R, E, A>(self: Fx<R, E, A>) => Fx<R, E, A>
|
|
489
|
-
<R, E, A>(
|
|
490
|
-
self: Fx<R, E, A>,
|
|
491
|
-
name: string,
|
|
492
|
-
options?: {
|
|
493
|
-
readonly attributes?: Record<string, unknown>
|
|
494
|
-
readonly links?: ReadonlyArray<Tracer.SpanLink>
|
|
495
|
-
readonly parent?: Tracer.ParentSpan
|
|
496
|
-
readonly root?: boolean
|
|
497
|
-
readonly context?: Context.Context<never>
|
|
498
|
-
}
|
|
499
|
-
): Fx<R, E, A>
|
|
500
|
-
} = dual(3, function withSpan<R, E, A>(
|
|
501
|
-
self: Fx<R, E, A>,
|
|
502
|
-
name: string,
|
|
503
|
-
options: {
|
|
504
|
-
readonly attributes?: Record<string, unknown>
|
|
505
|
-
readonly links?: ReadonlyArray<Tracer.SpanLink>
|
|
506
|
-
readonly parent?: Tracer.ParentSpan
|
|
507
|
-
readonly root?: boolean
|
|
508
|
-
readonly context?: Context.Context<never>
|
|
509
|
-
} = {}
|
|
510
|
-
): Fx<R, E, A> {
|
|
511
|
-
return core.acquireUseRelease(
|
|
512
|
-
Effect.flatMap(
|
|
513
|
-
Effect.currentSpan,
|
|
514
|
-
(parent) => Effect.makeSpan(name, { ...options, parent: options?.parent || Option.getOrUndefined(parent) } as any)
|
|
515
|
-
),
|
|
516
|
-
(span) =>
|
|
517
|
-
core.middleware(
|
|
518
|
-
self,
|
|
519
|
-
(effect) => Effect.provideService(effect, Tracer.ParentSpan, span),
|
|
520
|
-
Sink.setSpan(span)
|
|
521
|
-
),
|
|
522
|
-
(span, exit) => Effect.flatMap(Clock.currentTimeNanos, (time) => Effect.sync(() => span.end(time, exit)))
|
|
523
|
-
)
|
|
524
|
-
})
|
|
525
|
-
|
|
526
|
-
export const withTracer: {
|
|
527
|
-
(tracer: Tracer.Tracer): <R, E, A>(fx: Fx<R, E, A>) => Fx<R, E, A>
|
|
528
|
-
<R, E, A>(fx: Fx<R, E, A>, tracer: Tracer.Tracer): Fx<R, E, A>
|
|
529
|
-
} = dual(2, function withTracer<R, E, A>(
|
|
530
|
-
fx: Fx<R, E, A>,
|
|
531
|
-
tracer: Tracer.Tracer
|
|
532
|
-
): Fx<R, E, A> {
|
|
533
|
-
return core.middleware(fx, (effect) => Effect.withTracer(effect, tracer))
|
|
534
|
-
})
|
|
535
|
-
|
|
536
|
-
export const partitionMap: {
|
|
537
|
-
<A, B, C>(f: (a: A) => Either.Either<B, C>): <R, E>(self: Fx<R, E, A>) => readonly [Fx<R, E, B>, Fx<R, E, C>]
|
|
538
|
-
<R, E, A, B, C>(self: Fx<R, E, A>, f: (a: A) => Either.Either<B, C>): readonly [Fx<R, E, B>, Fx<R, E, C>]
|
|
539
|
-
} = dual(2, <R, E, A, B, C>(self: Fx<R, E, A>, f: (a: A) => Either.Either<B, C>) => {
|
|
540
|
-
// Multicast such that listening to both streams only runs the Fx once.
|
|
541
|
-
const m = multicast(core.map(self, f))
|
|
542
|
-
|
|
543
|
-
return [
|
|
544
|
-
core.filterMap(m, Either.getLeft),
|
|
545
|
-
core.filterMap(m, Either.getRight)
|
|
546
|
-
] as const
|
|
547
|
-
})
|
|
548
|
-
|
|
549
|
-
export function fromDequeue<A>(dequeue: Queue.Dequeue<A>): Fx<never, never, A>
|
|
550
|
-
export function fromDequeue<I, A>(dequeue: Context.Dequeue<I, A>): Fx<I, never, A>
|
|
551
|
-
export function fromDequeue<I, A>(dequeue: Context.Dequeue<I, A> | Queue.Dequeue<A>): Fx<I, never, A> {
|
|
552
|
-
return core.fromSink((sink) =>
|
|
553
|
-
Effect.repeatWhileEffect(
|
|
554
|
-
Effect.matchCauseEffect(dequeue.take, sink),
|
|
555
|
-
() => dequeueIsActive(dequeue)
|
|
556
|
-
)
|
|
557
|
-
)
|
|
558
|
-
}
|
|
559
|
-
|
|
560
|
-
/**
|
|
561
|
-
* @internal
|
|
562
|
-
*/
|
|
563
|
-
export function dequeueIsActive<I, A>(
|
|
564
|
-
dequeue: Context.Dequeue<I, A> | Queue.Dequeue<A>
|
|
565
|
-
): Effect.Effect<I, never, boolean> {
|
|
566
|
-
if (Queue.DequeueTypeId in dequeue) {
|
|
567
|
-
return Effect.sync(() => dequeue.isActive())
|
|
568
|
-
} else {
|
|
569
|
-
return dequeue.isActive
|
|
570
|
-
}
|
|
571
|
-
}
|
|
572
|
-
|
|
573
|
-
export const toEnqueue: {
|
|
574
|
-
<A, B>(enqueue: Queue.Enqueue<A | B>): <R, E>(fx: Fx<R, E, A>) => Effect.Effect<R, E, void>
|
|
575
|
-
<I, A, B>(enqueue: Context.Enqueue<I, A | B>): <R, E>(fx: Fx<R, E, A>) => Effect.Effect<R | I, E, void>
|
|
576
|
-
<R, E, A, B>(fx: Fx<R, E, A>, enqueue: Queue.Enqueue<A | B>): Effect.Effect<R, E, void>
|
|
577
|
-
<R, E, I, A, B>(fx: Fx<R, E, A>, enqueue: Context.Enqueue<I, A | B>): Effect.Effect<R, E, void>
|
|
578
|
-
} = dual(
|
|
579
|
-
2,
|
|
580
|
-
function toEnqueue<R, E, I, A, B>(
|
|
581
|
-
fx: Fx<R, E, A>,
|
|
582
|
-
enqueue: Context.Enqueue<I, A | B> | Queue.Enqueue<A | B>
|
|
583
|
-
): Effect.Effect<R | I, E, void> {
|
|
584
|
-
return core.observe(fx, (a) => enqueue.offer(a))
|
|
585
|
-
}
|
|
586
|
-
)
|
|
587
|
-
|
|
588
|
-
export function fromPubSub<A>(PubSub: PubSub.PubSub<A>): Fx<Scope.Scope, never, A>
|
|
589
|
-
export function fromPubSub<I, A>(PubSub: Context.PubSub<I, A>): Fx<I | Scope.Scope, never, A>
|
|
590
|
-
export function fromPubSub<I, A>(PubSub: Context.PubSub<I, A> | PubSub.PubSub<A>): Fx<I | Scope.Scope, never, A> {
|
|
591
|
-
return core.acquireUseRelease(
|
|
592
|
-
PubSub.subscribe,
|
|
593
|
-
(q) => fromDequeue(q),
|
|
594
|
-
(d) => d.shutdown
|
|
595
|
-
)
|
|
596
|
-
}
|
|
597
|
-
|
|
598
|
-
export function drainLayer<FXS extends ReadonlyArray<Fx<any, never, any>>>(...fxs: FXS): Layer.Layer<
|
|
599
|
-
Exclude<Fx.Context<FXS[number]>, Scope.Scope>,
|
|
600
|
-
never,
|
|
601
|
-
never
|
|
602
|
-
> {
|
|
603
|
-
return Layer.scopedDiscard(Effect.forkScoped(core.drain(core.merge(fxs))))
|
|
604
|
-
}
|
|
605
|
-
|
|
606
|
-
export const mergeRace: {
|
|
607
|
-
<R2, E2, B>(other: Fx<R2, E2, B>): <R, E, A>(fx: Fx<R, E, A>) => Fx<R | R2, E | E2, A | B>
|
|
608
|
-
<R, E, A, R2, E2, B>(fx: Fx<R, E, A>, other: Fx<R2, E2, B>): Fx<R | R2, E | E2, A | B>
|
|
609
|
-
} = dual(
|
|
610
|
-
2,
|
|
611
|
-
function mergeRace<R, E, A, R2, E2, B>(fx: Fx<R, E, A>, other: Fx<R2, E2, B>): Fx<R | R2, E | E2, A | B> {
|
|
612
|
-
return core.withScopedFork(({ fork, sink }) =>
|
|
613
|
-
Effect.flatMap(
|
|
614
|
-
fork(run(other, sink)),
|
|
615
|
-
(otherFiber) => run(core.tap(fx, () => Fiber.interrupt(otherFiber)), sink)
|
|
616
|
-
)
|
|
617
|
-
)
|
|
618
|
-
}
|
|
619
|
-
)
|
package/src/internal/matchers.ts
DELETED
|
@@ -1,83 +0,0 @@
|
|
|
1
|
-
import * as Cause from "effect/Cause"
|
|
2
|
-
import * as Effect from "effect/Effect"
|
|
3
|
-
import * as TypeId from "../TypeId.js"
|
|
4
|
-
|
|
5
|
-
import type * as Sink from "../Sink.js"
|
|
6
|
-
|
|
7
|
-
import type { Fx, FxInput } from "../Fx.js"
|
|
8
|
-
import type { RefSubject } from "../RefSubject.js"
|
|
9
|
-
import type * as Primitive from "./fx-primitive.js"
|
|
10
|
-
|
|
11
|
-
export function matchFxPrimitive<B>(
|
|
12
|
-
matchers: {
|
|
13
|
-
readonly Empty: <R2>(fx: Primitive.Empty, sink: Sink.WithContext<R2, never, never>) => B
|
|
14
|
-
readonly Fail: <E, R2>(fx: Primitive.Fail<E>, sink: Sink.WithContext<R2, E, never>) => B
|
|
15
|
-
readonly FromIterable: <A, R2>(fx: Primitive.FromIterable<A>, sink: Sink.WithContext<R2, never, A>) => B
|
|
16
|
-
readonly FromSink: <R, E, A, R2>(fx: Primitive.FromSink<R, E, A>, sink: Sink.WithContext<R2, E, A>) => B
|
|
17
|
-
readonly Never: <R2>(fx: Primitive.Never, sink: Sink.WithContext<R2, never, never>) => B
|
|
18
|
-
readonly Succeed: <A, R2>(fx: Primitive.Succeed<A>, sink: Sink.WithContext<R2, never, A>) => B
|
|
19
|
-
readonly Suspend: <R, E, A, R2>(fx: Primitive.Suspend<R, E, A>, sink: Sink.WithContext<R2, E, A>) => B
|
|
20
|
-
readonly Sync: <A, R2>(fx: Primitive.Sync<A>, sink: Sink.WithContext<R2, never, A>) => B
|
|
21
|
-
readonly ToFx: <R, E, A, R2>(fx: Primitive.ToFx<R, E, A>, sink: Sink.WithContext<R2, E, A>) => B
|
|
22
|
-
readonly WithEarlyExit: <R, E, A, R2>(fx: Primitive.WithEarlyExit<R, E, A>, sink: Sink.WithContext<R2, E, A>) => B
|
|
23
|
-
readonly WithScopedFork: <R, E, A, R2>(
|
|
24
|
-
fx: Primitive.WithScopedFork<R, E, A>,
|
|
25
|
-
sink: Sink.WithContext<R2, E, A>
|
|
26
|
-
) => B
|
|
27
|
-
readonly WithFlattenStrategy: <R, E, A, R2>(
|
|
28
|
-
fx: Primitive.WithFlattenStrategy<R, E, A>,
|
|
29
|
-
sink: Sink.WithContext<R2, E, A>
|
|
30
|
-
) => B
|
|
31
|
-
readonly Transformer: <R, E, A, R2>(fx: Primitive.Transformer<R, E, A>, sink: Sink.WithContext<R2, E, A>) => B
|
|
32
|
-
readonly TransformerEffect: <R, E, A, R2>(
|
|
33
|
-
fx: Primitive.TransformerEffect<R, E, A>,
|
|
34
|
-
sink: Sink.WithContext<R2, E, A>
|
|
35
|
-
) => B
|
|
36
|
-
readonly TransformerCause: <R, E, A, R2>(
|
|
37
|
-
fx: Primitive.TransformerCause<R, E, A>,
|
|
38
|
-
sink: Sink.WithContext<R2, E, A>
|
|
39
|
-
) => B
|
|
40
|
-
readonly TransformerCauseEffect: <R, E, A, R2>(
|
|
41
|
-
fx: Primitive.TransformerCauseEffect<R, E, A>,
|
|
42
|
-
sink: Sink.WithContext<R2, E, A>
|
|
43
|
-
) => B
|
|
44
|
-
}
|
|
45
|
-
) {
|
|
46
|
-
return <R, E, A, R2>(fx: Fx<R, E, A>, sink: Sink.WithContext<R2, E, A>): B => {
|
|
47
|
-
return (matchers as any)[(fx as Primitive.Primitive)._fxTag](fx as any, sink)
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
export function matchFxInput<R, E, A, B>(fx: FxInput<R, E, A>, matchers: {
|
|
52
|
-
RefSubject: (fx: RefSubject<R, E, A>) => B
|
|
53
|
-
Fx: (fx: Fx<R, E, A>) => B
|
|
54
|
-
Effect: (effect: Effect.Effect<R, E, A>) => B
|
|
55
|
-
Cause: (cause: Cause.Cause<E>) => B
|
|
56
|
-
Iterable: (iterable: Iterable<A>) => B
|
|
57
|
-
Otherwise: (value: A) => B
|
|
58
|
-
}): B {
|
|
59
|
-
const type = typeof fx
|
|
60
|
-
if (!fx || !(type === "object" || type === "function")) return matchers.Otherwise(fx as A)
|
|
61
|
-
else if (isRefSubject(fx)) return matchers.RefSubject(fx)
|
|
62
|
-
else if (isFx(fx)) return matchers.Fx(fx)
|
|
63
|
-
else if (isEffect(fx)) return matchers.Effect(fx)
|
|
64
|
-
else if (isCause(fx)) return matchers.Cause(fx)
|
|
65
|
-
else if (Symbol.iterator in fx) return matchers.Iterable(fx)
|
|
66
|
-
else return matchers.Otherwise(fx as A)
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
function isFx<R, E, A>(input: FxInput<R, E, A>): input is Fx<R, E, A> {
|
|
70
|
-
return TypeId.TypeId in input
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
function isRefSubject<R, E, A>(input: FxInput<R, E, A>): input is RefSubject<R, E, A> {
|
|
74
|
-
return TypeId.RefSubjectTypeId in input
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
function isEffect<R, E, A>(input: FxInput<R, E, A>): input is Effect.Effect<R, E, A> {
|
|
78
|
-
return Effect.EffectTypeId in input
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
function isCause<R, E, A>(input: FxInput<R, E, A>): input is Cause.Cause<E> {
|
|
82
|
-
return Cause.CauseTypeId in input
|
|
83
|
-
}
|