@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/dist/esm/Form.js
CHANGED
|
@@ -2,19 +2,21 @@
|
|
|
2
2
|
* @since 1.18.0
|
|
3
3
|
*/
|
|
4
4
|
import { AST } from "@effect/schema";
|
|
5
|
-
import {
|
|
5
|
+
import { make } from "@effect/schema/Equivalence";
|
|
6
6
|
import * as S from "@effect/schema/Schema";
|
|
7
|
-
import
|
|
8
|
-
import
|
|
7
|
+
import * as Cause from "effect/Cause";
|
|
8
|
+
import * as Effect from "effect/Effect";
|
|
9
|
+
import { hasProperty } from "effect/Predicate";
|
|
9
10
|
import * as FormEntry from "./FormEntry.js";
|
|
10
11
|
import * as core from "./internal/core.js";
|
|
11
12
|
import { FxEffectBase } from "./internal/protos.js";
|
|
12
13
|
import { hold } from "./internal/share.js";
|
|
14
|
+
import * as RefSubject from "./RefSubject.js";
|
|
13
15
|
import { ComputedTypeId, FilteredTypeId, RefSubjectTypeId, TypeId } from "./TypeId.js";
|
|
14
16
|
/**
|
|
15
17
|
* @since 1.18.0
|
|
16
18
|
*/
|
|
17
|
-
export const FormTypeId = Symbol.for("
|
|
19
|
+
export const FormTypeId = Symbol.for("@typed/fx/Form");
|
|
18
20
|
/**
|
|
19
21
|
* @since 1.18.0
|
|
20
22
|
*/
|
|
@@ -22,24 +24,48 @@ export function Form(entries) {
|
|
|
22
24
|
return new FormImpl(entries);
|
|
23
25
|
}
|
|
24
26
|
/**
|
|
25
|
-
* @since 1.
|
|
27
|
+
* @since 1.20.0
|
|
26
28
|
*/
|
|
27
|
-
export function
|
|
29
|
+
export function derive(schema) {
|
|
28
30
|
return (input) => Effect.map(deriveMakeEntries(input, schema.ast), (entries) => {
|
|
29
31
|
const form = Form(entries);
|
|
30
32
|
if (RefSubjectTypeId in input) {
|
|
31
33
|
return Object.assign(form, {
|
|
32
|
-
persist: Effect.
|
|
34
|
+
persist: Effect.matchEffect(form.decoded, {
|
|
35
|
+
onFailure: (error) => isParseError(error) ? Effect.unit : input.onFailure(Cause.fail(error)),
|
|
36
|
+
onSuccess: (a) => input.onSuccess(a)
|
|
37
|
+
})
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
return form;
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* @since 1.18.0
|
|
45
|
+
*/
|
|
46
|
+
export function deriveInput(schema) {
|
|
47
|
+
return (input) => Effect.map(deriveMakeInputEntries(input, schema.ast), (entries) => {
|
|
48
|
+
const form = Form(entries);
|
|
49
|
+
if (RefSubjectTypeId in input) {
|
|
50
|
+
return Object.assign(form, {
|
|
51
|
+
persist: Effect.matchEffect(form, {
|
|
52
|
+
onFailure: (error) => isParseError(error) ? Effect.unit : input.onFailure(Cause.fail(error)),
|
|
53
|
+
onSuccess: (a) => input.onSuccess(a)
|
|
54
|
+
})
|
|
33
55
|
});
|
|
34
56
|
}
|
|
35
57
|
return form;
|
|
36
58
|
});
|
|
37
59
|
}
|
|
60
|
+
function isParseError(u) {
|
|
61
|
+
return hasProperty(u, "_tag") && u["_tag"] === "ParseError";
|
|
62
|
+
}
|
|
38
63
|
const parseOptions = { errors: "all", onExcessProperty: "ignore" };
|
|
39
|
-
// @ts-expect-error
|
|
40
64
|
class FormImpl extends FxEffectBase {
|
|
41
65
|
entries;
|
|
42
66
|
[FormTypeId] = FormTypeId;
|
|
67
|
+
_fx;
|
|
68
|
+
version;
|
|
43
69
|
constructor(entries) {
|
|
44
70
|
super();
|
|
45
71
|
this.entries = entries;
|
|
@@ -47,17 +73,17 @@ class FormImpl extends FxEffectBase {
|
|
|
47
73
|
this.version = Effect.map(
|
|
48
74
|
// @ts-ignore Infinite type instantiation
|
|
49
75
|
Effect.all(Object.values(entries).map((e) => e.version)), (versions) => versions.reduce((a, b) => a + b, 0));
|
|
76
|
+
this._fx = hold(core.skipRepeatsWith(core.struct(this.entries), make(S.from(this.schema))));
|
|
50
77
|
}
|
|
51
78
|
get = (k) => this.entries[k];
|
|
52
79
|
schema;
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
return hold(core.skipRepeatsWith(core.struct(this.entries), from(this.schema)));
|
|
80
|
+
run(sink) {
|
|
81
|
+
return this._fx.run(sink);
|
|
56
82
|
}
|
|
57
83
|
toEffect() {
|
|
58
84
|
return Effect.all(this.entries, { concurrency: "unbounded" });
|
|
59
85
|
}
|
|
60
|
-
decoded =
|
|
86
|
+
decoded = RefSubject.mapEffect(this, (i) => S.decode(this.schema)(i, parseOptions));
|
|
61
87
|
}
|
|
62
88
|
function buildSchema(entries) {
|
|
63
89
|
const schemas = {};
|
|
@@ -85,7 +111,35 @@ const deriveMakeEntries = (input, ast) => Effect.suspend(() => {
|
|
|
85
111
|
entries[prop.name] = Form((yield* _(deriveMakeEntries(nested, ast))));
|
|
86
112
|
}
|
|
87
113
|
else {
|
|
88
|
-
entries[prop.name] = yield* _(FormEntry.
|
|
114
|
+
entries[prop.name] = yield* _(FormEntry.derive({
|
|
115
|
+
name: prop.name,
|
|
116
|
+
schema: S.make(ast)
|
|
117
|
+
})(nested));
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
return entries;
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
default: {
|
|
124
|
+
// TODO: Wrap in an error
|
|
125
|
+
return Effect.die(new TypeError("Form.deriveMakeEntries only supports TypeLiteral schemas."));
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
});
|
|
129
|
+
const deriveMakeInputEntries = (input, ast) => Effect.suspend(() => {
|
|
130
|
+
switch (ast._tag) {
|
|
131
|
+
case "TypeLiteral": {
|
|
132
|
+
const propertySignatures = ast.propertySignatures;
|
|
133
|
+
return Effect.gen(function* (_) {
|
|
134
|
+
const entries = {};
|
|
135
|
+
for (const prop of propertySignatures) {
|
|
136
|
+
const nested = propOf(input, prop.name);
|
|
137
|
+
const ast = prop.isOptional ? AST.createUnion([prop.type, AST.undefinedKeyword]) : prop.type;
|
|
138
|
+
if (prop.type._tag === "TypeLiteral") {
|
|
139
|
+
entries[prop.name] = Form((yield* _(deriveMakeInputEntries(nested, ast))));
|
|
140
|
+
}
|
|
141
|
+
else {
|
|
142
|
+
entries[prop.name] = yield* _(FormEntry.deriveInput({
|
|
89
143
|
name: prop.name,
|
|
90
144
|
schema: S.make(ast)
|
|
91
145
|
})(nested));
|
|
@@ -95,13 +149,14 @@ const deriveMakeEntries = (input, ast) => Effect.suspend(() => {
|
|
|
95
149
|
});
|
|
96
150
|
}
|
|
97
151
|
default: {
|
|
152
|
+
// TODO: Wrap in an error
|
|
98
153
|
return Effect.die(new TypeError("Form.deriveMakeEntries only supports TypeLiteral schemas."));
|
|
99
154
|
}
|
|
100
155
|
}
|
|
101
156
|
});
|
|
102
157
|
const propOf = (input, key) => {
|
|
103
158
|
if (RefSubjectTypeId in input || ComputedTypeId in input || FilteredTypeId in input) {
|
|
104
|
-
return
|
|
159
|
+
return RefSubject.map(input, (o) => o[key]);
|
|
105
160
|
}
|
|
106
161
|
else if (TypeId in input)
|
|
107
162
|
return core.map(input, (o) => o[key]);
|
package/dist/esm/Form.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Form.js","sourceRoot":"","sources":["../../src/Form.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAA;AAEpC,OAAO,EAAE,IAAI,EAAE,MAAM,4BAA4B,CAAA;AAEjD,OAAO,KAAK,CAAC,MAAM,uBAAuB,CAAA;
|
|
1
|
+
{"version":3,"file":"Form.js","sourceRoot":"","sources":["../../src/Form.ts"],"names":[],"mappings":"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"}
|
package/dist/esm/FormEntry.js
CHANGED
|
@@ -2,71 +2,96 @@
|
|
|
2
2
|
* @since 1.18.0
|
|
3
3
|
*/
|
|
4
4
|
import { Schema } from "@effect/schema";
|
|
5
|
-
import * as
|
|
6
|
-
import
|
|
7
|
-
import
|
|
8
|
-
import
|
|
9
|
-
import {
|
|
10
|
-
import { makeHoldSubject } from "./internal/core-subject.js";
|
|
11
|
-
import { DeferredRef } from "./internal/deferred-ref.js";
|
|
12
|
-
import { Sink } from "./Sink.js";
|
|
13
|
-
import { RefSubjectTypeId, TypeId } from "./TypeId.js";
|
|
5
|
+
import * as Effect from "effect/Effect";
|
|
6
|
+
import * as Fx from "./Fx.js";
|
|
7
|
+
import { FxEffectBase } from "./internal/protos.js";
|
|
8
|
+
import * as RefSubject from "./RefSubject.js";
|
|
9
|
+
import { ComputedTypeId, RefSubjectTypeId } from "./TypeId.js";
|
|
14
10
|
/**
|
|
15
11
|
* @since 1.18.0
|
|
16
12
|
*/
|
|
17
|
-
export function
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
13
|
+
export function derive(options) {
|
|
14
|
+
const encode = Schema.encode(options.schema);
|
|
15
|
+
const decode = Schema.decode(options.schema);
|
|
16
|
+
const makeFormEntry = (input) => {
|
|
17
|
+
const initial = Fx.mapEffect(Effect.isEffect(input) ? Fx.fromEffect(input) : input, (o) => encode(o, parseOptions));
|
|
18
|
+
return Effect.map(RefSubject.make(initial), (inputRef) => {
|
|
19
|
+
if (RefSubject.isRefSubject(input)) {
|
|
20
|
+
const persist = Effect.flatMap(Effect.flatMap(inputRef, (i) => decode(i, parseOptions)), (o) => RefSubject.set(input, o));
|
|
21
|
+
return new DerivedFormEntryImpl(inputRef, options.name, options.schema, RefSubject.isDerived(input) ? Effect.tap(persist, () => input.persist) : persist);
|
|
22
|
+
}
|
|
23
|
+
else {
|
|
24
|
+
return new FromEntryImpl(inputRef, options.name, options.schema);
|
|
25
|
+
}
|
|
26
|
+
});
|
|
27
|
+
};
|
|
28
|
+
return makeFormEntry;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* @since 1.18.0
|
|
32
|
+
*/
|
|
33
|
+
export function deriveInput(options) {
|
|
34
|
+
const decode = Schema.decode(options.schema);
|
|
35
|
+
const makeFormEntry = (input) => {
|
|
36
|
+
const initial = Effect.isEffect(input) ? Fx.fromEffect(input) : input;
|
|
37
|
+
return Effect.map(RefSubject.make(initial), (inputRef) => {
|
|
38
|
+
if (RefSubject.isRefSubject(input)) {
|
|
39
|
+
const persist = Effect.flatMap(Effect.flatMap(inputRef, (i) => RefSubject.set(input, i)), (i) => decode(i, parseOptions));
|
|
40
|
+
return new DerivedFormEntryImpl(inputRef, options.name, options.schema, RefSubject.isDerived(input) ? Effect.tap(persist, () => input.persist) : persist);
|
|
41
|
+
}
|
|
42
|
+
else {
|
|
43
|
+
return new FromEntryImpl(inputRef, options.name, options.schema);
|
|
44
|
+
}
|
|
45
|
+
});
|
|
46
|
+
};
|
|
47
|
+
return makeFormEntry;
|
|
29
48
|
}
|
|
30
49
|
const parseOptions = {
|
|
31
50
|
errors: "all",
|
|
32
51
|
onExcessProperty: "ignore"
|
|
33
52
|
};
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
}
|
|
37
|
-
function makeFxFormEntry(input, options) {
|
|
38
|
-
const encode_ = Schema.encode(options.schema);
|
|
39
|
-
return Effect.gen(function* (_) {
|
|
40
|
-
const deferred = new DeferredRef(yield* _(Deferred.make()));
|
|
41
|
-
const entry = FormEntryImpl.formEntry(deferred, options.name, options.schema);
|
|
42
|
-
const done = (exit) => Effect.flatMap(Effect.exit(Effect.flatMap(exit, encode_)), (exit) => Effect.flatMap(deferred.done(exit), (closed) => {
|
|
43
|
-
if (closed)
|
|
44
|
-
return Effect.unit;
|
|
45
|
-
return Exit.match(exit, entry);
|
|
46
|
-
}));
|
|
47
|
-
yield* _(Effect.forkScoped(run(input, Sink((e) => done(Exit.failCause(e)), (a) => done(Exit.succeed(a))))));
|
|
48
|
-
return entry;
|
|
49
|
-
});
|
|
50
|
-
}
|
|
51
|
-
function makeDerivedFormEntry(input, options) {
|
|
52
|
-
const decode_ = Schema.decode(options.schema);
|
|
53
|
-
return Effect.map(makeFxFormEntry(input, options), (entry) => Object.assign(entry, {
|
|
54
|
-
persist: input.updateEffect(() => Effect.flatMap(entry, decode_))
|
|
55
|
-
}));
|
|
56
|
-
}
|
|
57
|
-
class FormEntryImpl extends RefSubjectImpl {
|
|
53
|
+
class FromEntryImpl extends FxEffectBase {
|
|
54
|
+
ref;
|
|
58
55
|
name;
|
|
59
56
|
schema;
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
57
|
+
[ComputedTypeId] = ComputedTypeId;
|
|
58
|
+
[RefSubjectTypeId] = RefSubjectTypeId;
|
|
59
|
+
decoded;
|
|
60
|
+
version;
|
|
61
|
+
subscriberCount;
|
|
62
|
+
interrupt;
|
|
63
|
+
constructor(ref, name, schema) {
|
|
64
|
+
super();
|
|
65
|
+
this.ref = ref;
|
|
63
66
|
this.name = name;
|
|
64
67
|
this.schema = schema;
|
|
65
|
-
|
|
68
|
+
const decode = Schema.decode(schema);
|
|
69
|
+
this.decoded = RefSubject.mapEffect(ref, (i) => decode(i, parseOptions));
|
|
70
|
+
this.version = ref.version;
|
|
71
|
+
this.subscriberCount = ref.subscriberCount;
|
|
72
|
+
this.interrupt = ref.interrupt;
|
|
66
73
|
}
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
74
|
+
run(sink) {
|
|
75
|
+
return this.ref.run(sink);
|
|
76
|
+
}
|
|
77
|
+
toEffect() {
|
|
78
|
+
return this.ref;
|
|
79
|
+
}
|
|
80
|
+
runUpdates(f) {
|
|
81
|
+
return this.ref.runUpdates(f);
|
|
82
|
+
}
|
|
83
|
+
onFailure(cause) {
|
|
84
|
+
return this.ref.onFailure(cause);
|
|
85
|
+
}
|
|
86
|
+
onSuccess(value) {
|
|
87
|
+
return this.ref.onSuccess(value);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
class DerivedFormEntryImpl extends FromEntryImpl {
|
|
91
|
+
persist;
|
|
92
|
+
constructor(ref, name, schema, persist) {
|
|
93
|
+
super(ref, name, schema);
|
|
94
|
+
this.persist = persist;
|
|
70
95
|
}
|
|
71
96
|
}
|
|
72
97
|
//# sourceMappingURL=FormEntry.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FormEntry.js","sourceRoot":"","sources":["../../src/FormEntry.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;
|
|
1
|
+
{"version":3,"file":"FormEntry.js","sourceRoot":"","sources":["../../src/FormEntry.ts"],"names":[],"mappings":"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"}
|