0.6.9 • Published 9 months ago

@validest/core v0.6.9

Weekly downloads
-
License
MIT
Repository
github
Last release
9 months ago

Typescript validation

See validest documentation Validation schema for typescript.

Quick start

Installation :

yarn add @validest/core

Code :

import { validate } from '@validest/core';

// Unknown params
const params = {
  name: 'joe',
  profile: {
    name: { firstname: 'john', lastname: 'doe' },
    role: 'ADMIN',
    age: '25',
  },
};

const { name, profile } = validate(
  params,
  object({
    name: string(),
    profile: object({
      name: object({ firstname: string(), lastname: string() }),
      role: string(),
      age: number(),
    }),
  })

  profile.age = 25
);

The returned value of validate function will be typed.

Validation error

If params don't pass validation it will throw error as a similar object with keys params and string error values.

import { array, object, validate } from '@validest/core';
import { number, oneOf, string } from 'validest';

// Unknown params
const params = {
  name: 'joe',
  profile: {
    name: { firstname: 'john', lastname: 'doe' },
    role: 'ADMIN',
    age: 'not-a-number',
  },
};
try {
  const { name, profile } = validate(
    params,
    object({
      name: string(),
      profile: object({
        name: object({ firstname: string(), lastname: string() }),
        role: string(),
        age: number(),
      }),
    })
  );
} catch (error) {
  error = {
    age: 'number',
  };
}

Type schema

Here is the core typed schemas. Each schema is un function wich return a object with data or error.

array

Parameter takes another schema to defined type element of this array. Value will be an array of the nested schema.

const [age1, age2, age3, age4] = validate(['25', '32', '43', '56'], array(int()));

object

Parameter takes an object with key of input keys. Value of this object must be others schema to define values of input object.

const { name, age } = validate(
  { name: 'john', age: '25' },
  object({
    name: string(),
    age: number(),
  })
);

Starter kit

To start with the base shemas you can use validest

Custom schema

You can also right your own schema. The only rule is tu return a Schema type with you desired type in generic type.

import type { Schema } from '@validest/core';

Schema type is a function that take an unkown value and return an object { data , error }. If value is good error must undefined, if it's not data must be undefined.

Example for a password :

export const password =
  (error?: string): Schema<string> =>
  (value) => {
    return typeof value === 'string' && value.length > 8 ? { data: value } : { error: error || 'password' };
  };

Custom error

Each schema can take custom error message in parameter.

const height = validate('150.5', number('This is a custom message for this value'));

Test if is valid

You can use isValid method against validate.

if(isValid('150.5', number()))
0.6.9

9 months ago

0.6.8

9 months ago

0.6.6

2 years ago

0.6.5

2 years ago

0.6.4

2 years ago

0.6.3

2 years ago

0.6.2

2 years ago

0.6.1

2 years ago

0.6.0

2 years ago

0.5.6

2 years ago