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.
- 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)
const { itsa } = require("itsa");
itsa.number().validate('foo').ok === false;
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";
> npm install itsa
const { itsa } = require('itsa');
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
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;
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";
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
};
Todo: for now, check out files and tests in /src for a full listing.
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."