@frak-labs/nexus-sdk 0.0.39 → 0.0.40
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.
- package/dist/bundle/bundle.js +1 -1
- package/package.json +1 -1
package/dist/bundle/bundle.js
CHANGED
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
Last Response: ${t.lastResponse}
|
|
12
12
|
Client Status: ${t.clientStatus}
|
|
13
13
|
Error: ${t.error}
|
|
14
|
-
`.trim()}}let ek={id:"frak-wallet",name:"frak-wallet",title:"Frak Wallet",allow:"publickey-credentials-get *; clipboard-write; web-share *",style:{width:"0",height:"0",border:"0",position:"absolute",zIndex:2000001,top:"-1000px",left:"-1000px",colorScheme:"auto"}};function e_({walletBaseUrl:e,config:t}){let r=document.querySelector("#frak-wallet");r&&r.remove();let n=document.createElement("iframe");return n.id=ek.id,n.name=ek.name,n.allow=ek.allow,n.style.zIndex=ek.style.zIndex.toString(),eS({iframe:n,isVisible:!1}),document.body.appendChild(n),new Promise(r=>{n?.addEventListener("load",()=>r(n)),n.src=`${t?.walletUrl??e??"https://wallet.frak.id"}/listener`})}function eS({iframe:e,isVisible:t}){if(!t){e.style.width="0",e.style.height="0",e.style.border="0",e.style.position="fixed",e.style.top="-1000px",e.style.left="-1000px";return}e.style.position="fixed",e.style.top="0",e.style.left="0",e.style.width="100%",e.style.height="100%",e.style.pointerEvents="auto"}function eE({config:e,iframe:t}){let r,n,i=(r=new Map,{createChannel:e=>{let t=Math.random().toString(36).substring(7);return r.set(t,e),t},getRpcResolver:e=>r.get(e),removeChannel:e=>r.delete(e),destroy:()=>r.clear()}),s=function({iframe:e}){let t=new el;return{handleEvent:async r=>{switch(r.iframeLifecycle){case"connected":t.resolve(!0);break;case"do-backup":r.data.backup?localStorage.setItem(ev,r.data.backup):localStorage.removeItem(ev);break;case"remove-backup":localStorage.removeItem(ev);break;case"show":case"hide":eS({iframe:e,isVisible:"show"===r.iframeLifecycle});break;case"handshake":e.contentWindow?.postMessage({clientLifecycle:"handshake-response",data:{token:r.data.token,currentUrl:window.location.href}},"*");break;case"redirect":window.location.href=`${r.data.baseRedirectUrl}${encodeURIComponent(window.location.href)}`}},isConnected:t.promise}}({iframe:t}),o=new ej(e,t),a=function({frakWalletUrl:e,iframe:t,channelManager:r,iframeLifecycleManager:n,debugInfo:i}){if("undefined"==typeof window)throw new es(ec.configError,"iframe client should be used in the browser");if(!t.contentWindow)throw new es(ec.configError,"The iframe does not have a product window");let s=t.contentWindow;async function o(t){if(!t.origin)return;try{if(new URL(t.origin).origin.toLowerCase()!==new URL(e).origin.toLowerCase())return}catch(e){console.log("Unable to check frak msg origin",e);return}if("object"!=typeof t.data)return;if(i.setLastResponse(t),"iframeLifecycle"in t.data)return void await n.handleEvent(t.data);if("clientLifecycle"in t.data)return void console.error("Client lifecycle event received on the client side, dismissing it");let s=t.data.id,o=r.getRpcResolver(s);o&&o(t.data)}return window.addEventListener("message",o),{sendEvent:function(t){s.postMessage(t,{targetOrigin:e}),i.setLastRequest(t,e)},cleanup:function(){window.removeEventListener("message",o)}}}({frakWalletUrl:e?.walletUrl??"https://wallet.frak.id",iframe:t,channelManager:i,iframeLifecycleManager:s,debugInfo:o}),l=async e=>{if(!await s.isConnected)throw new es(ec.clientNotConnected,"The iframe provider isn't connected yet");let t=new el,r=i.createChannel(e=>{let n=em(e.data);n.error?t.reject(new es(n.error.code,n.error.message,n.error?.data)):t.resolve(n.result),i.removeChannel(r)}),n=eh(e);return a.sendEvent({id:r,topic:e.method,data:n}),t.promise},u=async(e,t)=>{if(!await s.isConnected)throw new es(ec.clientNotConnected,"The iframe provider isn't connected yet");let r=i.createChannel(e=>{let r=em(e.data);if(r.result)t(r.result);else throw new eo("No valid result in the response")}),n=eh(e);a.sendEvent({id:r,topic:e.method,data:n})},d=function(e,t){let r,n,i=()=>e.sendEvent({clientLifecycle:"heartbeat"});function s(){r&&clearInterval(r),n&&clearTimeout(n)}return async function(){i(),r=setInterval(i,100),n=setTimeout(()=>{s(),console.log("Heartbeat timeout: connection failed")},3e4),await t.isConnected,s()}(),s}(a,s),f=async()=>{d(),i.destroy(),a.cleanup(),t.remove()};console.log("[Frak SDK] Initializing OpenPanel"),(n=new c({apiUrl:"https://op-api.gcp.frak.id",clientId:"f305d11d-b93b-487c-80d4-92deb7903e98",trackScreenViews:!0,trackOutgoingLinks:!0,trackAttributes:!1,filter:({type:e,payload:t})=>!("track"===e&&t?.properties)||("sdkVersion"in t.properties||(t.properties={...t.properties,sdkVersion:"0.0.17"}),!0)})).setGlobalProperties({sdkVersion:"0.0.17"}),n.init();let h=eA({config:e,messageHandler:a,lifecycleManager:s}).then(()=>o.updateSetupStatus(!0));return{config:e,debugInfo:o,waitForConnection:s.isConnected,waitForSetup:h,request:l,listenerRequest:u,destroy:f,openPanel:n}}async function eA({config:e,messageHandler:t,lifecycleManager:r}){async function n(){let r=e.customizations?.css;r&&t.sendEvent({clientLifecycle:"modal-css",data:{cssLink:r}})}async function i(){let r=e.customizations?.i18n;r&&t.sendEvent({clientLifecycle:"modal-i18n",data:{i18n:r}})}async function s(){if("undefined"==typeof window)return;let e=window.localStorage.getItem(ev);e&&t.sendEvent({clientLifecycle:"restore-backup",data:{backup:e}})}await r.isConnected,await Promise.allSettled([n(),i(),s()])}let eI={eur:"fr-FR",usd:"en-US",gbp:"en-GB"};function eC(e){return e&&e in eI?e:"eur"}async function eO({config:e}){let t,r=(t=eC(e.metadata?.currency),{...e,metadata:{...e.metadata,currency:t}}),n=await e_({config:r});if(!n)return void console.error("Failed to create iframe");let i=eE({config:r,iframe:n});return(await i.waitForSetup,await i.waitForConnection)?i:void console.error("Failed to connect to client")}let eP="fCtx";function eU(e){if(e?.r)try{let t=en(e.r);return eu(t)}catch(t){console.error("Error compressing Frak context",{e:t,context:e})}}function eD(e){if(e&&0!==e.length)try{let t=ed(e);return{r:K(t,{size:20})}}catch(t){console.error("Error decompressing Frak context",{e:t,context:e})}}function eL({url:e}){if(!e)return null;let t=new URL(e).searchParams.get(eP);return t?eD(t):null}function eM({url:e,context:t}){if(!e)return null;let r=eL({url:e}),n=r?{...r,...t}:t;if(!n.r)return null;let i=eU(n);if(!i)return null;let s=new URL(e);return s.searchParams.set(eP,i),s.toString()}function eR(e){let t=new URL(e);return t.searchParams.delete(eP),t.toString()}let eT={compress:eU,decompress:eD,parse:eL,update:eM,remove:eR,replaceUrl:function({url:e,context:t}){let r;if(!window.location?.href||"undefined"==typeof window)return void console.error("No window found, can't update context");let n=e??window.location.href;(r=null!==t?eM({url:n,context:t}):eR(n))&&window.history.replaceState(null,"",r.toString())}};function eN(e){return e?eI[e]??eI.eur:eI.eur}function eB(e){return e?`${e}Amount`:"eurAmount"}function e$(e,t){let r=eN(t),n=eC(t);return e.toLocaleString(r,{style:"currency",currency:n,minimumFractionDigits:0,maximumFractionDigits:2})}function eF(e,t,r={}){if(!e)return void console.debug("[Frak] No client provided, skipping event tracking");try{e.openPanel?.track(t,r)}catch(e){console.debug("[Frak] Failed to track event:",t,e)}}let ez={dapp:1,press:2,webshop:3,retail:4,referral:30,purchase:31},eV=Object.entries(ez).reduce((e,[t,r])=>(e[t]=BigInt(1)<<BigInt(r),e),{}),eH={press:{openArticle:"0xc0a24ffb",readArticle:"0xd5bd0fbe"},dapp:{proofVerifiableStorageUpdate:"0x2ab2aeef",callableVerifiableStorageUpdate:"0xa07da986"},webshop:{open:"0xb311798f"},referral:{referred:"0x010cc3b9",createLink:"0xb2c0f17c"},purchase:{started:"0xd87e90c3",completed:"0x8403aeb4",unsafeCompleted:"0x4d5b14e0"},retail:{customerMeeting:"0x74489004"}};async function eW(e,t,r="text/javascript"){return document.getElementById(e)?Promise.resolve(!0):new Promise((n,i)=>{let s=document.createElement("script");s.id=e,s.src=t,s.defer=!0,s.type=r,s.onload=()=>n(!0),s.onerror=()=>i(Error(`Script load error for ${t}`)),document.head.appendChild(s)})}let eq={"gapianne.com":function(){window.FrakSetup.config={walletUrl:"https://wallet.frak.id",metadata:{name:"Gapianne",lang:"fr",currency:"eur",logoUrl:"https://gapianne.com/cdn/shop/files/logo-gapianne_7a65f4c4-54e8-4831-afa2-0849e4c5f8de.png",homepageLink:"https://gapianne.com/"},customizations:{i18n:{"sharing.title":"Pr\xeat(e) \xe0 r\xe9v\xe9ler un secret bien-\xeatre ?","sharing.text":"D\xe9couvre ce produit chez Gapianne","sdk.wallet.login.text":"Cr\xe9ez votre porte-monnaie avec **{{ productName }}** et recevez **{{ estimatedReward }}** par ami(e) parrain\xe9(e)"}},domain:window.location.host},window.FrakSetup.modalConfig={login:{allowSso:!0},metadata:{isDismissible:!0}},window.FrakSetup.modalShareConfig={link:window.location.href},window.FrakSetup.modalWalletConfig={metadata:{position:"left"}},function(){for(let e of Array.from(document.querySelectorAll("#nexus-share-button > button"))){let t=document.createElement("frak-button-share");t.setAttribute("text","PARTAGE ET GAGNE {REWARD} !"),t.setAttribute("no-reward-text","PARTAGE ET GAGNE"),t.setAttribute("use-reward","true"),t.setAttribute("show-wallet","true"),t.setAttribute("classname","button w-full"),e.replaceWith(t)}}()}},eJ=BigInt(0),eG=BigInt(1),eK=BigInt(2),eX=BigInt(7),eQ=BigInt(256),eY=BigInt(113),eZ=[],e0=[],e2=[];for(let e=0,t=eG,r=1,n=0;e<24;e++){[r,n]=[n,(2*r+3*n)%5],eZ.push(2*(5*n+r)),e0.push((e+1)*(e+2)/2%64);let i=eJ;for(let e=0;e<7;e++)(t=(t<<eG^(t>>eX)*eY)%eQ)&eK&&(i^=eG<<(eG<<BigInt(e))-eG);e2.push(i)}let e1=S(e2,!0),e8=e1[0],e3=e1[1],e6=(e,t,r)=>r>32?I(e,t,r):E(e,t,r),e5=(e,t,r)=>r>32?C(e,t,r):A(e,t,r);class e4 extends g{constructor(e,t,r,n=!1,i=24){if(super(),this.pos=0,this.posOut=0,this.finished=!1,this.destroyed=!1,this.enableXOF=!1,this.blockLen=e,this.suffix=t,this.outputLen=r,this.enableXOF=n,this.rounds=i,u(r),!(0<e&&e<200))throw Error("only keccak-f1600 function is supported");this.state=new Uint8Array(200),this.state32=function(e){return new Uint32Array(e.buffer,e.byteOffset,Math.floor(e.byteLength/4))}(this.state)}clone(){return this._cloneInto()}keccak(){y(this.state32),function(e,t=24){let r=new Uint32Array(10);for(let n=24-t;n<24;n++){for(let t=0;t<10;t++)r[t]=e[t]^e[t+10]^e[t+20]^e[t+30]^e[t+40];for(let t=0;t<10;t+=2){let n=(t+8)%10,i=(t+2)%10,s=r[i],o=r[i+1],a=e6(s,o,1)^r[n],c=e5(s,o,1)^r[n+1];for(let r=0;r<50;r+=10)e[t+r]^=a,e[t+r+1]^=c}let t=e[2],i=e[3];for(let r=0;r<24;r++){let n=e0[r],s=e6(t,i,n),o=e5(t,i,n),a=eZ[r];t=e[a],i=e[a+1],e[a]=s,e[a+1]=o}for(let t=0;t<50;t+=10){for(let n=0;n<10;n++)r[n]=e[t+n];for(let n=0;n<10;n++)e[t+n]^=~r[(n+2)%10]&r[(n+4)%10]}e[0]^=e8[n],e[1]^=e3[n]}p(r)}(this.state32,this.rounds),y(this.state32),this.posOut=0,this.pos=0}update(e){f(this),d(e=m(e));let{blockLen:t,state:r}=this,n=e.length;for(let i=0;i<n;){let s=Math.min(t-this.pos,n-i);for(let t=0;t<s;t++)r[this.pos++]^=e[i++];this.pos===t&&this.keccak()}return this}finish(){if(this.finished)return;this.finished=!0;let{state:e,suffix:t,pos:r,blockLen:n}=this;e[r]^=t,(128&t)!=0&&r===n-1&&this.keccak(),e[n-1]^=128,this.keccak()}writeInto(e){f(this,!1),d(e),this.finish();let t=this.state,{blockLen:r}=this;for(let n=0,i=e.length;n<i;){this.posOut>=r&&this.keccak();let s=Math.min(r-this.posOut,i-n);e.set(t.subarray(this.posOut,this.posOut+s),n),this.posOut+=s,n+=s}return e}xofInto(e){if(!this.enableXOF)throw Error("XOF is not possible for this instance");return this.writeInto(e)}xof(e){return u(e),this.xofInto(new Uint8Array(e))}digestInto(e){if(h(e,this),this.finished)throw Error("digest() was already called");return this.writeInto(e),this.destroy(),e}digest(){return this.digestInto(new Uint8Array(this.outputLen))}destroy(){this.destroyed=!0,p(this.state)}_cloneInto(e){let{blockLen:t,suffix:r,outputLen:n,rounds:i,enableXOF:s}=this;return e||(e=new e4(t,r,n,s,i)),e.state32.set(this.state32),e.pos=this.pos,e.posOut=this.posOut,e.finished=this.finished,e.rounds=i,e.suffix=r,e.outputLen=n,e.enableXOF=s,e.destroyed=this.destroyed,e}}let e7=(t=1,i=136,s=32,x(()=>new e4(i,t,s)));function e9(e,t){let r=e7(L(e,{strict:!1})?ee(e):e);return"bytes"===(t||"hex")?r:J(r)}function te(e){return"string"==typeof e[0]?tt(e):function(e){let t=0;for(let r of e)t+=r.length;let r=new Uint8Array(t),n=0;for(let t of e)r.set(t,n),n+=t.length;return r}(e)}function tt(e){return`0x${e.reduce((e,t)=>e+t.replace("0x",""),"")}`}class tr extends T{constructor({address:e}){super(`Address "${e}" is invalid.`,{metaMessages:["- Address must be a hex value of 20 bytes (40 hex characters).","- Address must match its checksum counterpart."],name:"InvalidAddressError"})}}class tn extends Map{constructor(e){super(),Object.defineProperty(this,"maxSize",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.maxSize=e}get(e){let t=super.get(e);return super.has(e)&&void 0!==t&&(this.delete(e),super.set(e,t)),t}set(e,t){if(super.set(e,t),this.maxSize&&this.size>this.maxSize){let e=this.keys().next().value;e&&this.delete(e)}return this}}let ti=new tn(8192),ts=/^0x[a-fA-F0-9]{40}$/,to=new tn(8192);function ta(e,t){let{strict:r=!0}=t??{},n=`${e}.${r}`;if(to.has(n))return to.get(n);let i=!!ts.test(e)&&(e.toLowerCase()===e||!r||function(e,t){if(ti.has(`${e}.${void 0}`))return ti.get(`${e}.${t}`);let r=t?`${t}${e.toLowerCase()}`:e.substring(2).toLowerCase(),n=e9(ei(r),"bytes"),i=(t?r.substring(`${t}0x`.length):r).split("");for(let e=0;e<40;e+=2)n[e>>1]>>4>=8&&i[e]&&(i[e]=i[e].toUpperCase()),(15&n[e>>1])>=8&&i[e+1]&&(i[e+1]=i[e+1].toUpperCase());let s=`0x${i.join("")}`;return ti.set(`${e}.${t}`,s),s}(e)===e);return to.set(n,i),i}let tc=256;class tl{_promise;_resolve;_reject;constructor(){this._promise=new Promise((e,t)=>{this._resolve=e,this._reject=t})}get promise(){return this._promise}resolve=e=>{this._resolve?.(e)};reject=e=>{this._reject?.(e)}}function tu(e,t){if(!t)return e.request({method:"frak_listenToWalletStatus"}).then(t=>(td(e,t),t));let r=new tl,n=!1;return e.listenerRequest({method:"frak_listenToWalletStatus"},i=>{td(e,i),t(i),n||(r.resolve(i),n=!0)}).then(()=>r.promise)}function td(e,t){"undefined"!=typeof window&&(e.openPanel?.setGlobalProperties({wallet:t.wallet??null}),t.interactionToken?window.sessionStorage.setItem("frak-wallet-interaction-token",t.interactionToken):window.sessionStorage.removeItem("frak-wallet-interaction-token"))}async function tf(e,{productId:t,interaction:r,validation:n}){let i=t??function({domain:e}){return e9(J((e??window.location.host).replace("www.","")))}(e.config);return await e.request({method:"frak_sendInteraction",params:[i,r,n]})}async function th(e,{steps:t,metadata:r}){return await e.request({method:"frak_displayModal",params:[t,r,e.config.metadata]})}async function tp(e,t){return await e.request({method:"frak_displayEmbeddedWallet",params:[t,e.config.metadata]})}async function tb(e,t){let{metadata:r,customizations:n}=e.config;await e.request({method:"frak_sso",params:[t,r.name,n?.css]})}async function tw(e){return await e.request({method:"frak_getProductInformation"})}async function ty(e){if("undefined"==typeof window)return void console.warn("[Frak] No window found, can't track purchase");let t=window.sessionStorage.getItem("frak-wallet-interaction-token");if(!t)return void console.warn("[Frak] No frak session found, skipping purchase check");await fetch("https://backend.frak.id/interactions/listenForPurchase",{method:"POST",headers:{Accept:"application/json","Content-Type":"application/json","x-wallet-sdk-auth":t},body:JSON.stringify(e)})}async function tm(t,{siwe:r,metadata:n}){let i=t.config?.domain??window.location.host,s=r?.statement??`I confirm that I want to use my Frak wallet on: ${t.config.metadata.name}`,o={...r,statement:s,nonce:r?.nonce??function(t=11){if(!e||tc+t>512){e="",tc=0;for(let t=0;t<256;t++)e+=(256+256*Math.random()|0).toString(16).substring(1)}return e.substring(tc,tc+++t)}(96),uri:r?.uri??`https://${i}`,version:r?.version??"1",domain:i};return(await th(t,{metadata:n,steps:{login:{},siweAuthenticate:{siwe:o}}})).siweAuthenticate}async function tg(e,{tx:t,metadata:r}){return(await th(e,{metadata:r,steps:{login:{},sendTransaction:{tx:t}}})).sendTransaction}function tx(e,{metadata:t,login:r,openSession:n}){return function e(t,r){async function n(e){return e&&(r.metadata=e(r.metadata??{})),await th(t,r)}return{params:r,sendTx:function(n){return e(t,{...r,steps:{...r.steps,sendTransaction:n}})},reward:function(n){return e(t,{...r,steps:{...r.steps,final:{...n,action:{key:"reward"}}}})},sharing:function(n,i){return e(t,{...r,steps:{...r.steps,final:{...i,action:{key:"sharing",options:n}}}})},display:n}}(e,{steps:{login:r??{},openSession:n??{}},metadata:t})}let tv="fCtx";function tj({url:e}){if(!e)return null;let t=new URL(e).searchParams.get(tv);return t?function(e){if(e&&0!==e.length)try{let t,r=(t=e.length%4,Uint8Array.from(atob(e.replace(/-/g,"+").replace(/_/g,"/").padEnd(e.length+(0===t?0:4-t),"=")),e=>e.charCodeAt(0)));return{r:K(r,{size:20})}}catch(t){console.error("Error decompressing Frak context",{e:t,context:e})}}(t):null}let tk={parse:tj,replaceUrl:function({url:e,context:t}){let r,n;if(!window.location?.href||"undefined"==typeof window)return void console.error("No window found, can't update context");let i=e??window.location.href;(r=null!==t?function({url:e,context:t}){if(!e)return null;let r=tj({url:e}),n=r?{...r,...t}:t;if(!n.r)return null;let i=function(e){if(e?.r)try{var t;return t=en(e.r),btoa(Array.from(t,e=>String.fromCharCode(e)).join("")).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"")}catch(t){console.error("Error compressing Frak context",{e:t,context:e})}}(n);if(!i)return null;let s=new URL(e);return s.searchParams.set(tv,i),s.toString()}({url:i,context:t}):((n=new URL(i)).searchParams.delete(tv),n.toString()))&&window.history.replaceState(null,"",r.toString())}},t_={dapp:1,press:2,webshop:3,retail:4,referral:30,purchase:31};Object.entries(t_).reduce((e,[t,r])=>(e[t]=BigInt(1)<<BigInt(r),e),{});let tS={createLink:()=>({handlerTypeDenominator:J(t_.referral),interactionData:"0xb2c0f17c"}),referred({referrer:e}){let t=tt(["0x010cc3b9",$(e,{size:32})]);return{handlerTypeDenominator:J(t_.referral),interactionData:t}}};class tE extends Error{code;data;constructor(e,t,r){super(t),this.code=e,this.data=r}}let tA={walletNotConnected:-32005,serverErrorForInteractionDelegation:-32006};async function tI(e,{walletStatus:t,frakContext:r,modalConfig:n,productId:i,options:s}){let o=!1;async function a(){if(!o)return o=!0,tO(e,{modalConfig:{...n,loggedIn:{action:{key:"referred"}}},walletStatus:t})}async function c(t){let r=tS.referred({referrer:t});await Promise.allSettled([tf(e,{productId:i,interaction:r}),function(e,t,r={}){if(!e)return void console.debug("[Frak] No client provided, skipping event tracking");try{e.openPanel?.track(t,r)}catch(e){console.debug("[Frak] Failed to track event:",t,e)}}(e,"user_referred",{properties:{referrer:t}})])}try{let{status:e,currentWallet:n}=await tC({initialWalletStatus:t,getFreshWalletStatus:a,pushReferralInteraction:c,frakContext:r});return tk.replaceUrl({url:window.location?.href,context:s?.alwaysAppendUrl?{r:n}:null}),e}catch(e){return console.log("Error processing referral",{error:e}),tk.replaceUrl({url:window.location?.href,context:s?.alwaysAppendUrl?{r:t?.wallet}:null}),function(e){if(e instanceof tE)switch(e.code){case tA.walletNotConnected:return"no-wallet";case tA.serverErrorForInteractionDelegation:return"no-session"}return"error"}(e)}}async function tC({initialWalletStatus:e,getFreshWalletStatus:t,pushReferralInteraction:r,frakContext:n}){let i=e?.wallet;return n?.r?(i||(i=await t()),i&&function(e,t){if(!ta(e,{strict:!1}))throw new tr({address:e});if(!ta(t,{strict:!1}))throw new tr({address:t});return e.toLowerCase()===t.toLowerCase()}(n.r,i))?{status:"self-referral",currentWallet:i}:(e?.interactionSession||(i=await t()),await r(n.r),{status:"success",currentWallet:i}):{status:"no-referrer",currentWallet:i}}async function tO(e,{modalConfig:t,walletStatus:r}){if(!r?.interactionSession){let r=await tp(e,t??{});return r?.wallet??void 0}return r.wallet??void 0}async function tP(e,{productId:t,modalConfig:r,options:n}={}){let i=tk.parse({url:window.location.href}),s=await tu(e);try{return await tI(e,{walletStatus:s,frakContext:i,modalConfig:r,productId:t,options:n})}catch(e){console.warn("Error processing referral",{error:e})}}class tU extends T{constructor({expectedLength:e,givenLength:t,type:r}){super(`ABI encoding array length mismatch for type ${r}.
|
|
14
|
+
`.trim()}}let ek={id:"frak-wallet",name:"frak-wallet",title:"Frak Wallet",allow:"publickey-credentials-get *; clipboard-write; web-share *",style:{width:"0",height:"0",border:"0",position:"absolute",zIndex:2000001,top:"-1000px",left:"-1000px",colorScheme:"auto"}};function e_({walletBaseUrl:e,config:t}){let r=document.querySelector("#frak-wallet");r&&r.remove();let n=document.createElement("iframe");return n.id=ek.id,n.name=ek.name,n.allow=ek.allow,n.style.zIndex=ek.style.zIndex.toString(),eS({iframe:n,isVisible:!1}),document.body.appendChild(n),new Promise(r=>{n?.addEventListener("load",()=>r(n)),n.src=`${t?.walletUrl??e??"https://wallet.frak.id"}/listener`})}function eS({iframe:e,isVisible:t}){if(!t){e.style.width="0",e.style.height="0",e.style.border="0",e.style.position="fixed",e.style.top="-1000px",e.style.left="-1000px";return}e.style.position="fixed",e.style.top="0",e.style.left="0",e.style.width="100%",e.style.height="100%",e.style.pointerEvents="auto"}function eE({config:e,iframe:t}){let r,n,i=(r=new Map,{createChannel:e=>{let t=Math.random().toString(36).substring(7);return r.set(t,e),t},getRpcResolver:e=>r.get(e),removeChannel:e=>r.delete(e),destroy:()=>r.clear()}),s=function({iframe:e}){let t=new el;return{handleEvent:async r=>{switch(r.iframeLifecycle){case"connected":t.resolve(!0);break;case"do-backup":r.data.backup?localStorage.setItem(ev,r.data.backup):localStorage.removeItem(ev);break;case"remove-backup":localStorage.removeItem(ev);break;case"show":case"hide":eS({iframe:e,isVisible:"show"===r.iframeLifecycle});break;case"handshake":e.contentWindow?.postMessage({clientLifecycle:"handshake-response",data:{token:r.data.token,currentUrl:window.location.href}},"*");break;case"redirect":window.location.href=`${r.data.baseRedirectUrl}${encodeURIComponent(window.location.href)}`}},isConnected:t.promise}}({iframe:t}),o=new ej(e,t),a=function({frakWalletUrl:e,iframe:t,channelManager:r,iframeLifecycleManager:n,debugInfo:i}){if("undefined"==typeof window)throw new es(ec.configError,"iframe client should be used in the browser");if(!t.contentWindow)throw new es(ec.configError,"The iframe does not have a product window");let s=t.contentWindow;async function o(t){if(!t.origin)return;try{if(new URL(t.origin).origin.toLowerCase()!==new URL(e).origin.toLowerCase())return}catch(e){console.log("Unable to check frak msg origin",e);return}if("object"!=typeof t.data)return;if(i.setLastResponse(t),"iframeLifecycle"in t.data)return void await n.handleEvent(t.data);if("clientLifecycle"in t.data)return void console.error("Client lifecycle event received on the client side, dismissing it");let s=t.data.id,o=r.getRpcResolver(s);o&&o(t.data)}return window.addEventListener("message",o),{sendEvent:function(t){s.postMessage(t,{targetOrigin:e}),i.setLastRequest(t,e)},cleanup:function(){window.removeEventListener("message",o)}}}({frakWalletUrl:e?.walletUrl??"https://wallet.frak.id",iframe:t,channelManager:i,iframeLifecycleManager:s,debugInfo:o}),l=async e=>{if(!await s.isConnected)throw new es(ec.clientNotConnected,"The iframe provider isn't connected yet");let t=new el,r=i.createChannel(e=>{let n=em(e.data);n.error?t.reject(new es(n.error.code,n.error.message,n.error?.data)):t.resolve(n.result),i.removeChannel(r)}),n=eh(e);return a.sendEvent({id:r,topic:e.method,data:n}),t.promise},u=async(e,t)=>{if(!await s.isConnected)throw new es(ec.clientNotConnected,"The iframe provider isn't connected yet");let r=i.createChannel(e=>{let r=em(e.data);if(r.result)t(r.result);else throw new eo("No valid result in the response")}),n=eh(e);a.sendEvent({id:r,topic:e.method,data:n})},d=function(e,t){let r,n,i=()=>e.sendEvent({clientLifecycle:"heartbeat"});function s(){r&&clearInterval(r),n&&clearTimeout(n)}return async function(){i(),r=setInterval(i,100),n=setTimeout(()=>{s(),console.log("Heartbeat timeout: connection failed")},3e4),await t.isConnected,s()}(),s}(a,s),f=async()=>{d(),i.destroy(),a.cleanup(),t.remove()};console.log("[Frak SDK] Initializing OpenPanel"),(n=new c({apiUrl:"https://op-api.gcp.frak.id",clientId:"f305d11d-b93b-487c-80d4-92deb7903e98",trackScreenViews:!0,trackOutgoingLinks:!0,trackAttributes:!1,filter:({type:e,payload:t})=>!("track"===e&&t?.properties)||("sdkVersion"in t.properties||(t.properties={...t.properties,sdkVersion:"0.0.18"}),!0)})).setGlobalProperties({sdkVersion:"0.0.18"}),n.init();let h=eA({config:e,messageHandler:a,lifecycleManager:s}).then(()=>o.updateSetupStatus(!0));return{config:e,debugInfo:o,waitForConnection:s.isConnected,waitForSetup:h,request:l,listenerRequest:u,destroy:f,openPanel:n}}async function eA({config:e,messageHandler:t,lifecycleManager:r}){async function n(){let r=e.customizations?.css;r&&t.sendEvent({clientLifecycle:"modal-css",data:{cssLink:r}})}async function i(){let r=e.customizations?.i18n;r&&t.sendEvent({clientLifecycle:"modal-i18n",data:{i18n:r}})}async function s(){if("undefined"==typeof window)return;let e=window.localStorage.getItem(ev);e&&t.sendEvent({clientLifecycle:"restore-backup",data:{backup:e}})}await r.isConnected,await Promise.allSettled([n(),i(),s()])}let eI={eur:"fr-FR",usd:"en-US",gbp:"en-GB"};function eC(e){return e&&e in eI?e:"eur"}async function eO({config:e}){let t,r=(t=eC(e.metadata?.currency),{...e,metadata:{...e.metadata,currency:t}}),n=await e_({config:r});if(!n)return void console.error("Failed to create iframe");let i=eE({config:r,iframe:n});return(await i.waitForSetup,await i.waitForConnection)?i:void console.error("Failed to connect to client")}let eP="fCtx";function eU(e){if(e?.r)try{let t=en(e.r);return eu(t)}catch(t){console.error("Error compressing Frak context",{e:t,context:e})}}function eD(e){if(e&&0!==e.length)try{let t=ed(e);return{r:K(t,{size:20})}}catch(t){console.error("Error decompressing Frak context",{e:t,context:e})}}function eL({url:e}){if(!e)return null;let t=new URL(e).searchParams.get(eP);return t?eD(t):null}function eM({url:e,context:t}){if(!e)return null;let r=eL({url:e}),n=r?{...r,...t}:t;if(!n.r)return null;let i=eU(n);if(!i)return null;let s=new URL(e);return s.searchParams.set(eP,i),s.toString()}function eR(e){let t=new URL(e);return t.searchParams.delete(eP),t.toString()}let eT={compress:eU,decompress:eD,parse:eL,update:eM,remove:eR,replaceUrl:function({url:e,context:t}){let r;if(!window.location?.href||"undefined"==typeof window)return void console.error("No window found, can't update context");let n=e??window.location.href;(r=null!==t?eM({url:n,context:t}):eR(n))&&window.history.replaceState(null,"",r.toString())}};function eN(e){return e?eI[e]??eI.eur:eI.eur}function eB(e){return e?`${e}Amount`:"eurAmount"}function e$(e,t){let r=eN(t),n=eC(t);return e.toLocaleString(r,{style:"currency",currency:n,minimumFractionDigits:0,maximumFractionDigits:2})}function eF(e,t,r={}){if(!e)return void console.debug("[Frak] No client provided, skipping event tracking");try{e.openPanel?.track(t,r)}catch(e){console.debug("[Frak] Failed to track event:",t,e)}}let ez={dapp:1,press:2,webshop:3,retail:4,referral:30,purchase:31},eV=Object.entries(ez).reduce((e,[t,r])=>(e[t]=BigInt(1)<<BigInt(r),e),{}),eH={press:{openArticle:"0xc0a24ffb",readArticle:"0xd5bd0fbe"},dapp:{proofVerifiableStorageUpdate:"0x2ab2aeef",callableVerifiableStorageUpdate:"0xa07da986"},webshop:{open:"0xb311798f"},referral:{referred:"0x010cc3b9",createLink:"0xb2c0f17c"},purchase:{started:"0xd87e90c3",completed:"0x8403aeb4",unsafeCompleted:"0x4d5b14e0"},retail:{customerMeeting:"0x74489004"}};async function eW(e,t,r="text/javascript"){return document.getElementById(e)?Promise.resolve(!0):new Promise((n,i)=>{let s=document.createElement("script");s.id=e,s.src=t,s.defer=!0,s.type=r,s.onload=()=>n(!0),s.onerror=()=>i(Error(`Script load error for ${t}`)),document.head.appendChild(s)})}let eq={"gapianne.com":function(){window.FrakSetup.config={walletUrl:"https://wallet.frak.id",metadata:{name:"Gapianne",lang:"fr",currency:"eur",logoUrl:"https://gapianne.com/cdn/shop/files/logo-gapianne_7a65f4c4-54e8-4831-afa2-0849e4c5f8de.png",homepageLink:"https://gapianne.com/"},customizations:{i18n:{"sharing.title":"Pr\xeat(e) \xe0 r\xe9v\xe9ler un secret bien-\xeatre ?","sharing.text":"D\xe9couvre ce produit chez Gapianne","sdk.wallet.login.text":"Cr\xe9ez votre porte-monnaie avec **{{ productName }}** et recevez **{{ estimatedReward }}** par ami(e) parrain\xe9(e)"}},domain:window.location.host},window.FrakSetup.modalConfig={login:{allowSso:!0},metadata:{isDismissible:!0}},window.FrakSetup.modalShareConfig={link:window.location.href},window.FrakSetup.modalWalletConfig={metadata:{position:"left"}},function(){for(let e of Array.from(document.querySelectorAll("#nexus-share-button > button"))){let t=document.createElement("frak-button-share");t.setAttribute("text","PARTAGE ET GAGNE {REWARD} !"),t.setAttribute("no-reward-text","PARTAGE ET GAGNE"),t.setAttribute("use-reward","true"),t.setAttribute("show-wallet","true"),t.setAttribute("classname","button w-full"),e.replaceWith(t)}}()}},eJ=BigInt(0),eG=BigInt(1),eK=BigInt(2),eX=BigInt(7),eQ=BigInt(256),eY=BigInt(113),eZ=[],e0=[],e2=[];for(let e=0,t=eG,r=1,n=0;e<24;e++){[r,n]=[n,(2*r+3*n)%5],eZ.push(2*(5*n+r)),e0.push((e+1)*(e+2)/2%64);let i=eJ;for(let e=0;e<7;e++)(t=(t<<eG^(t>>eX)*eY)%eQ)&eK&&(i^=eG<<(eG<<BigInt(e))-eG);e2.push(i)}let e1=S(e2,!0),e8=e1[0],e3=e1[1],e6=(e,t,r)=>r>32?I(e,t,r):E(e,t,r),e5=(e,t,r)=>r>32?C(e,t,r):A(e,t,r);class e4 extends g{constructor(e,t,r,n=!1,i=24){if(super(),this.pos=0,this.posOut=0,this.finished=!1,this.destroyed=!1,this.enableXOF=!1,this.blockLen=e,this.suffix=t,this.outputLen=r,this.enableXOF=n,this.rounds=i,u(r),!(0<e&&e<200))throw Error("only keccak-f1600 function is supported");this.state=new Uint8Array(200),this.state32=function(e){return new Uint32Array(e.buffer,e.byteOffset,Math.floor(e.byteLength/4))}(this.state)}clone(){return this._cloneInto()}keccak(){y(this.state32),function(e,t=24){let r=new Uint32Array(10);for(let n=24-t;n<24;n++){for(let t=0;t<10;t++)r[t]=e[t]^e[t+10]^e[t+20]^e[t+30]^e[t+40];for(let t=0;t<10;t+=2){let n=(t+8)%10,i=(t+2)%10,s=r[i],o=r[i+1],a=e6(s,o,1)^r[n],c=e5(s,o,1)^r[n+1];for(let r=0;r<50;r+=10)e[t+r]^=a,e[t+r+1]^=c}let t=e[2],i=e[3];for(let r=0;r<24;r++){let n=e0[r],s=e6(t,i,n),o=e5(t,i,n),a=eZ[r];t=e[a],i=e[a+1],e[a]=s,e[a+1]=o}for(let t=0;t<50;t+=10){for(let n=0;n<10;n++)r[n]=e[t+n];for(let n=0;n<10;n++)e[t+n]^=~r[(n+2)%10]&r[(n+4)%10]}e[0]^=e8[n],e[1]^=e3[n]}p(r)}(this.state32,this.rounds),y(this.state32),this.posOut=0,this.pos=0}update(e){f(this),d(e=m(e));let{blockLen:t,state:r}=this,n=e.length;for(let i=0;i<n;){let s=Math.min(t-this.pos,n-i);for(let t=0;t<s;t++)r[this.pos++]^=e[i++];this.pos===t&&this.keccak()}return this}finish(){if(this.finished)return;this.finished=!0;let{state:e,suffix:t,pos:r,blockLen:n}=this;e[r]^=t,(128&t)!=0&&r===n-1&&this.keccak(),e[n-1]^=128,this.keccak()}writeInto(e){f(this,!1),d(e),this.finish();let t=this.state,{blockLen:r}=this;for(let n=0,i=e.length;n<i;){this.posOut>=r&&this.keccak();let s=Math.min(r-this.posOut,i-n);e.set(t.subarray(this.posOut,this.posOut+s),n),this.posOut+=s,n+=s}return e}xofInto(e){if(!this.enableXOF)throw Error("XOF is not possible for this instance");return this.writeInto(e)}xof(e){return u(e),this.xofInto(new Uint8Array(e))}digestInto(e){if(h(e,this),this.finished)throw Error("digest() was already called");return this.writeInto(e),this.destroy(),e}digest(){return this.digestInto(new Uint8Array(this.outputLen))}destroy(){this.destroyed=!0,p(this.state)}_cloneInto(e){let{blockLen:t,suffix:r,outputLen:n,rounds:i,enableXOF:s}=this;return e||(e=new e4(t,r,n,s,i)),e.state32.set(this.state32),e.pos=this.pos,e.posOut=this.posOut,e.finished=this.finished,e.rounds=i,e.suffix=r,e.outputLen=n,e.enableXOF=s,e.destroyed=this.destroyed,e}}let e7=(t=1,i=136,s=32,x(()=>new e4(i,t,s)));function e9(e,t){let r=e7(L(e,{strict:!1})?ee(e):e);return"bytes"===(t||"hex")?r:J(r)}function te(e){return"string"==typeof e[0]?tt(e):function(e){let t=0;for(let r of e)t+=r.length;let r=new Uint8Array(t),n=0;for(let t of e)r.set(t,n),n+=t.length;return r}(e)}function tt(e){return`0x${e.reduce((e,t)=>e+t.replace("0x",""),"")}`}class tr extends T{constructor({address:e}){super(`Address "${e}" is invalid.`,{metaMessages:["- Address must be a hex value of 20 bytes (40 hex characters).","- Address must match its checksum counterpart."],name:"InvalidAddressError"})}}class tn extends Map{constructor(e){super(),Object.defineProperty(this,"maxSize",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.maxSize=e}get(e){let t=super.get(e);return super.has(e)&&void 0!==t&&(this.delete(e),super.set(e,t)),t}set(e,t){if(super.set(e,t),this.maxSize&&this.size>this.maxSize){let e=this.keys().next().value;e&&this.delete(e)}return this}}let ti=new tn(8192),ts=/^0x[a-fA-F0-9]{40}$/,to=new tn(8192);function ta(e,t){let{strict:r=!0}=t??{},n=`${e}.${r}`;if(to.has(n))return to.get(n);let i=!!ts.test(e)&&(e.toLowerCase()===e||!r||function(e,t){if(ti.has(`${e}.${void 0}`))return ti.get(`${e}.${t}`);let r=t?`${t}${e.toLowerCase()}`:e.substring(2).toLowerCase(),n=e9(ei(r),"bytes"),i=(t?r.substring(`${t}0x`.length):r).split("");for(let e=0;e<40;e+=2)n[e>>1]>>4>=8&&i[e]&&(i[e]=i[e].toUpperCase()),(15&n[e>>1])>=8&&i[e+1]&&(i[e+1]=i[e+1].toUpperCase());let s=`0x${i.join("")}`;return ti.set(`${e}.${t}`,s),s}(e)===e);return to.set(n,i),i}let tc=256;class tl{_promise;_resolve;_reject;constructor(){this._promise=new Promise((e,t)=>{this._resolve=e,this._reject=t})}get promise(){return this._promise}resolve=e=>{this._resolve?.(e)};reject=e=>{this._reject?.(e)}}function tu(e,t){if(!t)return e.request({method:"frak_listenToWalletStatus"}).then(t=>(td(e,t),t));let r=new tl,n=!1;return e.listenerRequest({method:"frak_listenToWalletStatus"},i=>{td(e,i),t(i),n||(r.resolve(i),n=!0)}).then(()=>r.promise)}function td(e,t){"undefined"!=typeof window&&(e.openPanel?.setGlobalProperties({wallet:t.wallet??null}),t.interactionToken?window.sessionStorage.setItem("frak-wallet-interaction-token",t.interactionToken):window.sessionStorage.removeItem("frak-wallet-interaction-token"))}async function tf(e,{productId:t,interaction:r,validation:n}){let i=t??function({domain:e}){return e9(J((e??window.location.host).replace("www.","")))}(e.config);return await e.request({method:"frak_sendInteraction",params:[i,r,n]})}async function th(e,{steps:t,metadata:r}){return await e.request({method:"frak_displayModal",params:[t,r,e.config.metadata]})}async function tp(e,t){return await e.request({method:"frak_displayEmbeddedWallet",params:[t,e.config.metadata]})}async function tb(e,t){let{metadata:r,customizations:n}=e.config;await e.request({method:"frak_sso",params:[t,r.name,n?.css]})}async function tw(e){return await e.request({method:"frak_getProductInformation"})}async function ty(e){if("undefined"==typeof window)return void console.warn("[Frak] No window found, can't track purchase");let t=window.sessionStorage.getItem("frak-wallet-interaction-token");if(!t)return void console.warn("[Frak] No frak session found, skipping purchase check");await fetch("https://backend.frak.id/interactions/listenForPurchase",{method:"POST",headers:{Accept:"application/json","Content-Type":"application/json","x-wallet-sdk-auth":t},body:JSON.stringify(e)})}async function tm(t,{siwe:r,metadata:n}){let i=t.config?.domain??window.location.host,s=r?.statement??`I confirm that I want to use my Frak wallet on: ${t.config.metadata.name}`,o={...r,statement:s,nonce:r?.nonce??function(t=11){if(!e||tc+t>512){e="",tc=0;for(let t=0;t<256;t++)e+=(256+256*Math.random()|0).toString(16).substring(1)}return e.substring(tc,tc+++t)}(96),uri:r?.uri??`https://${i}`,version:r?.version??"1",domain:i};return(await th(t,{metadata:n,steps:{login:{},siweAuthenticate:{siwe:o}}})).siweAuthenticate}async function tg(e,{tx:t,metadata:r}){return(await th(e,{metadata:r,steps:{login:{},sendTransaction:{tx:t}}})).sendTransaction}function tx(e,{metadata:t,login:r,openSession:n}){return function e(t,r){async function n(e){return e&&(r.metadata=e(r.metadata??{})),await th(t,r)}return{params:r,sendTx:function(n){return e(t,{...r,steps:{...r.steps,sendTransaction:n}})},reward:function(n){return e(t,{...r,steps:{...r.steps,final:{...n,action:{key:"reward"}}}})},sharing:function(n,i){return e(t,{...r,steps:{...r.steps,final:{...i,action:{key:"sharing",options:n}}}})},display:n}}(e,{steps:{login:r??{},openSession:n??{}},metadata:t})}let tv="fCtx";function tj({url:e}){if(!e)return null;let t=new URL(e).searchParams.get(tv);return t?function(e){if(e&&0!==e.length)try{let t,r=(t=e.length%4,Uint8Array.from(atob(e.replace(/-/g,"+").replace(/_/g,"/").padEnd(e.length+(0===t?0:4-t),"=")),e=>e.charCodeAt(0)));return{r:K(r,{size:20})}}catch(t){console.error("Error decompressing Frak context",{e:t,context:e})}}(t):null}let tk={parse:tj,replaceUrl:function({url:e,context:t}){let r,n;if(!window.location?.href||"undefined"==typeof window)return void console.error("No window found, can't update context");let i=e??window.location.href;(r=null!==t?function({url:e,context:t}){if(!e)return null;let r=tj({url:e}),n=r?{...r,...t}:t;if(!n.r)return null;let i=function(e){if(e?.r)try{var t;return t=en(e.r),btoa(Array.from(t,e=>String.fromCharCode(e)).join("")).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"")}catch(t){console.error("Error compressing Frak context",{e:t,context:e})}}(n);if(!i)return null;let s=new URL(e);return s.searchParams.set(tv,i),s.toString()}({url:i,context:t}):((n=new URL(i)).searchParams.delete(tv),n.toString()))&&window.history.replaceState(null,"",r.toString())}},t_={dapp:1,press:2,webshop:3,retail:4,referral:30,purchase:31};Object.entries(t_).reduce((e,[t,r])=>(e[t]=BigInt(1)<<BigInt(r),e),{});let tS={createLink:()=>({handlerTypeDenominator:J(t_.referral),interactionData:"0xb2c0f17c"}),referred({referrer:e}){let t=tt(["0x010cc3b9",$(e,{size:32})]);return{handlerTypeDenominator:J(t_.referral),interactionData:t}}};class tE extends Error{code;data;constructor(e,t,r){super(t),this.code=e,this.data=r}}let tA={walletNotConnected:-32005,serverErrorForInteractionDelegation:-32006};async function tI(e,{walletStatus:t,frakContext:r,modalConfig:n,productId:i,options:s}){let o=!1;async function a(){if(!o)return o=!0,tO(e,{modalConfig:{...n,loggedIn:{action:{key:"referred"}}},walletStatus:t})}async function c(t){let r=tS.referred({referrer:t});await Promise.allSettled([tf(e,{productId:i,interaction:r}),function(e,t,r={}){if(!e)return void console.debug("[Frak] No client provided, skipping event tracking");try{e.openPanel?.track(t,r)}catch(e){console.debug("[Frak] Failed to track event:",t,e)}}(e,"user_referred",{properties:{referrer:t}})])}try{let{status:e,currentWallet:n}=await tC({initialWalletStatus:t,getFreshWalletStatus:a,pushReferralInteraction:c,frakContext:r});return tk.replaceUrl({url:window.location?.href,context:s?.alwaysAppendUrl?{r:n}:null}),e}catch(e){return console.log("Error processing referral",{error:e}),tk.replaceUrl({url:window.location?.href,context:s?.alwaysAppendUrl?{r:t?.wallet}:null}),function(e){if(e instanceof tE)switch(e.code){case tA.walletNotConnected:return"no-wallet";case tA.serverErrorForInteractionDelegation:return"no-session"}return"error"}(e)}}async function tC({initialWalletStatus:e,getFreshWalletStatus:t,pushReferralInteraction:r,frakContext:n}){let i=e?.wallet;return n?.r?(i||(i=await t()),i&&function(e,t){if(!ta(e,{strict:!1}))throw new tr({address:e});if(!ta(t,{strict:!1}))throw new tr({address:t});return e.toLowerCase()===t.toLowerCase()}(n.r,i))?{status:"self-referral",currentWallet:i}:(e?.interactionSession||(i=await t()),await r(n.r),{status:"success",currentWallet:i}):{status:"no-referrer",currentWallet:i}}async function tO(e,{modalConfig:t,walletStatus:r}){if(!r?.interactionSession){let r=await tp(e,t??{});return r?.wallet??void 0}return r.wallet??void 0}async function tP(e,{productId:t,modalConfig:r,options:n}={}){let i=tk.parse({url:window.location.href}),s=await tu(e);try{return await tI(e,{walletStatus:s,frakContext:i,modalConfig:r,productId:t,options:n})}catch(e){console.warn("Error processing referral",{error:e})}}class tU extends T{constructor({expectedLength:e,givenLength:t,type:r}){super(`ABI encoding array length mismatch for type ${r}.
|
|
15
15
|
Expected length: ${e}
|
|
16
16
|
Given length: ${t}`,{name:"AbiEncodingArrayLengthMismatchError"})}}class tD extends T{constructor({expectedSize:e,value:t}){super(`Size of bytes "${t}" (bytes${H(t)}) does not match expected size (bytes${e}).`,{name:"AbiEncodingBytesSizeMismatchError"})}}class tL extends T{constructor({expectedLength:e,givenLength:t}){super(`ABI encoding params/values length mismatch.
|
|
17
17
|
Expected length (params): ${e}
|
package/package.json
CHANGED
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
"url": "https://twitter.com/QNivelais"
|
|
12
12
|
}
|
|
13
13
|
],
|
|
14
|
-
"version": "0.0.
|
|
14
|
+
"version": "0.0.40",
|
|
15
15
|
"description": "Legacy SDK, only used here to provide nice wrapper and redirection for older implementation, to not break anything and keep them updated with latest security updates.",
|
|
16
16
|
"repository": {
|
|
17
17
|
"url": "https://github.com/frak-id/wallet",
|