@fougere/schema 0.5.0-alpha.1 → 0.7.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} +18 -28
- package/dist/Schema.d.ts.map +1 -0
- package/dist/Schema.js +136 -0
- 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/axis/Axis.d.ts +2 -2
- package/dist/axis/Axis.d.ts.map +1 -1
- package/dist/axis/boundary/Boundaries.d.ts +13 -12
- package/dist/axis/boundary/Boundaries.d.ts.map +1 -1
- package/dist/axis/boundary/Boundaries.js +18 -24
- package/dist/axis/boundary/Boundaries.js.map +1 -1
- package/dist/axis/boundary/Boundary.d.ts +3 -1
- package/dist/axis/boundary/Boundary.d.ts.map +1 -1
- package/dist/axis/boundary/Boundary.js +16 -7
- package/dist/axis/boundary/Boundary.js.map +1 -1
- package/dist/axis/boundary/BoundaryAxis.js +4 -4
- package/dist/axis/boundary/BoundaryAxis.js.map +1 -1
- package/dist/axis/lifecycle/Clock.d.ts +1 -1
- package/dist/axis/lifecycle/Clock.d.ts.map +1 -1
- package/dist/axis/lifecycle/Clock.js +1 -1
- package/dist/axis/lifecycle/Clock.js.map +1 -1
- package/dist/axis/lifecycle/Generators.d.ts +6 -14
- package/dist/axis/lifecycle/Generators.d.ts.map +1 -1
- package/dist/axis/lifecycle/Generators.js +10 -28
- package/dist/axis/lifecycle/Generators.js.map +1 -1
- package/dist/axis/lifecycle/LifecycleAxis.js +11 -6
- package/dist/axis/lifecycle/LifecycleAxis.js.map +1 -1
- package/dist/axis/lifecycle/apply.d.ts +14 -5
- package/dist/axis/lifecycle/apply.d.ts.map +1 -1
- package/dist/axis/lifecycle/apply.js +26 -10
- package/dist/axis/lifecycle/apply.js.map +1 -1
- package/dist/axis/role/Relation.d.ts +3 -2
- package/dist/axis/role/Relation.d.ts.map +1 -1
- package/dist/axis/role/Relation.js +6 -5
- package/dist/axis/role/Relation.js.map +1 -1
- package/dist/axis/role/Role.d.ts +6 -6
- package/dist/axis/role/Role.d.ts.map +1 -1
- package/dist/axis/role/Role.js +13 -17
- package/dist/axis/role/Role.js.map +1 -1
- package/dist/axis/role/RoleAxis.d.ts +1 -1
- package/dist/axis/role/RoleAxis.d.ts.map +1 -1
- package/dist/axis/role/RoleAxis.js +28 -37
- package/dist/axis/role/RoleAxis.js.map +1 -1
- package/dist/axis/shape/Formats.d.ts +8 -5
- package/dist/axis/shape/Formats.d.ts.map +1 -1
- package/dist/axis/shape/Formats.js +8 -9
- package/dist/axis/shape/Formats.js.map +1 -1
- package/dist/axis/shape/Shape.d.ts +5 -3
- package/dist/axis/shape/Shape.d.ts.map +1 -1
- package/dist/axis/shape/Shape.js +13 -13
- package/dist/axis/shape/Shape.js.map +1 -1
- 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 +5 -0
- package/dist/entity/EntityAdapters.d.ts.map +1 -0
- package/dist/entity/EntityAdapters.js +2 -0
- package/dist/entity/EntityAdapters.js.map +1 -0
- package/dist/{EntityDeclarations.d.ts → entity/EntityDeclarations.d.ts} +2 -7
- package/dist/entity/EntityDeclarations.d.ts.map +1 -0
- package/dist/entity/EntityDeclarations.js.map +1 -0
- package/dist/entity.d.ts +8 -3
- package/dist/entity.d.ts.map +1 -1
- package/dist/entity.js +6 -1
- package/dist/entity.js.map +1 -1
- package/dist/{fields → field}/Field.d.ts +8 -9
- 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 +24 -28
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +17 -21
- 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/{utils.d.ts → lib/utils.d.ts} +1 -0
- package/dist/lib/utils.d.ts.map +1 -0
- package/dist/{utils.js → lib/utils.js} +1 -0
- package/dist/lib/utils.js.map +1 -0
- package/dist/projection/Cases.d.ts +39 -0
- package/dist/projection/Cases.d.ts.map +1 -0
- package/dist/projection/Cases.js +146 -0
- package/dist/projection/Cases.js.map +1 -0
- package/dist/projection/Visibility.d.ts +2 -1
- package/dist/projection/Visibility.d.ts.map +1 -1
- package/dist/projection/Visibility.js +1 -0
- package/dist/projection/Visibility.js.map +1 -1
- package/dist/{card → projection/card}/Bundle.d.ts +1 -1
- package/dist/projection/card/Bundle.d.ts.map +1 -0
- package/dist/{card → projection/card}/Bundle.js +7 -7
- package/dist/projection/card/Bundle.js.map +1 -0
- package/dist/projection/card/Card.d.ts +21 -0
- package/dist/projection/card/Card.d.ts.map +1 -0
- package/dist/{card → projection/card}/Card.js +119 -58
- package/dist/projection/card/Card.js.map +1 -0
- package/dist/{card → projection/card}/Descriptor.d.ts +7 -7
- package/dist/projection/card/Descriptor.d.ts.map +1 -0
- package/dist/projection/card/Descriptor.js.map +1 -0
- package/dist/projection/card/admission.d.ts +20 -0
- package/dist/projection/card/admission.d.ts.map +1 -0
- package/dist/projection/card/admission.js +27 -0
- package/dist/projection/card/admission.js.map +1 -0
- package/dist/{card → projection/card}/diff.d.ts +3 -3
- package/dist/projection/card/diff.d.ts.map +1 -0
- package/dist/{card → projection/card}/diff.js.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} +13 -13
- 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} +14 -11
- package/dist/validator/FieldValueValidator.js.map +1 -0
- package/dist/{judge/RowRefusal.d.ts → validator/InputRefusal.d.ts} +3 -4
- package/dist/validator/InputRefusal.d.ts.map +1 -0
- package/dist/{judge/RowRefusal.js → validator/InputRefusal.js} +3 -3
- 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} +21 -17
- 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 +6 -1
- 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/indexed.d.ts +6 -1
- package/dist/vocabulary/indexed.d.ts.map +1 -1
- package/dist/vocabulary/indexed.js +8 -1
- 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 +6 -1
- package/dist/vocabulary/many.d.ts.map +1 -1
- package/dist/vocabulary/many.js +6 -1
- 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 +11 -2
- 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 +10 -3
- package/dist/vocabulary/optional.js.map +1 -1
- package/dist/vocabulary/primary.d.ts +1 -1
- package/dist/vocabulary/primary.d.ts.map +1 -1
- package/dist/vocabulary/primary.js +10 -5
- 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 +5 -0
- package/dist/vocabulary/readOnly.js.map +1 -1
- package/dist/vocabulary/ref.d.ts +6 -1
- package/dist/vocabulary/ref.d.ts.map +1 -1
- package/dist/vocabulary/ref.js +6 -1
- package/dist/vocabulary/ref.js.map +1 -1
- package/dist/vocabulary/text.d.ts +6 -1
- package/dist/vocabulary/text.d.ts.map +1 -1
- package/dist/vocabulary/text.js +13 -2
- 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 +8 -4
- 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 +21 -11
- 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 +5 -0
- package/dist/vocabulary/writeOnly.js.map +1 -1
- package/package.json +1 -1
- package/src/Schema.ts +208 -0
- package/src/SchemaDefinition.ts +257 -0
- package/src/SchemaDerivation.ts +44 -0
- package/src/{schema/SchemaView.ts → SchemaView.ts} +9 -9
- package/src/axis/Axis.ts +2 -2
- package/src/axis/boundary/Boundaries.ts +25 -32
- package/src/axis/boundary/Boundary.ts +23 -10
- package/src/axis/boundary/BoundaryAxis.ts +4 -4
- package/src/axis/lifecycle/Clock.ts +1 -1
- package/src/axis/lifecycle/Generators.ts +12 -29
- package/src/axis/lifecycle/LifecycleAxis.ts +12 -7
- package/src/axis/lifecycle/apply.ts +30 -15
- package/src/axis/role/Relation.ts +6 -5
- package/src/axis/role/Role.ts +16 -20
- package/src/axis/role/RoleAxis.ts +28 -41
- package/src/axis/shape/Formats.ts +9 -11
- package/src/axis/shape/Shape.ts +18 -18
- package/src/entity/EntityAdapterSet.ts +81 -0
- package/src/entity/EntityAdapters.ts +8 -0
- package/src/entity/EntityDeclarations.ts +16 -0
- package/src/entity.ts +8 -3
- package/src/field/Field.ts +61 -0
- package/src/field/FieldSet.ts +75 -0
- package/src/index.ts +50 -28
- package/src/lib/Registry.ts +37 -0
- package/src/{utils.ts → lib/utils.ts} +3 -0
- package/src/projection/Cases.ts +176 -0
- package/src/projection/Visibility.ts +6 -2
- package/src/{card → projection/card}/Bundle.ts +9 -9
- package/src/projection/card/Card.ts +342 -0
- package/src/{card → projection/card}/Descriptor.ts +7 -7
- package/src/projection/card/admission.ts +40 -0
- package/src/{card → projection/card}/diff.ts +3 -3
- package/src/validator/AdapterFieldValidator.ts +40 -0
- package/src/{judge/FieldJudge.ts → validator/FieldDeclarationValidator.ts} +15 -15
- package/src/{judge/ValueJudge.ts → validator/FieldValueValidator.ts} +18 -13
- package/src/{judge/RowRefusal.ts → validator/InputRefusal.ts} +2 -4
- package/src/{judge/RowJudge.ts → validator/InputValidator.ts} +27 -20
- package/src/vocabulary/bool.ts +8 -2
- package/src/vocabulary/created.ts +7 -2
- package/src/vocabulary/date.ts +6 -1
- package/src/vocabulary/email.ts +6 -1
- package/src/vocabulary/immutable.ts +12 -4
- package/src/vocabulary/indexed.ts +9 -2
- package/src/vocabulary/json.ts +13 -6
- package/src/vocabulary/list.ts +10 -2
- package/src/vocabulary/many.ts +9 -2
- package/src/vocabulary/nullable.ts +13 -5
- package/src/vocabulary/number.ts +13 -3
- package/src/vocabulary/oneOf.ts +11 -3
- package/src/vocabulary/optional.ts +16 -6
- package/src/vocabulary/primary.ts +10 -5
- package/src/vocabulary/readOnly.ts +12 -4
- package/src/vocabulary/ref.ts +10 -2
- package/src/vocabulary/text.ts +15 -3
- package/src/vocabulary/unique.ts +10 -9
- package/src/vocabulary/updated.ts +6 -1
- package/src/vocabulary/url.ts +6 -1
- package/src/vocabulary/vocabulary.ts +21 -12
- package/src/vocabulary/writeOnly.ts +12 -4
- package/dist/EntityAdapters.d.ts +0 -28
- package/dist/EntityAdapters.d.ts.map +0 -1
- package/dist/EntityAdapters.js +0 -75
- package/dist/EntityAdapters.js.map +0 -1
- package/dist/EntityDeclarations.d.ts.map +0 -1
- package/dist/EntityDeclarations.js.map +0 -1
- package/dist/card/Bundle.d.ts.map +0 -1
- package/dist/card/Bundle.js.map +0 -1
- package/dist/card/Card.d.ts +0 -27
- package/dist/card/Card.d.ts.map +0 -1
- package/dist/card/Card.js.map +0 -1
- package/dist/card/Descriptor.d.ts.map +0 -1
- package/dist/card/Descriptor.js.map +0 -1
- package/dist/card/EntityTypeSource.d.ts +0 -12
- package/dist/card/EntityTypeSource.d.ts.map +0 -1
- package/dist/card/EntityTypeSource.js +0 -78
- package/dist/card/EntityTypeSource.js.map +0 -1
- package/dist/card/FacadeTypeSource.d.ts +0 -19
- package/dist/card/FacadeTypeSource.d.ts.map +0 -1
- package/dist/card/FacadeTypeSource.js +0 -40
- package/dist/card/FacadeTypeSource.js.map +0 -1
- package/dist/card/admission.d.ts +0 -9
- package/dist/card/admission.d.ts.map +0 -1
- package/dist/card/admission.js +0 -16
- package/dist/card/admission.js.map +0 -1
- package/dist/card/diff.d.ts.map +0 -1
- package/dist/constraint/FieldGroup.d.ts +0 -21
- package/dist/constraint/FieldGroup.d.ts.map +0 -1
- package/dist/constraint/FieldGroup.js +0 -65
- package/dist/constraint/FieldGroup.js.map +0 -1
- package/dist/constraint/Unique.d.ts +0 -4
- package/dist/constraint/Unique.d.ts.map +0 -1
- package/dist/constraint/Unique.js +0 -4
- package/dist/constraint/Unique.js.map +0 -1
- package/dist/fields/Field.d.ts.map +0 -1
- package/dist/fields/Field.js +0 -52
- package/dist/fields/Field.js.map +0 -1
- package/dist/fields/FieldSet.d.ts +0 -28
- package/dist/fields/FieldSet.d.ts.map +0 -1
- package/dist/fields/FieldSet.js +0 -55
- package/dist/fields/FieldSet.js.map +0 -1
- package/dist/judge/Cases.d.ts +0 -50
- package/dist/judge/Cases.d.ts.map +0 -1
- package/dist/judge/Cases.js +0 -108
- package/dist/judge/Cases.js.map +0 -1
- 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.map +0 -1
- package/dist/judge/RowRefusal.js.map +0 -1
- package/dist/judge/ValueForm.d.ts +0 -3
- package/dist/judge/ValueForm.d.ts.map +0 -1
- package/dist/judge/ValueForm.js +0 -3
- package/dist/judge/ValueForm.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/schema/Schema.d.ts.map +0 -1
- package/dist/schema/Schema.js +0 -150
- 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 -46
- package/dist/schema/SchemaDerivation.js.map +0 -1
- package/dist/schema/SchemaView.d.ts.map +0 -1
- package/dist/utils.d.ts.map +0 -1
- package/dist/utils.js.map +0 -1
- package/src/EntityAdapters.ts +0 -100
- package/src/EntityDeclarations.ts +0 -19
- package/src/card/Card.ts +0 -256
- package/src/card/EntityTypeSource.ts +0 -90
- package/src/card/FacadeTypeSource.ts +0 -55
- package/src/card/admission.ts +0 -25
- package/src/constraint/FieldGroup.ts +0 -91
- package/src/constraint/Unique.ts +0 -3
- package/src/fields/Field.ts +0 -80
- package/src/fields/FieldSet.ts +0 -62
- package/src/judge/Cases.ts +0 -139
- package/src/judge/ValueForm.ts +0 -7
- package/src/judge/options.ts +0 -3
- package/src/projection/SchemaOrCard.ts +0 -18
- package/src/schema/Schema.ts +0 -197
- package/src/schema/SchemaDefinition.ts +0 -120
- package/src/schema/SchemaDerivation.ts +0 -57
- /package/dist/{schema/SchemaView.js → SchemaView.js} +0 -0
- /package/dist/{EntityDeclarations.js → entity/EntityDeclarations.js} +0 -0
- /package/dist/{card → projection/card}/Descriptor.js +0 -0
- /package/dist/{card → projection/card}/diff.js +0 -0
- /package/src/{judge/result.ts → validation.ts} +0 -0
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
import type { Fields } from '../
|
|
1
|
+
import type { Fields } from '../field/Field.js';
|
|
2
2
|
export declare class Visibility {
|
|
3
3
|
private readonly fields;
|
|
4
4
|
private constructor();
|
|
5
5
|
static of(fields: Fields): Visibility;
|
|
6
|
+
/** A write-only secret is absent from the type, not just from the value. */
|
|
6
7
|
get input(): Fields;
|
|
7
8
|
get output(): Fields;
|
|
8
9
|
encode(record: Record<string, unknown>): Record<string, unknown>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Visibility.d.ts","sourceRoot":"","sources":["../../src/projection/Visibility.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"Visibility.d.ts","sourceRoot":"","sources":["../../src/projection/Visibility.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAEhD,qBAAa,UAAU;IACD,OAAO,CAAC,QAAQ,CAAC,MAAM;IAA3C,OAAO,eAAgD;IAEvD,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,CAEpC;IAED,4EAA4E;IAC5E,IAAI,KAAK,IAAI,MAAM,CAWlB;IAED,IAAI,MAAM,IAAI,MAAM,CAOnB;IAED,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAc/D;CACF"}
|
|
@@ -9,6 +9,7 @@ export class Visibility {
|
|
|
9
9
|
static of(fields) {
|
|
10
10
|
return new Visibility(fields);
|
|
11
11
|
}
|
|
12
|
+
/** A write-only secret is absent from the type, not just from the value. */
|
|
12
13
|
get input() {
|
|
13
14
|
const result = {};
|
|
14
15
|
for (const [name, field] of Object.entries(this.fields)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Visibility.js","sourceRoot":"","sources":["../../src/projection/Visibility.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AACxD,OAAO,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAC;AAC3D,OAAO,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAG5C,MAAM,OAAO,UAAU;IACgB,MAAM;IAA3C,YAAqC,MAAc;sBAAd,MAAM;IAAW,CAAC;IAEvD,MAAM,CAAC,EAAE,CAAC,MAAc;QACtB,OAAO,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC;IAChC,CAAC;IAED,IAAI,KAAK;QACP,MAAM,MAAM,GAAW,EAAE,CAAC;QAC1B,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;YACxD,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;YAC5B,IAAI,IAAI,CAAC,SAAS;gBAAE,SAAS;YAC7B,IAAI,SAAS,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,KAAK;gBAAE,SAAS;YACnD,IAAI,IAAI,CAAC,YAAY;gBAAE,SAAS;YAChC,IAAI,QAAQ,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,QAAQ;gBAAE,SAAS;YAC1C,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;QACvB,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,IAAI,MAAM;QACR,MAAM,MAAM,GAAW,EAAE,CAAC;QAC1B,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;YACxD,IAAI,QAAQ,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,SAAS;gBAAE,SAAS;YAC3C,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;QACvB,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,MAAM,CAAC,MAA+B;QACpC,MAAM,GAAG,GAA4B,EAAE,GAAG,MAAM,EAAE,CAAC;QACnD,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;YACvD,IAAI,CAAC,CAAC,GAAG,IAAI,MAAM,CAAC;gBAAE,SAAS;YAC/B,MAAM,QAAQ,GAAG,QAAQ,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;YACpC,IAAI,QAAQ,CAAC,SAAS,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"Visibility.js","sourceRoot":"","sources":["../../src/projection/Visibility.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AACxD,OAAO,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAC;AAC3D,OAAO,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAG5C,MAAM,OAAO,UAAU;IACgB,MAAM;IAA3C,YAAqC,MAAc;sBAAd,MAAM;IAAW,CAAC;IAEvD,MAAM,CAAC,EAAE,CAAC,MAAc;QACtB,OAAO,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC;IAChC,CAAC;IAED,4EAA4E;IAC5E,IAAI,KAAK;QACP,MAAM,MAAM,GAAW,EAAE,CAAC;QAC1B,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;YACxD,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;YAC5B,IAAI,IAAI,CAAC,SAAS;gBAAE,SAAS;YAC7B,IAAI,SAAS,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,KAAK;gBAAE,SAAS;YACnD,IAAI,IAAI,CAAC,YAAY;gBAAE,SAAS;YAChC,IAAI,QAAQ,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,QAAQ;gBAAE,SAAS;YAC1C,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;QACvB,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,IAAI,MAAM;QACR,MAAM,MAAM,GAAW,EAAE,CAAC;QAC1B,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;YACxD,IAAI,QAAQ,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,SAAS;gBAAE,SAAS;YAC3C,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;QACvB,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,MAAM,CAAC,MAA+B;QACpC,MAAM,GAAG,GAA4B,EAAE,GAAG,MAAM,EAAE,CAAC;QACnD,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;YACvD,IAAI,CAAC,CAAC,GAAG,IAAI,MAAM,CAAC;gBAAE,SAAS;YAC/B,MAAM,QAAQ,GAAG,QAAQ,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;YACpC,IAAI,QAAQ,CAAC,SAAS,EAAE,CAAC;gBACvB,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC;gBAChB,SAAS;YACX,CAAC;YACD,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;YAC1B,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS;gBAAE,SAAS;YACpD,GAAG,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACpC,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;CACF"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { SchemaView } from '
|
|
1
|
+
import type { SchemaView } from '../../SchemaView.js';
|
|
2
2
|
import type { SchemaBundle } from './Descriptor.js';
|
|
3
3
|
import type { SetDiff, SetDiffOptions } from './diff.js';
|
|
4
4
|
type SchemaSet = Record<string, SchemaView> | SchemaView[];
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Bundle.d.ts","sourceRoot":"","sources":["../../../src/projection/card/Bundle.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEtD,OAAO,KAAK,EAAE,YAAY,EAAoB,MAAM,iBAAiB,CAAC;AACtE,OAAO,KAAK,EAAQ,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAE/D,KAAK,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,GAAG,UAAU,EAAE,CAAC;AAE3D,wEAAwE;AACxE,qBAAa,MAAM;IACG,QAAQ,CAAC,UAAU,EAAE,YAAY;IAArD,OAAO,eAAkD;IAEzD,MAAM,CAAC,WAAW,CAAC,OAAO,EAAE,SAAS,GAAG,MAAM,CA4B7C;IAED,MAAM,CAAC,cAAc,CAAC,UAAU,EAAE,YAAY,GAAG,MAAM,CAEtD;IAED,SAAS,IAAI,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAUtC;IAED,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,GAAE,cAAmB,GAAG,OAAO,CAkBzD;CACF"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { lowerFirst } from '
|
|
1
|
+
import { lowerFirst } from '../../lib/utils.js';
|
|
2
2
|
import { Card } from './Card.js';
|
|
3
3
|
/** A portable schema map and the decisions that only a map can make. */
|
|
4
4
|
export class Bundle {
|
|
@@ -35,12 +35,12 @@ export class Bundle {
|
|
|
35
35
|
return new Bundle(descriptor);
|
|
36
36
|
}
|
|
37
37
|
toSchemas() {
|
|
38
|
-
const
|
|
39
|
-
const resolve = (name) =>
|
|
38
|
+
const byName = {};
|
|
39
|
+
const resolve = (name) => byName[name.toLowerCase()];
|
|
40
40
|
const schemas = {};
|
|
41
41
|
for (const [name, descriptor] of Object.entries(this.descriptor.$defs)) {
|
|
42
42
|
const schema = Card.fromDescriptor(descriptor).toSchema(resolve, name);
|
|
43
|
-
|
|
43
|
+
byName[name.toLowerCase()] = schema;
|
|
44
44
|
schemas[name] = schema;
|
|
45
45
|
}
|
|
46
46
|
return schemas;
|
|
@@ -53,9 +53,9 @@ export class Bundle {
|
|
|
53
53
|
const target = after[name];
|
|
54
54
|
if (target === undefined)
|
|
55
55
|
continue;
|
|
56
|
-
const
|
|
57
|
-
if (
|
|
58
|
-
entities[name] =
|
|
56
|
+
const diff = Card.fromDescriptor(descriptor).diff(Card.fromDescriptor(target), { renamed: options.renamed?.[name] ?? {} });
|
|
57
|
+
if (diff.changes.length > 0 || diff.ambiguous.length > 0)
|
|
58
|
+
entities[name] = diff;
|
|
59
59
|
}
|
|
60
60
|
return {
|
|
61
61
|
entitiesAdded: Object.keys(after).filter((name) => !(name in before)),
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Bundle.js","sourceRoot":"","sources":["../../../src/projection/card/Bundle.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { type Resolver } from '../../axis/Axis.js';
|
|
2
|
+
import { Field, type Fields } from '../../field/Field.js';
|
|
3
|
+
import { type SchemaConstructor } from '../../Schema.js';
|
|
4
|
+
import type { Values, SchemaView } from '../../SchemaView.js';
|
|
5
|
+
import type { DerivedFrom, SchemaDescriptor } from './Descriptor.js';
|
|
6
|
+
import type { Diff, DiffOptions } from './diff.js';
|
|
7
|
+
type FieldsOf<T> = {
|
|
8
|
+
[K in keyof T]-?: Field<T[K]>;
|
|
9
|
+
};
|
|
10
|
+
/** One portable schema description and every decision made about that description. */
|
|
11
|
+
export declare class Card<T = Values<Fields>> {
|
|
12
|
+
readonly descriptor: SchemaDescriptor;
|
|
13
|
+
private constructor();
|
|
14
|
+
static fromSchema<TFields extends Fields>(schema: SchemaView<TFields>, name?: string): Card<Values<TFields>>;
|
|
15
|
+
static fromDescriptor<T = Values<Fields>>(descriptor: SchemaDescriptor): Card<T>;
|
|
16
|
+
get origin(): DerivedFrom | undefined;
|
|
17
|
+
toSchema(resolve?: Resolver, name?: string): SchemaConstructor<FieldsOf<T>>;
|
|
18
|
+
diff(other: Card, options?: DiffOptions): Diff;
|
|
19
|
+
}
|
|
20
|
+
export {};
|
|
21
|
+
//# sourceMappingURL=Card.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Card.d.ts","sourceRoot":"","sources":["../../../src/projection/card/Card.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmC,KAAK,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAGpF,OAAO,EAAE,KAAK,EAAE,KAAK,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAG1D,OAAO,EAAU,KAAK,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACjE,OAAO,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAE9D,OAAO,KAAK,EACV,WAAW,EAGX,gBAAgB,EACjB,MAAM,iBAAiB,CAAC;AACzB,OAAO,KAAK,EAAU,IAAI,EAAE,WAAW,EAA4B,MAAM,WAAW,CAAC;AAErF,KAAK,QAAQ,CAAC,CAAC,IAAI;KAAG,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CAAE,CAAC;AAErD,sFAAsF;AACtF,qBAAa,IAAI,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC;IACd,QAAQ,CAAC,UAAU,EAAE,gBAAgB;IAAzD,OAAO,eAAsD;IAE7D,MAAM,CAAC,UAAU,CAAC,OAAO,SAAS,MAAM,EACtC,MAAM,EAAE,UAAU,CAAC,OAAO,CAAC,EAC3B,IAAI,CAAC,EAAE,MAAM,GACZ,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAyBvB;IAED,MAAM,CAAC,cAAc,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,UAAU,EAAE,gBAAgB,GAAG,IAAI,CAAC,CAAC,CAAC,CAE/E;IAED,IAAI,MAAM,IAAI,WAAW,GAAG,SAAS,CAEpC;IAED,QAAQ,CAAC,OAAO,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,iBAAiB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CA+B1E;IAED,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,GAAE,WAAgB,GAAG,IAAI,CA4DjD;CACF"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { EXTENSION_AXES, EXTENSION_SLOTS } from '
|
|
1
|
+
import { EXTENSION_AXES, EXTENSION_SLOTS } from '../../axis/Axis.js';
|
|
2
2
|
import { dequal } from 'dequal';
|
|
3
|
-
import { clean } from '
|
|
4
|
-
import { Field } from '
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import { Schema } from '
|
|
3
|
+
import { clean, isObject } from '../../lib/utils.js';
|
|
4
|
+
import { Field } from '../../field/Field.js';
|
|
5
|
+
import { deduplicated } from '../../field/FieldSet.js';
|
|
6
|
+
import { InputValidator } from '../../validator/InputValidator.js';
|
|
7
|
+
import { Schema } from '../../Schema.js';
|
|
8
8
|
import { refuse } from './admission.js';
|
|
9
9
|
/** One portable schema description and every decision made about that description. */
|
|
10
10
|
export class Card {
|
|
@@ -14,14 +14,17 @@ export class Card {
|
|
|
14
14
|
}
|
|
15
15
|
static fromSchema(schema, name) {
|
|
16
16
|
const fields = schema.getFields();
|
|
17
|
-
const
|
|
17
|
+
const validator = InputValidator.of(fields);
|
|
18
18
|
const properties = {};
|
|
19
19
|
const required = [];
|
|
20
20
|
for (const [key, field] of Object.entries(fields)) {
|
|
21
21
|
properties[key] = describeField(field, key);
|
|
22
|
-
if (
|
|
22
|
+
if (validator.onAbsent(field) === null)
|
|
23
23
|
required.push(key);
|
|
24
24
|
}
|
|
25
|
+
for (const group of schema.getUnique() ?? [])
|
|
26
|
+
for (const member of group)
|
|
27
|
+
carryGroup(properties[member], group);
|
|
25
28
|
const descriptor = {
|
|
26
29
|
type: 'object',
|
|
27
30
|
properties,
|
|
@@ -41,37 +44,35 @@ export class Card {
|
|
|
41
44
|
static fromDescriptor(descriptor) {
|
|
42
45
|
return new Card(descriptor);
|
|
43
46
|
}
|
|
44
|
-
/** The root derivation recorded by this card, when its schema was cut from another. */
|
|
45
47
|
get origin() {
|
|
46
48
|
return this.descriptor['x-fougere-derived'];
|
|
47
49
|
}
|
|
48
|
-
/**
|
|
49
|
-
* Rebuild the live schema. A bundle supplies `resolve` so relation thunks can find the
|
|
50
|
-
* other reconstructed cards; a lone card deliberately falls back to a name stand-in.
|
|
51
|
-
*/
|
|
52
50
|
toSchema(resolve, name) {
|
|
53
51
|
const descriptor = this.descriptor;
|
|
54
|
-
const
|
|
52
|
+
const subject = name ? `schema '${name}'` : 'this schema';
|
|
55
53
|
if (!isObject(descriptor))
|
|
56
|
-
refuse(`${
|
|
54
|
+
refuse(`${subject} is not an object`, 'A card carries one JSON Schema per door.');
|
|
57
55
|
const version = descriptor['x-fougere-version'];
|
|
58
56
|
if (version !== 1) {
|
|
59
|
-
refuse(`${
|
|
57
|
+
refuse(`${subject} states \`x-fougere-version: ${JSON.stringify(version)}\` and this reader speaks 1`, 'A producer and its readers move together: re-sync the consumer, or serve the version it speaks.');
|
|
60
58
|
}
|
|
61
59
|
if (!isObject(descriptor.properties)) {
|
|
62
|
-
refuse(`${
|
|
60
|
+
refuse(`${subject} carries no \`properties\` object`, 'A schema is its fields; there is nothing to rebuild.');
|
|
63
61
|
}
|
|
64
62
|
const fields = {};
|
|
63
|
+
const groups = [];
|
|
65
64
|
for (const [key, property] of Object.entries(descriptor.properties)) {
|
|
66
65
|
fields[key] = reconstructField(property, key, resolve);
|
|
66
|
+
for (const group of property['x-fougere']?.role?.unique ?? [])
|
|
67
|
+
if (group.length > 1)
|
|
68
|
+
groups.push([...group]);
|
|
67
69
|
}
|
|
68
|
-
const schema = Schema.of({ fields });
|
|
70
|
+
const schema = Schema.of({ fields, constraints: { unique: deduplicated(groups) } });
|
|
69
71
|
const title = name ?? descriptor.title;
|
|
70
72
|
if (title)
|
|
71
73
|
Object.defineProperty(schema, 'name', { value: title, configurable: true });
|
|
72
74
|
return schema;
|
|
73
75
|
}
|
|
74
|
-
/** What must change to turn this card into `other`. */
|
|
75
76
|
diff(other, options = {}) {
|
|
76
77
|
const changes = [];
|
|
77
78
|
const renamed = options.renamed ?? {};
|
|
@@ -108,14 +109,29 @@ export class Card {
|
|
|
108
109
|
const claimed = new Set(Object.values(renamed));
|
|
109
110
|
const added = Object.keys(after).filter((field) => !(field in before) && !claimed.has(field));
|
|
110
111
|
for (const field of removed) {
|
|
111
|
-
changes.push({
|
|
112
|
+
changes.push({
|
|
113
|
+
kind: 'removed',
|
|
114
|
+
field,
|
|
115
|
+
from: before[field],
|
|
116
|
+
required: requiredBefore.has(field),
|
|
117
|
+
});
|
|
112
118
|
}
|
|
113
119
|
for (const field of added) {
|
|
114
|
-
changes.push({
|
|
120
|
+
changes.push({
|
|
121
|
+
kind: 'added',
|
|
122
|
+
field,
|
|
123
|
+
to: after[field],
|
|
124
|
+
required: requiredAfter.has(field),
|
|
125
|
+
});
|
|
115
126
|
}
|
|
116
127
|
return { changes, ambiguous: candidates(removed, added, before, after) };
|
|
117
128
|
}
|
|
118
129
|
}
|
|
130
|
+
/**
|
|
131
|
+
* So the three axes write themselves under `x-fougere`, each by its own hand.
|
|
132
|
+
* FR : pour que les trois axes s'écrivent sous `x-fougere`, chacun de sa main.
|
|
133
|
+
* `ref(User)` → `{ role: { relation: { to: 'user', kind: 'one' } } }`
|
|
134
|
+
*/
|
|
119
135
|
function describeExtension(field, key) {
|
|
120
136
|
const extension = {};
|
|
121
137
|
for (const axis of EXTENSION_AXES) {
|
|
@@ -129,12 +145,15 @@ function describeExtension(field, key) {
|
|
|
129
145
|
clean(extension);
|
|
130
146
|
return Object.keys(extension).length ? extension : undefined;
|
|
131
147
|
}
|
|
148
|
+
/**
|
|
149
|
+
* So the shape stays plain JSON Schema, and what is ours sits under one key.
|
|
150
|
+
* FR : pour que la forme reste du JSON Schema, ce qui est à nous tenant sous une clé.
|
|
151
|
+
* `text({ max: 200 })` → `{ type: 'string', maxLength: 200 }`
|
|
152
|
+
*/
|
|
132
153
|
function describeField(field, key) {
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
descriptor[shapeKey] = value;
|
|
137
|
-
}
|
|
154
|
+
// The shape IS JSON Schema, so it lands whole rather than key by key — which is what let
|
|
155
|
+
// it be copied under a computed key into a type that names its own.
|
|
156
|
+
const descriptor = clean({ ...field.shape });
|
|
138
157
|
if (field.meta?.description)
|
|
139
158
|
descriptor.description = field.meta.description;
|
|
140
159
|
const extension = describeExtension(field, key);
|
|
@@ -142,47 +161,44 @@ function describeField(field, key) {
|
|
|
142
161
|
descriptor['x-fougere'] = extension;
|
|
143
162
|
return descriptor;
|
|
144
163
|
}
|
|
164
|
+
/**
|
|
165
|
+
* So a derived card names its root and what became of each field.
|
|
166
|
+
* FR : pour qu'une carte dérivée nomme sa racine et le sort de chaque champ.
|
|
167
|
+
* `Post.pick('title')` → `{ from: 'Post', nameOf: { title: 'title' } }`
|
|
168
|
+
*/
|
|
145
169
|
function originOf(schema) {
|
|
146
170
|
const { derivation } = schema;
|
|
147
171
|
if (!derivation)
|
|
148
172
|
return undefined;
|
|
149
|
-
const
|
|
150
|
-
return { from: derivation.sourceName,
|
|
173
|
+
const nameOf = Object.fromEntries(Object.entries(derivation.nameOf).map(([key, value]) => [key, value ?? null]));
|
|
174
|
+
return { from: derivation.sourceName, nameOf };
|
|
151
175
|
}
|
|
176
|
+
/**
|
|
177
|
+
* So a shape read back is the shape that was written, and an unknown type is refused.
|
|
178
|
+
* FR : pour qu'une forme relue soit celle qui a été écrite, un type inconnu étant refusé.
|
|
179
|
+
* `{ type: 'string', maxLength: 200 }` → the same shape a `text({ max: 200 })` states
|
|
180
|
+
*/
|
|
152
181
|
function reconstructShape(property) {
|
|
153
182
|
const types = Array.isArray(property.type) ? property.type : property.type ? [property.type] : [];
|
|
154
|
-
|
|
155
|
-
if (base === undefined)
|
|
183
|
+
if (!types.some((type) => type !== 'null'))
|
|
156
184
|
return undefined;
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
case 'string':
|
|
164
|
-
return clean({
|
|
165
|
-
type,
|
|
166
|
-
minLength: property.minLength,
|
|
167
|
-
maxLength: property.maxLength,
|
|
168
|
-
pattern: property.pattern,
|
|
169
|
-
enum: property.enum,
|
|
170
|
-
format: property.format,
|
|
171
|
-
});
|
|
172
|
-
case 'number':
|
|
173
|
-
case 'integer':
|
|
174
|
-
return clean({ type, minimum: property.minimum, maximum: property.maximum });
|
|
175
|
-
case 'boolean':
|
|
176
|
-
return { type };
|
|
177
|
-
default:
|
|
178
|
-
return clean({ type, properties: property.properties, required: property.required });
|
|
179
|
-
}
|
|
185
|
+
// `describeField` writes the shape whole, so it is read whole: a list of keywords here
|
|
186
|
+
// would be a second inventory, and the one that forgets a keyword loses it in silence.
|
|
187
|
+
const { 'x-fougere': _extension, description: _description, ...shape } = property;
|
|
188
|
+
if (shape.items)
|
|
189
|
+
shape.items = reconstructShape(shape.items);
|
|
190
|
+
return clean(shape);
|
|
180
191
|
}
|
|
192
|
+
/**
|
|
193
|
+
* So a field read back carries its axes, rebuilt by the axes themselves.
|
|
194
|
+
* FR : pour qu'un champ relu porte ses axes, reconstruits par les axes eux-mêmes.
|
|
195
|
+
* `{ 'x-fougere': { lifecycle: { create: 'now' } } }` → a field stamped at create
|
|
196
|
+
*/
|
|
181
197
|
function reconstructField(property, key, resolve) {
|
|
182
198
|
const shape = reconstructShape(property);
|
|
183
199
|
if (!shape) {
|
|
184
|
-
throw new Error(`Field '${key}': the card carries no \`type\` for it, so there is no shape to rebuild. `
|
|
185
|
-
|
|
200
|
+
throw new Error(`Field '${key}': the card carries no \`type\` for it, so there is no shape to rebuild. ` +
|
|
201
|
+
'A field always states one.');
|
|
186
202
|
}
|
|
187
203
|
const extension = property['x-fougere'];
|
|
188
204
|
const axes = {};
|
|
@@ -194,26 +210,59 @@ function reconstructField(property, key, resolve) {
|
|
|
194
210
|
return new Field({
|
|
195
211
|
shape,
|
|
196
212
|
...axes,
|
|
197
|
-
meta: property.description !== undefined
|
|
213
|
+
meta: property.description !== undefined
|
|
214
|
+
? { description: property.description }
|
|
215
|
+
: undefined,
|
|
198
216
|
});
|
|
199
217
|
}
|
|
218
|
+
/**
|
|
219
|
+
* So an axis that changed is one named difference, not a whole field marked dirty.
|
|
220
|
+
* FR : pour qu'un axe modifié soit une différence nommée, pas un champ entier marqué.
|
|
221
|
+
* `{ kind: 'restated', field: 'body', axis: 'boundary', … }`
|
|
222
|
+
*/
|
|
200
223
|
function restated(field, before, after) {
|
|
201
|
-
return EXTENSION_SLOTS.filter((axis) => !dequal(before?.[axis], after?.[axis])).map((axis) => ({
|
|
224
|
+
return EXTENSION_SLOTS.filter((axis) => !dequal(before?.[axis], after?.[axis])).map((axis) => ({
|
|
225
|
+
kind: 'restated',
|
|
226
|
+
field,
|
|
227
|
+
axis,
|
|
228
|
+
from: before?.[axis],
|
|
229
|
+
to: after?.[axis],
|
|
230
|
+
}));
|
|
202
231
|
}
|
|
232
|
+
/**
|
|
233
|
+
* So two shapes are compared without what is not shape getting in the way.
|
|
234
|
+
* FR : pour que deux formes se comparent sans que le reste s'en mêle.
|
|
235
|
+
* `{ type: 'string', description: 'x' }` → `{ type: 'string' }`
|
|
236
|
+
*/
|
|
203
237
|
function shapeOf(descriptor) {
|
|
204
|
-
const { 'x-fougere': _extension, ...shape } = descriptor;
|
|
238
|
+
const { 'x-fougere': _extension, description: _description, ...shape } = descriptor;
|
|
205
239
|
return shape;
|
|
206
240
|
}
|
|
241
|
+
/**
|
|
242
|
+
* So `['string','null']` and `['null','string']` are the same type, not a change.
|
|
243
|
+
* FR : pour que `['string','null']` et `['null','string']` soient un même type.
|
|
244
|
+
* `typesOf({ type: ['null', 'string'] })` → `['null', 'string']`
|
|
245
|
+
*/
|
|
207
246
|
function typesOf(descriptor) {
|
|
208
247
|
const type = descriptor.type;
|
|
209
248
|
if (type === undefined)
|
|
210
249
|
return [];
|
|
211
250
|
return (Array.isArray(type) ? [...type] : [type]).sort();
|
|
212
251
|
}
|
|
252
|
+
/**
|
|
253
|
+
* So a bound that moved is a `reshaped`, told apart from a type that changed.
|
|
254
|
+
* FR : pour qu'une borne déplacée soit un `reshaped`, distinct d'un type changé.
|
|
255
|
+
* `maxLength: 200` → `maxLength: 100` → one `reshaped`, never a `retyped`
|
|
256
|
+
*/
|
|
213
257
|
function boundsOf(descriptor) {
|
|
214
258
|
const { type: _type, ...rest } = shapeOf(descriptor);
|
|
215
259
|
return rest;
|
|
216
260
|
}
|
|
261
|
+
/**
|
|
262
|
+
* So a removal plus an addition of the same shape is a question, never a guess.
|
|
263
|
+
* FR : pour qu'une suppression plus un ajout de même forme soit une question, pas un pari.
|
|
264
|
+
* `body` gone, `content` appeared → `ambiguous: [{ removed: 'body', added: 'content' }]`
|
|
265
|
+
*/
|
|
217
266
|
function candidates(removed, added, before, after) {
|
|
218
267
|
const found = [];
|
|
219
268
|
for (const gone of removed) {
|
|
@@ -227,4 +276,16 @@ function candidates(removed, added, before, after) {
|
|
|
227
276
|
const apart = ({ removed: gone, added: appeared }) => Math.abs(now.indexOf(appeared) - was.indexOf(gone));
|
|
228
277
|
return found.sort((a, b) => apart(a) - apart(b));
|
|
229
278
|
}
|
|
279
|
+
/**
|
|
280
|
+
* So a group spanning several fields reaches a reader that only ever sees one field.
|
|
281
|
+
* FR : pour qu'un groupe couvrant plusieurs champs atteigne un lecteur qui n'en voit qu'un.
|
|
282
|
+
* `carryGroup(properties.listId, ['listId', 'docId'])` → the pair lands under its `role`
|
|
283
|
+
*/
|
|
284
|
+
function carryGroup(property, group) {
|
|
285
|
+
if (!property)
|
|
286
|
+
return;
|
|
287
|
+
const extension = (property['x-fougere'] ??= {});
|
|
288
|
+
const role = (extension.role ??= {});
|
|
289
|
+
(role.unique ??= []).push([...group]);
|
|
290
|
+
}
|
|
230
291
|
//# sourceMappingURL=Card.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Card.js","sourceRoot":"","sources":["../../../src/projection/card/Card.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import type { BoundaryRef } from '
|
|
2
|
-
import type { LifecycleRules } from '
|
|
3
|
-
import type { Relation } from '
|
|
4
|
-
import type { RoleRules } from '
|
|
5
|
-
import type { Shape } from '
|
|
1
|
+
import type { BoundaryRef } from '../../axis/boundary/Boundary.js';
|
|
2
|
+
import type { LifecycleRules } from '../../axis/lifecycle/Lifecycle.js';
|
|
3
|
+
import type { Relation } from '../../axis/role/Relation.js';
|
|
4
|
+
import type { RoleRules } from '../../axis/role/Role.js';
|
|
5
|
+
import type { Shape } from '../../axis/shape/Shape.js';
|
|
6
6
|
type JsonSchemaType = 'string' | 'number' | 'integer' | 'boolean' | 'object' | 'array' | 'null';
|
|
7
7
|
type ShapeKeywords = UnionToIntersection<KeywordsOf<Shape>>;
|
|
8
8
|
type KeywordsOf<S> = S extends unknown ? Partial<Omit<S, 'type' | 'items' | 'properties'>> : never;
|
|
@@ -27,7 +27,7 @@ export type RelationDescriptor = Pick<Relation, 'kind' | 'onDelete'> & {
|
|
|
27
27
|
to: string;
|
|
28
28
|
};
|
|
29
29
|
/**
|
|
30
|
-
* What a derivation was cut from, and what the cut left — `
|
|
30
|
+
* What a derivation was cut from, and what the cut left — `nameOf` keyed by the
|
|
31
31
|
* ORIGIN's field names. Absent on a declaration that derives from nothing.
|
|
32
32
|
*
|
|
33
33
|
* A dropped field is `null` and never `undefined`: JSON.stringify erases the second,
|
|
@@ -35,7 +35,7 @@ export type RelationDescriptor = Pick<Relation, 'kind' | 'onDelete'> & {
|
|
|
35
35
|
*/
|
|
36
36
|
export interface DerivedFrom {
|
|
37
37
|
from: string;
|
|
38
|
-
|
|
38
|
+
nameOf: Record<string, string | null>;
|
|
39
39
|
}
|
|
40
40
|
export interface SchemaDescriptor {
|
|
41
41
|
title?: string;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Descriptor.d.ts","sourceRoot":"","sources":["../../../src/projection/card/Descriptor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AACxE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,2BAA2B,CAAC;AAEvD,KAAK,cAAc,GACf,QAAQ,GACR,QAAQ,GACR,SAAS,GACT,SAAS,GACT,QAAQ,GACR,OAAO,GACP,MAAM,CAAC;AAEX,KAAK,aAAa,GAAG,mBAAmB,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;AAE5D,KAAK,UAAU,CAAC,CAAC,IAAI,CAAC,SAAS,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,YAAY,CAAC,CAAC,GAAG,KAAK,CAAC;AACnG,KAAK,mBAAmB,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,OAAO,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,IAAI,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,MAAM,CAAC,KAAK,IAAI,GAAG,CAAC,GAAG,KAAK,CAAC;AAEpH,MAAM,MAAM,eAAe,GAAG,aAAa,GAAG;IAC5C,IAAI,CAAC,EAAE,cAAc,GAAG,cAAc,EAAE,CAAC;IACzC,KAAK,CAAC,EAAE,eAAe,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IAC7C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,cAAc,CAAC;CAC9B,CAAC;AAEF,MAAM,WAAW,cAAc;IAC7B,IAAI,CAAC,EAAE,cAAc,CAAC;IACtB,SAAS,CAAC,EAAE,cAAc,CAAC;IAC3B,QAAQ,CAAC,EAAE,WAAW,CAAC;CACxB;AAED,MAAM,MAAM,cAAc,GAAG,IAAI,CAAC,SAAS,EAAE,SAAS,GAAG,OAAO,CAAC,GAAG;IAClE,MAAM,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC;IACpB,QAAQ,CAAC,EAAE,kBAAkB,CAAC;CAC/B,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,UAAU,CAAC,GAAG;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,CAAC;AAEtF;;;;;;GAMG;AACH,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC,CAAC;CACvC;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,QAAQ,CAAC;IACf,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IAC5C,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,mBAAmB,CAAC,EAAE,WAAW,CAAC;IAClC,mBAAmB,EAAE,CAAC,CAAC;IACvB,kBAAkB,EAAE,SAAS,CAAC;CAC/B;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;IACxC,mBAAmB,EAAE,CAAC,CAAC;IACvB,kBAAkB,EAAE,SAAS,CAAC;CAC/B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Descriptor.js","sourceRoot":"","sources":["../../../src/projection/card/Descriptor.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { ValidationError } from '../../validation.js';
|
|
2
|
+
/**
|
|
3
|
+
* So a card that cannot be read says what is wrong and what to write instead.
|
|
4
|
+
* FR : pour qu'une carte illisible dise ce qui cloche et quoi écrire.
|
|
5
|
+
* `refuse('role.relation.kind is "maybe"', 'Expected one of one, many.')`
|
|
6
|
+
*/
|
|
7
|
+
export declare function refuse(what: string, fix: string): never;
|
|
8
|
+
/**
|
|
9
|
+
* So a card's axis passes the same validator as a hand-written one, and no second validator exists.
|
|
10
|
+
* FR : pour qu'un axe d'une carte passe le juge des autres, sans second juge.
|
|
11
|
+
* `{ update: 'maybe' }` on a card → `lifecycle is malformed — lifecycle.update: Expected 'now' or 'forbidden'`
|
|
12
|
+
*/
|
|
13
|
+
export declare function admitWire(validator: (value: unknown, errors: ValidationError[]) => void, value: unknown, slot: string): void;
|
|
14
|
+
/**
|
|
15
|
+
* So a closed set is checked against the list that declares it, never against a copy.
|
|
16
|
+
* FR : pour qu'un ensemble fermé soit vérifié contre la liste qui le déclare.
|
|
17
|
+
* `oneOfTokens('many', RELATION_KINDS)` → `true`
|
|
18
|
+
*/
|
|
19
|
+
export declare const oneOfTokens: <T extends readonly string[]>(value: unknown, tokens: T) => value is T[number];
|
|
20
|
+
//# sourceMappingURL=admission.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"admission.d.ts","sourceRoot":"","sources":["../../../src/projection/card/admission.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAE3D;;;;GAIG;AACH,wBAAgB,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,KAAK,CAEvD;AAED;;;;GAIG;AACH,wBAAgB,SAAS,CACvB,SAAS,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,KAAK,IAAI,EAC9D,KAAK,EAAE,OAAO,EACd,IAAI,EAAE,MAAM,GACX,IAAI,CASN;AAED;;;;GAIG;AACH,eAAO,MAAM,WAAW,GAAI,CAAC,SAAS,SAAS,MAAM,EAAE,SAC9C,OAAO,UACN,CAAC,KACR,KAAK,IAAI,CAAC,CAAC,MAAM,CAA+E,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* So a card that cannot be read says what is wrong and what to write instead.
|
|
3
|
+
* FR : pour qu'une carte illisible dise ce qui cloche et quoi écrire.
|
|
4
|
+
* `refuse('role.relation.kind is "maybe"', 'Expected one of one, many.')`
|
|
5
|
+
*/
|
|
6
|
+
export function refuse(what, fix) {
|
|
7
|
+
throw new Error(`This card cannot be read: ${what}.\n ${fix}`);
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* So a card's axis passes the same validator as a hand-written one, and no second validator exists.
|
|
11
|
+
* FR : pour qu'un axe d'une carte passe le juge des autres, sans second juge.
|
|
12
|
+
* `{ update: 'maybe' }` on a card → `lifecycle is malformed — lifecycle.update: Expected 'now' or 'forbidden'`
|
|
13
|
+
*/
|
|
14
|
+
export function admitWire(validator, value, slot) {
|
|
15
|
+
const errors = [];
|
|
16
|
+
validator(value, errors);
|
|
17
|
+
if (errors.length) {
|
|
18
|
+
refuse(`${slot} is malformed — ${errors.map((e) => `${e.path}: ${e.message}`).join('; ')}`, 'A card states an axis the way a declaration does.');
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* So a closed set is checked against the list that declares it, never against a copy.
|
|
23
|
+
* FR : pour qu'un ensemble fermé soit vérifié contre la liste qui le déclare.
|
|
24
|
+
* `oneOfTokens('many', RELATION_KINDS)` → `true`
|
|
25
|
+
*/
|
|
26
|
+
export const oneOfTokens = (value, tokens) => typeof value === 'string' && tokens.includes(value);
|
|
27
|
+
//# sourceMappingURL=admission.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"admission.js","sourceRoot":"","sources":["../../../src/projection/card/admission.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,MAAM,UAAU,MAAM,CAAC,IAAY,EAAE,GAAW;IAC9C,MAAM,IAAI,KAAK,CAAC,6BAA6B,IAAI,QAAQ,GAAG,EAAE,CAAC,CAAC;AAClE,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,SAAS,CACvB,SAA8D,EAC9D,KAAc,EACd,IAAY;IAEZ,MAAM,MAAM,GAAsB,EAAE,CAAC;IACrC,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACzB,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QAClB,MAAM,CACJ,GAAG,IAAI,mBAAmB,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EACnF,mDAAmD,CACpD,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,CACzB,KAAc,EACd,MAAS,EACW,EAAE,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAK,MAA4B,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { BoundaryRef } from '
|
|
2
|
-
import type { LifecycleRules } from '
|
|
1
|
+
import type { BoundaryRef } from '../../axis/boundary/Boundary.js';
|
|
2
|
+
import type { LifecycleRules } from '../../axis/lifecycle/Lifecycle.js';
|
|
3
3
|
import type { FieldDescriptor, RoleDescriptor } from './Descriptor.js';
|
|
4
4
|
/** One named difference, at one place. Each kind exists because a reader asks for it. */
|
|
5
5
|
export type Change =
|
|
@@ -17,7 +17,7 @@ export type Change =
|
|
|
17
17
|
from: FieldDescriptor;
|
|
18
18
|
required: boolean;
|
|
19
19
|
}
|
|
20
|
-
/** DDL: rename the column. Codec and
|
|
20
|
+
/** DDL: rename the column. Codec and storage: one more entry in the field-to-column map. */
|
|
21
21
|
| {
|
|
22
22
|
kind: 'renamed';
|
|
23
23
|
from: string;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diff.d.ts","sourceRoot":"","sources":["../../../src/projection/card/diff.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"diff.js","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"diff.js","sourceRoot":"","sources":["../../../src/projection/card/diff.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../src/validation.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,eAAe;IAC9B,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,MAAM,MAAM,OAAO,GAAG;IAAE,KAAK,EAAE,OAAO,CAAA;CAAE,GAAG;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validation.js","sourceRoot":"","sources":["../src/validation.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { Shape } from '../axis/shape/Shape.js';
|
|
2
|
+
/**
|
|
3
|
+
* The format is DATA, not a TypeScript interface: an interface is erased before a JS
|
|
4
|
+
* caller, a config or a card from another language could be measured against it.
|
|
5
|
+
*/
|
|
6
|
+
export declare class AdapterFieldValidator {
|
|
7
|
+
private readonly validator;
|
|
8
|
+
private constructor();
|
|
9
|
+
/** Compiled once, at the adapter's own module load. */
|
|
10
|
+
static of(format: Shape): AdapterFieldValidator;
|
|
11
|
+
/** `Post.adapters.sql.body.columnType: Property "postgre" does not match …` */
|
|
12
|
+
assert(entries: unknown, path: string): void;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=AdapterFieldValidator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AdapterFieldValidator.d.ts","sourceRoot":"","sources":["../../src/validator/AdapterFieldValidator.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAC;AAGpD;;;GAGG;AACH,qBAAa,qBAAqB;IACZ,OAAO,CAAC,QAAQ,CAAC,SAAS;IAA9C,OAAO,eAAsD;IAE7D,uDAAuD;IACvD,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,KAAK,GAAG,qBAAqB,CAE9C;IAED,+EAA+E;IAC/E,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAqB3C;CACF"}
|