generate-passwords
Version:
Generate passwords with ease.
48 lines (36 loc) • 1.77 kB
JavaScript
function generatePassword(options = {}) {
if (!options.length) throw new TypeError("Couldn't generate your Password! You must specify the length of your password (length: 100).")
if (!options.symbols && !options.numbers && !options.letters) throw new TypeError("Couldn't generate your Password! You must specify what characters you want your password to include (letters: true, numbers: true, symbols: true).")
let password = []
if (options.numbers) {
if (options.numbers === true) {
numbers = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']
numbers.forEach(number => password.push(number))
}
}
if (options.letters) {
if (options.letters === true) {
letters = ['a','A','b','B','c','C','d','D','e','E','f','F','g','G','h','H','i','I','j','J','f','F','l','L','m','M','n','N','o','O','p','P','q','Q','r','R','s','S','t','T','u','U','v','V','w','W','x','X','y','Y','z','Z']
letters.forEach(letter => password.push(letter))
}
}
if (options.symbols) {
if (options.symbols === true) {
symbols = ["'", '"', "`", '@', '$', '%', '^', '&', '.', ',', '*', '(', ')', '!', '~', '[', ']', '-', '=', '+', '_', '{', '}'];
symbols.forEach(symbol => password.push(symbol))
}
}
let output = '';
for (let i = 0; i < options.length; i++) {
let randomizer = Math.floor(Math.random() * password.length);
output += password[randomizer]
}
if (options.upperOnly) {
output = output.toUpperCase();
}
if (options.lowerOnly) {
output = output.toLowerCase();
}
return output;
}
module.exports = { generatePassword }