@frak-labs/nexus-sdk 0.0.42-beta.2c1d363d → 0.0.42-beta.4dfea079
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 +2 -2
package/dist/bundle/bundle.js
CHANGED
|
@@ -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()}};function Qe(){let e=navigator.userAgent;return/Android/i.test(e)&&/Chrome\/\d+/i.test(e)}function $e(e){return`intent://${e.slice(13)}#Intent;scheme=frakwallet;package=id.frak.wallet;end`}function et(e,t){let n=t?.timeout??2500,r=!1,i=()=>{document.hidden&&(r=!0)};document.addEventListener(`visibilitychange`,i);let a=Qe()&&W(e)?$e(e):e;window.location.href=a,setTimeout(()=>{document.removeEventListener(`visibilitychange`,i),r||t?.onFallback?.()},n)}function W(e){return e.startsWith(Ye)}let G={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 tt({walletBaseUrl:e,config:t}){let n=document.querySelector(`#frak-wallet`);n&&n.remove();let r=document.createElement(`iframe`);return r.id=G.id,r.name=G.name,r.allow=G.allow,r.style.zIndex=G.style.zIndex.toString(),nt({iframe:r,isVisible:!1}),r.src=`${t?.walletUrl??e??`https://wallet.frak.id`}/listener`,new Promise(e=>{r.addEventListener(`load`,()=>e(r)),document.body.appendChild(r)})}function nt({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 rt(e=`/listener`){if(!window.opener)return null;let t=t=>{try{return t.location.origin===window.location.origin&&t.location.pathname===e}catch{return!1}};if(t(window.opener))return window.opener;try{let e=window.opener.frames;for(let n=0;n<e.length;n++)if(t(e[n]))return e[n];return null}catch(t){return console.error(`[findIframeInOpener] Error finding iframe with pathname ${e}:`,t),null}}function it(e){e?localStorage.setItem(U,e):localStorage.removeItem(U)}function at(e,t,n){let r=new URL(window.location.href),i=r.searchParams.get(`fmt`)??void 0;e.contentWindow?.postMessage({clientLifecycle:`handshake-response`,data:{token:t,currentUrl:window.location.href,clientId:A(),pendingMergeToken:i}},n),i&&(r.searchParams.delete(`fmt`),window.history.replaceState({},``,r.toString()))}function ot(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 st(e,t,n,r){let i=ot(t,r);W(t)?et(i,{onFallback:()=>{e.contentWindow?.postMessage({clientLifecycle:`deep-link-failed`,data:{originalUrl:i}},n)}}):window.location.href=i}function ct({iframe:e,targetOrigin:t}){let n=new k;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`:it(a.backup);break;case`remove-backup`:localStorage.removeItem(U);break;case`show`:case`hide`:nt({iframe:e,isVisible:i===`show`});break;case`handshake`:at(e,a.token,t);break;case`redirect`:st(e,a.baseRedirectUrl,t,a.mergeToken);break}},isConnected:n.promise}}function K({config:e,iframe:t}){let n=e?.walletUrl??`https://wallet.frak.id`,r=ct({iframe:t,targetOrigin:n}),i=new Ze(e,t);if(!t.contentWindow)throw new O(D.configError,`The iframe does not have a content window`);let a=Ae({emittingTransport:t.contentWindow,listeningTransport:window,targetOrigin:n,middleware:[{async onRequest(e,t){if(!await r.isConnected)throw new O(D.clientNotConnected,`The iframe provider isn't connected yet`);return t}},{onRequest(e,t){return i.setLastRequest(e),t},onResponse(e,t){return i.setLastResponse(e,t),t}}],lifecycleHandlers:{iframeLifecycle:async(e,t)=>{await r.handleEvent(e)}}}),o=lt(a,r),s=async()=>{o(),a.cleanup(),t.remove()},c;console.log(`[Frak SDK] Initializing OpenPanel`),c=new Je({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.1.1`}),!0)}),c.setGlobalProperties({sdkVersion:`0.1.1`}),c.init();let l=ut({config:e,rpcClient:a,lifecycleManager:r}).then(()=>i.updateSetupStatus(!0));return{config:e,debugInfo:i,waitForConnection:r.isConnected,waitForSetup:l,request:a.request,listenerRequest:a.listen,destroy:s,openPanel:c}}function lt(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 ut({config:e,rpcClient:t,lifecycleManager:n}){await n.isConnected,Xe(t,n.isConnected);async function r(){let n=e.customizations?.css;if(!n)return;let r={clientLifecycle:`modal-css`,data:{cssLink:n}};t.sendLifecycle(r)}async function i(){let n=e.customizations?.i18n;if(!n)return;let r={clientLifecycle:`modal-i18n`,data:{i18n:n}};t.sendLifecycle(r)}async function a(){if(typeof window>`u`)return;let e=window.localStorage.getItem(U);if(!e)return;let n={clientLifecycle:`restore-backup`,data:{backup:e}};t.sendLifecycle(n)}await Promise.allSettled([r(),i(),a()])}function dt(e){return Me(M(e))}let q={eur:`fr-FR`,usd:`en-US`,gbp:`en-GB`};function J(e){return e&&e in q?e:`eur`}function ft(e){return e?q[e]??q.eur:q.eur}function pt(e,t){let n=ft(t),r=J(t);return e.toLocaleString(n,{style:`currency`,currency:r,minimumFractionDigits:0,maximumFractionDigits:2})}function mt(e){return e?`${e}Amount`:`eurAmount`}let Y,X;async function ht(e,t){if(Y)return Y;if(X)return X;X=gt(e,t);let n=await X;return X=void 0,n}async function gt(e,t){let n=e??(typeof window<`u`?window.location.hostname:``);if(n)try{let e=P(t),r=await fetch(`${e}/user/merchant/resolve?domain=${encodeURIComponent(n)}`);if(!r.ok){console.warn(`[Frak SDK] Merchant lookup failed for domain ${n}: ${r.status}`);return}return Y=(await r.json()).merchantId,Y}catch(e){console.warn(`[Frak SDK] Failed to fetch merchantId:`,e);return}}function _t(){Y=void 0,X=void 0}async function vt(e,t){return e.metadata?.merchantId?e.metadata.merchantId:ht(void 0,t)}async function yt({config:e}){let t=bt(e),n=await tt({config:t});if(!n){console.error(`Failed to create iframe`);return}let r=K({config:t,iframe:n});if(await r.waitForSetup,!await r.waitForConnection){console.error(`Failed to connect to client`);return}return r}function bt(e){let t=J(e.metadata?.currency);return{...e,metadata:{...e.metadata,currency:t}}}function xt(e){document.readyState===`complete`||document.readyState===`interactive`?setTimeout(e,1):document.addEventListener?document.addEventListener(`DOMContentLoaded`,e):document.attachEvent(`onreadystatechange`,()=>{document.readyState===`complete`&&e()})}async function St(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 Ct(){wt(),Tt()}function wt(){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.modalConfig={login:{allowSso:!0},metadata:{isDismissible:!0}},window.FrakSetup.modalShareConfig={link:window.location.href},window.FrakSetup.modalWalletConfig={metadata:{position:`left`}}}function Tt(){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(`show-wallet`,`true`),e.setAttribute(`classname`,`button w-full`),t.replaceWith(e)}}let Et={"gapianne.com":Ct};function Dt(){let e=Et[window.location.host];e&&(e(),St(`frak-components`,`https://cdn.jsdelivr.net/npm/@frak-labs/components@latest/cdn/components.js`,`module`))}function Ot(){return ke(96)}async function Z(e,t){return await e.request({method:`frak_displayEmbeddedWallet`,params:[t,e.config.metadata]})}async function Q(e,{steps:t,metadata:n}){return await e.request({method:`frak_displayModal`,params:[t,n,e.config.metadata]})}async function kt(e){return await e.request({method:`frak_getMerchantInformation`})}async function At(e,t){let{metadata:n,customizations:r}=e.config;return await e.request({method:`frak_prepareSso`,params:[t,n.name,r?.css]})}async function jt(e,t){try{await e.request({method:`frak_sendInteraction`,params:[t]})}catch{console.warn(`[Frak SDK] Failed to send interaction:`,t.type)}}async function Mt(e,{walletStatus:t,frakContext:n,modalConfig:r,options:i}){if(!n?.r)return`no-referrer`;H(e,`user_referred_started`,{properties:{referrer:n?.r,walletStatus:t?.key}}),jt(e,{type:`arrival`,referrerWallet:n.r,landingUrl:typeof window<`u`?window.location.href:void 0});let a=!1;async function o(){if(!a)return a=!0,Pt(e,{modalConfig:{...r,loggedIn:{action:{key:`referred`}}},walletStatus:t})}try{let{status:r,currentWallet:a}=await Nt({initialWalletStatus:t,getFreshWalletStatus:o,frakContext:n});return V.replaceUrl({url:window.location?.href,context:i?.alwaysAppendUrl?{r:a}:null}),H(e,`user_referred_completed`,{properties:{status:r,referrer:n?.r,wallet:a}}),r}catch(r){return console.log(`Error processing referral`,{error:r}),H(e,`user_referred_error`,{properties:{referrer:n?.r,error:r instanceof O?`[${r.code}] ${r.name} - ${r.message}`:r instanceof Error?r.message:`undefined`}}),V.replaceUrl({url:window.location?.href,context:i?.alwaysAppendUrl?{r:t?.wallet}:null}),Ft(r)}}async function Nt({initialWalletStatus:e,getFreshWalletStatus:t,frakContext:n}){let r=e?.wallet;return r||=await t(),r&&Oe(n.r,r)?{status:`self-referral`,currentWallet:r}:{status:`success`,currentWallet:r}}async function Pt(e,{modalConfig:t,walletStatus:n}){return n?.key===`connected`?n.wallet??void 0:(await Z(e,t??{}))?.wallet??void 0}function Ft(e){if(e instanceof O)switch(e.code){case D.walletNotConnected:return`no-wallet`;default:return`error`}return`error`}async function It(e,{modalConfig:t,options:n}={}){let r=V.parse({url:window.location.href}),i=await Rt(e);try{return await Mt(e,{walletStatus:i,frakContext:r,modalConfig:t,options:n})}catch(e){console.warn(`Error processing referral`,{error:e})}}async function Lt(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`);if(!t){console.warn(`[Frak] No frak session found, skipping purchase check`);return}let n=P();await fetch(`${n}/interactions/listenForPurchase`,{method:`POST`,headers:{Accept:`application/json`,"Content-Type":`application/json`,"x-wallet-sdk-auth":t},body:JSON.stringify(e)})}function Rt(e,t){if(!t)return e.request({method:`frak_listenToWalletStatus`}).then(t=>(zt(e,t),t));let n=new k,r=!1;return e.listenerRequest({method:`frak_listenToWalletStatus`},i=>{zt(e,i),t(i),r||=(n.resolve(i),!0)}),n.promise}function zt(e,t){typeof window>`u`||(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`))}function Bt(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){return n&&(t.metadata=n(t.metadata??{})),await Q(e,t)}return{params:t,sendTx:n,reward:r,sharing:i,display:a}}async function Vt(e,{tx:t,metadata:n}){return(await Q(e,{metadata:n,steps:{login:{},sendTransaction:{tx:t}}})).sendTransaction}async function Ht(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??Ot(),uri:t?.uri??`https://${r}`,version:t?.version??`1`,domain:r}}}})).siweAuthenticate}let Ut=K;return xt(Dt),e.DEEP_LINK_SCHEME=Ye,e.DebugInfoGatherer=Ze,e.FrakContextManager=V,e.base64urlDecode=M,e.base64urlEncode=j,e.baseIframeProps=G,e.clearMerchantIdCache=_t,e.compressJsonToB64=Ie,e.computeLegacyProductId=Ne,e.createIFrameFrakClient=K,e.createIFrameNexusClient=Ut,e.createIframe=tt,e.decompressJsonFromB64=dt,e.displayEmbeddedWallet=Z,e.displayModal=Q,e.fetchMerchantId=ht,e.findIframeInOpener=rt,e.formatAmount=pt,e.generateSsoUrl=Le,e.getBackendUrl=P,e.getClientId=A,e.getCurrencyAmountKey=mt,e.getMerchantInformation=kt,e.getSupportedCurrency=J,e.getSupportedLocale=ft,e.isChromiumAndroid=Qe,e.isFrakDeepLink=W,e.locales=q,e.modalBuilder=Bt,e.openSso=Ve,e.prepareSso=At,e.processReferral=Mt,e.referralInteraction=It,e.resolveMerchantId=vt,e.sendInteraction=jt,e.sendTransaction=Vt,e.setupClient=yt,e.siweAuthenticate=Ht,e.ssoPopupFeatures=ze,e.ssoPopupName=Be,e.toAndroidIntentUrl=$e,e.trackEvent=H,e.trackPurchaseStatus=Lt,e.triggerDeepLinkWithFallback=et,e.watchWalletStatus=Rt,e})({});
|
|
14
|
+
`.trim()}};function Qe(){let e=navigator.userAgent;return/Android/i.test(e)&&/Chrome\/\d+/i.test(e)}function $e(e){return`intent://${e.slice(13)}#Intent;scheme=frakwallet;package=id.frak.wallet;end`}function et(e,t){let n=t?.timeout??2500,r=!1,i=()=>{document.hidden&&(r=!0)};document.addEventListener(`visibilitychange`,i);let a=Qe()&&W(e)?$e(e):e;window.location.href=a,setTimeout(()=>{document.removeEventListener(`visibilitychange`,i),r||t?.onFallback?.()},n)}function W(e){return e.startsWith(Ye)}let G={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 tt({walletBaseUrl:e,config:t}){let n=document.querySelector(`#frak-wallet`);n&&n.remove();let r=document.createElement(`iframe`);return r.id=G.id,r.name=G.name,r.allow=G.allow,r.style.zIndex=G.style.zIndex.toString(),nt({iframe:r,isVisible:!1}),r.src=`${t?.walletUrl??e??`https://wallet.frak.id`}/listener`,new Promise(e=>{r.addEventListener(`load`,()=>e(r)),document.body.appendChild(r)})}function nt({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 rt(e=`/listener`){if(!window.opener)return null;let t=t=>{try{return t.location.origin===window.location.origin&&t.location.pathname===e}catch{return!1}};if(t(window.opener))return window.opener;try{let e=window.opener.frames;for(let n=0;n<e.length;n++)if(t(e[n]))return e[n];return null}catch(t){return console.error(`[findIframeInOpener] Error finding iframe with pathname ${e}:`,t),null}}function it(e){e?localStorage.setItem(U,e):localStorage.removeItem(U)}function at(e,t,n,r){let i=new URL(window.location.href),a=i.searchParams.get(`fmt`)??void 0;e.contentWindow?.postMessage({clientLifecycle:`handshake-response`,data:{token:t,currentUrl:window.location.href,clientId:A(),pendingMergeToken:a,configDomain:r}},n),a&&(i.searchParams.delete(`fmt`),window.history.replaceState({},``,i.toString()))}function ot(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 st(e,t,n,r){let i=ot(t,r);W(t)?et(i,{onFallback:()=>{e.contentWindow?.postMessage({clientLifecycle:`deep-link-failed`,data:{originalUrl:i}},n)}}):window.location.href=i}function ct({iframe:e,targetOrigin:t,configDomain:n}){let r=new k;return{handleEvent:async i=>{if(!(`iframeLifecycle`in i))return;let{iframeLifecycle:a,data:o}=i;switch(a){case`connected`:r.resolve(!0);break;case`do-backup`:it(o.backup);break;case`remove-backup`:localStorage.removeItem(U);break;case`show`:case`hide`:nt({iframe:e,isVisible:a===`show`});break;case`handshake`:at(e,o.token,t,n);break;case`redirect`:st(e,o.baseRedirectUrl,t,o.mergeToken);break}},isConnected:r.promise}}function K({config:e,iframe:t}){let n=e?.walletUrl??`https://wallet.frak.id`,r=ct({iframe:t,targetOrigin:n,configDomain:e.domain}),i=new Ze(e,t);if(!t.contentWindow)throw new O(D.configError,`The iframe does not have a content window`);let a=Ae({emittingTransport:t.contentWindow,listeningTransport:window,targetOrigin:n,middleware:[{async onRequest(e,t){if(!await r.isConnected)throw new O(D.clientNotConnected,`The iframe provider isn't connected yet`);return t}},{onRequest(e,t){return i.setLastRequest(e),t},onResponse(e,t){return i.setLastResponse(e,t),t}}],lifecycleHandlers:{iframeLifecycle:async(e,t)=>{await r.handleEvent(e)}}}),o=lt(a,r),s=async()=>{o(),a.cleanup(),t.remove()},c;console.log(`[Frak SDK] Initializing OpenPanel`),c=new Je({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.1.1`}),!0)}),c.setGlobalProperties({sdkVersion:`0.1.1`}),c.init();let l=ut({config:e,rpcClient:a,lifecycleManager:r}).then(()=>i.updateSetupStatus(!0));return{config:e,debugInfo:i,waitForConnection:r.isConnected,waitForSetup:l,request:a.request,listenerRequest:a.listen,destroy:s,openPanel:c}}function lt(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 ut({config:e,rpcClient:t,lifecycleManager:n}){await n.isConnected,Xe(t,n.isConnected);async function r(){let n=e.customizations?.css;if(!n)return;let r={clientLifecycle:`modal-css`,data:{cssLink:n}};t.sendLifecycle(r)}async function i(){let n=e.customizations?.i18n;if(!n)return;let r={clientLifecycle:`modal-i18n`,data:{i18n:n}};t.sendLifecycle(r)}async function a(){if(typeof window>`u`)return;let e=window.localStorage.getItem(U);if(!e)return;let n={clientLifecycle:`restore-backup`,data:{backup:e}};t.sendLifecycle(n)}await Promise.allSettled([r(),i(),a()])}function dt(e){return Me(M(e))}let q={eur:`fr-FR`,usd:`en-US`,gbp:`en-GB`};function J(e){return e&&e in q?e:`eur`}function ft(e){return e?q[e]??q.eur:q.eur}function pt(e,t){let n=ft(t),r=J(t);return e.toLocaleString(n,{style:`currency`,currency:r,minimumFractionDigits:0,maximumFractionDigits:2})}function mt(e){return e?`${e}Amount`:`eurAmount`}let Y,X;async function ht(e,t){if(Y)return Y;if(X)return X;X=gt(e,t);let n=await X;return X=void 0,n}async function gt(e,t){let n=e??(typeof window<`u`?window.location.hostname:``);if(n)try{let e=P(t),r=await fetch(`${e}/user/merchant/resolve?domain=${encodeURIComponent(n)}`);if(!r.ok){console.warn(`[Frak SDK] Merchant lookup failed for domain ${n}: ${r.status}`);return}return Y=(await r.json()).merchantId,Y}catch(e){console.warn(`[Frak SDK] Failed to fetch merchantId:`,e);return}}function _t(){Y=void 0,X=void 0}async function vt(e,t){return e.metadata?.merchantId?e.metadata.merchantId:ht(void 0,t)}async function yt({config:e}){let t=bt(e),n=await tt({config:t});if(!n){console.error(`Failed to create iframe`);return}let r=K({config:t,iframe:n});if(await r.waitForSetup,!await r.waitForConnection){console.error(`Failed to connect to client`);return}return r}function bt(e){let t=J(e.metadata?.currency);return{...e,metadata:{...e.metadata,currency:t}}}function xt(e){document.readyState===`complete`||document.readyState===`interactive`?setTimeout(e,1):document.addEventListener?document.addEventListener(`DOMContentLoaded`,e):document.attachEvent(`onreadystatechange`,()=>{document.readyState===`complete`&&e()})}async function St(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 Ct(){wt(),Tt()}function wt(){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.modalConfig={login:{allowSso:!0},metadata:{isDismissible:!0}},window.FrakSetup.modalShareConfig={link:window.location.href},window.FrakSetup.modalWalletConfig={metadata:{position:`left`}}}function Tt(){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(`show-wallet`,`true`),e.setAttribute(`classname`,`button w-full`),t.replaceWith(e)}}let Et={"gapianne.com":Ct};function Dt(){let e=Et[window.location.host];e&&(e(),St(`frak-components`,`https://cdn.jsdelivr.net/npm/@frak-labs/components@latest/cdn/components.js`,`module`))}function Ot(){return ke(96)}async function Z(e,t){return await e.request({method:`frak_displayEmbeddedWallet`,params:[t,e.config.metadata]})}async function Q(e,{steps:t,metadata:n}){return await e.request({method:`frak_displayModal`,params:[t,n,e.config.metadata]})}async function kt(e){return await e.request({method:`frak_getMerchantInformation`})}async function At(e,t){let{metadata:n,customizations:r}=e.config;return await e.request({method:`frak_prepareSso`,params:[t,n.name,r?.css]})}async function jt(e,t){try{await e.request({method:`frak_sendInteraction`,params:[t]})}catch{console.warn(`[Frak SDK] Failed to send interaction:`,t.type)}}async function Mt(e,{walletStatus:t,frakContext:n,modalConfig:r,options:i}){if(!n?.r)return`no-referrer`;H(e,`user_referred_started`,{properties:{referrer:n?.r,walletStatus:t?.key}}),jt(e,{type:`arrival`,referrerWallet:n.r,landingUrl:typeof window<`u`?window.location.href:void 0});let a=!1;async function o(){if(!a)return a=!0,Pt(e,{modalConfig:{...r,loggedIn:{action:{key:`referred`}}},walletStatus:t})}try{let{status:r,currentWallet:a}=await Nt({initialWalletStatus:t,getFreshWalletStatus:o,frakContext:n});return V.replaceUrl({url:window.location?.href,context:i?.alwaysAppendUrl?{r:a}:null}),H(e,`user_referred_completed`,{properties:{status:r,referrer:n?.r,wallet:a}}),r}catch(r){return console.log(`Error processing referral`,{error:r}),H(e,`user_referred_error`,{properties:{referrer:n?.r,error:r instanceof O?`[${r.code}] ${r.name} - ${r.message}`:r instanceof Error?r.message:`undefined`}}),V.replaceUrl({url:window.location?.href,context:i?.alwaysAppendUrl?{r:t?.wallet}:null}),Ft(r)}}async function Nt({initialWalletStatus:e,getFreshWalletStatus:t,frakContext:n}){let r=e?.wallet;return r||=await t(),r&&Oe(n.r,r)?{status:`self-referral`,currentWallet:r}:{status:`success`,currentWallet:r}}async function Pt(e,{modalConfig:t,walletStatus:n}){return n?.key===`connected`?n.wallet??void 0:(await Z(e,t??{}))?.wallet??void 0}function Ft(e){if(e instanceof O)switch(e.code){case D.walletNotConnected:return`no-wallet`;default:return`error`}return`error`}async function It(e,{modalConfig:t,options:n}={}){let r=V.parse({url:window.location.href}),i=await Rt(e);try{return await Mt(e,{walletStatus:i,frakContext:r,modalConfig:t,options:n})}catch(e){console.warn(`Error processing referral`,{error:e})}}async function Lt(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`);if(!t){console.warn(`[Frak] No frak session found, skipping purchase check`);return}let n=P();await fetch(`${n}/interactions/listenForPurchase`,{method:`POST`,headers:{Accept:`application/json`,"Content-Type":`application/json`,"x-wallet-sdk-auth":t},body:JSON.stringify(e)})}function Rt(e,t){if(!t)return e.request({method:`frak_listenToWalletStatus`}).then(t=>(zt(e,t),t));let n=new k,r=!1;return e.listenerRequest({method:`frak_listenToWalletStatus`},i=>{zt(e,i),t(i),r||=(n.resolve(i),!0)}),n.promise}function zt(e,t){typeof window>`u`||(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`))}function Bt(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){return n&&(t.metadata=n(t.metadata??{})),await Q(e,t)}return{params:t,sendTx:n,reward:r,sharing:i,display:a}}async function Vt(e,{tx:t,metadata:n}){return(await Q(e,{metadata:n,steps:{login:{},sendTransaction:{tx:t}}})).sendTransaction}async function Ht(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??Ot(),uri:t?.uri??`https://${r}`,version:t?.version??`1`,domain:r}}}})).siweAuthenticate}let Ut=K;return xt(Dt),e.DEEP_LINK_SCHEME=Ye,e.DebugInfoGatherer=Ze,e.FrakContextManager=V,e.base64urlDecode=M,e.base64urlEncode=j,e.baseIframeProps=G,e.clearMerchantIdCache=_t,e.compressJsonToB64=Ie,e.computeLegacyProductId=Ne,e.createIFrameFrakClient=K,e.createIFrameNexusClient=Ut,e.createIframe=tt,e.decompressJsonFromB64=dt,e.displayEmbeddedWallet=Z,e.displayModal=Q,e.fetchMerchantId=ht,e.findIframeInOpener=rt,e.formatAmount=pt,e.generateSsoUrl=Le,e.getBackendUrl=P,e.getClientId=A,e.getCurrencyAmountKey=mt,e.getMerchantInformation=kt,e.getSupportedCurrency=J,e.getSupportedLocale=ft,e.isChromiumAndroid=Qe,e.isFrakDeepLink=W,e.locales=q,e.modalBuilder=Bt,e.openSso=Ve,e.prepareSso=At,e.processReferral=Mt,e.referralInteraction=It,e.resolveMerchantId=vt,e.sendInteraction=jt,e.sendTransaction=Vt,e.setupClient=yt,e.siweAuthenticate=Ht,e.ssoPopupFeatures=ze,e.ssoPopupName=Be,e.toAndroidIntentUrl=$e,e.trackEvent=H,e.trackPurchaseStatus=Lt,e.triggerDeepLinkWithFallback=et,e.watchWalletStatus=Rt,e})({});
|
package/package.json
CHANGED
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
"url": "https://twitter.com/QNivelais"
|
|
12
12
|
}
|
|
13
13
|
],
|
|
14
|
-
"version": "0.0.42-beta.
|
|
14
|
+
"version": "0.0.42-beta.4dfea079",
|
|
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.1.
|
|
51
|
+
"@frak-labs/core-sdk": "0.1.1-beta.4dfea079",
|
|
52
52
|
"@frak-labs/ui": "0.0.0"
|
|
53
53
|
},
|
|
54
54
|
"devDependencies": {
|