@fougere/schema 0.2.0-alpha.2 → 0.4.0-alpha.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/README.md +1 -1
- package/dist/EntityAdapters.d.ts +26 -0
- package/dist/EntityAdapters.d.ts.map +1 -0
- package/dist/EntityAdapters.js +71 -0
- package/dist/EntityAdapters.js.map +1 -0
- package/dist/EntityDeclarations.d.ts +15 -0
- package/dist/EntityDeclarations.d.ts.map +1 -0
- package/dist/EntityDeclarations.js +2 -0
- package/dist/EntityDeclarations.js.map +1 -0
- package/dist/axis/Axis.d.ts +12 -0
- package/dist/axis/Axis.d.ts.map +1 -0
- package/dist/axis/Axis.js +11 -0
- package/dist/axis/Axis.js.map +1 -0
- package/dist/axis/Meta.d.ts +4 -0
- package/dist/axis/Meta.d.ts.map +1 -0
- package/dist/axis/Meta.js +2 -0
- package/dist/axis/Meta.js.map +1 -0
- package/dist/axis/boundary/Boundaries.d.ts +20 -0
- package/dist/axis/boundary/Boundaries.d.ts.map +1 -0
- package/dist/axis/boundary/Boundaries.js +31 -0
- package/dist/axis/boundary/Boundaries.js.map +1 -0
- package/dist/axis/boundary/Boundary.d.ts +26 -0
- package/dist/axis/boundary/Boundary.d.ts.map +1 -0
- package/dist/axis/boundary/Boundary.js +53 -0
- package/dist/axis/boundary/Boundary.js.map +1 -0
- package/dist/axis/boundary/BoundaryAxis.d.ts +4 -0
- package/dist/axis/boundary/BoundaryAxis.d.ts.map +1 -0
- package/dist/axis/boundary/BoundaryAxis.js +30 -0
- package/dist/axis/boundary/BoundaryAxis.js.map +1 -0
- package/dist/axis/lifecycle/Clock.d.ts +18 -0
- package/dist/axis/lifecycle/Clock.d.ts.map +1 -0
- package/dist/axis/lifecycle/Clock.js +25 -0
- package/dist/axis/lifecycle/Clock.js.map +1 -0
- package/dist/axis/lifecycle/Generators.d.ts +18 -0
- package/dist/axis/lifecycle/Generators.d.ts.map +1 -0
- package/dist/axis/lifecycle/Generators.js +38 -0
- package/dist/axis/lifecycle/Generators.js.map +1 -0
- package/dist/axis/lifecycle/Lifecycle.d.ts +28 -0
- package/dist/axis/lifecycle/Lifecycle.d.ts.map +1 -0
- package/dist/axis/lifecycle/Lifecycle.js +38 -0
- package/dist/axis/lifecycle/Lifecycle.js.map +1 -0
- package/dist/axis/lifecycle/LifecycleAxis.d.ts +4 -0
- package/dist/axis/lifecycle/LifecycleAxis.d.ts.map +1 -0
- package/dist/axis/lifecycle/LifecycleAxis.js +47 -0
- package/dist/axis/lifecycle/LifecycleAxis.js.map +1 -0
- package/dist/axis/lifecycle/apply.d.ts +6 -0
- package/dist/axis/lifecycle/apply.d.ts.map +1 -0
- package/dist/axis/lifecycle/apply.js +34 -0
- package/dist/axis/lifecycle/apply.js.map +1 -0
- package/dist/axis/role/Relation.d.ts +20 -0
- package/dist/axis/role/Relation.d.ts.map +1 -0
- package/dist/axis/role/Relation.js +21 -0
- package/dist/axis/role/Relation.js.map +1 -0
- package/dist/axis/role/Role.d.ts +26 -0
- package/dist/axis/role/Role.d.ts.map +1 -0
- package/dist/axis/role/Role.js +40 -0
- package/dist/axis/role/Role.js.map +1 -0
- package/dist/axis/role/RoleAxis.d.ts +5 -0
- package/dist/axis/role/RoleAxis.d.ts.map +1 -0
- package/dist/axis/role/RoleAxis.js +102 -0
- package/dist/axis/role/RoleAxis.js.map +1 -0
- package/dist/axis/shape/Formats.d.ts +8 -0
- package/dist/axis/shape/Formats.d.ts.map +1 -0
- package/dist/axis/shape/Formats.js +10 -0
- package/dist/axis/shape/Formats.js.map +1 -0
- package/dist/axis/shape/Shape.d.ts +58 -0
- package/dist/axis/shape/Shape.d.ts.map +1 -0
- package/dist/{field/shape.js → axis/shape/Shape.js} +10 -25
- package/dist/axis/shape/Shape.js.map +1 -0
- package/dist/card/Bundle.d.ts +15 -0
- package/dist/card/Bundle.d.ts.map +1 -0
- package/dist/card/Bundle.js +67 -0
- package/dist/card/Bundle.js.map +1 -0
- package/dist/card/Card.d.ts +27 -0
- package/dist/card/Card.d.ts.map +1 -0
- package/dist/card/Card.js +230 -0
- package/dist/card/Card.js.map +1 -0
- package/dist/card/Descriptor.d.ts +55 -0
- package/dist/card/Descriptor.d.ts.map +1 -0
- package/dist/card/Descriptor.js +2 -0
- package/dist/card/Descriptor.js.map +1 -0
- package/dist/card/EntityTypeSource.d.ts +12 -0
- package/dist/card/EntityTypeSource.d.ts.map +1 -0
- package/dist/card/EntityTypeSource.js +78 -0
- package/dist/card/EntityTypeSource.js.map +1 -0
- package/dist/card/FacadeTypeSource.d.ts +19 -0
- package/dist/card/FacadeTypeSource.d.ts.map +1 -0
- package/dist/card/FacadeTypeSource.js +40 -0
- package/dist/card/FacadeTypeSource.js.map +1 -0
- package/dist/card/admission.d.ts +9 -0
- package/dist/card/admission.d.ts.map +1 -0
- package/dist/card/admission.js +16 -0
- package/dist/card/admission.js.map +1 -0
- package/dist/card/diff.d.ts +96 -0
- package/dist/card/diff.d.ts.map +1 -0
- package/dist/card/diff.js +2 -0
- package/dist/card/diff.js.map +1 -0
- package/dist/constraint/FieldGroup.d.ts +21 -0
- package/dist/constraint/FieldGroup.d.ts.map +1 -0
- package/dist/constraint/FieldGroup.js +65 -0
- package/dist/constraint/FieldGroup.js.map +1 -0
- package/dist/constraint/Unique.d.ts +4 -0
- package/dist/constraint/Unique.d.ts.map +1 -0
- package/dist/constraint/Unique.js +4 -0
- package/dist/constraint/Unique.js.map +1 -0
- package/dist/entity.d.ts +4 -19
- package/dist/entity.d.ts.map +1 -1
- package/dist/entity.js +8 -39
- package/dist/entity.js.map +1 -1
- package/dist/fields/Field.d.ts +24 -0
- package/dist/fields/Field.d.ts.map +1 -0
- package/dist/fields/Field.js +52 -0
- package/dist/fields/Field.js.map +1 -0
- package/dist/fields/FieldSet.d.ts +28 -0
- package/dist/fields/FieldSet.d.ts.map +1 -0
- package/dist/fields/FieldSet.js +55 -0
- package/dist/fields/FieldSet.js.map +1 -0
- package/dist/index.d.ts +59 -37
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +50 -48
- package/dist/index.js.map +1 -1
- package/dist/judge/Cases.d.ts +50 -0
- package/dist/judge/Cases.d.ts.map +1 -0
- package/dist/judge/Cases.js +108 -0
- package/dist/judge/Cases.js.map +1 -0
- package/dist/judge/FieldJudge.d.ts +9 -0
- package/dist/judge/FieldJudge.d.ts.map +1 -0
- package/dist/judge/FieldJudge.js +54 -0
- package/dist/judge/FieldJudge.js.map +1 -0
- package/dist/judge/RowJudge.d.ts +12 -0
- package/dist/judge/RowJudge.d.ts.map +1 -0
- package/dist/judge/RowJudge.js +81 -0
- package/dist/judge/RowJudge.js.map +1 -0
- package/dist/judge/RowRefusal.d.ts +17 -0
- package/dist/judge/RowRefusal.d.ts.map +1 -0
- package/dist/judge/RowRefusal.js +16 -0
- package/dist/judge/RowRefusal.js.map +1 -0
- package/dist/judge/ValueForm.d.ts +3 -0
- package/dist/judge/ValueForm.d.ts.map +1 -0
- package/dist/judge/ValueForm.js +3 -0
- package/dist/judge/ValueForm.js.map +1 -0
- package/dist/judge/ValueJudge.d.ts +12 -0
- package/dist/judge/ValueJudge.d.ts.map +1 -0
- package/dist/judge/ValueJudge.js +60 -0
- package/dist/judge/ValueJudge.js.map +1 -0
- package/dist/judge/options.d.ts +4 -0
- package/dist/judge/options.d.ts.map +1 -0
- package/dist/judge/options.js +2 -0
- package/dist/judge/options.js.map +1 -0
- package/dist/judge/result.d.ts +17 -0
- package/dist/judge/result.d.ts.map +1 -0
- package/dist/judge/result.js +2 -0
- package/dist/judge/result.js.map +1 -0
- package/dist/projection/SchemaOrCard.d.ts +7 -0
- package/dist/projection/SchemaOrCard.d.ts.map +1 -0
- package/dist/projection/SchemaOrCard.js +11 -0
- package/dist/projection/SchemaOrCard.js.map +1 -0
- package/dist/projection/Visibility.d.ts +10 -0
- package/dist/projection/Visibility.d.ts.map +1 -0
- package/dist/projection/Visibility.js +55 -0
- package/dist/projection/Visibility.js.map +1 -0
- package/dist/{projections → projection}/standard.d.ts +2 -10
- package/dist/projection/standard.d.ts.map +1 -0
- package/dist/projection/standard.js +2 -0
- package/dist/projection/standard.js.map +1 -0
- package/dist/schema/Schema.d.ts +63 -0
- package/dist/schema/Schema.d.ts.map +1 -0
- package/dist/schema/Schema.js +129 -0
- package/dist/schema/Schema.js.map +1 -0
- package/dist/schema/SchemaDefinition.d.ts +46 -0
- package/dist/schema/SchemaDefinition.d.ts.map +1 -0
- package/dist/schema/SchemaDefinition.js +64 -0
- package/dist/schema/SchemaDefinition.js.map +1 -0
- package/dist/schema/SchemaDerivation.d.ts +28 -0
- package/dist/schema/SchemaDerivation.d.ts.map +1 -0
- package/dist/schema/SchemaDerivation.js +37 -0
- package/dist/schema/SchemaDerivation.js.map +1 -0
- package/dist/schema/SchemaView.d.ts +23 -0
- package/dist/schema/SchemaView.d.ts.map +1 -0
- package/dist/schema/SchemaView.js +2 -0
- package/dist/schema/SchemaView.js.map +1 -0
- package/dist/utils.d.ts +4 -0
- package/dist/utils.d.ts.map +1 -0
- package/dist/utils.js +13 -0
- package/dist/utils.js.map +1 -0
- package/dist/vocabulary/bool.d.ts +1 -1
- package/dist/vocabulary/bool.d.ts.map +1 -1
- package/dist/vocabulary/bool.js +1 -1
- package/dist/vocabulary/bool.js.map +1 -1
- package/dist/vocabulary/created.d.ts +1 -5
- package/dist/vocabulary/created.d.ts.map +1 -1
- package/dist/vocabulary/created.js +1 -5
- package/dist/vocabulary/created.js.map +1 -1
- package/dist/vocabulary/date.d.ts +1 -1
- package/dist/vocabulary/date.d.ts.map +1 -1
- package/dist/vocabulary/date.js +1 -1
- package/dist/vocabulary/date.js.map +1 -1
- package/dist/vocabulary/email.d.ts +1 -2
- package/dist/vocabulary/email.d.ts.map +1 -1
- package/dist/vocabulary/email.js +0 -1
- package/dist/vocabulary/email.js.map +1 -1
- package/dist/vocabulary/immutable.d.ts +2 -6
- package/dist/vocabulary/immutable.d.ts.map +1 -1
- package/dist/vocabulary/immutable.js +4 -7
- package/dist/vocabulary/immutable.js.map +1 -1
- package/dist/vocabulary/indexed.d.ts +2 -7
- package/dist/vocabulary/indexed.d.ts.map +1 -1
- package/dist/vocabulary/indexed.js +2 -8
- package/dist/vocabulary/indexed.js.map +1 -1
- package/dist/vocabulary/json.d.ts +2 -10
- package/dist/vocabulary/json.d.ts.map +1 -1
- package/dist/vocabulary/json.js +12 -7
- package/dist/vocabulary/json.js.map +1 -1
- package/dist/vocabulary/list.d.ts +1 -12
- package/dist/vocabulary/list.d.ts.map +1 -1
- package/dist/vocabulary/list.js +1 -14
- package/dist/vocabulary/list.js.map +1 -1
- package/dist/vocabulary/many.d.ts +2 -5
- package/dist/vocabulary/many.d.ts.map +1 -1
- package/dist/vocabulary/many.js +3 -6
- package/dist/vocabulary/many.js.map +1 -1
- package/dist/vocabulary/nullable.d.ts +2 -6
- package/dist/vocabulary/nullable.d.ts.map +1 -1
- package/dist/vocabulary/nullable.js +5 -8
- package/dist/vocabulary/nullable.js.map +1 -1
- package/dist/vocabulary/number.d.ts +1 -1
- package/dist/vocabulary/number.d.ts.map +1 -1
- package/dist/vocabulary/number.js +1 -1
- package/dist/vocabulary/number.js.map +1 -1
- package/dist/vocabulary/oneOf.d.ts +1 -8
- package/dist/vocabulary/oneOf.d.ts.map +1 -1
- package/dist/vocabulary/oneOf.js +1 -1
- package/dist/vocabulary/oneOf.js.map +1 -1
- package/dist/vocabulary/optional.d.ts +2 -9
- package/dist/vocabulary/optional.d.ts.map +1 -1
- package/dist/vocabulary/optional.js +6 -14
- package/dist/vocabulary/optional.js.map +1 -1
- package/dist/vocabulary/primary.d.ts +2 -15
- package/dist/vocabulary/primary.d.ts.map +1 -1
- package/dist/vocabulary/primary.js +4 -11
- package/dist/vocabulary/primary.js.map +1 -1
- package/dist/vocabulary/readOnly.d.ts +2 -6
- package/dist/vocabulary/readOnly.d.ts.map +1 -1
- package/dist/vocabulary/readOnly.js +5 -8
- package/dist/vocabulary/readOnly.js.map +1 -1
- package/dist/vocabulary/ref.d.ts +2 -7
- package/dist/vocabulary/ref.d.ts.map +1 -1
- package/dist/vocabulary/ref.js +3 -14
- package/dist/vocabulary/ref.js.map +1 -1
- package/dist/vocabulary/text.d.ts +2 -2
- package/dist/vocabulary/text.d.ts.map +1 -1
- package/dist/vocabulary/text.js +1 -1
- package/dist/vocabulary/text.js.map +1 -1
- package/dist/vocabulary/unique.d.ts +2 -12
- package/dist/vocabulary/unique.d.ts.map +1 -1
- package/dist/vocabulary/unique.js +5 -13
- package/dist/vocabulary/unique.js.map +1 -1
- package/dist/vocabulary/updated.d.ts +1 -6
- package/dist/vocabulary/updated.d.ts.map +1 -1
- package/dist/vocabulary/updated.js +0 -5
- package/dist/vocabulary/updated.js.map +1 -1
- package/dist/vocabulary/url.d.ts +1 -2
- package/dist/vocabulary/url.d.ts.map +1 -1
- package/dist/vocabulary/url.js +0 -1
- package/dist/vocabulary/url.js.map +1 -1
- package/dist/vocabulary/vocabulary.d.ts +4 -0
- package/dist/vocabulary/vocabulary.d.ts.map +1 -0
- package/dist/vocabulary/vocabulary.js +31 -0
- package/dist/vocabulary/vocabulary.js.map +1 -0
- package/dist/vocabulary/writeOnly.d.ts +2 -6
- package/dist/vocabulary/writeOnly.d.ts.map +1 -1
- package/dist/vocabulary/writeOnly.js +5 -8
- package/dist/vocabulary/writeOnly.js.map +1 -1
- package/package.json +8 -4
- package/src/EntityAdapters.ts +95 -0
- package/src/EntityDeclarations.ts +19 -0
- package/src/axis/Axis.ts +25 -0
- package/src/axis/Meta.ts +3 -0
- package/src/axis/boundary/Boundaries.ts +44 -0
- package/src/axis/boundary/Boundary.ts +69 -0
- package/src/axis/boundary/BoundaryAxis.ts +32 -0
- package/src/axis/lifecycle/Clock.ts +26 -0
- package/src/axis/lifecycle/Generators.ts +46 -0
- package/src/axis/lifecycle/Lifecycle.ts +53 -0
- package/src/axis/lifecycle/LifecycleAxis.ts +49 -0
- package/src/axis/lifecycle/apply.ts +38 -0
- package/src/axis/role/Relation.ts +31 -0
- package/src/axis/role/Role.ts +56 -0
- package/src/axis/role/RoleAxis.ts +115 -0
- package/src/axis/shape/Formats.ts +22 -0
- package/src/axis/shape/Shape.ts +91 -0
- package/src/card/Bundle.ts +80 -0
- package/src/card/Card.ts +256 -0
- package/src/card/Descriptor.ts +68 -0
- package/src/card/EntityTypeSource.ts +90 -0
- package/src/card/FacadeTypeSource.ts +55 -0
- package/src/card/admission.ts +25 -0
- package/src/card/diff.ts +56 -0
- package/src/constraint/FieldGroup.ts +91 -0
- package/src/constraint/Unique.ts +3 -0
- package/src/entity.ts +15 -0
- package/src/fields/Field.ts +80 -0
- package/src/fields/FieldSet.ts +62 -0
- package/src/index.ts +64 -0
- package/src/judge/Cases.ts +139 -0
- package/src/judge/FieldJudge.ts +61 -0
- package/src/judge/RowJudge.ts +84 -0
- package/src/judge/RowRefusal.ts +17 -0
- package/src/judge/ValueForm.ts +7 -0
- package/src/judge/ValueJudge.ts +72 -0
- package/src/judge/options.ts +3 -0
- package/src/judge/result.ts +10 -0
- package/src/projection/SchemaOrCard.ts +18 -0
- package/src/projection/Visibility.ts +47 -0
- package/src/projection/standard.ts +47 -0
- package/src/schema/Schema.ts +167 -0
- package/src/schema/SchemaDefinition.ts +87 -0
- package/src/schema/SchemaDerivation.ts +46 -0
- package/src/schema/SchemaView.ts +25 -0
- package/src/utils.ts +13 -0
- package/src/vocabulary/bool.ts +9 -0
- package/src/vocabulary/created.ts +8 -0
- package/src/vocabulary/date.ts +5 -0
- package/src/vocabulary/email.ts +6 -0
- package/src/vocabulary/immutable.ts +6 -0
- package/src/vocabulary/indexed.ts +4 -0
- package/src/vocabulary/json.ts +22 -0
- package/src/vocabulary/list.ts +13 -0
- package/src/vocabulary/many.ts +9 -0
- package/src/vocabulary/nullable.ts +7 -0
- package/src/vocabulary/number.ts +17 -0
- package/src/vocabulary/oneOf.ts +24 -0
- package/src/vocabulary/optional.ts +8 -0
- package/src/vocabulary/primary.ts +33 -0
- package/src/vocabulary/readOnly.ts +7 -0
- package/src/vocabulary/ref.ts +13 -0
- package/src/vocabulary/text.ts +19 -0
- package/src/vocabulary/unique.ts +10 -0
- package/src/vocabulary/updated.ts +7 -0
- package/src/vocabulary/url.ts +6 -0
- package/src/vocabulary/vocabulary.ts +40 -0
- package/src/vocabulary/writeOnly.ts +7 -0
- package/dist/field/boundary.d.ts +0 -69
- package/dist/field/boundary.d.ts.map +0 -1
- package/dist/field/boundary.js +0 -82
- package/dist/field/boundary.js.map +0 -1
- package/dist/field/field.d.ts +0 -21
- package/dist/field/field.d.ts.map +0 -1
- package/dist/field/field.js +0 -24
- package/dist/field/field.js.map +0 -1
- package/dist/field/format.d.ts +0 -29
- package/dist/field/format.d.ts.map +0 -1
- package/dist/field/format.js +0 -24
- package/dist/field/format.js.map +0 -1
- package/dist/field/index.d.ts +0 -8
- package/dist/field/index.d.ts.map +0 -1
- package/dist/field/index.js +0 -10
- package/dist/field/index.js.map +0 -1
- package/dist/field/lifecycle.d.ts +0 -31
- package/dist/field/lifecycle.d.ts.map +0 -1
- package/dist/field/lifecycle.js +0 -20
- package/dist/field/lifecycle.js.map +0 -1
- package/dist/field/meta.d.ts +0 -5
- package/dist/field/meta.d.ts.map +0 -1
- package/dist/field/meta.js +0 -5
- package/dist/field/meta.js.map +0 -1
- package/dist/field/role.d.ts +0 -47
- package/dist/field/role.d.ts.map +0 -1
- package/dist/field/role.js +0 -35
- package/dist/field/role.js.map +0 -1
- package/dist/field/shape.d.ts +0 -89
- package/dist/field/shape.d.ts.map +0 -1
- package/dist/field/shape.js.map +0 -1
- package/dist/hints.d.ts +0 -28
- package/dist/hints.d.ts.map +0 -1
- package/dist/hints.js +0 -23
- package/dist/hints.js.map +0 -1
- package/dist/name.d.ts +0 -8
- package/dist/name.d.ts.map +0 -1
- package/dist/name.js +0 -10
- package/dist/name.js.map +0 -1
- package/dist/projections/card.d.ts +0 -98
- package/dist/projections/card.d.ts.map +0 -1
- package/dist/projections/card.js +0 -8
- package/dist/projections/card.js.map +0 -1
- package/dist/projections/describe.d.ts +0 -25
- package/dist/projections/describe.d.ts.map +0 -1
- package/dist/projections/describe.js +0 -131
- package/dist/projections/describe.js.map +0 -1
- package/dist/projections/encode.d.ts +0 -11
- package/dist/projections/encode.d.ts.map +0 -1
- package/dist/projections/encode.js +0 -26
- package/dist/projections/encode.js.map +0 -1
- package/dist/projections/io.d.ts +0 -24
- package/dist/projections/io.d.ts.map +0 -1
- package/dist/projections/io.js +0 -46
- package/dist/projections/io.js.map +0 -1
- package/dist/projections/lifecycle.d.ts +0 -29
- package/dist/projections/lifecycle.d.ts.map +0 -1
- package/dist/projections/lifecycle.js +0 -93
- package/dist/projections/lifecycle.js.map +0 -1
- package/dist/projections/reconstruct.d.ts +0 -31
- package/dist/projections/reconstruct.d.ts.map +0 -1
- package/dist/projections/reconstruct.js +0 -146
- package/dist/projections/reconstruct.js.map +0 -1
- package/dist/projections/source.d.ts +0 -18
- package/dist/projections/source.d.ts.map +0 -1
- package/dist/projections/source.js +0 -18
- package/dist/projections/source.js.map +0 -1
- package/dist/projections/standard.d.ts.map +0 -1
- package/dist/projections/standard.js +0 -10
- package/dist/projections/standard.js.map +0 -1
- package/dist/projections/typescript.d.ts +0 -37
- package/dist/projections/typescript.d.ts.map +0 -1
- package/dist/projections/typescript.js +0 -157
- package/dist/projections/typescript.js.map +0 -1
- package/dist/schema/index.d.ts +0 -3
- package/dist/schema/index.d.ts.map +0 -1
- package/dist/schema/index.js +0 -2
- package/dist/schema/index.js.map +0 -1
- package/dist/schema/schema.d.ts +0 -74
- package/dist/schema/schema.d.ts.map +0 -1
- package/dist/schema/schema.js +0 -162
- package/dist/schema/schema.js.map +0 -1
- package/dist/schema/view.d.ts +0 -26
- package/dist/schema/view.d.ts.map +0 -1
- package/dist/schema/view.js +0 -2
- package/dist/schema/view.js.map +0 -1
- package/dist/unique.d.ts +0 -40
- package/dist/unique.d.ts.map +0 -1
- package/dist/unique.js +0 -57
- package/dist/unique.js.map +0 -1
- package/dist/validation/index.d.ts +0 -4
- package/dist/validation/index.d.ts.map +0 -1
- package/dist/validation/index.js +0 -2
- package/dist/validation/index.js.map +0 -1
- package/dist/validation/judge.d.ts +0 -55
- package/dist/validation/judge.d.ts.map +0 -1
- package/dist/validation/judge.js +0 -351
- package/dist/validation/judge.js.map +0 -1
- package/dist/validation/options.d.ts +0 -6
- package/dist/validation/options.d.ts.map +0 -1
- package/dist/validation/options.js +0 -3
- package/dist/validation/options.js.map +0 -1
- package/dist/validation/result.d.ts +0 -20
- package/dist/validation/result.d.ts.map +0 -1
- package/dist/validation/result.js +0 -3
- package/dist/validation/result.js.map +0 -1
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
import type { Field, Fields } from '../field/index.js';
|
|
2
|
-
import type { Checked, ValidationResult } from './result.js';
|
|
3
|
-
import type { ValidateOptions } from './options.js';
|
|
4
|
-
/**
|
|
5
|
-
* The one judge, at the three levels anything is judged: a field's DECLARATION, one VALUE
|
|
6
|
-
* against its shape, a ROW against a field map. Same answer shape at all three.
|
|
7
|
-
*
|
|
8
|
-
* A class and not three functions because it holds state: the per-shape plan cache. The
|
|
9
|
-
* closed vocabularies belong to the axes that close them — this file imports them.
|
|
10
|
-
*/
|
|
11
|
-
export declare class Judge {
|
|
12
|
-
/**
|
|
13
|
-
* One plan per shape — the shape object IS the source JSON Schema (the closed
|
|
14
|
-
* grammar the helpers emit), handed straight to the engine. Keyed by the shape
|
|
15
|
-
* reference (stable: derivations copy field refs, `partial()` spreads the field but
|
|
16
|
-
* keeps the same `shape`), built once and reused so the parse cost is amortised —
|
|
17
|
-
* and so an unresolvable format is refused once per shape, never per value.
|
|
18
|
-
*/
|
|
19
|
-
private static readonly plans;
|
|
20
|
-
private static planFor;
|
|
21
|
-
/**
|
|
22
|
-
* Resolve a declared format, and REFUSE a name neither the engine nor the registry
|
|
23
|
-
* knows: the engine ignores an unknown format in silence, so a typo would let every
|
|
24
|
-
* value through while the card claims the field is constrained.
|
|
25
|
-
*
|
|
26
|
-
* SCOPE: the field's own shape — a format nested inside `json(Entity)` is not reached.
|
|
27
|
-
*/
|
|
28
|
-
private static customFormatOf;
|
|
29
|
-
/**
|
|
30
|
-
* Validate a present value (null included) against its field — pure, never mutates.
|
|
31
|
-
*
|
|
32
|
-
* Reads `shape` and nothing else, so it answers "is this a legal value?" without ever
|
|
33
|
-
* asking who is speaking. That is what makes it usable on the way OUT of the domain,
|
|
34
|
-
* where the client-only axes (`boundary`, `lifecycle`) do not apply.
|
|
35
|
-
*/
|
|
36
|
-
static value(field: Field, value: unknown): Checked;
|
|
37
|
-
/** `'now' | 'optional' | { value } | { generate: <name> }` — the four ways absence is answered. */
|
|
38
|
-
private static checkCreate;
|
|
39
|
-
private static checkLifecycle;
|
|
40
|
-
private static checkRelation;
|
|
41
|
-
private static checkRole;
|
|
42
|
-
/**
|
|
43
|
-
* The registry is OPEN, so a name cannot be checked here — `declaredBoundary` resolves it
|
|
44
|
-
* and throws `Unknown boundary alias` at the one place that can know. Only the FORM is
|
|
45
|
-
* judged: a name, or a pair of directional rules.
|
|
46
|
-
*/
|
|
47
|
-
private static checkBoundary;
|
|
48
|
-
/** Judge a field's declaration — the five axes against their closed vocabularies. */
|
|
49
|
-
static field(value: unknown): ValidationResult<Field>;
|
|
50
|
-
/** Judge an input object against a field map — membership, absence, and who may speak. */
|
|
51
|
-
static row(fields: Fields, input: unknown, opts?: ValidateOptions): ValidationResult<Record<string, unknown>>;
|
|
52
|
-
/** The same judgment, as a boolean. */
|
|
53
|
-
static isField(value: unknown): value is Field;
|
|
54
|
-
}
|
|
55
|
-
//# sourceMappingURL=judge.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"judge.d.ts","sourceRoot":"","sources":["../../src/validation/judge.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,EAA0B,MAAM,mBAAmB,CAAC;AAK/E,OAAO,KAAK,EAAE,OAAO,EAAmB,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC9E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAgBpD;;;;;;GAMG;AACH,qBAAa,KAAK;IAChB;;;;;;OAMG;IACH,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAoC;IAEjE,OAAO,CAAC,MAAM,CAAC,OAAO;IAetB;;;;;;OAMG;IACH,OAAO,CAAC,MAAM,CAAC,cAAc;IAW7B;;;;;;OAMG;IAEH,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAiClD;IAED,mGAAmG;IACnG,OAAO,CAAC,MAAM,CAAC,WAAW;IAoB1B,OAAO,CAAC,MAAM,CAAC,cAAc;IAoB7B,OAAO,CAAC,MAAM,CAAC,aAAa;IAgC5B,OAAO,CAAC,MAAM,CAAC,SAAS;IAiCxB;;;;OAIG;IACH,OAAO,CAAC,MAAM,CAAC,aAAa;IAwB5B,qFAAqF;IAErF,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAsCpD;IAED,0FAA0F;IAC1F,MAAM,CAAC,GAAG,CACR,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,OAAO,EACd,IAAI,GAAE,eAAoB,GACvB,gBAAgB,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CA8E7C;IAED,uCAAuC;IACvC,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,KAAK,CAE7C;CACF"}
|
package/dist/validation/judge.js
DELETED
|
@@ -1,351 +0,0 @@
|
|
|
1
|
-
import { CREATE_TOKENS, UPDATE_TOKENS } from '../field/lifecycle.js';
|
|
2
|
-
import { ON_DELETE, RELATION_KINDS } from '../field/role.js';
|
|
3
|
-
import { Anatomy, Formats, boundaryOf, isShape, resolveBoundary, } from '../field/index.js';
|
|
4
|
-
import { Validator, format as engineFormats } from '@cfworker/json-schema';
|
|
5
|
-
const isObject = (v) => typeof v === 'object' && v !== null && !Array.isArray(v);
|
|
6
|
-
const oneOfTokens = (v, tokens) => typeof v === 'string' && tokens.includes(v);
|
|
7
|
-
/**
|
|
8
|
-
* The one judge, at the three levels anything is judged: a field's DECLARATION, one VALUE
|
|
9
|
-
* against its shape, a ROW against a field map. Same answer shape at all three.
|
|
10
|
-
*
|
|
11
|
-
* A class and not three functions because it holds state: the per-shape plan cache. The
|
|
12
|
-
* closed vocabularies belong to the axes that close them — this file imports them.
|
|
13
|
-
*/
|
|
14
|
-
export class Judge {
|
|
15
|
-
/**
|
|
16
|
-
* One plan per shape — the shape object IS the source JSON Schema (the closed
|
|
17
|
-
* grammar the helpers emit), handed straight to the engine. Keyed by the shape
|
|
18
|
-
* reference (stable: derivations copy field refs, `partial()` spreads the field but
|
|
19
|
-
* keeps the same `shape`), built once and reused so the parse cost is amortised —
|
|
20
|
-
* and so an unresolvable format is refused once per shape, never per value.
|
|
21
|
-
*/
|
|
22
|
-
static plans = new WeakMap();
|
|
23
|
-
static planFor(shape) {
|
|
24
|
-
let p = this.plans.get(shape);
|
|
25
|
-
if (!p) {
|
|
26
|
-
const base = Anatomy.of(shape).base;
|
|
27
|
-
const formatName = base?.type === 'string' ? base.format : undefined;
|
|
28
|
-
p = {
|
|
29
|
-
validator: new Validator(shape, '2020-12', true),
|
|
30
|
-
custom: formatName === undefined ? undefined : this.customFormatOf(formatName),
|
|
31
|
-
formatName,
|
|
32
|
-
};
|
|
33
|
-
this.plans.set(shape, p);
|
|
34
|
-
}
|
|
35
|
-
return p;
|
|
36
|
-
}
|
|
37
|
-
/**
|
|
38
|
-
* Resolve a declared format, and REFUSE a name neither the engine nor the registry
|
|
39
|
-
* knows: the engine ignores an unknown format in silence, so a typo would let every
|
|
40
|
-
* value through while the card claims the field is constrained.
|
|
41
|
-
*
|
|
42
|
-
* SCOPE: the field's own shape — a format nested inside `json(Entity)` is not reached.
|
|
43
|
-
*/
|
|
44
|
-
static customFormatOf(name) {
|
|
45
|
-
const custom = Formats.resolve(name);
|
|
46
|
-
if (!custom && !(name in engineFormats)) {
|
|
47
|
-
throw new Error(`Unknown format: '${name}'. Register it with Formats.register('${name}', …) — ` +
|
|
48
|
-
`the engine judges ${Object.keys(engineFormats).length} formats natively and this is not one of them.`);
|
|
49
|
-
}
|
|
50
|
-
return custom;
|
|
51
|
-
}
|
|
52
|
-
/**
|
|
53
|
-
* Validate a present value (null included) against its field — pure, never mutates.
|
|
54
|
-
*
|
|
55
|
-
* Reads `shape` and nothing else, so it answers "is this a legal value?" without ever
|
|
56
|
-
* asking who is speaking. That is what makes it usable on the way OUT of the domain,
|
|
57
|
-
* where the client-only axes (`boundary`, `lifecycle`) do not apply.
|
|
58
|
-
*/
|
|
59
|
-
static value(field, value) {
|
|
60
|
-
const shape = field.shape;
|
|
61
|
-
// The pre-engine guards dispatch on the BASE type — `shape.type` itself may be
|
|
62
|
-
// the nullable union. They only short-circuit NON-null values: null always goes
|
|
63
|
-
// to the engine, whose union judges it (that is the whole nullability model).
|
|
64
|
-
const base = Anatomy.of(shape).base;
|
|
65
|
-
if (value !== null) {
|
|
66
|
-
// Opaque JSON (`json()`): no nested shape → passes through unchecked.
|
|
67
|
-
// `json(Entity)` carries `properties` and falls through to the engine,
|
|
68
|
-
// which validates the nesting natively (it's plain JSON Schema).
|
|
69
|
-
if (base?.type === 'object' && !base.properties)
|
|
70
|
-
return { value };
|
|
71
|
-
// A date-time field also accepts a live Date — the domain value, not its JSON wire
|
|
72
|
-
// string — which the boundary then passes through. The engine validates JSON, so a
|
|
73
|
-
// Date (a non-JSON value) skips the schema check here; a date STRING is validated below.
|
|
74
|
-
if (base?.type === 'string' && base.format === 'date-time' && value instanceof Date) {
|
|
75
|
-
return Number.isNaN(value.getTime()) ? { error: 'Invalid date' } : { value };
|
|
76
|
-
}
|
|
77
|
-
// NaN is `typeof number` yet has no JSON form, so the JSON-centric engine accepts it —
|
|
78
|
-
// guard it here (same nature as the Date case: a JS value JSON can't represent).
|
|
79
|
-
if ((base?.type === 'number' || base?.type === 'integer') && typeof value === 'number' && Number.isNaN(value)) {
|
|
80
|
-
return { error: 'Expected a number' };
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
const plan = this.planFor(shape);
|
|
84
|
-
const result = plan.validator.validate(value);
|
|
85
|
-
if (!result.valid)
|
|
86
|
-
return { error: result.errors[0]?.error ?? 'Invalid value' };
|
|
87
|
-
// A registered format judges AFTER the engine passed — so a custom rule composes
|
|
88
|
-
// with the built-ins instead of replacing them, and the message is the engine's
|
|
89
|
-
// own wording: from the outside, `siret` fails exactly like `email` does.
|
|
90
|
-
if (plan.custom && typeof value === 'string' && !plan.custom(value)) {
|
|
91
|
-
return { error: `String does not match format "${plan.formatName}".` };
|
|
92
|
-
}
|
|
93
|
-
return { value };
|
|
94
|
-
}
|
|
95
|
-
/** `'now' | 'optional' | { value } | { generate: <name> }` — the four ways absence is answered. */
|
|
96
|
-
static checkCreate(rule, errors) {
|
|
97
|
-
if (oneOfTokens(rule, CREATE_TOKENS))
|
|
98
|
-
return;
|
|
99
|
-
if (isObject(rule)) {
|
|
100
|
-
if ("value" in rule)
|
|
101
|
-
return; // any value — the shape judges it (`assertDefaultsAreValid`)
|
|
102
|
-
if ("generate" in rule) {
|
|
103
|
-
if (typeof rule.generate !== "string") {
|
|
104
|
-
errors.push({
|
|
105
|
-
path: "lifecycle.create.generate",
|
|
106
|
-
message: "Expected a generator name",
|
|
107
|
-
});
|
|
108
|
-
}
|
|
109
|
-
return;
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
errors.push({
|
|
113
|
-
path: "lifecycle.create",
|
|
114
|
-
message: `Expected 'now', 'optional', { value } or { generate } — got ${JSON.stringify(rule)}`,
|
|
115
|
-
});
|
|
116
|
-
}
|
|
117
|
-
static checkLifecycle(lifecycle, errors) {
|
|
118
|
-
if (!isObject(lifecycle)) {
|
|
119
|
-
errors.push({
|
|
120
|
-
path: "lifecycle",
|
|
121
|
-
message: `Expected an object — got ${JSON.stringify(lifecycle)}`,
|
|
122
|
-
});
|
|
123
|
-
return;
|
|
124
|
-
}
|
|
125
|
-
if (lifecycle.create !== undefined)
|
|
126
|
-
this.checkCreate(lifecycle.create, errors);
|
|
127
|
-
if (lifecycle.update !== undefined &&
|
|
128
|
-
!oneOfTokens(lifecycle.update, UPDATE_TOKENS)) {
|
|
129
|
-
errors.push({
|
|
130
|
-
path: "lifecycle.update",
|
|
131
|
-
message: `Expected 'now' or 'forbidden' — got ${JSON.stringify(lifecycle.update)}`,
|
|
132
|
-
});
|
|
133
|
-
}
|
|
134
|
-
}
|
|
135
|
-
static checkRelation(relation, errors) {
|
|
136
|
-
if (!isObject(relation)) {
|
|
137
|
-
errors.push({
|
|
138
|
-
path: "role.relation",
|
|
139
|
-
message: `Expected an object — got ${JSON.stringify(relation)}`,
|
|
140
|
-
});
|
|
141
|
-
return;
|
|
142
|
-
}
|
|
143
|
-
if (!oneOfTokens(relation.kind, RELATION_KINDS)) {
|
|
144
|
-
errors.push({
|
|
145
|
-
path: "role.relation.kind",
|
|
146
|
-
message: `Expected 'one' or 'many' — got ${JSON.stringify(relation.kind)}`,
|
|
147
|
-
});
|
|
148
|
-
}
|
|
149
|
-
// A thunk, never the class: it is what lets a circular relation resolve lazily.
|
|
150
|
-
if (typeof relation.to !== "function") {
|
|
151
|
-
errors.push({
|
|
152
|
-
path: "role.relation.to",
|
|
153
|
-
message: "Expected a thunk returning the target entity",
|
|
154
|
-
});
|
|
155
|
-
}
|
|
156
|
-
if (relation.onDelete !== undefined &&
|
|
157
|
-
!oneOfTokens(relation.onDelete, ON_DELETE)) {
|
|
158
|
-
errors.push({
|
|
159
|
-
path: "role.relation.onDelete",
|
|
160
|
-
message: `Expected 'cascade', 'restrict' or 'set null' — got ${JSON.stringify(relation.onDelete)}`,
|
|
161
|
-
});
|
|
162
|
-
}
|
|
163
|
-
}
|
|
164
|
-
static checkRole(role, errors) {
|
|
165
|
-
if (!isObject(role)) {
|
|
166
|
-
errors.push({
|
|
167
|
-
path: "role",
|
|
168
|
-
message: `Expected an object — got ${JSON.stringify(role)}`,
|
|
169
|
-
});
|
|
170
|
-
return;
|
|
171
|
-
}
|
|
172
|
-
for (const flag of ["primary", "index"]) {
|
|
173
|
-
if (role[flag] !== undefined && typeof role[flag] !== "boolean") {
|
|
174
|
-
errors.push({
|
|
175
|
-
path: `role.${flag}`,
|
|
176
|
-
message: `Expected a boolean — got ${JSON.stringify(role[flag])}`,
|
|
177
|
-
});
|
|
178
|
-
}
|
|
179
|
-
}
|
|
180
|
-
if (role.unique !== undefined) {
|
|
181
|
-
const groups = role.unique;
|
|
182
|
-
const legal = Array.isArray(groups) &&
|
|
183
|
-
groups.every((g) => Array.isArray(g) && g.every((m) => typeof m === "string"));
|
|
184
|
-
if (!legal) {
|
|
185
|
-
errors.push({
|
|
186
|
-
path: "role.unique",
|
|
187
|
-
message: "Expected groups of field names — string[][]",
|
|
188
|
-
});
|
|
189
|
-
}
|
|
190
|
-
}
|
|
191
|
-
if (role.relation !== undefined)
|
|
192
|
-
this.checkRelation(role.relation, errors);
|
|
193
|
-
}
|
|
194
|
-
/**
|
|
195
|
-
* The registry is OPEN, so a name cannot be checked here — `declaredBoundary` resolves it
|
|
196
|
-
* and throws `Unknown boundary alias` at the one place that can know. Only the FORM is
|
|
197
|
-
* judged: a name, or a pair of directional rules.
|
|
198
|
-
*/
|
|
199
|
-
static checkBoundary(boundary, errors) {
|
|
200
|
-
if (typeof boundary === "string")
|
|
201
|
-
return;
|
|
202
|
-
if (!isObject(boundary)) {
|
|
203
|
-
errors.push({
|
|
204
|
-
path: "boundary",
|
|
205
|
-
message: `Expected an alias name or { in, out } — got ${JSON.stringify(boundary)}`,
|
|
206
|
-
});
|
|
207
|
-
return;
|
|
208
|
-
}
|
|
209
|
-
for (const [side, verb] of [
|
|
210
|
-
["in", "decode"],
|
|
211
|
-
["out", "encode"],
|
|
212
|
-
]) {
|
|
213
|
-
const rule = boundary[side];
|
|
214
|
-
if (rule === undefined || rule === "closed")
|
|
215
|
-
continue;
|
|
216
|
-
if (!isObject(rule) || typeof rule[verb] !== "string") {
|
|
217
|
-
errors.push({
|
|
218
|
-
path: `boundary.${side}`,
|
|
219
|
-
message: `Expected 'closed' or { ${verb}: <name> }`,
|
|
220
|
-
});
|
|
221
|
-
}
|
|
222
|
-
}
|
|
223
|
-
}
|
|
224
|
-
/** Judge a field's declaration — the five axes against their closed vocabularies. */
|
|
225
|
-
static field(value) {
|
|
226
|
-
if (!isObject(value)) {
|
|
227
|
-
return {
|
|
228
|
-
success: false,
|
|
229
|
-
errors: [
|
|
230
|
-
{
|
|
231
|
-
path: ".",
|
|
232
|
-
message: `Expected an object — got ${JSON.stringify(value)}`,
|
|
233
|
-
},
|
|
234
|
-
],
|
|
235
|
-
};
|
|
236
|
-
}
|
|
237
|
-
const errors = [];
|
|
238
|
-
if (!isShape(value.shape)) {
|
|
239
|
-
errors.push({
|
|
240
|
-
path: "shape",
|
|
241
|
-
message: `Every field states a shape — got ${JSON.stringify(value.shape)}`,
|
|
242
|
-
});
|
|
243
|
-
}
|
|
244
|
-
if (value.lifecycle !== undefined)
|
|
245
|
-
this.checkLifecycle(value.lifecycle, errors);
|
|
246
|
-
if (value.role !== undefined)
|
|
247
|
-
this.checkRole(value.role, errors);
|
|
248
|
-
if (value.boundary !== undefined)
|
|
249
|
-
this.checkBoundary(value.boundary, errors);
|
|
250
|
-
if (value.meta !== undefined) {
|
|
251
|
-
if (!isObject(value.meta)) {
|
|
252
|
-
errors.push({
|
|
253
|
-
path: "meta",
|
|
254
|
-
message: `Expected an object — got ${JSON.stringify(value.meta)}`,
|
|
255
|
-
});
|
|
256
|
-
}
|
|
257
|
-
else if (value.meta.description !== undefined &&
|
|
258
|
-
typeof value.meta.description !== "string") {
|
|
259
|
-
errors.push({ path: "meta.description", message: "Expected a string" });
|
|
260
|
-
}
|
|
261
|
-
}
|
|
262
|
-
return errors.length ? { success: false, errors } : { success: true, data: value };
|
|
263
|
-
}
|
|
264
|
-
/** Judge an input object against a field map — membership, absence, and who may speak. */
|
|
265
|
-
static row(fields, input, opts = {}) {
|
|
266
|
-
if (typeof input !== 'object' || input === null) {
|
|
267
|
-
return { success: false, errors: [{ path: '.', message: 'Expected an object' }] };
|
|
268
|
-
}
|
|
269
|
-
const data = input;
|
|
270
|
-
const errors = [];
|
|
271
|
-
const out = {};
|
|
272
|
-
// Refuse, never strip: a key outside the contract is an error, not a silent
|
|
273
|
-
// drop. The client derives from the same contract (a form cannot emit a
|
|
274
|
-
// foreign key), so a stranger is a bug or an attack — both deserve the 400.
|
|
275
|
-
// Stripping would also let the envelope diverge from GraphQL, which refuses
|
|
276
|
-
// unknown input keys by construction.
|
|
277
|
-
//
|
|
278
|
-
// A FACT is judged by this same rule, deliberately — the one place it was tempting to
|
|
279
|
-
// relax it. A subscriber's copy of a fact can be older than the sender's, so tolerating
|
|
280
|
-
// a stranger key would let a rolling deployment through; it would also mean a reader
|
|
281
|
-
// silently ignoring a field it was supposed to handle. If the judge refuses, that is
|
|
282
|
-
// the end of it: the sender re-syncs its readers before it ships.
|
|
283
|
-
for (const key of Object.keys(data)) {
|
|
284
|
-
if (!(key in fields)) {
|
|
285
|
-
errors.push({ path: key, message: 'Unknown field' });
|
|
286
|
-
}
|
|
287
|
-
}
|
|
288
|
-
for (const [key, field] of Object.entries(fields)) {
|
|
289
|
-
const path = key;
|
|
290
|
-
const value = data[key];
|
|
291
|
-
if (value === undefined) {
|
|
292
|
-
if (opts.patch)
|
|
293
|
-
continue; // patch: an unsent field is left untouched
|
|
294
|
-
// A read-only field is server-owned: its absence from a client input is
|
|
295
|
-
// never "Required" (same stance as OpenAPI readOnly+required).
|
|
296
|
-
if (boundaryOf(field).in === 'closed')
|
|
297
|
-
continue;
|
|
298
|
-
// Absence is answered by `lifecycle.create` — a key access on the normal
|
|
299
|
-
// form. The judge only asks "is there a rule?": any rule ('now',
|
|
300
|
-
// 'optional', { value }, { generate }) makes absence legal, and the field
|
|
301
|
-
// is omitted from the result. Realisation is the storage adapter's role.
|
|
302
|
-
if (field.lifecycle?.create !== undefined)
|
|
303
|
-
continue;
|
|
304
|
-
// No create rule: a `many` relation defaults to the empty collection
|
|
305
|
-
// (graph semantics, read on `role` — never a shared `{ value: [] }`).
|
|
306
|
-
if (field.role?.relation?.kind === 'many') {
|
|
307
|
-
out[key] = [];
|
|
308
|
-
continue;
|
|
309
|
-
}
|
|
310
|
-
errors.push({ path, message: 'Required' });
|
|
311
|
-
continue;
|
|
312
|
-
}
|
|
313
|
-
// A PRESENT value can be illegal by an axis other than shape:
|
|
314
|
-
// boundary `in: 'closed'` — a read-only field never crosses inbound;
|
|
315
|
-
// lifecycle `update: 'forbidden'` — re-supplying an immutable field in a patch.
|
|
316
|
-
if (boundaryOf(field).in === 'closed') {
|
|
317
|
-
errors.push({ path, message: 'Read-only' });
|
|
318
|
-
continue;
|
|
319
|
-
}
|
|
320
|
-
if (opts.patch && field.lifecycle?.update === 'forbidden') {
|
|
321
|
-
errors.push({ path, message: 'Immutable' });
|
|
322
|
-
continue;
|
|
323
|
-
}
|
|
324
|
-
// The shape predicate judges the value — null included, via the `[T,'null']`
|
|
325
|
-
// union. Then the boundary's decode converts wire→domain; null skips decode
|
|
326
|
-
// (a legal null is already the domain value, there is nothing to convert).
|
|
327
|
-
const checked = this.value(field, value);
|
|
328
|
-
if ('error' in checked) {
|
|
329
|
-
errors.push({ path, message: checked.error });
|
|
330
|
-
continue;
|
|
331
|
-
}
|
|
332
|
-
if (checked.value === null) {
|
|
333
|
-
out[key] = null;
|
|
334
|
-
continue;
|
|
335
|
-
}
|
|
336
|
-
const decoded = resolveBoundary(field).decode(checked.value);
|
|
337
|
-
if ('error' in decoded)
|
|
338
|
-
errors.push({ path, message: decoded.error });
|
|
339
|
-
else
|
|
340
|
-
out[key] = decoded.value;
|
|
341
|
-
}
|
|
342
|
-
if (errors.length > 0)
|
|
343
|
-
return { success: false, errors };
|
|
344
|
-
return { success: true, data: out };
|
|
345
|
-
}
|
|
346
|
-
/** The same judgment, as a boolean. */
|
|
347
|
-
static isField(value) {
|
|
348
|
-
return this.field(value).success;
|
|
349
|
-
}
|
|
350
|
-
}
|
|
351
|
-
//# sourceMappingURL=judge.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"judge.js","sourceRoot":"","sources":["../../src/validation/judge.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
/** How a judge is asked — the mode a schema view carries, never a fact about a field. */
|
|
2
|
-
/** Patch mode: an unsent field is untouched. Distinguishes "absent, don't touch" from "absent → null". */
|
|
3
|
-
export interface ValidateOptions {
|
|
4
|
-
patch?: boolean;
|
|
5
|
-
}
|
|
6
|
-
//# sourceMappingURL=options.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../../src/validation/options.ts"],"names":[],"mappings":"AAAA,yFAAyF;AAEzF,0GAA0G;AAC1G,MAAM,WAAW,eAAe;IAC9B,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"options.js","sourceRoot":"","sources":["../../src/validation/options.ts"],"names":[],"mappings":"AAAA,yFAAyF"}
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
/** What every judge in this package answers — one shape, whatever it judged. */
|
|
2
|
-
export interface ValidationError {
|
|
3
|
-
/** The field name, or the axis it failed on — `lifecycle.create`, `role.relation.kind`. */
|
|
4
|
-
path: string;
|
|
5
|
-
message: string;
|
|
6
|
-
}
|
|
7
|
-
export type ValidationResult<T> = {
|
|
8
|
-
success: true;
|
|
9
|
-
data: T;
|
|
10
|
-
} | {
|
|
11
|
-
success: false;
|
|
12
|
-
errors: ValidationError[];
|
|
13
|
-
};
|
|
14
|
-
/** One value's verdict — the judge hands back what it read, decoded or refused. */
|
|
15
|
-
export type Checked = {
|
|
16
|
-
value: unknown;
|
|
17
|
-
} | {
|
|
18
|
-
error: string;
|
|
19
|
-
};
|
|
20
|
-
//# sourceMappingURL=result.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"result.d.ts","sourceRoot":"","sources":["../../src/validation/result.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAEhF,MAAM,WAAW,eAAe;IAC9B,2FAA2F;IAC3F,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,MAAM,gBAAgB,CAAC,CAAC,IAC1B;IAAE,OAAO,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,CAAC,CAAA;CAAE,GAC1B;IAAE,OAAO,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,eAAe,EAAE,CAAA;CAAE,CAAC;AAElD,mFAAmF;AACnF,MAAM,MAAM,OAAO,GAAG;IAAE,KAAK,EAAE,OAAO,CAAA;CAAE,GAAG;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"result.js","sourceRoot":"","sources":["../../src/validation/result.ts"],"names":[],"mappings":"AAAA,gFAAgF"}
|