@frak-labs/nexus-sdk 0.0.44-beta.1c24fe7c → 0.0.44-beta.53dfa7b2

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.
@@ -63,4 +63,4 @@ or you can use record.mirror to access the mirror instance during recording.`,Sf
63
63
  Last Response: ${t.lastResponse}
64
64
  Client Status: ${t.clientStatus}
65
65
  Error: ${t.error}
66
- `.trim()}};let Um=(()=>{if(typeof navigator>`u`)return!1;let e=navigator.userAgent;if(!(/iPhone|iPad|iPod/i.test(e)||/Macintosh/i.test(e)&&navigator.maxTouchPoints>1))return!1;let t=e.toLowerCase();return t.includes(`instagram`)||t.includes(`fban`)||t.includes(`fbav`)||t.includes(`facebook`)})();function Wm(e){e?localStorage.setItem(xm,e):localStorage.removeItem(xm)}function Gm(e,t){try{let n=new URL(e);return n.searchParams.has(`u`)?(n.searchParams.delete(`u`),n.searchParams.append(`u`,window.location.href),t&&n.searchParams.append(`fmt`,t),n.toString()):e}catch{return e}}function Km(e){let t=new URL(window.location.href);e&&t.searchParams.set(`fmt`,e);let n=t.protocol===`http:`?`x-safari-http`:`x-safari-https`;window.location.href=`${n}://${t.host}${t.pathname}${t.search}${t.hash}`}function qm(e){return e.includes(`/common/social`)}function Jm(e,t,n,r){if(Em(t)){let i=Gm(t,r);Tm(i,{onFallback:()=>{e.contentWindow?.postMessage({clientLifecycle:`deep-link-failed`,data:{originalUrl:i}},n)}})}else if(Um&&qm(t))Km(r);else{let e=Gm(t,r);window.location.href=e}}function Ym({iframe:e,targetOrigin:t}){let n=new Le;return{handleEvent:async r=>{if(!(`iframeLifecycle`in r))return;let{iframeLifecycle:i,data:a}=r;switch(i){case`connected`:n.resolve(!0);break;case`do-backup`:Wm(a.backup);break;case`remove-backup`:localStorage.removeItem(xm);break;case`show`:case`hide`:Pm({iframe:e,isVisible:i===`show`});break;case`redirect`:Jm(e,a.baseRedirectUrl,t,a.mergeToken);break}},isConnected:n.promise}}function Xm({config:e,iframe:t}){let n=e?.walletUrl??`https://wallet.frak.id`,r=typeof navigator<`u`?navigator.language?.split(`-`)[0]:void 0,i=e.metadata.lang??(r===`en`||r===`fr`?r:void 0),a=e.domain??(typeof window<`u`?window.location.hostname:``);T.setCacheScope(a,i),T.reset();let o=T.isCacheFresh?void 0:T.resolve(e.domain,e.walletUrl,i),s=Ym({iframe:t,targetOrigin:n}),c=new Le,l=new Hm(e,t);if(!t.contentWindow)throw new Ie(Fe.configError,`The iframe does not have a content window`);let u=Re({emittingTransport:t.contentWindow,listeningTransport:window,targetOrigin:n,middleware:[{async onRequest(e,t){if(!await s.isConnected)throw new Ie(Fe.clientNotConnected,`The iframe provider isn't connected yet`);return await c.promise,t}},{onRequest(e,t){return l.setLastRequest(e),t},onResponse(e,t){return l.setLastResponse(e,t),t}}],lifecycleHandlers:{iframeLifecycle:async(e,t)=>{await s.handleEvent(e)}}}),d=Zm(u,s),f=async()=>{d(),u.cleanup(),t.remove(),lt(),T.clearCache(),T.reset()},p;console.log(`[Frak SDK] Initializing OpenPanel`),p=new bm({apiUrl:`https://op-api.gcp.frak.id`,clientId:`6eacc8d7-49ac-4936-95e9-81ef29449570`,trackScreenViews:!0,trackOutgoingLinks:!0,trackAttributes:!1,filter:({type:e,payload:t})=>(e!==`track`||!t?.properties||`sdkVersion`in t.properties||(t.properties={...t.properties,sdkVersion:`0.2.1`,userAnonymousClientId:Ue()}),!0)}),p.setGlobalProperties({sdkVersion:`0.2.1`,userAnonymousClientId:Ue()}),p.init();let m=Qm({config:e,rpcClient:u,lifecycleManager:s,configPromise:o,contextSent:c}).then(()=>l.updateSetupStatus(!0)).catch(e=>{throw c.reject(e),e});return{config:e,debugInfo:l,waitForConnection:s.isConnected,waitForSetup:m,request:u.request,listenerRequest:u.listen,destroy:f,openPanel:p}}function Zm(e,t){let n,r,i=()=>e.sendLifecycle({clientLifecycle:`heartbeat`});async function a(){i(),n=setInterval(i,1e3),r=setTimeout(()=>{o(),console.log(`Heartbeat timeout: connection failed`)},3e4),await t.isConnected,o()}function o(){n&&clearInterval(n),r&&clearTimeout(r)}return a(),o}async function Qm({config:e,rpcClient:t,lifecycleManager:n,configPromise:r,contextSent:i}){await n.isConnected,Vm(t,n.isConnected);let a=new URL(window.location.href),o=a.searchParams.get(`fmt`)??void 0;o&&(a.searchParams.delete(`fmt`),window.history.replaceState({},``,a.toString()));let s=t=>{let n=t?.merchantId??e.metadata.merchantId??``,r=t?.domain??``,i=t?.allowedDomains??[],a=t?.sdkConfig;T.setConfig(a?{isResolved:!0,merchantId:n,domain:r,allowedDomains:i,hasRawSdkConfig:!0,name:a.name??e.metadata.name,logoUrl:a.logoUrl??e.metadata.logoUrl,homepageLink:a.homepageLink??e.metadata.homepageLink,lang:a.lang??e.metadata.lang,currency:a.currency??e.metadata.currency,hidden:a.hidden,css:a.css,translations:a.translations,placements:a.placements}:{isResolved:!0,merchantId:n,domain:r,allowedDomains:i,name:e.metadata.name,logoUrl:e.metadata.logoUrl,homepageLink:e.metadata.homepageLink,lang:e.metadata.lang,currency:e.metadata.currency})},c=!1,l=e=>{let n=c?void 0:o;c=!0;let r=e.hasRawSdkConfig?{name:e.name,logoUrl:e.logoUrl,homepageLink:e.homepageLink,lang:e.lang,currency:e.currency,hidden:e.hidden,css:e.css,translations:e.translations,placements:e.placements}:void 0;t.sendLifecycle({clientLifecycle:`resolved-config`,data:{merchantId:e.merchantId,domain:e.domain??``,allowedDomains:e.allowedDomains??[],sourceUrl:window.location.href,...n&&{pendingMergeToken:n},...r&&{sdkConfig:r}}})};T.isResolved&&(l(T.getConfig()),i.resolve()),r&&(s(await r),l(T.getConfig()),i.resolve());async function u(){let n=e.customizations?.css;n&&t.sendLifecycle({clientLifecycle:`modal-css`,data:{cssLink:n}})}async function d(){let n=e.customizations?.i18n;n&&t.sendLifecycle({clientLifecycle:`modal-i18n`,data:{i18n:n}})}async function f(){if(typeof window>`u`)return;let e=window.localStorage.getItem(xm);e&&t.sendLifecycle({clientLifecycle:`restore-backup`,data:{backup:e}})}await Promise.allSettled([u(),d(),f()])}async function $m({config:e}){let t=eh(e),n=await Nm({config:t});if(!n){console.error(`Failed to create iframe`);return}let r=Xm({config:t,iframe:n});if(await r.waitForSetup,!await r.waitForConnection){console.error(`Failed to connect to client`);return}return r}function eh(e){let t=Om(e.metadata?.currency);return{...e,metadata:{...e.metadata,currency:t}}}async function th(e,t,n=`text/javascript`){return document.getElementById(e)?Promise.resolve(!0):new Promise((r,i)=>{let a=document.createElement(`script`);a.id=e,a.src=t,a.defer=!0,a.type=n,a.onload=()=>r(!0),a.onerror=()=>i(Error(`Script load error for ${t}`)),document.head.appendChild(a)})}function nh(){rh(),ih()}function rh(){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êt(e) à révéler un secret bien-être ?`,"sharing.text":`Découvre ce produit chez Gapianne`,"sdk.wallet.login.text":`Créez votre porte-monnaie avec **{{ productName }}** et recevez **{{ estimatedReward }}** par ami(e) parrainé(e)`}},domain:window.location.host},window.FrakSetup.modalWalletConfig={metadata:{position:`left`}}}function ih(){let e=document.querySelectorAll(`#nexus-share-button > button`);for(let t of Array.from(e)){let e=document.createElement(`frak-button-share`);e.setAttribute(`text`,`PARTAGE ET GAGNE {REWARD} !`),e.setAttribute(`no-reward-text`,`PARTAGE ET GAGNE`),e.setAttribute(`use-reward`,`true`),e.setAttribute(`classname`,`button w-full`),t.replaceWith(e)}}let ah={"gapianne.com":nh};function oh(){let e=ah[window.location.host];e&&(e(),th(`frak-components`,`https://cdn.jsdelivr.net/npm/@frak-labs/components@beta/cdn/components.js`,`module`))}function sh(e){document.readyState===`complete`||document.readyState===`interactive`?setTimeout(e,1):document.addEventListener(`DOMContentLoaded`,e)}function ch(){return Me(96)}async function lh(e,t,n){return await e.request({method:`frak_displayEmbeddedWallet`,params:n?[t,e.config.metadata,n]:[t,e.config.metadata]})}async function uh(e,{steps:t,metadata:n},r){return await e.request({method:`frak_displayModal`,params:r?[t,n,e.config.metadata,r]:[t,n,e.config.metadata]})}async function dh(e,t,n){return await e.request({method:`frak_displaySharingPage`,params:n?[t,e.config.metadata,n]:[t,e.config.metadata]})}async function fh(e){if(typeof window>`u`)return;let t=Ue();if(!t)return;let n=await T.resolveMerchantId();if(!n)return;let r=`frak-identity-ensured-${n}`;if(!window.sessionStorage.getItem(r))try{let i=nt();(await fetch(`${i}/user/identity/ensure`,{method:`POST`,headers:{Accept:`application/json`,"Content-Type":`application/json`,"x-wallet-sdk-auth":e,"x-frak-client-id":t},body:JSON.stringify({merchantId:n})})).ok&&window.sessionStorage.setItem(r,`1`)}catch{}}async function ph(e,t){return st(()=>e.request({method:`frak_getMerchantInformation`}),{cacheKey:`frak_getMerchantInformation`,cacheTime:t?.cacheTime})}async function mh(e,t){return st(()=>e.request({method:`frak_getUserReferralStatus`}),{cacheKey:`frak_getUserReferralStatus`,cacheTime:t?.cacheTime})}async function hh(e,t){let{metadata:n,customizations:r}=e.config;return await e.request({method:`frak_prepareSso`,params:[t,n.name,r?.css]})}async function gh(e,t){try{await e.request({method:`frak_sendInteraction`,params:[t,{clientId:Ue()}]})}catch{console.warn(`[Frak SDK] Failed to send interaction:`,t.type)}}function _h(e,t,n){let r=typeof window<`u`?window.location.href:void 0;return ft(t)?(Lt(e,`user_referred_started`,{properties:{referrerClientId:t.c,walletStatus:n?.key}}),gh(e,{type:`arrival`,referrerClientId:t.c,referrerMerchantId:t.m,referralTimestamp:t.t,landingUrl:r}),!0):dt(t)?(Lt(e,`user_referred_started`,{properties:{referrer:t.r,walletStatus:n?.key}}),gh(e,{type:`arrival`,referrerWallet:t.r,landingUrl:r}),!0):!1}function vh(e){let t=Ue();return t?{v:2,c:t,m:e,t:Math.floor(Date.now()/1e3)}:null}function yh(e,t){return ft(e)?Ue()===e.c:dt(e)&&t?.wallet?ke(e.r,t.wallet):!1}function bh(e,{walletStatus:t,frakContext:n,options:r}){if(!n)return`no-referrer`;if(yh(n,t))return`self-referral`;if(!_h(e,n,t))return`no-referrer`;let i=ft(n)?n.m:r?.merchantId,a=r?.alwaysAppendUrl&&i?vh(i):null;return bt.replaceUrl({url:window.location?.href,context:a}),Lt(e,`user_referred_completed`,{properties:{status:`success`}}),`success`}async function xh(e,{options:t}={}){let n=bt.parse({url:window.location.href}),r=await Th(e);try{return bh(e,{walletStatus:r,frakContext:n,options:t})}catch(e){console.warn(`Error processing referral`,{error:e})}}let Sh=`frak:referral-success`;async function Ch(e){try{await xh(e)===`success`&&window.dispatchEvent(new Event(Sh))}catch(e){console.warn(`[Frak] Referral setup failed`,e)}}async function wh(e){if(typeof window>`u`){console.warn(`[Frak] No window found, can't track purchase`);return}let t=window.sessionStorage.getItem(`frak-wallet-interaction-token`),n=Ue();if(!t&&!n){console.warn(`[Frak] No identity found, skipping purchase check`);return}let r=e.merchantId??await T.resolveMerchantId();if(!r){console.warn(`[Frak] No merchant id found, skipping purchase check`);return}let i={Accept:`application/json`,"Content-Type":`application/json`};t&&(i[`x-wallet-sdk-auth`]=t),n&&(i[`x-frak-client-id`]=n);let a=nt();await fetch(`${a}/user/track/purchase`,{method:`POST`,headers:i,body:JSON.stringify({customerId:e.customerId,orderId:e.orderId,token:e.token,merchantId:r})})}function Th(e,t){if(!t)return e.request({method:`frak_listenToWalletStatus`}).then(t=>(Eh(e,t),t));let n=new Le,r=!1;return e.listenerRequest({method:`frak_listenToWalletStatus`},i=>{Eh(e,i),t(i),r||=(n.resolve(i),!0)}),n.promise}function Eh(e,t){typeof window>`u`||(e.openPanel?.setGlobalProperties({wallet:t.wallet??null}),t.interactionToken?(window.sessionStorage.setItem(`frak-wallet-interaction-token`,t.interactionToken),fh(t.interactionToken)):window.sessionStorage.removeItem(`frak-wallet-interaction-token`))}function Dh(e,{metadata:t,login:n}){return Oh(e,{steps:{login:n??{}},metadata:t})}function Oh(e,t){function n(n){return Oh(e,{...t,steps:{...t.steps,sendTransaction:n}})}function r(n){return Oh(e,{...t,steps:{...t.steps,final:{...n,action:{key:`reward`}}}})}function i(n,r){return Oh(e,{...t,steps:{...t.steps,final:{...r,action:{key:`sharing`,options:n}}}})}async function a(n,r){return n&&(t.metadata=n(t.metadata??{})),await uh(e,t,r)}return{params:t,sendTx:n,reward:r,sharing:i,display:a}}async function kh(e,{tx:t,metadata:n}){return(await uh(e,{metadata:n,steps:{login:{},sendTransaction:{tx:t}}})).sendTransaction}async function Ah(e,{siwe:t,metadata:n}){let r=e.config?.domain??window.location.host,i=t?.statement??`I confirm that I want to use my Frak wallet on: ${e.config.metadata.name}`;return(await uh(e,{metadata:n,steps:{login:{},siweAuthenticate:{siwe:{...t,statement:i,nonce:t?.nonce??ch(),uri:t?.uri??`https://${r}`,version:t?.version??`1`,domain:r}}}})).siweAuthenticate}let jh=Xm;return sh(oh),e.DEEP_LINK_SCHEME=Sm,e.DebugInfoGatherer=Hm,e.FrakContextManager=bt,e.REFERRAL_SUCCESS_EVENT=Sh,e.base64urlDecode=Ke,e.base64urlEncode=Ge,e.baseIframeProps=Mm,e.clearAllCache=lt,e.compressJsonToB64=qe,e.computeLegacyProductId=We,e.createIFrameFrakClient=Xm,e.createIFrameNexusClient=jh,e.createIframe=Nm,e.decompressJsonFromB64=ut,e.displayEmbeddedWallet=lh,e.displayModal=uh,e.displaySharingPage=dh,e.ensureIdentity=fh,e.findIframeInOpener=Fm,e.formatAmount=Am,e.generateSsoUrl=Je,e.getBackendUrl=nt,e.getCache=ct,e.getClientId=Ue,e.getCurrencyAmountKey=jm,e.getMerchantInformation=ph,e.getSupportedCurrency=Om,e.getSupportedLocale=km,e.getUserReferralStatus=mh,e.isChromiumAndroid=Cm,e.isFrakDeepLink=Em,e.isIOS=Lm,e.isInAppBrowser=zm,e.isV1Context=dt,e.isV2Context=ft,e.locales=Dm,e.modalBuilder=Dh,e.openSso=Qe,e.prepareSso=hh,e.processReferral=bh,e.redirectToExternalBrowser=Bm,e.referralInteraction=xh,e.sdkConfigStore=T,e.sendInteraction=gh,e.sendTransaction=kh,e.setupClient=$m,e.setupReferral=Ch,e.siweAuthenticate=Ah,e.ssoPopupFeatures=Xe,e.ssoPopupName=Ze,e.toAndroidIntentUrl=wm,e.trackEvent=Lt,e.trackPurchaseStatus=wh,e.triggerDeepLinkWithFallback=Tm,e.watchWalletStatus=Th,e.withCache=st,e})({});
66
+ `.trim()}};let Um=(()=>{if(typeof navigator>`u`)return!1;let e=navigator.userAgent;if(!(/iPhone|iPad|iPod/i.test(e)||/Macintosh/i.test(e)&&navigator.maxTouchPoints>1))return!1;let t=e.toLowerCase();return t.includes(`instagram`)||t.includes(`fban`)||t.includes(`fbav`)||t.includes(`facebook`)})();function Wm(e){e?localStorage.setItem(xm,e):localStorage.removeItem(xm)}function Gm(e,t){try{let n=new URL(e);return n.searchParams.has(`u`)?(n.searchParams.delete(`u`),n.searchParams.append(`u`,window.location.href),t&&n.searchParams.append(`fmt`,t),n.toString()):e}catch{return e}}function Km(e){let t=new URL(window.location.href);e&&t.searchParams.set(`fmt`,e);let n=t.protocol===`http:`?`x-safari-http`:`x-safari-https`;window.location.href=`${n}://${t.host}${t.pathname}${t.search}${t.hash}`}function qm(e){return e.includes(`/common/social`)}function Jm(e,t,n,r,i){if(i){let e=Gm(t,r);window.open(e,`_blank`);return}if(Em(t)){let i=Gm(t,r);Tm(i,{onFallback:()=>{e.contentWindow?.postMessage({clientLifecycle:`deep-link-failed`,data:{originalUrl:i}},n)}})}else if(Um&&qm(t))Km(r);else{let e=Gm(t,r);window.location.href=e}}function Ym({iframe:e,targetOrigin:t}){let n=new Le;return{handleEvent:r=>{if(!(`iframeLifecycle`in r))return;let{iframeLifecycle:i,data:a}=r;switch(i){case`connected`:n.resolve(!0);break;case`do-backup`:Wm(a.backup);break;case`remove-backup`:localStorage.removeItem(xm);break;case`show`:case`hide`:Pm({iframe:e,isVisible:i===`show`});break;case`redirect`:Jm(e,a.baseRedirectUrl,t,a.mergeToken,a.openInNewTab);break}},isConnected:n.promise}}function Xm({config:e,iframe:t}){let n=e?.walletUrl??`https://wallet.frak.id`,r=typeof navigator<`u`?navigator.language?.split(`-`)[0]:void 0,i=e.metadata.lang??(r===`en`||r===`fr`?r:void 0),a=e.domain??(typeof window<`u`?window.location.hostname:``);T.setCacheScope(a,i),T.reset();let o=T.isCacheFresh?void 0:T.resolve(e.domain,e.walletUrl,i),s=Ym({iframe:t,targetOrigin:n}),c=new Le,l=new Hm(e,t);if(!t.contentWindow)throw new Ie(Fe.configError,`The iframe does not have a content window`);let u=Re({emittingTransport:t.contentWindow,listeningTransport:window,targetOrigin:n,middleware:[{async onRequest(e,t){if(!await s.isConnected)throw new Ie(Fe.clientNotConnected,`The iframe provider isn't connected yet`);return await c.promise,t}},{onRequest(e,t){return l.setLastRequest(e),t},onResponse(e,t){return l.setLastResponse(e,t),t}}],lifecycleHandlers:{iframeLifecycle:(e,t)=>{s.handleEvent(e)}}}),d=Zm(u,s),f=async()=>{d(),u.cleanup(),t.remove(),lt(),T.clearCache(),T.reset()},p;console.log(`[Frak SDK] Initializing OpenPanel`),p=new bm({apiUrl:`https://op-api.gcp.frak.id`,clientId:`6eacc8d7-49ac-4936-95e9-81ef29449570`,trackScreenViews:!0,trackOutgoingLinks:!0,trackAttributes:!1,filter:({type:e,payload:t})=>(e!==`track`||!t?.properties||`sdkVersion`in t.properties||(t.properties={...t.properties,sdkVersion:`0.2.1`,userAnonymousClientId:Ue()}),!0)}),p.setGlobalProperties({sdkVersion:`0.2.1`,userAnonymousClientId:Ue()}),p.init();let m=Qm({config:e,rpcClient:u,lifecycleManager:s,configPromise:o,contextSent:c}).then(()=>l.updateSetupStatus(!0)).catch(e=>{throw c.reject(e),e});return{config:e,debugInfo:l,waitForConnection:s.isConnected,waitForSetup:m,request:u.request,listenerRequest:u.listen,destroy:f,openPanel:p}}function Zm(e,t){let n,r,i=()=>e.sendLifecycle({clientLifecycle:`heartbeat`});async function a(){i(),n=setInterval(i,1e3),r=setTimeout(()=>{o(),console.log(`Heartbeat timeout: connection failed`)},3e4),await t.isConnected,o()}function o(){n&&clearInterval(n),r&&clearTimeout(r)}return a(),o}async function Qm({config:e,rpcClient:t,lifecycleManager:n,configPromise:r,contextSent:i}){await n.isConnected,Vm(t,n.isConnected);let a=new URL(window.location.href),o=a.searchParams.get(`fmt`)??void 0;o&&(a.searchParams.delete(`fmt`),window.history.replaceState({},``,a.toString()));let s=t=>{let n=t?.merchantId??e.metadata.merchantId??``,r=t?.domain??``,i=t?.allowedDomains??[],a=t?.sdkConfig;T.setConfig(a?{isResolved:!0,merchantId:n,domain:r,allowedDomains:i,hasRawSdkConfig:!0,name:a.name??e.metadata.name,logoUrl:a.logoUrl??e.metadata.logoUrl,homepageLink:a.homepageLink??e.metadata.homepageLink,lang:a.lang??e.metadata.lang,currency:a.currency??e.metadata.currency,hidden:a.hidden,css:a.css,translations:a.translations,placements:a.placements}:{isResolved:!0,merchantId:n,domain:r,allowedDomains:i,name:e.metadata.name,logoUrl:e.metadata.logoUrl,homepageLink:e.metadata.homepageLink,lang:e.metadata.lang,currency:e.metadata.currency})},c=!1,l=e=>{let n=c?void 0:o;c=!0;let r=e.hasRawSdkConfig?{name:e.name,logoUrl:e.logoUrl,homepageLink:e.homepageLink,lang:e.lang,currency:e.currency,hidden:e.hidden,css:e.css,translations:e.translations,placements:e.placements}:void 0;t.sendLifecycle({clientLifecycle:`resolved-config`,data:{merchantId:e.merchantId,domain:e.domain??``,allowedDomains:e.allowedDomains??[],sourceUrl:window.location.href,...n&&{pendingMergeToken:n},...r&&{sdkConfig:r}}})};T.isResolved&&(l(T.getConfig()),i.resolve()),r&&(s(await r),l(T.getConfig()),i.resolve());async function u(){let n=e.customizations?.css;n&&t.sendLifecycle({clientLifecycle:`modal-css`,data:{cssLink:n}})}async function d(){let n=e.customizations?.i18n;n&&t.sendLifecycle({clientLifecycle:`modal-i18n`,data:{i18n:n}})}async function f(){if(typeof window>`u`)return;let e=window.localStorage.getItem(xm);e&&t.sendLifecycle({clientLifecycle:`restore-backup`,data:{backup:e}})}await Promise.allSettled([u(),d(),f()])}async function $m({config:e}){let t=eh(e),n=await Nm({config:t});if(!n){console.error(`Failed to create iframe`);return}let r=Xm({config:t,iframe:n});if(await r.waitForSetup,!await r.waitForConnection){console.error(`Failed to connect to client`);return}return r}function eh(e){let t=Om(e.metadata?.currency);return{...e,metadata:{...e.metadata,currency:t}}}async function th(e,t,n=`text/javascript`){return document.getElementById(e)?Promise.resolve(!0):new Promise((r,i)=>{let a=document.createElement(`script`);a.id=e,a.src=t,a.defer=!0,a.type=n,a.onload=()=>r(!0),a.onerror=()=>i(Error(`Script load error for ${t}`)),document.head.appendChild(a)})}function nh(){rh(),ih()}function rh(){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êt(e) à révéler un secret bien-être ?`,"sharing.text":`Découvre ce produit chez Gapianne`,"sdk.wallet.login.text":`Créez votre porte-monnaie avec **{{ productName }}** et recevez **{{ estimatedReward }}** par ami(e) parrainé(e)`}},domain:window.location.host},window.FrakSetup.modalWalletConfig={metadata:{position:`left`}}}function ih(){let e=document.querySelectorAll(`#nexus-share-button > button`);for(let t of Array.from(e)){let e=document.createElement(`frak-button-share`);e.setAttribute(`text`,`PARTAGE ET GAGNE {REWARD} !`),e.setAttribute(`no-reward-text`,`PARTAGE ET GAGNE`),e.setAttribute(`use-reward`,`true`),e.setAttribute(`classname`,`button w-full`),t.replaceWith(e)}}let ah={"gapianne.com":nh};function oh(){let e=ah[window.location.host];e&&(e(),th(`frak-components`,`https://cdn.jsdelivr.net/npm/@frak-labs/components@beta/cdn/components.js`,`module`))}function sh(e){document.readyState===`complete`||document.readyState===`interactive`?setTimeout(e,1):document.addEventListener(`DOMContentLoaded`,e)}function ch(){return Me(96)}async function lh(e,t,n){return await e.request({method:`frak_displayEmbeddedWallet`,params:n?[t,e.config.metadata,n]:[t,e.config.metadata]})}async function uh(e,{steps:t,metadata:n},r){return await e.request({method:`frak_displayModal`,params:r?[t,n,e.config.metadata,r]:[t,n,e.config.metadata]})}async function dh(e,t,n){return await e.request({method:`frak_displaySharingPage`,params:n?[t,e.config.metadata,n]:[t,e.config.metadata]})}async function fh(e){if(typeof window>`u`)return;let t=Ue();if(!t)return;let n=await T.resolveMerchantId();if(!n)return;let r=`frak-identity-ensured-${n}`;if(!window.sessionStorage.getItem(r))try{let i=nt();(await fetch(`${i}/user/identity/ensure`,{method:`POST`,headers:{Accept:`application/json`,"Content-Type":`application/json`,"x-wallet-sdk-auth":e,"x-frak-client-id":t},body:JSON.stringify({merchantId:n})})).ok&&window.sessionStorage.setItem(r,`1`)}catch{}}async function ph(e,t){return st(()=>e.request({method:`frak_getMerchantInformation`}),{cacheKey:`frak_getMerchantInformation`,cacheTime:t?.cacheTime})}async function mh(e,t){return st(()=>e.request({method:`frak_getUserReferralStatus`}),{cacheKey:`frak_getUserReferralStatus`,cacheTime:t?.cacheTime})}async function hh(e,t){let{metadata:n,customizations:r}=e.config;return await e.request({method:`frak_prepareSso`,params:[t,n.name,r?.css]})}async function gh(e,t){try{await e.request({method:`frak_sendInteraction`,params:[t,{clientId:Ue()}]})}catch{console.warn(`[Frak SDK] Failed to send interaction:`,t.type)}}function _h(e,t,n){let r=typeof window<`u`?window.location.href:void 0;return ft(t)?(Lt(e,`user_referred_started`,{properties:{referrerClientId:t.c,walletStatus:n?.key}}),gh(e,{type:`arrival`,referrerClientId:t.c,referrerMerchantId:t.m,referralTimestamp:t.t,landingUrl:r}),!0):dt(t)?(Lt(e,`user_referred_started`,{properties:{referrer:t.r,walletStatus:n?.key}}),gh(e,{type:`arrival`,referrerWallet:t.r,landingUrl:r}),!0):!1}function vh(e){let t=Ue();return t?{v:2,c:t,m:e,t:Math.floor(Date.now()/1e3)}:null}function yh(e,t){return ft(e)?Ue()===e.c:dt(e)&&t?.wallet?ke(e.r,t.wallet):!1}function bh(e,{walletStatus:t,frakContext:n,options:r}){if(!n)return`no-referrer`;if(yh(n,t))return`self-referral`;if(!_h(e,n,t))return`no-referrer`;let i=ft(n)?n.m:r?.merchantId,a=r?.alwaysAppendUrl&&i?vh(i):null;return bt.replaceUrl({url:window.location?.href,context:a}),Lt(e,`user_referred_completed`,{properties:{status:`success`}}),`success`}async function xh(e,{options:t}={}){let n=bt.parse({url:window.location.href}),r=await Th(e);try{return bh(e,{walletStatus:r,frakContext:n,options:t})}catch(e){console.warn(`Error processing referral`,{error:e})}}let Sh=`frak:referral-success`;async function Ch(e){try{await xh(e)===`success`&&window.dispatchEvent(new Event(Sh))}catch(e){console.warn(`[Frak] Referral setup failed`,e)}}async function wh(e){if(typeof window>`u`){console.warn(`[Frak] No window found, can't track purchase`);return}let t=window.sessionStorage.getItem(`frak-wallet-interaction-token`),n=Ue();if(!t&&!n){console.warn(`[Frak] No identity found, skipping purchase check`);return}let r=e.merchantId??await T.resolveMerchantId();if(!r){console.warn(`[Frak] No merchant id found, skipping purchase check`);return}let i={Accept:`application/json`,"Content-Type":`application/json`};t&&(i[`x-wallet-sdk-auth`]=t),n&&(i[`x-frak-client-id`]=n);let a=nt();await fetch(`${a}/user/track/purchase`,{method:`POST`,headers:i,body:JSON.stringify({customerId:e.customerId,orderId:e.orderId,token:e.token,merchantId:r})})}function Th(e,t){if(!t)return e.request({method:`frak_listenToWalletStatus`}).then(t=>(Eh(e,t),t));let n=new Le,r=!1;return e.listenerRequest({method:`frak_listenToWalletStatus`},i=>{Eh(e,i),t(i),r||=(n.resolve(i),!0)}),n.promise}function Eh(e,t){typeof window>`u`||(e.openPanel?.setGlobalProperties({wallet:t.wallet??null}),t.interactionToken?(window.sessionStorage.setItem(`frak-wallet-interaction-token`,t.interactionToken),fh(t.interactionToken)):window.sessionStorage.removeItem(`frak-wallet-interaction-token`))}function Dh(e,{metadata:t,login:n}){return Oh(e,{steps:{login:n??{}},metadata:t})}function Oh(e,t){function n(n){return Oh(e,{...t,steps:{...t.steps,sendTransaction:n}})}function r(n){return Oh(e,{...t,steps:{...t.steps,final:{...n,action:{key:`reward`}}}})}function i(n,r){return Oh(e,{...t,steps:{...t.steps,final:{...r,action:{key:`sharing`,options:n}}}})}async function a(n,r){return n&&(t.metadata=n(t.metadata??{})),await uh(e,t,r)}return{params:t,sendTx:n,reward:r,sharing:i,display:a}}async function kh(e,{tx:t,metadata:n}){return(await uh(e,{metadata:n,steps:{login:{},sendTransaction:{tx:t}}})).sendTransaction}async function Ah(e,{siwe:t,metadata:n}){let r=e.config?.domain??window.location.host,i=t?.statement??`I confirm that I want to use my Frak wallet on: ${e.config.metadata.name}`;return(await uh(e,{metadata:n,steps:{login:{},siweAuthenticate:{siwe:{...t,statement:i,nonce:t?.nonce??ch(),uri:t?.uri??`https://${r}`,version:t?.version??`1`,domain:r}}}})).siweAuthenticate}let jh=Xm;return sh(oh),e.DEEP_LINK_SCHEME=Sm,e.DebugInfoGatherer=Hm,e.FrakContextManager=bt,e.REFERRAL_SUCCESS_EVENT=Sh,e.base64urlDecode=Ke,e.base64urlEncode=Ge,e.baseIframeProps=Mm,e.clearAllCache=lt,e.compressJsonToB64=qe,e.computeLegacyProductId=We,e.createIFrameFrakClient=Xm,e.createIFrameNexusClient=jh,e.createIframe=Nm,e.decompressJsonFromB64=ut,e.displayEmbeddedWallet=lh,e.displayModal=uh,e.displaySharingPage=dh,e.ensureIdentity=fh,e.findIframeInOpener=Fm,e.formatAmount=Am,e.generateSsoUrl=Je,e.getBackendUrl=nt,e.getCache=ct,e.getClientId=Ue,e.getCurrencyAmountKey=jm,e.getMerchantInformation=ph,e.getSupportedCurrency=Om,e.getSupportedLocale=km,e.getUserReferralStatus=mh,e.isChromiumAndroid=Cm,e.isFrakDeepLink=Em,e.isIOS=Lm,e.isInAppBrowser=zm,e.isV1Context=dt,e.isV2Context=ft,e.locales=Dm,e.modalBuilder=Dh,e.openSso=Qe,e.prepareSso=hh,e.processReferral=bh,e.redirectToExternalBrowser=Bm,e.referralInteraction=xh,e.sdkConfigStore=T,e.sendInteraction=gh,e.sendTransaction=kh,e.setupClient=$m,e.setupReferral=Ch,e.siweAuthenticate=Ah,e.ssoPopupFeatures=Xe,e.ssoPopupName=Ze,e.toAndroidIntentUrl=wm,e.trackEvent=Lt,e.trackPurchaseStatus=wh,e.triggerDeepLinkWithFallback=Tm,e.watchWalletStatus=Th,e.withCache=st,e})({});
package/package.json CHANGED
@@ -11,7 +11,7 @@
11
11
  "url": "https://twitter.com/QNivelais"
12
12
  }
13
13
  ],
14
- "version": "0.0.44-beta.1c24fe7c",
14
+ "version": "0.0.44-beta.53dfa7b2",
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",
@@ -48,7 +48,7 @@
48
48
  "publish": "echo 'Publishing legacy...'"
49
49
  },
50
50
  "dependencies": {
51
- "@frak-labs/core-sdk": "0.2.1-beta.1c24fe7c"
51
+ "@frak-labs/core-sdk": "0.2.1-beta.53dfa7b2"
52
52
  },
53
53
  "devDependencies": {
54
54
  "@frak-labs/dev-tooling": "0.0.0",