@metaobjectsdev/metadata 0.5.0 → 0.6.0-rc.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/attr-schema-validate.d.ts.map +1 -1
- package/dist/attr-schema-validate.js +66 -11
- package/dist/attr-schema-validate.js.map +1 -1
- package/dist/core/documentation/doc-constants.d.ts +11 -0
- package/dist/core/documentation/doc-constants.d.ts.map +1 -0
- package/dist/core/documentation/doc-constants.js +20 -0
- package/dist/core/documentation/doc-constants.js.map +1 -0
- package/dist/core/documentation/doc-provider.d.ts +3 -0
- package/dist/core/documentation/doc-provider.d.ts.map +1 -0
- package/dist/core/documentation/doc-provider.js +10 -0
- package/dist/core/documentation/doc-provider.js.map +1 -0
- package/dist/core/documentation/doc-schema.d.ts +8 -0
- package/dist/core/documentation/doc-schema.d.ts.map +1 -0
- package/dist/core/documentation/doc-schema.js +53 -0
- package/dist/core/documentation/doc-schema.js.map +1 -0
- package/dist/core/field/field-constants.d.ts +25 -1
- package/dist/core/field/field-constants.d.ts.map +1 -1
- package/dist/core/field/field-constants.js +32 -1
- package/dist/core/field/field-constants.js.map +1 -1
- package/dist/core/field/field-schema.d.ts +2 -0
- package/dist/core/field/field-schema.d.ts.map +1 -1
- package/dist/core/field/field-schema.js +20 -2
- package/dist/core/field/field-schema.js.map +1 -1
- package/dist/core/field/meta-field.d.ts +2 -1
- package/dist/core/field/meta-field.d.ts.map +1 -1
- package/dist/core/field/meta-field.js +6 -4
- package/dist/core/field/meta-field.js.map +1 -1
- package/dist/core/object/meta-object.d.ts.map +1 -1
- package/dist/core/object/meta-object.js +6 -5
- package/dist/core/object/meta-object.js.map +1 -1
- package/dist/core/parser-yaml.d.ts.map +1 -1
- package/dist/core/parser-yaml.js +9 -2
- package/dist/core/parser-yaml.js.map +1 -1
- package/dist/core/relationship/meta-relationship.d.ts +4 -0
- package/dist/core/relationship/meta-relationship.d.ts.map +1 -1
- package/dist/core/relationship/meta-relationship.js +11 -1
- package/dist/core/relationship/meta-relationship.js.map +1 -1
- package/dist/core/relationship/relationship-constants.d.ts +9 -0
- package/dist/core/relationship/relationship-constants.d.ts.map +1 -1
- package/dist/core/relationship/relationship-constants.js +15 -0
- package/dist/core/relationship/relationship-constants.js.map +1 -1
- package/dist/core/relationship/relationship-schema.d.ts.map +1 -1
- package/dist/core/relationship/relationship-schema.js +15 -1
- package/dist/core/relationship/relationship-schema.js.map +1 -1
- package/dist/core/yaml-desugar.d.ts +8 -1
- package/dist/core/yaml-desugar.d.ts.map +1 -1
- package/dist/core/yaml-desugar.js +166 -15
- package/dist/core/yaml-desugar.js.map +1 -1
- package/dist/core-types.d.ts.map +1 -1
- package/dist/core-types.js +28 -11
- package/dist/core-types.js.map +1 -1
- package/dist/errors.d.ts +1 -1
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +21 -0
- package/dist/errors.js.map +1 -1
- package/dist/index.d.ts +6 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -1
- package/dist/index.js.map +1 -1
- package/dist/loader/meta-data-loader.d.ts.map +1 -1
- package/dist/loader/meta-data-loader.js +12 -1
- package/dist/loader/meta-data-loader.js.map +1 -1
- package/dist/loader/validation-passes.d.ts +2 -0
- package/dist/loader/validation-passes.d.ts.map +1 -1
- package/dist/loader/validation-passes.js +69 -3
- package/dist/loader/validation-passes.js.map +1 -1
- package/dist/naming.d.ts +3 -2
- package/dist/naming.d.ts.map +1 -1
- package/dist/naming.js +14 -12
- package/dist/naming.js.map +1 -1
- package/dist/parser-core.d.ts.map +1 -1
- package/dist/parser-core.js +91 -48
- package/dist/parser-core.js.map +1 -1
- package/dist/persistence/db/db-constants.d.ts +2 -2
- package/dist/persistence/db/db-constants.d.ts.map +1 -1
- package/dist/persistence/db/db-constants.js +2 -2
- package/dist/persistence/db/db-constants.js.map +1 -1
- package/dist/persistence/db/db-provider.d.ts.map +1 -1
- package/dist/persistence/db/db-provider.js +10 -13
- package/dist/persistence/db/db-provider.js.map +1 -1
- package/dist/persistence/db/db-schema.d.ts +2 -4
- package/dist/persistence/db/db-schema.d.ts.map +1 -1
- package/dist/persistence/db/db-schema.js +5 -13
- package/dist/persistence/db/db-schema.js.map +1 -1
- package/dist/persistence/origin/meta-origin.d.ts +10 -0
- package/dist/persistence/origin/meta-origin.d.ts.map +1 -1
- package/dist/persistence/origin/meta-origin.js +14 -1
- package/dist/persistence/origin/meta-origin.js.map +1 -1
- package/dist/persistence/origin/origin-constants.d.ts +3 -1
- package/dist/persistence/origin/origin-constants.d.ts.map +1 -1
- package/dist/persistence/origin/origin-constants.js +6 -0
- package/dist/persistence/origin/origin-constants.js.map +1 -1
- package/dist/persistence/origin/origin-schema.d.ts +1 -1
- package/dist/persistence/origin/origin-schema.d.ts.map +1 -1
- package/dist/persistence/origin/origin-schema.js +12 -2
- package/dist/persistence/origin/origin-schema.js.map +1 -1
- package/dist/persistence/source/meta-source.d.ts +11 -9
- package/dist/persistence/source/meta-source.d.ts.map +1 -1
- package/dist/persistence/source/meta-source.js +23 -15
- package/dist/persistence/source/meta-source.js.map +1 -1
- package/dist/persistence/source/source-constants.d.ts +32 -11
- package/dist/persistence/source/source-constants.d.ts.map +1 -1
- package/dist/persistence/source/source-constants.js +55 -16
- package/dist/persistence/source/source-constants.js.map +1 -1
- package/dist/persistence/source/source-schema.d.ts +4 -0
- package/dist/persistence/source/source-schema.d.ts.map +1 -0
- package/dist/persistence/source/source-schema.js +37 -0
- package/dist/persistence/source/source-schema.js.map +1 -0
- package/dist/persistence/source/validate-source-roles.d.ts +12 -0
- package/dist/persistence/source/validate-source-roles.d.ts.map +1 -0
- package/dist/persistence/source/validate-source-roles.js +38 -0
- package/dist/persistence/source/validate-source-roles.js.map +1 -0
- package/dist/registry.d.ts +13 -0
- package/dist/registry.d.ts.map +1 -1
- package/dist/registry.js +26 -0
- package/dist/registry.js.map +1 -1
- package/dist/shared/base-types.d.ts +2 -1
- package/dist/shared/base-types.d.ts.map +1 -1
- package/dist/shared/base-types.js +5 -2
- package/dist/shared/base-types.js.map +1 -1
- package/dist/template/meta-template.d.ts +13 -0
- package/dist/template/meta-template.d.ts.map +1 -0
- package/dist/template/meta-template.js +13 -0
- package/dist/template/meta-template.js.map +1 -0
- package/dist/template/template-constants.d.ts +17 -0
- package/dist/template/template-constants.d.ts.map +1 -0
- package/dist/template/template-constants.js +46 -0
- package/dist/template/template-constants.js.map +1 -0
- package/dist/template/template-schema.d.ts +3 -0
- package/dist/template/template-schema.d.ts.map +1 -0
- package/dist/template/template-schema.js +84 -0
- package/dist/template/template-schema.js.map +1 -0
- package/package.json +1 -1
- package/src/attr-schema-validate.ts +89 -9
- package/src/core/documentation/doc-constants.ts +22 -0
- package/src/core/documentation/doc-provider.ts +12 -0
- package/src/core/documentation/doc-schema.ts +64 -0
- package/src/core/field/field-constants.ts +41 -1
- package/src/core/field/field-schema.ts +25 -0
- package/src/core/field/meta-field.ts +6 -3
- package/src/core/object/meta-object.ts +6 -6
- package/src/core/parser-yaml.ts +11 -3
- package/src/core/relationship/meta-relationship.ts +14 -0
- package/src/core/relationship/relationship-constants.ts +20 -0
- package/src/core/relationship/relationship-schema.ts +18 -0
- package/src/core/yaml-desugar.ts +206 -24
- package/src/core-types.ts +31 -9
- package/src/errors.ts +21 -0
- package/src/index.ts +7 -0
- package/src/loader/meta-data-loader.ts +15 -1
- package/src/loader/validation-passes.ts +98 -1
- package/src/naming.ts +15 -13
- package/src/parser-core.ts +119 -73
- package/src/persistence/db/db-constants.ts +2 -2
- package/src/persistence/db/db-provider.ts +10 -16
- package/src/persistence/db/db-schema.ts +5 -15
- package/src/persistence/origin/meta-origin.ts +15 -0
- package/src/persistence/origin/origin-constants.ts +7 -0
- package/src/persistence/origin/origin-schema.ts +15 -1
- package/src/persistence/source/meta-source.ts +30 -17
- package/src/persistence/source/source-constants.ts +66 -17
- package/src/persistence/source/source-schema.ts +54 -0
- package/src/persistence/source/validate-source-roles.ts +53 -0
- package/src/registry.ts +31 -0
- package/src/shared/base-types.ts +5 -2
- package/src/template/meta-template.ts +12 -0
- package/src/template/template-constants.ts +53 -0
- package/src/template/template-schema.ts +106 -0
|
@@ -1,18 +1,20 @@
|
|
|
1
1
|
import { MetaData } from "../../shared/meta-data.js";
|
|
2
2
|
export declare class MetaSource extends MetaData {
|
|
3
|
-
/**
|
|
4
|
-
get
|
|
3
|
+
/** Physical SQL table/view name from @table (source.rdb). */
|
|
4
|
+
get tableName(): string | undefined;
|
|
5
5
|
/**
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
* correct if a third source subtype is added in the future.
|
|
6
|
+
* The effective kind for this source: the value of `@kind`, defaulting to
|
|
7
|
+
* `"table"` when omitted (ADR-0007 Rule 3 — per-paradigm default).
|
|
9
8
|
*/
|
|
10
|
-
|
|
9
|
+
get effectiveKind(): string;
|
|
10
|
+
/** The multi-source role for this source (defaults to "primary" when omitted). */
|
|
11
|
+
get role(): string;
|
|
11
12
|
/**
|
|
12
|
-
* True when this source
|
|
13
|
-
*
|
|
14
|
-
* correct if a third source subtype is added in the future.
|
|
13
|
+
* True when this source's effective kind is read-only (view, materializedView,
|
|
14
|
+
* storedProc, tableFunction). Derived from the @kind attr on source.rdb.
|
|
15
15
|
*/
|
|
16
16
|
isReadOnly(): boolean;
|
|
17
|
+
/** True when this source is writable (i.e. not read-only). */
|
|
18
|
+
isWritable(): boolean;
|
|
17
19
|
}
|
|
18
20
|
//# sourceMappingURL=meta-source.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"meta-source.d.ts","sourceRoot":"","sources":["../../../src/persistence/source/meta-source.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"meta-source.d.ts","sourceRoot":"","sources":["../../../src/persistence/source/meta-source.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAUrD,qBAAa,UAAW,SAAQ,QAAQ;IACtC,6DAA6D;IAC7D,IAAI,SAAS,IAAI,MAAM,GAAG,SAAS,CAGlC;IAED;;;OAGG;IACH,IAAI,aAAa,IAAI,MAAM,CAG1B;IAED,kFAAkF;IAClF,IAAI,IAAI,IAAI,MAAM,CAGjB;IAED;;;OAGG;IACH,UAAU,IAAI,OAAO;IAIrB,8DAA8D;IAC9D,UAAU,IAAI,OAAO;CAGtB"}
|
|
@@ -1,31 +1,39 @@
|
|
|
1
1
|
// MetaSource — concrete node class for type=source nodes.
|
|
2
2
|
// Declares where an object's data lives (Project E).
|
|
3
|
-
//
|
|
3
|
+
// source.rdb uses @table/@kind/@role/@schema; read-only is derived from @kind.
|
|
4
4
|
//
|
|
5
5
|
// Extends MetaData directly: no model wrapper, no metaOf() indirection.
|
|
6
6
|
import { MetaData } from "../../shared/meta-data.js";
|
|
7
|
-
import {
|
|
7
|
+
import { SOURCE_ATTR_TABLE, SOURCE_ATTR_KIND, SOURCE_ATTR_ROLE, SOURCE_READ_ONLY_KINDS, DEFAULT_SOURCE_KIND, DEFAULT_SOURCE_ROLE, } from "./source-constants.js";
|
|
8
8
|
export class MetaSource extends MetaData {
|
|
9
|
-
/**
|
|
10
|
-
get
|
|
11
|
-
const v = this.ownAttr(
|
|
12
|
-
return typeof v === "string" ? v : undefined;
|
|
9
|
+
/** Physical SQL table/view name from @table (source.rdb). */
|
|
10
|
+
get tableName() {
|
|
11
|
+
const v = this.ownAttr(SOURCE_ATTR_TABLE);
|
|
12
|
+
return typeof v === "string" && v !== "" ? v : undefined;
|
|
13
13
|
}
|
|
14
14
|
/**
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
* correct if a third source subtype is added in the future.
|
|
15
|
+
* The effective kind for this source: the value of `@kind`, defaulting to
|
|
16
|
+
* `"table"` when omitted (ADR-0007 Rule 3 — per-paradigm default).
|
|
18
17
|
*/
|
|
19
|
-
|
|
20
|
-
|
|
18
|
+
get effectiveKind() {
|
|
19
|
+
const v = this.ownAttr(SOURCE_ATTR_KIND);
|
|
20
|
+
return typeof v === "string" && v !== "" ? v : DEFAULT_SOURCE_KIND;
|
|
21
|
+
}
|
|
22
|
+
/** The multi-source role for this source (defaults to "primary" when omitted). */
|
|
23
|
+
get role() {
|
|
24
|
+
const v = this.ownAttr(SOURCE_ATTR_ROLE);
|
|
25
|
+
return typeof v === "string" && v !== "" ? v : DEFAULT_SOURCE_ROLE;
|
|
21
26
|
}
|
|
22
27
|
/**
|
|
23
|
-
* True when this source
|
|
24
|
-
*
|
|
25
|
-
* correct if a third source subtype is added in the future.
|
|
28
|
+
* True when this source's effective kind is read-only (view, materializedView,
|
|
29
|
+
* storedProc, tableFunction). Derived from the @kind attr on source.rdb.
|
|
26
30
|
*/
|
|
27
31
|
isReadOnly() {
|
|
28
|
-
return this.
|
|
32
|
+
return SOURCE_READ_ONLY_KINDS.has(this.effectiveKind);
|
|
33
|
+
}
|
|
34
|
+
/** True when this source is writable (i.e. not read-only). */
|
|
35
|
+
isWritable() {
|
|
36
|
+
return !this.isReadOnly();
|
|
29
37
|
}
|
|
30
38
|
}
|
|
31
39
|
//# sourceMappingURL=meta-source.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"meta-source.js","sourceRoot":"","sources":["../../../src/persistence/source/meta-source.ts"],"names":[],"mappings":"AAAA,0DAA0D;AAC1D,qDAAqD;AACrD
|
|
1
|
+
{"version":3,"file":"meta-source.js","sourceRoot":"","sources":["../../../src/persistence/source/meta-source.ts"],"names":[],"mappings":"AAAA,0DAA0D;AAC1D,qDAAqD;AACrD,+EAA+E;AAC/E,EAAE;AACF,wEAAwE;AAExE,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AACrD,OAAO,EACL,iBAAiB,EACjB,gBAAgB,EAChB,gBAAgB,EAChB,sBAAsB,EACtB,mBAAmB,EACnB,mBAAmB,GACpB,MAAM,uBAAuB,CAAC;AAE/B,MAAM,OAAO,UAAW,SAAQ,QAAQ;IACtC,6DAA6D;IAC7D,IAAI,SAAS;QACX,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;QAC1C,OAAO,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC3D,CAAC;IAED;;;OAGG;IACH,IAAI,aAAa;QACf,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;QACzC,OAAO,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC;IACrE,CAAC;IAED,kFAAkF;IAClF,IAAI,IAAI;QACN,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;QACzC,OAAO,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC;IACrE,CAAC;IAED;;;OAGG;IACH,UAAU;QACR,OAAO,sBAAsB,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IACxD,CAAC;IAED,8DAA8D;IAC9D,UAAU;QACR,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;IAC5B,CAAC;CACF"}
|
|
@@ -1,16 +1,37 @@
|
|
|
1
|
-
export declare const
|
|
2
|
-
export declare const
|
|
3
|
-
export declare const SOURCE_SUBTYPES: readonly ["base", "dbTable", "dbView"];
|
|
1
|
+
export declare const SOURCE_SUBTYPE_RDB = "rdb";
|
|
2
|
+
export declare const SOURCE_SUBTYPES: readonly ["base", "rdb"];
|
|
4
3
|
export type SourceSubType = (typeof SOURCE_SUBTYPES)[number];
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
* in generic source accessors instead of the subtype-specific aliases above. */
|
|
9
|
-
export declare const SOURCE_ATTR_NAME = "name";
|
|
10
|
-
/** Optional DB schema attr on source[dbTable] / source[dbView]. Postgres uses
|
|
11
|
-
* this to namespace tables/views. SQLite has no schema concept and rejects
|
|
12
|
-
* any non-default value. Default for Postgres: "public". */
|
|
4
|
+
/** Optional DB schema attr on source.rdb. Postgres uses this to namespace
|
|
5
|
+
* tables/views. SQLite has no schema concept and rejects any non-default
|
|
6
|
+
* value. Default for Postgres: "public". */
|
|
13
7
|
export declare const SOURCE_ATTR_SCHEMA = "schema";
|
|
14
8
|
/** Default Postgres schema when @schema is omitted from a source. */
|
|
15
9
|
export declare const DEFAULT_DB_SCHEMA_POSTGRES = "public";
|
|
10
|
+
/** Physical table/view name on source.rdb. */
|
|
11
|
+
export declare const SOURCE_ATTR_TABLE = "table";
|
|
12
|
+
/** Object kind within the rdb paradigm; read-only-ness is derived from it. */
|
|
13
|
+
export declare const SOURCE_ATTR_KIND = "kind";
|
|
14
|
+
/** Multi-source role; exactly one primary per object. */
|
|
15
|
+
export declare const SOURCE_ATTR_ROLE = "role";
|
|
16
|
+
export declare const SOURCE_KIND_TABLE = "table";
|
|
17
|
+
export declare const SOURCE_KIND_VIEW = "view";
|
|
18
|
+
export declare const SOURCE_KIND_MATERIALIZED_VIEW = "materializedView";
|
|
19
|
+
export declare const SOURCE_KIND_STORED_PROC = "storedProc";
|
|
20
|
+
export declare const SOURCE_KIND_TABLE_FUNCTION = "tableFunction";
|
|
21
|
+
export declare const SOURCE_RDB_KINDS: readonly ["table", "view", "materializedView", "storedProc", "tableFunction"];
|
|
22
|
+
export type SourceRdbKind = (typeof SOURCE_RDB_KINDS)[number];
|
|
23
|
+
/** rdb @kind default when omitted (writable table). */
|
|
24
|
+
export declare const DEFAULT_SOURCE_KIND = "table";
|
|
25
|
+
/** Kinds whose source is read-only (codegen emits read-only model/queries/routes). */
|
|
26
|
+
export declare const SOURCE_READ_ONLY_KINDS: ReadonlySet<string>;
|
|
27
|
+
export declare const SOURCE_ROLE_PRIMARY = "primary";
|
|
28
|
+
export declare const SOURCE_ROLE_REPLICA = "replica";
|
|
29
|
+
export declare const SOURCE_ROLE_INDEX = "index";
|
|
30
|
+
export declare const SOURCE_ROLE_CACHE = "cache";
|
|
31
|
+
export declare const SOURCE_ROLE_PUBLISH = "publish";
|
|
32
|
+
export declare const SOURCE_ROLE_MIRROR = "mirror";
|
|
33
|
+
export declare const SOURCE_ROLES: readonly ["primary", "replica", "index", "cache", "publish", "mirror"];
|
|
34
|
+
export type SourceRole = (typeof SOURCE_ROLES)[number];
|
|
35
|
+
/** Role when @role is omitted (system of record). */
|
|
36
|
+
export declare const DEFAULT_SOURCE_ROLE = "primary";
|
|
16
37
|
//# sourceMappingURL=source-constants.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"source-constants.d.ts","sourceRoot":"","sources":["../../../src/persistence/source/source-constants.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"source-constants.d.ts","sourceRoot":"","sources":["../../../src/persistence/source/source-constants.ts"],"names":[],"mappings":"AAYA,eAAO,MAAM,kBAAkB,QAAQ,CAAC;AAExC,eAAO,MAAM,eAAe,0BAGlB,CAAC;AACX,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,eAAe,CAAC,CAAC,MAAM,CAAC,CAAC;AAE7D;;6CAE6C;AAC7C,eAAO,MAAM,kBAAkB,WAAW,CAAC;AAE3C,qEAAqE;AACrE,eAAO,MAAM,0BAA0B,WAAW,CAAC;AAMnD,8CAA8C;AAC9C,eAAO,MAAM,iBAAiB,UAAU,CAAC;AACzC,8EAA8E;AAC9E,eAAO,MAAM,gBAAgB,SAAS,CAAC;AACvC,yDAAyD;AACzD,eAAO,MAAM,gBAAgB,SAAS,CAAC;AAEvC,eAAO,MAAM,iBAAiB,UAAuB,CAAC;AACtD,eAAO,MAAM,gBAAgB,SAAuB,CAAC;AACrD,eAAO,MAAM,6BAA6B,qBAAsB,CAAC;AACjE,eAAO,MAAM,uBAAuB,eAAsB,CAAC;AAC3D,eAAO,MAAM,0BAA0B,kBAAsB,CAAC;AAE9D,eAAO,MAAM,gBAAgB,+EAMnB,CAAC;AACX,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,gBAAgB,CAAC,CAAC,MAAM,CAAC,CAAC;AAE9D,uDAAuD;AACvD,eAAO,MAAM,mBAAmB,UAAoB,CAAC;AAErD,sFAAsF;AACtF,eAAO,MAAM,sBAAsB,EAAE,WAAW,CAAC,MAAM,CAKrD,CAAC;AAEH,eAAO,MAAM,mBAAmB,YAAY,CAAC;AAC7C,eAAO,MAAM,mBAAmB,YAAY,CAAC;AAC7C,eAAO,MAAM,iBAAiB,UAAY,CAAC;AAC3C,eAAO,MAAM,iBAAiB,UAAY,CAAC;AAC3C,eAAO,MAAM,mBAAmB,YAAY,CAAC;AAC7C,eAAO,MAAM,kBAAkB,WAAY,CAAC;AAE5C,eAAO,MAAM,YAAY,wEAOf,CAAC;AACX,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC;AAEvD,qDAAqD;AACrD,eAAO,MAAM,mBAAmB,YAAsB,CAAC"}
|
|
@@ -2,27 +2,66 @@
|
|
|
2
2
|
import { SUBTYPE_BASE } from "../../shared/base-types.js";
|
|
3
3
|
// ---------------------------------------------------------------------------
|
|
4
4
|
// Source type — declares where an object's data lives (Project E).
|
|
5
|
-
//
|
|
6
|
-
// and meaningful (write-through CQRS:
|
|
5
|
+
// source.rdb (ADR-0007): paradigm subtype + @table/@kind/@role/@schema attrs.
|
|
6
|
+
// Multiple sources per object are allowed and meaningful (write-through CQRS:
|
|
7
|
+
// writable rdb[table] for writes + read-only rdb[view] for reads).
|
|
7
8
|
// ---------------------------------------------------------------------------
|
|
8
|
-
|
|
9
|
-
export const
|
|
9
|
+
// --- Source v2 (ADR-0007): paradigm subtype "rdb"; physical name @table; @kind + @role. ---
|
|
10
|
+
export const SOURCE_SUBTYPE_RDB = "rdb";
|
|
10
11
|
export const SOURCE_SUBTYPES = [
|
|
11
12
|
SUBTYPE_BASE,
|
|
12
|
-
|
|
13
|
-
SOURCE_SUBTYPE_DB_VIEW,
|
|
13
|
+
SOURCE_SUBTYPE_RDB,
|
|
14
14
|
];
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
export const SOURCE_DB_VIEW_ATTR_NAME = "name";
|
|
19
|
-
/** Shared @name attr key for MetaSource (covers both dbTable and dbView). Use this
|
|
20
|
-
* in generic source accessors instead of the subtype-specific aliases above. */
|
|
21
|
-
export const SOURCE_ATTR_NAME = "name";
|
|
22
|
-
/** Optional DB schema attr on source[dbTable] / source[dbView]. Postgres uses
|
|
23
|
-
* this to namespace tables/views. SQLite has no schema concept and rejects
|
|
24
|
-
* any non-default value. Default for Postgres: "public". */
|
|
15
|
+
/** Optional DB schema attr on source.rdb. Postgres uses this to namespace
|
|
16
|
+
* tables/views. SQLite has no schema concept and rejects any non-default
|
|
17
|
+
* value. Default for Postgres: "public". */
|
|
25
18
|
export const SOURCE_ATTR_SCHEMA = "schema";
|
|
26
19
|
/** Default Postgres schema when @schema is omitted from a source. */
|
|
27
20
|
export const DEFAULT_DB_SCHEMA_POSTGRES = "public";
|
|
21
|
+
// ---------------------------------------------------------------------------
|
|
22
|
+
// Source v2 (ADR-0007) — rdb paradigm: kind, role, physical table name.
|
|
23
|
+
// ---------------------------------------------------------------------------
|
|
24
|
+
/** Physical table/view name on source.rdb. */
|
|
25
|
+
export const SOURCE_ATTR_TABLE = "table";
|
|
26
|
+
/** Object kind within the rdb paradigm; read-only-ness is derived from it. */
|
|
27
|
+
export const SOURCE_ATTR_KIND = "kind";
|
|
28
|
+
/** Multi-source role; exactly one primary per object. */
|
|
29
|
+
export const SOURCE_ATTR_ROLE = "role";
|
|
30
|
+
export const SOURCE_KIND_TABLE = "table";
|
|
31
|
+
export const SOURCE_KIND_VIEW = "view";
|
|
32
|
+
export const SOURCE_KIND_MATERIALIZED_VIEW = "materializedView";
|
|
33
|
+
export const SOURCE_KIND_STORED_PROC = "storedProc";
|
|
34
|
+
export const SOURCE_KIND_TABLE_FUNCTION = "tableFunction";
|
|
35
|
+
export const SOURCE_RDB_KINDS = [
|
|
36
|
+
SOURCE_KIND_TABLE,
|
|
37
|
+
SOURCE_KIND_VIEW,
|
|
38
|
+
SOURCE_KIND_MATERIALIZED_VIEW,
|
|
39
|
+
SOURCE_KIND_STORED_PROC,
|
|
40
|
+
SOURCE_KIND_TABLE_FUNCTION,
|
|
41
|
+
];
|
|
42
|
+
/** rdb @kind default when omitted (writable table). */
|
|
43
|
+
export const DEFAULT_SOURCE_KIND = SOURCE_KIND_TABLE;
|
|
44
|
+
/** Kinds whose source is read-only (codegen emits read-only model/queries/routes). */
|
|
45
|
+
export const SOURCE_READ_ONLY_KINDS = new Set([
|
|
46
|
+
SOURCE_KIND_VIEW,
|
|
47
|
+
SOURCE_KIND_MATERIALIZED_VIEW,
|
|
48
|
+
SOURCE_KIND_STORED_PROC,
|
|
49
|
+
SOURCE_KIND_TABLE_FUNCTION,
|
|
50
|
+
]);
|
|
51
|
+
export const SOURCE_ROLE_PRIMARY = "primary";
|
|
52
|
+
export const SOURCE_ROLE_REPLICA = "replica";
|
|
53
|
+
export const SOURCE_ROLE_INDEX = "index";
|
|
54
|
+
export const SOURCE_ROLE_CACHE = "cache";
|
|
55
|
+
export const SOURCE_ROLE_PUBLISH = "publish";
|
|
56
|
+
export const SOURCE_ROLE_MIRROR = "mirror";
|
|
57
|
+
export const SOURCE_ROLES = [
|
|
58
|
+
SOURCE_ROLE_PRIMARY,
|
|
59
|
+
SOURCE_ROLE_REPLICA,
|
|
60
|
+
SOURCE_ROLE_INDEX,
|
|
61
|
+
SOURCE_ROLE_CACHE,
|
|
62
|
+
SOURCE_ROLE_PUBLISH,
|
|
63
|
+
SOURCE_ROLE_MIRROR,
|
|
64
|
+
];
|
|
65
|
+
/** Role when @role is omitted (system of record). */
|
|
66
|
+
export const DEFAULT_SOURCE_ROLE = SOURCE_ROLE_PRIMARY;
|
|
28
67
|
//# sourceMappingURL=source-constants.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"source-constants.js","sourceRoot":"","sources":["../../../src/persistence/source/source-constants.ts"],"names":[],"mappings":"AAAA,kFAAkF;AAElF,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAE1D,8EAA8E;AAC9E,mEAAmE;AACnE,
|
|
1
|
+
{"version":3,"file":"source-constants.js","sourceRoot":"","sources":["../../../src/persistence/source/source-constants.ts"],"names":[],"mappings":"AAAA,kFAAkF;AAElF,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAE1D,8EAA8E;AAC9E,mEAAmE;AACnE,8EAA8E;AAC9E,8EAA8E;AAC9E,mEAAmE;AACnE,8EAA8E;AAE9E,6FAA6F;AAC7F,MAAM,CAAC,MAAM,kBAAkB,GAAG,KAAK,CAAC;AAExC,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,YAAY;IACZ,kBAAkB;CACV,CAAC;AAGX;;6CAE6C;AAC7C,MAAM,CAAC,MAAM,kBAAkB,GAAG,QAAQ,CAAC;AAE3C,qEAAqE;AACrE,MAAM,CAAC,MAAM,0BAA0B,GAAG,QAAQ,CAAC;AAEnD,8EAA8E;AAC9E,wEAAwE;AACxE,8EAA8E;AAE9E,8CAA8C;AAC9C,MAAM,CAAC,MAAM,iBAAiB,GAAG,OAAO,CAAC;AACzC,8EAA8E;AAC9E,MAAM,CAAC,MAAM,gBAAgB,GAAG,MAAM,CAAC;AACvC,yDAAyD;AACzD,MAAM,CAAC,MAAM,gBAAgB,GAAG,MAAM,CAAC;AAEvC,MAAM,CAAC,MAAM,iBAAiB,GAAgB,OAAO,CAAC;AACtD,MAAM,CAAC,MAAM,gBAAgB,GAAiB,MAAM,CAAC;AACrD,MAAM,CAAC,MAAM,6BAA6B,GAAI,kBAAkB,CAAC;AACjE,MAAM,CAAC,MAAM,uBAAuB,GAAU,YAAY,CAAC;AAC3D,MAAM,CAAC,MAAM,0BAA0B,GAAO,eAAe,CAAC;AAE9D,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,iBAAiB;IACjB,gBAAgB;IAChB,6BAA6B;IAC7B,uBAAuB;IACvB,0BAA0B;CAClB,CAAC;AAGX,uDAAuD;AACvD,MAAM,CAAC,MAAM,mBAAmB,GAAG,iBAAiB,CAAC;AAErD,sFAAsF;AACtF,MAAM,CAAC,MAAM,sBAAsB,GAAwB,IAAI,GAAG,CAAC;IACjE,gBAAgB;IAChB,6BAA6B;IAC7B,uBAAuB;IACvB,0BAA0B;CAC3B,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,mBAAmB,GAAG,SAAS,CAAC;AAC7C,MAAM,CAAC,MAAM,mBAAmB,GAAG,SAAS,CAAC;AAC7C,MAAM,CAAC,MAAM,iBAAiB,GAAK,OAAO,CAAC;AAC3C,MAAM,CAAC,MAAM,iBAAiB,GAAK,OAAO,CAAC;AAC3C,MAAM,CAAC,MAAM,mBAAmB,GAAG,SAAS,CAAC;AAC7C,MAAM,CAAC,MAAM,kBAAkB,GAAI,QAAQ,CAAC;AAE5C,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,mBAAmB;IACnB,mBAAmB;IACnB,iBAAiB;IACjB,iBAAiB;IACjB,mBAAmB;IACnB,kBAAkB;CACV,CAAC;AAGX,qDAAqD;AACrD,MAAM,CAAC,MAAM,mBAAmB,GAAG,mBAAmB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"source-schema.d.ts","sourceRoot":"","sources":["../../../src/persistence/source/source-schema.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAiDpD,6EAA6E;AAC7E,eAAO,MAAM,cAAc,EAAE,UAAU,EAAwD,CAAC"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
// Source v2 attribute schemas — registered by dbProvider for source.rdb.
|
|
2
|
+
// Consumed via sourceRdbAttrs in db-provider.ts.
|
|
3
|
+
import { ATTR_SUBTYPE_STRING } from "../../core/attr/attr-constants.js";
|
|
4
|
+
import { SOURCE_ATTR_TABLE, SOURCE_ATTR_KIND, SOURCE_ATTR_ROLE, SOURCE_ATTR_SCHEMA, SOURCE_RDB_KINDS, SOURCE_ROLES, } from "./source-constants.js";
|
|
5
|
+
/** `@table` — physical SQL table or view name for source.rdb. */
|
|
6
|
+
const tableSchema = {
|
|
7
|
+
name: SOURCE_ATTR_TABLE,
|
|
8
|
+
valueType: ATTR_SUBTYPE_STRING,
|
|
9
|
+
required: false,
|
|
10
|
+
description: "Physical SQL table or view name for this rdb source. Defaults to the object name run through the project's columnNamingStrategy when omitted.",
|
|
11
|
+
};
|
|
12
|
+
/** `@kind` — object kind within the rdb paradigm; drives read-only derivation. */
|
|
13
|
+
const kindSchema = {
|
|
14
|
+
name: SOURCE_ATTR_KIND,
|
|
15
|
+
valueType: ATTR_SUBTYPE_STRING,
|
|
16
|
+
required: false,
|
|
17
|
+
allowedValues: [...SOURCE_RDB_KINDS],
|
|
18
|
+
description: "The kind of database object this source represents: table (default, writable), view, materializedView, storedProc, or tableFunction. Non-table kinds are read-only.",
|
|
19
|
+
};
|
|
20
|
+
/** `@role` — multi-source role; exactly one primary per object. */
|
|
21
|
+
const roleSchema = {
|
|
22
|
+
name: SOURCE_ATTR_ROLE,
|
|
23
|
+
valueType: ATTR_SUBTYPE_STRING,
|
|
24
|
+
required: false,
|
|
25
|
+
allowedValues: [...SOURCE_ROLES],
|
|
26
|
+
description: "Role this source plays when an object has multiple sources: primary (default, system of record), replica, index, cache, publish, or mirror.",
|
|
27
|
+
};
|
|
28
|
+
/** `@schema` — optional DB schema namespace for this source. */
|
|
29
|
+
const schemaSchema = {
|
|
30
|
+
name: SOURCE_ATTR_SCHEMA,
|
|
31
|
+
valueType: ATTR_SUBTYPE_STRING,
|
|
32
|
+
required: false,
|
|
33
|
+
description: "Optional database schema name (e.g. 'catalog', 'public'). Postgres defaults to 'public'; SQLite rejects any non-default value.",
|
|
34
|
+
};
|
|
35
|
+
/** All attr schemas for source.rdb, to be registered via registry.extend. */
|
|
36
|
+
export const sourceRdbAttrs = [tableSchema, kindSchema, roleSchema, schemaSchema];
|
|
37
|
+
//# sourceMappingURL=source-schema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"source-schema.js","sourceRoot":"","sources":["../../../src/persistence/source/source-schema.ts"],"names":[],"mappings":"AAAA,yEAAyE;AACzE,iDAAiD;AAGjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AACxE,OAAO,EACL,iBAAiB,EACjB,gBAAgB,EAChB,gBAAgB,EAChB,kBAAkB,EAClB,gBAAgB,EAChB,YAAY,GACb,MAAM,uBAAuB,CAAC;AAE/B,iEAAiE;AACjE,MAAM,WAAW,GAAe;IAC9B,IAAI,EAAE,iBAAiB;IACvB,SAAS,EAAE,mBAAmB;IAC9B,QAAQ,EAAE,KAAK;IACf,WAAW,EACT,+IAA+I;CAClJ,CAAC;AAEF,kFAAkF;AAClF,MAAM,UAAU,GAAe;IAC7B,IAAI,EAAE,gBAAgB;IACtB,SAAS,EAAE,mBAAmB;IAC9B,QAAQ,EAAE,KAAK;IACf,aAAa,EAAE,CAAC,GAAG,gBAAgB,CAAC;IACpC,WAAW,EACT,qKAAqK;CACxK,CAAC;AAEF,mEAAmE;AACnE,MAAM,UAAU,GAAe;IAC7B,IAAI,EAAE,gBAAgB;IACtB,SAAS,EAAE,mBAAmB;IAC9B,QAAQ,EAAE,KAAK;IACf,aAAa,EAAE,CAAC,GAAG,YAAY,CAAC;IAChC,WAAW,EACT,6IAA6I;CAChJ,CAAC;AAEF,gEAAgE;AAChE,MAAM,YAAY,GAAe;IAC/B,IAAI,EAAE,kBAAkB;IACxB,SAAS,EAAE,mBAAmB;IAC9B,QAAQ,EAAE,KAAK;IACf,WAAW,EACT,gIAAgI;CACnI,CAAC;AAEF,6EAA6E;AAC7E,MAAM,CAAC,MAAM,cAAc,GAAiB,CAAC,WAAW,EAAE,UAAU,EAAE,UAAU,EAAE,YAAY,CAAC,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { MetaData } from "../../shared/meta-data.js";
|
|
2
|
+
import { ParseError } from "../../errors.js";
|
|
3
|
+
/**
|
|
4
|
+
* Walks every object in the root and enforces the one-primary rule for
|
|
5
|
+
* multi-source objects:
|
|
6
|
+
* - 0 sources → no error (object is not backed by any store).
|
|
7
|
+
* - 1+ sources, exactly 1 with role "primary" → OK.
|
|
8
|
+
* - 1+ sources, 0 with role "primary" → ERR_SOURCE_NO_PRIMARY.
|
|
9
|
+
* - 1+ sources, 2+ with role "primary" → ERR_SOURCE_MULTIPLE_PRIMARY.
|
|
10
|
+
*/
|
|
11
|
+
export declare function validateSourceRoles(root: MetaData): ParseError[];
|
|
12
|
+
//# sourceMappingURL=validate-source-roles.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validate-source-roles.d.ts","sourceRoot":"","sources":["../../../src/persistence/source/validate-source-roles.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAK7C;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,QAAQ,GAAG,UAAU,EAAE,CA+BhE"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
// Validation pass: one-primary multi-source rule.
|
|
2
|
+
//
|
|
3
|
+
// An object that declares ≥1 source MUST have exactly one with role "primary".
|
|
4
|
+
// Zero sources is allowed (object is not persisted). Violations:
|
|
5
|
+
// ERR_SOURCE_NO_PRIMARY — sources present but none is role "primary"
|
|
6
|
+
// ERR_SOURCE_MULTIPLE_PRIMARY — more than one source has role "primary"
|
|
7
|
+
import { ParseError } from "../../errors.js";
|
|
8
|
+
import { TYPE_OBJECT, TYPE_SOURCE } from "../../shared/base-types.js";
|
|
9
|
+
import { MetaSource } from "./meta-source.js";
|
|
10
|
+
import { SOURCE_ROLE_PRIMARY } from "./source-constants.js";
|
|
11
|
+
/**
|
|
12
|
+
* Walks every object in the root and enforces the one-primary rule for
|
|
13
|
+
* multi-source objects:
|
|
14
|
+
* - 0 sources → no error (object is not backed by any store).
|
|
15
|
+
* - 1+ sources, exactly 1 with role "primary" → OK.
|
|
16
|
+
* - 1+ sources, 0 with role "primary" → ERR_SOURCE_NO_PRIMARY.
|
|
17
|
+
* - 1+ sources, 2+ with role "primary" → ERR_SOURCE_MULTIPLE_PRIMARY.
|
|
18
|
+
*/
|
|
19
|
+
export function validateSourceRoles(root) {
|
|
20
|
+
const errors = [];
|
|
21
|
+
for (const obj of root.ownChildren().filter((c) => c.type === TYPE_OBJECT)) {
|
|
22
|
+
const sources = obj
|
|
23
|
+
.ownChildren()
|
|
24
|
+
.filter((c) => c.type === TYPE_SOURCE)
|
|
25
|
+
.map((c) => c);
|
|
26
|
+
if (sources.length === 0)
|
|
27
|
+
continue;
|
|
28
|
+
const primaryCount = sources.filter((s) => s.role === SOURCE_ROLE_PRIMARY).length;
|
|
29
|
+
if (primaryCount === 0) {
|
|
30
|
+
errors.push(new ParseError(`object "${obj.name}" declares ${sources.length} source(s) but none has role "${SOURCE_ROLE_PRIMARY}"`, { code: "ERR_SOURCE_NO_PRIMARY" }));
|
|
31
|
+
}
|
|
32
|
+
else if (primaryCount > 1) {
|
|
33
|
+
errors.push(new ParseError(`object "${obj.name}" declares ${primaryCount} sources with role "${SOURCE_ROLE_PRIMARY}"; exactly one is required`, { code: "ERR_SOURCE_MULTIPLE_PRIMARY" }));
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
return errors;
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=validate-source-roles.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validate-source-roles.js","sourceRoot":"","sources":["../../../src/persistence/source/validate-source-roles.ts"],"names":[],"mappings":"AAAA,kDAAkD;AAClD,EAAE;AACF,+EAA+E;AAC/E,iEAAiE;AACjE,4EAA4E;AAC5E,0EAA0E;AAG1E,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAE5D;;;;;;;GAOG;AACH,MAAM,UAAU,mBAAmB,CAAC,IAAc;IAChD,MAAM,MAAM,GAAiB,EAAE,CAAC;IAEhC,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,WAAW,CAAC,EAAE,CAAC;QAC3E,MAAM,OAAO,GAAG,GAAG;aAChB,WAAW,EAAE;aACb,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,WAAW,CAAC;aACrC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAe,CAAC,CAAC;QAE/B,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;YAAE,SAAS;QAEnC,MAAM,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,mBAAmB,CAAC,CAAC,MAAM,CAAC;QAElF,IAAI,YAAY,KAAK,CAAC,EAAE,CAAC;YACvB,MAAM,CAAC,IAAI,CACT,IAAI,UAAU,CACZ,WAAW,GAAG,CAAC,IAAI,cAAc,OAAO,CAAC,MAAM,iCAAiC,mBAAmB,GAAG,EACtG,EAAE,IAAI,EAAE,uBAAuB,EAAE,CAClC,CACF,CAAC;QACJ,CAAC;aAAM,IAAI,YAAY,GAAG,CAAC,EAAE,CAAC;YAC5B,MAAM,CAAC,IAAI,CACT,IAAI,UAAU,CACZ,WAAW,GAAG,CAAC,IAAI,cAAc,YAAY,uBAAuB,mBAAmB,4BAA4B,EACnH,EAAE,IAAI,EAAE,6BAA6B,EAAE,CACxC,CACF,CAAC;QACJ,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
package/dist/registry.d.ts
CHANGED
|
@@ -58,6 +58,8 @@ export declare class TypeRegistry {
|
|
|
58
58
|
private readonly _subTypes;
|
|
59
59
|
/** Per-type designated default subType (queried by the YAML desugar). */
|
|
60
60
|
private readonly _defaultSubTypes;
|
|
61
|
+
/** Attrs accepted on every metatype (declared by providers). */
|
|
62
|
+
private readonly _commonAttrs;
|
|
61
63
|
register(def: TypeDefinition): void;
|
|
62
64
|
find(type: string, subType: string): TypeDefinition | undefined;
|
|
63
65
|
has(type: string, subType: string): boolean;
|
|
@@ -70,6 +72,17 @@ export declare class TypeRegistry {
|
|
|
70
72
|
/** The declared attribute schema for a (type, subType), or [] if the
|
|
71
73
|
* pair is unregistered or declares no attributes. */
|
|
72
74
|
attrsOf(type: string, subType: string): AttrSchema[];
|
|
75
|
+
/**
|
|
76
|
+
* Register attrs that are accepted on every metatype. Callers (providers) use
|
|
77
|
+
* this to declare cross-cutting attrs (e.g. doc attrs). Repeated registration
|
|
78
|
+
* of the same name is silently deduped (first registration wins); conflicts with
|
|
79
|
+
* per-type attrs are resolved at validation time (Task 1.3).
|
|
80
|
+
*/
|
|
81
|
+
registerCommonAttrs(attrs: AttrSchema[]): void;
|
|
82
|
+
/** Returns the registered common attrs (attrs accepted on every metatype).
|
|
83
|
+
* Returns a defensive copy so callers cannot mutate internal state, matching
|
|
84
|
+
* the spread-copy pattern used by `attrsOf` and `allSubTypesOf`. */
|
|
85
|
+
getCommonAttrs(): readonly AttrSchema[];
|
|
73
86
|
/**
|
|
74
87
|
* Additively enrich an already-registered (type, subType): append attributes
|
|
75
88
|
* and/or child rules. Does NOT touch factory / typeId / dataType / default
|
package/dist/registry.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAGjE,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAG/C,qBAAa,MAAM;aAEC,IAAI,EAAE,MAAM;aACZ,OAAO,EAAE,MAAM;gBADf,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM;IAGjC,QAAQ,IAAI,MAAM;IAIlB,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;CAG/B;AAED,MAAM,WAAW,SAAS;IACxB,8BAA8B;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,iCAAiC;IACjC,YAAY,EAAE,MAAM,CAAC;IACrB,8BAA8B;IAC9B,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,UAAU;IACzB,2EAA2E;IAC3E,IAAI,EAAE,MAAM,CAAC;IACb;;;;;;;;;;;OAWG;IACH,SAAS,CAAC,EAAE,WAAW,CAAC;IACxB,0DAA0D;IAC1D,QAAQ,EAAE,OAAO,CAAC;IAClB,oEAAoE;IACpE,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,sFAAsF;IACtF,aAAa,CAAC,EAAE,SAAS,SAAS,EAAE,CAAC;IACrC,+DAA+D;IAC/D,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,QAAQ,CAAC;IACpD,UAAU,EAAE,SAAS,EAAE,CAAC;IACxB,UAAU,EAAE,UAAU,EAAE,CAAC;IACzB;iFAC6E;IAC7E,QAAQ,CAAC,EAAE,QAAQ,CAAC;CACrB;AAED,qBAAa,YAAY;IACvB,iCAAiC;IACjC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAqC;IAE3D,gDAAgD;IAChD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA+B;IAEzD,yEAAyE;IACzE,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAA6B;IAE9D,QAAQ,CAAC,GAAG,EAAE,cAAc,GAAG,IAAI;IAgCnC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS;IAI/D,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO;IAI3C,QAAQ,IAAI,MAAM,EAAE;IAIpB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE;IAIrC,0FAA0F;IAC1F,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;IAItD,sFAAsF;IACtF,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAIlD;0DACsD;IACtD,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,UAAU,EAAE;IAIpD;;;;;OAKG;IACH,MAAM,CACJ,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,GAAG,EAAE;QAAE,UAAU,CAAC,EAAE,UAAU,EAAE,CAAC;QAAC,UAAU,CAAC,EAAE,SAAS,EAAE,CAAA;KAAE,GAC3D,IAAI;CA0BR;AAED,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,SAAS,EACf,KAAK,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GACrD,OAAO,CAMT"}
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"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"}
|
package/dist/registry.js
CHANGED
|
@@ -23,6 +23,8 @@ export class TypeRegistry {
|
|
|
23
23
|
_subTypes = new Map();
|
|
24
24
|
/** Per-type designated default subType (queried by the YAML desugar). */
|
|
25
25
|
_defaultSubTypes = new Map();
|
|
26
|
+
/** Attrs accepted on every metatype (declared by providers). */
|
|
27
|
+
_commonAttrs = [];
|
|
26
28
|
register(def) {
|
|
27
29
|
const key = def.typeId.toString();
|
|
28
30
|
if (this._defs.has(key)) {
|
|
@@ -73,6 +75,30 @@ export class TypeRegistry {
|
|
|
73
75
|
attrsOf(type, subType) {
|
|
74
76
|
return [...(this.find(type, subType)?.attributes ?? [])];
|
|
75
77
|
}
|
|
78
|
+
/**
|
|
79
|
+
* Register attrs that are accepted on every metatype. Callers (providers) use
|
|
80
|
+
* this to declare cross-cutting attrs (e.g. doc attrs). Repeated registration
|
|
81
|
+
* of the same name is silently deduped (first registration wins); conflicts with
|
|
82
|
+
* per-type attrs are resolved at validation time (Task 1.3).
|
|
83
|
+
*/
|
|
84
|
+
registerCommonAttrs(attrs) {
|
|
85
|
+
for (const attr of attrs) {
|
|
86
|
+
if (attr.valueType === SUBTYPE_BASE) {
|
|
87
|
+
throw new Error(`TypeRegistry.registerCommonAttrs: attr "${attr.name}" declares valueType "${SUBTYPE_BASE}", ` +
|
|
88
|
+
`which is not valid for attrs. Use no valueType (omit the field) for a polymorphic/untyped attr.`);
|
|
89
|
+
}
|
|
90
|
+
if (this._commonAttrs.some((existing) => existing.name === attr.name)) {
|
|
91
|
+
continue; // dedupe same-name re-registration; conflict-with-per-type-attr is checked at validation time
|
|
92
|
+
}
|
|
93
|
+
this._commonAttrs.push(attr);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
/** Returns the registered common attrs (attrs accepted on every metatype).
|
|
97
|
+
* Returns a defensive copy so callers cannot mutate internal state, matching
|
|
98
|
+
* the spread-copy pattern used by `attrsOf` and `allSubTypesOf`. */
|
|
99
|
+
getCommonAttrs() {
|
|
100
|
+
return [...this._commonAttrs];
|
|
101
|
+
}
|
|
76
102
|
/**
|
|
77
103
|
* Additively enrich an already-registered (type, subType): append attributes
|
|
78
104
|
* and/or child rules. Does NOT touch factory / typeId / dataType / default
|
package/dist/registry.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,7 +9,8 @@ export declare const TYPE_RELATIONSHIP = "relationship";
|
|
|
9
9
|
export declare const TYPE_LAYOUT = "layout";
|
|
10
10
|
export declare const TYPE_SOURCE = "source";
|
|
11
11
|
export declare const TYPE_ORIGIN = "origin";
|
|
12
|
-
export declare const
|
|
12
|
+
export declare const TYPE_TEMPLATE = "template";
|
|
13
|
+
export declare const BASE_TYPES: readonly ["metadata", "object", "field", "attr", "validator", "view", "identity", "relationship", "layout", "source", "origin", "template"];
|
|
13
14
|
export type BaseType = (typeof BASE_TYPES)[number];
|
|
14
15
|
export declare const SUBTYPE_BASE = "base";
|
|
15
16
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base-types.d.ts","sourceRoot":"","sources":["../../src/shared/base-types.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"base-types.d.ts","sourceRoot":"","sources":["../../src/shared/base-types.ts"],"names":[],"mappings":"AAOA,eAAO,MAAM,aAAa,aAAa,CAAC;AACxC,eAAO,MAAM,WAAW,WAAW,CAAC;AACpC,eAAO,MAAM,UAAU,UAAU,CAAC;AAClC,eAAO,MAAM,SAAS,SAAS,CAAC;AAChC,eAAO,MAAM,cAAc,cAAc,CAAC;AAC1C,eAAO,MAAM,SAAS,SAAS,CAAC;AAChC,eAAO,MAAM,aAAa,aAAa,CAAC;AACxC,eAAO,MAAM,iBAAiB,iBAAiB,CAAC;AAChD,eAAO,MAAM,WAAW,WAAW,CAAC;AACpC,eAAO,MAAM,WAAW,WAAW,CAAC;AACpC,eAAO,MAAM,WAAW,WAAW,CAAC;AACpC,eAAO,MAAM,aAAa,aAAa,CAAC;AAExC,eAAO,MAAM,UAAU,6IAab,CAAC;AACX,MAAM,MAAM,QAAQ,GAAG,CAAC,OAAO,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC;AAMnD,eAAO,MAAM,YAAY,SAAS,CAAC;AAMnC;;;;GAIG;AACH,eAAO,MAAM,YAAY,SAAS,CAAC;AAEnC,eAAO,MAAM,iBAAiB,mBAA0B,CAAC;AACzD,MAAM,MAAM,eAAe,GAAG,CAAC,OAAO,iBAAiB,CAAC,CAAC,MAAM,CAAC,CAAC"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
// Base type vocabulary — the
|
|
1
|
+
// Base type vocabulary — the 12 registered base types + universal/metadata subtypes.
|
|
2
2
|
// ---------------------------------------------------------------------------
|
|
3
|
-
// Base type names (the
|
|
3
|
+
// Base type names (the registered base types — Java metaobjects-core vocabulary,
|
|
4
|
+
// plus `template`, the TS-first FR-004 addition for prompt construction)
|
|
4
5
|
// ---------------------------------------------------------------------------
|
|
5
6
|
export const TYPE_METADATA = "metadata";
|
|
6
7
|
export const TYPE_OBJECT = "object";
|
|
@@ -13,6 +14,7 @@ export const TYPE_RELATIONSHIP = "relationship";
|
|
|
13
14
|
export const TYPE_LAYOUT = "layout";
|
|
14
15
|
export const TYPE_SOURCE = "source";
|
|
15
16
|
export const TYPE_ORIGIN = "origin";
|
|
17
|
+
export const TYPE_TEMPLATE = "template";
|
|
16
18
|
export const BASE_TYPES = [
|
|
17
19
|
TYPE_METADATA,
|
|
18
20
|
TYPE_OBJECT,
|
|
@@ -25,6 +27,7 @@ export const BASE_TYPES = [
|
|
|
25
27
|
TYPE_LAYOUT,
|
|
26
28
|
TYPE_SOURCE,
|
|
27
29
|
TYPE_ORIGIN,
|
|
30
|
+
TYPE_TEMPLATE,
|
|
28
31
|
];
|
|
29
32
|
// ---------------------------------------------------------------------------
|
|
30
33
|
// Universal subtype
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base-types.js","sourceRoot":"","sources":["../../src/shared/base-types.ts"],"names":[],"mappings":"AAAA,qFAAqF;AAErF,8EAA8E;AAC9E,
|
|
1
|
+
{"version":3,"file":"base-types.js","sourceRoot":"","sources":["../../src/shared/base-types.ts"],"names":[],"mappings":"AAAA,qFAAqF;AAErF,8EAA8E;AAC9E,iFAAiF;AACjF,yEAAyE;AACzE,8EAA8E;AAE9E,MAAM,CAAC,MAAM,aAAa,GAAG,UAAU,CAAC;AACxC,MAAM,CAAC,MAAM,WAAW,GAAG,QAAQ,CAAC;AACpC,MAAM,CAAC,MAAM,UAAU,GAAG,OAAO,CAAC;AAClC,MAAM,CAAC,MAAM,SAAS,GAAG,MAAM,CAAC;AAChC,MAAM,CAAC,MAAM,cAAc,GAAG,WAAW,CAAC;AAC1C,MAAM,CAAC,MAAM,SAAS,GAAG,MAAM,CAAC;AAChC,MAAM,CAAC,MAAM,aAAa,GAAG,UAAU,CAAC;AACxC,MAAM,CAAC,MAAM,iBAAiB,GAAG,cAAc,CAAC;AAChD,MAAM,CAAC,MAAM,WAAW,GAAG,QAAQ,CAAC;AACpC,MAAM,CAAC,MAAM,WAAW,GAAG,QAAQ,CAAC;AACpC,MAAM,CAAC,MAAM,WAAW,GAAG,QAAQ,CAAC;AACpC,MAAM,CAAC,MAAM,aAAa,GAAG,UAAU,CAAC;AAExC,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,aAAa;IACb,WAAW;IACX,UAAU;IACV,SAAS;IACT,cAAc;IACd,SAAS;IACT,aAAa;IACb,iBAAiB;IACjB,WAAW;IACX,WAAW;IACX,WAAW;IACX,aAAa;CACL,CAAC;AAGX,8EAA8E;AAC9E,oBAAoB;AACpB,8EAA8E;AAE9E,MAAM,CAAC,MAAM,YAAY,GAAG,MAAM,CAAC;AAEnC,8EAA8E;AAC9E,wBAAwB;AACxB,8EAA8E;AAE9E;;;;GAIG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,MAAM,CAAC;AAEnC,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,YAAY,CAAU,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { MetaData } from "../shared/meta-data.js";
|
|
2
|
+
/**
|
|
3
|
+
* `template.*` node — the fourth-pillar metatype (FR-004, R1).
|
|
4
|
+
*
|
|
5
|
+
* A single class backs both subtypes (`template.prompt`, `template.output`),
|
|
6
|
+
* mirroring `MetaSource`: the loader dispatches by subtype and per-subtype
|
|
7
|
+
* attribute schemas (see `template-schema.ts`) drive validation. Typed accessors
|
|
8
|
+
* are deferred to the render-engine / verify work — attr values read generically
|
|
9
|
+
* via `ownAttr(...)` until then, so no untested forward-looking surface ships.
|
|
10
|
+
*/
|
|
11
|
+
export declare class MetaTemplate extends MetaData {
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=meta-template.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"meta-template.d.ts","sourceRoot":"","sources":["../../src/template/meta-template.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAElD;;;;;;;;GAQG;AACH,qBAAa,YAAa,SAAQ,QAAQ;CAAG"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { MetaData } from "../shared/meta-data.js";
|
|
2
|
+
/**
|
|
3
|
+
* `template.*` node — the fourth-pillar metatype (FR-004, R1).
|
|
4
|
+
*
|
|
5
|
+
* A single class backs both subtypes (`template.prompt`, `template.output`),
|
|
6
|
+
* mirroring `MetaSource`: the loader dispatches by subtype and per-subtype
|
|
7
|
+
* attribute schemas (see `template-schema.ts`) drive validation. Typed accessors
|
|
8
|
+
* are deferred to the render-engine / verify work — attr values read generically
|
|
9
|
+
* via `ownAttr(...)` until then, so no untested forward-looking surface ships.
|
|
10
|
+
*/
|
|
11
|
+
export class MetaTemplate extends MetaData {
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=meta-template.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"meta-template.js","sourceRoot":"","sources":["../../src/template/meta-template.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAElD;;;;;;;;GAQG;AACH,MAAM,OAAO,YAAa,SAAQ,QAAQ;CAAG"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export declare const TEMPLATE_SUBTYPE_PROMPT = "prompt";
|
|
2
|
+
export declare const TEMPLATE_SUBTYPE_OUTPUT = "output";
|
|
3
|
+
export declare const TEMPLATE_SUBTYPES: readonly ["base", "prompt", "output"];
|
|
4
|
+
export type TemplateSubType = (typeof TEMPLATE_SUBTYPES)[number];
|
|
5
|
+
export declare const TEMPLATE_ATTR_PAYLOAD_REF = "payloadRef";
|
|
6
|
+
export declare const TEMPLATE_ATTR_TEXT_REF = "textRef";
|
|
7
|
+
export declare const TEMPLATE_ATTR_FORMAT = "format";
|
|
8
|
+
export declare const TEMPLATE_ATTR_MAX_CHARS = "maxChars";
|
|
9
|
+
export declare const TEMPLATE_ATTR_OWNER = "owner";
|
|
10
|
+
export declare const TEMPLATE_ATTR_SINCE = "since";
|
|
11
|
+
export declare const TEMPLATE_ATTR_REQUIRED_TAGS = "requiredTags";
|
|
12
|
+
export declare const TEMPLATE_ATTR_MAX_TOKENS = "maxTokens";
|
|
13
|
+
export declare const TEMPLATE_ATTR_REQUIRED_SLOTS = "requiredSlots";
|
|
14
|
+
export declare const TEMPLATE_ATTR_MODEL = "model";
|
|
15
|
+
export declare const TEMPLATE_FORMATS: readonly ["text", "html", "xml", "csv", "json", "markdown", "spreadsheet"];
|
|
16
|
+
export type TemplateFormat = (typeof TEMPLATE_FORMATS)[number];
|
|
17
|
+
//# sourceMappingURL=template-constants.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"template-constants.d.ts","sourceRoot":"","sources":["../../src/template/template-constants.ts"],"names":[],"mappings":"AAcA,eAAO,MAAM,uBAAuB,WAAW,CAAC;AAChD,eAAO,MAAM,uBAAuB,WAAW,CAAC;AAEhD,eAAO,MAAM,iBAAiB,uCAIpB,CAAC;AACX,MAAM,MAAM,eAAe,GAAG,CAAC,OAAO,iBAAiB,CAAC,CAAC,MAAM,CAAC,CAAC;AAGjE,eAAO,MAAM,yBAAyB,eAAe,CAAC;AACtD,eAAO,MAAM,sBAAsB,YAAY,CAAC;AAChD,eAAO,MAAM,oBAAoB,WAAW,CAAC;AAC7C,eAAO,MAAM,uBAAuB,aAAa,CAAC;AAClD,eAAO,MAAM,mBAAmB,UAAU,CAAC;AAC3C,eAAO,MAAM,mBAAmB,UAAU,CAAC;AAI3C,eAAO,MAAM,2BAA2B,iBAAiB,CAAC;AAG1D,eAAO,MAAM,wBAAwB,cAAc,CAAC;AACpD,eAAO,MAAM,4BAA4B,kBAAkB,CAAC;AAC5D,eAAO,MAAM,mBAAmB,UAAU,CAAC;AAI3C,eAAO,MAAM,gBAAgB,4EAQnB,CAAC;AACX,MAAM,MAAM,cAAc,GAAG,CAAC,OAAO,gBAAgB,CAAC,CAAC,MAAM,CAAC,CAAC"}
|