@frak-labs/components 1.0.12 → 1.0.13-beta.325315f7

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.
Files changed (44) hide show
  1. package/cdn/Banner.wcjTUyP1.js +183 -0
  2. package/cdn/ButtonShare.CMTO7zcA.js +1 -0
  3. package/cdn/ButtonWallet.Cwauxojx.js +40 -0
  4. package/cdn/{GiftIcon.DT1i36Fm.js → GiftIcon.CSjsnRQh.js} +1 -1
  5. package/cdn/{OpenInAppButton.D1UzTuHx.js → OpenInAppButton.G3VjbH1_.js} +1 -1
  6. package/cdn/PostPurchase.DFHeDsq_.js +89 -0
  7. package/cdn/components.js +1 -1
  8. package/cdn/defaults.DNO3nf63.js +58 -0
  9. package/cdn/embeddedWallet.BR3BC6DE.js +1 -0
  10. package/cdn/loader.js +11 -1
  11. package/cdn/replay-V6FXES7X.CgBxdfNp.js +1 -0
  12. package/cdn/{rewards.CIu9qbmI.js → rewards.usw1vliR.js} +1 -1
  13. package/cdn/useGlobalComponents.CcNSI-MX.js +1 -0
  14. package/cdn/useLightDomStyles.mqw3cSdZ.js +1 -0
  15. package/cdn/{useReward.BAmvPaVu.js → useReward.BK8q8FQH.js} +1 -1
  16. package/dist/{GiftIcon-BEzYdiux.js → GiftIcon-BhL0bhVu.js} +10 -4
  17. package/dist/banner.d.ts +1 -16
  18. package/dist/banner.js +24 -8
  19. package/dist/buttonShare.d.ts +3 -11
  20. package/dist/buttonShare.js +6 -6
  21. package/dist/buttonWallet.d.ts +1 -7
  22. package/dist/buttonWallet.js +3 -3
  23. package/dist/i18n/defaults.d.ts +3 -2
  24. package/dist/i18n/defaults.js +5 -5
  25. package/dist/openInApp.d.ts +1 -5
  26. package/dist/openInApp.js +2 -2
  27. package/dist/postPurchase.d.ts +1 -19
  28. package/dist/postPurchase.js +5 -5
  29. package/dist/{rewards-VoZGH2Ko.js → rewards-BtPHdGcI.js} +4 -3
  30. package/dist/{useGlobalComponents-CZ7Sh2tZ.js → useGlobalComponents-Da9LDlRy.js} +1 -1
  31. package/dist/{useLightDomStyles-DphuQhvx.js → useLightDomStyles-DRkTVy4s.js} +1 -1
  32. package/dist/{usePlacement-4PoDbn2X.js → usePlacement-NZOjZ6IR.js} +6 -14
  33. package/dist/{useReward-BGgymGoH.js → useReward-B-yZ7nhY.js} +1 -1
  34. package/package.json +34 -21
  35. package/cdn/Banner.CgCiMrqn.js +0 -167
  36. package/cdn/ButtonShare.BiOpzkRY.js +0 -1
  37. package/cdn/ButtonWallet.Mmrku6ws.js +0 -40
  38. package/cdn/PostPurchase.Cvx1TI64.js +0 -89
  39. package/cdn/defaults.kWEdCyGS.js +0 -58
  40. package/cdn/embeddedWallet.BS-9u4Be.js +0 -1
  41. package/cdn/replay-V6FXES7X.BoL9fAjx.js +0 -1
  42. package/cdn/useGlobalComponents.BC6Jgzg5.js +0 -1
  43. package/cdn/useLightDomStyles.imPXuAtf.js +0 -1
  44. /package/dist/{embeddedWallet-By3_p5Xc.js → embeddedWallet-CxgyuwtP.js} +0 -0
