Files
lynchmark.com/tests/8_json_validator/outputs/openrouter_polaris-alpha.js
T

21 lines
792 B
JavaScript

async function validateJSON(data, schema) {
const { default: Ajv } = await import('https://cdn.skypack.dev/ajv@8?min');
const { default: addFormats } = await import('https://cdn.skypack.dev/ajv-formats@2?min');
const ajv = new Ajv({ allErrors: true, strict: false });
addFormats(ajv);
const compile = s => {
const c = ajv.compile(s);
return d => ({ ok: c(d), errs: c.errors || [] });
};
const run = compile(schema);
const r = run(data);
if (r.ok) return { valid: true, errors: [] };
const errors = r.errs.map(e => {
const p = e.instancePath || e.dataPath || '';
const loc = p || e.schemaPath || '';
const msg = e.message || 'Invalid value';
return loc ? loc + ' ' + msg : msg;
});
return { valid: false, errors };
}
export default validateJSON;