tjs-ajv
TypeScript icon, indicating that this package has built-in type declarations

0.0.4 • Public • Published

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

demo

/tjs-ajv/

    Package Sidebar

    Install

    npm i tjs-ajv

    Weekly Downloads

    1

    Version

    0.0.4

    License

    ISC

    Unpacked Size

    16.6 kB

    Total Files

    8

    Last publish

    Collaborators

    • jc1518