@metaobjectsdev/metadata 0.20.11 → 0.20.13

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.
@@ -0,0 +1,7 @@
1
+ import type { MetaData } from "../../shared/meta-data.js";
2
+ import type { LoaderWarning } from "../../source.js";
3
+ export interface EnumNormalizeAmbiguityResult {
4
+ warnings: LoaderWarning[];
5
+ }
6
+ export declare function validateEnumNormalizeAmbiguity(root: MetaData): EnumNormalizeAmbiguityResult;
7
+ //# sourceMappingURL=validate-enum-normalize-ambiguity.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate-enum-normalize-ambiguity.d.ts","sourceRoot":"","sources":["../../../src/core/field/validate-enum-normalize-ambiguity.ts"],"names":[],"mappings":"AA4BA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAUrD,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,EAAE,aAAa,EAAE,CAAC;CAC3B;AA2ED,wBAAgB,8BAA8B,CAAC,IAAI,EAAE,QAAQ,GAAG,4BAA4B,CAgD3F"}
@@ -0,0 +1,153 @@
1
+ // Validation pass: enum vocabularies that are ambiguous under `@normalize: strip`.
2
+ //
3
+ // Code:
4
+ // WARN_ENUM_NORMALIZE_AMBIGUOUS — a field.enum whose @values contains a member
5
+ // equal to the concatenation of two or more OTHER members once normalized.
6
+ //
7
+ // Why this is a real hazard. `strip` (the DEFAULT normalize mode) upper-cases and
8
+ // keeps only [A-Z0-9], so it erases every separator. That is what makes
9
+ // "SOCIAL-ATTACK" match the member SOCIAL_ATTACK — the behavior we want. But it
10
+ // also means a DELIMITED value collapses into one token, and if that token happens
11
+ // to equal another member, the extract engine coerces it successfully:
12
+ //
13
+ // values = {READ, WRITE, READWRITE}; input "read|write" -> READWRITE
14
+ //
15
+ // The field is reported EXTRACTED (not MALFORMED) with a plausible, wrong value —
16
+ // wrong-and-green, the worst failure mode the engine can produce. A consumer
17
+ // branching on field state is misled.
18
+ //
19
+ // It is detectable from metadata alone, so we warn the author at declaration time
20
+ // rather than leaving it to be discovered in production.
21
+ //
22
+ // WARNING, not error: such a vocabulary is legal and completely unambiguous for
23
+ // exact matching — only normalize-based coercion is at risk, and the author may
24
+ // have no delimited input at all. The fix, when it matters, is `@normalize: collapse`.
25
+ //
26
+ // Mode gating: `collapse` folds only [\s_-]+ and `none` folds nothing, so neither
27
+ // can merge tokens across a delimiter like "|" — both are skipped.
28
+ import { TYPE_FIELD } from "../../shared/base-types.js";
29
+ import { TYPE_OBJECT } from "../../shared/base-types.js";
30
+ import { FIELD_SUBTYPE_ENUM, FIELD_ATTR_VALUES, FIELD_ATTR_NORMALIZE, NORMALIZE_DEFAULT, } from "./field-constants.js";
31
+ /**
32
+ * `strip` normalization: ASCII upper-case, then keep only [A-Z0-9].
33
+ * Mirrors the extract engine's Normalize.STRIP exactly — the two must agree or the
34
+ * guard would warn about collisions the engine does not actually have (and miss
35
+ * ones it does).
36
+ */
37
+ function stripNormalize(s) {
38
+ let out = "";
39
+ // ASCII fold (a-z -> A-Z), NOT toUpperCase(): the engine's Normalize.asciiUpper
40
+ // is deliberately ASCII-only, and locale uppercasing diverges on non-ASCII input
41
+ // (e.g. "ß" -> "SS" in JS/Python/Java but unchanged in C#). Unreachable for legal
42
+ // metadata — ENUM_MEMBER_PATTERN is ASCII — but keeping the fold identical is
43
+ // what makes "mirrors Normalize.STRIP" true rather than approximately true.
44
+ for (const ch of s) {
45
+ if (ch >= "a" && ch <= "z")
46
+ out += String.fromCharCode(ch.charCodeAt(0) - 32);
47
+ else if ((ch >= "A" && ch <= "Z") || (ch >= "0" && ch <= "9"))
48
+ out += ch;
49
+ }
50
+ return out;
51
+ }
52
+ /**
53
+ * Word-break: can `target` be segmented into two or more entries of `dict`?
54
+ * Returns the segmentation (the member names, in order) or undefined.
55
+ *
56
+ * Word-break rather than a pairwise scan so a three-way collision (A + B + C == ABC)
57
+ * is caught too. O(len^2 * |dict|) — trivial at vocabulary sizes, and deterministic,
58
+ * which matters because every port must produce the identical warning.
59
+ */
60
+ function segmentInto(target, dict) {
61
+ const n = target.length;
62
+ // best[i] = the segmentation of target[0..i) with the FEWEST segments, or undefined.
63
+ const best = new Array(n + 1).fill(undefined);
64
+ best[0] = [];
65
+ for (let i = 0; i < n; i++) {
66
+ const prefix = best[i];
67
+ if (prefix === undefined)
68
+ continue;
69
+ for (const d of dict) {
70
+ const end = i + d.stripped.length;
71
+ if (end > n)
72
+ continue;
73
+ if (target.startsWith(d.stripped, i)) {
74
+ const cand = [...prefix, d.member];
75
+ const cur = best[end];
76
+ if (cur === undefined || cand.length < cur.length)
77
+ best[end] = cand;
78
+ }
79
+ }
80
+ }
81
+ const full = best[n];
82
+ // Two or more segments: a single-segment "segmentation" is just another member
83
+ // that strips to the same string, which is a different (duplicate) concern.
84
+ return full !== undefined && full.length >= 2 ? full : undefined;
85
+ }
86
+ /**
87
+ * Effective `@normalize` for an enum field: own/inherited → owning object → default.
88
+ * `explicit` distinguishes an authored mode from the fallback, so the warning does not
89
+ * tell an author "(the default)" about a value they set deliberately.
90
+ */
91
+ function effectiveNormalize(field) {
92
+ // ADR-0039: resolving accessor — an enum field that extends an abstract enum must
93
+ // see the super's @normalize, so this must NOT be ownAttrs().
94
+ const own = field.attr(FIELD_ATTR_NORMALIZE);
95
+ if (typeof own === "string")
96
+ return { mode: own, explicit: true };
97
+ const parent = field.parent;
98
+ if (parent !== undefined && parent.type === TYPE_OBJECT) {
99
+ const objMode = parent.attr(FIELD_ATTR_NORMALIZE);
100
+ if (typeof objMode === "string")
101
+ return { mode: objMode, explicit: true };
102
+ }
103
+ return { mode: NORMALIZE_DEFAULT, explicit: false };
104
+ }
105
+ export function validateEnumNormalizeAmbiguity(root) {
106
+ const warnings = [];
107
+ const visit = (node) => {
108
+ if (node.type === TYPE_FIELD && node.subType === FIELD_SUBTYPE_ENUM) {
109
+ // ADR-0039: own — check the vocabulary DECLARED here. A concrete enum that
110
+ // inherits @values via extends shares the super's member set, which was
111
+ // already checked when the super was declared; warning per declaration keeps
112
+ // one hazard to one warning instead of one per referring field.
113
+ const rawValues = node.ownAttrs().get(FIELD_ATTR_VALUES);
114
+ if (Array.isArray(rawValues) && rawValues.length > 1) {
115
+ const normalize = effectiveNormalize(node);
116
+ if (normalize.mode === NORMALIZE_DEFAULT) {
117
+ const entries = rawValues.map((m) => ({ member: String(m), stripped: stripNormalize(String(m)) }));
118
+ for (let i = 0; i < entries.length; i++) {
119
+ const self = entries[i];
120
+ if (self.stripped.length === 0)
121
+ continue; // e.g. "_" — nothing to collide with
122
+ // Exclude the member itself BY INDEX (not by value): two distinct
123
+ // members can strip to the same string, which is a separate concern.
124
+ const others = entries.filter((_, j) => j !== i).filter((e) => e.stripped.length > 0);
125
+ const seg = segmentInto(self.stripped, others);
126
+ if (seg !== undefined) {
127
+ warnings.push({
128
+ code: "WARN_ENUM_NORMALIZE_AMBIGUOUS",
129
+ message: `field.enum "${node.name}" member '${self.member}' is the concatenation of ` +
130
+ `${seg.map((s) => `'${s}'`).join(" + ")} under @${FIELD_ATTR_NORMALIZE}: ` +
131
+ `'${NORMALIZE_DEFAULT}'${normalize.explicit ? "" : " (the default)"}, which ` +
132
+ `erases separators. A delimited ` +
133
+ `value such as "${seg.map((s) => s.toLowerCase()).join("|")}" would coerce ` +
134
+ `silently to '${self.member}' and be reported as extracted rather than ` +
135
+ `malformed. Set @${FIELD_ATTR_NORMALIZE}: 'collapse' on this field if it can ` +
136
+ `receive delimited input.`,
137
+ source: node.source,
138
+ });
139
+ break; // one warning per declaring node — the first collision is enough to act on
140
+ }
141
+ }
142
+ }
143
+ }
144
+ }
145
+ // ADR-0039: own — a plain structural walk of what each node declares; resolving
146
+ // children() would re-visit inherited nodes at every referring field.
147
+ for (const child of node.ownChildren())
148
+ visit(child);
149
+ };
150
+ visit(root);
151
+ return { warnings };
152
+ }
153
+ //# sourceMappingURL=validate-enum-normalize-ambiguity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate-enum-normalize-ambiguity.js","sourceRoot":"","sources":["../../../src/core/field/validate-enum-normalize-ambiguity.ts"],"names":[],"mappings":"AAAA,mFAAmF;AACnF,EAAE;AACF,QAAQ;AACR,iFAAiF;AACjF,+EAA+E;AAC/E,EAAE;AACF,kFAAkF;AAClF,wEAAwE;AACxE,gFAAgF;AAChF,mFAAmF;AACnF,uEAAuE;AACvE,EAAE;AACF,0EAA0E;AAC1E,EAAE;AACF,kFAAkF;AAClF,6EAA6E;AAC7E,sCAAsC;AACtC,EAAE;AACF,kFAAkF;AAClF,yDAAyD;AACzD,EAAE;AACF,gFAAgF;AAChF,gFAAgF;AAChF,uFAAuF;AACvF,EAAE;AACF,kFAAkF;AAClF,mEAAmE;AAInE,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,EACL,kBAAkB,EAClB,iBAAiB,EACjB,oBAAoB,EACpB,iBAAiB,GAClB,MAAM,sBAAsB,CAAC;AAM9B;;;;;GAKG;AACH,SAAS,cAAc,CAAC,CAAS;IAC/B,IAAI,GAAG,GAAG,EAAE,CAAC;IACb,gFAAgF;IAChF,iFAAiF;IACjF,kFAAkF;IAClF,8EAA8E;IAC9E,4EAA4E;IAC5E,KAAK,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC;QACnB,IAAI,EAAE,IAAI,GAAG,IAAI,EAAE,IAAI,GAAG;YAAE,GAAG,IAAI,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;aACzE,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,EAAE,IAAI,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,EAAE,IAAI,GAAG,CAAC;YAAE,GAAG,IAAI,EAAE,CAAC;IAC3E,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,WAAW,CAClB,MAAc,EACd,IAAyD;IAEzD,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC;IACxB,qFAAqF;IACrF,MAAM,IAAI,GAA6B,IAAI,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACxE,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;IACb,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3B,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACvB,IAAI,MAAM,KAAK,SAAS;YAAE,SAAS;QACnC,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;YACrB,MAAM,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC;YAClC,IAAI,GAAG,GAAG,CAAC;gBAAE,SAAS;YACtB,IAAI,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC;gBACrC,MAAM,IAAI,GAAG,CAAC,GAAG,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;gBACnC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;gBACtB,IAAI,GAAG,KAAK,SAAS,IAAI,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM;oBAAE,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;YACtE,CAAC;QACH,CAAC;IACH,CAAC;IACD,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IACrB,+EAA+E;IAC/E,4EAA4E;IAC5E,OAAO,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;AACnE,CAAC;AAED;;;;GAIG;AACH,SAAS,kBAAkB,CAAC,KAAe;IACzC,kFAAkF;IAClF,8DAA8D;IAC9D,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;IAC7C,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IAClE,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;IAC5B,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;QACxD,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;QAClD,IAAI,OAAO,OAAO,KAAK,QAAQ;YAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IAC5E,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,iBAAiB,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;AACtD,CAAC;AAED,MAAM,UAAU,8BAA8B,CAAC,IAAc;IAC3D,MAAM,QAAQ,GAAoB,EAAE,CAAC;IAErC,MAAM,KAAK,GAAG,CAAC,IAAc,EAAQ,EAAE;QACrC,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU,IAAI,IAAI,CAAC,OAAO,KAAK,kBAAkB,EAAE,CAAC;YACpE,2EAA2E;YAC3E,wEAAwE;YACxE,6EAA6E;YAC7E,gEAAgE;YAChE,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;YACzD,IAAI,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACrD,MAAM,SAAS,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;gBAC3C,IAAI,SAAS,CAAC,IAAI,KAAK,iBAAiB,EAAE,CAAC;oBACzC,MAAM,OAAO,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;oBACnG,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;wBACxC,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,CAAE,CAAC;wBACzB,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC;4BAAE,SAAS,CAAC,qCAAqC;wBAC/E,kEAAkE;wBAClE,qEAAqE;wBACrE,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;wBACtF,MAAM,GAAG,GAAG,WAAW,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;wBAC/C,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;4BACtB,QAAQ,CAAC,IAAI,CAAC;gCACZ,IAAI,EAAE,+BAA+B;gCACrC,OAAO,EACL,eAAe,IAAI,CAAC,IAAI,aAAa,IAAI,CAAC,MAAM,4BAA4B;oCAC5E,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,oBAAoB,IAAI;oCAC1E,IAAI,iBAAiB,IAAI,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,gBAAgB,UAAU;oCAC7E,iCAAiC;oCACjC,kBAAkB,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,iBAAiB;oCAC5E,gBAAgB,IAAI,CAAC,MAAM,6CAA6C;oCACxE,mBAAmB,oBAAoB,uCAAuC;oCAC9E,0BAA0B;gCAC5B,MAAM,EAAE,IAAI,CAAC,MAAM;6BACpB,CAAC,CAAC;4BACH,MAAM,CAAC,2EAA2E;wBACpF,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QACD,gFAAgF;QAChF,sEAAsE;QACtE,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,WAAW,EAAE;YAAE,KAAK,CAAC,KAAK,CAAC,CAAC;IACvD,CAAC,CAAC;IAEF,KAAK,CAAC,IAAI,CAAC,CAAC;IACZ,OAAO,EAAE,QAAQ,EAAE,CAAC;AACtB,CAAC"}
package/dist/errors.d.ts CHANGED
@@ -2,7 +2,7 @@ import type { ErrorSource, LoaderError, NodeContext } from "./source.js";
2
2
  /** Stable, language-neutral error codes — mirrors fixtures/conformance/ERROR-CODES.json. */
