Skip to content

davidmenger/is-okay

Repository files navigation

IsOkay Validator

Simple

const isOkay = require('is-okay');

const v = isOkay();

v.required('botId')
    .string()
    .is('not a reseved word [app]', b => b !== 'app')
    .is('max 47 chars long', b => b.length <= 47);

v.required('wingbotToken')
    .string();

v.optional('tier')
    .default('free')
    .is('one of allowed values', t => ['free', 'staging', 'production'].includes(t));

const data = v.okay(inputData);

Validates nested objects

const isOkay = require('is-okay');

const v = isOkay();

v.nullable('opt');
v.required('opt.req').string();

assert.deepEqual(v.okay({}), { opt: null });

assert.throws(() => {
    v.okay({
        opt: {}
    });
});

assert.deepEqual(v.okay({
    opt: { req: 'a' }
}), { opt: { req: 'a' } });

Reuse the validator for MongoDB updates

All root keys of input will be treated as optional.

const isOkay = require('is-okay');

const v = isOkay();

v.nullable('opt');
v.required('opt.req').string();

v.required('id');

const input = {};

assert.deepEqual(v.okay(input, true), {});

Objects in arrays

const isOkay = require('is-okay');

const v = isOkay();

v.nullable('some.nested');
v.nullable('array[].value');
v.optional('array[].opt').default(1);
v.optional('array[].notHere');
v.required('array[].required');
v.required('required');

v.nullable('some.nested');
v.nullable('array[].value')
    .string();
v.optional('array[].opt')
    .default(1);
v.optional('array[].notHere');
v.required('array[].required')
    .string();
v.required('required')
    .number();

assert.deepEqual(v.okay({
    required: 1,
    notHere: 2,
    array: [
        { required: 'abv', removeMe: 4, value: null },
        { required: 'abc', out: 6, opt: 1 }
    ]
}), {
    required: 1,
    some: { nested: null },
    array: [
        { required: 'abv', opt: 1, value: null },
        { required: 'abc', opt: 2, value: null }
    ]
});

API

Classes

Rule

{Rule} Validation configurator

Typedefs

ValidationError : Error
validator : function

Validator callback

Rule

{Rule} Validation configurator

Kind: global class

rule.string() ⇒ this

Sets filter

Kind: instance method of Rule

rule.number() ⇒ this

Sets filter

Kind: instance method of Rule

rule.boolean() ⇒ this

Sets filter

Kind: instance method of Rule

rule.default(defaultValue) ⇒ this

Sets default value

Kind: instance method of Rule

Param Type
defaultValue *

rule.is(message, fn) ⇒ this

Adds validator

Kind: instance method of Rule

Param Type
message string
fn validator

rule.notEmpty() ⇒ this

Value should not be empty (not falsey)

Kind: instance method of Rule

ValidationError : Error

Kind: global typedef
Properties

Name Type
invalidKey string
status number
statusCode number

validator : function

Validator callback

Kind: global typedef

Param Type Description
value * found value
key * a key, where the value was found

About

Simple and fast recursive type validator

Resources

Stars

Watchers

Forks

Packages

No packages published