2.1.189 • Published 2 years ago

itsa v2.1.189

Weekly downloads
73
License
MIT
Repository
-
Last release
2 years ago

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:

HTML Form Validators

License

MIT

2.1.171

2 years ago

2.1.173

2 years ago

2.1.175

2 years ago

2.1.177

2 years ago

2.1.179

2 years ago

2.1.181

2 years ago

2.1.183

2 years ago

2.1.185

2 years ago

2.1.187

2 years ago

2.1.189

2 years ago

2.1.156

2 years ago

2.1.160

2 years ago

2.1.163

2 years ago

2.1.165

2 years ago

2.1.167

2 years ago

2.1.169

2 years ago

2.1.148

2 years ago

2.1.152

2 years ago

2.1.130

2 years ago

2.1.133

2 years ago

2.1.140

2 years ago

2.1.142

2 years ago

2.1.144

2 years ago

2.1.114

2 years ago

2.1.116

2 years ago

2.1.118

2 years ago

2.1.121

2 years ago

2.1.123

2 years ago

2.1.127

2 years ago

2.1.129

2 years ago

2.1.112

3 years ago

2.1.111

3 years ago

2.1.108

3 years ago

2.1.101

3 years ago

2.1.97

3 years ago

2.1.104

3 years ago

2.1.107

3 years ago

2.1.95

3 years ago

2.1.93

4 years ago

2.1.90

4 years ago

2.1.87

4 years ago

2.1.85

4 years ago

2.1.83

4 years ago

2.1.81

4 years ago

2.1.79

4 years ago

2.1.76

4 years ago

2.1.69

4 years ago

2.1.67

4 years ago

2.1.65

4 years ago

2.1.61

4 years ago

2.1.73

4 years ago

2.1.71

4 years ago

2.1.26

4 years ago

2.1.23

4 years ago

2.1.46

4 years ago

2.1.43

4 years ago

2.1.40

4 years ago

2.1.29

4 years ago

2.1.37

4 years ago

2.1.34

4 years ago

2.1.57

4 years ago

2.1.55

4 years ago

2.1.11

4 years ago

2.1.53

4 years ago

2.1.51

4 years ago

1.2.28

5 years ago

1.2.27

5 years ago

1.2.25

8 years ago

1.2.21

10 years ago

1.2.20

10 years ago

1.2.19

10 years ago

1.2.18

10 years ago

1.2.17

10 years ago

1.2.16

10 years ago

1.2.15

10 years ago

1.2.14

10 years ago

1.2.13

10 years ago

1.2.12

10 years ago

1.2.11

10 years ago

1.2.10

10 years ago

1.2.9

10 years ago

1.2.8

10 years ago

1.2.6

10 years ago

1.2.5

10 years ago

1.2.4

10 years ago

1.2.3

10 years ago

1.2.2

10 years ago

1.1.21

10 years ago

1.1.20

10 years ago

1.1.16

10 years ago

1.1.15

10 years ago

1.1.14

10 years ago

1.1.13

10 years ago

1.1.5

10 years ago

1.1.2

10 years ago