@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.
- package/dist/core/field/validate-enum-normalize-ambiguity.d.ts +7 -0
- package/dist/core/field/validate-enum-normalize-ambiguity.d.ts.map +1 -0
- package/dist/core/field/validate-enum-normalize-ambiguity.js +153 -0
- package/dist/core/field/validate-enum-normalize-ambiguity.js.map +1 -0
- package/dist/errors.d.ts +1 -1
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +7 -0
- package/dist/errors.js.map +1 -1
- package/dist/loader/meta-data-loader.d.ts.map +1 -1
- package/dist/loader/meta-data-loader.js +6 -0
- package/dist/loader/meta-data-loader.js.map +1 -1
- package/dist/loader/validation-registry.d.ts.map +1 -1
- package/dist/loader/validation-registry.js +52 -25
- package/dist/loader/validation-registry.js.map +1 -1
- package/dist/validation-types.d.ts +11 -1
- package/dist/validation-types.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/core/field/validate-enum-normalize-ambiguity.ts +165 -0
- package/src/errors.ts +7 -0
- package/src/loader/meta-data-loader.ts +7 -0
- package/src/loader/validation-registry.ts +52 -26
- package/src/validation-types.ts +11 -1
|
@@ -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":"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"}
|
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
|
/**
|
package/dist/errors.d.ts.map
CHANGED
|
@@ -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,
|
|
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.
|
package/dist/errors.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,+CAA+C;AAI/C,4FAA4F;AAC5F,kFAAkF;AAClF,yDAAyD;AACzD,4FAA4F;AAC5F,gGAAgG;AAChG,2EAA2E;AAC3E,0FAA0F;AAC1F,EAAE;AACF,oFAAoF;AACpF,uFAAuF;AACvF,mFAAmF;AACnF,uFAAuF;AACvF,uFAAuF;AACvF,0BAA0B;AAC1B,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,0BAA0B;IAC1B,kBAAkB;IAClB,qBAAqB;IACrB,qBAAqB;IACrB,oBAAoB;IACpB,sBAAsB;IACtB,6EAA6E;IAC7E,0EAA0E;IAC1E,6BAA6B;IAC7B,iEAAiE;IACjE,oEAAoE;IACpE,gBAAgB;IAChB,4BAA4B;IAC5B,qEAAqE;IACrE,iEAAiE;IACjE,0BAA0B;IAC1B,oEAAoE;IACpE,+DAA+D;IAC/D,sCAAsC;IACtC,0EAA0E;IAC1E,uEAAuE;IACvE,gDAAgD;IAChD,2BAA2B;IAC3B,wEAAwE;IACxE,2EAA2E;IAC3E,4EAA4E;IAC5E,gCAAgC;IAChC,2BAA2B;IAC3B,0EAA0E;IAC1E,6EAA6E;IAC7E,wEAAwE;IACxE,8EAA8E;IAC9E,6EAA6E;IAC7E,8EAA8E;IAC9E,uBAAuB;IACvB,kBAAkB;IAClB,oBAAoB;IACpB,4BAA4B;IAC5B,+BAA+B;IAC/B,2BAA2B;IAC3B,iCAAiC;IACjC,4BAA4B;IAC5B,oBAAoB;IACpB,2BAA2B;IAC3B,4BAA4B;IAC5B,uBAAuB;IACvB,oBAAoB;IACpB,oBAAoB;IACpB,2EAA2E;IAC3E,uEAAuE;IACvE,wEAAwE;IACxE,uEAAuE;IACvE,+DAA+D;IAC/D,oBAAoB;IACpB,uEAAuE;IACvE,2EAA2E;IAC3E,0EAA0E;IAC1E,wDAAwD;IACxD,wBAAwB;IACxB,wEAAwE;IACxE,6EAA6E;IAC7E,2EAA2E;IAC3E,oEAAoE;IACpE,qEAAqE;IACrE,uEAAuE;IACvE,oDAAoD;IACpD,6BAA6B;IAC7B,8EAA8E;IAC9E,wEAAwE;IACxE,6EAA6E;IAC7E,8EAA8E;IAC9E,2EAA2E;IAC3E,2EAA2E;IAC3E,yEAAyE;IACzE,+BAA+B;IAC/B,0EAA0E;IAC1E,2EAA2E;IAC3E,wEAAwE;IACxE,uEAAuE;IACvE,0EAA0E;IAC1E,sEAAsE;IACtE,sDAAsD;IACtD,kCAAkC;IAClC,oCAAoC;IACpC,sBAAsB;IACtB,+EAA+E;IAC/E,iFAAiF;IACjF,gFAAgF;IAChF,0BAA0B;IAC1B,iFAAiF;IACjF,2EAA2E;IAC3E,uBAAuB;IACvB,wBAAwB;IACxB,+EAA+E;IAC/E,qEAAqE;IACrE,8DAA8D;IAC9D,4BAA4B;IAC5B,wBAAwB;IACxB,0BAA0B;IAC1B,wBAAwB;IACxB,qBAAqB;IACrB,6BAA6B;IAC7B,gCAAgC;IAChC,wEAAwE;IACxE,2EAA2E;IAC3E,qCAAqC;IACrC,2EAA2E;IAC3E,mEAAmE;IACnE,0EAA0E;IAC1E,gEAAgE;IAChE,2BAA2B;IAC3B,qFAAqF;IACrF,mBAAmB;IACnB,uBAAuB;IACvB,6BAA6B;IAC7B,6EAA6E;IAC7E,iCAAiC;IACjC,4BAA4B;IAC5B,6DAA6D;IAC7D,+BAA+B;IAC/B,wBAAwB;IACxB,4DAA4D;IAC5D,8BAA8B;IAC9B,oCAAoC;IACpC,wCAAwC;IACxC,yDAAyD;IACzD,mCAAmC;IACnC,mCAAmC;IACnC,iCAAiC;IACjC,uCAAuC;IACvC,uEAAuE;IACvE,oEAAoE;IACpE,mBAAmB;IACnB,0EAA0E;IAC1E,qEAAqE;IACrE,oBAAoB;IACpB,4EAA4E;IAC5E,yEAAyE;IACzE,oCAAoC;IACpC,8EAA8E;IAC9E,8EAA8E;IAC9E,qBAAqB;IACrB,0EAA0E;IAC1E,6EAA6E;IAC7E,+EAA+E;IAC/E,6EAA6E;IAC7E,2EAA2E;IAC3E,+BAA+B;IAC/B,gFAAgF;IAChF,gFAAgF;IAChF,6EAA6E;IAC7E,iFAAiF;IACjF,2DAA2D;IAC3D,kCAAkC;IAClC,6EAA6E;IAC7E,+EAA+E;IAC/E,mBAAmB;IACnB,8EAA8E;IAC9E,+EAA+E;IAC/E,4EAA4E;IAC5E,iFAAiF;IACjF,4BAA4B;IAC5B,8EAA8E;IAC9E,gFAAgF;IAChF,uBAAuB;IACvB,oEAAoE;IACpE,qEAAqE;IACrE,gEAAgE;IAChE,6BAA6B;IAC7B,wEAAwE;IACxE,qEAAqE;IACrE,0EAA0E;IAC1E,+BAA+B;IAC/B,uEAAuE;IACvE,2EAA2E;IAC3E,2EAA2E;IAC3E,+CAA+C;IAC/C,2BAA2B;IAC3B,4EAA4E;IAC5E,0EAA0E;IAC1E,2EAA2E;IAC3E,6EAA6E;IAC7E,kCAAkC;IAClC,aAAa;CACL,CAAC;AAEX,kEAAkE;AAClE,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,0EAA0E;IAC1E,kDAAkD;IAClD,4BAA4B;IAC5B,oEAAoE;IACpE,uEAAuE;IACvE,+DAA+D;IAC/D,aAAa;IACb,2EAA2E;IAC3E,4EAA4E;IAC5E,iCAAiC;IACjC,uEAAuE;IACvE,wEAAwE;IACxE,0EAA0E;IAC1E,4BAA4B;IAC5B,wEAAwE;IACxE,8DAA8D;IAC9D,wEAAwE;IACxE,uEAAuE;IACvE,oEAAoE;IACpE,4DAA4D;IAC5D,6BAA6B;
|
|
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;
|
|
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;AAiBlD,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;CAuR3D"}
|
|
@@ -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":"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,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,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
|
+
{"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;
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
20
|
-
|
|
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
|
|
24
|
-
|
|
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
|
|
29
|
-
* the referrer's own package (`<referrerPkg>::<ref>`),
|
|
30
|
-
|
|
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
|
|
42
|
+
return bucket.get(ref);
|
|
33
43
|
const localKey = referrerPkg !== "" ? `${referrerPkg}${PACKAGE_SEPARATOR}${ref}` : ref;
|
|
34
|
-
return
|
|
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
|
|
58
|
-
//
|
|
59
|
-
//
|
|
60
|
-
//
|
|
61
|
-
//
|
|
62
|
-
|
|
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.
|
|
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
|
-
|
|
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.
|
|
80
|
-
|
|
81
|
-
|
|
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":"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
|
|
1
|
+
{"version":3,"file":"validation-registry.js","sourceRoot":"","sources":["../../src/loader/validation-registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -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
|
|
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
|
@@ -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
|
|
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
|
|
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
|
-
|
|
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
|
|
29
|
-
|
|
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
|
|
35
|
-
* the referrer's own package (`<referrerPkg>::<ref>`),
|
|
36
|
-
|
|
37
|
-
|
|
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
|
|
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
|
|
63
|
-
//
|
|
64
|
-
//
|
|
65
|
-
//
|
|
66
|
-
//
|
|
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
|
|
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.
|
|
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
|
|
109
|
+
`${node.type}.${node.subType} "${qname}" @${desc.attr} "${raw}" does not resolve to ${wantKind}.${hint}`,
|
|
86
110
|
);
|
|
87
|
-
} else if (
|
|
88
|
-
target.type
|
|
89
|
-
|
|
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
|
-
|
|
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
|
}
|
package/src/validation-types.ts
CHANGED
|
@@ -30,10 +30,20 @@ export interface ReferenceDescriptor {
|
|
|
30
30
|
readonly errorCode: LoaderCode;
|
|
31
31
|
}
|
|
32
32
|
|
|
33
|
-
/** Resolve a ref string to
|
|
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
|
|