3
3
  export declare const ERROR_CODES: readonly ["ERR_TOP_LEVEL_NOT_OBJECT", "ERR_UNKNOWN_TYPE", "ERR_UNKNOWN_SUBTYPE", "ERR_MISSING_SUBTYPE", "ERR_DUPLICATE_NAME", "ERR_UNRESOLVED_SUPER", "ERR_EXTENDS_TARGET_MISMATCH", "ERR_IDENTITY_NAME_REQUIRED", "ERR_TOO_MANY_OCCURRENCES", "ERR_PROJECTION_IDENTITY_NOT_EXTENDED", "ERR_IDENTITY_KEY_MISMATCH", "ERR_PROJECTION_SOURCE_WRITABLE", "ERR_INVALID_SUBTYPE_CHILD", "ERR_CHILD_NOT_ALLOWED", "ERR_UNKNOWN_ATTR", "ERR_BAD_ATTR_VALUE", "ERR_BAD_DEFAULT_SORT_FIELD", "ERR_PROVIDER_DEPENDENCY_CYCLE", "ERR_PROVIDER_DUPLICATE_ID", "ERR_PROVIDER_MISSING_DEPENDENCY", "ERR_PROVIDER_ATTR_CONFLICT", "ERR_MALFORMED_JSON", "ERR_MISSING_REQUIRED_ATTR", "ERR_SUBTYPE_RULE_VIOLATION", "ERR_OVERLAY_NO_TARGET", "ERR_MALFORMED_YAML", "ERR_INVALID_ORIGIN", "ERR_AMBIGUOUS_PATH", "ERR_ORIGIN_CARDINALITY", "ERR_EXTENDS_ORIGIN_MISMATCH", "ERR_PASSTHROUGH_TYPE_MISMATCH", "ERR_DERIVED_FIELD_NO_READ_SOURCE", "ERR_ENTITY_PRIMARY_SOURCE_READONLY", "ERR_INVALID_TEMPLATE", "ERR_INVALID_RELATIONSHIP", "ERR_INVALID_REFERENCE", "ERR_VAR_NOT_ON_PAYLOAD", "ERR_PAYLOAD_NAME_COLLISION", "ERR_PARTIAL_UNRESOLVED", "ERR_REQUIRED_SLOT_UNUSED", "ERR_OUTPUT_TAG_MISSING", "ERR_BAD_ATTR_FILTER", "ERR_STORAGE_FLATTENED_ARRAY", "ERR_STORAGE_WITHOUT_OBJECT_REF", "ERR_OBJECT_FIELD_WITHOUT_OBJECT_REF", "ERR_UNRESOLVED_OBJECT_REF", "ERR_RESERVED_ATTR", "ERR_SOURCE_NO_PRIMARY", "ERR_SOURCE_MULTIPLE_PRIMARY", "ERR_PHYSICAL_NAME_KIND_MISMATCH", "ERR_PHYSICAL_NAME_MULTIPLE", "ERR_READONLY_ASSIGNED_PRIMARY", "ERR_READONLY_DOWNGRADE", "ERR_PARAMETER_REF_UNRESOLVED", "ERR_PARAMETER_REF_NOT_VALUE_OBJECT", "ERR_PARAMETER_REF_ON_NON_CALLABLE_KIND", "ERR_DISCRIMINATOR_FIELD_NOT_FOUND", "ERR_DISCRIMINATOR_VALUE_DUPLICATE", "ERR_DISCRIMINATOR_VALUE_MISSING", "ERR_DISCRIMINATOR_VALUE_TYPE_MISMATCH", "ERR_YAML_COERCION", "ERR_MERGE_CONFLICT", "ERR_FILTERABLE_UNSUPPORTED_SUBTYPE", "ERR_REGISTRY_SEALED", "ERR_RELATIVE_REF_IN_CANONICAL", "ERR_INVALID_METAMODEL_CONSTRAINT", "ERR_INVALID_INDEX", "ERR_COMPUTED_TYPE_MISMATCH", "ERR_UNKNOWN_EXPR_NODE", "ERR_SQL_BODY_WITH_UNMANAGED", "ERR_SQL_BODY_ON_WRITABLE_KIND", "ERR_ORIGIN_UNDER_SQL_BODY", "ERR_ENUM_EXTENDS_VALUES_CONFLICT", "ERR_UNKNOWN"];
4
4
  /** Warning codes — same envelope shape as errors but advisory. */
5
- export declare const WARNING_CODES: readonly ["WARN_DUPLICATE_DECLARATION", "WARN_LEGACY", "WARN_LEGACY_PHYSICAL_NAME_ALIAS", "WARN_READONLY_VALUE_OBJECT", "WARN_ORIGIN_UNDER_UNMANAGED"];
5
+ export declare const WARNING_CODES: readonly ["WARN_DUPLICATE_DECLARATION", "WARN_LEGACY", "WARN_LEGACY_PHYSICAL_NAME_ALIAS", "WARN_READONLY_VALUE_OBJECT", "WARN_ORIGIN_UNDER_UNMANAGED", "WARN_ENUM_NORMALIZE_AMBIGUOUS"];
6
6
  export type WarningCode = (typeof WARNING_CODES)[number];
7
7
  export type ErrorCode = (typeof ERROR_CODES)[number];
8
8
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAEzE,4FAA4F;AAc5F,eAAO,MAAM,WAAW,6mEAyLd,CAAC;AAEX,kEAAkE;AAClE,eAAO,MAAM,aAAa,wJAsBhB,CAAC;AACX,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC;AAEzD,MAAM,MAAM,SAAS,GAAG,CAAC,OAAO,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC;AAErD;;;;;;;;;;;;;;GAcG;AACH,qBAAa,UAAW,SAAQ,KAAM,YAAW,WAAW;IAI1D,QAAQ,CAAC,IAAI,EAAE,SAAS,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;IACzC,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IAChC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,IAAI,CAAC,EAAE,WAAW,CAAC;gBAG1B,OAAO,EAAE,MAAM,EACf,IAAI,EAAE;QACJ,IAAI,EAAE,SAAS,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;QAChC,MAAM,EAAE,WAAW,CAAC;QACpB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;QACvB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,IAAI,CAAC,EAAE,WAAW,CAAC;KACpB;CAiBJ;AAED;;;;;GAKG;AACH,qBAAa,cAAe,SAAQ,KAAK;IACvC,QAAQ,CAAC,IAAI,EAAE,SAAS,GAAG,SAAS,CAAC;gBAEzB,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,SAAS,CAAA;KAAE;CAKzD"}
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAEzE,4FAA4F;AAc5F,eAAO,MAAM,WAAW,6mEAyLd,CAAC;AAEX,kEAAkE;AAClE,eAAO,MAAM,aAAa,yLA6BhB,CAAC;AACX,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC;AAEzD,MAAM,MAAM,SAAS,GAAG,CAAC,OAAO,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC;AAErD;;;;;;;;;;;;;;GAcG;AACH,qBAAa,UAAW,SAAQ,KAAM,YAAW,WAAW;IAI1D,QAAQ,CAAC,IAAI,EAAE,SAAS,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;IACzC,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IAChC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,IAAI,CAAC,EAAE,WAAW,CAAC;gBAG1B,OAAO,EAAE,MAAM,EACf,IAAI,EAAE;QACJ,IAAI,EAAE,SAAS,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;QAChC,MAAM,EAAE,WAAW,CAAC;QACpB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;QACvB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,IAAI,CAAC,EAAE,WAAW,CAAC;KACpB;CAiBJ;AAED;;;;;GAKG;AACH,qBAAa,cAAe,SAAQ,KAAK;IACvC,QAAQ,CAAC,IAAI,EAAE,SAAS,GAAG,SAAS,CAAC;gBAEzB,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,SAAS,CAAA;KAAE;CAKzD"}
package/dist/errors.js CHANGED
@@ -222,6 +222,13 @@ export const WARNING_CODES = [
222
222
  // benign — a WARN preserves the matview symmetry and lets an author
223
223
  // document lineage for future in-process evaluation (#211).
224
224
  "WARN_ORIGIN_UNDER_UNMANAGED",
225
+ // A field.enum whose @values contains a member equal to the concatenation of
226
+ // two or more OTHER members once `strip`-normalized (the default mode erases
227
+ // separators). A delimited value then collapses into that member and coerces
228
+ // SUCCESSFULLY — reported EXTRACTED with a wrong-but-valid value rather than
229
+ // MALFORMED. Advisory: such a vocabulary is legal and unambiguous for exact
230
+ // matching; `@normalize: collapse` is the fix when delimited input is possible.
231
+ "WARN_ENUM_NORMALIZE_AMBIGUOUS",
225
232
  ];
