1.1.2 • Published 5 years ago

yaml-validator-typescript v1.1.2

Weekly downloads
5
License
ISC
Repository
github
Last release
5 years ago

yaml-validator-typescript

Coverage Status Testing app Building Publish to npm

yaml-validator-typescript is a way to validate your Yaml file by using a defined model

Installation

$npm install yaml-validator-typescript

or

$yarn add yaml-validator-typescript

Usage

Define your modele

You can set you model as you want. You just need to have properties initialized

If you don't want some property to be tested, you can implement Yaml

class TestOnlyKeys implements Yaml {
    keysToTest: (keyof TestOnlyKeys)[] = ['key1', 'key2'];
    key1: string = '';
    key2: number = 0;
    keyNotToTest: boolean = false;
}

Here only key1 and key2 are tested You can also set some properties optionals:

class Optional implements Yaml {
    keysToTest: string[] = ['valueToHave', 'valueOptional', 'arrayOptional'];
    optionals: Set<string> = new Set(['valueOptional', 'arrayOptional']);
    valueToHave: string = '';
    valueOptional: string = '';
    arrayOptional: {valueYouNeed1: string, valueYouNeed2: boolean}[] = [
        {valueYouNeed1: '', valueYouNeed2: true},
    ];
}

Here valueOptional and arrayOptional are optionals But if arrayOptional is defined, he has to be right

As a command

Set a config file at the root of the project:

import MyClass from './somewhere';
module.exports = {
    structure: new MyClass(),
    files: ['file1.yaml', 'file2.yaml'],
};

Then run the command

{
    "scripts": {
        "valid-yaml": "validate-yaml"
    }
}

If you have not set the files, you can put them in the command

{
    "scripts": {
        "valid-yaml": "validate-yaml file1.yaml file2.yaml"
    }
}

In your code

import MyClass from './somewhere';
const validator = new Validator(new MyClass());
validator.validate('path_of_my_file.yaml').then((errors) => {
    if (errors.length > 0) {
        console.log('I have some issues I need to fix 🙀');
        errors.forEach((error) => {
            console.log(`- ${result}`);
        });
    } else {
        console.log('No Error in this code 💪');
    }
});

You can validate multiple file at the same time with the same validator

import MyClass from './somewhere';
const validator = new Validator(new MyClass());
validator
    .validateMany('path_of_my_file.yaml', 'another_path_of_my_file.yaml')
    .then((results) => {
        files.forEach((file) => {
            console.log(`${file.name}:`);
            if (file.results.length > 0) {
                console.log('I have some issues I need to fix 🙀');
                file.results.forEach((error) => {
                    console.log(`- ${result}`);
                });
            } else {
                console.log('No Error in this code 💪');
            }
        });
    });
1.1.1

5 years ago

1.1.0

5 years ago

1.1.2

5 years ago

1.0.1

5 years ago

1.0.0

5 years ago