@altopelago/aeos-core 0.9.0 → 0.9.2
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/LICENSE +21 -0
- package/dist/diag/codes.d.ts +4 -0
- package/dist/diag/codes.d.ts.map +1 -1
- package/dist/diag/codes.js +4 -0
- package/dist/diag/codes.js.map +1 -1
- package/dist/rules/numericForm.d.ts +1 -0
- package/dist/rules/numericForm.d.ts.map +1 -1
- package/dist/rules/numericForm.js +106 -18
- package/dist/rules/numericForm.js.map +1 -1
- package/dist/rules/presence.d.ts.map +1 -1
- package/dist/rules/presence.js +2 -0
- package/dist/rules/presence.js.map +1 -1
- package/dist/rules/referenceForm.d.ts.map +1 -1
- package/dist/rules/referenceForm.js +5 -1
- package/dist/rules/referenceForm.js.map +1 -1
- package/dist/rules/schemaIndex.d.ts.map +1 -1
- package/dist/rules/schemaIndex.js +234 -12
- package/dist/rules/schemaIndex.js.map +1 -1
- package/dist/rules/stringForm.d.ts +3 -2
- package/dist/rules/stringForm.d.ts.map +1 -1
- package/dist/rules/stringForm.js +35 -24
- package/dist/rules/stringForm.js.map +1 -1
- package/dist/rules/typeCheck.d.ts.map +1 -1
- package/dist/rules/typeCheck.js +22 -2
- package/dist/rules/typeCheck.js.map +1 -1
- package/dist/types/schema.d.ts +43 -4
- package/dist/types/schema.d.ts.map +1 -1
- package/dist/types/schema.js +11 -0
- package/dist/types/schema.js.map +1 -1
- package/dist/validate.d.ts +3 -0
- package/dist/validate.d.ts.map +1 -1
- package/dist/validate.js +710 -39
- package/dist/validate.js.map +1 -1
- package/package.json +28 -3
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 AltoPelago
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/dist/diag/codes.d.ts
CHANGED
|
@@ -16,6 +16,7 @@ export declare const ErrorCodes: {
|
|
|
16
16
|
readonly RULE_MISSING_PATH: "rule_missing_path";
|
|
17
17
|
readonly DUPLICATE_RULE_PATH: "duplicate_rule_path";
|
|
18
18
|
readonly UNKNOWN_CONSTRAINT_KEY: "unknown_constraint_key";
|
|
19
|
+
readonly INVALID_SCHEMA_POLICY: "invalid_schema_policy";
|
|
19
20
|
readonly INVALID_REFERENCE_CONSTRAINT: "invalid_reference_constraint";
|
|
20
21
|
readonly MISSING_REQUIRED_FIELD: "missing_required_field";
|
|
21
22
|
readonly UNEXPECTED_BINDING: "unexpected_binding";
|
|
@@ -28,6 +29,9 @@ export declare const ErrorCodes: {
|
|
|
28
29
|
readonly WRONG_CONTAINER_KIND: "WRONG_CONTAINER_KIND";
|
|
29
30
|
readonly TUPLE_ARITY_MISMATCH: "TUPLE_ARITY_MISMATCH";
|
|
30
31
|
readonly TUPLE_ELEMENT_TYPE_MISMATCH: "TUPLE_ELEMENT_TYPE_MISMATCH";
|
|
32
|
+
readonly CONTAINER_CARDINALITY_MISMATCH: "container_cardinality_mismatch";
|
|
33
|
+
readonly NULL_VALUE_MISMATCH: "null_value_mismatch";
|
|
34
|
+
readonly TOGGLE_PAIR_MISMATCH: "toggle_pair_mismatch";
|
|
31
35
|
readonly VERSION_GATE_MISSING: "version_gate_missing";
|
|
32
36
|
readonly INVALID_INDEX_FORMAT: "invalid_index_format";
|
|
33
37
|
readonly NUMERIC_FORM_VIOLATION: "numeric_form_violation";
|
package/dist/diag/codes.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codes.d.ts","sourceRoot":"","sources":["../../src/diag/codes.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH;;GAEG;AACH,eAAO,MAAM,UAAU
|
|
1
|
+
{"version":3,"file":"codes.d.ts","sourceRoot":"","sources":["../../src/diag/codes.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH;;GAEG;AACH,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkDb,CAAC;AAEX;;GAEG;AACH,MAAM,MAAM,SAAS,GAAG,OAAO,UAAU,CAAC,MAAM,OAAO,UAAU,CAAC,CAAC;AAEnE;;GAEG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAElD;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CASxF"}
|
package/dist/diag/codes.js
CHANGED
|
@@ -19,6 +19,7 @@ export const ErrorCodes = {
|
|
|
19
19
|
RULE_MISSING_PATH: 'rule_missing_path',
|
|
20
20
|
DUPLICATE_RULE_PATH: 'duplicate_rule_path',
|
|
21
21
|
UNKNOWN_CONSTRAINT_KEY: 'unknown_constraint_key',
|
|
22
|
+
INVALID_SCHEMA_POLICY: 'invalid_schema_policy',
|
|
22
23
|
INVALID_REFERENCE_CONSTRAINT: 'invalid_reference_constraint',
|
|
23
24
|
// Presence checks (Phase 4)
|
|
24
25
|
MISSING_REQUIRED_FIELD: 'missing_required_field',
|
|
@@ -33,6 +34,9 @@ export const ErrorCodes = {
|
|
|
33
34
|
WRONG_CONTAINER_KIND: 'WRONG_CONTAINER_KIND',
|
|
34
35
|
TUPLE_ARITY_MISMATCH: 'TUPLE_ARITY_MISMATCH',
|
|
35
36
|
TUPLE_ELEMENT_TYPE_MISMATCH: 'TUPLE_ELEMENT_TYPE_MISMATCH',
|
|
37
|
+
CONTAINER_CARDINALITY_MISMATCH: 'container_cardinality_mismatch',
|
|
38
|
+
NULL_VALUE_MISMATCH: 'null_value_mismatch',
|
|
39
|
+
TOGGLE_PAIR_MISMATCH: 'toggle_pair_mismatch',
|
|
36
40
|
// Core v1 indexed addressing checks
|
|
37
41
|
VERSION_GATE_MISSING: 'version_gate_missing',
|
|
38
42
|
INVALID_INDEX_FORMAT: 'invalid_index_format',
|
package/dist/diag/codes.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codes.js","sourceRoot":"","sources":["../../src/diag/codes.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH;;GAEG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG;IACtB,gCAAgC;IAChC,iBAAiB,EAAE,mBAAmB;IACtC,yBAAyB,EAAE,2BAA2B;IAEtD,6BAA6B;IAC7B,wBAAwB,EAAE,0BAA0B;IAEpD,0BAA0B;IAC1B,iBAAiB,EAAE,mBAAmB;IACtC,mBAAmB,EAAE,qBAAqB;IAC1C,sBAAsB,EAAE,wBAAwB;IAChD,4BAA4B,EAAE,8BAA8B;IAE5D,4BAA4B;IAC5B,sBAAsB,EAAE,wBAAwB;IAChD,kBAAkB,EAAE,oBAAoB;IACxC,0BAA0B,EAAE,4BAA4B;IAExD,wBAAwB;IACxB,aAAa,EAAE,eAAe;IAC9B,kBAAkB,EAAE,oBAAoB;IACxC,mBAAmB,EAAE,qBAAqB;IAC1C,uBAAuB,EAAE,yBAAyB;IAClD,yBAAyB,EAAE,2BAA2B;IACtD,oBAAoB,EAAE,sBAAsB;IAC5C,oBAAoB,EAAE,sBAAsB;IAC5C,2BAA2B,EAAE,6BAA6B;
|
|
1
|
+
{"version":3,"file":"codes.js","sourceRoot":"","sources":["../../src/diag/codes.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH;;GAEG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG;IACtB,gCAAgC;IAChC,iBAAiB,EAAE,mBAAmB;IACtC,yBAAyB,EAAE,2BAA2B;IAEtD,6BAA6B;IAC7B,wBAAwB,EAAE,0BAA0B;IAEpD,0BAA0B;IAC1B,iBAAiB,EAAE,mBAAmB;IACtC,mBAAmB,EAAE,qBAAqB;IAC1C,sBAAsB,EAAE,wBAAwB;IAChD,qBAAqB,EAAE,uBAAuB;IAC9C,4BAA4B,EAAE,8BAA8B;IAE5D,4BAA4B;IAC5B,sBAAsB,EAAE,wBAAwB;IAChD,kBAAkB,EAAE,oBAAoB;IACxC,0BAA0B,EAAE,4BAA4B;IAExD,wBAAwB;IACxB,aAAa,EAAE,eAAe;IAC9B,kBAAkB,EAAE,oBAAoB;IACxC,mBAAmB,EAAE,qBAAqB;IAC1C,uBAAuB,EAAE,yBAAyB;IAClD,yBAAyB,EAAE,2BAA2B;IACtD,oBAAoB,EAAE,sBAAsB;IAC5C,oBAAoB,EAAE,sBAAsB;IAC5C,2BAA2B,EAAE,6BAA6B;IAC1D,8BAA8B,EAAE,gCAAgC;IAChE,mBAAmB,EAAE,qBAAqB;IAC1C,oBAAoB,EAAE,sBAAsB;IAE5C,oCAAoC;IACpC,oBAAoB,EAAE,sBAAsB;IAC5C,oBAAoB,EAAE,sBAAsB;IAE5C,yBAAyB;IACzB,sBAAsB,EAAE,wBAAwB;IAEhD,wBAAwB;IACxB,uBAAuB,EAAE,yBAAyB;IAClD,gBAAgB,EAAE,kBAAkB;IAEpC,4CAA4C;IAC5C,yBAAyB,EAAE,2BAA2B;IACtD,4BAA4B,EAAE,8BAA8B;IAE5D,UAAU;IACV,uBAAuB,EAAE,yBAAyB;CAC5C,CAAC;AAOX;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,IAAY;IACrC,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;AAC9B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,IAAY;IACxC,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACrC,IAAI,UAAU,KAAK,CAAC,CAAC,EAAE,CAAC;QACpB,OAAO,IAAI,CAAC;IAChB,CAAC;IACD,OAAO;QACH,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC;QACpC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,CAAC,CAAC;KACnC,CAAC;AACN,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"numericForm.d.ts","sourceRoot":"","sources":["../../src/rules/numericForm.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAGnD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAGlD;;GAEG;AACH,UAAU,YAAY;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,IAAI,CAAC;CACd;AAED;;;;;;;;;GASG;AACH,wBAAgB,gBAAgB,CAC5B,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE,WAAW,CAAC,MAAM,EAAE,YAAY,CAAC,EACzC,GAAG,EAAE,WAAW,GACjB,IAAI,
|
|
1
|
+
{"version":3,"file":"numericForm.d.ts","sourceRoot":"","sources":["../../src/rules/numericForm.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAGnD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAGlD;;GAEG;AACH,UAAU,YAAY;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,IAAI,CAAC;CACd;AAED;;;;;;;;;GASG;AACH,wBAAgB,gBAAgB,CAC5B,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE,WAAW,CAAC,MAAM,EAAE,YAAY,CAAC,EACzC,GAAG,EAAE,WAAW,GACjB,IAAI,CAwHN"}
|
|
@@ -18,29 +18,29 @@ import { countIntegerDigits, isNegative } from '../util/digits.js';
|
|
|
18
18
|
*/
|
|
19
19
|
export function checkNumericForm(ruleIndex, events, ctx) {
|
|
20
20
|
for (const [path, rule] of ruleIndex) {
|
|
21
|
-
const { sign, min_digits, max_digits, min_value, max_value } = rule.constraints;
|
|
21
|
+
const { sign, min_digits, max_digits, min_value, max_value, radix } = rule.constraints;
|
|
22
22
|
// Skip if no numeric form constraints
|
|
23
|
-
if (sign === undefined && min_digits === undefined && max_digits === undefined && min_value === undefined && max_value === undefined) {
|
|
23
|
+
if (sign === undefined && min_digits === undefined && max_digits === undefined && min_value === undefined && max_value === undefined && radix === undefined) {
|
|
24
24
|
continue;
|
|
25
25
|
}
|
|
26
26
|
const event = events.get(path);
|
|
27
27
|
if (!event)
|
|
28
28
|
continue; // Missing path handled by presence check
|
|
29
|
-
// Only apply to numeric
|
|
30
|
-
if (event.type
|
|
29
|
+
// Only apply to numeric and radix-like symbolic literal forms.
|
|
30
|
+
if (!isDigitFormLiteral(event.type)) {
|
|
31
31
|
continue;
|
|
32
32
|
}
|
|
33
33
|
const raw = event.raw;
|
|
34
34
|
// Sign constraint
|
|
35
|
-
if (sign !== undefined) {
|
|
36
|
-
if (sign === 'unsigned' &&
|
|
35
|
+
if (sign !== undefined && (event.type === 'NumberLiteral' || event.type === 'IntegerLiteral' || event.type === 'FloatLiteral' || event.type === 'RadixLiteral')) {
|
|
36
|
+
if (sign === 'unsigned' && isFormNegative(raw)) {
|
|
37
37
|
emitError(ctx, createDiag(path, event.span, `Numeric form violation: expected unsigned, got negative`, ErrorCodes.NUMERIC_FORM_VIOLATION));
|
|
38
38
|
continue; // Only report first violation per path
|
|
39
39
|
}
|
|
40
40
|
// 'signed' constraint allows both positive and negative
|
|
41
41
|
}
|
|
42
42
|
// Digit count constraints
|
|
43
|
-
const digitCount =
|
|
43
|
+
const digitCount = countFormDigits(event.type, raw);
|
|
44
44
|
if (min_digits !== undefined && digitCount < min_digits) {
|
|
45
45
|
emitError(ctx, createDiag(path, event.span, `Numeric form violation: expected min ${min_digits} digits, got ${digitCount}`, ErrorCodes.NUMERIC_FORM_VIOLATION));
|
|
46
46
|
continue;
|
|
@@ -49,26 +49,114 @@ export function checkNumericForm(ruleIndex, events, ctx) {
|
|
|
49
49
|
emitError(ctx, createDiag(path, event.span, `Numeric form violation: expected max ${max_digits} digits, got ${digitCount}`, ErrorCodes.NUMERIC_FORM_VIOLATION));
|
|
50
50
|
continue;
|
|
51
51
|
}
|
|
52
|
+
if (event.type === 'RadixLiteral' && radix !== undefined) {
|
|
53
|
+
const declaredRadix = declaredRadixFromDatatype(event.datatype);
|
|
54
|
+
if (declaredRadix === null && rule.constraints.allow_unspecified_radix !== true) {
|
|
55
|
+
emitError(ctx, createDiag(path, event.span, `Numeric form violation: radix literal requires declared radix ${radix}`, ErrorCodes.NUMERIC_FORM_VIOLATION));
|
|
56
|
+
continue;
|
|
57
|
+
}
|
|
58
|
+
if (declaredRadix !== null && declaredRadix !== radix) {
|
|
59
|
+
emitError(ctx, createDiag(path, event.span, `Numeric form violation: expected radix ${radix}, got declared radix ${declaredRadix}`, ErrorCodes.NUMERIC_FORM_VIOLATION));
|
|
60
|
+
continue;
|
|
61
|
+
}
|
|
62
|
+
const invalidDigit = firstInvalidRadixDigit(raw, radix);
|
|
63
|
+
if (invalidDigit !== null) {
|
|
64
|
+
emitError(ctx, createDiag(path, event.span, `Numeric form violation: radix literal digit '${invalidDigit}' is outside radix ${radix}`, ErrorCodes.NUMERIC_FORM_VIOLATION));
|
|
65
|
+
continue;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
52
68
|
if (min_value !== undefined || max_value !== undefined) {
|
|
53
|
-
const
|
|
54
|
-
if (!
|
|
55
|
-
emitError(ctx, createDiag(path, event.span, `Numeric form violation:
|
|
69
|
+
const range = normalizeRangeLiteral(event.type, raw);
|
|
70
|
+
if (!range) {
|
|
71
|
+
emitError(ctx, createDiag(path, event.span, `Numeric form violation: range constraints require numeric literal form`, ErrorCodes.NUMERIC_FORM_VIOLATION));
|
|
56
72
|
continue;
|
|
57
73
|
}
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
emitError(ctx, createDiag(path, event.span, `Numeric form violation: expected value >= ${min_value}, got ${normalized}`, ErrorCodes.NUMERIC_FORM_VIOLATION));
|
|
74
|
+
if (min_value !== undefined && isBelowRange(range, min_value)) {
|
|
75
|
+
emitError(ctx, createDiag(path, event.span, `Numeric form violation: expected value >= ${min_value}, got ${range.raw}`, ErrorCodes.NUMERIC_FORM_VIOLATION));
|
|
61
76
|
continue;
|
|
62
77
|
}
|
|
63
|
-
if (max_value !== undefined &&
|
|
64
|
-
emitError(ctx, createDiag(path, event.span, `Numeric form violation: expected value <= ${max_value}, got ${
|
|
78
|
+
if (max_value !== undefined && isAboveRange(range, max_value)) {
|
|
79
|
+
emitError(ctx, createDiag(path, event.span, `Numeric form violation: expected value <= ${max_value}, got ${range.raw}`, ErrorCodes.NUMERIC_FORM_VIOLATION));
|
|
65
80
|
}
|
|
66
81
|
}
|
|
67
82
|
}
|
|
68
83
|
}
|
|
69
|
-
function
|
|
70
|
-
|
|
84
|
+
function isDigitFormLiteral(type) {
|
|
85
|
+
return type === 'NumberLiteral' || type === 'IntegerLiteral' || type === 'FloatLiteral' || type === 'HexLiteral' || type === 'RadixLiteral';
|
|
86
|
+
}
|
|
87
|
+
function countFormDigits(type, raw) {
|
|
88
|
+
if (type === 'NumberLiteral' || type === 'IntegerLiteral' || type === 'FloatLiteral')
|
|
89
|
+
return countIntegerDigits(raw);
|
|
90
|
+
const body = raw
|
|
91
|
+
.replace(/^[#%^]/, '')
|
|
92
|
+
.replace(/^[+-]/, '')
|
|
93
|
+
.replace(/_/g, '');
|
|
94
|
+
let count = 0;
|
|
95
|
+
for (const char of body) {
|
|
96
|
+
if ((char >= '0' && char <= '9') || ((char >= 'A' && char <= 'Z') || (char >= 'a' && char <= 'z') || char === '&' || char === '!')) {
|
|
97
|
+
count++;
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
return count;
|
|
101
|
+
}
|
|
102
|
+
function declaredRadixFromDatatype(datatype) {
|
|
103
|
+
if (datatype === undefined)
|
|
104
|
+
return null;
|
|
105
|
+
const match = /^radix(?:\[(\d+)\]|(\d+))$/i.exec(datatype.trim());
|
|
106
|
+
if (!match)
|
|
107
|
+
return null;
|
|
108
|
+
const value = Number(match[1] ?? match[2]);
|
|
109
|
+
return Number.isInteger(value) && value >= 0 ? value : null;
|
|
110
|
+
}
|
|
111
|
+
function isFormNegative(raw) {
|
|
112
|
+
return /^[$#%^]?-/.test(raw) || isNegative(raw);
|
|
113
|
+
}
|
|
114
|
+
function firstInvalidRadixDigit(raw, radix) {
|
|
115
|
+
const body = raw.replace(/^%/, '').replace(/^[+-]/, '').replace(/_/g, '');
|
|
116
|
+
for (const char of body) {
|
|
117
|
+
const value = radixDigitValue(char);
|
|
118
|
+
if (value !== null && value >= radix)
|
|
119
|
+
return char;
|
|
120
|
+
}
|
|
121
|
+
return null;
|
|
122
|
+
}
|
|
123
|
+
function radixDigitValue(char) {
|
|
124
|
+
if (char >= '0' && char <= '9')
|
|
125
|
+
return char.charCodeAt(0) - 48;
|
|
126
|
+
const lower = char.toLowerCase();
|
|
127
|
+
if (lower >= 'a' && lower <= 'z')
|
|
128
|
+
return lower.charCodeAt(0) - 87;
|
|
129
|
+
if (char === '&')
|
|
130
|
+
return 36;
|
|
131
|
+
if (char === '!')
|
|
132
|
+
return 37;
|
|
133
|
+
return null;
|
|
134
|
+
}
|
|
135
|
+
function normalizeRangeLiteral(type, raw) {
|
|
136
|
+
const normalized = raw.replace(/_/g, '');
|
|
137
|
+
if (type === 'FloatLiteral' || /[.eE]/.test(normalized)) {
|
|
138
|
+
if (!/^[+-]?(?:\d+(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+)?$/.test(normalized))
|
|
139
|
+
return null;
|
|
140
|
+
const value = Number(normalized);
|
|
141
|
+
return Number.isFinite(value) ? { kind: 'float', raw: normalized, value } : null;
|
|
142
|
+
}
|
|
143
|
+
if (!/^[+-]?\d+$/.test(normalized))
|
|
71
144
|
return null;
|
|
72
|
-
return raw
|
|
145
|
+
return { kind: 'integer', raw: normalized, value: BigInt(normalized) };
|
|
146
|
+
}
|
|
147
|
+
function isBelowRange(range, bound) {
|
|
148
|
+
if (range.kind === 'integer' && /^[-+]?\d+$/.test(bound)) {
|
|
149
|
+
return range.value < BigInt(bound);
|
|
150
|
+
}
|
|
151
|
+
return rangeAsNumber(range) < Number(bound);
|
|
152
|
+
}
|
|
153
|
+
function isAboveRange(range, bound) {
|
|
154
|
+
if (range.kind === 'integer' && /^[-+]?\d+$/.test(bound)) {
|
|
155
|
+
return range.value > BigInt(bound);
|
|
156
|
+
}
|
|
157
|
+
return rangeAsNumber(range) > Number(bound);
|
|
158
|
+
}
|
|
159
|
+
function rangeAsNumber(range) {
|
|
160
|
+
return range.kind === 'integer' ? Number(range.value) : range.value;
|
|
73
161
|
}
|
|
74
162
|
//# sourceMappingURL=numericForm.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"numericForm.js","sourceRoot":"","sources":["../../src/rules/numericForm.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAG9C,OAAO,EAAE,kBAAkB,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"numericForm.js","sourceRoot":"","sources":["../../src/rules/numericForm.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"presence.d.ts","sourceRoot":"","sources":["../../src/rules/presence.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAGnD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAElD;;;;;;;;;;GAUG;AACH,wBAAgB,aAAa,CACzB,SAAS,EAAE,SAAS,EACpB,UAAU,EAAE,WAAW,CAAC,MAAM,CAAC,EAC/B,GAAG,EAAE,WAAW,GACjB,IAAI,
|
|
1
|
+
{"version":3,"file":"presence.d.ts","sourceRoot":"","sources":["../../src/rules/presence.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAGnD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAElD;;;;;;;;;;GAUG;AACH,wBAAgB,aAAa,CACzB,SAAS,EAAE,SAAS,EACpB,UAAU,EAAE,WAAW,CAAC,MAAM,CAAC,EAC/B,GAAG,EAAE,WAAW,GACjB,IAAI,CAcN"}
|
package/dist/rules/presence.js
CHANGED
|
@@ -19,6 +19,8 @@ import { ErrorCodes } from '../diag/codes.js';
|
|
|
19
19
|
export function checkPresence(ruleIndex, boundPaths, ctx) {
|
|
20
20
|
for (const [path, rule] of ruleIndex) {
|
|
21
21
|
if (rule.constraints.required === true) {
|
|
22
|
+
if (path.includes('[*]'))
|
|
23
|
+
continue;
|
|
22
24
|
if (!boundPaths.has(path)) {
|
|
23
25
|
emitError(ctx, createDiag(path, null, // null span for missing paths
|
|
24
26
|
`Missing required field: ${path}`, ErrorCodes.MISSING_REQUIRED_FIELD));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"presence.js","sourceRoot":"","sources":["../../src/rules/presence.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAG9C;;;;;;;;;;GAUG;AACH,MAAM,UAAU,aAAa,CACzB,SAAoB,EACpB,UAA+B,EAC/B,GAAgB;IAEhB,KAAK,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,SAAS,EAAE,CAAC;QACnC,IAAI,IAAI,CAAC,WAAW,CAAC,QAAQ,KAAK,IAAI,EAAE,CAAC;YACrC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;gBACxB,SAAS,CAAC,GAAG,EAAE,UAAU,CACrB,IAAI,EACJ,IAAI,EAAE,8BAA8B;gBACpC,2BAA2B,IAAI,EAAE,EACjC,UAAU,CAAC,sBAAsB,CACpC,CAAC,CAAC;YACP,CAAC;QACL,CAAC;IACL,CAAC;AACL,CAAC"}
|
|
1
|
+
{"version":3,"file":"presence.js","sourceRoot":"","sources":["../../src/rules/presence.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAG9C;;;;;;;;;;GAUG;AACH,MAAM,UAAU,aAAa,CACzB,SAAoB,EACpB,UAA+B,EAC/B,GAAgB;IAEhB,KAAK,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,SAAS,EAAE,CAAC;QACnC,IAAI,IAAI,CAAC,WAAW,CAAC,QAAQ,KAAK,IAAI,EAAE,CAAC;YACrC,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;gBAAE,SAAS;YACnC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;gBACxB,SAAS,CAAC,GAAG,EAAE,UAAU,CACrB,IAAI,EACJ,IAAI,EAAE,8BAA8B;gBACpC,2BAA2B,IAAI,EAAE,EACjC,UAAU,CAAC,sBAAsB,CACpC,CAAC,CAAC;YACP,CAAC;QACL,CAAC;IACL,CAAC;AACL,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"referenceForm.d.ts","sourceRoot":"","sources":["../../src/rules/referenceForm.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyB,KAAK,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAE1E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"referenceForm.d.ts","sourceRoot":"","sources":["../../src/rules/referenceForm.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyB,KAAK,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAE1E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAGnD,KAAK,SAAS,GAAG;IACb,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;IAC9B,aAAa,CAAC,EAAE,SAAS,CAAC,MAAM,GAAG,MAAM,GAAG;QAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC,EAAE,CAAC;CAClG,CAAC;AAmCF,wBAAgB,mBAAmB,CAC/B,MAAM,EAAE,QAAQ,EAChB,SAAS,EAAE,SAAS,EACpB,YAAY,EAAE,WAAW,CAAC,MAAM,EAAE,SAAS,CAAC,EAC5C,GAAG,EAAE,WAAW,GACjB,IAAI,CAyEN"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { createDiag, emitError } from '../diag/emit.js';
|
|
2
2
|
import { ErrorCodes } from '../diag/codes.js';
|
|
3
|
+
import { matchesPortablePattern } from './stringForm.js';
|
|
3
4
|
function isReferenceType(type) {
|
|
4
5
|
return type === 'CloneReference' || type === 'PointerReference';
|
|
5
6
|
}
|
|
@@ -27,6 +28,9 @@ function formatReferenceTargetPath(segments) {
|
|
|
27
28
|
}
|
|
28
29
|
return out;
|
|
29
30
|
}
|
|
31
|
+
function targetPatternMatches(pattern, value) {
|
|
32
|
+
return matchesPortablePattern(pattern, value);
|
|
33
|
+
}
|
|
30
34
|
export function checkReferenceForms(schema, ruleIndex, eventsByPath, ctx) {
|
|
31
35
|
if ((schema.reference_policy ?? 'allow') === 'forbid') {
|
|
32
36
|
for (const [path, event] of eventsByPath.entries()) {
|
|
@@ -70,7 +74,7 @@ export function checkReferenceForms(schema, ruleIndex, eventsByPath, ctx) {
|
|
|
70
74
|
if (!isReferenceType(event.type) || !event.referencePath) {
|
|
71
75
|
continue;
|
|
72
76
|
}
|
|
73
|
-
if (!(
|
|
77
|
+
if (!targetPatternMatches(targetPattern, formatReferenceTargetPath(event.referencePath))) {
|
|
74
78
|
emitError(ctx, createDiag(path, event.span, `Reference target path does not satisfy reference_target_pattern at ${path}`, ErrorCodes.REFERENCE_TARGET_MISMATCH));
|
|
75
79
|
}
|
|
76
80
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"referenceForm.js","sourceRoot":"","sources":["../../src/rules/referenceForm.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAoB,MAAM,iBAAiB,CAAC;AAC1E,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"referenceForm.js","sourceRoot":"","sources":["../../src/rules/referenceForm.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schemaIndex.d.ts","sourceRoot":"","sources":["../../src/rules/schemaIndex.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAE/D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"schemaIndex.d.ts","sourceRoot":"","sources":["../../src/rules/schemaIndex.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAE/D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AA2enD;;GAEG;AACH,MAAM,MAAM,SAAS,GAAG,WAAW,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;AAExD;;;;;;;;;;;;GAYG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,WAAW,GAAG,SAAS,CAuF5E;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,WAAW,EAAE,UAAU,CAAC,aAAa,CAAC,GAAG,OAAO,CAMzF;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,WAAW,EAAE,UAAU,CAAC,aAAa,CAAC,GAAG,OAAO,CAMxF"}
|