UNPKG

generate-passwords

Version:

Generate passwords with ease.

48 lines (36 loc) 1.77 kB
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 }