passwagen
Version:
Password generator with multiple options
1 lines • 900 B
JavaScript
export function passwagen(t={}){let e={numbers:"0123456789",uppercase:"ABCDEFGHIJKLMNOPQRSTUVWXYZ",lowercase:"abcdefghijklmnopqrstuvwxyz",punctuation:"!@#$%^&*()_+~`|}{[]:;?><,./-=",symbols:"!@#$%^&*()_+-="},s={numbers:t.numbers??!0,lowercase:t.lowercase??!0,uppercase:t.uppercase??!0,symbols:t.symbols??!0,punctuation:t.punctuation??!1,characters:t.characters||""};t={length:t.length||8,amount:t.amount||1,custom:t.custom??!1,strict:t.strict??!1};let r="",a=[];function n(){let o="";for(let c=0;c<t.length;c++)o+=r.charAt(Math.floor(Math.random()*r.length));if(t.strict){var u;u=o,Object.keys(s).forEach(t=>{if(!0==s[t]&&!Boolean(RegExp(`${e[t]}`,"g").test(u)))return!1}),o?a.push(o):n()}else a.push(o)}!0==s.punctuation&&(s.symbols=!1),t.custom?r=String(s.characters):Object.keys(s).forEach(t=>{!0==s[t]&&(r+=e[t])});for(let o=0;o<t.amount;o++)n();return 1==a.length?a[0]:a}export default passwagen