39 lines
1.1 KiB
JavaScript
39 lines
1.1 KiB
JavaScript
import { createRequire } from "node:module";
|
|
import _Ajv from "ajv";
|
|
import { formatErrors } from "./formatErrors.js";
|
|
const require = createRequire(import.meta.url);
|
|
const schema = require("./commitlint.schema.json");
|
|
const TYPE_OF = [
|
|
"undefined",
|
|
"string",
|
|
"number",
|
|
"object",
|
|
"function",
|
|
"boolean",
|
|
"symbol",
|
|
];
|
|
// FIXME: https://github.com/ajv-validator/ajv/issues/2132
|
|
const Ajv = _Ajv;
|
|
export function validateConfig(source, config) {
|
|
const ajv = new Ajv({
|
|
meta: false,
|
|
strict: false,
|
|
useDefaults: true,
|
|
validateSchema: false,
|
|
verbose: true,
|
|
});
|
|
ajv.addKeyword({
|
|
keyword: "typeof",
|
|
validate: function typeOfFunc(schema, data) {
|
|
return typeof data === schema;
|
|
},
|
|
metaSchema: { type: "string", enum: TYPE_OF },
|
|
schema: true,
|
|
});
|
|
const validate = ajv.compile(schema);
|
|
const isValid = validate(config);
|
|
if (!isValid && validate.errors && validate.errors.length) {
|
|
throw new Error(`Commitlint configuration in ${source} is invalid:\n${formatErrors(validate.errors)}`);
|
|
}
|
|
}
|
|
//# sourceMappingURL=validate.js.map
|