diff --git a/dist/js-input-validator.js b/dist/js-input-validator.js index 6a51670..a3ff418 100644 --- a/dist/js-input-validator.js +++ b/dist/js-input-validator.js @@ -101,68 +101,65 @@ return /******/ (function(modules) { // webpackBootstrap !*** ./src/index.js ***! \**********************/ /*! no static exports found */ -/***/ (function(module, exports) { +/***/ (function(module, exports, __webpack_require__) { -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } +var Validator = __webpack_require__(/*! ./validator */ "./src/validator.js"); -function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } +module.exports = Validator; -function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } +/***/ }), +/***/ "./src/utils.js": +/*!**********************!*\ + !*** ./src/utils.js ***! + \**********************/ +/*! exports provided: sanitize, validateEmail, validateLatitude, validateLongitude, validateUrl, validateArray, validateType, validateTypes, validateLength, validateMinMax, validateWithCustomMethod */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "sanitize", function() { return sanitize; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "validateEmail", function() { return validateEmail; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "validateLatitude", function() { return validateLatitude; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "validateLongitude", function() { return validateLongitude; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "validateUrl", function() { return validateUrl; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "validateArray", function() { return validateArray; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "validateType", function() { return validateType; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "validateTypes", function() { return validateTypes; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "validateLength", function() { return validateLength; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "validateMinMax", function() { return validateMinMax; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "validateWithCustomMethod", function() { return validateWithCustomMethod; }); function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } -// jsPrototype -Array.prototype.drop = function (deleteValue) { - for (var i = 0; i < this.length; i++) { - if (this[i] == deleteValue) { - this.splice(i, 1); - i--; - } - } - - return this; -}; - -Object.prototype.isEmpty = function () { - var obj = this; - return Object.keys(obj).length === 0; -}; // Utils. - - +// Utils. function sanitize() { var value = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null; if (!value) return null; if (typeof value !== "string") return value; return value.trim(); } - function validateEmail(email) { var patt = new RegExp(/^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/); if (!patt.test(email)) return "Invalid email address"; return null; } - function validateLatitude(latitude) { if (!(isFinite(latitude) && Math.abs(latitude) <= 90)) return "Invalid latitude!"; return null; } - function validateLongitude(longitude) { if (!(isFinite(longitude) && Math.abs(longitude) <= 180)) return "Invalid longitude!"; return null; } - function validateUrl(url) { var patt = new RegExp(/(http(s)?:\/\/.)?(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&//=]*)/g); if (!patt.test(url)) return "Invalid URL!"; return null; } - function validateArray(arr) { if (!Array.isArray(arr)) return "Invalid data type!"; return null; } - function validateType(value, type) { if (!value || !type) return null; if (type === "email") return validateEmail(value); @@ -173,14 +170,12 @@ function validateType(value, type) { if (_typeof(value) !== type) return "Invalid data type!"; return null; } - function validateTypes(value) { var types = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : []; if (!value) return null; if (!types.includes(value)) return "Invalid data type!"; return null; } - function validateLength(value, length) { var charLength = String(value).length; if (typeof length === "number" && charLength !== length) return "Invalid character size!"; @@ -192,7 +187,6 @@ function validateLength(value, length) { return null; } - function validateMinMax(value, min, max) { if (typeof value !== "number") return null; if (min && !max && value < min) return "Should be greater than ".concat(min, "!"); @@ -200,12 +194,47 @@ function validateMinMax(value, min, max) { if (min && max && (value > max || value < min)) return "Should be between ".concat(min, " and ").concat(max, "!"); return null; } - function validateWithCustomMethod(value, values, validate) { if (!validate || typeof validate !== "function") return null; if (!validate(value, values)) return "Invalid"; return null; -} // Validator +} + +/***/ }), + +/***/ "./src/validator.js": +/*!**************************!*\ + !*** ./src/validator.js ***! + \**************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +var Utils = __webpack_require__(/*! ./utils */ "./src/utils.js"); // jsPrototype + + +Array.prototype.drop = function (deleteValue) { + for (var i = 0; i < this.length; i++) { + if (this[i] == deleteValue) { + this.splice(i, 1); + i--; + } + } + + return this; +}; + +Object.prototype.isEmpty = function () { + var obj = this; + return Object.keys(obj).length === 0; +}; // Validator var Validator = @@ -230,12 +259,12 @@ function () { fields.forEach(function (field) { var errorMessages = []; var attr = schema[field]; - var value = sanitize(values[field]); - if (value && attr.type && typeof attr.type === "string") errorMessages.push(validateType(value, attr.type)); - if (value && attr.type && _typeof(attr.type) === "object" && Array.isArray(attr.type)) errorMessages.push(validateTypes(value, attr.type)); - if (value && attr.length) errorMessages.push(validateLength(value, attr.length)); - if (value && (attr.min || attr.max)) errorMessages.push(validateMinMax(value, attr.min, attr.max)); - if (value && attr.validate) errorMessages.push(validateWithCustomMethod(value, values, attr.validate)); + var value = Utils.sanitize(values[field]); + if (value && attr.type && typeof attr.type === "string") errorMessages.push(Utils.validateType(value, attr.type)); + if (value && attr.type && _typeof(attr.type) === "object" && Array.isArray(attr.type)) errorMessages.push(Utils.validateTypes(value, attr.type)); + if (value && attr.length) errorMessages.push(Utils.validateLength(value, attr.length)); + if (value && (attr.min || attr.max)) errorMessages.push(Utils.validateMinMax(value, attr.min, attr.max)); + if (value && attr.validate) errorMessages.push(Utils.validateWithCustomMethod(value, values, attr.validate)); if (attr.required && !value) errorMessages.push("".concat(attr.name, " is required!")); errorMessages.drop(null); diff --git a/dist/js-input-validator.js.map b/dist/js-input-validator.js.map index ecd7f87..7caab86 100644 --- a/dist/js-input-validator.js.map +++ b/dist/js-input-validator.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack://js-input-validator/webpack/universalModuleDefinition","webpack://js-input-validator/webpack/bootstrap","webpack://js-input-validator/./src/index.js"],"names":["Array","prototype","drop","deleteValue","i","length","splice","Object","isEmpty","obj","keys","sanitize","value","trim","validateEmail","email","patt","RegExp","test","validateLatitude","latitude","isFinite","Math","abs","validateLongitude","longitude","validateUrl","url","validateArray","arr","isArray","validateType","type","validateTypes","types","includes","validateLength","charLength","String","min","max","validateMinMax","validateWithCustomMethod","values","validate","Validator","schema","errors","fields","forEach","field","errorMessages","attr","push","required","name","list","module","exports"],"mappings":"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","file":"js-input-validator.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"js-input-validator\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"js-input-validator\"] = factory();\n\telse\n\t\troot[\"js-input-validator\"] = factory();\n})(this, function() {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = \"./src/index.js\");\n","// jsPrototype\r\nArray.prototype.drop = function(deleteValue) {\r\n for (var i = 0; i < this.length; i++) {\r\n if (this[i] == deleteValue) { \r\n this.splice(i, 1);\r\n i--;\r\n }\r\n }\r\n return this;\r\n};\r\n\r\nObject.prototype.isEmpty = function() {\r\n const obj = this;\r\n return Object.keys(obj).length === 0;\r\n}\r\n\r\n// Utils.\r\nfunction sanitize(value=null) {\r\n if (!value) return null;\r\n if (typeof value !== \"string\") return value;\r\n\r\n return value.trim();\r\n}\r\n\r\nfunction validateEmail(email) {\r\n const patt = new RegExp(\r\n /^(([^<>()[\\]\\\\.,;:\\s@\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/\r\n );\r\n if (!patt.test(email)) return \"Invalid email address\";\r\n\r\n return null;\r\n}\r\n\r\nfunction validateLatitude(latitude) {\r\n if (!(isFinite(latitude) && Math.abs(latitude) <= 90))\r\n return \"Invalid latitude!\";\r\n\r\n return null;\r\n}\r\n\r\nfunction validateLongitude(longitude) {\r\n if (!(isFinite(longitude) && Math.abs(longitude) <= 180))\r\n return \"Invalid longitude!\";\r\n\r\n return null;\r\n}\r\n\r\nfunction validateUrl(url) {\r\n const patt = new RegExp(/(http(s)?:\\/\\/.)?(www\\.)?[-a-zA-Z0-9@:%._\\+~#=]{2,256}\\.[a-z]{2,6}\\b([-a-zA-Z0-9@:%_\\+.~#?&//=]*)/g);\r\n if (!patt.test(url)) return \"Invalid URL!\";\r\n\r\n return null;\r\n}\r\n\r\nfunction validateArray(arr) {\r\n if (!Array.isArray(arr)) return \"Invalid data type!\"\r\n\r\n return null;\r\n}\r\n\r\nfunction validateType(value, type) {\r\n if (!value || !type) return null;\r\n\r\n if (type === \"email\") return validateEmail(value);\r\n if (type === \"latitude\") return validateLatitude(value);\r\n if (type === \"longitude\") return validateLongitude(value);\r\n if (type === \"url\") return validateUrl(value);\r\n if (type === \"array\") return validateArray(value);\r\n\r\n if (typeof value !== type) return \"Invalid data type!\";\r\n\r\n return null;\r\n}\r\n\r\nfunction validateTypes(value, types=[]) {\r\n if (!value) return null;\r\n if (!types.includes(value)) return \"Invalid data type!\";\r\n\r\n return null;\r\n}\r\n\r\nfunction validateLength(value, length) {\r\n const charLength = String(value).length;\r\n\r\n if (typeof length === \"number\" && charLength !== length) return `Invalid character size!`;\r\n\r\n if (typeof length === \"object\") {\r\n if (length.min && charLength < length.min) return \"Invalid character size! (min)\";\r\n if (length.max && charLength < length.max) return \"Invalid character size! (max)\";\r\n }\r\n\r\n return null;\r\n}\r\n\r\nfunction validateMinMax(value, min, max) {\r\n if (typeof value !== \"number\") return null;\r\n if (min && !max && value < min) return `Should be greater than ${min}!`;\r\n if (!min && max && value > max) return `Should be less than ${max}!`;\r\n if (min && max && (value > max || value < min) ) return `Should be between ${min} and ${max}!`;\r\n\r\n return null;\r\n}\r\n\r\nfunction validateWithCustomMethod(value, values, validate) {\r\n if (!validate || typeof validate !== \"function\") return null;\r\n\r\n if (!validate(value, values)) return \"Invalid\";\r\n\r\n return null;\r\n}\r\n\r\n// Validator\r\n\r\nclass Validator {\r\n constructor(schema) {\r\n this.schema = schema;\r\n this.errors = null;\r\n }\r\n\r\n validate(values={}) {\r\n const schema = this.schema;\r\n this.errors = {};\r\n\r\n const fields = Object.keys(schema);\r\n fields.forEach((field) => {\r\n const errorMessages = [];\r\n\r\n const attr = schema[field];\r\n const value = sanitize(values[field]);\r\n\r\n if (value && attr.type && typeof attr.type === \"string\") errorMessages.push(validateType(value, attr.type));\r\n if (value && attr.type && typeof attr.type === \"object\" && Array.isArray(attr.type)) errorMessages.push(validateTypes(value, attr.type));\r\n if (value && attr.length) errorMessages.push(validateLength(value, attr.length));\r\n if (value && (attr.min || attr.max) ) errorMessages.push(validateMinMax(value, attr.min, attr.max));\r\n if (value && attr.validate) errorMessages.push(validateWithCustomMethod(value, values, attr.validate));\r\n\r\n if (attr.required && !value) errorMessages.push(`${attr.name} is required!`);\r\n\r\n errorMessages.drop(null);\r\n if (errorMessages && errorMessages.length > 0) {\r\n this.errors[field] = errorMessages;\r\n }\r\n\r\n });\r\n\r\n return this.errors;\r\n }\r\n\r\n run(values, list=false) {\r\n const errors = this.validate(values)\r\n return list ? Object.values(errors) : errors;\r\n }\r\n\r\n isValid(values) {\r\n const errors = this.validate(values);\r\n return errors.isEmpty();\r\n }\r\n\r\n getErrors() {\r\n return this.errors;\r\n }\r\n}\r\n\r\nmodule.exports = Validator;\r\n"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack://js-input-validator/webpack/universalModuleDefinition","webpack://js-input-validator/webpack/bootstrap","webpack://js-input-validator/./src/index.js","webpack://js-input-validator/./src/utils.js","webpack://js-input-validator/./src/validator.js"],"names":["Validator","require","module","exports","sanitize","value","trim","validateEmail","email","patt","RegExp","test","validateLatitude","latitude","isFinite","Math","abs","validateLongitude","longitude","validateUrl","url","validateArray","arr","Array","isArray","validateType","type","validateTypes","types","includes","validateLength","length","charLength","String","min","max","validateMinMax","validateWithCustomMethod","values","validate","Utils","prototype","drop","deleteValue","i","splice","Object","isEmpty","obj","keys","schema","errors","fields","forEach","field","errorMessages","attr","push","required","name","list"],"mappings":"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","file":"js-input-validator.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"js-input-validator\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"js-input-validator\"] = factory();\n\telse\n\t\troot[\"js-input-validator\"] = factory();\n})(this, function() {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = \"./src/index.js\");\n","var Validator = require(\"./validator\");\nmodule.exports = Validator;","\n// Utils.\n\nexport function sanitize(value=null) {\n if (!value) return null;\n if (typeof value !== \"string\") return value;\n\n return value.trim();\n}\n\nexport function validateEmail(email) {\n const patt = new RegExp(\n /^(([^<>()[\\]\\\\.,;:\\s@\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/\n );\n if (!patt.test(email)) return \"Invalid email address\";\n\n return null;\n}\n\nexport function validateLatitude(latitude) {\n if (!(isFinite(latitude) && Math.abs(latitude) <= 90))\n return \"Invalid latitude!\";\n\n return null;\n}\n\nexport function validateLongitude(longitude) {\n if (!(isFinite(longitude) && Math.abs(longitude) <= 180))\n return \"Invalid longitude!\";\n\n return null;\n}\n\nexport function validateUrl(url) {\n const patt = new RegExp(/(http(s)?:\\/\\/.)?(www\\.)?[-a-zA-Z0-9@:%._\\+~#=]{2,256}\\.[a-z]{2,6}\\b([-a-zA-Z0-9@:%_\\+.~#?&//=]*)/g);\n if (!patt.test(url)) return \"Invalid URL!\";\n\n return null;\n}\n\nexport function validateArray(arr) {\n if (!Array.isArray(arr)) return \"Invalid data type!\"\n\n return null;\n}\n\nexport function validateType(value, type) {\n if (!value || !type) return null;\n\n if (type === \"email\") return validateEmail(value);\n if (type === \"latitude\") return validateLatitude(value);\n if (type === \"longitude\") return validateLongitude(value);\n if (type === \"url\") return validateUrl(value);\n if (type === \"array\") return validateArray(value);\n\n if (typeof value !== type) return \"Invalid data type!\";\n\n return null;\n}\n\nexport function validateTypes(value, types=[]) {\n if (!value) return null;\n if (!types.includes(value)) return \"Invalid data type!\";\n\n return null;\n}\n\nexport function validateLength(value, length) {\n const charLength = String(value).length;\n\n if (typeof length === \"number\" && charLength !== length) return `Invalid character size!`;\n\n if (typeof length === \"object\") {\n if (length.min && charLength < length.min) return \"Invalid character size! (min)\";\n if (length.max && charLength < length.max) return \"Invalid character size! (max)\";\n }\n\n return null;\n}\n\nexport function validateMinMax(value, min, max) {\n if (typeof value !== \"number\") return null;\n if (min && !max && value < min) return `Should be greater than ${min}!`;\n if (!min && max && value > max) return `Should be less than ${max}!`;\n if (min && max && (value > max || value < min) ) return `Should be between ${min} and ${max}!`;\n\n return null;\n}\n\nexport function validateWithCustomMethod(value, values, validate) {\n if (!validate || typeof validate !== \"function\") return null;\n\n if (!validate(value, values)) return \"Invalid\";\n\n return null;\n}\n","var Utils = require('./utils');\n\n// jsPrototype\nArray.prototype.drop = function(deleteValue) {\n for (var i = 0; i < this.length; i++) {\n if (this[i] == deleteValue) { \n this.splice(i, 1);\n i--;\n }\n }\n return this;\n};\n\nObject.prototype.isEmpty = function() {\n const obj = this;\n return Object.keys(obj).length === 0;\n}\n\n// Validator\n\nclass Validator {\n constructor(schema) {\n this.schema = schema;\n this.errors = null;\n }\n\n validate(values = {}) {\n const schema = this.schema;\n this.errors = {};\n\n const fields = Object.keys(schema);\n fields.forEach((field) => {\n const errorMessages = [];\n\n const attr = schema[field];\n const value = Utils.sanitize(values[field]);\n\n if (value && attr.type && typeof attr.type === \"string\") errorMessages.push(Utils.validateType(value, attr.type));\n if (value && attr.type && typeof attr.type === \"object\" && Array.isArray(attr.type)) errorMessages.push(Utils.validateTypes(value, attr.type));\n if (value && attr.length) errorMessages.push(Utils.validateLength(value, attr.length));\n if (value && (attr.min || attr.max)) errorMessages.push(Utils.validateMinMax(value, attr.min, attr.max));\n if (value && attr.validate) errorMessages.push(Utils.validateWithCustomMethod(value, values, attr.validate));\n\n if (attr.required && !value) errorMessages.push(`${attr.name} is required!`);\n\n errorMessages.drop(null);\n if (errorMessages && errorMessages.length > 0) {\n this.errors[field] = errorMessages;\n }\n\n });\n\n return this.errors;\n }\n\n run(values, list = false) {\n const errors = this.validate(values)\n return list ? Object.values(errors) : errors;\n }\n\n isValid(values) {\n const errors = this.validate(values);\n return errors.isEmpty();\n }\n\n getErrors() {\n return this.errors;\n }\n}\n\nmodule.exports = Validator;\n"],"sourceRoot":""} \ No newline at end of file diff --git a/src/index.js b/src/index.js index 56e946c..20e8914 100644 --- a/src/index.js +++ b/src/index.js @@ -1,164 +1,2 @@ -// jsPrototype -Array.prototype.drop = function(deleteValue) { - for (var i = 0; i < this.length; i++) { - if (this[i] == deleteValue) { - this.splice(i, 1); - i--; - } - } - return this; -}; - -Object.prototype.isEmpty = function() { - const obj = this; - return Object.keys(obj).length === 0; -} - -// Utils. -function sanitize(value=null) { - if (!value) return null; - if (typeof value !== "string") return value; - - return value.trim(); -} - -function validateEmail(email) { - const patt = new RegExp( - /^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/ - ); - if (!patt.test(email)) return "Invalid email address"; - - return null; -} - -function validateLatitude(latitude) { - if (!(isFinite(latitude) && Math.abs(latitude) <= 90)) - return "Invalid latitude!"; - - return null; -} - -function validateLongitude(longitude) { - if (!(isFinite(longitude) && Math.abs(longitude) <= 180)) - return "Invalid longitude!"; - - return null; -} - -function validateUrl(url) { - const patt = new RegExp(/(http(s)?:\/\/.)?(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&//=]*)/g); - if (!patt.test(url)) return "Invalid URL!"; - - return null; -} - -function validateArray(arr) { - if (!Array.isArray(arr)) return "Invalid data type!" - - return null; -} - -function validateType(value, type) { - if (!value || !type) return null; - - if (type === "email") return validateEmail(value); - if (type === "latitude") return validateLatitude(value); - if (type === "longitude") return validateLongitude(value); - if (type === "url") return validateUrl(value); - if (type === "array") return validateArray(value); - - if (typeof value !== type) return "Invalid data type!"; - - return null; -} - -function validateTypes(value, types=[]) { - if (!value) return null; - if (!types.includes(value)) return "Invalid data type!"; - - return null; -} - -function validateLength(value, length) { - const charLength = String(value).length; - - if (typeof length === "number" && charLength !== length) return `Invalid character size!`; - - if (typeof length === "object") { - if (length.min && charLength < length.min) return "Invalid character size! (min)"; - if (length.max && charLength < length.max) return "Invalid character size! (max)"; - } - - return null; -} - -function validateMinMax(value, min, max) { - if (typeof value !== "number") return null; - if (min && !max && value < min) return `Should be greater than ${min}!`; - if (!min && max && value > max) return `Should be less than ${max}!`; - if (min && max && (value > max || value < min) ) return `Should be between ${min} and ${max}!`; - - return null; -} - -function validateWithCustomMethod(value, values, validate) { - if (!validate || typeof validate !== "function") return null; - - if (!validate(value, values)) return "Invalid"; - - return null; -} - -// Validator - -class Validator { - constructor(schema) { - this.schema = schema; - this.errors = null; - } - - validate(values={}) { - const schema = this.schema; - this.errors = {}; - - const fields = Object.keys(schema); - fields.forEach((field) => { - const errorMessages = []; - - const attr = schema[field]; - const value = sanitize(values[field]); - - if (value && attr.type && typeof attr.type === "string") errorMessages.push(validateType(value, attr.type)); - if (value && attr.type && typeof attr.type === "object" && Array.isArray(attr.type)) errorMessages.push(validateTypes(value, attr.type)); - if (value && attr.length) errorMessages.push(validateLength(value, attr.length)); - if (value && (attr.min || attr.max) ) errorMessages.push(validateMinMax(value, attr.min, attr.max)); - if (value && attr.validate) errorMessages.push(validateWithCustomMethod(value, values, attr.validate)); - - if (attr.required && !value) errorMessages.push(`${attr.name} is required!`); - - errorMessages.drop(null); - if (errorMessages && errorMessages.length > 0) { - this.errors[field] = errorMessages; - } - - }); - - return this.errors; - } - - run(values, list=false) { - const errors = this.validate(values) - return list ? Object.values(errors) : errors; - } - - isValid(values) { - const errors = this.validate(values); - return errors.isEmpty(); - } - - getErrors() { - return this.errors; - } -} - -module.exports = Validator; +var Validator = require("./validator"); +module.exports = Validator; \ No newline at end of file diff --git a/src/utils.js b/src/utils.js new file mode 100644 index 0000000..2e041e9 --- /dev/null +++ b/src/utils.js @@ -0,0 +1,96 @@ + +// Utils. + +export function sanitize(value=null) { + if (!value) return null; + if (typeof value !== "string") return value; + + return value.trim(); +} + +export function validateEmail(email) { + const patt = new RegExp( + /^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/ + ); + if (!patt.test(email)) return "Invalid email address"; + + return null; +} + +export function validateLatitude(latitude) { + if (!(isFinite(latitude) && Math.abs(latitude) <= 90)) + return "Invalid latitude!"; + + return null; +} + +export function validateLongitude(longitude) { + if (!(isFinite(longitude) && Math.abs(longitude) <= 180)) + return "Invalid longitude!"; + + return null; +} + +export function validateUrl(url) { + const patt = new RegExp(/(http(s)?:\/\/.)?(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&//=]*)/g); + if (!patt.test(url)) return "Invalid URL!"; + + return null; +} + +export function validateArray(arr) { + if (!Array.isArray(arr)) return "Invalid data type!" + + return null; +} + +export function validateType(value, type) { + if (!value || !type) return null; + + if (type === "email") return validateEmail(value); + if (type === "latitude") return validateLatitude(value); + if (type === "longitude") return validateLongitude(value); + if (type === "url") return validateUrl(value); + if (type === "array") return validateArray(value); + + if (typeof value !== type) return "Invalid data type!"; + + return null; +} + +export function validateTypes(value, types=[]) { + if (!value) return null; + if (!types.includes(value)) return "Invalid data type!"; + + return null; +} + +export function validateLength(value, length) { + const charLength = String(value).length; + + if (typeof length === "number" && charLength !== length) return `Invalid character size!`; + + if (typeof length === "object") { + if (length.min && charLength < length.min) return "Invalid character size! (min)"; + if (length.max && charLength < length.max) return "Invalid character size! (max)"; + } + + return null; +} + +export function validateMinMax(value, min, max) { + if (typeof value !== "number") return null; + if (min && !max && value < min) return `Should be greater than ${min}!`; + if (!min && max && value > max) return `Should be less than ${max}!`; + if (min && max && (value > max || value < min) ) return `Should be between ${min} and ${max}!`; + + return null; +} + +export function validateWithCustomMethod(value, values, validate) { + if (!validate || typeof validate !== "function") return null; + + if (!validate(value, values)) return "Invalid"; + + return null; +} diff --git a/src/validator.js b/src/validator.js new file mode 100644 index 0000000..ddad040 --- /dev/null +++ b/src/validator.js @@ -0,0 +1,71 @@ +var Utils = require('./utils'); + +// jsPrototype +Array.prototype.drop = function(deleteValue) { + for (var i = 0; i < this.length; i++) { + if (this[i] == deleteValue) { + this.splice(i, 1); + i--; + } + } + return this; +}; + +Object.prototype.isEmpty = function() { + const obj = this; + return Object.keys(obj).length === 0; +} + +// Validator + +class Validator { + constructor(schema) { + this.schema = schema; + this.errors = null; + } + + validate(values = {}) { + const schema = this.schema; + this.errors = {}; + + const fields = Object.keys(schema); + fields.forEach((field) => { + const errorMessages = []; + + const attr = schema[field]; + const value = Utils.sanitize(values[field]); + + if (value && attr.type && typeof attr.type === "string") errorMessages.push(Utils.validateType(value, attr.type)); + if (value && attr.type && typeof attr.type === "object" && Array.isArray(attr.type)) errorMessages.push(Utils.validateTypes(value, attr.type)); + if (value && attr.length) errorMessages.push(Utils.validateLength(value, attr.length)); + if (value && (attr.min || attr.max)) errorMessages.push(Utils.validateMinMax(value, attr.min, attr.max)); + if (value && attr.validate) errorMessages.push(Utils.validateWithCustomMethod(value, values, attr.validate)); + + if (attr.required && !value) errorMessages.push(`${attr.name} is required!`); + + errorMessages.drop(null); + if (errorMessages && errorMessages.length > 0) { + this.errors[field] = errorMessages; + } + + }); + + return this.errors; + } + + run(values, list = false) { + const errors = this.validate(values) + return list ? Object.values(errors) : errors; + } + + isValid(values) { + const errors = this.validate(values); + return errors.isEmpty(); + } + + getErrors() { + return this.errors; + } +} + +module.exports = Validator;