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

25 lines
708 B
JavaScript

const validateJSON = (() => {
let ajvPromise;
const validatorCache = new WeakMap();
return async (json, schema) => {
ajvPromise ||= import('https://cdn.jsdelivr.net/npm/ajv@8/dist/ajv2020.min.js')
.then(({ default: Ajv }) => new Ajv({ allErrors: true }));
const ajv = await ajvPromise;
let validate = validatorCache.get(schema);
if (!validate) {
validate = ajv.compile(schema);
validatorCache.set(schema, validate);
}
const valid = validate(json);
const errors = valid ? [] : validate.errors.map(
({ instancePath, message }) => `${instancePath || 'object'} ${message}`
);
return { valid, errors };
};
})();
export default validateJSON;