@imtbl/auth 2.12.3-alpha.0 → 2.12.3-alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -2,7 +2,7 @@ import { UserManager, User, ErrorTimeout, ErrorResponse, InMemoryWebStorage, Web
2
2
  import cn from 'localforage';
3
3
  import { track, identify, getDetail, Detail, trackFlow, trackError } from '@imtbl/metrics';
4
4
 
5
- function Ae(c){throw new Error("Node.js process "+c+" is not supported by JSPM core outside of Node.js")}var K=[],te=!1,j,he=-1;function Pt(){!te||!j||(te=!1,j.length?K=j.concat(K):he=-1,K.length&&Ke());}function Ke(){if(!te){var c=setTimeout(Pt,0);te=!0;for(var n=K.length;n;){for(j=K,K=[];++he<n;)j&&j[he].run();he=-1,n=K.length;}j=null,te=!1,clearTimeout(c);}}function Ut(c){var n=new Array(arguments.length-1);if(arguments.length>1)for(var a=1;a<arguments.length;a++)n[a-1]=arguments[a];K.push(new We(c,n)),K.length===1&&!te&&setTimeout(Ke,0);}function We(c,n){this.fun=c,this.array=n;}We.prototype.run=function(){this.fun.apply(null,this.array);};var Bt="browser",kt="x64",bt="browser",xt={PATH:"/usr/bin",LANG:navigator.language+".UTF-8",PWD:"/",HOME:"/home",TMP:"/tmp"},St=["/usr/bin/node"],Mt=[],Nt="v16.8.0",Dt={},Ft=function(c,n){console.warn((n?n+": ":"")+c);},Ht=function(c){Ae("binding");},Vt=function(c){return 0},Gt=function(){return "/"},$t=function(c){},Kt={name:"node",sourceUrl:"",headersUrl:"",libUrl:""};function b(){}var Wt=b,Zt=[];function Yt(c){Ae("_linkedBinding");}var zt={},Jt=!1,jt={};function qt(c){Ae("dlopen");}function Xt(){return []}function Qt(){return []}var er=b,tr=b,Oe=function(){return {}},rr=Oe,nr=Oe,ir=b,or=b,sr=b,ar={};function lr(c,n){if(!c)throw new Error(n||"assertion error")}var ur={inspector:!1,debug:!1,uv:!1,ipv6:!1,tls_alpn:!1,tls_sni:!1,tls_ocsp:!1,tls:!1,cached_builtins:!0},cr=b,pr=b;function dr(){return !1}var hr=b,fr=b,mr=b,gr=b,Er=b,yr=void 0,wr=void 0,_r=void 0,Cr=b,Ir=2,Rr=1,Tr="/bin/usr/node",vr=9229,Ar="node",Or=[],Lr=b,Z={now:typeof performance<"u"?performance.now.bind(performance):void 0,timing:typeof performance<"u"?performance.timing:void 0};Z.now===void 0&&(Re=Date.now(),Z.timing&&Z.timing.navigationStart&&(Re=Z.timing.navigationStart),Z.now=()=>Date.now()-Re);var Re;function Pr(){return Z.now()/1e3}var Te=1e9;function ve(c){var n=Math.floor((Date.now()-Z.now())*.001),a=Z.now()*.001,u=Math.floor(a)+n,d=Math.floor(a%1*1e9);return c&&(u=u-c[0],d=d-c[1],d<0&&(u--,d+=Te)),[u,d]}ve.bigint=function(c){var n=ve(c);return typeof BigInt>"u"?n[0]*Te+n[1]:BigInt(n[0]*Te)+BigInt(n[1])};var Ur=10,Br={},kr=0;function Y(){return v}var br=Y,xr=Y,Sr=Y,Mr=Y,Nr=Y,Dr=b,Fr=Y,Hr=Y;function Vr(c){return []}var v={version:Nt,versions:Dt,arch:kt,platform:bt,release:Kt,_rawDebug:Wt,moduleLoadList:Zt,binding:Ht,_linkedBinding:Yt,_events:Br,_eventsCount:kr,_maxListeners:Ur,on:Y,addListener:br,once:xr,off:Sr,removeListener:Mr,removeAllListeners:Nr,emit:Dr,prependListener:Fr,prependOnceListener:Hr,listeners:Vr,domain:zt,_exiting:Jt,config:jt,dlopen:qt,uptime:Pr,_getActiveRequests:Xt,_getActiveHandles:Qt,reallyExit:er,_kill:tr,cpuUsage:Oe,resourceUsage:rr,memoryUsage:nr,kill:ir,exit:or,openStdin:sr,allowedNodeEnvironmentFlags:ar,assert:lr,features:ur,_fatalExceptions:cr,setUncaughtExceptionCaptureCallback:pr,hasUncaughtExceptionCaptureCallback:dr,emitWarning:Ft,nextTick:Ut,_tickCallback:hr,_debugProcess:fr,_debugEnd:mr,_startProfilerIdleNotifier:gr,_stopProfilerIdleNotifier:Er,stdout:yr,stdin:_r,stderr:wr,abort:Cr,umask:Vt,chdir:$t,cwd:Gt,env:xt,title:Bt,argv:St,execArgv:Mt,pid:Ir,ppid:Rr,execPath:Tr,debugPort:vr,hrtime:ve,argv0:Ar,_preload_modules:Or,setSourceMapsEnabled:Lr};var se={},Ze=!1;function Gr(){if(Ze)return se;Ze=!0,se.byteLength=y,se.toByteArray=U,se.fromByteArray=S;for(var c=[],n=[],a=typeof Uint8Array<"u"?Uint8Array:Array,u="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",d=0,h=u.length;d<h;++d)c[d]=u[d],n[u.charCodeAt(d)]=d;n[45]=62,n[95]=63;function s(f){var E=f.length;if(E%4>0)throw new Error("Invalid string. Length must be a multiple of 4");var I=f.indexOf("=");I===-1&&(I=E);var B=I===E?0:4-I%4;return [I,B]}function y(f){var E=s(f),I=E[0],B=E[1];return (I+B)*3/4-B}function w(f,E,I){return (E+I)*3/4-I}function U(f){var E,I=s(f),B=I[0],M=I[1],P=new a(w(f,B,M)),N=0,F=M>0?B-4:B,x;for(x=0;x<F;x+=4)E=n[f.charCodeAt(x)]<<18|n[f.charCodeAt(x+1)]<<12|n[f.charCodeAt(x+2)]<<6|n[f.charCodeAt(x+3)],P[N++]=E>>16&255,P[N++]=E>>8&255,P[N++]=E&255;return M===2&&(E=n[f.charCodeAt(x)]<<2|n[f.charCodeAt(x+1)]>>4,P[N++]=E&255),M===1&&(E=n[f.charCodeAt(x)]<<10|n[f.charCodeAt(x+1)]<<4|n[f.charCodeAt(x+2)]>>2,P[N++]=E>>8&255,P[N++]=E&255),P}function m(f){return c[f>>18&63]+c[f>>12&63]+c[f>>6&63]+c[f&63]}function C(f,E,I){for(var B,M=[],P=E;P<I;P+=3)B=(f[P]<<16&16711680)+(f[P+1]<<8&65280)+(f[P+2]&255),M.push(m(B));return M.join("")}function S(f){for(var E,I=f.length,B=I%3,M=[],P=16383,N=0,F=I-B;N<F;N+=P)M.push(C(f,N,N+P>F?F:N+P));return B===1?(E=f[I-1],M.push(c[E>>2]+c[E<<4&63]+"==")):B===2&&(E=(f[I-2]<<8)+f[I-1],M.push(c[E>>10]+c[E>>4&63]+c[E<<2&63]+"=")),M.join("")}return se}var fe={},Ye=!1;function $r(){if(Ye)return fe;Ye=!0;return fe.read=function(c,n,a,u,d){var h,s,y=d*8-u-1,w=(1<<y)-1,U=w>>1,m=-7,C=a?d-1:0,S=a?-1:1,f=c[n+C];for(C+=S,h=f&(1<<-m)-1,f>>=-m,m+=y;m>0;h=h*256+c[n+C],C+=S,m-=8);for(s=h&(1<<-m)-1,h>>=-m,m+=u;m>0;s=s*256+c[n+C],C+=S,m-=8);if(h===0)h=1-U;else {if(h===w)return s?NaN:(f?-1:1)*(1/0);s=s+Math.pow(2,u),h=h-U;}return (f?-1:1)*s*Math.pow(2,h-u)},fe.write=function(c,n,a,u,d,h){var s,y,w,U=h*8-d-1,m=(1<<U)-1,C=m>>1,S=d===23?Math.pow(2,-24)-Math.pow(2,-77):0,f=u?0:h-1,E=u?1:-1,I=n<0||n===0&&1/n<0?1:0;for(n=Math.abs(n),isNaN(n)||n===1/0?(y=isNaN(n)?1:0,s=m):(s=Math.floor(Math.log(n)/Math.LN2),n*(w=Math.pow(2,-s))<1&&(s--,w*=2),s+C>=1?n+=S/w:n+=S*Math.pow(2,1-C),n*w>=2&&(s++,w/=2),s+C>=m?(y=0,s=m):s+C>=1?(y=(n*w-1)*Math.pow(2,d),s=s+C):(y=n*Math.pow(2,C-1)*Math.pow(2,d),s=0));d>=8;c[a+f]=y&255,f+=E,y/=256,d-=8);for(s=s<<d|y,U+=d;U>0;c[a+f]=s&255,f+=E,s/=256,U-=8);c[a+f-E]|=I*128;},fe}var q={},ze=!1;function Kr(){if(ze)return q;ze=!0;let c=Gr(),n=$r(),a=typeof Symbol=="function"&&typeof Symbol.for=="function"?Symbol.for("nodejs.util.inspect.custom"):null;q.Buffer=s,q.SlowBuffer=M,q.INSPECT_MAX_BYTES=50;let u=2147483647;q.kMaxLength=u,s.TYPED_ARRAY_SUPPORT=d(),!s.TYPED_ARRAY_SUPPORT&&typeof console<"u"&&typeof console.error=="function"&&console.error("This browser lacks typed array (Uint8Array) support which is required by `buffer` v5.x. Use `buffer` v4.x if you require old browser support.");function d(){try{let r=new Uint8Array(1),e={foo:function(){return 42}};return Object.setPrototypeOf(e,Uint8Array.prototype),Object.setPrototypeOf(r,e),r.foo()===42}catch{return !1}}Object.defineProperty(s.prototype,"parent",{enumerable:!0,get:function(){if(s.isBuffer(this))return this.buffer}}),Object.defineProperty(s.prototype,"offset",{enumerable:!0,get:function(){if(s.isBuffer(this))return this.byteOffset}});function h(r){if(r>u)throw new RangeError('The value "'+r+'" is invalid for option "size"');let e=new Uint8Array(r);return Object.setPrototypeOf(e,s.prototype),e}function s(r,e,t){if(typeof r=="number"){if(typeof e=="string")throw new TypeError('The "string" argument must be of type string. Received type number');return m(r)}return y(r,e,t)}s.poolSize=8192;function y(r,e,t){if(typeof r=="string")return C(r,e);if(ArrayBuffer.isView(r))return f(r);if(r==null)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof r);if(V(r,ArrayBuffer)||r&&V(r.buffer,ArrayBuffer)||typeof SharedArrayBuffer<"u"&&(V(r,SharedArrayBuffer)||r&&V(r.buffer,SharedArrayBuffer)))return E(r,e,t);if(typeof r=="number")throw new TypeError('The "value" argument must not be of type number. Received type number');let i=r.valueOf&&r.valueOf();if(i!=null&&i!==r)return s.from(i,e,t);let o=I(r);if(o)return o;if(typeof Symbol<"u"&&Symbol.toPrimitive!=null&&typeof r[Symbol.toPrimitive]=="function")return s.from(r[Symbol.toPrimitive]("string"),e,t);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof r)}s.from=function(r,e,t){return y(r,e,t)},Object.setPrototypeOf(s.prototype,Uint8Array.prototype),Object.setPrototypeOf(s,Uint8Array);function w(r){if(typeof r!="number")throw new TypeError('"size" argument must be of type number');if(r<0)throw new RangeError('The value "'+r+'" is invalid for option "size"')}function U(r,e,t){return w(r),r<=0?h(r):e!==void 0?typeof t=="string"?h(r).fill(e,t):h(r).fill(e):h(r)}s.alloc=function(r,e,t){return U(r,e,t)};function m(r){return w(r),h(r<0?0:B(r)|0)}s.allocUnsafe=function(r){return m(r)},s.allocUnsafeSlow=function(r){return m(r)};function C(r,e){if((typeof e!="string"||e==="")&&(e="utf8"),!s.isEncoding(e))throw new TypeError("Unknown encoding: "+e);let t=P(r,e)|0,i=h(t),o=i.write(r,e);return o!==t&&(i=i.slice(0,o)),i}function S(r){let e=r.length<0?0:B(r.length)|0,t=h(e);for(let i=0;i<e;i+=1)t[i]=r[i]&255;return t}function f(r){if(V(r,Uint8Array)){let e=new Uint8Array(r);return E(e.buffer,e.byteOffset,e.byteLength)}return S(r)}function E(r,e,t){if(e<0||r.byteLength<e)throw new RangeError('"offset" is outside of buffer bounds');if(r.byteLength<e+(t||0))throw new RangeError('"length" is outside of buffer bounds');let i;return e===void 0&&t===void 0?i=new Uint8Array(r):t===void 0?i=new Uint8Array(r,e):i=new Uint8Array(r,e,t),Object.setPrototypeOf(i,s.prototype),i}function I(r){if(s.isBuffer(r)){let e=B(r.length)|0,t=h(e);return t.length===0||r.copy(t,0,0,e),t}if(r.length!==void 0)return typeof r.length!="number"||Ie(r.length)?h(0):S(r);if(r.type==="Buffer"&&Array.isArray(r.data))return S(r.data)}function B(r){if(r>=u)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+u.toString(16)+" bytes");return r|0}function M(r){return +r!=r&&(r=0),s.alloc(+r)}s.isBuffer=function(e){return e!=null&&e._isBuffer===!0&&e!==s.prototype},s.compare=function(e,t){if(V(e,Uint8Array)&&(e=s.from(e,e.offset,e.byteLength)),V(t,Uint8Array)&&(t=s.from(t,t.offset,t.byteLength)),!s.isBuffer(e)||!s.isBuffer(t))throw new TypeError('The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array');if(e===t)return 0;let i=e.length,o=t.length;for(let l=0,p=Math.min(i,o);l<p;++l)if(e[l]!==t[l]){i=e[l],o=t[l];break}return i<o?-1:o<i?1:0},s.isEncoding=function(e){switch(String(e).toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"latin1":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return !0;default:return !1}},s.concat=function(e,t){if(!Array.isArray(e))throw new TypeError('"list" argument must be an Array of Buffers');if(e.length===0)return s.alloc(0);let i;if(t===void 0)for(t=0,i=0;i<e.length;++i)t+=e[i].length;let o=s.allocUnsafe(t),l=0;for(i=0;i<e.length;++i){let p=e[i];if(V(p,Uint8Array))l+p.length>o.length?(s.isBuffer(p)||(p=s.from(p)),p.copy(o,l)):Uint8Array.prototype.set.call(o,p,l);else if(s.isBuffer(p))p.copy(o,l);else throw new TypeError('"list" argument must be an Array of Buffers');l+=p.length;}return o};function P(r,e){if(s.isBuffer(r))return r.length;if(ArrayBuffer.isView(r)||V(r,ArrayBuffer))return r.byteLength;if(typeof r!="string")throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof r);let t=r.length,i=arguments.length>2&&arguments[2]===!0;if(!i&&t===0)return 0;let o=!1;for(;;)switch(e){case"ascii":case"latin1":case"binary":return t;case"utf8":case"utf-8":return Ce(r).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return t*2;case"hex":return t>>>1;case"base64":return $e(r).length;default:if(o)return i?-1:Ce(r).length;e=(""+e).toLowerCase(),o=!0;}}s.byteLength=P;function N(r,e,t){let i=!1;if((e===void 0||e<0)&&(e=0),e>this.length||((t===void 0||t>this.length)&&(t=this.length),t<=0)||(t>>>=0,e>>>=0,t<=e))return "";for(r||(r="utf8");;)switch(r){case"hex":return _t(this,e,t);case"utf8":case"utf-8":return xe(this,e,t);case"ascii":return yt(this,e,t);case"latin1":case"binary":return wt(this,e,t);case"base64":return gt(this,e,t);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return Ct(this,e,t);default:if(i)throw new TypeError("Unknown encoding: "+r);r=(r+"").toLowerCase(),i=!0;}}s.prototype._isBuffer=!0;function F(r,e,t){let i=r[e];r[e]=r[t],r[t]=i;}s.prototype.swap16=function(){let e=this.length;if(e%2!==0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(let t=0;t<e;t+=2)F(this,t,t+1);return this},s.prototype.swap32=function(){let e=this.length;if(e%4!==0)throw new RangeError("Buffer size must be a multiple of 32-bits");for(let t=0;t<e;t+=4)F(this,t,t+3),F(this,t+1,t+2);return this},s.prototype.swap64=function(){let e=this.length;if(e%8!==0)throw new RangeError("Buffer size must be a multiple of 64-bits");for(let t=0;t<e;t+=8)F(this,t,t+7),F(this,t+1,t+6),F(this,t+2,t+5),F(this,t+3,t+4);return this},s.prototype.toString=function(){let e=this.length;return e===0?"":arguments.length===0?xe(this,0,e):N.apply(this,arguments)},s.prototype.toLocaleString=s.prototype.toString,s.prototype.equals=function(e){if(!s.isBuffer(e))throw new TypeError("Argument must be a Buffer");return this===e?!0:s.compare(this,e)===0},s.prototype.inspect=function(){let e="",t=q.INSPECT_MAX_BYTES;return e=this.toString("hex",0,t).replace(/(.{2})/g,"$1 ").trim(),this.length>t&&(e+=" ... "),"<Buffer "+e+">"},a&&(s.prototype[a]=s.prototype.inspect),s.prototype.compare=function(e,t,i,o,l){if(V(e,Uint8Array)&&(e=s.from(e,e.offset,e.byteLength)),!s.isBuffer(e))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+typeof e);if(t===void 0&&(t=0),i===void 0&&(i=e?e.length:0),o===void 0&&(o=0),l===void 0&&(l=this.length),t<0||i>e.length||o<0||l>this.length)throw new RangeError("out of range index");if(o>=l&&t>=i)return 0;if(o>=l)return -1;if(t>=i)return 1;if(t>>>=0,i>>>=0,o>>>=0,l>>>=0,this===e)return 0;let p=l-o,g=i-t,A=Math.min(p,g),T=this.slice(o,l),O=e.slice(t,i);for(let _=0;_<A;++_)if(T[_]!==O[_]){p=T[_],g=O[_];break}return p<g?-1:g<p?1:0};function x(r,e,t,i,o){if(r.length===0)return -1;if(typeof t=="string"?(i=t,t=0):t>2147483647?t=2147483647:t<-2147483648&&(t=-2147483648),t=+t,Ie(t)&&(t=o?0:r.length-1),t<0&&(t=r.length+t),t>=r.length){if(o)return -1;t=r.length-1;}else if(t<0)if(o)t=0;else return -1;if(typeof e=="string"&&(e=s.from(e,i)),s.isBuffer(e))return e.length===0?-1:R(r,e,t,i,o);if(typeof e=="number")return e=e&255,typeof Uint8Array.prototype.indexOf=="function"?o?Uint8Array.prototype.indexOf.call(r,e,t):Uint8Array.prototype.lastIndexOf.call(r,e,t):R(r,[e],t,i,o);throw new TypeError("val must be string, number or Buffer")}function R(r,e,t,i,o){let l=1,p=r.length,g=e.length;if(i!==void 0&&(i=String(i).toLowerCase(),i==="ucs2"||i==="ucs-2"||i==="utf16le"||i==="utf-16le")){if(r.length<2||e.length<2)return -1;l=2,p/=2,g/=2,t/=2;}function A(O,_){return l===1?O[_]:O.readUInt16BE(_*l)}let T;if(o){let O=-1;for(T=t;T<p;T++)if(A(r,T)===A(e,O===-1?0:T-O)){if(O===-1&&(O=T),T-O+1===g)return O*l}else O!==-1&&(T-=T-O),O=-1;}else for(t+g>p&&(t=p-g),T=t;T>=0;T--){let O=!0;for(let _=0;_<g;_++)if(A(r,T+_)!==A(e,_)){O=!1;break}if(O)return T}return -1}s.prototype.includes=function(e,t,i){return this.indexOf(e,t,i)!==-1},s.prototype.indexOf=function(e,t,i){return x(this,e,t,i,!0)},s.prototype.lastIndexOf=function(e,t,i){return x(this,e,t,i,!1)};function pt(r,e,t,i){t=Number(t)||0;let o=r.length-t;i?(i=Number(i),i>o&&(i=o)):i=o;let l=e.length;i>l/2&&(i=l/2);let p;for(p=0;p<i;++p){let g=parseInt(e.substr(p*2,2),16);if(Ie(g))return p;r[t+p]=g;}return p}function dt(r,e,t,i){return de(Ce(e,r.length-t),r,t,i)}function ht(r,e,t,i){return de(vt(e),r,t,i)}function ft(r,e,t,i){return de($e(e),r,t,i)}function mt(r,e,t,i){return de(At(e,r.length-t),r,t,i)}s.prototype.write=function(e,t,i,o){if(t===void 0)o="utf8",i=this.length,t=0;else if(i===void 0&&typeof t=="string")o=t,i=this.length,t=0;else if(isFinite(t))t=t>>>0,isFinite(i)?(i=i>>>0,o===void 0&&(o="utf8")):(o=i,i=void 0);else throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");let l=this.length-t;if((i===void 0||i>l)&&(i=l),e.length>0&&(i<0||t<0)||t>this.length)throw new RangeError("Attempt to write outside buffer bounds");o||(o="utf8");let p=!1;for(;;)switch(o){case"hex":return pt(this,e,t,i);case"utf8":case"utf-8":return dt(this,e,t,i);case"ascii":case"latin1":case"binary":return ht(this,e,t,i);case"base64":return ft(this,e,t,i);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return mt(this,e,t,i);default:if(p)throw new TypeError("Unknown encoding: "+o);o=(""+o).toLowerCase(),p=!0;}},s.prototype.toJSON=function(){return {type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};function gt(r,e,t){return e===0&&t===r.length?c.fromByteArray(r):c.fromByteArray(r.slice(e,t))}function xe(r,e,t){t=Math.min(r.length,t);let i=[],o=e;for(;o<t;){let l=r[o],p=null,g=l>239?4:l>223?3:l>191?2:1;if(o+g<=t){let A,T,O,_;switch(g){case 1:l<128&&(p=l);break;case 2:A=r[o+1],(A&192)===128&&(_=(l&31)<<6|A&63,_>127&&(p=_));break;case 3:A=r[o+1],T=r[o+2],(A&192)===128&&(T&192)===128&&(_=(l&15)<<12|(A&63)<<6|T&63,_>2047&&(_<55296||_>57343)&&(p=_));break;case 4:A=r[o+1],T=r[o+2],O=r[o+3],(A&192)===128&&(T&192)===128&&(O&192)===128&&(_=(l&15)<<18|(A&63)<<12|(T&63)<<6|O&63,_>65535&&_<1114112&&(p=_));}}p===null?(p=65533,g=1):p>65535&&(p-=65536,i.push(p>>>10&1023|55296),p=56320|p&1023),i.push(p),o+=g;}return Et(i)}let Se=4096;function Et(r){let e=r.length;if(e<=Se)return String.fromCharCode.apply(String,r);let t="",i=0;for(;i<e;)t+=String.fromCharCode.apply(String,r.slice(i,i+=Se));return t}function yt(r,e,t){let i="";t=Math.min(r.length,t);for(let o=e;o<t;++o)i+=String.fromCharCode(r[o]&127);return i}function wt(r,e,t){let i="";t=Math.min(r.length,t);for(let o=e;o<t;++o)i+=String.fromCharCode(r[o]);return i}function _t(r,e,t){let i=r.length;(!e||e<0)&&(e=0),(!t||t<0||t>i)&&(t=i);let o="";for(let l=e;l<t;++l)o+=Ot[r[l]];return o}function Ct(r,e,t){let i=r.slice(e,t),o="";for(let l=0;l<i.length-1;l+=2)o+=String.fromCharCode(i[l]+i[l+1]*256);return o}s.prototype.slice=function(e,t){let i=this.length;e=~~e,t=t===void 0?i:~~t,e<0?(e+=i,e<0&&(e=0)):e>i&&(e=i),t<0?(t+=i,t<0&&(t=0)):t>i&&(t=i),t<e&&(t=e);let o=this.subarray(e,t);return Object.setPrototypeOf(o,s.prototype),o};function k(r,e,t){if(r%1!==0||r<0)throw new RangeError("offset is not uint");if(r+e>t)throw new RangeError("Trying to access beyond buffer length")}s.prototype.readUintLE=s.prototype.readUIntLE=function(e,t,i){e=e>>>0,t=t>>>0,i||k(e,t,this.length);let o=this[e],l=1,p=0;for(;++p<t&&(l*=256);)o+=this[e+p]*l;return o},s.prototype.readUintBE=s.prototype.readUIntBE=function(e,t,i){e=e>>>0,t=t>>>0,i||k(e,t,this.length);let o=this[e+--t],l=1;for(;t>0&&(l*=256);)o+=this[e+--t]*l;return o},s.prototype.readUint8=s.prototype.readUInt8=function(e,t){return e=e>>>0,t||k(e,1,this.length),this[e]},s.prototype.readUint16LE=s.prototype.readUInt16LE=function(e,t){return e=e>>>0,t||k(e,2,this.length),this[e]|this[e+1]<<8},s.prototype.readUint16BE=s.prototype.readUInt16BE=function(e,t){return e=e>>>0,t||k(e,2,this.length),this[e]<<8|this[e+1]},s.prototype.readUint32LE=s.prototype.readUInt32LE=function(e,t){return e=e>>>0,t||k(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+this[e+3]*16777216},s.prototype.readUint32BE=s.prototype.readUInt32BE=function(e,t){return e=e>>>0,t||k(e,4,this.length),this[e]*16777216+(this[e+1]<<16|this[e+2]<<8|this[e+3])},s.prototype.readBigUInt64LE=W(function(e){e=e>>>0,ee(e,"offset");let t=this[e],i=this[e+7];(t===void 0||i===void 0)&&oe(e,this.length-8);let o=t+this[++e]*2**8+this[++e]*2**16+this[++e]*2**24,l=this[++e]+this[++e]*2**8+this[++e]*2**16+i*2**24;return BigInt(o)+(BigInt(l)<<BigInt(32))}),s.prototype.readBigUInt64BE=W(function(e){e=e>>>0,ee(e,"offset");let t=this[e],i=this[e+7];(t===void 0||i===void 0)&&oe(e,this.length-8);let o=t*2**24+this[++e]*2**16+this[++e]*2**8+this[++e],l=this[++e]*2**24+this[++e]*2**16+this[++e]*2**8+i;return (BigInt(o)<<BigInt(32))+BigInt(l)}),s.prototype.readIntLE=function(e,t,i){e=e>>>0,t=t>>>0,i||k(e,t,this.length);let o=this[e],l=1,p=0;for(;++p<t&&(l*=256);)o+=this[e+p]*l;return l*=128,o>=l&&(o-=Math.pow(2,8*t)),o},s.prototype.readIntBE=function(e,t,i){e=e>>>0,t=t>>>0,i||k(e,t,this.length);let o=t,l=1,p=this[e+--o];for(;o>0&&(l*=256);)p+=this[e+--o]*l;return l*=128,p>=l&&(p-=Math.pow(2,8*t)),p},s.prototype.readInt8=function(e,t){return e=e>>>0,t||k(e,1,this.length),this[e]&128?(255-this[e]+1)*-1:this[e]},s.prototype.readInt16LE=function(e,t){e=e>>>0,t||k(e,2,this.length);let i=this[e]|this[e+1]<<8;return i&32768?i|4294901760:i},s.prototype.readInt16BE=function(e,t){e=e>>>0,t||k(e,2,this.length);let i=this[e+1]|this[e]<<8;return i&32768?i|4294901760:i},s.prototype.readInt32LE=function(e,t){return e=e>>>0,t||k(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24},s.prototype.readInt32BE=function(e,t){return e=e>>>0,t||k(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]},s.prototype.readBigInt64LE=W(function(e){e=e>>>0,ee(e,"offset");let t=this[e],i=this[e+7];(t===void 0||i===void 0)&&oe(e,this.length-8);let o=this[e+4]+this[e+5]*2**8+this[e+6]*2**16+(i<<24);return (BigInt(o)<<BigInt(32))+BigInt(t+this[++e]*2**8+this[++e]*2**16+this[++e]*2**24)}),s.prototype.readBigInt64BE=W(function(e){e=e>>>0,ee(e,"offset");let t=this[e],i=this[e+7];(t===void 0||i===void 0)&&oe(e,this.length-8);let o=(t<<24)+this[++e]*2**16+this[++e]*2**8+this[++e];return (BigInt(o)<<BigInt(32))+BigInt(this[++e]*2**24+this[++e]*2**16+this[++e]*2**8+i)}),s.prototype.readFloatLE=function(e,t){return e=e>>>0,t||k(e,4,this.length),n.read(this,e,!0,23,4)},s.prototype.readFloatBE=function(e,t){return e=e>>>0,t||k(e,4,this.length),n.read(this,e,!1,23,4)},s.prototype.readDoubleLE=function(e,t){return e=e>>>0,t||k(e,8,this.length),n.read(this,e,!0,52,8)},s.prototype.readDoubleBE=function(e,t){return e=e>>>0,t||k(e,8,this.length),n.read(this,e,!1,52,8)};function D(r,e,t,i,o,l){if(!s.isBuffer(r))throw new TypeError('"buffer" argument must be a Buffer instance');if(e>o||e<l)throw new RangeError('"value" argument is out of bounds');if(t+i>r.length)throw new RangeError("Index out of range")}s.prototype.writeUintLE=s.prototype.writeUIntLE=function(e,t,i,o){if(e=+e,t=t>>>0,i=i>>>0,!o){let g=Math.pow(2,8*i)-1;D(this,e,t,i,g,0);}let l=1,p=0;for(this[t]=e&255;++p<i&&(l*=256);)this[t+p]=e/l&255;return t+i},s.prototype.writeUintBE=s.prototype.writeUIntBE=function(e,t,i,o){if(e=+e,t=t>>>0,i=i>>>0,!o){let g=Math.pow(2,8*i)-1;D(this,e,t,i,g,0);}let l=i-1,p=1;for(this[t+l]=e&255;--l>=0&&(p*=256);)this[t+l]=e/p&255;return t+i},s.prototype.writeUint8=s.prototype.writeUInt8=function(e,t,i){return e=+e,t=t>>>0,i||D(this,e,t,1,255,0),this[t]=e&255,t+1},s.prototype.writeUint16LE=s.prototype.writeUInt16LE=function(e,t,i){return e=+e,t=t>>>0,i||D(this,e,t,2,65535,0),this[t]=e&255,this[t+1]=e>>>8,t+2},s.prototype.writeUint16BE=s.prototype.writeUInt16BE=function(e,t,i){return e=+e,t=t>>>0,i||D(this,e,t,2,65535,0),this[t]=e>>>8,this[t+1]=e&255,t+2},s.prototype.writeUint32LE=s.prototype.writeUInt32LE=function(e,t,i){return e=+e,t=t>>>0,i||D(this,e,t,4,4294967295,0),this[t+3]=e>>>24,this[t+2]=e>>>16,this[t+1]=e>>>8,this[t]=e&255,t+4},s.prototype.writeUint32BE=s.prototype.writeUInt32BE=function(e,t,i){return e=+e,t=t>>>0,i||D(this,e,t,4,4294967295,0),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=e&255,t+4};function Me(r,e,t,i,o){Ge(e,i,o,r,t,7);let l=Number(e&BigInt(4294967295));r[t++]=l,l=l>>8,r[t++]=l,l=l>>8,r[t++]=l,l=l>>8,r[t++]=l;let p=Number(e>>BigInt(32)&BigInt(4294967295));return r[t++]=p,p=p>>8,r[t++]=p,p=p>>8,r[t++]=p,p=p>>8,r[t++]=p,t}function Ne(r,e,t,i,o){Ge(e,i,o,r,t,7);let l=Number(e&BigInt(4294967295));r[t+7]=l,l=l>>8,r[t+6]=l,l=l>>8,r[t+5]=l,l=l>>8,r[t+4]=l;let p=Number(e>>BigInt(32)&BigInt(4294967295));return r[t+3]=p,p=p>>8,r[t+2]=p,p=p>>8,r[t+1]=p,p=p>>8,r[t]=p,t+8}s.prototype.writeBigUInt64LE=W(function(e,t=0){return Me(this,e,t,BigInt(0),BigInt("0xffffffffffffffff"))}),s.prototype.writeBigUInt64BE=W(function(e,t=0){return Ne(this,e,t,BigInt(0),BigInt("0xffffffffffffffff"))}),s.prototype.writeIntLE=function(e,t,i,o){if(e=+e,t=t>>>0,!o){let A=Math.pow(2,8*i-1);D(this,e,t,i,A-1,-A);}let l=0,p=1,g=0;for(this[t]=e&255;++l<i&&(p*=256);)e<0&&g===0&&this[t+l-1]!==0&&(g=1),this[t+l]=(e/p>>0)-g&255;return t+i},s.prototype.writeIntBE=function(e,t,i,o){if(e=+e,t=t>>>0,!o){let A=Math.pow(2,8*i-1);D(this,e,t,i,A-1,-A);}let l=i-1,p=1,g=0;for(this[t+l]=e&255;--l>=0&&(p*=256);)e<0&&g===0&&this[t+l+1]!==0&&(g=1),this[t+l]=(e/p>>0)-g&255;return t+i},s.prototype.writeInt8=function(e,t,i){return e=+e,t=t>>>0,i||D(this,e,t,1,127,-128),e<0&&(e=255+e+1),this[t]=e&255,t+1},s.prototype.writeInt16LE=function(e,t,i){return e=+e,t=t>>>0,i||D(this,e,t,2,32767,-32768),this[t]=e&255,this[t+1]=e>>>8,t+2},s.prototype.writeInt16BE=function(e,t,i){return e=+e,t=t>>>0,i||D(this,e,t,2,32767,-32768),this[t]=e>>>8,this[t+1]=e&255,t+2},s.prototype.writeInt32LE=function(e,t,i){return e=+e,t=t>>>0,i||D(this,e,t,4,2147483647,-2147483648),this[t]=e&255,this[t+1]=e>>>8,this[t+2]=e>>>16,this[t+3]=e>>>24,t+4},s.prototype.writeInt32BE=function(e,t,i){return e=+e,t=t>>>0,i||D(this,e,t,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=e&255,t+4},s.prototype.writeBigInt64LE=W(function(e,t=0){return Me(this,e,t,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))}),s.prototype.writeBigInt64BE=W(function(e,t=0){return Ne(this,e,t,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))});function De(r,e,t,i,o,l){if(t+i>r.length)throw new RangeError("Index out of range");if(t<0)throw new RangeError("Index out of range")}function Fe(r,e,t,i,o){return e=+e,t=t>>>0,o||De(r,e,t,4),n.write(r,e,t,i,23,4),t+4}s.prototype.writeFloatLE=function(e,t,i){return Fe(this,e,t,!0,i)},s.prototype.writeFloatBE=function(e,t,i){return Fe(this,e,t,!1,i)};function He(r,e,t,i,o){return e=+e,t=t>>>0,o||De(r,e,t,8),n.write(r,e,t,i,52,8),t+8}s.prototype.writeDoubleLE=function(e,t,i){return He(this,e,t,!0,i)},s.prototype.writeDoubleBE=function(e,t,i){return He(this,e,t,!1,i)},s.prototype.copy=function(e,t,i,o){if(!s.isBuffer(e))throw new TypeError("argument should be a Buffer");if(i||(i=0),!o&&o!==0&&(o=this.length),t>=e.length&&(t=e.length),t||(t=0),o>0&&o<i&&(o=i),o===i||e.length===0||this.length===0)return 0;if(t<0)throw new RangeError("targetStart out of bounds");if(i<0||i>=this.length)throw new RangeError("Index out of range");if(o<0)throw new RangeError("sourceEnd out of bounds");o>this.length&&(o=this.length),e.length-t<o-i&&(o=e.length-t+i);let l=o-i;return this===e&&typeof Uint8Array.prototype.copyWithin=="function"?this.copyWithin(t,i,o):Uint8Array.prototype.set.call(e,this.subarray(i,o),t),l},s.prototype.fill=function(e,t,i,o){if(typeof e=="string"){if(typeof t=="string"?(o=t,t=0,i=this.length):typeof i=="string"&&(o=i,i=this.length),o!==void 0&&typeof o!="string")throw new TypeError("encoding must be a string");if(typeof o=="string"&&!s.isEncoding(o))throw new TypeError("Unknown encoding: "+o);if(e.length===1){let p=e.charCodeAt(0);(o==="utf8"&&p<128||o==="latin1")&&(e=p);}}else typeof e=="number"?e=e&255:typeof e=="boolean"&&(e=Number(e));if(t<0||this.length<t||this.length<i)throw new RangeError("Out of range index");if(i<=t)return this;t=t>>>0,i=i===void 0?this.length:i>>>0,e||(e=0);let l;if(typeof e=="number")for(l=t;l<i;++l)this[l]=e;else {let p=s.isBuffer(e)?e:s.from(e,o),g=p.length;if(g===0)throw new TypeError('The value "'+e+'" is invalid for argument "value"');for(l=0;l<i-t;++l)this[l+t]=p[l%g];}return this};let Q={};function _e(r,e,t){Q[r]=class extends t{constructor(){super(),Object.defineProperty(this,"message",{value:e.apply(this,arguments),writable:!0,configurable:!0}),this.name=`${this.name} [${r}]`,this.stack,delete this.name;}get code(){return r}set code(o){Object.defineProperty(this,"code",{configurable:!0,enumerable:!0,value:o,writable:!0});}toString(){return `${this.name} [${r}]: ${this.message}`}};}_e("ERR_BUFFER_OUT_OF_BOUNDS",function(r){return r?`${r} is outside of buffer bounds`:"Attempt to access memory outside buffer bounds"},RangeError),_e("ERR_INVALID_ARG_TYPE",function(r,e){return `The "${r}" argument must be of type number. Received type ${typeof e}`},TypeError),_e("ERR_OUT_OF_RANGE",function(r,e,t){let i=`The value of "${r}" is out of range.`,o=t;return Number.isInteger(t)&&Math.abs(t)>2**32?o=Ve(String(t)):typeof t=="bigint"&&(o=String(t),(t>BigInt(2)**BigInt(32)||t<-(BigInt(2)**BigInt(32)))&&(o=Ve(o)),o+="n"),i+=` It must be ${e}. Received ${o}`,i},RangeError);function Ve(r){let e="",t=r.length,i=r[0]==="-"?1:0;for(;t>=i+4;t-=3)e=`_${r.slice(t-3,t)}${e}`;return `${r.slice(0,t)}${e}`}function It(r,e,t){ee(e,"offset"),(r[e]===void 0||r[e+t]===void 0)&&oe(e,r.length-(t+1));}function Ge(r,e,t,i,o,l){if(r>t||r<e){let p=typeof e=="bigint"?"n":"",g;throw e===0||e===BigInt(0)?g=`>= 0${p} and < 2${p} ** ${(l+1)*8}${p}`:g=`>= -(2${p} ** ${(l+1)*8-1}${p}) and < 2 ** ${(l+1)*8-1}${p}`,new Q.ERR_OUT_OF_RANGE("value",g,r)}It(i,o,l);}function ee(r,e){if(typeof r!="number")throw new Q.ERR_INVALID_ARG_TYPE(e,"number",r)}function oe(r,e,t){throw Math.floor(r)!==r?(ee(r,t),new Q.ERR_OUT_OF_RANGE("offset","an integer",r)):e<0?new Q.ERR_BUFFER_OUT_OF_BOUNDS:new Q.ERR_OUT_OF_RANGE("offset",`>= ${0} and <= ${e}`,r)}let Rt=/[^+/0-9A-Za-z-_]/g;function Tt(r){if(r=r.split("=")[0],r=r.trim().replace(Rt,""),r.length<2)return "";for(;r.length%4!==0;)r=r+"=";return r}function Ce(r,e){e=e||1/0;let t,i=r.length,o=null,l=[];for(let p=0;p<i;++p){if(t=r.charCodeAt(p),t>55295&&t<57344){if(!o){if(t>56319){(e-=3)>-1&&l.push(239,191,189);continue}else if(p+1===i){(e-=3)>-1&&l.push(239,191,189);continue}o=t;continue}if(t<56320){(e-=3)>-1&&l.push(239,191,189),o=t;continue}t=(o-55296<<10|t-56320)+65536;}else o&&(e-=3)>-1&&l.push(239,191,189);if(o=null,t<128){if((e-=1)<0)break;l.push(t);}else if(t<2048){if((e-=2)<0)break;l.push(t>>6|192,t&63|128);}else if(t<65536){if((e-=3)<0)break;l.push(t>>12|224,t>>6&63|128,t&63|128);}else if(t<1114112){if((e-=4)<0)break;l.push(t>>18|240,t>>12&63|128,t>>6&63|128,t&63|128);}else throw new Error("Invalid code point")}return l}function vt(r){let e=[];for(let t=0;t<r.length;++t)e.push(r.charCodeAt(t)&255);return e}function At(r,e){let t,i,o,l=[];for(let p=0;p<r.length&&!((e-=2)<0);++p)t=r.charCodeAt(p),i=t>>8,o=t%256,l.push(o),l.push(i);return l}function $e(r){return c.toByteArray(Tt(r))}function de(r,e,t,i){let o;for(o=0;o<i&&!(o+t>=e.length||o>=r.length);++o)e[o+t]=r[o];return o}function V(r,e){return r instanceof e||r!=null&&r.constructor!=null&&r.constructor.name!=null&&r.constructor.name===e.name}function Ie(r){return r!==r}let Ot=function(){let r="0123456789abcdef",e=new Array(256);for(let t=0;t<16;++t){let i=t*16;for(let o=0;o<16;++o)e[i+o]=r[t]+r[o];}return e}();function W(r){return typeof BigInt>"u"?Lt:r}function Lt(){throw new Error("BigInt not supported")}return q}var X=Kr();X.Buffer;X.SlowBuffer;X.INSPECT_MAX_BYTES;X.kMaxLength;var L=X.Buffer;X.INSPECT_MAX_BYTES;X.kMaxLength;var me=(R=>(R.AUTHENTICATION_ERROR="AUTHENTICATION_ERROR",R.INVALID_CONFIGURATION="INVALID_CONFIGURATION",R.WALLET_CONNECTION_ERROR="WALLET_CONNECTION_ERROR",R.NOT_LOGGED_IN_ERROR="NOT_LOGGED_IN_ERROR",R.SILENT_LOGIN_ERROR="SILENT_LOGIN_ERROR",R.REFRESH_TOKEN_ERROR="REFRESH_TOKEN_ERROR",R.USER_REGISTRATION_ERROR="USER_REGISTRATION_ERROR",R.USER_NOT_REGISTERED_ERROR="USER_NOT_REGISTERED_ERROR",R.LOGOUT_ERROR="LOGOUT_ERROR",R.TRANSFER_ERROR="TRANSFER_ERROR",R.CREATE_ORDER_ERROR="CREATE_ORDER_ERROR",R.CANCEL_ORDER_ERROR="CANCEL_ORDER_ERROR",R.EXCHANGE_TRANSFER_ERROR="EXCHANGE_TRANSFER_ERROR",R.CREATE_TRADE_ERROR="CREATE_TRADE_ERROR",R.OPERATION_NOT_SUPPORTED_ERROR="OPERATION_NOT_SUPPORTED_ERROR",R.LINK_WALLET_ALREADY_LINKED_ERROR="LINK_WALLET_ALREADY_LINKED_ERROR",R.LINK_WALLET_MAX_WALLETS_LINKED_ERROR="LINK_WALLET_MAX_WALLETS_LINKED_ERROR",R.LINK_WALLET_VALIDATION_ERROR="LINK_WALLET_VALIDATION_ERROR",R.LINK_WALLET_DUPLICATE_NONCE_ERROR="LINK_WALLET_DUPLICATE_NONCE_ERROR",R.LINK_WALLET_GENERIC_ERROR="LINK_WALLET_GENERIC_ERROR",R.SERVICE_UNAVAILABLE_ERROR="SERVICE_UNAVAILABLE_ERROR",R.TRANSACTION_REJECTED="TRANSACTION_REJECTED",R))(me||{});function Le(c){return typeof c=="object"&&c!==null&&"code"in c&&"message"in c}var Wr=c=>{if(Le(c))return c;if(typeof c=="object"&&c!==null&&"response"in c){let{response:n}=c;if(n?.data&&Le(n.data))return n.data}},G=class extends Error{type;constructor(n,a){super(n),this.type=a;}},z=async(c,n)=>{try{return await c()}catch(a){let u;if(a instanceof G&&a.type==="SERVICE_UNAVAILABLE_ERROR")throw new G(a.message,a.type);let d=Wr(a);throw d?u=d.message:u=a.message,new G(u,n)}};var Zr=(c,n,a)=>{let u=n.map(d=>!c[d]&&d).filter(d=>d).join(", ");if(u!==""){let d=`${u} cannot be null`;throw new G(d,"INVALID_CONFIGURATION")}},ae=class{authenticationDomain;passportDomain;oidcConfiguration;crossSdkBridgeEnabled;popupOverlayOptions;constructor({authenticationDomain:n,passportDomain:a,crossSdkBridgeEnabled:u,popupOverlayOptions:d,...h}){Zr(h,["clientId","redirectUri"]),this.oidcConfiguration=h,this.crossSdkBridgeEnabled=u||!1,this.popupOverlayOptions=d,this.authenticationDomain=n||"https://auth.immutable.com",this.passportDomain=a||"https://passport.immutable.com";}};var Je=(n=>(n.ZKEVM="zkEvm",n))(Je||{}),Pe=c=>!!c.zkEvm,je=(a=>(a.OptedIn="opted_in",a.Unsubscribed="unsubscribed",a))(je||{}),Ue=(a=>(a.LOGGED_OUT="loggedOut",a.LOGGED_IN="loggedIn",a))(Ue||{});var qe="im_passport_embedded_login_prompt";var re="passport-overlay",le="passport-overlay-contents",ge=`${re}-close`,Ee=`${re}-try-again`,Xe=`
5
+ function Ae(c){throw new Error("Node.js process "+c+" is not supported by JSPM core outside of Node.js")}var K=[],te=!1,j,he=-1;function Pt(){!te||!j||(te=!1,j.length?K=j.concat(K):he=-1,K.length&&Ke());}function Ke(){if(!te){var c=setTimeout(Pt,0);te=!0;for(var n=K.length;n;){for(j=K,K=[];++he<n;)j&&j[he].run();he=-1,n=K.length;}j=null,te=!1,clearTimeout(c);}}function Ut(c){var n=new Array(arguments.length-1);if(arguments.length>1)for(var a=1;a<arguments.length;a++)n[a-1]=arguments[a];K.push(new We(c,n)),K.length===1&&!te&&setTimeout(Ke,0);}function We(c,n){this.fun=c,this.array=n;}We.prototype.run=function(){this.fun.apply(null,this.array);};var Bt="browser",kt="x64",bt="browser",xt={PATH:"/usr/bin",LANG:navigator.language+".UTF-8",PWD:"/",HOME:"/home",TMP:"/tmp"},St=["/usr/bin/node"],Mt=[],Nt="v16.8.0",Dt={},Ft=function(c,n){console.warn((n?n+": ":"")+c);},Ht=function(c){Ae("binding");},Vt=function(c){return 0},Gt=function(){return "/"},$t=function(c){},Kt={name:"node",sourceUrl:"",headersUrl:"",libUrl:""};function b(){}var Wt=b,Zt=[];function Yt(c){Ae("_linkedBinding");}var zt={},Jt=!1,jt={};function qt(c){Ae("dlopen");}function Xt(){return []}function Qt(){return []}var er=b,tr=b,Oe=function(){return {}},rr=Oe,nr=Oe,ir=b,or=b,sr=b,ar={};function lr(c,n){if(!c)throw new Error(n||"assertion error")}var ur={inspector:!1,debug:!1,uv:!1,ipv6:!1,tls_alpn:!1,tls_sni:!1,tls_ocsp:!1,tls:!1,cached_builtins:!0},cr=b,pr=b;function dr(){return !1}var hr=b,fr=b,mr=b,gr=b,Er=b,yr=void 0,wr=void 0,_r=void 0,Cr=b,Ir=2,Rr=1,Tr="/bin/usr/node",vr=9229,Ar="node",Or=[],Lr=b,Z={now:typeof performance<"u"?performance.now.bind(performance):void 0,timing:typeof performance<"u"?performance.timing:void 0};Z.now===void 0&&(Re=Date.now(),Z.timing&&Z.timing.navigationStart&&(Re=Z.timing.navigationStart),Z.now=()=>Date.now()-Re);var Re;function Pr(){return Z.now()/1e3}var Te=1e9;function ve(c){var n=Math.floor((Date.now()-Z.now())*.001),a=Z.now()*.001,u=Math.floor(a)+n,d=Math.floor(a%1*1e9);return c&&(u=u-c[0],d=d-c[1],d<0&&(u--,d+=Te)),[u,d]}ve.bigint=function(c){var n=ve(c);return typeof BigInt>"u"?n[0]*Te+n[1]:BigInt(n[0]*Te)+BigInt(n[1])};var Ur=10,Br={},kr=0;function Y(){return v}var br=Y,xr=Y,Sr=Y,Mr=Y,Nr=Y,Dr=b,Fr=Y,Hr=Y;function Vr(c){return []}var v={version:Nt,versions:Dt,arch:kt,platform:bt,release:Kt,_rawDebug:Wt,moduleLoadList:Zt,binding:Ht,_linkedBinding:Yt,_events:Br,_eventsCount:kr,_maxListeners:Ur,on:Y,addListener:br,once:xr,off:Sr,removeListener:Mr,removeAllListeners:Nr,emit:Dr,prependListener:Fr,prependOnceListener:Hr,listeners:Vr,domain:zt,_exiting:Jt,config:jt,dlopen:qt,uptime:Pr,_getActiveRequests:Xt,_getActiveHandles:Qt,reallyExit:er,_kill:tr,cpuUsage:Oe,resourceUsage:rr,memoryUsage:nr,kill:ir,exit:or,openStdin:sr,allowedNodeEnvironmentFlags:ar,assert:lr,features:ur,_fatalExceptions:cr,setUncaughtExceptionCaptureCallback:pr,hasUncaughtExceptionCaptureCallback:dr,emitWarning:Ft,nextTick:Ut,_tickCallback:hr,_debugProcess:fr,_debugEnd:mr,_startProfilerIdleNotifier:gr,_stopProfilerIdleNotifier:Er,stdout:yr,stdin:_r,stderr:wr,abort:Cr,umask:Vt,chdir:$t,cwd:Gt,env:xt,title:Bt,argv:St,execArgv:Mt,pid:Ir,ppid:Rr,execPath:Tr,debugPort:vr,hrtime:ve,argv0:Ar,_preload_modules:Or,setSourceMapsEnabled:Lr};var se={},Ze=!1;function Gr(){if(Ze)return se;Ze=!0,se.byteLength=y,se.toByteArray=k,se.fromByteArray=F;for(var c=[],n=[],a=typeof Uint8Array<"u"?Uint8Array:Array,u="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",d=0,h=u.length;d<h;++d)c[d]=u[d],n[u.charCodeAt(d)]=d;n[45]=62,n[95]=63;function s(f){var E=f.length;if(E%4>0)throw new Error("Invalid string. Length must be a multiple of 4");var _=f.indexOf("=");_===-1&&(_=E);var U=_===E?0:4-_%4;return [_,U]}function y(f){var E=s(f),_=E[0],U=E[1];return (_+U)*3/4-U}function T(f,E,_){return (E+_)*3/4-_}function k(f){var E,_=s(f),U=_[0],S=_[1],P=new a(T(f,U,S)),M=0,D=S>0?U-4:U,x;for(x=0;x<D;x+=4)E=n[f.charCodeAt(x)]<<18|n[f.charCodeAt(x+1)]<<12|n[f.charCodeAt(x+2)]<<6|n[f.charCodeAt(x+3)],P[M++]=E>>16&255,P[M++]=E>>8&255,P[M++]=E&255;return S===2&&(E=n[f.charCodeAt(x)]<<2|n[f.charCodeAt(x+1)]>>4,P[M++]=E&255),S===1&&(E=n[f.charCodeAt(x)]<<10|n[f.charCodeAt(x+1)]<<4|n[f.charCodeAt(x+2)]>>2,P[M++]=E>>8&255,P[M++]=E&255),P}function m(f){return c[f>>18&63]+c[f>>12&63]+c[f>>6&63]+c[f&63]}function I(f,E,_){for(var U,S=[],P=E;P<_;P+=3)U=(f[P]<<16&16711680)+(f[P+1]<<8&65280)+(f[P+2]&255),S.push(m(U));return S.join("")}function F(f){for(var E,_=f.length,U=_%3,S=[],P=16383,M=0,D=_-U;M<D;M+=P)S.push(I(f,M,M+P>D?D:M+P));return U===1?(E=f[_-1],S.push(c[E>>2]+c[E<<4&63]+"==")):U===2&&(E=(f[_-2]<<8)+f[_-1],S.push(c[E>>10]+c[E>>4&63]+c[E<<2&63]+"=")),S.join("")}return se}var fe={},Ye=!1;function $r(){if(Ye)return fe;Ye=!0;return fe.read=function(c,n,a,u,d){var h,s,y=d*8-u-1,T=(1<<y)-1,k=T>>1,m=-7,I=a?d-1:0,F=a?-1:1,f=c[n+I];for(I+=F,h=f&(1<<-m)-1,f>>=-m,m+=y;m>0;h=h*256+c[n+I],I+=F,m-=8);for(s=h&(1<<-m)-1,h>>=-m,m+=u;m>0;s=s*256+c[n+I],I+=F,m-=8);if(h===0)h=1-k;else {if(h===T)return s?NaN:(f?-1:1)*(1/0);s=s+Math.pow(2,u),h=h-k;}return (f?-1:1)*s*Math.pow(2,h-u)},fe.write=function(c,n,a,u,d,h){var s,y,T,k=h*8-d-1,m=(1<<k)-1,I=m>>1,F=d===23?Math.pow(2,-24)-Math.pow(2,-77):0,f=u?0:h-1,E=u?1:-1,_=n<0||n===0&&1/n<0?1:0;for(n=Math.abs(n),isNaN(n)||n===1/0?(y=isNaN(n)?1:0,s=m):(s=Math.floor(Math.log(n)/Math.LN2),n*(T=Math.pow(2,-s))<1&&(s--,T*=2),s+I>=1?n+=F/T:n+=F*Math.pow(2,1-I),n*T>=2&&(s++,T/=2),s+I>=m?(y=0,s=m):s+I>=1?(y=(n*T-1)*Math.pow(2,d),s=s+I):(y=n*Math.pow(2,I-1)*Math.pow(2,d),s=0));d>=8;c[a+f]=y&255,f+=E,y/=256,d-=8);for(s=s<<d|y,k+=d;k>0;c[a+f]=s&255,f+=E,s/=256,k-=8);c[a+f-E]|=_*128;},fe}var q={},ze=!1;function Kr(){if(ze)return q;ze=!0;let c=Gr(),n=$r(),a=typeof Symbol=="function"&&typeof Symbol.for=="function"?Symbol.for("nodejs.util.inspect.custom"):null;q.Buffer=s,q.SlowBuffer=S,q.INSPECT_MAX_BYTES=50;let u=2147483647;q.kMaxLength=u,s.TYPED_ARRAY_SUPPORT=d(),!s.TYPED_ARRAY_SUPPORT&&typeof console<"u"&&typeof console.error=="function"&&console.error("This browser lacks typed array (Uint8Array) support which is required by `buffer` v5.x. Use `buffer` v4.x if you require old browser support.");function d(){try{let r=new Uint8Array(1),e={foo:function(){return 42}};return Object.setPrototypeOf(e,Uint8Array.prototype),Object.setPrototypeOf(r,e),r.foo()===42}catch{return !1}}Object.defineProperty(s.prototype,"parent",{enumerable:!0,get:function(){if(s.isBuffer(this))return this.buffer}}),Object.defineProperty(s.prototype,"offset",{enumerable:!0,get:function(){if(s.isBuffer(this))return this.byteOffset}});function h(r){if(r>u)throw new RangeError('The value "'+r+'" is invalid for option "size"');let e=new Uint8Array(r);return Object.setPrototypeOf(e,s.prototype),e}function s(r,e,t){if(typeof r=="number"){if(typeof e=="string")throw new TypeError('The "string" argument must be of type string. Received type number');return m(r)}return y(r,e,t)}s.poolSize=8192;function y(r,e,t){if(typeof r=="string")return I(r,e);if(ArrayBuffer.isView(r))return f(r);if(r==null)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof r);if(V(r,ArrayBuffer)||r&&V(r.buffer,ArrayBuffer)||typeof SharedArrayBuffer<"u"&&(V(r,SharedArrayBuffer)||r&&V(r.buffer,SharedArrayBuffer)))return E(r,e,t);if(typeof r=="number")throw new TypeError('The "value" argument must not be of type number. Received type number');let i=r.valueOf&&r.valueOf();if(i!=null&&i!==r)return s.from(i,e,t);let o=_(r);if(o)return o;if(typeof Symbol<"u"&&Symbol.toPrimitive!=null&&typeof r[Symbol.toPrimitive]=="function")return s.from(r[Symbol.toPrimitive]("string"),e,t);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof r)}s.from=function(r,e,t){return y(r,e,t)},Object.setPrototypeOf(s.prototype,Uint8Array.prototype),Object.setPrototypeOf(s,Uint8Array);function T(r){if(typeof r!="number")throw new TypeError('"size" argument must be of type number');if(r<0)throw new RangeError('The value "'+r+'" is invalid for option "size"')}function k(r,e,t){return T(r),r<=0?h(r):e!==void 0?typeof t=="string"?h(r).fill(e,t):h(r).fill(e):h(r)}s.alloc=function(r,e,t){return k(r,e,t)};function m(r){return T(r),h(r<0?0:U(r)|0)}s.allocUnsafe=function(r){return m(r)},s.allocUnsafeSlow=function(r){return m(r)};function I(r,e){if((typeof e!="string"||e==="")&&(e="utf8"),!s.isEncoding(e))throw new TypeError("Unknown encoding: "+e);let t=P(r,e)|0,i=h(t),o=i.write(r,e);return o!==t&&(i=i.slice(0,o)),i}function F(r){let e=r.length<0?0:U(r.length)|0,t=h(e);for(let i=0;i<e;i+=1)t[i]=r[i]&255;return t}function f(r){if(V(r,Uint8Array)){let e=new Uint8Array(r);return E(e.buffer,e.byteOffset,e.byteLength)}return F(r)}function E(r,e,t){if(e<0||r.byteLength<e)throw new RangeError('"offset" is outside of buffer bounds');if(r.byteLength<e+(t||0))throw new RangeError('"length" is outside of buffer bounds');let i;return e===void 0&&t===void 0?i=new Uint8Array(r):t===void 0?i=new Uint8Array(r,e):i=new Uint8Array(r,e,t),Object.setPrototypeOf(i,s.prototype),i}function _(r){if(s.isBuffer(r)){let e=U(r.length)|0,t=h(e);return t.length===0||r.copy(t,0,0,e),t}if(r.length!==void 0)return typeof r.length!="number"||Ie(r.length)?h(0):F(r);if(r.type==="Buffer"&&Array.isArray(r.data))return F(r.data)}function U(r){if(r>=u)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+u.toString(16)+" bytes");return r|0}function S(r){return +r!=r&&(r=0),s.alloc(+r)}s.isBuffer=function(e){return e!=null&&e._isBuffer===!0&&e!==s.prototype},s.compare=function(e,t){if(V(e,Uint8Array)&&(e=s.from(e,e.offset,e.byteLength)),V(t,Uint8Array)&&(t=s.from(t,t.offset,t.byteLength)),!s.isBuffer(e)||!s.isBuffer(t))throw new TypeError('The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array');if(e===t)return 0;let i=e.length,o=t.length;for(let l=0,p=Math.min(i,o);l<p;++l)if(e[l]!==t[l]){i=e[l],o=t[l];break}return i<o?-1:o<i?1:0},s.isEncoding=function(e){switch(String(e).toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"latin1":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return !0;default:return !1}},s.concat=function(e,t){if(!Array.isArray(e))throw new TypeError('"list" argument must be an Array of Buffers');if(e.length===0)return s.alloc(0);let i;if(t===void 0)for(t=0,i=0;i<e.length;++i)t+=e[i].length;let o=s.allocUnsafe(t),l=0;for(i=0;i<e.length;++i){let p=e[i];if(V(p,Uint8Array))l+p.length>o.length?(s.isBuffer(p)||(p=s.from(p)),p.copy(o,l)):Uint8Array.prototype.set.call(o,p,l);else if(s.isBuffer(p))p.copy(o,l);else throw new TypeError('"list" argument must be an Array of Buffers');l+=p.length;}return o};function P(r,e){if(s.isBuffer(r))return r.length;if(ArrayBuffer.isView(r)||V(r,ArrayBuffer))return r.byteLength;if(typeof r!="string")throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof r);let t=r.length,i=arguments.length>2&&arguments[2]===!0;if(!i&&t===0)return 0;let o=!1;for(;;)switch(e){case"ascii":case"latin1":case"binary":return t;case"utf8":case"utf-8":return Ce(r).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return t*2;case"hex":return t>>>1;case"base64":return $e(r).length;default:if(o)return i?-1:Ce(r).length;e=(""+e).toLowerCase(),o=!0;}}s.byteLength=P;function M(r,e,t){let i=!1;if((e===void 0||e<0)&&(e=0),e>this.length||((t===void 0||t>this.length)&&(t=this.length),t<=0)||(t>>>=0,e>>>=0,t<=e))return "";for(r||(r="utf8");;)switch(r){case"hex":return _t(this,e,t);case"utf8":case"utf-8":return xe(this,e,t);case"ascii":return yt(this,e,t);case"latin1":case"binary":return wt(this,e,t);case"base64":return gt(this,e,t);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return Ct(this,e,t);default:if(i)throw new TypeError("Unknown encoding: "+r);r=(r+"").toLowerCase(),i=!0;}}s.prototype._isBuffer=!0;function D(r,e,t){let i=r[e];r[e]=r[t],r[t]=i;}s.prototype.swap16=function(){let e=this.length;if(e%2!==0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(let t=0;t<e;t+=2)D(this,t,t+1);return this},s.prototype.swap32=function(){let e=this.length;if(e%4!==0)throw new RangeError("Buffer size must be a multiple of 32-bits");for(let t=0;t<e;t+=4)D(this,t,t+3),D(this,t+1,t+2);return this},s.prototype.swap64=function(){let e=this.length;if(e%8!==0)throw new RangeError("Buffer size must be a multiple of 64-bits");for(let t=0;t<e;t+=8)D(this,t,t+7),D(this,t+1,t+6),D(this,t+2,t+5),D(this,t+3,t+4);return this},s.prototype.toString=function(){let e=this.length;return e===0?"":arguments.length===0?xe(this,0,e):M.apply(this,arguments)},s.prototype.toLocaleString=s.prototype.toString,s.prototype.equals=function(e){if(!s.isBuffer(e))throw new TypeError("Argument must be a Buffer");return this===e?!0:s.compare(this,e)===0},s.prototype.inspect=function(){let e="",t=q.INSPECT_MAX_BYTES;return e=this.toString("hex",0,t).replace(/(.{2})/g,"$1 ").trim(),this.length>t&&(e+=" ... "),"<Buffer "+e+">"},a&&(s.prototype[a]=s.prototype.inspect),s.prototype.compare=function(e,t,i,o,l){if(V(e,Uint8Array)&&(e=s.from(e,e.offset,e.byteLength)),!s.isBuffer(e))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+typeof e);if(t===void 0&&(t=0),i===void 0&&(i=e?e.length:0),o===void 0&&(o=0),l===void 0&&(l=this.length),t<0||i>e.length||o<0||l>this.length)throw new RangeError("out of range index");if(o>=l&&t>=i)return 0;if(o>=l)return -1;if(t>=i)return 1;if(t>>>=0,i>>>=0,o>>>=0,l>>>=0,this===e)return 0;let p=l-o,g=i-t,A=Math.min(p,g),R=this.slice(o,l),O=e.slice(t,i);for(let w=0;w<A;++w)if(R[w]!==O[w]){p=R[w],g=O[w];break}return p<g?-1:g<p?1:0};function x(r,e,t,i,o){if(r.length===0)return -1;if(typeof t=="string"?(i=t,t=0):t>2147483647?t=2147483647:t<-2147483648&&(t=-2147483648),t=+t,Ie(t)&&(t=o?0:r.length-1),t<0&&(t=r.length+t),t>=r.length){if(o)return -1;t=r.length-1;}else if(t<0)if(o)t=0;else return -1;if(typeof e=="string"&&(e=s.from(e,i)),s.isBuffer(e))return e.length===0?-1:C(r,e,t,i,o);if(typeof e=="number")return e=e&255,typeof Uint8Array.prototype.indexOf=="function"?o?Uint8Array.prototype.indexOf.call(r,e,t):Uint8Array.prototype.lastIndexOf.call(r,e,t):C(r,[e],t,i,o);throw new TypeError("val must be string, number or Buffer")}function C(r,e,t,i,o){let l=1,p=r.length,g=e.length;if(i!==void 0&&(i=String(i).toLowerCase(),i==="ucs2"||i==="ucs-2"||i==="utf16le"||i==="utf-16le")){if(r.length<2||e.length<2)return -1;l=2,p/=2,g/=2,t/=2;}function A(O,w){return l===1?O[w]:O.readUInt16BE(w*l)}let R;if(o){let O=-1;for(R=t;R<p;R++)if(A(r,R)===A(e,O===-1?0:R-O)){if(O===-1&&(O=R),R-O+1===g)return O*l}else O!==-1&&(R-=R-O),O=-1;}else for(t+g>p&&(t=p-g),R=t;R>=0;R--){let O=!0;for(let w=0;w<g;w++)if(A(r,R+w)!==A(e,w)){O=!1;break}if(O)return R}return -1}s.prototype.includes=function(e,t,i){return this.indexOf(e,t,i)!==-1},s.prototype.indexOf=function(e,t,i){return x(this,e,t,i,!0)},s.prototype.lastIndexOf=function(e,t,i){return x(this,e,t,i,!1)};function pt(r,e,t,i){t=Number(t)||0;let o=r.length-t;i?(i=Number(i),i>o&&(i=o)):i=o;let l=e.length;i>l/2&&(i=l/2);let p;for(p=0;p<i;++p){let g=parseInt(e.substr(p*2,2),16);if(Ie(g))return p;r[t+p]=g;}return p}function dt(r,e,t,i){return de(Ce(e,r.length-t),r,t,i)}function ht(r,e,t,i){return de(vt(e),r,t,i)}function ft(r,e,t,i){return de($e(e),r,t,i)}function mt(r,e,t,i){return de(At(e,r.length-t),r,t,i)}s.prototype.write=function(e,t,i,o){if(t===void 0)o="utf8",i=this.length,t=0;else if(i===void 0&&typeof t=="string")o=t,i=this.length,t=0;else if(isFinite(t))t=t>>>0,isFinite(i)?(i=i>>>0,o===void 0&&(o="utf8")):(o=i,i=void 0);else throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");let l=this.length-t;if((i===void 0||i>l)&&(i=l),e.length>0&&(i<0||t<0)||t>this.length)throw new RangeError("Attempt to write outside buffer bounds");o||(o="utf8");let p=!1;for(;;)switch(o){case"hex":return pt(this,e,t,i);case"utf8":case"utf-8":return dt(this,e,t,i);case"ascii":case"latin1":case"binary":return ht(this,e,t,i);case"base64":return ft(this,e,t,i);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return mt(this,e,t,i);default:if(p)throw new TypeError("Unknown encoding: "+o);o=(""+o).toLowerCase(),p=!0;}},s.prototype.toJSON=function(){return {type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};function gt(r,e,t){return e===0&&t===r.length?c.fromByteArray(r):c.fromByteArray(r.slice(e,t))}function xe(r,e,t){t=Math.min(r.length,t);let i=[],o=e;for(;o<t;){let l=r[o],p=null,g=l>239?4:l>223?3:l>191?2:1;if(o+g<=t){let A,R,O,w;switch(g){case 1:l<128&&(p=l);break;case 2:A=r[o+1],(A&192)===128&&(w=(l&31)<<6|A&63,w>127&&(p=w));break;case 3:A=r[o+1],R=r[o+2],(A&192)===128&&(R&192)===128&&(w=(l&15)<<12|(A&63)<<6|R&63,w>2047&&(w<55296||w>57343)&&(p=w));break;case 4:A=r[o+1],R=r[o+2],O=r[o+3],(A&192)===128&&(R&192)===128&&(O&192)===128&&(w=(l&15)<<18|(A&63)<<12|(R&63)<<6|O&63,w>65535&&w<1114112&&(p=w));}}p===null?(p=65533,g=1):p>65535&&(p-=65536,i.push(p>>>10&1023|55296),p=56320|p&1023),i.push(p),o+=g;}return Et(i)}let Se=4096;function Et(r){let e=r.length;if(e<=Se)return String.fromCharCode.apply(String,r);let t="",i=0;for(;i<e;)t+=String.fromCharCode.apply(String,r.slice(i,i+=Se));return t}function yt(r,e,t){let i="";t=Math.min(r.length,t);for(let o=e;o<t;++o)i+=String.fromCharCode(r[o]&127);return i}function wt(r,e,t){let i="";t=Math.min(r.length,t);for(let o=e;o<t;++o)i+=String.fromCharCode(r[o]);return i}function _t(r,e,t){let i=r.length;(!e||e<0)&&(e=0),(!t||t<0||t>i)&&(t=i);let o="";for(let l=e;l<t;++l)o+=Ot[r[l]];return o}function Ct(r,e,t){let i=r.slice(e,t),o="";for(let l=0;l<i.length-1;l+=2)o+=String.fromCharCode(i[l]+i[l+1]*256);return o}s.prototype.slice=function(e,t){let i=this.length;e=~~e,t=t===void 0?i:~~t,e<0?(e+=i,e<0&&(e=0)):e>i&&(e=i),t<0?(t+=i,t<0&&(t=0)):t>i&&(t=i),t<e&&(t=e);let o=this.subarray(e,t);return Object.setPrototypeOf(o,s.prototype),o};function B(r,e,t){if(r%1!==0||r<0)throw new RangeError("offset is not uint");if(r+e>t)throw new RangeError("Trying to access beyond buffer length")}s.prototype.readUintLE=s.prototype.readUIntLE=function(e,t,i){e=e>>>0,t=t>>>0,i||B(e,t,this.length);let o=this[e],l=1,p=0;for(;++p<t&&(l*=256);)o+=this[e+p]*l;return o},s.prototype.readUintBE=s.prototype.readUIntBE=function(e,t,i){e=e>>>0,t=t>>>0,i||B(e,t,this.length);let o=this[e+--t],l=1;for(;t>0&&(l*=256);)o+=this[e+--t]*l;return o},s.prototype.readUint8=s.prototype.readUInt8=function(e,t){return e=e>>>0,t||B(e,1,this.length),this[e]},s.prototype.readUint16LE=s.prototype.readUInt16LE=function(e,t){return e=e>>>0,t||B(e,2,this.length),this[e]|this[e+1]<<8},s.prototype.readUint16BE=s.prototype.readUInt16BE=function(e,t){return e=e>>>0,t||B(e,2,this.length),this[e]<<8|this[e+1]},s.prototype.readUint32LE=s.prototype.readUInt32LE=function(e,t){return e=e>>>0,t||B(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+this[e+3]*16777216},s.prototype.readUint32BE=s.prototype.readUInt32BE=function(e,t){return e=e>>>0,t||B(e,4,this.length),this[e]*16777216+(this[e+1]<<16|this[e+2]<<8|this[e+3])},s.prototype.readBigUInt64LE=W(function(e){e=e>>>0,ee(e,"offset");let t=this[e],i=this[e+7];(t===void 0||i===void 0)&&oe(e,this.length-8);let o=t+this[++e]*2**8+this[++e]*2**16+this[++e]*2**24,l=this[++e]+this[++e]*2**8+this[++e]*2**16+i*2**24;return BigInt(o)+(BigInt(l)<<BigInt(32))}),s.prototype.readBigUInt64BE=W(function(e){e=e>>>0,ee(e,"offset");let t=this[e],i=this[e+7];(t===void 0||i===void 0)&&oe(e,this.length-8);let o=t*2**24+this[++e]*2**16+this[++e]*2**8+this[++e],l=this[++e]*2**24+this[++e]*2**16+this[++e]*2**8+i;return (BigInt(o)<<BigInt(32))+BigInt(l)}),s.prototype.readIntLE=function(e,t,i){e=e>>>0,t=t>>>0,i||B(e,t,this.length);let o=this[e],l=1,p=0;for(;++p<t&&(l*=256);)o+=this[e+p]*l;return l*=128,o>=l&&(o-=Math.pow(2,8*t)),o},s.prototype.readIntBE=function(e,t,i){e=e>>>0,t=t>>>0,i||B(e,t,this.length);let o=t,l=1,p=this[e+--o];for(;o>0&&(l*=256);)p+=this[e+--o]*l;return l*=128,p>=l&&(p-=Math.pow(2,8*t)),p},s.prototype.readInt8=function(e,t){return e=e>>>0,t||B(e,1,this.length),this[e]&128?(255-this[e]+1)*-1:this[e]},s.prototype.readInt16LE=function(e,t){e=e>>>0,t||B(e,2,this.length);let i=this[e]|this[e+1]<<8;return i&32768?i|4294901760:i},s.prototype.readInt16BE=function(e,t){e=e>>>0,t||B(e,2,this.length);let i=this[e+1]|this[e]<<8;return i&32768?i|4294901760:i},s.prototype.readInt32LE=function(e,t){return e=e>>>0,t||B(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24},s.prototype.readInt32BE=function(e,t){return e=e>>>0,t||B(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]},s.prototype.readBigInt64LE=W(function(e){e=e>>>0,ee(e,"offset");let t=this[e],i=this[e+7];(t===void 0||i===void 0)&&oe(e,this.length-8);let o=this[e+4]+this[e+5]*2**8+this[e+6]*2**16+(i<<24);return (BigInt(o)<<BigInt(32))+BigInt(t+this[++e]*2**8+this[++e]*2**16+this[++e]*2**24)}),s.prototype.readBigInt64BE=W(function(e){e=e>>>0,ee(e,"offset");let t=this[e],i=this[e+7];(t===void 0||i===void 0)&&oe(e,this.length-8);let o=(t<<24)+this[++e]*2**16+this[++e]*2**8+this[++e];return (BigInt(o)<<BigInt(32))+BigInt(this[++e]*2**24+this[++e]*2**16+this[++e]*2**8+i)}),s.prototype.readFloatLE=function(e,t){return e=e>>>0,t||B(e,4,this.length),n.read(this,e,!0,23,4)},s.prototype.readFloatBE=function(e,t){return e=e>>>0,t||B(e,4,this.length),n.read(this,e,!1,23,4)},s.prototype.readDoubleLE=function(e,t){return e=e>>>0,t||B(e,8,this.length),n.read(this,e,!0,52,8)},s.prototype.readDoubleBE=function(e,t){return e=e>>>0,t||B(e,8,this.length),n.read(this,e,!1,52,8)};function N(r,e,t,i,o,l){if(!s.isBuffer(r))throw new TypeError('"buffer" argument must be a Buffer instance');if(e>o||e<l)throw new RangeError('"value" argument is out of bounds');if(t+i>r.length)throw new RangeError("Index out of range")}s.prototype.writeUintLE=s.prototype.writeUIntLE=function(e,t,i,o){if(e=+e,t=t>>>0,i=i>>>0,!o){let g=Math.pow(2,8*i)-1;N(this,e,t,i,g,0);}let l=1,p=0;for(this[t]=e&255;++p<i&&(l*=256);)this[t+p]=e/l&255;return t+i},s.prototype.writeUintBE=s.prototype.writeUIntBE=function(e,t,i,o){if(e=+e,t=t>>>0,i=i>>>0,!o){let g=Math.pow(2,8*i)-1;N(this,e,t,i,g,0);}let l=i-1,p=1;for(this[t+l]=e&255;--l>=0&&(p*=256);)this[t+l]=e/p&255;return t+i},s.prototype.writeUint8=s.prototype.writeUInt8=function(e,t,i){return e=+e,t=t>>>0,i||N(this,e,t,1,255,0),this[t]=e&255,t+1},s.prototype.writeUint16LE=s.prototype.writeUInt16LE=function(e,t,i){return e=+e,t=t>>>0,i||N(this,e,t,2,65535,0),this[t]=e&255,this[t+1]=e>>>8,t+2},s.prototype.writeUint16BE=s.prototype.writeUInt16BE=function(e,t,i){return e=+e,t=t>>>0,i||N(this,e,t,2,65535,0),this[t]=e>>>8,this[t+1]=e&255,t+2},s.prototype.writeUint32LE=s.prototype.writeUInt32LE=function(e,t,i){return e=+e,t=t>>>0,i||N(this,e,t,4,4294967295,0),this[t+3]=e>>>24,this[t+2]=e>>>16,this[t+1]=e>>>8,this[t]=e&255,t+4},s.prototype.writeUint32BE=s.prototype.writeUInt32BE=function(e,t,i){return e=+e,t=t>>>0,i||N(this,e,t,4,4294967295,0),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=e&255,t+4};function Me(r,e,t,i,o){Ge(e,i,o,r,t,7);let l=Number(e&BigInt(4294967295));r[t++]=l,l=l>>8,r[t++]=l,l=l>>8,r[t++]=l,l=l>>8,r[t++]=l;let p=Number(e>>BigInt(32)&BigInt(4294967295));return r[t++]=p,p=p>>8,r[t++]=p,p=p>>8,r[t++]=p,p=p>>8,r[t++]=p,t}function Ne(r,e,t,i,o){Ge(e,i,o,r,t,7);let l=Number(e&BigInt(4294967295));r[t+7]=l,l=l>>8,r[t+6]=l,l=l>>8,r[t+5]=l,l=l>>8,r[t+4]=l;let p=Number(e>>BigInt(32)&BigInt(4294967295));return r[t+3]=p,p=p>>8,r[t+2]=p,p=p>>8,r[t+1]=p,p=p>>8,r[t]=p,t+8}s.prototype.writeBigUInt64LE=W(function(e,t=0){return Me(this,e,t,BigInt(0),BigInt("0xffffffffffffffff"))}),s.prototype.writeBigUInt64BE=W(function(e,t=0){return Ne(this,e,t,BigInt(0),BigInt("0xffffffffffffffff"))}),s.prototype.writeIntLE=function(e,t,i,o){if(e=+e,t=t>>>0,!o){let A=Math.pow(2,8*i-1);N(this,e,t,i,A-1,-A);}let l=0,p=1,g=0;for(this[t]=e&255;++l<i&&(p*=256);)e<0&&g===0&&this[t+l-1]!==0&&(g=1),this[t+l]=(e/p>>0)-g&255;return t+i},s.prototype.writeIntBE=function(e,t,i,o){if(e=+e,t=t>>>0,!o){let A=Math.pow(2,8*i-1);N(this,e,t,i,A-1,-A);}let l=i-1,p=1,g=0;for(this[t+l]=e&255;--l>=0&&(p*=256);)e<0&&g===0&&this[t+l+1]!==0&&(g=1),this[t+l]=(e/p>>0)-g&255;return t+i},s.prototype.writeInt8=function(e,t,i){return e=+e,t=t>>>0,i||N(this,e,t,1,127,-128),e<0&&(e=255+e+1),this[t]=e&255,t+1},s.prototype.writeInt16LE=function(e,t,i){return e=+e,t=t>>>0,i||N(this,e,t,2,32767,-32768),this[t]=e&255,this[t+1]=e>>>8,t+2},s.prototype.writeInt16BE=function(e,t,i){return e=+e,t=t>>>0,i||N(this,e,t,2,32767,-32768),this[t]=e>>>8,this[t+1]=e&255,t+2},s.prototype.writeInt32LE=function(e,t,i){return e=+e,t=t>>>0,i||N(this,e,t,4,2147483647,-2147483648),this[t]=e&255,this[t+1]=e>>>8,this[t+2]=e>>>16,this[t+3]=e>>>24,t+4},s.prototype.writeInt32BE=function(e,t,i){return e=+e,t=t>>>0,i||N(this,e,t,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=e&255,t+4},s.prototype.writeBigInt64LE=W(function(e,t=0){return Me(this,e,t,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))}),s.prototype.writeBigInt64BE=W(function(e,t=0){return Ne(this,e,t,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))});function De(r,e,t,i,o,l){if(t+i>r.length)throw new RangeError("Index out of range");if(t<0)throw new RangeError("Index out of range")}function Fe(r,e,t,i,o){return e=+e,t=t>>>0,o||De(r,e,t,4),n.write(r,e,t,i,23,4),t+4}s.prototype.writeFloatLE=function(e,t,i){return Fe(this,e,t,!0,i)},s.prototype.writeFloatBE=function(e,t,i){return Fe(this,e,t,!1,i)};function He(r,e,t,i,o){return e=+e,t=t>>>0,o||De(r,e,t,8),n.write(r,e,t,i,52,8),t+8}s.prototype.writeDoubleLE=function(e,t,i){return He(this,e,t,!0,i)},s.prototype.writeDoubleBE=function(e,t,i){return He(this,e,t,!1,i)},s.prototype.copy=function(e,t,i,o){if(!s.isBuffer(e))throw new TypeError("argument should be a Buffer");if(i||(i=0),!o&&o!==0&&(o=this.length),t>=e.length&&(t=e.length),t||(t=0),o>0&&o<i&&(o=i),o===i||e.length===0||this.length===0)return 0;if(t<0)throw new RangeError("targetStart out of bounds");if(i<0||i>=this.length)throw new RangeError("Index out of range");if(o<0)throw new RangeError("sourceEnd out of bounds");o>this.length&&(o=this.length),e.length-t<o-i&&(o=e.length-t+i);let l=o-i;return this===e&&typeof Uint8Array.prototype.copyWithin=="function"?this.copyWithin(t,i,o):Uint8Array.prototype.set.call(e,this.subarray(i,o),t),l},s.prototype.fill=function(e,t,i,o){if(typeof e=="string"){if(typeof t=="string"?(o=t,t=0,i=this.length):typeof i=="string"&&(o=i,i=this.length),o!==void 0&&typeof o!="string")throw new TypeError("encoding must be a string");if(typeof o=="string"&&!s.isEncoding(o))throw new TypeError("Unknown encoding: "+o);if(e.length===1){let p=e.charCodeAt(0);(o==="utf8"&&p<128||o==="latin1")&&(e=p);}}else typeof e=="number"?e=e&255:typeof e=="boolean"&&(e=Number(e));if(t<0||this.length<t||this.length<i)throw new RangeError("Out of range index");if(i<=t)return this;t=t>>>0,i=i===void 0?this.length:i>>>0,e||(e=0);let l;if(typeof e=="number")for(l=t;l<i;++l)this[l]=e;else {let p=s.isBuffer(e)?e:s.from(e,o),g=p.length;if(g===0)throw new TypeError('The value "'+e+'" is invalid for argument "value"');for(l=0;l<i-t;++l)this[l+t]=p[l%g];}return this};let Q={};function _e(r,e,t){Q[r]=class extends t{constructor(){super(),Object.defineProperty(this,"message",{value:e.apply(this,arguments),writable:!0,configurable:!0}),this.name=`${this.name} [${r}]`,this.stack,delete this.name;}get code(){return r}set code(o){Object.defineProperty(this,"code",{configurable:!0,enumerable:!0,value:o,writable:!0});}toString(){return `${this.name} [${r}]: ${this.message}`}};}_e("ERR_BUFFER_OUT_OF_BOUNDS",function(r){return r?`${r} is outside of buffer bounds`:"Attempt to access memory outside buffer bounds"},RangeError),_e("ERR_INVALID_ARG_TYPE",function(r,e){return `The "${r}" argument must be of type number. Received type ${typeof e}`},TypeError),_e("ERR_OUT_OF_RANGE",function(r,e,t){let i=`The value of "${r}" is out of range.`,o=t;return Number.isInteger(t)&&Math.abs(t)>2**32?o=Ve(String(t)):typeof t=="bigint"&&(o=String(t),(t>BigInt(2)**BigInt(32)||t<-(BigInt(2)**BigInt(32)))&&(o=Ve(o)),o+="n"),i+=` It must be ${e}. Received ${o}`,i},RangeError);function Ve(r){let e="",t=r.length,i=r[0]==="-"?1:0;for(;t>=i+4;t-=3)e=`_${r.slice(t-3,t)}${e}`;return `${r.slice(0,t)}${e}`}function It(r,e,t){ee(e,"offset"),(r[e]===void 0||r[e+t]===void 0)&&oe(e,r.length-(t+1));}function Ge(r,e,t,i,o,l){if(r>t||r<e){let p=typeof e=="bigint"?"n":"",g;throw e===0||e===BigInt(0)?g=`>= 0${p} and < 2${p} ** ${(l+1)*8}${p}`:g=`>= -(2${p} ** ${(l+1)*8-1}${p}) and < 2 ** ${(l+1)*8-1}${p}`,new Q.ERR_OUT_OF_RANGE("value",g,r)}It(i,o,l);}function ee(r,e){if(typeof r!="number")throw new Q.ERR_INVALID_ARG_TYPE(e,"number",r)}function oe(r,e,t){throw Math.floor(r)!==r?(ee(r,t),new Q.ERR_OUT_OF_RANGE("offset","an integer",r)):e<0?new Q.ERR_BUFFER_OUT_OF_BOUNDS:new Q.ERR_OUT_OF_RANGE("offset",`>= ${0} and <= ${e}`,r)}let Rt=/[^+/0-9A-Za-z-_]/g;function Tt(r){if(r=r.split("=")[0],r=r.trim().replace(Rt,""),r.length<2)return "";for(;r.length%4!==0;)r=r+"=";return r}function Ce(r,e){e=e||1/0;let t,i=r.length,o=null,l=[];for(let p=0;p<i;++p){if(t=r.charCodeAt(p),t>55295&&t<57344){if(!o){if(t>56319){(e-=3)>-1&&l.push(239,191,189);continue}else if(p+1===i){(e-=3)>-1&&l.push(239,191,189);continue}o=t;continue}if(t<56320){(e-=3)>-1&&l.push(239,191,189),o=t;continue}t=(o-55296<<10|t-56320)+65536;}else o&&(e-=3)>-1&&l.push(239,191,189);if(o=null,t<128){if((e-=1)<0)break;l.push(t);}else if(t<2048){if((e-=2)<0)break;l.push(t>>6|192,t&63|128);}else if(t<65536){if((e-=3)<0)break;l.push(t>>12|224,t>>6&63|128,t&63|128);}else if(t<1114112){if((e-=4)<0)break;l.push(t>>18|240,t>>12&63|128,t>>6&63|128,t&63|128);}else throw new Error("Invalid code point")}return l}function vt(r){let e=[];for(let t=0;t<r.length;++t)e.push(r.charCodeAt(t)&255);return e}function At(r,e){let t,i,o,l=[];for(let p=0;p<r.length&&!((e-=2)<0);++p)t=r.charCodeAt(p),i=t>>8,o=t%256,l.push(o),l.push(i);return l}function $e(r){return c.toByteArray(Tt(r))}function de(r,e,t,i){let o;for(o=0;o<i&&!(o+t>=e.length||o>=r.length);++o)e[o+t]=r[o];return o}function V(r,e){return r instanceof e||r!=null&&r.constructor!=null&&r.constructor.name!=null&&r.constructor.name===e.name}function Ie(r){return r!==r}let Ot=function(){let r="0123456789abcdef",e=new Array(256);for(let t=0;t<16;++t){let i=t*16;for(let o=0;o<16;++o)e[i+o]=r[t]+r[o];}return e}();function W(r){return typeof BigInt>"u"?Lt:r}function Lt(){throw new Error("BigInt not supported")}return q}var X=Kr();X.Buffer;X.SlowBuffer;X.INSPECT_MAX_BYTES;X.kMaxLength;var L=X.Buffer;X.INSPECT_MAX_BYTES;X.kMaxLength;var me=(C=>(C.AUTHENTICATION_ERROR="AUTHENTICATION_ERROR",C.INVALID_CONFIGURATION="INVALID_CONFIGURATION",C.WALLET_CONNECTION_ERROR="WALLET_CONNECTION_ERROR",C.NOT_LOGGED_IN_ERROR="NOT_LOGGED_IN_ERROR",C.SILENT_LOGIN_ERROR="SILENT_LOGIN_ERROR",C.REFRESH_TOKEN_ERROR="REFRESH_TOKEN_ERROR",C.USER_REGISTRATION_ERROR="USER_REGISTRATION_ERROR",C.USER_NOT_REGISTERED_ERROR="USER_NOT_REGISTERED_ERROR",C.LOGOUT_ERROR="LOGOUT_ERROR",C.TRANSFER_ERROR="TRANSFER_ERROR",C.CREATE_ORDER_ERROR="CREATE_ORDER_ERROR",C.CANCEL_ORDER_ERROR="CANCEL_ORDER_ERROR",C.EXCHANGE_TRANSFER_ERROR="EXCHANGE_TRANSFER_ERROR",C.CREATE_TRADE_ERROR="CREATE_TRADE_ERROR",C.OPERATION_NOT_SUPPORTED_ERROR="OPERATION_NOT_SUPPORTED_ERROR",C.LINK_WALLET_ALREADY_LINKED_ERROR="LINK_WALLET_ALREADY_LINKED_ERROR",C.LINK_WALLET_MAX_WALLETS_LINKED_ERROR="LINK_WALLET_MAX_WALLETS_LINKED_ERROR",C.LINK_WALLET_VALIDATION_ERROR="LINK_WALLET_VALIDATION_ERROR",C.LINK_WALLET_DUPLICATE_NONCE_ERROR="LINK_WALLET_DUPLICATE_NONCE_ERROR",C.LINK_WALLET_GENERIC_ERROR="LINK_WALLET_GENERIC_ERROR",C.SERVICE_UNAVAILABLE_ERROR="SERVICE_UNAVAILABLE_ERROR",C.TRANSACTION_REJECTED="TRANSACTION_REJECTED",C))(me||{});function Le(c){return typeof c=="object"&&c!==null&&"code"in c&&"message"in c}var Wr=c=>{if(Le(c))return c;if(typeof c=="object"&&c!==null&&"response"in c){let{response:n}=c;if(n?.data&&Le(n.data))return n.data}},G=class extends Error{type;constructor(n,a){super(n),this.type=a;}},z=async(c,n)=>{try{return await c()}catch(a){let u;if(a instanceof G&&a.type==="SERVICE_UNAVAILABLE_ERROR")throw new G(a.message,a.type);let d=Wr(a);throw d?u=d.message:u=a.message,new G(u,n)}};var Zr=(c,n,a)=>{let u=n.map(d=>!c[d]&&d).filter(d=>d).join(", ");if(u!==""){let d=`${u} cannot be null`;throw new G(d,"INVALID_CONFIGURATION")}},ae=class{authenticationDomain;passportDomain;oidcConfiguration;crossSdkBridgeEnabled;popupOverlayOptions;constructor({authenticationDomain:n,passportDomain:a,crossSdkBridgeEnabled:u,popupOverlayOptions:d,...h}){Zr(h,["clientId","redirectUri"]),this.oidcConfiguration=h,this.crossSdkBridgeEnabled=u||!1,this.popupOverlayOptions=d,this.authenticationDomain=n||"https://auth.immutable.com",this.passportDomain=a||"https://passport.immutable.com";}};var Je=(n=>(n.ZKEVM="zkEvm",n))(Je||{}),Pe=c=>!!c.zkEvm,je=(a=>(a.OptedIn="opted_in",a.Unsubscribed="unsubscribed",a))(je||{}),Ue=(a=>(a.LOGGED_OUT="loggedOut",a.LOGGED_IN="loggedIn",a))(Ue||{});var qe="im_passport_embedded_login_prompt";var re="passport-overlay",le="passport-overlay-contents",ge=`${re}-close`,Ee=`${re}-try-again`,Xe=`
6
6
  <svg
7
7
  viewBox="0 0 20 20"
8
8
  fill="none"
@@ -384,6 +384,6 @@ function Ae(c){throw new Error("Node.js process "+c+" is not supported by JSPM c
384
384
  opacity: 1;
385
385
  }
386
386
  }
387
- `,document.head.appendChild(n);};getEmbeddedLoginIFrame=()=>{let n=document.createElement("iframe");return n.id=st,n.src=this.getHref(),n.style.height="100vh",n.style.width="100vw",n.style.maxHeight=`${Xr}px`,n.style.maxWidth=`${Qr}px`,n.style.borderRadius=en,n.style.opacity="0",n.style.transform="scale(0.6)",n.style.animation="passportEmbeddedLoginPromptPopBounceIn 1s ease forwards",c.appendIFrameStylesIfNeeded(),n};displayEmbeddedLoginPrompt(){return new Promise((n,a)=>{let u=this.getEmbeddedLoginIFrame(),d=({data:h,origin:s})=>{if(!(s!==this.config.authenticationDomain||h.eventType!==qe))switch(h.messageType){case"login_method_selected":{let y=h.payload;window.removeEventListener("message",d),$.remove(),n(y);break}case"login_prompt_error":{window.removeEventListener("message",d),$.remove(),a(new Error("Error during embedded login prompt",{cause:h.payload}));break}case"login_prompt_closed":{window.removeEventListener("message",d),$.remove(),a(new Error("Popup closed by user"));break}default:window.removeEventListener("message",d),$.remove(),a(new Error(`Unsupported message type: ${h.messageType}`));break}};window.addEventListener("message",d),$.appendOverlay(u,()=>{window.removeEventListener("message",d),$.remove(),a(new Error("Popup closed by user"));});})}};var ne=class{listeners=new Map;emit(n,...a){let u=this.listeners.get(n);!u||u.size===0||[...u].forEach(d=>{d(...a);});}on(n,a){let u=this.listeners.get(n)??new Set;u.add(a),this.listeners.set(n,u);}removeListener(n,a){let u=this.listeners.get(n);u&&(u.delete(a),u.size===0&&this.listeners.delete(n));}};var H=async(c,n,a=!0,u=!0)=>{let d=trackFlow("passport",n,a);try{return await c(d)}catch(h){throw h instanceof Error?trackError("passport",n,h,{flowId:d.details.flowId}):d.addEvent("errored"),h}finally{u&&d.addEvent("End");}};var nn=()=>typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof globalThis<"u"?globalThis:{},on=c=>{let n=c.replace(/-/g,"+").replace(/_/g,"/"),a=n.length%4===0?"":"=".repeat(4-n.length%4);return n+a},sn=c=>{let n=nn();if(typeof n.atob!="function")return null;let a=n.atob(c),u=new Uint8Array(a.length);for(let h=0;h<a.length;h+=1)u[h]=a.charCodeAt(h);if(typeof n.TextDecoder=="function")return new n.TextDecoder("utf-8").decode(u);let d="";for(let h=0;h<u.length;h+=1)d+=String.fromCharCode(u[h]);return d},an=c=>{if(typeof L<"u")return L.from(c,"base64").toString("utf-8");let n=sn(c);if(n===null)throw new Error("Base64 decoding is not supported in this environment");return n},J=c=>{if(typeof c!="string")throw new Error("JWT must be a string");let n=c.split(".");if(n.length<2)throw new Error("Invalid JWT: payload segment is missing");let a=n[1],u=an(on(a));try{return JSON.parse(u)}catch{throw new Error("Invalid JWT payload: unable to parse JSON")}};var at="pkce_state",lt="pkce_verifier",ln=3600,ce=class{isTokenValid(n){try{let u=J(n).exp??0,d=Date.now()/1e3+ln;return u>d}catch{return !1}}savePKCEData(n){localStorage.setItem(at,n.state),localStorage.setItem(lt,n.verifier);}getPKCEData(){let n=localStorage.getItem(at),a=localStorage.getItem(lt);return n&&a?{state:n,verifier:a}:null}};var un=(...c)=>{if(typeof v>"u")return;v?.env?.JEST_WORKER_ID===void 0&&console.warn(...c);},ie={warn:un};function ut(c){try{let n=J(c),a=Math.floor(Date.now()/1e3);return n.exp?n.exp<=a+30:!0}catch{return !0}}function ct(c){let{id_token:n,access_token:a}=c;return !a||!n?!0:ut(a)||ut(n)}var pe=class{disableGenericPopupOverlay;disableBlockedPopupOverlay;overlay;isBlockedOverlay;tryAgainListener;onCloseListener;constructor(n,a=!1){this.disableBlockedPopupOverlay=n.disableBlockedPopupOverlay||!1,this.disableGenericPopupOverlay=n.disableGenericPopupOverlay||!1,this.isBlockedOverlay=a;}append(n,a){this.shouldAppendOverlay()&&(this.appendOverlay(),this.updateTryAgainButton(n),this.updateCloseButton(a));}update(n){this.updateTryAgainButton(n);}remove(){this.overlay&&this.overlay.remove();}shouldAppendOverlay(){return !(this.disableGenericPopupOverlay&&this.disableBlockedPopupOverlay||this.disableGenericPopupOverlay&&!this.isBlockedOverlay||this.disableBlockedPopupOverlay&&this.isBlockedOverlay)}appendOverlay(){if(!this.overlay){ye({id:"link-googleapis",href:"https://fonts.googleapis.com"}),ye({id:"link-gstatic",href:"https://fonts.gstatic.com",crossOrigin:"anonymous"}),ye({id:"link-roboto",href:"https://fonts.googleapis.com/css2?family=Roboto:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&display=swap",rel:"stylesheet"});let a=document.createElement("div");a.innerHTML=this.isBlockedOverlay?nt():it(),document.body.insertAdjacentElement("beforeend",a),this.overlay=a;}}updateTryAgainButton(n){let a=document.getElementById(Ee);a&&(this.tryAgainListener&&a.removeEventListener("click",this.tryAgainListener),this.tryAgainListener=n,a.addEventListener("click",n));}updateCloseButton(n){let a=document.getElementById(ge);a&&(this.onCloseListener&&a.removeEventListener("click",this.onCloseListener),this.onCloseListener=n,a.addEventListener("click",n));}};var we=class{storage;constructor(n,a){this.storage=cn.createInstance({name:n,driver:a});}get length(){return this.storage.length()}clear(){return this.storage.clear()}getItem(n){return this.storage.getItem(n)}key(n){return this.storage.key(n)}async removeItem(n){await this.storage.removeItem(n);}async setItem(n,a){await this.storage.setItem(n,a);}};var Rn=500,Tn={"Content-Type":"application/x-www-form-urlencoded"},vn=c=>{if(c)try{return JSON.parse(c)}catch{return}},An=(c,n,a)=>{if(c&&typeof c=="object"){let u=c,d=u.error_description??u.message??u.error;if(typeof d=="string"&&d.trim().length>0)return d}return n.trim().length>0?n:`Token request failed with status ${a}`},On="/v2/logout",Ln="/im-logged-out",Pn="/authorize",Un=c=>c?Ln:On,Bn=c=>{let{authenticationDomain:n,oidcConfiguration:a}=c,u;c.crossSdkBridgeEnabled?u=new we("ImmutableSDKPassport",cn.INDEXEDDB):typeof window<"u"?u=window.localStorage:u=new InMemoryWebStorage;let d=new WebStorageStateStore({store:u}),h=new URL(Un(c.crossSdkBridgeEnabled),n.replace(/^(?:https?:\/\/)?(.*)/,"https://$1"));return h.searchParams.set("client_id",a.clientId),a.logoutRedirectUri&&h.searchParams.set("returnTo",a.logoutRedirectUri),{authority:n,redirect_uri:a.redirectUri,popup_redirect_uri:a.popupRedirectUri||a.redirectUri,client_id:a.clientId,metadata:{authorization_endpoint:`${n}/authorize`,token_endpoint:`${n}/oauth/token`,userinfo_endpoint:`${n}/userinfo`,end_session_endpoint:h.toString(),revocation_endpoint:`${n}/oauth/revoke`},automaticSilentRenew:!1,scope:a.scope,userStore:d,revokeTokenTypes:["refresh_token"],extraQueryParams:{...a.audience?{audience:a.audience}:{}}}};function ke(c){return btoa(String.fromCharCode(...new Uint8Array(c))).replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,"")}async function kn(c){let a=new TextEncoder().encode(c);return window.crypto.subtle.digest("SHA-256",a)}var be=class c{config;userManager;deviceCredentialsManager;embeddedLoginPrompt;logoutMode;refreshingPromise=null;eventEmitter;constructor(n){this.config=new ae(n),this.embeddedLoginPrompt=new ue(this.config),this.userManager=new UserManager(Bn(this.config)),this.deviceCredentialsManager=new ce,this.logoutMode=this.config.oidcConfiguration.logoutMode||"redirect",this.eventEmitter=new ne,track("passport","initialise");}async login(n){return H(async()=>{let{useCachedSession:a=!1,useSilentLogin:u}=n||{},d=null;try{d=await this.getUserInternal();}catch(h){if(h instanceof Error&&!h.message.includes("Unknown or invalid refresh token")&&trackError("passport","login",h),a)throw h;ie.warn("Failed to retrieve a cached user session",h);}if(!d&&u)d=await this.forceUserRefreshInternal();else if(!d&&!a){if(n?.useRedirectFlow)return await this.loginWithRedirectInternal(n?.directLoginOptions),null;d=await this.loginWithPopup(n?.directLoginOptions);}return d&&this.handleSuccessfulLogin(d),d},"login")}async loginWithRedirect(n){await this.loginWithRedirectInternal(n);}async loginCallback(){return H(async()=>{let n=await this.loginCallbackInternal();return n&&this.handleSuccessfulLogin(n),n},"loginCallback")}async logout(){await H(async()=>{await this.logoutInternal(),this.eventEmitter.emit("loggedOut");},"logout");}async getUser(){return this.getUserInternal()}async getUserOrLogin(){let n=null;try{n=await this.getUserInternal();}catch(u){ie.warn("Failed to retrieve a cached user session",u);}if(n)return n;let a=await this.loginWithPopup();return this.handleSuccessfulLogin(a),a}async getUserZkEvm(){return this.getUserZkEvmInternal()}async getIdToken(){return H(async()=>(await this.getUserInternal())?.idToken,"getIdToken",!1)}async getAccessToken(){return H(async()=>(await this.getUserInternal())?.accessToken,"getAccessToken",!1,!1)}async isLoggedIn(){return await this.getUser()!==null}async forceUserRefresh(){return this.forceUserRefreshInternal()}forceUserRefreshInBackground(){this.forceUserRefreshInBackgroundInternal();}async loginWithPKCEFlow(n,a){return H(async()=>this.getPKCEAuthorizationUrl(n,a),"loginWithPKCEFlow")}async loginWithPKCEFlowCallback(n,a){return H(async()=>{let u=await this.loginWithPKCEFlowCallbackInternal(n,a);return this.handleSuccessfulLogin(u),u},"loginWithPKCEFlowCallback")}async storeTokens(n){return H(async()=>{let a=await this.storeTokensInternal(n);return this.handleSuccessfulLogin(a),a},"storeTokens")}async getLogoutUrl(){return H(async()=>(await this.userManager.removeUser(),this.eventEmitter.emit("loggedOut"),await this.getLogoutUrlInternal()||void 0),"getLogoutUrl")}async logoutSilentCallback(n){return H(()=>this.userManager.signoutSilentCallback(n),"logoutSilentCallback")}getConfig(){return this.config}async getClientId(){return this.config.oidcConfiguration.clientId}handleSuccessfulLogin(n){this.eventEmitter.emit("loggedIn",n),identify({passportId:n.profile.sub});}buildExtraQueryParams(n,a){let u={...this.userManager.settings?.extraQueryParams??{},rid:getDetail(Detail.RUNTIME_ID)||""};if(n){if(n.directLoginMethod==="email"){let d=n.email;d&&(u.direct=n.directLoginMethod,u.email=d);}else u.direct=n.directLoginMethod;n.marketingConsentStatus&&(u.marketingConsent=n.marketingConsentStatus);}return a&&(u.im_passport_trace_id=a),u}async loginWithRedirectInternal(n){await this.userManager.clearStaleState(),await z(async()=>{let a=this.buildExtraQueryParams(n);await this.userManager.signinRedirect({extraQueryParams:a});},"AUTHENTICATION_ERROR");}async loginWithPopup(n){return z(async()=>{let a,u;if(n)a=n;else if(!this.config.popupOverlayOptions?.disableHeadlessLoginPromptOverlay){let{imPassportTraceId:s,...y}=await this.embeddedLoginPrompt.displayEmbeddedLoginPrompt();a=y,u=s;}let d=window.crypto.randomUUID(),h=async()=>{let s=this.buildExtraQueryParams(a,u),y=this.userManager.signinPopup({extraQueryParams:s,popupWindowFeatures:{width:410,height:450},popupWindowTarget:d,popupAbortOnClose:!0}),w=window.open("",d);if(w){let U=!1,m=new Promise((C,S)=>{let f=setInterval(()=>{w.closed&&!U&&(clearInterval(f),S(new Error("Popup closed by user")));},Rn);y.finally(()=>{U=!0,clearInterval(f),w.closed||w.close();});});return Promise.race([y,m])}return y};return new Promise((s,y)=>{h().then(w=>s(c.mapOidcUserToDomainModel(w))).catch(w=>{if(!(w instanceof Error)||w.message!=="Attempted to navigate on a disposed window"){y(w);return}let U=!1,m=new pe(this.config.popupOverlayOptions||{},!0);m.append(async()=>{try{if(U)window.open("",d);else {U=!0;let C=await h();m.remove(),s(c.mapOidcUserToDomainModel(C));}}catch(C){m.remove(),y(C);}},()=>{m.remove(),y(new Error("Popup closed by user"));});});})},"AUTHENTICATION_ERROR")}static mapOidcUserToDomainModel=n=>{let a,u;if(n.id_token){let h=J(n.id_token);a=h?.passport,h?.username&&(u=h?.username);}let d={expired:n.expired,idToken:n.id_token,accessToken:n.access_token,refreshToken:n.refresh_token,profile:{sub:n.profile.sub,email:n.profile.email,nickname:n.profile.nickname,username:u}};return a?.zkevm_eth_address&&a?.zkevm_user_admin_address&&(d.zkEvm={ethAddress:a.zkevm_eth_address,userAdminAddress:a.zkevm_user_admin_address}),d};static mapDeviceTokenResponseToOidcUser=n=>{let a=J(n.id_token);return new User({id_token:n.id_token,access_token:n.access_token,refresh_token:n.refresh_token,token_type:n.token_type,profile:{sub:a.sub,iss:a.iss,aud:a.aud,exp:a.exp,iat:a.iat,email:a.email,nickname:a.nickname,passport:a.passport,...a.username?{username:a.username}:{}}})};async loginCallbackInternal(){return z(async()=>{let n=await this.userManager.signinCallback();if(n)return c.mapOidcUserToDomainModel(n)},"AUTHENTICATION_ERROR")}async getPKCEAuthorizationUrl(n,a){let u=ke(window.crypto.getRandomValues(new Uint8Array(32))),d=ke(await kn(u)),h=ke(window.crypto.getRandomValues(new Uint8Array(32))),{redirectUri:s,scope:y,audience:w,clientId:U}=this.config.oidcConfiguration;this.deviceCredentialsManager.savePKCEData({state:h,verifier:u});let m=new URL(Pn,this.config.authenticationDomain);if(m.searchParams.set("response_type","code"),m.searchParams.set("code_challenge",d),m.searchParams.set("code_challenge_method","S256"),m.searchParams.set("client_id",U),m.searchParams.set("redirect_uri",s),m.searchParams.set("state",h),y&&m.searchParams.set("scope",y),w&&m.searchParams.set("audience",w),n){if(n.directLoginMethod==="email"){let C=n.email;C&&(m.searchParams.set("direct",n.directLoginMethod),m.searchParams.set("email",C));}else m.searchParams.set("direct",n.directLoginMethod);n.marketingConsentStatus&&m.searchParams.set("marketingConsent",n.marketingConsentStatus);}return a&&m.searchParams.set("im_passport_trace_id",a),m.toString()}async loginWithPKCEFlowCallbackInternal(n,a){return z(async()=>{let u=this.deviceCredentialsManager.getPKCEData();if(!u)throw new Error("No code verifier or state for PKCE");if(a!==u.state)throw new Error("Provided state does not match stored state");let d=await this.getPKCEToken(n,u.verifier),h=c.mapDeviceTokenResponseToOidcUser(d),s=c.mapOidcUserToDomainModel(h);return await this.userManager.storeUser(h),s},"AUTHENTICATION_ERROR")}async getPKCEToken(n,a){let u=await fetch(`${this.config.authenticationDomain}/oauth/token`,{method:"POST",headers:Tn,body:new URLSearchParams({client_id:this.config.oidcConfiguration.clientId,grant_type:"authorization_code",code_verifier:a,code:n,redirect_uri:this.config.oidcConfiguration.redirectUri})}),d=await u.text(),h=vn(d);if(!u.ok)throw new Error(An(h,d,u.status));if(!h||typeof h!="object")throw new Error("Token endpoint returned an invalid response");return h}async storeTokensInternal(n){return z(async()=>{let a=c.mapDeviceTokenResponseToOidcUser(n),u=c.mapOidcUserToDomainModel(a);return await this.userManager.storeUser(a),u},"AUTHENTICATION_ERROR")}async logoutInternal(){await z(async()=>{await this.userManager.revokeTokens(["refresh_token"]),this.logoutMode==="silent"?await this.userManager.signoutSilent():await this.userManager.signoutRedirect();},"LOGOUT_ERROR");}async getLogoutUrlInternal(){let n=this.userManager.settings?.metadata?.end_session_endpoint;return n||(ie.warn("Failed to get logout URL"),null)}forceUserRefreshInBackgroundInternal(){this.refreshTokenAndUpdatePromise().catch(n=>{ie.warn("Failed to refresh user token",n);});}async forceUserRefreshInternal(){return this.refreshTokenAndUpdatePromise().catch(n=>(ie.warn("Failed to refresh user token",n),null))}async refreshTokenAndUpdatePromise(){return this.refreshingPromise?this.refreshingPromise:(this.refreshingPromise=new Promise((n,a)=>{(async()=>{try{let u=await this.userManager.signinSilent();if(u){n(c.mapOidcUserToDomainModel(u));return}n(null);}catch(u){let d="AUTHENTICATION_ERROR",h="Failed to refresh token",s=!0;if(u instanceof ErrorTimeout?(d="SILENT_LOGIN_ERROR",h=`${h}: ${u.message}`,s=!1):u instanceof ErrorResponse?(d="NOT_LOGGED_IN_ERROR",h=`${h}: ${u.message||u.error_description}`):u instanceof Error?h=`${h}: ${u.message}`:typeof u=="string"&&(h=`${h}: ${u}`),s)try{await this.userManager.removeUser();}catch(y){y instanceof Error&&(h=`${h}: Failed to remove user: ${y.message}`);}a(new G(h,d));}finally{this.refreshingPromise=null;}})();}),this.refreshingPromise)}async getUserInternal(n=a=>!0){if(this.refreshingPromise){let u=await this.refreshingPromise;return u&&n(u)?u:null}let a=await this.userManager.getUser();if(!a)return null;if(!ct(a)){let u=c.mapOidcUserToDomainModel(a);if(u&&n(u))return u}if(a.refresh_token){let u=await this.refreshTokenAndUpdatePromise();if(u&&n(u))return u}return null}async getUserZkEvmInternal(){let n=await this.getUserInternal(Pe);if(!n)throw new Error("Failed to obtain a User with the required ZkEvm attributes");return n}};/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh <https://feross.org/opensource> */
387
+ `,document.head.appendChild(n);};getEmbeddedLoginIFrame=()=>{let n=document.createElement("iframe");return n.id=st,n.src=this.getHref(),n.style.height="100vh",n.style.width="100vw",n.style.maxHeight=`${Xr}px`,n.style.maxWidth=`${Qr}px`,n.style.borderRadius=en,n.style.opacity="0",n.style.transform="scale(0.6)",n.style.animation="passportEmbeddedLoginPromptPopBounceIn 1s ease forwards",c.appendIFrameStylesIfNeeded(),n};displayEmbeddedLoginPrompt(){return new Promise((n,a)=>{let u=this.getEmbeddedLoginIFrame(),d=({data:h,origin:s})=>{if(!(s!==this.config.authenticationDomain||h.eventType!==qe))switch(h.messageType){case"login_method_selected":{let y=h.payload;window.removeEventListener("message",d),$.remove(),n(y);break}case"login_prompt_error":{window.removeEventListener("message",d),$.remove(),a(new Error("Error during embedded login prompt",{cause:h.payload}));break}case"login_prompt_closed":{window.removeEventListener("message",d),$.remove(),a(new Error("Popup closed by user"));break}default:window.removeEventListener("message",d),$.remove(),a(new Error(`Unsupported message type: ${h.messageType}`));break}};window.addEventListener("message",d),$.appendOverlay(u,()=>{window.removeEventListener("message",d),$.remove(),a(new Error("Popup closed by user"));});})}};var ne=class{listeners=new Map;emit(n,...a){let u=this.listeners.get(n);!u||u.size===0||[...u].forEach(d=>{d(...a);});}on(n,a){let u=this.listeners.get(n)??new Set;u.add(a),this.listeners.set(n,u);}removeListener(n,a){let u=this.listeners.get(n);u&&(u.delete(a),u.size===0&&this.listeners.delete(n));}};var H=async(c,n,a=!0,u=!0)=>{let d=trackFlow("passport",n,a);try{return await c(d)}catch(h){throw h instanceof Error?trackError("passport",n,h,{flowId:d.details.flowId}):d.addEvent("errored"),h}finally{u&&d.addEvent("End");}};var nn=()=>typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof globalThis<"u"?globalThis:{},on=c=>{let n=c.replace(/-/g,"+").replace(/_/g,"/"),a=n.length%4===0?"":"=".repeat(4-n.length%4);return n+a},sn=c=>{let n=nn();if(typeof n.atob!="function")return null;let a=n.atob(c),u=new Uint8Array(a.length);for(let h=0;h<a.length;h+=1)u[h]=a.charCodeAt(h);if(typeof n.TextDecoder=="function")return new n.TextDecoder("utf-8").decode(u);let d="";for(let h=0;h<u.length;h+=1)d+=String.fromCharCode(u[h]);return d},an=c=>{if(typeof L<"u")return L.from(c,"base64").toString("utf-8");let n=sn(c);if(n===null)throw new Error("Base64 decoding is not supported in this environment");return n},J=c=>{if(typeof c!="string")throw new Error("JWT must be a string");let n=c.split(".");if(n.length<2)throw new Error("Invalid JWT: payload segment is missing");let a=n[1],u=an(on(a));try{return JSON.parse(u)}catch{throw new Error("Invalid JWT payload: unable to parse JSON")}};var at="pkce_state",lt="pkce_verifier",ln=3600,ce=class{isTokenValid(n){try{let u=J(n).exp??0,d=Date.now()/1e3+ln;return u>d}catch{return !1}}savePKCEData(n){localStorage.setItem(at,n.state),localStorage.setItem(lt,n.verifier);}getPKCEData(){let n=localStorage.getItem(at),a=localStorage.getItem(lt);return n&&a?{state:n,verifier:a}:null}};var un=(...c)=>{if(typeof v>"u")return;v?.env?.JEST_WORKER_ID===void 0&&console.warn(...c);},ie={warn:un};function ut(c){try{let n=J(c),a=Math.floor(Date.now()/1e3);return n.exp?n.exp<=a+30:!0}catch{return !0}}function ct(c){let{id_token:n,access_token:a}=c;return !a||!n?!0:ut(a)||ut(n)}var pe=class{disableGenericPopupOverlay;disableBlockedPopupOverlay;overlay;isBlockedOverlay;tryAgainListener;onCloseListener;constructor(n,a=!1){this.disableBlockedPopupOverlay=n.disableBlockedPopupOverlay||!1,this.disableGenericPopupOverlay=n.disableGenericPopupOverlay||!1,this.isBlockedOverlay=a;}append(n,a){this.shouldAppendOverlay()&&(this.appendOverlay(),this.updateTryAgainButton(n),this.updateCloseButton(a));}update(n){this.updateTryAgainButton(n);}remove(){this.overlay&&this.overlay.remove();}shouldAppendOverlay(){return !(this.disableGenericPopupOverlay&&this.disableBlockedPopupOverlay||this.disableGenericPopupOverlay&&!this.isBlockedOverlay||this.disableBlockedPopupOverlay&&this.isBlockedOverlay)}appendOverlay(){if(!this.overlay){ye({id:"link-googleapis",href:"https://fonts.googleapis.com"}),ye({id:"link-gstatic",href:"https://fonts.gstatic.com",crossOrigin:"anonymous"}),ye({id:"link-roboto",href:"https://fonts.googleapis.com/css2?family=Roboto:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&display=swap",rel:"stylesheet"});let a=document.createElement("div");a.innerHTML=this.isBlockedOverlay?nt():it(),document.body.insertAdjacentElement("beforeend",a),this.overlay=a;}}updateTryAgainButton(n){let a=document.getElementById(Ee);a&&(this.tryAgainListener&&a.removeEventListener("click",this.tryAgainListener),this.tryAgainListener=n,a.addEventListener("click",n));}updateCloseButton(n){let a=document.getElementById(ge);a&&(this.onCloseListener&&a.removeEventListener("click",this.onCloseListener),this.onCloseListener=n,a.addEventListener("click",n));}};var we=class{storage;constructor(n,a){this.storage=cn.createInstance({name:n,driver:a});}get length(){return this.storage.length()}clear(){return this.storage.clear()}getItem(n){return this.storage.getItem(n)}key(n){return this.storage.key(n)}async removeItem(n){await this.storage.removeItem(n);}async setItem(n,a){await this.storage.setItem(n,a);}};var Rn={"Content-Type":"application/x-www-form-urlencoded"},Tn=c=>{if(c)try{return JSON.parse(c)}catch{return}},vn=(c,n,a)=>{if(c&&typeof c=="object"){let u=c,d=u.error_description??u.message??u.error;if(typeof d=="string"&&d.trim().length>0)return d}return n.trim().length>0?n:`Token request failed with status ${a}`},An="/v2/logout",On="/im-logged-out",Ln="/authorize",Pn=c=>c?On:An,Un=c=>{let{authenticationDomain:n,oidcConfiguration:a}=c,u;c.crossSdkBridgeEnabled?u=new we("ImmutableSDKPassport",cn.INDEXEDDB):typeof window<"u"?u=window.localStorage:u=new InMemoryWebStorage;let d=new WebStorageStateStore({store:u}),h=new URL(Pn(c.crossSdkBridgeEnabled),n.replace(/^(?:https?:\/\/)?(.*)/,"https://$1"));return h.searchParams.set("client_id",a.clientId),a.logoutRedirectUri&&h.searchParams.set("returnTo",a.logoutRedirectUri),{authority:n,redirect_uri:a.redirectUri,popup_redirect_uri:a.popupRedirectUri||a.redirectUri,client_id:a.clientId,metadata:{authorization_endpoint:`${n}/authorize`,token_endpoint:`${n}/oauth/token`,userinfo_endpoint:`${n}/userinfo`,end_session_endpoint:h.toString(),revocation_endpoint:`${n}/oauth/revoke`},automaticSilentRenew:!1,scope:a.scope,userStore:d,revokeTokenTypes:["refresh_token"],extraQueryParams:{...a.audience?{audience:a.audience}:{}}}};function ke(c){return btoa(String.fromCharCode(...new Uint8Array(c))).replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,"")}async function Bn(c){let a=new TextEncoder().encode(c);return window.crypto.subtle.digest("SHA-256",a)}var be=class c{config;userManager;deviceCredentialsManager;embeddedLoginPrompt;logoutMode;refreshingPromise=null;eventEmitter;constructor(n){this.config=new ae(n),this.embeddedLoginPrompt=new ue(this.config),this.userManager=new UserManager(Un(this.config)),this.deviceCredentialsManager=new ce,this.logoutMode=this.config.oidcConfiguration.logoutMode||"redirect",this.eventEmitter=new ne,track("passport","initialise");}async login(n){return H(async()=>{let{useCachedSession:a=!1,useSilentLogin:u}=n||{},d=null;try{d=await this.getUserInternal();}catch(h){if(h instanceof Error&&!h.message.includes("Unknown or invalid refresh token")&&trackError("passport","login",h),a)throw h;ie.warn("Failed to retrieve a cached user session",h);}if(!d&&u)d=await this.forceUserRefreshInternal();else if(!d&&!a){if(n?.useRedirectFlow)return await this.loginWithRedirectInternal(n?.directLoginOptions),null;d=await this.loginWithPopup(n?.directLoginOptions);}return d&&this.handleSuccessfulLogin(d),d},"login")}async loginWithRedirect(n){await this.loginWithRedirectInternal(n);}async loginCallback(){return H(async()=>{let n=await this.loginCallbackInternal();return n&&this.handleSuccessfulLogin(n),n},"loginCallback")}async logout(){await H(async()=>{await this.logoutInternal(),this.eventEmitter.emit("loggedOut");},"logout");}async getUser(){return this.getUserInternal()}async getUserOrLogin(){let n=null;try{n=await this.getUserInternal();}catch(u){ie.warn("Failed to retrieve a cached user session",u);}if(n)return n;let a=await this.loginWithPopup();return this.handleSuccessfulLogin(a),a}async getUserZkEvm(){return this.getUserZkEvmInternal()}async getIdToken(){return H(async()=>(await this.getUserInternal())?.idToken,"getIdToken",!1)}async getAccessToken(){return H(async()=>(await this.getUserInternal())?.accessToken,"getAccessToken",!1,!1)}async isLoggedIn(){return await this.getUser()!==null}async forceUserRefresh(){return this.forceUserRefreshInternal()}forceUserRefreshInBackground(){this.forceUserRefreshInBackgroundInternal();}async loginWithPKCEFlow(n,a){return H(async()=>this.getPKCEAuthorizationUrl(n,a),"loginWithPKCEFlow")}async loginWithPKCEFlowCallback(n,a){return H(async()=>{let u=await this.loginWithPKCEFlowCallbackInternal(n,a);return this.handleSuccessfulLogin(u),u},"loginWithPKCEFlowCallback")}async storeTokens(n){return H(async()=>{let a=await this.storeTokensInternal(n);return this.handleSuccessfulLogin(a),a},"storeTokens")}async getLogoutUrl(){return H(async()=>(await this.userManager.removeUser(),this.eventEmitter.emit("loggedOut"),await this.getLogoutUrlInternal()||void 0),"getLogoutUrl")}async logoutSilentCallback(n){return H(()=>this.userManager.signoutSilentCallback(n),"logoutSilentCallback")}getConfig(){return this.config}async getClientId(){return this.config.oidcConfiguration.clientId}handleSuccessfulLogin(n){this.eventEmitter.emit("loggedIn",n),identify({passportId:n.profile.sub});}buildExtraQueryParams(n,a){let u={...this.userManager.settings?.extraQueryParams??{},rid:getDetail(Detail.RUNTIME_ID)||""};if(n){if(n.directLoginMethod==="email"){let d=n.email;d&&(u.direct=n.directLoginMethod,u.email=d);}else u.direct=n.directLoginMethod;n.marketingConsentStatus&&(u.marketingConsent=n.marketingConsentStatus);}return a&&(u.im_passport_trace_id=a),u}async loginWithRedirectInternal(n){await this.userManager.clearStaleState(),await z(async()=>{let a=this.buildExtraQueryParams(n);await this.userManager.signinRedirect({extraQueryParams:a});},"AUTHENTICATION_ERROR");}async loginWithPopup(n){return z(async()=>{let a,u;if(n)a=n;else if(!this.config.popupOverlayOptions?.disableHeadlessLoginPromptOverlay){let{imPassportTraceId:s,...y}=await this.embeddedLoginPrompt.displayEmbeddedLoginPrompt();a=y,u=s;}let d=window.crypto.randomUUID(),h=async()=>{let s=this.buildExtraQueryParams(a,u);return this.userManager.signinPopup({extraQueryParams:s,popupWindowFeatures:{width:410,height:450},popupWindowTarget:d,popupAbortOnClose:!0})};return new Promise((s,y)=>{h().then(T=>s(c.mapOidcUserToDomainModel(T))).catch(T=>{if(!(T instanceof Error)||T.message!=="Attempted to navigate on a disposed window"){y(T);return}let k=!1,m=new pe(this.config.popupOverlayOptions||{},!0);m.append(async()=>{try{if(k)window.open("",d);else {k=!0;let I=await h();m.remove(),s(c.mapOidcUserToDomainModel(I));}}catch(I){m.remove(),y(I);}},()=>{m.remove(),y(new Error("Popup closed by user"));});});})},"AUTHENTICATION_ERROR")}static mapOidcUserToDomainModel=n=>{let a,u;if(n.id_token){let h=J(n.id_token);a=h?.passport,h?.username&&(u=h?.username);}let d={expired:n.expired,idToken:n.id_token,accessToken:n.access_token,refreshToken:n.refresh_token,profile:{sub:n.profile.sub,email:n.profile.email,nickname:n.profile.nickname,username:u}};return a?.zkevm_eth_address&&a?.zkevm_user_admin_address&&(d.zkEvm={ethAddress:a.zkevm_eth_address,userAdminAddress:a.zkevm_user_admin_address}),d};static mapDeviceTokenResponseToOidcUser=n=>{let a=J(n.id_token);return new User({id_token:n.id_token,access_token:n.access_token,refresh_token:n.refresh_token,token_type:n.token_type,profile:{sub:a.sub,iss:a.iss,aud:a.aud,exp:a.exp,iat:a.iat,email:a.email,nickname:a.nickname,passport:a.passport,...a.username?{username:a.username}:{}}})};async loginCallbackInternal(){return z(async()=>{let n=await this.userManager.signinCallback();if(n)return c.mapOidcUserToDomainModel(n)},"AUTHENTICATION_ERROR")}async getPKCEAuthorizationUrl(n,a){let u=ke(window.crypto.getRandomValues(new Uint8Array(32))),d=ke(await Bn(u)),h=ke(window.crypto.getRandomValues(new Uint8Array(32))),{redirectUri:s,scope:y,audience:T,clientId:k}=this.config.oidcConfiguration;this.deviceCredentialsManager.savePKCEData({state:h,verifier:u});let m=new URL(Ln,this.config.authenticationDomain);if(m.searchParams.set("response_type","code"),m.searchParams.set("code_challenge",d),m.searchParams.set("code_challenge_method","S256"),m.searchParams.set("client_id",k),m.searchParams.set("redirect_uri",s),m.searchParams.set("state",h),y&&m.searchParams.set("scope",y),T&&m.searchParams.set("audience",T),n){if(n.directLoginMethod==="email"){let I=n.email;I&&(m.searchParams.set("direct",n.directLoginMethod),m.searchParams.set("email",I));}else m.searchParams.set("direct",n.directLoginMethod);n.marketingConsentStatus&&m.searchParams.set("marketingConsent",n.marketingConsentStatus);}return a&&m.searchParams.set("im_passport_trace_id",a),m.toString()}async loginWithPKCEFlowCallbackInternal(n,a){return z(async()=>{let u=this.deviceCredentialsManager.getPKCEData();if(!u)throw new Error("No code verifier or state for PKCE");if(a!==u.state)throw new Error("Provided state does not match stored state");let d=await this.getPKCEToken(n,u.verifier),h=c.mapDeviceTokenResponseToOidcUser(d),s=c.mapOidcUserToDomainModel(h);return await this.userManager.storeUser(h),s},"AUTHENTICATION_ERROR")}async getPKCEToken(n,a){let u=await fetch(`${this.config.authenticationDomain}/oauth/token`,{method:"POST",headers:Rn,body:new URLSearchParams({client_id:this.config.oidcConfiguration.clientId,grant_type:"authorization_code",code_verifier:a,code:n,redirect_uri:this.config.oidcConfiguration.redirectUri})}),d=await u.text(),h=Tn(d);if(!u.ok)throw new Error(vn(h,d,u.status));if(!h||typeof h!="object")throw new Error("Token endpoint returned an invalid response");return h}async storeTokensInternal(n){return z(async()=>{let a=c.mapDeviceTokenResponseToOidcUser(n),u=c.mapOidcUserToDomainModel(a);return await this.userManager.storeUser(a),u},"AUTHENTICATION_ERROR")}async logoutInternal(){await z(async()=>{await this.userManager.revokeTokens(["refresh_token"]),this.logoutMode==="silent"?await this.userManager.signoutSilent():await this.userManager.signoutRedirect();},"LOGOUT_ERROR");}async getLogoutUrlInternal(){let n=this.userManager.settings?.metadata?.end_session_endpoint;return n||(ie.warn("Failed to get logout URL"),null)}forceUserRefreshInBackgroundInternal(){this.refreshTokenAndUpdatePromise().catch(n=>{ie.warn("Failed to refresh user token",n);});}async forceUserRefreshInternal(){return this.refreshTokenAndUpdatePromise().catch(n=>(ie.warn("Failed to refresh user token",n),null))}async refreshTokenAndUpdatePromise(){return this.refreshingPromise?this.refreshingPromise:(this.refreshingPromise=new Promise((n,a)=>{(async()=>{try{let u=await this.userManager.signinSilent();if(u){n(c.mapOidcUserToDomainModel(u));return}n(null);}catch(u){let d="AUTHENTICATION_ERROR",h="Failed to refresh token",s=!0;if(u instanceof ErrorTimeout?(d="SILENT_LOGIN_ERROR",h=`${h}: ${u.message}`,s=!1):u instanceof ErrorResponse?(d="NOT_LOGGED_IN_ERROR",h=`${h}: ${u.message||u.error_description}`):u instanceof Error?h=`${h}: ${u.message}`:typeof u=="string"&&(h=`${h}: ${u}`),s)try{await this.userManager.removeUser();}catch(y){y instanceof Error&&(h=`${h}: Failed to remove user: ${y.message}`);}a(new G(h,d));}finally{this.refreshingPromise=null;}})();}),this.refreshingPromise)}async getUserInternal(n=a=>!0){if(this.refreshingPromise){let u=await this.refreshingPromise;return u&&n(u)?u:null}let a=await this.userManager.getUser();if(!a)return null;if(!ct(a)){let u=c.mapOidcUserToDomainModel(a);if(u&&n(u))return u}if(a.refresh_token){let u=await this.refreshTokenAndUpdatePromise();if(u&&n(u))return u}return null}async getUserZkEvmInternal(){let n=await this.getUserInternal(Pe);if(!n)throw new Error("Failed to obtain a User with the required ZkEvm attributes");return n}};/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh <https://feross.org/opensource> */
388
388
 
