let crypto=require("crypto"),urlAlphabet=require("../url-alphabet")["urlAlphabet"],random=e=>new Promise((t,l)=>{crypto.randomFill(Buffer.allocUnsafe(e),(e,r)=>{e?l(e):t(r)})}),customAlphabet=(l,n)=>{let a=(2<<31-Math.clz32(l.length-1|1))-1,o=Math.ceil(1.6*a*n/l.length),u=t=>random(o).then(e=>{let r=o;for(;r--;)if((t+=l[e[r]&a]||"").length===n)return t;return u(t)});return()=>u("")},nanoid=(t=21)=>random(t).then(e=>{let r="";for(;t--;)r+=urlAlphabet[63&e[t]];return r});module.exports={nanoid:nanoid,customAlphabet:customAlphabet,random:random};