@fougere/schema 0.6.0-alpha.0 → 0.8.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 +5 -4
- package/dist/{schema/Schema.d.ts → Schema.d.ts} +17 -27
- package/dist/Schema.d.ts.map +1 -0
- package/dist/{schema/Schema.js → Schema.js} +22 -62
- package/dist/Schema.js.map +1 -0
- package/dist/SchemaDefinition.d.ts +73 -0
- package/dist/SchemaDefinition.d.ts.map +1 -0
- package/dist/SchemaDefinition.js +184 -0
- package/dist/SchemaDefinition.js.map +1 -0
- package/dist/SchemaDerivation.d.ts +16 -0
- package/dist/SchemaDerivation.d.ts.map +1 -0
- package/dist/SchemaDerivation.js +31 -0
- package/dist/SchemaDerivation.js.map +1 -0
- package/dist/{schema/SchemaView.d.ts → SchemaView.d.ts} +9 -9
- package/dist/SchemaView.d.ts.map +1 -0
- package/dist/{schema/SchemaView.js.map → SchemaView.js.map} +1 -1
- package/dist/{schema/axis → axis}/Axis.d.ts +2 -2
- package/dist/axis/Axis.d.ts.map +1 -0
- package/dist/axis/Axis.js.map +1 -0
- package/dist/axis/Meta.d.ts.map +1 -0
- package/dist/{schema/axis → axis}/Meta.js.map +1 -1
- package/dist/axis/boundary/Boundaries.d.ts +21 -0
- package/dist/axis/boundary/Boundaries.d.ts.map +1 -0
- package/dist/axis/boundary/Boundaries.js +25 -0
- package/dist/axis/boundary/Boundaries.js.map +1 -0
- package/dist/{schema/axis → axis}/boundary/Boundary.d.ts +3 -1
- package/dist/axis/boundary/Boundary.d.ts.map +1 -0
- package/dist/{schema/axis → axis}/boundary/Boundary.js +8 -6
- package/dist/axis/boundary/Boundary.js.map +1 -0
- package/dist/axis/boundary/BoundaryAxis.d.ts.map +1 -0
- package/dist/{schema/axis → axis}/boundary/BoundaryAxis.js +4 -4
- package/dist/axis/boundary/BoundaryAxis.js.map +1 -0
- package/dist/{schema/axis → axis}/lifecycle/Clock.d.ts +1 -1
- package/dist/axis/lifecycle/Clock.d.ts.map +1 -0
- package/dist/{schema/axis → axis}/lifecycle/Clock.js +1 -1
- package/dist/axis/lifecycle/Clock.js.map +1 -0
- package/dist/axis/lifecycle/Generators.d.ts +10 -0
- package/dist/axis/lifecycle/Generators.d.ts.map +1 -0
- package/dist/axis/lifecycle/Generators.js +20 -0
- package/dist/axis/lifecycle/Generators.js.map +1 -0
- package/dist/axis/lifecycle/Lifecycle.d.ts.map +1 -0
- package/dist/axis/lifecycle/Lifecycle.js.map +1 -0
- package/dist/axis/lifecycle/LifecycleAxis.d.ts.map +1 -0
- package/dist/{schema/axis → axis}/lifecycle/LifecycleAxis.js +11 -6
- package/dist/axis/lifecycle/LifecycleAxis.js.map +1 -0
- package/dist/axis/lifecycle/apply.d.ts +15 -0
- package/dist/axis/lifecycle/apply.d.ts.map +1 -0
- package/dist/axis/lifecycle/apply.js +50 -0
- package/dist/axis/lifecycle/apply.js.map +1 -0
- package/dist/{schema/axis → axis}/role/Relation.d.ts +3 -2
- package/dist/axis/role/Relation.d.ts.map +1 -0
- package/dist/{schema/axis → axis}/role/Relation.js +6 -5
- package/dist/axis/role/Relation.js.map +1 -0
- package/dist/{schema/axis → axis}/role/Role.d.ts +6 -6
- package/dist/axis/role/Role.d.ts.map +1 -0
- package/dist/axis/role/Role.js +36 -0
- package/dist/axis/role/Role.js.map +1 -0
- package/dist/{schema/axis → axis}/role/RoleAxis.d.ts +1 -1
- package/dist/axis/role/RoleAxis.d.ts.map +1 -0
- package/dist/{schema/axis → axis}/role/RoleAxis.js +28 -36
- package/dist/axis/role/RoleAxis.js.map +1 -0
- package/dist/axis/shape/Formats.d.ts +11 -0
- package/dist/axis/shape/Formats.d.ts.map +1 -0
- package/dist/axis/shape/Formats.js +9 -0
- package/dist/axis/shape/Formats.js.map +1 -0
- package/dist/{schema/axis → axis}/shape/Shape.d.ts +12 -3
- package/dist/axis/shape/Shape.d.ts.map +1 -0
- package/dist/axis/shape/Shape.js +77 -0
- package/dist/axis/shape/Shape.js.map +1 -0
- package/dist/entity/EntityAdapterSet.d.ts +22 -0
- package/dist/entity/EntityAdapterSet.d.ts.map +1 -0
- package/dist/entity/EntityAdapterSet.js +63 -0
- package/dist/entity/EntityAdapterSet.js.map +1 -0
- package/dist/entity/EntityAdapters.d.ts +1 -24
- package/dist/entity/EntityAdapters.d.ts.map +1 -1
- package/dist/entity/EntityAdapters.js +1 -74
- package/dist/entity/EntityAdapters.js.map +1 -1
- package/dist/entity/EntityDeclarations.d.ts +1 -1
- package/dist/entity/EntityDeclarations.d.ts.map +1 -1
- package/dist/entity.d.ts +7 -2
- package/dist/entity.d.ts.map +1 -1
- package/dist/entity.js +6 -1
- package/dist/entity.js.map +1 -1
- package/dist/{schema/fields → field}/Field.d.ts +3 -5
- package/dist/field/Field.d.ts.map +1 -0
- package/dist/field/Field.js +35 -0
- package/dist/field/Field.js.map +1 -0
- package/dist/field/FieldSet.d.ts +22 -0
- package/dist/field/FieldSet.d.ts.map +1 -0
- package/dist/field/FieldSet.js +58 -0
- package/dist/field/FieldSet.js.map +1 -0
- package/dist/index.d.ts +26 -56
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +21 -47
- package/dist/index.js.map +1 -1
- package/dist/lib/Registry.d.ts +12 -0
- package/dist/lib/Registry.d.ts.map +1 -0
- package/dist/lib/Registry.js +29 -0
- package/dist/lib/Registry.js.map +1 -0
- package/dist/lib/index.d.ts +3 -0
- package/dist/lib/index.d.ts.map +1 -0
- package/dist/lib/index.js +3 -0
- package/dist/lib/index.js.map +1 -0
- package/dist/lib/utils.d.ts.map +1 -0
- package/dist/lib/utils.js.map +1 -0
- package/dist/projection/Cases.d.ts +9 -20
- package/dist/projection/Cases.d.ts.map +1 -1
- package/dist/projection/Cases.js +44 -39
- package/dist/projection/Cases.js.map +1 -1
- package/dist/projection/Visibility.d.ts +2 -1
- package/dist/projection/Visibility.d.ts.map +1 -1
- package/dist/projection/Visibility.js +4 -3
- package/dist/projection/Visibility.js.map +1 -1
- package/dist/projection/card/Bundle.d.ts +1 -1
- package/dist/projection/card/Bundle.d.ts.map +1 -1
- package/dist/projection/card/Bundle.js +7 -7
- package/dist/projection/card/Bundle.js.map +1 -1
- package/dist/projection/card/Card.d.ts +7 -13
- package/dist/projection/card/Card.d.ts.map +1 -1
- package/dist/projection/card/Card.js +101 -70
- package/dist/projection/card/Card.js.map +1 -1
- package/dist/projection/card/Descriptor.d.ts +7 -7
- package/dist/projection/card/Descriptor.d.ts.map +1 -1
- package/dist/projection/card/admission.d.ts +21 -5
- package/dist/projection/card/admission.d.ts.map +1 -1
- package/dist/projection/card/admission.js +33 -5
- package/dist/projection/card/admission.js.map +1 -1
- package/dist/projection/card/diff.d.ts +2 -2
- package/dist/projection/card/diff.d.ts.map +1 -1
- package/dist/{judge/result.d.ts → validation.d.ts} +1 -1
- package/dist/validation.d.ts.map +1 -0
- package/dist/validation.js +2 -0
- package/dist/validation.js.map +1 -0
- package/dist/validator/AdapterFieldValidator.d.ts +14 -0
- package/dist/validator/AdapterFieldValidator.d.ts.map +1 -0
- package/dist/validator/AdapterFieldValidator.js +36 -0
- package/dist/validator/AdapterFieldValidator.js.map +1 -0
- package/dist/validator/FieldDeclarationValidator.d.ts +9 -0
- package/dist/validator/FieldDeclarationValidator.d.ts.map +1 -0
- package/dist/{judge/FieldJudge.js → validator/FieldDeclarationValidator.js} +8 -8
- package/dist/validator/FieldDeclarationValidator.js.map +1 -0
- package/dist/validator/FieldValueValidator.d.ts +13 -0
- package/dist/validator/FieldValueValidator.d.ts.map +1 -0
- package/dist/{judge/ValueJudge.js → validator/FieldValueValidator.js} +12 -11
- package/dist/validator/FieldValueValidator.js.map +1 -0
- package/dist/validator/InputRefusal.d.ts +8 -0
- package/dist/validator/InputRefusal.d.ts.map +1 -0
- package/dist/validator/InputRefusal.js +8 -0
- package/dist/validator/InputRefusal.js.map +1 -0
- package/dist/validator/InputValidator.d.ts +15 -0
- package/dist/validator/InputValidator.d.ts.map +1 -0
- package/dist/{judge/RowJudge.js → validator/InputValidator.js} +25 -21
- package/dist/validator/InputValidator.js.map +1 -0
- package/dist/vocabulary/bool.d.ts +6 -1
- package/dist/vocabulary/bool.d.ts.map +1 -1
- package/dist/vocabulary/bool.js +6 -1
- package/dist/vocabulary/bool.js.map +1 -1
- package/dist/vocabulary/created.d.ts +6 -1
- package/dist/vocabulary/created.d.ts.map +1 -1
- package/dist/vocabulary/created.js +5 -0
- package/dist/vocabulary/created.js.map +1 -1
- package/dist/vocabulary/date.d.ts +6 -1
- package/dist/vocabulary/date.d.ts.map +1 -1
- package/dist/vocabulary/date.js +6 -1
- package/dist/vocabulary/date.js.map +1 -1
- package/dist/vocabulary/email.d.ts +6 -1
- package/dist/vocabulary/email.d.ts.map +1 -1
- package/dist/vocabulary/email.js +5 -0
- package/dist/vocabulary/email.js.map +1 -1
- package/dist/vocabulary/immutable.d.ts +6 -1
- package/dist/vocabulary/immutable.d.ts.map +1 -1
- package/dist/vocabulary/immutable.js +5 -0
- package/dist/vocabulary/immutable.js.map +1 -1
- package/dist/vocabulary/index.d.ts +23 -0
- package/dist/vocabulary/index.d.ts.map +1 -0
- package/dist/vocabulary/index.js +23 -0
- package/dist/vocabulary/index.js.map +1 -0
- package/dist/vocabulary/indexed.d.ts +6 -1
- package/dist/vocabulary/indexed.d.ts.map +1 -1
- package/dist/vocabulary/indexed.js +5 -0
- package/dist/vocabulary/indexed.js.map +1 -1
- package/dist/vocabulary/json.d.ts +2 -2
- package/dist/vocabulary/json.d.ts.map +1 -1
- package/dist/vocabulary/json.js +9 -4
- package/dist/vocabulary/json.js.map +1 -1
- package/dist/vocabulary/list.d.ts +6 -1
- package/dist/vocabulary/list.d.ts.map +1 -1
- package/dist/vocabulary/list.js +6 -1
- package/dist/vocabulary/list.js.map +1 -1
- package/dist/vocabulary/many.d.ts +7 -2
- package/dist/vocabulary/many.d.ts.map +1 -1
- package/dist/vocabulary/many.js +7 -2
- package/dist/vocabulary/many.js.map +1 -1
- package/dist/vocabulary/nullable.d.ts +6 -1
- package/dist/vocabulary/nullable.d.ts.map +1 -1
- package/dist/vocabulary/nullable.js +7 -2
- package/dist/vocabulary/nullable.js.map +1 -1
- package/dist/vocabulary/number.d.ts +6 -1
- package/dist/vocabulary/number.d.ts.map +1 -1
- package/dist/vocabulary/number.js +6 -1
- package/dist/vocabulary/number.js.map +1 -1
- package/dist/vocabulary/oneOf.d.ts +1 -1
- package/dist/vocabulary/oneOf.d.ts.map +1 -1
- package/dist/vocabulary/oneOf.js +6 -1
- package/dist/vocabulary/oneOf.js.map +1 -1
- package/dist/vocabulary/optional.d.ts +6 -1
- package/dist/vocabulary/optional.d.ts.map +1 -1
- package/dist/vocabulary/optional.js +7 -2
- package/dist/vocabulary/optional.js.map +1 -1
- package/dist/vocabulary/primary.d.ts +2 -2
- package/dist/vocabulary/primary.d.ts.map +1 -1
- package/dist/vocabulary/primary.js +7 -2
- package/dist/vocabulary/primary.js.map +1 -1
- package/dist/vocabulary/readOnly.d.ts +6 -1
- package/dist/vocabulary/readOnly.d.ts.map +1 -1
- package/dist/vocabulary/readOnly.js +6 -1
- package/dist/vocabulary/readOnly.js.map +1 -1
- package/dist/vocabulary/ref.d.ts +7 -2
- package/dist/vocabulary/ref.d.ts.map +1 -1
- package/dist/vocabulary/ref.js +7 -2
- package/dist/vocabulary/ref.js.map +1 -1
- package/dist/vocabulary/text.d.ts +7 -2
- package/dist/vocabulary/text.d.ts.map +1 -1
- package/dist/vocabulary/text.js +6 -1
- package/dist/vocabulary/text.js.map +1 -1
- package/dist/vocabulary/unique.d.ts +6 -1
- package/dist/vocabulary/unique.d.ts.map +1 -1
- package/dist/vocabulary/unique.js +7 -3
- package/dist/vocabulary/unique.js.map +1 -1
- package/dist/vocabulary/updated.d.ts +6 -1
- package/dist/vocabulary/updated.d.ts.map +1 -1
- package/dist/vocabulary/updated.js +5 -0
- package/dist/vocabulary/updated.js.map +1 -1
- package/dist/vocabulary/url.d.ts +6 -1
- package/dist/vocabulary/url.d.ts.map +1 -1
- package/dist/vocabulary/url.js +5 -0
- package/dist/vocabulary/url.js.map +1 -1
- package/dist/vocabulary/vocabulary.d.ts +6 -1
- package/dist/vocabulary/vocabulary.d.ts.map +1 -1
- package/dist/vocabulary/vocabulary.js +22 -12
- package/dist/vocabulary/vocabulary.js.map +1 -1
- package/dist/vocabulary/writeOnly.d.ts +6 -1
- package/dist/vocabulary/writeOnly.d.ts.map +1 -1
- package/dist/vocabulary/writeOnly.js +6 -1
- package/dist/vocabulary/writeOnly.js.map +1 -1
- package/package.json +1 -1
- package/src/{schema/Schema.ts → Schema.ts} +32 -75
- package/src/SchemaDefinition.ts +257 -0
- package/src/SchemaDerivation.ts +44 -0
- package/src/{schema/SchemaView.ts → SchemaView.ts} +9 -9
- package/src/{schema/axis → axis}/Axis.ts +2 -2
- package/src/axis/boundary/Boundaries.ts +37 -0
- package/src/{schema/axis → axis}/boundary/Boundary.ts +9 -7
- package/src/{schema/axis → axis}/boundary/BoundaryAxis.ts +4 -4
- package/src/{schema/axis → axis}/lifecycle/Clock.ts +1 -1
- package/src/axis/lifecycle/Generators.ts +29 -0
- package/src/{schema/axis → axis}/lifecycle/LifecycleAxis.ts +12 -7
- package/src/axis/lifecycle/apply.ts +53 -0
- package/src/{schema/axis → axis}/role/Relation.ts +6 -5
- package/src/axis/role/Role.ts +52 -0
- package/src/{schema/axis → axis}/role/RoleAxis.ts +28 -40
- package/src/axis/shape/Formats.ts +20 -0
- package/src/{schema/axis → axis}/shape/Shape.ts +45 -18
- package/src/entity/EntityAdapterSet.ts +81 -0
- package/src/entity/EntityAdapters.ts +4 -96
- package/src/entity/EntityDeclarations.ts +1 -1
- package/src/entity.ts +7 -2
- package/src/{schema/fields → field}/Field.ts +8 -28
- package/src/field/FieldSet.ts +75 -0
- package/src/index.ts +34 -91
- package/src/lib/Registry.ts +37 -0
- package/src/lib/index.ts +2 -0
- package/src/projection/Cases.ts +56 -55
- package/src/projection/Visibility.ts +5 -4
- package/src/projection/card/Bundle.ts +9 -9
- package/src/projection/card/Card.ts +109 -75
- package/src/projection/card/Descriptor.ts +7 -7
- package/src/projection/card/admission.ts +37 -6
- package/src/projection/card/diff.ts +2 -2
- package/src/validator/AdapterFieldValidator.ts +40 -0
- package/src/{judge/FieldJudge.ts → validator/FieldDeclarationValidator.ts} +10 -10
- package/src/{judge/ValueJudge.ts → validator/FieldValueValidator.ts} +14 -13
- package/src/validator/InputRefusal.ts +7 -0
- package/src/{judge/RowJudge.ts → validator/InputValidator.ts} +31 -24
- package/src/vocabulary/bool.ts +6 -1
- package/src/vocabulary/created.ts +6 -1
- package/src/vocabulary/date.ts +6 -1
- package/src/vocabulary/email.ts +6 -1
- package/src/vocabulary/immutable.ts +6 -1
- package/src/vocabulary/index.ts +22 -0
- package/src/vocabulary/indexed.ts +6 -1
- package/src/vocabulary/json.ts +10 -5
- package/src/vocabulary/list.ts +6 -1
- package/src/vocabulary/many.ts +7 -2
- package/src/vocabulary/nullable.ts +8 -3
- package/src/vocabulary/number.ts +6 -1
- package/src/vocabulary/oneOf.ts +6 -1
- package/src/vocabulary/optional.ts +8 -3
- package/src/vocabulary/primary.ts +7 -2
- package/src/vocabulary/readOnly.ts +7 -2
- package/src/vocabulary/ref.ts +7 -2
- package/src/vocabulary/text.ts +7 -2
- package/src/vocabulary/unique.ts +8 -4
- package/src/vocabulary/updated.ts +6 -1
- package/src/vocabulary/url.ts +6 -1
- package/src/vocabulary/vocabulary.ts +22 -12
- package/src/vocabulary/writeOnly.ts +7 -2
- package/dist/judge/FieldJudge.d.ts +0 -9
- package/dist/judge/FieldJudge.d.ts.map +0 -1
- package/dist/judge/FieldJudge.js.map +0 -1
- package/dist/judge/RowJudge.d.ts +0 -12
- package/dist/judge/RowJudge.d.ts.map +0 -1
- package/dist/judge/RowJudge.js.map +0 -1
- package/dist/judge/RowRefusal.d.ts +0 -17
- package/dist/judge/RowRefusal.d.ts.map +0 -1
- package/dist/judge/RowRefusal.js +0 -16
- package/dist/judge/RowRefusal.js.map +0 -1
- package/dist/judge/ValueJudge.d.ts +0 -12
- package/dist/judge/ValueJudge.d.ts.map +0 -1
- package/dist/judge/ValueJudge.js.map +0 -1
- package/dist/judge/options.d.ts +0 -4
- package/dist/judge/options.d.ts.map +0 -1
- package/dist/judge/options.js +0 -2
- package/dist/judge/options.js.map +0 -1
- package/dist/judge/result.d.ts.map +0 -1
- package/dist/judge/result.js +0 -2
- package/dist/judge/result.js.map +0 -1
- package/dist/projection/SchemaOrCard.d.ts +0 -7
- package/dist/projection/SchemaOrCard.d.ts.map +0 -1
- package/dist/projection/SchemaOrCard.js +0 -11
- package/dist/projection/SchemaOrCard.js.map +0 -1
- package/dist/projection/card/EntityTypeSource.d.ts +0 -12
- package/dist/projection/card/EntityTypeSource.d.ts.map +0 -1
- package/dist/projection/card/EntityTypeSource.js +0 -78
- package/dist/projection/card/EntityTypeSource.js.map +0 -1
- package/dist/projection/card/FacadeTypeSource.d.ts +0 -19
- package/dist/projection/card/FacadeTypeSource.d.ts.map +0 -1
- package/dist/projection/card/FacadeTypeSource.js +0 -40
- package/dist/projection/card/FacadeTypeSource.js.map +0 -1
- package/dist/schema/Schema.d.ts.map +0 -1
- package/dist/schema/Schema.js.map +0 -1
- package/dist/schema/SchemaDefinition.d.ts +0 -60
- package/dist/schema/SchemaDefinition.d.ts.map +0 -1
- package/dist/schema/SchemaDefinition.js +0 -85
- package/dist/schema/SchemaDefinition.js.map +0 -1
- package/dist/schema/SchemaDerivation.d.ts +0 -34
- package/dist/schema/SchemaDerivation.d.ts.map +0 -1
- package/dist/schema/SchemaDerivation.js +0 -51
- package/dist/schema/SchemaDerivation.js.map +0 -1
- package/dist/schema/SchemaView.d.ts.map +0 -1
- package/dist/schema/axis/Axis.d.ts.map +0 -1
- package/dist/schema/axis/Axis.js.map +0 -1
- package/dist/schema/axis/Meta.d.ts.map +0 -1
- package/dist/schema/axis/boundary/Boundaries.d.ts +0 -20
- package/dist/schema/axis/boundary/Boundaries.d.ts.map +0 -1
- package/dist/schema/axis/boundary/Boundaries.js +0 -31
- package/dist/schema/axis/boundary/Boundaries.js.map +0 -1
- package/dist/schema/axis/boundary/Boundary.d.ts.map +0 -1
- package/dist/schema/axis/boundary/Boundary.js.map +0 -1
- package/dist/schema/axis/boundary/BoundaryAxis.d.ts.map +0 -1
- package/dist/schema/axis/boundary/BoundaryAxis.js.map +0 -1
- package/dist/schema/axis/lifecycle/Clock.d.ts.map +0 -1
- package/dist/schema/axis/lifecycle/Clock.js.map +0 -1
- package/dist/schema/axis/lifecycle/Generators.d.ts +0 -18
- package/dist/schema/axis/lifecycle/Generators.d.ts.map +0 -1
- package/dist/schema/axis/lifecycle/Generators.js +0 -38
- package/dist/schema/axis/lifecycle/Generators.js.map +0 -1
- package/dist/schema/axis/lifecycle/Lifecycle.d.ts.map +0 -1
- package/dist/schema/axis/lifecycle/Lifecycle.js.map +0 -1
- package/dist/schema/axis/lifecycle/LifecycleAxis.d.ts.map +0 -1
- package/dist/schema/axis/lifecycle/LifecycleAxis.js.map +0 -1
- package/dist/schema/axis/lifecycle/apply.d.ts +0 -6
- package/dist/schema/axis/lifecycle/apply.d.ts.map +0 -1
- package/dist/schema/axis/lifecycle/apply.js +0 -34
- package/dist/schema/axis/lifecycle/apply.js.map +0 -1
- package/dist/schema/axis/role/Relation.d.ts.map +0 -1
- package/dist/schema/axis/role/Relation.js.map +0 -1
- package/dist/schema/axis/role/Role.d.ts.map +0 -1
- package/dist/schema/axis/role/Role.js +0 -40
- package/dist/schema/axis/role/Role.js.map +0 -1
- package/dist/schema/axis/role/RoleAxis.d.ts.map +0 -1
- package/dist/schema/axis/role/RoleAxis.js.map +0 -1
- package/dist/schema/axis/shape/Formats.d.ts +0 -8
- package/dist/schema/axis/shape/Formats.d.ts.map +0 -1
- package/dist/schema/axis/shape/Formats.js +0 -10
- package/dist/schema/axis/shape/Formats.js.map +0 -1
- package/dist/schema/axis/shape/Shape.d.ts.map +0 -1
- package/dist/schema/axis/shape/Shape.js +0 -52
- package/dist/schema/axis/shape/Shape.js.map +0 -1
- package/dist/schema/fields/Field.d.ts.map +0 -1
- package/dist/schema/fields/Field.js +0 -52
- package/dist/schema/fields/Field.js.map +0 -1
- package/dist/schema/fields/FieldSet.d.ts +0 -28
- package/dist/schema/fields/FieldSet.d.ts.map +0 -1
- package/dist/schema/fields/FieldSet.js +0 -55
- package/dist/schema/fields/FieldSet.js.map +0 -1
- package/dist/schema/fields/constraint/FieldGroup.d.ts +0 -21
- package/dist/schema/fields/constraint/FieldGroup.d.ts.map +0 -1
- package/dist/schema/fields/constraint/FieldGroup.js +0 -65
- package/dist/schema/fields/constraint/FieldGroup.js.map +0 -1
- package/dist/schema/fields/constraint/Unique.d.ts +0 -4
- package/dist/schema/fields/constraint/Unique.d.ts.map +0 -1
- package/dist/schema/fields/constraint/Unique.js +0 -4
- package/dist/schema/fields/constraint/Unique.js.map +0 -1
- package/dist/utils.d.ts.map +0 -1
- package/dist/utils.js.map +0 -1
- package/src/judge/RowRefusal.ts +0 -17
- package/src/judge/options.ts +0 -3
- package/src/projection/SchemaOrCard.ts +0 -18
- package/src/projection/card/EntityTypeSource.ts +0 -90
- package/src/projection/card/FacadeTypeSource.ts +0 -55
- package/src/schema/SchemaDefinition.ts +0 -150
- package/src/schema/SchemaDerivation.ts +0 -65
- package/src/schema/axis/boundary/Boundaries.ts +0 -44
- package/src/schema/axis/lifecycle/Generators.ts +0 -46
- package/src/schema/axis/lifecycle/apply.ts +0 -39
- package/src/schema/axis/role/Role.ts +0 -56
- package/src/schema/axis/shape/Formats.ts +0 -22
- package/src/schema/fields/FieldSet.ts +0 -63
- package/src/schema/fields/constraint/FieldGroup.ts +0 -84
- package/src/schema/fields/constraint/Unique.ts +0 -3
- /package/dist/{schema/SchemaView.js → SchemaView.js} +0 -0
- /package/dist/{schema/axis → axis}/Axis.js +0 -0
- /package/dist/{schema/axis → axis}/Meta.d.ts +0 -0
- /package/dist/{schema/axis → axis}/Meta.js +0 -0
- /package/dist/{schema/axis → axis}/boundary/BoundaryAxis.d.ts +0 -0
- /package/dist/{schema/axis → axis}/lifecycle/Lifecycle.d.ts +0 -0
- /package/dist/{schema/axis → axis}/lifecycle/Lifecycle.js +0 -0
- /package/dist/{schema/axis → axis}/lifecycle/LifecycleAxis.d.ts +0 -0
- /package/dist/{utils.d.ts → lib/utils.d.ts} +0 -0
- /package/dist/{utils.js → lib/utils.js} +0 -0
- /package/src/{schema/axis → axis}/Meta.ts +0 -0
- /package/src/{schema/axis → axis}/lifecycle/Lifecycle.ts +0 -0
- /package/src/{utils.ts → lib/utils.ts} +0 -0
- /package/src/{judge/result.ts → validation.ts} +0 -0
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
import type { Field, Fields } from './
|
|
2
|
-
import type { CompositeUnique, PreviousNames } from '
|
|
3
|
-
import type { EntityAdapters } from '
|
|
4
|
-
import type { ValidationResult } from '
|
|
5
|
-
import type { ValidateOptions } from '
|
|
1
|
+
import type { Field, Fields } from './field/Field.js';
|
|
2
|
+
import type { CompositeUnique, PreviousNames } from './entity/EntityDeclarations.js';
|
|
3
|
+
import type { EntityAdapters } from './entity/EntityAdapters.js';
|
|
4
|
+
import type { ValidationResult } from './validation.js';
|
|
5
|
+
import type { ValidateOptions } from './validator/InputValidator.js';
|
|
6
6
|
import type { SchemaDerivation } from './SchemaDerivation.js';
|
|
7
|
-
export type
|
|
7
|
+
export type Values<TFields extends Fields> = {
|
|
8
8
|
[K in keyof TFields]: TFields[K] extends Field<infer T> ? T : never;
|
|
9
9
|
};
|
|
10
|
-
export type
|
|
10
|
+
export type PartialValues<TFields extends Fields> = Partial<Values<TFields>>;
|
|
11
11
|
export interface SchemaView<TFields extends Fields = Fields> {
|
|
12
12
|
readonly name: string;
|
|
13
13
|
/** What this schema was cut from, when it was cut from anything. */
|
|
@@ -17,9 +17,9 @@ export interface SchemaView<TFields extends Fields = Fields> {
|
|
|
17
17
|
/** Does it hold rows of its own? False on a derivation means an answer. */
|
|
18
18
|
readonly anchored?: boolean;
|
|
19
19
|
getFields(): TFields;
|
|
20
|
-
getAdapters(): EntityAdapters<TFields
|
|
20
|
+
getAdapters(): EntityAdapters<TFields>;
|
|
21
21
|
getUnique(): CompositeUnique<TFields> | undefined;
|
|
22
22
|
getOpts(): ValidateOptions;
|
|
23
|
-
validate(input: unknown): ValidationResult<
|
|
23
|
+
validate(input: unknown): ValidationResult<Values<TFields>>;
|
|
24
24
|
}
|
|
25
25
|
//# sourceMappingURL=SchemaView.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SchemaView.d.ts","sourceRoot":"","sources":["../src/SchemaView.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AACrF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AACrE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAE9D,MAAM,MAAM,MAAM,CAAC,OAAO,SAAS,MAAM,IAAI;KAC1C,CAAC,IAAI,MAAM,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,SAAS,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK;CACpE,CAAC;AAEF,MAAM,MAAM,aAAa,CAAC,OAAO,SAAS,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;AAE7E,MAAM,WAAW,UAAU,CAAC,OAAO,SAAS,MAAM,GAAG,MAAM;IACzD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,oEAAoE;IACpE,QAAQ,CAAC,UAAU,CAAC,EAAE,gBAAgB,CAAC;IACvC,6EAA6E;IAC7E,QAAQ,CAAC,QAAQ,CAAC,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC;IAC3C,2EAA2E;IAC3E,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAC5B,SAAS,IAAI,OAAO,CAAC;IACrB,WAAW,IAAI,cAAc,CAAC,OAAO,CAAC,CAAC;IACvC,SAAS,IAAI,eAAe,CAAC,OAAO,CAAC,GAAG,SAAS,CAAC;IAClD,OAAO,IAAI,eAAe,CAAC;IAC3B,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,gBAAgB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;CAC7D"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SchemaView.js","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"SchemaView.js","sourceRoot":"","sources":["../src/SchemaView.ts"],"names":[],"mappings":""}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import type { ValidationError } from '
|
|
1
|
+
import type { ValidationError } from '../validation.js';
|
|
2
2
|
export interface Axis<Declared = unknown, Wire = unknown> {
|
|
3
3
|
readonly slot: 'role' | 'lifecycle' | 'boundary';
|
|
4
|
-
|
|
4
|
+
validator(value: unknown, errors: ValidationError[]): void;
|
|
5
5
|
describe(value: Declared, key: string): Wire | undefined;
|
|
6
6
|
reconstruct(wire: Wire, resolve?: Resolver): Declared;
|
|
7
7
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Axis.d.ts","sourceRoot":"","sources":["../../src/axis/Axis.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAExD,MAAM,WAAW,IAAI,CAAC,QAAQ,GAAG,OAAO,EAAE,IAAI,GAAG,OAAO;IACtD,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,UAAU,CAAC;IAEjD,SAAS,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,GAAG,IAAI,CAAC;IAE3D,QAAQ,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IAEzD,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAC;CACvD;AAED,MAAM,MAAM,QAAQ,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,CAAC,QAAQ,MAAM,GAAG,IAAI,EAAE,KAAK,EAAE,KAAK,OAAO,CAAC,GAAG,SAAS,CAAC;AAElG,eAAO,MAAM,cAAc,EAAE,SAAS,IAAI,EAIzC,CAAC;AAEF,4EAA4E;AAC5E,eAAO,MAAM,eAAe,uCAA0C,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Axis.js","sourceRoot":"","sources":["../../src/axis/Axis.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAe1D,MAAM,CAAC,MAAM,cAAc,GAAoB;IAC7C,QAAQ;IACR,aAAa;IACb,YAAY;CACb,CAAC;AAEF,4EAA4E;AAC5E,MAAM,CAAC,MAAM,eAAe,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Meta.d.ts","sourceRoot":"","sources":["../../src/axis/Meta.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,IAAI;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Meta.js","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"Meta.js","sourceRoot":"","sources":["../../src/axis/Meta.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { BoundaryRules } from './Boundary.js';
|
|
2
|
+
import { Registry } from '../../lib/Registry.js';
|
|
3
|
+
export type Decoder = (value: unknown) => {
|
|
4
|
+
value: unknown;
|
|
5
|
+
} | {
|
|
6
|
+
error: string;
|
|
7
|
+
};
|
|
8
|
+
export type Encoder = (value: unknown) => unknown;
|
|
9
|
+
/**
|
|
10
|
+
* `decoders` for a value coming in, `encoders` for one going out, `aliases` for the word
|
|
11
|
+
* that names a pair. Three registries, so a codec is never half declared.
|
|
12
|
+
* FR : `decoders` à l'entrée, `encoders` à la sortie, `aliases` pour le mot qui nomme la paire.
|
|
13
|
+
* `Boundaries.aliases.register('isoDate', { in: { decode: 'isoDate' }, out: { encode: 'isoDate' } })`
|
|
14
|
+
* → a field saying `boundary: 'isoDate'` decodes to a `Date` and leaves as a string
|
|
15
|
+
*/
|
|
16
|
+
export declare const Boundaries: {
|
|
17
|
+
decoders: Registry<Decoder>;
|
|
18
|
+
encoders: Registry<Encoder>;
|
|
19
|
+
aliases: Registry<BoundaryRules>;
|
|
20
|
+
};
|
|
21
|
+
//# sourceMappingURL=Boundaries.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Boundaries.d.ts","sourceRoot":"","sources":["../../../src/axis/boundary/Boundaries.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAEjD,MAAM,MAAM,OAAO,GAAG,CAAC,KAAK,EAAE,OAAO,KAAK;IAAE,KAAK,EAAE,OAAO,CAAA;CAAE,GAAG;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AACjF,MAAM,MAAM,OAAO,GAAG,CAAC,KAAK,EAAE,OAAO,KAAK,OAAO,CAAC;AAElD;;;;;;GAMG;AACH,eAAO,MAAM,UAAU;IACrB,QAAQ;IAIR,QAAQ;IAIR,OAAO;CACR,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { Registry } from '../../lib/Registry.js';
|
|
2
|
+
/**
|
|
3
|
+
* `decoders` for a value coming in, `encoders` for one going out, `aliases` for the word
|
|
4
|
+
* that names a pair. Three registries, so a codec is never half declared.
|
|
5
|
+
* FR : `decoders` à l'entrée, `encoders` à la sortie, `aliases` pour le mot qui nomme la paire.
|
|
6
|
+
* `Boundaries.aliases.register('isoDate', { in: { decode: 'isoDate' }, out: { encode: 'isoDate' } })`
|
|
7
|
+
* → a field saying `boundary: 'isoDate'` decodes to a `Date` and leaves as a string
|
|
8
|
+
*/
|
|
9
|
+
export const Boundaries = {
|
|
10
|
+
decoders: new Registry('boundary decoder', 'call Boundaries.decoders.register(name, fn)'),
|
|
11
|
+
encoders: new Registry('boundary encoder', 'call Boundaries.encoders.register(name, fn)'),
|
|
12
|
+
aliases: new Registry('boundary alias'),
|
|
13
|
+
};
|
|
14
|
+
Boundaries.decoders.register('isoDate', (value) => {
|
|
15
|
+
if (value instanceof Date)
|
|
16
|
+
return { value };
|
|
17
|
+
if (typeof value === 'string') {
|
|
18
|
+
const date = new Date(value);
|
|
19
|
+
return Number.isNaN(date.getTime()) ? { error: 'Invalid date' } : { value: date };
|
|
20
|
+
}
|
|
21
|
+
return { error: 'Expected a date' };
|
|
22
|
+
});
|
|
23
|
+
Boundaries.encoders.register('isoDate', (value) => value instanceof Date ? value.toISOString() : value);
|
|
24
|
+
Boundaries.aliases.register('isoDate', { in: { decode: 'isoDate' }, out: { encode: 'isoDate' } });
|
|
25
|
+
//# sourceMappingURL=Boundaries.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Boundaries.js","sourceRoot":"","sources":["../../../src/axis/boundary/Boundaries.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAKjD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,QAAQ,EAAE,IAAI,QAAQ,CACpB,kBAAkB,EAClB,6CAA6C,CAC9C;IACD,QAAQ,EAAE,IAAI,QAAQ,CACpB,kBAAkB,EAClB,6CAA6C,CAC9C;IACD,OAAO,EAAE,IAAI,QAAQ,CAAgB,gBAAgB,CAAC;CACvD,CAAC;AAEF,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE,EAAE;IAChD,IAAI,KAAK,YAAY,IAAI;QAAE,OAAO,EAAE,KAAK,EAAE,CAAC;IAC5C,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC;QAC7B,OAAO,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,cAAc,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IACpF,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,iBAAiB,EAAE,CAAC;AACtC,CAAC,CAAC,CAAC;AACH,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE,EAAE,CAChD,KAAK,YAAY,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,KAAK,CACpD,CAAC;AACF,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,SAAS,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,GAAG,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,CAAC,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { Decoder, Encoder } from './Boundaries.js';
|
|
2
|
-
import type { Field } from '../../
|
|
2
|
+
import type { Field } from '../../field/Field.js';
|
|
3
3
|
import { type Shape } from '../shape/Shape.js';
|
|
4
4
|
export interface BoundaryRules {
|
|
5
5
|
in?: 'closed' | {
|
|
@@ -16,8 +16,10 @@ export declare class Boundary implements BoundaryRules {
|
|
|
16
16
|
readonly decode: Decoder;
|
|
17
17
|
readonly encode: Encoder;
|
|
18
18
|
private constructor();
|
|
19
|
+
/** An unknown alias stops here. */
|
|
19
20
|
static declared(field: Field): Boundary;
|
|
20
21
|
static of(field: Field): Boundary;
|
|
22
|
+
/** `date-time` means a `Date` on both sides, without a word in the entity. */
|
|
21
23
|
static forShape(shape: Shape | undefined): Boundary;
|
|
22
24
|
with(overrides: BoundaryRules): Boundary;
|
|
23
25
|
get readOnly(): boolean;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Boundary.d.ts","sourceRoot":"","sources":["../../../src/axis/boundary/Boundary.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAExD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAU,KAAK,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAEvD,MAAM,WAAW,aAAa;IAC5B,EAAE,CAAC,EAAE,QAAQ,GAAG;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IACnC,GAAG,CAAC,EAAE,QAAQ,GAAG;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;CACrC;AAED,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,GAAG,aAAa,CAAC;AAKpE,qBAAa,QAAS,YAAW,aAAa;IAC5C,QAAQ,CAAC,EAAE,CAAC,EAAE,aAAa,CAAC,IAAI,CAAC,CAAC;IAClC,QAAQ,CAAC,GAAG,CAAC,EAAE,aAAa,CAAC,KAAK,CAAC,CAAC;IACpC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IAEzB,OAAO,eAQN;IAED,mCAAmC;IACnC,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,GAAG,QAAQ,CAQtC;IAED,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,GAAG,QAAQ,CAiBhC;IAED,8EAA8E;IAC9E,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,GAAG,SAAS,GAAG,QAAQ,CAMlD;IAED,IAAI,CAAC,SAAS,EAAE,aAAa,GAAG,QAAQ,CAEvC;IAED,IAAI,QAAQ,IAAI,OAAO,CAEtB;IAED,IAAI,SAAS,IAAI,OAAO,CAEvB;CACF"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Boundaries } from './Boundaries.js';
|
|
2
|
-
import {
|
|
2
|
+
import { Shapes } from '../shape/Shape.js';
|
|
3
3
|
const identityDecoder = (value) => ({ value });
|
|
4
4
|
const identityEncoder = (value) => value;
|
|
5
5
|
export class Boundary {
|
|
@@ -13,13 +13,14 @@ export class Boundary {
|
|
|
13
13
|
this.decode = codecs?.decode ?? identityDecoder;
|
|
14
14
|
this.encode = codecs?.encode ?? identityEncoder;
|
|
15
15
|
}
|
|
16
|
+
/** An unknown alias stops here. */
|
|
16
17
|
static declared(field) {
|
|
17
18
|
const ref = field.boundary;
|
|
18
19
|
if (ref === undefined)
|
|
19
20
|
return new Boundary();
|
|
20
21
|
if (typeof ref !== 'string')
|
|
21
22
|
return new Boundary(ref);
|
|
22
|
-
const alias = Boundaries.
|
|
23
|
+
const alias = Boundaries.aliases.find(ref);
|
|
23
24
|
if (!alias)
|
|
24
25
|
throw new Error(`Unknown boundary alias: '${ref}'`);
|
|
25
26
|
return new Boundary(alias);
|
|
@@ -33,17 +34,18 @@ export class Boundary {
|
|
|
33
34
|
};
|
|
34
35
|
return new Boundary(rules, {
|
|
35
36
|
decode: typeof rules.in === 'object'
|
|
36
|
-
? Boundaries.
|
|
37
|
+
? Boundaries.decoders.resolve(rules.in.decode)
|
|
37
38
|
: identityDecoder,
|
|
38
39
|
encode: typeof rules.out === 'object'
|
|
39
|
-
? Boundaries.
|
|
40
|
+
? Boundaries.encoders.resolve(rules.out.encode)
|
|
40
41
|
: identityEncoder,
|
|
41
42
|
});
|
|
42
43
|
}
|
|
44
|
+
/** `date-time` means a `Date` on both sides, without a word in the entity. */
|
|
43
45
|
static forShape(shape) {
|
|
44
|
-
const base =
|
|
46
|
+
const base = Shapes.of(shape).base;
|
|
45
47
|
if (base?.type === 'string' && base.format === 'date-time') {
|
|
46
|
-
return new Boundary(Boundaries.
|
|
48
|
+
return new Boundary(Boundaries.aliases.find('isoDate'));
|
|
47
49
|
}
|
|
48
50
|
return new Boundary();
|
|
49
51
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Boundary.js","sourceRoot":"","sources":["../../../src/axis/boundary/Boundary.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C,OAAO,EAAE,MAAM,EAAc,MAAM,mBAAmB,CAAC;AASvD,MAAM,eAAe,GAAY,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;AACxD,MAAM,eAAe,GAAY,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC;AAElD,MAAM,OAAO,QAAQ;IACV,EAAE,CAAuB;IACzB,GAAG,CAAwB;IAC3B,MAAM,CAAU;IAChB,MAAM,CAAU;IAEzB,YACE,KAAK,GAAkB,EAAE,EACzB,MAA6C;QAE7C,IAAI,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,CAAC;QACnB,IAAI,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC;QACrB,IAAI,CAAC,MAAM,GAAG,MAAM,EAAE,MAAM,IAAI,eAAe,CAAC;QAChD,IAAI,CAAC,MAAM,GAAG,MAAM,EAAE,MAAM,IAAI,eAAe,CAAC;IAClD,CAAC;IAED,mCAAmC;IACnC,MAAM,CAAC,QAAQ,CAAC,KAAY;QAC1B,MAAM,GAAG,GAAG,KAAK,CAAC,QAAQ,CAAC;QAC3B,IAAI,GAAG,KAAK,SAAS;YAAE,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC7C,IAAI,OAAO,GAAG,KAAK,QAAQ;YAAE,OAAO,IAAI,QAAQ,CAAC,GAAG,CAAC,CAAC;QAEtD,MAAM,KAAK,GAAG,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC3C,IAAI,CAAC,KAAK;YAAE,MAAM,IAAI,KAAK,CAAC,4BAA4B,GAAG,GAAG,CAAC,CAAC;QAChE,OAAO,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC7B,CAAC;IAED,MAAM,CAAC,EAAE,CAAC,KAAY;QACpB,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QAC1C,MAAM,OAAO,GAAG,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC/C,MAAM,KAAK,GAAkB;YAC3B,EAAE,EAAE,QAAQ,CAAC,EAAE,IAAI,OAAO,CAAC,EAAE;YAC7B,GAAG,EAAE,QAAQ,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG;SACjC,CAAC;QACF,OAAO,IAAI,QAAQ,CAAC,KAAK,EAAE;YACzB,MAAM,EACJ,OAAO,KAAK,CAAC,EAAE,KAAK,QAAQ;gBAC1B,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC;gBAC9C,CAAC,CAAC,eAAe;YACrB,MAAM,EACJ,OAAO,KAAK,CAAC,GAAG,KAAK,QAAQ;gBAC3B,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC;gBAC/C,CAAC,CAAC,eAAe;SACtB,CAAC,CAAC;IACL,CAAC;IAED,8EAA8E;IAC9E,MAAM,CAAC,QAAQ,CAAC,KAAwB;QACtC,MAAM,IAAI,GAAG,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC;QACnC,IAAI,IAAI,EAAE,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;YAC3D,OAAO,IAAI,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAE,CAAC,CAAC;QAC3D,CAAC;QACD,OAAO,IAAI,QAAQ,EAAE,CAAC;IACxB,CAAC;IAED,IAAI,CAAC,SAAwB;QAC3B,OAAO,IAAI,QAAQ,CAAC,EAAE,EAAE,EAAE,SAAS,CAAC,EAAE,IAAI,IAAI,CAAC,EAAE,EAAE,GAAG,EAAE,SAAS,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;IACvF,CAAC;IAED,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,EAAE,KAAK,QAAQ,CAAC;IAC9B,CAAC;IAED,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,GAAG,KAAK,QAAQ,CAAC;IAC/B,CAAC;CACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BoundaryAxis.d.ts","sourceRoot":"","sources":["../../../src/axis/boundary/BoundaryAxis.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAGvC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAEjD,eAAO,MAAM,YAAY,EAAE,IAAI,CAAC,WAAW,EAAE,WAAW,CA0BvD,CAAC"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { admitWire } from '
|
|
2
|
-
import { isObject } from '
|
|
1
|
+
import { admitWire } from '../../projection/card/admission.js';
|
|
2
|
+
import { isObject } from '../../lib/utils.js';
|
|
3
3
|
export const boundaryAxis = {
|
|
4
4
|
slot: 'boundary',
|
|
5
|
-
|
|
5
|
+
validator(value, errors) {
|
|
6
6
|
if (typeof value === 'string')
|
|
7
7
|
return;
|
|
8
8
|
if (!isObject(value)) {
|
|
@@ -23,7 +23,7 @@ export const boundaryAxis = {
|
|
|
23
23
|
},
|
|
24
24
|
describe: (value) => value,
|
|
25
25
|
reconstruct: (wire) => {
|
|
26
|
-
admitWire(boundaryAxis.
|
|
26
|
+
admitWire(boundaryAxis.validator, wire, 'boundary');
|
|
27
27
|
return wire;
|
|
28
28
|
},
|
|
29
29
|
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BoundaryAxis.js","sourceRoot":"","sources":["../../../src/axis/boundary/BoundaryAxis.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,oCAAoC,CAAC;AAC/D,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAG9C,MAAM,CAAC,MAAM,YAAY,GAAmC;IAC1D,IAAI,EAAE,UAAU;IAEhB,SAAS,CAAC,KAAK,EAAE,MAAM;QACrB,IAAI,OAAO,KAAK,KAAK,QAAQ;YAAE,OAAO;QACtC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YACrB,MAAM,CAAC,IAAI,CAAC;gBACV,IAAI,EAAE,UAAU;gBAChB,OAAO,EAAE,+CAA+C,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;aAChF,CAAC,CAAC;YACH,OAAO;QACT,CAAC;QACD,KAAK,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAU,EAAE,CAAC;YAC1E,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;YACzB,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,QAAQ;gBAAE,SAAS;YACtD,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,QAAQ,EAAE,CAAC;gBACtD,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,YAAY,IAAI,EAAE,EAAE,OAAO,EAAE,0BAA0B,IAAI,YAAY,EAAE,CAAC,CAAC;YACjG,CAAC;QACH,CAAC;IACH,CAAC;IAED,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK;IAC1B,WAAW,EAAE,CAAC,IAAI,EAAE,EAAE;QACpB,SAAS,CAAC,YAAY,CAAC,SAAS,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC;QACpD,OAAO,IAAI,CAAC;IACd,CAAC;CACF,CAAC"}
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
export declare class Clock {
|
|
13
13
|
private static reading;
|
|
14
14
|
static now(): number;
|
|
15
|
-
/**
|
|
15
|
+
/** One substitution moves time for every stamp in the process at once. */
|
|
16
16
|
static freeze(at: number | Date): () => void;
|
|
17
17
|
}
|
|
18
18
|
//# sourceMappingURL=Clock.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Clock.d.ts","sourceRoot":"","sources":["../../../src/axis/lifecycle/Clock.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,qBAAa,KAAK;IAChB,OAAO,CAAC,MAAM,CAAC,OAAO,CAA0B;IAEhD,MAAM,CAAC,GAAG,IAAI,MAAM,CAEnB;IAED,0EAA0E;IAC1E,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,IAAI,CAK3C;CACF"}
|
|
@@ -14,7 +14,7 @@ export class Clock {
|
|
|
14
14
|
static now() {
|
|
15
15
|
return this.reading();
|
|
16
16
|
}
|
|
17
|
-
/**
|
|
17
|
+
/** One substitution moves time for every stamp in the process at once. */
|
|
18
18
|
static freeze(at) {
|
|
19
19
|
const previous = this.reading;
|
|
20
20
|
const instant = at instanceof Date ? at.getTime() : at;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Clock.js","sourceRoot":"","sources":["../../../src/axis/lifecycle/Clock.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,MAAM,OAAO,KAAK;IACR,MAAM,CAAC,OAAO,GAAiB,IAAI,CAAC,GAAG,CAAC;IAEhD,MAAM,CAAC,GAAG;QACR,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC;IACxB,CAAC;IAED,0EAA0E;IAC1E,MAAM,CAAC,MAAM,CAAC,EAAiB;QAC7B,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC;QAC9B,MAAM,OAAO,GAAG,EAAE,YAAY,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACvD,IAAI,CAAC,OAAO,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC;QAC7B,OAAO,GAAG,EAAE,GAAG,IAAI,CAAC,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IAC5C,CAAC;CACF"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { Registry } from '../../lib/Registry.js';
|
|
2
|
+
export type GeneratorRef = 'cuid2' | 'uuid' | 'nanoid' | (string & {});
|
|
3
|
+
/**
|
|
4
|
+
* Who answers a `generate:` name. `cuid2`, `uuid` and `nanoid` are registered like any
|
|
5
|
+
* other, so `Generators.resolve('ulid')` is refused here and lists the three.
|
|
6
|
+
* FR : pour qu'un `generate:` soit répondu par un registre, builtins compris.
|
|
7
|
+
* `Generators.register('ulid', ulid)` → `create: { generate: 'ulid' }` now resolves
|
|
8
|
+
*/
|
|
9
|
+
export declare const Generators: Registry<() => string>;
|
|
10
|
+
//# sourceMappingURL=Generators.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Generators.d.ts","sourceRoot":"","sources":["../../../src/axis/lifecycle/Generators.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAEjD,MAAM,MAAM,YAAY,GAAG,OAAO,GAAG,MAAM,GAAG,QAAQ,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;AAUvE;;;;;GAKG;AACH,eAAO,MAAM,UAAU,iBAAsB,MAAM,CAQlD,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { createId } from '@paralleldrive/cuid2';
|
|
2
|
+
import { Registry } from '../../lib/Registry.js';
|
|
3
|
+
const NANOID_ALPHABET = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_';
|
|
4
|
+
function nanoid() {
|
|
5
|
+
const bytes = new Uint8Array(21);
|
|
6
|
+
globalThis.crypto.getRandomValues(bytes);
|
|
7
|
+
return Array.from(bytes, (byte) => NANOID_ALPHABET[byte & 63]).join('');
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Who answers a `generate:` name. `cuid2`, `uuid` and `nanoid` are registered like any
|
|
11
|
+
* other, so `Generators.resolve('ulid')` is refused here and lists the three.
|
|
12
|
+
* FR : pour qu'un `generate:` soit répondu par un registre, builtins compris.
|
|
13
|
+
* `Generators.register('ulid', ulid)` → `create: { generate: 'ulid' }` now resolves
|
|
14
|
+
*/
|
|
15
|
+
export const Generators = new Registry('generator', 'call Generators.register(name, fn)', [
|
|
16
|
+
['cuid2', createId],
|
|
17
|
+
['uuid', () => globalThis.crypto.randomUUID()],
|
|
18
|
+
['nanoid', nanoid],
|
|
19
|
+
]);
|
|
20
|
+
//# sourceMappingURL=Generators.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Generators.js","sourceRoot":"","sources":["../../../src/axis/lifecycle/Generators.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAEhD,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAIjD,MAAM,eAAe,GAAG,kEAAkE,CAAC;AAE3F,SAAS,MAAM;IACb,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC;IACjC,UAAU,CAAC,MAAM,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;IACzC,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,eAAe,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC1E,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,IAAI,QAAQ,CACpC,WAAW,EACX,oCAAoC,EACpC;IACE,CAAC,OAAO,EAAE,QAAQ,CAAC;IACnB,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;IAC9C,CAAC,QAAQ,EAAE,MAAM,CAAC;CACnB,CACF,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Lifecycle.d.ts","sourceRoot":"","sources":["../../../src/axis/lifecycle/Lifecycle.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAEpD,eAAO,MAAM,aAAa,YAAI,KAAK,EAAE,UAAU,CAAU,CAAC;AAC1D,eAAO,MAAM,aAAa,YAAI,KAAK,EAAE,WAAW,CAAU,CAAC;AAE3D,MAAM,WAAW,cAAc;IAC7B,MAAM,CAAC,EAAE;QAAE,KAAK,EAAE,OAAO,CAAA;KAAE,GAAG;QAAE,QAAQ,EAAE,YAAY,CAAA;KAAE,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC;IAC1F,MAAM,CAAC,EAAE,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC;CACzC;AAED,qBAAa,SAAU,YAAW,cAAc;IAC9C,QAAQ,CAAC,MAAM,CAAC,EAAE,cAAc,CAAC,QAAQ,CAAC,CAAC;IAC3C,QAAQ,CAAC,MAAM,CAAC,EAAE,cAAc,CAAC,QAAQ,CAAC,CAAC;IAE3C,OAAO,eAGN;IAED,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,SAAS,CAAC,EAAE,cAAc,CAAA;KAAE,GAAG,SAAS,CAE1D;IAED,IAAI,gBAAgB,IAAI,OAAO,CAE9B;IAED,IAAI,WAAW,IAAI,OAAO,CAEzB;IAED,IAAI,SAAS,IAAI,OAAO,CAEvB;IAED,IAAI,eAAe,IAAI,OAAO,CAE7B;IAED,IAAI,OAAO,IAAI;QAAE,KAAK,EAAE,OAAO,CAAA;KAAE,GAAG,SAAS,CAK5C;IAED,IAAI,SAAS,IAAI,YAAY,GAAG,SAAS,CAKxC;CACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Lifecycle.js","sourceRoot":"","sources":["../../../src/axis/lifecycle/Lifecycle.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,KAAK,EAAE,UAAU,CAAU,CAAC;AAC1D,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,KAAK,EAAE,WAAW,CAAU,CAAC;AAO3D,MAAM,OAAO,SAAS;IACX,MAAM,CAA4B;IAClC,MAAM,CAA4B;IAE3C,YAAoB,KAAK,GAAmB,EAAE;QAC5C,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;QAC3B,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;IAC7B,CAAC;IAED,MAAM,CAAC,EAAE,CAAC,KAAqC;QAC7C,OAAO,IAAI,SAAS,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IACxC,CAAC;IAED,IAAI,gBAAgB;QAClB,OAAO,IAAI,CAAC,MAAM,KAAK,SAAS,CAAC;IACnC,CAAC;IAED,IAAI,WAAW;QACb,OAAO,IAAI,CAAC,MAAM,KAAK,KAAK,IAAI,IAAI,CAAC,MAAM,KAAK,KAAK,CAAC;IACxD,CAAC;IAED,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,MAAM,KAAK,WAAW,CAAC;IACrC,CAAC;IAED,IAAI,eAAe;QACjB,OAAO,IAAI,CAAC,MAAM,KAAK,KAAK,CAAC;IAC/B,CAAC;IAED,IAAI,OAAO;QACT,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC;QACzB,OAAO,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI,IAAI,OAAO,IAAI,IAAI;YACjE,CAAC,CAAC,EAAE,KAAK,EAAG,IAA2B,CAAC,KAAK,EAAE;YAC/C,CAAC,CAAC,SAAS,CAAC;IAChB,CAAC;IAED,IAAI,SAAS;QACX,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC;QACzB,OAAO,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI,IAAI,UAAU,IAAI,IAAI;YACpE,CAAC,CAAE,IAAmC,CAAC,QAAQ;YAC/C,CAAC,CAAC,SAAS,CAAC;IAChB,CAAC;CACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LifecycleAxis.d.ts","sourceRoot":"","sources":["../../../src/axis/lifecycle/LifecycleAxis.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAIvC,OAAO,EAAgC,KAAK,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAEnF,eAAO,MAAM,aAAa,EAAE,IAAI,CAAC,cAAc,EAAE,cAAc,CAsB9D,CAAC"}
|
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
import { admitWire, oneOfTokens } from '
|
|
2
|
-
import { isObject } from '
|
|
1
|
+
import { admitWire, oneOfTokens } from '../../projection/card/admission.js';
|
|
2
|
+
import { isObject } from '../../lib/utils.js';
|
|
3
3
|
import { CREATE_TOKENS, UPDATE_TOKENS } from './Lifecycle.js';
|
|
4
4
|
export const lifecycleAxis = {
|
|
5
5
|
slot: 'lifecycle',
|
|
6
|
-
|
|
6
|
+
validator(value, errors) {
|
|
7
7
|
if (!isObject(value)) {
|
|
8
8
|
errors.push({ path: 'lifecycle', message: `Expected an object — got ${JSON.stringify(value)}` });
|
|
9
9
|
return;
|
|
10
10
|
}
|
|
11
11
|
if (value.create !== undefined)
|
|
12
|
-
|
|
12
|
+
validateCreate(value.create, errors);
|
|
13
13
|
if (value.update !== undefined && !oneOfTokens(value.update, UPDATE_TOKENS)) {
|
|
14
14
|
errors.push({
|
|
15
15
|
path: 'lifecycle.update',
|
|
@@ -19,11 +19,16 @@ export const lifecycleAxis = {
|
|
|
19
19
|
},
|
|
20
20
|
describe: (value) => value,
|
|
21
21
|
reconstruct: (wire) => {
|
|
22
|
-
admitWire(lifecycleAxis.
|
|
22
|
+
admitWire(lifecycleAxis.validator, wire, 'lifecycle');
|
|
23
23
|
return wire;
|
|
24
24
|
},
|
|
25
25
|
};
|
|
26
|
-
|
|
26
|
+
/**
|
|
27
|
+
* So the four legal ways to declare a creation are stated once, and anything else names them.
|
|
28
|
+
* FR : pour que les quatre façons de déclarer une création soient dites une fois.
|
|
29
|
+
* `create: 3` → `Expected 'now', 'optional', { value } or { generate } — got 3`
|
|
30
|
+
*/
|
|
31
|
+
function validateCreate(rule, errors) {
|
|
27
32
|
if (oneOfTokens(rule, CREATE_TOKENS))
|
|
28
33
|
return;
|
|
29
34
|
if (isObject(rule)) {
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LifecycleAxis.js","sourceRoot":"","sources":["../../../src/axis/lifecycle/LifecycleAxis.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,oCAAoC,CAAC;AAC5E,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,aAAa,EAAuB,MAAM,gBAAgB,CAAC;AAEnF,MAAM,CAAC,MAAM,aAAa,GAAyC;IACjE,IAAI,EAAE,WAAW;IAEjB,SAAS,CAAC,KAAK,EAAE,MAAM;QACrB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YACrB,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,4BAA4B,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;YACjG,OAAO;QACT,CAAC;QACD,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS;YAAE,cAAc,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACrE,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,MAAM,EAAE,aAAa,CAAC,EAAE,CAAC;YAC5E,MAAM,CAAC,IAAI,CAAC;gBACV,IAAI,EAAE,kBAAkB;gBACxB,OAAO,EAAE,uCAAuC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE;aAC/E,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK;IAC1B,WAAW,EAAE,CAAC,IAAI,EAAE,EAAE;QACpB,SAAS,CAAC,aAAa,CAAC,SAAS,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC;QACtD,OAAO,IAAI,CAAC;IACd,CAAC;CACF,CAAC;AAEF;;;;GAIG;AACH,SAAS,cAAc,CAAC,IAAa,EAAE,MAAyB;IAC9D,IAAI,WAAW,CAAC,IAAI,EAAE,aAAa,CAAC;QAAE,OAAO;IAC7C,IAAI,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACnB,IAAI,OAAO,IAAI,IAAI;YAAE,OAAO;QAC5B,IAAI,UAAU,IAAI,IAAI,EAAE,CAAC;YACvB,IAAI,OAAO,IAAI,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;gBACtC,MAAM,CAAC,IAAI,CAAC;oBACV,IAAI,EAAE,2BAA2B;oBACjC,OAAO,EAAE,mCAAmC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;iBAC5E,CAAC,CAAC;YACL,CAAC;YACD,OAAO;QACT,CAAC;IACH,CAAC;IACD,MAAM,CAAC,IAAI,CAAC;QACV,IAAI,EAAE,kBAAkB;QACxB,OAAO,EAAE,+DAA+D,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;KAC/F,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { type Fields } from '../../field/Field.js';
|
|
2
|
+
/**
|
|
3
|
+
* So every storage realizes a create the same way.
|
|
4
|
+
* FR : pour que chaque storage réalise une création de la même façon.
|
|
5
|
+
* `applyCreate({ id: primary(), createdAt: created() }, { title: 'a' })`
|
|
6
|
+
* → `id` generated, `createdAt` stamped, `title` untouched
|
|
7
|
+
*/
|
|
8
|
+
export declare function applyCreate(fields: Fields, input: Record<string, unknown>): Record<string, unknown>;
|
|
9
|
+
/**
|
|
10
|
+
* So `updated()` is stamped by the storage, and no handler has to remember it.
|
|
11
|
+
* FR : pour qu'`updated()` soit estampé par le storage, pas par le handler.
|
|
12
|
+
* `applyUpdate(fields, { title: 'b' })` → `updatedAt` added, nothing else
|
|
13
|
+
*/
|
|
14
|
+
export declare function applyUpdate(fields: Fields, patch: Record<string, unknown>): Record<string, unknown>;
|
|
15
|
+
//# sourceMappingURL=apply.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"apply.d.ts","sourceRoot":"","sources":["../../../src/axis/lifecycle/apply.ts"],"names":[],"mappings":"AAGA,OAAO,EAAc,KAAK,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAE/D;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAcnG;AAYD;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAUnG"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { Lifecycle } from './Lifecycle.js';
|
|
2
|
+
import { Generators } from './Generators.js';
|
|
3
|
+
import { Clock } from './Clock.js';
|
|
4
|
+
/**
|
|
5
|
+
* So every storage realizes a create the same way.
|
|
6
|
+
* FR : pour que chaque storage réalise une création de la même façon.
|
|
7
|
+
* `applyCreate({ id: primary(), createdAt: created() }, { title: 'a' })`
|
|
8
|
+
* → `id` generated, `createdAt` stamped, `title` untouched
|
|
9
|
+
*/
|
|
10
|
+
export function applyCreate(fields, input) {
|
|
11
|
+
const values = { ...input };
|
|
12
|
+
const instant = Clock.now();
|
|
13
|
+
for (const [name, field] of Object.entries(fields)) {
|
|
14
|
+
if (name in values)
|
|
15
|
+
continue;
|
|
16
|
+
const rule = Lifecycle.of(field);
|
|
17
|
+
if (rule.create === 'now')
|
|
18
|
+
values[name] = new Date(instant);
|
|
19
|
+
else if (rule.literal)
|
|
20
|
+
values[name] = freshValue(rule.literal.value);
|
|
21
|
+
else if (rule.generator)
|
|
22
|
+
values[name] = Generators.resolve(rule.generator)();
|
|
23
|
+
}
|
|
24
|
+
return values;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* So two rows created from one declared default never end up sharing the same object.
|
|
28
|
+
* FR : pour que deux lignes nées d'un même défaut ne partagent pas l'objet.
|
|
29
|
+
* `create: { value: [] }` → each instance gets its own array
|
|
30
|
+
*/
|
|
31
|
+
function freshValue(value) {
|
|
32
|
+
if (value === null || typeof value !== 'object')
|
|
33
|
+
return value;
|
|
34
|
+
return structuredClone(value);
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* So `updated()` is stamped by the storage, and no handler has to remember it.
|
|
38
|
+
* FR : pour qu'`updated()` soit estampé par le storage, pas par le handler.
|
|
39
|
+
* `applyUpdate(fields, { title: 'b' })` → `updatedAt` added, nothing else
|
|
40
|
+
*/
|
|
41
|
+
export function applyUpdate(fields, patch) {
|
|
42
|
+
const values = { ...patch };
|
|
43
|
+
const instant = Clock.now();
|
|
44
|
+
for (const [name, field] of Object.entries(fields)) {
|
|
45
|
+
if (Lifecycle.of(field).stampedOnUpdate && !(name in values))
|
|
46
|
+
values[name] = new Date(instant);
|
|
47
|
+
}
|
|
48
|
+
return values;
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=apply.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"apply.js","sourceRoot":"","sources":["../../../src/axis/lifecycle/apply.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAGnC;;;;;GAKG;AACH,MAAM,UAAU,WAAW,CAAC,MAAc,EAAE,KAA8B;IACxE,MAAM,MAAM,GAA4B,EAAE,GAAG,KAAK,EAAE,CAAC;IACrD,MAAM,OAAO,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC;IAE5B,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAsB,EAAE,CAAC;QACxE,IAAI,IAAI,IAAI,MAAM;YAAE,SAAS;QAC7B,MAAM,IAAI,GAAG,SAAS,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;QAEjC,IAAI,IAAI,CAAC,MAAM,KAAK,KAAK;YAAE,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC;aACvD,IAAI,IAAI,CAAC,OAAO;YAAE,MAAM,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;aAChE,IAAI,IAAI,CAAC,SAAS;YAAE,MAAM,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;IAC/E,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;GAIG;AACH,SAAS,UAAU,CAAC,KAAc;IAChC,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC9D,OAAO,eAAe,CAAC,KAAK,CAAC,CAAC;AAChC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,WAAW,CAAC,MAAc,EAAE,KAA8B;IACxE,MAAM,MAAM,GAA4B,EAAE,GAAG,KAAK,EAAE,CAAC;IACrD,MAAM,OAAO,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC;IAE5B,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAsB,EAAE,CAAC;QACxE,IAAI,SAAS,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,eAAe,IAAI,CAAC,CAAC,IAAI,IAAI,MAAM,CAAC;YAC1D,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC;IACrC,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -7,13 +7,14 @@ export interface Relation {
|
|
|
7
7
|
onDelete?: (typeof ON_DELETE)[number];
|
|
8
8
|
}
|
|
9
9
|
/**
|
|
10
|
-
* How a relation is built — the one place a target becomes
|
|
10
|
+
* How a relation is built — the one place a target becomes `() => Entity`.
|
|
11
11
|
*
|
|
12
12
|
* A target arrives as the class or as a function returning it, because a cycle between two
|
|
13
13
|
* entities can only be written the second way. Recognised by FORM, `getFields` on the
|
|
14
|
-
* value: a class answers it,
|
|
14
|
+
* value: a class answers it, `() => Post` does not.
|
|
15
15
|
*/
|
|
16
16
|
export declare const Relation: {
|
|
17
|
+
/** `() => Post` so two entities can point at each other. */
|
|
17
18
|
one(target: EntityConstructor | (() => EntityConstructor), cascade?: boolean): Relation;
|
|
18
19
|
many(target: EntityConstructor | (() => EntityConstructor)): Relation;
|
|
19
20
|
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Relation.d.ts","sourceRoot":"","sources":["../../../src/axis/role/Relation.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,iBAAiB,GAAG,QAAQ,MAAM,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,CAAC;AAErE,eAAO,MAAM,cAAc,YAAI,KAAK,EAAE,MAAM,CAAU,CAAC;AACvD,eAAO,MAAM,SAAS,YAAI,SAAS,EAAE,UAAU,EAAE,UAAU,CAAU,CAAC;AAEtE,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,iBAAiB,CAAC;IAC5B,IAAI,EAAE,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC;IACtC,QAAQ,CAAC,EAAE,CAAC,OAAO,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC;CACvC;AAED;;;;;;GAMG;AACH,eAAO,MAAM,QAAQ;IACnB,4DAA4D;IAC5D,GAAG,SAAS,iBAAiB,GAAG,CAAC,MAAM,iBAAiB,CAAC,YAAY,OAAO,GAAG,QAAQ;IAIvF,IAAI,SAAS,iBAAiB,GAAG,CAAC,MAAM,iBAAiB,CAAC,GAAG,QAAQ;CAGtE,CAAC"}
|
|
@@ -1,21 +1,22 @@
|
|
|
1
1
|
export const RELATION_KINDS = ['one', 'many'];
|
|
2
2
|
export const ON_DELETE = ['cascade', 'restrict', 'set null'];
|
|
3
3
|
/**
|
|
4
|
-
* How a relation is built — the one place a target becomes
|
|
4
|
+
* How a relation is built — the one place a target becomes `() => Entity`.
|
|
5
5
|
*
|
|
6
6
|
* A target arrives as the class or as a function returning it, because a cycle between two
|
|
7
7
|
* entities can only be written the second way. Recognised by FORM, `getFields` on the
|
|
8
|
-
* value: a class answers it,
|
|
8
|
+
* value: a class answers it, `() => Post` does not.
|
|
9
9
|
*/
|
|
10
10
|
export const Relation = {
|
|
11
|
+
/** `() => Post` so two entities can point at each other. */
|
|
11
12
|
one(target, cascade) {
|
|
12
|
-
return { to:
|
|
13
|
+
return { to: normalizeTarget(target), kind: 'one', onDelete: cascade ? 'cascade' : undefined };
|
|
13
14
|
},
|
|
14
15
|
many(target) {
|
|
15
|
-
return { to:
|
|
16
|
+
return { to: normalizeTarget(target), kind: 'many' };
|
|
16
17
|
},
|
|
17
18
|
};
|
|
18
|
-
function
|
|
19
|
+
function normalizeTarget(target) {
|
|
19
20
|
return 'getFields' in target ? () => target : target;
|
|
20
21
|
}
|
|
21
22
|
//# sourceMappingURL=Relation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Relation.js","sourceRoot":"","sources":["../../../src/axis/role/Relation.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,KAAK,EAAE,MAAM,CAAU,CAAC;AACvD,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,SAAS,EAAE,UAAU,EAAE,UAAU,CAAU,CAAC;AAQtE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG;IACtB,4DAA4D;IAC5D,GAAG,CAAC,MAAqD,EAAE,OAAiB;QAC1E,OAAO,EAAE,EAAE,EAAE,eAAe,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;IACjG,CAAC;IAED,IAAI,CAAC,MAAqD;QACxD,OAAO,EAAE,EAAE,EAAE,eAAe,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;IACvD,CAAC;CACF,CAAC;AAEF,SAAS,eAAe,CAA8B,MAAqB;IACzE,OAAO,WAAW,IAAI,MAAM,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,MAAW,CAAC,CAAC,CAAE,MAAkB,CAAC;AACzE,CAAC"}
|
|
@@ -1,26 +1,26 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import type { EntityConstructor, Relation } from "./Relation.js";
|
|
1
|
+
import type { EntityConstructor, Relation } from './Relation.js';
|
|
3
2
|
export interface RoleRules {
|
|
4
3
|
primary?: boolean;
|
|
5
4
|
index?: boolean;
|
|
5
|
+
unique?: boolean;
|
|
6
6
|
relation?: Relation;
|
|
7
|
-
rules?: readonly FieldGroup[];
|
|
8
7
|
}
|
|
9
8
|
export declare class Role implements RoleRules {
|
|
10
9
|
readonly primary?: boolean;
|
|
11
10
|
readonly index?: boolean;
|
|
11
|
+
readonly unique?: boolean;
|
|
12
12
|
readonly relation?: Relation;
|
|
13
|
-
readonly rules?: readonly FieldGroup[];
|
|
14
13
|
private constructor();
|
|
15
14
|
static of(field: {
|
|
16
15
|
role?: RoleRules;
|
|
17
16
|
}): Role;
|
|
18
|
-
/** A group written with no members means "this field": only the key it is declared under resolves it. */
|
|
19
|
-
static resolvedOn(role: RoleRules | undefined, key?: string): RoleRules | undefined;
|
|
20
17
|
get isPrimary(): boolean;
|
|
21
18
|
get isIndexed(): boolean;
|
|
19
|
+
/** A field unique on its own. A group spanning several belongs to the schema. */
|
|
20
|
+
get isUnique(): boolean;
|
|
22
21
|
get isCollection(): boolean;
|
|
23
22
|
get isReference(): boolean;
|
|
23
|
+
/** Calls `() => Post` so no caller has to. */
|
|
24
24
|
get target(): EntityConstructor | undefined;
|
|
25
25
|
}
|
|
26
26
|
//# sourceMappingURL=Role.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Role.d.ts","sourceRoot":"","sources":["../../../src/axis/role/Role.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEjE,MAAM,WAAW,SAAS;IACxB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,QAAQ,CAAC;CACrB;AAED,qBAAa,IAAK,YAAW,SAAS;IACpC,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC;IAE7B,OAAO,eAKN;IAED,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,IAAI,CAAC,EAAE,SAAS,CAAA;KAAE,GAAG,IAAI,CAE3C;IAED,IAAI,SAAS,IAAI,OAAO,CAEvB;IAED,IAAI,SAAS,IAAI,OAAO,CAEvB;IAED,iFAAiF;IACjF,IAAI,QAAQ,IAAI,OAAO,CAEtB;IAED,IAAI,YAAY,IAAI,OAAO,CAE1B;IAED,IAAI,WAAW,IAAI,OAAO,CAEzB;IAED,8CAA8C;IAC9C,IAAI,MAAM,IAAI,iBAAiB,GAAG,SAAS,CAE1C;CACF"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
export class Role {
|
|
2
|
+
primary;
|
|
3
|
+
index;
|
|
4
|
+
unique;
|
|
5
|
+
relation;
|
|
6
|
+
constructor(rules = {}) {
|
|
7
|
+
this.primary = rules.primary;
|
|
8
|
+
this.index = rules.index;
|
|
9
|
+
this.unique = rules.unique;
|
|
10
|
+
this.relation = rules.relation;
|
|
11
|
+
}
|
|
12
|
+
static of(field) {
|
|
13
|
+
return new Role(field.role);
|
|
14
|
+
}
|
|
15
|
+
get isPrimary() {
|
|
16
|
+
return this.primary === true;
|
|
17
|
+
}
|
|
18
|
+
get isIndexed() {
|
|
19
|
+
return this.index === true;
|
|
20
|
+
}
|
|
21
|
+
/** A field unique on its own. A group spanning several belongs to the schema. */
|
|
22
|
+
get isUnique() {
|
|
23
|
+
return this.unique === true;
|
|
24
|
+
}
|
|
25
|
+
get isCollection() {
|
|
26
|
+
return this.relation?.kind === 'many';
|
|
27
|
+
}
|
|
28
|
+
get isReference() {
|
|
29
|
+
return this.relation?.kind === 'one';
|
|
30
|
+
}
|
|
31
|
+
/** Calls `() => Post` so no caller has to. */
|
|
32
|
+
get target() {
|
|
33
|
+
return this.relation?.to();
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=Role.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Role.js","sourceRoot":"","sources":["../../../src/axis/role/Role.ts"],"names":[],"mappings":"AASA,MAAM,OAAO,IAAI;IACN,OAAO,CAAW;IAClB,KAAK,CAAW;IAChB,MAAM,CAAW;IACjB,QAAQ,CAAY;IAE7B,YAAoB,KAAK,GAAc,EAAE;QACvC,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;QAC7B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;QACzB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;QAC3B,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;IACjC,CAAC;IAED,MAAM,CAAC,EAAE,CAAC,KAA2B;QACnC,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC;IAED,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,OAAO,KAAK,IAAI,CAAC;IAC/B,CAAC;IAED,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC;IAC7B,CAAC;IAED,iFAAiF;IACjF,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC;IAC9B,CAAC;IAED,IAAI,YAAY;QACd,OAAO,IAAI,CAAC,QAAQ,EAAE,IAAI,KAAK,MAAM,CAAC;IACxC,CAAC;IAED,IAAI,WAAW;QACb,OAAO,IAAI,CAAC,QAAQ,EAAE,IAAI,KAAK,KAAK,CAAC;IACvC,CAAC;IAED,8CAA8C;IAC9C,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC;IAC7B,CAAC;CACF"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { Axis } from '../Axis.js';
|
|
2
2
|
import { type RoleRules } from './Role.js';
|
|
3
|
-
import type { RoleDescriptor } from '
|
|
3
|
+
import type { RoleDescriptor } from '../../projection/card/Descriptor.js';
|
|
4
4
|
export declare const roleAxis: Axis<RoleRules, RoleDescriptor>;
|
|
5
5
|
//# sourceMappingURL=RoleAxis.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RoleAxis.d.ts","sourceRoot":"","sources":["../../../src/axis/role/RoleAxis.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAY,MAAM,YAAY,CAAC;AAKjD,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qCAAqC,CAAC;AAE1E,eAAO,MAAM,QAAQ,EAAE,IAAI,CAAC,SAAS,EAAE,cAAc,CAgEpD,CAAC"}
|