Skip to content

Commit f81635b

Browse files
committed
Use * pointer syntax for property names
1 parent b3a460b commit f81635b

3 files changed

Lines changed: 5 additions & 11 deletions

File tree

src/json-schema-errors.js

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,8 @@ const constructErrorIndex = async (outputUnit, schema, errorIndex = {}) => {
5858

5959
const absoluteKeywordLocation = errorOutputUnit.absoluteKeywordLocation
6060
?? await toAbsoluteKeywordLocation(schema, /** @type string */ (errorOutputUnit.keywordLocation));
61-
const instanceLocation = normalizeInstanceLocation(/** @type string */ (errorOutputUnit.instanceLocation));
61+
const instanceLocation = /** @type string */ (errorOutputUnit.instanceLocation)
62+
.replace(/^#?\*?/, "#");
6263

6364
errorIndex[absoluteKeywordLocation] ??= {};
6465
errorIndex[absoluteKeywordLocation][instanceLocation] = true;
@@ -85,12 +86,6 @@ async function toAbsoluteKeywordLocation(schema, keywordLocation) {
8586
return `${schema.document.baseUri}#${schema.cursor}`;
8687
}
8788

88-
/** @type {(location: string) => string} */
89-
function normalizeInstanceLocation(location) {
90-
const instanceLocation = location.startsWith("/") || location === "" ? `#${location}` : location;
91-
return instanceLocation.replace(/(#|^)\*\//, "$1/");
92-
}
93-
9489
/** @type API.evaluateSchema */
9590
export const evaluateSchema = (schemaLocation, instance, context) => {
9691
const instanceLocation = Instance.uri(instance);
@@ -134,7 +129,7 @@ export const evaluateSchema = (schemaLocation, instance, context) => {
134129
}
135130

136131
const keywordOutput = keyword.evaluate(keywordValue, instance, keywordContext);
137-
const isKeywordValid = !context.errorIndex[keywordLocation]?.[instanceLocation];
132+
const isKeywordValid = !context.errorIndex[keywordLocation]?.[instanceLocation.replace(/^#\*/, "#")];
138133
if (!isKeywordValid) {
139134
valid = false;
140135
}

src/normalization-handlers/propertyNames.js

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@ const propertyNamesNormalizationHandler = {
1616
}
1717

1818
for (const propertyName of Instance.keys(instance)) {
19-
propertyName.pointer = propertyName.pointer.replace(/^\*/, "");
2019
outputs.push(evaluateSchema(propertyNames, propertyName, context));
2120
}
2221

src/test-suite/tests/propertyNames.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
"messageParams": {
1717
"minLength": "5"
1818
},
19-
"instanceLocation": "#/foo",
19+
"instanceLocation": "#*/foo",
2020
"schemaLocations": ["#/propertyNames/minLength"]
2121
}
2222
]
@@ -34,7 +34,7 @@
3434
"messageParams": {
3535
"minLength": "5"
3636
},
37-
"instanceLocation": "#/foo",
37+
"instanceLocation": "#*/foo",
3838
"schemaLocations": ["#/propertyNames/minLength"]
3939
}
4040
]

0 commit comments

Comments
 (0)