@askbills/validator

1.0.0 • Public • Published

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 = 'developer@github.com';
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 = 'developer@github.com';
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);

Package Sidebar

Install

npm i @askbills/validator

Weekly Downloads

2

Version

1.0.0

License

ISC

Last publish

Collaborators

  • askbills