ajv-cli
Version:
Command line interface for Ajv JSON schema validator
60 lines • 2 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
const util_1 = require("./util");
const ajv_1 = require("./ajv");
const jsonPatch = require("fast-json-patch");
const cmd = {
execute,
schema: {
type: "object",
required: ["s", "d"],
properties: {
s: {
type: "string",
format: "notGlob",
},
d: { $ref: "#/$defs/stringOrArray" },
r: { $ref: "#/$defs/stringOrArray" },
m: { $ref: "#/$defs/stringOrArray" },
c: { $ref: "#/$defs/stringOrArray" },
errors: { enum: ["json", "line", "text", "js", "no"] },
changes: { enum: [true, "json", "line", "js"] },
spec: { enum: ["draft7", "draft2019", "draft2020", "jtd"] },
},
ajvOptions: true,
},
};
exports.default = cmd;
function execute(argv) {
const ajv = ajv_1.default(argv);
const validate = util_1.compile(ajv, argv.s);
return util_1.getFiles(argv.d)
.map(validateDataFile)
.every((x) => x);
function validateDataFile(file) {
const data = util_1.openFile(file, `data file ${file}`);
let original;
if (argv.changes)
original = JSON.parse(JSON.stringify(data));
const validData = validate(data);
if (validData) {
console.log(file, "valid");
if (argv.changes) {
const patch = jsonPatch.compare(original, data);
if (patch.length === 0) {
console.log("no changes");
}
else {
console.log("changes:");
console.log(util_1.logJSON(argv.changes, patch));
}
}
}
else {
console.error(file, "invalid");
console.error(util_1.logJSON(argv.errors, validate.errors, ajv));
}
return validData;
}
}
//# sourceMappingURL=validate.js.map
;