random-browser
Version:
The random module is used for generating cryptographically strong random numbers suitable for managing data such as passwords, account authentication, security tokens, and related secrets.
1 lines • 1.71 kB
JavaScript
const e=0xffffffffffff,r=new Array(256).fill().map(((e,r)=>r.toString(16).padStart(2,"0")));let t=0;const n=(e,r)=>(e-e%r)/r,o=e=>e[f(e.length)];function a(e){if(!Number.isInteger(e))throw new TypeError('"k" must be an integer.');if(0>e)throw new RangeError('"k" must be non-negative.');if(e>48)throw new RangeError('"k" must be less than or equal to 48');const r=n(e+7,8);return n(i(r).reduce(((e,r)=>256*e+r),0),2**(8*r-e))}function i(e){if(Number.isInteger(e))return window.crypto.getRandomValues(new Uint8Array(e));throw new TypeError("The argument must be an integer.")}function f(r,t){if(void 0===t&&(t=r,r=0),!Number.isSafeInteger(r))throw new TypeError('"min" is not a safe integer.');if(!Number.isSafeInteger(t))throw new TypeError('"max" is not a safe integer.');if(r>=t)throw new RangeError('"max" must be greater than "min".');const n=t-r-1;if(n>=e)throw new RangeError('"max - min" must be less than or equal to '+e);if(0===n)return r;let o;do{o=a(n.toString(2).length)}while(o>n);return o+r}function s(e){if(!Array.isArray(e))throw new TypeError("The argument must be an array.");if(e.length>1)for(let r=e.length-1;r>0;r--){const t=f(r+1);[e[r],e[t]]=[e[t],e[r]]}}const g=(e=32)=>Array.from(i(e),(e=>r[e])).join(""),u=(e=32)=>window.btoa(String.fromCharCode(...i(e))).replace(/=+$/,"").replace(/\+/g,"-").replace(/\//g,"_");function w(){let e=Date.now();e>t||(e=t+1),t=e;const n=e.toString(16).padStart(12,"0").slice(-12),o=i(10);o[0]=15&o[0]|112,o[2]=63&o[2]|128;let a=n.slice(0,8)+"-"+n.slice(8)+"-";for(let e=0;10>e;e++)a+=r[o[e]],1!==e&&3!==e||(a+="-");return a}export{o as choice,a as randomBits,i as randomBytes,f as randomInt,s as shuffle,g as tokenHex,u as tokenUrlsafe,w as uuidv7};