@nvidia1997/js-validator
v1.2.9
Published
This is simple validation library written in typescript and compiled down to javascript.
Maintainers
Readme
@nvidia1997/js-validator
This is simple validation library written in typescript and compiled down to javascript.
If you need this for react app, please use this wrapper react-js-validator.
How to use:
load the library:
For Node js
const { Validator } = require("@nvidia1997/js-validator");For environments that support "import" keyword
import { Validator } from "@nvidia1997/js-validator";Create new validator instance
const mainValidator = new Validator();
// or you can pass a config
const mainValidatorExtended = new Validator({
onStateChanged: (validatorId) => console.log("this validator was updated"),
overrideOnIdConflict: true, // whether to override if there"s sub validator defined with this name.It throws if false
throwIfNotValidated: false// whether to throw exception if you try to access hasErrors or some other post validation related prop
});Define some sub-validators:
Important note !
Using allowNull will skip execution of other sub-validations if passed passedValue === null
Using allowUndefined will skip execution of other sub-validations if passed passedValue === undefined
Using notRequired will skip execution of other sub-validations if passedValue === null || passedValue === undefined
Most of the validation methods have extra param "flipLogic" (NOT required) which reverses the validation logic. Example: if we want to look for emails we use "email("Error message")", if we want to look for everything but emails, we use "email("Error message", true)"
const flipLogic = false;number
simpleValidator
.number(12, "numberValidator", "Error: value is not a number")
.allowNull() // null values won't trigger errors
.allowUndefined() // undefined values won't trigger errors
.notRequired() // allowNull and allowUndefined combined
.greaterThan(3, "Error: value is not >3", flipLogic)
.greaterThanOrEqual(5, "Error: value is not >=5", flipLogic)
.lessThan(2, "Error: value is not <2", flipLogic)
.lessThanOrEqual(2, "Error: value is not <=2", flipLogic)
.exclusiveBetween(1, 4, "Error: value is not 1>value<4", flipLogic)
.inclusiveBetween(1, 2, "Error: value is not 1>=value<=2", flipLogic)
.notZero("Error: value must be !=0", flipLogic)
.notInfinity("Error: value is not ", flipLogic)
.odd("Error: value % 2 == 0", flipLogic)
.even("Error: value % 2 != 0", flipLogic)
.integer("Error: value is not integer", flipLogic)
.canBeDividedBy(3, "Error: value % 3 != 0", flipLogic)
.equalTo(6, "Error: value !== comparissonValue", flipLogic)
.isUnique([3, 4], "Error: value already exists", flipLogic);
// .validate(); // you can call validate method directly after criteria definition or do it later as shown belowstring
simpleValidator
.string("George", "stringValidator", "Error: value is not a string")
.allowNull() // null values won't trigger errors
.allowUndefined() // undefined values won't trigger errors
.notRequired() // allowNull and allowUndefined combined
.maxLength(3, "Error: maxLength>3", flipLogic)
.minLength(3, "Error: minLength<3", flipLogic)
.matchesRegex(new RegExp("foo*"), "Error: regex not matching", flipLogic)
.email("This email is not valid", flipLogic)
.zipCode("GR", true, false,
"Invalid ZIP code",
flipLogic) // you can ignore whitespaces so "383 33" = "38333" and decide what to do when there are missing zip code rules
.startsWith("mouse", "Error: text doesn't start with such prefix", flipLogic)
.endsWith("mouse", "Error: text doesn't end with such suffix", flipLogic)
.contains("or", "Error: text doesn't contain such part", flipLogic)
.phoneNumber("BG", "Error: invalid phone number", flipLogic)
.equalTo("George", "Error: value !== comparissonValue", flipLogic)
.isUnique(["George", "Mary"], "Error: value already exists", flipLogic);object
mainValidator
.object({ users: [] }, "objectValidator", "Error: value is not an object") // defines new object sub validator
.allowNull() // null values won't trigger errors
.allowUndefined() // undefined values won't trigger errors
.notRequired() // allowNull and allowUndefined combined
.hasProp("users", "Error: object has no such prop", flipLogic)
.isPropSet("car", "Error: value must be !== undefined && !== null", flipLogic)
.notEmpty("Error: object has not props", flipLogic)
.equalTo({}, "Error: value !== comparissonValue", flipLogic)
.isUnique([obj1, obj2], "Error: value already exists", flipLogic);boolean
mainValidator
.boolean(true, "booleanVlidator", "Error: value is not a boolean") // defines new boolean sub validator
.allowNull() // null values won't trigger errors
.allowUndefined() // undefined values won't trigger errors
.notRequired() // allowNull and allowUndefined combined
.isTrue("Error: value !=true", flipLogic)
.isFalse("Error: value !=false", flipLogic)
.equalTo(true, "Error: value !== comparissonValue", flipLogic)
.isUnique([true, false], "Error: value already exists", flipLogic);get access to specific sub validator
const ageValidator = mainValidator.getValidator("ageValidator") // if the validator doesn"t exists it returns undefinedvalidate
//you can validate all sub validators at once by
mainValidator.validate();
// or to validate only specific validator using
const specificValidator = mainValidator.getValidator("ageValidator") // if the validator doesn"t exists it returns undefined
specificValidator.validate(); //this will automatically invoke onState changed function if available
specificValidator.validate(false); //this will NOT invoke onState changed functionerrors
const someValidator = mainValidator.getValidator("someValidator");
someValidator.errors;// Returns errors array. This prop can be used on main validator or sub validators. Each error has name and message.
mainValidator.bulkErrors("someValidator1", "someValidator2", "someValidator3"); // combines the errors of multiple sub-validators
someValidator.hasErrors; // This prop can be used on main validator or sub validators
mainValidator.bulkHasErrors("someValidator1", "someValidator2"); // combines the result of multiple sub-validators
someValidator.firstErrorMessage; // retrieves the first error message
mainValidator.bulkFirstErrorMessage("someValidator1", "someValidator2"); // retrieves the first error message of the sub-validators groupContributing
Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.
Please make sure to update tests as appropriate.