226
233
  /**
227
234
  * Loader error carrying the ADR-0009 LoaderError envelope.
@@ -1 +1 @@
1
- {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"meta-data-loader.d.ts","sourceRoot":"","sources":["../../src/loader/meta-data-loader.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAClD,OAAO,EAAU,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAMtD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAgBlD,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAE5E,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAOnE,MAAM,MAAM,uBAAuB,GAAG;IACpC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;;;;;OAOG;IACH,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;CACtB,CAAC;AAYF,wEAAwE;AACxE,MAAM,MAAM,YAAY,GAAG,eAAe,GAAG,SAAS,GAAG,QAAQ,GAAG,OAAO,CAAC;AAE5E,MAAM,WAAW,WAAW;IAC1B,0GAA0G;IAC1G,QAAQ,CAAC,EAAE,YAAY,CAAC;IACxB,0DAA0D;IAC1D,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,qEAAqE;IACrE,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,QAAQ,CAAC;IACf;;;;;mEAK+D;IAC/D,QAAQ,EAAE,aAAa,EAAE,CAAC;IAC1B,MAAM,EAAE,KAAK,EAAE,CAAC;CACjB;AAcD,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAe;IACzC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAU;IAClC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAU;IAElC,OAAO,CAAC,MAAM,CAAiC;IAC/C,OAAO,CAAC,KAAK,CAAuB;gBAExB,IAAI,CAAC,EAAE,WAAW;IAM9B,OAAO,CAAC,MAAM,CAAC,gBAAgB;IAU/B;;;;;;;;;;;OAWG;WACU,aAAa,CACxB,GAAG,EAAE,MAAM,EACX,IAAI,CAAC,EAAE,uBAAuB,GAAG,WAAW,GAC3C,OAAO,CAAC,UAAU,CAAC;IAqCtB;;;;OAIG;WACU,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,IAAI,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC;IAM9E,0DAA0D;WAC7C,UAAU,CACrB,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,cAAc,EACtB,IAAI,CAAC,EAAE,WAAW,GACjB,OAAO,CAAC,UAAU,CAAC;IAQtB,6BAA6B;IAC7B,IAAI,KAAK,IAAI,YAAY,CAExB;IAED;;;;;;;OAOG;IACH,IAAI,QAAQ,IAAI,YAAY,CAE3B;IAED;;;;OAIG;IACH,IAAI,IAAI,IAAI,QAAQ,CAGnB;IAED;;;;OAIG;IACH,OAAO,CAAC,kBAAkB;IAa1B;;;OAGG;IACH,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS;IAO9C;;;OAGG;IACH,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS;IAMnE;;;OAGG;IACH,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,EAAE;IAUxC;;;;;;;;;;;OAWG;IACH,SAAS,CAAC,WAAW,CACnB,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,cAAc,EACtB,SAAS,EAAE,YAAY,GACtB,WAAW;IAuBd,OAAO,CAAC,MAAM,CAAC,WAAW,CAEZ;mBAEO,iBAAiB;IAUtC;;;;;;;;;OASG;mBACkB,qBAAqB;IAqB1C;;;;;OAKG;mBACkB,oBAAoB;IAoBzC;wEACoE;IACpE,OAAO,CAAC,MAAM,CAAC,kBAAkB;IA2BjC;;;;;;;;;;OAUG;IACG,IAAI,CAAC,OAAO,EAAE,cAAc,EAAE,GAAG,OAAO,CAAC,UAAU,CAAC;CAiR3D"}
1
+ {"version":3,"file":"meta-data-loader.d.ts","sourceRoot":"","sources":["../../src/loader/meta-data-loader.ts"],"names":[],"mappings":"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"}
@@ -22,6 +22,7 @@ import { validateSourceEscapes } from "../persistence/source/validate-source-esc
22
22
  import { validateSourcePhysicalNames } from "../persistence/source/validate-source-physical-names.js";
23
23
  import { validateSourceParameterRef } from "../persistence/source/validate-source-parameter-ref.js";
24
24
  import { validateFieldReadOnly } from "../core/field/validate-field-readonly.js";
25
+ import { validateEnumNormalizeAmbiguity } from "../core/field/validate-enum-normalize-ambiguity.js";
25
26
  import { validateDiscriminator } from "../core/object/validate-discriminator.js";
26
27
  import { resolveDeferredSupers } from "../super-resolve.js";
27
28
  import { validateSubtypeRules } from "../subtype-rules.js";
@@ -499,6 +500,11 @@ export class MetaDataLoader {
499
500
  const readOnlyResult = validateFieldReadOnly(root);
500
501
  errors.push(...readOnlyResult.errors);
501
502
  envelopeWarnings.push(...readOnlyResult.warnings);
503
+ // Authoring guard — a field.enum vocabulary that is ambiguous under the
504
+ // default `@normalize: strip` (a member equal to the concatenation of
505
+ // others), which would silently coerce delimited input to a wrong-but-valid
506
+ // member. WARN_ENUM_NORMALIZE_AMBIGUOUS.
507
+ envelopeWarnings.push(...validateEnumNormalizeAmbiguity(root).warnings);
502
508
  // FR-015 — source.rdb @parameterRef typed-input validation.
503
509
  errors.push(...validateSourceParameterRef(root));
504
510
  // FR-014 — TPH discriminator (@discriminator / @discriminatorValue)
@@ -1 +1 @@
1
- {"version":3,"file":"meta-data-loader.js","sourceRoot":"","sources":["../../src/loader/meta-data-loader.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"meta-data-loader.js","sourceRoot":"","sources":["../../src/loader/meta-data-loader.ts"],"names":[],"mappings":"AAAA,mDAAmD;AACnD,EAAE;AACF,0EAA0E;AAC1E,+EAA+E;AAC/E,8DAA8D;AAC9D,EAAE;AACF,kFAAkF;AAClF,mEAAmE;AAGnE,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAClD,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACtE,OAAO,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AACtF,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC1D,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,0BAA0B,EAAE,0BAA0B,EAAE,iCAAiC,EAAE,mBAAmB,EAAE,iCAAiC,EAAE,4BAA4B,EAAE,0BAA0B,EAAE,gBAAgB,EAAE,2BAA2B,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,yBAAyB,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AACvY,OAAO,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AACnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,gDAAgD,CAAC;AACrF,OAAO,EAAE,qBAAqB,EAAE,MAAM,kDAAkD,CAAC;AACzF,OAAO,EAAE,2BAA2B,EAAE,MAAM,yDAAyD,CAAC;AACtG,OAAO,EAAE,0BAA0B,EAAE,MAAM,wDAAwD,CAAC;AACpG,OAAO,EAAE,qBAAqB,EAAE,MAAM,0CAA0C,CAAC;AACjF,OAAO,EAAE,8BAA8B,EAAE,MAAM,oDAAoD,CAAC;AACpG,OAAO,EAAE,qBAAqB,EAAE,MAAM,0CAA0C,CAAC;AACjF,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,2BAA2B,EAAE,MAAM,mDAAmD,CAAC;AAChG,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAEhE,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAwD7D,8EAA8E;AAC9E,6DAA6D;AAC7D,8EAA8E;AAE9E,SAAS,iBAAiB;IACxB,OAAO,IAAI,QAAQ,CAAC,IAAI,MAAM,CAAC,aAAa,EAAE,YAAY,CAAC,EAAE,EAAE,CAAC,CAAC;AACnE,CAAC;AAED,8EAA8E;AAC9E,uBAAuB;AACvB,8EAA8E;AAE9E,MAAM,OAAO,cAAc;IACR,SAAS,CAAe;IACxB,OAAO,CAAU;IACjB,OAAO,CAAU;IAE1B,MAAM,GAAiB,eAAe,CAAC;IACvC,KAAK,CAAuB;IAEpC,YAAY,IAAkB;QAC5B,IAAI,CAAC,SAAS,GAAG,IAAI,EAAE,QAAQ,IAAI,cAAc,CAAC,gBAAgB,EAAE,CAAC;QACrE,IAAI,CAAC,OAAO,GAAG,IAAI,EAAE,MAAM,KAAK,KAAK,CAAC,CAAC,eAAe;QACtD,IAAI,CAAC,OAAO,GAAG,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC,CAAE,gBAAgB;IACzD,CAAC;IAEO,MAAM,CAAC,gBAAgB;QAC7B,8EAA8E;QAC9E,qFAAqF;QACrF,OAAO,eAAe,CAAC,aAAa,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;IAC5D,CAAC;IAED,8EAA8E;IAC9E,8DAA8D;IAC9D,8EAA8E;IAE9E;;;;;;;;;;;OAWG;IACH,MAAM,CAAC,KAAK,CAAC,aAAa,CACxB,GAAW,EACX,IAA4C;QAE5C,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,UAAU,EAAE,GAAG,IAAI,IAAI,EAAE,CAAC;QAClE,2EAA2E;QAC3E,6EAA6E;QAC7E,MAAM,OAAO,GAA4B;YACvC,GAAG,CAAC,OAAO,KAAK,SAAS,IAAI,EAAE,OAAO,EAAE,CAAC;YACzC,GAAG,CAAC,OAAO,KAAK,SAAS,IAAI,EAAE,OAAO,EAAE,CAAC;SAC1C,CAAC;QACF,MAAM,EAAE,eAAe,EAAE,GAAG,MAAM,MAAM,CAAC,+BAA+B,CAAC,CAAC;QAC1E,MAAM,MAAM,GAAG,IAAI,cAAc,CAAC,UAAU,CAAC,CAAC;QAC9C,IAAI,CAAC;YACH,MAAM,UAAU,GAAG,MAAM,IAAI,eAAe,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,MAAM,EAAE,CAAC;YACpE,yEAAyE;YACzE,0EAA0E;YAC1E,gEAAgE;YAChE,IAAI,UAAU,GAAqB,EAAE,CAAC;YACtC,IAAI,SAAS,EAAE,MAAM,EAAE,CAAC;gBACtB,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,MAAM,CAAC,+BAA+B,CAAC,CAAC;gBACzE,UAAU,GAAG,cAAc,CAAC,SAAS,CAAC,CAAC;YACzC,CAAC;YACD,wEAAwE;YACxE,0EAA0E;YAC1E,4EAA4E;YAC5E,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,UAAU,EAAE,GAAG,UAAU,CAAC,CAAC,CAAC;QACrD,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,wEAAwE;YACxE,oEAAoE;YACpE,wDAAwD;YACxD,MAAM,WAAW,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC1C,MAAM,SAAS,GACb,GAAG,YAAY,KAAK;gBAClB,CAAC,CAAC,GAAG;gBACL,CAAC,CAAC,IAAI,KAAK,CAAC,iCAAiC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAChE,OAAO,EAAE,GAAG,WAAW,EAAE,MAAM,EAAE,CAAC,SAAS,EAAE,GAAG,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC;QACxE,CAAC;IACH,CAAC;IAED;;;;OAIG;IACH,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAc,EAAE,IAAkB;QACtD,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,MAAM,CAAC,yBAAyB,CAAC,CAAC;QAC9D,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;QAClD,OAAO,IAAI,cAAc,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAChD,CAAC;IAED,0DAA0D;IAC1D,MAAM,CAAC,KAAK,CAAC,UAAU,CACrB,OAAe,EACf,MAAsB,EACtB,IAAkB;QAElB,OAAO,IAAI,cAAc,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,oBAAoB,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;IACxF,CAAC;IAED,8EAA8E;IAC9E,YAAY;IACZ,8EAA8E;IAE9E,6BAA6B;IAC7B,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED;;;;;;;OAOG;IACH,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED;;;;OAIG;IACH,IAAI,IAAI;QACN,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC1B,OAAO,IAAI,CAAC,KAAM,CAAC;IACrB,CAAC;IAED;;;;OAIG;IACK,kBAAkB;QACxB,IAAI,IAAI,CAAC,MAAM,KAAK,eAAe,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YACjE,MAAM,IAAI,KAAK,CACb,sEAAsE,IAAI,CAAC,MAAM,MAAM;gBACvF,oBAAoB,CACrB,CAAC;QACJ,CAAC;IACH,CAAC;IAED,8EAA8E;IAC9E,2EAA2E;IAC3E,8EAA8E;IAE9E;;;OAGG;IACH,UAAU,CAAC,IAAY;QACrB,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC1B,sEAAsE;QACtE,kDAAkD;QAClD,OAAO,IAAI,CAAC,KAAM,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;IAC1C,CAAC;IAED;;;OAGG;IACH,iBAAiB,CAAC,IAAY,EAAE,IAAY;QAC1C,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC1B,sEAAsE;QACtE,OAAO,IAAI,CAAC,KAAM,CAAC,qBAAqB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACvD,CAAC;IAED;;;OAGG;IACH,cAAc,CAAC,IAAY;QACzB,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC1B,sEAAsE;QACtE,OAAO,IAAI,CAAC,KAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAC7C,CAAC;IAED,8EAA8E;IAC9E,iDAAiD;IACjD,8EAA8E;IAE9E;;;;;;;;;;;OAWG;IACO,WAAW,CACnB,OAAe,EACf,MAAsB,EACtB,SAAuB;QAEvB,IAAI,MAAM,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;YAC7B,OAAO,SAAS,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QACvC,CAAC;QACD,IAAI,MAAM,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;YAC7B,MAAM,EAAE,GAAG,cAAc,CAAC,WAAW,CAAC;YACtC,IAAI,EAAE,KAAK,SAAS,EAAE,CAAC;gBACrB,MAAM,IAAI,KAAK,CACb,2EAA2E;oBACzE,WAAW,MAAM,CAAC,EAAE,2BAA2B,CAClD,CAAC;YACJ,CAAC;YACD,OAAO,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QAChC,CAAC;QACD,MAAM,IAAI,KAAK,CACb,8CAA8C,MAAM,CAAC,MAAM,IAAI;YAC7D,cAAc,MAAM,CAAC,EAAE,GAAG,CAC7B,CAAC;IACJ,CAAC;IAED,oEAAoE;IACpE,0EAA0E;IAC1E,mDAAmD;IAC3C,MAAM,CAAC,WAAW,CAEZ;IAEN,MAAM,CAAC,KAAK,CAAC,iBAAiB;QACpC,IAAI,cAAc,CAAC,WAAW,KAAK,SAAS;YAAE,OAAO;QACrD,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,wBAAwB,CAAC,CAAC;QACnD,cAAc,CAAC,WAAW,GAAG,GAAG,CAAC,SAAS,CAAC;IAC7C,CAAC;IAED,8EAA8E;IAC9E,2EAA2E;IAC3E,8EAA8E;IAE9E;;;;;;;;;OASG;IACK,MAAM,CAAC,KAAK,CAAC,qBAAqB,CACxC,OAAyB;QAEzB,MAAM,IAAI,GAAqB,EAAE,CAAC;QAClC,MAAM,WAAW,GAAqB,EAAE,CAAC;QACzC,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,IAAI,aAAa,GAAG,KAAK,CAAC;YAC1B,IAAI,CAAC;gBACH,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;gBACpC,aAAa,GAAG,MAAM,cAAc,CAAC,oBAAoB,CACvD,OAAO,EACP,MAAM,CAAC,MAAM,CACd,CAAC;YACJ,CAAC;YAAC,MAAM,CAAC;gBACP,aAAa,GAAG,KAAK,CAAC;YACxB,CAAC;YACD,CAAC,aAAa,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACpD,CAAC;QACD,OAAO,CAAC,GAAG,IAAI,EAAE,GAAG,WAAW,CAAC,CAAC;IACnC,CAAC;IAED;;;;;OAKG;IACK,MAAM,CAAC,KAAK,CAAC,oBAAoB,CACvC,OAAe,EACf,MAAsB;QAEtB,8DAA8D;QAC9D,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;QACjF,IAAI,MAAe,CAAC;QACpB,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;YACtB,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QAClC,CAAC;aAAM,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;YAC7B,MAAM,EAAE,sBAAsB,EAAE,GAAG,MAAM,MAAM,CAC7C,kCAAkC,CACnC,CAAC;YACF,MAAM,GAAG,sBAAsB,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC;QACpD,CAAC;aAAM,CAAC;YACN,OAAO,KAAK,CAAC;QACf,CAAC;QACD,OAAO,cAAc,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;IACnD,CAAC;IAED;wEACoE;IAC5D,MAAM,CAAC,kBAAkB,CAAC,MAAe;QAC/C,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI;YAAE,OAAO,KAAK,CAAC;QAChE,MAAM,OAAO,GAAG,GAAG,aAAa,IAAI,YAAY,EAAE,CAAC,CAAC,kBAAkB;QACtE,MAAM,QAAQ,GAAI,MAAkC,CAAC,OAAO,CAAC,CAAC;QAC9D,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,QAAQ,KAAK,IAAI;YAAE,OAAO,KAAK,CAAC;QACpE,MAAM,QAAQ,GAAI,QAAoC,CAAC,qBAAqB,CAAC,CAAC;QAC9E,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,KAAK,CAAC;QACpE,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;YAC9B,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI;gBAAE,OAAO,KAAK,CAAC;YAC9D,wEAAwE;YACxE,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,KAAgC,CAAC,CAAC;YAC/D,OAAO,CACL,MAAM,CAAC,MAAM,GAAG,CAAC;gBACjB,MAAM,CAAC,KAAK,CACV,CAAC,IAAI,EAAE,EAAE,CACP,OAAO,IAAI,KAAK,QAAQ;oBACxB,IAAI,KAAK,IAAI;oBACZ,IAAgC,CAAC,oBAAoB,CAAC,KAAK,IAAI,CACnE,CACF,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;IAED,8EAA8E;IAC9E,8CAA8C;IAC9C,8EAA8E;IAE9E;;;;;;;;;;OAUG;IACH,KAAK,CAAC,IAAI,CAAC,OAAyB;QAClC,wEAAwE;QACxE,6DAA6D;QAC7D,IAAI,IAAI,CAAC,MAAM,KAAK,QAAQ,IAAI,IAAI,CAAC,MAAM,KAAK,OAAO,EAAE,CAAC;YACxD,MAAM,IAAI,KAAK,CACb,4GAA4G,CAC7G,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;QACxB,MAAM,QAAQ,GAAa,EAAE,CAAC;QAC9B,MAAM,MAAM,GAAY,EAAE,CAAC;QAC3B,sEAAsE;QACtE,wEAAwE;QACxE,wEAAwE;QACxE,qDAAqD;QACrD,MAAM,gBAAgB,GAAoB,EAAE,CAAC;QAE7C,qEAAqE;QACrE,yEAAyE;QACzE,yEAAyE;QACzE,kEAAkE;QAClE,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,EAAE,CAAC;YAC7C,MAAM,cAAc,CAAC,iBAAiB,EAAE,CAAC;QAC3C,CAAC;QAED,2EAA2E;QAC3E,2EAA2E;QAC3E,8EAA8E;QAC9E,8EAA8E;QAC9E,+EAA+E;QAC/E,wEAAwE;QACxE,0EAA0E;QAC1E,0EAA0E;QAC1E,0EAA0E;QAC1E,4EAA4E;QAC5E,yEAAyE;QACzE,OAAO,GAAG,MAAM,cAAc,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC;QAE9D,IAAI,IAA0B,CAAC;QAE/B,uEAAuE;QACvE,wEAAwE;QACxE,sEAAsE;QACtE,4CAA4C;QAC5C,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,IAAI,OAAe,CAAC;YACpB,IAAI,CAAC;gBACH,OAAO,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;YAChC,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,CAAC,IAAI,CACT,GAAG,YAAY,KAAK;oBAClB,CAAC,CAAC,GAAG;oBACL,CAAC,CAAC,IAAI,KAAK,CAAC,0BAA0B,MAAM,CAAC,EAAE,MAAM,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CACtE,CAAC;gBACF,SAAS;YACX,CAAC;YAED,2EAA2E;YAC3E,2CAA2C;YAC3C,MAAM,SAAS,GAAoC;gBACjD,QAAQ,EAAE,IAAI,CAAC,SAAS;gBACxB,MAAM,EAAE,IAAI,CAAC,OAAO;gBACpB,oBAAoB,EAAE,IAAI;gBAC1B,UAAU,EAAE,MAAM,CAAC,EAAE;aACtB,CAAC;YACF,IAAI,IAAI,KAAK,SAAS;gBAAE,SAAS,CAAC,QAAQ,GAAG,IAAI,CAAC;YAElD,IAAI,CAAC;gBACH,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;gBACjE,QAAQ,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC;gBACvC,MAAM,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;gBACnC,gEAAgE;gBAChE,8DAA8D;gBAC9D,0DAA0D;gBAC1D,gBAAgB,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,gBAAgB,CAAC,CAAC;gBACvD,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC;YAC1B,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,CAAC,IAAI,CACT,GAAG,YAAY,KAAK;oBAClB,CAAC,CAAC,GAAG;oBACL,CAAC,CAAC,IAAI,KAAK,CAAC,mBAAmB,MAAM,CAAC,EAAE,MAAM,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAC/D,CAAC;YACJ,CAAC;QACH,CAAC;QAED,uEAAuE;QACvE,sEAAsE;QACtE,mEAAmE;QACnE,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACvB,MAAM,QAAQ,GAAG,qBAAqB,CAAC,IAAI,CAAC,CAAC;YAC7C,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;gBAC/B,qEAAqE;gBACrE,mEAAmE;gBACnE,mEAAmE;gBACnE,yCAAyC;gBACzC,IAAI,OAAO,CAAC,IAAI,KAAK,iBAAiB,EAAE,CAAC;oBACvC,mEAAmE;oBACnE,qEAAqE;oBACrE,MAAM,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC;oBAC3B,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;oBACzB,MAAM,CAAC,IAAI,CACT,IAAI,UAAU,CACZ,uBAAuB,OAAO,CAAC,GAAG,QAAQ,CAAC,EAAE,IAAI,IAAI,CAAC,EAAE,OAAO,4BAA4B,OAAO,CAAC,OAAO,QAAQ,CAAC,EAAE,IAAI,IAAI,CAAC,EAAE,OAAO,qEAAqE,EAC5M;wBACE,IAAI,EAAE,6BAA6B;wBACnC,MAAM,EAAE,cAAc,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC;qBACrE,CACF,CACF,CAAC;oBACF,SAAS;gBACX,CAAC;gBACD,MAAM,CAAC,IAAI,CACT,IAAI,UAAU,CACZ,mBAAmB,OAAO,CAAC,GAAG,mCAAmC,OAAO,CAAC,OAAO,GAAG,EACnF;oBACE,IAAI,EAAE,sBAAsB;oBAC5B,MAAM,EAAE,cAAc,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC;iBACrE,CACF,CACF,CAAC;YACJ,CAAC;YAED,4EAA4E;YAC5E,4BAA4B;YAC5B,MAAM,UAAU,GAAG,oBAAoB,CAAC,IAAI,CAAC,CAAC;YAC9C,MAAM,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;YAClC,QAAQ,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;YAEtC,sEAAsE;YACtE,uEAAuE;YACvE,MAAM,CAAC,IAAI,CAAC,GAAG,iBAAiB,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;YAExD,oEAAoE;YACpE,sEAAsE;YACtE,MAAM,CAAC,IAAI,CAAC,GAAG,2BAA2B,CAAC,IAAI,CAAC,CAAC,CAAC;YAElD,uEAAuE;YACvE,MAAM,CAAC,IAAI,CAAC,GAAG,0BAA0B,CAAC,IAAI,CAAC,CAAC,CAAC;YAEjD,uDAAuD;YACvD,QAAQ,CAAC,IAAI,CAAC,GAAG,0BAA0B,CAAC,IAAI,CAAC,CAAC,CAAC;YAEnD,sEAAsE;YACtE,iEAAiE;YACjE,MAAM,CAAC,IAAI,CAAC,GAAG,iCAAiC,CAAC,IAAI,CAAC,CAAC,CAAC;YAExD,oEAAoE;YACpE,gDAAgD;YAChD,MAAM,CAAC,IAAI,CAAC,GAAG,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC;YAE1C,uEAAuE;YACvE,yEAAyE;YACzE,sEAAsE;YACtE,iDAAiD;YACjD,MAAM,CAAC,IAAI,CAAC,GAAG,iCAAiC,CAAC,IAAI,CAAC,CAAC,CAAC;YAExD,wFAAwF;YACxF,MAAM,CAAC,IAAI,CAAC,GAAG,4BAA4B,CAAC,IAAI,CAAC,CAAC,CAAC;YAEnD,gFAAgF;YAChF,oFAAoF;YACpF,6EAA6E;YAC7E,MAAM,CAAC,IAAI,CAAC,GAAG,wBAAwB,CAAC,IAAI,CAAC,CAAC,CAAC;YAE/C,+EAA+E;YAC/E,mFAAmF;YACnF,oFAAoF;YACpF,qCAAqC;YACrC,MAAM,CAAC,IAAI,CAAC,GAAG,qBAAqB,CAAC,IAAI,CAAC,CAAC,CAAC;YAE5C,0EAA0E;YAC1E,4EAA4E;YAC5E,+EAA+E;YAC/E,MAAM,CAAC,IAAI,CAAC,GAAG,yBAAyB,CAAC,IAAI,CAAC,CAAC,CAAC;YAEhD,kFAAkF;YAClF,sFAAsF;YACtF,uFAAuF;YACvF,yDAAyD;YACzD,MAAM,CAAC,IAAI,CAAC,GAAG,uBAAuB,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;YAE9D,kEAAkE;YAClE,6DAA6D;YAC7D,MAAM,CAAC,IAAI,CAAC,GAAG,2BAA2B,CAAC,IAAI,CAAC,CAAC,CAAC;YAElD,oEAAoE;YACpE,uEAAuE;YACvE,mEAAmE;YACnE,MAAM,gBAAgB,GAAG,kBAAkB,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;YAChF,MAAM,CAAC,IAAI,CAAC,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;YACxC,QAAQ,CAAC,IAAI,CAAC,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAC;YAE5C,sEAAsE;YACtE,6DAA6D;YAC7D,MAAM,CAAC,IAAI,CAAC,GAAG,0BAA0B,CAAC,IAAI,CAAC,CAAC,CAAC;YAEjD,yEAAyE;YACzE,0DAA0D;YAC1D,MAAM,CAAC,IAAI,CAAC,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC;YAEvC,0EAA0E;YAC1E,iEAAiE;YACjE,gCAAgC;YAChC,MAAM,CAAC,IAAI,CAAC,GAAG,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC;YAE1C,mEAAmE;YACnE,mFAAmF;YACnF,iFAAiF;YACjF,MAAM,kBAAkB,GAAG,qBAAqB,CAAC,IAAI,CAAC,CAAC;YACvD,MAAM,CAAC,IAAI,CAAC,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;YAC1C,gBAAgB,CAAC,IAAI,CAAC,GAAG,kBAAkB,CAAC,QAAQ,CAAC,CAAC;YAEtD,iEAAiE;YACjE,yEAAyE;YACzE,MAAM,kBAAkB,GAAG,2BAA2B,CAAC,IAAI,CAAC,CAAC;YAC7D,MAAM,CAAC,IAAI,CAAC,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;YAC1C,gBAAgB,CAAC,IAAI,CAAC,GAAG,kBAAkB,CAAC,QAAQ,CAAC,CAAC;YAEtD,uDAAuD;YACvD,4DAA4D;YAC5D,+BAA+B;YAC/B,MAAM,cAAc,GAAG,qBAAqB,CAAC,IAAI,CAAC,CAAC;YACnD,MAAM,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;YACtC,gBAAgB,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAC;YAElD,wEAAwE;YACxE,sEAAsE;YACtE,4EAA4E;YAC5E,yCAAyC;YACzC,gBAAgB,CAAC,IAAI,CAAC,GAAG,8BAA8B,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC;YAExE,4DAA4D;YAC5D,MAAM,CAAC,IAAI,CAAC,GAAG,0BAA0B,CAAC,IAAI,CAAC,CAAC,CAAC;YAEjD,oEAAoE;YACpE,8BAA8B;YAC9B,MAAM,CAAC,IAAI,CAAC,GAAG,qBAAqB,CAAC,IAAI,CAAC,CAAC,CAAC;YAE5C,2EAA2E;YAC3E,8EAA8E;YAC9E,8EAA8E;YAC9E,0EAA0E;YAC1E,MAAM,CAAC,IAAI,CAAC,GAAG,qBAAqB,CAAC,IAAI,CAAC,CAAC,CAAC;QAC9C,CAAC;QAED,sEAAsE;QACtE,2EAA2E;QAC3E,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACvB,IAAI,GAAG,iBAAiB,EAAE,CAAC;YAC3B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC;QACvD,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC;QACzB,CAAC;QAED,wEAAwE;QACxE,kDAAkD;QAClD,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,IAAI,CAAC,MAAM,EAAE,CAAC;QAChB,CAAC;QAED,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,yEAAyE;QACzE,uEAAuE;QACvE,uEAAuE;QACvE,qEAAqE;QACrE,sEAAsE;QACtE,gEAAgE;QAChE,MAAM,aAAa,GAAoB,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;YAC5D,IAAI,EAAE,aAAa;YACnB,OAAO,EAAE,GAAG;YACZ,MAAM,EAAE,UAAU,CAAC,gBAAgB,CAAC;SACrC,CAAC,CAAC,CAAC;QACJ,OAAO;YACL,IAAI;YACJ,QAAQ,EAAE,CAAC,GAAG,gBAAgB,EAAE,GAAG,aAAa,CAAC;YACjD,MAAM;SACP,CAAC;IACJ,CAAC;CACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"validation-registry.d.ts","sourceRoot":"","sources":["../../src/loader/validation-registry.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAI1C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAqCnD;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,YAAY,GAAG,UAAU,EAAE,CAkD5F"}
1
+ {"version":3,"file":"validation-registry.d.ts","sourceRoot":"","sources":["../../src/loader/validation-registry.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAI1C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAmDnD;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,YAAY,GAAG,UAAU,EAAE,CA8D5F"}
@@ -9,29 +9,42 @@ import { ParseError } from "../errors.js";
9
9
  import { didYouMeanHint } from "../naming-refs.js";
10
10
  import { TYPE_OBJECT } from "../shared/base-types.js";
11
11
  import { PACKAGE_SEPARATOR } from "../shared/structural.js";
12
- /** A symbol table of every top-level object, built once per load (the binder analogue). */
12
+ /** A symbol table of every top-level node, built once per load (the binder analogue).
13
+ * Indexed PER TYPE so a reference descriptor can target a non-`object` node kind (its
14
+ * `targetType` is a free string) and so a template and an object sharing `pkg::Name`
15
+ * never collide. */
13
16
  class SymbolTableImpl {
14
- byKey = new Map();
17
+ byType = new Map();
15
18
  static build(root) {
16
19
  const t = new SymbolTableImpl();
17
20
  // ADR-0039: root has no super; children()==ownChildren() but resolving is the default.
18
21
  for (const child of root.children()) {
19
- if (child.type !== TYPE_OBJECT)
20
- continue;
22
+ let bucket = t.byType.get(child.type);
23
+ if (bucket === undefined) {
24
+ bucket = new Map();
25
+ t.byType.set(child.type, bucket);
26
+ }
21
27
  // ADR-0042: key by the canonical resolution key ONLY (the FQN, or the bare
22
28
  // name for a root-level/empty-package object) — NO bare-name fallback, so a
23
- // bare ref never binds a same-named object in another package.
24
- t.byKey.set(child.resolutionKey(), child);
29
+ // bare ref never binds a same-named node in another package.
30
+ bucket.set(child.resolutionKey(), child);
25
31
  }
26
32
  return t;
27
33
  }
28
- /** ADR-0042 package-local resolution: FQN → exact resolution-key match; bare →
29
- * the referrer's own package (`<referrerPkg>::<ref>`), else a root-level object. */
30
- resolveObject(ref, referrerPkg) {
34
+ /** ADR-0042 package-local resolution within the `type` bucket: FQN → exact
35
+ * resolution-key match; bare → the referrer's own package (`<referrerPkg>::<ref>`),
36
+ * else a root-level node of that type. */
37
+ resolve(type, ref, referrerPkg) {
38
+ const bucket = this.byType.get(type);
39
+ if (bucket === undefined)
40
+ return undefined;
31
41
  if (ref.includes(PACKAGE_SEPARATOR))
32
- return this.byKey.get(ref);
42
+ return bucket.get(ref);
33
43
  const localKey = referrerPkg !== "" ? `${referrerPkg}${PACKAGE_SEPARATOR}${ref}` : ref;
34
- return this.byKey.get(localKey) ?? this.byKey.get(ref);
44
+ return bucket.get(localKey) ?? bucket.get(ref);
45
+ }
46
+ resolveObject(ref, referrerPkg) {
47
+ return this.resolve(TYPE_OBJECT, ref, referrerPkg);
35
48
  }
36
49
  }
37
50
  class ValidationContextImpl {
@@ -51,15 +64,21 @@ class ValidationContextImpl {
51
64
  */
52
65
  export function runRegisteredValidation(root, registry) {
53
66
  const ctx = new ValidationContextImpl(SymbolTableImpl.build(root));
54
- walk(root, "");
67
+ walk(root, "", false);
55
68
  return ctx.errors;
56
- function walk(node, referrerPkg) {
57
- // ADR-0042: a top-level object establishes the package context for its
58
- // subtree; nested ref-bearing nodes (relationship/field.object/
59
- // identity.reference) resolve BARE refs against it. Nested nodes carry no
60
- // `package`, so they inherit the enclosing object's (via fileDefaultPackage,
61
- // else the threaded context).
62
- const pkg = node.type === TYPE_OBJECT ? (node.package ?? node.fileDefaultPackage ?? referrerPkg) : referrerPkg;
69
+ function walk(node, referrerPkg, isTopLevel) {
70
+ // ADR-0042: a TOP-LEVEL node establishes the package context for its subtree;
71
+ // nested ref-bearing nodes (relationship/field.object/identity.reference) resolve
72
+ // BARE refs against it. Nested nodes carry no `package`, so they inherit the
73
+ // enclosing object's (via fileDefaultPackage, else the threaded context). A
74
+ // top-level node of ANY type sets the context — including a provider's custom
75
+ // top-level type so a non-object top-level ref-bearing node resolves its bare
76
+ // refs in its own package, not at root level (#194 item 2). Objects still set
77
+ // context whether top-level or nested; behavior for every pre-existing case is
78
+ // unchanged (a nested non-object still inherits the threaded context).
79
+ const pkg = isTopLevel || node.type === TYPE_OBJECT
80
+ ? (node.package ?? node.fileDefaultPackage ?? referrerPkg)
81
+ : referrerPkg;
63
82
  const def = registry.find(node.type, node.subType);
64
83
  if (def) {
65
84
  for (const desc of def.references ?? []) {
@@ -69,16 +88,21 @@ export function runRegisteredValidation(root, registry) {
69
88
  if (typeof raw !== "string" || raw === "")
70
89
  continue; // absence is the required-attr pass's job
71
90
  const entityRef = desc.dottedFieldPath ? (raw.split(".")[0] ?? raw) : raw;
72
- const target = ctx.symbols.resolveObject(entityRef, pkg);
91
+ const target = ctx.symbols.resolve(desc.targetType, entityRef, pkg);
73
92
  // Qualify the node name with its owning entity (e.g. "Order.items") so the error is
74
93
  // locatable from the message alone, not just the source envelope.
75
94
  const qname = node.parent?.name ? `${node.parent.name}.${node.name}` : node.name;
76
95
  if (!target) {
77
- ctx.error(desc.errorCode, node, `${node.type}.${node.subType} "${qname}" @${desc.attr} "${raw}" does not resolve to an object.${didYouMeanHint(root, entityRef)}`);
96
+ // `did-you-mean` is object-scoped (its candidate scan is over objects), so only
97
+ // append it for object targets; a non-object target names its own kind.
98
+ const wantKind = desc.targetType === TYPE_OBJECT ? "an object" : `a ${desc.targetType}`;
99
+ const hint = desc.targetType === TYPE_OBJECT ? didYouMeanHint(root, entityRef) : "";
100
+ ctx.error(desc.errorCode, node, `${node.type}.${node.subType} "${qname}" @${desc.attr} "${raw}" does not resolve to ${wantKind}.${hint}`);
78
101
  }
79
- else if (target.type !== desc.targetType ||
80
- (desc.targetSubType !== undefined && target.subType !== desc.targetSubType)) {
81
- const want = desc.targetSubType ? `${desc.targetType}.${desc.targetSubType}` : desc.targetType;
102
+ else if (desc.targetSubType !== undefined && target.subType !== desc.targetSubType) {
103
+ // `resolve` already guarantees target.type === desc.targetType; only the
104
+ // subType can still mismatch.
105
+ const want = `${desc.targetType}.${desc.targetSubType}`;
82
106
  ctx.error(desc.errorCode, node, `${node.type}.${node.subType} "${qname}" @${desc.attr} "${raw}" resolves to ` +
83
107
  `${target.type}.${target.subType}, not a ${want}.`);
84
108
  }
@@ -87,8 +111,11 @@ export function runRegisteredValidation(root, registry) {
87
111
  }
88
112
  // ADR-0039: own — structural walk visiting every physical node once at its
89
113
  // declaration site (an inherited child is validated on its declaring parent).
114
+ // The root's own children ARE the top-level nodes (each sets its own package
115
+ // context); everything deeper is nested.
116
+ const childrenAreTopLevel = node === root;
90
117
  for (const child of node.ownChildren())
91
- walk(child, pkg);
118
+ walk(child, pkg, childrenAreTopLevel);
92
119
  }
93
120
  }
94
121
  //# sourceMappingURL=validation-registry.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"validation-registry.js","sourceRoot":"","sources":["../../src/loader/validation-registry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"validation-registry.js","sourceRoot":"","sources":["../../src/loader/validation-registry.ts"],"names":[],"mappings":"AAAA,kFAAkF;AAClF,EAAE;AACF,uFAAuF;AACvF,0FAA0F;AAC1F,kFAAkF;AAClF,kFAAkF;AAClF,wGAAwG;AAGxG,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAI5D;;;qBAGqB;AACrB,MAAM,eAAe;IACF,MAAM,GAAG,IAAI,GAAG,EAAiC,CAAC;IAEnE,MAAM,CAAC,KAAK,CAAC,IAAc;QACzB,MAAM,CAAC,GAAG,IAAI,eAAe,EAAE,CAAC;QAChC,uFAAuF;QACvF,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC;YACpC,IAAI,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACtC,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;gBACzB,MAAM,GAAG,IAAI,GAAG,EAAoB,CAAC;gBACrC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YACnC,CAAC;YACD,2EAA2E;YAC3E,4EAA4E;YAC5E,6DAA6D;YAC7D,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,aAAa,EAAE,EAAE,KAAK,CAAC,CAAC;QAC3C,CAAC;QACD,OAAO,CAAC,CAAC;IACX,CAAC;IAED;;+CAE2C;IAC3C,OAAO,CAAC,IAAY,EAAE,GAAW,EAAE,WAAmB;QACpD,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACrC,IAAI,MAAM,KAAK,SAAS;YAAE,OAAO,SAAS,CAAC;QAC3C,IAAI,GAAG,CAAC,QAAQ,CAAC,iBAAiB,CAAC;YAAE,OAAO,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC5D,MAAM,QAAQ,GAAG,WAAW,KAAK,EAAE,CAAC,CAAC,CAAC,GAAG,WAAW,GAAG,iBAAiB,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;QACvF,OAAO,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACjD,CAAC;IAED,aAAa,CAAC,GAAW,EAAE,WAAmB;QAC5C,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,GAAG,EAAE,WAAW,CAAC,CAAC;IACrD,CAAC;CACF;AAED,MAAM,qBAAqB;IAEJ;IADZ,MAAM,GAAiB,EAAE,CAAC;IACnC,YAAqB,OAAoB;QAApB,YAAO,GAAP,OAAO,CAAa;IAAG,CAAC;IAC7C,KAAK,CAAC,IAAgB,EAAE,IAAc,EAAE,OAAe;QACrD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IAC3E,CAAC;CACF;AAED;;;;GAIG;AACH,MAAM,UAAU,uBAAuB,CAAC,IAAc,EAAE,QAAsB;IAC5E,MAAM,GAAG,GAAG,IAAI,qBAAqB,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;IACnE,IAAI,CAAC,IAAI,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC;IACtB,OAAO,GAAG,CAAC,MAAM,CAAC;IAElB,SAAS,IAAI,CAAC,IAAc,EAAE,WAAmB,EAAE,UAAmB;QACpE,8EAA8E;QAC9E,kFAAkF;QAClF,6EAA6E;QAC7E,4EAA4E;QAC5E,8EAA8E;QAC9E,gFAAgF;QAChF,8EAA8E;QAC9E,+EAA+E;QAC/E,uEAAuE;QACvE,MAAM,GAAG,GACP,UAAU,IAAI,IAAI,CAAC,IAAI,KAAK,WAAW;YACrC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,kBAAkB,IAAI,WAAW,CAAC;YAC1D,CAAC,CAAC,WAAW,CAAC;QAClB,MAAM,GAAG,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QACnD,IAAI,GAAG,EAAE,CAAC;YACR,KAAK,MAAM,IAAI,IAAI,GAAG,CAAC,UAAU,IAAI,EAAE,EAAE,CAAC;gBACxC,2EAA2E;gBAC3E,mDAAmD;gBACnD,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACjC,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,EAAE;oBAAE,SAAS,CAAC,0CAA0C;gBAC/F,MAAM,SAAS,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;gBAC1E,MAAM,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,SAAS,EAAE,GAAG,CAAC,CAAC;gBACpE,oFAAoF;gBACpF,kEAAkE;gBAClE,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;gBACjF,IAAI,CAAC,MAAM,EAAE,CAAC;oBACZ,gFAAgF;oBAChF,wEAAwE;oBACxE,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,KAAK,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,UAAU,EAAE,CAAC;oBACxF,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,KAAK,WAAW,CAAC,CAAC,CAAC,cAAc,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;oBACpF,GAAG,CAAC,KAAK,CACP,IAAI,CAAC,SAAS,EACd,IAAI,EACJ,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,OAAO,KAAK,KAAK,MAAM,IAAI,CAAC,IAAI,KAAK,GAAG,yBAAyB,QAAQ,IAAI,IAAI,EAAE,CACzG,CAAC;gBACJ,CAAC;qBAAM,IAAI,IAAI,CAAC,aAAa,KAAK,SAAS,IAAI,MAAM,CAAC,OAAO,KAAK,IAAI,CAAC,aAAa,EAAE,CAAC;oBACrF,yEAAyE;oBACzE,8BAA8B;oBAC9B,MAAM,IAAI,GAAG,GAAG,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;oBACxD,GAAG,CAAC,KAAK,CACP,IAAI,CAAC,SAAS,EACd,IAAI,EACJ,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,OAAO,KAAK,KAAK,MAAM,IAAI,CAAC,IAAI,KAAK,GAAG,gBAAgB;wBAC3E,GAAG,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,OAAO,WAAW,IAAI,GAAG,CACrD,CAAC;gBACJ,CAAC;YACH,CAAC;YACD,GAAG,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QAC5B,CAAC;QACD,2EAA2E;QAC3E,8EAA8E;QAC9E,6EAA6E;QAC7E,yCAAyC;QACzC,MAAM,mBAAmB,GAAG,IAAI,KAAK,IAAI,CAAC;QAC1C,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,WAAW,EAAE;YAAE,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,mBAAmB,CAAC,CAAC;IAChF,CAAC;AACH,CAAC"}
@@ -21,10 +21,20 @@ export interface ReferenceDescriptor {
21
21
  /** Code emitted on unresolved / kind-mismatch (may be a downstream code). */
22
22
  readonly errorCode: LoaderCode;
23
23
  }
24
- /** Resolve a ref string to its object node under the ADR-0042 package-local
24
+ /** Resolve a ref string to a top-level node under the ADR-0042 package-local
25
25
  * contract. `referrerPkg` is the effective package of the node that declares
26
26
  * the ref (a bare ref resolves in that package, else root-level). */
27
27
  export interface SymbolTable {
28
+ /**
29
+ * Resolve a ref to a node of the given target TYPE. A `ReferenceDescriptor` may
30
+ * target a non-`object` node kind (its `targetType` is a free string), so the
31
+ * resolver is keyed by type — a downstream provider's `adapter.*`→`adapter.*`
32
+ * reference resolves for free, matching the descriptor mechanism's "present and
33
+ * future" promise. (Previously only `object.*` targets were indexed, so a
34
+ * non-object `targetType` was silently unsatisfiable.)
35
+ */
36
+ resolve(type: string, ref: string, referrerPkg: string): MetaData | undefined;
37
+ /** The common case — an `object`-target reference. Delegates to `resolve("object", …)`. */
28
38
  resolveObject(ref: string, referrerPkg: string): MetaData | undefined;
29
39
  }
30
40
  /** Handed to every validator: the symbol table + an error sink. */
@@ -1 +1 @@
1
- {"version":3,"file":"validation-types.d.ts","sourceRoot":"","sources":["../src/validation-types.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7C;8EAC8E;AAC9E,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;AAEnD;;;;GAIG;AACH,MAAM,WAAW,mBAAmB;IAClC,+EAA+E;IAC/E,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,mDAAmD;IACnD,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,+EAA+E;IAC/E,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC;+CAC2C;IAC3C,QAAQ,CAAC,eAAe,CAAC,EAAE,OAAO,CAAC;IACnC,6EAA6E;IAC7E,QAAQ,CAAC,SAAS,EAAE,UAAU,CAAC;CAChC;AAED;;sEAEsE;AACtE,MAAM,WAAW,WAAW;IAC1B,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS,CAAC;CACvE;AAED,mEAAmE;AACnE,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC;IAC9B,KAAK,CAAC,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CAChE;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,MAAM,aAAa,GAAG,CAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,iBAAiB,KAAK,IAAI,CAAC"}
1
+ {"version":3,"file":"validation-types.d.ts","sourceRoot":"","sources":["../src/validation-types.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7C;8EAC8E;AAC9E,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;AAEnD;;;;GAIG;AACH,MAAM,WAAW,mBAAmB;IAClC,+EAA+E;IAC/E,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,mDAAmD;IACnD,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,+EAA+E;IAC/E,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC;+CAC2C;IAC3C,QAAQ,CAAC,eAAe,CAAC,EAAE,OAAO,CAAC;IACnC,6EAA6E;IAC7E,QAAQ,CAAC,SAAS,EAAE,UAAU,CAAC;CAChC;AAED;;sEAEsE;AACtE,MAAM,WAAW,WAAW;IAC1B;;;;;;;OAOG;IACH,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS,CAAC;IAC9E,2FAA2F;IAC3F,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS,CAAC;CACvE;AAED,mEAAmE;AACnE,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC;IAC9B,KAAK,CAAC,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CAChE;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,MAAM,aAAa,GAAG,CAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,iBAAiB,KAAK,IAAI,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@metaobjectsdev/metadata",
3
- "version": "0.20.11",
3
+ "version": "0.20.13",
4
4
  "description": "Metamodel loader, types, and constants for the MetaObjects standard.",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -0,0 +1,165 @@
1
+ // Validation pass: enum vocabularies that are ambiguous under `@normalize: strip`.
2
+ //
3
+ // Code:
4
+ // WARN_ENUM_NORMALIZE_AMBIGUOUS — a field.enum whose @values contains a member
5
+ // equal to the concatenation of two or more OTHER members once normalized.
6
+ //
7
+ // Why this is a real hazard. `strip` (the DEFAULT normalize mode) upper-cases and
8
+ // keeps only [A-Z0-9], so it erases every separator. That is what makes
9
+ // "SOCIAL-ATTACK" match the member SOCIAL_ATTACK — the behavior we want. But it
10
+ // also means a DELIMITED value collapses into one token, and if that token happens
11
+ // to equal another member, the extract engine coerces it successfully:
12
+ //
13
+ // values = {READ, WRITE, READWRITE}; input "read|write" -> READWRITE
14
+ //
15
+ // The field is reported EXTRACTED (not MALFORMED) with a plausible, wrong value —
16
+ // wrong-and-green, the worst failure mode the engine can produce. A consumer
17
+ // branching on field state is misled.
18
+ //
19
+ // It is detectable from metadata alone, so we warn the author at declaration time
20
+ // rather than leaving it to be discovered in production.
21
+ //
22
+ // WARNING, not error: such a vocabulary is legal and completely unambiguous for
23
+ // exact matching — only normalize-based coercion is at risk, and the author may
24
+ // have no delimited input at all. The fix, when it matters, is `@normalize: collapse`.
25
+ //
26
+ // Mode gating: `collapse` folds only [\s_-]+ and `none` folds nothing, so neither
27
+ // can merge tokens across a delimiter like "|" — both are skipped.
28
+
29
+ import type { MetaData } from "../../shared/meta-data.js";
30
+ import type { LoaderWarning } from "../../source.js";
31
+ import { TYPE_FIELD } from "../../shared/base-types.js";
32
+ import { TYPE_OBJECT } from "../../shared/base-types.js";
33
+ import {
34
+ FIELD_SUBTYPE_ENUM,
35
+ FIELD_ATTR_VALUES,
36
+ FIELD_ATTR_NORMALIZE,
37
+ NORMALIZE_DEFAULT,
38
+ } from "./field-constants.js";
39
+
40
+ export interface EnumNormalizeAmbiguityResult {
41
+ warnings: LoaderWarning[];
42
+ }
43
+
44
+ /**
45
+ * `strip` normalization: ASCII upper-case, then keep only [A-Z0-9].
46
+ * Mirrors the extract engine's Normalize.STRIP exactly — the two must agree or the
47
+ * guard would warn about collisions the engine does not actually have (and miss
48
+ * ones it does).
49
+ */
50
+ function stripNormalize(s: string): string {
51
+ let out = "";
52
+ // ASCII fold (a-z -> A-Z), NOT toUpperCase(): the engine's Normalize.asciiUpper
53
+ // is deliberately ASCII-only, and locale uppercasing diverges on non-ASCII input
54
+ // (e.g. "ß" -> "SS" in JS/Python/Java but unchanged in C#). Unreachable for legal
55
+ // metadata — ENUM_MEMBER_PATTERN is ASCII — but keeping the fold identical is
56
+ // what makes "mirrors Normalize.STRIP" true rather than approximately true.
57
+ for (const ch of s) {
58
+ if (ch >= "a" && ch <= "z") out += String.fromCharCode(ch.charCodeAt(0) - 32);
59
+ else if ((ch >= "A" && ch <= "Z") || (ch >= "0" && ch <= "9")) out += ch;
60
+ }
61
+ return out;
62
+ }
63
+
64
+ /**
65
+ * Word-break: can `target` be segmented into two or more entries of `dict`?
66
+ * Returns the segmentation (the member names, in order) or undefined.
67
+ *
68
+ * Word-break rather than a pairwise scan so a three-way collision (A + B + C == ABC)
69
+ * is caught too. O(len^2 * |dict|) — trivial at vocabulary sizes, and deterministic,
70
+ * which matters because every port must produce the identical warning.
71
+ */
72
+ function segmentInto(
73
+ target: string,
74
+ dict: ReadonlyArray<{ member: string; stripped: string }>,
75
+ ): string[] | undefined {
76
+ const n = target.length;
77
+ // best[i] = the segmentation of target[0..i) with the FEWEST segments, or undefined.
78
+ const best: (string[] | undefined)[] = new Array(n + 1).fill(undefined);
79
+ best[0] = [];
80
+ for (let i = 0; i < n; i++) {
81
+ const prefix = best[i];
82
+ if (prefix === undefined) continue;
83
+ for (const d of dict) {
84
+ const end = i + d.stripped.length;
85
+ if (end > n) continue;
86
+ if (target.startsWith(d.stripped, i)) {
87
+ const cand = [...prefix, d.member];
88
+ const cur = best[end];
89
+ if (cur === undefined || cand.length < cur.length) best[end] = cand;
90
+ }
91
+ }
92
+ }
93
+ const full = best[n];
94
+ // Two or more segments: a single-segment "segmentation" is just another member
95
+ // that strips to the same string, which is a different (duplicate) concern.
96
+ return full !== undefined && full.length >= 2 ? full : undefined;
97
+ }
98
+
99
+ /**
100
+ * Effective `@normalize` for an enum field: own/inherited → owning object → default.
101
+ * `explicit` distinguishes an authored mode from the fallback, so the warning does not
102
+ * tell an author "(the default)" about a value they set deliberately.
103
+ */
104
+ function effectiveNormalize(field: MetaData): { mode: string; explicit: boolean } {
105
+ // ADR-0039: resolving accessor — an enum field that extends an abstract enum must
106
+ // see the super's @normalize, so this must NOT be ownAttrs().
107
+ const own = field.attr(FIELD_ATTR_NORMALIZE);
108
+ if (typeof own === "string") return { mode: own, explicit: true };
109
+ const parent = field.parent;
110
+ if (parent !== undefined && parent.type === TYPE_OBJECT) {
111
+ const objMode = parent.attr(FIELD_ATTR_NORMALIZE);
112
+ if (typeof objMode === "string") return { mode: objMode, explicit: true };
113
+ }
114
+ return { mode: NORMALIZE_DEFAULT, explicit: false };
115
+ }
116
+
117
+ export function validateEnumNormalizeAmbiguity(root: MetaData): EnumNormalizeAmbiguityResult {
118
+ const warnings: LoaderWarning[] = [];
119
+
120
+ const visit = (node: MetaData): void => {
121
+ if (node.type === TYPE_FIELD && node.subType === FIELD_SUBTYPE_ENUM) {
122
+ // ADR-0039: own — check the vocabulary DECLARED here. A concrete enum that
123
+ // inherits @values via extends shares the super's member set, which was
124
+ // already checked when the super was declared; warning per declaration keeps
125
+ // one hazard to one warning instead of one per referring field.
126
+ const rawValues = node.ownAttrs().get(FIELD_ATTR_VALUES);
127
+ if (Array.isArray(rawValues) && rawValues.length > 1) {
128
+ const normalize = effectiveNormalize(node);
129
+ if (normalize.mode === NORMALIZE_DEFAULT) {
130
+ const entries = rawValues.map((m) => ({ member: String(m), stripped: stripNormalize(String(m)) }));
131
+ for (let i = 0; i < entries.length; i++) {
132
+ const self = entries[i]!;
133
+ if (self.stripped.length === 0) continue; // e.g. "_" — nothing to collide with
134
+ // Exclude the member itself BY INDEX (not by value): two distinct
135
+ // members can strip to the same string, which is a separate concern.
136
+ const others = entries.filter((_, j) => j !== i).filter((e) => e.stripped.length > 0);
137
+ const seg = segmentInto(self.stripped, others);
138
+ if (seg !== undefined) {
139
+ warnings.push({
140
+ code: "WARN_ENUM_NORMALIZE_AMBIGUOUS",
141
+ message:
142
+ `field.enum "${node.name}" member '${self.member}' is the concatenation of ` +
143
+ `${seg.map((s) => `'${s}'`).join(" + ")} under @${FIELD_ATTR_NORMALIZE}: ` +
144
+ `'${NORMALIZE_DEFAULT}'${normalize.explicit ? "" : " (the default)"}, which ` +
145
+ `erases separators. A delimited ` +
146
+ `value such as "${seg.map((s) => s.toLowerCase()).join("|")}" would coerce ` +
147
+ `silently to '${self.member}' and be reported as extracted rather than ` +
148
+ `malformed. Set @${FIELD_ATTR_NORMALIZE}: 'collapse' on this field if it can ` +
149
+ `receive delimited input.`,
150
+ source: node.source,
151
+ });
152
+ break; // one warning per declaring node — the first collision is enough to act on
153
+ }
154
+ }
155
+ }
156
+ }
157
+ }
158
+ // ADR-0039: own — a plain structural walk of what each node declares; resolving
159
+ // children() would re-visit inherited nodes at every referring field.
160
+ for (const child of node.ownChildren()) visit(child);
161
+ };
162
+
163
+ visit(root);
164
+ return { warnings };
165
+ }
package/src/errors.ts CHANGED
@@ -226,6 +226,13 @@ export const WARNING_CODES = [
226
226
  // benign — a WARN preserves the matview symmetry and lets an author
227
227
  // document lineage for future in-process evaluation (#211).
228
228
  "WARN_ORIGIN_UNDER_UNMANAGED",
229
+ // A field.enum whose @values contains a member equal to the concatenation of
230
+ // two or more OTHER members once `strip`-normalized (the default mode erases
231
+ // separators). A delimited value then collapses into that member and coerces
232
+ // SUCCESSFULLY — reported EXTRACTED with a wrong-but-valid value rather than
233
+ // MALFORMED. Advisory: such a vocabulary is legal and unambiguous for exact
234
+ // matching; `@normalize: collapse` is the fix when delimited input is possible.
235
+ "WARN_ENUM_NORMALIZE_AMBIGUOUS",
229
236
  ] as const;
230
237
  export type WarningCode = (typeof WARNING_CODES)[number];
231
238
 
@@ -25,6 +25,7 @@ import { validateSourceEscapes } from "../persistence/source/validate-source-esc
25
25
  import { validateSourcePhysicalNames } from "../persistence/source/validate-source-physical-names.js";
26
26
  import { validateSourceParameterRef } from "../persistence/source/validate-source-parameter-ref.js";
27
27
  import { validateFieldReadOnly } from "../core/field/validate-field-readonly.js";
28
+ import { validateEnumNormalizeAmbiguity } from "../core/field/validate-enum-normalize-ambiguity.js";
28
29
  import { validateDiscriminator } from "../core/object/validate-discriminator.js";
29
30
  import { resolveDeferredSupers } from "../super-resolve.js";
30
31
  import { validateSubtypeRules } from "../subtype-rules.js";
@@ -656,6 +657,12 @@ export class MetaDataLoader {
656
657
  errors.push(...readOnlyResult.errors);
657
658
  envelopeWarnings.push(...readOnlyResult.warnings);
658
659
 
660
+ // Authoring guard — a field.enum vocabulary that is ambiguous under the
661
+ // default `@normalize: strip` (a member equal to the concatenation of
662
+ // others), which would silently coerce delimited input to a wrong-but-valid
663
+ // member. WARN_ENUM_NORMALIZE_AMBIGUOUS.
664
+ envelopeWarnings.push(...validateEnumNormalizeAmbiguity(root).warnings);
665
+
659
666
  // FR-015 — source.rdb @parameterRef typed-input validation.
660
667
  errors.push(...validateSourceParameterRef(root));
661
668
 
@@ -14,29 +14,43 @@ import { PACKAGE_SEPARATOR } from "../shared/structural.js";
14
14
  import type { TypeRegistry } from "../registry.js";
15
15
  import type { LoaderCode, SymbolTable, ValidationContext } from "../validation-types.js";
16
16
 
17
- /** A symbol table of every top-level object, built once per load (the binder analogue). */
17
+ /** A symbol table of every top-level node, built once per load (the binder analogue).
18
+ * Indexed PER TYPE so a reference descriptor can target a non-`object` node kind (its
19
+ * `targetType` is a free string) and so a template and an object sharing `pkg::Name`
20
+ * never collide. */
18
21
  class SymbolTableImpl implements SymbolTable {
19
- private readonly byKey = new Map<string, MetaData>();
22
+ private readonly byType = new Map<string, Map<string, MetaData>>();
20
23
 
21
24
  static build(root: MetaData): SymbolTableImpl {
22
25
  const t = new SymbolTableImpl();
23
26
  // ADR-0039: root has no super; children()==ownChildren() but resolving is the default.
24
27
  for (const child of root.children()) {
25
- if (child.type !== TYPE_OBJECT) continue;
28
+ let bucket = t.byType.get(child.type);
29
+ if (bucket === undefined) {
30
+ bucket = new Map<string, MetaData>();
31
+ t.byType.set(child.type, bucket);
32
+ }
26
33
  // ADR-0042: key by the canonical resolution key ONLY (the FQN, or the bare
27
34
  // name for a root-level/empty-package object) — NO bare-name fallback, so a
28
- // bare ref never binds a same-named object in another package.
29
- t.byKey.set(child.resolutionKey(), child);
35
+ // bare ref never binds a same-named node in another package.
36
+ bucket.set(child.resolutionKey(), child);
30
37
  }
31
38
  return t;
32
39
  }
33
40
 
34
- /** ADR-0042 package-local resolution: FQN → exact resolution-key match; bare →
35
- * the referrer's own package (`<referrerPkg>::<ref>`), else a root-level object. */
36
- resolveObject(ref: string, referrerPkg: string): MetaData | undefined {
37
- if (ref.includes(PACKAGE_SEPARATOR)) return this.byKey.get(ref);
41
+ /** ADR-0042 package-local resolution within the `type` bucket: FQN → exact
42
+ * resolution-key match; bare → the referrer's own package (`<referrerPkg>::<ref>`),
43
+ * else a root-level node of that type. */
44
+ resolve(type: string, ref: string, referrerPkg: string): MetaData | undefined {
45
+ const bucket = this.byType.get(type);
46
+ if (bucket === undefined) return undefined;
47
+ if (ref.includes(PACKAGE_SEPARATOR)) return bucket.get(ref);
38
48
  const localKey = referrerPkg !== "" ? `${referrerPkg}${PACKAGE_SEPARATOR}${ref}` : ref;
39
- return this.byKey.get(localKey) ?? this.byKey.get(ref);
49
+ return bucket.get(localKey) ?? bucket.get(ref);
50
+ }
51
+
52
+ resolveObject(ref: string, referrerPkg: string): MetaData | undefined {
53
+ return this.resolve(TYPE_OBJECT, ref, referrerPkg);
40
54
  }
41
55
  }
42
56
 
@@ -55,17 +69,23 @@ class ValidationContextImpl implements ValidationContext {
55
69
  */
56
70
  export function runRegisteredValidation(root: MetaData, registry: TypeRegistry): ParseError[] {
57
71
  const ctx = new ValidationContextImpl(SymbolTableImpl.build(root));
58
- walk(root, "");
72
+ walk(root, "", false);
59
73
  return ctx.errors;
60
74
 
61
- function walk(node: MetaData, referrerPkg: string): void {
62
- // ADR-0042: a top-level object establishes the package context for its
63
- // subtree; nested ref-bearing nodes (relationship/field.object/
64
- // identity.reference) resolve BARE refs against it. Nested nodes carry no
65
- // `package`, so they inherit the enclosing object's (via fileDefaultPackage,
66
- // else the threaded context).
75
+ function walk(node: MetaData, referrerPkg: string, isTopLevel: boolean): void {
76
+ // ADR-0042: a TOP-LEVEL node establishes the package context for its subtree;
77
+ // nested ref-bearing nodes (relationship/field.object/identity.reference) resolve
78
+ // BARE refs against it. Nested nodes carry no `package`, so they inherit the
79
+ // enclosing object's (via fileDefaultPackage, else the threaded context). A
80
+ // top-level node of ANY type sets the context — including a provider's custom
81
+ // top-level type — so a non-object top-level ref-bearing node resolves its bare
82
+ // refs in its own package, not at root level (#194 item 2). Objects still set
83
+ // context whether top-level or nested; behavior for every pre-existing case is
84
+ // unchanged (a nested non-object still inherits the threaded context).
67
85
  const pkg =
68
- node.type === TYPE_OBJECT ? (node.package ?? node.fileDefaultPackage ?? referrerPkg) : referrerPkg;
86
+ isTopLevel || node.type === TYPE_OBJECT
87
+ ? (node.package ?? node.fileDefaultPackage ?? referrerPkg)
88
+ : referrerPkg;
69
89
  const def = registry.find(node.type, node.subType);
70
90
  if (def) {
71
91
  for (const desc of def.references ?? []) {
@@ -74,21 +94,24 @@ export function runRegisteredValidation(root: MetaData, registry: TypeRegistry):
74
94
  const raw = node.attr(desc.attr);
75
95
  if (typeof raw !== "string" || raw === "") continue; // absence is the required-attr pass's job
76
96
  const entityRef = desc.dottedFieldPath ? (raw.split(".")[0] ?? raw) : raw;
77
- const target = ctx.symbols.resolveObject(entityRef, pkg);
97
+ const target = ctx.symbols.resolve(desc.targetType, entityRef, pkg);
78
98
  // Qualify the node name with its owning entity (e.g. "Order.items") so the error is
79
99
  // locatable from the message alone, not just the source envelope.
80
100
  const qname = node.parent?.name ? `${node.parent.name}.${node.name}` : node.name;
81
101
  if (!target) {
102
+ // `did-you-mean` is object-scoped (its candidate scan is over objects), so only
103
+ // append it for object targets; a non-object target names its own kind.
104
+ const wantKind = desc.targetType === TYPE_OBJECT ? "an object" : `a ${desc.targetType}`;
105
+ const hint = desc.targetType === TYPE_OBJECT ? didYouMeanHint(root, entityRef) : "";
82
106
  ctx.error(
83
107
  desc.errorCode,
84
108
  node,
85
- `${node.type}.${node.subType} "${qname}" @${desc.attr} "${raw}" does not resolve to an object.${didYouMeanHint(root, entityRef)}`,
109
+ `${node.type}.${node.subType} "${qname}" @${desc.attr} "${raw}" does not resolve to ${wantKind}.${hint}`,
86
110
  );
87
- } else if (
88
- target.type !== desc.targetType ||
89
- (desc.targetSubType !== undefined && target.subType !== desc.targetSubType)
90
- ) {
91
- const want = desc.targetSubType ? `${desc.targetType}.${desc.targetSubType}` : desc.targetType;
111
+ } else if (desc.targetSubType !== undefined && target.subType !== desc.targetSubType) {
112
+ // `resolve` already guarantees target.type === desc.targetType; only the
113
+ // subType can still mismatch.
114
+ const want = `${desc.targetType}.${desc.targetSubType}`;
92
115
  ctx.error(
93
116
  desc.errorCode,
94
117
  node,
@@ -101,6 +124,9 @@ export function runRegisteredValidation(root: MetaData, registry: TypeRegistry):
101
124
  }
102
125
  // ADR-0039: own — structural walk visiting every physical node once at its
103
126
  // declaration site (an inherited child is validated on its declaring parent).
104
- for (const child of node.ownChildren()) walk(child, pkg);
127
+ // The root's own children ARE the top-level nodes (each sets its own package
128
+ // context); everything deeper is nested.
129
+ const childrenAreTopLevel = node === root;
130
+ for (const child of node.ownChildren()) walk(child, pkg, childrenAreTopLevel);
105
131
  }
106
132
  }
@@ -30,10 +30,20 @@ export interface ReferenceDescriptor {
30
30
  readonly errorCode: LoaderCode;
31
31
  }
32
32
 
33
- /** Resolve a ref string to its object node under the ADR-0042 package-local
33
+ /** Resolve a ref string to a top-level node under the ADR-0042 package-local
34
34
  * contract. `referrerPkg` is the effective package of the node that declares
35
35
  * the ref (a bare ref resolves in that package, else root-level). */
36
36
  export interface SymbolTable {
37
+ /**
38
+ * Resolve a ref to a node of the given target TYPE. A `ReferenceDescriptor` may
39
+ * target a non-`object` node kind (its `targetType` is a free string), so the
40
+ * resolver is keyed by type — a downstream provider's `adapter.*`→`adapter.*`
41
+ * reference resolves for free, matching the descriptor mechanism's "present and
42
+ * future" promise. (Previously only `object.*` targets were indexed, so a
43
+ * non-object `targetType` was silently unsatisfiable.)
44
+ */
45
+ resolve(type: string, ref: string, referrerPkg: string): MetaData | undefined;
46
+ /** The common case — an `object`-target reference. Delegates to `resolve("object", …)`. */
37
47
  resolveObject(ref: string, referrerPkg: string): MetaData | undefined;
38
48
  }
39
49