@frak-labs/nexus-sdk 0.0.45-beta.bd7d4823 → 0.0.45

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.
@@ -11,4 +11,4 @@ var NexusSDK=(function(e){Object.defineProperty(e,Symbol.toStringTag,{value:`Mod
11
11
  Last Response: ${t.lastResponse}
12
12
  Client Status: ${t.clientStatus}
13
13
  Error: ${t.error}
14
- `.trim()}};let Jt=(()=>{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 Yt(e){e?localStorage.setItem(J,e):localStorage.removeItem(J)}function Xt(e,t){try{let n=new URL(e);if(!n.searchParams.has(`u`))return e;let r=$t(window.location.href,t);return n.searchParams.delete(`u`),n.searchParams.append(`u`,r),n.toString()}catch{return e}}function Zt(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 Qt(e){return e.includes(`/common/social`)}function $t(e,t){if(!t)return e;try{let n=new URL(e);return n.searchParams.set(`fmt`,t),n.toString()}catch{return`${e}${e.includes(`?`)?`&`:`?`}fmt=${encodeURIComponent(t)}`}}function en(e,t,n,r,i){if(i){let e=Xt(t,r);window.open(e,`_blank`);return}if(Y(t)){let i=Xt(t,r);Nt(i,{onFallback:()=>{e.contentWindow?.postMessage({clientLifecycle:`deep-link-failed`,data:{originalUrl:i}},n)}})}else if(Jt&&Qt(t))Zt(r);else{let e=Xt(t,r);window.location.href=e}}function tn({iframe:e,targetOrigin:t}){let n=new T;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`:Yt(a.backup);break;case`remove-backup`:localStorage.removeItem(J);break;case`show`:case`hide`:zt({iframe:e,isVisible:i===`show`});break;case`redirect`:en(e,a.baseRedirectUrl,t,a.mergeToken,a.openInNewTab);break}},isConnected:n.promise}}function nn({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:``);G.setCacheScope(a,i),G.reset();let o=G.isCacheFresh?void 0:G.resolve(e.domain,e.walletUrl,i),s=tn({iframe:t,targetOrigin:n}),c=new T,l=new qt(e,t);if(!t.contentWindow)throw new w(Ne.configError,`The iframe does not have a content window`);let u=Pe({emittingTransport:t.contentWindow,listeningTransport:window,targetOrigin:n,middleware:[{async onRequest(e,t){if(!await s.isConnected)throw new w(Ne.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=rn(u,s),f=async()=>{d(),u.cleanup(),t.remove(),N(),G.clearCache(),G.reset()},p;console.log(`[Frak SDK] Initializing OpenPanel`),p=new kt({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:`1.0.0`,userAnonymousClientId:E()}),!0)}),p.setGlobalProperties({sdkVersion:`1.0.0`,userAnonymousClientId:E()}),p.init();let m=an({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 rn(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 an({config:e,rpcClient:t,lifecycleManager:n,configPromise:r,contextSent:i}){await n.isConnected,Kt(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;G.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,components:a.components}:{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}}})};G.isResolved&&(l(G.getConfig()),i.resolve()),r&&(s(await r),l(G.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(J);e&&t.sendLifecycle({clientLifecycle:`restore-backup`,data:{backup:e}})}await Promise.allSettled([u(),d(),f()])}async function on({config:e}){let t=sn(e),n=await Rt({config:t});if(!n){console.error(`Failed to create iframe`);return}let r=nn({config:t,iframe:n});if(await r.waitForSetup,!await r.waitForConnection){console.error(`Failed to connect to client`);return}return r}function sn(e){let t=Pt(e.metadata?.currency);return{...e,metadata:{...e.metadata,currency:t}}}async function cn(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 ln(){un(),dn()}function un(){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 dn(){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 fn={"gapianne.com":ln};function pn(){let e=fn[window.location.host];e&&(e(),cn(`frak-components`,`https://cdn.jsdelivr.net/npm/@frak-labs/components@beta/cdn/components.js`,`module`))}function mn(e){document.readyState===`complete`||document.readyState===`interactive`?setTimeout(e,1):document.addEventListener(`DOMContentLoaded`,e)}function hn(){return Me(96)}async function gn(e,t,n){return await e.request({method:`frak_displayEmbeddedWallet`,params:n?[t,e.config.metadata,n]:[t,e.config.metadata]})}async function Q(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 _n(e,t,n){return await e.request({method:`frak_displaySharingPage`,params:n?[t,e.config.metadata,n]:[t,e.config.metadata]})}async function vn(e){if(typeof window>`u`)return;let t=E();if(!t)return;let n=await G.resolveMerchantId();if(!n)return;let r=`frak-identity-ensured-${n}`;if(!window.sessionStorage.getItem(r))try{let i=D();(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 yn(e,t){return M(()=>e.request({method:`frak_getMerchantInformation`}),{cacheKey:`frak_getMerchantInformation`,cacheTime:t?.cacheTime})}async function bn(e,t){return M(()=>e.request({method:`frak_getMergeToken`}),{cacheKey:`frak_getMergeToken`,cacheTime:t?.cacheTime})}async function xn(e,t){return M(()=>e.request({method:`frak_getUserReferralStatus`}),{cacheKey:`frak_getUserReferralStatus`,cacheTime:t?.cacheTime})}async function Sn(e,t){let{metadata:n,customizations:r}=e.config;return await e.request({method:`frak_prepareSso`,params:[t,n.name,r?.css]})}async function Cn(e,t){try{await e.request({method:`frak_sendInteraction`,params:[t,{clientId:E()}]})}catch{console.warn(`[Frak SDK] Failed to send interaction:`,t.type)}}function wn(e,t,n){let r=typeof window<`u`?window.location.href:void 0;return F(t)?(K(e,`user_referred_started`,{properties:{referrerClientId:t.c,walletStatus:n?.key}}),Cn(e,{type:`arrival`,referrerClientId:t.c,referrerMerchantId:t.m,referralTimestamp:t.t,landingUrl:r}),!0):P(t)?(K(e,`user_referred_started`,{properties:{referrer:t.r,walletStatus:n?.key}}),Cn(e,{type:`arrival`,referrerWallet:t.r,landingUrl:r}),!0):!1}function Tn(e){let t=E();return t?{v:2,c:t,m:e,t:Math.floor(Date.now()/1e3)}:null}function En(e,t){return F(e)?E()===e.c:P(e)&&t?.wallet?je(e.r,t.wallet):!1}function Dn(e,{walletStatus:t,frakContext:n,options:r}){if(!n)return`no-referrer`;if(En(n,t))return`self-referral`;if(!wn(e,n,t))return`no-referrer`;let i=F(n)?n.m:r?.merchantId,a=r?.alwaysAppendUrl&&i?Tn(i):null;return L.replaceUrl({url:window.location?.href,context:a}),K(e,`user_referred_completed`,{properties:{status:`success`}}),`success`}async function On(e,{options:t}={}){let n=L.parse({url:window.location.href}),r=await Mn(e);try{return Dn(e,{walletStatus:r,frakContext:n,options:t})}catch(e){console.warn(`Error processing referral`,{error:e})}}let kn=`frak:referral-success`;async function An(e){try{await On(e)===`success`&&window.dispatchEvent(new Event(kn))}catch(e){console.warn(`[Frak] Referral setup failed`,e)}}async function jn(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=E();if(!t&&!n){console.warn(`[Frak] No identity found, skipping purchase check`);return}let r=e.merchantId??await G.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=D();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 Mn(e,t){if(!t)return e.request({method:`frak_listenToWalletStatus`}).then(t=>(Nn(e,t),t));let n=new T,r=!1;return e.listenerRequest({method:`frak_listenToWalletStatus`},i=>{Nn(e,i),t(i),r||=(n.resolve(i),!0)}),n.promise}function Nn(e,t){typeof window>`u`||(e.openPanel?.setGlobalProperties({wallet:t.wallet??null}),t.interactionToken?(window.sessionStorage.setItem(`frak-wallet-interaction-token`,t.interactionToken),vn(t.interactionToken)):window.sessionStorage.removeItem(`frak-wallet-interaction-token`))}function Pn(e,{metadata:t,login:n}){return $(e,{steps:{login:n??{}},metadata:t})}function $(e,t){function n(n){return $(e,{...t,steps:{...t.steps,sendTransaction:n}})}function r(n){return $(e,{...t,steps:{...t.steps,final:{...n,action:{key:`reward`}}}})}function i(n,r){return $(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 Q(e,t,r)}return{params:t,sendTx:n,reward:r,sharing:i,display:a}}async function Fn(e,{tx:t,metadata:n}){return(await Q(e,{metadata:n,steps:{login:{},sendTransaction:{tx:t}}})).sendTransaction}async function In(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 Q(e,{metadata:n,steps:{login:{},siweAuthenticate:{siwe:{...t,statement:i,nonce:t?.nonce??hn(),uri:t?.uri??`https://${r}`,version:t?.version??`1`,domain:r}}}})).siweAuthenticate}let Ln=nn;return mn(pn),e.DEEP_LINK_SCHEME=At,e.DebugInfoGatherer=qt,e.FrakContextManager=L,e.REFERRAL_SUCCESS_EVENT=kn,e.base64urlDecode=Ve,e.base64urlEncode=Be,e.baseIframeProps=Z,e.clearAllCache=N,e.compressJsonToB64=He,e.computeLegacyProductId=ze,e.createIFrameFrakClient=nn,e.createIFrameNexusClient=Ln,e.createIframe=Rt,e.decompressJsonFromB64=$e,e.displayEmbeddedWallet=gn,e.displayModal=Q,e.displaySharingPage=_n,e.ensureIdentity=vn,e.findIframeInOpener=Bt,e.formatAmount=It,e.generateSsoUrl=Ue,e.getBackendUrl=D,e.getCache=Qe,e.getClientId=E,e.getCurrencyAmountKey=Lt,e.getMerchantInformation=yn,e.getMergeToken=bn,e.getSupportedCurrency=Pt,e.getSupportedLocale=Ft,e.getUserReferralStatus=xn,e.isChromiumAndroid=jt,e.isFrakDeepLink=Y,e.isIOS=Ht,e.isInAppBrowser=Wt,e.isV1Context=P,e.isV2Context=F,e.locales=X,e.modalBuilder=Pn,e.openSso=qe,e.prepareSso=Sn,e.processReferral=Dn,e.redirectToExternalBrowser=Gt,e.referralInteraction=On,e.sdkConfigStore=G,e.sendInteraction=Cn,e.sendTransaction=Fn,e.setupClient=on,e.setupReferral=An,e.siweAuthenticate=In,e.ssoPopupFeatures=Ge,e.ssoPopupName=Ke,e.toAndroidIntentUrl=Mt,e.trackEvent=K,e.trackPurchaseStatus=jn,e.triggerDeepLinkWithFallback=Nt,e.watchWalletStatus=Mn,e.withCache=M,e})({});
14
+ `.trim()}};let Jt=(()=>{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 Yt(e){e?localStorage.setItem(J,e):localStorage.removeItem(J)}function Xt(e,t){try{let n=new URL(e);if(!n.searchParams.has(`u`))return e;let r=$t(window.location.href,t);return n.searchParams.delete(`u`),n.searchParams.append(`u`,r),n.toString()}catch{return e}}function Zt(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 Qt(e){return e.includes(`/common/social`)}function $t(e,t){if(!t)return e;try{let n=new URL(e);return n.searchParams.set(`fmt`,t),n.toString()}catch{return`${e}${e.includes(`?`)?`&`:`?`}fmt=${encodeURIComponent(t)}`}}function en(e,t,n,r,i){if(i){let e=Xt(t,r);window.open(e,`_blank`);return}if(Y(t)){let i=Xt(t,r);Nt(i,{onFallback:()=>{e.contentWindow?.postMessage({clientLifecycle:`deep-link-failed`,data:{originalUrl:i}},n)}})}else if(Jt&&Qt(t))Zt(r);else{let e=Xt(t,r);window.location.href=e}}function tn({iframe:e,targetOrigin:t}){let n=new T;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`:Yt(a.backup);break;case`remove-backup`:localStorage.removeItem(J);break;case`show`:case`hide`:zt({iframe:e,isVisible:i===`show`});break;case`redirect`:en(e,a.baseRedirectUrl,t,a.mergeToken,a.openInNewTab);break}},isConnected:n.promise}}function nn({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:``);G.setCacheScope(a,i),G.reset();let o=G.isCacheFresh?void 0:G.resolve(e.domain,e.walletUrl,i),s=tn({iframe:t,targetOrigin:n}),c=new T,l=new qt(e,t);if(!t.contentWindow)throw new w(Ne.configError,`The iframe does not have a content window`);let u=Pe({emittingTransport:t.contentWindow,listeningTransport:window,targetOrigin:n,middleware:[{async onRequest(e,t){if(!await s.isConnected)throw new w(Ne.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=rn(u,s),f=async()=>{d(),u.cleanup(),t.remove(),N(),G.clearCache(),G.reset()},p;console.log(`[Frak SDK] Initializing OpenPanel`),p=new kt({apiUrl:`https://op-api.gcp.frak.id`,clientId:`f305d11d-b93b-487c-80d4-92deb7903e98`,trackScreenViews:!0,trackOutgoingLinks:!0,trackAttributes:!1,filter:({type:e,payload:t})=>(e!==`track`||!t?.properties||`sdkVersion`in t.properties||(t.properties={...t.properties,sdkVersion:`1.0.0`,userAnonymousClientId:E()}),!0)}),p.setGlobalProperties({sdkVersion:`1.0.0`,userAnonymousClientId:E()}),p.init();let m=an({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 rn(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 an({config:e,rpcClient:t,lifecycleManager:n,configPromise:r,contextSent:i}){await n.isConnected,Kt(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;G.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,components:a.components}:{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}}})};G.isResolved&&(l(G.getConfig()),i.resolve()),r&&(s(await r),l(G.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(J);e&&t.sendLifecycle({clientLifecycle:`restore-backup`,data:{backup:e}})}await Promise.allSettled([u(),d(),f()])}async function on({config:e}){let t=sn(e),n=await Rt({config:t});if(!n){console.error(`Failed to create iframe`);return}let r=nn({config:t,iframe:n});if(await r.waitForSetup,!await r.waitForConnection){console.error(`Failed to connect to client`);return}return r}function sn(e){let t=Pt(e.metadata?.currency);return{...e,metadata:{...e.metadata,currency:t}}}async function cn(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 ln(){un(),dn()}function un(){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 dn(){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 fn={"gapianne.com":ln};function pn(){let e=fn[window.location.host];e&&(e(),cn(`frak-components`,`https://cdn.jsdelivr.net/npm/@frak-labs/components@latest/cdn/components.js`,`module`))}function mn(e){document.readyState===`complete`||document.readyState===`interactive`?setTimeout(e,1):document.addEventListener(`DOMContentLoaded`,e)}function hn(){return Me(96)}async function gn(e,t,n){return await e.request({method:`frak_displayEmbeddedWallet`,params:n?[t,e.config.metadata,n]:[t,e.config.metadata]})}async function Q(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 _n(e,t,n){return await e.request({method:`frak_displaySharingPage`,params:n?[t,e.config.metadata,n]:[t,e.config.metadata]})}async function vn(e){if(typeof window>`u`)return;let t=E();if(!t)return;let n=await G.resolveMerchantId();if(!n)return;let r=`frak-identity-ensured-${n}`;if(!window.sessionStorage.getItem(r))try{let i=D();(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 yn(e,t){return M(()=>e.request({method:`frak_getMerchantInformation`}),{cacheKey:`frak_getMerchantInformation`,cacheTime:t?.cacheTime})}async function bn(e,t){return M(()=>e.request({method:`frak_getMergeToken`}),{cacheKey:`frak_getMergeToken`,cacheTime:t?.cacheTime})}async function xn(e,t){return M(()=>e.request({method:`frak_getUserReferralStatus`}),{cacheKey:`frak_getUserReferralStatus`,cacheTime:t?.cacheTime})}async function Sn(e,t){let{metadata:n,customizations:r}=e.config;return await e.request({method:`frak_prepareSso`,params:[t,n.name,r?.css]})}async function Cn(e,t){try{await e.request({method:`frak_sendInteraction`,params:[t,{clientId:E()}]})}catch{console.warn(`[Frak SDK] Failed to send interaction:`,t.type)}}function wn(e,t,n){let r=typeof window<`u`?window.location.href:void 0;return F(t)?(K(e,`user_referred_started`,{properties:{referrerClientId:t.c,walletStatus:n?.key}}),Cn(e,{type:`arrival`,referrerClientId:t.c,referrerMerchantId:t.m,referralTimestamp:t.t,landingUrl:r}),!0):P(t)?(K(e,`user_referred_started`,{properties:{referrer:t.r,walletStatus:n?.key}}),Cn(e,{type:`arrival`,referrerWallet:t.r,landingUrl:r}),!0):!1}function Tn(e){let t=E();return t?{v:2,c:t,m:e,t:Math.floor(Date.now()/1e3)}:null}function En(e,t){return F(e)?E()===e.c:P(e)&&t?.wallet?je(e.r,t.wallet):!1}function Dn(e,{walletStatus:t,frakContext:n,options:r}){if(!n)return`no-referrer`;if(En(n,t))return`self-referral`;if(!wn(e,n,t))return`no-referrer`;let i=F(n)?n.m:r?.merchantId,a=r?.alwaysAppendUrl&&i?Tn(i):null;return L.replaceUrl({url:window.location?.href,context:a}),K(e,`user_referred_completed`,{properties:{status:`success`}}),`success`}async function On(e,{options:t}={}){let n=L.parse({url:window.location.href}),r=await Mn(e);try{return Dn(e,{walletStatus:r,frakContext:n,options:t})}catch(e){console.warn(`Error processing referral`,{error:e})}}let kn=`frak:referral-success`;async function An(e){try{await On(e)===`success`&&window.dispatchEvent(new Event(kn))}catch(e){console.warn(`[Frak] Referral setup failed`,e)}}async function jn(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=E();if(!t&&!n){console.warn(`[Frak] No identity found, skipping purchase check`);return}let r=e.merchantId??await G.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=D();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 Mn(e,t){if(!t)return e.request({method:`frak_listenToWalletStatus`}).then(t=>(Nn(e,t),t));let n=new T,r=!1;return e.listenerRequest({method:`frak_listenToWalletStatus`},i=>{Nn(e,i),t(i),r||=(n.resolve(i),!0)}),n.promise}function Nn(e,t){typeof window>`u`||(e.openPanel?.setGlobalProperties({wallet:t.wallet??null}),t.interactionToken?(window.sessionStorage.setItem(`frak-wallet-interaction-token`,t.interactionToken),vn(t.interactionToken)):window.sessionStorage.removeItem(`frak-wallet-interaction-token`))}function Pn(e,{metadata:t,login:n}){return $(e,{steps:{login:n??{}},metadata:t})}function $(e,t){function n(n){return $(e,{...t,steps:{...t.steps,sendTransaction:n}})}function r(n){return $(e,{...t,steps:{...t.steps,final:{...n,action:{key:`reward`}}}})}function i(n,r){return $(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 Q(e,t,r)}return{params:t,sendTx:n,reward:r,sharing:i,display:a}}async function Fn(e,{tx:t,metadata:n}){return(await Q(e,{metadata:n,steps:{login:{},sendTransaction:{tx:t}}})).sendTransaction}async function In(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 Q(e,{metadata:n,steps:{login:{},siweAuthenticate:{siwe:{...t,statement:i,nonce:t?.nonce??hn(),uri:t?.uri??`https://${r}`,version:t?.version??`1`,domain:r}}}})).siweAuthenticate}let Ln=nn;return mn(pn),e.DEEP_LINK_SCHEME=At,e.DebugInfoGatherer=qt,e.FrakContextManager=L,e.REFERRAL_SUCCESS_EVENT=kn,e.base64urlDecode=Ve,e.base64urlEncode=Be,e.baseIframeProps=Z,e.clearAllCache=N,e.compressJsonToB64=He,e.computeLegacyProductId=ze,e.createIFrameFrakClient=nn,e.createIFrameNexusClient=Ln,e.createIframe=Rt,e.decompressJsonFromB64=$e,e.displayEmbeddedWallet=gn,e.displayModal=Q,e.displaySharingPage=_n,e.ensureIdentity=vn,e.findIframeInOpener=Bt,e.formatAmount=It,e.generateSsoUrl=Ue,e.getBackendUrl=D,e.getCache=Qe,e.getClientId=E,e.getCurrencyAmountKey=Lt,e.getMerchantInformation=yn,e.getMergeToken=bn,e.getSupportedCurrency=Pt,e.getSupportedLocale=Ft,e.getUserReferralStatus=xn,e.isChromiumAndroid=jt,e.isFrakDeepLink=Y,e.isIOS=Ht,e.isInAppBrowser=Wt,e.isV1Context=P,e.isV2Context=F,e.locales=X,e.modalBuilder=Pn,e.openSso=qe,e.prepareSso=Sn,e.processReferral=Dn,e.redirectToExternalBrowser=Gt,e.referralInteraction=On,e.sdkConfigStore=G,e.sendInteraction=Cn,e.sendTransaction=Fn,e.setupClient=on,e.setupReferral=An,e.siweAuthenticate=In,e.ssoPopupFeatures=Ge,e.ssoPopupName=Ke,e.toAndroidIntentUrl=Mt,e.trackEvent=K,e.trackPurchaseStatus=jn,e.triggerDeepLinkWithFallback=Nt,e.watchWalletStatus=Mn,e.withCache=M,e})({});
package/package.json CHANGED
@@ -11,7 +11,7 @@
11
11
  "url": "https://twitter.com/QNivelais"
12
12
  }
13
13
  ],
14
- "version": "0.0.45-beta.bd7d4823",
14
+ "version": "0.0.45",
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": "1.0.0-beta.bd7d4823"
51
+ "@frak-labs/core-sdk": "1.0.0"
52
52
  },
53
53
  "devDependencies": {
54
54
  "@frak-labs/dev-tooling": "0.0.0",