389
389
  export { be as Auth, ae as AuthConfiguration, Ue as AuthEvents, je as MarketingConsentStatus, G as PassportError, me as PassportErrorType, Je as RollupType, ne as TypedEventEmitter, J as decodeJwtPayload, Le as isAPIError, Pe as isUserZkEvm, z as withPassportError };
@@ -1,14 +1,14 @@
1
1
  'use strict';
2
2
 
3
3
  var oidcClientTs = require('oidc-client-ts');
4
- var _e = require('localforage');
4
+ var he = require('localforage');
5
5
  var metrics = require('@imtbl/metrics');
6
6
 
7
7
  function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
8
8
 
9
- var _e__default = /*#__PURE__*/_interopDefault(_e);
9
+ var he__default = /*#__PURE__*/_interopDefault(he);
10
10
 
11
- var P=(s=>(s.AUTHENTICATION_ERROR="AUTHENTICATION_ERROR",s.INVALID_CONFIGURATION="INVALID_CONFIGURATION",s.WALLET_CONNECTION_ERROR="WALLET_CONNECTION_ERROR",s.NOT_LOGGED_IN_ERROR="NOT_LOGGED_IN_ERROR",s.SILENT_LOGIN_ERROR="SILENT_LOGIN_ERROR",s.REFRESH_TOKEN_ERROR="REFRESH_TOKEN_ERROR",s.USER_REGISTRATION_ERROR="USER_REGISTRATION_ERROR",s.USER_NOT_REGISTERED_ERROR="USER_NOT_REGISTERED_ERROR",s.LOGOUT_ERROR="LOGOUT_ERROR",s.TRANSFER_ERROR="TRANSFER_ERROR",s.CREATE_ORDER_ERROR="CREATE_ORDER_ERROR",s.CANCEL_ORDER_ERROR="CANCEL_ORDER_ERROR",s.EXCHANGE_TRANSFER_ERROR="EXCHANGE_TRANSFER_ERROR",s.CREATE_TRADE_ERROR="CREATE_TRADE_ERROR",s.OPERATION_NOT_SUPPORTED_ERROR="OPERATION_NOT_SUPPORTED_ERROR",s.LINK_WALLET_ALREADY_LINKED_ERROR="LINK_WALLET_ALREADY_LINKED_ERROR",s.LINK_WALLET_MAX_WALLETS_LINKED_ERROR="LINK_WALLET_MAX_WALLETS_LINKED_ERROR",s.LINK_WALLET_VALIDATION_ERROR="LINK_WALLET_VALIDATION_ERROR",s.LINK_WALLET_DUPLICATE_NONCE_ERROR="LINK_WALLET_DUPLICATE_NONCE_ERROR",s.LINK_WALLET_GENERIC_ERROR="LINK_WALLET_GENERIC_ERROR",s.SERVICE_UNAVAILABLE_ERROR="SERVICE_UNAVAILABLE_ERROR",s.TRANSACTION_REJECTED="TRANSACTION_REJECTED",s))(P||{});function b(n){return typeof n=="object"&&n!==null&&"code"in n&&"message"in n}var te=n=>{if(b(n))return n;if(typeof n=="object"&&n!==null&&"response"in n){let{response:e}=n;if(e?.data&&b(e.data))return e.data}},u=class extends Error{type;constructor(e,t){super(e),this.type=t;}},g=async(n,e)=>{try{return await n()}catch(t){let r;if(t instanceof u&&t.type==="SERVICE_UNAVAILABLE_ERROR")throw new u(t.message,t.type);let o=te(t);throw o?r=o.message:r=t.message,new u(r,e)}};var re=(n,e,t)=>{let r=e.map(o=>!n[o]&&o).filter(o=>o).join(", ");if(r!==""){let o=`${r} cannot be null`;throw new u(o,"INVALID_CONFIGURATION")}},R=class{authenticationDomain;passportDomain;oidcConfiguration;crossSdkBridgeEnabled;popupOverlayOptions;constructor({authenticationDomain:e,passportDomain:t,crossSdkBridgeEnabled:r,popupOverlayOptions:o,...i}){re(i,["clientId","redirectUri"]),this.oidcConfiguration=i,this.crossSdkBridgeEnabled=r||!1,this.popupOverlayOptions=o,this.authenticationDomain=e||"https://auth.immutable.com",this.passportDomain=t||"https://passport.immutable.com";}};var F=(e=>(e.ZKEVM="zkEvm",e))(F||{}),U=n=>!!n.zkEvm,H=(t=>(t.OptedIn="opted_in",t.Unsubscribed="unsubscribed",t))(H||{}),x=(t=>(t.LOGGED_OUT="loggedOut",t.LOGGED_IN="loggedIn",t))(x||{});var V="im_passport_embedded_login_prompt";var C="passport-overlay",O="passport-overlay-contents",I=`${C}-close`,w=`${C}-try-again`,G=`
11
+ var P=(s=>(s.AUTHENTICATION_ERROR="AUTHENTICATION_ERROR",s.INVALID_CONFIGURATION="INVALID_CONFIGURATION",s.WALLET_CONNECTION_ERROR="WALLET_CONNECTION_ERROR",s.NOT_LOGGED_IN_ERROR="NOT_LOGGED_IN_ERROR",s.SILENT_LOGIN_ERROR="SILENT_LOGIN_ERROR",s.REFRESH_TOKEN_ERROR="REFRESH_TOKEN_ERROR",s.USER_REGISTRATION_ERROR="USER_REGISTRATION_ERROR",s.USER_NOT_REGISTERED_ERROR="USER_NOT_REGISTERED_ERROR",s.LOGOUT_ERROR="LOGOUT_ERROR",s.TRANSFER_ERROR="TRANSFER_ERROR",s.CREATE_ORDER_ERROR="CREATE_ORDER_ERROR",s.CANCEL_ORDER_ERROR="CANCEL_ORDER_ERROR",s.EXCHANGE_TRANSFER_ERROR="EXCHANGE_TRANSFER_ERROR",s.CREATE_TRADE_ERROR="CREATE_TRADE_ERROR",s.OPERATION_NOT_SUPPORTED_ERROR="OPERATION_NOT_SUPPORTED_ERROR",s.LINK_WALLET_ALREADY_LINKED_ERROR="LINK_WALLET_ALREADY_LINKED_ERROR",s.LINK_WALLET_MAX_WALLETS_LINKED_ERROR="LINK_WALLET_MAX_WALLETS_LINKED_ERROR",s.LINK_WALLET_VALIDATION_ERROR="LINK_WALLET_VALIDATION_ERROR",s.LINK_WALLET_DUPLICATE_NONCE_ERROR="LINK_WALLET_DUPLICATE_NONCE_ERROR",s.LINK_WALLET_GENERIC_ERROR="LINK_WALLET_GENERIC_ERROR",s.SERVICE_UNAVAILABLE_ERROR="SERVICE_UNAVAILABLE_ERROR",s.TRANSACTION_REJECTED="TRANSACTION_REJECTED",s))(P||{});function b(n){return typeof n=="object"&&n!==null&&"code"in n&&"message"in n}var X=n=>{if(b(n))return n;if(typeof n=="object"&&n!==null&&"response"in n){let{response:e}=n;if(e?.data&&b(e.data))return e.data}},p=class extends Error{type;constructor(e,t){super(e),this.type=t;}},g=async(n,e)=>{try{return await n()}catch(t){let r;if(t instanceof p&&t.type==="SERVICE_UNAVAILABLE_ERROR")throw new p(t.message,t.type);let i=X(t);throw i?r=i.message:r=t.message,new p(r,e)}};var ee=(n,e,t)=>{let r=e.map(i=>!n[i]&&i).filter(i=>i).join(", ");if(r!==""){let i=`${r} cannot be null`;throw new p(i,"INVALID_CONFIGURATION")}},_=class{authenticationDomain;passportDomain;oidcConfiguration;crossSdkBridgeEnabled;popupOverlayOptions;constructor({authenticationDomain:e,passportDomain:t,crossSdkBridgeEnabled:r,popupOverlayOptions:i,...o}){ee(o,["clientId","redirectUri"]),this.oidcConfiguration=o,this.crossSdkBridgeEnabled=r||!1,this.popupOverlayOptions=i,this.authenticationDomain=e||"https://auth.immutable.com",this.passportDomain=t||"https://passport.immutable.com";}};var D=(e=>(e.ZKEVM="zkEvm",e))(D||{}),U=n=>!!n.zkEvm,F=(t=>(t.OptedIn="opted_in",t.Unsubscribed="unsubscribed",t))(F||{}),x=(t=>(t.LOGGED_OUT="loggedOut",t.LOGGED_IN="loggedIn",t))(x||{});var H="im_passport_embedded_login_prompt";var h="passport-overlay",R="passport-overlay-contents",I=`${h}-close`,w=`${h}-try-again`,V=`
12
12
  <svg
