UNPKG

generate-password-lite

Version:

Password Generator for using in javascript/typescript based projects.

2 lines (1 loc) 2.26 kB
"use strict";const e=e=>Math.floor(Math.random()*e),n=n=>{let r="",s="",{length:o,lowercase:l,uppercase:m,numbers:h,symbols:a,minLengthLowercase:i,minLengthUppercase:c,minLengthNumbers:g,minLengthSymbols:L,exclude:p}=n,u="abcdefghijklmnopqrstuvwxyz";u=t(u,p);let b="ABCDEFGHIJKLMNOPQRSTUVWXYZ";b=t(b,p);let d="0123456789";d=t(d,p);let w="!#$%&'()*+,-./:;<=>?@[]^_{|}~";w=t(w,p);let y=u.length;for(let n=0;n<i;n++)s+=u.charAt(e(y));y=b.length;for(let n=0;n<c;n++)s+=b.charAt(e(y));y=d.length;for(let n=0;n<g;n++)s+=d.charAt(e(y));y=w.length;for(let n=0;n<L;n++)s+=w.charAt(e(y));r+=(e=>{let n=e.split("");for(let e=n.length-1;e>0;e--){let t=Math.floor(Math.random()*(e+1)),r=n[e];n[e]=n[t],n[t]=r}return n.join("")})(s);let f="";f=l?f+u:f,f=m?f+b:f,f=h?f+d:f,f=a?f+w:f;let v=o-r.length;y=f.length;for(let n=0;n<v;n++)r+=f.charAt(e(y));return r},t=(e,n)=>(n?.split("").forEach((n=>{e=e.replace(n,"")})),e),r=e=>{const{length:n,lowercase:t,uppercase:r,numbers:s,symbols:o,minLengthLowercase:l,minLengthUppercase:m,minLengthNumbers:h,minLengthSymbols:a}=e;if(l+m+h+a>n)throw new Error("Sum of Minimum Characters in the passwords greater than the length of the Password to be generated.");if(0==t&&0==r&&0==s&&0==o)throw new Error("Alphabets, Numbers and Symbols are all set to False. No valid Characters to generate the Password.")},s=e=>(e.length=void 0===e.length?10:e.length,e.lowercase=void 0===e.lowercase||e.lowercase,e.uppercase=void 0===e.uppercase||e.uppercase,e.numbers=void 0===e.numbers||e.numbers,e.symbols=void 0!==e.symbols&&e.symbols,e.lowercase?e.minLengthLowercase=void 0===e.minLengthLowercase?1:e.minLengthLowercase:e.minLengthLowercase=0,e.uppercase?e.minLengthUppercase=void 0===e.minLengthUppercase?1:e.minLengthUppercase:e.minLengthUppercase=0,e.numbers?e.minLengthNumbers=void 0===e.minLengthNumbers?1:e.minLengthNumbers:e.minLengthNumbers=0,e.symbols?e.minLengthSymbols=void 0===e.minLengthSymbols?1:e.minLengthSymbols:e.minLengthSymbols=0,e.exclude=void 0===e.exclude?"":e.exclude,e);exports.GeneratePassword=function(e){let t;return e?(e=s(e),r(e),t=n(e),t):(e=s({length:10,lowercase:!0,uppercase:!0,numbers:!0,symbols:!1,exclude:"",minLengthLowercase:1,minLengthUppercase:1,minLengthNumbers:1,minLengthSymbols:0}),r(e),t=n(e),t)};