UNPKG

ajv-cli

Version:

Command line interface for Ajv JSON schema validator

60 lines 2 kB
"use strict"; 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