Skip to content

vycke/opzet

Repository files navigation

Opzet - JavaScript object validation

Node version NPM Downloads Minified size License: MIT

A lightweight library that allows for object schema validation. A schema is an object where the keys match the keys of the object you want to validate. Within the schema, each key has an array of 'rules' attached. A rule is simply something that returns nothing or a 'string' indicating the error.

type ValidationError = string;
type Rule = (value: unknown, obj?: object) => ValidationError | null;
type Schema = Record<string, Rule[]>;

Opzet validates each individual rule in the schema. If a key of an object does not comply with one or more rules, all error messages are returned. This allows you to add an order to the rules as well.

import { validate, string, required } from "opzet";
const obj = { key: "value" };
const schema = { key: [string.type], required: [required, string.type] };
validate(obj, schema);
// returns { required: 'required' };

Default rules

Opzet has a set of default rules build in.

import { string, number, boolean, object, array, required } from "opzet";
  • required: checks if the value exists or not. If invalid, returns 'required';
  • <string|number|boolean|object|array|datetime>.type: checks if the value is of the correct type. If invalid, returns 'type';
  • <string|number|array|datetime>.min(num: number | date): checks the (inclusive) minimum value/length (e.g. array.length <= num). Should be applied as array.min(3). If invalid, returns '.min';
  • <string|number|array|datetime>.max(num: number | date): checks the (inclusive) maximum value/length (e.g. array.length <= num). Should be applied as array.max(3). If invalid, returns '.max';
  • string.<email|url|uuid|iban>: checks if the value is within the correct format. If invalid, returns 'string.';
  • string.enum(allowed: string[]): checks if the value is one of the allowed string values. If invalid, returns 'string.enum';

For examples, check the tests.