You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
82 lines
2.2 KiB
82 lines
2.2 KiB
"use strict"; |
|
const _ = require("lodash"); |
|
const validator = _.cloneDeep(require("validator")); |
|
const moment = require("moment"); |
|
const extensions = { |
|
extend(name, fn) { |
|
this[name] = fn; |
|
return this; |
|
}, |
|
notEmpty(str) { |
|
return !str.match(/^[\s\t\r\n]*$/); |
|
}, |
|
len(str, min, max) { |
|
return this.isLength(str, min, max); |
|
}, |
|
isUrl(str) { |
|
return this.isURL(str); |
|
}, |
|
isIPv6(str) { |
|
return this.isIP(str, 6); |
|
}, |
|
isIPv4(str) { |
|
return this.isIP(str, 4); |
|
}, |
|
notIn(str, values) { |
|
return !this.isIn(str, values); |
|
}, |
|
regex(str, pattern, modifiers) { |
|
str += ""; |
|
if (Object.prototype.toString.call(pattern).slice(8, -1) !== "RegExp") { |
|
pattern = new RegExp(pattern, modifiers); |
|
} |
|
return str.match(pattern); |
|
}, |
|
notRegex(str, pattern, modifiers) { |
|
return !this.regex(str, pattern, modifiers); |
|
}, |
|
isDecimal(str) { |
|
return str !== "" && !!str.match(/^(?:-?(?:[0-9]+))?(?:\.[0-9]*)?(?:[eE][+-]?(?:[0-9]+))?$/); |
|
}, |
|
min(str, val) { |
|
const number = parseFloat(str); |
|
return isNaN(number) || number >= val; |
|
}, |
|
max(str, val) { |
|
const number = parseFloat(str); |
|
return isNaN(number) || number <= val; |
|
}, |
|
not(str, pattern, modifiers) { |
|
return this.notRegex(str, pattern, modifiers); |
|
}, |
|
contains(str, elem) { |
|
return !!elem && str.includes(elem); |
|
}, |
|
notContains(str, elem) { |
|
return !this.contains(str, elem); |
|
}, |
|
is(str, pattern, modifiers) { |
|
return this.regex(str, pattern, modifiers); |
|
} |
|
}; |
|
exports.extensions = extensions; |
|
validator.isImmutable = function(value, validatorArgs, field, modelInstance) { |
|
return modelInstance.isNewRecord || modelInstance.dataValues[field] === modelInstance._previousDataValues[field]; |
|
}; |
|
validator.notNull = function(val) { |
|
return val !== null && val !== void 0; |
|
}; |
|
_.forEach(extensions, (extend, key) => { |
|
validator[key] = extend; |
|
}); |
|
validator.isNull = validator.isEmpty; |
|
validator.isDate = function(dateString) { |
|
const parsed = Date.parse(dateString); |
|
if (isNaN(parsed)) { |
|
return false; |
|
} |
|
const date = new Date(parsed); |
|
return moment(date.toISOString()).isValid(); |
|
}; |
|
exports.validator = validator; |
|
//# sourceMappingURL=validator-extras.js.map
|
|
|