@askbills/validator
v1.0.0
Published
collection of helper functions support validation
Downloads
6
Maintainers
Readme
Introduction
Validation for input values.
Capabilities and Frameworks
|Capability|Module|
|------------------|-----------|
|Dependence Framework| @askbills/util
collection of utility functions|
|Coding Standard|eslint
identifying and reporting on patterns found in ECMAScript/JavaScript code completely pluggable, babel-eslint
support parsing ECMAScript for eslint|
|Testing Framework| lab
nodejs test framework uses domains instead of uncaught exception and other global manipulation|
How to test
npm test | yarn test
npm test:coverage | yarn test:coverage
How to check lint
npm run lint
npm run lintFix
How to use
Install this module
npm install @askbills/validator --save
Checking rules for input data
const { Rules } = require('@askbills/validator');
const inputValue = 'test';
// Using built-in rule in collection Rules
const rule = new Rules.AlphabetRule('test', false);
const isValidate = rule.validate(inputValue);
if (isValidate) {
console.log('It is validated');
}
// Using rule with custom regex
const inputValue = 'test';
const rule = new Rules.RegexRule('ERROR', 'test', /\d{10, 12}/);
const isValidate = rule.validate(inputValue);
Implement custom rules
const { Rule } = require('@askbills/validator').Rules;
class CustomRule extends Rule {
constructor(code = 'RULE_CODE', message, isRequired) {
super(code, message, isRequired);
}
validate(value) {
// implement validation's logic
return value !== undefined;
}
}
Validation with rules
const {
Rules,
Validators
} = require('@askbills/validator');
const value = 'David Teo';
const maxLengthRule = new Rules.MaxLengthRule('test', 20);
const minLengthRule = new Rules.MinLengthRule('test', 6);
const fullNameRule = new Rules.FullNameRule('test');
const rule = new Validators.InputValidator('FullName', [minLengthRule, maxLengthRule, fullNameRule]);
const validatorErrors = rule.validate(value);
if (validatorErrors.length > 0) {
console.log('value got an error');
}
Validation form
const {
Rules,
Validators
} = require('@askbills/validator');
const fullName = 'David Teo';
const fullNameRule = new Rules.FullNameRule('test');
const fullNameValidator = new Validators.InputValidator('FullName', [fullNameRule]);
const email = '[email protected]';
const emailRule = new Rules.EmailRule('test', false);
const emailValidator = new Validators.InputValidator('Email', [emailRule]);
const validatorInfos = Validators.CompositeValidator.validate([
{fullName, validator: fullNameValidator},
{email, validator: emailValidator}
]);
if (Object.keys(validatorInfos).length > 0) {
console.log('input values got error');
}
Validation redux-form
1. redux-form's validation
const {
Rules,
Validators
} = require('@askbills/validator');
const email = '[email protected]';
const emailRule = new Rules.EmailRule('email must be provided');
const syncValidate = values => {
const errors = {};
if (!emailRule.validate(values.email)) {
errors.email = emailRule.errorMessage();
}
return errors
}
const optionalRule = new Rules.RegexRule('WARNING_MIDDLE_NAME', 'should provide middle name', /[a-zA-Z]{1,}/, false);
const warn = values => {
const warnings = {}
if !(optionalRule(values.middleName)) {
warnings.middleName =optionalRule.warningMessage();
}
return warnings
}
2. redux-form's component
export class SignUpForm extends Component {
render() {
return (
<View>
<Field name={'middleName'} />
<Field name={'email'} />
</View>
);
}
}
export default reduxForm({
form: 'SignUpForm',
validate: syncValidate,
warn: warn
})(SignUpForm);