UNPKG

@modern-kit/utils

Version:
70 lines (67 loc) 2.68 kB
import { containsConsecutiveCharacters } from '../../regex/containsConsecutiveCharacters/index.mjs'; import { containsHangul } from '../../regex/containsHangul/index.mjs'; import { containsLowerCase } from '../../regex/containsLowerCase/index.mjs'; import { containsNumber } from '../../regex/containsNumber/index.mjs'; import { containsSpecialCharacters } from '../../regex/containsSpecialCharacters/index.mjs'; import { containsUpperCase } from '../../regex/containsUpperCase/index.mjs'; import { containsWhiteSpace } from '../../regex/containsWhiteSpace/index.mjs'; import { contains } from '../../array/contains/index.mjs'; import '../../regex/containsHangulSyllables/index.mjs'; import '../../regex/containsHangulConsonantsAndVowel/index.mjs'; 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 (contains(forbiddenPasswords, password)) { return { isValid: false, errorReason: "forbidden" }; } if (containsWhiteSpace(password)) { return { isValid: false, errorReason: "whiteSpace" }; } if (containsConsecutiveCharacters(password, maxRepeatChars)) { return { isValid: false, errorReason: "consecutiveCharacters" }; } if (containsHangul(password)) { return { isValid: false, errorReason: "hangul" }; } if (!checkLength(password, minLength, maxLength)) { return { isValid: false, errorReason: "length" }; } if (lowerCase && !containsLowerCase(password)) { return { isValid: false, errorReason: "lowerCase" }; } if (number && !containsNumber(password)) { return { isValid: false, errorReason: "number" }; } if (specialCharacters && !containsSpecialCharacters(password)) { return { isValid: false, errorReason: "specialCharacters" }; } if (upperCase && !containsUpperCase(password)) { return { isValid: false, errorReason: "upperCase" }; } return { isValid: true, errorReason: null }; } export { isValidPassword }; //# sourceMappingURL=index.mjs.map