Skip to content

Validate your values and schemes with this extendable validator

Notifications You must be signed in to change notification settings

Caesar2011/valideno

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

20 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

valideno

Validate your values and schemas with valideno. Convert values to your desired type if needed. All you need is a single function.

validate(data, validators, options = {});

Examples

import {
  ValidationError, validate, ArraySymbol,
  isString, isEmail, fulfillsRegex,
  isNumber, isInRange,
} from "./mod.ts";

const errorsA: ValidationError[] = await validate(3.14, isNumber());
console.log(errorsA);
// []

const errorsB: ValidationError[] = await validate(3.14, isString());
console.log(errorsB);
// [ { type: "isString", args: {}, message: "This value has to be a string." } ]

const errorsC: ValidationError[] = await validate(
  "[email protected]",
  [isString(), isEmail()],
);
console.log(errorsC);
// []

const entity = {
  name: "John Doe",
  age: 25,
  emails: [
    { type: "work", address: "[email protected]" },
    { type: "home", address: "[email protected]" },
  ],
};
const scheme = {
  name: isString(),
  age: isInRange({ greaterThanOrEqualTo: 18 }),
  emails: {
    [ArraySymbol]: {
      type: fulfillsRegex({ regex: /^[a-z]+$/ }),
      address: isEmail(),
    },
  },
};
const errorsD: ValidationError[] = await validate(entity, scheme);
console.log(errorsD);
// []

Conversion

To allow automatic conversion to the desired data type add the doConversion: true option. To retreive the converted values, you need to pass a reference to an object to converted. If the conversion is not possible (e.g. when passing a string to isBoolean()) no conversion will take place and the value stays the same. In this case errors are thrown, because the non-converted string is not a Boolean.

The converted data is not in the reference passed to converted in the property output. This also works for schemes.

import {
  ValidationError, validate,
  isNumber
} from "./mod.ts";

const converted: any = {};
const errors: ValidationError[] = await validate("420", isNumber(), { doConversion: true, converted });
console.log(errors);
// []
console.log(converted);
// { output: 420 }

To disable validation and do "best effort" conversion only, disable validation with doValidation: false.

import {
  ValidationError, validate,
  isBoolean
} from "./mod.ts";

const converted: any = {};
const errors: ValidationError[] = await validate("foobar", isBoolean(), { doConversion: true, converted });
console.log(errors);
// [ { type: "isBoolean", args: {}, message: "This value has to be a boolean." } ]
console.log(converted);
// { output: "foobar" }

About

Validate your values and schemes with this extendable validator

Resources

Stars

Watchers

Forks

Packages

No packages published