package/cdn/loader.js CHANGED
@@ -151,4 +151,14 @@ var e=Object.defineProperty,t=(t,n)=>{let r={};for(var i in t)e(r,i,{get:t[i],en
151
151
  }
152
152
  .sharedBaseCss_buttonReset__7cswil0:focus-visible {
153
153
  outline-color: currentColor;
154
- }`;function r(e,t){let n=document.getElementById(e);if(n){n.textContent!==t&&(n.textContent=t);return}let r=document.createElement(`style`);r.id=e,r.textContent=t,document.head.appendChild(r)}function i(e,t){let n=`frak-base-${e}`;if(document.getElementById(n)||!t)return;let r=document.createElement(`style`);r.id=n,r.textContent=t,document.head.appendChild(r)}function a(e,t,n){r(`frak-placement-${e}-${t}`,n)}const o={injectBase:i,injectPlacement:a};function s(e){document.readyState===`complete`||document.readyState===`interactive`?setTimeout(e,1):document.addEventListener(`DOMContentLoaded`,e)}const c={parseError:-32700,invalidRequest:-32600,methodNotFound:-32601,invalidParams:-32602,internalError:-32603,serverError:-32e3,clientNotConnected:-32001,configError:-32002,corruptedResponse:-32003,clientAborted:-32004,walletNotConnected:-32005,serverErrorForInteractionDelegation:-32006,userRejected:-32007};var l=class extends Error{code;data;constructor(e,t,n){super(t),this.code=e,this.data=n}toJSON(){return{code:this.code,message:this.message,data:this.data}}},u=class{_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 d(e){let{emittingTransport:t,listeningTransport:n,targetOrigin:r,middleware:i=[],lifecycleHandlers:a}=e,o=new Map;function s(e){return typeof e!=`object`||!e?!1:`clientLifecycle`in e||`iframeLifecycle`in e}function c(e){return typeof e!=`object`||!e?!1:`id`in e&&`topic`in e&&`data`in e}async function d(e){try{`clientLifecycle`in e&&a?.clientLifecycle?await a.clientLifecycle(e,{origin:r,source:null}):`iframeLifecycle`in e&&a?.iframeLifecycle&&await a.iframeLifecycle(e,{origin:r,source:null})}catch{}}async function f(e){let t={origin:r,source:null};for(let n of i)n.onRequest&&await n.onRequest(e,t);return e}async function p(e,t){let n={origin:r,source:null},a=t;for(let t of i)t.onResponse&&(a=await t.onResponse(e,a,n));return a}async function m(e){try{if(new URL(e.origin).origin.toLowerCase()!==new URL(r).origin.toLowerCase())return}catch{return}if(s(e.data)){await d(e.data);return}if(!c(e.data))return;let t;try{let n=e.data.data,r=n instanceof Uint8Array||ArrayBuffer.isView(n)?{result:n}:n;t=await p(e.data,r)}catch{return}let n=o.get(e.data.id);n&&n(t)}async function h(e){let n=e;try{n=await f(e)}catch(e){throw e}t.postMessage(n,r)}function g(e){t.postMessage(e,r)}function _(){return`${Date.now()}-${Math.random().toString(36).substring(2,9)}`}n.addEventListener(`message`,m);function v(e){let t=_(),n=new u;return o.set(t,e=>{e.error?n.reject(new l(e.error.code,e.error.message,e.error.data)):n.resolve(e.result),o.delete(t)}),h({id:t,topic:e.method,data:{method:e.method,params:e.params}}).catch(e=>{o.delete(t),n.reject(e)}),n.promise}function y(e,t){let n=_();return o.set(n,e=>{e.error?o.delete(n):t(e.result)}),h({id:n,topic:e.method,data:{method:e.method,params:e.params}}).catch(e=>{o.delete(n)}),()=>{o.delete(n)}}function b(){n.removeEventListener(`message`,m),o.clear()}return{request:v,listen:y,sendLifecycle:g,cleanup:b}}function f(e){return new TextEncoder().encode(JSON.stringify(e))}function p(e){try{return JSON.parse(new TextDecoder().decode(e))}catch{return null}}const m=`frak-client-id`;function h(){return typeof crypto<`u`&&crypto.randomUUID?crypto.randomUUID():`xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx`.replace(/[xy]/g,e=>{let t=Math.random()*16|0;return(e===`x`?t:t&3|8).toString(16)})}function g(){if(typeof window>`u`||!window.localStorage)return h();let e=localStorage.getItem(m);return e||(e=h(),localStorage.setItem(m,e)),e}var _=class extends Map{maxSize;constructor(e){super(),this.maxSize=e}get(e){let t=super.get(e);return super.has(e)&&(super.delete(e),super.set(e,t)),t}set(e,t){if(super.has(e)&&super.delete(e),super.set(e,t),this.maxSize&&this.size>this.maxSize){let e=super.keys().next().value;e!==void 0&&super.delete(e)}return this}};let v;function y(){return v||={promiseCache:new _(1024),responseCache:new _(1024),failureCache:new _(1024)},v}async function b(e,{cacheKey:t,cacheTime:n=3e4}){let{promiseCache:r,responseCache:i,failureCache:a}=y();if(n>0){let e=i.get(t);if(e&&Date.now()-e.created<n)return e.data}let o=a.get(t);if(o&&Date.now()-o<1e3)throw Error(`Cache: ${t} recently failed, backing off`);let s=r.get(t);s||(s=e(),r.set(t,s));try{let e=await s;return i.set(t,{data:e,created:Date.now()}),a.delete(t),e}catch(e){throw a.set(t,Date.now()),e}finally{r.delete(t)}}function x(){v&&(v.promiseCache.clear(),v.responseCache.clear(),v.failureCache.clear())}const ee=`https://backend.frak.id`;function te(e){return e.includes(`localhost:3000`)||e.includes(`localhost:3010`)}function ne(e){return te(e)?`https://localhost:3030`:e.includes(`wallet-dev.frak.id`)||e.includes(`wallet.gcp-dev.frak.id`)?`https://backend.gcp-dev.frak.id`:ee}function S(e){if(e)return ne(e);if(typeof window<`u`){let e=window.FrakSetup?.client?.config?.walletUrl;if(e)return ne(e)}return ee}const C=`__frakSdkConfig`,re=`frak-config-cache`,w=`frak-merchant-id`,T={key:re},E=typeof window<`u`;function D(){return{isResolved:!1,merchantId:``}}let O=null;function ie(){if(!E)return null;try{let e=localStorage.getItem(T.key);if(!e)return null;let t=JSON.parse(e);return t.config?.isResolved?(O=t,t):null}catch{return null}}function ae(){return(O??ie())?.config}function oe(){let e=O??ie();return e?Date.now()-e.timestamp<3e4:!1}function se(e){if(!(!E||!e.isResolved))try{let t={config:e,timestamp:Date.now()};localStorage.setItem(T.key,JSON.stringify(t)),O=t}catch{}}function ce(){if(E){O=null;try{localStorage.removeItem(T.key)}catch{}}}function le(){E&&(window[C]||(window[C]=ae()??D()))}function k(){return E?(le(),window[C]??D()):D()}function ue(e){E&&window.dispatchEvent(new CustomEvent(`frak:config`,{detail:e}))}function de(e){return e??(E?window.location.hostname:``)}async function fe(e,t,n){try{let r=S(t),i=n?`&lang=${encodeURIComponent(n)}`:``,a=await fetch(`${r}/user/merchant/resolve?domain=${encodeURIComponent(e)}${i}`);if(!a.ok)return;let o=await a.json();if(E)try{sessionStorage.setItem(w,o.merchantId)}catch{}return o}catch{return}}const A={getConfig:k,get isResolved(){return k().isResolved},get isCacheFresh(){return oe()},setCacheScope(e,t){T.key=`${re}:${`${e}:${t??``}`}`,O=null},setConfig(e){if(E&&(window[C]=e),se(e),ue(e),E&&e.merchantId)try{sessionStorage.setItem(w,e.merchantId)}catch{}},reset(){let e=ae()??D();E&&(window[C]=e),ue(e)},clearCache(){if(ce(),x(),E)try{sessionStorage.removeItem(w)}catch{}},resolve(e,t,n){let r=de(e);return r?b(async()=>{let e=await fe(r,t,n);if(!e)throw Error(`Config resolution returned empty`);return e},{cacheKey:`sdkConfig:${r}:${n??``}`,cacheTime:1/0}).catch(()=>void 0):Promise.resolve(void 0)},getMerchantId(){let e=k();if(e.isResolved&&e.merchantId)return e.merchantId;if(E)try{return sessionStorage.getItem(w)??void 0}catch{}},async resolveMerchantId(e,t){return A.getMerchantId()||(await A.resolve(e,t))?.merchantId}};function j(e){return btoa(Array.from(e,e=>String.fromCharCode(e)).join(``)).replace(/\+/g,`-`).replace(/\//g,`_`).replace(/=+$/,``)}function M(e){let t=e.length%4;return Uint8Array.from(atob(e.replace(/-/g,`+`).replace(/_/g,`/`).padEnd(e.length+(t===0?0:4-t),`=`)),e=>e.charCodeAt(0))}function pe(e){return j(f(e))}function me(e,t,n,r,i,a){let o=pe(he({redirectUrl:t.redirectUrl,directExit:t.directExit,lang:t.lang,merchantId:n,metadata:{name:r,css:a,logoUrl:t.metadata?.logoUrl,homepageLink:t.metadata?.homepageLink},clientId:i})),s=new URL(e);return s.pathname=`/sso`,s.searchParams.set(`p`,o),s.toString()}function he(e){return{r:e.redirectUrl,cId:e.clientId,d:e.directExit,l:e.lang,m:e.merchantId,md:{n:e.metadata?.name,css:e.metadata?.css,l:e.metadata?.logoUrl,h:e.metadata?.homepageLink}}}const ge=`menubar=no,status=no,scrollbars=no,fullscreen=no,width=500, height=800`,_e=`frak-sso`;async function ve(e,t){let{metadata:n,customizations:r,walletUrl:i}=e.config,a={...t,directExit:t.directExit??!t.redirectUrl};if(a.openInSameWindow??!!a.redirectUrl)return await e.request({method:`frak_openSso`,params:[a,n.name,r?.css]});let o=a.ssoPopupUrl??me(i??`https://wallet.frak.id`,a,await A.resolveMerchantId()??``,n.name,g(),r?.css),s=window.open(o,_e,ge);if(!s)throw Error(`Popup was blocked. Please allow popups for this site.`);return s.focus(),await e.request({method:`frak_openSso`,params:[a,n.name,r?.css]})??{}}function N(e,t,n){if(e)try{e.openPanel?.track(t,n)}catch{}}function P(e,t){let n=e.get(t);if(n!==null)return n;let r=t.toLowerCase();for(let[t,n]of e)if(t.toLowerCase()===r)return n;return null}function F(e,t){let n=t.toLowerCase(),r=[...e.keys()].filter(e=>e.toLowerCase()===n);for(let t of r)e.delete(t)}const ye=/^0x[a-fA-F0-9]{40}$/;function I(e){return typeof e==`string`&&ye.test(e)}function be(e,t){return e.toLowerCase()===t.toLowerCase()}function xe(e){let t=new Uint8Array(20);for(let n=0;n<20;n++){let r=Number.parseInt(e.substring(2+n*2,4+n*2),16);if(Number.isNaN(r))throw Error(`Invalid address: ${e}`);t[n]=r}return t}const Se=Array.from({length:256},(e,t)=>t.toString(16).padStart(2,`0`));function Ce(e){let t=`0x`;for(let n=0;n<20;n++)t+=Se[e[n]];return t}function we(e){return`r`in e&&!(`v`in e)}function L(e){return`v`in e&&e.v===2}const Te=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;function Ee(e){return typeof e==`string`&&Te.test(e)}function De(e){let t=e.replace(/-/g,``),n=new Uint8Array(16);for(let e=0;e<16;e++)n[e]=Number.parseInt(t.substring(e*2,e*2+2),16);return n}function Oe(e){let t=``;for(let n=0;n<16;n++)t+=e[n].toString(16).padStart(2,`0`);return`${t.slice(0,8)}-${t.slice(8,12)}-${t.slice(12,16)}-${t.slice(16,20)}-${t.slice(20,32)}`}function ke(e){if(!Ee(e.m)||!Number.isInteger(e.t)||e.t<0||e.t>4294967295)return null;let t=typeof e.c==`string`&&e.c.length>0,n=typeof e.w==`string`&&I(e.w);if(!t&&!n||t&&!Ee(e.c))return null;let r=new Uint8Array(21+(t?16:0)+(n?20:0)),i=new DataView(r.buffer,r.byteOffset,r.byteLength),a=0;return r[a++]=2|(t?16:0)|(n?32:0),r.set(De(e.m),a),a+=16,i.setUint32(a,e.t,!1),a+=4,t&&(r.set(De(e.c),a),a+=16),n&&(r.set(xe(e.w),a),a+=20),r}function Ae(e){if(e.length<21)return null;let t=e[0];if((t&15)!=2||t&192)return null;let n=(t&16)!=0,r=(t&32)!=0;if(!n&&!r)return null;let i=21+(n?16:0)+(r?20:0);if(e.length!==i)return null;let a=1,o=Oe(e.subarray(a,a+16));a+=16;let s=new DataView(e.buffer,e.byteOffset,e.byteLength).getUint32(a,!1);a+=4;let c={v:2,m:o,t:s};if(n&&(c.c=Oe(e.subarray(a,a+16)),a+=16),r){let t=Ce(e.subarray(a,a+20));if(!I(t))return null;c.w=t,a+=20}return c}const R=`fCtx`;function je(e){if(e)try{if(L(e)){let t=ke(e);return t?j(t):void 0}return j(xe(e.r))}catch{}}function Me(e){if(!(!e||e.length===0))try{let t=M(e);if(t.length!==20)return Ae(t)||void 0;let n=Ce(t);if(I(n))return{r:n}}catch{}}function Ne({url:e}){if(!e)return null;let t=P(new URL(e).searchParams,R);return t?Me(t):null}function Pe(e){return{utm_source:e.utmSource??`frak`,utm_medium:e.utmMedium??void 0,utm_campaign:e.utmCampaign??void 0,utm_content:e.utmContent,utm_term:e.utmTerm,via:e.via??void 0,ref:e.ref??void 0}}function Fe(e,t){let n=Pe(t??{});for(let[t,r]of Object.entries(n))r===void 0||r===``||e.searchParams.has(t)||e.searchParams.set(t,r)}function Ie({url:e,context:t,attribution:n}){if(!e)return null;let r=je(t);if(!r)return null;let i=new URL(e);return F(i.searchParams,R),i.searchParams.set(R,r),Fe(i,n),i.toString()}function Le(e){let t=new URL(e);return F(t.searchParams,R),t.toString()}function Re({url:e,context:t}){if(!window.location?.href||typeof window>`u`)return;let n=e??window.location.href,r;r=t===null?Le(n):Ie({url:n,context:t}),r&&window.history.replaceState(null,``,r.toString())}const z={compress:je,decompress:Me,parse:Ne,update:Ie,remove:Le,replaceUrl:Re},B={eur:`fr-FR`,usd:`en-US`,gbp:`en-GB`};function V(e){return e&&e in B?e:`eur`}function ze(e){return e?B[e]??B.eur:B.eur}function Be(e,t){let n=ze(t),r=V(t);return e.toLocaleString(n,{style:`currency`,currency:r,minimumFractionDigits:0,maximumFractionDigits:2})}function Ve(e){return e?`${e}Amount`:`eurAmount`}var He=class{constructor(e){this.baseUrl=e.baseUrl,this.headers={"Content-Type":`application/json`,...e.defaultHeaders},this.maxRetries=e.maxRetries??3,this.initialRetryDelay=e.initialRetryDelay??500}async resolveHeaders(){let e={};for(let[t,n]of Object.entries(this.headers)){let r=await n;r!==null&&(e[t]=r)}return e}addHeader(e,t){this.headers[e]=t}async post(e,t,n,r){try{let r=await fetch(e,{method:`POST`,headers:await this.resolveHeaders(),body:t?JSON.stringify(t??{}):void 0,keepalive:!0,...n});if(r.status===401)return null;if(r.status!==200&&r.status!==202)throw Error(`HTTP error! status: ${r.status}`);let i=await r.text();return i?JSON.parse(i):null}catch{if(r<this.maxRetries){let i=this.initialRetryDelay*2**r;return await new Promise(e=>setTimeout(e,i)),this.post(e,t,n,r+1)}return null}}async fetch(e,t,n={}){let r=`${this.baseUrl}${e}`;return this.post(r,t,n,0)}},Ue=class{constructor(e){this.groups=[],this.queue=[],this.options=e;let t={"openpanel-client-id":e.clientId};e.clientSecret&&(t[`openpanel-client-secret`]=e.clientSecret),t[`openpanel-sdk-name`]=e.sdk||`node`,t[`openpanel-sdk-version`]=e.sdkVersion||`1.3.1`,this.api=new He({baseUrl:e.apiUrl||`https://api.openpanel.dev`,defaultHeaders:t})}init(){}ready(){this.options.disabled=!1,this.options.waitForProfile=!1,this.flush()}shouldQueue(e){return!!(this.options.disabled||this.options.waitForProfile&&!this.profileId||e.type===`replay`&&!this.sessionId)}addQueue(e){e.type===`track`&&(e.payload.properties={...e.payload.properties??{},__timestamp:new Date().toISOString()}),this.queue.push(e)}async send(e){if(this.options.filter&&!this.options.filter(e))return Promise.resolve();if(this.shouldQueue(e))return this.addQueue(e),Promise.resolve();let t=await this.api.fetch(`/track`,e,{keepalive:e.type!==`replay`});this.deviceId=t?.deviceId;let n=!!this.sessionId;return this.sessionId=t?.sessionId,!n&&this.sessionId&&this.flush(),t}setGlobalProperties(e){this.global={...this.global,...e}}track(e,t){this.log(`track event`,e,t);let{groups:n,profileId:r,...i}=t??{},a=[...new Set([...this.groups,...n??[]])];return this.send({type:`track`,payload:{name:e,profileId:r??this.profileId,groups:a.length>0?a:void 0,properties:{...this.global??{},...i}}})}identify(e){if(this.log(`identify user`,e),e.profileId&&(this.profileId=e.profileId,this.flush()),e.profileId&&Object.keys(e).length>1)return this.send({type:`identify`,payload:{...e,properties:{...this.global,...e.properties}}})}upsertGroup(e){return this.log(`upsert group`,e),this.send({type:`group`,payload:e})}setGroup(e){return this.log(`set group`,e),this.groups.includes(e)||(this.groups=[...this.groups,e]),this.send({type:`assign_group`,payload:{groupIds:[e],profileId:this.profileId}})}setGroups(e){return this.log(`set groups`,e),this.groups=[...new Set([...this.groups,...e])],this.send({type:`assign_group`,payload:{groupIds:e,profileId:this.profileId}})}alias(e){}increment(e){return this.send({type:`increment`,payload:e})}decrement(e){return this.send({type:`decrement`,payload:e})}revenue(e,t){let n=t?.deviceId;return delete t?.deviceId,this.track(`revenue`,{...t??{},...n?{__deviceId:n}:{},__revenue:e})}getDeviceId(){return this.deviceId??``}getSessionId(){return this.sessionId??``}fetchDeviceId(){return Promise.resolve(this.deviceId??``)}clear(){this.profileId=void 0,this.groups=[],this.deviceId=void 0,this.sessionId=void 0}buildFlushPayload(e){if(e.type===`replay`)return e.payload;if(e.type===`track`){let t=`groups`in e.payload?e.payload.groups??[]:[],n=[...new Set([...this.groups,...t])];return{...e.payload,profileId:e.payload.profileId??this.profileId,groups:n.length>0?n:void 0}}return e.type===`identify`||e.type===`increment`||e.type===`decrement`||e.type===`assign_group`?{...e.payload,profileId:e.payload.profileId??this.profileId}:e.payload}flush(){let e=[];for(let t of this.queue){if(this.shouldQueue(t)){e.push(t);continue}let n=this.buildFlushPayload(t);this.send({...t,payload:n})}this.queue=e}log(...e){this.options.debug}},We=typeof document<`u`?document.currentScript:null;function Ge(e){return e.replace(/([-_][a-z])/gi,e=>e.toUpperCase().replace(`-`,``).replace(`_`,``))}var Ke=class extends Ue{constructor(e){if(super({sdk:`web`,sdkVersion:`1.4.1`,...e}),this.options=e,this.lastPath=``,this.pendingRevenues=[],!this.isServer()){try{let e=sessionStorage.getItem(`openpanel-pending-revenues`);if(e){let t=JSON.parse(e);Array.isArray(t)&&(this.pendingRevenues=t)}}catch{this.pendingRevenues=[]}if(this.setGlobalProperties({__referrer:document.referrer}),this.options.trackScreenViews&&(this.trackScreenViews(),setTimeout(()=>this.screenView(),0)),this.options.trackOutgoingLinks&&this.trackOutgoingLinks(),this.options.trackAttributes&&this.trackAttributes(),this.options.sessionReplay?.enabled){let e=this.options.sessionReplay.sampleRate??1;Math.random()<e&&this.loadReplayModule().then(e=>{e&&e.startReplayRecorder(this.options.sessionReplay,e=>{this.send({type:`replay`,payload:{...e}})})})}}}async loadReplayModule(){try{if(typeof __OPENPANEL_REPLAY_URL__<`u`){let e=We,t=this.options.sessionReplay?.scriptUrl||e?.src?.replace(`.js`,`-replay.js`)||`https://openpanel.dev/op1-replay.js`;return window.__openpanel_replay?window.__openpanel_replay:new Promise(e=>{let n=document.createElement(`script`);n.src=t,n.onload=()=>{e(window.__openpanel_replay??null)},n.onerror=()=>{e(null)},document.head.appendChild(n)})}return await import(`./replay-V6FXES7X.BoL9fAjx.js`)}catch{return null}}debounce(e,t){clearTimeout(this.debounceTimer),this.debounceTimer=setTimeout(e,t)}isServer(){return typeof document>`u`}trackOutgoingLinks(){this.isServer()||document.addEventListener(`click`,e=>{let t=e.target,n=t.closest(`a`);if(n&&t){let e=n.getAttribute(`href`);if(e?.startsWith(`http`))try{let r=new URL(e),i=window.location.hostname;r.hostname!==i&&super.track(`link_out`,{href:e,text:n.innerText||n.getAttribute(`title`)||t.getAttribute(`alt`)||t.getAttribute(`title`)})}catch{}}})}trackScreenViews(){if(this.isServer())return;let e=history.pushState;history.pushState=function(...t){let n=e.apply(this,t);return window.dispatchEvent(new Event(`pushstate`)),window.dispatchEvent(new Event(`locationchange`)),n};let t=history.replaceState;history.replaceState=function(...e){let n=t.apply(this,e);return window.dispatchEvent(new Event(`replacestate`)),window.dispatchEvent(new Event(`locationchange`)),n},window.addEventListener(`popstate`,()=>{window.dispatchEvent(new Event(`locationchange`))});let n=()=>this.debounce(()=>this.screenView(),50);this.options.trackHashChanges?window.addEventListener(`hashchange`,n):window.addEventListener(`locationchange`,n)}trackAttributes(){this.isServer()||document.addEventListener(`click`,e=>{let t=e.target,n=t.closest(`button`),r=t.closest(`a`),i=n?.getAttribute(`data-track`)?n:r?.getAttribute(`data-track`)?r:null;if(i){let e={};for(let t of i.attributes)t.name.startsWith(`data-`)&&t.name!==`data-track`&&(e[Ge(t.name.replace(/^data-/,``))]=t.value);let t=i.getAttribute(`data-track`);t&&super.track(t,e)}})}track(e,t){return super.track(e,{...t,__path:this.lastPath})}screenView(e,t){if(this.isServer())return;let n,r;typeof e==`string`?(n=e,r=t):(n=window.location.href,r=e),this.lastPath!==n&&(this.lastPath=n,super.track(`screen_view`,{...r??{},__path:n,__title:document.title}))}async flushRevenue(){let e=this.pendingRevenues.map(e=>super.revenue(e.amount,e.properties));await Promise.all(e),this.clearRevenue()}clearRevenue(){if(this.pendingRevenues=[],!this.isServer())try{sessionStorage.removeItem(`openpanel-pending-revenues`)}catch{}}pendingRevenue(e,t){if(this.pendingRevenues.push({amount:e,properties:t}),!this.isServer())try{sessionStorage.setItem(`openpanel-pending-revenues`,JSON.stringify(this.pendingRevenues))}catch{}}};const H=`nexus-wallet-backup`,U=`frakwallet://`;function qe(e,t){if(typeof window>`u`)return;let n=new URL(window.location.href),r=n.searchParams.get(`sso`);r&&(t.then(()=>{e.sendLifecycle({clientLifecycle:`sso-redirect-complete`,data:{compressed:r}})}).catch(e=>{}),n.searchParams.delete(`sso`),window.history.replaceState({},``,n.toString()))}function Je(){let e=navigator.userAgent;return/Android/i.test(e)&&/Chrome\/\d+/i.test(e)}const Ye=U.replace(`://`,``);function Xe(e){return`intent://${e.slice(13)}#Intent;scheme=${Ye};end`}function W(e,t){let n=t?.timeout??2500,r=!1,i=()=>{document.hidden&&(r=!0)};document.addEventListener(`visibilitychange`,i);let a=Je()&&Ze(e)?Xe(e):e;window.location.href=a,setTimeout(()=>{document.removeEventListener(`visibilitychange`,i),r||t?.onFallback?.()},n)}function Ze(e){return e.startsWith(U)}function Qe(){if(typeof navigator>`u`)return!1;let e=navigator.userAgent;return!!(/iPhone|iPad|iPod/i.test(e)||/Macintosh/i.test(e)&&navigator.maxTouchPoints>1)}const G=Qe();function $e(){return typeof navigator>`u`?!1:G?!0:/Android|webOS|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)}function et(){if(typeof navigator>`u`)return!1;let e=navigator.userAgent.toLowerCase();return e.includes(`instagram`)||e.includes(`fban`)||e.includes(`fbav`)||e.includes(`facebook`)}const K=et();function tt(e){G&&e.startsWith(`https://`)?window.location.href=`x-safari-https://${e.slice(8)}`:G&&e.startsWith(`http://`)?window.location.href=`x-safari-http://${e.slice(7)}`:window.location.href=`https://backend.frak.id/common/social?u=${encodeURIComponent(e)}`}const q={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 nt({walletBaseUrl:e,config:t}){let n=document.querySelector(`#frak-wallet`);n&&n.remove();let r=document.createElement(`iframe`);r.id=q.id,r.name=q.name,r.allow=q.allow,r.style.zIndex=q.style.zIndex.toString(),it({iframe:r,isVisible:!1});let i=t?.walletUrl??e??`https://wallet.frak.id`,a=g();return ot(i),ot(S(i)),r.src=rt({walletUrl:i,clientId:a,preload:t?.preload}),new Promise(e=>{r.addEventListener(`load`,()=>e(r)),document.body.appendChild(r)})}function rt({walletUrl:e,clientId:t,preload:n}){let r=`${e}/listener?clientId=${encodeURIComponent(t)}`;return!n||n.length===0?r:`${r}#preload=${n.join(`,`)}`}function it({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 at(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{return null}}function ot(e){if(!(typeof document>`u`))try{let t=new URL(e).origin,n=`link[rel="preconnect"][data-frak-preconnect="${t}"]`;if(document.head.querySelector(n))return;let r=document.createElement(`link`);r.rel=`preconnect`,r.href=t,r.crossOrigin=``,r.dataset.frakPreconnect=t,document.head.appendChild(r)}catch{}}const st=G&&K;function ct(e){e?localStorage.setItem(H,e):localStorage.removeItem(H)}function J(e,t){try{let n=new URL(e);if(!n.searchParams.has(`u`))return e;let r=dt(window.location.href,t);return n.searchParams.delete(`u`),n.searchParams.append(`u`,r),n.toString()}catch{return e}}function lt(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 ut(e){return e.includes(`/common/social`)}function dt(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 ft(e,t,n,r,i){if(i){let e=J(t,r);window.open(e,`_blank`);return}if(Ze(t)){let i=J(t,r);W(i,{onFallback:()=>{e.contentWindow?.postMessage({clientLifecycle:`deep-link-failed`,data:{originalUrl:i}},n)}})}else if(st&&ut(t))lt(r);else{let e=J(t,r);window.location.href=e}}function pt({iframe:e,targetOrigin:t}){let n=new u;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`:ct(a.backup);break;case`remove-backup`:localStorage.removeItem(H);break;case`show`:case`hide`:it({iframe:e,isVisible:i===`show`});break;case`redirect`:ft(e,a.baseRedirectUrl,t,a.mergeToken,a.openInNewTab);break}},isConnected:n.promise}}function mt({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:``);A.setCacheScope(a,i),A.reset();let o=A.isCacheFresh?void 0:A.resolve(e.domain,e.walletUrl,i),s=pt({iframe:t,targetOrigin:n}),f=new u,p=Date.now();if(!t.contentWindow)throw new l(c.configError,`The iframe does not have a content window`);let m=d({emittingTransport:t.contentWindow,listeningTransport:window,targetOrigin:n,middleware:[{async onRequest(e,t){if(!await s.isConnected)throw new l(c.clientNotConnected,`The iframe provider isn't connected yet`);return await f.promise,t}}],lifecycleHandlers:{iframeLifecycle:(e,t)=>{s.handleEvent(e)}}}),h=ht(m,s),_=async()=>{h(),m.cleanup(),t.remove(),x(),A.clearCache(),A.reset()},v;{v=new Ke({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||`sdk_version`in t.properties||(t.properties={...t.properties,sdk_version:`1.2.0`,user_anonymous_client_id:g()}),!0)}),v.setGlobalProperties({sdk_version:`1.2.0`,user_anonymous_client_id:g()}),v.init(),v.track(`sdk_initialized`,{sdk_version:`1.2.0`});let e=!1,t=setTimeout(()=>{e||(e=!0,v?.track(`sdk_iframe_handshake_failed`,{reason:`timeout`}))},3e4);s.isConnected.then(()=>{e||(e=!0,clearTimeout(t),v?.track(`sdk_iframe_connected`,{handshake_duration_ms:Date.now()-p}))}).catch(()=>{e||(e=!0,clearTimeout(t),v?.track(`sdk_iframe_handshake_failed`,{reason:`unknown`}))})}let y=gt({config:e,rpcClient:m,lifecycleManager:s,configPromise:o,contextSent:f,openPanel:v}).then(()=>{}).catch(e=>{throw f.reject(e),e});return{config:e,waitForConnection:s.isConnected,waitForSetup:y,request:m.request,listenerRequest:m.listen,destroy:_,openPanel:v}}function ht(e,t){let n,r,i=()=>e.sendLifecycle({clientLifecycle:`heartbeat`});async function a(){i(),n=setInterval(i,250),r=setTimeout(()=>{o()},3e4),await t.isConnected,o()}function o(){n&&clearInterval(n),r&&clearTimeout(r)}return a(),o}async function gt({config:e,rpcClient:t,lifecycleManager:n,configPromise:r,contextSent:i,openPanel:a}){await n.isConnected,qe(t,n.isConnected);let o=new URL(window.location.href),s=o.searchParams.get(`fmt`)??void 0;s&&(o.searchParams.delete(`fmt`),window.history.replaceState({},``,o.toString()));let c=t=>{let n=t?.merchantId??e.metadata.merchantId??``,r=t?.domain??``,i=t?.allowedDomains??[],a=t?.sdkConfig,o=a?.attribution||e.attribution?{...e.attribution,...a?.attribution}:void 0;A.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,attribution:o}:{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,attribution:o})},l=!1,u=e=>{let n=l?void 0:s;l=!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,attribution:e.attribution}:e.attribution?{attribution:e.attribution}:void 0,i=g();if(a){let t=a.global??{};a.setGlobalProperties({...t,merchant_id:e.merchantId,domain:e.domain??``})}t.sendLifecycle({clientLifecycle:`resolved-config`,data:{merchantId:e.merchantId,domain:e.domain??``,allowedDomains:e.allowedDomains??[],sourceUrl:window.location.href,...i&&{sdkAnonymousId:i},...n&&{pendingMergeToken:n},...r&&{sdkConfig:r}}})};A.isResolved&&(u(A.getConfig()),i.resolve()),r&&(c(await r),u(A.getConfig()),i.resolve());async function d(){let n=e.customizations?.css;n&&t.sendLifecycle({clientLifecycle:`modal-css`,data:{cssLink:n}})}async function f(){let n=e.customizations?.i18n;n&&t.sendLifecycle({clientLifecycle:`modal-i18n`,data:{i18n:n}})}async function p(){if(typeof window>`u`)return;let e=window.localStorage.getItem(H);e&&t.sendLifecycle({clientLifecycle:`restore-backup`,data:{backup:e}})}(await Promise.allSettled([d(),f(),p()])).some(e=>e.status===`rejected`)&&a?.track(`sdk_iframe_handshake_failed`,{reason:`asset_push`})}function _t(e){return p(M(e))}async function vt({config:e}){let t=yt(e),n=await nt({config:t});if(!n)return;let r=mt({config:t,iframe:n});if(await r.waitForSetup,await r.waitForConnection)return r}function yt(e){let t=V(e.metadata?.currency);return{...e,metadata:{...e.metadata,currency:t}}}function bt({perCall:e,defaults:t,productUtmContent:n}){if(e===null)return;let r=e!==void 0,i=t!==void 0&&Object.keys(t).length>0;if(!r&&!i&&!(n!==void 0&&n!==``))return;let a={...t,...e??{}},o=n??e?.utmContent;return o!==void 0&&o!==``?a.utmContent=o:delete a.utmContent,a}var xt=t({DEEP_LINK_SCHEME:()=>U,FrakContextManager:()=>z,base64urlDecode:()=>M,base64urlEncode:()=>j,baseIframeProps:()=>q,clearAllCache:()=>x,compressJsonToB64:()=>pe,createIFrameFrakClient:()=>mt,decompressJsonFromB64:()=>_t,deleteQueryParamCaseInsensitive:()=>F,findIframeInOpener:()=>at,formatAmount:()=>Be,generateSsoUrl:()=>me,getBackendUrl:()=>S,getClientId:()=>g,getCurrencyAmountKey:()=>Ve,getQueryParamCaseInsensitive:()=>P,getSupportedCurrency:()=>V,isIOS:()=>G,isInAppBrowser:()=>K,isMobile:()=>$e,mergeAttribution:()=>bt,redirectToExternalBrowser:()=>tt,sdkConfigStore:()=>A,setupClient:()=>vt,ssoPopupFeatures:()=>ge,ssoPopupName:()=>_e,trackEvent:()=>N,triggerDeepLinkWithFallback:()=>W,withCache:()=>b});async function St(e,t,n){return await e.request({method:`frak_displayEmbeddedWallet`,params:n?[t,e.config.metadata,n]:[t,e.config.metadata]})}async function Y(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 Ct(e,t,n){return await e.request({method:`frak_displaySharingPage`,params:n?[t,e.config.metadata,n]:[t,e.config.metadata]})}async function wt(e){if(typeof window>`u`)return;let t=g();if(!t)return;let n=await A.resolveMerchantId();if(!n)return;let r=`frak-identity-ensured-${n}`;if(!window.sessionStorage.getItem(r))try{let i=S();(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 Tt(e,t){return b(()=>e.request({method:`frak_getMerchantInformation`}),{cacheKey:`frak_getMerchantInformation`,cacheTime:t?.cacheTime})}async function Et(e,t){return b(()=>e.request({method:`frak_getMergeToken`}),{cacheKey:`frak_getMergeToken`,cacheTime:t?.cacheTime})}async function Dt(e,t){return b(()=>e.request({method:`frak_getUserReferralStatus`}),{cacheKey:`frak_getUserReferralStatus`,cacheTime:t?.cacheTime})}async function Ot(e,t){let{metadata:n,customizations:r}=e.config;return await e.request({method:`frak_prepareSso`,params:[t,n.name,r?.css]})}async function X(e,t){try{await e.request({method:`frak_sendInteraction`,params:[t,{clientId:g()}]})}catch{}}function kt(e,t,n){return L(t)?(N(e,`user_referred_started`,{referrer_client_id:t.c,referrer_wallet:t.w,wallet_status:n?.key}),X(e,{type:`arrival`,referrerClientId:t.c,referrerMerchantId:t.m,referrerWallet:t.w,referralTimestamp:t.t}),!0):we(t)?(N(e,`user_referred_started`,{referrer:t.r,wallet_status:n?.key}),X(e,{type:`arrival`,referrerWallet:t.r}),!0):!1}function At(e,t){let n=g();return!n&&!t?null:{v:2,m:e,t:Math.floor(Date.now()/1e3),...n?{c:n}:{},...t?{w:t}:{}}}function jt(e,t){return L(e)?e.w&&t?.wallet?be(e.w,t.wallet):e.c?g()===e.c:!1:we(e)&&t?.wallet?be(e.r,t.wallet):!1}function Mt(e,{walletStatus:t,frakContext:n,options:r}){if(!n)return`no-referrer`;if(jt(n,t))return`self-referral`;if(!kt(e,n,t))return`no-referrer`;let i=L(n)?n.m:r?.merchantId,a=r?.alwaysAppendUrl&&i?At(i,t?.wallet):null;return z.replaceUrl({url:window.location?.href,context:a}),N(e,`user_referred_completed`,{status:`success`}),`success`}async function Z(e,{options:t}={}){let n=z.parse({url:window.location.href}),r=await Ft(e);try{return Mt(e,{walletStatus:r,frakContext:n,options:t})}catch{}}const Q=`frak:referral-success`;async function Nt(e){try{await Z(e)===`success`&&window.dispatchEvent(new Event(Q))}catch{}}async function Pt(e){if(typeof window>`u`)return;let t=window.sessionStorage.getItem(`frak-wallet-interaction-token`),n=g();if(!t&&!n)return;let r=e.merchantId??await A.resolveMerchantId();if(!r)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=S();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 Ft(e,t){if(!t)return e.request({method:`frak_listenToWalletStatus`}).then(t=>(It(e,t),t));let n=new u,r=!1;return e.listenerRequest({method:`frak_listenToWalletStatus`},i=>{It(e,i),t(i),r||=(n.resolve(i),!0)}),n.promise}function It(e,t){typeof window>`u`||(e.openPanel?.setGlobalProperties({wallet:t.wallet??null}),t.interactionToken?(window.sessionStorage.setItem(`frak-wallet-interaction-token`,t.interactionToken),wt(t.interactionToken)):window.sessionStorage.removeItem(`frak-wallet-interaction-token`))}function Lt(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 Y(e,t,r)}return{params:t,sendTx:n,reward:r,sharing:i,display:a}}async function Rt(e,{tx:t,metadata:n}){return(await Y(e,{metadata:n,steps:{login:{},sendTransaction:{tx:t}}})).sendTransaction}function zt(e=96){let t=Math.ceil(e/2),n=``;if(typeof crypto<`u`&&crypto.getRandomValues){let e=new Uint8Array(t);crypto.getRandomValues(e);for(let t=0;t<e.length;t++)n+=e[t].toString(16).padStart(2,`0`)}else for(let e=0;e<t;e++)n+=(Math.random()*256|0).toString(16).padStart(2,`0`);return n.substring(0,e)}async function Bt(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 Y(e,{metadata:n,steps:{login:{},siweAuthenticate:{siwe:{...t,statement:i,nonce:t?.nonce??zt(),uri:t?.uri??`https://${r}`,version:t?.version??`1`,domain:r}}}})).siweAuthenticate}var Vt=t({REFERRAL_SUCCESS_EVENT:()=>Q,displayEmbeddedWallet:()=>St,displayModal:()=>Y,displaySharingPage:()=>Ct,ensureIdentity:()=>wt,getMerchantInformation:()=>Tt,getMergeToken:()=>Et,getUserReferralStatus:()=>Dt,modalBuilder:()=>Lt,openSso:()=>ve,prepareSso:()=>Ot,processReferral:()=>Mt,referralInteraction:()=>Z,sendInteraction:()=>X,sendTransaction:()=>Rt,setupReferral:()=>Nt,siweAuthenticate:()=>Bt,trackPurchaseStatus:()=>Pt,watchWalletStatus:()=>Ft});async function Ht(e,t,n){window.FrakSetup?.client&&await Ct(window.FrakSetup.client,{...n?.link&&{link:n.link},...n?.products?.length&&{products:n.products},...e&&{metadata:{targetInteraction:e}}},t)}const Ut=[`frak-button-share`,`frak-button-wallet`,`frak-open-in-app`,`frak-post-purchase`,`frak-banner`].join(`,`);function Wt(){return typeof document>`u`||document.querySelector(Ut)===null?[]:[`sharing`]}function Gt(e){try{let t=new URL(e);return t.protocol===`http:`||t.protocol===`https:`}catch{return!1}}function Kt(e){if(!e)return null;if(Array.isArray(e))return e;if(typeof e!=`string`)return null;try{let t=JSON.parse(e);return Array.isArray(t)?t:null}catch{return null}}function qt(e){if(!e||typeof e!=`object`)return null;let t=e,n=typeof t.title==`string`?t.title.trim():``;if(n===``)return null;let r={title:n};return typeof t.imageUrl==`string`&&Gt(t.imageUrl)&&(r.imageUrl=t.imageUrl),typeof t.link==`string`&&Gt(t.link)&&(r.link=t.link),typeof t.utmContent==`string`&&t.utmContent!==``&&(r.utmContent=t.utmContent),r}function Jt(e){let t=Kt(e);if(!t)return;let n=[];for(let e of t){let t=qt(e);t&&n.push(t)}return n.length>0?n:void 0}function Yt(e){if(!e)return;let t;try{t=_t(e)}catch{return}if(t!==null)return Jt(t)}const Xt=`frak:client`;function Zt(){let e=new CustomEvent(Xt);window.dispatchEvent(e)}function Qt(e,t){if(window.FrakSetup?.client&&e===`add`){t();return}(e===`add`?window.addEventListener:window.removeEventListener)(Xt,t,!1)}function $t(){return window.FrakSetup.core={...xt,...Vt},window.FrakSetup?.client?Promise.resolve():b(()=>en(),{cacheKey:`frak-sdk-init`,cacheTime:1/0}).catch(e=>{N(window.FrakSetup?.client,`sdk_init_failed`,{reason:e instanceof Error?e.message:typeof e==`string`?e:`unknown`,config_missing:!window.FrakSetup?.config})})}async function en(){if(!window.FrakSetup?.config)throw Error(`[Frak SDK] Configuration not found. Please ensure window.FrakSetup.config is set.`);let e=await vt({config:tn(window.FrakSetup.config)});if(!e)throw Error(`[Frak SDK] Failed to create client`);window.FrakSetup.client=e,Zt(),Nt(e),nn()}function tn(e){return e.preload===void 0?{...e,preload:Wt()}:e}function nn(){let e=new URL(window.location.href);if(P(e.searchParams,`frakAction`)?.toLowerCase()!==`share`)return;let t=P(e.searchParams,`link`)??void 0,n=P(e.searchParams,`placement`)??void 0,r=Yt(P(e.searchParams,`products`));F(e.searchParams,`frakAction`),F(e.searchParams,`link`),F(e.searchParams,`placement`),F(e.searchParams,`products`),window.history.replaceState({},``,e.toString()),Ht(void 0,n,{link:t,products:r})}o.injectBase(`shared`,n),o.injectBase(`fouce`,`frak-button-share:not(:defined), frak-button-wallet:not(:defined), frak-open-in-app:not(:defined), frak-post-purchase:not(:defined), frak-banner:not(:defined) { display: none !important; }`),s($t);const rn={"button-share":()=>import(`./ButtonShare.BiOpzkRY.js`),"button-wallet":()=>import(`./ButtonWallet.Mmrku6ws.js`),"open-in-app":()=>import(`./OpenInAppButton.D1UzTuHx.js`),"post-purchase":()=>import(`./PostPurchase.Cvx1TI64.js`),banner:()=>import(`./Banner.CgCiMrqn.js`)},an=new MutationObserver(e=>{for(let{addedNodes:t}of e)for(let e of Array.from(t))e.nodeType===Node.ELEMENT_NODE&&on(e)});async function on(e){let t=e instanceof Element?e.tagName.toLowerCase():``,n=t?.startsWith(`frak-`),r=Array.from(e.querySelectorAll(`:not(:defined)`)).map(e=>e.tagName.toLowerCase()).filter(e=>e.startsWith(`frak-`));n&&!customElements.get(t)&&r.push(t);let i=[...new Set(r)];await Promise.allSettled(i.map(e=>sn(e)))}async function sn(e){if(customElements.get(e))return Promise.resolve();try{let t=e.replace(/^frak-/i,``);if(!(t in rn))throw Error(`Component ${e} is not supported.`);await rn[t]()}catch{}}on(document.body),an.observe(document.documentElement,{subtree:!0,childList:!0});export{s as C,l as S,n as T,Be as _,Pt as a,N as b,Tt as c,$e as d,tt as f,Ve as g,K as h,Ht as i,St as l,W as m,Qt as n,Dt as o,U as p,Jt as r,Et as s,$t as t,Q as u,V as v,o as w,c as x,A as y};
154
+ }`;function r(e,t){let n=document.getElementById(e);if(n){n.textContent!==t&&(n.textContent=t);return}let r=document.createElement(`style`);r.id=e,r.textContent=t,document.head.appendChild(r)}function i(e,t){let n=`frak-base-${e}`;if(document.getElementById(n)||!t)return;let r=document.createElement(`style`);r.id=n,r.textContent=t,document.head.appendChild(r)}function a(e,t,n){r(`frak-placement-${e}-${t}`,n)}const o={injectBase:i,injectPlacement:a};function s(e){document.readyState===`complete`||document.readyState===`interactive`?setTimeout(e,1):document.addEventListener(`DOMContentLoaded`,e)}const c=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i,l=new TextEncoder;function u(e,t){if(!c.test(e))throw Error(`${t} must be a UUID string, got: ${e}`);return h(e.replace(/-/g,``))}function d(e,t,n){if(!Number.isInteger(n)||n<0)throw Error(`ts must be a non-negative integer: ${n}`);let r=BigInt(n);for(let n=7;n>=0;n--)e[t+n]=Number(r&255n),r>>=8n}function f(e){if(e.binding.length!==0&&e.binding.length!==32)throw Error(`binding must be empty or 32 bytes, got ${e.binding.length}`);let t=l.encode(e.op),n=new Uint8Array(t.length+32+32+8),r=0;return n.set(t,r),r+=t.length,n.set(u(e.merchantId,`merchantId`),r),r+=16,n.set(u(e.anonymousId,`anonymousId`),r),r+=16,n.set(e.binding,r),r+=32,d(n,r,e.ts),n}function p(e){if(e.length<16)throw Error(`deriveClientIdFromHash requires at least 16 bytes, got ${e.length}`);let t=e.slice(0,16);t[6]=t[6]&15|64,t[8]=t[8]&63|128;let n=m(t);return[n.slice(0,8),n.slice(8,12),n.slice(12,16),n.slice(16,20),n.slice(20,32)].join(`-`)}function m(e){return Array.from(e,e=>e.toString(16).padStart(2,`0`)).join(``)}function h(e){return Uint8Array.from(e.match(/../g)??[],e=>Number.parseInt(e,16))}function g(e){let t=``;for(let n of e)t+=String.fromCharCode(n);return btoa(t).replace(/\+/g,`-`).replace(/\//g,`_`).replace(/=+$/,``)}function _(e){if(e.pk.length!==65)throw Error(`pk must be 65 bytes, got ${e.pk.length}`);if(e.sig.length!==64)throw Error(`sig must be 64 bytes, got ${e.sig.length}`);let t=new Uint8Array(138);return t[0]=e.v,t.set(e.pk,1),d(t,66,e.ts),t.set(e.sig,74),g(t)}function v(e){return e instanceof Uint8Array||ArrayBuffer.isView(e)&&e.constructor.name===`Uint8Array`&&`BYTES_PER_ELEMENT`in e&&e.BYTES_PER_ELEMENT===1}function y(e,t=``){if(typeof e!=`number`){let n=t&&`"${t}" `;throw TypeError(`${n}expected number, got ${typeof e}`)}if(!Number.isSafeInteger(e)||e<0){let n=t&&`"${t}" `;throw RangeError(`${n}expected integer >= 0, got ${e}`)}}function b(e,t,n=``){let r=v(e),i=e?.length,a=t!==void 0;if(!r||a&&i!==t){let o=n&&`"${n}" `,s=a?` of length ${t}`:``,c=r?`length=${i}`:`type=${typeof e}`,l=o+`expected Uint8Array`+s+`, got `+c;throw r?RangeError(l):TypeError(l)}return e}function ee(e){if(typeof e!=`function`||typeof e.create!=`function`)throw TypeError(`Hash must wrapped by utils.createHasher`);if(y(e.outputLen),y(e.blockLen),e.outputLen<1)throw Error(`"outputLen" must be >= 1`);if(e.blockLen<1)throw Error(`"blockLen" must be >= 1`)}function x(e,t=!0){if(e.destroyed)throw Error(`Hash instance has been destroyed`);if(t&&e.finished)throw Error(`Hash#digest() has already been called`)}function S(e,t){b(e,void 0,`digestInto() output`);let n=t.outputLen;if(e.length<n)throw RangeError(`"digestInto() output" expected to be of length >=`+n)}function C(...e){for(let t=0;t<e.length;t++)e[t].fill(0)}function w(e){return new DataView(e.buffer,e.byteOffset,e.byteLength)}function T(e,t){return e<<32-t|e>>>t}const E=typeof Uint8Array.from([]).toHex==`function`&&typeof Uint8Array.fromHex==`function`,te=Array.from({length:256},(e,t)=>t.toString(16).padStart(2,`0`));function ne(e){if(b(e),E)return e.toHex();let t=``;for(let n=0;n<e.length;n++)t+=te[e[n]];return t}const D={_0:48,_9:57,A:65,F:70,a:97,f:102};function re(e){if(e>=D._0&&e<=D._9)return e-D._0;if(e>=D.A&&e<=D.F)return e-(D.A-10);if(e>=D.a&&e<=D.f)return e-(D.a-10)}function ie(e){if(typeof e!=`string`)throw TypeError(`hex string expected, got `+typeof e);if(E)try{return Uint8Array.fromHex(e)}catch(e){throw e instanceof SyntaxError?RangeError(e.message):e}let t=e.length,n=t/2;if(t%2)throw RangeError(`hex string expected, got unpadded hex of length `+t);let r=new Uint8Array(n);for(let t=0,i=0;t<n;t++,i+=2){let n=re(e.charCodeAt(i)),a=re(e.charCodeAt(i+1));if(n===void 0||a===void 0){let t=e[i]+e[i+1];throw RangeError(`hex string expected, got non-hex character "`+t+`" at index `+i)}r[t]=n*16+a}return r}function ae(...e){let t=0;for(let n=0;n<e.length;n++){let r=e[n];b(r),t+=r.length}let n=new Uint8Array(t);for(let t=0,r=0;t<e.length;t++){let i=e[t];n.set(i,r),r+=i.length}return n}function oe(e,t={}){let n=(t,n)=>e(n).update(t).digest(),r=e(void 0);return n.outputLen=r.outputLen,n.blockLen=r.blockLen,n.canXOF=r.canXOF,n.create=t=>e(t),Object.assign(n,t),Object.freeze(n)}function se(e=32){y(e,`bytesLength`);let t=typeof globalThis==`object`?globalThis.crypto:null;if(typeof t?.getRandomValues!=`function`)throw Error(`crypto.getRandomValues must be defined`);if(e>65536)throw RangeError(`"bytesLength" expected <= 65536, got ${e}`);return t.getRandomValues(new Uint8Array(e))}const ce=e=>({oid:Uint8Array.from([6,9,96,134,72,1,101,3,4,2,e])});function le(e,t,n){return e&t^~e&n}function ue(e,t,n){return e&t^e&n^t&n}var de=class{blockLen;outputLen;canXOF=!1;padOffset;isLE;buffer;view;finished=!1;length=0;pos=0;destroyed=!1;constructor(e,t,n,r){this.blockLen=e,this.outputLen=t,this.padOffset=n,this.isLE=r,this.buffer=new Uint8Array(e),this.view=w(this.buffer)}update(e){x(this),b(e);let{view:t,buffer:n,blockLen:r}=this,i=e.length;for(let a=0;a<i;){let o=Math.min(r-this.pos,i-a);if(o===r){let t=w(e);for(;r<=i-a;a+=r)this.process(t,a);continue}n.set(e.subarray(a,a+o),this.pos),this.pos+=o,a+=o,this.pos===r&&(this.process(t,0),this.pos=0)}return this.length+=e.length,this.roundClean(),this}digestInto(e){x(this),S(e,this),this.finished=!0;let{buffer:t,view:n,blockLen:r,isLE:i}=this,{pos:a}=this;t[a++]=128,C(this.buffer.subarray(a)),this.padOffset>r-a&&(this.process(n,0),a=0);for(let e=a;e<r;e++)t[e]=0;n.setBigUint64(r-8,BigInt(this.length*8),i),this.process(n,0);let o=w(e),s=this.outputLen;if(s%4)throw Error(`_sha2: outputLen must be aligned to 32bit`);let c=s/4,l=this.get();if(c>l.length)throw Error(`_sha2: outputLen bigger than state`);for(let e=0;e<c;e++)o.setUint32(4*e,l[e],i)}digest(){let{buffer:e,outputLen:t}=this;this.digestInto(e);let n=e.slice(0,t);return this.destroy(),n}_cloneInto(e){e||=new this.constructor,e.set(...this.get());let{blockLen:t,buffer:n,length:r,finished:i,destroyed:a,pos:o}=this;return e.destroyed=a,e.finished=i,e.length=r,e.pos=o,r%t&&e.buffer.set(n),e}clone(){return this._cloneInto()}};const O=Uint32Array.from([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),fe=Uint32Array.from([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]),k=new Uint32Array(64);var pe=class extends de{constructor(e){super(64,e,8,!1)}get(){let{A:e,B:t,C:n,D:r,E:i,F:a,G:o,H:s}=this;return[e,t,n,r,i,a,o,s]}set(e,t,n,r,i,a,o,s){this.A=e|0,this.B=t|0,this.C=n|0,this.D=r|0,this.E=i|0,this.F=a|0,this.G=o|0,this.H=s|0}process(e,t){for(let n=0;n<16;n++,t+=4)k[n]=e.getUint32(t,!1);for(let e=16;e<64;e++){let t=k[e-15],n=k[e-2],r=T(t,7)^T(t,18)^t>>>3,i=T(n,17)^T(n,19)^n>>>10;k[e]=i+k[e-7]+r+k[e-16]|0}let{A:n,B:r,C:i,D:a,E:o,F:s,G:c,H:l}=this;for(let e=0;e<64;e++){let t=T(o,6)^T(o,11)^T(o,25),u=l+t+le(o,s,c)+fe[e]+k[e]|0,d=(T(n,2)^T(n,13)^T(n,22))+ue(n,r,i)|0;l=c,c=s,s=o,o=a+u|0,a=i,i=r,r=n,n=u+d|0}n=n+this.A|0,r=r+this.B|0,i=i+this.C|0,a=a+this.D|0,o=o+this.E|0,s=s+this.F|0,c=c+this.G|0,l=l+this.H|0,this.set(n,r,i,a,o,s,c,l)}roundClean(){C(k)}destroy(){this.destroyed=!0,this.set(0,0,0,0,0,0,0,0),C(this.buffer)}},me=class extends pe{A=O[0]|0;B=O[1]|0;C=O[2]|0;D=O[3]|0;E=O[4]|0;F=O[5]|0;G=O[6]|0;H=O[7]|0;constructor(){super(32)}};const he=oe(()=>new me,ce(1)),A=(e,t,n)=>b(e,t,n),ge=y,_e=ne,j=(...e)=>ae(...e),ve=e=>ie(e),ye=v,be=e=>se(e),xe=BigInt(0),Se=BigInt(1)
155
+ /*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */
156
+ ;function M(e,t=``){if(typeof e!=`boolean`){let n=t&&`"${t}" `;throw TypeError(n+`expected boolean, got type=`+typeof e)}return e}function Ce(e){if(typeof e==`bigint`){if(!Me(e))throw RangeError(`positive bigint expected, got `+e)}else ge(e);return e}function we(e,t=``){if(typeof e!=`number`){let n=t&&`"${t}" `;throw TypeError(n+`expected number, got type=`+typeof e)}if(!Number.isSafeInteger(e)){let n=t&&`"${t}" `;throw RangeError(n+`expected safe integer, got `+e)}}function Te(e){let t=Ce(e).toString(16);return t.length&1?`0`+t:t}function Ee(e){if(typeof e!=`string`)throw TypeError(`hex string expected, got `+typeof e);return e===``?xe:BigInt(`0x`+e)}function De(e){return Ee(ne(e))}function Oe(e){return Ee(ne(je(b(e)).reverse()))}function ke(e,t){if(y(t),t===0)throw RangeError(`zero length`);e=Ce(e);let n=e.toString(16);if(n.length>t*2)throw RangeError(`number too large`);return ie(n.padStart(t*2,`0`))}function Ae(e,t){return ke(e,t).reverse()}function je(e){return Uint8Array.from(A(e))}const Me=e=>typeof e==`bigint`&&xe<=e;function Ne(e,t,n){return Me(e)&&Me(t)&&Me(n)&&t<=e&&e<n}function Pe(e,t,n,r){if(!Ne(t,n,r))throw RangeError(`expected valid `+e+`: `+n+` <= n < `+r+`, got `+t)}function Fe(e){if(e<xe)throw Error(`expected non-negative bigint, got `+e);let t;for(t=0;e>xe;e>>=Se,t+=1);return t}const Ie=e=>(Se<<BigInt(e))-Se;function Le(e,t,n){if(y(e,`hashLen`),y(t,`qByteLen`),typeof n!=`function`)throw TypeError(`hmacFn must be a function`);let r=e=>new Uint8Array(e),i=Uint8Array.of(),a=Uint8Array.of(0),o=Uint8Array.of(1),s=r(e),c=r(e),l=0,u=()=>{s.fill(1),c.fill(0),l=0},d=(...e)=>n(c,j(s,...e)),f=(e=i)=>{c=d(a,e),s=d(),e.length!==0&&(c=d(o,e),s=d())},p=()=>{if(l++>=1e3)throw Error(`drbg: tried max amount of iterations`);let e=0,n=[];for(;e<t;){s=d();let t=s.slice();n.push(t),e+=s.length}return j(...n)};return(e,t)=>{u(),f(e);let n;for(;(n=t(p()))===void 0;)f();return u(),n}}function Re(e,t={},n={}){if(Object.prototype.toString.call(e)!==`[object Object]`)throw TypeError(`expected valid options object`);function r(t,n,r){if(!r&&n!==`function`&&!Object.hasOwn(e,t))throw TypeError(`param "${t}" is invalid: expected own property`);let i=e[t];if(r&&i===void 0)return;let a=typeof i;if(a!==n||i===null)throw TypeError(`param "${t}" is invalid: expected ${n}, got ${a}`)}let i=(e,t)=>Object.entries(e).forEach(([e,n])=>r(e,n,t));i(t,!1),i(n,!0)}
157
+ /*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */
158
+ const N=BigInt(0),P=BigInt(1),F=BigInt(2),ze=BigInt(3),Be=BigInt(4),Ve=BigInt(5),He=BigInt(7),Ue=BigInt(8),We=BigInt(9),Ge=BigInt(16);function I(e,t){if(t<=N)throw Error(`mod: expected positive modulus, got `+t);let n=e%t;return n>=N?n:t+n}function Ke(e,t){if(e===N)throw Error(`invert: expected non-zero number`);if(t<=N)throw Error(`invert: expected positive modulus, got `+t);let n=I(e,t),r=t,i=N,a=P,o=P,s=N;for(;n!==N;){let e=r/n,t=r-n*e,c=i-o*e,l=a-s*e;r=n,n=t,i=o,a=s,o=c,s=l}if(r!==P)throw Error(`invert: does not exist`);return I(i,t)}function qe(e,t,n){let r=e;if(!r.eql(r.sqr(t),n))throw Error(`Cannot find square root`)}function Je(e,t){let n=e,r=(n.ORDER+P)/Be,i=n.pow(t,r);return qe(n,i,t),i}function Ye(e,t){let n=e,r=(n.ORDER-Ve)/Ue,i=n.mul(t,F),a=n.pow(i,r),o=n.mul(t,a),s=n.mul(n.mul(o,F),a),c=n.mul(o,n.sub(s,n.ONE));return qe(n,c,t),c}function Xe(e){let t=st(e),n=Ze(e),r=n(t,t.neg(t.ONE)),i=n(t,r),a=n(t,t.neg(r)),o=(e+He)/Ge;return((e,t)=>{let n=e,s=n.pow(t,o),c=n.mul(s,r),l=n.mul(s,i),u=n.mul(s,a),d=n.eql(n.sqr(c),t),f=n.eql(n.sqr(l),t);s=n.cmov(s,c,d),c=n.cmov(u,l,f);let p=n.eql(n.sqr(c),t),m=n.cmov(s,c,p);return qe(n,m,t),m})}function Ze(e){if(e<ze)throw Error(`sqrt is not defined for small field`);let t=e-P,n=0;for(;t%F===N;)t/=F,n++;let r=F,i=st(e);for(;rt(i,r)===1;)if(r++>1e3)throw Error(`Cannot find square root: probably non-prime P`);if(n===1)return Je;let a=i.pow(r,t),o=(t+P)/F;return function(e,r){let i=e;if(i.is0(r))return r;if(rt(i,r)!==1)throw Error(`Cannot find square root`);let s=n,c=i.mul(i.ONE,a),l=i.pow(r,t),u=i.pow(r,o);for(;!i.eql(l,i.ONE);){if(i.is0(l))return i.ZERO;let e=1,t=i.sqr(l);for(;!i.eql(t,i.ONE);)if(e++,t=i.sqr(t),e===s)throw Error(`Cannot find square root`);let n=P<<BigInt(s-e-1),r=i.pow(c,n);s=e,c=i.sqr(r),l=i.mul(l,c),u=i.mul(u,r)}return u}}function Qe(e){return e%Be===ze?Je:e%Ue===Ve?Ye:e%Ge===We?Xe(e):Ze(e)}const $e=[`create`,`isValid`,`is0`,`neg`,`inv`,`sqrt`,`sqr`,`eql`,`add`,`sub`,`mul`,`pow`,`div`,`addN`,`subN`,`mulN`,`sqrN`];function et(e){if(Re(e,$e.reduce((e,t)=>(e[t]=`function`,e),{ORDER:`bigint`,BYTES:`number`,BITS:`number`})),we(e.BYTES,`BYTES`),we(e.BITS,`BITS`),e.BYTES<1||e.BITS<1)throw Error(`invalid field: expected BYTES/BITS > 0`);if(e.ORDER<=P)throw Error(`invalid field: expected ORDER > 1, got `+e.ORDER);return e}function tt(e,t,n){let r=e;if(n<N)throw Error(`invalid exponent, negatives unsupported`);if(n===N)return r.ONE;if(n===P)return t;let i=r.ONE,a=t;for(;n>N;)n&P&&(i=r.mul(i,a)),a=r.sqr(a),n>>=P;return i}function nt(e,t,n=!1){let r=e,i=Array(t.length).fill(n?r.ZERO:void 0),a=t.reduce((e,t,n)=>r.is0(t)?e:(i[n]=e,r.mul(e,t)),r.ONE),o=r.inv(a);return t.reduceRight((e,t,n)=>r.is0(t)?e:(i[n]=r.mul(e,i[n]),r.mul(e,t)),o),i}function rt(e,t){let n=e,r=(n.ORDER-P)/F,i=n.pow(t,r),a=n.eql(i,n.ONE),o=n.eql(i,n.ZERO),s=n.eql(i,n.neg(n.ONE));if(!a&&!o&&!s)throw Error(`invalid Legendre symbol result`);return a?1:o?0:-1}function it(e,t){if(t!==void 0&&ge(t),e<=N)throw Error(`invalid n length: expected positive n, got `+e);if(t!==void 0&&t<1)throw Error(`invalid n length: expected positive bit length, got `+t);let n=Fe(e);if(t!==void 0&&t<n)throw Error(`invalid n length: expected bit length (${n}) >= n.length (${t})`);let r=t===void 0?n:t;return{nBitLength:r,nByteLength:Math.ceil(r/8)}}const at=new WeakMap;var ot=class{ORDER;BITS;BYTES;isLE;ZERO=N;ONE=P;_lengths;_mod;constructor(e,t={}){if(e<=P)throw Error(`invalid field: expected ORDER > 1, got `+e);let n;this.isLE=!1,typeof t==`object`&&t&&(typeof t.BITS==`number`&&(n=t.BITS),typeof t.sqrt==`function`&&Object.defineProperty(this,"sqrt",{value:t.sqrt,enumerable:!0}),typeof t.isLE==`boolean`&&(this.isLE=t.isLE),t.allowedLengths&&(this._lengths=Object.freeze(t.allowedLengths.slice())),typeof t.modFromBytes==`boolean`&&(this._mod=t.modFromBytes));let{nBitLength:r,nByteLength:i}=it(e,n);if(i>2048)throw Error(`invalid field: expected ORDER of <= 2048 bytes`);this.ORDER=e,this.BITS=r,this.BYTES=i,Object.freeze(this)}create(e){return I(e,this.ORDER)}isValid(e){if(typeof e!=`bigint`)throw TypeError(`invalid field element: expected bigint, got `+typeof e);return N<=e&&e<this.ORDER}is0(e){return e===N}isValidNot0(e){return!this.is0(e)&&this.isValid(e)}isOdd(e){return(e&P)===P}neg(e){return I(-e,this.ORDER)}eql(e,t){return e===t}sqr(e){return I(e*e,this.ORDER)}add(e,t){return I(e+t,this.ORDER)}sub(e,t){return I(e-t,this.ORDER)}mul(e,t){return I(e*t,this.ORDER)}pow(e,t){return tt(this,e,t)}div(e,t){return I(e*Ke(t,this.ORDER),this.ORDER)}sqrN(e){return e*e}addN(e,t){return e+t}subN(e,t){return e-t}mulN(e,t){return e*t}inv(e){return Ke(e,this.ORDER)}sqrt(e){let t=at.get(this);return t||at.set(this,t=Qe(this.ORDER)),t(this,e)}toBytes(e){return this.isLE?Ae(e,this.BYTES):ke(e,this.BYTES)}fromBytes(e,t=!1){A(e);let{_lengths:n,BYTES:r,isLE:i,ORDER:a,_mod:o}=this;if(n){if(e.length<1||!n.includes(e.length)||e.length>r)throw Error(`Field.fromBytes: expected `+n+` bytes, got `+e.length);let t=new Uint8Array(r);t.set(e,i?0:t.length-e.length),e=t}if(e.length!==r)throw Error(`Field.fromBytes: expected `+r+` bytes, got `+e.length);let s=i?Oe(e):De(e);if(o&&(s=I(s,a)),!t&&!this.isValid(s))throw Error(`invalid field element: outside of range 0..ORDER`);return s}invertBatch(e){return nt(this,e)}cmov(e,t,n){return M(n,`condition`),n?t:e}};Object.freeze(ot.prototype);function st(e,t={}){return new ot(e,t)}function ct(e){if(typeof e!=`bigint`)throw Error(`field order must be bigint`);if(e<=P)throw Error(`field order must be greater than 1`);let t=Fe(e-P);return Math.ceil(t/8)}function lt(e){let t=ct(e);return t+Math.ceil(t/2)}function ut(e,t,n=!1){A(e);let r=e.length,i=ct(t),a=Math.max(lt(t),16);if(r<a||r>1024)throw Error(`expected `+a+`-1024 bytes of input, got `+r);let o=I(n?Oe(e):De(e),t-P)+P;return n?Ae(o,i):ke(o,i)}
159
+ /*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */
160
+ const L=BigInt(0),R=BigInt(1);function dt(e,t){let n=t.negate();return e?n:t}function ft(e,t){let n=nt(e.Fp,t.map(e=>e.Z));return t.map((t,r)=>e.fromAffine(t.toAffine(n[r])))}function pt(e,t){if(!Number.isSafeInteger(e)||e<=0||e>t)throw Error(`invalid window size, expected [1..`+t+`], got W=`+e)}function mt(e,t){pt(e,t);let n=Math.ceil(t/e)+1,r=2**(e-1),i=2**e;return{windows:n,windowSize:r,mask:Ie(e),maxNumber:i,shiftBy:BigInt(e)}}function ht(e,t,n){let{windowSize:r,mask:i,maxNumber:a,shiftBy:o}=n,s=Number(e&i),c=e>>o;s>r&&(s-=a,c+=R);let l=t*r,u=l+Math.abs(s)-1,d=s===0,f=s<0,p=t%2!=0;return{nextN:c,offset:u,isZero:d,isNeg:f,isNegF:p,offsetF:l}}const gt=new WeakMap,_t=new WeakMap;function vt(e){return _t.get(e)||1}function yt(e){if(e!==L)throw Error(`invalid wNAF`)}var bt=class{BASE;ZERO;Fn;bits;constructor(e,t){this.BASE=e.BASE,this.ZERO=e.ZERO,this.Fn=e.Fn,this.bits=t}_unsafeLadder(e,t,n=this.ZERO){let r=e;for(;t>L;)t&R&&(n=n.add(r)),r=r.double(),t>>=R;return n}precomputeWindow(e,t){let{windows:n,windowSize:r}=mt(t,this.bits),i=[],a=e,o=a;for(let e=0;e<n;e++){o=a,i.push(o);for(let e=1;e<r;e++)o=o.add(a),i.push(o);a=o.double()}return i}wNAF(e,t,n){if(!this.Fn.isValid(n))throw Error(`invalid scalar`);let r=this.ZERO,i=this.BASE,a=mt(e,this.bits);for(let e=0;e<a.windows;e++){let{nextN:o,offset:s,isZero:c,isNeg:l,isNegF:u,offsetF:d}=ht(n,e,a);n=o,c?i=i.add(dt(u,t[d])):r=r.add(dt(l,t[s]))}return yt(n),{p:r,f:i}}wNAFUnsafe(e,t,n,r=this.ZERO){let i=mt(e,this.bits);for(let e=0;e<i.windows&&n!==L;e++){let{nextN:a,offset:o,isZero:s,isNeg:c}=ht(n,e,i);if(n=a,!s){let e=t[o];r=r.add(c?e.negate():e)}}return yt(n),r}getPrecomputes(e,t,n){let r=gt.get(t);return r||(r=this.precomputeWindow(t,e),e!==1&&(typeof n==`function`&&(r=n(r)),gt.set(t,r))),r}cached(e,t,n){let r=vt(e);return this.wNAF(r,this.getPrecomputes(r,e,n),t)}unsafe(e,t,n,r){let i=vt(e);return i===1?this._unsafeLadder(e,t,r):this.wNAFUnsafe(i,this.getPrecomputes(i,e,n),t,r)}createCache(e,t){pt(t,this.bits),_t.set(e,t),gt.delete(e)}hasCache(e){return vt(e)!==1}};function xt(e,t,n,r){let i=t,a=e.ZERO,o=e.ZERO;for(;n>L||r>L;)n&R&&(a=a.add(i)),r&R&&(o=o.add(i)),i=i.double(),n>>=R,r>>=R;return{p1:a,p2:o}}function St(e,t,n){if(t){if(t.ORDER!==e)throw Error(`Field.ORDER must match order: Fp == p, Fn == n`);return et(t),t}else return st(e,{isLE:n})}function Ct(e,t,n={},r){if(r===void 0&&(r=e===`edwards`),!t||typeof t!=`object`)throw Error(`expected valid ${e} CURVE object`);for(let e of[`p`,`n`,`h`]){let n=t[e];if(!(typeof n==`bigint`&&n>L))throw Error(`CURVE.${e} must be positive bigint`)}let i=St(t.p,n.Fp,r),a=St(t.n,n.Fn,r),o=[`Gx`,`Gy`,`a`,e===`weierstrass`?`b`:`d`];for(let e of o)if(!i.isValid(t[e]))throw Error(`CURVE.${e} must be valid field element of CURVE.Fp`);return t=Object.freeze(Object.assign({},t)),{CURVE:t,Fp:i,Fn:a}}function wt(e,t){return function(n){let r=e(n);return{secretKey:r,publicKey:t(r)}}}var Tt=class{oHash;iHash;blockLen;outputLen;canXOF=!1;finished=!1;destroyed=!1;constructor(e,t){if(ee(e),b(t,void 0,`key`),this.iHash=e.create(),typeof this.iHash.update!=`function`)throw Error(`Expected instance of class which extends utils.Hash`);this.blockLen=this.iHash.blockLen,this.outputLen=this.iHash.outputLen;let n=this.blockLen,r=new Uint8Array(n);r.set(t.length>n?e.create().update(t).digest():t);for(let e=0;e<r.length;e++)r[e]^=54;this.iHash.update(r),this.oHash=e.create();for(let e=0;e<r.length;e++)r[e]^=106;this.oHash.update(r),C(r)}update(e){return x(this),this.iHash.update(e),this}digestInto(e){x(this),S(e,this),this.finished=!0;let t=e.subarray(0,this.outputLen);this.iHash.digestInto(t),this.oHash.update(t),this.oHash.digestInto(t),this.destroy()}digest(){let e=new Uint8Array(this.oHash.outputLen);return this.digestInto(e),e}_cloneInto(e){e||=Object.create(Object.getPrototypeOf(this),{});let{oHash:t,iHash:n,finished:r,destroyed:i,blockLen:a,outputLen:o}=this;return e=e,e.finished=r,e.destroyed=i,e.blockLen=a,e.outputLen=o,e.oHash=t._cloneInto(e.oHash),e.iHash=n._cloneInto(e.iHash),e}clone(){return this._cloneInto()}destroy(){this.destroyed=!0,this.oHash.destroy(),this.iHash.destroy()}};const Et=(()=>{let e=((e,t,n)=>new Tt(e,t).update(n).digest());return e.create=(e,t)=>new Tt(e,t),e})(),Dt=(e,t)=>(e+(e>=0?t:-t)/jt)/t
161
+ /*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */
162
+ ;function Ot(e,t,n){Pe(`scalar`,e,B,n);let[[r,i],[a,o]]=t,s=Dt(o*e,n),c=Dt(-i*e,n),l=e-s*r-c*a,u=-s*i-c*o,d=l<B,f=u<B;d&&(l=-l),f&&(u=-u);let p=Ie(Math.ceil(Fe(n)/2))+V;if(l<B||l>=p||u<B||u>=p)throw Error(`splitScalar (endomorphism): failed for k`);return{k1neg:d,k1:l,k2neg:f,k2:u}}function kt(e){if(![`compact`,`recovered`,`der`].includes(e))throw Error(`Signature format must be "compact", "recovered", or "der"`);return e}function At(e,t){Re(e);let n={};for(let r of Object.keys(t))n[r]=e[r]===void 0?t[r]:e[r];return M(n.lowS,`lowS`),M(n.prehash,`prehash`),n.format!==void 0&&kt(n.format),n}const z={Err:class extends Error{constructor(e=``){super(e)}},_tlv:{encode:(e,t)=>{let{Err:n}=z;if(we(e,`tag`),e<0||e>255)throw new n(`tlv.encode: wrong tag`);if(typeof t!=`string`)throw TypeError(`"data" expected string, got type=`+typeof t);if(t.length&1)throw new n(`tlv.encode: unpadded data`);let r=t.length/2,i=Te(r);if(i.length/2&128)throw new n(`tlv.encode: long form length too big`);let a=r>127?Te(i.length/2|128):``;return Te(e)+a+i+t},decode(e,t){let{Err:n}=z;t=A(t,void 0,`DER data`);let r=0;if(e<0||e>255)throw new n(`tlv.encode: wrong tag`);if(t.length<2||t[r++]!==e)throw new n(`tlv.decode: wrong tlv`);let i=t[r++],a=!!(i&128),o=0;if(!a)o=i;else{let e=i&127;if(!e)throw new n(`tlv.decode(long): indefinite length not supported`);if(e>4)throw new n(`tlv.decode(long): byte length is too big`);let a=t.subarray(r,r+e);if(a.length!==e)throw new n(`tlv.decode: length bytes not complete`);if(a[0]===0)throw new n(`tlv.decode(long): zero leftmost byte`);for(let e of a)o=o<<8|e;if(r+=e,o<128)throw new n(`tlv.decode(long): not minimal encoding`)}let s=t.subarray(r,r+o);if(s.length!==o)throw new n(`tlv.decode: wrong value length`);return{v:s,l:t.subarray(r+o)}}},_int:{encode(e){let{Err:t}=z;if(Ce(e),e<B)throw new t(`integer: negative integers are not allowed`);let n=Te(e);if(Number.parseInt(n[0],16)&8&&(n=`00`+n),n.length&1)throw new t(`unexpected DER parsing assertion: unpadded hex`);return n},decode(e){let{Err:t}=z;if(e.length<1)throw new t(`invalid signature integer: empty`);if(e[0]&128)throw new t(`invalid signature integer: negative`);if(e.length>1&&e[0]===0&&!(e[1]&128))throw new t(`invalid signature integer: unnecessary leading zero`);return De(e)}},toSig(e){let{Err:t,_int:n,_tlv:r}=z,i=A(e,void 0,`signature`),{v:a,l:o}=r.decode(48,i);if(o.length)throw new t(`invalid signature: left bytes after parsing`);let{v:s,l:c}=r.decode(2,a),{v:l,l:u}=r.decode(2,c);if(u.length)throw new t(`invalid signature: left bytes after parsing`);return{r:n.decode(s),s:n.decode(l)}},hexFromSig(e){let{_tlv:t,_int:n}=z,r=t.encode(2,n.encode(e.r))+t.encode(2,n.encode(e.s));return t.encode(48,r)}};Object.freeze(z._tlv),Object.freeze(z._int),Object.freeze(z);const B=BigInt(0),V=BigInt(1),jt=BigInt(2),Mt=BigInt(3),Nt=BigInt(4);function Pt(e,t={}){let n=Ct(`weierstrass`,e,t),r=n.Fp,i=n.Fn,a=n.CURVE,{h:o,n:s}=a;Re(t,{},{allowInfinityPoint:`boolean`,clearCofactor:`function`,isTorsionFree:`function`,fromBytes:`function`,toBytes:`function`,endo:`object`});let{endo:c,allowInfinityPoint:l}=t;if(c&&(!r.is0(a.a)||typeof c.beta!=`bigint`||!Array.isArray(c.basises)))throw Error(`invalid endo: expected "beta": bigint and "basises": array`);let u=It(r,i);function d(){if(!r.isOdd)throw Error(`compression is not supported: Field does not have .isOdd()`)}function f(e,t,n){if(l&&t.is0())return Uint8Array.of(0);let{x:i,y:a}=t.toAffine(),o=r.toBytes(i);return M(n,`isCompressed`),n?(d(),j(Ft(!r.isOdd(a)),o)):j(Uint8Array.of(4),o,r.toBytes(a))}function p(e){A(e,void 0,`Point`);let{publicKey:t,publicKeyUncompressed:n}=u,i=e.length,a=e[0],o=e.subarray(1);if(l&&i===1&&a===0)return{x:r.ZERO,y:r.ZERO};if(i===t&&(a===2||a===3)){let e=r.fromBytes(o);if(!r.isValid(e))throw Error(`bad point: is not on curve, wrong x`);let t=g(e),n;try{n=r.sqrt(t)}catch(e){let t=e instanceof Error?`: `+e.message:``;throw Error(`bad point: is not on curve, sqrt error`+t)}d();let i=r.isOdd(n);return(a&1)==1!==i&&(n=r.neg(n)),{x:e,y:n}}else if(i===n&&a===4){let e=r.BYTES,t=r.fromBytes(o.subarray(0,e)),n=r.fromBytes(o.subarray(e,e*2));if(!_(t,n))throw Error(`bad point: is not on curve`);return{x:t,y:n}}else throw Error(`bad point: got length ${i}, expected compressed=${t} or uncompressed=${n}`)}let m=t.toBytes===void 0?f:t.toBytes,h=t.fromBytes===void 0?p:t.fromBytes;function g(e){let t=r.sqr(e),n=r.mul(t,e);return r.add(r.add(n,r.mul(e,a.a)),a.b)}function _(e,t){let n=r.sqr(t),i=g(e);return r.eql(n,i)}if(!_(a.Gx,a.Gy))throw Error(`bad curve params: generator point`);let v=r.mul(r.pow(a.a,Mt),Nt),y=r.mul(r.sqr(a.b),BigInt(27));if(r.is0(r.add(v,y)))throw Error(`bad curve params: a or b`);function b(e,t,n=!1){if(!r.isValid(t)||n&&r.is0(t))throw Error(`bad point coordinate ${e}`);return t}function ee(e){if(!(e instanceof C))throw Error(`Weierstrass Point expected`)}function x(e){if(!c||!c.basises)throw Error(`no endo`);return Ot(e,c.basises,i.ORDER)}function S(e,t,n,i,a){return n=new C(r.mul(n.X,e),n.Y,n.Z),t=dt(i,t),n=dt(a,n),t.add(n)}class C{static BASE=new C(a.Gx,a.Gy,r.ONE);static ZERO=new C(r.ZERO,r.ONE,r.ZERO);static Fp=r;static Fn=i;X;Y;Z;constructor(e,t,n){this.X=b(`x`,e),this.Y=b(`y`,t,!0),this.Z=b(`z`,n),Object.freeze(this)}static CURVE(){return a}static fromAffine(e){let{x:t,y:n}=e||{};if(!e||!r.isValid(t)||!r.isValid(n))throw Error(`invalid affine point`);if(e instanceof C)throw Error(`projective point not allowed`);return r.is0(t)&&r.is0(n)?C.ZERO:new C(t,n,r.ONE)}static fromBytes(e){let t=C.fromAffine(h(A(e,void 0,`point`)));return t.assertValidity(),t}static fromHex(e){return C.fromBytes(ve(e))}get x(){return this.toAffine().x}get y(){return this.toAffine().y}precompute(e=8,t=!0){return T.createCache(this,e),t||this.multiply(Mt),this}assertValidity(){let e=this;if(e.is0()){if(t.allowInfinityPoint&&r.is0(e.X)&&r.eql(e.Y,r.ONE)&&r.is0(e.Z))return;throw Error(`bad point: ZERO`)}let{x:n,y:i}=e.toAffine();if(!r.isValid(n)||!r.isValid(i))throw Error(`bad point: x or y not field elements`);if(!_(n,i))throw Error(`bad point: equation left != right`);if(!e.isTorsionFree())throw Error(`bad point: not in prime-order subgroup`)}hasEvenY(){let{y:e}=this.toAffine();if(!r.isOdd)throw Error(`Field doesn't support isOdd`);return!r.isOdd(e)}equals(e){ee(e);let{X:t,Y:n,Z:i}=this,{X:a,Y:o,Z:s}=e,c=r.eql(r.mul(t,s),r.mul(a,i)),l=r.eql(r.mul(n,s),r.mul(o,i));return c&&l}negate(){return new C(this.X,r.neg(this.Y),this.Z)}double(){let{a:e,b:t}=a,n=r.mul(t,Mt),{X:i,Y:o,Z:s}=this,c=r.ZERO,l=r.ZERO,u=r.ZERO,d=r.mul(i,i),f=r.mul(o,o),p=r.mul(s,s),m=r.mul(i,o);return m=r.add(m,m),u=r.mul(i,s),u=r.add(u,u),c=r.mul(e,u),l=r.mul(n,p),l=r.add(c,l),c=r.sub(f,l),l=r.add(f,l),l=r.mul(c,l),c=r.mul(m,c),u=r.mul(n,u),p=r.mul(e,p),m=r.sub(d,p),m=r.mul(e,m),m=r.add(m,u),u=r.add(d,d),d=r.add(u,d),d=r.add(d,p),d=r.mul(d,m),l=r.add(l,d),p=r.mul(o,s),p=r.add(p,p),d=r.mul(p,m),c=r.sub(c,d),u=r.mul(p,f),u=r.add(u,u),u=r.add(u,u),new C(c,l,u)}add(e){ee(e);let{X:t,Y:n,Z:i}=this,{X:o,Y:s,Z:c}=e,l=r.ZERO,u=r.ZERO,d=r.ZERO,f=a.a,p=r.mul(a.b,Mt),m=r.mul(t,o),h=r.mul(n,s),g=r.mul(i,c),_=r.add(t,n),v=r.add(o,s);_=r.mul(_,v),v=r.add(m,h),_=r.sub(_,v),v=r.add(t,i);let y=r.add(o,c);return v=r.mul(v,y),y=r.add(m,g),v=r.sub(v,y),y=r.add(n,i),l=r.add(s,c),y=r.mul(y,l),l=r.add(h,g),y=r.sub(y,l),d=r.mul(f,v),l=r.mul(p,g),d=r.add(l,d),l=r.sub(h,d),d=r.add(h,d),u=r.mul(l,d),h=r.add(m,m),h=r.add(h,m),g=r.mul(f,g),v=r.mul(p,v),h=r.add(h,g),g=r.sub(m,g),g=r.mul(f,g),v=r.add(v,g),m=r.mul(h,v),u=r.add(u,m),m=r.mul(y,v),l=r.mul(_,l),l=r.sub(l,m),m=r.mul(_,h),d=r.mul(y,d),d=r.add(d,m),new C(l,u,d)}subtract(e){return ee(e),this.add(e.negate())}is0(){return this.equals(C.ZERO)}multiply(e){let{endo:n}=t;if(!i.isValidNot0(e))throw RangeError(`invalid scalar: out of range`);let r,a,o=e=>T.cached(this,e,e=>ft(C,e));if(n){let{k1neg:t,k1:i,k2neg:s,k2:c}=x(e),{p:l,f:u}=o(i),{p:d,f}=o(c);a=u.add(f),r=S(n.beta,l,d,t,s)}else{let{p:t,f:n}=o(e);r=t,a=n}return ft(C,[r,a])[0]}multiplyUnsafe(e){let{endo:n}=t,r=this,a=e;if(!i.isValid(a))throw RangeError(`invalid scalar: out of range`);if(a===B||r.is0())return C.ZERO;if(a===V)return r;if(T.hasCache(this))return this.multiply(a);if(n){let{k1neg:e,k1:t,k2neg:i,k2:o}=x(a),{p1:s,p2:c}=xt(C,r,t,o);return S(n.beta,s,c,e,i)}else return T.unsafe(r,a)}toAffine(e){let t=this,n=e,{X:i,Y:a,Z:o}=t;if(r.eql(o,r.ONE))return{x:i,y:a};let s=t.is0();n??=s?r.ONE:r.inv(o);let c=r.mul(i,n),l=r.mul(a,n),u=r.mul(o,n);if(s)return{x:r.ZERO,y:r.ZERO};if(!r.eql(u,r.ONE))throw Error(`invZ was invalid`);return{x:c,y:l}}isTorsionFree(){let{isTorsionFree:e}=t;return o===V?!0:e?e(C,this):T.unsafe(this,s).is0()}clearCofactor(){let{clearCofactor:e}=t;return o===V?this:e?e(C,this):this.multiplyUnsafe(o)}isSmallOrder(){return o===V?this.is0():this.clearCofactor().is0()}toBytes(e=!0){return M(e,`isCompressed`),this.assertValidity(),m(C,this,e)}toHex(e=!0){return _e(this.toBytes(e))}toString(){return`<Point ${this.is0()?`ZERO`:this.toHex()}>`}}let w=i.BITS,T=new bt(C,t.endo?Math.ceil(w/2):w);return w>=8&&C.BASE.precompute(8),Object.freeze(C.prototype),Object.freeze(C),C}function Ft(e){return Uint8Array.of(e?2:3)}function It(e,t){return{secretKey:t.BYTES,publicKey:1+e.BYTES,publicKeyUncompressed:1+2*e.BYTES,publicKeyHasPrefix:!0,signature:2*t.BYTES}}function Lt(e,t={}){let{Fn:n}=e,r=t.randomBytes===void 0?be:t.randomBytes,i=Object.assign(It(e.Fp,n),{seed:Math.max(lt(n.ORDER),16)});function a(e){try{let t=n.fromBytes(e);return n.isValidNot0(t)}catch{return!1}}function o(t,n){let{publicKey:r,publicKeyUncompressed:a}=i;try{let i=t.length;return n===!0&&i!==r||n===!1&&i!==a?!1:!!e.fromBytes(t)}catch{return!1}}function s(e){return e=e===void 0?r(i.seed):e,ut(A(e,i.seed,`seed`),n.ORDER)}function c(t,r=!0){return e.BASE.multiply(n.fromBytes(t)).toBytes(r)}function l(e){let{secretKey:t,publicKey:r,publicKeyUncompressed:a}=i,o=n._lengths;if(!ye(e))return;let s=A(e,void 0,`key`).length,c=s===r||s===a,l=s===t||!!o?.includes(s);if(!(c&&l))return c}function u(t,r,i=!0){if(l(t)===!0)throw Error(`first arg must be private key`);if(l(r)===!1)throw Error(`second arg must be public key`);let a=n.fromBytes(t);return e.fromBytes(r).multiply(a).toBytes(i)}let d={isValidSecretKey:a,isValidPublicKey:o,randomSecretKey:s},f=wt(s,c);return Object.freeze(d),Object.freeze(i),Object.freeze({getPublicKey:c,getSharedSecret:u,keygen:f,Point:e,utils:d,lengths:i})}function Rt(e,t,n={}){let r=t;ee(r),Re(n,{},{hmac:`function`,lowS:`boolean`,randomBytes:`function`,bits2int:`function`,bits2int_modN:`function`}),n=Object.assign({},n);let i=n.randomBytes===void 0?be:n.randomBytes,a=n.hmac===void 0?(e,t)=>Et(r,e,t):n.hmac,{Fp:o,Fn:s}=e,{ORDER:c,BITS:l}=s,{keygen:u,getPublicKey:d,getSharedSecret:f,utils:p,lengths:m}=Lt(e,n),h={prehash:!0,lowS:typeof n.lowS!=`boolean`||n.lowS,format:`compact`,extraEntropy:!1},g=c*jt+V<o.ORDER;function _(e){return e>c>>V}function v(e,t){if(!s.isValidNot0(t))throw Error(`invalid signature ${e}: out of range 1..Point.Fn.ORDER`);return t}function y(){if(g)throw Error(`"recovered" sig type is not supported for cofactor >2 curves`)}function b(e,t){kt(t);let n=m.signature;return A(e,t===`compact`?n:t===`recovered`?n+1:void 0)}class x{r;s;recovery;constructor(e,t,n){if(this.r=v(`r`,e),this.s=v(`s`,t),n!=null){if(y(),![0,1,2,3].includes(n))throw Error(`invalid recovery id`);this.recovery=n}Object.freeze(this)}static fromBytes(e,t=h.format){b(e,t);let n;if(t===`der`){let{r:t,s:n}=z.toSig(A(e));return new x(t,n)}t===`recovered`&&(n=e[0],t=`compact`,e=e.subarray(1));let r=m.signature/2,i=e.subarray(0,r),a=e.subarray(r,r*2);return new x(s.fromBytes(i),s.fromBytes(a),n)}static fromHex(e,t){return this.fromBytes(ve(e),t)}assertRecovery(){let{recovery:e}=this;if(e==null)throw Error(`invalid recovery id: must be present`);return e}addRecoveryBit(e){return new x(this.r,this.s,e)}recoverPublicKey(t){let{r:n,s:r}=this,i=this.assertRecovery(),a=i===2||i===3?n+c:n;if(!o.isValid(a))throw Error(`invalid recovery id: sig.r+curve.n != R.x`);let l=o.toBytes(a),u=e.fromBytes(j(Ft((i&1)==0),l)),d=s.inv(a),f=C(A(t,void 0,`msgHash`)),p=s.create(-f*d),m=s.create(r*d),h=e.BASE.multiplyUnsafe(p).add(u.multiplyUnsafe(m));if(h.is0())throw Error(`invalid recovery: point at infinify`);return h.assertValidity(),h}hasHighS(){return _(this.s)}toBytes(e=h.format){if(kt(e),e===`der`)return ve(z.hexFromSig(this));let{r:t,s:n}=this,r=s.toBytes(t),i=s.toBytes(n);return e===`recovered`?(y(),j(Uint8Array.of(this.assertRecovery()),r,i)):j(r,i)}toHex(e){return _e(this.toBytes(e))}}Object.freeze(x.prototype),Object.freeze(x);let S=n.bits2int===void 0?function(e){if(e.length>8192)throw Error(`input is too large`);let t=De(e),n=e.length*8-l;return n>0?t>>BigInt(n):t}:n.bits2int,C=n.bits2int_modN===void 0?function(e){return s.create(S(e))}:n.bits2int_modN,w=Ie(l);function T(e){return Pe(`num < 2^`+l,e,B,w),s.toBytes(e)}function E(e,t){return A(e,void 0,`message`),t?A(r(e),void 0,`prehashed message`):e}function te(t,n,r){let{lowS:a,prehash:o,extraEntropy:c}=At(r,h);t=E(t,o);let l=C(t),u=s.fromBytes(n);if(!s.isValidNot0(u))throw Error(`invalid private key`);let d=[T(u),T(l)];if(c!=null&&c!==!1){let e=c===!0?i(m.secretKey):c;d.push(A(e,void 0,`extraEntropy`))}let f=j(...d),p=l;function v(t){let n=S(t);if(!s.isValidNot0(n))return;let r=s.inv(n),i=e.BASE.multiply(n).toAffine(),o=s.create(i.x);if(o===B)return;let c=s.create(r*s.create(p+o*u));if(c===B)return;let l=(i.x===o?0:2)|Number(i.y&V),d=c;return a&&_(c)&&(d=s.neg(c),l^=1),new x(o,d,g?void 0:l)}return{seed:f,k2sig:v}}function ne(e,t,n={}){let{seed:i,k2sig:o}=te(e,t,n);return Le(r.outputLen,s.BYTES,a)(i,o).toBytes(n.format)}function D(t,n,r,i={}){let{lowS:a,prehash:o,format:c}=At(i,h);if(r=A(r,void 0,`publicKey`),n=E(n,o),!ye(t)){let e=t instanceof x?`, use sig.toBytes()`:``;throw Error(`verify expects Uint8Array signature`+e)}b(t,c);try{let i=x.fromBytes(t,c),o=e.fromBytes(r);if(a&&i.hasHighS())return!1;let{r:l,s:u}=i,d=C(n),f=s.inv(u),p=s.create(d*f),m=s.create(l*f),h=e.BASE.multiplyUnsafe(p).add(o.multiplyUnsafe(m));return!h.is0()&&s.create(h.x)===l}catch{return!1}}function re(e,t,n={}){let{prehash:r}=At(n,h);return t=E(t,r),x.fromBytes(e,`recovered`).recoverPublicKey(t).toBytes()}return Object.freeze({keygen:u,getPublicKey:d,getSharedSecret:f,utils:p,lengths:m,Point:e,sign:ne,verify:D,recoverPublicKey:re,Signature:x,hash:r})}
163
+ /*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */
164
+ const zt=Rt(Pt({p:BigInt(`0xffffffff00000001000000000000000000000000ffffffffffffffffffffffff`),n:BigInt(`0xffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551`),h:BigInt(1),a:BigInt(`0xffffffff00000001000000000000000000000000fffffffffffffffffffffffc`),b:BigInt(`0x5ac635d8aa3a93e7b3ebbd55769886bc651d06b0cc53b0f63bce3c3e27d2604b`),Gx:BigInt(`0x6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296`),Gy:BigInt(`0x4fe342e2fe1a7f9b8ee7eb4a7c0f9e162bce33576b315ececbb6406837bf51f5`)}),he),Bt=`pkcs8`,Vt=Bt,Ht=`spki`;function H(){let e=globalThis?.crypto?.subtle;if(typeof e==`object`&&e)return e;throw Error(`crypto.subtle must be defined`)}function Ut(e,t){return async function(n){let r=await e();return{secretKey:r,publicKey:await t(r)}}}function Wt(e){let t=e.match(/[0-9a-f]{2}/gi);if(!t||t.length*2!==e.length)throw Error(`invalid hex`);return Uint8Array.from(t,e=>Number.parseInt(e,16))}function Gt(e,t){if(t.type!==e)throw Error(`invalid key type, expected ${e}`)}function Kt(e,t,n,r){let i=t?[`deriveBits`]:[`sign`],a=t?[]:[`verify`],o=(e,t)=>t===`jwk`?e:new Uint8Array(e),s={async import(t,n){let r=await H().importKey(n,t,e,!0,a);return Gt(`public`,r),r},async export(e,t){Gt(`public`,e);let n=await H().exportKey(t,e);return o(n,t)},async convert(e,t,n){return s.export(await s.import(e,t),n)}},c={async import(n,a){let o=H(),s;if(a===`raw`){let t=n,a=Wt(r),c=new Uint8Array(a.length+t.length);c.set(a,0),c.set(t,a.length),s=await o.importKey(Bt,c,e,!0,i)}else t&&a===`jwk`&&(n={...n,key_ops:i}),s=await o.importKey(a,n,e,!0,i);return Gt(`private`,s),s},async export(e,t){let r=H();if(Gt(`private`,e),t===`raw`){let t=(await r.exportKey(`jwk`,e)).d.replace(/-/g,`+`).replace(/_/g,`/`),i=t.length%4?`=`.repeat(4-t.length%4):``,a=atob(t+i),o=Uint8Array.from(a,e=>e.charCodeAt(0)),s=new Uint8Array(n);return s.set(o,n-o.length),s}let i=await r.exportKey(t,e);return o(i,t)},async convert(e,t,n){return c.export(await c.import(e,t),n)}};async function l(e,t={}){let n=t.formatSec??Vt,r=t.formatPub??Ht,i=n===`jwk`?{...e}:await c.convert(e,n,`jwk`);return delete i.d,i.key_ops=a,r===`jwk`?i:s.convert(i,`jwk`,r)}async function u(t=Vt){let n=await H().generateKey(e,!0,i);return c.export(n.privateKey,t)}let d;return{pub:s,priv:c,async isSupported(){if(d!==void 0)return d;try{let n=H(),r=await n.generateKey(e,!0,i);return await c.export(r.privateKey,`jwk`),t&&await n.deriveBits({name:typeof e==`string`?e:e.name,public:r.publicKey},r.privateKey,8),d=!0}catch{return d=!1}},getPublicKey:l,keygen:Ut(u,l),utils:Object.freeze({randomSecretKey:u,convertPublicKey:s.convert,convertSecretKey:c.convert})}}function qt(e,t){return{async sign(n,r,i={}){let a=await e.priv.import(r,i.formatSec??Vt),o=await H().sign(t,a,n);return new Uint8Array(o)},async verify(n,r,i,a={}){let o=await e.pub.import(i,a.formatPub??Ht);return await H().verify(t,o,n,r)}}}function Jt(e,t,n){return{async getSharedSecret(r,i,a={}){let o=await e.priv.import(r,a.formatSec===void 0?Vt:a.formatSec),s=await e.pub.import(i,a.formatPub===void 0?Ht:a.formatPub),c=await H().deriveBits({name:typeof t==`string`?t:t.name,public:s},o,8*n);return new Uint8Array(c)}}}function Yt(e,t,n,r){let i={name:`ECDH`,namedCurve:e},a=Kt({name:`ECDSA`,namedCurve:e},!1,n,r),o=Kt(i,!0,n,r);return Object.freeze({name:e,isSupported:a.isSupported,getPublicKey:a.getPublicKey,keygen:Ut(a.utils.randomSecretKey,a.getPublicKey),...qt(a,{name:`ECDSA`,hash:{name:t}}),...Jt(o,i,n),utils:Object.freeze({...a.utils,async convertSecretKey(e,t,n){let r=t===`jwk`?e:void 0;return Array.isArray(r?.key_ops)&&r.key_ops.length===1&&r.key_ops[0]===`deriveBits`?o.utils.convertSecretKey(e,t,n):a.utils.convertSecretKey(e,t,n)}})})}const Xt=Yt(`P-256`,`SHA-256`,32,`3041020100301306072a8648ce3d020106082a8648ce3d030107042730250201010420`),Zt={parseError:-32700,invalidRequest:-32600,methodNotFound:-32601,invalidParams:-32602,internalError:-32603,serverError:-32e3,clientNotConnected:-32001,configError:-32002,corruptedResponse:-32003,clientAborted:-32004,walletNotConnected:-32005,serverErrorForInteractionDelegation:-32006,userRejected:-32007};var Qt=class extends Error{code;data;constructor(e,t,n){super(t),this.code=e,this.data=n}toJSON(){return{code:this.code,message:this.message,data:this.data}}},$t=class{_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 en(e){let{emittingTransport:t,listeningTransport:n,targetOrigin:r,middleware:i=[],lifecycleHandlers:a}=e,o=new Map;function s(e){return typeof e!=`object`||!e?!1:`clientLifecycle`in e||`iframeLifecycle`in e}function c(e){return typeof e!=`object`||!e?!1:`id`in e&&`topic`in e&&`data`in e}async function l(e){try{`clientLifecycle`in e&&a?.clientLifecycle?await a.clientLifecycle(e,{origin:r,source:null}):`iframeLifecycle`in e&&a?.iframeLifecycle&&await a.iframeLifecycle(e,{origin:r,source:null})}catch(e){console.error(`[RPC Client] Lifecycle handler error:`,e)}}async function u(e){let t={origin:r,source:null};for(let n of i)n.onRequest&&await n.onRequest(e,t);return e}async function d(e,t){let n={origin:r,source:null},a=t;for(let t of i)t.onResponse&&(a=await t.onResponse(e,a,n));return a}async function f(e){try{let t=new URL(e.origin).origin.toLowerCase(),n=new URL(r).origin.toLowerCase();if(t!==n){console.log(`Not expected origin`,t,n);return}}catch(e){console.error(`[RPC Client] Invalid origin`,e);return}if(s(e.data)){await l(e.data);return}if(!c(e.data))return;let t;try{let n=e.data.data,r=n instanceof Uint8Array||ArrayBuffer.isView(n)?{result:n}:n;t=await d(e.data,r)}catch(e){console.error(`[RPC Client] Middleware error on response:`,e);return}let n=o.get(e.data.id);n&&n(t)}async function p(e){let n=e;try{n=await u(e)}catch(e){throw console.error(`[RPC Client] Middleware error on request:`,e),e}t.postMessage(n,r)}function m(e){t.postMessage(e,r)}function h(){return`${Date.now()}-${Math.random().toString(36).substring(2,9)}`}n.addEventListener(`message`,f);function g(e){let t=h(),n=new $t;return o.set(t,e=>{e.error?n.reject(new Qt(e.error.code,e.error.message,e.error.data)):n.resolve(e.result),o.delete(t)}),p({id:t,topic:e.method,data:{method:e.method,params:e.params}}).catch(e=>{o.delete(t),n.reject(e)}),n.promise}function _(e,t){let n=h();return o.set(n,e=>{e.error?(console.error(`[RPC Client] Listener error:`,e.error),o.delete(n)):t(e.result)}),p({id:n,topic:e.method,data:{method:e.method,params:e.params}}).catch(e=>{console.error(`[RPC Client] Failed to send listener request:`,e),o.delete(n)}),()=>{o.delete(n)}}function v(){n.removeEventListener(`message`,f),o.clear()}return{request:g,listen:_,sendLifecycle:m,cleanup:v}}function tn(e){return new TextEncoder().encode(JSON.stringify(e))}function nn(e){try{return JSON.parse(new TextDecoder().decode(e))}catch{return null}}const rn=`https://backend.frak.id`;function an(e){return e.includes(`localhost:3000`)||e.includes(`localhost:3010`)}function on(e){return an(e)?`https://localhost:3030`:e.includes(`wallet-dev.frak.id`)||e.includes(`wallet.gcp-dev.frak.id`)?`https://backend.gcp-dev.frak.id`:rn}function U(e){if(e)return on(e);if(typeof window<`u`){let e=window.FrakSetup?.client?.config?.walletUrl;if(e)return on(e)}return rn}var sn=class extends Map{maxSize;constructor(e){super(),this.maxSize=e}get(e){let t=super.get(e);return super.has(e)&&(super.delete(e),super.set(e,t)),t}set(e,t){if(super.has(e)&&super.delete(e),super.set(e,t),this.maxSize&&this.size>this.maxSize){let e=super.keys().next().value;e!==void 0&&super.delete(e)}return this}};let W;function cn(){return W||={promiseCache:new sn(1024),responseCache:new sn(1024),failureCache:new sn(1024)},W}async function G(e,{cacheKey:t,cacheTime:n=3e4}){let{promiseCache:r,responseCache:i,failureCache:a}=cn();if(n>0){let e=i.get(t);if(e&&Date.now()-e.created<n)return e.data}let o=a.get(t);if(o&&Date.now()-o<1e3)throw Error(`Cache: ${t} recently failed, backing off`);let s=r.get(t);s||(s=e(),r.set(t,s));try{let e=await s;return i.set(t,{data:e,created:Date.now()}),a.delete(t),e}catch(e){throw a.set(t,Date.now()),e}finally{r.delete(t)}}function ln(){W&&(W.promiseCache.clear(),W.responseCache.clear(),W.failureCache.clear())}const un=`__frakSdkConfig`,dn=`frak-config-cache`,fn=`frak-merchant-id`,pn={key:dn},K=typeof window<`u`;function mn(){return{isResolved:!1,merchantId:``}}let q=null;function hn(){if(!K)return null;try{let e=localStorage.getItem(pn.key);if(!e)return null;let t=JSON.parse(e);return t.config?.isResolved?(q=t,t):null}catch{return null}}function gn(){return(q??hn())?.config}function _n(){let e=q??hn();return e?Date.now()-e.timestamp<3e4:!1}function vn(e){if(!(!K||!e.isResolved))try{let t={config:e,timestamp:Date.now()};localStorage.setItem(pn.key,JSON.stringify(t)),q=t}catch{}}function yn(){if(K){q=null;try{localStorage.removeItem(pn.key)}catch{}}}function bn(){K&&(window[un]||(window[un]=gn()??mn()))}function xn(){return K?(bn(),window[un]??mn()):mn()}function Sn(e){K&&window.dispatchEvent(new CustomEvent(`frak:config`,{detail:e}))}function Cn(e){return e??(K?window.location.hostname:``)}async function wn(e,t,n){try{let r=U(t),i=n?`&lang=${encodeURIComponent(n)}`:``,a=await fetch(`${r}/user/merchant/resolve?domain=${encodeURIComponent(e)}${i}`);if(!a.ok){console.warn(`[Frak SDK] Merchant lookup failed for domain ${e}: ${a.status}`);return}let o=await a.json();if(K)try{sessionStorage.setItem(fn,o.merchantId)}catch{}return o}catch(e){console.warn(`[Frak SDK] Failed to fetch merchant config:`,e);return}}const J={getConfig:xn,get isResolved(){return xn().isResolved},get isCacheFresh(){return _n()},setCacheScope(e,t){let n=`${e}:${t??``}`;pn.key=`${dn}:${n}`,q=null},setConfig(e){if(K&&(window[un]=e),vn(e),Sn(e),K&&e.merchantId)try{sessionStorage.setItem(fn,e.merchantId)}catch{}},reset(){let e=gn()??mn();K&&(window[un]=e),Sn(e)},clearCache(){if(yn(),ln(),K)try{sessionStorage.removeItem(fn)}catch{}},resolve(e,t,n){let r=Cn(e);return r?G(async()=>{let e=await wn(r,t,n);if(!e)throw Error(`Config resolution returned empty`);return e},{cacheKey:`sdkConfig:${r}:${n??``}`,cacheTime:1/0}).catch(()=>void 0):Promise.resolve(void 0)},getMerchantId(){let e=xn();if(e.isResolved&&e.merchantId)return e.merchantId;if(K)try{return sessionStorage.getItem(fn)??void 0}catch{}},async resolveMerchantId(e,t){return J.getMerchantId()||(await J.resolve(e,t))?.merchantId}};async function Tn(e){return p(he(e))}const En=`frak-client-id`,Dn=`frak-client-key`,On=`frak-client-id-legacy`,kn={formatSec:`raw`,formatPub:`raw`};let An=null;function jn(){return An??=Xt.isSupported().then(e=>e?Xt:zt).catch(()=>zt),An}const Mn=()=>typeof window<`u`&&!!window.localStorage;let Nn=null;function Pn(e){let t=m(e);if(Nn?.keyHex===t)return Nn.publicKey;let n=zt.getPublicKey(e,!1);return Nn={keyHex:t,publicKey:n},n}function Fn(){if(Mn())return localStorage.getItem(On)??void 0}function In(){Mn()&&localStorage.removeItem(On)}function Ln(){let e=localStorage.getItem(Dn);if(!e)return null;if(!/^[0-9a-f]{64}$/i.test(e))throw Error(`[Frak SDK] Corrupt client key`);return h(e)}async function Rn(){if(!Mn())throw Error(`[Frak SDK] No window/localStorage available to derive a client id`);if(typeof crypto>`u`||!crypto.getRandomValues)throw Error(`[Frak SDK] crypto.getRandomValues unavailable, cannot derive a client id`);let e=localStorage.getItem(En);try{let t=Ln(),n=t??zt.utils.randomSecretKey(),r=await Tn(Pn(n));if(t){e!==r&&localStorage.setItem(En,r);let t=Fn();return{clientId:r,...t&&{pendingLegacyId:t}}}return e&&localStorage.setItem(On,e),localStorage.setItem(Dn,m(n)),localStorage.setItem(En,r),{clientId:r,...e&&{pendingLegacyId:e}}}catch(e){throw localStorage.removeItem(Dn),Nn=null,e}}async function Y(e){if(!Mn())return null;try{let t=Ln();if(!t)return null;let n=e.ts??Math.floor(Date.now()/1e3),r=f({op:e.op,merchantId:e.merchantId,anonymousId:e.anonymousId,binding:e.binding??new Uint8Array,ts:n}),i=await jn()===Xt?await Xt.sign(r,t,kn):zt.sign(r,t,{prehash:!0});return _({v:1,pk:Pn(t),ts:n,sig:i})}catch{return null}}async function zn({legacyId:e,derivedId:t,walletUrl:n}){if(!(typeof window>`u`)){if(!e||e===t){In();return}try{let r=await J.resolveMerchantId();if(!r)return;let i=await Y({op:`frak-merge-v1`,merchantId:r,anonymousId:t});if(!i)return;let a=U(n),o=await fetch(`${a}/user/identity/merge/initiate`,{method:`POST`,headers:{Accept:`application/json`,"Content-Type":`application/json`},body:JSON.stringify({sourceAnonymousId:t,merchantId:r,proof:i})});if(!o.ok){o.status<500&&In();return}let{mergeToken:s}=await o.json();if(!s)return;let c=await fetch(`${a}/user/identity/merge/execute`,{method:`POST`,headers:{Accept:`application/json`,"Content-Type":`application/json`},body:JSON.stringify({mergeToken:s,targetAnonymousId:e,merchantId:r})});if(c.ok){In();return}c.status<500&&In()}catch{}}}let Bn=null,Vn=null;async function Hn(e){return Bn||Vn||(Vn=Rn().then(({clientId:t,pendingLegacyId:n})=>(Bn=t,n&&zn({legacyId:n,derivedId:t,walletUrl:e}),t)),Vn)}function Un(){if(Bn)return Bn;Hn().catch(()=>{})}async function X(){return Bn||Hn()}function Wn(e){return btoa(Array.from(e,e=>String.fromCharCode(e)).join(``)).replace(/\+/g,`-`).replace(/\//g,`_`).replace(/=+$/,``)}function Gn(e){let t=e.length%4;return Uint8Array.from(atob(e.replace(/-/g,`+`).replace(/_/g,`/`).padEnd(e.length+(t===0?0:4-t),`=`)),e=>e.charCodeAt(0))}function Kn(e){return Wn(tn(e))}function qn(e,t,n,r,i,a,o){let s=Kn(Jn({redirectUrl:t.redirectUrl,directExit:t.directExit,lang:t.lang,merchantId:n,metadata:{name:r,css:a,logoUrl:t.metadata?.logoUrl,homepageLink:t.metadata?.homepageLink},clientId:i,proof:o})),c=new URL(e);return c.pathname=`/sso`,c.searchParams.set(`p`,s),c.toString()}function Jn(e){return{r:e.redirectUrl,cId:e.clientId,d:e.directExit,l:e.lang,m:e.merchantId,md:{n:e.metadata?.name,css:e.metadata?.css,l:e.metadata?.logoUrl,h:e.metadata?.homepageLink},pf:e.proof}}function Yn(e){return{...e,directExit:e.directExit??!e.redirectUrl}}async function Xn(e,t){let{metadata:n,customizations:r,walletUrl:i}=e.config,a=Un()??await X().catch(()=>void 0),o=await J.resolveMerchantId()??``,s=a&&o?await Y({op:`frak-sso-v1`,merchantId:o,anonymousId:a}):null;return{ssoUrl:qn(i??`https://wallet.frak.id`,Yn(t),o,n.name,a,r?.css,s??void 0)}}const Zn=`menubar=no,status=no,scrollbars=no,fullscreen=no,width=500, height=800`,Qn=`frak-sso`;async function $n(e,t){let{metadata:n,customizations:r}=e.config;if(`ssoUrl`in t)return er(t.ssoUrl),await e.request({method:`frak_openSso`,params:[{},n.name,r?.css]})??{};let i=Yn(t);return i.openInSameWindow??!!i.redirectUrl?await e.request({method:`frak_openSso`,params:[i,n.name,r?.css]}):(er(i.ssoPopupUrl??(await Xn(e,i)).ssoUrl),await e.request({method:`frak_openSso`,params:[i,n.name,r?.css]})??{})}function er(e){let t=window.open(e,Qn,Zn);if(!t)throw Error(`Popup was blocked. Please allow popups for this site.`);t.focus()}function Z(e,t,n){if(!e){console.debug(`[Frak] No client provided, skipping event tracking`);return}try{e.openPanel?.track(t,n)}catch(e){console.debug(`[Frak] Failed to track event:`,t,e)}}function Q(e,t){let n=e.get(t);if(n!==null)return n;let r=t.toLowerCase();for(let[t,n]of e)if(t.toLowerCase()===r)return n;return null}function $(e,t){let n=t.toLowerCase(),r=[...e.keys()].filter(e=>e.toLowerCase()===n);for(let t of r)e.delete(t)}const tr=/^0x[a-fA-F0-9]{40}$/;function nr(e){return typeof e==`string`&&tr.test(e)}function rr(e,t){return e.toLowerCase()===t.toLowerCase()}function ir(e){let t=new Uint8Array(20);for(let n=0;n<20;n++){let r=Number.parseInt(e.substring(2+n*2,4+n*2),16);if(Number.isNaN(r))throw Error(`Invalid address: ${e}`);t[n]=r}return t}const ar=Array.from({length:256},(e,t)=>t.toString(16).padStart(2,`0`));function or(e){let t=`0x`;for(let n=0;n<20;n++)t+=ar[e[n]];return t}function sr(e){return`r`in e&&!(`v`in e)}function cr(e){return`v`in e&&e.v===2}const lr=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;function ur(e){return typeof e==`string`&&lr.test(e)}function dr(e){let t=e.replace(/-/g,``),n=new Uint8Array(16);for(let e=0;e<16;e++)n[e]=Number.parseInt(t.substring(e*2,e*2+2),16);return n}function fr(e){let t=``;for(let n=0;n<16;n++)t+=e[n].toString(16).padStart(2,`0`);return`${t.slice(0,8)}-${t.slice(8,12)}-${t.slice(12,16)}-${t.slice(16,20)}-${t.slice(20,32)}`}function pr(e){if(!ur(e.m)||!Number.isInteger(e.t)||e.t<0||e.t>4294967295)return null;let t=typeof e.c==`string`&&e.c.length>0,n=typeof e.w==`string`&&nr(e.w);if(!t&&!n||t&&!ur(e.c))return null;let r=new Uint8Array(21+(t?16:0)+(n?20:0)),i=new DataView(r.buffer,r.byteOffset,r.byteLength),a=0;return r[a++]=2|(t?16:0)|(n?32:0),r.set(dr(e.m),a),a+=16,i.setUint32(a,e.t,!1),a+=4,t&&(r.set(dr(e.c),a),a+=16),n&&(r.set(ir(e.w),a),a+=20),r}function mr(e){if(e.length<21)return null;let t=e[0];if((t&15)!=2||t&192)return null;let n=(t&16)!=0,r=(t&32)!=0;if(!n&&!r)return null;let i=21+(n?16:0)+(r?20:0);if(e.length!==i)return null;let a=1,o=fr(e.subarray(a,a+16));a+=16;let s=new DataView(e.buffer,e.byteOffset,e.byteLength).getUint32(a,!1);a+=4;let c={v:2,m:o,t:s};if(n&&(c.c=fr(e.subarray(a,a+16)),a+=16),r){let t=or(e.subarray(a,a+20));if(!nr(t))return null;c.w=t,a+=20}return c}const hr=`fCtx`;function gr(e){if(e)try{if(cr(e)){let t=pr(e);return t?Wn(t):void 0}return Wn(ir(e.r))}catch(t){console.error(`Error compressing Frak context`,{e:t,context:e})}}function _r(e){if(!(!e||e.length===0))try{let t=Gn(e);if(t.length!==20)return mr(t)||void 0;let n=or(t);if(nr(n))return{r:n}}catch(t){console.error(`Error decompressing Frak context`,{e:t,context:e})}}function vr({url:e}){if(!e)return null;let t=Q(new URL(e).searchParams,hr);return t?_r(t):null}function yr(e){return{utm_source:e.utmSource??`frak`,utm_medium:e.utmMedium??void 0,utm_campaign:e.utmCampaign??void 0,utm_content:e.utmContent,utm_term:e.utmTerm,via:e.via??void 0,ref:e.ref??void 0}}function br(e,t){let n=yr(t??{});for(let[t,r]of Object.entries(n))r!==void 0&&r!==``&&(e.searchParams.has(t)||e.searchParams.set(t,r))}function xr({url:e,context:t,attribution:n}){if(!e)return null;let r=gr(t);if(!r)return null;let i=new URL(e);return $(i.searchParams,hr),i.searchParams.set(hr,r),br(i,n),i.toString()}function Sr(e){let t=new URL(e);return $(t.searchParams,hr),t.toString()}function Cr({url:e,context:t}){if(!window.location?.href||typeof window>`u`){console.error(`No window found, can't update context`);return}let n=e??window.location.href,r;r=t===null?Sr(n):xr({url:n,context:t}),r&&window.history.replaceState(null,``,r.toString())}const wr={compress:gr,decompress:_r,parse:vr,update:xr,remove:Sr,replaceUrl:Cr},Tr={eur:`fr-FR`,usd:`en-US`,gbp:`en-GB`};function Er(e){return e&&e in Tr?e:`eur`}function Dr(e){return e?Tr[e]??Tr.eur:Tr.eur}function Or(e,t){let n=Dr(t),r=Er(t);return e.toLocaleString(n,{style:`currency`,currency:r,minimumFractionDigits:0,maximumFractionDigits:2})}function kr(e){return e?`${e}Amount`:`eurAmount`}var Ar=class{constructor(e){this.baseUrl=e.baseUrl,this.headers={"Content-Type":`application/json`,...e.defaultHeaders},this.maxRetries=e.maxRetries??3,this.initialRetryDelay=e.initialRetryDelay??500}async resolveHeaders(){let e={};for(let[t,n]of Object.entries(this.headers)){let r=await n;r!==null&&(e[t]=r)}return e}addHeader(e,t){this.headers[e]=t}async post(e,t,n,r){try{let r=await fetch(e,{method:`POST`,headers:await this.resolveHeaders(),body:t?JSON.stringify(t??{}):void 0,keepalive:!0,...n});if(r.status===401)return null;if(r.status!==200&&r.status!==202)throw Error(`HTTP error! status: ${r.status}`);let i=await r.text();return i?JSON.parse(i):null}catch(i){if(r<this.maxRetries){let i=this.initialRetryDelay*2**r;return await new Promise(e=>setTimeout(e,i)),this.post(e,t,n,r+1)}return console.error(`Max retries reached:`,i),null}}async fetch(e,t,n={}){let r=`${this.baseUrl}${e}`;return this.post(r,t,n,0)}},jr=class{constructor(e){this.groups=[],this.queue=[],this.options=e;let t={"openpanel-client-id":e.clientId};e.clientSecret&&(t[`openpanel-client-secret`]=e.clientSecret),t[`openpanel-sdk-name`]=e.sdk||`node`,t[`openpanel-sdk-version`]=e.sdkVersion||`1.3.1`,this.api=new Ar({baseUrl:e.apiUrl||`https://api.openpanel.dev`,defaultHeaders:t})}init(){}ready(){this.options.disabled=!1,this.options.waitForProfile=!1,this.flush()}shouldQueue(e){return!!(this.options.disabled||this.options.waitForProfile&&!this.profileId||e.type===`replay`&&!this.sessionId)}addQueue(e){e.type===`track`&&(e.payload.properties={...e.payload.properties??{},__timestamp:new Date().toISOString()}),this.queue.push(e)}async send(e){if(this.options.filter&&!this.options.filter(e))return Promise.resolve();if(this.shouldQueue(e))return this.addQueue(e),Promise.resolve();let t=await this.api.fetch(`/track`,e,{keepalive:e.type!==`replay`});this.deviceId=t?.deviceId;let n=!!this.sessionId;return this.sessionId=t?.sessionId,!n&&this.sessionId&&this.flush(),t}setGlobalProperties(e){this.global={...this.global,...e}}track(e,t){this.log(`track event`,e,t);let{groups:n,profileId:r,...i}=t??{},a=[...new Set([...this.groups,...n??[]])];return this.send({type:`track`,payload:{name:e,profileId:r??this.profileId,groups:a.length>0?a:void 0,properties:{...this.global??{},...i}}})}identify(e){if(this.log(`identify user`,e),e.profileId&&(this.profileId=e.profileId,this.flush()),e.profileId&&Object.keys(e).length>1)return this.send({type:`identify`,payload:{...e,properties:{...this.global,...e.properties}}})}upsertGroup(e){return this.log(`upsert group`,e),this.send({type:`group`,payload:e})}setGroup(e){return this.log(`set group`,e),this.groups.includes(e)||(this.groups=[...this.groups,e]),this.send({type:`assign_group`,payload:{groupIds:[e],profileId:this.profileId}})}setGroups(e){return this.log(`set groups`,e),this.groups=[...new Set([...this.groups,...e])],this.send({type:`assign_group`,payload:{groupIds:e,profileId:this.profileId}})}alias(e){}increment(e){return this.send({type:`increment`,payload:e})}decrement(e){return this.send({type:`decrement`,payload:e})}revenue(e,t){let n=t?.deviceId;return delete t?.deviceId,this.track(`revenue`,{...t??{},...n?{__deviceId:n}:{},__revenue:e})}getDeviceId(){return this.deviceId??``}getSessionId(){return this.sessionId??``}fetchDeviceId(){return Promise.resolve(this.deviceId??``)}clear(){this.profileId=void 0,this.groups=[],this.deviceId=void 0,this.sessionId=void 0}buildFlushPayload(e){if(e.type===`replay`)return e.payload;if(e.type===`track`){let t=`groups`in e.payload?e.payload.groups??[]:[],n=[...new Set([...this.groups,...t])];return{...e.payload,profileId:e.payload.profileId??this.profileId,groups:n.length>0?n:void 0}}return e.type===`identify`||e.type===`increment`||e.type===`decrement`||e.type===`assign_group`?{...e.payload,profileId:e.payload.profileId??this.profileId}:e.payload}flush(){let e=[];for(let t of this.queue){if(this.shouldQueue(t)){e.push(t);continue}let n=this.buildFlushPayload(t);this.send({...t,payload:n})}this.queue=e}log(...e){this.options.debug&&console.log(`[OpenPanel.dev]`,...e)}},Mr=typeof document<`u`?document.currentScript:null;function Nr(e){return e.replace(/([-_][a-z])/gi,e=>e.toUpperCase().replace(`-`,``).replace(`_`,``))}var Pr=class extends jr{constructor(e){if(super({sdk:`web`,sdkVersion:`1.4.1`,...e}),this.options=e,this.lastPath=``,this.pendingRevenues=[],!this.isServer()){try{let e=sessionStorage.getItem(`openpanel-pending-revenues`);if(e){let t=JSON.parse(e);Array.isArray(t)&&(this.pendingRevenues=t)}}catch{this.pendingRevenues=[]}if(this.setGlobalProperties({__referrer:document.referrer}),this.options.trackScreenViews&&(this.trackScreenViews(),setTimeout(()=>this.screenView(),0)),this.options.trackOutgoingLinks&&this.trackOutgoingLinks(),this.options.trackAttributes&&this.trackAttributes(),this.options.sessionReplay?.enabled){let e=this.options.sessionReplay.sampleRate??1;Math.random()<e&&this.loadReplayModule().then(e=>{e&&e.startReplayRecorder(this.options.sessionReplay,e=>{this.send({type:`replay`,payload:{...e}})})})}}}async loadReplayModule(){try{if(typeof __OPENPANEL_REPLAY_URL__<`u`){let e=Mr,t=this.options.sessionReplay?.scriptUrl||e?.src?.replace(`.js`,`-replay.js`)||`https://openpanel.dev/op1-replay.js`;return window.__openpanel_replay?window.__openpanel_replay:new Promise(e=>{let n=document.createElement(`script`);n.src=t,n.onload=()=>{e(window.__openpanel_replay??null)},n.onerror=()=>{console.warn(`[OpenPanel] Failed to load replay script from`,t),e(null)},document.head.appendChild(n)})}return await import(`./replay-V6FXES7X.CgBxdfNp.js`)}catch(e){return console.warn(`[OpenPanel] Failed to load replay module`,e),null}}debounce(e,t){clearTimeout(this.debounceTimer),this.debounceTimer=setTimeout(e,t)}isServer(){return typeof document>`u`}trackOutgoingLinks(){this.isServer()||document.addEventListener(`click`,e=>{let t=e.target,n=t.closest(`a`);if(n&&t){let e=n.getAttribute(`href`);if(e?.startsWith(`http`))try{let r=new URL(e),i=window.location.hostname;r.hostname!==i&&super.track(`link_out`,{href:e,text:n.innerText||n.getAttribute(`title`)||t.getAttribute(`alt`)||t.getAttribute(`title`)})}catch{}}})}trackScreenViews(){if(this.isServer())return;let e=history.pushState;history.pushState=function(...t){let n=e.apply(this,t);return window.dispatchEvent(new Event(`pushstate`)),window.dispatchEvent(new Event(`locationchange`)),n};let t=history.replaceState;history.replaceState=function(...e){let n=t.apply(this,e);return window.dispatchEvent(new Event(`replacestate`)),window.dispatchEvent(new Event(`locationchange`)),n},window.addEventListener(`popstate`,()=>{window.dispatchEvent(new Event(`locationchange`))});let n=()=>this.debounce(()=>this.screenView(),50);this.options.trackHashChanges?window.addEventListener(`hashchange`,n):window.addEventListener(`locationchange`,n)}trackAttributes(){this.isServer()||document.addEventListener(`click`,e=>{let t=e.target,n=t.closest(`button`),r=t.closest(`a`),i=n?.getAttribute(`data-track`)?n:r?.getAttribute(`data-track`)?r:null;if(i){let e={};for(let t of i.attributes)t.name.startsWith(`data-`)&&t.name!==`data-track`&&(e[Nr(t.name.replace(/^data-/,``))]=t.value);let t=i.getAttribute(`data-track`);t&&super.track(t,e)}})}track(e,t){return super.track(e,{...t,__path:this.lastPath})}screenView(e,t){if(this.isServer())return;let n,r;typeof e==`string`?(n=e,r=t):(n=window.location.href,r=e),this.lastPath!==n&&(this.lastPath=n,super.track(`screen_view`,{...r??{},__path:n,__title:document.title}))}async flushRevenue(){let e=this.pendingRevenues.map(e=>super.revenue(e.amount,e.properties));await Promise.all(e),this.clearRevenue()}clearRevenue(){if(this.pendingRevenues=[],!this.isServer())try{sessionStorage.removeItem(`openpanel-pending-revenues`)}catch{}}pendingRevenue(e,t){if(this.pendingRevenues.push({amount:e,properties:t}),!this.isServer())try{sessionStorage.setItem(`openpanel-pending-revenues`,JSON.stringify(this.pendingRevenues))}catch{}}};const Fr=`nexus-wallet-backup`,Ir=`frakwallet://`;function Lr(e){let t=e?.split(`-`)[0]?.toLowerCase();return t===`en`||t===`fr`?t:void 0}function Rr(){return(typeof document<`u`?Lr(document.documentElement.lang):void 0)||(typeof navigator<`u`?Lr(navigator.language):void 0)}function zr(e,t){if(typeof window>`u`)return;let n=new URL(window.location.href),r=n.searchParams.get(`sso`);r&&(t.then(()=>{e.sendLifecycle({clientLifecycle:`sso-redirect-complete`,data:{compressed:r}}),console.log(`[SSO URL Listener] Forwarded compressed SSO data to iframe`)}).catch(e=>{console.error(`[SSO URL Listener] Failed to forward SSO data:`,e)}),n.searchParams.delete(`sso`),window.history.replaceState({},``,n.toString()),console.log(`[SSO URL Listener] SSO parameter detected and URL cleaned`))}function Br(){let e=navigator.userAgent;return/Android/i.test(e)&&/Chrome\/\d+/i.test(e)}const Vr=Ir.replace(`://`,``);function Hr(e){return`intent://${e.slice(13)}#Intent;scheme=${Vr};end`}function Ur(e,t){let n=t?.timeout??2500,r=!1,i=()=>{document.hidden&&(r=!0)};document.addEventListener(`visibilitychange`,i);let a=Br()&&Wr(e)?Hr(e):e;window.location.href=a,setTimeout(()=>{document.removeEventListener(`visibilitychange`,i),r||t?.onFallback?.()},n)}function Wr(e){return e.startsWith(Ir)}function Gr(){if(typeof navigator>`u`)return!1;let e=navigator.userAgent;return!!(/iPhone|iPad|iPod/i.test(e)||/Macintosh/i.test(e)&&navigator.maxTouchPoints>1)}const Kr=Gr();function qr(){return typeof navigator>`u`?!1:Kr?!0:/Android|webOS|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)}function Jr(){if(typeof navigator>`u`)return!1;let e=navigator.userAgent.toLowerCase();return e.includes(`instagram`)||e.includes(`fban`)||e.includes(`fbav`)||e.includes(`facebook`)}const Yr=Jr();function Xr(e){Kr&&e.startsWith(`https://`)?window.location.href=`x-safari-https://${e.slice(8)}`:Kr&&e.startsWith(`http://`)?window.location.href=`x-safari-http://${e.slice(7)}`:window.location.href=`https://backend.frak.id/common/social?u=${encodeURIComponent(e)}`}const Zr={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`}};async function Qr({walletBaseUrl:e,config:t}){let n=document.querySelector(`#frak-wallet`);n&&n.remove();let r=document.createElement(`iframe`);r.id=Zr.id,r.name=Zr.name,r.allow=Zr.allow,r.style.zIndex=Zr.style.zIndex.toString(),ei({iframe:r,isVisible:!1});let i=t?.walletUrl??e??`https://wallet.frak.id`,a=await Hn(i).catch(e=>{console.warn(`[Frak SDK] Unable to derive a client id`,e)});return ni(i),ni(U(i)),r.src=$r({walletUrl:i,clientId:a,preload:t?.preload}),new Promise(e=>{r.addEventListener(`load`,()=>e(r)),document.body.appendChild(r)})}function $r({walletUrl:e,clientId:t,preload:n}){let r=t?`${e}/listener?clientId=${encodeURIComponent(t)}`:`${e}/listener`;return!n||n.length===0?r:`${r}#preload=${n.join(`,`)}`}function ei({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 ti(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 ni(e){if(!(typeof document>`u`))try{let t=new URL(e).origin,n=`link[rel="preconnect"][data-frak-preconnect="${t}"]`;if(document.head.querySelector(n))return;let r=document.createElement(`link`);r.rel=`preconnect`,r.href=t,r.crossOrigin=``,r.dataset.frakPreconnect=t,document.head.appendChild(r)}catch{}}const ri=Kr&&Yr;function ii(e){e?localStorage.setItem(Fr,e):localStorage.removeItem(Fr)}function ai(e,t){try{let n=new URL(e);if(!n.searchParams.has(`u`))return e;let r=ci(window.location.href,t);return n.searchParams.delete(`u`),n.searchParams.append(`u`,r),n.toString()}catch{return e}}function oi(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 si(e){return e.includes(`/common/social`)}function ci(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 li(e,t,n,r,i){if(i){let e=ai(t,r);window.open(e,`_blank`);return}if(Wr(t)){let i=ai(t,r);Ur(i,{onFallback:()=>{e.contentWindow?.postMessage({clientLifecycle:`deep-link-failed`,data:{originalUrl:i}},n)}})}else if(ri&&si(t))oi(r);else{let e=ai(t,r);window.location.href=e}}function ui({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`:ii(a.backup);break;case`remove-backup`:localStorage.removeItem(Fr);break;case`show`:case`hide`:ei({iframe:e,isVisible:i===`show`});break;case`redirect`:li(e,a.baseRedirectUrl,t,a.mergeToken,a.openInNewTab);break}},isConnected:n.promise}}async function di({config:e,iframe:t}){let n=e?.walletUrl??`https://wallet.frak.id`,r=e.metadata.lang??Rr(),i=e.domain??(typeof window<`u`?window.location.hostname:``);J.setCacheScope(i,r),J.reset();let a=J.isCacheFresh?void 0:J.resolve(e.domain,e.walletUrl,r),o=await X().catch(()=>void 0),s=ui({iframe:t,targetOrigin:n}),c=new $t,l=Date.now();if(!t.contentWindow)throw new Qt(Zt.configError,`The iframe does not have a content window`);let u=en({emittingTransport:t.contentWindow,listeningTransport:window,targetOrigin:n,middleware:[{async onRequest(e,t){if(!await s.isConnected)throw new Qt(Zt.clientNotConnected,`The iframe provider isn't connected yet`);return await c.promise,t}}],lifecycleHandlers:{iframeLifecycle:(e,t)=>{s.handleEvent(e)}}}),d=fi(u,s),f=async()=>{d(),u.cleanup(),t.remove(),ln(),J.clearCache(),J.reset()},p;{console.log(`[Frak SDK] Initializing OpenPanel`),p=new Pr({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||`sdk_version`in t.properties||(t.properties={...t.properties,sdk_version:`1.2.1`,...o&&{user_anonymous_client_id:o}}),!0)}),p.setGlobalProperties({sdk_version:`1.2.1`,...o&&{user_anonymous_client_id:o}}),p.init(),p.track(`sdk_initialized`,{sdk_version:`1.2.1`});let e=!1,t=setTimeout(()=>{e||(e=!0,p?.track(`sdk_iframe_handshake_failed`,{reason:`timeout`}))},3e4);s.isConnected.then(()=>{e||(e=!0,clearTimeout(t),p?.track(`sdk_iframe_connected`,{handshake_duration_ms:Date.now()-l}))}).catch(()=>{e||(e=!0,clearTimeout(t),p?.track(`sdk_iframe_handshake_failed`,{reason:`unknown`}))})}let m=_i({config:e,rpcClient:u,lifecycleManager:s,configPromise:a,contextSent:c,openPanel:p,clientId:o}).then(()=>{}).catch(e=>{throw c.reject(e),e});return{config:e,waitForConnection:s.isConnected,waitForSetup:m,request:u.request,listenerRequest:u.listen,destroy:f,openPanel:p}}function fi(e,t){let n,r,i=()=>e.sendLifecycle({clientLifecycle:`heartbeat`});async function a(){i(),n=setInterval(i,250),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}function pi(e){return 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,attribution:e.attribution}:e.attribution?{attribution:e.attribution}:void 0}function mi(e,t){if(!e)return;let n=e.global??{};e.setGlobalProperties({...n,merchant_id:t.merchantId,domain:t.domain??``})}async function hi(e){if(!(typeof crypto>`u`||!crypto.subtle))try{let t=await crypto.subtle.digest(`SHA-256`,new TextEncoder().encode(e));return new Uint8Array(t)}catch{return}}async function gi({merchantId:e,anonymousId:t,pendingMergeToken:n}){let r=n?await hi(n):void 0;if(n&&!r){let n=await Y({op:`frak-install-v1`,merchantId:e,anonymousId:t});return n?{anonymousId:t,proofs:{install:n}}:void 0}let[i,a]=await Promise.all([r?Y({op:`frak-merge-v1`,merchantId:e,anonymousId:t,binding:r}):Promise.resolve(null),Y({op:`frak-install-v1`,merchantId:e,anonymousId:t})]);if(!(!i&&!a))return{anonymousId:t,proofs:{...i&&{merge:i},...a&&{install:a}}}}async function _i({config:e,rpcClient:t,lifecycleManager:n,configPromise:r,contextSent:i,openPanel:a,clientId:o}){await n.isConnected,zr(t,n.isConnected);let s=new URL(window.location.href),c=s.searchParams.get(`fmt`)??void 0;c&&(s.searchParams.delete(`fmt`),window.history.replaceState({},``,s.toString()));let l=t=>{let n=t?.merchantId??e.metadata.merchantId??``,r=t?.domain??``,i=t?.allowedDomains??[],a=t?.sdkConfig,o=a?.attribution||e.attribution?{...e.attribution,...a?.attribution}:void 0;J.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,attribution:o}:{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,attribution:o})},u=!1,d=Promise.resolve(),f=e=>{let n=u?void 0:c;u=!0;let r=pi(e),i=o,s=window.location.href;return mi(a,e),d=d.then(async()=>{t.sendLifecycle({clientLifecycle:`resolved-config`,data:{merchantId:e.merchantId,domain:e.domain??``,allowedDomains:e.allowedDomains??[],sourceUrl:s,...i&&{sdkAnonymousId:i},...n&&{pendingMergeToken:n},...r&&{sdkConfig:r},...i&&{sdkIdentity:await gi({merchantId:e.merchantId,anonymousId:i,pendingMergeToken:n})}}})}).catch(e=>{console.error(`Failed to send lifecycle config`,e)}),d};J.isResolved&&f(J.getConfig()).then(i.resolve),r&&(l(await r),f(J.getConfig()).then(i.resolve));async function p(){let n=e.customizations?.css;n&&t.sendLifecycle({clientLifecycle:`modal-css`,data:{cssLink:n}})}async function m(){let n=e.customizations?.i18n;n&&t.sendLifecycle({clientLifecycle:`modal-i18n`,data:{i18n:n}})}async function h(){if(typeof window>`u`)return;let e=window.localStorage.getItem(Fr);e&&t.sendLifecycle({clientLifecycle:`restore-backup`,data:{backup:e}})}(await Promise.allSettled([p(),m(),h()])).some(e=>e.status===`rejected`)&&a?.track(`sdk_iframe_handshake_failed`,{reason:`asset_push`})}function vi(e){return nn(Gn(e))}async function yi({config:e}){let t=bi(e),n=await Qr({config:t});if(!n){console.error(`Failed to create iframe`);return}let r=await di({config:t,iframe:n});if(await r.waitForSetup,!await r.waitForConnection){console.error(`Failed to connect to client`);return}return r}function bi(e){let t=Er(e.metadata?.currency);return{...e,metadata:{...e.metadata,currency:t}}}function xi({perCall:e,defaults:t,productUtmContent:n}){if(e===null)return;let r=e!==void 0,i=t!==void 0&&Object.keys(t).length>0;if(!r&&!i&&(n===void 0||n===``))return;let a={...t,...e??{}},o=n??e?.utmContent;return o!==void 0&&o!==``?a.utmContent=o:delete a.utmContent,a}var Si=t({DEEP_LINK_SCHEME:()=>Ir,FrakContextManager:()=>wr,areAddressesEqual:()=>rr,base64urlDecode:()=>Gn,base64urlEncode:()=>Wn,baseIframeProps:()=>Zr,buildListenerUrl:()=>$r,clearAllCache:()=>ln,compressJsonToB64:()=>Kn,createIFrameFrakClient:()=>di,decompressJsonFromB64:()=>vi,deleteQueryParamCaseInsensitive:()=>$,detectPageLanguage:()=>Rr,findIframeInOpener:()=>ti,formatAmount:()=>Or,generateSsoUrl:()=>qn,getBackendUrl:()=>U,getClientId:()=>Un,getClientIdAsync:()=>X,getCurrencyAmountKey:()=>kr,getQueryParamCaseInsensitive:()=>Q,getSupportedCurrency:()=>Er,isIOS:()=>Kr,isInAppBrowser:()=>Yr,isMobile:()=>qr,mergeAttribution:()=>xi,redirectToExternalBrowser:()=>Xr,sdkConfigStore:()=>J,setupClient:()=>yi,ssoPopupFeatures:()=>Zn,ssoPopupName:()=>Qn,trackEvent:()=>Z,triggerDeepLinkWithFallback:()=>Ur,withCache:()=>G});async function Ci(e,t,n){return await e.request({method:`frak_displayEmbeddedWallet`,params:n?[t,e.config.metadata,n]:[t,e.config.metadata]})}async function wi(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 Ti(e,t,n){return await e.request({method:`frak_displaySharingPage`,params:n?[t,e.config.metadata,n]:[t,e.config.metadata]})}async function Ei(e,t){if(typeof window>`u`)return;let n=await X().catch(()=>void 0);if(!n)return;let r=await J.resolveMerchantId();if(!r)return;let i=`frak-identity-ensured-${r}-${n}`;if(!window.sessionStorage.getItem(i))try{let a=U(t),o=await Y({op:`frak-ensure-v1`,merchantId:r,anonymousId:n});(await fetch(`${a}/user/identity/ensure`,{method:`POST`,headers:{Accept:`application/json`,"Content-Type":`application/json`,"x-wallet-sdk-auth":e,"x-frak-client-id":n},body:JSON.stringify({merchantId:r,...o&&{proof:o}})})).ok&&window.sessionStorage.setItem(i,`1`)}catch{}}async function Di(e,t){return G(()=>e.request({method:`frak_getMerchantInformation`}),{cacheKey:`frak_getMerchantInformation`,cacheTime:t?.cacheTime})}async function Oi(e,t){return G(async()=>{let t=await X().catch(()=>void 0),n=t?await Y({op:`frak-merge-v1`,merchantId:e.config.metadata.merchantId??``,anonymousId:t}):null;return e.request({method:`frak_getMergeToken`,params:n?[n]:void 0})},{cacheKey:`frak_getMergeToken`,cacheTime:t?.cacheTime})}async function ki(e,t){return G(()=>e.request({method:`frak_getUserReferralStatus`}),{cacheKey:`frak_getUserReferralStatus`,cacheTime:t?.cacheTime})}async function Ai(e,t){let{metadata:n,customizations:r}=e.config;return await e.request({method:`frak_prepareSso`,params:[t,n.name,r?.css]})}async function ji(e,t){try{let n=await X().catch(()=>void 0);await e.request({method:`frak_sendInteraction`,params:[t,{clientId:n}]})}catch{console.warn(`[Frak SDK] Failed to send interaction:`,t.type)}}function Mi(e,t,n){return cr(t)?(Z(e,`user_referred_started`,{referrer_client_id:t.c,referrer_wallet:t.w,wallet_status:n?.key}),ji(e,{type:`arrival`,referrerClientId:t.c,referrerMerchantId:t.m,referrerWallet:t.w,referralTimestamp:t.t}),!0):sr(t)?(Z(e,`user_referred_started`,{referrer:t.r,wallet_status:n?.key}),ji(e,{type:`arrival`,referrerWallet:t.r}),!0):!1}function Ni(e,t,n){return!t&&!n?null:{v:2,m:e,t:Math.floor(Date.now()/1e3),...t?{c:t}:{},...n?{w:n}:{}}}function Pi(e,t,n){return cr(e)?e.w&&n?.wallet?rr(e.w,n.wallet):e.c?t===e.c:!1:sr(e)&&n?.wallet?rr(e.r,n.wallet):!1}async function Fi(e,{walletStatus:t,frakContext:n,options:r}){if(!n)return`no-referrer`;let i=await X().catch(()=>void 0);if(Pi(n,i,t))return`self-referral`;if(!Mi(e,n,t))return`no-referrer`;let a=cr(n)?n.m:r?.merchantId,o=r?.alwaysAppendUrl&&a?Ni(a,i,t?.wallet):null;return wr.replaceUrl({url:window.location?.href,context:o}),Z(e,`user_referred_completed`,{status:`success`}),`success`}async function Ii(e,{options:t}={}){let n=wr.parse({url:window.location.href}),r=await Bi(e);try{return await Fi(e,{walletStatus:r,frakContext:n,options:t})}catch(e){console.warn(`Error processing referral`,{error:e})}}const Li=`frak:referral-success`;async function Ri(e){try{await Ii(e)===`success`&&window.dispatchEvent(new Event(Li))}catch(e){console.warn(`[Frak] Referral setup failed`,e)}}async function zi(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=await X().catch(()=>void 0);if(!t&&!n){console.warn(`[Frak] No identity found, skipping purchase check`);return}let r=e.merchantId??await J.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=U();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 Bi(e,t){if(!t)return e.request({method:`frak_listenToWalletStatus`}).then(t=>(Vi(e,t),t));let n=new $t,r=!1;return e.listenerRequest({method:`frak_listenToWalletStatus`},i=>{Vi(e,i),t(i),r||=(n.resolve(i),!0)}),n.promise}function Vi(e,t){typeof window>`u`||(e.openPanel?.setGlobalProperties({wallet:t.wallet??null}),t.interactionToken?(window.sessionStorage.setItem(`frak-wallet-interaction-token`,t.interactionToken),Ei(t.interactionToken,e.config.walletUrl)):window.sessionStorage.removeItem(`frak-wallet-interaction-token`))}function Hi(e,{metadata:t,login:n}){return Ui(e,{steps:{login:n??{}},metadata:t})}function Ui(e,t){function n(n){return Ui(e,{...t,steps:{...t.steps,sendTransaction:n}})}function r(n){return Ui(e,{...t,steps:{...t.steps,final:{...n,action:{key:`reward`}}}})}function i(n,r){return Ui(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 wi(e,t,r)}return{params:t,sendTx:n,reward:r,sharing:i,display:a}}async function Wi(e,{tx:t,metadata:n}){return(await wi(e,{metadata:n,steps:{login:{},sendTransaction:{tx:t}}})).sendTransaction}function Gi(e=96){let t=Math.ceil(e/2),n=``;if(typeof crypto<`u`&&crypto.getRandomValues){let e=new Uint8Array(t);crypto.getRandomValues(e);for(let t=0;t<e.length;t++)n+=e[t].toString(16).padStart(2,`0`)}else for(let e=0;e<t;e++)n+=(Math.random()*256|0).toString(16).padStart(2,`0`);return n.substring(0,e)}async function Ki(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 wi(e,{metadata:n,steps:{login:{},siweAuthenticate:{siwe:{...t,statement:i,nonce:t?.nonce??Gi(),uri:t?.uri??`https://${r}`,version:t?.version??`1`,domain:r}}}})).siweAuthenticate}var qi=t({REFERRAL_SUCCESS_EVENT:()=>Li,displayEmbeddedWallet:()=>Ci,displayModal:()=>wi,displaySharingPage:()=>Ti,ensureIdentity:()=>Ei,getMerchantInformation:()=>Di,getMergeToken:()=>Oi,getUserReferralStatus:()=>ki,modalBuilder:()=>Hi,openSso:()=>$n,prepareSso:()=>Ai,prepareSsoUrl:()=>Xn,processReferral:()=>Fi,referralInteraction:()=>Ii,sendInteraction:()=>ji,sendTransaction:()=>Wi,setupReferral:()=>Ri,siweAuthenticate:()=>Ki,trackPurchaseStatus:()=>zi,watchWalletStatus:()=>Bi});async function Ji(e,t,n){if(!window.FrakSetup?.client){console.error(`Frak client not found`);return}await Ti(window.FrakSetup.client,{...n?.link&&{link:n.link},...n?.products?.length&&{products:n.products},...e&&{metadata:{targetInteraction:e}}},t)}const Yi=[`frak-button-share`,`frak-button-wallet`,`frak-open-in-app`,`frak-post-purchase`,`frak-banner`].join(`,`);function Xi(){return typeof document>`u`||document.querySelector(Yi)===null?[]:[`sharing`]}function Zi(e){try{let t=new URL(e);return t.protocol===`http:`||t.protocol===`https:`}catch{return!1}}function Qi(e){if(!e)return null;if(Array.isArray(e))return e;if(typeof e!=`string`)return null;try{let t=JSON.parse(e);return Array.isArray(t)?t:null}catch{return null}}function $i(e){if(!e||typeof e!=`object`)return null;let t=e,n=typeof t.title==`string`?t.title.trim():``;if(n===``)return null;let r={title:n};return typeof t.imageUrl==`string`&&Zi(t.imageUrl)&&(r.imageUrl=t.imageUrl),typeof t.link==`string`&&Zi(t.link)&&(r.link=t.link),typeof t.utmContent==`string`&&t.utmContent!==``&&(r.utmContent=t.utmContent),r}function ea(e){let t=Qi(e);if(!t)return;let n=[];for(let e of t){let t=$i(e);t&&n.push(t)}return n.length>0?n:void 0}function ta(e){if(!e)return;let t;try{t=vi(e)}catch{return}if(t!==null)return ea(t)}const na=`frak:client`;function ra(){let e=new CustomEvent(na);window.dispatchEvent(e)}function ia(e,t){if(window.FrakSetup?.client&&e===`add`){t();return}(e===`add`?window.addEventListener:window.removeEventListener)(na,t,!1)}function aa(){return window.FrakSetup.core={...Si,...qi},window.FrakSetup?.client?Promise.resolve():G(()=>oa(),{cacheKey:`frak-sdk-init`,cacheTime:1/0}).catch(e=>{Z(window.FrakSetup?.client,`sdk_init_failed`,{reason:e instanceof Error?e.message:typeof e==`string`?e:`unknown`,config_missing:!window.FrakSetup?.config})})}async function oa(){if(!window.FrakSetup?.config)throw Error(`[Frak SDK] Configuration not found. Please ensure window.FrakSetup.config is set.`);console.log(`[Frak SDK] Starting initialization`);let e=await yi({config:sa(window.FrakSetup.config)});if(!e)throw Error(`[Frak SDK] Failed to create client`);window.FrakSetup.client=e,console.log(`[Frak SDK] Client initialized successfully`),ra(),Ri(e),ca()}function sa(e){return e.preload===void 0?{...e,preload:Xi()}:e}function ca(){let e=new URL(window.location.href);if(Q(e.searchParams,`frakAction`)?.toLowerCase()!==`share`)return;console.log(`[Frak SDK] Auto open share via query param`);let t=Q(e.searchParams,`link`)??void 0,n=Q(e.searchParams,`placement`)??void 0,r=ta(Q(e.searchParams,`products`));$(e.searchParams,`frakAction`),$(e.searchParams,`link`),$(e.searchParams,`placement`),$(e.searchParams,`products`),window.history.replaceState({},``,e.toString()),Ji(void 0,n,{link:t,products:r})}o.injectBase(`shared`,n),o.injectBase(`fouce`,`frak-button-share:not(:defined), frak-button-wallet:not(:defined), frak-open-in-app:not(:defined), frak-post-purchase:not(:defined), frak-banner:not(:defined) { display: none !important; }`),s(aa);const la={"button-share":()=>import(`./ButtonShare.CMTO7zcA.js`),"button-wallet":()=>import(`./ButtonWallet.Cwauxojx.js`),"open-in-app":()=>import(`./OpenInAppButton.G3VjbH1_.js`),"post-purchase":()=>import(`./PostPurchase.DFHeDsq_.js`),banner:()=>import(`./Banner.wcjTUyP1.js`)},ua=new MutationObserver(e=>{for(let{addedNodes:t}of e)for(let e of Array.from(t))e.nodeType===Node.ELEMENT_NODE&&da(e)});async function da(e){let t=e instanceof Element?e.tagName.toLowerCase():``,n=t?.startsWith(`frak-`),r=Array.from(e.querySelectorAll(`:not(:defined)`)).map(e=>e.tagName.toLowerCase()).filter(e=>e.startsWith(`frak-`));n&&!customElements.get(t)&&r.push(t);let i=[...new Set(r)];await Promise.allSettled(i.map(e=>fa(e)))}async function fa(e){if(customElements.get(e))return Promise.resolve();try{let t=e.replace(/^frak-/i,``);if(!(t in la))throw Error(`Component ${e} is not supported.`);await la[t]()}catch(e){console.error(e)}}da(document.body),ua.observe(document.documentElement,{subtree:!0,childList:!0});export{Qt as C,n as E,Zt as S,o as T,kr as _,zi as a,J as b,Ci as c,qr as d,Yr as f,Xr as g,Ir as h,Ji as i,Oi as l,Rr as m,ia as n,Li as o,Ur as p,ea as r,ki as s,aa as t,Di as u,Or as v,s as w,Z as x,Er as y};
@@ -0,0 +1 @@
1
+ function e(){return()=>{}}var t=null;function n(n,r){if(typeof document>`u`||typeof window>`u`)return;t&&t();let i=n.maxEventsPerChunk??200,a=n.flushIntervalMs??1e4,o=n.maxPayloadBytes??1048576,s=[],c=0,l=null;function u(e){if(s.length===0)return;let t=JSON.stringify(s);if(new TextEncoder().encode(t).length>o){if(s.length>1){let t=Math.floor(s.length/2),n=s.slice(0,t),r=s.slice(t),i=e&&n.some(e=>e.type===2);s=n,u(i),s=r,u(!1);return}s=[];return}let n=s[0].timestamp,i=s[s.length-1].timestamp;try{r({chunk_index:c,events_count:s.length,is_full_snapshot:e,started_at:new Date(n).toISOString(),ended_at:new Date(i).toISOString(),payload:t}),c+=1,s=[]}catch(e){throw console.error(`[ReplayRecorder] sendChunk failed`,e),e}}function d(e){let t=e||s.some(e=>e.type===2);s.length>=i?u(t):e&&s.length>0&&u(!0)}let f=n.maskAllText!==!1,p=n.unmaskTextSelector,m=e({emit(e,t){s.push(e),d(!!t)},checkoutEveryNms:a,maskAllInputs:n.maskAllInputs??!0,maskTextSelector:f?`*`:`[data-openpanel-replay-mask]`,maskTextFn:f&&p?(e,t)=>t?.closest(p)?e:e.replace(/\S/g,`*`):void 0,blockSelector:n.blockSelector??`[data-openpanel-replay-block]`,blockClass:n.blockClass,ignoreSelector:n.ignoreSelector});l=setInterval(()=>{s.length>0&&u(s.some(e=>e.type===2))},a);function h(){document.visibilityState===`hidden`&&s.length>0&&u(s.some(e=>e.type===2))}function g(){s.length>0&&u(s.some(e=>e.type===2))}document.addEventListener(`visibilitychange`,h),window.addEventListener(`pagehide`,g),t=()=>{s.length>0&&u(s.some(e=>e.type===2)),l&&=(clearInterval(l),null),document.removeEventListener(`visibilitychange`,h),window.removeEventListener(`pagehide`,g),m?.(),t=null}}function r(){t&&t()}export{n as startReplayRecorder,r as stopReplayRecorder};
@@ -1 +1 @@
1
- import{_ as e,g as t,v as n}from"./loader.js";function r(e){return Array.isArray(e)?e:e.conditions}function i(e){if(typeof e==`number`)return e;if(typeof e==`string`&&e.trim()!==``){let t=Number(e);return Number.isFinite(t)?t:void 0}}function a(e,t,n){let o=[];for(let s of r(e)){if(`logic`in s){o.push(...a(s,t,n));continue}if(s.field===t&&n.has(s.operator)){let e=i(s.value);e!=null&&o.push(e)}}return o}const o=new Set([`gt`,`gte`,`between`]),s=new Set([`gt`,`gte`]);function c(e){let t=a(e,`purchase.amount`,o);return t.length>0?Math.min(...t):void 0}function l(e){let t=a(e,`time.timestamp`,s);if(t.length!==0)return new Date(Math.min(...t)*1e3)}function u(e,t){switch(e.payoutType){case`fixed`:return e.amount[t];case`percentage`:return e.maxAmount?.[t]??0;case`tiered`:return e.tiers.reduce((e,n)=>`amount`in n?Math.max(e,n.amount[t]):e,0)}}function d(e){return e.payoutType===`percentage`?e.percent:e.payoutType===`tiered`?e.tiers.reduce((e,t)=>`percent`in t?Math.max(e,t.percent):e,0):0}function f(e,t){let n=u(e,t);return n>0?n:d(e)*1e-6}function p(r,i){let a=n(i),o=t(a);switch(r.payoutType){case`fixed`:return e(Math.round(r.amount[o]),a);case`percentage`:return`${r.percent} %`;case`tiered`:{let t=u(r,o);if(t>0)return e(Math.round(t),a);let n=d(r);return n>0?`${n} %`:e(0,a)}}}function m(e,r){if(e&&!(f(e,t(n(r)))<=0))return p(e,r)}function h(e,t){return t?e.replaceAll(`{REWARD}`,t):e.replaceAll(`{REWARD}`,``)}function g(e,t){return e.expiresAt!=null&&new Date(e.expiresAt).getTime()<=t}function _(e,t){let n=l(e.conditions);return n==null||n.getTime()<=t}function v(e,t){return t===`referee`?e.referee:e.referrer}function y(e,t,n){let r=v(e,n);return r?f(r,t):0}function b(e,r={}){let i=(r.now??new Date).getTime(),a=r.audience??`referrer`,o=t(n(r.currency)),s=(r.targetInteraction?e.filter(e=>e.interactionTypeKey===r.targetInteraction):e).filter(e=>!g(e,i)),c=s.filter(e=>_(e,i));if(c.length>0)return{campaign:c.reduce((e,t)=>y(t,o,a)>y(e,o,a)?t:e),status:`live`};let u=s.map(e=>({campaign:e,startsAt:l(e.conditions)})).filter(e=>e.startsAt!=null);if(u.length===0)return;let d=u.reduce((e,t)=>t.startsAt.getTime()<e.startsAt.getTime()?t:e);return{campaign:d.campaign,status:`upcoming`,startsAt:d.startsAt}}function x(t,n={}){let r=b(t,n);if(!r)return;let i=v(r.campaign,n.audience??`referrer`);if(!i)return;let a=m(i,n.currency);if(!a)return;let o=c(r.campaign.conditions),s=o==null?void 0:e(o,n.currency),l=r.campaign.defaultLockupSeconds,u=l&&l>0?Math.round(l/86400):void 0;return{formatted:a,payoutType:i.payoutType,minPurchaseAmount:s,lockupDurationDays:u,referrerReward:r.campaign.referrer,refereeReward:r.campaign.referee,minPurchaseValue:o??void 0}}export{m as i,b as n,h as r,x as t};
1
+ import{_ as e,v as t,y as n}from"./loader.js";function r(e){return Array.isArray(e)?e:e.conditions}function i(e){if(typeof e==`number`)return e;if(typeof e==`string`&&e.trim()!==``){let t=Number(e);return Number.isFinite(t)?t:void 0}}function a(e,t,n){let o=[];for(let s of r(e)){if(`logic`in s){o.push(...a(s,t,n));continue}if(s.field===t&&n.has(s.operator)){let e=i(s.value);e!=null&&o.push(e)}}return o}const o=new Set([`gt`,`gte`,`between`]),s=new Set([`gt`,`gte`]);function c(e){let t=a(e,`purchase.amount`,o);return t.length>0?Math.min(...t):void 0}function l(e){let t=a(e,`time.timestamp`,s);if(t.length!==0)return new Date(Math.min(...t)*1e3)}function u(e,t){switch(e.payoutType){case`fixed`:return e.amount[t];case`percentage`:return e.maxAmount?.[t]??0;case`tiered`:return e.tiers.reduce((e,n)=>`amount`in n?Math.max(e,n.amount[t]):e,0)}}function d(e){return e.payoutType===`percentage`?e.percent:e.payoutType===`tiered`?e.tiers.reduce((e,t)=>`percent`in t?Math.max(e,t.percent):e,0):0}function f(e,t){let n=u(e,t);return n>0?n:d(e)*1e-6}function p(r,i){let a=n(i),o=e(a);switch(r.payoutType){case`fixed`:return t(Math.round(r.amount[o]),a);case`percentage`:return`${r.percent} %`;case`tiered`:{let e=u(r,o);if(e>0)return t(Math.round(e),a);let n=d(r);return n>0?`${n} %`:t(0,a)}}}function m(t,r){if(t&&!(f(t,e(n(r)))<=0))return p(t,r)}function h(e,t){return t?e.replaceAll(`{REWARD}`,t):e.replaceAll(`{REWARD}`,``)}function g(e,t){return e.expiresAt!=null&&new Date(e.expiresAt).getTime()<=t}function _(e,t){let n=l(e.conditions);return n==null||n.getTime()<=t}function v(e,t){return t===`referee`?e.referee:e.referrer}function y(e,t,n){let r=v(e,n);return r?f(r,t):0}function b(t,r={}){let i=(r.now??new Date).getTime(),a=r.audience??`referrer`,o=e(n(r.currency)),s=(r.targetInteraction?t.filter(e=>e.interactionTypeKey===r.targetInteraction):t).filter(e=>!g(e,i)),c=s.filter(e=>_(e,i));if(c.length>0)return{campaign:c.reduce((e,t)=>y(t,o,a)>y(e,o,a)?t:e),status:`live`};let u=s.map(e=>({campaign:e,startsAt:l(e.conditions)})).filter(e=>e.startsAt!=null);if(u.length===0)return;let d=u.reduce((e,t)=>t.startsAt.getTime()<e.startsAt.getTime()?t:e);return{campaign:d.campaign,status:`upcoming`,startsAt:d.startsAt}}function x(e,n={}){let r=b(e,n);if(!r)return;let i=v(r.campaign,n.audience??`referrer`);if(!i)return;let a=m(i,n.currency);if(!a)return;let o=c(r.campaign.conditions),s=o==null?void 0:t(o,n.currency),l=r.campaign.defaultLockupSeconds,u=l&&l>0?Math.round(l/86400):void 0;return{formatted:a,payoutType:i.payoutType,minPurchaseAmount:s,lockupDurationDays:u,referrerReward:r.campaign.referrer,refereeReward:r.campaign.referee,minPurchaseValue:o??void 0}}export{m as i,b as n,h as r,x as t};
@@ -0,0 +1 @@
1
+ import{b as e}from"./loader.js";import{c as t,o as n}from"./defaults.DNO3nf63.js";function r(){return t(n,()=>e.getConfig().components)}export{r as t};
@@ -0,0 +1 @@
1
+ import{T as e}from"./loader.js";import{f as t,i as n}from"./defaults.DNO3nf63.js";function r(r,i,a,o,s){t(()=>{s&&e.injectBase(`shared`,s),e.injectBase(r,o??n)},[r]),t(()=>{!i||!a||e.injectPlacement(r,i,a)},[r,i,a])}export{r as t};
@@ -1 +1 @@
1
- import{c as e}from"./loader.js";import{d as t,p as n}from"./defaults.kWEdCyGS.js";import{t as r}from"./rewards.CIu9qbmI.js";function i(i,a,o){let[s,c]=t(void 0);return n(()=>{if(!i)return;let t=window.FrakSetup?.client;t&&e(t).then(e=>{let n=r(e.rewards,{currency:t.config.metadata?.currency,targetInteraction:a,audience:o});n&&n.payoutType!==`percentage`&&c(n.formatted)}).catch(()=>{})},[i,a,o]),{reward:s}}export{i as t};
1
+ import{u as e}from"./loader.js";import{d as t,f as n}from"./defaults.DNO3nf63.js";import{t as r}from"./rewards.usw1vliR.js";function i(i,a,o){let[s,c]=t(void 0);return n(()=>{if(!i)return;let t=window.FrakSetup?.client;t&&e(t).then(e=>{let n=r(e.rewards,{currency:t.config.metadata?.currency,targetInteraction:a,audience:o});n&&n.payoutType!==`percentage`&&c(n.formatted)}).catch(()=>{})},[i,a,o]),{reward:s}}export{i as t};
@@ -1,7 +1,7 @@
1
1
  import "preact/hooks";
2
2
  import { jsx, jsxs } from "preact/jsx-runtime";
3
3
  import { Component, Fragment as Fragment$1, createElement, options, toChildArray } from "preact";
4
- //#region ../../node_modules/.bun/preact@10.29.2/node_modules/preact/compat/dist/compat.module.js
4
+ //#region ../../node_modules/.bun/preact@10.29.7/node_modules/preact/compat/dist/compat.module.js
5
5
  function g(n, t) {
6
6
  for (var e in t) n[e] = t[e];
7
7
  return n;
@@ -25,7 +25,7 @@ options.__b = function(n) {
25
25
  var O = options.__e;
26
26
  options.__e = function(n, t, e, r) {
27
27
  if (n.then) {
28
- for (var u, o = t; o = o.__;) if ((u = o.__c) && u.__c) return t.__e ?? (t.__e = e.__e, t.__k = e.__k), u.__c(n, t);
28
+ for (var u, o = t; o = o.__;) if ((u = o.__c) && u.__c) return t.__e ?? (t.__e = e.__e, t.__k = e.__k || []), u.__c(n, t);
29
29
  }
30
30
  O(n, t, e, r);
31
31
  };
@@ -119,7 +119,12 @@ var H = function(n, t, e) {
119
119
  H(n, e, t);
120
120
  });
121
121
  };
122
- var q = "undefined" != typeof Symbol && Symbol.for && Symbol.for("react.element") || 60103, G = /^(?:accent|alignment|arabic|baseline|cap|clip(?!PathU)|color|dominant|fill|flood|font|glyph(?!R)|horiz|image(!S)|letter|lighting|marker(?!H|W|U)|overline|paint|pointer|shape|stop|strikethrough|stroke|text(?!L)|transform|underline|unicode|units|v|vector|vert|word|writing|x(?!C))[A-Z]/, J = /^on(Ani|Tra|Tou|BeforeInp|Compo)/, K = /[A-Z0-9]/g, Q = "undefined" != typeof document, X = function(n) {
122
+ var q = "undefined" != typeof Symbol && Symbol.for && Symbol.for("react.element") || 60103;
123
+ var G = /^(?:accent|alignment|arabic|baseline|cap|clip(?!PathU)|color|dominant|fill|flood|font|glyph(?!R)|horiz|image(!S)|letter|lighting|marker(?!H|W|U)|overline|paint|pointer|shape|stop|strikethrough|stroke|text(?!L)|transform|underline|unicode|units|v|vector|vert|word|writing|x(?!C))[A-Z]/;
124
+ var J = /^on(Ani|Tra|Tou|BeforeInp|Compo)/;
125
+ var K = /[A-Z0-9]/g;
126
+ var Q = "undefined" != typeof document;
127
+ var X = function(n) {
123
128
  return ("undefined" != typeof Symbol && "symbol" == typeof Symbol() ? /fil|che|rad/ : /fil|che|ra/).test(n);
124
129
  };
125
130
  Component.prototype.isReactComponent = !0, [
@@ -154,7 +159,8 @@ var un = {
154
159
  get: function() {
155
160
  return this.class;
156
161
  }
157
- }, on = options.vnode;
162
+ };
163
+ var on = options.vnode;
158
164
  options.vnode = function(n) {
159
165
  "string" == typeof n.type && function(n) {
160
166
  var t = n.props, e = n.type, u = {}, o = -1 == e.indexOf("-");
package/dist/banner.d.ts CHANGED
@@ -1,5 +1,4 @@
1
1
  import { InteractionTypeKey } from "@frak-labs/core-sdk";
2
-
3
2
  //#region src/components/Banner/types.d.ts
4
3
  /**
5
4
  * The props type for {@link Banner}.
@@ -108,21 +107,7 @@ type BannerProps = {
108
107
  * <frak-banner classname="my-custom-banner"></frak-banner>
109
108
  * ```
110
109
  */
111
- declare function Banner({
112
- placement: placementId,
113
- classname,
114
- interaction,
115
- referralTitle: propReferralTitle,
116
- referralDescription: propReferralDescription,
117
- referralCta: propReferralCta,
118
- inappTitle: propInappTitle,
119
- inappDescription: propInappDescription,
120
- inappCta: propInappCta,
121
- imageUrl: propImageUrl,
122
- preview,
123
- previewMode,
124
- allowInappRedirect
125
- }: BannerProps): import("preact").JSX.Element | null;
110
+ declare function Banner({ placement: placementId, classname, interaction, referralTitle: propReferralTitle, referralDescription: propReferralDescription, referralCta: propReferralCta, inappTitle: propInappTitle, inappDescription: propInappDescription, inappCta: propInappCta, imageUrl: propImageUrl, preview, previewMode, allowInappRedirect }: BannerProps): import("preact").JSX.Element | null;
126
111
  //#endregion
127
112
  //#region src/components/Banner/index.d.ts
128
113
  /**
package/dist/banner.js CHANGED
@@ -1,16 +1,32 @@
1
- import { i as useLang, o as useClientReady, s as registerWebComponent, t as usePlacement } from "./usePlacement-4PoDbn2X.js";
2
- import { t as useGlobalComponents } from "./useGlobalComponents-CZ7Sh2tZ.js";
3
- import { t as useLightDomStyles } from "./useLightDomStyles-DphuQhvx.js";
4
- import { r as b } from "./rewards-VoZGH2Ko.js";
5
- import { t as useReward } from "./useReward-BGgymGoH.js";
1
+ import { i as useLang, o as useClientReady, s as registerWebComponent, t as usePlacement } from "./usePlacement-NZOjZ6IR.js";
2
+ import { t as useGlobalComponents } from "./useGlobalComponents-Da9LDlRy.js";
3
+ import { t as useLightDomStyles } from "./useLightDomStyles-DRkTVy4s.js";
4
+ import { r as b } from "./rewards-BtPHdGcI.js";
5
+ import { t as useReward } from "./useReward-B-yZ7nhY.js";
6
6
  import { componentDefaults } from "./i18n/defaults.js";
7
- import { a as ExternalLinkIcon, i as LogoFrakWithName, n as cssSource$5, o as CloseCircleIcon, r as WarningIcon, t as GiftIcon } from "./GiftIcon-BEzYdiux.js";
7
+ import { a as ExternalLinkIcon, i as LogoFrakWithName, n as cssSource$5, o as CloseCircleIcon, r as WarningIcon, t as GiftIcon } from "./GiftIcon-BhL0bhVu.js";
8
8
  import { isInAppBrowser, redirectToExternalBrowser, trackEvent } from "@frak-labs/core-sdk";
9
9
  import { REFERRAL_SUCCESS_EVENT, getMergeToken } from "@frak-labs/core-sdk/actions";
10
10
  import { useCallback, useEffect, useMemo, useRef, useState } from "preact/hooks";
11
11
  import { jsx, jsxs } from "preact/jsx-runtime";
12
12
  //#region \0ve-inline:../../packages/design-system/src/keyframes.css.ts.vanilla.js
13
13
  const cssSource$4 = `@keyframes keyframes_fadeIn__mnqmlt0 {
14
+ from {
15
+ opacity: 0;
16
+ }
17
+ to {
18
+ opacity: 1;
19
+ }
20
+ }
21
+ @keyframes keyframes_fadeOut__mnqmlt1 {
22
+ from {
23
+ opacity: 1;
24
+ }
25
+ to {
26
+ opacity: 0;
27
+ }
28
+ }
29
+ @keyframes keyframes_fadeInDown__mnqmlt2 {
14
30
  from {
15
31
  opacity: 0;
16
32
  transform: translateY(-4px);
@@ -38,7 +54,7 @@ const cssSource$3 = `.inAppBanner_container__1ibpiy70 {
38
54
  backdrop-filter: blur(12px);
39
55
  -webkit-backdrop-filter: blur(12px);
40
56
  color: var(--text-onAction__pbq4ak6);
41
- animation: keyframes_fadeIn__mnqmlt0 300ms ease-out;
57
+ animation: keyframes_fadeInDown__mnqmlt2 300ms ease-out;
42
58
  }
43
59
  .inAppBanner_header__1ibpiy71 {
44
60
  display: flex;
@@ -175,7 +191,7 @@ function InAppBanner({ title: title$1, description: description$1, cta: cta$1, d
175
191
  const cssSource$1 = `.Banner_rootBase__1gnumzi0 {
176
192
  position: relative;
177
193
  display: flex;
178
- animation: keyframes_fadeIn__mnqmlt0 300ms ease-out;
194
+ animation: keyframes_fadeInDown__mnqmlt2 300ms ease-out;
179
195
  }
180
196
  .Banner_iconSvg__1gnumzi1 {
181
197
  width: 100%;
@@ -1,5 +1,4 @@
1
1
  import { InteractionTypeKey } from "@frak-labs/core-sdk";
2
-
3
2
  //#region src/components/ButtonShare/types.d.ts
4
3
  /**
5
4
  * The props type for {@link ButtonShare}.
@@ -17,7 +16,8 @@ type ButtonShareProps = {
17
16
  * stripped if no fallback is provided).
18
17
  *
19
18
  * When omitted, a built-in localized default is used based on the
20
- * resolved language (`"Share and earn!"` / `"Partagez et gagnez !"`).
19
+ * resolved language (`"Share & earn {REWARD}!"` / `"Partagez et gagnez
20
+ * {REWARD} !"`) — mirroring the dashboard's first wording preset.
21
21
  */
22
22
  text?: string;
23
23
  /**
@@ -97,15 +97,7 @@ type ButtonShareProps = {
97
97
  * @see {@link @frak-labs/core-sdk!actions.displaySharingPage | `displaySharingPage()`} for more info about the sharing-page flow
98
98
  * @see {@link @frak-labs/core-sdk!actions.getMerchantInformation | `getMerchantInformation()`} for more info about the estimated reward fetching
99
99
  */
100
- declare function ButtonShare({
101
- placement: placementId,
102
- text,
103
- classname,
104
- noRewardText,
105
- targetInteraction,
106
- clickAction: rawClickAction,
107
- preview
108
- }: ButtonShareProps): import("preact").JSX.Element | null;
100
+ declare function ButtonShare({ placement: placementId, text, classname, noRewardText, targetInteraction, clickAction: rawClickAction, preview }: ButtonShareProps): import("preact").JSX.Element | null;
109
101
  //#endregion
110
102
  //#region src/components/ButtonShare/index.d.ts
111
103
  /**
@@ -1,9 +1,9 @@
1
- import { i as useLang, l as openSharingPage, o as useClientReady, s as registerWebComponent, t as usePlacement } from "./usePlacement-4PoDbn2X.js";
2
- import { t as openEmbeddedWallet } from "./embeddedWallet-By3_p5Xc.js";
3
- import { t as useGlobalComponents } from "./useGlobalComponents-CZ7Sh2tZ.js";
4
- import { t as useLightDomStyles } from "./useLightDomStyles-DphuQhvx.js";
5
- import { r as b } from "./rewards-VoZGH2Ko.js";
6
- import { t as useReward } from "./useReward-BGgymGoH.js";
1
+ import { i as useLang, l as openSharingPage, o as useClientReady, s as registerWebComponent, t as usePlacement } from "./usePlacement-NZOjZ6IR.js";
2
+ import { t as openEmbeddedWallet } from "./embeddedWallet-CxgyuwtP.js";
3
+ import { t as useGlobalComponents } from "./useGlobalComponents-Da9LDlRy.js";
4
+ import { t as useLightDomStyles } from "./useLightDomStyles-DRkTVy4s.js";
5
+ import { r as b } from "./rewards-BtPHdGcI.js";
6
+ import { t as useReward } from "./useReward-B-yZ7nhY.js";
7
7
  import { componentDefaults } from "./i18n/defaults.js";
8
8
  import { trackEvent } from "@frak-labs/core-sdk";
9
9
  import { useCallback, useMemo } from "preact/hooks";
@@ -1,5 +1,4 @@
1
1
  import { InteractionTypeKey } from "@frak-labs/core-sdk";
2
-
3
2
  //#region src/components/ButtonWallet/types.d.ts
4
3
  /**
5
4
  * The props type for {@link ButtonWallet}.
@@ -64,12 +63,7 @@ type ButtonWalletProps = {
64
63
  * @see {@link @frak-labs/core-sdk!actions.modalBuilder | `modalBuilder()`} for more info about the modal display
65
64
  * @see {@link @frak-labs/core-sdk!actions.getMerchantInformation | `getMerchantInformation()`} for more info about the estimated reward fetching
66
65
  */
67
- declare function ButtonWallet({
68
- placement: placementId,
69
- classname,
70
- useReward: rawUseReward,
71
- targetInteraction
72
- }: ButtonWalletProps): import("preact").JSX.Element | null;
66
+ declare function ButtonWallet({ placement: placementId, classname, useReward: rawUseReward, targetInteraction }: ButtonWalletProps): import("preact").JSX.Element | null;
73
67
  //#endregion
74
68
  //#region src/components/ButtonWallet/index.d.ts
75
69
  /**
@@ -1,6 +1,6 @@
1
- import { i as useLang, n as buildStyleContent, o as useClientReady, s as registerWebComponent, t as usePlacement } from "./usePlacement-4PoDbn2X.js";
2
- import { t as openEmbeddedWallet } from "./embeddedWallet-By3_p5Xc.js";
3
- import { t as useReward } from "./useReward-BGgymGoH.js";
1
+ import { i as useLang, n as buildStyleContent, o as useClientReady, s as registerWebComponent, t as usePlacement } from "./usePlacement-NZOjZ6IR.js";
2
+ import { t as openEmbeddedWallet } from "./embeddedWallet-CxgyuwtP.js";
3
+ import { t as useReward } from "./useReward-B-yZ7nhY.js";
4
4
  import { componentDefaults } from "./i18n/defaults.js";
5
5
  import { useEffect, useMemo, useState } from "preact/hooks";
6
6
  import { Fragment, jsx, jsxs } from "preact/jsx-runtime";
@@ -1,5 +1,4 @@
1
1
  import { Language } from "@frak-labs/core-sdk";
2
-
3
2
  //#region src/i18n/defaults.d.ts
4
3
  /**
5
4
  * Shape of the built-in copy for every SDK Web Component. Declared explicitly
@@ -26,7 +25,9 @@ type ComponentCopy = {
26
25
  ariaLabel: string;
27
26
  };
28
27
  banner: {
29
- /** Referral title used when an estimated reward is available (carries the `{REWARD}` token). */referralTitleReward: string; /** Referral title used when no reward could be resolved. */
28
+ /** Referral title used when an estimated reward is available (carries the `{REWARD}` token). */
29
+ referralTitleReward: string;
30
+ /** Referral title used when no reward could be resolved. */
30
31
  referralTitle: string;
31
32
  referralDescription: string;
32
33
  referralCta: string;