UNPKG

cross-validator

Version:

A Cross Script Validator, node, browser, java

1 lines 9 kB
(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.Validator=f()}})(function(){var define,module,exports;return function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s}({1:[function(require,module,exports){(function(){"use strict";window.CrossValidator=require("./")})()},{"./":2}],2:[function(require,module,exports){(function(){"use strict";module.exports=require("./validator/validator")})()},{"./validator/validator":6}],3:[function(require,module,exports){(function(){"use strict";var util=require("./util");var validators=require("./validators");var Extractor=require("./extractor");var exec={constrains:[],loggerError:{},data:{},expressions:[],itemsToValidate:{}};var Validate={validate:function(){exec.constrains.forEach(function(constrain){exec.expressions=exec.expressions.concat(new Expressions(constrain))});exec.expressions.forEach(function(expression){validators.exec(expression,exec.loggerError)})}};var DataValidator={outErrors:function(error){exec.loggerError=error;return this},forData:function(data){exec.data=data;return Validate}};var ConstrainsValidator={using:function(constrains){exec.constrains=constrains;exec.loggerError={};exec.data={},exec.expressions=[];exec.itemsToValidate={};return DataValidator}};var Expressions=function(constrain){var result=[];var items=[];var expression=util.expressionToArray(constrain);var method=expression.shift();var params=expression;params.forEach(function(param){if(/^\$/.test(param)){var itemsExtracted=new Extractor(exec.data).extract(param.replace("$",""));items=items.concat(itemsExtracted)}else{items=items.concat(new LiteralItem(param))}});if(params.length===1){items.forEach(function(item){result.push(new Expression(item,method))});return result}result.push(new Expression(items,method));return result};var LiteralItem=function(value){return new Extractor(value).extract("literalvalue")};var Expression=function(items,method){var expression={};expression.method=method;expression.paramsValue=items;return expression};module.exports=ConstrainsValidator})()},{"./extractor":4,"./util":5,"./validators":8}],4:[function(require,module,exports){(function(){"use strict";var util=require("./util");var Extractor=function(data){var object=data;this.extract=function(path){return extractor(object,path)};var extractor=function(obj,fullPath,position,path,result){if(fullPath==="literalvalue"){result=[];result.push(new Item(fullPath,obj));return result}var pathArr=fullPath.split(".");result=result||[];path=path||"";position=position||0;obj=obj[pathArr[position]];path=path+"."+pathArr[position];path=path.replace(/^\./,"");if(pathArr.length-1<=position){result.push(new Item(path,obj));return result}if(Array.isArray(obj)){path=path.concat("[:index]");obj.forEach(function(item,index){var newPath=path.replace(":index",index);extractor(item,fullPath,position+1,newPath,result)});return result}return extractor(obj,fullPath,position+1,path,result)}};var Item=function(key,value){this.key=key;this.value=value};module.exports=Extractor})()},{"./util":5}],5:[function(require,module,exports){(function(){"use strict";var util={};util.isArray=Array.isArray;["Arguments","Function","String","Number","Date","RegExp","Object"].forEach(function(name){util["is"+name]=function(obj){return toString.call(obj)==="[object "+name+"]"}});util.isEmpty=function(obj){if(obj==null){return true}if(util.isArray(obj)||util.isString(obj)||util.isArguments(obj)){return obj.length===0}if(util.isNumber(obj)){return obj===0}for(var key in obj){if(util.has(obj,key)){return false}}return true};util.has=function(obj,key){return obj!=null&&Object.prototype.hasOwnProperty.call(obj,key)};util.deep=function(obj,key,value){var keys=key.replace(/\[(["']?)([^\1]+?)\1?\]/g,".$2").replace(/^\./,"").split("."),root,i=0,n=keys.length;if(arguments.length>2){root=obj;n--;while(i<n){key=keys[i++];obj=obj[key]=util.isObject(obj[key])?obj[key]:{}}obj[keys[i]]=value;value=root}else{var exec=true;while(exec&&i<n){exec=(obj=obj[keys[i++]])!=null}value=i<n?void 0:obj}return value};util.expressionToArray=function(expression){return expression.replace(/[\(\),]/g,"|").replace(/ /g,"").replace(/\|$/,"").split("|")};util.clone=function clone(item){if(!item){return item}var types=[Number,String,Boolean],result;types.forEach(function(type){if(item instanceof type){result=type(item)}});if(typeof result=="undefined"){if(Object.prototype.toString.call(item)==="[object Array]"){result=[];item.forEach(function(child,index,array){result[index]=clone(child)})}else if(typeof item=="object"){if(item.nodeType&&typeof item.cloneNode=="function"){result=item.cloneNode(true)}else if(!item.prototype){if(item instanceof Date){result=new Date(item)}else{result={};var keys=Object.keys(item);for(var i=0,itemLength=keys.length;i<itemLength;i++){result[keys[i]]=clone(item[keys[i]])}}}else{if(false&&item.constructor){result=new item.constructor}else{result=item}}}else{result=item}}return result};module.exports=util})()},{}],6:[function(require,module,exports){(function(){"use strict";var util=require("./util");var execValidators=require("./execValidators");var ValidatorResult=require("./validatorResult");var Validator=function(data,constrains){var _data=data;var _constrains=constrains;verifyData(_data);verifyConstrains(_constrains);this.getData=function(){return _data};this.getConstrains=function(){return _constrains};this.validate=function(){var errors={};execValidators.using(this.getConstrains()).outErrors(errors).forData(this.getData()).validate();return new ValidatorResult(errors)}};function verifyData(data){if(util.isEmpty(data)||!util.isObject(data)){var message="Data is Invalid. Expected an Object not empty, but was given: :result";message=message.replace(":result",JSON.stringify(data,null,4));throw new InvalidArguments(message)}}function verifyConstrains(constrains){if(util.isEmpty(constrains)||!util.isArray(constrains)){var message="Constrains is Invalid. Expected an Array not empty, but was given: :result";message=message.replace(":result",JSON.stringify(constrains,null,4));throw new InvalidArguments(message)}}var InvalidArguments=function(message){var error=new Error(message);error.name="InvalidArguments";throw error};module.exports=Validator})()},{"./execValidators":3,"./util":5,"./validatorResult":7}],7:[function(require,module,exports){(function(){"use strict";var util=require("./util");var validators=require("./validators");var ValidatorResult=function(errors){var _errors=util.clone(errors);this.hasErrors=function(){return!util.isEmpty(_errors)};this.getAllFailures=function(){return _errors};this.getErrorsOf=function(field){return util.deep(_errors,field)};this.forField=function(field){return new FieldApi(field)};var FieldApi=function(field){var self=this;Object.keys(validators).forEach(function(validator){if(validator==="exec"||validator==="defaultMethod"){return}var name=validator.charAt(0).toUpperCase()+validator.substring(1);var method="has:ValidatorPassed".replace(":Validator",name);self[method]=function(){return(_errors[field]||[]).indexOf(validator)===-1}})}};module.exports=ValidatorResult})()},{"./util":5,"./validators":8}],8:[function(require,module,exports){(function(){"use strict";var validators={notEmpty:require("./validators/notEmpty"),isEmail:require("./validators/isEmail"),isNumber:require("./validators/isNumber"),defaultMethod:function(){return true},exec:function(expression,loggerError){var fn=validators[expression.method]||validators.defaultMethod;if(!fn.call(this,expression.paramsValue)){loggerError[expression.paramsValue.key]=loggerError[expression.paramsValue.key]||[];loggerError[expression.paramsValue.key].push(expression.method)}}};module.exports=validators})()},{"./validators/isEmail":9,"./validators/isNumber":10,"./validators/notEmpty":11}],9:[function(require,module,exports){(function(){"use strict";var isEmail=function(item){var isMail=/^[a-z0-9_]+@[a-z0-9_]+\.[a-z]{3}(\.[a-z]{2})?$/g;return isMail.test(item.value)};module.exports=isEmail})()},{}],10:[function(require,module,exports){(function(){"use strict";var isNumber=function(item){var isNumber=/^[0-9]+$/g;return isNumber.test(item.value)};module.exports=isNumber})()},{}],11:[function(require,module,exports){(function(){"use strict";var util=require("../util");var notEmpty=function(item){return!util.isEmpty(item.value)};module.exports=notEmpty})()},{"../util":5}]},{},[1])(1)});