UNPKG

ajv-cli

Version:

Command line interface for Ajv JSON schema validator

92 lines 3.22 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const ajv_1 = require("ajv"); const _2019_1 = require("ajv/dist/2019"); const _2020_1 = require("ajv/dist/2020"); const jtd_1 = require("ajv/dist/jtd"); const options_1 = require("./options"); const util = require("./util"); const path = require("path"); const draft6metaSchema = require("ajv/lib/refs/json-schema-draft-06.json"); // copied from https://github.com/babel/babel/blob/d8da63c929f2d28c401571e2a43166678c555bc4/packages/babel-helpers/src/helpers.js#L602-L606 /* istanbul ignore next */ const interopRequireDefault = (obj) => obj && obj.__esModule ? obj : { default: obj }; const importDefault = (moduleName) => interopRequireDefault(require(moduleName)).default; const AjvClass = { jtd: jtd_1.default, draft7: ajv_1.default, draft2019: _2019_1.default, draft2020: _2020_1.default, }; function default_1(argv) { const opts = options_1.getOptions(argv); if (argv.o) opts.code.source = true; const Ajv = AjvClass[argv.spec] || ajv_1.default; const ajv = new Ajv(opts); let invalid; if (argv.spec !== "jtd") ajv.addMetaSchema(draft6metaSchema); addSchemas(argv.m, "addMetaSchema", "meta-schema"); addSchemas(argv.r, "addSchema", "schema"); customFormatsKeywords(argv.c); if (invalid) process.exit(1); return ajv; function addSchemas(args, method, fileType) { if (!args) return; const files = util.getFiles(args); files.forEach((file) => { const schema = util.openFile(file, fileType); try { ajv[method](schema); } catch (err) { console.error(`${fileType} ${file} is invalid`); console.error(`error: ${err.message}`); invalid = true; } }); } function customFormatsKeywords(args) { if (!args) return; const files = util.getFiles(args); files.forEach((file) => { if (file[0] === ".") file = path.resolve(process.cwd(), file); try { if (file.endsWith(".ts")) { requireTypeScriptKeyword(file); } else { require(file)(ajv); } } catch (err) { console.error(`module ${file} is invalid; it should export function`); console.error(`error: ${err.message}`); invalid = true; } }); } function requireTypeScriptKeyword(file) { let registerer; try { registerer = require("ts-node").register(); } catch (err) { /* istanbul ignore next */ if (err.code === "MODULE_NOT_FOUND") { throw new Error(`'ts-node' is required for the TypeScript configuration files. Make sure it is installed\nError: ${err.message}`); } throw err; } registerer.enabled(true); importDefault(file)(ajv); registerer.enabled(false); } } exports.default = default_1; //# sourceMappingURL=ajv.js.map