中文
racoon-js
The easiest to use and powerful data validate and formatter library for JS.
Table Of Contents
Features
-
🌈 Support both browser and node. -
❄️ The data format can be flexibly defined, and any level of attribute nesting of object and array is supported. -
🔗 Support chain call without paying attention to call sequence. -
✨ Error message can be easily customed.
Browser Support
Latest |
Latest |
Latest |
Latest |
Latest |
11 |
Installing
Using npm:
$ npm install racoon-js
Using yarn:
yarn add racoon-js
Using cdn:
<script src="https://cdn.jsdelivr.net/npm/racoon-js@latest/dist/racoon.min.js"></script>
The JS from cdn is 21kB, and it will be only 4.6kB after be compressed by gzip.
Example
import racoon from 'racoon-js';
// Define data format schema
const schema = racoon.object({
name: racoon
.string()
.min(3)
.error('name is too short') // You can add your custom error message
.max(30)
.error('name is too long')
.required(), // Name can not be `undefined` or `null`
age: racoon
.number()
.int()
.default(1) // If value is `null` or `undefined`, then return default value `1`
married: racoon.boolean(),
favorite: racoon.object({ // You can define deep nested object format schema
sports: racoon.array(
racoon.string().min(1).max(100).required()
),
book: racoon.object({
title: racoon.string().required(),
date: racoon
.string()
.pattern(/^\d{4}-\d{1,2}-\d{1,2}$/)
.format((date) => { // Format the return value
return `${date} 12:00:00`;
})
})
})
});
try {
const result = schema.validate({
name: 'Jack',
age: 22,
favorite: {
sports: ['football', 'basketball'],
book: {
title: 12,
date: '2010-1-1'
}
}
});
} catch (error) {
console.error(error);
// Error: "favorite.book.title": value should be a type of string
// ↑↑↑ The error message can be customed
}
// If you don't like `try-catch` code style,
// you can use `validateSilent` method. When
// validate failed, the `error` will not be
// empty. Otherwise,the `error` is `undefined`.
//
// For Example:
const { error, value } = schema.validateSilent({ ... });