Thanks to visit codestin.com
Credit goes to github.com

Skip to content

The easiest to use and powerful data validate and formatter library for JS.

License

Notifications You must be signed in to change notification settings

charlyzeng/racoon-js

Repository files navigation

racoon-js

The easiest to use and powerful data validate and formatter library for JS.

npm version build status code coverage install size npm downloads

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

Chrome Firefox Safari Opera Edge IE
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({ ... });

About

The easiest to use and powerful data validate and formatter library for JS.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 2

  •  
  •