passfather
Version:
Passfather is very fast and powerful utility with zero dependencies to generate strong password
37 lines (36 loc) • 14.9 kB
JavaScript
/*
@version 4.1.0
@description Passfather is very fast and powerful utility with zero dependencies to generate strong password
@copyright Copyright (c) 2019-present, Evgeny Vyushin <e@vyushin.ru> (https://github.com/vyushin)
@license
This source code is licensed under the MIT license found in the
LICENSE file on https://github.com/vyushin/passfather/blob/main/LICENSE
*/
!function(n,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e(require("crypto")):"function"==typeof define&&define.amd?define(["crypto"],e):(n="undefined"!=typeof globalThis?globalThis:n||self).passfather=e(n.crypto)}(this,(function(n){"use strict";function e(n){return n&&"object"==typeof n&&"default"in n?n:{default:n}}var r,t,o,s,i,u,a,c,f,l,p,h,g,d,m,y,v,b,w,O,E,S,A=e(n),D="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function R(n){return n&&n.__esModule&&Object.prototype.hasOwnProperty.call(n,"default")?n.default:n}function _(){if(s)return o;return s=1,o=
/*! Johannes Baagøe <baagoe@baagoe.com>, 2010 */
function(){var n=4022871197,e=function(e){e=e.toString();for(var r=0;r<e.length;r++){var t=.02519603282416938*(n+=e.charCodeAt(r));t-=n=t>>>0,n=(t*=n)>>>0,n+=4294967296*(t-=n)}return 2.3283064365386963e-10*(n>>>0)};return e.version="Mash 0.9",e}}
/*! From http://baagoe.com/en/RandomMusings/javascript/ */function T(){if(O)return w;O=1;const n=function(){if(u)return i;u=1;const n=_();return i=function(){return function(e){
/*! Johannes Baagøe <baagoe@baagoe.com>, 2010 */
var r=0,t=0,o=0,s=1;0==e.length&&(e=[+new Date]);var i=n();r=i(" "),t=i(" "),o=i(" ");for(var u=0;u<e.length;u++)(r-=i(e[u]))<0&&(r+=1),(t-=i(e[u]))<0&&(t+=1),(o-=i(e[u]))<0&&(o+=1);i=null;var a=function(){var n=2091639*r+2.3283064365386963e-10*s;return r=t,t=o,o=n-(s=0|n)};return a.uint32=function(){return 4294967296*a()},a.fract53=function(){return a()+11102230246251565e-32*(2097152*a()|0)},a.version="Alea 0.9",a.args=e,a}(Array.prototype.slice.call(arguments))},i}
/*! From http://baagoe.com/en/RandomMusings/javascript/ */(),e=function(){if(c)return a;c=1;const n=_();return a=function(){return function(e){
/*! George Marsaglia, 2007-06-23 */
/*! http://groups.google.com/group/comp.lang.fortran/msg/6edb8ad6ec5421a5 */
var r=123456789,t=362436069,o=21288629,s=14921776,i=0;0==e.length&&(e=[+new Date]);for(var u=n(),a=0;a<e.length;a++)r^=4294967296*u(e[a]),t^=4294967296*u(e[a]),o^=4294967296*u(e[a]),s^=4294967296*u(e[a]);0===t&&(t=1),i^=o>>>31,(o&=2147483647)%7559==0&&o++,(s&=2147483647)%7559==0&&s++,u=null;var c=function(){var n;return r+=545925293,t^=t<<13,t^=t>>>17,n=o+s+i,o=s,i=n>>>31,(r>>>=0)+(t^=t<<5)+(s=2147483647&n)>>>0},f=function(){return 2.3283064365386963e-10*c()};return f.uint32=c,f.fract53=function(){return f()+11102230246251565e-32*(2097151&c())},f.args=e,f.version="KISS07 0.9",f}(Array.prototype.slice.call(arguments))},a}
/*! From http://baagoe.com/en/RandomMusings/javascript/ */(),r=function(){if(l)return f;l=1;const n=_();return f=function(){return function(e){for(
/*! Johannes Baagøe <baagoe@baagoe.com>, 2010 */
var r=0,t=0,o=0,s=1,i=[],u=0,a=n(),c=(r=a(" "),t=a(" "),o=a(" "),0);c<8;c++)i[c]=a(" ");0==e.length&&(e=[+new Date]);for(var f=0;f<e.length;f++)for((r-=a(e[f]))<0&&(r+=1),(t-=a(e[f]))<0&&(t+=1),(o-=a(e[f]))<0&&(o+=1),c=0;c<8;c++)i[c]-=a(e[f]),i[c]<0&&(i[c]+=1);var l=function(){u=8*i[u]|0;var n=i[u],e=2091639*r+2.3283064365386963e-10*s;return r=t,t=o,o=e-(s=0|e),i[u]-=o,i[u]<0&&(i[u]+=1),n};return l.uint32=function(){return 4294967296*l()},l.fract53=function(){return l()+11102230246251565e-32*(2097152*l()|0)},l.addNoise=function(){for(var n=arguments.length-1;n>=0;n--)for(c=0;c<8;c++)i[c]-=a(arguments[n]),i[c]<0&&(i[c]+=1)},l.version="Kybos 0.9",l.args=e,l}(Array.prototype.slice.call(arguments))},f}
/*! From http://baagoe.com/en/RandomMusings/javascript/ */(),t=function(){if(h)return p;h=1;const n=_();return p=function(){return function(e){
/*! Johannes Baagøe <baagoe@baagoe.com>, 2010 */
var r=255,t=52,o=0,s=[],i=n();0===e.length&&(e=[+new Date]);for(var u=0;u<256;u++)s[u]=i(" "),s[u]-=4.76837158203125e-7*i(" "),s[u]<0&&(s[u]+=1);for(var a=0;a<e.length;a++)for(u=0;u<256;u++)s[u]-=i(e[a]),s[u]-=4.76837158203125e-7*i(e[a]),s[u]<0&&(s[u]+=1);i=null;var c=function(){t=t+1&255,o=o+1&255;var n=s[r=r+1&255]-s[t];return n<0&&(n+=1),(n-=s[o])<0&&(n+=1),s[r]=n};return c.uint32=function(){return 4294967296*c()>>>0},c.fract53=c,c.version="LFib 0.9",c.args=e,c}(Array.prototype.slice.call(arguments))},p}
/*! From http://baagoe.com/en/RandomMusings/javascript/ */(),o=function(){if(d)return g;d=1;const n=_();return g=function(){return function(e){
/*! George Marsaglia's LFIB4, */
/*! http://groups.google.com/group/sci.crypt/msg/eb4ddde782b17051 */
var r=0,t=58,o=119,s=178,i=[],u=n();0===e.length&&(e=[+new Date]);for(var a=0;a<256;a++)i[a]=u(" "),i[a]-=4.76837158203125e-7*u(" "),i[a]<0&&(i[a]+=1);for(var c=0;c<e.length;c++)for(a=0;a<256;a++)i[a]-=u(e[c]),i[a]-=4.76837158203125e-7*u(e[c]),i[a]<0&&(i[a]+=1);u=null;var f=function(){var n;return t=t+1&255,o=o+1&255,s=s+1&255,(n=i[r=r+1&255]-i[t])<0&&(n+=1),(n-=i[o])<0&&(n+=1),(n-=i[s])<0&&(n+=1),i[r]=n};return f.uint32=function(){return 4294967296*f()>>>0},f.fract53=f,f.version="LFIB4 0.9",f.args=e,f}(Array.prototype.slice.call(arguments))},g}
/*! From http://baagoe.com/en/RandomMusings/javascript/ */(),s=function(){if(y)return m;y=1;const n=_();return m=function(){return function(e){
/*! Copyright (c) 1998, 2002 Pierre L'Ecuyer, DIRO, Université de Montréal. */
/*! http://www.iro.umontreal.ca/~lecuyer/ */
var r=4294967087,t=4294944443,o=12345,s=12345,i=123,u=12345,a=12345,c=123;0===e.length&&(e=[+new Date]);for(var f=n(),l=0;l<e.length;l++)o+=4294967296*f(e[l]),s+=4294967296*f(e[l]),i+=4294967296*f(e[l]),u+=4294967296*f(e[l]),a+=4294967296*f(e[l]),c+=4294967296*f(e[l]);o%=r,s%=r,i%=r,u%=t,a%=t,c%=t,f=null;var p=function(){var n,e,r=4294967087,t=4294944443;return n=1403580*s-810728*o,(n-=(n/r|0)*r)<0&&(n+=r),o=s,s=i,i=n,e=527612*c-1370589*u,(e-=(e/t|0)*t)<0&&(e+=t),u=a,a=c,c=e,n<=e?n-e+r:n-e},h=function(){return 2.3283064365386963e-10*p()};return h.uint32=p,h.fract53=function(){return h()+11102230246251565e-32*(2097151&p())},h.version="MRG32k3a 0.9",h.args=e,h}(Array.prototype.slice.call(arguments))},m}
/*! From http://baagoe.com/en/RandomMusings/javascript/ */(),E=function(){if(b)return v;b=1;const n=_();return v=function(){return function(e){
/*! George Marsaglia, 13 May 2003 */
/*! http://groups.google.com/group/comp.lang.c/msg/e3c4ea1169e463ae */
var r=123456789,t=362436069,o=521288629,s=88675123,i=886756453;0==e.length&&(e=[+new Date]);for(var u=n(),a=0;a<e.length;a++)r^=4294967296*u(e[a]),t^=4294967296*u(e[a]),o^=4294967296*u(e[a]),i^=4294967296*u(e[a]),s^=4294967296*u(e[a]);u=null;var c=function(){var n=(r^r>>>7)>>>0;return r=t,t=o,o=s,s=i,(t+t+1)*(i=i^i<<6^(n^n<<13)>>>0)>>>0},f=function(){return 2.3283064365386963e-10*c()};return f.uint32=c,f.fract53=function(){return f()+11102230246251565e-32*(2097151&c())},f.version="Xorshift03 0.9",f.args=e,f}(Array.prototype.slice.call(arguments))},v}();return w={Alea:n,KISS07:e,Kybos:r,LFib:t,LFIB4:o,MRG32k3a:s,Xorshift03:E}}function I(){if(S)return E;S=1;const n=T(),e=new Set(Object.keys(n));function r(){return"undefined"!=typeof window&&void 0!==window.document}function t(t,o){const s=e.has(t);if(t&&"default"!==t&&!s&&console.warn(`PRNG ${t} is not supported`),t&&"default"!==t&&e.has(t)){return(o?new n[t](o):new n[t]).uint32()}const i=function(){if(r()&&void 0!==window.crypto)return window.crypto;if(globalThis.passfather?.externals?.crypto)return globalThis.passfather.externals.crypto;throw new Error("Crypto API is not available in this environment")}();return r()?i.getRandomValues(new Uint32Array(1))[0]:parseInt(i.randomBytes(4).toString("hex"),16)}function o(n,e,r){const s=t(e,r),i=n[1]-n[0]+1;return s>=Math.floor(4294967295/i)*i?o(n):n[0]+s%i}function s(n,e){return Array(n).fill().map(e)}function i(n,e,r){return t=s(e-n,((e,r)=>n+r)),r?t.push(e)&&t:t;var t}return E={isBrowser:r,getRandomUint32:t,random:o,randomItem:function(n,e,r){return n[o([0,n.length-1],e,r)]},without:function(n,e){return n.filter((n=>!1===e.includes(n)))},includes:function(n,e){return n.some((n=>e.includes(n)))},includesAll:function(n,e){return!1===e.some((e=>!1===n.includes(e)))},excludes:function(n,e){return!1===n.some((n=>e.includes(n)))},lastIndex:function(n){return n.length-1},compact:function(n){return n.filter(Boolean)},keys:function(n){return Object.keys(n)},isInteger:function(n){return Number.isInteger(n)},isNumber:function(n){return"number"==typeof n&&!1===isNaN(n)},isString:function(n){return"string"==typeof n},isBoolean:function(n){return!0===n||!1===n},isArray:function(n){return n instanceof Array},isPlainObject:function(n){try{return!0===/^\{.*\}$/.test(JSON.stringify(n))&&n instanceof Map==!1}catch(n){return!1}},assign:function(){return Object.assign.apply(Object,arguments)},timesMap:s,numSequence:i,shuffle:function(n,e,r){return n.length<=1||s(n.length,((t,s)=>{const i=o([0,n.length-1],e,r);[n[s],n[i]]=[n[i],n[s]]})),n},getCharsByDiapason:function(n){return String.fromCodePoint.apply(String,i(n[0],n[1],!0))},isCharCode:function(n){return String.fromCharCode(n)!==String.fromCharCode(!1)},escapeRegExp:function(n){return n.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}},E}var P,j,$,C,N,M,L,U,x={name:"passfather",version:"4.1.0",description:"Passfather is very fast and powerful utility with zero dependencies to generate strong password",author:"Evgeny Vyushin <e@vyushin.ru> (https://github.com/vyushin)",contributors:["Evgeny Vyushin <e@vyushin.ru> (https://github.com/vyushin)"],maintainers:["Evgeny Vyushin <e@vyushin.ru> (https://github.com/vyushin)"],repository:{type:"git",url:"https://github.com/vyushin/passfather"},scripts:{"install-all":"cd ./build && npm install && cd ../test && npm install",build:"cd ./build && npm run build",pretest:"npm run build",test:"cd ./test && npm test",prepublish:"npm test && npm pack --dry-run"},bugs:{url:"https://github.com/vyushin/passfather/issues"},homepage:"https://github.com/vyushin/passfather",main:"./dist/umd/passfather.min.js",types:"./dist/passfather.d.ts",module:"./dist/esm/passfather.min.mjs",exports:{".":{import:"./dist/esm/passfather.min.mjs",require:"./dist/umd/passfather.min.js",types:"./dist/passfather.d.ts"}},license:"MIT",keywords:["password","generator","passgen"],directories:{doc:"./README.md"},files:["dist","README.md","LICENSE"],devDependencies:{},funding:[{type:"buy_me_a_coffee",url:"https://buymeacoffee.com/vyushin"},{type:"Patreon",url:"https://www.patreon.com/vyushin"}]};function B(){if(j)return P;j=1;const{keys:n,isInteger:e,includesAll:r,isBoolean:t,isArray:o,isPlainObject:s,assign:i,without:u,isCharCode:a,isString:c,isNumber:f}=I(),l=T(),{name:p}=x,h=p,g={numbers:!0,uppercase:!0,lowercase:!0,symbols:!0,length:12,ranges:null,prng:"default",seed:null},d={numbers:n=>t(n),uppercase:n=>t(n),lowercase:n=>t(n),symbols:n=>t(n),length:n=>e(n)&&n>0,ranges:n=>o(n)&&n.length>0&&n.every((n=>{return o(e=n)&&e.length>0&&e.every((n=>o(n)&&a(n[0])&&a(n[1])));var e})),prng:e=>["default"].concat(n(l)).includes(e),seed:n=>o(n)&&n.length>0&&!1===n.some((n=>!c(n)&&!f(n))),completely(e){return[()=>!1===(void 0===e||s(e)&&0===n(e).length),()=>s(e),()=>r(n(g),n(e)),()=>!1===e.hasOwnProperty("ranges")||this.ranges(e.ranges),()=>!1===e.hasOwnProperty("numbers")||this.numbers(e.numbers),()=>!1===e.hasOwnProperty("uppercase")||this.uppercase(e.uppercase),()=>!1===e.hasOwnProperty("lowercase")||this.lowercase(e.lowercase),()=>!1===e.hasOwnProperty("symbols")||this.symbols(e.symbols),()=>!1===e.hasOwnProperty("length")||this.length(e.length),()=>!1===e.hasOwnProperty("prng")||this.prng(e.prng),()=>!1===e.hasOwnProperty("seed")||this.seed(e.seed),()=>{const r=i({},g,e);return u(n(r),["length"]).some((n=>"ranges"===n?o(r[n]):!0===r[n]))},()=>{const n=i({},g,e);return!1===(e.hasOwnProperty("seed")&&"default"===n.prng)}].findIndex((n=>!1===n()))}},m=[];return m[0]="No errors",m[1]=`[${h}]: Option must be an object`,m[2]=`[${h}]: Options must contains only one (or several) of [${n(g).join(", ")}]`,m[3]=`[${h}]: Option "ranges" must be array with array of UTF-8 char code range. For example: [ [[48, 57 ]], [[33, 46], [58, 64], [94, 96], [123, 126]] ] `,m[4]=`[${h}]: Option "numbers" must be boolean`,m[5]=`[${h}]: Option "uppercase" must be boolean`,m[6]=`[${h}]: Option "lowercase" must be boolean`,m[7]=`[${h}]: Option "symbols" must be boolean`,m[8]=`[${h}]: Option "length" must be integer greater than 0`,m[9]=`[${h}]: Option "prng" must be one of [${["default"].concat(n(l)).join(", ")}]`,m[10]=`[${h}]: Option "seed" must be array of strings or numbers`,m[11]=`[${h}]: At less one of options [${u(n(g),["length","prng","seed"]).join(", ")}] mustn't be false`,m[12]=`[${h}]: Option "seed" cannot be used when "prng" option is default. Set "prng" option to one of [${n(l).join(", ")}]`,P={OPTION_VALIDATORS:d,ERROR_MESSAGES:m,MODULE_NAME:h,DEFAULT_OPTIONS:g}}function F(){if(M)return N;M=1;const{compact:n,assign:e,timesMap:r,isBrowser:t,...o}=I(),{OPTION_VALIDATORS:s,ERROR_MESSAGES:i,DEFAULT_OPTIONS:u}=B(),{DEFAULT_BROWSER_SEED:a,DEFAULT_NODE_SEED:c}=function(){if(C)return $;C=1;const{compact:n,isBrowser:e}=I(),r=e()?null:n([].concat(Date.now(),process.memoryUsage?[process.memoryUsage().heapTotal,process.memoryUsage().heapUsed]:null,process.env?[process.arch,process.platform]:null)),t=e()?n([].concat(Date.now(),performance&&performance.memory?[performance.memory.totalJSHeapSize,performance.memory.usedJSHeapSize]:null,navigator?[navigator.userAgent,navigator.appVersion,navigator.hardwareConcurrency,navigator.deviceMemory]:null)):null;return $={DEFAULT_NODE_SEED:r,DEFAULT_BROWSER_SEED:t}}(),f=o.random,l=o.randomItem,p=o.shuffle,h=[[[48,57]],[[65,90]],[[97,122]],[[33,46],[58,64],[94,96],[123,126]]];function g({seed:n}){const e=Boolean(n);return t()?e?n:a:e?n:c}function d(t){const o=s.completely(t);if(o>0)throw i[o];const a=e({},u,t,d.prototype._dev.options),c=n=>{const e=p(g(a));return p(n,a.prng,e)},m=n=>{const e=p(g(a));return f(n,a.prng,p(e))},y=n=>{const e=p(g(a));return l(n,a.prng,p(e))},v=function(e){return n([].concat(e.numbers&&[h[0]],e.uppercase&&[h[1]],e.lowercase&&[h[2]],e.symbols&&[h[3]],e.ranges&&e.ranges))}(a),b=r(v.length,((n,e)=>String.fromCharCode(m(y(v[e])))));return b.length>=a.length?c(b).slice(0,a.length).join(""):c(r(a.length-b.length,(()=>String.fromCharCode(m(y(y(v)))))).concat(b)).join("")}return d.prototype._dev={options:{}},N={passfather:d,DEFAULT_OPTIONS:u,CHAR_RANGES:h,ERROR_MESSAGES:i}}return R(function(){if(U)return L;U=1;const{initExternals:n}=t?r:(t=1,r={initExternals:function(){const n=A.default;D.passfather=D.passfather||{},D.passfather.externals={crypto:n}}}),{passfather:e}=F();return n(),L=e}())}));