Files
lynchmark.com/tests/8_json_validator/outputs/google_gemini-2.5-pro TEMP_0.7.js
T

32 lines
836 B
JavaScript

let ajvPromise;
const compiledSchemas = new WeakMap();
const validateJSON = async (json, schema) => {
try {
ajvPromise ||= import('https://esm.sh/ajv@8').then(
({ default: Ajv }) => new Ajv({ allErrors: true })
);
const ajv = await ajvPromise;
let validate = compiledSchemas.get(schema);
if (!validate) {
validate = ajv.compile(schema);
compiledSchemas.set(schema, validate);
}
const valid = validate(json);
const errors = valid
? []
: (validate.errors ?? []).map(({ instancePath, message }) =>
`${instancePath.substring(1) || 'root'}: ${message}`
);
return { valid, errors };
} catch (error) {
return {
valid: false,
errors: [error.message || 'An unknown validation error occurred.'],
};
}
};
export default validateJSON;