UNPKG

vuito

Version:

Simple, lightweight, isomorphic, and template-based validation library.

123 lines (92 loc) 3.42 kB
# vuito Simple, lightweight, isomorphic, and template-based validation library. [![](https://badgen.net/bundlephobia/tree-shaking/vuito)](https://bundlephobia.com/result?p=vuito) ![](https://badgen.net/bundlephobia/dependency-count/vuito) [![](https://badgen.net/bundlephobia/minzip/vuito)](https://bundlephobia.com/result?p=vuito) [![Maintainability](https://api.codeclimate.com/v1/badges/42b1117477140c6613bb/maintainability)](https://codeclimate.com/github/mathix420/vuito/maintainability) [![Test Coverage](https://api.codeclimate.com/v1/badges/42b1117477140c6613bb/test_coverage)](https://codeclimate.com/github/mathix420/vuito/test_coverage) --- ⚡ [Installation](#installation) ⚡ [Usage](#usage) ⚡ [Vue.js Mixin](#vuejs-mixin) ⚡ [Template Reuse](#template-reuse) ⚡ --- # Installation ```bash npm i vuito ``` Or via [JsDeliver](https://www.jsdelivr.com/package/npm/vuito?version=latest), [UNPKG](https://unpkg.com/browse/vuito@latest/vuito.min.js), or [bundle.run](https://bundle.run/vuito@latest). # Usage ## Imports **CJS** ```javascript const { regex, required } = require('vuito'); // OR const regex = require('vuito/validators/regex.cjs'); ``` Vuito is fully tree-shakable, so you can import only methods you need. **ES6** ```javascript import { regex, required } from 'vuito'; ``` **Directly in the browser** ```javascript import { regex, required } from 'https://esm.run/vuito'; ``` ## Templates With templates, you can easily create and reuse validations. `validations/auth.ts`: ```typescript import { templateify, required, minLength, maxLength } from 'vuito'; export const signIn = templateify({ username: [ { test: required, message: 'Please enter a username.' }, { test: minLength(3), message: 'Username is too short.' }, { test: maxLength(20), message: 'Username is too big.' }, ], password: [ { test: required, message: 'Please enter a password.' }, { test: minLength(12), message: 'Password is too short.' }, ] }); ``` ## Validate `index.ts`: ```typescript import { signIn } from './validations/auth'; signIn.check({ username: 'test123', password: 'tooshort', }) .then(() => console.log('Sign-in data is valid!')) .catch(console.error) // Result: console.error: Password is too short. ``` # Vue.js Mixin [![minizipped size](https://badgen.net/bundlephobia/minzip/@vuito/vue)](https://bundlephobia.com/result?p=@vuito/vue) Use vuito with Vue.js or Nuxt.js like a breeze! [Nuxt.js Demo](https://vuito.vercel.app/demo) ```bash npm i @vuito/vue ``` `pages/signin.vue`: ```html <template> <span>{{ errors.username }}</span> <input type="text" id="username" :class="{error: !!errors.username}" v-model="fields.username" @input.capture="onInput" > <span>{{ errors.password }}</span> <input type="password" id="password" :class="{error: !!errors.password}" v-model="fields.password" @input.capture="onInput" > </template> <script> import { signIn } from '~/validations/auth'; import Vuito from '@vuito/vue'; export default { mixins: [Vuito(signIn)] } </script> ``` # Template Reuse To reuse your validation template you have many solutions. 1. Create a validation package in your monorepo. 2. Create a private package in NPM, GitHub, GitLab, ... 3. Any other solution that lets you share a js/ts file between projects. 4. Maybe [SWAP](https://github.com/mathix420/swap) would be a good option for you