@metaobjectsdev/metadata 0.9.0 → 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
|
@@ -13,9 +13,20 @@ export const ATTR_SUBTYPE_DOUBLE = "double";
|
|
|
13
13
|
export const ATTR_SUBTYPE_BOOLEAN = "boolean";
|
|
14
14
|
export const ATTR_SUBTYPE_CLASS = "class";
|
|
15
15
|
export const ATTR_SUBTYPE_PROPERTIES = "properties";
|
|
16
|
-
export const ATTR_SUBTYPE_STRINGARRAY = "stringarray";
|
|
17
16
|
export const ATTR_SUBTYPE_FILTER = "filter";
|
|
18
17
|
|
|
18
|
+
/**
|
|
19
|
+
* The retired `stringarray` array attr subtype. It is NO LONGER a registered
|
|
20
|
+
* `(attr, subType)` — array-ness is modeled as a `string` attr with the
|
|
21
|
+
* orthogonal `isArray` flag (matching Java's `StringAttribute + @isArray`), so
|
|
22
|
+
* `stringarray` never appears in the registry manifest. The constant survives
|
|
23
|
+
* ONLY as the key into the attr-class-map for the array-coercion class
|
|
24
|
+
* (`StringArrayAttr`, the bare-string → one-element-array coercion), which the
|
|
25
|
+
* loader resolves for any `isArray`-flagged attr. It is intentionally NOT in
|
|
26
|
+
* `ATTR_SUBTYPES`.
|
|
27
|
+
*/
|
|
28
|
+
export const ATTR_SUBTYPE_STRINGARRAY = "stringarray";
|
|
29
|
+
|
|
19
30
|
export const ATTR_SUBTYPES = [
|
|
20
31
|
SUBTYPE_BASE,
|
|
21
32
|
ATTR_SUBTYPE_STRING,
|
|
@@ -25,7 +36,8 @@ export const ATTR_SUBTYPES = [
|
|
|
25
36
|
ATTR_SUBTYPE_BOOLEAN,
|
|
26
37
|
ATTR_SUBTYPE_CLASS,
|
|
27
38
|
ATTR_SUBTYPE_PROPERTIES,
|
|
28
|
-
ATTR_SUBTYPE_STRINGARRAY,
|
|
29
39
|
ATTR_SUBTYPE_FILTER,
|
|
30
40
|
] as const;
|
|
31
|
-
export type AttrSubType =
|
|
41
|
+
export type AttrSubType =
|
|
42
|
+
| (typeof ATTR_SUBTYPES)[number]
|
|
43
|
+
| typeof ATTR_SUBTYPE_STRINGARRAY;
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
// AUTO-GENERATED by scripts/generate-embedded-metamodel.ts — DO NOT EDIT.
|
|
2
|
+
// Canonical source: repo-root spec/metamodel/attr.json
|
|
3
|
+
// Regenerate: bun run scripts/generate-embedded-metamodel.ts
|
|
4
|
+
//
|
|
5
|
+
// Embeds the canonical FR-033 ProviderDefinition so the provider can register
|
|
6
|
+
// itself wherever the on-disk spec/ tree is unavailable (bundled builds).
|
|
7
|
+
import type { ProviderDefinition } from "../../provider-data.js";
|
|
8
|
+
|
|
9
|
+
export const ATTR_DEFINITION: ProviderDefinition = {
|
|
10
|
+
"provider": "metaobjects-core-types",
|
|
11
|
+
"types": [
|
|
12
|
+
{
|
|
13
|
+
"type": "attr",
|
|
14
|
+
"subType": "base",
|
|
15
|
+
"dataType": "string",
|
|
16
|
+
"description": "Abstract base attribute — the polymorphic/unconstrained value-type marker. Stores its value type-preserved (never stringified), accepting any type; used for an untyped attr (e.g. a field's @default, whose value-type follows the owning field's subtype)."
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
"type": "attr",
|
|
20
|
+
"subType": "string",
|
|
21
|
+
"dataType": "string",
|
|
22
|
+
"description": "A string-valued metadata attribute. Coerces to and validates as text; the default value-type for inline @-syntax attrs (array-of-string is the same subtype with isArray)."
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
"type": "attr",
|
|
26
|
+
"subType": "int",
|
|
27
|
+
"dataType": "int",
|
|
28
|
+
"description": "A 32-bit-integer-valued metadata attribute. Coerces to and validates as a number."
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
"type": "attr",
|
|
32
|
+
"subType": "long",
|
|
33
|
+
"dataType": "long",
|
|
34
|
+
"description": "A 64-bit-integer-valued metadata attribute. Coerces to and validates as a number."
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
"type": "attr",
|
|
38
|
+
"subType": "double",
|
|
39
|
+
"dataType": "double",
|
|
40
|
+
"description": "A double-precision floating-point-valued metadata attribute. Coerces to and validates as a number."
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
"type": "attr",
|
|
44
|
+
"subType": "boolean",
|
|
45
|
+
"dataType": "boolean",
|
|
46
|
+
"description": "A boolean-valued metadata attribute. Coerces to and validates as true/false."
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
"type": "attr",
|
|
50
|
+
"subType": "class",
|
|
51
|
+
"dataType": "string",
|
|
52
|
+
"description": "A class-/type-reference-valued metadata attribute. String-backed (a fully-qualified class or type name) used by binding facets."
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
"type": "attr",
|
|
56
|
+
"subType": "properties",
|
|
57
|
+
"dataType": "object",
|
|
58
|
+
"description": "A key/value map attribute (a bag of arbitrary author-supplied properties). Object-shaped value; the registered escape hatch for author-supplied properties (exempt from the strict-attr check, ADR-0023)."
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
"type": "attr",
|
|
62
|
+
"subType": "filter",
|
|
63
|
+
"dataType": "object",
|
|
64
|
+
"description": "A filter-expression-valued metadata attribute. Object-shaped value that desugars a preset filter to the canonical { field: { op: value } } form (scalar→eq, array→in, null→isNull; or/and recurse)."
|
|
65
|
+
}
|
|
66
|
+
]
|
|
67
|
+
};
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
// the serializer per ADR-0006.
|
|
3
3
|
|
|
4
4
|
export const DOC_ATTR_DESCRIPTION = "description";
|
|
5
|
+
export const DOC_ATTR_SUMMARY = "summary";
|
|
5
6
|
export const DOC_ATTR_TITLE = "title";
|
|
6
7
|
export const DOC_ATTR_NOTES = "notes";
|
|
7
8
|
export const DOC_ATTR_DEPRECATED = "deprecated";
|
|
@@ -9,9 +10,10 @@ export const DOC_ATTR_REPLACED_BY = "replacedBy";
|
|
|
9
10
|
export const DOC_ATTR_SEE_ALSO = "seeAlso";
|
|
10
11
|
export const DOC_ATTR_ALIASES = "aliases";
|
|
11
12
|
|
|
12
|
-
/** All
|
|
13
|
+
/** All 8 documentation common-attr names in declaration order. */
|
|
13
14
|
export const DOC_ATTR_NAMES = [
|
|
14
15
|
DOC_ATTR_DESCRIPTION,
|
|
16
|
+
DOC_ATTR_SUMMARY,
|
|
15
17
|
DOC_ATTR_TITLE,
|
|
16
18
|
DOC_ATTR_NOTES,
|
|
17
19
|
DOC_ATTR_DEPRECATED,
|
|
@@ -1,12 +1,16 @@
|
|
|
1
1
|
import type { MetaDataTypeProvider } from "../../provider.js";
|
|
2
2
|
import type { TypeRegistry } from "../../registry.js";
|
|
3
|
-
import {
|
|
3
|
+
import { applyProviderDefinition } from "../../provider-data.js";
|
|
4
|
+
import { DOCUMENTATION_DEFINITION } from "./documentation-definition.embedded.js";
|
|
4
5
|
|
|
5
6
|
export const docProvider: MetaDataTypeProvider = {
|
|
6
7
|
id: "metaobjects-documentation",
|
|
7
8
|
dependencies: ["metaobjects-core-types"],
|
|
8
9
|
description: "Universal documentation common attrs (description / title / notes / deprecated / replacedBy / seeAlso / aliases) accepted on every metatype.",
|
|
9
10
|
registerTypes(registry: TypeRegistry): void {
|
|
10
|
-
|
|
11
|
+
// FR-033 — the unified apply path: documentation's universal `*.*` entry
|
|
12
|
+
// carries the doc attrs, which `applyProviderDefinition` routes to
|
|
13
|
+
// `registry.registerCommonAttrs(...)`. No documentation-specific helper.
|
|
14
|
+
applyProviderDefinition(registry, DOCUMENTATION_DEFINITION, {});
|
|
11
15
|
},
|
|
12
16
|
};
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
// AUTO-GENERATED by scripts/generate-embedded-metamodel.ts — DO NOT EDIT.
|
|
2
|
+
// Canonical source: repo-root spec/metamodel/documentation.json
|
|
3
|
+
// Regenerate: bun run scripts/generate-embedded-metamodel.ts
|
|
4
|
+
//
|
|
5
|
+
// Embeds the canonical FR-033 ProviderDefinition so the provider can register
|
|
6
|
+
// itself wherever the on-disk spec/ tree is unavailable (bundled builds).
|
|
7
|
+
import type { ProviderDefinition } from "../../provider-data.js";
|
|
8
|
+
|
|
9
|
+
export const DOCUMENTATION_DEFINITION: ProviderDefinition = {
|
|
10
|
+
"provider": "metaobjects-documentation",
|
|
11
|
+
"types": [
|
|
12
|
+
{
|
|
13
|
+
"type": "*",
|
|
14
|
+
"subType": "*",
|
|
15
|
+
"description": "Universal documentation common attrs — accepted on EVERY metatype (registered as common attrs, NOT per-type). The named attr children below are the documentation vocabulary.",
|
|
16
|
+
"children": [
|
|
17
|
+
{
|
|
18
|
+
"type": "attr",
|
|
19
|
+
"subType": "string",
|
|
20
|
+
"name": "description",
|
|
21
|
+
"min": 0,
|
|
22
|
+
"max": 1,
|
|
23
|
+
"description": "Free-form user-facing prose. Markdown allowed, multi-line via YAML '|' block scalar. Flows into doc-gen surfaces (JSDoc / XML-doc / Postgres COMMENT / Mermaid prose)."
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
"type": "attr",
|
|
27
|
+
"subType": "string",
|
|
28
|
+
"name": "summary",
|
|
29
|
+
"min": 0,
|
|
30
|
+
"max": 1,
|
|
31
|
+
"description": "Short single-line tagline (OpenAPI `summary` pattern) — used in index tables, sidebar previews, and AI prompts where the full @description is too long. Optional supplement to @description; when @summary is unset, doc surfaces typically fall back to the first sentence of @description."
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
"type": "attr",
|
|
35
|
+
"subType": "string",
|
|
36
|
+
"name": "title",
|
|
37
|
+
"min": 0,
|
|
38
|
+
"max": 1,
|
|
39
|
+
"description": "Short single-line human label (e.g. 'Email' for a `field.string email`). Optional supplement to description."
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
"type": "attr",
|
|
43
|
+
"subType": "string",
|
|
44
|
+
"name": "notes",
|
|
45
|
+
"min": 0,
|
|
46
|
+
"max": 1,
|
|
47
|
+
"description": "Internal-only rationale. Stays in metadata; never emitted to user-facing docs."
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
"type": "attr",
|
|
51
|
+
"subType": "string",
|
|
52
|
+
"name": "deprecated",
|
|
53
|
+
"min": 0,
|
|
54
|
+
"max": 1,
|
|
55
|
+
"description": "Text reason for deprecation. Presence ⇒ deprecated. Codegen emits @deprecated / [Obsolete] with this reason."
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
"type": "attr",
|
|
59
|
+
"subType": "string",
|
|
60
|
+
"name": "replacedBy",
|
|
61
|
+
"min": 0,
|
|
62
|
+
"max": 1,
|
|
63
|
+
"description": "FQN reference to the replacement element. Only meaningful with `deprecated`. Codegen appends 'Replaced by <ref>' to deprecation messages."
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
"type": "attr",
|
|
67
|
+
"subType": "string",
|
|
68
|
+
"name": "seeAlso",
|
|
69
|
+
"min": 0,
|
|
70
|
+
"max": 1,
|
|
71
|
+
"isArray": true,
|
|
72
|
+
"description": "External documentation URLs. Codegen emits @see / <seealso href=...>."
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
"type": "attr",
|
|
76
|
+
"subType": "string",
|
|
77
|
+
"name": "aliases",
|
|
78
|
+
"min": 0,
|
|
79
|
+
"max": 1,
|
|
80
|
+
"isArray": true,
|
|
81
|
+
"description": "Alternate names for this element. Aids AI authoring disambiguation, search, migration."
|
|
82
|
+
}
|
|
83
|
+
]
|
|
84
|
+
}
|
|
85
|
+
]
|
|
86
|
+
};
|
|
@@ -3,13 +3,11 @@
|
|
|
3
3
|
import { SUBTYPE_BASE } from "../../shared/base-types.js";
|
|
4
4
|
|
|
5
5
|
// ---------------------------------------------------------------------------
|
|
6
|
-
// Field subtypes (
|
|
6
|
+
// Field subtypes (14)
|
|
7
7
|
// ---------------------------------------------------------------------------
|
|
8
8
|
|
|
9
9
|
export const FIELD_SUBTYPE_STRING = "string";
|
|
10
10
|
export const FIELD_SUBTYPE_INT = "int";
|
|
11
|
-
export const FIELD_SUBTYPE_SHORT = "short";
|
|
12
|
-
export const FIELD_SUBTYPE_BYTE = "byte";
|
|
13
11
|
export const FIELD_SUBTYPE_LONG = "long";
|
|
14
12
|
export const FIELD_SUBTYPE_DOUBLE = "double";
|
|
15
13
|
export const FIELD_SUBTYPE_FLOAT = "float";
|
|
@@ -19,7 +17,6 @@ export const FIELD_SUBTYPE_DATE = "date";
|
|
|
19
17
|
export const FIELD_SUBTYPE_TIME = "time";
|
|
20
18
|
export const FIELD_SUBTYPE_TIMESTAMP = "timestamp";
|
|
21
19
|
export const FIELD_SUBTYPE_OBJECT = "object";
|
|
22
|
-
export const FIELD_SUBTYPE_CLASS = "class";
|
|
23
20
|
export const FIELD_SUBTYPE_CURRENCY = "currency";
|
|
24
21
|
export const FIELD_SUBTYPE_ENUM = "enum";
|
|
25
22
|
/** R6 Plan 2a: logical UUID identity scalar. Bare scalar (no required attrs, no
|
|
@@ -31,8 +28,6 @@ export const FIELD_SUBTYPES = [
|
|
|
31
28
|
SUBTYPE_BASE,
|
|
32
29
|
FIELD_SUBTYPE_STRING,
|
|
33
30
|
FIELD_SUBTYPE_INT,
|
|
34
|
-
FIELD_SUBTYPE_SHORT,
|
|
35
|
-
FIELD_SUBTYPE_BYTE,
|
|
36
31
|
FIELD_SUBTYPE_LONG,
|
|
37
32
|
FIELD_SUBTYPE_DOUBLE,
|
|
38
33
|
FIELD_SUBTYPE_FLOAT,
|
|
@@ -42,7 +37,6 @@ export const FIELD_SUBTYPES = [
|
|
|
42
37
|
FIELD_SUBTYPE_TIME,
|
|
43
38
|
FIELD_SUBTYPE_TIMESTAMP,
|
|
44
39
|
FIELD_SUBTYPE_OBJECT,
|
|
45
|
-
FIELD_SUBTYPE_CLASS,
|
|
46
40
|
FIELD_SUBTYPE_CURRENCY,
|
|
47
41
|
FIELD_SUBTYPE_ENUM,
|
|
48
42
|
FIELD_SUBTYPE_UUID,
|
|
@@ -129,6 +123,13 @@ export const FIELD_ATTR_VALUES = "values";
|
|
|
129
123
|
*/
|
|
130
124
|
export const ENUM_MEMBER_PATTERN = /^[A-Za-z_][A-Za-z0-9_]*$/;
|
|
131
125
|
|
|
126
|
+
/** FR-019: marks a named-type declaration (an abstract package-level field.enum)
|
|
127
|
+
* as externally PROVIDED — codegen references the type instead of materializing
|
|
128
|
+
* it. Optional boolean, default false; meaningful only on an abstract (declaration)
|
|
129
|
+
* field.enum (a concrete consuming field does not carry it). Per ADR-0026, no
|
|
130
|
+
* per-port namespace lives in metadata — the reference target is codegen config. */
|
|
131
|
+
export const FIELD_ATTR_PROVIDED = "provided";
|
|
132
|
+
|
|
132
133
|
/** FR-010: map of off-vocabulary token → canonical enum member, feeding the
|
|
133
134
|
* tolerant extract alias-fold. `properties`-shaped; only on field.enum. */
|
|
134
135
|
export const FIELD_ATTR_ENUM_ALIAS = "enumAlias";
|
|
@@ -0,0 +1,243 @@
|
|
|
1
|
+
// AUTO-GENERATED by scripts/generate-embedded-metamodel.ts — DO NOT EDIT.
|
|
2
|
+
// Canonical source: repo-root spec/metamodel/field.json
|
|
3
|
+
// Regenerate: bun run scripts/generate-embedded-metamodel.ts
|
|
4
|
+
//
|
|
5
|
+
// Embeds the canonical FR-033 ProviderDefinition so the provider can register
|
|
6
|
+
// itself wherever the on-disk spec/ tree is unavailable (bundled builds).
|
|
7
|
+
import type { ProviderDefinition } from "../../provider-data.js";
|
|
8
|
+
|
|
9
|
+
export const FIELD_DEFINITION: ProviderDefinition = {
|
|
10
|
+
"provider": "metaobjects-core-types",
|
|
11
|
+
"types": [
|
|
12
|
+
{
|
|
13
|
+
"type": "field",
|
|
14
|
+
"subType": "base",
|
|
15
|
+
"dataType": "string",
|
|
16
|
+
"description": "Abstract base field — the shared root subtype that concrete field subtypes specialize. Carries the attrs common to every field but binds no concrete data type of its own (falls back to string).",
|
|
17
|
+
"children": [
|
|
18
|
+
{
|
|
19
|
+
"type": "validator",
|
|
20
|
+
"subType": "*",
|
|
21
|
+
"name": "*",
|
|
22
|
+
"min": 0,
|
|
23
|
+
"max": null
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
"type": "view",
|
|
27
|
+
"subType": "*",
|
|
28
|
+
"name": "*",
|
|
29
|
+
"min": 0,
|
|
30
|
+
"max": null
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
"type": "origin",
|
|
34
|
+
"subType": "*",
|
|
35
|
+
"name": "*",
|
|
36
|
+
"min": 0,
|
|
37
|
+
"max": null
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
"type": "attr",
|
|
41
|
+
"subType": "boolean",
|
|
42
|
+
"name": "required",
|
|
43
|
+
"min": 0,
|
|
44
|
+
"max": 1,
|
|
45
|
+
"description": "When true, the field is NOT NULL. Equivalent to attaching a validator.required child."
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
"type": "attr",
|
|
49
|
+
"subType": "boolean",
|
|
50
|
+
"name": "readOnly",
|
|
51
|
+
"min": 0,
|
|
52
|
+
"max": 1,
|
|
53
|
+
"description": "FR-013: when true, the field is read-only — codegen emits no setter / writable property, the persistence layer skips the column on INSERT/UPDATE, and Zod/Pydantic/class-validator schemas mark it read-only on input variants. The value is populated by the database (computed column, default expression, trigger), by replication, or by another external owner."
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
"type": "attr",
|
|
57
|
+
"name": "default",
|
|
58
|
+
"min": 0,
|
|
59
|
+
"max": 1,
|
|
60
|
+
"description": "Default value applied to the column when no value is supplied. Its type follows the field's own subtype (string / boolean / number / ...). Converted at consumption time via MetaField.defaultValue()."
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
"type": "attr",
|
|
64
|
+
"subType": "boolean",
|
|
65
|
+
"name": "unique",
|
|
66
|
+
"min": 0,
|
|
67
|
+
"max": 1,
|
|
68
|
+
"description": "When true, the field gets a column-level UNIQUE constraint."
|
|
69
|
+
}
|
|
70
|
+
]
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
"type": "field",
|
|
74
|
+
"subType": "string",
|
|
75
|
+
"dataType": "string",
|
|
76
|
+
"extendsBase": true,
|
|
77
|
+
"description": "Variable-length text. Binds to the native string type; DB column is VARCHAR/TEXT (use @maxLength for VARCHAR(n)).",
|
|
78
|
+
"children": [
|
|
79
|
+
{
|
|
80
|
+
"type": "attr",
|
|
81
|
+
"subType": "int",
|
|
82
|
+
"name": "maxLength",
|
|
83
|
+
"min": 0,
|
|
84
|
+
"max": 1,
|
|
85
|
+
"description": "Maximum character length for string-typed fields (drives VARCHAR(n))."
|
|
86
|
+
}
|
|
87
|
+
]
|
|
88
|
+
},
|
|
89
|
+
{
|
|
90
|
+
"type": "field",
|
|
91
|
+
"subType": "int",
|
|
92
|
+
"dataType": "int",
|
|
93
|
+
"extendsBase": true,
|
|
94
|
+
"description": "32-bit signed integer. Binds to the native int type; DB column is INTEGER."
|
|
95
|
+
},
|
|
96
|
+
{
|
|
97
|
+
"type": "field",
|
|
98
|
+
"subType": "long",
|
|
99
|
+
"dataType": "long",
|
|
100
|
+
"extendsBase": true,
|
|
101
|
+
"description": "64-bit signed integer. Binds to the native long/bigint type; DB column is BIGINT."
|
|
102
|
+
},
|
|
103
|
+
{
|
|
104
|
+
"type": "field",
|
|
105
|
+
"subType": "double",
|
|
106
|
+
"dataType": "double",
|
|
107
|
+
"extendsBase": true,
|
|
108
|
+
"description": "Double-precision (64-bit) IEEE-754 floating point. Binds to the native double/number type; DB column is DOUBLE PRECISION. Not for money — use field.currency or field.decimal."
|
|
109
|
+
},
|
|
110
|
+
{
|
|
111
|
+
"type": "field",
|
|
112
|
+
"subType": "float",
|
|
113
|
+
"dataType": "double",
|
|
114
|
+
"extendsBase": true,
|
|
115
|
+
"description": "Single-precision floating point. Binds to the native double/number type (TS has no distinct float); DB column is REAL. Not for money."
|
|
116
|
+
},
|
|
117
|
+
{
|
|
118
|
+
"type": "field",
|
|
119
|
+
"subType": "decimal",
|
|
120
|
+
"dataType": "string",
|
|
121
|
+
"extendsBase": true,
|
|
122
|
+
"description": "Precision-exact decimal (use @precision/@scale). Native TS binding is string (lossless); DB column is NUMERIC(p,s); the wire form is a string. Classified DATA_TYPE_STRING so an exact decimal is never silently rounded through a double.",
|
|
123
|
+
"rules": "The wire and native-TS form is a STRING to stay precision-exact end-to-end (Drizzle pg numeric infers as string; SP-H/ADR-0019). Set @precision (total significant digits) and @scale (digits right of the point) to drive NUMERIC(p,s).",
|
|
124
|
+
"children": [
|
|
125
|
+
{
|
|
126
|
+
"type": "attr",
|
|
127
|
+
"subType": "int",
|
|
128
|
+
"name": "precision",
|
|
129
|
+
"min": 0,
|
|
130
|
+
"max": 1,
|
|
131
|
+
"description": "Total number of significant digits for decimal-typed fields."
|
|
132
|
+
},
|
|
133
|
+
{
|
|
134
|
+
"type": "attr",
|
|
135
|
+
"subType": "int",
|
|
136
|
+
"name": "scale",
|
|
137
|
+
"min": 0,
|
|
138
|
+
"max": 1,
|
|
139
|
+
"description": "Number of digits to the right of the decimal point for decimal-typed fields."
|
|
140
|
+
}
|
|
141
|
+
]
|
|
142
|
+
},
|
|
143
|
+
{
|
|
144
|
+
"type": "field",
|
|
145
|
+
"subType": "boolean",
|
|
146
|
+
"dataType": "boolean",
|
|
147
|
+
"extendsBase": true,
|
|
148
|
+
"description": "True/false flag. Binds to the native boolean type; DB column is BOOLEAN."
|
|
149
|
+
},
|
|
150
|
+
{
|
|
151
|
+
"type": "field",
|
|
152
|
+
"subType": "date",
|
|
153
|
+
"dataType": "date",
|
|
154
|
+
"extendsBase": true,
|
|
155
|
+
"description": "Calendar date (no time-of-day). Binds to the native date/temporal type; DB column is DATE."
|
|
156
|
+
},
|
|
157
|
+
{
|
|
158
|
+
"type": "field",
|
|
159
|
+
"subType": "time",
|
|
160
|
+
"dataType": "date",
|
|
161
|
+
"extendsBase": true,
|
|
162
|
+
"description": "Time-of-day (no calendar date). Binds to the native date/temporal type; DB column is TIME."
|
|
163
|
+
},
|
|
164
|
+
{
|
|
165
|
+
"type": "field",
|
|
166
|
+
"subType": "timestamp",
|
|
167
|
+
"dataType": "date",
|
|
168
|
+
"extendsBase": true,
|
|
169
|
+
"description": "Date + time-of-day instant (optionally with timezone). Binds to the native date/temporal type; DB column is TIMESTAMP(TZ). Pair with @autoSet for created/updated stamping."
|
|
170
|
+
},
|
|
171
|
+
{
|
|
172
|
+
"type": "field",
|
|
173
|
+
"subType": "object",
|
|
174
|
+
"dataType": "object",
|
|
175
|
+
"extendsBase": true,
|
|
176
|
+
"description": "A nested structured value (set @objectRef to the target object). Storage is governed by @storage: flattened (prefixed columns), jsonb (single jsonb column, supports isArray), or subdocument (document-store hint).",
|
|
177
|
+
"rules": "Set @objectRef to the nested object's name (or FQN). @storage selects physical layout — flattened expands into prefixed parent columns (isArray must be false), jsonb stores the structured value (or array when isArray=true) in one jsonb column, subdocument emits no Postgres column. Defaults to single-jsonb-column when @storage is absent.",
|
|
178
|
+
"children": [
|
|
179
|
+
{
|
|
180
|
+
"type": "attr",
|
|
181
|
+
"subType": "string",
|
|
182
|
+
"name": "objectRef",
|
|
183
|
+
"min": 0,
|
|
184
|
+
"max": 1,
|
|
185
|
+
"description": "Name (or FQN) of the target object an object-typed field nests — drives nested-object (de)serialization."
|
|
186
|
+
}
|
|
187
|
+
]
|
|
188
|
+
},
|
|
189
|
+
{
|
|
190
|
+
"type": "field",
|
|
191
|
+
"subType": "currency",
|
|
192
|
+
"dataType": "long",
|
|
193
|
+
"extendsBase": true,
|
|
194
|
+
"description": "Stores money as integer minor units (cents). Binds to long; the client formats via @currency/@locale. Float arithmetic for money is forbidden.",
|
|
195
|
+
"rules": "Storage is integer minor units (cents for USD, yen for JPY) — the wire form is unchanged from long. The server never formats currency; all formatting is client-side via Intl.NumberFormat using @currency (ISO 4217) and @locale (BCP 47). Float arithmetic for money is forbidden.",
|
|
196
|
+
"children": [
|
|
197
|
+
{
|
|
198
|
+
"type": "attr",
|
|
199
|
+
"subType": "string",
|
|
200
|
+
"name": "currency",
|
|
201
|
+
"min": 0,
|
|
202
|
+
"max": 1,
|
|
203
|
+
"default": "USD",
|
|
204
|
+
"description": "ISO 4217 currency code for a currency-subtype field. Storage is integer minor units; defaults to 'USD' when omitted."
|
|
205
|
+
}
|
|
206
|
+
]
|
|
207
|
+
},
|
|
208
|
+
{
|
|
209
|
+
"type": "field",
|
|
210
|
+
"subType": "enum",
|
|
211
|
+
"dataType": "string",
|
|
212
|
+
"extendsBase": true,
|
|
213
|
+
"description": "String-backed enumeration constrained to a closed set of member symbols (@values). Each member is its own stored string with no name/value divergence.",
|
|
214
|
+
"rules": "Required @values is a non-empty, duplicate-free set; each member must match ^[A-Za-z_][A-Za-z0-9_]*$ so symbol == stored string in every target language. Optional FR-010/FR-011 overlays add tolerant-extract aliasing (@enumAlias), per-member docs (@enumDoc), an uncoercible-value fallback (@coerceDefault, must be one of @values), and ASCII normalization mode (@normalize).",
|
|
215
|
+
"children": [
|
|
216
|
+
{
|
|
217
|
+
"type": "attr",
|
|
218
|
+
"subType": "string",
|
|
219
|
+
"name": "values",
|
|
220
|
+
"isArray": true,
|
|
221
|
+
"min": 1,
|
|
222
|
+
"max": 1,
|
|
223
|
+
"description": "Member symbols of an enum-subtype field. Declaration order is significant; each is a legal identifier and its own stored string."
|
|
224
|
+
},
|
|
225
|
+
{
|
|
226
|
+
"type": "attr",
|
|
227
|
+
"subType": "boolean",
|
|
228
|
+
"name": "provided",
|
|
229
|
+
"min": 0,
|
|
230
|
+
"max": 1,
|
|
231
|
+
"description": "FR-019: marks an abstract package-level field.enum as externally provided — codegen references the type (resolved via per-port codegen config) instead of materializing it. Default false. Not a field attr — it lives on the type declaration."
|
|
232
|
+
}
|
|
233
|
+
]
|
|
234
|
+
},
|
|
235
|
+
{
|
|
236
|
+
"type": "field",
|
|
237
|
+
"subType": "uuid",
|
|
238
|
+
"dataType": "string",
|
|
239
|
+
"extendsBase": true,
|
|
240
|
+
"description": "Logical UUID identity scalar. A bare scalar (no required attrs, no loader value-validation) — binds to TS string (no native UUID type); DB column is Postgres-native uuid."
|
|
241
|
+
}
|
|
242
|
+
]
|
|
243
|
+
};
|
|
@@ -19,10 +19,7 @@ import { convertToDataType } from "../../data-converter.js";
|
|
|
19
19
|
import { TYPE_VALIDATOR, TYPE_VIEW, SUBTYPE_BASE } from "../../shared/base-types.js";
|
|
20
20
|
import {
|
|
21
21
|
FIELD_SUBTYPE_STRING,
|
|
22
|
-
FIELD_SUBTYPE_CLASS,
|
|
23
22
|
FIELD_SUBTYPE_INT,
|
|
24
|
-
FIELD_SUBTYPE_SHORT,
|
|
25
|
-
FIELD_SUBTYPE_BYTE,
|
|
26
23
|
FIELD_SUBTYPE_LONG,
|
|
27
24
|
FIELD_SUBTYPE_CURRENCY,
|
|
28
25
|
FIELD_SUBTYPE_DOUBLE,
|
|
@@ -54,18 +51,20 @@ import { ValueObject } from "../object/value-object.js";
|
|
|
54
51
|
const FIELD_DATA_TYPE: Readonly<Record<string, DataType>> = {
|
|
55
52
|
[SUBTYPE_BASE]: DATA_TYPE_STRING,
|
|
56
53
|
[FIELD_SUBTYPE_STRING]: DATA_TYPE_STRING,
|
|
57
|
-
[FIELD_SUBTYPE_CLASS]: DATA_TYPE_STRING,
|
|
58
54
|
// field.uuid binds to TS `string` (no native UUID type) — DATA_TYPE_STRING.
|
|
59
55
|
[FIELD_SUBTYPE_UUID]: DATA_TYPE_STRING,
|
|
60
56
|
[FIELD_SUBTYPE_INT]: DATA_TYPE_INT,
|
|
61
|
-
[FIELD_SUBTYPE_SHORT]: DATA_TYPE_INT,
|
|
62
|
-
[FIELD_SUBTYPE_BYTE]: DATA_TYPE_INT,
|
|
63
57
|
[FIELD_SUBTYPE_LONG]: DATA_TYPE_LONG,
|
|
64
58
|
[FIELD_SUBTYPE_CURRENCY]: DATA_TYPE_LONG,
|
|
65
59
|
[FIELD_SUBTYPE_ENUM]: DATA_TYPE_STRING,
|
|
66
60
|
[FIELD_SUBTYPE_DOUBLE]: DATA_TYPE_DOUBLE,
|
|
67
61
|
[FIELD_SUBTYPE_FLOAT]: DATA_TYPE_DOUBLE,
|
|
68
|
-
|
|
62
|
+
// field.decimal is precision-exact: the native TS binding is `string` (Drizzle
|
|
63
|
+
// pg `numeric` infers as `string`; SP-H/ADR-0019), the DB column is numeric(p,s),
|
|
64
|
+
// and the wire form is a STRING. Classifying it DATA_TYPE_DOUBLE would route
|
|
65
|
+
// @default/coerce through toDouble() and silently round an exact decimal
|
|
66
|
+
// (e.g. "12345678901234.5678"). DATA_TYPE_STRING keeps it lossless end-to-end.
|
|
67
|
+
[FIELD_SUBTYPE_DECIMAL]: DATA_TYPE_STRING,
|
|
69
68
|
[FIELD_SUBTYPE_BOOLEAN]: DATA_TYPE_BOOLEAN,
|
|
70
69
|
[FIELD_SUBTYPE_DATE]: DATA_TYPE_DATE,
|
|
71
70
|
[FIELD_SUBTYPE_TIME]: DATA_TYPE_DATE,
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
// AUTO-GENERATED by scripts/generate-embedded-metamodel.ts — DO NOT EDIT.
|
|
2
|
+
// Canonical source: repo-root spec/metamodel/identity.json
|
|
3
|
+
// Regenerate: bun run scripts/generate-embedded-metamodel.ts
|
|
4
|
+
//
|
|
5
|
+
// Embeds the canonical FR-033 ProviderDefinition so the provider can register
|
|
6
|
+
// itself wherever the on-disk spec/ tree is unavailable (bundled builds).
|
|
7
|
+
import type { ProviderDefinition } from "../../provider-data.js";
|
|
8
|
+
|
|
9
|
+
export const IDENTITY_DEFINITION: ProviderDefinition = {
|
|
10
|
+
"provider": "metaobjects-core-types",
|
|
11
|
+
"types": [
|
|
12
|
+
{
|
|
13
|
+
"type": "identity",
|
|
14
|
+
"subType": "primary",
|
|
15
|
+
"description": "The primary key — one per entity; @fields names its column(s), @generation the value strategy.",
|
|
16
|
+
"children": [
|
|
17
|
+
{
|
|
18
|
+
"type": "attr",
|
|
19
|
+
"subType": "string",
|
|
20
|
+
"name": "fields",
|
|
21
|
+
"isArray": true,
|
|
22
|
+
"min": 1,
|
|
23
|
+
"max": 1,
|
|
24
|
+
"description": "The field name(s) composing this identity. Single-element for a simple PK/index, multiple for a composite."
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
"type": "attr",
|
|
28
|
+
"subType": "string",
|
|
29
|
+
"name": "generation",
|
|
30
|
+
"min": 0,
|
|
31
|
+
"max": 1,
|
|
32
|
+
"allowedValues": [
|
|
33
|
+
"increment",
|
|
34
|
+
"uuid",
|
|
35
|
+
"assigned"
|
|
36
|
+
],
|
|
37
|
+
"description": "Primary-key value generation strategy: 'increment' (auto-increment), 'uuid', or 'assigned' (caller-supplied)."
|
|
38
|
+
}
|
|
39
|
+
]
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
"type": "identity",
|
|
43
|
+
"subType": "secondary",
|
|
44
|
+
"description": "A secondary index (unique by default via @unique).",
|
|
45
|
+
"children": [
|
|
46
|
+
{
|
|
47
|
+
"type": "attr",
|
|
48
|
+
"subType": "string",
|
|
49
|
+
"name": "fields",
|
|
50
|
+
"isArray": true,
|
|
51
|
+
"min": 1,
|
|
52
|
+
"max": 1,
|
|
53
|
+
"description": "The field name(s) composing this identity. Single-element for a simple PK/index, multiple for a composite."
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
"type": "attr",
|
|
57
|
+
"subType": "boolean",
|
|
58
|
+
"name": "unique",
|
|
59
|
+
"min": 0,
|
|
60
|
+
"max": 1,
|
|
61
|
+
"description": "When true (default), the secondary identity is a UNIQUE index; false makes it a plain (non-unique) index."
|
|
62
|
+
}
|
|
63
|
+
]
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
"type": "identity",
|
|
67
|
+
"subType": "reference",
|
|
68
|
+
"description": "A foreign-key reference to another entity (@references target; @enforce toggles a physical FK).",
|
|
69
|
+
"children": [
|
|
70
|
+
{
|
|
71
|
+
"type": "attr",
|
|
72
|
+
"subType": "string",
|
|
73
|
+
"name": "fields",
|
|
74
|
+
"isArray": true,
|
|
75
|
+
"min": 1,
|
|
76
|
+
"max": 1,
|
|
77
|
+
"description": "The field name(s) composing this identity. Single-element for a simple PK/index, multiple for a composite."
|
|
78
|
+
},
|
|
79
|
+
{
|
|
80
|
+
"type": "attr",
|
|
81
|
+
"subType": "string",
|
|
82
|
+
"name": "references",
|
|
83
|
+
"min": 1,
|
|
84
|
+
"max": 1,
|
|
85
|
+
"description": "Target of the reference. Bare entity name (e.g. 'Program') resolves to that entity's primary identity. Dotted forms ('Program.id' or 'Program.fieldA,fieldB') target an explicit field set on the entity."
|
|
86
|
+
},
|
|
87
|
+
{
|
|
88
|
+
"type": "attr",
|
|
89
|
+
"subType": "boolean",
|
|
90
|
+
"name": "enforce",
|
|
91
|
+
"min": 0,
|
|
92
|
+
"max": 1,
|
|
93
|
+
"description": "When true (default), the backend physically enforces the reference (SQL FK constraint, document validation rule, graph edge guarantee). Set false to declare a logical reference for navigation/typing/codegen only — the value may dangle at the backend level."
|
|
94
|
+
}
|
|
95
|
+
]
|
|
96
|
+
}
|
|
97
|
+
]
|
|
98
|
+
};
|