https://github.com/milihhard/yaml-validator-typescript
Yaml validator for Node.js to test your yaml with a defined model
https://github.com/milihhard/yaml-validator-typescript
validator yaml yaml-validator-typescript
Last synced: about 1 month ago
JSON representation
Yaml validator for Node.js to test your yaml with a defined model
- Host: GitHub
- URL: https://github.com/milihhard/yaml-validator-typescript
- Owner: Milihhard
- Created: 2020-04-29T05:40:23.000Z (about 6 years ago)
- Default Branch: master
- Last Pushed: 2023-01-06T04:35:51.000Z (over 3 years ago)
- Last Synced: 2025-02-08T22:03:40.261Z (over 1 year ago)
- Topics: validator, yaml, yaml-validator-typescript
- Language: TypeScript
- Homepage: https://www.npmjs.com/package/yaml-validator-typescript
- Size: 475 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 10
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# yaml-validator-typescript
[](https://coveralls.io/github/Milihhard/yaml-validator-typescript?branch=master)   
yaml-validator-typescript is a way to validate your Yaml file by using a defined model
## Installation
```bash
$npm install yaml-validator-typescript
```
or
```bash
$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`
```javascript
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:
```javascript
class Optional implements Yaml {
keysToTest: string[] = ['valueToHave', 'valueOptional', 'arrayOptional'];
optionals: Set = 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:
```javascript
import MyClass from './somewhere';
module.exports = {
structure: new MyClass(),
files: ['file1.yaml', 'file2.yaml'],
};
```
Then run the command
```json
{
"scripts": {
"valid-yaml": "validate-yaml"
}
}
```
> If you have not set the files, you can put them in the command
```json
{
"scripts": {
"valid-yaml": "validate-yaml file1.yaml file2.yaml"
}
}
```
### In your code
```typescript
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
```typescript
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 💪');
}
});
});
```