mirror of
https://github.com/lynchmarkHQ/lynchmark.com.git
synced 2026-10-08 21:35:23 +00:00
35 lines
729 B
JavaScript
35 lines
729 B
JavaScript
const validateJSON = async (jsonObject, schemaObject) => {
|
|
try {
|
|
const [{
|
|
default: Ajv
|
|
}, {
|
|
default: addFormats
|
|
}] = await Promise.all([
|
|
import('https://esm.sh/ajv'),
|
|
import('https://esm.sh/ajv-formats')
|
|
]);
|
|
|
|
const ajv = new Ajv({
|
|
allErrors: true
|
|
});
|
|
addFormats(ajv);
|
|
|
|
const validate = ajv.compile(schemaObject);
|
|
const valid = validate(jsonObject);
|
|
|
|
const errors = valid ? [] : validate.errors.map(
|
|
e => `${e.instancePath || '<root>'}: ${e.message}`
|
|
);
|
|
|
|
return {
|
|
valid,
|
|
errors
|
|
};
|
|
} catch (e) {
|
|
return {
|
|
valid: false,
|
|
errors: [`Validation setup failed: ${e.message}`]
|
|
};
|
|
}
|
|
};
|
|
export default validateJSON; |