📦 deps(thirdparty): update snapshots
This commit is contained in:
@@ -0,0 +1,35 @@
|
||||
"use strict";
|
||||
|
||||
const fs = require("node:fs");
|
||||
const path = require("node:path");
|
||||
const Ajv2020 = require("ajv/dist/2020");
|
||||
|
||||
const SCHEMA_ROOT = path.resolve(__dirname, "../../../schemas/aas-v1");
|
||||
const ajv = new Ajv2020({ allErrors: true, strict: true, allowUnionTypes: true, validateFormats: false });
|
||||
const validators = new Map();
|
||||
|
||||
function validatorFor(name) {
|
||||
if (validators.has(name)) return validators.get(name);
|
||||
if (!/^[a-z0-9-]+\.schema\.json$/.test(name)) throw new Error("AAS_SCHEMA_NAME_INVALID");
|
||||
const schema = JSON.parse(fs.readFileSync(path.join(SCHEMA_ROOT, name), "utf8"));
|
||||
const validate = ajv.compile(schema);
|
||||
validators.set(name, validate);
|
||||
return validate;
|
||||
}
|
||||
|
||||
function validateInstance(name, value, code = "AAS_SCHEMA_INSTANCE_INVALID", category = "integrity") {
|
||||
const validate = validatorFor(name);
|
||||
if (validate(value)) return value;
|
||||
const error = new Error(code);
|
||||
error.code = code;
|
||||
error.category = category;
|
||||
error.details = {
|
||||
issues: (validate.errors || []).slice(0, 32).map((issue) => ({
|
||||
instancePath: issue.instancePath,
|
||||
keyword: issue.keyword,
|
||||
})),
|
||||
};
|
||||
throw error;
|
||||
}
|
||||
|
||||
module.exports = { SCHEMA_ROOT, validateInstance, validatorFor };
|
||||
Reference in New Issue
Block a user