UNPKG

@modern-kit/utils

Version:
72 lines (68 loc) 2.93 kB
'use strict'; var regexContainsConsecutiveCharacters = require('../../regex/containsConsecutiveCharacters/index.cjs'); var regexContainsHangul = require('../../regex/containsHangul/index.cjs'); var regexContainsLowerCase = require('../../regex/containsLowerCase/index.cjs'); var regexContainsNumber = require('../../regex/containsNumber/index.cjs'); var regexContainsSpecialCharacters = require('../../regex/containsSpecialCharacters/index.cjs'); var regexContainsUpperCase = require('../../regex/containsUpperCase/index.cjs'); var regexContainsWhiteSpace = require('../../regex/containsWhiteSpace/index.cjs'); var arrayContains = require('../../array/contains/index.cjs'); require('../../regex/containsHangulSyllables/index.cjs'); require('../../regex/containsHangulConsonantsAndVowel/index.cjs'); const checkInValidLengthOptions = (minLength, maxLength) => { if (minLength < 1 || maxLength < 1 || minLength > maxLength) { return true; } return !Number.isInteger(minLength) || !Number.isInteger(maxLength); }; const checkLength = (password, minLength, maxLength) => { return password.length >= minLength && password.length <= maxLength; }; function isValidPassword(password, options = {}) { const { containsOptions = {}, minLength = 8, maxLength = 24, maxRepeatChars = maxLength + 1, forbiddenPasswords = [] } = options; const { lowerCase = false, number = false, specialCharacters = false, upperCase = false } = containsOptions; if (checkInValidLengthOptions(minLength, maxLength)) { throw new Error("Invalid length option value"); } if (arrayContains.contains(forbiddenPasswords, password)) { return { isValid: false, errorReason: "forbidden" }; } if (regexContainsWhiteSpace.containsWhiteSpace(password)) { return { isValid: false, errorReason: "whiteSpace" }; } if (regexContainsConsecutiveCharacters.containsConsecutiveCharacters(password, maxRepeatChars)) { return { isValid: false, errorReason: "consecutiveCharacters" }; } if (regexContainsHangul.containsHangul(password)) { return { isValid: false, errorReason: "hangul" }; } if (!checkLength(password, minLength, maxLength)) { return { isValid: false, errorReason: "length" }; } if (lowerCase && !regexContainsLowerCase.containsLowerCase(password)) { return { isValid: false, errorReason: "lowerCase" }; } if (number && !regexContainsNumber.containsNumber(password)) { return { isValid: false, errorReason: "number" }; } if (specialCharacters && !regexContainsSpecialCharacters.containsSpecialCharacters(password)) { return { isValid: false, errorReason: "specialCharacters" }; } if (upperCase && !regexContainsUpperCase.containsUpperCase(password)) { return { isValid: false, errorReason: "upperCase" }; } return { isValid: true, errorReason: null }; } exports.isValidPassword = isValidPassword; //# sourceMappingURL=index.cjs.map