Security News
Fluent Assertions Faces Backlash After Abandoning Open Source Licensing
Fluent Assertions is facing backlash after dropping the Apache license for a commercial model, leaving users blindsided and questioning contributor rights.
yaml-schema-validator
Advanced tools
Schema validation utility for YAML/JSON files against a pre defined schema
Validate is a utility used to check the structure of a yaml/json file against a predefined schema. The schema is expected to be a JSON or YAML file with a structure that defines type of each property. The object properties can be nested to as many levels as you like.
It's method validateSchema
can be imported and used as below:
const validateSchema = require('yaml-schema-validator')
// validate a json OR yml file
validateSchema('path/to/target-file.yml', {
schemaPath: '/path/to/required/schema.yml' // can also be schema.json
})
The method automatically detects if file format is JSON or YAML and process it accordingly.
Similarly, method can also be used to validate plain JS objects:
// validate an object
let person = { name: { first: 'Tom', last: 'Xoman' }, age: 45 }
vaidateSchema(person, {
schemaPath: '/path/to/schema.yml' // can also be schema.json
})
// validate against a JS schema object
const requiredSchema = {
name: {
first: { type: String, required: true },
last: { type: String, required: true }
},
age: { type : Number }
}
schemaErrors = validateSchema(person, { schema: requiredSchema })
If you don't have a schema object built, but you just want to compare if structure of two objects is same, then you can use schemaObj
option to pass the expected object:
let person = { name: { first: 'Tom', last: 'Xoman' }, age: 'something' }
let idealPerson = { name: { first: 'Tom', last: 'Xoman' }, age: 45 }
vaidateSchema(person, { // compares the structure of person object against
schemaObj: idealPerson // anotherPerson object.
})
Schema validator validates the target file against the passed schema and lists down the mismatches in the structure:
It returns an array of errors showing the mismatches:
[{path: 'person.id', message: 'person.id must be a String'}]
Custom validators can be defined by passing an object with named validators to .use:
// custom validation function checking value for a regex
const checkHexColor = val => {
return /^#[0-9a-fA-F]$/.test(val)
}
const car = new Schema({
color: {
type: String,
use: { checkHexColor }
}
})
Define a custom error message for the validator:
car.message({
checkHexColor: path => `${path} must be a valid hex color.`
})
options
parameter passed as the second argument in the validate schema method.
validateSchema(targetObject, options);
It has following configurable options available:
schema
: javascript object having the schema structure (eg: {name: { type: String, required: true }
)schemaPath
: path to the json/yaml file having the schemaschemaObj
: Used when you directly want to compare the target with a structure of another object. Pass the expected object in this option to verify the target object is having the similar structurelogLevel
: specify the level of logging while validating schem. Possible values ['none', 'error', 'warn', 'verbose']
. By default the logLevel is set to errortype
: field that can be boolean | string | number
to define type of value of that propertyrequired
: field can be set to true if the property is required in target filelength
: feild can be used for string values to check minimum and max length of string. example length: { min: 3, max: 32 }
use
: an object of custom validation methods to be checked for a particular field.
Each function in use object should take value
param as input and return a boolean.---
person:
name:
first_name:
type: string
age:
type: number
required: true
employeed:
type: boolean
hobbies:
- type: string
{
"person": {
"names": {
"first_name": { "type": "string", "length": { "min": 3, "max": 32 } },
"last_name": { "type": "string" }
},
"id": { "type": "string" },
"age": { "type": "number", "required": true },
"employeed": { "type": "boolean" },
"hobbies": [{"type": "string"}],
"attributes": [{ "foo": { "type": "string" } }]
}
}
This package also can be used as a command line utility.
schema [command] [options]
schema validate -f path/to/dummy.yml -s path/to/schema.yml
schema validate -h
-f, --filePath
: [Required param] path to the target file for validating-s, --schema [schemaPath]
: path to an external schema file. If not passed the schema is fetched from /examples/schema.json which is the defeault schema location.-o, --schema-obj [schemaObj]
: stringified JSON object whose structure you want the target object to be compared with.-t, --target [targetObj]
: stringified JSON object whose structure is to be verified-j, --json
: Passed if target file is in JSON format-e, --exit-on-err
: Exit process with nonzero status on errors or warningspackage.json
. Just add the script key:"scripts": {
"sc": "schema"
},
and then try sc validate -f path/to/dummy.yml -s path/to/schema.yml
FAQs
Schema validator for yaml files
The npm package yaml-schema-validator receives a total of 12,058 weekly downloads. As such, yaml-schema-validator popularity was classified as popular.
We found that yaml-schema-validator demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Fluent Assertions is facing backlash after dropping the Apache license for a commercial model, leaving users blindsided and questioning contributor rights.
Research
Security News
Socket researchers uncover the risks of a malicious Python package targeting Discord developers.
Security News
The UK is proposing a bold ban on ransomware payments by public entities to disrupt cybercrime, protect critical services, and lead global cybersecurity efforts.