itsa v2.1.189
itsa - v2
Pronounced "it's a". As in... it's a number.
itsa
is a JavaScript data validation library. This is version 2 which has been completely re-written and is basically an all new library.
Features
- Client side & server side
- JavaScript or TypeScript
- 100% Test Coverage (Mocha)
- Composable
- Extensible
- No dependencies
- 6.7 KB Minified & Gzipped
- Convert/default data in-place
- Bail on first error or get all errors
- Get paths & messages for each error
- Serialize/deserialize to/from json
- Partial verification (for updates)
- Touch support (for Vue.js)
Simple Example
const { itsa } = require("itsa");
itsa.number().validate('foo').ok === false;
Complex Example
const { itsa } = require("itsa");
const schema = itsa.object({
name: itsa.string(),
email: itsa.email(),
age: itsa.any(
itsa.number().between(18, 200),
null,
undefined,
),
colors: itsa.array(
itsa.any("red", "green", "blue"),
).notEmpty(),
});
const result = schema.validate({ name: "Bob", email: "bob@example.com" });
result.ok === false;
result.message === "colors: must be an array";
Installation
With NPM
> npm install itsa
const { itsa } = require('itsa');
Without NPM
If you don't use NPM, then use dist/itsa.js
for development (it has source maps) and
use dist/itsa.min.js
for production. There are no dependencies.
> itsa.min.js - 14K minified, 4K gzipped
Required vs Optional
If you want to make a property optional, then you should use the itsa.any
to list all
of the values that are valid. Here's a simple example that shows the difference:
itsa.string().validate(null).ok === false;
itsa.any(itsa.string(), null).validate(null).ok === true;
Validating
validate(value) -> result
Once you've built up your fancy validator, just call validate with your value.
It will return a result object that has ok
set to true or false. message
gives a description of the error. errors
gives a full list of error objects. value
gives the updated value (only different if you use a converter on the root object).
const validator = itsa.string().maxLength(5);
const result = validator.validate("Bob was here");
result.ok === false;
result.message ~== "Length is 12, max is 5";
validOrThrow(value)
As a shorthand, you can choose to automatically throw if the data is invalid:
var doThing = function (criteria, callback) {
//validate
itsa.object({
criteria: itsa.object(),
callback: itsa.function()
}).validOrThrow({
criteria: criteria,
callback: callback
});
//all good
};
Available Methods
Todo: for now, check out files and tests in /src for a full listing.
Alternative Libraries
JavaScript Data Validators:
- molnarg/js-schema - "Simple and intuitive schema validator"
- ansman/validate.js - "Declarative validation written in javascript"
- eivindfjeldstad/validate - "Validate nested object properties in javascript"
- chriso/validator.js - "String validation and sanitization"
- ron-liu/validate-obj.js - "simple way to validate object in javasciprt"
HTML Form Validators
- thedersen/backbone.validation - "A validation plugin for Backbone.js that validates both your model as well as form input"
- rickharrison/validate.js - "Lightweight JavaScript form validation library inspired by CodeIgniter."
- DiegoLopesLima/Validate/validate.js - "The jQuery Validate is an advanced plugin for an easily and quickly form validation"
- guillaumepotier/Parsley.js - "Validate your forms, frontend, without writing a single line of javascript - http://parsleyjs.org"
- formvalidation/formvalidation - "The best @jquery plugin to validate form fields."
License
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
5 years ago
5 years ago
8 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago