@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/Form.ts
CHANGED
|
@@ -2,27 +2,28 @@
|
|
|
2
2
|
* @since 1.18.0
|
|
3
3
|
*/
|
|
4
4
|
import { AST } from "@effect/schema"
|
|
5
|
-
import type
|
|
6
|
-
import {
|
|
5
|
+
import { type ParseOptions } from "@effect/schema/AST"
|
|
6
|
+
import { make } from "@effect/schema/Equivalence"
|
|
7
7
|
import type { ParseError } from "@effect/schema/ParseResult"
|
|
8
8
|
import * as S from "@effect/schema/Schema"
|
|
9
|
-
import
|
|
10
|
-
import
|
|
11
|
-
import {
|
|
12
|
-
import type * as
|
|
9
|
+
import * as Cause from "effect/Cause"
|
|
10
|
+
import * as Effect from "effect/Effect"
|
|
11
|
+
import { hasProperty } from "effect/Predicate"
|
|
12
|
+
import type * as Scope from "effect/Scope"
|
|
13
13
|
import * as FormEntry from "./FormEntry.js"
|
|
14
14
|
import type { Fx } from "./Fx.js"
|
|
15
15
|
import * as core from "./internal/core.js"
|
|
16
16
|
import { FxEffectBase } from "./internal/protos.js"
|
|
17
17
|
import { hold } from "./internal/share.js"
|
|
18
|
-
import
|
|
18
|
+
import * as RefSubject from "./RefSubject.js"
|
|
19
|
+
import type * as Sink from "./Sink.js"
|
|
19
20
|
import { ComputedTypeId, FilteredTypeId, RefSubjectTypeId, TypeId } from "./TypeId.js"
|
|
20
21
|
import type * as Versioned from "./Versioned.js"
|
|
21
22
|
|
|
22
23
|
/**
|
|
23
24
|
* @since 1.18.0
|
|
24
25
|
*/
|
|
25
|
-
export const FormTypeId = Symbol.for("
|
|
26
|
+
export const FormTypeId = Symbol.for("@typed/fx/Form")
|
|
26
27
|
/**
|
|
27
28
|
* @since 1.18.0
|
|
28
29
|
*/
|
|
@@ -34,9 +35,10 @@ type AnyObjectWithKeys<K extends PropertyKey> = Readonly<Record<K, any>>
|
|
|
34
35
|
/**
|
|
35
36
|
* @since 1.18.0
|
|
36
37
|
*/
|
|
37
|
-
export interface Form<Entries extends Form.AnyEntries> extends
|
|
38
|
+
export interface Form<R, Entries extends Form.AnyEntries> extends
|
|
38
39
|
Form.Base<
|
|
39
|
-
Form.
|
|
40
|
+
R | Form.Context<Entries>,
|
|
41
|
+
Form.Error<Entries>,
|
|
40
42
|
Form.Input<Entries>,
|
|
41
43
|
Form.Output<Entries>,
|
|
42
44
|
Entries
|
|
@@ -53,8 +55,8 @@ export namespace Form {
|
|
|
53
55
|
/**
|
|
54
56
|
* @since 1.18.0
|
|
55
57
|
*/
|
|
56
|
-
export interface Base<E, I, O, Entries extends Form.AnyEntries>
|
|
57
|
-
extends Versioned.Versioned<
|
|
58
|
+
export interface Base<R, E, I, O, Entries extends Form.AnyEntries>
|
|
59
|
+
extends Versioned.Versioned<R, never, R | Scope.Scope, E | ParseError, I, R, E | ParseError, I>
|
|
58
60
|
{
|
|
59
61
|
readonly [FormTypeId]: FormTypeId
|
|
60
62
|
|
|
@@ -67,8 +69,8 @@ export namespace Form {
|
|
|
67
69
|
|
|
68
70
|
readonly get: <K extends keyof Entries>(key: K) => Entries[K]
|
|
69
71
|
|
|
70
|
-
readonly decoded: Computed<
|
|
71
|
-
|
|
72
|
+
readonly decoded: RefSubject.Computed<
|
|
73
|
+
R,
|
|
72
74
|
E | ParseError,
|
|
73
75
|
O
|
|
74
76
|
>
|
|
@@ -78,29 +80,40 @@ export namespace Form {
|
|
|
78
80
|
* @since 1.18.0
|
|
79
81
|
*/
|
|
80
82
|
export type AnyEntry =
|
|
81
|
-
| FormEntry.FormEntry<any, any, any>
|
|
82
|
-
| FormEntry.FormEntry<never, any, any>
|
|
83
|
-
| FormEntry.FormEntry<any, never, any>
|
|
84
|
-
| FormEntry.FormEntry<never, never, any>
|
|
85
|
-
| Base<any, any, any, any>
|
|
83
|
+
| FormEntry.FormEntry<any, any, any, any>
|
|
84
|
+
| FormEntry.FormEntry<any, never, any, any>
|
|
85
|
+
| FormEntry.FormEntry<any, any, never, any>
|
|
86
|
+
| FormEntry.FormEntry<any, never, never, any>
|
|
87
|
+
| Base<any, any, any, any, any>
|
|
88
|
+
| Base<any, never, any, any, any>
|
|
89
|
+
| Base<any, any, never, any, any>
|
|
90
|
+
| Base<any, never, never, any, any>
|
|
86
91
|
|
|
87
92
|
/**
|
|
88
93
|
* @since 1.18.0
|
|
89
94
|
*/
|
|
90
95
|
export type AnyEntries = Readonly<Record<PropertyKey, AnyEntry>>
|
|
91
96
|
|
|
97
|
+
/**
|
|
98
|
+
* @since 1.20.0
|
|
99
|
+
*/
|
|
100
|
+
export type Context<T> = [T] extends [FormEntry.FormEntry<infer R, infer _E, infer _I, infer _>] ? R :
|
|
101
|
+
[T] extends [Base<infer _R, infer _E, infer _I, infer _O, infer _Entries>] ?
|
|
102
|
+
_R | Context<_Entries[keyof _Entries]> :
|
|
103
|
+
never
|
|
104
|
+
|
|
92
105
|
/**
|
|
93
106
|
* @since 1.18.0
|
|
94
107
|
*/
|
|
95
|
-
export type Error<T> = [T] extends [FormEntry.FormEntry<infer E, infer _I, infer _>] ? E :
|
|
96
|
-
[T] extends [Base<infer _E, infer _I, infer _O, infer _Entries>] ? _E :
|
|
108
|
+
export type Error<T> = [T] extends [FormEntry.FormEntry<infer _R, infer E, infer _I, infer _>] ? E :
|
|
109
|
+
[T] extends [Base<infer _R, infer _E, infer _I, infer _O, infer _Entries>] ? _E :
|
|
97
110
|
never
|
|
98
111
|
|
|
99
112
|
/**
|
|
100
113
|
* @since 1.18.0
|
|
101
114
|
*/
|
|
102
|
-
export type Input<T> = [T] extends [FormEntry.FormEntry<infer _E, infer I, infer _>] ? I :
|
|
103
|
-
T extends Form<infer Entries> ? {
|
|
115
|
+
export type Input<T> = [T] extends [FormEntry.FormEntry<infer _R, infer _E, infer I, infer _>] ? I :
|
|
116
|
+
T extends Form<infer _R, infer Entries> ? {
|
|
104
117
|
readonly [K in keyof Entries]: Input<Entries[K]>
|
|
105
118
|
} :
|
|
106
119
|
T extends AnyEntries ? {
|
|
@@ -111,8 +124,8 @@ export namespace Form {
|
|
|
111
124
|
/**
|
|
112
125
|
* @since 1.18.0
|
|
113
126
|
*/
|
|
114
|
-
export type Output<T> = [T] extends [FormEntry.FormEntry<infer _E, infer _I, infer O>] ? O :
|
|
115
|
-
T extends Form<infer Entries> ? {
|
|
127
|
+
export type Output<T> = [T] extends [FormEntry.FormEntry<infer _R, infer _E, infer _I, infer O>] ? O :
|
|
128
|
+
T extends Form<infer _R, infer Entries> ? {
|
|
116
129
|
readonly [K in keyof Entries]: Output<Entries[K]>
|
|
117
130
|
} :
|
|
118
131
|
T extends AnyEntries ? {
|
|
@@ -123,9 +136,9 @@ export namespace Form {
|
|
|
123
136
|
/**
|
|
124
137
|
* @since 1.18.0
|
|
125
138
|
*/
|
|
126
|
-
export interface Derived<R, Entries extends AnyEntries> extends Form<Entries> {
|
|
139
|
+
export interface Derived<R, R2, Entries extends AnyEntries> extends Form<R, Entries> {
|
|
127
140
|
readonly persist: Effect.Effect<
|
|
128
|
-
|
|
141
|
+
R2,
|
|
129
142
|
Error<Entries>,
|
|
130
143
|
Output<Entries>
|
|
131
144
|
>
|
|
@@ -135,7 +148,7 @@ export namespace Form {
|
|
|
135
148
|
/**
|
|
136
149
|
* @since 1.18.0
|
|
137
150
|
*/
|
|
138
|
-
export function Form<Entries extends Form.AnyEntries>(entries: Entries): Form<Entries> {
|
|
151
|
+
export function Form<Entries extends Form.AnyEntries>(entries: Entries): Form<Form.Context<Entries>, Entries> {
|
|
139
152
|
return new FormImpl(entries) as any
|
|
140
153
|
}
|
|
141
154
|
|
|
@@ -146,22 +159,38 @@ export type MakeForm<
|
|
|
146
159
|
I extends AnyObject,
|
|
147
160
|
O extends AnyObjectWithKeys<keyof I>
|
|
148
161
|
> = {
|
|
149
|
-
<R, E>(fx: RefSubject<R, E, O>): Effect.Effect<
|
|
162
|
+
<R, E>(fx: RefSubject.RefSubject<R, E, O>): Effect.Effect<
|
|
163
|
+
R | Scope.Scope,
|
|
164
|
+
never,
|
|
165
|
+
[DerivedFromIO<R, never, E, I, O>] extends [Form.Derived<infer R, never, infer R2>] ? Form.Derived<R, never, R2>
|
|
166
|
+
: never
|
|
167
|
+
>
|
|
168
|
+
|
|
169
|
+
<R, E>(fx: Fx<R, E, O> | Effect.Effect<R, E, O>): Effect.Effect<
|
|
150
170
|
R | Scope.Scope,
|
|
151
171
|
never,
|
|
152
|
-
[
|
|
172
|
+
[FormFromIO<E, I, O>] extends [Form<never, infer R>] ? Form<never, R> : never
|
|
153
173
|
>
|
|
174
|
+
}
|
|
154
175
|
|
|
155
|
-
|
|
176
|
+
/**
|
|
177
|
+
* @since 1.20.0
|
|
178
|
+
*/
|
|
179
|
+
export type MakeInputForm<
|
|
180
|
+
I extends AnyObject,
|
|
181
|
+
O extends AnyObjectWithKeys<keyof I>
|
|
182
|
+
> = {
|
|
183
|
+
<R, E>(fx: RefSubject.RefSubject<R, E, I>): Effect.Effect<
|
|
156
184
|
R | Scope.Scope,
|
|
157
185
|
never,
|
|
158
|
-
[
|
|
186
|
+
[DerivedFromIO<R, never, E, I, O>] extends [Form.Derived<infer R, never, infer R2>] ? Form.Derived<R, never, R2>
|
|
187
|
+
: never
|
|
159
188
|
>
|
|
160
189
|
|
|
161
|
-
<R, E>(
|
|
162
|
-
R,
|
|
190
|
+
<R, E>(fx: Fx<R, E, I> | Effect.Effect<R, E, I>): Effect.Effect<
|
|
191
|
+
R | Scope.Scope,
|
|
163
192
|
never,
|
|
164
|
-
[FormFromIO<E, I, O>] extends [Form<infer R>] ? Form<R> : never
|
|
193
|
+
[FormFromIO<E, I, O>] extends [Form<never, infer R>] ? Form<never, R> : never
|
|
165
194
|
>
|
|
166
195
|
}
|
|
167
196
|
|
|
@@ -173,6 +202,7 @@ export type FormFromIO<
|
|
|
173
202
|
I extends AnyObject,
|
|
174
203
|
O extends AnyObjectWithKeys<keyof I>
|
|
175
204
|
> = Form<
|
|
205
|
+
never,
|
|
176
206
|
[FormEntriesFromIO<E, I, O>] extends [infer R] ? { readonly [K in keyof R]: R[K] } : never
|
|
177
207
|
>
|
|
178
208
|
|
|
@@ -185,9 +215,10 @@ export type FormEntriesFromIO<
|
|
|
185
215
|
O extends AnyObjectWithKeys<keyof I>
|
|
186
216
|
> = {
|
|
187
217
|
readonly [K in keyof I]-?: [I[K], O[K]] extends [AnyObject, AnyObjectWithKeys<keyof I[K]>] ? Form<
|
|
218
|
+
never,
|
|
188
219
|
[FormEntriesFromIO<E, I[K], O[K]>] extends [infer R] ? { readonly [K in keyof R]: R[K] } : never
|
|
189
220
|
> :
|
|
190
|
-
FormEntry.FormEntry<E, I[K], O[K]>
|
|
221
|
+
FormEntry.FormEntry<never, E, I[K], O[K]>
|
|
191
222
|
}
|
|
192
223
|
|
|
193
224
|
/**
|
|
@@ -195,20 +226,22 @@ export type FormEntriesFromIO<
|
|
|
195
226
|
*/
|
|
196
227
|
export type DerivedFromIO<
|
|
197
228
|
R,
|
|
229
|
+
R2,
|
|
198
230
|
E,
|
|
199
231
|
I extends Readonly<Record<PropertyKey, any>>,
|
|
200
232
|
O extends Readonly<Record<keyof I, any>>
|
|
201
233
|
> = Form.Derived<
|
|
202
234
|
R,
|
|
235
|
+
R2,
|
|
203
236
|
{
|
|
204
|
-
readonly [K in keyof I]-?: FormEntry.FormEntry<E, I[K], O[K]>
|
|
237
|
+
readonly [K in keyof I]-?: FormEntry.FormEntry<never, E, I[K], O[K]>
|
|
205
238
|
}
|
|
206
239
|
>
|
|
207
240
|
|
|
208
241
|
/**
|
|
209
|
-
* @since 1.
|
|
242
|
+
* @since 1.20.0
|
|
210
243
|
*/
|
|
211
|
-
export function
|
|
244
|
+
export function derive<
|
|
212
245
|
I extends Partial<Readonly<Record<PropertyKey, any>>>,
|
|
213
246
|
O extends Partial<AnyObjectWithKeys<keyof I>>
|
|
214
247
|
>(schema: S.Schema<I, O>): MakeForm<I, O> {
|
|
@@ -218,7 +251,11 @@ export function make<
|
|
|
218
251
|
|
|
219
252
|
if (RefSubjectTypeId in input) {
|
|
220
253
|
return Object.assign(form, {
|
|
221
|
-
persist: Effect.
|
|
254
|
+
persist: Effect.matchEffect(form.decoded, {
|
|
255
|
+
onFailure: (error: Fx.Error<typeof input> | ParseError) =>
|
|
256
|
+
isParseError(error) ? Effect.unit : input.onFailure(Cause.fail(error)),
|
|
257
|
+
onSuccess: (a: O) => input.onSuccess(a)
|
|
258
|
+
})
|
|
222
259
|
})
|
|
223
260
|
}
|
|
224
261
|
|
|
@@ -226,19 +263,48 @@ export function make<
|
|
|
226
263
|
})
|
|
227
264
|
}
|
|
228
265
|
|
|
266
|
+
/**
|
|
267
|
+
* @since 1.18.0
|
|
268
|
+
*/
|
|
269
|
+
export function deriveInput<
|
|
270
|
+
I extends Partial<Readonly<Record<PropertyKey, any>>>,
|
|
271
|
+
O extends Partial<AnyObjectWithKeys<keyof I>>
|
|
272
|
+
>(schema: S.Schema<I, O>): MakeInputForm<I, O> {
|
|
273
|
+
return <R, E>(input: RefSubject.RefSubject<R, E, I> | Fx<R, E, I> | Effect.Effect<R, E, I>) =>
|
|
274
|
+
Effect.map(deriveMakeInputEntries(input, schema.ast), (entries) => {
|
|
275
|
+
const form = (Form as any)(entries)
|
|
276
|
+
|
|
277
|
+
if (RefSubjectTypeId in input) {
|
|
278
|
+
return Object.assign(form, {
|
|
279
|
+
persist: Effect.matchEffect(form, {
|
|
280
|
+
onFailure: (error: E | ParseError) =>
|
|
281
|
+
isParseError(error) ? Effect.unit : input.onFailure(Cause.fail(error)),
|
|
282
|
+
onSuccess: (a: I) => input.onSuccess(a)
|
|
283
|
+
})
|
|
284
|
+
})
|
|
285
|
+
}
|
|
286
|
+
|
|
287
|
+
return form
|
|
288
|
+
})
|
|
289
|
+
}
|
|
290
|
+
|
|
291
|
+
function isParseError(u: unknown): u is ParseError {
|
|
292
|
+
return hasProperty(u, "_tag") && u["_tag"] === "ParseError"
|
|
293
|
+
}
|
|
294
|
+
|
|
229
295
|
const parseOptions: ParseOptions = { errors: "all", onExcessProperty: "ignore" }
|
|
230
296
|
|
|
231
|
-
// @ts-expect-error
|
|
232
297
|
class FormImpl<Entries extends Form.AnyEntries> extends FxEffectBase<
|
|
233
|
-
|
|
234
|
-
never,
|
|
298
|
+
Form.Context<Entries> | Scope.Scope,
|
|
235
299
|
Form.Error<Entries> | ParseError,
|
|
236
300
|
Form.Input<Entries>,
|
|
237
|
-
|
|
301
|
+
Form.Context<Entries>,
|
|
238
302
|
Form.Error<Entries> | ParseError,
|
|
239
303
|
Form.Input<Entries>
|
|
240
|
-
> implements Form<Entries> {
|
|
304
|
+
> implements Form<Form.Context<Entries>, Entries> {
|
|
241
305
|
readonly [FormTypeId]: FormTypeId = FormTypeId
|
|
306
|
+
private _fx: Fx<Scope.Scope, ParseError | Form.Error<Entries>, Form.Input<Entries>>
|
|
307
|
+
readonly version: Effect.Effect<never, never, number>
|
|
242
308
|
|
|
243
309
|
constructor(readonly entries: Entries) {
|
|
244
310
|
super()
|
|
@@ -253,20 +319,23 @@ class FormImpl<Entries extends Form.AnyEntries> extends FxEffectBase<
|
|
|
253
319
|
>,
|
|
254
320
|
(versions) => versions.reduce((a, b) => a + b, 0)
|
|
255
321
|
)
|
|
256
|
-
}
|
|
257
322
|
|
|
258
|
-
|
|
323
|
+
this._fx = hold(
|
|
324
|
+
core.skipRepeatsWith(
|
|
325
|
+
core.struct(this.entries as any) as Fx<never, Form.Error<Entries> | ParseError, Form.Input<Entries>>,
|
|
326
|
+
make(S.from(this.schema))
|
|
327
|
+
)
|
|
328
|
+
)
|
|
329
|
+
}
|
|
259
330
|
|
|
260
|
-
|
|
331
|
+
get: Form<Form.Context<Entries>, Entries>["get"] = (k) => this.entries[k]
|
|
261
332
|
|
|
262
|
-
|
|
333
|
+
schema: Form<Form.Context<Entries>, Entries>["schema"]
|
|
263
334
|
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
> {
|
|
269
|
-
return hold(core.skipRepeatsWith(core.struct(this.entries as any) as any, from(this.schema))) as any
|
|
335
|
+
run<R3>(
|
|
336
|
+
sink: Sink.Sink<R3, Form.Error<Entries> | ParseError, Form.Input<Entries>>
|
|
337
|
+
): Effect.Effect<R3 | Scope.Scope, never, unknown> {
|
|
338
|
+
return this._fx.run(sink)
|
|
270
339
|
}
|
|
271
340
|
|
|
272
341
|
toEffect(): Effect.Effect<
|
|
@@ -275,12 +344,12 @@ class FormImpl<Entries extends Form.AnyEntries> extends FxEffectBase<
|
|
|
275
344
|
Form.Input<Entries>
|
|
276
345
|
> {
|
|
277
346
|
return (
|
|
278
|
-
Effect.all(this.entries
|
|
347
|
+
Effect.all(this.entries, { concurrency: "unbounded" }) as any
|
|
279
348
|
)
|
|
280
349
|
}
|
|
281
350
|
|
|
282
|
-
decoded: Form<Entries>["decoded"] =
|
|
283
|
-
this
|
|
351
|
+
decoded: Form<Form.Context<Entries>, Entries>["decoded"] = RefSubject.mapEffect(
|
|
352
|
+
this,
|
|
284
353
|
(i) => S.decode(this.schema)(i, parseOptions)
|
|
285
354
|
)
|
|
286
355
|
}
|
|
@@ -305,7 +374,7 @@ function buildSchema<Entries extends Form.AnyEntries>(
|
|
|
305
374
|
|
|
306
375
|
type DeriveEntries<E, I extends Readonly<Record<PropertyKey, any>>, O extends Readonly<Record<keyof I, any>>> = {
|
|
307
376
|
readonly [K in keyof I]: I[K] extends Readonly<Record<PropertyKey, any>> ? DeriveEntries<E, I[K], O[K]>
|
|
308
|
-
: FormEntry.FormEntry<E, I[K], O[K]>
|
|
377
|
+
: FormEntry.FormEntry<never, E, I[K], O[K]>
|
|
309
378
|
}
|
|
310
379
|
|
|
311
380
|
const deriveMakeEntries = <
|
|
@@ -314,7 +383,7 @@ const deriveMakeEntries = <
|
|
|
314
383
|
I extends Readonly<Record<PropertyKey, any>>,
|
|
315
384
|
O extends Readonly<Record<keyof I, any>>
|
|
316
385
|
>(
|
|
317
|
-
input: RefSubject<R, E, O> | Fx<R, E, O> | Effect.Effect<R, E, O>,
|
|
386
|
+
input: RefSubject.RefSubject<R, E, O> | Fx<R, E, O> | Effect.Effect<R, E, O>,
|
|
318
387
|
ast: AST.AST
|
|
319
388
|
): Effect.Effect<R | Scope.Scope, never, DeriveEntries<E, I, O>> =>
|
|
320
389
|
Effect.suspend(() => {
|
|
@@ -340,7 +409,57 @@ const deriveMakeEntries = <
|
|
|
340
409
|
)
|
|
341
410
|
} else {
|
|
342
411
|
entries[prop.name] = yield* _(
|
|
343
|
-
FormEntry.
|
|
412
|
+
FormEntry.derive<any, any>({
|
|
413
|
+
name: prop.name,
|
|
414
|
+
schema: S.make(ast)
|
|
415
|
+
})(nested as Fx<R, E, any>)
|
|
416
|
+
)
|
|
417
|
+
}
|
|
418
|
+
}
|
|
419
|
+
|
|
420
|
+
return entries
|
|
421
|
+
})
|
|
422
|
+
}
|
|
423
|
+
default: {
|
|
424
|
+
// TODO: Wrap in an error
|
|
425
|
+
return Effect.die(new TypeError("Form.deriveMakeEntries only supports TypeLiteral schemas."))
|
|
426
|
+
}
|
|
427
|
+
}
|
|
428
|
+
})
|
|
429
|
+
|
|
430
|
+
const deriveMakeInputEntries = <
|
|
431
|
+
R,
|
|
432
|
+
E,
|
|
433
|
+
I extends Readonly<Record<PropertyKey, any>>,
|
|
434
|
+
O extends Readonly<Record<keyof I, any>>
|
|
435
|
+
>(
|
|
436
|
+
input: RefSubject.RefSubject<R, E, I> | Fx<R, E, I> | Effect.Effect<R, E, I>,
|
|
437
|
+
ast: AST.AST
|
|
438
|
+
): Effect.Effect<R | Scope.Scope, never, DeriveEntries<E, I, O>> =>
|
|
439
|
+
Effect.suspend(() => {
|
|
440
|
+
switch (ast._tag) {
|
|
441
|
+
case "TypeLiteral": {
|
|
442
|
+
const propertySignatures = ast.propertySignatures
|
|
443
|
+
|
|
444
|
+
return Effect.gen(function*(_) {
|
|
445
|
+
const entries: any = {}
|
|
446
|
+
|
|
447
|
+
for (const prop of propertySignatures) {
|
|
448
|
+
const nested = propOf(input, prop.name)
|
|
449
|
+
const ast = prop.isOptional ? AST.createUnion([prop.type, AST.undefinedKeyword]) : prop.type
|
|
450
|
+
|
|
451
|
+
if (prop.type._tag === "TypeLiteral") {
|
|
452
|
+
entries[prop.name] = Form(
|
|
453
|
+
(yield* _(
|
|
454
|
+
deriveMakeInputEntries(
|
|
455
|
+
nested,
|
|
456
|
+
ast
|
|
457
|
+
)
|
|
458
|
+
)) as any
|
|
459
|
+
)
|
|
460
|
+
} else {
|
|
461
|
+
entries[prop.name] = yield* _(
|
|
462
|
+
FormEntry.deriveInput<any, any>({
|
|
344
463
|
name: prop.name,
|
|
345
464
|
schema: S.make(ast)
|
|
346
465
|
})(nested as Fx<R, E, any>)
|
|
@@ -352,6 +471,7 @@ const deriveMakeEntries = <
|
|
|
352
471
|
})
|
|
353
472
|
}
|
|
354
473
|
default: {
|
|
474
|
+
// TODO: Wrap in an error
|
|
355
475
|
return Effect.die(new TypeError("Form.deriveMakeEntries only supports TypeLiteral schemas."))
|
|
356
476
|
}
|
|
357
477
|
}
|
|
@@ -359,15 +479,15 @@ const deriveMakeEntries = <
|
|
|
359
479
|
|
|
360
480
|
const propOf = <R, E, O>(
|
|
361
481
|
input:
|
|
362
|
-
| RefSubject<R, E, O>
|
|
363
|
-
| Computed<R, E, O>
|
|
364
|
-
|
|
|
482
|
+
| RefSubject.RefSubject<R, E, O>
|
|
483
|
+
| RefSubject.Computed<R, E, O>
|
|
484
|
+
| RefSubject.Filtered<R, E, O>
|
|
365
485
|
| Fx<R, E, O>
|
|
366
486
|
| Effect.Effect<R, E, O>,
|
|
367
487
|
key: keyof O
|
|
368
488
|
) => {
|
|
369
489
|
if (RefSubjectTypeId in input || ComputedTypeId in input || FilteredTypeId in input) {
|
|
370
|
-
return
|
|
490
|
+
return RefSubject.map(input, (o) => o[key])
|
|
371
491
|
} else if (TypeId in input) return core.map(input, (o) => o[key])
|
|
372
492
|
else return Effect.map(input, (o) => o[key])
|
|
373
493
|
}
|