@@ -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 */
9590export 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 }
0 commit comments