Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion src/json-schema-errors.js
Original file line number Diff line number Diff line change
Expand Up @@ -92,7 +92,7 @@ export const evaluateSchema = (schemaLocation, instance, context) => {

let valid = true;
/** @type API.NormalizedOutput */
const output = { [instanceLocation]: {} };
const output = {};

for (const plugin of context.plugins) {
plugin.beforeSchema?.(schemaLocation, instance, context);
Expand All @@ -101,6 +101,7 @@ export const evaluateSchema = (schemaLocation, instance, context) => {
const schemaNode = context.ast[schemaLocation];
if (typeof schemaNode === "boolean") {
if (context.errorIndex[schemaLocation]?.[instanceLocation]) {
output[instanceLocation] ??= {};
output[instanceLocation] = {
"https://json-schema.org/validation": {
[schemaLocation]: schemaNode
Expand Down Expand Up @@ -139,6 +140,7 @@ export const evaluateSchema = (schemaLocation, instance, context) => {
mergeOutput(output, suboutput);
}
} else {
output[instanceLocation] ??= {};
output[instanceLocation][normalizedKeywordUri] ??= {};
output[instanceLocation][normalizedKeywordUri][keywordLocation] = isKeywordValid || (keywordOutput ?? false);
}
Expand Down
6 changes: 2 additions & 4 deletions src/normalization-handlers/if.js
Original file line number Diff line number Diff line change
@@ -1,13 +1,11 @@
import { evaluateSchema } from "../json-schema-errors.js";

/**
* @import { NormalizationHandler } from "../index.d.ts"
*/

/** @type NormalizationHandler<string> */
const ifNormalizationHandler = {
evaluate(ifLocation, instance, context) {
return [evaluateSchema(ifLocation, instance, context)];
evaluate() {
return [];
},
simpleApplicator: true
};
Expand Down
12 changes: 4 additions & 8 deletions src/normalization-handlers/properties.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
import { evaluateSchema } from "../json-schema-errors.js";
import * as Instance from "@hyperjump/json-schema/instance/experimental";
import * as JsonPointer from "@hyperjump/json-pointer";

/**
* @import { NormalizationHandler, NormalizedOutput } from "../index.d.ts"
Expand All @@ -16,13 +15,10 @@ const propertiesNormalizationHandler = {
return outputs;
}

for (const propertyName in properties) {
const propertyNode = Instance.step(propertyName, instance);
if (!propertyNode) {
outputs.push({
[JsonPointer.append(propertyName, Instance.uri(instance))]: {}
});
} else {
for (const [propertyNameNode, propertyNode] of Instance.entries(instance)) {
const propertyName = Instance.value(propertyNameNode);

if (properties[propertyName]) {
outputs.push(evaluateSchema(properties[propertyName], propertyNode, context));
}
}
Expand Down