util-helpers
Version:
103 lines (100 loc) • 3.21 kB
JavaScript
import devWarn from './utils/devWarn.js';
var regNumber = /\d/;
var regLowerCaseLetter = /[a-z]/;
var regUpperCaseLetter = /[A-Z]/;
var regAllNumberAndLetter = /[\d|a-z]/gi;
function hasHex(val) {
return val.indexOf('\\x') > -1 || val.indexOf('\\u') > -1;
}
function hasSpecialCharacter(val, chars) {
if (!chars || !val) {
return false;
}
var specialChars = val.replace(regAllNumberAndLetter, '');
if (!specialChars) {
return false;
}
var regChars = hasHex(chars) ? new RegExp("[".concat(chars, "]")) : null;
if (regChars) {
return regChars.test(specialChars);
}
var ret = false;
specialChars.split('').some(function (charItem) {
if (chars.indexOf(charItem) > -1) {
ret = true;
}
return ret;
});
return ret;
}
function hasUnallowableCharacter(val, chars) {
if (!val) {
return false;
}
var specialChars = val.replace(regAllNumberAndLetter, '');
if (!specialChars) {
return false;
}
else if (!chars) {
return true;
}
var regChars = hasHex(chars) ? new RegExp("[^".concat(chars, "]")) : null;
if (regChars) {
return regChars.test(specialChars);
}
var ret = false;
specialChars.split('').some(function (charItem) {
if (chars.indexOf(charItem) === -1) {
ret = true;
}
return ret;
});
return ret;
}
function validatePassword(value, options) {
if (options === void 0) { options = {}; }
var _a = options.level, level = _a === void 0 ? 2 : _a, _b = options.ignoreCase, ignoreCase = _b === void 0 ? false : _b, _c = options.special, special = _c === void 0 ? '\\x21-\\x2F\\x3A-\\x40\\x5B-\\x60\\x7B-\\x7E' : _c;
var valStr = value;
if (typeof value !== 'string') {
devWarn("[validatePassword] value must be a string.");
valStr = '';
}
var currentLevel = 0;
var containesNumber = regNumber.test(valStr);
var containesLowerCaseLetter = regLowerCaseLetter.test(valStr);
var containesUpperCaseLetter = regUpperCaseLetter.test(valStr);
var containesSpecialCharacter = hasSpecialCharacter(valStr, special);
var containesUnallowableCharacter = hasUnallowableCharacter(valStr, special);
if (containesNumber) {
currentLevel += 1;
}
if (ignoreCase) {
if (containesLowerCaseLetter || containesUpperCaseLetter) {
currentLevel += 1;
}
}
else {
if (containesLowerCaseLetter) {
currentLevel += 1;
}
if (containesUpperCaseLetter) {
currentLevel += 1;
}
}
if (containesSpecialCharacter) {
currentLevel += 1;
}
var validated = currentLevel >= level && !containesUnallowableCharacter;
return {
validated: validated,
level: currentLevel,
containes: {
number: containesNumber,
lowerCaseLetter: containesLowerCaseLetter,
upperCaseLetter: containesUpperCaseLetter,
specialCharacter: containesSpecialCharacter,
unallowableCharacter: containesUnallowableCharacter
}
};
}
export { validatePassword as default };