13
13
  viewBox="0 0 20 20"
14
14
  fill="none"
@@ -20,7 +20,7 @@ var P=(s=>(s.AUTHENTICATION_ERROR="AUTHENTICATION_ERROR",s.INVALID_CONFIGURATION
20
20
  fill="#F3F3F3"
21
21
  />
22
22
  </svg>
23
- `,B=`
23
+ `,G=`
24
24
  <svg
25
25
  viewBox="0 0 17 16"
26
26
  fill="none"
@@ -217,7 +217,7 @@ var P=(s=>(s.AUTHENTICATION_ERROR="AUTHENTICATION_ERROR",s.INVALID_CONFIGURATION
217
217
  </clipPath>
218
218
  </defs>
219
219
  </svg>
220
- `;var ne=()=>`
220
+ `;var te=()=>`
221
221
  <button
222
222
  id="${I}"
223
223
  style="
@@ -235,9 +235,9 @@ var P=(s=>(s.AUTHENTICATION_ERROR="AUTHENTICATION_ERROR",s.INVALID_CONFIGURATION
235
235
  justify-content: center !important;
236
236
  "
237
237
  >
238
- ${G}
238
+ ${V}
239
239
  </button>
240
- `,K=()=>`
240
+ `,B=()=>`
241
241
  <button
242
242
  id="${w}"
243
243
  style="
@@ -254,7 +254,7 @@ var P=(s=>(s.AUTHENTICATION_ERROR="AUTHENTICATION_ERROR",s.INVALID_CONFIGURATION
254
254
  >
255
255
  Try again
256
256
  </button>
257
- `,oe=()=>`
257
+ `,re=()=>`
258
258
  ${S}
259
259
  <div
260
260
  style="
@@ -265,7 +265,7 @@ var P=(s=>(s.AUTHENTICATION_ERROR="AUTHENTICATION_ERROR",s.INVALID_CONFIGURATION
265
265
  margin-bottom: 10px !important;
266
266
  "
267
267
  >
268
- ${B}
268
+ ${G}
269
269
  Pop-up blocked
270
270
  </div>
271
271
  <p style="
@@ -278,8 +278,8 @@ var P=(s=>(s.AUTHENTICATION_ERROR="AUTHENTICATION_ERROR",s.INVALID_CONFIGURATION
278
278
  If the problem continues, adjust your<br />
279
279
  browser settings.
280
280
  </p>
281
- ${K()}
282
- `,ie=()=>`
281
+ ${B()}
282
+ `,ne=()=>`
283
283
  ${S}
284
284
  <p style="
285
285
  color: #b6b6b6 !important;
@@ -289,10 +289,10 @@ var P=(s=>(s.AUTHENTICATION_ERROR="AUTHENTICATION_ERROR",s.INVALID_CONFIGURATION
289
289
  >
290
290
  Secure pop-up not showing?<br />We'll help you re-launch
291
291
  </p>
292
- ${K()}
293
- `,Z=n=>`
292
+ ${B()}
293
+ `,K=n=>`
294
294
  <div
295
- id="${C}"
295
+ id="${h}"
296
296
  style="
297
297
  position: fixed !important;
298
298
  top: 0 !important;
@@ -315,9 +315,9 @@ var P=(s=>(s.AUTHENTICATION_ERROR="AUTHENTICATION_ERROR",s.INVALID_CONFIGURATION
315
315
  z-index: 2147483647 !important;
316
316
  "
317
317
  >
318
- ${ne()}
318
+ ${te()}
319
319
  <div
320
- id="${O}"
320
+ id="${R}"
321
321
  style="
322
322
  display: flex !important;
323
323
  flex-direction: column !important;
@@ -328,9 +328,9 @@ var P=(s=>(s.AUTHENTICATION_ERROR="AUTHENTICATION_ERROR",s.INVALID_CONFIGURATION
328
328
  ${n??""}
329
329
  </div>
330
330
  </div>
331
- `,W=()=>`
331
+ `,Z=()=>`
332
332
  <div
333
- id="${C}"
333
+ id="${h}"
334
334
  style="
335
335
  position: fixed;
336
336
  top: 0;
@@ -348,7 +348,7 @@ var P=(s=>(s.AUTHENTICATION_ERROR="AUTHENTICATION_ERROR",s.INVALID_CONFIGURATION
348
348
  "
349
349
  >
350
350
  <div
351
- id="${O}"
351
+ id="${R}"
352
352
  style="
353
353
  display: flex;
354
354
  flex-direction: column;
@@ -357,7 +357,7 @@ var P=(s=>(s.AUTHENTICATION_ERROR="AUTHENTICATION_ERROR",s.INVALID_CONFIGURATION
357
357
  "
358
358
  />
359
359
  </div>
360
- `;function A({id:n,href:e,rel:t,crossOrigin:r}){let o=`${C}-${n}`;if(!document.getElementById(o)){let i=document.createElement("link");i.id=o,i.href=e,t&&(i.rel=t),r&&(i.crossOrigin=r),document.head.appendChild(i);}}var $=()=>Z(oe()),Y=()=>Z(ie());var m=class{static overlay;static onCloseListener;static closeButton;static remove(){this.onCloseListener&&this.closeButton?.removeEventListener?.("click",this.onCloseListener),this.overlay?.remove(),this.closeButton=void 0,this.onCloseListener=void 0,this.overlay=void 0;}static appendOverlay(e,t){if(!this.overlay){let r=document.createElement("div");r.innerHTML=W(),document.body.insertAdjacentElement("beforeend",r);let o=document.querySelector(`#${O}`);o&&o.appendChild(e),r.addEventListener("click",t),this.overlay=r;}}};var le=660,de=440,ce="16px",z="passport-embedded-login-keyframes",J="passport-embedded-login-iframe",v=class n{config;constructor(e){this.config=e;}getHref=()=>`${this.config.authenticationDomain}/im-embedded-login-prompt?client_id=${this.config.oidcConfiguration.clientId}&rid=${metrics.getDetail(metrics.Detail.RUNTIME_ID)}`;static appendIFrameStylesIfNeeded=()=>{if(document.getElementById(z))return;let e=document.createElement("style");e.id=z,e.textContent=`
360
+ `;function A({id:n,href:e,rel:t,crossOrigin:r}){let i=`${h}-${n}`;if(!document.getElementById(i)){let o=document.createElement("link");o.id=i,o.href=e,t&&(o.rel=t),r&&(o.crossOrigin=r),document.head.appendChild(o);}}var W=()=>K(re()),$=()=>K(ne());var u=class{static overlay;static onCloseListener;static closeButton;static remove(){this.onCloseListener&&this.closeButton?.removeEventListener?.("click",this.onCloseListener),this.overlay?.remove(),this.closeButton=void 0,this.onCloseListener=void 0,this.overlay=void 0;}static appendOverlay(e,t){if(!this.overlay){let r=document.createElement("div");r.innerHTML=Z(),document.body.insertAdjacentElement("beforeend",r);let i=document.querySelector(`#${R}`);i&&i.appendChild(e),r.addEventListener("click",t),this.overlay=r;}}};var se=660,ae=440,le="16px",Y="passport-embedded-login-keyframes",z="passport-embedded-login-iframe",O=class n{config;constructor(e){this.config=e;}getHref=()=>`${this.config.authenticationDomain}/im-embedded-login-prompt?client_id=${this.config.oidcConfiguration.clientId}&rid=${metrics.getDetail(metrics.Detail.RUNTIME_ID)}`;static appendIFrameStylesIfNeeded=()=>{if(document.getElementById(Y))return;let e=document.createElement("style");e.id=Y,e.textContent=`
361
361
  @keyframes passportEmbeddedLoginPromptPopBounceIn {
362
362
  0% {
363
363
  opacity: 0.5;
@@ -376,7 +376,7 @@ var P=(s=>(s.AUTHENTICATION_ERROR="AUTHENTICATION_ERROR",s.INVALID_CONFIGURATION
376
376
  }
377
377
 
378
378
  @media (max-height: 400px) {
379
- #${J} {
379
+ #${z} {
380
380
  width: 100% !important;
381
381
  max-width: none !important;
382
382
  }
@@ -390,16 +390,16 @@ var P=(s=>(s.AUTHENTICATION_ERROR="AUTHENTICATION_ERROR",s.INVALID_CONFIGURATION
390
390
  opacity: 1;
391
391
  }
392
392
  }
393
- `,document.head.appendChild(e);};getEmbeddedLoginIFrame=()=>{let e=document.createElement("iframe");return e.id=J,e.src=this.getHref(),e.style.height="100vh",e.style.width="100vw",e.style.maxHeight=`${le}px`,e.style.maxWidth=`${de}px`,e.style.borderRadius=ce,e.style.opacity="0",e.style.transform="scale(0.6)",e.style.animation="passportEmbeddedLoginPromptPopBounceIn 1s ease forwards",n.appendIFrameStylesIfNeeded(),e};displayEmbeddedLoginPrompt(){return new Promise((e,t)=>{let r=this.getEmbeddedLoginIFrame(),o=({data:i,origin:d})=>{if(!(d!==this.config.authenticationDomain||i.eventType!==V))switch(i.messageType){case"login_method_selected":{let l=i.payload;window.removeEventListener("message",o),m.remove(),e(l);break}case"login_prompt_error":{window.removeEventListener("message",o),m.remove(),t(new Error("Error during embedded login prompt",{cause:i.payload}));break}case"login_prompt_closed":{window.removeEventListener("message",o),m.remove(),t(new Error("Popup closed by user"));break}default:window.removeEventListener("message",o),m.remove(),t(new Error(`Unsupported message type: ${i.messageType}`));break}};window.addEventListener("message",o),m.appendOverlay(r,()=>{window.removeEventListener("message",o),m.remove(),t(new Error("Popup closed by user"));});})}};var _=class{listeners=new Map;emit(e,...t){let r=this.listeners.get(e);!r||r.size===0||[...r].forEach(o=>{o(...t);});}on(e,t){let r=this.listeners.get(e)??new Set;r.add(t),this.listeners.set(e,r);}removeListener(e,t){let r=this.listeners.get(e);r&&(r.delete(t),r.size===0&&this.listeners.delete(e));}};var p=async(n,e,t=!0,r=!0)=>{let o=metrics.trackFlow("passport",e,t);try{return await n(o)}catch(i){throw i instanceof Error?metrics.trackError("passport",e,i,{flowId:o.details.flowId}):o.addEvent("errored"),i}finally{r&&o.addEvent("End");}};var me=()=>typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{},ge=n=>{let e=n.replace(/-/g,"+").replace(/_/g,"/"),t=e.length%4===0?"":"=".repeat(4-e.length%4);return e+t},fe=n=>{let e=me();if(typeof e.atob!="function")return null;let t=e.atob(n),r=new Uint8Array(t.length);for(let i=0;i<t.length;i+=1)r[i]=t.charCodeAt(i);if(typeof e.TextDecoder=="function")return new e.TextDecoder("utf-8").decode(r);let o="";for(let i=0;i<r.length;i+=1)o+=String.fromCharCode(r[i]);return o},Ee=n=>{if(typeof Buffer<"u")return Buffer.from(n,"base64").toString("utf-8");let e=fe(n);if(e===null)throw new Error("Base64 decoding is not supported in this environment");return e},f=n=>{if(typeof n!="string")throw new Error("JWT must be a string");let e=n.split(".");if(e.length<2)throw new Error("Invalid JWT: payload segment is missing");let t=e[1],r=Ee(ge(t));try{return JSON.parse(r)}catch{throw new Error("Invalid JWT payload: unable to parse JSON")}};var j="pkce_state",Q="pkce_verifier",he=3600,T=class{isTokenValid(e){try{let r=f(e).exp??0,o=Date.now()/1e3+he;return r>o}catch{return !1}}savePKCEData(e){localStorage.setItem(j,e.state),localStorage.setItem(Q,e.verifier);}getPKCEData(){let e=localStorage.getItem(j),t=localStorage.getItem(Q);return e&&t?{state:e,verifier:t}:null}};var Ce=(...n)=>{if(typeof process>"u")return;process?.env?.JEST_WORKER_ID===void 0&&console.warn(...n);},y={warn:Ce};function q(n){try{let e=f(n),t=Math.floor(Date.now()/1e3);return e.exp?e.exp<=t+30:!0}catch{return !0}}function X(n){let{id_token:e,access_token:t}=n;return !t||!e?!0:q(t)||q(e)}var L=class{disableGenericPopupOverlay;disableBlockedPopupOverlay;overlay;isBlockedOverlay;tryAgainListener;onCloseListener;constructor(e,t=!1){this.disableBlockedPopupOverlay=e.disableBlockedPopupOverlay||!1,this.disableGenericPopupOverlay=e.disableGenericPopupOverlay||!1,this.isBlockedOverlay=t;}append(e,t){this.shouldAppendOverlay()&&(this.appendOverlay(),this.updateTryAgainButton(e),this.updateCloseButton(t));}update(e){this.updateTryAgainButton(e);}remove(){this.overlay&&this.overlay.remove();}shouldAppendOverlay(){return !(this.disableGenericPopupOverlay&&this.disableBlockedPopupOverlay||this.disableGenericPopupOverlay&&!this.isBlockedOverlay||this.disableBlockedPopupOverlay&&this.isBlockedOverlay)}appendOverlay(){if(!this.overlay){A({id:"link-googleapis",href:"https://fonts.googleapis.com"}),A({id:"link-gstatic",href:"https://fonts.gstatic.com",crossOrigin:"anonymous"}),A({id:"link-roboto",href:"https://fonts.googleapis.com/css2?family=Roboto:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&display=swap",rel:"stylesheet"});let t=document.createElement("div");t.innerHTML=this.isBlockedOverlay?$():Y(),document.body.insertAdjacentElement("beforeend",t),this.overlay=t;}}updateTryAgainButton(e){let t=document.getElementById(w);t&&(this.tryAgainListener&&t.removeEventListener("click",this.tryAgainListener),this.tryAgainListener=e,t.addEventListener("click",e));}updateCloseButton(e){let t=document.getElementById(I);t&&(this.onCloseListener&&t.removeEventListener("click",this.onCloseListener),this.onCloseListener=e,t.addEventListener("click",e));}};var k=class{storage;constructor(e,t){this.storage=_e__default.default.createInstance({name:e,driver:t});}get length(){return this.storage.length()}clear(){return this.storage.clear()}getItem(e){return this.storage.getItem(e)}key(e){return this.storage.key(e)}async removeItem(e){await this.storage.removeItem(e);}async setItem(e,t){await this.storage.setItem(e,t);}};var Ue=500,xe={"Content-Type":"application/x-www-form-urlencoded"},Se=n=>{if(n)try{return JSON.parse(n)}catch{return}},Me=(n,e,t)=>{if(n&&typeof n=="object"){let r=n,o=r.error_description??r.message??r.error;if(typeof o=="string"&&o.trim().length>0)return o}return e.trim().length>0?e:`Token request failed with status ${t}`},Ne="/v2/logout",De="/im-logged-out",Fe="/authorize",He=n=>n?De:Ne,Ve=n=>{let{authenticationDomain:e,oidcConfiguration:t}=n,r;n.crossSdkBridgeEnabled?r=new k("ImmutableSDKPassport",_e__default.default.INDEXEDDB):typeof window<"u"?r=window.localStorage:r=new oidcClientTs.InMemoryWebStorage;let o=new oidcClientTs.WebStorageStateStore({store:r}),i=new URL(He(n.crossSdkBridgeEnabled),e.replace(/^(?:https?:\/\/)?(.*)/,"https://$1"));return i.searchParams.set("client_id",t.clientId),t.logoutRedirectUri&&i.searchParams.set("returnTo",t.logoutRedirectUri),{authority:e,redirect_uri:t.redirectUri,popup_redirect_uri:t.popupRedirectUri||t.redirectUri,client_id:t.clientId,metadata:{authorization_endpoint:`${e}/authorize`,token_endpoint:`${e}/oauth/token`,userinfo_endpoint:`${e}/userinfo`,end_session_endpoint:i.toString(),revocation_endpoint:`${e}/oauth/revoke`},automaticSilentRenew:!1,scope:t.scope,userStore:o,revokeTokenTypes:["refresh_token"],extraQueryParams:{...t.audience?{audience:t.audience}:{}}}};function M(n){return btoa(String.fromCharCode(...new Uint8Array(n))).replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,"")}async function Ge(n){let t=new TextEncoder().encode(n);return window.crypto.subtle.digest("SHA-256",t)}var N=class n{config;userManager;deviceCredentialsManager;embeddedLoginPrompt;logoutMode;refreshingPromise=null;eventEmitter;constructor(e){this.config=new R(e),this.embeddedLoginPrompt=new v(this.config),this.userManager=new oidcClientTs.UserManager(Ve(this.config)),this.deviceCredentialsManager=new T,this.logoutMode=this.config.oidcConfiguration.logoutMode||"redirect",this.eventEmitter=new _,metrics.track("passport","initialise");}async login(e){return p(async()=>{let{useCachedSession:t=!1,useSilentLogin:r}=e||{},o=null;try{o=await this.getUserInternal();}catch(i){if(i instanceof Error&&!i.message.includes("Unknown or invalid refresh token")&&metrics.trackError("passport","login",i),t)throw i;y.warn("Failed to retrieve a cached user session",i);}if(!o&&r)o=await this.forceUserRefreshInternal();else if(!o&&!t){if(e?.useRedirectFlow)return await this.loginWithRedirectInternal(e?.directLoginOptions),null;o=await this.loginWithPopup(e?.directLoginOptions);}return o&&this.handleSuccessfulLogin(o),o},"login")}async loginWithRedirect(e){await this.loginWithRedirectInternal(e);}async loginCallback(){return p(async()=>{let e=await this.loginCallbackInternal();return e&&this.handleSuccessfulLogin(e),e},"loginCallback")}async logout(){await p(async()=>{await this.logoutInternal(),this.eventEmitter.emit("loggedOut");},"logout");}async getUser(){return this.getUserInternal()}async getUserOrLogin(){let e=null;try{e=await this.getUserInternal();}catch(r){y.warn("Failed to retrieve a cached user session",r);}if(e)return e;let t=await this.loginWithPopup();return this.handleSuccessfulLogin(t),t}async getUserZkEvm(){return this.getUserZkEvmInternal()}async getIdToken(){return p(async()=>(await this.getUserInternal())?.idToken,"getIdToken",!1)}async getAccessToken(){return p(async()=>(await this.getUserInternal())?.accessToken,"getAccessToken",!1,!1)}async isLoggedIn(){return await this.getUser()!==null}async forceUserRefresh(){return this.forceUserRefreshInternal()}forceUserRefreshInBackground(){this.forceUserRefreshInBackgroundInternal();}async loginWithPKCEFlow(e,t){return p(async()=>this.getPKCEAuthorizationUrl(e,t),"loginWithPKCEFlow")}async loginWithPKCEFlowCallback(e,t){return p(async()=>{let r=await this.loginWithPKCEFlowCallbackInternal(e,t);return this.handleSuccessfulLogin(r),r},"loginWithPKCEFlowCallback")}async storeTokens(e){return p(async()=>{let t=await this.storeTokensInternal(e);return this.handleSuccessfulLogin(t),t},"storeTokens")}async getLogoutUrl(){return p(async()=>(await this.userManager.removeUser(),this.eventEmitter.emit("loggedOut"),await this.getLogoutUrlInternal()||void 0),"getLogoutUrl")}async logoutSilentCallback(e){return p(()=>this.userManager.signoutSilentCallback(e),"logoutSilentCallback")}getConfig(){return this.config}async getClientId(){return this.config.oidcConfiguration.clientId}handleSuccessfulLogin(e){this.eventEmitter.emit("loggedIn",e),metrics.identify({passportId:e.profile.sub});}buildExtraQueryParams(e,t){let r={...this.userManager.settings?.extraQueryParams??{},rid:metrics.getDetail(metrics.Detail.RUNTIME_ID)||""};if(e){if(e.directLoginMethod==="email"){let o=e.email;o&&(r.direct=e.directLoginMethod,r.email=o);}else r.direct=e.directLoginMethod;e.marketingConsentStatus&&(r.marketingConsent=e.marketingConsentStatus);}return t&&(r.im_passport_trace_id=t),r}async loginWithRedirectInternal(e){await this.userManager.clearStaleState(),await g(async()=>{let t=this.buildExtraQueryParams(e);await this.userManager.signinRedirect({extraQueryParams:t});},"AUTHENTICATION_ERROR");}async loginWithPopup(e){return g(async()=>{let t,r;if(e)t=e;else if(!this.config.popupOverlayOptions?.disableHeadlessLoginPromptOverlay){let{imPassportTraceId:d,...l}=await this.embeddedLoginPrompt.displayEmbeddedLoginPrompt();t=l,r=d;}let o=window.crypto.randomUUID(),i=async()=>{let d=this.buildExtraQueryParams(t,r),l=this.userManager.signinPopup({extraQueryParams:d,popupWindowFeatures:{width:410,height:450},popupWindowTarget:o,popupAbortOnClose:!0}),c=window.open("",o);if(c){let E=!1,a=new Promise((h,ee)=>{let D=setInterval(()=>{c.closed&&!E&&(clearInterval(D),ee(new Error("Popup closed by user")));},Ue);l.finally(()=>{E=!0,clearInterval(D),c.closed||c.close();});});return Promise.race([l,a])}return l};return new Promise((d,l)=>{i().then(c=>d(n.mapOidcUserToDomainModel(c))).catch(c=>{if(!(c instanceof Error)||c.message!=="Attempted to navigate on a disposed window"){l(c);return}let E=!1,a=new L(this.config.popupOverlayOptions||{},!0);a.append(async()=>{try{if(E)window.open("",o);else {E=!0;let h=await i();a.remove(),d(n.mapOidcUserToDomainModel(h));}}catch(h){a.remove(),l(h);}},()=>{a.remove(),l(new Error("Popup closed by user"));});});})},"AUTHENTICATION_ERROR")}static mapOidcUserToDomainModel=e=>{let t,r;if(e.id_token){let i=f(e.id_token);t=i?.passport,i?.username&&(r=i?.username);}let o={expired:e.expired,idToken:e.id_token,accessToken:e.access_token,refreshToken:e.refresh_token,profile:{sub:e.profile.sub,email:e.profile.email,nickname:e.profile.nickname,username:r}};return t?.zkevm_eth_address&&t?.zkevm_user_admin_address&&(o.zkEvm={ethAddress:t.zkevm_eth_address,userAdminAddress:t.zkevm_user_admin_address}),o};static mapDeviceTokenResponseToOidcUser=e=>{let t=f(e.id_token);return new oidcClientTs.User({id_token:e.id_token,access_token:e.access_token,refresh_token:e.refresh_token,token_type:e.token_type,profile:{sub:t.sub,iss:t.iss,aud:t.aud,exp:t.exp,iat:t.iat,email:t.email,nickname:t.nickname,passport:t.passport,...t.username?{username:t.username}:{}}})};async loginCallbackInternal(){return g(async()=>{let e=await this.userManager.signinCallback();if(e)return n.mapOidcUserToDomainModel(e)},"AUTHENTICATION_ERROR")}async getPKCEAuthorizationUrl(e,t){let r=M(window.crypto.getRandomValues(new Uint8Array(32))),o=M(await Ge(r)),i=M(window.crypto.getRandomValues(new Uint8Array(32))),{redirectUri:d,scope:l,audience:c,clientId:E}=this.config.oidcConfiguration;this.deviceCredentialsManager.savePKCEData({state:i,verifier:r});let a=new URL(Fe,this.config.authenticationDomain);if(a.searchParams.set("response_type","code"),a.searchParams.set("code_challenge",o),a.searchParams.set("code_challenge_method","S256"),a.searchParams.set("client_id",E),a.searchParams.set("redirect_uri",d),a.searchParams.set("state",i),l&&a.searchParams.set("scope",l),c&&a.searchParams.set("audience",c),e){if(e.directLoginMethod==="email"){let h=e.email;h&&(a.searchParams.set("direct",e.directLoginMethod),a.searchParams.set("email",h));}else a.searchParams.set("direct",e.directLoginMethod);e.marketingConsentStatus&&a.searchParams.set("marketingConsent",e.marketingConsentStatus);}return t&&a.searchParams.set("im_passport_trace_id",t),a.toString()}async loginWithPKCEFlowCallbackInternal(e,t){return g(async()=>{let r=this.deviceCredentialsManager.getPKCEData();if(!r)throw new Error("No code verifier or state for PKCE");if(t!==r.state)throw new Error("Provided state does not match stored state");let o=await this.getPKCEToken(e,r.verifier),i=n.mapDeviceTokenResponseToOidcUser(o),d=n.mapOidcUserToDomainModel(i);return await this.userManager.storeUser(i),d},"AUTHENTICATION_ERROR")}async getPKCEToken(e,t){let r=await fetch(`${this.config.authenticationDomain}/oauth/token`,{method:"POST",headers:xe,body:new URLSearchParams({client_id:this.config.oidcConfiguration.clientId,grant_type:"authorization_code",code_verifier:t,code:e,redirect_uri:this.config.oidcConfiguration.redirectUri})}),o=await r.text(),i=Se(o);if(!r.ok)throw new Error(Me(i,o,r.status));if(!i||typeof i!="object")throw new Error("Token endpoint returned an invalid response");return i}async storeTokensInternal(e){return g(async()=>{let t=n.mapDeviceTokenResponseToOidcUser(e),r=n.mapOidcUserToDomainModel(t);return await this.userManager.storeUser(t),r},"AUTHENTICATION_ERROR")}async logoutInternal(){await g(async()=>{await this.userManager.revokeTokens(["refresh_token"]),this.logoutMode==="silent"?await this.userManager.signoutSilent():await this.userManager.signoutRedirect();},"LOGOUT_ERROR");}async getLogoutUrlInternal(){let e=this.userManager.settings?.metadata?.end_session_endpoint;return e||(y.warn("Failed to get logout URL"),null)}forceUserRefreshInBackgroundInternal(){this.refreshTokenAndUpdatePromise().catch(e=>{y.warn("Failed to refresh user token",e);});}async forceUserRefreshInternal(){return this.refreshTokenAndUpdatePromise().catch(e=>(y.warn("Failed to refresh user token",e),null))}async refreshTokenAndUpdatePromise(){return this.refreshingPromise?this.refreshingPromise:(this.refreshingPromise=new Promise((e,t)=>{(async()=>{try{let r=await this.userManager.signinSilent();if(r){e(n.mapOidcUserToDomainModel(r));return}e(null);}catch(r){let o="AUTHENTICATION_ERROR",i="Failed to refresh token",d=!0;if(r instanceof oidcClientTs.ErrorTimeout?(o="SILENT_LOGIN_ERROR",i=`${i}: ${r.message}`,d=!1):r instanceof oidcClientTs.ErrorResponse?(o="NOT_LOGGED_IN_ERROR",i=`${i}: ${r.message||r.error_description}`):r instanceof Error?i=`${i}: ${r.message}`:typeof r=="string"&&(i=`${i}: ${r}`),d)try{await this.userManager.removeUser();}catch(l){l instanceof Error&&(i=`${i}: Failed to remove user: ${l.message}`);}t(new u(i,o));}finally{this.refreshingPromise=null;}})();}),this.refreshingPromise)}async getUserInternal(e=t=>!0){if(this.refreshingPromise){let r=await this.refreshingPromise;return r&&e(r)?r:null}let t=await this.userManager.getUser();if(!t)return null;if(!X(t)){let r=n.mapOidcUserToDomainModel(t);if(r&&e(r))return r}if(t.refresh_token){let r=await this.refreshTokenAndUpdatePromise();if(r&&e(r))return r}return null}async getUserZkEvmInternal(){let e=await this.getUserInternal(U);if(!e)throw new Error("Failed to obtain a User with the required ZkEvm attributes");return e}};
393
+ `,document.head.appendChild(e);};getEmbeddedLoginIFrame=()=>{let e=document.createElement("iframe");return e.id=z,e.src=this.getHref(),e.style.height="100vh",e.style.width="100vw",e.style.maxHeight=`${se}px`,e.style.maxWidth=`${ae}px`,e.style.borderRadius=le,e.style.opacity="0",e.style.transform="scale(0.6)",e.style.animation="passportEmbeddedLoginPromptPopBounceIn 1s ease forwards",n.appendIFrameStylesIfNeeded(),e};displayEmbeddedLoginPrompt(){return new Promise((e,t)=>{let r=this.getEmbeddedLoginIFrame(),i=({data:o,origin:l})=>{if(!(l!==this.config.authenticationDomain||o.eventType!==H))switch(o.messageType){case"login_method_selected":{let d=o.payload;window.removeEventListener("message",i),u.remove(),e(d);break}case"login_prompt_error":{window.removeEventListener("message",i),u.remove(),t(new Error("Error during embedded login prompt",{cause:o.payload}));break}case"login_prompt_closed":{window.removeEventListener("message",i),u.remove(),t(new Error("Popup closed by user"));break}default:window.removeEventListener("message",i),u.remove(),t(new Error(`Unsupported message type: ${o.messageType}`));break}};window.addEventListener("message",i),u.appendOverlay(r,()=>{window.removeEventListener("message",i),u.remove(),t(new Error("Popup closed by user"));});})}};var C=class{listeners=new Map;emit(e,...t){let r=this.listeners.get(e);!r||r.size===0||[...r].forEach(i=>{i(...t);});}on(e,t){let r=this.listeners.get(e)??new Set;r.add(t),this.listeners.set(e,r);}removeListener(e,t){let r=this.listeners.get(e);r&&(r.delete(t),r.size===0&&this.listeners.delete(e));}};var c=async(n,e,t=!0,r=!0)=>{let i=metrics.trackFlow("passport",e,t);try{return await n(i)}catch(o){throw o instanceof Error?metrics.trackError("passport",e,o,{flowId:i.details.flowId}):i.addEvent("errored"),o}finally{r&&i.addEvent("End");}};var pe=()=>typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{},ue=n=>{let e=n.replace(/-/g,"+").replace(/_/g,"/"),t=e.length%4===0?"":"=".repeat(4-e.length%4);return e+t},me=n=>{let e=pe();if(typeof e.atob!="function")return null;let t=e.atob(n),r=new Uint8Array(t.length);for(let o=0;o<t.length;o+=1)r[o]=t.charCodeAt(o);if(typeof e.TextDecoder=="function")return new e.TextDecoder("utf-8").decode(r);let i="";for(let o=0;o<r.length;o+=1)i+=String.fromCharCode(r[o]);return i},ge=n=>{if(typeof Buffer<"u")return Buffer.from(n,"base64").toString("utf-8");let e=me(n);if(e===null)throw new Error("Base64 decoding is not supported in this environment");return e},f=n=>{if(typeof n!="string")throw new Error("JWT must be a string");let e=n.split(".");if(e.length<2)throw new Error("Invalid JWT: payload segment is missing");let t=e[1],r=ge(ue(t));try{return JSON.parse(r)}catch{throw new Error("Invalid JWT payload: unable to parse JSON")}};var J="pkce_state",j="pkce_verifier",fe=3600,v=class{isTokenValid(e){try{let r=f(e).exp??0,i=Date.now()/1e3+fe;return r>i}catch{return !1}}savePKCEData(e){localStorage.setItem(J,e.state),localStorage.setItem(j,e.verifier);}getPKCEData(){let e=localStorage.getItem(J),t=localStorage.getItem(j);return e&&t?{state:e,verifier:t}:null}};var Ee=(...n)=>{if(typeof process>"u")return;process?.env?.JEST_WORKER_ID===void 0&&console.warn(...n);},y={warn:Ee};function Q(n){try{let e=f(n),t=Math.floor(Date.now()/1e3);return e.exp?e.exp<=t+30:!0}catch{return !0}}function q(n){let{id_token:e,access_token:t}=n;return !t||!e?!0:Q(t)||Q(e)}var T=class{disableGenericPopupOverlay;disableBlockedPopupOverlay;overlay;isBlockedOverlay;tryAgainListener;onCloseListener;constructor(e,t=!1){this.disableBlockedPopupOverlay=e.disableBlockedPopupOverlay||!1,this.disableGenericPopupOverlay=e.disableGenericPopupOverlay||!1,this.isBlockedOverlay=t;}append(e,t){this.shouldAppendOverlay()&&(this.appendOverlay(),this.updateTryAgainButton(e),this.updateCloseButton(t));}update(e){this.updateTryAgainButton(e);}remove(){this.overlay&&this.overlay.remove();}shouldAppendOverlay(){return !(this.disableGenericPopupOverlay&&this.disableBlockedPopupOverlay||this.disableGenericPopupOverlay&&!this.isBlockedOverlay||this.disableBlockedPopupOverlay&&this.isBlockedOverlay)}appendOverlay(){if(!this.overlay){A({id:"link-googleapis",href:"https://fonts.googleapis.com"}),A({id:"link-gstatic",href:"https://fonts.gstatic.com",crossOrigin:"anonymous"}),A({id:"link-roboto",href:"https://fonts.googleapis.com/css2?family=Roboto:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&display=swap",rel:"stylesheet"});let t=document.createElement("div");t.innerHTML=this.isBlockedOverlay?W():$(),document.body.insertAdjacentElement("beforeend",t),this.overlay=t;}}updateTryAgainButton(e){let t=document.getElementById(w);t&&(this.tryAgainListener&&t.removeEventListener("click",this.tryAgainListener),this.tryAgainListener=e,t.addEventListener("click",e));}updateCloseButton(e){let t=document.getElementById(I);t&&(this.onCloseListener&&t.removeEventListener("click",this.onCloseListener),this.onCloseListener=e,t.addEventListener("click",e));}};var k=class{storage;constructor(e,t){this.storage=he__default.default.createInstance({name:e,driver:t});}get length(){return this.storage.length()}clear(){return this.storage.clear()}getItem(e){return this.storage.getItem(e)}key(e){return this.storage.key(e)}async removeItem(e){await this.storage.removeItem(e);}async setItem(e,t){await this.storage.setItem(e,t);}};var ke={"Content-Type":"application/x-www-form-urlencoded"},be=n=>{if(n)try{return JSON.parse(n)}catch{return}},Ue=(n,e,t)=>{if(n&&typeof n=="object"){let r=n,i=r.error_description??r.message??r.error;if(typeof i=="string"&&i.trim().length>0)return i}return e.trim().length>0?e:`Token request failed with status ${t}`},xe="/v2/logout",Se="/im-logged-out",Me="/authorize",Ne=n=>n?Se:xe,De=n=>{let{authenticationDomain:e,oidcConfiguration:t}=n,r;n.crossSdkBridgeEnabled?r=new k("ImmutableSDKPassport",he__default.default.INDEXEDDB):typeof window<"u"?r=window.localStorage:r=new oidcClientTs.InMemoryWebStorage;let i=new oidcClientTs.WebStorageStateStore({store:r}),o=new URL(Ne(n.crossSdkBridgeEnabled),e.replace(/^(?:https?:\/\/)?(.*)/,"https://$1"));return o.searchParams.set("client_id",t.clientId),t.logoutRedirectUri&&o.searchParams.set("returnTo",t.logoutRedirectUri),{authority:e,redirect_uri:t.redirectUri,popup_redirect_uri:t.popupRedirectUri||t.redirectUri,client_id:t.clientId,metadata:{authorization_endpoint:`${e}/authorize`,token_endpoint:`${e}/oauth/token`,userinfo_endpoint:`${e}/userinfo`,end_session_endpoint:o.toString(),revocation_endpoint:`${e}/oauth/revoke`},automaticSilentRenew:!1,scope:t.scope,userStore:i,revokeTokenTypes:["refresh_token"],extraQueryParams:{...t.audience?{audience:t.audience}:{}}}};function M(n){return btoa(String.fromCharCode(...new Uint8Array(n))).replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,"")}async function Fe(n){let t=new TextEncoder().encode(n);return window.crypto.subtle.digest("SHA-256",t)}var N=class n{config;userManager;deviceCredentialsManager;embeddedLoginPrompt;logoutMode;refreshingPromise=null;eventEmitter;constructor(e){this.config=new _(e),this.embeddedLoginPrompt=new O(this.config),this.userManager=new oidcClientTs.UserManager(De(this.config)),this.deviceCredentialsManager=new v,this.logoutMode=this.config.oidcConfiguration.logoutMode||"redirect",this.eventEmitter=new C,metrics.track("passport","initialise");}async login(e){return c(async()=>{let{useCachedSession:t=!1,useSilentLogin:r}=e||{},i=null;try{i=await this.getUserInternal();}catch(o){if(o instanceof Error&&!o.message.includes("Unknown or invalid refresh token")&&metrics.trackError("passport","login",o),t)throw o;y.warn("Failed to retrieve a cached user session",o);}if(!i&&r)i=await this.forceUserRefreshInternal();else if(!i&&!t){if(e?.useRedirectFlow)return await this.loginWithRedirectInternal(e?.directLoginOptions),null;i=await this.loginWithPopup(e?.directLoginOptions);}return i&&this.handleSuccessfulLogin(i),i},"login")}async loginWithRedirect(e){await this.loginWithRedirectInternal(e);}async loginCallback(){return c(async()=>{let e=await this.loginCallbackInternal();return e&&this.handleSuccessfulLogin(e),e},"loginCallback")}async logout(){await c(async()=>{await this.logoutInternal(),this.eventEmitter.emit("loggedOut");},"logout");}async getUser(){return this.getUserInternal()}async getUserOrLogin(){let e=null;try{e=await this.getUserInternal();}catch(r){y.warn("Failed to retrieve a cached user session",r);}if(e)return e;let t=await this.loginWithPopup();return this.handleSuccessfulLogin(t),t}async getUserZkEvm(){return this.getUserZkEvmInternal()}async getIdToken(){return c(async()=>(await this.getUserInternal())?.idToken,"getIdToken",!1)}async getAccessToken(){return c(async()=>(await this.getUserInternal())?.accessToken,"getAccessToken",!1,!1)}async isLoggedIn(){return await this.getUser()!==null}async forceUserRefresh(){return this.forceUserRefreshInternal()}forceUserRefreshInBackground(){this.forceUserRefreshInBackgroundInternal();}async loginWithPKCEFlow(e,t){return c(async()=>this.getPKCEAuthorizationUrl(e,t),"loginWithPKCEFlow")}async loginWithPKCEFlowCallback(e,t){return c(async()=>{let r=await this.loginWithPKCEFlowCallbackInternal(e,t);return this.handleSuccessfulLogin(r),r},"loginWithPKCEFlowCallback")}async storeTokens(e){return c(async()=>{let t=await this.storeTokensInternal(e);return this.handleSuccessfulLogin(t),t},"storeTokens")}async getLogoutUrl(){return c(async()=>(await this.userManager.removeUser(),this.eventEmitter.emit("loggedOut"),await this.getLogoutUrlInternal()||void 0),"getLogoutUrl")}async logoutSilentCallback(e){return c(()=>this.userManager.signoutSilentCallback(e),"logoutSilentCallback")}getConfig(){return this.config}async getClientId(){return this.config.oidcConfiguration.clientId}handleSuccessfulLogin(e){this.eventEmitter.emit("loggedIn",e),metrics.identify({passportId:e.profile.sub});}buildExtraQueryParams(e,t){let r={...this.userManager.settings?.extraQueryParams??{},rid:metrics.getDetail(metrics.Detail.RUNTIME_ID)||""};if(e){if(e.directLoginMethod==="email"){let i=e.email;i&&(r.direct=e.directLoginMethod,r.email=i);}else r.direct=e.directLoginMethod;e.marketingConsentStatus&&(r.marketingConsent=e.marketingConsentStatus);}return t&&(r.im_passport_trace_id=t),r}async loginWithRedirectInternal(e){await this.userManager.clearStaleState(),await g(async()=>{let t=this.buildExtraQueryParams(e);await this.userManager.signinRedirect({extraQueryParams:t});},"AUTHENTICATION_ERROR");}async loginWithPopup(e){return g(async()=>{let t,r;if(e)t=e;else if(!this.config.popupOverlayOptions?.disableHeadlessLoginPromptOverlay){let{imPassportTraceId:l,...d}=await this.embeddedLoginPrompt.displayEmbeddedLoginPrompt();t=d,r=l;}let i=window.crypto.randomUUID(),o=async()=>{let l=this.buildExtraQueryParams(t,r);return this.userManager.signinPopup({extraQueryParams:l,popupWindowFeatures:{width:410,height:450},popupWindowTarget:i,popupAbortOnClose:!0})};return new Promise((l,d)=>{o().then(m=>l(n.mapOidcUserToDomainModel(m))).catch(m=>{if(!(m instanceof Error)||m.message!=="Attempted to navigate on a disposed window"){d(m);return}let L=!1,a=new T(this.config.popupOverlayOptions||{},!0);a.append(async()=>{try{if(L)window.open("",i);else {L=!0;let E=await o();a.remove(),l(n.mapOidcUserToDomainModel(E));}}catch(E){a.remove(),d(E);}},()=>{a.remove(),d(new Error("Popup closed by user"));});});})},"AUTHENTICATION_ERROR")}static mapOidcUserToDomainModel=e=>{let t,r;if(e.id_token){let o=f(e.id_token);t=o?.passport,o?.username&&(r=o?.username);}let i={expired:e.expired,idToken:e.id_token,accessToken:e.access_token,refreshToken:e.refresh_token,profile:{sub:e.profile.sub,email:e.profile.email,nickname:e.profile.nickname,username:r}};return t?.zkevm_eth_address&&t?.zkevm_user_admin_address&&(i.zkEvm={ethAddress:t.zkevm_eth_address,userAdminAddress:t.zkevm_user_admin_address}),i};static mapDeviceTokenResponseToOidcUser=e=>{let t=f(e.id_token);return new oidcClientTs.User({id_token:e.id_token,access_token:e.access_token,refresh_token:e.refresh_token,token_type:e.token_type,profile:{sub:t.sub,iss:t.iss,aud:t.aud,exp:t.exp,iat:t.iat,email:t.email,nickname:t.nickname,passport:t.passport,...t.username?{username:t.username}:{}}})};async loginCallbackInternal(){return g(async()=>{let e=await this.userManager.signinCallback();if(e)return n.mapOidcUserToDomainModel(e)},"AUTHENTICATION_ERROR")}async getPKCEAuthorizationUrl(e,t){let r=M(window.crypto.getRandomValues(new Uint8Array(32))),i=M(await Fe(r)),o=M(window.crypto.getRandomValues(new Uint8Array(32))),{redirectUri:l,scope:d,audience:m,clientId:L}=this.config.oidcConfiguration;this.deviceCredentialsManager.savePKCEData({state:o,verifier:r});let a=new URL(Me,this.config.authenticationDomain);if(a.searchParams.set("response_type","code"),a.searchParams.set("code_challenge",i),a.searchParams.set("code_challenge_method","S256"),a.searchParams.set("client_id",L),a.searchParams.set("redirect_uri",l),a.searchParams.set("state",o),d&&a.searchParams.set("scope",d),m&&a.searchParams.set("audience",m),e){if(e.directLoginMethod==="email"){let E=e.email;E&&(a.searchParams.set("direct",e.directLoginMethod),a.searchParams.set("email",E));}else a.searchParams.set("direct",e.directLoginMethod);e.marketingConsentStatus&&a.searchParams.set("marketingConsent",e.marketingConsentStatus);}return t&&a.searchParams.set("im_passport_trace_id",t),a.toString()}async loginWithPKCEFlowCallbackInternal(e,t){return g(async()=>{let r=this.deviceCredentialsManager.getPKCEData();if(!r)throw new Error("No code verifier or state for PKCE");if(t!==r.state)throw new Error("Provided state does not match stored state");let i=await this.getPKCEToken(e,r.verifier),o=n.mapDeviceTokenResponseToOidcUser(i),l=n.mapOidcUserToDomainModel(o);return await this.userManager.storeUser(o),l},"AUTHENTICATION_ERROR")}async getPKCEToken(e,t){let r=await fetch(`${this.config.authenticationDomain}/oauth/token`,{method:"POST",headers:ke,body:new URLSearchParams({client_id:this.config.oidcConfiguration.clientId,grant_type:"authorization_code",code_verifier:t,code:e,redirect_uri:this.config.oidcConfiguration.redirectUri})}),i=await r.text(),o=be(i);if(!r.ok)throw new Error(Ue(o,i,r.status));if(!o||typeof o!="object")throw new Error("Token endpoint returned an invalid response");return o}async storeTokensInternal(e){return g(async()=>{let t=n.mapDeviceTokenResponseToOidcUser(e),r=n.mapOidcUserToDomainModel(t);return await this.userManager.storeUser(t),r},"AUTHENTICATION_ERROR")}async logoutInternal(){await g(async()=>{await this.userManager.revokeTokens(["refresh_token"]),this.logoutMode==="silent"?await this.userManager.signoutSilent():await this.userManager.signoutRedirect();},"LOGOUT_ERROR");}async getLogoutUrlInternal(){let e=this.userManager.settings?.metadata?.end_session_endpoint;return e||(y.warn("Failed to get logout URL"),null)}forceUserRefreshInBackgroundInternal(){this.refreshTokenAndUpdatePromise().catch(e=>{y.warn("Failed to refresh user token",e);});}async forceUserRefreshInternal(){return this.refreshTokenAndUpdatePromise().catch(e=>(y.warn("Failed to refresh user token",e),null))}async refreshTokenAndUpdatePromise(){return this.refreshingPromise?this.refreshingPromise:(this.refreshingPromise=new Promise((e,t)=>{(async()=>{try{let r=await this.userManager.signinSilent();if(r){e(n.mapOidcUserToDomainModel(r));return}e(null);}catch(r){let i="AUTHENTICATION_ERROR",o="Failed to refresh token",l=!0;if(r instanceof oidcClientTs.ErrorTimeout?(i="SILENT_LOGIN_ERROR",o=`${o}: ${r.message}`,l=!1):r instanceof oidcClientTs.ErrorResponse?(i="NOT_LOGGED_IN_ERROR",o=`${o}: ${r.message||r.error_description}`):r instanceof Error?o=`${o}: ${r.message}`:typeof r=="string"&&(o=`${o}: ${r}`),l)try{await this.userManager.removeUser();}catch(d){d instanceof Error&&(o=`${o}: Failed to remove user: ${d.message}`);}t(new p(o,i));}finally{this.refreshingPromise=null;}})();}),this.refreshingPromise)}async getUserInternal(e=t=>!0){if(this.refreshingPromise){let r=await this.refreshingPromise;return r&&e(r)?r:null}let t=await this.userManager.getUser();if(!t)return null;if(!q(t)){let r=n.mapOidcUserToDomainModel(t);if(r&&e(r))return r}if(t.refresh_token){let r=await this.refreshTokenAndUpdatePromise();if(r&&e(r))return r}return null}async getUserZkEvmInternal(){let e=await this.getUserInternal(U);if(!e)throw new Error("Failed to obtain a User with the required ZkEvm attributes");return e}};
394
394
 
395
395
  exports.Auth = N;
396
- exports.AuthConfiguration = R;
396
+ exports.AuthConfiguration = _;
397
397
  exports.AuthEvents = x;
398
- exports.MarketingConsentStatus = H;
399
- exports.PassportError = u;
398
+ exports.MarketingConsentStatus = F;
399
+ exports.PassportError = p;
400
400
  exports.PassportErrorType = P;
401
- exports.RollupType = F;
402
- exports.TypedEventEmitter = _;
401
+ exports.RollupType = D;
402
+ exports.TypedEventEmitter = C;
403
403
  exports.decodeJwtPayload = f;
404
404
  exports.isAPIError = b;
405
405
  exports.isUserZkEvm = U;
@@ -1,8 +1,8 @@
1
1
  import { UserManager, User, ErrorTimeout, ErrorResponse, InMemoryWebStorage, WebStorageStateStore } from 'oidc-client-ts';
2
- import _e from 'localforage';
2
+ import he from 'localforage';
3
3
  import { track, identify, getDetail, Detail, trackFlow, trackError } from '@imtbl/metrics';
4
4
 
5
- var P=(s=>(s.AUTHENTICATION_ERROR="AUTHENTICATION_ERROR",s.INVALID_CONFIGURATION="INVALID_CONFIGURATION",s.WALLET_CONNECTION_ERROR="WALLET_CONNECTION_ERROR",s.NOT_LOGGED_IN_ERROR="NOT_LOGGED_IN_ERROR",s.SILENT_LOGIN_ERROR="SILENT_LOGIN_ERROR",s.REFRESH_TOKEN_ERROR="REFRESH_TOKEN_ERROR",s.USER_REGISTRATION_ERROR="USER_REGISTRATION_ERROR",s.USER_NOT_REGISTERED_ERROR="USER_NOT_REGISTERED_ERROR",s.LOGOUT_ERROR="LOGOUT_ERROR",s.TRANSFER_ERROR="TRANSFER_ERROR",s.CREATE_ORDER_ERROR="CREATE_ORDER_ERROR",s.CANCEL_ORDER_ERROR="CANCEL_ORDER_ERROR",s.EXCHANGE_TRANSFER_ERROR="EXCHANGE_TRANSFER_ERROR",s.CREATE_TRADE_ERROR="CREATE_TRADE_ERROR",s.OPERATION_NOT_SUPPORTED_ERROR="OPERATION_NOT_SUPPORTED_ERROR",s.LINK_WALLET_ALREADY_LINKED_ERROR="LINK_WALLET_ALREADY_LINKED_ERROR",s.LINK_WALLET_MAX_WALLETS_LINKED_ERROR="LINK_WALLET_MAX_WALLETS_LINKED_ERROR",s.LINK_WALLET_VALIDATION_ERROR="LINK_WALLET_VALIDATION_ERROR",s.LINK_WALLET_DUPLICATE_NONCE_ERROR="LINK_WALLET_DUPLICATE_NONCE_ERROR",s.LINK_WALLET_GENERIC_ERROR="LINK_WALLET_GENERIC_ERROR",s.SERVICE_UNAVAILABLE_ERROR="SERVICE_UNAVAILABLE_ERROR",s.TRANSACTION_REJECTED="TRANSACTION_REJECTED",s))(P||{});function b(n){return typeof n=="object"&&n!==null&&"code"in n&&"message"in n}var te=n=>{if(b(n))return n;if(typeof n=="object"&&n!==null&&"response"in n){let{response:e}=n;if(e?.data&&b(e.data))return e.data}},u=class extends Error{type;constructor(e,t){super(e),this.type=t;}},g=async(n,e)=>{try{return await n()}catch(t){let r;if(t instanceof u&&t.type==="SERVICE_UNAVAILABLE_ERROR")throw new u(t.message,t.type);let o=te(t);throw o?r=o.message:r=t.message,new u(r,e)}};var re=(n,e,t)=>{let r=e.map(o=>!n[o]&&o).filter(o=>o).join(", ");if(r!==""){let o=`${r} cannot be null`;throw new u(o,"INVALID_CONFIGURATION")}},R=class{authenticationDomain;passportDomain;oidcConfiguration;crossSdkBridgeEnabled;popupOverlayOptions;constructor({authenticationDomain:e,passportDomain:t,crossSdkBridgeEnabled:r,popupOverlayOptions:o,...i}){re(i,["clientId","redirectUri"]),this.oidcConfiguration=i,this.crossSdkBridgeEnabled=r||!1,this.popupOverlayOptions=o,this.authenticationDomain=e||"https://auth.immutable.com",this.passportDomain=t||"https://passport.immutable.com";}};var F=(e=>(e.ZKEVM="zkEvm",e))(F||{}),U=n=>!!n.zkEvm,H=(t=>(t.OptedIn="opted_in",t.Unsubscribed="unsubscribed",t))(H||{}),x=(t=>(t.LOGGED_OUT="loggedOut",t.LOGGED_IN="loggedIn",t))(x||{});var V="im_passport_embedded_login_prompt";var C="passport-overlay",O="passport-overlay-contents",I=`${C}-close`,w=`${C}-try-again`,G=`
5
+ var P=(s=>(s.AUTHENTICATION_ERROR="AUTHENTICATION_ERROR",s.INVALID_CONFIGURATION="INVALID_CONFIGURATION",s.WALLET_CONNECTION_ERROR="WALLET_CONNECTION_ERROR",s.NOT_LOGGED_IN_ERROR="NOT_LOGGED_IN_ERROR",s.SILENT_LOGIN_ERROR="SILENT_LOGIN_ERROR",s.REFRESH_TOKEN_ERROR="REFRESH_TOKEN_ERROR",s.USER_REGISTRATION_ERROR="USER_REGISTRATION_ERROR",s.USER_NOT_REGISTERED_ERROR="USER_NOT_REGISTERED_ERROR",s.LOGOUT_ERROR="LOGOUT_ERROR",s.TRANSFER_ERROR="TRANSFER_ERROR",s.CREATE_ORDER_ERROR="CREATE_ORDER_ERROR",s.CANCEL_ORDER_ERROR="CANCEL_ORDER_ERROR",s.EXCHANGE_TRANSFER_ERROR="EXCHANGE_TRANSFER_ERROR",s.CREATE_TRADE_ERROR="CREATE_TRADE_ERROR",s.OPERATION_NOT_SUPPORTED_ERROR="OPERATION_NOT_SUPPORTED_ERROR",s.LINK_WALLET_ALREADY_LINKED_ERROR="LINK_WALLET_ALREADY_LINKED_ERROR",s.LINK_WALLET_MAX_WALLETS_LINKED_ERROR="LINK_WALLET_MAX_WALLETS_LINKED_ERROR",s.LINK_WALLET_VALIDATION_ERROR="LINK_WALLET_VALIDATION_ERROR",s.LINK_WALLET_DUPLICATE_NONCE_ERROR="LINK_WALLET_DUPLICATE_NONCE_ERROR",s.LINK_WALLET_GENERIC_ERROR="LINK_WALLET_GENERIC_ERROR",s.SERVICE_UNAVAILABLE_ERROR="SERVICE_UNAVAILABLE_ERROR",s.TRANSACTION_REJECTED="TRANSACTION_REJECTED",s))(P||{});function b(n){return typeof n=="object"&&n!==null&&"code"in n&&"message"in n}var X=n=>{if(b(n))return n;if(typeof n=="object"&&n!==null&&"response"in n){let{response:e}=n;if(e?.data&&b(e.data))return e.data}},p=class extends Error{type;constructor(e,t){super(e),this.type=t;}},g=async(n,e)=>{try{return await n()}catch(t){let r;if(t instanceof p&&t.type==="SERVICE_UNAVAILABLE_ERROR")throw new p(t.message,t.type);let i=X(t);throw i?r=i.message:r=t.message,new p(r,e)}};var ee=(n,e,t)=>{let r=e.map(i=>!n[i]&&i).filter(i=>i).join(", ");if(r!==""){let i=`${r} cannot be null`;throw new p(i,"INVALID_CONFIGURATION")}},_=class{authenticationDomain;passportDomain;oidcConfiguration;crossSdkBridgeEnabled;popupOverlayOptions;constructor({authenticationDomain:e,passportDomain:t,crossSdkBridgeEnabled:r,popupOverlayOptions:i,...o}){ee(o,["clientId","redirectUri"]),this.oidcConfiguration=o,this.crossSdkBridgeEnabled=r||!1,this.popupOverlayOptions=i,this.authenticationDomain=e||"https://auth.immutable.com",this.passportDomain=t||"https://passport.immutable.com";}};var D=(e=>(e.ZKEVM="zkEvm",e))(D||{}),U=n=>!!n.zkEvm,F=(t=>(t.OptedIn="opted_in",t.Unsubscribed="unsubscribed",t))(F||{}),x=(t=>(t.LOGGED_OUT="loggedOut",t.LOGGED_IN="loggedIn",t))(x||{});var H="im_passport_embedded_login_prompt";var h="passport-overlay",R="passport-overlay-contents",I=`${h}-close`,w=`${h}-try-again`,V=`
6
6
  <svg
7
7
  viewBox="0 0 20 20"
8
8
  fill="none"
@@ -14,7 +14,7 @@ var P=(s=>(s.AUTHENTICATION_ERROR="AUTHENTICATION_ERROR",s.INVALID_CONFIGURATION
14
14
  fill="#F3F3F3"
15
15
  />
16
16
  </svg>
17
- `,B=`
17
+ `,G=`
18
18
  <svg
19
19
  viewBox="0 0 17 16"
20
20
  fill="none"
@@ -211,7 +211,7 @@ var P=(s=>(s.AUTHENTICATION_ERROR="AUTHENTICATION_ERROR",s.INVALID_CONFIGURATION
211
211
  </clipPath>
212
212
  </defs>
213
213
  </svg>
214
- `;var ne=()=>`
214
+ `;var te=()=>`
215
215
  <button
216
216
  id="${I}"
217
217
  style="
@@ -229,9 +229,9 @@ var P=(s=>(s.AUTHENTICATION_ERROR="AUTHENTICATION_ERROR",s.INVALID_CONFIGURATION
229
229
  justify-content: center !important;
230
230
  "
231
231
  >
232
- ${G}
232
+ ${V}
233
233
  </button>
234
- `,K=()=>`
234
+ `,B=()=>`
235
235
  <button
236
236
  id="${w}"
237
237
  style="
@@ -248,7 +248,7 @@ var P=(s=>(s.AUTHENTICATION_ERROR="AUTHENTICATION_ERROR",s.INVALID_CONFIGURATION
248
248
  >
249
249
  Try again
250
250
  </button>
251
- `,oe=()=>`
251
+ `,re=()=>`
252
252
  ${S}
253
253
  <div
254
254
  style="
@@ -259,7 +259,7 @@ var P=(s=>(s.AUTHENTICATION_ERROR="AUTHENTICATION_ERROR",s.INVALID_CONFIGURATION
259
259
  margin-bottom: 10px !important;
260
260
  "
261
261
  >
262
- ${B}
262
+ ${G}
263
263
  Pop-up blocked
264
264
  </div>
265
265
  <p style="
@@ -272,8 +272,8 @@ var P=(s=>(s.AUTHENTICATION_ERROR="AUTHENTICATION_ERROR",s.INVALID_CONFIGURATION
272
272
  If the problem continues, adjust your<br />
273
273
  browser settings.
274
274
  </p>
275
- ${K()}
276
- `,ie=()=>`
275
+ ${B()}
276
+ `,ne=()=>`
277
277
  ${S}
278
278
  <p style="
279
279
  color: #b6b6b6 !important;
@@ -283,10 +283,10 @@ var P=(s=>(s.AUTHENTICATION_ERROR="AUTHENTICATION_ERROR",s.INVALID_CONFIGURATION
283
283
  >
284
284
  Secure pop-up not showing?<br />We'll help you re-launch
285
285
  </p>
286
- ${K()}
287
- `,Z=n=>`
286
+ ${B()}
287
+ `,K=n=>`
288
288
  <div
289
- id="${C}"
289
+ id="${h}"
290
290
  style="
291
291
  position: fixed !important;
292
292
  top: 0 !important;
@@ -309,9 +309,9 @@ var P=(s=>(s.AUTHENTICATION_ERROR="AUTHENTICATION_ERROR",s.INVALID_CONFIGURATION
309
309
  z-index: 2147483647 !important;
310
310
  "
311
311
  >
312
- ${ne()}
312
+ ${te()}
313
313
  <div
314
- id="${O}"
314
+ id="${R}"
315
315
  style="
316
316
  display: flex !important;
317
317
  flex-direction: column !important;
@@ -322,9 +322,9 @@ var P=(s=>(s.AUTHENTICATION_ERROR="AUTHENTICATION_ERROR",s.INVALID_CONFIGURATION
322
322
  ${n??""}
323
323
  </div>
324
324
  </div>
325
- `,W=()=>`
325
+ `,Z=()=>`
326
326
  <div
327
- id="${C}"
327
+ id="${h}"
328
328
  style="
329
329
  position: fixed;
330
330
  top: 0;
@@ -342,7 +342,7 @@ var P=(s=>(s.AUTHENTICATION_ERROR="AUTHENTICATION_ERROR",s.INVALID_CONFIGURATION
342
342
  "
343
343
  >
344
344
  <div
345
- id="${O}"
345
+ id="${R}"
346
346
  style="
347
347
  display: flex;
348
348
  flex-direction: column;
@@ -351,7 +351,7 @@ var P=(s=>(s.AUTHENTICATION_ERROR="AUTHENTICATION_ERROR",s.INVALID_CONFIGURATION
351
351
  "
352
352
  />
353
353
  </div>
354
- `;function A({id:n,href:e,rel:t,crossOrigin:r}){let o=`${C}-${n}`;if(!document.getElementById(o)){let i=document.createElement("link");i.id=o,i.href=e,t&&(i.rel=t),r&&(i.crossOrigin=r),document.head.appendChild(i);}}var $=()=>Z(oe()),Y=()=>Z(ie());var m=class{static overlay;static onCloseListener;static closeButton;static remove(){this.onCloseListener&&this.closeButton?.removeEventListener?.("click",this.onCloseListener),this.overlay?.remove(),this.closeButton=void 0,this.onCloseListener=void 0,this.overlay=void 0;}static appendOverlay(e,t){if(!this.overlay){let r=document.createElement("div");r.innerHTML=W(),document.body.insertAdjacentElement("beforeend",r);let o=document.querySelector(`#${O}`);o&&o.appendChild(e),r.addEventListener("click",t),this.overlay=r;}}};var le=660,de=440,ce="16px",z="passport-embedded-login-keyframes",J="passport-embedded-login-iframe",v=class n{config;constructor(e){this.config=e;}getHref=()=>`${this.config.authenticationDomain}/im-embedded-login-prompt?client_id=${this.config.oidcConfiguration.clientId}&rid=${getDetail(Detail.RUNTIME_ID)}`;static appendIFrameStylesIfNeeded=()=>{if(document.getElementById(z))return;let e=document.createElement("style");e.id=z,e.textContent=`
354
+ `;function A({id:n,href:e,rel:t,crossOrigin:r}){let i=`${h}-${n}`;if(!document.getElementById(i)){let o=document.createElement("link");o.id=i,o.href=e,t&&(o.rel=t),r&&(o.crossOrigin=r),document.head.appendChild(o);}}var W=()=>K(re()),$=()=>K(ne());var u=class{static overlay;static onCloseListener;static closeButton;static remove(){this.onCloseListener&&this.closeButton?.removeEventListener?.("click",this.onCloseListener),this.overlay?.remove(),this.closeButton=void 0,this.onCloseListener=void 0,this.overlay=void 0;}static appendOverlay(e,t){if(!this.overlay){let r=document.createElement("div");r.innerHTML=Z(),document.body.insertAdjacentElement("beforeend",r);let i=document.querySelector(`#${R}`);i&&i.appendChild(e),r.addEventListener("click",t),this.overlay=r;}}};var se=660,ae=440,le="16px",Y="passport-embedded-login-keyframes",z="passport-embedded-login-iframe",O=class n{config;constructor(e){this.config=e;}getHref=()=>`${this.config.authenticationDomain}/im-embedded-login-prompt?client_id=${this.config.oidcConfiguration.clientId}&rid=${getDetail(Detail.RUNTIME_ID)}`;static appendIFrameStylesIfNeeded=()=>{if(document.getElementById(Y))return;let e=document.createElement("style");e.id=Y,e.textContent=`
355
355
  @keyframes passportEmbeddedLoginPromptPopBounceIn {
356
356
  0% {
357
357
  opacity: 0.5;
@@ -370,7 +370,7 @@ var P=(s=>(s.AUTHENTICATION_ERROR="AUTHENTICATION_ERROR",s.INVALID_CONFIGURATION
370
370
  }
371
371
 
372
372
  @media (max-height: 400px) {
373
- #${J} {
373
+ #${z} {
374
374
  width: 100% !important;
375
375
  max-width: none !important;
376
376
  }
@@ -384,6 +384,6 @@ var P=(s=>(s.AUTHENTICATION_ERROR="AUTHENTICATION_ERROR",s.INVALID_CONFIGURATION
384
384
  opacity: 1;
385
385
  }
386
386
  }
387
- `,document.head.appendChild(e);};getEmbeddedLoginIFrame=()=>{let e=document.createElement("iframe");return e.id=J,e.src=this.getHref(),e.style.height="100vh",e.style.width="100vw",e.style.maxHeight=`${le}px`,e.style.maxWidth=`${de}px`,e.style.borderRadius=ce,e.style.opacity="0",e.style.transform="scale(0.6)",e.style.animation="passportEmbeddedLoginPromptPopBounceIn 1s ease forwards",n.appendIFrameStylesIfNeeded(),e};displayEmbeddedLoginPrompt(){return new Promise((e,t)=>{let r=this.getEmbeddedLoginIFrame(),o=({data:i,origin:d})=>{if(!(d!==this.config.authenticationDomain||i.eventType!==V))switch(i.messageType){case"login_method_selected":{let l=i.payload;window.removeEventListener("message",o),m.remove(),e(l);break}case"login_prompt_error":{window.removeEventListener("message",o),m.remove(),t(new Error("Error during embedded login prompt",{cause:i.payload}));break}case"login_prompt_closed":{window.removeEventListener("message",o),m.remove(),t(new Error("Popup closed by user"));break}default:window.removeEventListener("message",o),m.remove(),t(new Error(`Unsupported message type: ${i.messageType}`));break}};window.addEventListener("message",o),m.appendOverlay(r,()=>{window.removeEventListener("message",o),m.remove(),t(new Error("Popup closed by user"));});})}};var _=class{listeners=new Map;emit(e,...t){let r=this.listeners.get(e);!r||r.size===0||[...r].forEach(o=>{o(...t);});}on(e,t){let r=this.listeners.get(e)??new Set;r.add(t),this.listeners.set(e,r);}removeListener(e,t){let r=this.listeners.get(e);r&&(r.delete(t),r.size===0&&this.listeners.delete(e));}};var p=async(n,e,t=!0,r=!0)=>{let o=trackFlow("passport",e,t);try{return await n(o)}catch(i){throw i instanceof Error?trackError("passport",e,i,{flowId:o.details.flowId}):o.addEvent("errored"),i}finally{r&&o.addEvent("End");}};var me=()=>typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{},ge=n=>{let e=n.replace(/-/g,"+").replace(/_/g,"/"),t=e.length%4===0?"":"=".repeat(4-e.length%4);return e+t},fe=n=>{let e=me();if(typeof e.atob!="function")return null;let t=e.atob(n),r=new Uint8Array(t.length);for(let i=0;i<t.length;i+=1)r[i]=t.charCodeAt(i);if(typeof e.TextDecoder=="function")return new e.TextDecoder("utf-8").decode(r);let o="";for(let i=0;i<r.length;i+=1)o+=String.fromCharCode(r[i]);return o},Ee=n=>{if(typeof Buffer<"u")return Buffer.from(n,"base64").toString("utf-8");let e=fe(n);if(e===null)throw new Error("Base64 decoding is not supported in this environment");return e},f=n=>{if(typeof n!="string")throw new Error("JWT must be a string");let e=n.split(".");if(e.length<2)throw new Error("Invalid JWT: payload segment is missing");let t=e[1],r=Ee(ge(t));try{return JSON.parse(r)}catch{throw new Error("Invalid JWT payload: unable to parse JSON")}};var j="pkce_state",Q="pkce_verifier",he=3600,T=class{isTokenValid(e){try{let r=f(e).exp??0,o=Date.now()/1e3+he;return r>o}catch{return !1}}savePKCEData(e){localStorage.setItem(j,e.state),localStorage.setItem(Q,e.verifier);}getPKCEData(){let e=localStorage.getItem(j),t=localStorage.getItem(Q);return e&&t?{state:e,verifier:t}:null}};var Ce=(...n)=>{if(typeof process>"u")return;process?.env?.JEST_WORKER_ID===void 0&&console.warn(...n);},y={warn:Ce};function q(n){try{let e=f(n),t=Math.floor(Date.now()/1e3);return e.exp?e.exp<=t+30:!0}catch{return !0}}function X(n){let{id_token:e,access_token:t}=n;return !t||!e?!0:q(t)||q(e)}var L=class{disableGenericPopupOverlay;disableBlockedPopupOverlay;overlay;isBlockedOverlay;tryAgainListener;onCloseListener;constructor(e,t=!1){this.disableBlockedPopupOverlay=e.disableBlockedPopupOverlay||!1,this.disableGenericPopupOverlay=e.disableGenericPopupOverlay||!1,this.isBlockedOverlay=t;}append(e,t){this.shouldAppendOverlay()&&(this.appendOverlay(),this.updateTryAgainButton(e),this.updateCloseButton(t));}update(e){this.updateTryAgainButton(e);}remove(){this.overlay&&this.overlay.remove();}shouldAppendOverlay(){return !(this.disableGenericPopupOverlay&&this.disableBlockedPopupOverlay||this.disableGenericPopupOverlay&&!this.isBlockedOverlay||this.disableBlockedPopupOverlay&&this.isBlockedOverlay)}appendOverlay(){if(!this.overlay){A({id:"link-googleapis",href:"https://fonts.googleapis.com"}),A({id:"link-gstatic",href:"https://fonts.gstatic.com",crossOrigin:"anonymous"}),A({id:"link-roboto",href:"https://fonts.googleapis.com/css2?family=Roboto:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&display=swap",rel:"stylesheet"});let t=document.createElement("div");t.innerHTML=this.isBlockedOverlay?$():Y(),document.body.insertAdjacentElement("beforeend",t),this.overlay=t;}}updateTryAgainButton(e){let t=document.getElementById(w);t&&(this.tryAgainListener&&t.removeEventListener("click",this.tryAgainListener),this.tryAgainListener=e,t.addEventListener("click",e));}updateCloseButton(e){let t=document.getElementById(I);t&&(this.onCloseListener&&t.removeEventListener("click",this.onCloseListener),this.onCloseListener=e,t.addEventListener("click",e));}};var k=class{storage;constructor(e,t){this.storage=_e.createInstance({name:e,driver:t});}get length(){return this.storage.length()}clear(){return this.storage.clear()}getItem(e){return this.storage.getItem(e)}key(e){return this.storage.key(e)}async removeItem(e){await this.storage.removeItem(e);}async setItem(e,t){await this.storage.setItem(e,t);}};var Ue=500,xe={"Content-Type":"application/x-www-form-urlencoded"},Se=n=>{if(n)try{return JSON.parse(n)}catch{return}},Me=(n,e,t)=>{if(n&&typeof n=="object"){let r=n,o=r.error_description??r.message??r.error;if(typeof o=="string"&&o.trim().length>0)return o}return e.trim().length>0?e:`Token request failed with status ${t}`},Ne="/v2/logout",De="/im-logged-out",Fe="/authorize",He=n=>n?De:Ne,Ve=n=>{let{authenticationDomain:e,oidcConfiguration:t}=n,r;n.crossSdkBridgeEnabled?r=new k("ImmutableSDKPassport",_e.INDEXEDDB):typeof window<"u"?r=window.localStorage:r=new InMemoryWebStorage;let o=new WebStorageStateStore({store:r}),i=new URL(He(n.crossSdkBridgeEnabled),e.replace(/^(?:https?:\/\/)?(.*)/,"https://$1"));return i.searchParams.set("client_id",t.clientId),t.logoutRedirectUri&&i.searchParams.set("returnTo",t.logoutRedirectUri),{authority:e,redirect_uri:t.redirectUri,popup_redirect_uri:t.popupRedirectUri||t.redirectUri,client_id:t.clientId,metadata:{authorization_endpoint:`${e}/authorize`,token_endpoint:`${e}/oauth/token`,userinfo_endpoint:`${e}/userinfo`,end_session_endpoint:i.toString(),revocation_endpoint:`${e}/oauth/revoke`},automaticSilentRenew:!1,scope:t.scope,userStore:o,revokeTokenTypes:["refresh_token"],extraQueryParams:{...t.audience?{audience:t.audience}:{}}}};function M(n){return btoa(String.fromCharCode(...new Uint8Array(n))).replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,"")}async function Ge(n){let t=new TextEncoder().encode(n);return window.crypto.subtle.digest("SHA-256",t)}var N=class n{config;userManager;deviceCredentialsManager;embeddedLoginPrompt;logoutMode;refreshingPromise=null;eventEmitter;constructor(e){this.config=new R(e),this.embeddedLoginPrompt=new v(this.config),this.userManager=new UserManager(Ve(this.config)),this.deviceCredentialsManager=new T,this.logoutMode=this.config.oidcConfiguration.logoutMode||"redirect",this.eventEmitter=new _,track("passport","initialise");}async login(e){return p(async()=>{let{useCachedSession:t=!1,useSilentLogin:r}=e||{},o=null;try{o=await this.getUserInternal();}catch(i){if(i instanceof Error&&!i.message.includes("Unknown or invalid refresh token")&&trackError("passport","login",i),t)throw i;y.warn("Failed to retrieve a cached user session",i);}if(!o&&r)o=await this.forceUserRefreshInternal();else if(!o&&!t){if(e?.useRedirectFlow)return await this.loginWithRedirectInternal(e?.directLoginOptions),null;o=await this.loginWithPopup(e?.directLoginOptions);}return o&&this.handleSuccessfulLogin(o),o},"login")}async loginWithRedirect(e){await this.loginWithRedirectInternal(e);}async loginCallback(){return p(async()=>{let e=await this.loginCallbackInternal();return e&&this.handleSuccessfulLogin(e),e},"loginCallback")}async logout(){await p(async()=>{await this.logoutInternal(),this.eventEmitter.emit("loggedOut");},"logout");}async getUser(){return this.getUserInternal()}async getUserOrLogin(){let e=null;try{e=await this.getUserInternal();}catch(r){y.warn("Failed to retrieve a cached user session",r);}if(e)return e;let t=await this.loginWithPopup();return this.handleSuccessfulLogin(t),t}async getUserZkEvm(){return this.getUserZkEvmInternal()}async getIdToken(){return p(async()=>(await this.getUserInternal())?.idToken,"getIdToken",!1)}async getAccessToken(){return p(async()=>(await this.getUserInternal())?.accessToken,"getAccessToken",!1,!1)}async isLoggedIn(){return await this.getUser()!==null}async forceUserRefresh(){return this.forceUserRefreshInternal()}forceUserRefreshInBackground(){this.forceUserRefreshInBackgroundInternal();}async loginWithPKCEFlow(e,t){return p(async()=>this.getPKCEAuthorizationUrl(e,t),"loginWithPKCEFlow")}async loginWithPKCEFlowCallback(e,t){return p(async()=>{let r=await this.loginWithPKCEFlowCallbackInternal(e,t);return this.handleSuccessfulLogin(r),r},"loginWithPKCEFlowCallback")}async storeTokens(e){return p(async()=>{let t=await this.storeTokensInternal(e);return this.handleSuccessfulLogin(t),t},"storeTokens")}async getLogoutUrl(){return p(async()=>(await this.userManager.removeUser(),this.eventEmitter.emit("loggedOut"),await this.getLogoutUrlInternal()||void 0),"getLogoutUrl")}async logoutSilentCallback(e){return p(()=>this.userManager.signoutSilentCallback(e),"logoutSilentCallback")}getConfig(){return this.config}async getClientId(){return this.config.oidcConfiguration.clientId}handleSuccessfulLogin(e){this.eventEmitter.emit("loggedIn",e),identify({passportId:e.profile.sub});}buildExtraQueryParams(e,t){let r={...this.userManager.settings?.extraQueryParams??{},rid:getDetail(Detail.RUNTIME_ID)||""};if(e){if(e.directLoginMethod==="email"){let o=e.email;o&&(r.direct=e.directLoginMethod,r.email=o);}else r.direct=e.directLoginMethod;e.marketingConsentStatus&&(r.marketingConsent=e.marketingConsentStatus);}return t&&(r.im_passport_trace_id=t),r}async loginWithRedirectInternal(e){await this.userManager.clearStaleState(),await g(async()=>{let t=this.buildExtraQueryParams(e);await this.userManager.signinRedirect({extraQueryParams:t});},"AUTHENTICATION_ERROR");}async loginWithPopup(e){return g(async()=>{let t,r;if(e)t=e;else if(!this.config.popupOverlayOptions?.disableHeadlessLoginPromptOverlay){let{imPassportTraceId:d,...l}=await this.embeddedLoginPrompt.displayEmbeddedLoginPrompt();t=l,r=d;}let o=window.crypto.randomUUID(),i=async()=>{let d=this.buildExtraQueryParams(t,r),l=this.userManager.signinPopup({extraQueryParams:d,popupWindowFeatures:{width:410,height:450},popupWindowTarget:o,popupAbortOnClose:!0}),c=window.open("",o);if(c){let E=!1,a=new Promise((h,ee)=>{let D=setInterval(()=>{c.closed&&!E&&(clearInterval(D),ee(new Error("Popup closed by user")));},Ue);l.finally(()=>{E=!0,clearInterval(D),c.closed||c.close();});});return Promise.race([l,a])}return l};return new Promise((d,l)=>{i().then(c=>d(n.mapOidcUserToDomainModel(c))).catch(c=>{if(!(c instanceof Error)||c.message!=="Attempted to navigate on a disposed window"){l(c);return}let E=!1,a=new L(this.config.popupOverlayOptions||{},!0);a.append(async()=>{try{if(E)window.open("",o);else {E=!0;let h=await i();a.remove(),d(n.mapOidcUserToDomainModel(h));}}catch(h){a.remove(),l(h);}},()=>{a.remove(),l(new Error("Popup closed by user"));});});})},"AUTHENTICATION_ERROR")}static mapOidcUserToDomainModel=e=>{let t,r;if(e.id_token){let i=f(e.id_token);t=i?.passport,i?.username&&(r=i?.username);}let o={expired:e.expired,idToken:e.id_token,accessToken:e.access_token,refreshToken:e.refresh_token,profile:{sub:e.profile.sub,email:e.profile.email,nickname:e.profile.nickname,username:r}};return t?.zkevm_eth_address&&t?.zkevm_user_admin_address&&(o.zkEvm={ethAddress:t.zkevm_eth_address,userAdminAddress:t.zkevm_user_admin_address}),o};static mapDeviceTokenResponseToOidcUser=e=>{let t=f(e.id_token);return new User({id_token:e.id_token,access_token:e.access_token,refresh_token:e.refresh_token,token_type:e.token_type,profile:{sub:t.sub,iss:t.iss,aud:t.aud,exp:t.exp,iat:t.iat,email:t.email,nickname:t.nickname,passport:t.passport,...t.username?{username:t.username}:{}}})};async loginCallbackInternal(){return g(async()=>{let e=await this.userManager.signinCallback();if(e)return n.mapOidcUserToDomainModel(e)},"AUTHENTICATION_ERROR")}async getPKCEAuthorizationUrl(e,t){let r=M(window.crypto.getRandomValues(new Uint8Array(32))),o=M(await Ge(r)),i=M(window.crypto.getRandomValues(new Uint8Array(32))),{redirectUri:d,scope:l,audience:c,clientId:E}=this.config.oidcConfiguration;this.deviceCredentialsManager.savePKCEData({state:i,verifier:r});let a=new URL(Fe,this.config.authenticationDomain);if(a.searchParams.set("response_type","code"),a.searchParams.set("code_challenge",o),a.searchParams.set("code_challenge_method","S256"),a.searchParams.set("client_id",E),a.searchParams.set("redirect_uri",d),a.searchParams.set("state",i),l&&a.searchParams.set("scope",l),c&&a.searchParams.set("audience",c),e){if(e.directLoginMethod==="email"){let h=e.email;h&&(a.searchParams.set("direct",e.directLoginMethod),a.searchParams.set("email",h));}else a.searchParams.set("direct",e.directLoginMethod);e.marketingConsentStatus&&a.searchParams.set("marketingConsent",e.marketingConsentStatus);}return t&&a.searchParams.set("im_passport_trace_id",t),a.toString()}async loginWithPKCEFlowCallbackInternal(e,t){return g(async()=>{let r=this.deviceCredentialsManager.getPKCEData();if(!r)throw new Error("No code verifier or state for PKCE");if(t!==r.state)throw new Error("Provided state does not match stored state");let o=await this.getPKCEToken(e,r.verifier),i=n.mapDeviceTokenResponseToOidcUser(o),d=n.mapOidcUserToDomainModel(i);return await this.userManager.storeUser(i),d},"AUTHENTICATION_ERROR")}async getPKCEToken(e,t){let r=await fetch(`${this.config.authenticationDomain}/oauth/token`,{method:"POST",headers:xe,body:new URLSearchParams({client_id:this.config.oidcConfiguration.clientId,grant_type:"authorization_code",code_verifier:t,code:e,redirect_uri:this.config.oidcConfiguration.redirectUri})}),o=await r.text(),i=Se(o);if(!r.ok)throw new Error(Me(i,o,r.status));if(!i||typeof i!="object")throw new Error("Token endpoint returned an invalid response");return i}async storeTokensInternal(e){return g(async()=>{let t=n.mapDeviceTokenResponseToOidcUser(e),r=n.mapOidcUserToDomainModel(t);return await this.userManager.storeUser(t),r},"AUTHENTICATION_ERROR")}async logoutInternal(){await g(async()=>{await this.userManager.revokeTokens(["refresh_token"]),this.logoutMode==="silent"?await this.userManager.signoutSilent():await this.userManager.signoutRedirect();},"LOGOUT_ERROR");}async getLogoutUrlInternal(){let e=this.userManager.settings?.metadata?.end_session_endpoint;return e||(y.warn("Failed to get logout URL"),null)}forceUserRefreshInBackgroundInternal(){this.refreshTokenAndUpdatePromise().catch(e=>{y.warn("Failed to refresh user token",e);});}async forceUserRefreshInternal(){return this.refreshTokenAndUpdatePromise().catch(e=>(y.warn("Failed to refresh user token",e),null))}async refreshTokenAndUpdatePromise(){return this.refreshingPromise?this.refreshingPromise:(this.refreshingPromise=new Promise((e,t)=>{(async()=>{try{let r=await this.userManager.signinSilent();if(r){e(n.mapOidcUserToDomainModel(r));return}e(null);}catch(r){let o="AUTHENTICATION_ERROR",i="Failed to refresh token",d=!0;if(r instanceof ErrorTimeout?(o="SILENT_LOGIN_ERROR",i=`${i}: ${r.message}`,d=!1):r instanceof ErrorResponse?(o="NOT_LOGGED_IN_ERROR",i=`${i}: ${r.message||r.error_description}`):r instanceof Error?i=`${i}: ${r.message}`:typeof r=="string"&&(i=`${i}: ${r}`),d)try{await this.userManager.removeUser();}catch(l){l instanceof Error&&(i=`${i}: Failed to remove user: ${l.message}`);}t(new u(i,o));}finally{this.refreshingPromise=null;}})();}),this.refreshingPromise)}async getUserInternal(e=t=>!0){if(this.refreshingPromise){let r=await this.refreshingPromise;return r&&e(r)?r:null}let t=await this.userManager.getUser();if(!t)return null;if(!X(t)){let r=n.mapOidcUserToDomainModel(t);if(r&&e(r))return r}if(t.refresh_token){let r=await this.refreshTokenAndUpdatePromise();if(r&&e(r))return r}return null}async getUserZkEvmInternal(){let e=await this.getUserInternal(U);if(!e)throw new Error("Failed to obtain a User with the required ZkEvm attributes");return e}};
387
+ `,document.head.appendChild(e);};getEmbeddedLoginIFrame=()=>{let e=document.createElement("iframe");return e.id=z,e.src=this.getHref(),e.style.height="100vh",e.style.width="100vw",e.style.maxHeight=`${se}px`,e.style.maxWidth=`${ae}px`,e.style.borderRadius=le,e.style.opacity="0",e.style.transform="scale(0.6)",e.style.animation="passportEmbeddedLoginPromptPopBounceIn 1s ease forwards",n.appendIFrameStylesIfNeeded(),e};displayEmbeddedLoginPrompt(){return new Promise((e,t)=>{let r=this.getEmbeddedLoginIFrame(),i=({data:o,origin:l})=>{if(!(l!==this.config.authenticationDomain||o.eventType!==H))switch(o.messageType){case"login_method_selected":{let d=o.payload;window.removeEventListener("message",i),u.remove(),e(d);break}case"login_prompt_error":{window.removeEventListener("message",i),u.remove(),t(new Error("Error during embedded login prompt",{cause:o.payload}));break}case"login_prompt_closed":{window.removeEventListener("message",i),u.remove(),t(new Error("Popup closed by user"));break}default:window.removeEventListener("message",i),u.remove(),t(new Error(`Unsupported message type: ${o.messageType}`));break}};window.addEventListener("message",i),u.appendOverlay(r,()=>{window.removeEventListener("message",i),u.remove(),t(new Error("Popup closed by user"));});})}};var C=class{listeners=new Map;emit(e,...t){let r=this.listeners.get(e);!r||r.size===0||[...r].forEach(i=>{i(...t);});}on(e,t){let r=this.listeners.get(e)??new Set;r.add(t),this.listeners.set(e,r);}removeListener(e,t){let r=this.listeners.get(e);r&&(r.delete(t),r.size===0&&this.listeners.delete(e));}};var c=async(n,e,t=!0,r=!0)=>{let i=trackFlow("passport",e,t);try{return await n(i)}catch(o){throw o instanceof Error?trackError("passport",e,o,{flowId:i.details.flowId}):i.addEvent("errored"),o}finally{r&&i.addEvent("End");}};var pe=()=>typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{},ue=n=>{let e=n.replace(/-/g,"+").replace(/_/g,"/"),t=e.length%4===0?"":"=".repeat(4-e.length%4);return e+t},me=n=>{let e=pe();if(typeof e.atob!="function")return null;let t=e.atob(n),r=new Uint8Array(t.length);for(let o=0;o<t.length;o+=1)r[o]=t.charCodeAt(o);if(typeof e.TextDecoder=="function")return new e.TextDecoder("utf-8").decode(r);let i="";for(let o=0;o<r.length;o+=1)i+=String.fromCharCode(r[o]);return i},ge=n=>{if(typeof Buffer<"u")return Buffer.from(n,"base64").toString("utf-8");let e=me(n);if(e===null)throw new Error("Base64 decoding is not supported in this environment");return e},f=n=>{if(typeof n!="string")throw new Error("JWT must be a string");let e=n.split(".");if(e.length<2)throw new Error("Invalid JWT: payload segment is missing");let t=e[1],r=ge(ue(t));try{return JSON.parse(r)}catch{throw new Error("Invalid JWT payload: unable to parse JSON")}};var J="pkce_state",j="pkce_verifier",fe=3600,v=class{isTokenValid(e){try{let r=f(e).exp??0,i=Date.now()/1e3+fe;return r>i}catch{return !1}}savePKCEData(e){localStorage.setItem(J,e.state),localStorage.setItem(j,e.verifier);}getPKCEData(){let e=localStorage.getItem(J),t=localStorage.getItem(j);return e&&t?{state:e,verifier:t}:null}};var Ee=(...n)=>{if(typeof process>"u")return;process?.env?.JEST_WORKER_ID===void 0&&console.warn(...n);},y={warn:Ee};function Q(n){try{let e=f(n),t=Math.floor(Date.now()/1e3);return e.exp?e.exp<=t+30:!0}catch{return !0}}function q(n){let{id_token:e,access_token:t}=n;return !t||!e?!0:Q(t)||Q(e)}var T=class{disableGenericPopupOverlay;disableBlockedPopupOverlay;overlay;isBlockedOverlay;tryAgainListener;onCloseListener;constructor(e,t=!1){this.disableBlockedPopupOverlay=e.disableBlockedPopupOverlay||!1,this.disableGenericPopupOverlay=e.disableGenericPopupOverlay||!1,this.isBlockedOverlay=t;}append(e,t){this.shouldAppendOverlay()&&(this.appendOverlay(),this.updateTryAgainButton(e),this.updateCloseButton(t));}update(e){this.updateTryAgainButton(e);}remove(){this.overlay&&this.overlay.remove();}shouldAppendOverlay(){return !(this.disableGenericPopupOverlay&&this.disableBlockedPopupOverlay||this.disableGenericPopupOverlay&&!this.isBlockedOverlay||this.disableBlockedPopupOverlay&&this.isBlockedOverlay)}appendOverlay(){if(!this.overlay){A({id:"link-googleapis",href:"https://fonts.googleapis.com"}),A({id:"link-gstatic",href:"https://fonts.gstatic.com",crossOrigin:"anonymous"}),A({id:"link-roboto",href:"https://fonts.googleapis.com/css2?family=Roboto:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&display=swap",rel:"stylesheet"});let t=document.createElement("div");t.innerHTML=this.isBlockedOverlay?W():$(),document.body.insertAdjacentElement("beforeend",t),this.overlay=t;}}updateTryAgainButton(e){let t=document.getElementById(w);t&&(this.tryAgainListener&&t.removeEventListener("click",this.tryAgainListener),this.tryAgainListener=e,t.addEventListener("click",e));}updateCloseButton(e){let t=document.getElementById(I);t&&(this.onCloseListener&&t.removeEventListener("click",this.onCloseListener),this.onCloseListener=e,t.addEventListener("click",e));}};var k=class{storage;constructor(e,t){this.storage=he.createInstance({name:e,driver:t});}get length(){return this.storage.length()}clear(){return this.storage.clear()}getItem(e){return this.storage.getItem(e)}key(e){return this.storage.key(e)}async removeItem(e){await this.storage.removeItem(e);}async setItem(e,t){await this.storage.setItem(e,t);}};var ke={"Content-Type":"application/x-www-form-urlencoded"},be=n=>{if(n)try{return JSON.parse(n)}catch{return}},Ue=(n,e,t)=>{if(n&&typeof n=="object"){let r=n,i=r.error_description??r.message??r.error;if(typeof i=="string"&&i.trim().length>0)return i}return e.trim().length>0?e:`Token request failed with status ${t}`},xe="/v2/logout",Se="/im-logged-out",Me="/authorize",Ne=n=>n?Se:xe,De=n=>{let{authenticationDomain:e,oidcConfiguration:t}=n,r;n.crossSdkBridgeEnabled?r=new k("ImmutableSDKPassport",he.INDEXEDDB):typeof window<"u"?r=window.localStorage:r=new InMemoryWebStorage;let i=new WebStorageStateStore({store:r}),o=new URL(Ne(n.crossSdkBridgeEnabled),e.replace(/^(?:https?:\/\/)?(.*)/,"https://$1"));return o.searchParams.set("client_id",t.clientId),t.logoutRedirectUri&&o.searchParams.set("returnTo",t.logoutRedirectUri),{authority:e,redirect_uri:t.redirectUri,popup_redirect_uri:t.popupRedirectUri||t.redirectUri,client_id:t.clientId,metadata:{authorization_endpoint:`${e}/authorize`,token_endpoint:`${e}/oauth/token`,userinfo_endpoint:`${e}/userinfo`,end_session_endpoint:o.toString(),revocation_endpoint:`${e}/oauth/revoke`},automaticSilentRenew:!1,scope:t.scope,userStore:i,revokeTokenTypes:["refresh_token"],extraQueryParams:{...t.audience?{audience:t.audience}:{}}}};function M(n){return btoa(String.fromCharCode(...new Uint8Array(n))).replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,"")}async function Fe(n){let t=new TextEncoder().encode(n);return window.crypto.subtle.digest("SHA-256",t)}var N=class n{config;userManager;deviceCredentialsManager;embeddedLoginPrompt;logoutMode;refreshingPromise=null;eventEmitter;constructor(e){this.config=new _(e),this.embeddedLoginPrompt=new O(this.config),this.userManager=new UserManager(De(this.config)),this.deviceCredentialsManager=new v,this.logoutMode=this.config.oidcConfiguration.logoutMode||"redirect",this.eventEmitter=new C,track("passport","initialise");}async login(e){return c(async()=>{let{useCachedSession:t=!1,useSilentLogin:r}=e||{},i=null;try{i=await this.getUserInternal();}catch(o){if(o instanceof Error&&!o.message.includes("Unknown or invalid refresh token")&&trackError("passport","login",o),t)throw o;y.warn("Failed to retrieve a cached user session",o);}if(!i&&r)i=await this.forceUserRefreshInternal();else if(!i&&!t){if(e?.useRedirectFlow)return await this.loginWithRedirectInternal(e?.directLoginOptions),null;i=await this.loginWithPopup(e?.directLoginOptions);}return i&&this.handleSuccessfulLogin(i),i},"login")}async loginWithRedirect(e){await this.loginWithRedirectInternal(e);}async loginCallback(){return c(async()=>{let e=await this.loginCallbackInternal();return e&&this.handleSuccessfulLogin(e),e},"loginCallback")}async logout(){await c(async()=>{await this.logoutInternal(),this.eventEmitter.emit("loggedOut");},"logout");}async getUser(){return this.getUserInternal()}async getUserOrLogin(){let e=null;try{e=await this.getUserInternal();}catch(r){y.warn("Failed to retrieve a cached user session",r);}if(e)return e;let t=await this.loginWithPopup();return this.handleSuccessfulLogin(t),t}async getUserZkEvm(){return this.getUserZkEvmInternal()}async getIdToken(){return c(async()=>(await this.getUserInternal())?.idToken,"getIdToken",!1)}async getAccessToken(){return c(async()=>(await this.getUserInternal())?.accessToken,"getAccessToken",!1,!1)}async isLoggedIn(){return await this.getUser()!==null}async forceUserRefresh(){return this.forceUserRefreshInternal()}forceUserRefreshInBackground(){this.forceUserRefreshInBackgroundInternal();}async loginWithPKCEFlow(e,t){return c(async()=>this.getPKCEAuthorizationUrl(e,t),"loginWithPKCEFlow")}async loginWithPKCEFlowCallback(e,t){return c(async()=>{let r=await this.loginWithPKCEFlowCallbackInternal(e,t);return this.handleSuccessfulLogin(r),r},"loginWithPKCEFlowCallback")}async storeTokens(e){return c(async()=>{let t=await this.storeTokensInternal(e);return this.handleSuccessfulLogin(t),t},"storeTokens")}async getLogoutUrl(){return c(async()=>(await this.userManager.removeUser(),this.eventEmitter.emit("loggedOut"),await this.getLogoutUrlInternal()||void 0),"getLogoutUrl")}async logoutSilentCallback(e){return c(()=>this.userManager.signoutSilentCallback(e),"logoutSilentCallback")}getConfig(){return this.config}async getClientId(){return this.config.oidcConfiguration.clientId}handleSuccessfulLogin(e){this.eventEmitter.emit("loggedIn",e),identify({passportId:e.profile.sub});}buildExtraQueryParams(e,t){let r={...this.userManager.settings?.extraQueryParams??{},rid:getDetail(Detail.RUNTIME_ID)||""};if(e){if(e.directLoginMethod==="email"){let i=e.email;i&&(r.direct=e.directLoginMethod,r.email=i);}else r.direct=e.directLoginMethod;e.marketingConsentStatus&&(r.marketingConsent=e.marketingConsentStatus);}return t&&(r.im_passport_trace_id=t),r}async loginWithRedirectInternal(e){await this.userManager.clearStaleState(),await g(async()=>{let t=this.buildExtraQueryParams(e);await this.userManager.signinRedirect({extraQueryParams:t});},"AUTHENTICATION_ERROR");}async loginWithPopup(e){return g(async()=>{let t,r;if(e)t=e;else if(!this.config.popupOverlayOptions?.disableHeadlessLoginPromptOverlay){let{imPassportTraceId:l,...d}=await this.embeddedLoginPrompt.displayEmbeddedLoginPrompt();t=d,r=l;}let i=window.crypto.randomUUID(),o=async()=>{let l=this.buildExtraQueryParams(t,r);return this.userManager.signinPopup({extraQueryParams:l,popupWindowFeatures:{width:410,height:450},popupWindowTarget:i,popupAbortOnClose:!0})};return new Promise((l,d)=>{o().then(m=>l(n.mapOidcUserToDomainModel(m))).catch(m=>{if(!(m instanceof Error)||m.message!=="Attempted to navigate on a disposed window"){d(m);return}let L=!1,a=new T(this.config.popupOverlayOptions||{},!0);a.append(async()=>{try{if(L)window.open("",i);else {L=!0;let E=await o();a.remove(),l(n.mapOidcUserToDomainModel(E));}}catch(E){a.remove(),d(E);}},()=>{a.remove(),d(new Error("Popup closed by user"));});});})},"AUTHENTICATION_ERROR")}static mapOidcUserToDomainModel=e=>{let t,r;if(e.id_token){let o=f(e.id_token);t=o?.passport,o?.username&&(r=o?.username);}let i={expired:e.expired,idToken:e.id_token,accessToken:e.access_token,refreshToken:e.refresh_token,profile:{sub:e.profile.sub,email:e.profile.email,nickname:e.profile.nickname,username:r}};return t?.zkevm_eth_address&&t?.zkevm_user_admin_address&&(i.zkEvm={ethAddress:t.zkevm_eth_address,userAdminAddress:t.zkevm_user_admin_address}),i};static mapDeviceTokenResponseToOidcUser=e=>{let t=f(e.id_token);return new User({id_token:e.id_token,access_token:e.access_token,refresh_token:e.refresh_token,token_type:e.token_type,profile:{sub:t.sub,iss:t.iss,aud:t.aud,exp:t.exp,iat:t.iat,email:t.email,nickname:t.nickname,passport:t.passport,...t.username?{username:t.username}:{}}})};async loginCallbackInternal(){return g(async()=>{let e=await this.userManager.signinCallback();if(e)return n.mapOidcUserToDomainModel(e)},"AUTHENTICATION_ERROR")}async getPKCEAuthorizationUrl(e,t){let r=M(window.crypto.getRandomValues(new Uint8Array(32))),i=M(await Fe(r)),o=M(window.crypto.getRandomValues(new Uint8Array(32))),{redirectUri:l,scope:d,audience:m,clientId:L}=this.config.oidcConfiguration;this.deviceCredentialsManager.savePKCEData({state:o,verifier:r});let a=new URL(Me,this.config.authenticationDomain);if(a.searchParams.set("response_type","code"),a.searchParams.set("code_challenge",i),a.searchParams.set("code_challenge_method","S256"),a.searchParams.set("client_id",L),a.searchParams.set("redirect_uri",l),a.searchParams.set("state",o),d&&a.searchParams.set("scope",d),m&&a.searchParams.set("audience",m),e){if(e.directLoginMethod==="email"){let E=e.email;E&&(a.searchParams.set("direct",e.directLoginMethod),a.searchParams.set("email",E));}else a.searchParams.set("direct",e.directLoginMethod);e.marketingConsentStatus&&a.searchParams.set("marketingConsent",e.marketingConsentStatus);}return t&&a.searchParams.set("im_passport_trace_id",t),a.toString()}async loginWithPKCEFlowCallbackInternal(e,t){return g(async()=>{let r=this.deviceCredentialsManager.getPKCEData();if(!r)throw new Error("No code verifier or state for PKCE");if(t!==r.state)throw new Error("Provided state does not match stored state");let i=await this.getPKCEToken(e,r.verifier),o=n.mapDeviceTokenResponseToOidcUser(i),l=n.mapOidcUserToDomainModel(o);return await this.userManager.storeUser(o),l},"AUTHENTICATION_ERROR")}async getPKCEToken(e,t){let r=await fetch(`${this.config.authenticationDomain}/oauth/token`,{method:"POST",headers:ke,body:new URLSearchParams({client_id:this.config.oidcConfiguration.clientId,grant_type:"authorization_code",code_verifier:t,code:e,redirect_uri:this.config.oidcConfiguration.redirectUri})}),i=await r.text(),o=be(i);if(!r.ok)throw new Error(Ue(o,i,r.status));if(!o||typeof o!="object")throw new Error("Token endpoint returned an invalid response");return o}async storeTokensInternal(e){return g(async()=>{let t=n.mapDeviceTokenResponseToOidcUser(e),r=n.mapOidcUserToDomainModel(t);return await this.userManager.storeUser(t),r},"AUTHENTICATION_ERROR")}async logoutInternal(){await g(async()=>{await this.userManager.revokeTokens(["refresh_token"]),this.logoutMode==="silent"?await this.userManager.signoutSilent():await this.userManager.signoutRedirect();},"LOGOUT_ERROR");}async getLogoutUrlInternal(){let e=this.userManager.settings?.metadata?.end_session_endpoint;return e||(y.warn("Failed to get logout URL"),null)}forceUserRefreshInBackgroundInternal(){this.refreshTokenAndUpdatePromise().catch(e=>{y.warn("Failed to refresh user token",e);});}async forceUserRefreshInternal(){return this.refreshTokenAndUpdatePromise().catch(e=>(y.warn("Failed to refresh user token",e),null))}async refreshTokenAndUpdatePromise(){return this.refreshingPromise?this.refreshingPromise:(this.refreshingPromise=new Promise((e,t)=>{(async()=>{try{let r=await this.userManager.signinSilent();if(r){e(n.mapOidcUserToDomainModel(r));return}e(null);}catch(r){let i="AUTHENTICATION_ERROR",o="Failed to refresh token",l=!0;if(r instanceof ErrorTimeout?(i="SILENT_LOGIN_ERROR",o=`${o}: ${r.message}`,l=!1):r instanceof ErrorResponse?(i="NOT_LOGGED_IN_ERROR",o=`${o}: ${r.message||r.error_description}`):r instanceof Error?o=`${o}: ${r.message}`:typeof r=="string"&&(o=`${o}: ${r}`),l)try{await this.userManager.removeUser();}catch(d){d instanceof Error&&(o=`${o}: Failed to remove user: ${d.message}`);}t(new p(o,i));}finally{this.refreshingPromise=null;}})();}),this.refreshingPromise)}async getUserInternal(e=t=>!0){if(this.refreshingPromise){let r=await this.refreshingPromise;return r&&e(r)?r:null}let t=await this.userManager.getUser();if(!t)return null;if(!q(t)){let r=n.mapOidcUserToDomainModel(t);if(r&&e(r))return r}if(t.refresh_token){let r=await this.refreshTokenAndUpdatePromise();if(r&&e(r))return r}return null}async getUserZkEvmInternal(){let e=await this.getUserInternal(U);if(!e)throw new Error("Failed to obtain a User with the required ZkEvm attributes");return e}};
388
388
 
389
- export { N as Auth, R as AuthConfiguration, x as AuthEvents, H as MarketingConsentStatus, u as PassportError, P as PassportErrorType, F as RollupType, _ as TypedEventEmitter, f as decodeJwtPayload, b as isAPIError, U as isUserZkEvm, g as withPassportError };
389
+ export { N as Auth, _ as AuthConfiguration, x as AuthEvents, F as MarketingConsentStatus, p as PassportError, P as PassportErrorType, D as RollupType, C as TypedEventEmitter, f as decodeJwtPayload, b as isAPIError, U as isUserZkEvm, g as withPassportError };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@imtbl/auth",
3
- "version": "2.12.3-alpha.0",
3
+ "version": "2.12.3-alpha.1",
4
4
  "description": "Authentication SDK for Immutable",
5
5
  "author": "Immutable",
6
6
  "bugs": "https://github.com/immutable/ts-immutable-sdk/issues",
@@ -25,8 +25,8 @@
25
25
  }
26
26
  },
27
27
  "dependencies": {
28
- "@imtbl/generated-clients": "2.12.3-alpha.0",
29
- "@imtbl/metrics": "2.12.3-alpha.0",
28
+ "@imtbl/generated-clients": "2.12.3-alpha.1",
29
+ "@imtbl/metrics": "2.12.3-alpha.1",
30
30
  "localforage": "^1.10.0",
31
31
  "oidc-client-ts": "3.4.1"
32
32
  },
package/src/Auth.test.ts CHANGED
@@ -186,21 +186,11 @@ describe('Auth', () => {
186
186
  });
187
187
  });
188
188
 
189
- describe('loginWithPopup - popup closure detection', () => {
189
+ describe('loginWithPopup', () => {
190
190
  let mockUserManager: any;
191
- let mockPopupWindow: any;
192
- let originalWindowOpen: any;
193
191
  let originalCryptoRandomUUID: any;
194
192
 
195
193
  beforeEach(() => {
196
- // Mock window.open to return a controllable popup reference
197
- originalWindowOpen = window.open;
198
- mockPopupWindow = {
199
- closed: false,
200
- close: jest.fn(),
201
- };
202
- window.open = jest.fn().mockReturnValue(mockPopupWindow);
203
-
204
194
  // Mock crypto.randomUUID
205
195
  originalCryptoRandomUUID = window.crypto.randomUUID;
206
196
  window.crypto.randomUUID = jest.fn().mockReturnValue('test-popup-id');
@@ -212,17 +202,13 @@ describe('Auth', () => {
212
202
  extraQueryParams: {},
213
203
  },
214
204
  };
215
-
216
- jest.useFakeTimers();
217
205
  });
218
206
 
219
207
  afterEach(() => {
220
- window.open = originalWindowOpen;
221
208
  window.crypto.randomUUID = originalCryptoRandomUUID;
222
- jest.useRealTimers();
223
209
  });
224
210
 
225
- it('resolves successfully when authentication completes before popup closes', async () => {
211
+ it('successfully completes authentication and returns user', async () => {
226
212
  const mockOidcUser = {
227
213
  id_token: 'token',
228
214
  access_token: 'access',
@@ -236,12 +222,7 @@ describe('Auth', () => {
236
222
  passport: undefined,
237
223
  });
238
224
 
239
- // Simulate successful authentication that resolves quickly
240
- mockUserManager.signinPopup.mockImplementation(() => new Promise((resolve) => {
241
- setTimeout(() => {
242
- resolve(mockOidcUser);
243
- }, 100);
244
- }));
225
+ mockUserManager.signinPopup.mockResolvedValue(mockOidcUser);
245
226
 
246
227
  const auth = Object.create(Auth.prototype) as Auth;
247
228
  (auth as any).userManager = mockUserManager;
@@ -250,60 +231,17 @@ describe('Auth', () => {
250
231
  };
251
232
  getDetailMock.mockReturnValue('runtime-id-value');
252
233
 
253
- // Pass directLoginOptions to skip embeddedLoginPrompt
254
- const loginPromise = (auth as any).loginWithPopup({
234
+ const user = await (auth as any).loginWithPopup({
255
235
  directLoginMethod: 'google',
256
236
  marketingConsentStatus: 'opted_in',
257
237
  });
258
238
 
259
- // Fast-forward time to complete authentication
260
- jest.advanceTimersByTime(150);
261
-
262
- const user = await loginPromise;
263
-
264
239
  expect(user).toBeDefined();
265
240
  expect(user.profile.sub).toBe('user-123');
266
- expect(mockPopupWindow.close).toHaveBeenCalled();
267
- });
268
-
269
- it('rejects with error when popup is closed manually before authentication completes', async () => {
270
- // Simulate authentication that takes a long time
271
- mockUserManager.signinPopup.mockImplementation(() => new Promise((resolve) => {
272
- setTimeout(() => {
273
- resolve({
274
- id_token: 'token',
275
- access_token: 'access',
276
- refresh_token: 'refresh',
277
- expired: false,
278
- profile: { sub: 'user-123', email: 'test@example.com', nickname: 'tester' },
279
- });
280
- }, 5000); // Takes 5 seconds
281
- }));
282
-
283
- const auth = Object.create(Auth.prototype) as Auth;
284
- (auth as any).userManager = mockUserManager;
285
- (auth as any).config = {
286
- popupOverlayOptions: { disableHeadlessLoginPromptOverlay: true },
287
- };
288
- getDetailMock.mockReturnValue('runtime-id-value');
289
-
290
- // Pass directLoginOptions to skip embeddedLoginPrompt
291
- const loginPromise = (auth as any).loginWithPopup({
292
- directLoginMethod: 'google',
293
- marketingConsentStatus: 'opted_in',
294
- });
295
-
296
- // Simulate user closing popup after 1 second
297
- jest.advanceTimersByTime(1000);
298
- mockPopupWindow.closed = true;
299
-
300
- // Advance time to trigger the polling check
301
- jest.advanceTimersByTime(500);
302
-
303
- await expect(loginPromise).rejects.toThrow('Popup closed by user');
241
+ expect(user.profile.email).toBe('test@example.com');
304
242
  });
305
243
 
306
- it('does not reject when popup closes after authentication completes successfully', async () => {
244
+ it('calls signinPopup with correct configuration', async () => {
307
245
  const mockOidcUser = {
308
246
  id_token: 'token',
309
247
  access_token: 'access',
@@ -317,12 +255,7 @@ describe('Auth', () => {
317
255
  passport: undefined,
318
256
  });
319
257
 
320
- // Simulate successful authentication
321
- mockUserManager.signinPopup.mockImplementation(() => new Promise((resolve) => {
322
- setTimeout(() => {
323
- resolve(mockOidcUser);
324
- }, 100);
325
- }));
258
+ mockUserManager.signinPopup.mockResolvedValue(mockOidcUser);
326
259
 
327
260
  const auth = Object.create(Auth.prototype) as Auth;
328
261
  (auth as any).userManager = mockUserManager;
@@ -331,41 +264,24 @@ describe('Auth', () => {
331
264
  };
332
265
  getDetailMock.mockReturnValue('runtime-id-value');
333
266
 
334
- // Pass directLoginOptions to skip embeddedLoginPrompt
335
- const loginPromise = (auth as any).loginWithPopup({
267
+ await (auth as any).loginWithPopup({
336
268
  directLoginMethod: 'google',
337
269
  marketingConsentStatus: 'opted_in',
338
270
  });
339
271
 
340
- // Complete authentication
341
- jest.advanceTimersByTime(150);
342
-
343
- // Now close the popup AFTER auth completed
344
- mockPopupWindow.closed = true;
345
-
346
- // Advance polling interval - should NOT reject
347
- jest.advanceTimersByTime(600);
348
-
349
- const user = await loginPromise;
350
- expect(user).toBeDefined();
351
- expect(user.profile.sub).toBe('user-123');
272
+ expect(mockUserManager.signinPopup).toHaveBeenCalledWith(
273
+ expect.objectContaining({
274
+ popupWindowTarget: 'test-popup-id',
275
+ popupWindowFeatures: { width: 410, height: 450 },
276
+ popupAbortOnClose: true,
277
+ extraQueryParams: expect.any(Object),
278
+ }),
279
+ );
352
280
  });
353
281
 
354
- it('stops polling after authentication completes', async () => {
355
- const mockOidcUser = {
356
- id_token: 'token',
357
- access_token: 'access',
358
- refresh_token: 'refresh',
359
- expired: false,
360
- profile: { sub: 'user-123', email: 'test@example.com', nickname: 'tester' },
361
- };
362
-
363
- (decodeJwtPayload as jest.Mock).mockReturnValue({
364
- username: 'username123',
365
- passport: undefined,
366
- });
367
-
368
- mockUserManager.signinPopup.mockResolvedValue(mockOidcUser);
282
+ it('rejects when signinPopup rejects', async () => {
283
+ const error = new Error('Authentication failed');
284
+ mockUserManager.signinPopup.mockRejectedValue(error);
369
285
 
370
286
  const auth = Object.create(Auth.prototype) as Auth;
371
287
  (auth as any).userManager = mockUserManager;
@@ -374,26 +290,10 @@ describe('Auth', () => {
374
290
  };
375
291
  getDetailMock.mockReturnValue('runtime-id-value');
376
292
 
377
- const setIntervalSpy = jest.spyOn(global, 'setInterval');
378
- const clearIntervalSpy = jest.spyOn(global, 'clearInterval');
379
-
380
- // Pass directLoginOptions to skip embeddedLoginPrompt
381
- const loginPromise = (auth as any).loginWithPopup({
293
+ await expect((auth as any).loginWithPopup({
382
294
  directLoginMethod: 'google',
383
295
  marketingConsentStatus: 'opted_in',
384
- });
385
-
386
- // Let authentication complete
387
- await Promise.resolve();
388
- jest.runAllTimers();
389
-
390
- await loginPromise;
391
-
392
- // Verify that clearInterval was called (timer stopped)
393
- expect(clearIntervalSpy).toHaveBeenCalled();
394
-
395
- setIntervalSpy.mockRestore();
396
- clearIntervalSpy.mockRestore();
296
+ })).rejects.toThrow('Authentication failed');
397
297
  });
398
298
  });
399
299
  });
package/src/Auth.ts CHANGED
@@ -41,7 +41,6 @@ import { isAccessTokenExpiredOrExpiring } from './utils/token';
41
41
  import LoginPopupOverlay from './overlay/loginPopupOverlay';
42
42
  import { LocalForageAsyncStorage } from './storage/LocalForageAsyncStorage';
43
43
 
44
- const LOGIN_POPUP_CLOSED_POLLING_DURATION = 500;
45
44
  const formUrlEncodedHeaders = {
46
45
  'Content-Type': 'application/x-www-form-urlencoded',
47
46
  };
@@ -499,7 +498,7 @@ export class Auth {
499
498
  const signinPopup = async () => {
500
499
  const extraQueryParams = this.buildExtraQueryParams(directLoginOptionsToUse, imPassportTraceId);
501
500
 
502
- const userPromise = this.userManager.signinPopup({
501
+ return this.userManager.signinPopup({
503
502
  extraQueryParams,
504
503
  popupWindowFeatures: {
505
504
  width: 410,
@@ -509,41 +508,6 @@ export class Auth {
509
508
  // Enable oidc-client-ts native popup close detection (works for initial screen)
510
509
  popupAbortOnClose: true,
511
510
  });
512
-
513
- // Additional polling workaround to detect popup closure during navigation
514
- // (e.g., when user navigates to third-party login, passwordless, or captcha screens)
515
- // This complements oidc-client-ts native detection which only checks once at start
516
- const popupRef = window.open('', popupWindowTarget);
517
- if (popupRef) {
518
- // Flag to track if authentication completed (success or failure)
519
- let authenticationCompleted = false;
520
-
521
- // Create a promise that rejects when popup is closed
522
- const popupClosedPromise = new Promise<never>((_, reject) => {
523
- const timer = setInterval(() => {
524
- // Only reject if popup closed AND authentication hasn't completed yet
525
- if (popupRef.closed && !authenticationCompleted) {
526
- clearInterval(timer);
527
- reject(new Error('Popup closed by user'));
528
- }
529
- }, LOGIN_POPUP_CLOSED_POLLING_DURATION);
530
-
531
- // Clean up timer when the user promise resolves/rejects
532
- userPromise.finally(() => {
533
- authenticationCompleted = true;
534
- clearInterval(timer);
535
- // Close popup if still open (e.g., auth completed but popup didn't auto-close)
536
- if (!popupRef.closed) {
537
- popupRef.close();
538
- }
539
- });
540
- });
541
-
542
- // Race between user authentication and popup being closed
543
- return Promise.race([userPromise, popupClosedPromise]);
544
- }
545
-
546
- return userPromise;
547
511
  };
548
512
 
549
513
  return new Promise((resolve, reject) => {