@metaobjectsdev/metadata 0.8.1 → 0.9.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.map +1 -1
- package/dist/attr-schema-validate.js +49 -1
- package/dist/attr-schema-validate.js.map +1 -1
- package/dist/core/field/field-constants.d.ts +27 -2
- package/dist/core/field/field-constants.d.ts.map +1 -1
- package/dist/core/field/field-constants.js +30 -2
- package/dist/core/field/field-constants.js.map +1 -1
- package/dist/core/field/field-schema.d.ts +9 -1
- package/dist/core/field/field-schema.d.ts.map +1 -1
- package/dist/core/field/field-schema.js +34 -3
- package/dist/core/field/field-schema.js.map +1 -1
- package/dist/core/field/meta-field.d.ts +10 -0
- package/dist/core/field/meta-field.d.ts.map +1 -1
- package/dist/core/field/meta-field.js +36 -1
- package/dist/core/field/meta-field.js.map +1 -1
- package/dist/core/field/validate-field-readonly.d.ts +9 -0
- package/dist/core/field/validate-field-readonly.d.ts.map +1 -0
- package/dist/core/field/validate-field-readonly.js +116 -0
- package/dist/core/field/validate-field-readonly.js.map +1 -0
- package/dist/core/object/meta-object-aware.d.ts +11 -0
- package/dist/core/object/meta-object-aware.d.ts.map +1 -0
- package/dist/core/object/meta-object-aware.js +15 -0
- package/dist/core/object/meta-object-aware.js.map +1 -0
- package/dist/core/object/meta-object.d.ts +21 -0
- package/dist/core/object/meta-object.d.ts.map +1 -1
- package/dist/core/object/meta-object.js +43 -2
- package/dist/core/object/meta-object.js.map +1 -1
- package/dist/core/object/object-class-registry.d.ts +22 -0
- package/dist/core/object/object-class-registry.d.ts.map +1 -0
- package/dist/core/object/object-class-registry.js +38 -0
- package/dist/core/object/object-class-registry.js.map +1 -0
- package/dist/core/object/object-constants.d.ts +7 -0
- package/dist/core/object/object-constants.d.ts.map +1 -1
- package/dist/core/object/object-constants.js +14 -0
- package/dist/core/object/object-constants.js.map +1 -1
- package/dist/core/object/object-schema.d.ts.map +1 -1
- package/dist/core/object/object-schema.js +24 -1
- package/dist/core/object/object-schema.js.map +1 -1
- package/dist/core/object/validate-discriminator.d.ts +4 -0
- package/dist/core/object/validate-discriminator.d.ts.map +1 -0
- package/dist/core/object/validate-discriminator.js +145 -0
- package/dist/core/object/validate-discriminator.js.map +1 -0
- package/dist/core/object/value-object.d.ts +23 -0
- package/dist/core/object/value-object.d.ts.map +1 -0
- package/dist/core/object/value-object.js +51 -0
- package/dist/core/object/value-object.js.map +1 -0
- package/dist/core/query/query-constants.d.ts.map +1 -1
- package/dist/core/query/query-constants.js +4 -0
- package/dist/core/query/query-constants.js.map +1 -1
- package/dist/core-types.d.ts.map +1 -1
- package/dist/core-types.js +16 -4
- package/dist/core-types.js.map +1 -1
- package/dist/errors.d.ts +2 -2
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +23 -0
- package/dist/errors.js.map +1 -1
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -0
- 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 +26 -1
- package/dist/loader/meta-data-loader.js.map +1 -1
- package/dist/loader/validation-passes.d.ts +1 -0
- package/dist/loader/validation-passes.d.ts.map +1 -1
- package/dist/loader/validation-passes.js +122 -2
- package/dist/loader/validation-passes.js.map +1 -1
- package/dist/naming.d.ts.map +1 -1
- package/dist/naming.js +7 -6
- package/dist/naming.js.map +1 -1
- package/dist/persistence/db/db-constants.d.ts +23 -0
- package/dist/persistence/db/db-constants.d.ts.map +1 -1
- package/dist/persistence/db/db-constants.js +31 -0
- package/dist/persistence/db/db-constants.js.map +1 -1
- package/dist/persistence/db/db-provider.js +3 -3
- package/dist/persistence/db/db-provider.js.map +1 -1
- package/dist/persistence/db/db-schema.d.ts +8 -0
- package/dist/persistence/db/db-schema.d.ts.map +1 -1
- package/dist/persistence/db/db-schema.js +17 -1
- package/dist/persistence/db/db-schema.js.map +1 -1
- package/dist/persistence/source/meta-source.d.ts +15 -1
- package/dist/persistence/source/meta-source.d.ts.map +1 -1
- package/dist/persistence/source/meta-source.js +55 -3
- package/dist/persistence/source/meta-source.js.map +1 -1
- package/dist/persistence/source/source-constants.d.ts +20 -1
- package/dist/persistence/source/source-constants.d.ts.map +1 -1
- package/dist/persistence/source/source-constants.js +36 -1
- package/dist/persistence/source/source-constants.js.map +1 -1
- package/dist/persistence/source/source-schema.d.ts.map +1 -1
- package/dist/persistence/source/source-schema.js +65 -4
- package/dist/persistence/source/source-schema.js.map +1 -1
- package/dist/persistence/source/validate-source-parameter-ref.d.ts +4 -0
- package/dist/persistence/source/validate-source-parameter-ref.d.ts.map +1 -0
- package/dist/persistence/source/validate-source-parameter-ref.js +96 -0
- package/dist/persistence/source/validate-source-parameter-ref.js.map +1 -0
- package/dist/persistence/source/validate-source-physical-names.d.ts +9 -0
- package/dist/persistence/source/validate-source-physical-names.d.ts.map +1 -0
- package/dist/persistence/source/validate-source-physical-names.js +79 -0
- package/dist/persistence/source/validate-source-physical-names.js.map +1 -0
- package/dist/serializer-json.d.ts.map +1 -1
- package/dist/serializer-json.js +43 -0
- package/dist/serializer-json.js.map +1 -1
- package/dist/template/template-constants.d.ts +9 -0
- package/dist/template/template-constants.d.ts.map +1 -1
- package/dist/template/template-constants.js +20 -0
- package/dist/template/template-constants.js.map +1 -1
- package/dist/template/template-schema.d.ts.map +1 -1
- package/dist/template/template-schema.js +42 -3
- package/dist/template/template-schema.js.map +1 -1
- package/package.json +1 -1
- package/src/attr-schema-validate.ts +70 -0
- package/src/core/field/field-constants.ts +37 -2
- package/src/core/field/field-schema.ts +43 -2
- package/src/core/field/meta-field.ts +39 -0
- package/src/core/field/validate-field-readonly.ts +142 -0
- package/src/core/object/meta-object-aware.ts +27 -0
- package/src/core/object/meta-object.ts +47 -2
- package/src/core/object/object-class-registry.ts +48 -0
- package/src/core/object/object-constants.ts +17 -0
- package/src/core/object/object-schema.ts +29 -1
- package/src/core/object/validate-discriminator.ts +195 -0
- package/src/core/object/value-object.ts +65 -0
- package/src/core/query/query-constants.ts +5 -0
- package/src/core-types.ts +17 -4
- package/src/errors.ts +23 -0
- package/src/index.ts +10 -0
- package/src/loader/meta-data-loader.ts +31 -1
- package/src/loader/validation-passes.ts +161 -0
- package/src/naming.ts +6 -5
- package/src/persistence/db/db-constants.ts +40 -0
- package/src/persistence/db/db-provider.ts +3 -3
- package/src/persistence/db/db-schema.ts +20 -0
- package/src/persistence/source/meta-source.ts +64 -2
- package/src/persistence/source/source-constants.ts +40 -1
- package/src/persistence/source/source-schema.ts +78 -3
- package/src/persistence/source/validate-source-parameter-ref.ts +143 -0
- package/src/persistence/source/validate-source-physical-names.ts +123 -0
- package/src/serializer-json.ts +50 -0
- package/src/template/template-constants.ts +23 -0
- package/src/template/template-schema.ts +49 -2
- package/dist/constants.d.ts +0 -208
- package/dist/constants.d.ts.map +0 -1
- package/dist/constants.js +0 -419
- package/dist/constants.js.map +0 -1
- package/dist/core/file-meta-data-loader.d.ts +0 -18
- package/dist/core/file-meta-data-loader.d.ts.map +0 -1
- package/dist/core/file-meta-data-loader.js +0 -81
- package/dist/core/file-meta-data-loader.js.map +0 -1
- package/dist/core/file-source.d.ts +0 -12
- package/dist/core/file-source.d.ts.map +0 -1
- package/dist/core/file-source.js +0 -46
- package/dist/core/file-source.js.map +0 -1
- package/dist/core-attr-schemas.d.ts +0 -22
- package/dist/core-attr-schemas.d.ts.map +0 -1
- package/dist/core-attr-schemas.js +0 -324
- package/dist/core-attr-schemas.js.map +0 -1
- package/dist/db/db-attr-schemas.d.ts +0 -8
- package/dist/db/db-attr-schemas.d.ts.map +0 -1
- package/dist/db/db-attr-schemas.js +0 -26
- package/dist/db/db-attr-schemas.js.map +0 -1
- package/dist/db/db-provider.d.ts +0 -3
- package/dist/db/db-provider.d.ts.map +0 -1
- package/dist/db/db-provider.js +0 -28
- package/dist/db/db-provider.js.map +0 -1
- package/dist/meta/find-reference.d.ts +0 -22
- package/dist/meta/find-reference.d.ts.map +0 -1
- package/dist/meta/find-reference.js +0 -29
- package/dist/meta/find-reference.js.map +0 -1
- package/dist/meta/meta-attr.d.ts +0 -8
- package/dist/meta/meta-attr.d.ts.map +0 -1
- package/dist/meta/meta-attr.js +0 -17
- package/dist/meta/meta-attr.js.map +0 -1
- package/dist/meta/meta-data.d.ts +0 -107
- package/dist/meta/meta-data.d.ts.map +0 -1
- package/dist/meta/meta-data.js +0 -302
- package/dist/meta/meta-data.js.map +0 -1
- package/dist/meta/meta-field.d.ts +0 -48
- package/dist/meta/meta-field.d.ts.map +0 -1
- package/dist/meta/meta-field.js +0 -94
- package/dist/meta/meta-field.js.map +0 -1
- package/dist/meta/meta-identity.d.ts +0 -71
- package/dist/meta/meta-identity.d.ts.map +0 -1
- package/dist/meta/meta-identity.js +0 -129
- package/dist/meta/meta-identity.js.map +0 -1
- package/dist/meta/meta-layout.d.ts +0 -23
- package/dist/meta/meta-layout.d.ts.map +0 -1
- package/dist/meta/meta-layout.js +0 -45
- package/dist/meta/meta-layout.js.map +0 -1
- package/dist/meta/meta-object.d.ts +0 -40
- package/dist/meta/meta-object.d.ts.map +0 -1
- package/dist/meta/meta-object.js +0 -81
- package/dist/meta/meta-object.js.map +0 -1
- package/dist/meta/meta-origin.d.ts +0 -32
- package/dist/meta/meta-origin.d.ts.map +0 -1
- package/dist/meta/meta-origin.js +0 -55
- package/dist/meta/meta-origin.js.map +0 -1
- package/dist/meta/meta-relationship.d.ts +0 -11
- package/dist/meta/meta-relationship.d.ts.map +0 -1
- package/dist/meta/meta-relationship.js +0 -27
- package/dist/meta/meta-relationship.js.map +0 -1
- package/dist/meta/meta-root.d.ts +0 -12
- package/dist/meta/meta-root.d.ts.map +0 -1
- package/dist/meta/meta-root.js +0 -24
- package/dist/meta/meta-root.js.map +0 -1
- package/dist/meta/meta-source.d.ts +0 -18
- package/dist/meta/meta-source.d.ts.map +0 -1
- package/dist/meta/meta-source.js +0 -31
- package/dist/meta/meta-source.js.map +0 -1
- package/dist/meta/meta-validator.d.ts +0 -29
- package/dist/meta/meta-validator.d.ts.map +0 -1
- package/dist/meta/meta-validator.js +0 -49
- package/dist/meta/meta-validator.js.map +0 -1
- package/dist/meta/meta-view.d.ts +0 -4
- package/dist/meta/meta-view.d.ts.map +0 -1
- package/dist/meta/meta-view.js +0 -8
- package/dist/meta/meta-view.js.map +0 -1
- package/dist/persistence/db/db-attr-schemas.d.ts +0 -8
- package/dist/persistence/db/db-attr-schemas.d.ts.map +0 -1
- package/dist/persistence/db/db-attr-schemas.js +0 -28
- package/dist/persistence/db/db-attr-schemas.js.map +0 -1
package/dist/naming.js
CHANGED
|
@@ -42,13 +42,14 @@ export function pluralize(s) {
|
|
|
42
42
|
return s + "s";
|
|
43
43
|
}
|
|
44
44
|
export function resolveTableName(entity) {
|
|
45
|
-
//
|
|
46
|
-
// (table
|
|
47
|
-
//
|
|
45
|
+
// FR-016: primary source's `physicalName` implements the four-step rule
|
|
46
|
+
// (kind-matching alias → legacy @table → source.name → entity-name fallback),
|
|
47
|
+
// so this helper now just delegates. Writability (table vs view/storedProc/
|
|
48
|
+
// tableFunction) only affects write-routing — for SELECT-side name resolution,
|
|
49
|
+
// a read-only primary source is the right answer.
|
|
48
50
|
const source = entity.ownChildren().find((c) => c instanceof MetaSource && c.role === SOURCE_ROLE_PRIMARY);
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
return name;
|
|
51
|
+
if (source !== undefined)
|
|
52
|
+
return source.physicalName;
|
|
52
53
|
return pluralize(toSnakeCase(entity.name));
|
|
53
54
|
}
|
|
54
55
|
export function resolveColumnName(field, strategy = DEFAULT_COLUMN_NAMING_STRATEGY) {
|
package/dist/naming.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"naming.js","sourceRoot":"","sources":["../src/naming.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AACrE,OAAO,EACL,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,0CAA0C,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,qCAAqC,CAAC;AAEjE;;;;;;GAMG;AACH,MAAM,UAAU,YAAY,CAAC,IAAwB;IACnD,IAAI,CAAC,IAAI;QAAE,OAAO,EAAE,CAAC;IACrB,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC;IAChD,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC;AACxE,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,CAAS;IACnC,OAAO,CAAC;SACL,OAAO,CAAC,uBAAuB,EAAE,OAAO,CAAC;SACzC,OAAO,CAAC,oBAAoB,EAAE,OAAO,CAAC;SACtC,WAAW,EAAE,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,CAAS;IACnC,OAAO,WAAW,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AAC3C,CAAC;AAYD,sDAAsD;AACtD,MAAM,CAAC,MAAM,8BAA8B,GAAyB,YAAY,CAAC;AAEjF,MAAM,UAAU,yBAAyB,CAAC,IAAY,EAAE,QAA8B;IACpF,QAAQ,QAAQ,EAAE,CAAC;QACjB,KAAK,SAAS,CAAC,CAAK,OAAO,IAAI,CAAC;QAChC,KAAK,YAAY,CAAC,CAAE,OAAO,WAAW,CAAC,IAAI,CAAC,CAAC;QAC7C,KAAK,YAAY,CAAC,CAAE,OAAO,WAAW,CAAC,IAAI,CAAC,CAAC;IAC/C,CAAC;AACH,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,CAAS;IACjC,IAAI,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC;QAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAC/C,IAAI,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC;QAAE,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;IACzD,OAAO,CAAC,GAAG,GAAG,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,MAAgB;IAC/C,
|
|
1
|
+
{"version":3,"file":"naming.js","sourceRoot":"","sources":["../src/naming.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,4 +2,27 @@
|
|
|
2
2
|
export declare const FIELD_ATTR_COLUMN = "column";
|
|
3
3
|
/** When true, suppress the @filterable-without-index Loader warning (Project D drift check). */
|
|
4
4
|
export declare const FIELD_ATTR_DB_INDEXED = "db.indexed";
|
|
5
|
+
/**
|
|
6
|
+
* R6 Plan 2b: `@dbColumnType` — physical DB column-type override on a field.
|
|
7
|
+
* Selects the DB column type WITHOUT changing the logical field type or its
|
|
8
|
+
* native binding (ADR-0013 — the canonical physical escape hatch). Registered
|
|
9
|
+
* by the dbProvider, validated as a (logical subtype × value) pairing.
|
|
10
|
+
*/
|
|
11
|
+
export declare const FIELD_ATTR_DB_COLUMN_TYPE = "dbColumnType";
|
|
12
|
+
/** `@dbColumnType: uuid` — native Postgres `uuid` column (legal on field.string). */
|
|
13
|
+
export declare const DB_COLUMN_TYPE_UUID = "uuid";
|
|
14
|
+
/** `@dbColumnType: jsonb` — genuinely-open `jsonb` column (legal on field.string). */
|
|
15
|
+
export declare const DB_COLUMN_TYPE_JSONB = "jsonb";
|
|
16
|
+
/** `@dbColumnType: timestamp_with_tz` — `timestamp with time zone` (legal on field.timestamp). */
|
|
17
|
+
export declare const DB_COLUMN_TYPE_TIMESTAMP_WITH_TZ = "timestamp_with_tz";
|
|
18
|
+
/** The closed set of legal `@dbColumnType` values (raw-dialect passthrough deferred). */
|
|
19
|
+
export declare const DB_COLUMN_TYPE_VALUES: readonly ["uuid", "jsonb", "timestamp_with_tz"];
|
|
20
|
+
export type DbColumnTypeValue = (typeof DB_COLUMN_TYPE_VALUES)[number];
|
|
21
|
+
/**
|
|
22
|
+
* Legal `@dbColumnType` value → the field subtypes it may be applied to (ADR-0013,
|
|
23
|
+
* R6 Plan 2b). Any other (subtype × value) pairing — or an unrecognized value — is
|
|
24
|
+
* an ERR_BAD_ATTR_VALUE. Keyed by value; the value-set is enforced by membership in
|
|
25
|
+
* this map. Subtype names are the bare FIELD_SUBTYPE_* constants (string / timestamp).
|
|
26
|
+
*/
|
|
27
|
+
export declare const DB_COLUMN_TYPE_LEGAL_SUBTYPES: Readonly<Record<DbColumnTypeValue, readonly string[]>>;
|
|
5
28
|
//# sourceMappingURL=db-constants.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"db-constants.d.ts","sourceRoot":"","sources":["../../../src/persistence/db/db-constants.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"db-constants.d.ts","sourceRoot":"","sources":["../../../src/persistence/db/db-constants.ts"],"names":[],"mappings":"AAOA,qEAAqE;AACrE,eAAO,MAAM,iBAAiB,WAAW,CAAC;AAC1C,gGAAgG;AAChG,eAAO,MAAM,qBAAqB,eAAe,CAAC;AAElD;;;;;GAKG;AACH,eAAO,MAAM,yBAAyB,iBAAiB,CAAC;AAExD,qFAAqF;AACrF,eAAO,MAAM,mBAAmB,SAAS,CAAC;AAC1C,sFAAsF;AACtF,eAAO,MAAM,oBAAoB,UAAU,CAAC;AAC5C,kGAAkG;AAClG,eAAO,MAAM,gCAAgC,sBAAsB,CAAC;AAEpE,yFAAyF;AACzF,eAAO,MAAM,qBAAqB,iDAIxB,CAAC;AACX,MAAM,MAAM,iBAAiB,GAAG,CAAC,OAAO,qBAAqB,CAAC,CAAC,MAAM,CAAC,CAAC;AAEvE;;;;;GAKG;AACH,eAAO,MAAM,6BAA6B,EAAE,QAAQ,CAAC,MAAM,CAAC,iBAAiB,EAAE,SAAS,MAAM,EAAE,CAAC,CAIvF,CAAC"}
|
|
@@ -1,6 +1,37 @@
|
|
|
1
1
|
// DB concern constants — physical DB column attr keys.
|
|
2
|
+
import { FIELD_SUBTYPE_STRING, FIELD_SUBTYPE_TIMESTAMP, } from "../../core/field/field-constants.js";
|
|
2
3
|
/** Column name override on a field (maps to @column in metadata). */
|
|
3
4
|
export const FIELD_ATTR_COLUMN = "column";
|
|
4
5
|
/** When true, suppress the @filterable-without-index Loader warning (Project D drift check). */
|
|
5
6
|
export const FIELD_ATTR_DB_INDEXED = "db.indexed";
|
|
7
|
+
/**
|
|
8
|
+
* R6 Plan 2b: `@dbColumnType` — physical DB column-type override on a field.
|
|
9
|
+
* Selects the DB column type WITHOUT changing the logical field type or its
|
|
10
|
+
* native binding (ADR-0013 — the canonical physical escape hatch). Registered
|
|
11
|
+
* by the dbProvider, validated as a (logical subtype × value) pairing.
|
|
12
|
+
*/
|
|
13
|
+
export const FIELD_ATTR_DB_COLUMN_TYPE = "dbColumnType";
|
|
14
|
+
/** `@dbColumnType: uuid` — native Postgres `uuid` column (legal on field.string). */
|
|
15
|
+
export const DB_COLUMN_TYPE_UUID = "uuid";
|
|
16
|
+
/** `@dbColumnType: jsonb` — genuinely-open `jsonb` column (legal on field.string). */
|
|
17
|
+
export const DB_COLUMN_TYPE_JSONB = "jsonb";
|
|
18
|
+
/** `@dbColumnType: timestamp_with_tz` — `timestamp with time zone` (legal on field.timestamp). */
|
|
19
|
+
export const DB_COLUMN_TYPE_TIMESTAMP_WITH_TZ = "timestamp_with_tz";
|
|
20
|
+
/** The closed set of legal `@dbColumnType` values (raw-dialect passthrough deferred). */
|
|
21
|
+
export const DB_COLUMN_TYPE_VALUES = [
|
|
22
|
+
DB_COLUMN_TYPE_UUID,
|
|
23
|
+
DB_COLUMN_TYPE_JSONB,
|
|
24
|
+
DB_COLUMN_TYPE_TIMESTAMP_WITH_TZ,
|
|
25
|
+
];
|
|
26
|
+
/**
|
|
27
|
+
* Legal `@dbColumnType` value → the field subtypes it may be applied to (ADR-0013,
|
|
28
|
+
* R6 Plan 2b). Any other (subtype × value) pairing — or an unrecognized value — is
|
|
29
|
+
* an ERR_BAD_ATTR_VALUE. Keyed by value; the value-set is enforced by membership in
|
|
30
|
+
* this map. Subtype names are the bare FIELD_SUBTYPE_* constants (string / timestamp).
|
|
31
|
+
*/
|
|
32
|
+
export const DB_COLUMN_TYPE_LEGAL_SUBTYPES = {
|
|
33
|
+
[DB_COLUMN_TYPE_UUID]: [FIELD_SUBTYPE_STRING],
|
|
34
|
+
[DB_COLUMN_TYPE_JSONB]: [FIELD_SUBTYPE_STRING],
|
|
35
|
+
[DB_COLUMN_TYPE_TIMESTAMP_WITH_TZ]: [FIELD_SUBTYPE_TIMESTAMP],
|
|
36
|
+
};
|
|
6
37
|
//# sourceMappingURL=db-constants.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"db-constants.js","sourceRoot":"","sources":["../../../src/persistence/db/db-constants.ts"],"names":[],"mappings":"AAAA,uDAAuD;AAEvD,qEAAqE;AACrE,MAAM,CAAC,MAAM,iBAAiB,GAAG,QAAQ,CAAC;AAC1C,gGAAgG;AAChG,MAAM,CAAC,MAAM,qBAAqB,GAAG,YAAY,CAAC"}
|
|
1
|
+
{"version":3,"file":"db-constants.js","sourceRoot":"","sources":["../../../src/persistence/db/db-constants.ts"],"names":[],"mappings":"AAAA,uDAAuD;AAEvD,OAAO,EACL,oBAAoB,EACpB,uBAAuB,GACxB,MAAM,qCAAqC,CAAC;AAE7C,qEAAqE;AACrE,MAAM,CAAC,MAAM,iBAAiB,GAAG,QAAQ,CAAC;AAC1C,gGAAgG;AAChG,MAAM,CAAC,MAAM,qBAAqB,GAAG,YAAY,CAAC;AAElD;;;;;GAKG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,cAAc,CAAC;AAExD,qFAAqF;AACrF,MAAM,CAAC,MAAM,mBAAmB,GAAG,MAAM,CAAC;AAC1C,sFAAsF;AACtF,MAAM,CAAC,MAAM,oBAAoB,GAAG,OAAO,CAAC;AAC5C,kGAAkG;AAClG,MAAM,CAAC,MAAM,gCAAgC,GAAG,mBAAmB,CAAC;AAEpE,yFAAyF;AACzF,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACnC,mBAAmB;IACnB,oBAAoB;IACpB,gCAAgC;CACxB,CAAC;AAGX;;;;;GAKG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAA2D;IACnG,CAAC,mBAAmB,CAAC,EAAE,CAAC,oBAAoB,CAAC;IAC7C,CAAC,oBAAoB,CAAC,EAAE,CAAC,oBAAoB,CAAC;IAC9C,CAAC,gCAAgC,CAAC,EAAE,CAAC,uBAAuB,CAAC;CACrD,CAAC"}
|
|
@@ -5,16 +5,16 @@
|
|
|
5
5
|
import { TYPE_FIELD, TYPE_SOURCE } from "../../shared/base-types.js";
|
|
6
6
|
import { FIELD_SUBTYPES } from "../../core/field/field-constants.js";
|
|
7
7
|
import { SOURCE_SUBTYPE_RDB } from "../source/source-constants.js";
|
|
8
|
-
import { columnSchema, dbIndexedSchema } from "./db-schema.js";
|
|
8
|
+
import { columnSchema, dbIndexedSchema, dbColumnTypeSchema } from "./db-schema.js";
|
|
9
9
|
import { sourceRdbAttrs } from "../source/source-schema.js";
|
|
10
10
|
export const dbProvider = {
|
|
11
11
|
id: "metaobjects-db",
|
|
12
12
|
dependencies: ["metaobjects-core-types"],
|
|
13
|
-
description: "DB-domain attributes — @column / @db.indexed on fields, @table/@kind/@role/@schema on source.rdb.",
|
|
13
|
+
description: "DB-domain attributes — @column / @db.indexed / @dbColumnType on fields, @table/@kind/@role/@schema on source.rdb.",
|
|
14
14
|
registerTypes(registry) {
|
|
15
15
|
for (const subType of FIELD_SUBTYPES) {
|
|
16
16
|
registry.extend(TYPE_FIELD, subType, {
|
|
17
|
-
attributes: [columnSchema, dbIndexedSchema],
|
|
17
|
+
attributes: [columnSchema, dbIndexedSchema, dbColumnTypeSchema],
|
|
18
18
|
});
|
|
19
19
|
}
|
|
20
20
|
// source.rdb — @table/@kind/@role/@schema attrs.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"db-provider.js","sourceRoot":"","sources":["../../../src/persistence/db/db-provider.ts"],"names":[],"mappings":"AAAA,2EAA2E;AAC3E,6EAA6E;AAC7E,qEAAqE;AACrE,qDAAqD;AAIrD,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACrE,OAAO,EAAE,cAAc,EAAE,MAAM,qCAAqC,CAAC;AACrE,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"db-provider.js","sourceRoot":"","sources":["../../../src/persistence/db/db-provider.ts"],"names":[],"mappings":"AAAA,2EAA2E;AAC3E,6EAA6E;AAC7E,qEAAqE;AACrE,qDAAqD;AAIrD,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACrE,OAAO,EAAE,cAAc,EAAE,MAAM,qCAAqC,CAAC;AACrE,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACnF,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAE5D,MAAM,CAAC,MAAM,UAAU,GAAyB;IAC9C,EAAE,EAAE,gBAAgB;IACpB,YAAY,EAAE,CAAC,wBAAwB,CAAC;IACxC,WAAW,EACT,mHAAmH;IACrH,aAAa,CAAC,QAAsB;QAClC,KAAK,MAAM,OAAO,IAAI,cAAc,EAAE,CAAC;YACrC,QAAQ,CAAC,MAAM,CAAC,UAAU,EAAE,OAAO,EAAE;gBACnC,UAAU,EAAE,CAAC,YAAY,EAAE,eAAe,EAAE,kBAAkB,CAAC;aAChE,CAAC,CAAC;QACL,CAAC;QACD,iDAAiD;QACjD,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE,kBAAkB,EAAE;YAC/C,UAAU,EAAE,CAAC,GAAG,cAAc,CAAC;SAChC,CAAC,CAAC;IACL,CAAC;CACF,CAAC"}
|
|
@@ -3,4 +3,12 @@ import type { AttrSchema } from "../../registry.js";
|
|
|
3
3
|
export declare const columnSchema: AttrSchema;
|
|
4
4
|
/** `@db.indexed` — suppress the @filterable-without-index warning; on every field subtype. */
|
|
5
5
|
export declare const dbIndexedSchema: AttrSchema;
|
|
6
|
+
/**
|
|
7
|
+
* R6 Plan 2b: `@dbColumnType` — physical DB column-type override on every field
|
|
8
|
+
* subtype. The legal value depends on the field's logical subtype, so the
|
|
9
|
+
* subtype × value pairing is validated own-only by the loader
|
|
10
|
+
* (validateAttrSchema → ERR_BAD_ATTR_VALUE), not by a flat `allowedValues` set.
|
|
11
|
+
* The string valueType keeps the schema's type check intact.
|
|
12
|
+
*/
|
|
13
|
+
export declare const dbColumnTypeSchema: AttrSchema;
|
|
6
14
|
//# sourceMappingURL=db-schema.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"db-schema.d.ts","sourceRoot":"","sources":["../../../src/persistence/db/db-schema.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"db-schema.d.ts","sourceRoot":"","sources":["../../../src/persistence/db/db-schema.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAYpD,4EAA4E;AAC5E,eAAO,MAAM,YAAY,EAAE,UAM1B,CAAC;AAEF,8FAA8F;AAC9F,eAAO,MAAM,eAAe,EAAE,UAM7B,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,kBAAkB,EAAE,UAShC,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// DB-domain attribute schemas — registered by dbProvider (db-provider.ts),
|
|
2
2
|
// not the core metamodel.
|
|
3
3
|
import { ATTR_SUBTYPE_STRING, ATTR_SUBTYPE_BOOLEAN, } from "../../core/attr/attr-constants.js";
|
|
4
|
-
import { FIELD_ATTR_COLUMN, FIELD_ATTR_DB_INDEXED, } from "./db-constants.js";
|
|
4
|
+
import { FIELD_ATTR_COLUMN, FIELD_ATTR_DB_INDEXED, FIELD_ATTR_DB_COLUMN_TYPE, DB_COLUMN_TYPE_VALUES, } from "./db-constants.js";
|
|
5
5
|
/** `@column` — column-name override on every field subtype (source.rdb). */
|
|
6
6
|
export const columnSchema = {
|
|
7
7
|
name: FIELD_ATTR_COLUMN,
|
|
@@ -16,4 +16,20 @@ export const dbIndexedSchema = {
|
|
|
16
16
|
required: false,
|
|
17
17
|
description: "When true, suppress the @filterable-without-index Loader warning (the field is indexed by other means).",
|
|
18
18
|
};
|
|
19
|
+
/**
|
|
20
|
+
* R6 Plan 2b: `@dbColumnType` — physical DB column-type override on every field
|
|
21
|
+
* subtype. The legal value depends on the field's logical subtype, so the
|
|
22
|
+
* subtype × value pairing is validated own-only by the loader
|
|
23
|
+
* (validateAttrSchema → ERR_BAD_ATTR_VALUE), not by a flat `allowedValues` set.
|
|
24
|
+
* The string valueType keeps the schema's type check intact.
|
|
25
|
+
*/
|
|
26
|
+
export const dbColumnTypeSchema = {
|
|
27
|
+
name: FIELD_ATTR_DB_COLUMN_TYPE,
|
|
28
|
+
valueType: ATTR_SUBTYPE_STRING,
|
|
29
|
+
required: false,
|
|
30
|
+
description: "Physical DB column-type override (ADR-0013 escape hatch). Legal values are " +
|
|
31
|
+
`${DB_COLUMN_TYPE_VALUES.join(" | ")}, each legal only on a specific logical ` +
|
|
32
|
+
"field subtype (uuid/jsonb on field.string, timestamp_with_tz on field.timestamp). " +
|
|
33
|
+
"The logical field type and its native binding are unchanged.",
|
|
34
|
+
};
|
|
19
35
|
//# sourceMappingURL=db-schema.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"db-schema.js","sourceRoot":"","sources":["../../../src/persistence/db/db-schema.ts"],"names":[],"mappings":"AAAA,2EAA2E;AAC3E,0BAA0B;AAG1B,OAAO,EACL,mBAAmB,EACnB,oBAAoB,GACrB,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EACL,iBAAiB,EACjB,qBAAqB,GACtB,MAAM,mBAAmB,CAAC;AAE3B,4EAA4E;AAC5E,MAAM,CAAC,MAAM,YAAY,GAAe;IACtC,IAAI,EAAE,iBAAiB;IACvB,SAAS,EAAE,mBAAmB;IAC9B,QAAQ,EAAE,KAAK;IACf,WAAW,EACT,4GAA4G;CAC/G,CAAC;AAEF,8FAA8F;AAC9F,MAAM,CAAC,MAAM,eAAe,GAAe;IACzC,IAAI,EAAE,qBAAqB;IAC3B,SAAS,EAAE,oBAAoB;IAC/B,QAAQ,EAAE,KAAK;IACf,WAAW,EACT,yGAAyG;CAC5G,CAAC"}
|
|
1
|
+
{"version":3,"file":"db-schema.js","sourceRoot":"","sources":["../../../src/persistence/db/db-schema.ts"],"names":[],"mappings":"AAAA,2EAA2E;AAC3E,0BAA0B;AAG1B,OAAO,EACL,mBAAmB,EACnB,oBAAoB,GACrB,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EACL,iBAAiB,EACjB,qBAAqB,EACrB,yBAAyB,EACzB,qBAAqB,GACtB,MAAM,mBAAmB,CAAC;AAE3B,4EAA4E;AAC5E,MAAM,CAAC,MAAM,YAAY,GAAe;IACtC,IAAI,EAAE,iBAAiB;IACvB,SAAS,EAAE,mBAAmB;IAC9B,QAAQ,EAAE,KAAK;IACf,WAAW,EACT,4GAA4G;CAC/G,CAAC;AAEF,8FAA8F;AAC9F,MAAM,CAAC,MAAM,eAAe,GAAe;IACzC,IAAI,EAAE,qBAAqB;IAC3B,SAAS,EAAE,oBAAoB;IAC/B,QAAQ,EAAE,KAAK;IACf,WAAW,EACT,yGAAyG;CAC5G,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAe;IAC5C,IAAI,EAAE,yBAAyB;IAC/B,SAAS,EAAE,mBAAmB;IAC9B,QAAQ,EAAE,KAAK;IACf,WAAW,EACT,6EAA6E;QAC7E,GAAG,qBAAqB,CAAC,IAAI,CAAC,KAAK,CAAC,0CAA0C;QAC9E,oFAAoF;QACpF,8DAA8D;CACjE,CAAC"}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { MetaData } from "../../shared/meta-data.js";
|
|
2
2
|
export declare class MetaSource extends MetaData {
|
|
3
|
-
/** Physical SQL table/view name from @table
|
|
3
|
+
/** Physical SQL table/view name from the legacy @table attr. Kept as a
|
|
4
|
+
* back-compat accessor that reads ONLY the @table slot — callers should
|
|
5
|
+
* use physicalName for the FR-016 four-step rule. */
|
|
4
6
|
get tableName(): string | undefined;
|
|
5
7
|
/**
|
|
6
8
|
* The effective kind for this source: the value of `@kind`, defaulting to
|
|
@@ -16,5 +18,17 @@ export declare class MetaSource extends MetaData {
|
|
|
16
18
|
isReadOnly(): boolean;
|
|
17
19
|
/** True when this source is writable (i.e. not read-only). */
|
|
18
20
|
isWritable(): boolean;
|
|
21
|
+
/**
|
|
22
|
+
* Resolved physical SQL name for this source, following the FR-016 / ADR-0018
|
|
23
|
+
* four-step rule:
|
|
24
|
+
* 1. Kind-matching alias (e.g. @proc when @kind: "storedProc").
|
|
25
|
+
* 2. Legacy @table for non-table kind (pre-1.0 fallback).
|
|
26
|
+
* 3. Source's bare structural `name` via snake_case.
|
|
27
|
+
* 4. Owning entity's name via pluralize(snake_case).
|
|
28
|
+
*
|
|
29
|
+
* Callers needing the legacy raw @table slot only should use `tableName`;
|
|
30
|
+
* codegen / migrate / runtime should use `physicalName`.
|
|
31
|
+
*/
|
|
32
|
+
get physicalName(): string;
|
|
19
33
|
}
|
|
20
34
|
//# 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":"
|
|
1
|
+
{"version":3,"file":"meta-source.d.ts","sourceRoot":"","sources":["../../../src/persistence/source/meta-source.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AA0BrD,qBAAa,UAAW,SAAQ,QAAQ;IACtC;;0DAEsD;IACtD,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;IAIrB;;;;;;;;;;OAUG;IACH,IAAI,YAAY,IAAI,MAAM,CA8BzB;CACF"}
|
|
@@ -1,12 +1,25 @@
|
|
|
1
1
|
// MetaSource — concrete node class for type=source nodes.
|
|
2
2
|
// Declares where an object's data lives (Project E).
|
|
3
|
-
// source.rdb uses
|
|
3
|
+
// source.rdb uses kind-aware physical-name aliases + @kind/@role/@schema;
|
|
4
|
+
// read-only-ness is derived from @kind.
|
|
4
5
|
//
|
|
5
6
|
// Extends MetaData directly: no model wrapper, no metaOf() indirection.
|
|
6
7
|
import { MetaData } from "../../shared/meta-data.js";
|
|
7
|
-
import {
|
|
8
|
+
import { pluralize, toSnakeCase } from "../../naming.js";
|
|
9
|
+
import { SOURCE_ATTR_TABLE, SOURCE_ATTR_VIEW, SOURCE_ATTR_MATERIALIZED_VIEW, SOURCE_ATTR_PROC, SOURCE_ATTR_FUNCTION, SOURCE_ATTR_KIND, SOURCE_ATTR_ROLE, SOURCE_READ_ONLY_KINDS, DEFAULT_SOURCE_KIND, DEFAULT_SOURCE_ROLE, PHYSICAL_NAME_ATTR_BY_KIND, } from "./source-constants.js";
|
|
10
|
+
/** Every kind-aware physical-name alias key, ordered for deterministic
|
|
11
|
+
* iteration (matches the SOURCE_RDB_KINDS order). */
|
|
12
|
+
const ALL_PHYSICAL_NAME_ALIASES = [
|
|
13
|
+
SOURCE_ATTR_TABLE,
|
|
14
|
+
SOURCE_ATTR_VIEW,
|
|
15
|
+
SOURCE_ATTR_MATERIALIZED_VIEW,
|
|
16
|
+
SOURCE_ATTR_PROC,
|
|
17
|
+
SOURCE_ATTR_FUNCTION,
|
|
18
|
+
];
|
|
8
19
|
export class MetaSource extends MetaData {
|
|
9
|
-
/** Physical SQL table/view name from @table
|
|
20
|
+
/** Physical SQL table/view name from the legacy @table attr. Kept as a
|
|
21
|
+
* back-compat accessor that reads ONLY the @table slot — callers should
|
|
22
|
+
* use physicalName for the FR-016 four-step rule. */
|
|
10
23
|
get tableName() {
|
|
11
24
|
const v = this.ownAttr(SOURCE_ATTR_TABLE);
|
|
12
25
|
return typeof v === "string" && v !== "" ? v : undefined;
|
|
@@ -35,5 +48,44 @@ export class MetaSource extends MetaData {
|
|
|
35
48
|
isWritable() {
|
|
36
49
|
return !this.isReadOnly();
|
|
37
50
|
}
|
|
51
|
+
/**
|
|
52
|
+
* Resolved physical SQL name for this source, following the FR-016 / ADR-0018
|
|
53
|
+
* four-step rule:
|
|
54
|
+
* 1. Kind-matching alias (e.g. @proc when @kind: "storedProc").
|
|
55
|
+
* 2. Legacy @table for non-table kind (pre-1.0 fallback).
|
|
56
|
+
* 3. Source's bare structural `name` via snake_case.
|
|
57
|
+
* 4. Owning entity's name via pluralize(snake_case).
|
|
58
|
+
*
|
|
59
|
+
* Callers needing the legacy raw @table slot only should use `tableName`;
|
|
60
|
+
* codegen / migrate / runtime should use `physicalName`.
|
|
61
|
+
*/
|
|
62
|
+
get physicalName() {
|
|
63
|
+
const kind = this.effectiveKind;
|
|
64
|
+
// Step 1: kind-matching alias.
|
|
65
|
+
const canonicalAttr = PHYSICAL_NAME_ATTR_BY_KIND.get(kind);
|
|
66
|
+
if (canonicalAttr !== undefined) {
|
|
67
|
+
const v = this.ownAttr(canonicalAttr);
|
|
68
|
+
if (typeof v === "string" && v !== "")
|
|
69
|
+
return v;
|
|
70
|
+
}
|
|
71
|
+
// Step 2: legacy @table for non-table kind.
|
|
72
|
+
if (canonicalAttr !== SOURCE_ATTR_TABLE) {
|
|
73
|
+
const legacy = this.ownAttr(SOURCE_ATTR_TABLE);
|
|
74
|
+
if (typeof legacy === "string" && legacy !== "")
|
|
75
|
+
return legacy;
|
|
76
|
+
}
|
|
77
|
+
// Step 3: source's structural `name` via snake_case (no pluralization —
|
|
78
|
+
// the source's name IS the logical name).
|
|
79
|
+
if (this.name !== "") {
|
|
80
|
+
return toSnakeCase(this.name);
|
|
81
|
+
}
|
|
82
|
+
// Step 4: owning entity's name via pluralize(snake_case). The MetaData
|
|
83
|
+
// parent of a source is always the entity that declared it.
|
|
84
|
+
const owner = this.parent;
|
|
85
|
+
if (owner !== undefined && owner.name !== "") {
|
|
86
|
+
return pluralize(toSnakeCase(owner.name));
|
|
87
|
+
}
|
|
88
|
+
return "";
|
|
89
|
+
}
|
|
38
90
|
}
|
|
39
91
|
//# 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":"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"}
|
|
@@ -7,12 +7,26 @@ export type SourceSubType = (typeof SOURCE_SUBTYPES)[number];
|
|
|
7
7
|
export declare const SOURCE_ATTR_SCHEMA = "schema";
|
|
8
8
|
/** Default Postgres schema when @schema is omitted from a source. */
|
|
9
9
|
export declare const DEFAULT_DB_SCHEMA_POSTGRES = "public";
|
|
10
|
-
/** Physical table
|
|
10
|
+
/** Physical SQL table name. Canonical attr for @kind: "table" (default). */
|
|
11
11
|
export declare const SOURCE_ATTR_TABLE = "table";
|
|
12
|
+
/** Physical SQL view name. Canonical attr for @kind: "view". */
|
|
13
|
+
export declare const SOURCE_ATTR_VIEW = "view";
|
|
14
|
+
/** Physical SQL materialized-view name. Canonical attr for @kind: "materializedView". */
|
|
15
|
+
export declare const SOURCE_ATTR_MATERIALIZED_VIEW = "materializedView";
|
|
16
|
+
/** Physical SQL stored-procedure name. Canonical attr for @kind: "storedProc". */
|
|
17
|
+
export declare const SOURCE_ATTR_PROC = "proc";
|
|
18
|
+
/** Physical SQL table-function name. Canonical attr for @kind: "tableFunction". */
|
|
19
|
+
export declare const SOURCE_ATTR_FUNCTION = "function";
|
|
12
20
|
/** Object kind within the rdb paradigm; read-only-ness is derived from it. */
|
|
13
21
|
export declare const SOURCE_ATTR_KIND = "kind";
|
|
14
22
|
/** Multi-source role; exactly one primary per object. */
|
|
15
23
|
export declare const SOURCE_ATTR_ROLE = "role";
|
|
24
|
+
/** FR-015: reference to an object.value describing the input shape of a callable
|
|
25
|
+
* source. Required for @kind: "storedProc" | "tableFunction" that take args;
|
|
26
|
+
* ignored for non-callable kinds. Wire-format symmetric with template.@payloadRef
|
|
27
|
+
* (FR-004) — the typed-input pattern reuses object.value rather than minting a
|
|
28
|
+
* new parameter.* node type. */
|
|
29
|
+
export declare const SOURCE_ATTR_PARAMETER_REF = "parameterRef";
|
|
16
30
|
export declare const SOURCE_KIND_TABLE = "table";
|
|
17
31
|
export declare const SOURCE_KIND_VIEW = "view";
|
|
18
32
|
export declare const SOURCE_KIND_MATERIALIZED_VIEW = "materializedView";
|
|
@@ -20,6 +34,11 @@ export declare const SOURCE_KIND_STORED_PROC = "storedProc";
|
|
|
20
34
|
export declare const SOURCE_KIND_TABLE_FUNCTION = "tableFunction";
|
|
21
35
|
export declare const SOURCE_RDB_KINDS: readonly ["table", "view", "materializedView", "storedProc", "tableFunction"];
|
|
22
36
|
export type SourceRdbKind = (typeof SOURCE_RDB_KINDS)[number];
|
|
37
|
+
/** Map @kind → canonical kind-aware physical-name attr key (FR-016 / ADR-0018).
|
|
38
|
+
* Drives the four-step physical-name resolution rule and the canonical-serializer
|
|
39
|
+
* per-kind rewrite. The single internal physical-name "slot" on a source is the
|
|
40
|
+
* value of whichever alias matches the source's @kind. */
|
|
41
|
+
export declare const PHYSICAL_NAME_ATTR_BY_KIND: ReadonlyMap<string, string>;
|
|
23
42
|
/** rdb @kind default when omitted (writable table). */
|
|
24
43
|
export declare const DEFAULT_SOURCE_KIND = "table";
|
|
25
44
|
/** Kinds whose source is read-only (codegen emits read-only model/queries/routes). */
|
|
@@ -1 +1 @@
|
|
|
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;
|
|
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;AAiBnD,4EAA4E;AAC5E,eAAO,MAAM,iBAAiB,UAAU,CAAC;AACzC,gEAAgE;AAChE,eAAO,MAAM,gBAAgB,SAAS,CAAC;AACvC,yFAAyF;AACzF,eAAO,MAAM,6BAA6B,qBAAqB,CAAC;AAChE,kFAAkF;AAClF,eAAO,MAAM,gBAAgB,SAAS,CAAC;AACvC,mFAAmF;AACnF,eAAO,MAAM,oBAAoB,aAAa,CAAC;AAE/C,8EAA8E;AAC9E,eAAO,MAAM,gBAAgB,SAAS,CAAC;AACvC,yDAAyD;AACzD,eAAO,MAAM,gBAAgB,SAAS,CAAC;AAEvC;;;;iCAIiC;AACjC,eAAO,MAAM,yBAAyB,iBAAiB,CAAC;AAExD,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;;;2DAG2D;AAC3D,eAAO,MAAM,0BAA0B,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAMjE,CAAC;AAEH,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"}
|
|
@@ -21,12 +21,36 @@ export const DEFAULT_DB_SCHEMA_POSTGRES = "public";
|
|
|
21
21
|
// ---------------------------------------------------------------------------
|
|
22
22
|
// Source v2 (ADR-0007) — rdb paradigm: kind, role, physical table name.
|
|
23
23
|
// ---------------------------------------------------------------------------
|
|
24
|
-
|
|
24
|
+
// FR-016 / ADR-0007 point 2: the source's "logical name" is the structural
|
|
25
|
+
// `name` field every MetaData node already carries — accessed via `source.name`,
|
|
26
|
+
// NOT an @-attr. (An @-attr would conflict with the ERR_RESERVED_ATTR rule for
|
|
27
|
+
// the reserved structural key `name`.) See the four-step physical-name
|
|
28
|
+
// resolution rule on MetaSource.physicalName.
|
|
29
|
+
// --- Per-kind physical-name aliases (FR-016 / ADR-0018) -----------------------
|
|
30
|
+
// One canonical attr key per rdb @kind. The single internal physical-name
|
|
31
|
+
// "slot" on the source is filled by whichever alias matches @kind; the
|
|
32
|
+
// canonical serializer emits the kind-matching alias regardless of which
|
|
33
|
+
// spelling was on input.
|
|
34
|
+
/** Physical SQL table name. Canonical attr for @kind: "table" (default). */
|
|
25
35
|
export const SOURCE_ATTR_TABLE = "table";
|
|
36
|
+
/** Physical SQL view name. Canonical attr for @kind: "view". */
|
|
37
|
+
export const SOURCE_ATTR_VIEW = "view";
|
|
38
|
+
/** Physical SQL materialized-view name. Canonical attr for @kind: "materializedView". */
|
|
39
|
+
export const SOURCE_ATTR_MATERIALIZED_VIEW = "materializedView";
|
|
40
|
+
/** Physical SQL stored-procedure name. Canonical attr for @kind: "storedProc". */
|
|
41
|
+
export const SOURCE_ATTR_PROC = "proc";
|
|
42
|
+
/** Physical SQL table-function name. Canonical attr for @kind: "tableFunction". */
|
|
43
|
+
export const SOURCE_ATTR_FUNCTION = "function";
|
|
26
44
|
/** Object kind within the rdb paradigm; read-only-ness is derived from it. */
|
|
27
45
|
export const SOURCE_ATTR_KIND = "kind";
|
|
28
46
|
/** Multi-source role; exactly one primary per object. */
|
|
29
47
|
export const SOURCE_ATTR_ROLE = "role";
|
|
48
|
+
/** FR-015: reference to an object.value describing the input shape of a callable
|
|
49
|
+
* source. Required for @kind: "storedProc" | "tableFunction" that take args;
|
|
50
|
+
* ignored for non-callable kinds. Wire-format symmetric with template.@payloadRef
|
|
51
|
+
* (FR-004) — the typed-input pattern reuses object.value rather than minting a
|
|
52
|
+
* new parameter.* node type. */
|
|
53
|
+
export const SOURCE_ATTR_PARAMETER_REF = "parameterRef";
|
|
30
54
|
export const SOURCE_KIND_TABLE = "table";
|
|
31
55
|
export const SOURCE_KIND_VIEW = "view";
|
|
32
56
|
export const SOURCE_KIND_MATERIALIZED_VIEW = "materializedView";
|
|
@@ -39,6 +63,17 @@ export const SOURCE_RDB_KINDS = [
|
|
|
39
63
|
SOURCE_KIND_STORED_PROC,
|
|
40
64
|
SOURCE_KIND_TABLE_FUNCTION,
|
|
41
65
|
];
|
|
66
|
+
/** Map @kind → canonical kind-aware physical-name attr key (FR-016 / ADR-0018).
|
|
67
|
+
* Drives the four-step physical-name resolution rule and the canonical-serializer
|
|
68
|
+
* per-kind rewrite. The single internal physical-name "slot" on a source is the
|
|
69
|
+
* value of whichever alias matches the source's @kind. */
|
|
70
|
+
export const PHYSICAL_NAME_ATTR_BY_KIND = new Map([
|
|
71
|
+
[SOURCE_KIND_TABLE, SOURCE_ATTR_TABLE],
|
|
72
|
+
[SOURCE_KIND_VIEW, SOURCE_ATTR_VIEW],
|
|
73
|
+
[SOURCE_KIND_MATERIALIZED_VIEW, SOURCE_ATTR_MATERIALIZED_VIEW],
|
|
74
|
+
[SOURCE_KIND_STORED_PROC, SOURCE_ATTR_PROC],
|
|
75
|
+
[SOURCE_KIND_TABLE_FUNCTION, SOURCE_ATTR_FUNCTION],
|
|
76
|
+
]);
|
|
42
77
|
/** rdb @kind default when omitted (writable table). */
|
|
43
78
|
export const DEFAULT_SOURCE_KIND = SOURCE_KIND_TABLE;
|
|
44
79
|
/** Kinds whose source is read-only (codegen emits read-only model/queries/routes). */
|
|
@@ -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,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;
|
|
1
|
+
{"version":3,"file":"source-constants.js","sourceRoot":"","sources":["../../../src/persistence/source/source-constants.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +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;
|
|
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;AAkHpD,6EAA6E;AAC7E,eAAO,MAAM,cAAc,EAAE,UAAU,EAUtC,CAAC"}
|
|
@@ -1,13 +1,48 @@
|
|
|
1
1
|
// Source v2 attribute schemas — registered by dbProvider for source.rdb.
|
|
2
2
|
// Consumed via sourceRdbAttrs in db-provider.ts.
|
|
3
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
|
|
4
|
+
import { SOURCE_ATTR_TABLE, SOURCE_ATTR_VIEW, SOURCE_ATTR_MATERIALIZED_VIEW, SOURCE_ATTR_PROC, SOURCE_ATTR_FUNCTION, SOURCE_ATTR_KIND, SOURCE_ATTR_ROLE, SOURCE_ATTR_SCHEMA, SOURCE_ATTR_PARAMETER_REF, SOURCE_RDB_KINDS, SOURCE_ROLES, } from "./source-constants.js";
|
|
5
|
+
/** `@table` — physical SQL table name for @kind: "table" (default). FR-016: one
|
|
6
|
+
* of five kind-aware physical-name aliases; all write to the same internal slot.
|
|
7
|
+
* Pre-1.0 legacy: also accepted with non-table @kind (canonical-serializer
|
|
8
|
+
* rewrites; loader emits WARN_LEGACY_PHYSICAL_NAME_ALIAS). */
|
|
6
9
|
const tableSchema = {
|
|
7
10
|
name: SOURCE_ATTR_TABLE,
|
|
8
11
|
valueType: ATTR_SUBTYPE_STRING,
|
|
9
12
|
required: false,
|
|
10
|
-
description: "Physical SQL table
|
|
13
|
+
description: "Physical SQL table name for source.rdb @kind: \"table\" (default). FR-016: " +
|
|
14
|
+
"Defaults from the source's bare structural `name` via the project's columnNamingStrategy " +
|
|
15
|
+
"when omitted, then from the owning entity's name. Pre-1.0 legacy spelling for " +
|
|
16
|
+
"view/materializedView/storedProc/tableFunction kinds during the transition; " +
|
|
17
|
+
"canonical-serializer rewrites to the kind-matching alias.",
|
|
18
|
+
};
|
|
19
|
+
/** `@view` — physical SQL view name for @kind: "view" (FR-016 / ADR-0018). */
|
|
20
|
+
const viewSchema = {
|
|
21
|
+
name: SOURCE_ATTR_VIEW,
|
|
22
|
+
valueType: ATTR_SUBTYPE_STRING,
|
|
23
|
+
required: false,
|
|
24
|
+
description: "Physical SQL view name for source.rdb @kind: \"view\". Same internal slot as @table.",
|
|
25
|
+
};
|
|
26
|
+
/** `@materializedView` — physical SQL materialized-view name for @kind: "materializedView". */
|
|
27
|
+
const materializedViewSchema = {
|
|
28
|
+
name: SOURCE_ATTR_MATERIALIZED_VIEW,
|
|
29
|
+
valueType: ATTR_SUBTYPE_STRING,
|
|
30
|
+
required: false,
|
|
31
|
+
description: "Physical SQL materialized-view name for source.rdb @kind: \"materializedView\". Same internal slot as @table.",
|
|
32
|
+
};
|
|
33
|
+
/** `@proc` — physical SQL stored-procedure name for @kind: "storedProc". */
|
|
34
|
+
const procSchema = {
|
|
35
|
+
name: SOURCE_ATTR_PROC,
|
|
36
|
+
valueType: ATTR_SUBTYPE_STRING,
|
|
37
|
+
required: false,
|
|
38
|
+
description: "Physical SQL stored-procedure name for source.rdb @kind: \"storedProc\". Same internal slot as @table.",
|
|
39
|
+
};
|
|
40
|
+
/** `@function` — physical SQL table-function name for @kind: "tableFunction". */
|
|
41
|
+
const functionSchema = {
|
|
42
|
+
name: SOURCE_ATTR_FUNCTION,
|
|
43
|
+
valueType: ATTR_SUBTYPE_STRING,
|
|
44
|
+
required: false,
|
|
45
|
+
description: "Physical SQL table-function name for source.rdb @kind: \"tableFunction\". Same internal slot as @table.",
|
|
11
46
|
};
|
|
12
47
|
/** `@kind` — object kind within the rdb paradigm; drives read-only derivation. */
|
|
13
48
|
const kindSchema = {
|
|
@@ -32,6 +67,32 @@ const schemaSchema = {
|
|
|
32
67
|
required: false,
|
|
33
68
|
description: "Optional database schema name (e.g. 'catalog', 'public'). Postgres defaults to 'public'; SQLite rejects any non-default value.",
|
|
34
69
|
};
|
|
70
|
+
/** `@parameterRef` — name or FQN of an object.value describing the input shape
|
|
71
|
+
* of a callable source (FR-015). Required when @kind is "storedProc" or
|
|
72
|
+
* "tableFunction" and the proc takes args; ignored for non-callable kinds.
|
|
73
|
+
* Mirrors template.@payloadRef from FR-004. */
|
|
74
|
+
const parameterRefSchema = {
|
|
75
|
+
name: SOURCE_ATTR_PARAMETER_REF,
|
|
76
|
+
valueType: ATTR_SUBTYPE_STRING,
|
|
77
|
+
required: false,
|
|
78
|
+
description: "FR-015: name or FQN of an object.value describing the input shape of " +
|
|
79
|
+
"this source's callable interface. Permitted on @kind: \"storedProc\" / " +
|
|
80
|
+
"\"tableFunction\"; rejected on non-callable kinds (table / view / " +
|
|
81
|
+
"materializedView). Field children of the referenced object.value become " +
|
|
82
|
+
"the call-site parameter list in declaration order. Symmetric with " +
|
|
83
|
+
"template.@payloadRef in FR-004 — the typed-input pattern reuses " +
|
|
84
|
+
"object.value rather than minting a new parameter.* node type.",
|
|
85
|
+
};
|
|
35
86
|
/** All attr schemas for source.rdb, to be registered via registry.extend. */
|
|
36
|
-
export const sourceRdbAttrs = [
|
|
87
|
+
export const sourceRdbAttrs = [
|
|
88
|
+
tableSchema,
|
|
89
|
+
viewSchema,
|
|
90
|
+
materializedViewSchema,
|
|
91
|
+
procSchema,
|
|
92
|
+
functionSchema,
|
|
93
|
+
kindSchema,
|
|
94
|
+
roleSchema,
|
|
95
|
+
schemaSchema,
|
|
96
|
+
parameterRefSchema,
|
|
97
|
+
];
|
|
37
98
|
//# sourceMappingURL=source-schema.js.map
|
|
@@ -1 +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
|
|
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,6BAA6B,EAC7B,gBAAgB,EAChB,oBAAoB,EACpB,gBAAgB,EAChB,gBAAgB,EAChB,kBAAkB,EAClB,yBAAyB,EACzB,gBAAgB,EAChB,YAAY,GACb,MAAM,uBAAuB,CAAC;AAE/B;;;+DAG+D;AAC/D,MAAM,WAAW,GAAe;IAC9B,IAAI,EAAE,iBAAiB;IACvB,SAAS,EAAE,mBAAmB;IAC9B,QAAQ,EAAE,KAAK;IACf,WAAW,EACT,6EAA6E;QAC7E,2FAA2F;QAC3F,gFAAgF;QAChF,8EAA8E;QAC9E,2DAA2D;CAC9D,CAAC;AAEF,8EAA8E;AAC9E,MAAM,UAAU,GAAe;IAC7B,IAAI,EAAE,gBAAgB;IACtB,SAAS,EAAE,mBAAmB;IAC9B,QAAQ,EAAE,KAAK;IACf,WAAW,EAAE,sFAAsF;CACpG,CAAC;AAEF,+FAA+F;AAC/F,MAAM,sBAAsB,GAAe;IACzC,IAAI,EAAE,6BAA6B;IACnC,SAAS,EAAE,mBAAmB;IAC9B,QAAQ,EAAE,KAAK;IACf,WAAW,EACT,+GAA+G;CAClH,CAAC;AAEF,4EAA4E;AAC5E,MAAM,UAAU,GAAe;IAC7B,IAAI,EAAE,gBAAgB;IACtB,SAAS,EAAE,mBAAmB;IAC9B,QAAQ,EAAE,KAAK;IACf,WAAW,EACT,wGAAwG;CAC3G,CAAC;AAEF,iFAAiF;AACjF,MAAM,cAAc,GAAe;IACjC,IAAI,EAAE,oBAAoB;IAC1B,SAAS,EAAE,mBAAmB;IAC9B,QAAQ,EAAE,KAAK;IACf,WAAW,EACT,yGAAyG;CAC5G,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;;;gDAGgD;AAChD,MAAM,kBAAkB,GAAe;IACrC,IAAI,EAAE,yBAAyB;IAC/B,SAAS,EAAE,mBAAmB;IAC9B,QAAQ,EAAE,KAAK;IACf,WAAW,EACT,uEAAuE;QACvE,yEAAyE;QACzE,oEAAoE;QACpE,0EAA0E;QAC1E,oEAAoE;QACpE,kEAAkE;QAClE,+DAA+D;CAClE,CAAC;AAEF,6EAA6E;AAC7E,MAAM,CAAC,MAAM,cAAc,GAAiB;IAC1C,WAAW;IACX,UAAU;IACV,sBAAsB;IACtB,UAAU;IACV,cAAc;IACd,UAAU;IACV,UAAU;IACV,YAAY;IACZ,kBAAkB;CACnB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validate-source-parameter-ref.d.ts","sourceRoot":"","sources":["../../../src/persistence/source/validate-source-parameter-ref.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AA6B7C,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,QAAQ,GAAG,UAAU,EAAE,CA+FvE"}
|