@metaobjectsdev/metadata 0.9.0 → 0.11.0-rc.1
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/dist/attr-schema-validate.d.ts +1 -1
- package/dist/attr-schema-validate.d.ts.map +1 -1
- package/dist/attr-schema-validate.js +96 -11
- package/dist/attr-schema-validate.js.map +1 -1
- package/dist/constraint-merge.d.ts +18 -0
- package/dist/constraint-merge.d.ts.map +1 -0
- package/dist/constraint-merge.js +0 -0
- package/dist/constraint-merge.js.map +1 -0
- package/dist/constraint-validate.d.ts +6 -0
- package/dist/constraint-validate.d.ts.map +1 -0
- package/dist/constraint-validate.js +274 -0
- package/dist/constraint-validate.js.map +1 -0
- package/dist/core/attr/attr-constants.d.ts +13 -3
- package/dist/core/attr/attr-constants.d.ts.map +1 -1
- package/dist/core/attr/attr-constants.js +11 -2
- package/dist/core/attr/attr-constants.js.map +1 -1
- package/dist/core/attr/attr-definition.embedded.d.ts +3 -0
- package/dist/core/attr/attr-definition.embedded.d.ts.map +1 -0
- package/dist/core/attr/attr-definition.embedded.js +60 -0
- package/dist/core/attr/attr-definition.embedded.js.map +1 -0
- package/dist/core/documentation/doc-constants.d.ts +3 -2
- package/dist/core/documentation/doc-constants.d.ts.map +1 -1
- package/dist/core/documentation/doc-constants.js +3 -1
- package/dist/core/documentation/doc-constants.js.map +1 -1
- package/dist/core/documentation/doc-provider.d.ts.map +1 -1
- package/dist/core/documentation/doc-provider.js +6 -2
- package/dist/core/documentation/doc-provider.js.map +1 -1
- package/dist/core/documentation/documentation-definition.embedded.d.ts +3 -0
- package/dist/core/documentation/documentation-definition.embedded.d.ts.map +1 -0
- package/dist/core/documentation/documentation-definition.embedded.js +79 -0
- package/dist/core/documentation/documentation-definition.embedded.js.map +1 -0
- package/dist/core/field/field-constants.d.ts +7 -4
- package/dist/core/field/field-constants.d.ts.map +1 -1
- package/dist/core/field/field-constants.js +7 -7
- package/dist/core/field/field-constants.js.map +1 -1
- package/dist/core/field/field-definition.embedded.d.ts +3 -0
- package/dist/core/field/field-definition.embedded.d.ts.map +1 -0
- package/dist/core/field/field-definition.embedded.js +236 -0
- package/dist/core/field/field-definition.embedded.js.map +1 -0
- package/dist/core/field/meta-field.d.ts.map +1 -1
- package/dist/core/field/meta-field.js +7 -5
- package/dist/core/field/meta-field.js.map +1 -1
- package/dist/core/identity/identity-constants.d.ts.map +1 -1
- package/dist/core/identity/identity-constants.js +3 -0
- package/dist/core/identity/identity-constants.js.map +1 -1
- package/dist/core/identity/identity-definition.embedded.d.ts +3 -0
- package/dist/core/identity/identity-definition.embedded.d.ts.map +1 -0
- package/dist/core/identity/identity-definition.embedded.js +93 -0
- package/dist/core/identity/identity-definition.embedded.js.map +1 -0
- package/dist/core/identity/meta-identity.d.ts.map +1 -1
- package/dist/core/identity/meta-identity.js +8 -1
- package/dist/core/identity/meta-identity.js.map +1 -1
- package/dist/core/identity/validate-identity-passthrough.d.ts +42 -0
- package/dist/core/identity/validate-identity-passthrough.d.ts.map +1 -0
- package/dist/core/identity/validate-identity-passthrough.js +158 -0
- package/dist/core/identity/validate-identity-passthrough.js.map +1 -0
- package/dist/core/object/object-constants.d.ts +2 -1
- package/dist/core/object/object-constants.d.ts.map +1 -1
- package/dist/core/object/object-constants.js +3 -0
- package/dist/core/object/object-constants.js.map +1 -1
- package/dist/core/object/object-definition.embedded.d.ts +3 -0
- package/dist/core/object/object-definition.embedded.d.ts.map +1 -0
- package/dist/core/object/object-definition.embedded.js +110 -0
- package/dist/core/object/object-definition.embedded.js.map +1 -0
- package/dist/core/object/validate-discriminator.d.ts.map +1 -1
- package/dist/core/object/validate-discriminator.js +1 -3
- package/dist/core/object/validate-discriminator.js.map +1 -1
- package/dist/core/query/query-constants.d.ts.map +1 -1
- package/dist/core/query/query-constants.js +5 -3
- package/dist/core/query/query-constants.js.map +1 -1
- package/dist/core/relationship/derive-m2m-fields.d.ts +26 -0
- package/dist/core/relationship/derive-m2m-fields.d.ts.map +1 -0
- package/dist/core/relationship/derive-m2m-fields.js +102 -0
- package/dist/core/relationship/derive-m2m-fields.js.map +1 -0
- package/dist/core/relationship/meta-relationship.d.ts +6 -4
- package/dist/core/relationship/meta-relationship.d.ts.map +1 -1
- package/dist/core/relationship/meta-relationship.js +12 -8
- package/dist/core/relationship/meta-relationship.js.map +1 -1
- package/dist/core/relationship/relationship-constants.d.ts +6 -2
- package/dist/core/relationship/relationship-constants.d.ts.map +1 -1
- package/dist/core/relationship/relationship-constants.js +6 -2
- package/dist/core/relationship/relationship-constants.js.map +1 -1
- package/dist/core/relationship/relationship-definition.embedded.d.ts +3 -0
- package/dist/core/relationship/relationship-definition.embedded.d.ts.map +1 -0
- package/dist/core/relationship/relationship-definition.embedded.js +310 -0
- package/dist/core/relationship/relationship-definition.embedded.js.map +1 -0
- package/dist/core/validator/validator-constants.d.ts +14 -1
- package/dist/core/validator/validator-constants.d.ts.map +1 -1
- package/dist/core/validator/validator-constants.js +20 -1
- package/dist/core/validator/validator-constants.js.map +1 -1
- package/dist/core/validator/validator-definition.embedded.d.ts +3 -0
- package/dist/core/validator/validator-definition.embedded.d.ts.map +1 -0
- package/dist/core/validator/validator-definition.embedded.js +255 -0
- package/dist/core/validator/validator-definition.embedded.js.map +1 -0
- package/dist/core/yaml-desugar.d.ts.map +1 -1
- package/dist/core/yaml-desugar.js +88 -10
- package/dist/core/yaml-desugar.js.map +1 -1
- package/dist/core-types.d.ts +5 -2
- package/dist/core-types.d.ts.map +1 -1
- package/dist/core-types.js +285 -116
- package/dist/core-types.js.map +1 -1
- package/dist/errors.d.ts +3 -3
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +87 -0
- package/dist/errors.js.map +1 -1
- package/dist/index.d.ts +17 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +26 -1
- package/dist/index.js.map +1 -1
- package/dist/library/embedded-library.generated.d.ts +2 -0
- package/dist/library/embedded-library.generated.d.ts.map +1 -0
- package/dist/library/embedded-library.generated.js +11 -0
- package/dist/library/embedded-library.generated.js.map +1 -0
- package/dist/library/library-sources.d.ts +12 -0
- package/dist/library/library-sources.d.ts.map +1 -0
- package/dist/library/library-sources.js +88 -0
- package/dist/library/library-sources.js.map +1 -0
- package/dist/loader/meta-data-loader.d.ts +10 -2
- package/dist/loader/meta-data-loader.d.ts.map +1 -1
- package/dist/loader/meta-data-loader.js +57 -6
- package/dist/loader/meta-data-loader.js.map +1 -1
- package/dist/loader/shortcuts.d.ts +2 -5
- package/dist/loader/shortcuts.d.ts.map +1 -1
- package/dist/loader/shortcuts.js.map +1 -1
- package/dist/loader/validation-passes.d.ts +3 -0
- package/dist/loader/validation-passes.d.ts.map +1 -1
- package/dist/loader/validation-passes.js +519 -34
- package/dist/loader/validation-passes.js.map +1 -1
- package/dist/loader/validation-registry.d.ts +10 -0
- package/dist/loader/validation-registry.d.ts.map +1 -0
- package/dist/loader/validation-registry.js +84 -0
- package/dist/loader/validation-registry.js.map +1 -0
- package/dist/metamodel-docs/index.d.ts +19 -0
- package/dist/metamodel-docs/index.d.ts.map +1 -0
- package/dist/metamodel-docs/index.js +37 -0
- package/dist/metamodel-docs/index.js.map +1 -0
- package/dist/metamodel-docs/provenance.d.ts +42 -0
- package/dist/metamodel-docs/provenance.d.ts.map +1 -0
- package/dist/metamodel-docs/provenance.js +148 -0
- package/dist/metamodel-docs/provenance.js.map +1 -0
- package/dist/metamodel-docs/provider-definitions.d.ts +8 -0
- package/dist/metamodel-docs/provider-definitions.d.ts.map +1 -0
- package/dist/metamodel-docs/provider-definitions.js +48 -0
- package/dist/metamodel-docs/provider-definitions.js.map +1 -0
- package/dist/metamodel-docs/render.d.ts +12 -0
- package/dist/metamodel-docs/render.d.ts.map +1 -0
- package/dist/metamodel-docs/render.js +252 -0
- package/dist/metamodel-docs/render.js.map +1 -0
- package/dist/naming-refs.d.ts +41 -0
- package/dist/naming-refs.d.ts.map +1 -0
- package/dist/naming-refs.js +144 -0
- package/dist/naming-refs.js.map +1 -0
- package/dist/naming.d.ts.map +1 -1
- package/dist/naming.js +10 -2
- package/dist/naming.js.map +1 -1
- package/dist/parser-core.d.ts.map +1 -1
- package/dist/parser-core.js +84 -9
- package/dist/parser-core.js.map +1 -1
- package/dist/persistence/db/db-constants.d.ts +10 -0
- package/dist/persistence/db/db-constants.d.ts.map +1 -1
- package/dist/persistence/db/db-constants.js +14 -0
- package/dist/persistence/db/db-constants.js.map +1 -1
- package/dist/persistence/db/db-definition.embedded.d.ts +3 -0
- package/dist/persistence/db/db-definition.embedded.d.ts.map +1 -0
- package/dist/persistence/db/db-definition.embedded.js +227 -0
- package/dist/persistence/db/db-definition.embedded.js.map +1 -0
- package/dist/persistence/db/db-provider.d.ts.map +1 -1
- package/dist/persistence/db/db-provider.js +13 -18
- package/dist/persistence/db/db-provider.js.map +1 -1
- package/dist/persistence/origin/origin-definition.embedded.d.ts +3 -0
- package/dist/persistence/origin/origin-definition.embedded.d.ts.map +1 -0
- package/dist/persistence/origin/origin-definition.embedded.js +88 -0
- package/dist/persistence/origin/origin-definition.embedded.js.map +1 -0
- package/dist/persistence/source/source-definition.embedded.d.ts +3 -0
- package/dist/persistence/source/source-definition.embedded.d.ts.map +1 -0
- package/dist/persistence/source/source-definition.embedded.js +17 -0
- package/dist/persistence/source/source-definition.embedded.js.map +1 -0
- package/dist/persistence/source/validate-source-parameter-ref.d.ts.map +1 -1
- package/dist/persistence/source/validate-source-parameter-ref.js +7 -1
- package/dist/persistence/source/validate-source-parameter-ref.js.map +1 -1
- package/dist/persistence/source/validate-source-roles.d.ts.map +1 -1
- package/dist/persistence/source/validate-source-roles.js +16 -1
- package/dist/persistence/source/validate-source-roles.js.map +1 -1
- package/dist/presentation/layout/layout-definition.embedded.d.ts +3 -0
- package/dist/presentation/layout/layout-definition.embedded.d.ts.map +1 -0
- package/dist/presentation/layout/layout-definition.embedded.js +16 -0
- package/dist/presentation/layout/layout-definition.embedded.js.map +1 -0
- package/dist/presentation/ui/ui-definition.embedded.d.ts +3 -0
- package/dist/presentation/ui/ui-definition.embedded.d.ts.map +1 -0
- package/dist/presentation/ui/ui-definition.embedded.js +114 -0
- package/dist/presentation/ui/ui-definition.embedded.js.map +1 -0
- package/dist/presentation/ui/ui-provider.d.ts +3 -0
- package/dist/presentation/ui/ui-provider.d.ts.map +1 -0
- package/dist/presentation/ui/ui-provider.js +21 -0
- package/dist/presentation/ui/ui-provider.js.map +1 -0
- package/dist/presentation/view/view-definition.embedded.d.ts +3 -0
- package/dist/presentation/view/view-definition.embedded.d.ts.map +1 -0
- package/dist/presentation/view/view-definition.embedded.js +76 -0
- package/dist/presentation/view/view-definition.embedded.js.map +1 -0
- package/dist/provider-data.d.ts +184 -0
- package/dist/provider-data.d.ts.map +1 -0
- package/dist/provider-data.js +271 -0
- package/dist/provider-data.js.map +1 -0
- package/dist/provider.d.ts +3 -1
- package/dist/provider.d.ts.map +1 -1
- package/dist/provider.js +15 -1
- package/dist/provider.js.map +1 -1
- package/dist/registry-coverage.d.ts +99 -0
- package/dist/registry-coverage.d.ts.map +1 -0
- package/dist/registry-coverage.js +294 -0
- package/dist/registry-coverage.js.map +1 -0
- package/dist/registry-manifest-exclusions.d.ts +62 -0
- package/dist/registry-manifest-exclusions.d.ts.map +1 -0
- package/dist/registry-manifest-exclusions.js +163 -0
- package/dist/registry-manifest-exclusions.js.map +1 -0
- package/dist/registry-manifest.d.ts +117 -0
- package/dist/registry-manifest.d.ts.map +1 -0
- package/dist/registry-manifest.js +242 -0
- package/dist/registry-manifest.js.map +1 -0
- package/dist/registry.d.ts +76 -2
- package/dist/registry.d.ts.map +1 -1
- package/dist/registry.js +37 -1
- package/dist/registry.js.map +1 -1
- package/dist/shared/structural.d.ts +7 -0
- package/dist/shared/structural.d.ts.map +1 -1
- package/dist/shared/structural.js +7 -0
- package/dist/shared/structural.js.map +1 -1
- package/dist/subtype-rules.d.ts.map +1 -1
- package/dist/subtype-rules.js +97 -13
- package/dist/subtype-rules.js.map +1 -1
- package/dist/super-resolve.d.ts +49 -2
- package/dist/super-resolve.d.ts.map +1 -1
- package/dist/super-resolve.js +128 -43
- package/dist/super-resolve.js.map +1 -1
- package/dist/template/meta-template.d.ts +3 -2
- package/dist/template/meta-template.d.ts.map +1 -1
- package/dist/template/meta-template.js +3 -2
- package/dist/template/meta-template.js.map +1 -1
- package/dist/template/prompt-definition.embedded.d.ts +3 -0
- package/dist/template/prompt-definition.embedded.d.ts.map +1 -0
- package/dist/template/prompt-definition.embedded.js +368 -0
- package/dist/template/prompt-definition.embedded.js.map +1 -0
- package/dist/template/prompt-provider.d.ts +3 -0
- package/dist/template/prompt-provider.d.ts.map +1 -0
- package/dist/template/prompt-provider.js +25 -0
- package/dist/template/prompt-provider.js.map +1 -0
- package/dist/template/template-constants.d.ts +2 -0
- package/dist/template/template-constants.d.ts.map +1 -1
- package/dist/template/template-constants.js +7 -0
- package/dist/template/template-constants.js.map +1 -1
- package/dist/template/template-definition.embedded.d.ts +3 -0
- package/dist/template/template-definition.embedded.d.ts.map +1 -0
- package/dist/template/template-definition.embedded.js +30 -0
- package/dist/template/template-definition.embedded.js.map +1 -0
- package/dist/validate-max-occurs.d.ts +5 -0
- package/dist/validate-max-occurs.d.ts.map +1 -0
- package/dist/validate-max-occurs.js +28 -0
- package/dist/validate-max-occurs.js.map +1 -0
- package/dist/validation-types.d.ts +36 -0
- package/dist/validation-types.d.ts.map +1 -0
- package/dist/validation-types.js +7 -0
- package/dist/validation-types.js.map +1 -0
- package/package.json +33 -22
- package/src/attr-schema-validate.ts +108 -8
- package/src/constraint-merge.ts +0 -0
- package/src/constraint-validate.ts +363 -0
- package/src/core/attr/attr-constants.ts +15 -3
- package/src/core/attr/attr-definition.embedded.ts +67 -0
- package/src/core/documentation/doc-constants.ts +3 -1
- package/src/core/documentation/doc-provider.ts +6 -2
- package/src/core/documentation/documentation-definition.embedded.ts +86 -0
- package/src/core/field/field-constants.ts +8 -7
- package/src/core/field/field-definition.embedded.ts +243 -0
- package/src/core/field/meta-field.ts +6 -7
- package/src/core/identity/identity-constants.ts +4 -0
- package/src/core/identity/identity-definition.embedded.ts +100 -0
- package/src/core/identity/meta-identity.ts +8 -1
- package/src/core/identity/validate-identity-passthrough.ts +194 -0
- package/src/core/object/object-constants.ts +3 -0
- package/src/core/object/object-definition.embedded.ts +117 -0
- package/src/core/object/validate-discriminator.ts +0 -4
- package/src/core/query/query-constants.ts +5 -3
- package/src/core/relationship/derive-m2m-fields.ts +145 -0
- package/src/core/relationship/meta-relationship.ts +15 -9
- package/src/core/relationship/relationship-constants.ts +6 -2
- package/src/core/relationship/relationship-definition.embedded.ts +317 -0
- package/src/core/validator/validator-constants.ts +22 -1
- package/src/core/validator/validator-definition.embedded.ts +262 -0
- package/src/core/yaml-desugar.ts +96 -7
- package/src/core-types.ts +314 -150
- package/src/errors.ts +89 -2
- package/src/index.ts +47 -2
- package/src/library/embedded-library.generated.ts +10 -0
- package/src/library/library-sources.ts +97 -0
- package/src/loader/meta-data-loader.ts +78 -7
- package/src/loader/shortcuts.ts +2 -2
- package/src/loader/validation-passes.ts +690 -34
- package/src/loader/validation-registry.ts +93 -0
- package/src/metamodel-docs/index.ts +41 -0
- package/src/metamodel-docs/provenance.ts +187 -0
- package/src/metamodel-docs/provider-definitions.ts +50 -0
- package/src/metamodel-docs/render.ts +309 -0
- package/src/naming-refs.ts +162 -0
- package/src/naming.ts +10 -2
- package/src/parser-core.ts +96 -9
- package/src/persistence/db/db-constants.ts +16 -0
- package/src/persistence/db/db-definition.embedded.ts +234 -0
- package/src/persistence/db/db-provider.ts +13 -18
- package/src/persistence/origin/origin-definition.embedded.ts +95 -0
- package/src/persistence/source/source-definition.embedded.ts +24 -0
- package/src/persistence/source/validate-source-parameter-ref.ts +7 -1
- package/src/persistence/source/validate-source-roles.ts +22 -1
- package/src/presentation/layout/layout-definition.embedded.ts +23 -0
- package/src/presentation/ui/ui-definition.embedded.ts +121 -0
- package/src/presentation/ui/ui-provider.ts +25 -0
- package/src/presentation/view/view-definition.embedded.ts +83 -0
- package/src/provider-data.ts +463 -0
- package/src/provider.ts +18 -0
- package/src/registry-coverage.ts +430 -0
- package/src/registry-manifest-exclusions.ts +176 -0
- package/src/registry-manifest.ts +334 -0
- package/src/registry.ts +106 -3
- package/src/shared/structural.ts +8 -0
- package/src/subtype-rules.ts +135 -18
- package/src/super-resolve.ts +153 -43
- package/src/template/meta-template.ts +3 -2
- package/src/template/prompt-definition.embedded.ts +375 -0
- package/src/template/prompt-provider.ts +29 -0
- package/src/template/template-constants.ts +8 -0
- package/src/template/template-definition.embedded.ts +37 -0
- package/src/validate-max-occurs.ts +39 -0
- package/src/validation-types.ts +57 -0
- package/dist/core/documentation/doc-schema.d.ts +0 -8
- package/dist/core/documentation/doc-schema.d.ts.map +0 -1
- package/dist/core/documentation/doc-schema.js +0 -53
- package/dist/core/documentation/doc-schema.js.map +0 -1
- package/dist/core/field/field-schema.d.ts +0 -22
- package/dist/core/field/field-schema.d.ts.map +0 -1
- package/dist/core/field/field-schema.js +0 -171
- package/dist/core/field/field-schema.js.map +0 -1
- package/dist/core/identity/identity-schema.d.ts +0 -6
- package/dist/core/identity/identity-schema.d.ts.map +0 -1
- package/dist/core/identity/identity-schema.js +0 -55
- package/dist/core/identity/identity-schema.js.map +0 -1
- package/dist/core/object/object-schema.d.ts +0 -4
- package/dist/core/object/object-schema.d.ts.map +0 -1
- package/dist/core/object/object-schema.js +0 -28
- package/dist/core/object/object-schema.js.map +0 -1
- package/dist/core/relationship/relationship-schema.d.ts +0 -4
- package/dist/core/relationship/relationship-schema.d.ts.map +0 -1
- package/dist/core/relationship/relationship-schema.js +0 -51
- package/dist/core/relationship/relationship-schema.js.map +0 -1
- package/dist/core/validator/validator-schema.d.ts +0 -4
- package/dist/core/validator/validator-schema.d.ts.map +0 -1
- package/dist/core/validator/validator-schema.js +0 -38
- package/dist/core/validator/validator-schema.js.map +0 -1
- package/dist/persistence/db/db-schema.d.ts +0 -14
- package/dist/persistence/db/db-schema.d.ts.map +0 -1
- package/dist/persistence/db/db-schema.js +0 -35
- package/dist/persistence/db/db-schema.js.map +0 -1
- package/dist/persistence/origin/origin-schema.d.ts +0 -4
- package/dist/persistence/origin/origin-schema.d.ts.map +0 -1
- package/dist/persistence/origin/origin-schema.js +0 -59
- package/dist/persistence/origin/origin-schema.js.map +0 -1
- package/dist/persistence/source/source-schema.d.ts +0 -4
- package/dist/persistence/source/source-schema.d.ts.map +0 -1
- package/dist/persistence/source/source-schema.js +0 -98
- package/dist/persistence/source/source-schema.js.map +0 -1
- package/dist/presentation/layout/layout-schema.d.ts +0 -4
- package/dist/presentation/layout/layout-schema.d.ts.map +0 -1
- package/dist/presentation/layout/layout-schema.js +0 -46
- package/dist/presentation/layout/layout-schema.js.map +0 -1
- package/dist/presentation/view/view-schema.d.ts +0 -4
- package/dist/presentation/view/view-schema.d.ts.map +0 -1
- package/dist/presentation/view/view-schema.js +0 -15
- package/dist/presentation/view/view-schema.js.map +0 -1
- package/dist/template/template-schema.d.ts +0 -3
- package/dist/template/template-schema.d.ts.map +0 -1
- package/dist/template/template-schema.js +0 -173
- package/dist/template/template-schema.js.map +0 -1
- package/src/core/documentation/doc-schema.ts +0 -64
- package/src/core/field/field-schema.ts +0 -228
- package/src/core/identity/identity-schema.ts +0 -80
- package/src/core/object/object-schema.ts +0 -35
- package/src/core/relationship/relationship-schema.ts +0 -67
- package/src/core/validator/validator-schema.ts +0 -50
- package/src/persistence/db/db-schema.ts +0 -50
- package/src/persistence/origin/origin-schema.ts +0 -80
- package/src/persistence/source/source-schema.ts +0 -129
- package/src/presentation/layout/layout-schema.ts +0 -62
- package/src/presentation/view/view-schema.ts +0 -21
- package/src/template/template-schema.ts +0 -211
package/src/core/yaml-desugar.ts
CHANGED
|
@@ -35,9 +35,13 @@ import {
|
|
|
35
35
|
RESERVED_KEYS,
|
|
36
36
|
RESERVED_KEY_CHILDREN,
|
|
37
37
|
RESERVED_KEY_NAME,
|
|
38
|
+
RESERVED_KEY_PACKAGE,
|
|
39
|
+
RESERVED_KEY_EXTENDS,
|
|
38
40
|
RESERVED_KEY_IS_ARRAY,
|
|
39
41
|
TYPE_SUBTYPE_SEPARATOR,
|
|
42
|
+
PACKAGE_SEPARATOR,
|
|
40
43
|
} from "../shared/structural.js";
|
|
44
|
+
import { expandRef, REF_BEARING_ATTR_NAMES } from "../naming-refs.js";
|
|
41
45
|
import {
|
|
42
46
|
getPositionMap,
|
|
43
47
|
setPositionMap,
|
|
@@ -72,10 +76,34 @@ export interface DesugarResult {
|
|
|
72
76
|
/** Desugar a parsed-YAML authoring document into a canonical-shaped object. */
|
|
73
77
|
export function desugar(input: unknown, registry: TypeRegistry): DesugarResult {
|
|
74
78
|
const errors: CollectedError[] = [];
|
|
75
|
-
|
|
79
|
+
// FR-032 (ADR-0032): the desugar threads the effective package context down
|
|
80
|
+
// the tree so every ref-bearing attr (extends + @objectRef/@references/@from/
|
|
81
|
+
// @of/@via/@parameterRef/@payloadRef/@responseRef) is expanded to its FQN via
|
|
82
|
+
// expandRef. The root context is empty (the metadata.root's own `package`
|
|
83
|
+
// body key seeds the first real context inside desugarNode).
|
|
84
|
+
const node = desugarNode(input, registry, errors, "<root>", "");
|
|
76
85
|
return { canonical: node ?? {}, errors };
|
|
77
86
|
}
|
|
78
87
|
|
|
88
|
+
// FR-032: compute a node's effective package from its raw `package` body key
|
|
89
|
+
// (inheriting the parent context when absent). Mirrors parser-core's
|
|
90
|
+
// expandPackageForPath so the desugar's ref-expansion context matches the JSON
|
|
91
|
+
// loader's package resolution. The `package` attr itself is NEVER ref-expanded
|
|
92
|
+
// (ADR-0032 §2.1 — it is the node's identity, taken literally/absolute).
|
|
93
|
+
function effectivePackageFor(rawBody: unknown, parentPkg: string): string {
|
|
94
|
+
if (typeof rawBody !== "object" || rawBody === null || Array.isArray(rawBody)) {
|
|
95
|
+
return parentPkg;
|
|
96
|
+
}
|
|
97
|
+
const rawPkg = (rawBody as Record<string, unknown>)[RESERVED_KEY_PACKAGE];
|
|
98
|
+
if (typeof rawPkg !== "string") return parentPkg;
|
|
99
|
+
// Legacy expandPackageForPath: a leading "::" on a child package prepends the
|
|
100
|
+
// parent; otherwise it is used as-is.
|
|
101
|
+
if (parentPkg !== "" && rawPkg.startsWith(PACKAGE_SEPARATOR)) {
|
|
102
|
+
return parentPkg + rawPkg;
|
|
103
|
+
}
|
|
104
|
+
return rawPkg;
|
|
105
|
+
}
|
|
106
|
+
|
|
79
107
|
// Desugar one node — a single-key mapping { "type.subType": body }.
|
|
80
108
|
// Returns the canonical node object, or undefined if `input` is not a usable
|
|
81
109
|
// node (the caller substitutes a placeholder).
|
|
@@ -84,6 +112,7 @@ function desugarNode(
|
|
|
84
112
|
registry: TypeRegistry,
|
|
85
113
|
errors: CollectedError[],
|
|
86
114
|
path: string,
|
|
115
|
+
parentPkg: string,
|
|
87
116
|
): Record<string, unknown> | undefined {
|
|
88
117
|
if (typeof input !== "object" || input === null || Array.isArray(input)) {
|
|
89
118
|
errors.push({ message: `Node at ${path} must be a mapping with one type key` });
|
|
@@ -120,11 +149,16 @@ function desugarNode(
|
|
|
120
149
|
// Rule 1: a bare `type` key → the type's registry default subType.
|
|
121
150
|
const canonicalKey = resolveKey(key, registry, errors, path);
|
|
122
151
|
|
|
152
|
+
// FR-032: this node's effective package context (its own `package` body key,
|
|
153
|
+
// else inherited). Used to expand its ref-bearing attrs AND threaded to its
|
|
154
|
+
// children so their bare/relative refs resolve against the right package.
|
|
155
|
+
const nodePkg = effectivePackageFor(rawBody, parentPkg);
|
|
156
|
+
|
|
123
157
|
// Rule 2: a scalar body → { name: <scalar> }.
|
|
124
158
|
// FR5b — propagate the wrapper-key's position into the synthesized body
|
|
125
159
|
// when the input body was a scalar (no body-side positions to inherit).
|
|
126
160
|
const wrapperKeyPos = wrapperPositions?.[rawKey];
|
|
127
|
-
const body = desugarBody(rawBody, registry, canonicalKey, errors, path, wrapperKeyPos);
|
|
161
|
+
const body = desugarBody(rawBody, registry, canonicalKey, errors, path, wrapperKeyPos, nodePkg);
|
|
128
162
|
|
|
129
163
|
// Rule 4 (cont.): stamp isArray onto the canonical body.
|
|
130
164
|
if (isArray) body[RESERVED_KEY_IS_ARRAY] = true;
|
|
@@ -135,7 +169,7 @@ function desugarNode(
|
|
|
135
169
|
const children: unknown[] = [];
|
|
136
170
|
for (let i = 0; i < rawChildren.length; i++) {
|
|
137
171
|
const childPath = `${path}.${RESERVED_KEY_CHILDREN}[${i}]`;
|
|
138
|
-
const child = desugarNode(rawChildren[i], registry, errors, childPath);
|
|
172
|
+
const child = desugarNode(rawChildren[i], registry, errors, childPath, nodePkg);
|
|
139
173
|
// On a bad child keep an empty-object placeholder so sibling indices
|
|
140
174
|
// stay stable; the error is already collected.
|
|
141
175
|
children.push(child ?? {});
|
|
@@ -196,6 +230,10 @@ function desugarBody(
|
|
|
196
230
|
* empty bodies; for mapping bodies we use the body's own position-by-key
|
|
197
231
|
* map. */
|
|
198
232
|
wrapperKeyPos: { line: number; col: number } | undefined,
|
|
233
|
+
/** FR-032: this node's effective package context, used to expand its
|
|
234
|
+
* ref-bearing attrs (extends + @objectRef/@references/@from/@of/@via/
|
|
235
|
+
* @parameterRef/@payloadRef/@responseRef) to FQN via expandRef. */
|
|
236
|
+
nodePkg: string,
|
|
199
237
|
): Record<string, unknown> {
|
|
200
238
|
if (
|
|
201
239
|
typeof rawBody === "string" ||
|
|
@@ -241,16 +279,27 @@ function desugarBody(
|
|
|
241
279
|
for (const key of Object.keys(src)) {
|
|
242
280
|
let outKey: string;
|
|
243
281
|
if (RESERVED_KEYS.has(key) || key.startsWith(ATTR_PREFIX)) {
|
|
244
|
-
out[key] = src[key];
|
|
245
282
|
outKey = key;
|
|
246
|
-
//
|
|
283
|
+
// FR-032: expand a ref-bearing value to FQN. `extends` (reserved) and the
|
|
284
|
+
// @-prefixed ref attrs are expanded; everything else is copied verbatim.
|
|
247
285
|
const attrName = key.startsWith(ATTR_PREFIX) ? key.slice(ATTR_PREFIX.length) : "";
|
|
286
|
+
if (key === RESERVED_KEY_EXTENDS || (attrName !== "" && REF_BEARING_ATTR_NAMES.has(attrName))) {
|
|
287
|
+
out[key] = expandRefValue(src[key], nodePkg, errors, path, key);
|
|
288
|
+
} else {
|
|
289
|
+
out[key] = src[key];
|
|
290
|
+
}
|
|
291
|
+
// D2 also applies to author-written @-keys (the awkward form).
|
|
248
292
|
if (attrName !== "" && !RESERVED_KEYS.has(attrName)) {
|
|
249
293
|
checkCoercion(attrName, src[key], schemaIndex, errors, path);
|
|
250
294
|
}
|
|
251
295
|
} else {
|
|
252
296
|
outKey = `${ATTR_PREFIX}${key}`;
|
|
253
|
-
|
|
297
|
+
// FR-032: a bare (sigil-free) ref-bearing attr is expanded to FQN too.
|
|
298
|
+
if (REF_BEARING_ATTR_NAMES.has(key)) {
|
|
299
|
+
out[outKey] = expandRefValue(src[key], nodePkg, errors, path, outKey);
|
|
300
|
+
} else {
|
|
301
|
+
out[outKey] = src[key];
|
|
302
|
+
}
|
|
254
303
|
checkCoercion(key, src[key], schemaIndex, errors, path);
|
|
255
304
|
}
|
|
256
305
|
const pos = srcPositions?.[key];
|
|
@@ -263,6 +312,41 @@ function desugarBody(
|
|
|
263
312
|
return out;
|
|
264
313
|
}
|
|
265
314
|
|
|
315
|
+
// ---------------------------------------------------------------------------
|
|
316
|
+
// FR-032 (ADR-0032) — expand a ref-bearing value to FQN.
|
|
317
|
+
//
|
|
318
|
+
// A ref value is a single string (most refs) or a string-array (@references can
|
|
319
|
+
// carry multiple). expandRef preserves any FR-024 dotted child suffix and the
|
|
320
|
+
// `package` attr is never touched here (it is not a ref). A parent-relative
|
|
321
|
+
// over-drop (more `..::` than the package has segments) throws inside expandRef;
|
|
322
|
+
// we collect it as ERR_BAD_ATTR_VALUE and pass the raw value through so the rest
|
|
323
|
+
// of the desugar/load proceeds and surfaces a single actionable error.
|
|
324
|
+
// ---------------------------------------------------------------------------
|
|
325
|
+
|
|
326
|
+
function expandRefValue(
|
|
327
|
+
raw: unknown,
|
|
328
|
+
nodePkg: string,
|
|
329
|
+
errors: CollectedError[],
|
|
330
|
+
path: string,
|
|
331
|
+
refLabel: string,
|
|
332
|
+
): unknown {
|
|
333
|
+
if (typeof raw === "string") {
|
|
334
|
+
try {
|
|
335
|
+
return expandRef(raw, nodePkg);
|
|
336
|
+
} catch (err) {
|
|
337
|
+
errors.push({
|
|
338
|
+
message: `Cannot expand reference '${refLabel}' at ${path}: ${(err as Error).message}`,
|
|
339
|
+
code: "ERR_BAD_ATTR_VALUE",
|
|
340
|
+
});
|
|
341
|
+
return raw;
|
|
342
|
+
}
|
|
343
|
+
}
|
|
344
|
+
if (Array.isArray(raw)) {
|
|
345
|
+
return raw.map((el) => (typeof el === "string" ? expandRefValue(el, nodePkg, errors, path, refLabel) : el));
|
|
346
|
+
}
|
|
347
|
+
return raw;
|
|
348
|
+
}
|
|
349
|
+
|
|
266
350
|
// ---------------------------------------------------------------------------
|
|
267
351
|
// D2 — YAML type-coercion guard
|
|
268
352
|
// ---------------------------------------------------------------------------
|
|
@@ -301,7 +385,12 @@ function checkCoercion(
|
|
|
301
385
|
const spec = schemaIndex.get(attrName);
|
|
302
386
|
if (spec === undefined || spec.valueType === undefined) return;
|
|
303
387
|
|
|
304
|
-
|
|
388
|
+
// Array-valued attr (the `string` + `isArray` model that replaced the
|
|
389
|
+
// `stringarray` subtype): validate as a string-array regardless of the scalar
|
|
390
|
+
// valueType token.
|
|
391
|
+
const effectiveValueType = spec.isArray === true ? ATTR_SUBTYPE_STRINGARRAY : spec.valueType;
|
|
392
|
+
|
|
393
|
+
switch (effectiveValueType) {
|
|
305
394
|
case ATTR_SUBTYPE_STRING:
|
|
306
395
|
case ATTR_SUBTYPE_CLASS:
|
|
307
396
|
if (typeof raw !== "string") emitCoercion(attrName, raw, "string", errors, path);
|