simply_valid
Version:
A simple data driven validation utility library
2 lines (1 loc) • 4.22 kB
JavaScript
!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("kyanite")):"function"==typeof define&&define.amd?define(["exports","kyanite"],e):e(t.simplyValid={},t.kyanite)}(this,function(t,e){"use strict";var r=function(t){return function(r){for(var n=0,i=t.length;n<i;n++){var u=t[n];if(!e.ensureArray(r).every(u))return{isValid:!1,rule:u.name.replace("_",""),data:r}}return{isValid:!0}}},n=e.curry(function(t,n){if(!Array.isArray(t)&&"Object"!==e.type(t))throw new TypeError("The Schema should either be an Array or Object");return Array.isArray(t)?r(t)(n):function(t,n){if("Object"!==e.type(n))throw new TypeError("Data must be an object if the provided schema is an object");for(var i=Object.keys(t),u=0,a=i.length;u<a;u++){var o=i[u],s=t[o],c=n[o],f=e.branch(e.always(Array.isArray(s)),r(s),s,c);if(e.eq(f.isValid,!1))return f;if(!f)return{isValid:!1,prop:o,rule:s.name.replace("_",""),data:c}}return{isValid:!0}}(t,n)}),i=function(t){return e.test(/[0-9]/,t)},u=function(t){return e.test(/\W/,t)};function a(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var r=[],n=!0,i=!1,u=void 0;try{for(var a,o=t[Symbol.iterator]();!(n=(a=o.next()).done)&&(r.push(a.value),!e||r.length!==e);n=!0);}catch(t){i=!0,u=t}finally{try{n||null==o.return||o.return()}finally{if(i)throw u}}return r}(t,e)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}()}var o=function(t){return e.test(/^((1[0-2])|(0?[1-9]))[-\/.]?((0?[1-9])|([1-2][0-9])|(3[0-1]))[-\/.]?(([1-2]{1}[0-9]{3})|([0-9]{2}))$/m,t)},s=function(t){return e.test(/^((1[0-2])|(0?[1-9]))[-\/.]?((0?[1-9])|([1-2][0-9])|(3[0-1]))[-\/.]?$/m,t)},c=function(t){return e.test(/^(([1-2]{1}[0-9]{3})|([0-9]{2}))[-\/.]?((1[0-2])|(0?[1-9]))[-\/.]?((0?[1-9])|([1-2][0-9])|(3[0-1]))$/m,t)},f=function(t){return e.test(/^\d{5}(-\d{4})?$/,t)},l=function(t){return e.test(/^[ABCEGHJKLMNPRSTVXY]{1}\d{1}[A-Z]{1} *\d{1}[A-Z]{1}\d{1}$/i,t)},h=function(t,e){return t.some(function(t){return t(e)})};t.validate=n,t.hasValue=function(t){return e.either(e.eq(0),Boolean,t)},t.hasNumbers=i,t.hasLetters=function(t){return e.test(/[A-Z]/i,t)},t.hasSpecialCharacters=u,t.hasNumbersOrSpecials=function(t){return e.either(i,u,t)},t.hasUpperAndLowerCase=function(t){return e.both(e.test(/[A-Z]/),e.test(/[a-z]/),t)},t.isDate=o,t.isDateShort=s,t.isDateProper=c,t.isEmail=function(t){return e.test(/^[\w\u00c0-\u017f][\w.-_\u00c0-\u017f]*[\w\u00c0-\u017f]+[@][\w\u00c0-\u017f][\w.-_\u00c0-\u017f]*[\w\u00c0-\u017f]+\.[a-z]{2,4}$/i,t)},t.isNumber=function(t){return!isNaN(t)},t.isPositive=function(t){return!isNaN(t)&&t>=0},t.isNegative=function(t){return!isNaN(t)&&t<0},t.isVin=function(t){return e.test(/^[a-hj-npr-z0-9]{9}[a-hj-npr-tv-y1-9]{1}[a-hj-npr-z0-9]{7}$/i,t)},t.isZip=f,t.isCAPostalCode=l,t.isPhone=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";return e.test(/^[0-9]{10}$/,t.replace(/\W/g,""))},t.isLicensePlate=function(t){return e.test(/^([A-Z]|[0-9]){1,3}(\s|-|•)?([A-Z]|[0-9]){3,5}$/i,t)},t.isBelowMax=function t(){for(var e=arguments.length,r=new Array(e),n=0;n<e;n++)r[n]=arguments[n];var i=r[0],u=r[1];return 1===r.length?function(e){return t(i,e)}:!isNaN(u)&&u<i},t.isAboveMin=function t(){for(var e=arguments.length,r=new Array(e),n=0;n<e;n++)r[n]=arguments[n];var i=r[0],u=r[1];return 1===r.length?function(e){return t(i,e)}:!isNaN(u)&&u>i},t.isBetween=function t(r,n){var i=a(r,2),u=i[0],o=i[1];return n?!isNaN(n)&&e.between(u,o,n):function(e){return t([u,o],e)}},t.meetsYearStandard=function(t){return e.test(/(^[0-9]{2}$)|(^[1-2]{1}[0-9]{3}$)/,t)},t.meetsTreadDepth=function(t){return e.test(/^(([0-1]?[0-9]|2[0-1])(\.[0-9])?|22)$/i,t)},t.meetsPassReq=function(t){return e.test(/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[$@$!%*?&])[A-Za-z\d$@$!%*?&]{8,}$/,t)},t.noSpecials=function(t){return e.compose(e.isNil,e.match(/\W/),t)},t.noNumbers=function(t){return e.compose(e.isNil,e.match(/[0-9]/),t)},t.noLetters=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";return e.compose(e.isNil,e.match(/[A-Z]/),t)},t.date=function(t){return h([o,s,c],t)},t.zipOrPostal=function(t){return h([f,l],t)},Object.defineProperty(t,"__esModule",{value:!0})});