@metaobjectsdev/metadata 1.0.0-rc.4 → 1.0.0-rc.6
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/vocabulary-rewrite-yaml.d.ts.map +1 -1
- package/dist/core/vocabulary-rewrite-yaml.js +9 -0
- package/dist/core/vocabulary-rewrite-yaml.js.map +1 -1
- package/dist/parser-core.d.ts.map +1 -1
- package/dist/parser-core.js +23 -0
- package/dist/parser-core.js.map +1 -1
- package/dist/presentation/ui/ui-definition.embedded.js +2 -2
- package/dist/presentation/ui/ui-definition.embedded.js.map +1 -1
- package/dist/retired-vocabulary.d.ts +2 -1
- package/dist/retired-vocabulary.d.ts.map +1 -1
- package/dist/retired-vocabulary.js +42 -1
- package/dist/retired-vocabulary.js.map +1 -1
- package/dist/shared/meta-data.d.ts.map +1 -1
- package/dist/shared/meta-data.js +13 -1
- package/dist/shared/meta-data.js.map +1 -1
- package/dist/shared/structural.d.ts +29 -0
- package/dist/shared/structural.d.ts.map +1 -1
- package/dist/shared/structural.js +44 -0
- package/dist/shared/structural.js.map +1 -1
- package/dist/vocabulary-rewrite.d.ts +33 -0
- package/dist/vocabulary-rewrite.d.ts.map +1 -1
- package/dist/vocabulary-rewrite.js +43 -0
- package/dist/vocabulary-rewrite.js.map +1 -1
- package/package.json +1 -1
- package/src/core/vocabulary-rewrite-yaml.ts +9 -0
- package/src/parser-core.ts +26 -0
- package/src/presentation/ui/ui-definition.embedded.ts +2 -2
- package/src/retired-vocabulary.ts +48 -2
- package/src/shared/meta-data.ts +13 -1
- package/src/shared/structural.ts +48 -0
- package/src/vocabulary-rewrite.ts +58 -0
|
@@ -8,6 +8,35 @@ export declare const RESERVED_KEY_CHILDREN = "children";
|
|
|
8
8
|
/** attr-child-node body key carrying the typed value. */
|
|
9
9
|
export declare const RESERVED_KEY_VALUE = "value";
|
|
10
10
|
export declare const RESERVED_KEYS: Set<string>;
|
|
11
|
+
/**
|
|
12
|
+
* The reserved structural keywords that can NEVER be an attribute, mapped to the
|
|
13
|
+
* native accessor that answers the same question.
|
|
14
|
+
*
|
|
15
|
+
* `value` is deliberately absent: an `attr` node stores its own typed payload under
|
|
16
|
+
* that key and reads it back with `ownAttr(RESERVED_KEY_VALUE)`, which is the one
|
|
17
|
+
* legitimate reserved-key attr read in the model.
|
|
18
|
+
*/
|
|
19
|
+
export declare const STRUCTURAL_KEYWORD_ACCESSORS: ReadonlyMap<string, string>;
|
|
20
|
+
/**
|
|
21
|
+
* Refuse an attribute lookup for a reserved structural keyword.
|
|
22
|
+
*
|
|
23
|
+
* These names are NATIVE PROPERTIES, not attributes: `@isArray` and friends are
|
|
24
|
+
* rejected at the load with ERR_RESERVED_ATTR, so no document can ever set one and
|
|
25
|
+
* the lookup can only ever answer `undefined`. That answer is indistinguishable
|
|
26
|
+
* from "the author did not set that attribute", which is what made this silent.
|
|
27
|
+
*
|
|
28
|
+
* It was not hypothetical. An adopter's own generator typed a field as
|
|
29
|
+
* `f.attr("isArray") === true ? base + "[]" : base`, and the reference document it
|
|
30
|
+
* generated — the one bot authors read — described ALL 31 of that model's array
|
|
31
|
+
* fields as scalars. Its sibling module had used the resolving accessor since the
|
|
32
|
+
* day it was written, with a comment naming the trap, and nothing compared the two.
|
|
33
|
+
* The file's own header taught the rule fourteen lines above the violation: prose
|
|
34
|
+
* is not a gate.
|
|
35
|
+
*
|
|
36
|
+
* A throw rather than a warning because there is no reading under which this call
|
|
37
|
+
* is correct, and the fix is one line at the call site.
|
|
38
|
+
*/
|
|
39
|
+
export declare function assertNotStructuralKeyword(name: string, accessor: string): void;
|
|
11
40
|
export declare const JSON_KEY_SCHEMA = "$schema";
|
|
12
41
|
export declare const ATTR_PREFIX = "@";
|
|
13
42
|
/** Separator fusing type and subType in a node's wrapper key (`object.entity`). */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"structural.d.ts","sourceRoot":"","sources":["../../src/shared/structural.ts"],"names":[],"mappings":"AAUA,eAAO,MAAM,iBAAiB,SAAS,CAAC;AACxC,eAAO,MAAM,oBAAoB,YAAY,CAAC;AAC9C,eAAO,MAAM,oBAAoB,YAAY,CAAC;AAC9C,eAAO,MAAM,qBAAqB,aAAa,CAAC;AAChD,eAAO,MAAM,oBAAoB,YAAY,CAAC;AAC9C,eAAO,MAAM,qBAAqB,YAAY,CAAC;AAC/C,eAAO,MAAM,qBAAqB,aAAa,CAAC;AAEhD,yDAAyD;AACzD,eAAO,MAAM,kBAAkB,UAAU,CAAC;AAE1C,eAAO,MAAM,aAAa,aASxB,CAAC;
|
|
1
|
+
{"version":3,"file":"structural.d.ts","sourceRoot":"","sources":["../../src/shared/structural.ts"],"names":[],"mappings":"AAUA,eAAO,MAAM,iBAAiB,SAAS,CAAC;AACxC,eAAO,MAAM,oBAAoB,YAAY,CAAC;AAC9C,eAAO,MAAM,oBAAoB,YAAY,CAAC;AAC9C,eAAO,MAAM,qBAAqB,aAAa,CAAC;AAChD,eAAO,MAAM,oBAAoB,YAAY,CAAC;AAC9C,eAAO,MAAM,qBAAqB,YAAY,CAAC;AAC/C,eAAO,MAAM,qBAAqB,aAAa,CAAC;AAEhD,yDAAyD;AACzD,eAAO,MAAM,kBAAkB,UAAU,CAAC;AAE1C,eAAO,MAAM,aAAa,aASxB,CAAC;AAGH;;;;;;;GAOG;AACH,eAAO,MAAM,4BAA4B,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAQnE,CAAC;AAEH;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAQ/E;AAMD,eAAO,MAAM,eAAe,YAAY,CAAC;AAMzC,eAAO,MAAM,WAAW,MAAM,CAAC;AAE/B,mFAAmF;AACnF,eAAO,MAAM,sBAAsB,MAAM,CAAC;AAM1C,uEAAuE;AACvE,eAAO,MAAM,iBAAiB,OAAO,CAAC;AAEtC;;;;;GAKG;AACH,eAAO,MAAM,mBAAmB,MAAM,CAAC;AAEvC,mDAAmD;AACnD,eAAO,MAAM,cAAc,OAAO,CAAC;AAMnC,eAAO,MAAM,mBAAmB,MAAM,CAAC"}
|
|
@@ -25,6 +25,50 @@ export const RESERVED_KEYS = new Set([
|
|
|
25
25
|
RESERVED_KEY_CHILDREN,
|
|
26
26
|
RESERVED_KEY_VALUE,
|
|
27
27
|
]);
|
|
28
|
+
/**
|
|
29
|
+
* The reserved structural keywords that can NEVER be an attribute, mapped to the
|
|
30
|
+
* native accessor that answers the same question.
|
|
31
|
+
*
|
|
32
|
+
* `value` is deliberately absent: an `attr` node stores its own typed payload under
|
|
33
|
+
* that key and reads it back with `ownAttr(RESERVED_KEY_VALUE)`, which is the one
|
|
34
|
+
* legitimate reserved-key attr read in the model.
|
|
35
|
+
*/
|
|
36
|
+
export const STRUCTURAL_KEYWORD_ACCESSORS = new Map([
|
|
37
|
+
[RESERVED_KEY_NAME, "the `.name` property"],
|
|
38
|
+
[RESERVED_KEY_PACKAGE, "the `.package` property (or effectivePackage(node) for the file-default fold)"],
|
|
39
|
+
[RESERVED_KEY_EXTENDS, "the `.superData` property"],
|
|
40
|
+
[RESERVED_KEY_ABSTRACT, "the `.isAbstract` property"],
|
|
41
|
+
[RESERVED_KEY_OVERLAY, "the node's overlay flag"],
|
|
42
|
+
[RESERVED_KEY_IS_ARRAY, "`.resolvedIsArray()` (NOT the `.isArray` own flag — that one drops what `extends` contributes)"],
|
|
43
|
+
[RESERVED_KEY_CHILDREN, "`.children()`"],
|
|
44
|
+
]);
|
|
45
|
+
/**
|
|
46
|
+
* Refuse an attribute lookup for a reserved structural keyword.
|
|
47
|
+
*
|
|
48
|
+
* These names are NATIVE PROPERTIES, not attributes: `@isArray` and friends are
|
|
49
|
+
* rejected at the load with ERR_RESERVED_ATTR, so no document can ever set one and
|
|
50
|
+
* the lookup can only ever answer `undefined`. That answer is indistinguishable
|
|
51
|
+
* from "the author did not set that attribute", which is what made this silent.
|
|
52
|
+
*
|
|
53
|
+
* It was not hypothetical. An adopter's own generator typed a field as
|
|
54
|
+
* `f.attr("isArray") === true ? base + "[]" : base`, and the reference document it
|
|
55
|
+
* generated — the one bot authors read — described ALL 31 of that model's array
|
|
56
|
+
* fields as scalars. Its sibling module had used the resolving accessor since the
|
|
57
|
+
* day it was written, with a comment naming the trap, and nothing compared the two.
|
|
58
|
+
* The file's own header taught the rule fourteen lines above the violation: prose
|
|
59
|
+
* is not a gate.
|
|
60
|
+
*
|
|
61
|
+
* A throw rather than a warning because there is no reading under which this call
|
|
62
|
+
* is correct, and the fix is one line at the call site.
|
|
63
|
+
*/
|
|
64
|
+
export function assertNotStructuralKeyword(name, accessor) {
|
|
65
|
+
const native = STRUCTURAL_KEYWORD_ACCESSORS.get(name);
|
|
66
|
+
if (native === undefined)
|
|
67
|
+
return;
|
|
68
|
+
throw new Error(`${accessor}(${JSON.stringify(name)}): '${name}' is a reserved structural keyword, ` +
|
|
69
|
+
`not an attribute — '@${name}' fails the load with ERR_RESERVED_ATTR, so this ` +
|
|
70
|
+
`lookup can only ever return undefined. Read ${native} instead.`);
|
|
71
|
+
}
|
|
28
72
|
// ---------------------------------------------------------------------------
|
|
29
73
|
// JSON document special keys (top-level, ignored during wrapper-key detection)
|
|
30
74
|
// ---------------------------------------------------------------------------
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"structural.js","sourceRoot":"","sources":["../../src/shared/structural.ts"],"names":[],"mappings":"AAAA,uGAAuG;AAEvG,8EAA8E;AAC9E,gFAAgF;AAChF,EAAE;AACF,0EAA0E;AAC1E,0EAA0E;AAC1E,6CAA6C;AAC7C,8EAA8E;AAE9E,MAAM,CAAC,MAAM,iBAAiB,GAAG,MAAM,CAAC;AACxC,MAAM,CAAC,MAAM,oBAAoB,GAAG,SAAS,CAAC;AAC9C,MAAM,CAAC,MAAM,oBAAoB,GAAG,SAAS,CAAC,CAAG,0BAA0B;AAC3E,MAAM,CAAC,MAAM,qBAAqB,GAAG,UAAU,CAAC,CAAC,8BAA8B;AAC/E,MAAM,CAAC,MAAM,oBAAoB,GAAG,SAAS,CAAC,CAAG,8CAA8C;AAC/F,MAAM,CAAC,MAAM,qBAAqB,GAAG,SAAS,CAAC,CAAE,8BAA8B;AAC/E,MAAM,CAAC,MAAM,qBAAqB,GAAG,UAAU,CAAC;AAEhD,yDAAyD;AACzD,MAAM,CAAC,MAAM,kBAAkB,GAAG,OAAO,CAAC;AAE1C,MAAM,CAAC,MAAM,aAAa,GAAG,IAAI,GAAG,CAAS;IAC3C,iBAAiB;IACjB,oBAAoB;IACpB,oBAAoB;IACpB,qBAAqB;IACrB,oBAAoB;IACpB,qBAAqB;IACrB,qBAAqB;IACrB,kBAAkB;CACnB,CAAC,CAAC;AAEH,8EAA8E;AAC9E,+EAA+E;AAC/E,8EAA8E;AAE9E,MAAM,CAAC,MAAM,eAAe,GAAG,SAAS,CAAC;AAEzC,8EAA8E;AAC9E,6DAA6D;AAC7D,8EAA8E;AAE9E,MAAM,CAAC,MAAM,WAAW,GAAG,GAAG,CAAC;AAE/B,mFAAmF;AACnF,MAAM,CAAC,MAAM,sBAAsB,GAAG,GAAG,CAAC;AAE1C,8EAA8E;AAC9E,2BAA2B;AAC3B,8EAA8E;AAE9E,uEAAuE;AACvE,MAAM,CAAC,MAAM,iBAAiB,GAAG,IAAI,CAAC;AAEtC;;;;;GAKG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,GAAG,CAAC;AAEvC,mDAAmD;AACnD,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,CAAC;AAEnC,8EAA8E;AAC9E,mCAAmC;AACnC,8EAA8E;AAE9E,MAAM,CAAC,MAAM,mBAAmB,GAAG,GAAG,CAAC"}
|
|
1
|
+
{"version":3,"file":"structural.js","sourceRoot":"","sources":["../../src/shared/structural.ts"],"names":[],"mappings":"AAAA,uGAAuG;AAEvG,8EAA8E;AAC9E,gFAAgF;AAChF,EAAE;AACF,0EAA0E;AAC1E,0EAA0E;AAC1E,6CAA6C;AAC7C,8EAA8E;AAE9E,MAAM,CAAC,MAAM,iBAAiB,GAAG,MAAM,CAAC;AACxC,MAAM,CAAC,MAAM,oBAAoB,GAAG,SAAS,CAAC;AAC9C,MAAM,CAAC,MAAM,oBAAoB,GAAG,SAAS,CAAC,CAAG,0BAA0B;AAC3E,MAAM,CAAC,MAAM,qBAAqB,GAAG,UAAU,CAAC,CAAC,8BAA8B;AAC/E,MAAM,CAAC,MAAM,oBAAoB,GAAG,SAAS,CAAC,CAAG,8CAA8C;AAC/F,MAAM,CAAC,MAAM,qBAAqB,GAAG,SAAS,CAAC,CAAE,8BAA8B;AAC/E,MAAM,CAAC,MAAM,qBAAqB,GAAG,UAAU,CAAC;AAEhD,yDAAyD;AACzD,MAAM,CAAC,MAAM,kBAAkB,GAAG,OAAO,CAAC;AAE1C,MAAM,CAAC,MAAM,aAAa,GAAG,IAAI,GAAG,CAAS;IAC3C,iBAAiB;IACjB,oBAAoB;IACpB,oBAAoB;IACpB,qBAAqB;IACrB,oBAAoB;IACpB,qBAAqB;IACrB,qBAAqB;IACrB,kBAAkB;CACnB,CAAC,CAAC;AAGH;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAgC,IAAI,GAAG,CAAC;IAC/E,CAAC,iBAAiB,EAAE,sBAAsB,CAAC;IAC3C,CAAC,oBAAoB,EAAE,+EAA+E,CAAC;IACvG,CAAC,oBAAoB,EAAE,2BAA2B,CAAC;IACnD,CAAC,qBAAqB,EAAE,4BAA4B,CAAC;IACrD,CAAC,oBAAoB,EAAE,yBAAyB,CAAC;IACjD,CAAC,qBAAqB,EAAE,gGAAgG,CAAC;IACzH,CAAC,qBAAqB,EAAE,eAAe,CAAC;CACzC,CAAC,CAAC;AAEH;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,0BAA0B,CAAC,IAAY,EAAE,QAAgB;IACvE,MAAM,MAAM,GAAG,4BAA4B,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACtD,IAAI,MAAM,KAAK,SAAS;QAAE,OAAO;IACjC,MAAM,IAAI,KAAK,CACb,GAAG,QAAQ,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,IAAI,sCAAsC;QAClF,wBAAwB,IAAI,mDAAmD;QAC/E,+CAA+C,MAAM,WAAW,CACnE,CAAC;AACJ,CAAC;AAED,8EAA8E;AAC9E,+EAA+E;AAC/E,8EAA8E;AAE9E,MAAM,CAAC,MAAM,eAAe,GAAG,SAAS,CAAC;AAEzC,8EAA8E;AAC9E,6DAA6D;AAC7D,8EAA8E;AAE9E,MAAM,CAAC,MAAM,WAAW,GAAG,GAAG,CAAC;AAE/B,mFAAmF;AACnF,MAAM,CAAC,MAAM,sBAAsB,GAAG,GAAG,CAAC;AAE1C,8EAA8E;AAC9E,2BAA2B;AAC3B,8EAA8E;AAE9E,uEAAuE;AACvE,MAAM,CAAC,MAAM,iBAAiB,GAAG,IAAI,CAAC;AAEtC;;;;;GAKG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,GAAG,CAAC;AAEvC,mDAAmD;AACnD,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,CAAC;AAEnC,8EAA8E;AAC9E,mCAAmC;AACnC,8EAA8E;AAE9E,MAAM,CAAC,MAAM,mBAAmB,GAAG,GAAG,CAAC"}
|
|
@@ -14,6 +14,28 @@ export interface RewriteRefusal extends RetirementNote {
|
|
|
14
14
|
readonly value?: string;
|
|
15
15
|
readonly line: number;
|
|
16
16
|
}
|
|
17
|
+
/**
|
|
18
|
+
* The refusal for an authored `<type>.base`, or `undefined` when `typeKey` is not one.
|
|
19
|
+
*
|
|
20
|
+
* Shared by BOTH rewriters. Their detection legitimately differs — one walks JSON key
|
|
21
|
+
* ranges, the other YAML node spans — but the verdict does not, and the `why` plus the
|
|
22
|
+
* migration path were spelled out twice, byte-identically, in two files. A message an
|
|
23
|
+
* adopter reads is a contract: two copies are two places for the next wording or the next
|
|
24
|
+
* guide path to reach one and not the other, and the reader has no way to tell which arm
|
|
25
|
+
* answered them.
|
|
26
|
+
*
|
|
27
|
+
* `line` is deliberately NOT returned. It is the one part that genuinely differs between
|
|
28
|
+
* the arms (a JSON key index vs a YAML span start), so each caller supplies its own.
|
|
29
|
+
*
|
|
30
|
+
* An authored `base` is a LOAD ERROR, not a retirement — the anchor was never authorable,
|
|
31
|
+
* and three of five ports accepted it anyway until 1.0. It is reported here for the same
|
|
32
|
+
* reason retired subtypes are: `meta upgrade` is the command an adopter runs to ask "what
|
|
33
|
+
* does the new version need me to change?", and answering "nothing" about the change the
|
|
34
|
+
* migration guide LEADS WITH is worse than not being asked. It is a REFUSAL rather than a
|
|
35
|
+
* rewrite because choosing the concrete subtype is a decision about what the node IS,
|
|
36
|
+
* which no rewriter can make.
|
|
37
|
+
*/
|
|
38
|
+
export declare function authoredBaseRefusal(typeKey: string, abstractAnchorTypes: readonly string[] | undefined): Omit<RewriteRefusal, "line"> | undefined;
|
|
17
39
|
export interface RewriteResult {
|
|
18
40
|
readonly text: string;
|
|
19
41
|
readonly changes: readonly RewriteChange[];
|
|
@@ -22,6 +44,17 @@ export interface RewriteResult {
|
|
|
22
44
|
export interface RewriteOpts {
|
|
23
45
|
/** Only apply retirements at or before this version. */
|
|
24
46
|
readonly maxVersion?: string;
|
|
47
|
+
/**
|
|
48
|
+
* Types whose `<type>.base` is an ABSTRACT ANCHOR, so authoring one is a load error
|
|
49
|
+
* (`ERR_ABSTRACT_SUBTYPE_AUTHORED`). Supplied by the CALLER rather than derived here,
|
|
50
|
+
* because this module is deliberately registry-free — and the fact is a registry
|
|
51
|
+
* question: `base` is an anchor exactly when the type registers some OTHER subtype for
|
|
52
|
+
* it to anchor, which a third-party provider's base-only type does not.
|
|
53
|
+
*
|
|
54
|
+
* Omitted ⇒ no anchor refusals, which is the honest default for a caller that cannot
|
|
55
|
+
* say. `meta upgrade` supplies the core set.
|
|
56
|
+
*/
|
|
57
|
+
readonly abstractAnchorTypes?: readonly string[];
|
|
25
58
|
}
|
|
26
59
|
/**
|
|
27
60
|
* Rewrite retired vocabulary in one raw canonical-JSON metadata document.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vocabulary-rewrite.d.ts","sourceRoot":"","sources":["../src/vocabulary-rewrite.ts"],"names":[],"mappings":"AAwDA,OAAO,EAKL,KAAK,cAAc,EACpB,MAAM,yBAAyB,CAAC;AAEjC,MAAM,WAAW,aAAa;IAC5B,yCAAyC;IACzC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,+CAA+C;IAC/C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,cAAe,SAAQ,cAAc;IACpD;yFACqF;IACrF,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,SAAS,aAAa,EAAE,CAAC;IAC3C,QAAQ,CAAC,QAAQ,EAAE,SAAS,cAAc,EAAE,CAAC;CAC9C;AAED,MAAM,WAAW,WAAW;IAC1B,wDAAwD;IACxD,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"vocabulary-rewrite.d.ts","sourceRoot":"","sources":["../src/vocabulary-rewrite.ts"],"names":[],"mappings":"AAwDA,OAAO,EAKL,KAAK,cAAc,EACpB,MAAM,yBAAyB,CAAC;AAEjC,MAAM,WAAW,aAAa;IAC5B,yCAAyC;IACzC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,+CAA+C;IAC/C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,cAAe,SAAQ,cAAc;IACpD;yFACqF;IACrF,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,MAAM,EACf,mBAAmB,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,GACjD,IAAI,CAAC,cAAc,EAAE,MAAM,CAAC,GAAG,SAAS,CAY1C;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,SAAS,aAAa,EAAE,CAAC;IAC3C,QAAQ,CAAC,QAAQ,EAAE,SAAS,cAAc,EAAE,CAAC;CAC9C;AAED,MAAM,WAAW,WAAW;IAC1B,wDAAwD;IACxD,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B;;;;;;;;;OASG;IACH,QAAQ,CAAC,mBAAmB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAClD;AAoOD;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,GAAE,WAAgB,GAAG,aAAa,CAwJrF"}
|
|
@@ -53,6 +53,41 @@
|
|
|
53
53
|
// believe the migration finished.
|
|
54
54
|
import { ATTR_CONTRADICTIONS, contradictionScopeMatches } from "./attr-contradictions.js";
|
|
55
55
|
import { RETIRED_VOCABULARY, note, scopeMatches, } from "./retired-vocabulary.js";
|
|
56
|
+
/**
|
|
57
|
+
* The refusal for an authored `<type>.base`, or `undefined` when `typeKey` is not one.
|
|
58
|
+
*
|
|
59
|
+
* Shared by BOTH rewriters. Their detection legitimately differs — one walks JSON key
|
|
60
|
+
* ranges, the other YAML node spans — but the verdict does not, and the `why` plus the
|
|
61
|
+
* migration path were spelled out twice, byte-identically, in two files. A message an
|
|
62
|
+
* adopter reads is a contract: two copies are two places for the next wording or the next
|
|
63
|
+
* guide path to reach one and not the other, and the reader has no way to tell which arm
|
|
64
|
+
* answered them.
|
|
65
|
+
*
|
|
66
|
+
* `line` is deliberately NOT returned. It is the one part that genuinely differs between
|
|
67
|
+
* the arms (a JSON key index vs a YAML span start), so each caller supplies its own.
|
|
68
|
+
*
|
|
69
|
+
* An authored `base` is a LOAD ERROR, not a retirement — the anchor was never authorable,
|
|
70
|
+
* and three of five ports accepted it anyway until 1.0. It is reported here for the same
|
|
71
|
+
* reason retired subtypes are: `meta upgrade` is the command an adopter runs to ask "what
|
|
72
|
+
* does the new version need me to change?", and answering "nothing" about the change the
|
|
73
|
+
* migration guide LEADS WITH is worse than not being asked. It is a REFUSAL rather than a
|
|
74
|
+
* rewrite because choosing the concrete subtype is a decision about what the node IS,
|
|
75
|
+
* which no rewriter can make.
|
|
76
|
+
*/
|
|
77
|
+
export function authoredBaseRefusal(typeKey, abstractAnchorTypes) {
|
|
78
|
+
const dot = typeKey.lastIndexOf(".");
|
|
79
|
+
if (dot < 0 || typeKey.slice(dot + 1) !== "base")
|
|
80
|
+
return undefined;
|
|
81
|
+
if (!(abstractAnchorTypes ?? []).includes(typeKey.slice(0, dot)))
|
|
82
|
+
return undefined;
|
|
83
|
+
return {
|
|
84
|
+
since: "1.0.0",
|
|
85
|
+
why: `"${typeKey}" may not be authored — every "base" subtype is an abstract registry ` +
|
|
86
|
+
"anchor that concrete subtypes inherit from, with no runtime semantics of its own.",
|
|
87
|
+
migration: "docs/features/migrations/base-subtypes-are-not-authorable.md",
|
|
88
|
+
subject: typeKey,
|
|
89
|
+
};
|
|
90
|
+
}
|
|
56
91
|
/** `0.24.0` → `[0,24,0]`, for an ordered comparison rather than a string one. */
|
|
57
92
|
function parts(v) {
|
|
58
93
|
return v.split(".").map((n) => Number.parseInt(n, 10) || 0);
|
|
@@ -297,6 +332,14 @@ export function rewriteDocument(source, opts = {}) {
|
|
|
297
332
|
refusals.push({ ...note(entry), subject: r.typeKey, line: lineAt(source, r.keyIndex) });
|
|
298
333
|
}
|
|
299
334
|
}
|
|
335
|
+
// An authored `<type>.base` — see authoredBaseRefusal for why this is reported at all.
|
|
336
|
+
// Only the LINE is this arm's own; the verdict is shared with the YAML rewriter.
|
|
337
|
+
for (const r of ranges) {
|
|
338
|
+
const refusal = authoredBaseRefusal(r.typeKey, opts.abstractAnchorTypes);
|
|
339
|
+
if (refusal !== undefined) {
|
|
340
|
+
refusals.push({ ...refusal, line: lineAt(source, r.keyIndex) });
|
|
341
|
+
}
|
|
342
|
+
}
|
|
300
343
|
// ── Attribute contradictions: two LIVE attrs that may not sit on one node ──
|
|
301
344
|
//
|
|
302
345
|
// Matched per NODE, not per occurrence, because the illegal thing is the pair. `ownKeys`
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vocabulary-rewrite.js","sourceRoot":"","sources":["../src/vocabulary-rewrite.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"vocabulary-rewrite.js","sourceRoot":"","sources":["../src/vocabulary-rewrite.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -42,6 +42,7 @@ import {
|
|
|
42
42
|
type RetiredEntry,
|
|
43
43
|
} from "../retired-vocabulary.js";
|
|
44
44
|
import type { RewriteChange, RewriteRefusal, RewriteOpts, RewriteResult } from "../vocabulary-rewrite.js";
|
|
45
|
+
import { authoredBaseRefusal } from "../vocabulary-rewrite.js";
|
|
45
46
|
|
|
46
47
|
/**
|
|
47
48
|
* A rewrite result that can also report "I could not read this file".
|
|
@@ -304,6 +305,14 @@ export function rewriteYamlDocument(source: string, opts: RewriteOpts = {}): Yam
|
|
|
304
305
|
if (`${entry.type}.${entry.subType}` !== key) continue;
|
|
305
306
|
refusals.push({ ...note(entry), subject: key, line: lineOf(span.keyStart) });
|
|
306
307
|
}
|
|
308
|
+
// The SAME verdict as the JSON arm, from the SAME function. The two rewriters walk
|
|
309
|
+
// different structures — JSON key ranges vs YAML node spans — so the DETECTION stays
|
|
310
|
+
// per-arm, but the refusal an adopter reads is one decision and now has one source.
|
|
311
|
+
// Only the line number is this arm's own.
|
|
312
|
+
const baseRefusal = authoredBaseRefusal(key, opts.abstractAnchorTypes);
|
|
313
|
+
if (baseRefusal !== undefined) {
|
|
314
|
+
refusals.push({ ...baseRefusal, line: lineOf(span.keyStart) });
|
|
315
|
+
}
|
|
307
316
|
return;
|
|
308
317
|
}
|
|
309
318
|
|
package/src/parser-core.ts
CHANGED
|
@@ -243,6 +243,30 @@ function abstractSubtypeMessage(type: string): string {
|
|
|
243
243
|
);
|
|
244
244
|
}
|
|
245
245
|
|
|
246
|
+
/**
|
|
247
|
+
* The concrete subtypes to offer instead, as ADR-0009 `suggestions[]`.
|
|
248
|
+
*
|
|
249
|
+
* DERIVED from the registry, never a written list: the substitution the migration guide
|
|
250
|
+
* prints for `object.base` is exactly "the other subtypes this type registers", so reading
|
|
251
|
+
* it from the registry means a new subtype appears in the advice the day it is registered,
|
|
252
|
+
* and a removed one stops being suggested. The message alone said "declare a concrete
|
|
253
|
+
* subtype" without ever naming one, so the next step was in a guide the reader had to
|
|
254
|
+
* already know existed.
|
|
255
|
+
*/
|
|
256
|
+
function abstractSubtypeSuggestions(type: string, registry: TypeRegistry): string[] {
|
|
257
|
+
const concrete = registry.allSubTypesOf(type).filter((sub) => sub !== SUBTYPE_BASE).sort();
|
|
258
|
+
const out = [
|
|
259
|
+
concrete.length > 0
|
|
260
|
+
? `declare one of: ${concrete.map((sub) => `"${type}.${sub}"`).join(" | ")}`
|
|
261
|
+
: `declare a concrete "${type}.<subType>"`,
|
|
262
|
+
];
|
|
263
|
+
out.push(
|
|
264
|
+
"which one is a decision about the node, not a rename — see " +
|
|
265
|
+
"docs/features/migrations/base-subtypes-are-not-authorable.md",
|
|
266
|
+
);
|
|
267
|
+
return out;
|
|
268
|
+
}
|
|
269
|
+
|
|
246
270
|
// The same rule reached by the OTHER spelling: a BARE wrapper key (`{"field": …}`, no fused
|
|
247
271
|
// subType) whose registry default resolves to the abstract anchor. The author did not type
|
|
248
272
|
// `.base`, so this is a MISSING subtype rather than an authored-anchor error — and
|
|
@@ -507,6 +531,7 @@ export function buildTree(parsed: unknown, opts: ParseOptions): ParseResult {
|
|
|
507
531
|
? new ParseError(abstractSubtypeMessage(rootType), {
|
|
508
532
|
code: "ERR_ABSTRACT_SUBTYPE_AUTHORED",
|
|
509
533
|
source: src,
|
|
534
|
+
suggestions: abstractSubtypeSuggestions(rootType, opts.registry),
|
|
510
535
|
})
|
|
511
536
|
: new ParseError(missingSubtypeMessage(rootType), {
|
|
512
537
|
code: "ERR_MISSING_SUBTYPE",
|
|
@@ -1372,6 +1397,7 @@ function processChildren(
|
|
|
1372
1397
|
? new ParseError(abstractSubtypeMessage(childType), {
|
|
1373
1398
|
code: "ERR_ABSTRACT_SUBTYPE_AUTHORED",
|
|
1374
1399
|
source: errSource(),
|
|
1400
|
+
suggestions: abstractSubtypeSuggestions(childType, registry),
|
|
1375
1401
|
})
|
|
1376
1402
|
: new ParseError(missingSubtypeMessage(childType), {
|
|
1377
1403
|
code: "ERR_MISSING_SUBTYPE",
|
|
@@ -39,7 +39,7 @@ export const UI_DEFINITION: ProviderDefinition = {
|
|
|
39
39
|
"asc",
|
|
40
40
|
"desc"
|
|
41
41
|
],
|
|
42
|
-
"description": "
|
|
42
|
+
"description": "Direction a sort takes when it names this field but omits the order: a ?sort=<field> with no :order, and a layout.dataGrid whose @defaultSortField names it with no @defaultSortOrder. Defaults to 'asc'."
|
|
43
43
|
},
|
|
44
44
|
{
|
|
45
45
|
"type": "attr",
|
|
@@ -96,7 +96,7 @@ export const UI_DEFINITION: ProviderDefinition = {
|
|
|
96
96
|
"asc",
|
|
97
97
|
"desc"
|
|
98
98
|
],
|
|
99
|
-
"description": "Initial sort direction for the default sort field: 'asc' or 'desc'."
|
|
99
|
+
"description": "Initial sort direction for the default sort field: 'asc' or 'desc'. When omitted, the named field's @sortableDefaultOrder applies."
|
|
100
100
|
},
|
|
101
101
|
{
|
|
102
102
|
"type": "attr",
|
|
@@ -89,7 +89,8 @@ export type VocabularyRewrite =
|
|
|
89
89
|
readonly otherwise: "drop" | "refuse";
|
|
90
90
|
};
|
|
91
91
|
|
|
92
|
-
/** One retirement. `subType: "*"` means every subtype of `type
|
|
92
|
+
/** One retirement. `subType: "*"` means every subtype of `type`; `type: "*"` means
|
|
93
|
+
* every type, which is what a retired COMMON attribute needs. */
|
|
93
94
|
export interface RetiredEntry extends RetirementNote {
|
|
94
95
|
readonly type: string;
|
|
95
96
|
/** `*` for every subtype of `type`, else the exact subtype. */
|
|
@@ -109,6 +110,44 @@ const REQUIREMENT_MIGRATION = "docs/features/migrations/verified-by-retirement.m
|
|
|
109
110
|
const RETIRED_STATUS_MIGRATION = "docs/features/migrations/retired-status-restore.md";
|
|
110
111
|
const EMIT_ATTR_MIGRATION = "docs/features/migrations/emit-attrs-to-generator-config.md";
|
|
111
112
|
|
|
113
|
+
const FORGE_MIGRATION = "docs/features/migrations/0.x-to-1.0.md";
|
|
114
|
+
|
|
115
|
+
/**
|
|
116
|
+
* The `@forge*` common attributes, deregistered from the DEFAULT provider composition at
|
|
117
|
+
* the 1.0 cut (`forgeTypesProvider` left `defaultLoadMemoryProviders`).
|
|
118
|
+
*
|
|
119
|
+
* They are here so `meta upgrade` NAMES them and points at the migration — and
|
|
120
|
+
* deliberately WITHOUT a `rewrite`, which is the map's way of saying the fix is judgment.
|
|
121
|
+
* That is not conservatism: this vocabulary still LOADS for a project that opts the
|
|
122
|
+
* provider back in (`loadMemory(root, { providers: [forgeTypesProvider] })`, the chartered
|
|
123
|
+
* ADR-0023 escape hatch). An automated strip would therefore destroy valid metadata for
|
|
124
|
+
* exactly the adopters who made that choice deliberately, while the two real options —
|
|
125
|
+
* opt the provider in, or delete the attributes — are a decision only they can make.
|
|
126
|
+
*
|
|
127
|
+
* Before this, three shipped places promised `meta upgrade --apply` would strip them and
|
|
128
|
+
* the tool reported "nothing to rewrite, exit 0" on a project carrying nine such nodes.
|
|
129
|
+
* A migration instruction that silently does nothing is worse than one that refuses.
|
|
130
|
+
*/
|
|
131
|
+
const FORGE_ATTRS = [
|
|
132
|
+
"forgeAlternatives", "forgeAppliesTo", "forgeCapturedAt", "forgeCodeAnchors",
|
|
133
|
+
"forgeConfidence", "forgeCounterExamples", "forgeDefinition", "forgeEnforcement",
|
|
134
|
+
"forgeExamples", "forgeLastValidatedCommit", "forgeOccurrences",
|
|
135
|
+
"forgePatternDescription", "forgePrimaryLocation", "forgeRationale", "forgeScope",
|
|
136
|
+
"forgeSeeAlso", "forgeSource", "forgeStatement", "forgeSynonyms", "forgeTerm",
|
|
137
|
+
"forgeWhatWasTried", "forgeWhyItFailed",
|
|
138
|
+
] as const;
|
|
139
|
+
|
|
140
|
+
const FORGE_ENTRIES: readonly RetiredEntry[] = FORGE_ATTRS.map((attr) => ({
|
|
141
|
+
type: "*", subType: "*", attr,
|
|
142
|
+
since: "1.0.0",
|
|
143
|
+
why: "it was registered by a TypeScript-only provider and appears nowhere in " +
|
|
144
|
+
"expected-registry.json, so one document had two verdicts depending on which " +
|
|
145
|
+
"port read it — and 1.0 would have frozen that",
|
|
146
|
+
replacedBy: "`forgeTypesProvider`, opted in explicitly — " +
|
|
147
|
+
"loadMemory(root, { providers: [forgeTypesProvider] }) — or delete them",
|
|
148
|
+
migration: FORGE_MIGRATION,
|
|
149
|
+
}));
|
|
150
|
+
|
|
112
151
|
export const RETIRED_VOCABULARY: readonly RetiredEntry[] = [
|
|
113
152
|
// ── 0.24.0: `@violation` is renamed `@counterexample` ──
|
|
114
153
|
//
|
|
@@ -326,6 +365,9 @@ export const RETIRED_VOCABULARY: readonly RetiredEntry[] = [
|
|
|
326
365
|
migration: EMIT_ATTR_MIGRATION,
|
|
327
366
|
rewrite: { kind: "dropAttr" },
|
|
328
367
|
},
|
|
368
|
+
|
|
369
|
+
// Deregistered from the default composition at the 1.0 cut — see FORGE_ENTRIES.
|
|
370
|
+
...FORGE_ENTRIES,
|
|
329
371
|
];
|
|
330
372
|
|
|
331
373
|
|
|
@@ -339,7 +381,11 @@ export const RETIRED_VOCABULARY: readonly RetiredEntry[] = [
|
|
|
339
381
|
export function scopeMatches(entry: RetiredEntry, typeKey: string): boolean {
|
|
340
382
|
const dot = typeKey.indexOf(".");
|
|
341
383
|
if (dot < 0) return false;
|
|
342
|
-
|
|
384
|
+
// `type: "*"` is for an attribute that was registered as a COMMON attr — valid on
|
|
385
|
+
// EVERY node, so its retirement is scoped the way its registration was. Without it
|
|
386
|
+
// such an entry needs one row per top-level type, and the row for whichever type
|
|
387
|
+
// nobody thought of is the one that goes silently unmatched.
|
|
388
|
+
if (entry.type !== "*" && entry.type !== typeKey.slice(0, dot)) return false;
|
|
343
389
|
return entry.subType === "*" || entry.subType === typeKey.slice(dot + 1);
|
|
344
390
|
}
|
|
345
391
|
|
package/src/shared/meta-data.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { TypeId } from "../registry.js";
|
|
2
2
|
import { TYPE_ATTR } from "./base-types.js";
|
|
3
|
-
import { PACKAGE_SEPARATOR, RESERVED_KEY_VALUE } from "./structural.js";
|
|
3
|
+
import { PACKAGE_SEPARATOR, RESERVED_KEY_VALUE, assertNotStructuralKeyword } from "./structural.js";
|
|
4
4
|
import type { DataType } from "../data-type.js";
|
|
5
5
|
import type { MetaAttr } from "../core/attr/meta-attr.js";
|
|
6
6
|
import { inferAttrSubType } from "../serializer-json.js";
|
|
@@ -321,11 +321,20 @@ export abstract class MetaData {
|
|
|
321
321
|
if (name === RESERVED_KEY_VALUE) {
|
|
322
322
|
return this._ownValueSet ? this._ownValue : undefined;
|
|
323
323
|
}
|
|
324
|
+
// Guarded for the same reason attr()/hasAttr() are, and it is the SAME rule:
|
|
325
|
+
// a reserved keyword can never be an attr, so this can only ever answer
|
|
326
|
+
// undefined — indistinguishable from "not set". Closing the resolving door and
|
|
327
|
+
// leaving the own-only ones open would be one rule with four doors, three of
|
|
328
|
+
// them still silent, and `ownAttr` is a documented public accessor an owned
|
|
329
|
+
// generator can reach for. The RESERVED_KEY_VALUE read above is the one
|
|
330
|
+
// legitimate reserved-key attr read and is settled before the guard.
|
|
331
|
+
assertNotStructuralKeyword(name, "ownAttr");
|
|
324
332
|
return this._attrNodes.get(name)?.value;
|
|
325
333
|
}
|
|
326
334
|
|
|
327
335
|
/** Own (locally declared) MetaAttr instance for `name`, or undefined. */
|
|
328
336
|
ownMetaAttr(name: string): MetaAttr | undefined {
|
|
337
|
+
assertNotStructuralKeyword(name, "ownMetaAttr");
|
|
329
338
|
return this._attrNodes.get(name);
|
|
330
339
|
}
|
|
331
340
|
|
|
@@ -350,6 +359,7 @@ export abstract class MetaData {
|
|
|
350
359
|
if (name === RESERVED_KEY_VALUE) {
|
|
351
360
|
return this._ownValueSet;
|
|
352
361
|
}
|
|
362
|
+
assertNotStructuralKeyword(name, "ownHasAttr");
|
|
353
363
|
return this._attrNodes.has(name);
|
|
354
364
|
}
|
|
355
365
|
|
|
@@ -370,11 +380,13 @@ export abstract class MetaData {
|
|
|
370
380
|
|
|
371
381
|
/** Effective attr value for `name`, or undefined. */
|
|
372
382
|
attr(name: string): AttrValue | undefined {
|
|
383
|
+
assertNotStructuralKeyword(name, "attr");
|
|
373
384
|
return this.attrs().get(name);
|
|
374
385
|
}
|
|
375
386
|
|
|
376
387
|
/** True if `name` resolves to an effective attr (own or inherited). */
|
|
377
388
|
hasAttr(name: string): boolean {
|
|
389
|
+
assertNotStructuralKeyword(name, "hasAttr");
|
|
378
390
|
return this.attrs().has(name);
|
|
379
391
|
}
|
|
380
392
|
|
package/src/shared/structural.ts
CHANGED
|
@@ -30,6 +30,54 @@ export const RESERVED_KEYS = new Set<string>([
|
|
|
30
30
|
RESERVED_KEY_VALUE,
|
|
31
31
|
]);
|
|
32
32
|
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* The reserved structural keywords that can NEVER be an attribute, mapped to the
|
|
36
|
+
* native accessor that answers the same question.
|
|
37
|
+
*
|
|
38
|
+
* `value` is deliberately absent: an `attr` node stores its own typed payload under
|
|
39
|
+
* that key and reads it back with `ownAttr(RESERVED_KEY_VALUE)`, which is the one
|
|
40
|
+
* legitimate reserved-key attr read in the model.
|
|
41
|
+
*/
|
|
42
|
+
export const STRUCTURAL_KEYWORD_ACCESSORS: ReadonlyMap<string, string> = new Map([
|
|
43
|
+
[RESERVED_KEY_NAME, "the `.name` property"],
|
|
44
|
+
[RESERVED_KEY_PACKAGE, "the `.package` property (or effectivePackage(node) for the file-default fold)"],
|
|
45
|
+
[RESERVED_KEY_EXTENDS, "the `.superData` property"],
|
|
46
|
+
[RESERVED_KEY_ABSTRACT, "the `.isAbstract` property"],
|
|
47
|
+
[RESERVED_KEY_OVERLAY, "the node's overlay flag"],
|
|
48
|
+
[RESERVED_KEY_IS_ARRAY, "`.resolvedIsArray()` (NOT the `.isArray` own flag — that one drops what `extends` contributes)"],
|
|
49
|
+
[RESERVED_KEY_CHILDREN, "`.children()`"],
|
|
50
|
+
]);
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* Refuse an attribute lookup for a reserved structural keyword.
|
|
54
|
+
*
|
|
55
|
+
* These names are NATIVE PROPERTIES, not attributes: `@isArray` and friends are
|
|
56
|
+
* rejected at the load with ERR_RESERVED_ATTR, so no document can ever set one and
|
|
57
|
+
* the lookup can only ever answer `undefined`. That answer is indistinguishable
|
|
58
|
+
* from "the author did not set that attribute", which is what made this silent.
|
|
59
|
+
*
|
|
60
|
+
* It was not hypothetical. An adopter's own generator typed a field as
|
|
61
|
+
* `f.attr("isArray") === true ? base + "[]" : base`, and the reference document it
|
|
62
|
+
* generated — the one bot authors read — described ALL 31 of that model's array
|
|
63
|
+
* fields as scalars. Its sibling module had used the resolving accessor since the
|
|
64
|
+
* day it was written, with a comment naming the trap, and nothing compared the two.
|
|
65
|
+
* The file's own header taught the rule fourteen lines above the violation: prose
|
|
66
|
+
* is not a gate.
|
|
67
|
+
*
|
|
68
|
+
* A throw rather than a warning because there is no reading under which this call
|
|
69
|
+
* is correct, and the fix is one line at the call site.
|
|
70
|
+
*/
|
|
71
|
+
export function assertNotStructuralKeyword(name: string, accessor: string): void {
|
|
72
|
+
const native = STRUCTURAL_KEYWORD_ACCESSORS.get(name);
|
|
73
|
+
if (native === undefined) return;
|
|
74
|
+
throw new Error(
|
|
75
|
+
`${accessor}(${JSON.stringify(name)}): '${name}' is a reserved structural keyword, ` +
|
|
76
|
+
`not an attribute — '@${name}' fails the load with ERR_RESERVED_ATTR, so this ` +
|
|
77
|
+
`lookup can only ever return undefined. Read ${native} instead.`,
|
|
78
|
+
);
|
|
79
|
+
}
|
|
80
|
+
|
|
33
81
|
// ---------------------------------------------------------------------------
|
|
34
82
|
// JSON document special keys (top-level, ignored during wrapper-key detection)
|
|
35
83
|
// ---------------------------------------------------------------------------
|