@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
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
// FR-033 S3 — the full set of embedded ProviderDefinitions, in one place.
|
|
2
|
+
//
|
|
3
|
+
// Provenance (which of the concern providers owns/contributes each type/attr)
|
|
4
|
+
// is NOT carried on the composed registry — it is flattened away when providers
|
|
5
|
+
// register. The embedded definition modules ARE the source of that fact: each
|
|
6
|
+
// `ProviderDefinition.provider` says who declared it, its `types[]` say which
|
|
7
|
+
// `type.subType`s it registers (owns), and its `extends[]` say which attrs it
|
|
8
|
+
// contributes to types another provider owns. This module re-exports every
|
|
9
|
+
// embedded definition as one list so the provenance builder can walk them
|
|
10
|
+
// without each consumer re-importing all fifteen.
|
|
11
|
+
import { FIELD_DEFINITION } from "../core/field/field-definition.embedded.js";
|
|
12
|
+
import { OBJECT_DEFINITION } from "../core/object/object-definition.embedded.js";
|
|
13
|
+
import { ATTR_DEFINITION } from "../core/attr/attr-definition.embedded.js";
|
|
14
|
+
import { VALIDATOR_DEFINITION } from "../core/validator/validator-definition.embedded.js";
|
|
15
|
+
import { IDENTITY_DEFINITION } from "../core/identity/identity-definition.embedded.js";
|
|
16
|
+
import { RELATIONSHIP_DEFINITION } from "../core/relationship/relationship-definition.embedded.js";
|
|
17
|
+
import { DOCUMENTATION_DEFINITION } from "../core/documentation/documentation-definition.embedded.js";
|
|
18
|
+
import { ORIGIN_DEFINITION } from "../persistence/origin/origin-definition.embedded.js";
|
|
19
|
+
import { SOURCE_DEFINITION } from "../persistence/source/source-definition.embedded.js";
|
|
20
|
+
import { DB_DEFINITION } from "../persistence/db/db-definition.embedded.js";
|
|
21
|
+
import { VIEW_DEFINITION } from "../presentation/view/view-definition.embedded.js";
|
|
22
|
+
import { LAYOUT_DEFINITION } from "../presentation/layout/layout-definition.embedded.js";
|
|
23
|
+
import { UI_DEFINITION } from "../presentation/ui/ui-definition.embedded.js";
|
|
24
|
+
import { TEMPLATE_DEFINITION } from "../template/template-definition.embedded.js";
|
|
25
|
+
import { PROMPT_DEFINITION } from "../template/prompt-definition.embedded.js";
|
|
26
|
+
/**
|
|
27
|
+
* Every embedded provider definition the core metamodel composes from. The
|
|
28
|
+
* order is irrelevant — the provenance builder keys by `(type.subType, attr)`,
|
|
29
|
+
* and the registry is the authority on what is actually registered.
|
|
30
|
+
*/
|
|
31
|
+
export const ALL_PROVIDER_DEFINITIONS = [
|
|
32
|
+
FIELD_DEFINITION,
|
|
33
|
+
OBJECT_DEFINITION,
|
|
34
|
+
ATTR_DEFINITION,
|
|
35
|
+
VALIDATOR_DEFINITION,
|
|
36
|
+
IDENTITY_DEFINITION,
|
|
37
|
+
RELATIONSHIP_DEFINITION,
|
|
38
|
+
DOCUMENTATION_DEFINITION,
|
|
39
|
+
ORIGIN_DEFINITION,
|
|
40
|
+
SOURCE_DEFINITION,
|
|
41
|
+
DB_DEFINITION,
|
|
42
|
+
VIEW_DEFINITION,
|
|
43
|
+
LAYOUT_DEFINITION,
|
|
44
|
+
UI_DEFINITION,
|
|
45
|
+
TEMPLATE_DEFINITION,
|
|
46
|
+
PROMPT_DEFINITION,
|
|
47
|
+
];
|
|
48
|
+
//# sourceMappingURL=provider-definitions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"provider-definitions.js","sourceRoot":"","sources":["../../src/metamodel-docs/provider-definitions.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAC1E,EAAE;AACF,8EAA8E;AAC9E,gFAAgF;AAChF,8EAA8E;AAC9E,8EAA8E;AAC9E,8EAA8E;AAC9E,2EAA2E;AAC3E,0EAA0E;AAC1E,kDAAkD;AAGlD,OAAO,EAAE,gBAAgB,EAAE,MAAM,4CAA4C,CAAC;AAC9E,OAAO,EAAE,iBAAiB,EAAE,MAAM,8CAA8C,CAAC;AACjF,OAAO,EAAE,eAAe,EAAE,MAAM,0CAA0C,CAAC;AAC3E,OAAO,EAAE,oBAAoB,EAAE,MAAM,oDAAoD,CAAC;AAC1F,OAAO,EAAE,mBAAmB,EAAE,MAAM,kDAAkD,CAAC;AACvF,OAAO,EAAE,uBAAuB,EAAE,MAAM,0DAA0D,CAAC;AACnG,OAAO,EAAE,wBAAwB,EAAE,MAAM,4DAA4D,CAAC;AACtG,OAAO,EAAE,iBAAiB,EAAE,MAAM,qDAAqD,CAAC;AACxF,OAAO,EAAE,iBAAiB,EAAE,MAAM,qDAAqD,CAAC;AACxF,OAAO,EAAE,aAAa,EAAE,MAAM,6CAA6C,CAAC;AAC5E,OAAO,EAAE,eAAe,EAAE,MAAM,kDAAkD,CAAC;AACnF,OAAO,EAAE,iBAAiB,EAAE,MAAM,sDAAsD,CAAC;AACzF,OAAO,EAAE,aAAa,EAAE,MAAM,8CAA8C,CAAC;AAC7E,OAAO,EAAE,mBAAmB,EAAE,MAAM,6CAA6C,CAAC;AAClF,OAAO,EAAE,iBAAiB,EAAE,MAAM,2CAA2C,CAAC;AAE9E;;;;GAIG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAkC;IACrE,gBAAgB;IAChB,iBAAiB;IACjB,eAAe;IACf,oBAAoB;IACpB,mBAAmB;IACnB,uBAAuB;IACvB,wBAAwB;IACxB,iBAAiB;IACjB,iBAAiB;IACjB,aAAa;IACb,eAAe;IACf,iBAAiB;IACjB,aAAa;IACb,mBAAmB;IACnB,iBAAiB;CAClB,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { TypeRegistry } from "../registry.js";
|
|
2
|
+
import type { MetamodelProvenance } from "./provenance.js";
|
|
3
|
+
/**
|
|
4
|
+
* Render the full metamodel doc tree (pure + deterministic). Returns a
|
|
5
|
+
* `Map<relativePath, markdown>` keyed by:
|
|
6
|
+
* `INDEX.md`, `providers.md`, `types/<family>.md`.
|
|
7
|
+
*
|
|
8
|
+
* The registry must already be composed (`composeRegistry(coreProviders)`); the
|
|
9
|
+
* provenance lens is built once (`buildMetamodelProvenance`) and threaded in.
|
|
10
|
+
*/
|
|
11
|
+
export declare function renderMetamodelDocs(registry: TypeRegistry, provenance: MetamodelProvenance): Map<string, string>;
|
|
12
|
+
//# sourceMappingURL=render.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../../src/metamodel-docs/render.ts"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EAAyC,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC1F,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAgQ3D;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,YAAY,EACtB,UAAU,EAAE,mBAAmB,GAC9B,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAsBrB"}
|
|
@@ -0,0 +1,252 @@
|
|
|
1
|
+
// FR-033 S3 — the metamodel doc renderer (pure, deterministic, byte-stable).
|
|
2
|
+
//
|
|
3
|
+
// Documents the METAMODEL ITSELF — the type/subtype/attr vocabulary of the
|
|
4
|
+
// strict registry — for an LLM (and humans). This is distinct from `meta docs
|
|
5
|
+
// --model`, which documents a USER's entities. The output is a tiered markdown
|
|
6
|
+
// tree:
|
|
7
|
+
//
|
|
8
|
+
// INDEX.md every type.subType + one-liner + link (always-on map)
|
|
9
|
+
// types/<type>.md per family: each subtype's full composed attrs (provider-
|
|
10
|
+
// tagged) + allowed children + cardinality + parents
|
|
11
|
+
// providers.md the 5-concern ownership index (the provider lens)
|
|
12
|
+
//
|
|
13
|
+
// Rendering is plain deterministic TS string-building: the metadata package
|
|
14
|
+
// owns no codegen-ts / Mustache dependency, and the output is small + fully
|
|
15
|
+
// structural, so a self-contained string builder is simpler and keeps the
|
|
16
|
+
// byte-stability contract trivially auditable. Everything is sorted by ASCII
|
|
17
|
+
// codepoint for cross-run / cross-port determinism.
|
|
18
|
+
import { isExcludedTypeSubType } from "../registry-manifest-exclusions.js";
|
|
19
|
+
import { ATTR_SUBTYPE_STRINGARRAY, ATTR_SUBTYPE_STRING } from "../core/attr/attr-constants.js";
|
|
20
|
+
import { CHILD_RULE_WILDCARD } from "../shared/structural.js";
|
|
21
|
+
import { SUBTYPE_BASE } from "../shared/base-types.js";
|
|
22
|
+
/** The regeneration command, named in every file's DO-NOT-EDIT header. */
|
|
23
|
+
const REGEN_COMMAND = "meta docs --metamodel";
|
|
24
|
+
/** ASCII codepoint compare — locale-independent, byte-stable. */
|
|
25
|
+
function compare(a, b) {
|
|
26
|
+
return a < b ? -1 : a > b ? 1 : 0;
|
|
27
|
+
}
|
|
28
|
+
/** The DO-NOT-EDIT header prepended to every emitted file. */
|
|
29
|
+
function header(what) {
|
|
30
|
+
return (`<!-- @generated — DO NOT EDIT.\n` +
|
|
31
|
+
` ${what}\n` +
|
|
32
|
+
` Regenerate with: ${REGEN_COMMAND} -->\n`);
|
|
33
|
+
}
|
|
34
|
+
/** Escape a markdown table cell: collapse newlines, escape pipes. */
|
|
35
|
+
function cell(s) {
|
|
36
|
+
return s.replace(/\r?\n/g, " ").replace(/\|/g, "\\|").trim();
|
|
37
|
+
}
|
|
38
|
+
/** The anchor GitHub assigns to a `### field.currency` heading: `fieldcurrency`. */
|
|
39
|
+
function anchor(type, subType) {
|
|
40
|
+
return `${type}${subType}`.toLowerCase().replace(/[^a-z0-9]/g, "");
|
|
41
|
+
}
|
|
42
|
+
/** The scalar value-type + array suffix the docs show for an attr. */
|
|
43
|
+
function attrTypeLabel(attr) {
|
|
44
|
+
const isLegacyStringArray = attr.valueType === ATTR_SUBTYPE_STRINGARRAY;
|
|
45
|
+
const isArray = attr.isArray === true || isLegacyStringArray;
|
|
46
|
+
const scalar = isLegacyStringArray
|
|
47
|
+
? ATTR_SUBTYPE_STRING
|
|
48
|
+
: (attr.valueType ?? "any");
|
|
49
|
+
return isArray ? `${scalar}[]` : scalar;
|
|
50
|
+
}
|
|
51
|
+
/** Render one attr value (default / an allowed value) as an inline-code token. */
|
|
52
|
+
function valueToken(v) {
|
|
53
|
+
if (v === null || v === undefined)
|
|
54
|
+
return "";
|
|
55
|
+
return `\`${String(v)}\``;
|
|
56
|
+
}
|
|
57
|
+
/** The childSubType cell: a single subtype, a `*`, or a comma-joined list. */
|
|
58
|
+
function childSubTypeLabel(childSubType) {
|
|
59
|
+
return Array.isArray(childSubType) ? childSubType.join(", ") : childSubType;
|
|
60
|
+
}
|
|
61
|
+
/** A cardinality range `min..max` (`*` for unbounded / undefined upper). */
|
|
62
|
+
function cardinality(rule) {
|
|
63
|
+
const min = rule.min ?? 0;
|
|
64
|
+
const max = rule.max === null || rule.max === undefined ? "*" : String(rule.max);
|
|
65
|
+
return `${min}..${max}`;
|
|
66
|
+
}
|
|
67
|
+
/** Whether a child rule is a STRUCTURAL child (not an attr — attrs live in the table). */
|
|
68
|
+
function isStructuralChild(rule) {
|
|
69
|
+
return rule.childType !== "attr";
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Render the per-subtype Attributes table. Columns:
|
|
73
|
+
* Attribute | Type | Required | Default | Allowed values | Provider | Description
|
|
74
|
+
* Sorted by attr name; common (universal documentation) attrs are excluded
|
|
75
|
+
* (mentioned once on the providers page) to keep per-type pages lean.
|
|
76
|
+
*/
|
|
77
|
+
function attrsTable(def, provenance, commonAttrNames) {
|
|
78
|
+
const rows = def.attributes
|
|
79
|
+
.filter((a) => !commonAttrNames.has(a.name))
|
|
80
|
+
.slice()
|
|
81
|
+
.sort((a, b) => compare(a.name, b.name));
|
|
82
|
+
if (rows.length === 0)
|
|
83
|
+
return "_No subtype-specific attributes._\n";
|
|
84
|
+
const lines = [
|
|
85
|
+
"| Attribute | Type | Required | Default | Allowed values | Provider | Description |",
|
|
86
|
+
"| --- | --- | --- | --- | --- | --- | --- |",
|
|
87
|
+
];
|
|
88
|
+
for (const a of rows) {
|
|
89
|
+
// Resolve the contributing provider. An attr inherited from `<type>.base`
|
|
90
|
+
// (FR-033 `extendsBase`) is recorded against the BASE in the embedded data,
|
|
91
|
+
// not the concrete subtype — so fall back to the base owner when the
|
|
92
|
+
// subtype-specific lookup misses. (`base` itself has no further fallback.)
|
|
93
|
+
const provider = provenance.ownerOfAttr(def.typeId.type, def.typeId.subType, a.name) ??
|
|
94
|
+
provenance.ownerOfAttr(def.typeId.type, SUBTYPE_BASE, a.name) ??
|
|
95
|
+
"—";
|
|
96
|
+
const allowed = (a.allowedValues ?? []).map(valueToken).join(", ");
|
|
97
|
+
lines.push(`| \`@${a.name}\` | ${attrTypeLabel(a)} | ${a.required ? "yes" : "no"} | ` +
|
|
98
|
+
`${valueToken(a.default)} | ${allowed} | ${provider} | ${cell(a.description)} |`);
|
|
99
|
+
}
|
|
100
|
+
return `${lines.join("\n")}\n`;
|
|
101
|
+
}
|
|
102
|
+
/** Render the Allowed children list (structural child rules), sorted. */
|
|
103
|
+
function childrenList(def) {
|
|
104
|
+
const structural = def.childRules
|
|
105
|
+
.filter(isStructuralChild)
|
|
106
|
+
.slice()
|
|
107
|
+
.sort((a, b) => compare(a.childType, b.childType) ||
|
|
108
|
+
compare(childSubTypeLabel(a.childSubType), childSubTypeLabel(b.childSubType)) ||
|
|
109
|
+
compare(a.childName, b.childName));
|
|
110
|
+
if (structural.length === 0)
|
|
111
|
+
return "_No structural children._\n";
|
|
112
|
+
const lines = structural.map((r) => {
|
|
113
|
+
const nameSuffix = r.childName === CHILD_RULE_WILDCARD ? "" : ` (name \`${r.childName}\`)`;
|
|
114
|
+
return `- \`${r.childType}.${childSubTypeLabel(r.childSubType)}\`${nameSuffix} — ${cardinality(r)}`;
|
|
115
|
+
});
|
|
116
|
+
return `${lines.join("\n")}\n`;
|
|
117
|
+
}
|
|
118
|
+
/** Render one subtype section on a type-family page. */
|
|
119
|
+
function subtypeSection(def, provenance, commonAttrNames) {
|
|
120
|
+
const { type, subType } = def.typeId;
|
|
121
|
+
const owner = provenance.ownerOfType(type, subType);
|
|
122
|
+
const parts = [`### ${type}.${subType}\n`];
|
|
123
|
+
parts.push(`${def.description}\n`);
|
|
124
|
+
if (owner !== undefined)
|
|
125
|
+
parts.push(`**Owning provider:** ${owner}\n`);
|
|
126
|
+
if (def.rules !== undefined)
|
|
127
|
+
parts.push(`**Rules:** ${def.rules}\n`);
|
|
128
|
+
if (def.whenToUse !== undefined)
|
|
129
|
+
parts.push(`**When to use:** ${def.whenToUse}\n`);
|
|
130
|
+
if (def.example !== undefined)
|
|
131
|
+
parts.push(`**Example:**\n\n\`\`\`\n${def.example}\n\`\`\`\n`);
|
|
132
|
+
parts.push(`**Attributes**\n`);
|
|
133
|
+
parts.push(attrsTable(def, provenance, commonAttrNames));
|
|
134
|
+
parts.push(`**Allowed children**\n`);
|
|
135
|
+
parts.push(childrenList(def));
|
|
136
|
+
if (def.parents !== undefined && def.parents.length > 0) {
|
|
137
|
+
const ps = [...def.parents].sort(compare).map((p) => `\`${p}\``).join(", ");
|
|
138
|
+
parts.push(`**Parents:** ${ps}\n`);
|
|
139
|
+
}
|
|
140
|
+
return parts.join("\n");
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* The registered (type, subType) definitions the metamodel docs cover — every
|
|
144
|
+
* registered pair EXCEPT the ones the registry-conformance manifest carves out
|
|
145
|
+
* (TS-web-presentation `view.*` controls + the `metadata.base` inheritance
|
|
146
|
+
* anchor) so the docs describe exactly the agreed cross-port vocabulary.
|
|
147
|
+
*/
|
|
148
|
+
function coveredDefs(registry) {
|
|
149
|
+
return registry
|
|
150
|
+
.allTypes()
|
|
151
|
+
.filter((id) => !isExcludedTypeSubType(id.type, id.subType))
|
|
152
|
+
.map((id) => registry.find(id.type, id.subType))
|
|
153
|
+
.sort((a, b) => compare(`${a.typeId.type}.${a.typeId.subType}`, `${b.typeId.type}.${b.typeId.subType}`));
|
|
154
|
+
}
|
|
155
|
+
/** Render INDEX.md — the always-on map: every type.subType + one-liner + link. */
|
|
156
|
+
function renderIndex(defs) {
|
|
157
|
+
const lines = [
|
|
158
|
+
header("Metamodel vocabulary index — every type.subType, its one-line description, and a link to its type page."),
|
|
159
|
+
"# MetaObjects Metamodel — Index\n",
|
|
160
|
+
"This documents the **metamodel itself** — the type / subtype / attribute",
|
|
161
|
+
"vocabulary the loader accepts — generated from the strict registry. It is",
|
|
162
|
+
"NOT documentation of a user's entities (that is `meta docs --model`).\n",
|
|
163
|
+
"Follow a link into `types/<family>.md` for the full attribute table, allowed",
|
|
164
|
+
"children, and cardinality of a subtype. Universal documentation attributes",
|
|
165
|
+
"(`@description`/`@title`/…) apply to every node and are listed once in",
|
|
166
|
+
"[providers.md](providers.md) under `metaobjects-documentation`.\n",
|
|
167
|
+
"| Type.subType | Description | Page |",
|
|
168
|
+
"| --- | --- | --- |",
|
|
169
|
+
];
|
|
170
|
+
for (const def of defs) {
|
|
171
|
+
const { type, subType } = def.typeId;
|
|
172
|
+
const link = `[types/${type}.md#${anchor(type, subType)}](types/${type}.md#${anchor(type, subType)})`;
|
|
173
|
+
lines.push(`| \`${type}.${subType}\` | ${cell(def.description)} | ${link} |`);
|
|
174
|
+
}
|
|
175
|
+
return `${lines.join("\n")}\n`;
|
|
176
|
+
}
|
|
177
|
+
/** Render one types/<family>.md page from that family's subtype definitions. */
|
|
178
|
+
function renderTypePage(family, defs, provenance, commonAttrNames) {
|
|
179
|
+
const parts = [
|
|
180
|
+
header(`Metamodel reference for the \`${family}\` type family — each subtype's composed attributes, allowed children, and cardinality.`),
|
|
181
|
+
`# Metamodel — \`${family}\` types\n`,
|
|
182
|
+
`Each section below is one \`${family}.<subType>\`. The **Attributes** table lists`,
|
|
183
|
+
`the subtype's own + concern-contributed attributes (provider-tagged); universal`,
|
|
184
|
+
`documentation attributes are omitted here (see [providers.md](../providers.md)).`,
|
|
185
|
+
`**Allowed children** lists the structural child rules with their cardinality`,
|
|
186
|
+
`(\`min..max\`, \`*\` = unbounded).\n`,
|
|
187
|
+
];
|
|
188
|
+
for (const def of defs) {
|
|
189
|
+
parts.push(subtypeSection(def, provenance, commonAttrNames));
|
|
190
|
+
}
|
|
191
|
+
return `${parts.join("\n")}\n`;
|
|
192
|
+
}
|
|
193
|
+
/** Render providers.md — the 5-concern ownership index (the provider lens). */
|
|
194
|
+
function renderProviders(provenance) {
|
|
195
|
+
const parts = [
|
|
196
|
+
header("Concern-provider ownership index — which provider owns each type and contributes each attribute."),
|
|
197
|
+
"# MetaObjects Metamodel — Providers\n",
|
|
198
|
+
"The metamodel is composed from concern providers. Each **owns** the",
|
|
199
|
+
"type/subtypes it registers and may **contribute** attributes to types another",
|
|
200
|
+
"provider owns. This is the ownership lens over the same vocabulary",
|
|
201
|
+
"[INDEX.md](INDEX.md) lists by type.\n",
|
|
202
|
+
];
|
|
203
|
+
for (const id of provenance.providerIds()) {
|
|
204
|
+
parts.push(`## ${id}\n`);
|
|
205
|
+
const desc = provenance.providerDescription(id);
|
|
206
|
+
if (desc !== undefined)
|
|
207
|
+
parts.push(`${desc}\n`);
|
|
208
|
+
const owned = provenance.typesOwnedBy(id);
|
|
209
|
+
if (owned.length > 0) {
|
|
210
|
+
parts.push(`**Owns (registers):** ${owned.map((t) => `\`${t}\``).join(", ")}\n`);
|
|
211
|
+
}
|
|
212
|
+
const common = provenance.commonAttrsBy(id);
|
|
213
|
+
if (common.length > 0) {
|
|
214
|
+
parts.push(`**Universal attributes (every node):** ${common.map((a) => `\`@${a}\``).join(", ")}\n`);
|
|
215
|
+
}
|
|
216
|
+
const contributed = provenance.attrsContributedBy(id);
|
|
217
|
+
if (contributed.length > 0) {
|
|
218
|
+
parts.push(`**Contributes attributes:**\n`);
|
|
219
|
+
const lines = contributed.map((c) => `- \`${c.typeSubType}\`: ${c.attrs.map((a) => `\`@${a}\``).join(", ")}`);
|
|
220
|
+
parts.push(`${lines.join("\n")}\n`);
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
return `${parts.join("\n")}\n`;
|
|
224
|
+
}
|
|
225
|
+
/**
|
|
226
|
+
* Render the full metamodel doc tree (pure + deterministic). Returns a
|
|
227
|
+
* `Map<relativePath, markdown>` keyed by:
|
|
228
|
+
* `INDEX.md`, `providers.md`, `types/<family>.md`.
|
|
229
|
+
*
|
|
230
|
+
* The registry must already be composed (`composeRegistry(coreProviders)`); the
|
|
231
|
+
* provenance lens is built once (`buildMetamodelProvenance`) and threaded in.
|
|
232
|
+
*/
|
|
233
|
+
export function renderMetamodelDocs(registry, provenance) {
|
|
234
|
+
const defs = coveredDefs(registry);
|
|
235
|
+
const commonAttrNames = new Set(registry.getCommonAttrs().map((a) => a.name));
|
|
236
|
+
const out = new Map();
|
|
237
|
+
out.set("INDEX.md", renderIndex(defs));
|
|
238
|
+
out.set("providers.md", renderProviders(provenance));
|
|
239
|
+
// Group by type family, sorted within + across.
|
|
240
|
+
const byFamily = new Map();
|
|
241
|
+
for (const def of defs) {
|
|
242
|
+
const fam = def.typeId.type;
|
|
243
|
+
if (!byFamily.has(fam))
|
|
244
|
+
byFamily.set(fam, []);
|
|
245
|
+
byFamily.get(fam).push(def);
|
|
246
|
+
}
|
|
247
|
+
for (const fam of [...byFamily.keys()].sort(compare)) {
|
|
248
|
+
out.set(`types/${fam}.md`, renderTypePage(fam, byFamily.get(fam), provenance, commonAttrNames));
|
|
249
|
+
}
|
|
250
|
+
return out;
|
|
251
|
+
}
|
|
252
|
+
//# sourceMappingURL=render.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"render.js","sourceRoot":"","sources":["../../src/metamodel-docs/render.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import type { MetaData } from "./shared/meta-data.js";
|
|
2
|
+
/**
|
|
3
|
+
* The inline (`@`-prefixed) attribute names whose VALUE is a metadata reference
|
|
4
|
+
* subject to FR-032 expansion/guarding (ADR-0032 §3). The structural `extends`
|
|
5
|
+
* key is handled separately (it is not `@`-prefixed). `@objectRef`/`@references`
|
|
6
|
+
* are pure object refs; `@from`/`@of`/`@via` carry an entity HEAD (possibly with
|
|
7
|
+
* a dotted relationship/field tail — expandRef preserves the tail);
|
|
8
|
+
* `@parameterRef`/`@payloadRef`/`@responseRef` reference value-objects. These are
|
|
9
|
+
* expanded by the YAML desugar and rejected (when still relative) by the
|
|
10
|
+
* canonical-JSON guard. `@sourceRefField` (a FK FIELD name, not an object ref)
|
|
11
|
+
* and `@through` are intentionally NOT in this set (out of scope for FR-032 T-slice).
|
|
12
|
+
*/
|
|
13
|
+
export declare const REF_BEARING_ATTR_NAMES: ReadonlySet<string>;
|
|
14
|
+
/**
|
|
15
|
+
* True when `raw` is a relative reference form (`::Rest` or `..::Rest`) that the
|
|
16
|
+
* YAML desugar must expand before canonical JSON. Canonical JSON must be FQN; a
|
|
17
|
+
* relative ref surviving into it is `ERR_RELATIVE_REF_IN_CANONICAL`.
|
|
18
|
+
*/
|
|
19
|
+
export declare function isRelativeRef(raw: string): boolean;
|
|
20
|
+
/**
|
|
21
|
+
* Expand an authored reference to its fully-qualified canonical form per
|
|
22
|
+
* ADR-0032 §2.1, preserving any FR-024 dotted child suffix. The package context
|
|
23
|
+
* `P` is the declaring node's effective package (its own `package` or the
|
|
24
|
+
* file-default). Throws on parent-relative over-drop — the caller emits an error.
|
|
25
|
+
*/
|
|
26
|
+
export declare function expandRef(raw: string, packageContext: string): string;
|
|
27
|
+
/**
|
|
28
|
+
* FR-032 — does a root-level object `node` satisfy an (already-expanded)
|
|
29
|
+
* object reference `ref`? After the YAML desugar + corpus sweep every ref is
|
|
30
|
+
* fully qualified, so resolution is a pure FQN match. Objects keep a BARE
|
|
31
|
+
* `fqn()` per the FR5d cross-port contract, so the canonical FQN accessor is
|
|
32
|
+
* `resolutionKey()` (`<package | fileDefaultPackage>::<name>`) — this mirrors
|
|
33
|
+
* `super-resolve`'s `findInTree`. The bare `name`/`fqn()` arms cover legacy
|
|
34
|
+
* same-tree refs and root-level (empty-package) objects.
|
|
35
|
+
*
|
|
36
|
+
* This is the single matcher the non-super resolvers (origin `@from`/`@of`/
|
|
37
|
+
* `@via` heads, template `@payloadRef`/`@responseRef`, source `@parameterRef`)
|
|
38
|
+
* share, so FQN matching behaves identically everywhere a ref resolves.
|
|
39
|
+
*/
|
|
40
|
+
export declare function refMatchesObject(node: MetaData, ref: string): boolean;
|
|
41
|
+
//# sourceMappingURL=naming-refs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"naming-refs.d.ts","sourceRoot":"","sources":["../src/naming-refs.ts"],"names":[],"mappings":"AA4BA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAiBtD;;;;;;;;;;GAUG;AACH,eAAO,MAAM,sBAAsB,EAAE,WAAW,CAAC,MAAM,CAYrD,CAAC;AAEH;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAElD;AA0DD;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,MAAM,CAGrE;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAErE"}
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
// FR-032 (ADR-0032) — canonical reference expansion.
|
|
2
|
+
//
|
|
3
|
+
// `expandRef(raw, packageContext)` is the SINGLE ref-expansion primitive. It
|
|
4
|
+
// lowers an authored metadata reference to its fully-qualified canonical form
|
|
5
|
+
// per ADR-0032 §2.1 — deterministically, with NO root fallback:
|
|
6
|
+
//
|
|
7
|
+
// bare `Name` (no `::`, no leading `.`) → `<P>::Name` (current package only;
|
|
8
|
+
// stays bare when P is empty/root).
|
|
9
|
+
// qualified `pkg::Name` (contains `::`, → unchanged (absolute from root).
|
|
10
|
+
// NOT leading `::`)
|
|
11
|
+
// `::Rest` (leading `::`) → strip the leading `::`; the
|
|
12
|
+
// remainder is absolute from root
|
|
13
|
+
// (so `::a::b::C` ≡ `a::b::C`,
|
|
14
|
+
// `::Apple` = root-level Apple).
|
|
15
|
+
// `..::Rest` (one or more leading `..::`) → drop one package segment from P
|
|
16
|
+
// per `..::`, then resolve Rest
|
|
17
|
+
// (itself bare/qualified) against the
|
|
18
|
+
// reduced package. Over-drop (more
|
|
19
|
+
// `..::` than P has segments) throws.
|
|
20
|
+
//
|
|
21
|
+
// The trailing FR-024 DOTTED CHILD suffix (`.child` / `.child.grandchild`) is
|
|
22
|
+
// PRESERVED verbatim: only the OWNER part (everything before the first `.` in
|
|
23
|
+
// the final `::`-segment) is expanded; the `.child...` tail is reattached.
|
|
24
|
+
//
|
|
25
|
+
// The desugar runs this on every ref-bearing attr so canonical JSON is FQN-only
|
|
26
|
+
// (ADR-0032 §2.2/§2.3); the resolution layer then does pure FQN matching. The
|
|
27
|
+
// `package` attribute is NEVER expanded — it is the node's identity.
|
|
28
|
+
import { PACKAGE_SEPARATOR, PACKAGE_PARENT, CHILD_REF_SEPARATOR } from "./shared/structural.js";
|
|
29
|
+
import { RELATIONSHIP_ATTR_OBJECT_REF } from "./core/relationship/relationship-constants.js";
|
|
30
|
+
import { FIELD_ATTR_OBJECT_REF } from "./core/field/field-constants.js";
|
|
31
|
+
import { IDENTITY_REFERENCE_ATTR_REFERENCES } from "./core/identity/identity-constants.js";
|
|
32
|
+
import { ORIGIN_PASSTHROUGH_ATTR_FROM, ORIGIN_PASSTHROUGH_ATTR_VIA, ORIGIN_AGGREGATE_ATTR_OF, ORIGIN_AGGREGATE_ATTR_VIA, ORIGIN_COLLECTION_ATTR_VIA, } from "./persistence/origin/origin-constants.js";
|
|
33
|
+
import { SOURCE_ATTR_PARAMETER_REF } from "./persistence/source/source-constants.js";
|
|
34
|
+
import { TEMPLATE_ATTR_PAYLOAD_REF, TEMPLATE_ATTR_RESPONSE_REF } from "./template/template-constants.js";
|
|
35
|
+
const PARENT_PREFIX = PACKAGE_PARENT + PACKAGE_SEPARATOR; // "..::"
|
|
36
|
+
/**
|
|
37
|
+
* The inline (`@`-prefixed) attribute names whose VALUE is a metadata reference
|
|
38
|
+
* subject to FR-032 expansion/guarding (ADR-0032 §3). The structural `extends`
|
|
39
|
+
* key is handled separately (it is not `@`-prefixed). `@objectRef`/`@references`
|
|
40
|
+
* are pure object refs; `@from`/`@of`/`@via` carry an entity HEAD (possibly with
|
|
41
|
+
* a dotted relationship/field tail — expandRef preserves the tail);
|
|
42
|
+
* `@parameterRef`/`@payloadRef`/`@responseRef` reference value-objects. These are
|
|
43
|
+
* expanded by the YAML desugar and rejected (when still relative) by the
|
|
44
|
+
* canonical-JSON guard. `@sourceRefField` (a FK FIELD name, not an object ref)
|
|
45
|
+
* and `@through` are intentionally NOT in this set (out of scope for FR-032 T-slice).
|
|
46
|
+
*/
|
|
47
|
+
export const REF_BEARING_ATTR_NAMES = new Set([
|
|
48
|
+
RELATIONSHIP_ATTR_OBJECT_REF, // = FIELD_ATTR_OBJECT_REF (same spelling "objectRef")
|
|
49
|
+
FIELD_ATTR_OBJECT_REF,
|
|
50
|
+
IDENTITY_REFERENCE_ATTR_REFERENCES,
|
|
51
|
+
ORIGIN_PASSTHROUGH_ATTR_FROM,
|
|
52
|
+
ORIGIN_PASSTHROUGH_ATTR_VIA, // = ORIGIN_AGGREGATE_ATTR_VIA = ORIGIN_COLLECTION_ATTR_VIA ("via")
|
|
53
|
+
ORIGIN_AGGREGATE_ATTR_OF,
|
|
54
|
+
ORIGIN_AGGREGATE_ATTR_VIA,
|
|
55
|
+
ORIGIN_COLLECTION_ATTR_VIA,
|
|
56
|
+
SOURCE_ATTR_PARAMETER_REF,
|
|
57
|
+
TEMPLATE_ATTR_PAYLOAD_REF,
|
|
58
|
+
TEMPLATE_ATTR_RESPONSE_REF,
|
|
59
|
+
]);
|
|
60
|
+
/**
|
|
61
|
+
* True when `raw` is a relative reference form (`::Rest` or `..::Rest`) that the
|
|
62
|
+
* YAML desugar must expand before canonical JSON. Canonical JSON must be FQN; a
|
|
63
|
+
* relative ref surviving into it is `ERR_RELATIVE_REF_IN_CANONICAL`.
|
|
64
|
+
*/
|
|
65
|
+
export function isRelativeRef(raw) {
|
|
66
|
+
return raw.startsWith(PACKAGE_SEPARATOR) || raw.startsWith(PARENT_PREFIX);
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Split a ref into its owner part (the object reference) and any FR-024 dotted
|
|
70
|
+
* child tail. The `.` that marks a child can only appear in the FINAL
|
|
71
|
+
* `::`-segment (package separators never follow a child dot), so the owner ends
|
|
72
|
+
* at the first `.` AFTER the last `::`. Returns `{ owner, tail }` where `tail`
|
|
73
|
+
* includes the leading `.` (or is "" when there is no child suffix).
|
|
74
|
+
*/
|
|
75
|
+
function splitChildTail(raw) {
|
|
76
|
+
const lastSep = raw.lastIndexOf(PACKAGE_SEPARATOR);
|
|
77
|
+
const segStart = lastSep === -1 ? 0 : lastSep + PACKAGE_SEPARATOR.length;
|
|
78
|
+
const dotInSeg = raw.indexOf(CHILD_REF_SEPARATOR, segStart);
|
|
79
|
+
if (dotInSeg === -1)
|
|
80
|
+
return { owner: raw, tail: "" };
|
|
81
|
+
return { owner: raw.slice(0, dotInSeg), tail: raw.slice(dotInSeg) };
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Expand an authored reference's OWNER part (no child tail) to its FQN per
|
|
85
|
+
* ADR-0032 §2.1. Throws on parent-relative over-drop.
|
|
86
|
+
*/
|
|
87
|
+
function expandOwner(owner, packageContext) {
|
|
88
|
+
// root-absolute: leading "::" → strip; the remainder is absolute from root.
|
|
89
|
+
if (owner.startsWith(PACKAGE_SEPARATOR)) {
|
|
90
|
+
return owner.slice(PACKAGE_SEPARATOR.length);
|
|
91
|
+
}
|
|
92
|
+
// parent-relative: one or more leading "..::".
|
|
93
|
+
if (owner.startsWith(PARENT_PREFIX)) {
|
|
94
|
+
let rest = owner;
|
|
95
|
+
let levels = 0;
|
|
96
|
+
while (rest.startsWith(PARENT_PREFIX)) {
|
|
97
|
+
levels++;
|
|
98
|
+
rest = rest.slice(PARENT_PREFIX.length);
|
|
99
|
+
}
|
|
100
|
+
const pkgParts = packageContext !== "" ? packageContext.split(PACKAGE_SEPARATOR) : [];
|
|
101
|
+
if (levels > pkgParts.length) {
|
|
102
|
+
throw new Error(`Relative reference '${owner}' over-drops: ${levels} parent level(s) ` +
|
|
103
|
+
`but the package context '${packageContext}' has only ${pkgParts.length} segment(s)`);
|
|
104
|
+
}
|
|
105
|
+
const reducedPkg = pkgParts.slice(0, pkgParts.length - levels).join(PACKAGE_SEPARATOR);
|
|
106
|
+
// `rest` is itself bare/qualified — resolve it against the reduced package.
|
|
107
|
+
// (A qualified remainder still resolves bare-in-the-reduced-package per the
|
|
108
|
+
// §2.1 example `..::veg::Carrot` → `acme::veg::Carrot`.)
|
|
109
|
+
return reducedPkg !== "" ? `${reducedPkg}${PACKAGE_SEPARATOR}${rest}` : rest;
|
|
110
|
+
}
|
|
111
|
+
// qualified: contains "::" (not leading) → absolute, unchanged.
|
|
112
|
+
if (owner.includes(PACKAGE_SEPARATOR)) {
|
|
113
|
+
return owner;
|
|
114
|
+
}
|
|
115
|
+
// bare name → current package (only). Stays bare when context is empty/root.
|
|
116
|
+
return packageContext !== "" ? `${packageContext}${PACKAGE_SEPARATOR}${owner}` : owner;
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Expand an authored reference to its fully-qualified canonical form per
|
|
120
|
+
* ADR-0032 §2.1, preserving any FR-024 dotted child suffix. The package context
|
|
121
|
+
* `P` is the declaring node's effective package (its own `package` or the
|
|
122
|
+
* file-default). Throws on parent-relative over-drop — the caller emits an error.
|
|
123
|
+
*/
|
|
124
|
+
export function expandRef(raw, packageContext) {
|
|
125
|
+
const { owner, tail } = splitChildTail(raw);
|
|
126
|
+
return expandOwner(owner, packageContext) + tail;
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* FR-032 — does a root-level object `node` satisfy an (already-expanded)
|
|
130
|
+
* object reference `ref`? After the YAML desugar + corpus sweep every ref is
|
|
131
|
+
* fully qualified, so resolution is a pure FQN match. Objects keep a BARE
|
|
132
|
+
* `fqn()` per the FR5d cross-port contract, so the canonical FQN accessor is
|
|
133
|
+
* `resolutionKey()` (`<package | fileDefaultPackage>::<name>`) — this mirrors
|
|
134
|
+
* `super-resolve`'s `findInTree`. The bare `name`/`fqn()` arms cover legacy
|
|
135
|
+
* same-tree refs and root-level (empty-package) objects.
|
|
136
|
+
*
|
|
137
|
+
* This is the single matcher the non-super resolvers (origin `@from`/`@of`/
|
|
138
|
+
* `@via` heads, template `@payloadRef`/`@responseRef`, source `@parameterRef`)
|
|
139
|
+
* share, so FQN matching behaves identically everywhere a ref resolves.
|
|
140
|
+
*/
|
|
141
|
+
export function refMatchesObject(node, ref) {
|
|
142
|
+
return node.resolutionKey() === ref || node.fqn() === ref || node.name === ref;
|
|
143
|
+
}
|
|
144
|
+
//# sourceMappingURL=naming-refs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"naming-refs.js","sourceRoot":"","sources":["../src/naming-refs.ts"],"names":[],"mappings":"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"}
|
package/dist/naming.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"naming.d.ts","sourceRoot":"","sources":["../src/naming.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAUtD;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAI7D;AAED,wBAAgB,WAAW,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAK7C;AAED,wBAAgB,WAAW,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAE7C;AAED;;;;;;;GAOG;AACH,MAAM,MAAM,oBAAoB,GAAG,YAAY,GAAG,SAAS,GAAG,YAAY,CAAC;AAE3E,sDAAsD;AACtD,eAAO,MAAM,8BAA8B,EAAE,oBAAmC,CAAC;AAEjF,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,oBAAoB,GAAG,MAAM,CAM9F;AAED,wBAAgB,SAAS,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAI3C;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,QAAQ,GAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"naming.d.ts","sourceRoot":"","sources":["../src/naming.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAUtD;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAI7D;AAED,wBAAgB,WAAW,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAK7C;AAED,wBAAgB,WAAW,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAE7C;AAED;;;;;;;GAOG;AACH,MAAM,MAAM,oBAAoB,GAAG,YAAY,GAAG,SAAS,GAAG,YAAY,CAAC;AAE3E,sDAAsD;AACtD,eAAO,MAAM,8BAA8B,EAAE,oBAAmC,CAAC;AAEjF,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,oBAAoB,GAAG,MAAM,CAM9F;AAED,wBAAgB,SAAS,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAI3C;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,QAAQ,GAAG,MAAM,CAiBzD;AAED,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,QAAQ,EACf,QAAQ,GAAE,oBAAqD,GAC9D,MAAM,CAIR;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,QAAQ,GAAG,MAAM,GAAG,SAAS,CASvE;AAED,2GAA2G;AAC3G,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC5B,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC7B;AAED,wBAAgB,YAAY,CAC1B,MAAM,EAAE,QAAQ,EAChB,QAAQ,GAAE,oBAAqD,GAC9D,aAAa,CAYf"}
|
package/dist/naming.js
CHANGED
|
@@ -47,7 +47,13 @@ export function resolveTableName(entity) {
|
|
|
47
47
|
// so this helper now just delegates. Writability (table vs view/storedProc/
|
|
48
48
|
// tableFunction) only affects write-routing — for SELECT-side name resolution,
|
|
49
49
|
// a read-only primary source is the right answer.
|
|
50
|
-
|
|
50
|
+
//
|
|
51
|
+
// Effective children (own + inherited via the super chain) so a TPH SUBTYPE
|
|
52
|
+
// — which declares no source of its own and inherits the discriminator base's
|
|
53
|
+
// single table (FR-017) — resolves to that base table rather than the
|
|
54
|
+
// entity-name fallback. For an entity declaring its own source, own shadows
|
|
55
|
+
// inherited, so the result is unchanged.
|
|
56
|
+
const source = entity.children().find((c) => c instanceof MetaSource && c.role === SOURCE_ROLE_PRIMARY);
|
|
51
57
|
if (source !== undefined)
|
|
52
58
|
return source.physicalName;
|
|
53
59
|
return pluralize(toSnakeCase(entity.name));
|
|
@@ -77,7 +83,9 @@ export function resolveTableSchema(entity) {
|
|
|
77
83
|
export function buildNameMap(entity, strategy = DEFAULT_COLUMN_NAMING_STRATEGY) {
|
|
78
84
|
const jsToDb = new Map();
|
|
79
85
|
const dbToJs = new Map();
|
|
80
|
-
|
|
86
|
+
// Effective children so a TPH subtype's name map covers inherited base
|
|
87
|
+
// fields + its own (FR-017); own shadows inherited on a name conflict.
|
|
88
|
+
for (const child of entity.children()) {
|
|
81
89
|
if (child.type !== TYPE_FIELD)
|
|
82
90
|
continue;
|
|
83
91
|
const dbCol = resolveColumnName(child, strategy);
|
package/dist/naming.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"naming.js","sourceRoot":"","sources":["../src/naming.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AACrE,OAAO,EACL,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,0CAA0C,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,qCAAqC,CAAC;AAEjE;;;;;;GAMG;AACH,MAAM,UAAU,YAAY,CAAC,IAAwB;IACnD,IAAI,CAAC,IAAI;QAAE,OAAO,EAAE,CAAC;IACrB,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC;IAChD,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC;AACxE,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,CAAS;IACnC,OAAO,CAAC;SACL,OAAO,CAAC,uBAAuB,EAAE,OAAO,CAAC;SACzC,OAAO,CAAC,oBAAoB,EAAE,OAAO,CAAC;SACtC,WAAW,EAAE,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,CAAS;IACnC,OAAO,WAAW,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AAC3C,CAAC;AAYD,sDAAsD;AACtD,MAAM,CAAC,MAAM,8BAA8B,GAAyB,YAAY,CAAC;AAEjF,MAAM,UAAU,yBAAyB,CAAC,IAAY,EAAE,QAA8B;IACpF,QAAQ,QAAQ,EAAE,CAAC;QACjB,KAAK,SAAS,CAAC,CAAK,OAAO,IAAI,CAAC;QAChC,KAAK,YAAY,CAAC,CAAE,OAAO,WAAW,CAAC,IAAI,CAAC,CAAC;QAC7C,KAAK,YAAY,CAAC,CAAE,OAAO,WAAW,CAAC,IAAI,CAAC,CAAC;IAC/C,CAAC;AACH,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,CAAS;IACjC,IAAI,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC;QAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAC/C,IAAI,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC;QAAE,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;IACzD,OAAO,CAAC,GAAG,GAAG,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,MAAgB;IAC/C,wEAAwE;IACxE,8EAA8E;IAC9E,4EAA4E;IAC5E,+EAA+E;IAC/E,kDAAkD;IAClD,MAAM,MAAM,GAAG,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"naming.js","sourceRoot":"","sources":["../src/naming.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parser-core.d.ts","sourceRoot":"","sources":["../src/parser-core.ts"],"names":[],"mappings":"AAyBA,OAAO,EAAU,YAAY,EAAE,MAAM,eAAe,CAAC;AAErD,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAGjD,OAAO,EAAE,UAAU,EAAkB,MAAM,aAAa,CAAC;AACzD,OAAO,EAAkB,KAAK,WAAW,EAAE,KAAK,aAAa,EAAoB,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"parser-core.d.ts","sourceRoot":"","sources":["../src/parser-core.ts"],"names":[],"mappings":"AAyBA,OAAO,EAAU,YAAY,EAAE,MAAM,eAAe,CAAC;AAErD,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAGjD,OAAO,EAAE,UAAU,EAAkB,MAAM,aAAa,CAAC;AACzD,OAAO,EAAkB,KAAK,WAAW,EAAE,KAAK,aAAa,EAAoB,MAAM,aAAa,CAAC;AAoCrG,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,YAAY,CAAC;IACvB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;;;OAMG;IACH,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB;;;;;;;OAOG;IACH,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B;;;;;OAKG;IACH,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CAChC;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,QAAQ,CAAC;IACf,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,MAAM,EAAE,UAAU,EAAE,CAAC;IACrB;;;;;;OAMG;IACH,gBAAgB,EAAE,aAAa,EAAE,CAAC;CACnC;AAYD,wBAAgB,SAAS,IAAI,WAAW,CAuBvC;AAmLD;;;;;;;;;;GAUG;AACH,wBAAgB,SAAS,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,YAAY,GAAG,WAAW,CA8I1E"}
|