@metaobjectsdev/metadata 0.9.0-rc.1 → 0.10.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/dist/attr-schema-validate.d.ts +1 -1
- package/dist/attr-schema-validate.d.ts.map +1 -1
- package/dist/attr-schema-validate.js +84 -7
- package/dist/attr-schema-validate.js.map +1 -1
- package/dist/constants.d.ts +208 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +419 -0
- package/dist/constants.js.map +1 -0
- 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/doc-schema.d.ts +1 -1
- package/dist/core/documentation/doc-schema.d.ts.map +1 -1
- package/dist/core/documentation/doc-schema.js +13 -5
- package/dist/core/documentation/doc-schema.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/field-schema.d.ts +0 -16
- package/dist/core/field/field-schema.d.ts.map +1 -1
- package/dist/core/field/field-schema.js +10 -158
- package/dist/core/field/field-schema.js.map +1 -1
- 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/file-meta-data-loader.d.ts +18 -0
- package/dist/core/file-meta-data-loader.d.ts.map +1 -0
- package/dist/core/file-meta-data-loader.js +81 -0
- package/dist/core/file-meta-data-loader.js.map +1 -0
- package/dist/core/file-source.d.ts +12 -0
- package/dist/core/file-source.d.ts.map +1 -0
- package/dist/core/file-source.js +46 -0
- package/dist/core/file-source.js.map +1 -0
- 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 +91 -0
- package/dist/core/identity/identity-definition.embedded.js.map +1 -0
- package/dist/core/identity/identity-schema.d.ts.map +1 -1
- package/dist/core/identity/identity-schema.js +3 -2
- package/dist/core/identity/identity-schema.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/relationship/relationship-schema.d.ts.map +1 -1
- package/dist/core/relationship/relationship-schema.js +13 -7
- package/dist/core/relationship/relationship-schema.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 +134 -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-attr-schemas.d.ts +22 -0
- package/dist/core-attr-schemas.d.ts.map +1 -0
- package/dist/core-attr-schemas.js +324 -0
- package/dist/core-attr-schemas.js.map +1 -0
- package/dist/core-types.d.ts +5 -2
- package/dist/core-types.d.ts.map +1 -1
- package/dist/core-types.js +261 -115
- package/dist/core-types.js.map +1 -1
- package/dist/db/db-attr-schemas.d.ts +8 -0
- package/dist/db/db-attr-schemas.d.ts.map +1 -0
- package/dist/db/db-attr-schemas.js +26 -0
- package/dist/db/db-attr-schemas.js.map +1 -0
- package/dist/db/db-provider.d.ts +3 -0
- package/dist/db/db-provider.d.ts.map +1 -0
- package/dist/db/db-provider.js +28 -0
- package/dist/db/db-provider.js.map +1 -0
- package/dist/errors.d.ts +1 -1
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +78 -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 +47 -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 +513 -33
- package/dist/loader/validation-passes.js.map +1 -1
- package/dist/meta/find-reference.d.ts +22 -0
- package/dist/meta/find-reference.d.ts.map +1 -0
- package/dist/meta/find-reference.js +29 -0
- package/dist/meta/find-reference.js.map +1 -0
- package/dist/meta/meta-attr.d.ts +8 -0
- package/dist/meta/meta-attr.d.ts.map +1 -0
- package/dist/meta/meta-attr.js +17 -0
- package/dist/meta/meta-attr.js.map +1 -0
- package/dist/meta/meta-data.d.ts +107 -0
- package/dist/meta/meta-data.d.ts.map +1 -0
- package/dist/meta/meta-data.js +302 -0
- package/dist/meta/meta-data.js.map +1 -0
- package/dist/meta/meta-field.d.ts +48 -0
- package/dist/meta/meta-field.d.ts.map +1 -0
- package/dist/meta/meta-field.js +94 -0
- package/dist/meta/meta-field.js.map +1 -0
- package/dist/meta/meta-identity.d.ts +71 -0
- package/dist/meta/meta-identity.d.ts.map +1 -0
- package/dist/meta/meta-identity.js +129 -0
- package/dist/meta/meta-identity.js.map +1 -0
- package/dist/meta/meta-layout.d.ts +23 -0
- package/dist/meta/meta-layout.d.ts.map +1 -0
- package/dist/meta/meta-layout.js +45 -0
- package/dist/meta/meta-layout.js.map +1 -0
- package/dist/meta/meta-object.d.ts +40 -0
- package/dist/meta/meta-object.d.ts.map +1 -0
- package/dist/meta/meta-object.js +81 -0
- package/dist/meta/meta-object.js.map +1 -0
- package/dist/meta/meta-origin.d.ts +32 -0
- package/dist/meta/meta-origin.d.ts.map +1 -0
- package/dist/meta/meta-origin.js +55 -0
- package/dist/meta/meta-origin.js.map +1 -0
- package/dist/meta/meta-relationship.d.ts +11 -0
- package/dist/meta/meta-relationship.d.ts.map +1 -0
- package/dist/meta/meta-relationship.js +27 -0
- package/dist/meta/meta-relationship.js.map +1 -0
- package/dist/meta/meta-root.d.ts +12 -0
- package/dist/meta/meta-root.d.ts.map +1 -0
- package/dist/meta/meta-root.js +24 -0
- package/dist/meta/meta-root.js.map +1 -0
- package/dist/meta/meta-source.d.ts +18 -0
- package/dist/meta/meta-source.d.ts.map +1 -0
- package/dist/meta/meta-source.js +31 -0
- package/dist/meta/meta-source.js.map +1 -0
- package/dist/meta/meta-validator.d.ts +29 -0
- package/dist/meta/meta-validator.d.ts.map +1 -0
- package/dist/meta/meta-validator.js +49 -0
- package/dist/meta/meta-validator.js.map +1 -0
- package/dist/meta/meta-view.d.ts +4 -0
- package/dist/meta/meta-view.d.ts.map +1 -0
- package/dist/meta/meta-view.js +8 -0
- package/dist/meta/meta-view.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 +74 -8
- package/dist/parser-core.js.map +1 -1
- package/dist/persistence/db/db-attr-schemas.d.ts +8 -0
- package/dist/persistence/db/db-attr-schemas.d.ts.map +1 -0
- package/dist/persistence/db/db-attr-schemas.js +28 -0
- package/dist/persistence/db/db-attr-schemas.js.map +1 -0
- 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 +170 -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/db/db-schema.d.ts +14 -0
- package/dist/persistence/db/db-schema.d.ts.map +1 -1
- package/dist/persistence/db/db-schema.js +27 -0
- package/dist/persistence/db/db-schema.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/origin/origin-schema.d.ts.map +1 -1
- package/dist/persistence/origin/origin-schema.js +7 -3
- package/dist/persistence/origin/origin-schema.js.map +1 -1
- 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/layout/layout-schema.d.ts.map +1 -1
- package/dist/presentation/layout/layout-schema.js +3 -2
- package/dist/presentation/layout/layout-schema.js.map +1 -1
- 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/ui/ui-schema.d.ts +10 -0
- package/dist/presentation/ui/ui-schema.d.ts.map +1 -0
- package/dist/presentation/ui/ui-schema.js +41 -0
- package/dist/presentation/ui/ui-schema.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 +169 -0
- package/dist/provider-data.d.ts.map +1 -0
- package/dist/provider-data.js +269 -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 +60 -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/prompt-schema.d.ts +20 -0
- package/dist/template/prompt-schema.d.ts.map +1 -0
- package/dist/template/prompt-schema.js +70 -0
- package/dist/template/prompt-schema.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/template/template-schema.d.ts.map +1 -1
- package/dist/template/template-schema.js +12 -4
- package/dist/template/template-schema.js.map +1 -1
- package/package.json +33 -22
- package/src/attr-schema-validate.ts +96 -4
- 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-definition.embedded.ts +98 -0
- 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-definition.embedded.ts +141 -0
- package/src/core/yaml-desugar.ts +96 -7
- package/src/core-types.ts +289 -150
- package/src/errors.ts +78 -0
- 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 +66 -7
- package/src/loader/shortcuts.ts +2 -2
- package/src/loader/validation-passes.ts +679 -33
- 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 +86 -8
- package/src/persistence/db/db-definition.embedded.ts +177 -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 +446 -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 +90 -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/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/dist/subtype-rules.js
CHANGED
|
@@ -1,12 +1,27 @@
|
|
|
1
1
|
// Cross-language subtype rules for object subtypes.
|
|
2
2
|
//
|
|
3
|
-
// - value objects MUST NOT have
|
|
3
|
+
// - value objects MUST NOT have ANY identity (primary, secondary,
|
|
4
|
+
// reference) — values are pure data shapes (error, FR-024/ADR-0028)
|
|
5
|
+
// - value objects MUST NOT have a source.* child — values are not
|
|
6
|
+
// persisted shapes (error, FR-024/ADR-0028)
|
|
4
7
|
// - entity objects SHOULD have a primary identity, unless @isAbstract (warning)
|
|
8
|
+
// - projection objects may only extend other projections (error,
|
|
9
|
+
// FR-024/ADR-0028); identity on a projection is OPTIONAL (no warning)
|
|
10
|
+
// - projection sources must have a read-only @kind — view,
|
|
11
|
+
// materializedView, storedProc, tableFunction (ERR_PROJECTION_SOURCE_WRITABLE)
|
|
5
12
|
// - base objects have no rule (template, may or may not have identity)
|
|
13
|
+
// - every identity.* node MUST have a name (FR-024 D2: identities are named,
|
|
14
|
+
// author-chosen, so the dotted by-name extends form can address them)
|
|
15
|
+
//
|
|
16
|
+
// The entity-primary-source-readonly hard cutover (an entity whose PRIMARY
|
|
17
|
+
// source is a read-only kind must become a projection) is deferred to
|
|
18
|
+
// FR-024 Phase E (B4b) — view-primary entities still load today.
|
|
6
19
|
import { ParseError } from "./errors.js";
|
|
7
|
-
import { TYPE_OBJECT, TYPE_IDENTITY } from "./shared/base-types.js";
|
|
20
|
+
import { TYPE_OBJECT, TYPE_IDENTITY, TYPE_SOURCE, } from "./shared/base-types.js";
|
|
8
21
|
import { IDENTITY_SUBTYPE_PRIMARY } from "./core/identity/identity-constants.js";
|
|
9
|
-
import { OBJECT_SUBTYPE_ENTITY, OBJECT_SUBTYPE_VALUE, } from "./core/object/object-constants.js";
|
|
22
|
+
import { OBJECT_SUBTYPE_ENTITY, OBJECT_SUBTYPE_VALUE, OBJECT_SUBTYPE_PROJECTION, } from "./core/object/object-constants.js";
|
|
23
|
+
import { MetaSource } from "./persistence/source/meta-source.js";
|
|
24
|
+
import { SOURCE_READ_ONLY_KINDS } from "./persistence/source/source-constants.js";
|
|
10
25
|
export function validateSubtypeRules(root) {
|
|
11
26
|
const errors = [];
|
|
12
27
|
const warnings = [];
|
|
@@ -14,21 +29,90 @@ export function validateSubtypeRules(root) {
|
|
|
14
29
|
return { errors, warnings };
|
|
15
30
|
}
|
|
16
31
|
function walk(model, errors, warnings) {
|
|
32
|
+
// FR-024 D2 — identity nodes require an author-chosen name (any nesting:
|
|
33
|
+
// object children AND field-nested identities). A nameless node parses
|
|
34
|
+
// with name === "".
|
|
35
|
+
if (model.type === TYPE_IDENTITY && model.name === "") {
|
|
36
|
+
const owner = model.parent?.fqn();
|
|
37
|
+
errors.push(new ParseError(`identity.${model.subType}${owner !== undefined && owner !== "" ? ` under '${owner}'` : ""} has no name — ` +
|
|
38
|
+
`identity nodes require an author-chosen name (e.g. "id") so dotted ` +
|
|
39
|
+
`extends refs can address them (FR-024)`, { code: "ERR_IDENTITY_NAME_REQUIRED", source: model.source }));
|
|
40
|
+
}
|
|
17
41
|
if (model.type === TYPE_OBJECT) {
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
42
|
+
switch (model.subType) {
|
|
43
|
+
case OBJECT_SUBTYPE_VALUE:
|
|
44
|
+
validateValuePurity(model, errors);
|
|
45
|
+
break;
|
|
46
|
+
case OBJECT_SUBTYPE_ENTITY:
|
|
47
|
+
validateEntityIdentity(model, warnings);
|
|
48
|
+
break;
|
|
49
|
+
case OBJECT_SUBTYPE_PROJECTION:
|
|
50
|
+
validateProjectionLicensing(model, errors);
|
|
51
|
+
break;
|
|
52
|
+
default:
|
|
53
|
+
// object.base is a template — no rule.
|
|
54
|
+
break;
|
|
28
55
|
}
|
|
29
56
|
}
|
|
30
57
|
for (const child of model.ownChildren()) {
|
|
31
58
|
walk(child, errors, warnings);
|
|
32
59
|
}
|
|
33
60
|
}
|
|
61
|
+
// FR-024 value purity (ADR-0028): a value object is a pure data shape — it
|
|
62
|
+
// carries NO identity of any subtype and NO source.
|
|
63
|
+
function validateValuePurity(model, errors) {
|
|
64
|
+
for (const child of model.children()) {
|
|
65
|
+
if (child.type === TYPE_IDENTITY) {
|
|
66
|
+
errors.push(new ParseError(`value object '${model.fqn()}' must not have an identity ` +
|
|
67
|
+
`(${TYPE_IDENTITY}.${child.subType} '${child.name}') — value objects are ` +
|
|
68
|
+
`pure data shapes; use subType: "entity" for records with identity ` +
|
|
69
|
+
`(FR-024, ADR-0028)`, { code: "ERR_SUBTYPE_RULE_VIOLATION", source: child.source }));
|
|
70
|
+
}
|
|
71
|
+
else if (child.type === TYPE_SOURCE) {
|
|
72
|
+
errors.push(new ParseError(`value object '${model.fqn()}' must not have a source ` +
|
|
73
|
+
`(${TYPE_SOURCE}.${child.subType}) — value objects are not persisted ` +
|
|
74
|
+
`shapes; use subType: "entity" or "projection" for stored objects ` +
|
|
75
|
+
`(FR-024, ADR-0028)`, { code: "ERR_SUBTYPE_RULE_VIOLATION", source: child.source }));
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
// Entities SHOULD have a primary identity unless abstract (warning).
|
|
80
|
+
function validateEntityIdentity(model, warnings) {
|
|
81
|
+
const hasPrimary = model
|
|
82
|
+
.children()
|
|
83
|
+
.some((c) => c.type === TYPE_IDENTITY && c.subType === IDENTITY_SUBTYPE_PRIMARY);
|
|
84
|
+
if (!hasPrimary && !model.isAbstract) {
|
|
85
|
+
warnings.push(`entity object '${model.fqn()}' has no primary identity ` +
|
|
86
|
+
`(add an identity child or mark @isAbstract: true)`);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
// FR-024 projection licensing (ADR-0028):
|
|
90
|
+
// - a projection's object-level extends may only target another
|
|
91
|
+
// object.projection (ERR_SUBTYPE_RULE_VIOLATION);
|
|
92
|
+
// - every source.* on a projection must have a read-only @kind
|
|
93
|
+
// (ERR_PROJECTION_SOURCE_WRITABLE);
|
|
94
|
+
// - identity is OPTIONAL on a projection — no warning when absent.
|
|
95
|
+
function validateProjectionLicensing(model, errors) {
|
|
96
|
+
const sup = model.superResolved;
|
|
97
|
+
if (sup !== undefined &&
|
|
98
|
+
(sup.type !== TYPE_OBJECT || sup.subType !== OBJECT_SUBTYPE_PROJECTION)) {
|
|
99
|
+
errors.push(new ParseError(`projection '${model.fqn()}' extends '${sup.fqn()}' which is ` +
|
|
100
|
+
`${sup.type}.${sup.subType} — a projection may only extend another ` +
|
|
101
|
+
`projection (FR-024, ADR-0028)`, { code: "ERR_SUBTYPE_RULE_VIOLATION", source: model.source }));
|
|
102
|
+
}
|
|
103
|
+
// OWN sources only: an inherited source is validated on the (projection)
|
|
104
|
+
// object that declares it; an inherited source from a non-projection super
|
|
105
|
+
// is unreachable without first tripping the extends rule above.
|
|
106
|
+
for (const child of model.ownChildren()) {
|
|
107
|
+
if (child.type !== TYPE_SOURCE)
|
|
108
|
+
continue;
|
|
109
|
+
const kind = child instanceof MetaSource ? child.effectiveKind : child.subType;
|
|
110
|
+
if (!SOURCE_READ_ONLY_KINDS.has(kind)) {
|
|
111
|
+
errors.push(new ParseError(`projection '${model.fqn()}' has a writable source (@kind "${kind}") — ` +
|
|
112
|
+
`a projection is a derived read-only representation; its sources must ` +
|
|
113
|
+
`be read-only kinds (view, materializedView, storedProc, ` +
|
|
114
|
+
`tableFunction) (FR-024, ADR-0028)`, { code: "ERR_PROJECTION_SOURCE_WRITABLE", source: child.source }));
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
}
|
|
34
118
|
//# sourceMappingURL=subtype-rules.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"subtype-rules.js","sourceRoot":"","sources":["../src/subtype-rules.ts"],"names":[],"mappings":"AAAA,oDAAoD;AACpD,EAAE;AACF,
|
|
1
|
+
{"version":3,"file":"subtype-rules.js","sourceRoot":"","sources":["../src/subtype-rules.ts"],"names":[],"mappings":"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"}
|
package/dist/super-resolve.d.ts
CHANGED
|
@@ -1,4 +1,23 @@
|
|
|
1
1
|
import type { MetaData } from "./shared/meta-data.js";
|
|
2
|
+
/**
|
|
3
|
+
* FR-024 (ADR-0029): the type-scope of the node whose `extends` is being
|
|
4
|
+
* resolved. A dotted `Entity.child` ref selects among the owner's children of
|
|
5
|
+
* the SAME type as the referrer — a field ref resolves fields, an identity
|
|
6
|
+
* ref resolves identities. Required for the dotted branch; ignored for
|
|
7
|
+
* dot-free refs (legacy behavior unchanged).
|
|
8
|
+
*/
|
|
9
|
+
export interface ReferrerScope {
|
|
10
|
+
readonly type: string;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* FR-024: true when a ref's final `::`-segment contains a `.` — i.e. the ref
|
|
14
|
+
* targets a child nested inside an object (`Customer.id`,
|
|
15
|
+
* `acme::sales::Customer.id`). Names cannot contain `.`, so this is
|
|
16
|
+
* unambiguous. Call sites use this to apply the dotted-only
|
|
17
|
+
* type/subtype-mismatch check (ERR_EXTENDS_TARGET_MISMATCH) without altering
|
|
18
|
+
* shipped top-level extends behavior.
|
|
19
|
+
*/
|
|
20
|
+
export declare function isChildTargetingRef(ref: string): boolean;
|
|
2
21
|
/**
|
|
3
22
|
* Resolve a single super reference string against a tree.
|
|
4
23
|
*
|
|
@@ -6,12 +25,21 @@ import type { MetaData } from "./shared/meta-data.js";
|
|
|
6
25
|
* against the loader's accumulating root (intoRoot). Java semantics: if the
|
|
7
26
|
* ref cannot be resolved, the parser throws ParseError.
|
|
8
27
|
*
|
|
9
|
-
*
|
|
28
|
+
* FR-024 (ADR-0029): a ref whose final segment is dotted (`Customer.id`)
|
|
29
|
+
* targets a child nested inside an object. The owner part resolves with the
|
|
30
|
+
* existing strategies (absolute / relative / bare / same-package); the child
|
|
31
|
+
* is then selected among the owner's EFFECTIVE children (so inherited
|
|
32
|
+
* children resolve) by name AND the referrer's type (type-scoped). A dotted
|
|
33
|
+
* ref that does not resolve returns undefined WITHOUT falling through to the
|
|
34
|
+
* bare lookup; a dotted ref with no `referrerScope` is unresolvable.
|
|
35
|
+
*
|
|
36
|
+
* @param ref - The raw super reference (e.g., "Fruit", "::pkg::Name", "..::common::id", "Customer.id")
|
|
10
37
|
* @param contextPackage - The package of the model whose super is being resolved
|
|
11
38
|
* @param root - The root MetaData of the accumulating tree to search within
|
|
39
|
+
* @param referrerScope - FR-024: the extending node's type — required to resolve dotted refs
|
|
12
40
|
* @returns The resolved MetaData, or undefined if the reference cannot be resolved
|
|
13
41
|
*/
|
|
14
|
-
export declare function resolveSuperRef(ref: string, contextPackage: string, root: MetaData): MetaData | undefined;
|
|
42
|
+
export declare function resolveSuperRef(ref: string, contextPackage: string, root: MetaData, referrerScope?: ReferrerScope): MetaData | undefined;
|
|
15
43
|
export interface DeferredSuperFailure {
|
|
16
44
|
/** FQN of the node whose super ref could not be resolved. */
|
|
17
45
|
nodeFqn: string;
|
|
@@ -19,6 +47,25 @@ export interface DeferredSuperFailure {
|
|
|
19
47
|
ref: string;
|
|
20
48
|
/** ADR-0009 provenance envelope of the referencing node (FR5a). */
|
|
21
49
|
source: import("./source.js").ErrorSource;
|
|
50
|
+
/**
|
|
51
|
+
* FR-024: why resolution failed.
|
|
52
|
+
* - "unresolved" — no target found (loader emits ERR_UNRESOLVED_SUPER).
|
|
53
|
+
* - "target-mismatch" — a dotted child-targeting ref resolved, but the
|
|
54
|
+
* target's type/subtype differs from the extending node's (loader emits
|
|
55
|
+
* ERR_EXTENDS_TARGET_MISMATCH). Applies ONLY to dotted refs — top-level
|
|
56
|
+
* extends behavior is unchanged.
|
|
57
|
+
*/
|
|
58
|
+
kind: "unresolved" | "target-mismatch";
|
|
59
|
+
/** target-mismatch only: the resolved target's identity, for the message. */
|
|
60
|
+
target?: {
|
|
61
|
+
type: string;
|
|
62
|
+
subType: string;
|
|
63
|
+
};
|
|
64
|
+
/** target-mismatch only: the extending node's type/subtype, for the message. */
|
|
65
|
+
referrer?: {
|
|
66
|
+
type: string;
|
|
67
|
+
subType: string;
|
|
68
|
+
};
|
|
22
69
|
}
|
|
23
70
|
/**
|
|
24
71
|
* Walk the tree and resolve every node's superRef against the full root.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"super-resolve.d.ts","sourceRoot":"","sources":["../src/super-resolve.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"super-resolve.d.ts","sourceRoot":"","sources":["../src/super-resolve.ts"],"names":[],"mappings":"AAqBA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAyCtD;;;;;;GAMG;AACH,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAIxD;AAsBD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,eAAe,CAC7B,GAAG,EAAE,MAAM,EACX,cAAc,EAAE,MAAM,EACtB,IAAI,EAAE,QAAQ,EACd,aAAa,CAAC,EAAE,aAAa,GAC5B,QAAQ,GAAG,SAAS,CAiDtB;AAMD,MAAM,WAAW,oBAAoB;IACnC,6DAA6D;IAC7D,OAAO,EAAE,MAAM,CAAC;IAChB,oDAAoD;IACpD,GAAG,EAAE,MAAM,CAAC;IACZ,mEAAmE;IACnE,MAAM,EAAE,OAAO,aAAa,EAAE,WAAW,CAAC;IAC1C;;;;;;;OAOG;IACH,IAAI,EAAE,YAAY,GAAG,iBAAiB,CAAC;IACvC,6EAA6E;IAC7E,MAAM,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAC3C,gFAAgF;IAChF,QAAQ,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;CAC9C;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,QAAQ,GAAG,oBAAoB,EAAE,CAyC5E"}
|
package/dist/super-resolve.js
CHANGED
|
@@ -1,16 +1,24 @@
|
|
|
1
|
-
// super reference resolution —
|
|
1
|
+
// super reference resolution — pure FQN match (FR-032 / ADR-0032)
|
|
2
2
|
//
|
|
3
|
-
//
|
|
4
|
-
//
|
|
5
|
-
//
|
|
6
|
-
//
|
|
7
|
-
//
|
|
8
|
-
//
|
|
3
|
+
// FR-032 made canonical refs fully-qualified: the YAML desugar expands every
|
|
4
|
+
// authored relative/bare-current ref to its FQN (`expandRef`, naming-refs.ts),
|
|
5
|
+
// and the canonical-JSON guard rejects any surviving `::`/`..::` form. So the
|
|
6
|
+
// refs that reach this resolver are already FQN, and resolution is a pure tree
|
|
7
|
+
// match:
|
|
8
|
+
// Qualified "pkg::Name" → findInTree(fqn)
|
|
9
|
+
// Bare "Name" (rare in-tree) → current package only (`<ctx>::Name`),
|
|
10
|
+
// then literal (root-level). NO root
|
|
11
|
+
// fallback for a packaged bare ref.
|
|
12
|
+
// The old `::`-strip (absolute), `..::`-reduce (relative) and
|
|
13
|
+
// bare-current-then-root-fallback branches were DELETED — that fallback was the
|
|
14
|
+
// silent-shadowing footgun ADR-0032 removes.
|
|
9
15
|
//
|
|
10
|
-
//
|
|
11
|
-
//
|
|
12
|
-
//
|
|
13
|
-
|
|
16
|
+
// FR-024: a ref whose final `::`-segment is dotted (`pkg::Customer.id`) targets
|
|
17
|
+
// a child nested in the owner object — resolved type-scoped to the referrer.
|
|
18
|
+
//
|
|
19
|
+
// Super resolution is IMMEDIATE during parse (Java behavior). This module
|
|
20
|
+
// provides only the lookup helper; the parser calls it inline.
|
|
21
|
+
import { PACKAGE_SEPARATOR, CHILD_REF_SEPARATOR } from "./shared/structural.js";
|
|
14
22
|
// ---------------------------------------------------------------------------
|
|
15
23
|
// Tree search helper
|
|
16
24
|
// ---------------------------------------------------------------------------
|
|
@@ -45,9 +53,37 @@ function findInTree(root, fqn) {
|
|
|
45
53
|
}
|
|
46
54
|
return undefined;
|
|
47
55
|
}
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
56
|
+
/**
|
|
57
|
+
* FR-024: true when a ref's final `::`-segment contains a `.` — i.e. the ref
|
|
58
|
+
* targets a child nested inside an object (`Customer.id`,
|
|
59
|
+
* `acme::sales::Customer.id`). Names cannot contain `.`, so this is
|
|
60
|
+
* unambiguous. Call sites use this to apply the dotted-only
|
|
61
|
+
* type/subtype-mismatch check (ERR_EXTENDS_TARGET_MISMATCH) without altering
|
|
62
|
+
* shipped top-level extends behavior.
|
|
63
|
+
*/
|
|
64
|
+
export function isChildTargetingRef(ref) {
|
|
65
|
+
const lastSep = ref.lastIndexOf(PACKAGE_SEPARATOR);
|
|
66
|
+
const lastSegment = lastSep === -1 ? ref : ref.slice(lastSep + PACKAGE_SEPARATOR.length);
|
|
67
|
+
return lastSegment.includes(CHILD_REF_SEPARATOR);
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* FR-024: split a child-targeting ref into the owner-object ref and the child
|
|
71
|
+
* traversal path. A multi-dot ref (`X.y.z`) traverses child names to any depth
|
|
72
|
+
* (object → field → view); returns undefined only for degenerate empty parts
|
|
73
|
+
* (`.id`, `Customer.`, `Customer..x`).
|
|
74
|
+
*/
|
|
75
|
+
function parseChildTargetingRef(ref) {
|
|
76
|
+
const lastSep = ref.lastIndexOf(PACKAGE_SEPARATOR);
|
|
77
|
+
const segStart = lastSep === -1 ? 0 : lastSep + PACKAGE_SEPARATOR.length;
|
|
78
|
+
const lastSegment = ref.slice(segStart);
|
|
79
|
+
const parts = lastSegment.split(CHILD_REF_SEPARATOR);
|
|
80
|
+
if (parts.length < 2 || parts.some((p) => p === ""))
|
|
81
|
+
return undefined;
|
|
82
|
+
return {
|
|
83
|
+
ownerRef: ref.slice(0, segStart) + parts[0],
|
|
84
|
+
path: parts.slice(1),
|
|
85
|
+
};
|
|
86
|
+
}
|
|
51
87
|
/**
|
|
52
88
|
* Resolve a single super reference string against a tree.
|
|
53
89
|
*
|
|
@@ -55,44 +91,72 @@ function findInTree(root, fqn) {
|
|
|
55
91
|
* against the loader's accumulating root (intoRoot). Java semantics: if the
|
|
56
92
|
* ref cannot be resolved, the parser throws ParseError.
|
|
57
93
|
*
|
|
58
|
-
*
|
|
94
|
+
* FR-024 (ADR-0029): a ref whose final segment is dotted (`Customer.id`)
|
|
95
|
+
* targets a child nested inside an object. The owner part resolves with the
|
|
96
|
+
* existing strategies (absolute / relative / bare / same-package); the child
|
|
97
|
+
* is then selected among the owner's EFFECTIVE children (so inherited
|
|
98
|
+
* children resolve) by name AND the referrer's type (type-scoped). A dotted
|
|
99
|
+
* ref that does not resolve returns undefined WITHOUT falling through to the
|
|
100
|
+
* bare lookup; a dotted ref with no `referrerScope` is unresolvable.
|
|
101
|
+
*
|
|
102
|
+
* @param ref - The raw super reference (e.g., "Fruit", "::pkg::Name", "..::common::id", "Customer.id")
|
|
59
103
|
* @param contextPackage - The package of the model whose super is being resolved
|
|
60
104
|
* @param root - The root MetaData of the accumulating tree to search within
|
|
105
|
+
* @param referrerScope - FR-024: the extending node's type — required to resolve dotted refs
|
|
61
106
|
* @returns The resolved MetaData, or undefined if the reference cannot be resolved
|
|
62
107
|
*/
|
|
63
|
-
export function resolveSuperRef(ref, contextPackage, root) {
|
|
64
|
-
// -------------------------------------------------------------------------
|
|
65
|
-
// 1. Absolute reference: leading "::"
|
|
108
|
+
export function resolveSuperRef(ref, contextPackage, root, referrerScope) {
|
|
66
109
|
// -------------------------------------------------------------------------
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
110
|
+
// 0. FR-024 dotted child-targeting ref: `<rootRef>.<child>...<child>`
|
|
111
|
+
//
|
|
112
|
+
// Addressing model (ADR-0029): the package qualifies the ROOT-level node
|
|
113
|
+
// only; each subsequent segment traverses CHILD NAMES, to any depth
|
|
114
|
+
// (object → field → view: `Customer.priceCents.display`). INTERMEDIATE
|
|
115
|
+
// segments select by unique name among the current node's effective
|
|
116
|
+
// children (a cross-type name collision, e.g. a field AND an identity both
|
|
117
|
+
// named "id", is ambiguous → unresolved); the FINAL segment is type-scoped
|
|
118
|
+
// to the referrer (a field ref resolves fields, a view ref views), which is
|
|
119
|
+
// also what disambiguates the common 2-segment `Customer.id` case.
|
|
71
120
|
// -------------------------------------------------------------------------
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
if (ref.startsWith(PACKAGE_PARENT + PACKAGE_SEPARATOR)) {
|
|
75
|
-
const parts = ref.split(PACKAGE_SEPARATOR);
|
|
76
|
-
let levels = 0;
|
|
77
|
-
while (levels < parts.length && parts[levels] === PACKAGE_PARENT) {
|
|
78
|
-
levels++;
|
|
79
|
-
}
|
|
80
|
-
const pkgParts = contextPackage !== "" ? contextPackage.split(PACKAGE_SEPARATOR) : [];
|
|
81
|
-
const remainder = parts.slice(levels);
|
|
82
|
-
if (pkgParts.length < levels || remainder.length === 0) {
|
|
121
|
+
if (isChildTargetingRef(ref)) {
|
|
122
|
+
if (referrerScope === undefined)
|
|
83
123
|
return undefined;
|
|
124
|
+
const parsed = parseChildTargetingRef(ref);
|
|
125
|
+
if (parsed === undefined)
|
|
126
|
+
return undefined; // degenerate (empty segment)
|
|
127
|
+
let current = resolveSuperRef(parsed.ownerRef, contextPackage, root);
|
|
128
|
+
if (current === undefined)
|
|
129
|
+
return undefined;
|
|
130
|
+
for (let i = 0; i < parsed.path.length - 1; i++) {
|
|
131
|
+
const seg = parsed.path[i];
|
|
132
|
+
const matches = current.children().filter((c) => c.name === seg);
|
|
133
|
+
if (matches.length !== 1)
|
|
134
|
+
return undefined; // missing or ambiguous intermediate
|
|
135
|
+
current = matches[0];
|
|
84
136
|
}
|
|
85
|
-
const
|
|
86
|
-
return
|
|
137
|
+
const last = parsed.path[parsed.path.length - 1];
|
|
138
|
+
return current
|
|
139
|
+
.children()
|
|
140
|
+
.find((c) => c.name === last && c.type === referrerScope.type);
|
|
87
141
|
}
|
|
88
142
|
// -------------------------------------------------------------------------
|
|
89
|
-
//
|
|
90
|
-
//
|
|
143
|
+
// 1. FR-032 (ADR-0032): refs in the loaded tree are already fully-qualified.
|
|
144
|
+
// The YAML desugar expanded every relative/bare-current ref to FQN
|
|
145
|
+
// (`expandRef`), and the canonical-JSON guard rejects any surviving
|
|
146
|
+
// `::`/`..::` form (ERR_RELATIVE_REF_IN_CANONICAL). So resolution is a
|
|
147
|
+
// pure FQN match — the old `::`-strip (absolute), `..::`-reduce (relative)
|
|
148
|
+
// and bare-current-then-ROOT-FALLBACK branches are deleted (the footgun).
|
|
149
|
+
//
|
|
150
|
+
// A qualified ref (`pkg::Name`) matches its node directly. A bare ref
|
|
151
|
+
// (no `::`) is the rare in-tree case: a root-level/empty-package type, or
|
|
152
|
+
// a bare ref constructed during dotted-owner recursion — resolve it in the
|
|
153
|
+
// current package ONLY (try `<ctx>::ref`), then bare (root-level) as the
|
|
154
|
+
// literal name. NO root fallback for a packaged bare ref.
|
|
91
155
|
// -------------------------------------------------------------------------
|
|
92
|
-
if (contextPackage !== "") {
|
|
93
|
-
const
|
|
94
|
-
if (
|
|
95
|
-
return
|
|
156
|
+
if (!ref.includes(PACKAGE_SEPARATOR) && contextPackage !== "") {
|
|
157
|
+
const inPackage = findInTree(root, `${contextPackage}${PACKAGE_SEPARATOR}${ref}`);
|
|
158
|
+
if (inPackage !== undefined)
|
|
159
|
+
return inPackage;
|
|
96
160
|
}
|
|
97
161
|
return findInTree(root, ref);
|
|
98
162
|
}
|
|
@@ -117,8 +181,24 @@ export function resolveDeferredSupers(root) {
|
|
|
117
181
|
if (node.superResolved !== undefined)
|
|
118
182
|
return;
|
|
119
183
|
const effectivePkg = node.package ?? node.fileDefaultPackage ?? "";
|
|
120
|
-
|
|
184
|
+
// FR-024: thread the referrer's type so dotted `Entity.child` refs resolve
|
|
185
|
+
// type-scoped (a field ref selects fields; an identity ref identities).
|
|
186
|
+
const target = resolveSuperRef(node.superRef, effectivePkg, root, { type: node.type });
|
|
121
187
|
if (target !== undefined) {
|
|
188
|
+
// FR-024: a dotted ref must target a node of the SAME type and subtype
|
|
189
|
+
// as the extending node. Dotted-only — top-level extends is unchanged.
|
|
190
|
+
if (isChildTargetingRef(node.superRef) &&
|
|
191
|
+
(target.type !== node.type || target.subType !== node.subType)) {
|
|
192
|
+
failures.push({
|
|
193
|
+
nodeFqn: node.fqn(),
|
|
194
|
+
ref: node.superRef,
|
|
195
|
+
source: node.source,
|
|
196
|
+
kind: "target-mismatch",
|
|
197
|
+
target: { type: target.type, subType: target.subType },
|
|
198
|
+
referrer: { type: node.type, subType: node.subType },
|
|
199
|
+
});
|
|
200
|
+
return;
|
|
201
|
+
}
|
|
122
202
|
try {
|
|
123
203
|
node.setSuperResolved(target);
|
|
124
204
|
}
|
|
@@ -127,7 +207,12 @@ export function resolveDeferredSupers(root) {
|
|
|
127
207
|
}
|
|
128
208
|
}
|
|
129
209
|
else {
|
|
130
|
-
failures.push({
|
|
210
|
+
failures.push({
|
|
211
|
+
nodeFqn: node.fqn(),
|
|
212
|
+
ref: node.superRef,
|
|
213
|
+
source: node.source,
|
|
214
|
+
kind: "unresolved",
|
|
215
|
+
});
|
|
131
216
|
}
|
|
132
217
|
});
|
|
133
218
|
return failures;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"super-resolve.js","sourceRoot":"","sources":["../src/super-resolve.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"super-resolve.js","sourceRoot":"","sources":["../src/super-resolve.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,9 +2,10 @@ import { MetaData } from "../shared/meta-data.js";
|
|
|
2
2
|
/**
|
|
3
3
|
* `template.*` node — the fourth-pillar metatype (FR-004, R1).
|
|
4
4
|
*
|
|
5
|
-
* A single class backs
|
|
5
|
+
* A single class backs every subtype (`template.base/prompt/output/toolcall`),
|
|
6
6
|
* mirroring `MetaSource`: the loader dispatches by subtype and per-subtype
|
|
7
|
-
* attribute schemas (
|
|
7
|
+
* attribute schemas (FR-033: externalized to spec/metamodel/template.json,
|
|
8
|
+
* embedded at build into TEMPLATE_DEFINITION) drive validation. Typed accessors
|
|
8
9
|
* are deferred to the render-engine / verify work — attr values read generically
|
|
9
10
|
* via `ownAttr(...)` until then, so no untested forward-looking surface ships.
|
|
10
11
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"meta-template.d.ts","sourceRoot":"","sources":["../../src/template/meta-template.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAElD
|
|
1
|
+
{"version":3,"file":"meta-template.d.ts","sourceRoot":"","sources":["../../src/template/meta-template.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAElD;;;;;;;;;GASG;AACH,qBAAa,YAAa,SAAQ,QAAQ;CAAG"}
|
|
@@ -2,9 +2,10 @@ import { MetaData } from "../shared/meta-data.js";
|
|
|
2
2
|
/**
|
|
3
3
|
* `template.*` node — the fourth-pillar metatype (FR-004, R1).
|
|
4
4
|
*
|
|
5
|
-
* A single class backs
|
|
5
|
+
* A single class backs every subtype (`template.base/prompt/output/toolcall`),
|
|
6
6
|
* mirroring `MetaSource`: the loader dispatches by subtype and per-subtype
|
|
7
|
-
* attribute schemas (
|
|
7
|
+
* attribute schemas (FR-033: externalized to spec/metamodel/template.json,
|
|
8
|
+
* embedded at build into TEMPLATE_DEFINITION) drive validation. Typed accessors
|
|
8
9
|
* are deferred to the render-engine / verify work — attr values read generically
|
|
9
10
|
* via `ownAttr(...)` until then, so no untested forward-looking surface ships.
|
|
10
11
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"meta-template.js","sourceRoot":"","sources":["../../src/template/meta-template.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAElD
|
|
1
|
+
{"version":3,"file":"meta-template.js","sourceRoot":"","sources":["../../src/template/meta-template.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAElD;;;;;;;;;GASG;AACH,MAAM,OAAO,YAAa,SAAQ,QAAQ;CAAG"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prompt-definition.embedded.d.ts","sourceRoot":"","sources":["../../src/template/prompt-definition.embedded.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAE9D,eAAO,MAAM,iBAAiB,EAAE,kBA8W/B,CAAC"}
|