ajv-cli
Version:
Command line interface for Ajv JSON schema validator
228 lines (203 loc) • 7.59 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
const usage_1 = require("./usage");
const cmd = {
execute,
schema: {
type: "object",
properties: {
_: { maxItems: 2 },
},
},
};
exports.default = cmd;
const commands = {
help: mainHelp,
compile: helpCompile,
validate: helpValidate,
migrate: helpMigrate,
test: helpTest,
};
function execute(argv) {
const command = argv._[1];
if (!command) {
mainHelp();
return true;
}
if (command in commands) {
commands[command]();
return true;
}
console.error("Unknown command", command);
usage_1.default();
return false;
}
function mainHelp() {
_helpValidate();
_helpCompile();
_helpMigrate();
_helpTest();
schemaSpecOption();
console.log(`
More information:
ajv help validate
ajv help compile
ajv help migrate
ajv help test`);
}
function schemaSpecOption() {
console.log(`
options:
--spec= JSON schema specification to use
draft7 JSON Schema draft-07 (default)
draft2019 JSON Schema draft-2019-09`);
}
function helpValidate() {
_helpValidate();
console.log(`
parameters
-s JSON schema to validate against (required, only one schema allowed)
-d data file(s) to be validated (required)
-r referenced schema(s)
-m meta schema(s)
-c custom keywords/formats definitions
-d, -r, -m, -c can be globs and can be used multiple times
glob should be enclosed in double quotes
-c module(s) should export a function that accepts Ajv instance as parameter
(file path should start with ".", otherwise used as require package)
.json extension can be omitted (but should be used in globs)`);
schemaSpecOption();
console.log(`
--errors= error reporting format ("js" by default)
--changes= log changes in data after validation ("no" by default)
js JavaScript object
json JSON format
line JSON single line
text text message (only for --errors option)
no don't log errors`);
helpAjvOptions();
}
function _helpValidate() {
console.log(`
Validate data file(s) against schema
ajv [validate] -s schema[.json] -d data[.json]
ajv [validate] -s schema[.json] -d "data*.json"`);
}
function helpCompile() {
_helpCompile();
console.log(`
parameters
-s JSON schema to validate against (required)
-r referenced schema(s)
-m meta schema(s)
-c custom keywords/formats definitions
-o output file for compiled validation function
-s, -r, -m, -c can be globs and can be used multiple times
With option -o multiple schemas will be exported using $ids as export names
Glob should be enclosed in double quotes
-c module(s) should export a function that accepts Ajv instance as parameter
(file path should start with ".", otherwise used as require package)
.json extension can be omitted (but should be used in globs)`);
schemaSpecOption();
helpAjvOptions();
}
function _helpCompile() {
console.log(`
Compile schema(s)
ajv compile -s schema[.json]
ajv compile -s "schema*.json"`);
}
function helpMigrate() {
_helpMigrate();
console.log(`
parameters
-s JSON schema(s) to migrate to draft-07 or draft-2019-09 (required)
-o output file for migrated schema (only allowed for a single schema)
-s can be glob and can be used multiple times
If option -o is used only one schema can be migrated
glob should be enclosed in double quotes
.json extension can be omitted (but should be used in globs)`);
schemaSpecOption();
console.log(`
--indent=<N> indentation in migrated schema JSON file, 4 by default
--validate-schema=false skip schema validation`);
}
function _helpMigrate() {
console.log(`
Migrate schema(s) to draft-07 or draft-2019-09
ajv migrate -s schema[.json] -o migrated_schema.json
ajv migrate -s "schema*.json"`);
}
function helpTest() {
_helpTest();
console.log(`
parameters
-s JSON schema to validate against (required, only one schema allowed)
-d data file(s) to be validated (required)
-r referenced schema(s)
-m meta schema(s)
-c custom keywords/formats definitions
--valid/--invalid data file(s) must be valid/invalid for this command to succeed
-d, -r, -m, -c can be globs and can be used multiple times
glob should be enclosed in double quotes
-c module(s) should export a function that accepts Ajv instance as parameter
(file path should start with ".", otherwise used as require package)
.json extension can be omitted (but should be used in globs)
--valid=false can be used instead of --invalid`);
schemaSpecOption();
console.log(`
--errors= error reporting
js JavaScript object (default)
json JSON format
line JSON single line
text text message`);
helpAjvOptions();
}
function _helpTest() {
console.log(`
Test data validation result
ajv test -s schema[.json] -d data[.json] --valid
ajv test -s schema[.json] -d data[.json] --invalid
ajv test -s schema[.json] -d "data*.json" --valid`);
}
function helpAjvOptions() {
console.log(`
Ajv options (see https://github.com/epoberezkin/ajv#options):
--strict=false disable strict mode
--strict-tuples= unconstrained tuples
true throw exception
false allow
log log warning
--strict-types= union or unspecified types
true throw exception
false allow
log log warning
--allow-matching-properties allow "properties" matching patterns in "patternProperties"
--allow-union-types allow union type keyword
--validate-formats=false disable format validation
--data use $data references
--all-errors collect all errors
--verbose include schema and data in errors
--comment log schema "$comment"s
--inline-refs= referenced schemas compilation mode
true inline $ref code when possible
false always compile $ref as a function call
<number> inline $ref code up to this number of keywords
--remove-additional= remove additional properties
all remove all additional properties
true remove if additionalProperties is false
failing also remove if fails validation of schema in additionalProperties
--use-defaults replace missing properties/items with the values from default keyword
--coerce-types change type of data to match type keyword
--multiple-of-precision=N pass integer number
--messages=false do not include text messages in errors
--loop-required= max size of "required to compile to expression (rather than to loop)
--loop-enum= max size of "enum" to compile to expression (rather than to loop)
--own-properties only validate own properties (not relevant for JSON, but can have effect for JavaScript objects)
--code.es5 generate ES5 code
--code.lines generate multi-line code
--code.optimize= code optimization
false disable
<number> number of optimization passes (1 pass by default)`);
}
//# sourceMappingURL=help.js.map
;