tjs-ajv
v0.0.4
Published
use tjs to generate schema from interface, and use ajv to validate config against schema
Downloads
5
Readme
TJS-AJV
Overview
TJS-AJV is a handy tool that uses TJS to generate json schema from typescript interface, and uses AJV to validate a config file against the json schema.
Usage
Define your Interface file which will be used to dynamically generate the json schema. For example, the sample-schema.json schema file is generated from the typescript Interface sample-interface.ts by tjs-ajv.
Define your config file, from example sample-config.yml. This file will be validated against the above json schema by tjs-ajv.
Install tjs-ajv
npm install tjs-ajv
.
Sample code:
import * as path from "path";
import { loadConfig, validateConfig } from "tjs-ajv";
const INTERFACE_FILE = path.join(__dirname, "./sample-interface.ts");
const CONFIG_FILE = path.join(__dirname, "./sample-config.yml");
console.log("Validating config file, please wait...");
const loadResult = loadConfig(CONFIG_FILE);
if (!loadResult.success) {
console.error(loadResult.message);
process.exit(1);
} else {
const validateResult = validateConfig(
INTERFACE_FILE,
"Config",
loadResult.data
);
if (!validateResult.success) {
console.error(validateResult.message);
console.error(validateResult.data);
process.exit(1);
} else {
console.log("The config file is valid!");
}
}
Development
Clone repo:
git clone https://github.com/jc1518/tjs-ajv.git
Install dependencies:
cd tjs-ajv; npm install
Run sample code:
npx ts-node example/sample.ts
Check generated sample json schema file
jq -r . schema.json
Run test:
npx jest