form-validations
TypeScript icon, indicating that this package has built-in type declarations

1.1.0 • Public • Published

Build Status NPM version

Form validation in 1KB

A library that makes form validation fun again. When trying out various different form validation libraries, I didn't found one where one could easily change different rules, and customize the error messages as well.

Simple example:

import { validString } from "form-validations";

const isString = validString("not a string"); // Simple helper for custom messages

isString("hello world!"); // Returns: []. No errors means field is valid
isString(1234); // Returns: ["not a string"]

A more complex example with chained validations:

import { chain, firstError, validString } from "form-validations";

const isString = validString("not a string");

// Custom validator
function isHello(value) {
  if (!/hello/g.test(value)) {
    return "value does not contain 'hello'";
  }

  return true;
};

// Collect all errors
const validate = chain(isString, isHello);

validate("hello world!"); // Returns: []. No errors means field is valid
validate(1234); // Returns: ["not a string", "value does not contain 'hello'"]

// Stop on first error
const validate = firstError(isString, isHello);
validate(1234); // Returns: ["not a string"]

This library was built to allow easy chaining of validations.

API

chain(...validators): string[]

Easily chain validators together. Each validator can push an error message to the resulting array.

firstError(...validators): string[]

Contrary to chain this function will stop at the first validator that returns an error. The resulting string array will always have a length of 1.

Available validations

Each validation function must return either true or an error message of type string.

Validation Check if
validString ...value is a string
validNumber ...value is a number
validBool ...value is a boolean
validDateFormat ...value has format: YYYY-MM-DD
validDateTimeFormat ...value has format: YYYY-MM-DD hh:mm:ss
validDateUTCFormat ...value has format YYYY-MM-DDThh:mm:ssZ
oneOf ...value is inside the specified array
required ...value is not empty, undefined or null

Available normalizers

Often you need to normalize data when dealing with form elements.

import { normalizeBoolean } from "form-validations";

normalizeBoolean("false"); // returns false;
normalizeBoolean(1); // returns true;
normalizeBoolean([]); // returns false;
Normalize description
normalizeBoolean Returns a boolean

LICENSE

MIT, see LICENSE.md

Readme

Keywords

Package Sidebar

Install

npm i form-validations

Weekly Downloads

1

Version

1.1.0

License

MIT

Last publish

Collaborators

  • marvinhagemeister