@stitch-money/client 3.5.0 → 3.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/build/index.js CHANGED
@@ -1,15 +1,15 @@
1
1
  "use client"
2
- var lt=Object.create;var J=Object.defineProperty,ft=Object.defineProperties,pt=Object.getOwnPropertyDescriptor,dt=Object.getOwnPropertyDescriptors,yt=Object.getOwnPropertyNames,U=Object.getOwnPropertySymbols,gt=Object.getPrototypeOf,Y=Object.prototype.hasOwnProperty,fe=Object.prototype.propertyIsEnumerable;var B=(e,t,r)=>t in e?J(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,w=(e,t)=>{for(var r in t||(t={}))Y.call(t,r)&&B(e,r,t[r]);if(U)for(var r of U(t))fe.call(t,r)&&B(e,r,t[r]);return e},pe=(e,t)=>ft(e,dt(t));var de=(e,t)=>{var r={};for(var n in e)Y.call(e,n)&&t.indexOf(n)<0&&(r[n]=e[n]);if(e!=null&&U)for(var n of U(e))t.indexOf(n)<0&&fe.call(e,n)&&(r[n]=e[n]);return r};var mt=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var ht=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let i of yt(t))!Y.call(e,i)&&i!==r&&J(e,i,{get:()=>t[i],enumerable:!(n=pt(t,i))||n.enumerable});return e};var Rt=(e,t,r)=>(r=e!=null?lt(gt(e)):{},ht(t||!e||!e.__esModule?J(r,"default",{value:e,enumerable:!0}):r,e));var E=(e,t,r)=>(B(e,typeof t!="symbol"?t+"":t,r),r);var m=(e,t,r)=>new Promise((n,i)=>{var s=a=>{try{u(r.next(a))}catch(c){i(c)}},o=a=>{try{u(r.throw(a))}catch(c){i(c)}},u=a=>a.done?n(a.value):Promise.resolve(a.value).then(s,o);u((r=r.apply(e,t)).next())});var Ie=mt((vr,Oe)=>{"use strict";var Z=class e extends Error{constructor(t){super(e._prepareSuperMessage(t)),Object.defineProperty(this,"name",{value:"NonError",configurable:!0,writable:!0}),Error.captureStackTrace&&Error.captureStackTrace(this,e)}static _prepareSuperMessage(t){try{return JSON.stringify(t)}catch(r){return String(t)}}},It=[{property:"name",enumerable:!1},{property:"message",enumerable:!1},{property:"stack",enumerable:!1},{property:"code",enumerable:!0}],Q=Symbol(".toJSON called"),At=e=>{e[Q]=!0;let t=e.toJSON();return delete e[Q],t},ee=({from:e,seen:t,to_:r,forceEnumerable:n,maxDepth:i,depth:s})=>{let o=r||(Array.isArray(e)?[]:{});if(t.push(e),s>=i)return o;if(typeof e.toJSON=="function"&&e[Q]!==!0)return At(e);for(let[u,a]of Object.entries(e)){if(typeof Buffer=="function"&&Buffer.isBuffer(a)){o[u]="[object Buffer]";continue}if(typeof a!="function"){if(!a||typeof a!="object"){o[u]=a;continue}if(!t.includes(e[u])){s++,o[u]=ee({from:e[u],seen:t.slice(),forceEnumerable:n,maxDepth:i,depth:s});continue}o[u]="[Circular]"}}for(let{property:u,enumerable:a}of It)typeof e[u]=="string"&&Object.defineProperty(o,u,{value:e[u],enumerable:n?!0:a,configurable:!0,writable:!0});return o},Tt=(e,t={})=>{let{maxDepth:r=Number.POSITIVE_INFINITY}=t;return typeof e=="object"&&e!==null?ee({from:e,seen:[],forceEnumerable:!0,maxDepth:r,depth:0}):typeof e=="function"?`[Function: ${e.name||"anonymous"}]`:e},Nt=(e,t={})=>{let{maxDepth:r=Number.POSITIVE_INFINITY}=t;if(e instanceof Error)return e;if(typeof e=="object"&&e!==null&&!Array.isArray(e)){let n=new Error;return ee({from:e,seen:[],to_:n,maxDepth:r,depth:0}),n}return new Z(e)};Oe.exports={serializeError:Tt,deserializeError:Nt}});var ye=(n=>(n.ApplePay="APPLE_PAY",n.SamsungPay="SAMSUNG_PAY",n.GooglePay="GOOGLE_PAY",n))(ye||{});var C=function(){return C=Object.assign||function(t){for(var r,n=1,i=arguments.length;n<i;n++){r=arguments[n];for(var s in r)Object.prototype.hasOwnProperty.call(r,s)&&(t[s]=r[s])}return t},C.apply(this,arguments)};function ge(e,t){var r={};for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&t.indexOf(n)<0&&(r[n]=e[n]);if(e!=null&&typeof Object.getOwnPropertySymbols=="function")for(var i=0,n=Object.getOwnPropertySymbols(e);i<n.length;i++)t.indexOf(n[i])<0&&Object.prototype.propertyIsEnumerable.call(e,n[i])&&(r[n[i]]=e[n[i]]);return r}function me(e,t,r){if(r||arguments.length===2)for(var n=0,i=t.length,s;n<i;n++)(s||!(n in t))&&(s||(s=Array.prototype.slice.call(t,0,n)),s[n]=t[n]);return e.concat(s||Array.prototype.slice.call(t))}function bt(e,t){return function(r,n){return Object.prototype.hasOwnProperty.call(r,n)}(e,t)?e[t]:void 0}function Et(e,t,r,n){var i,s=document,o="securitypolicyviolation",u=function(c){var l=new URL(e,location.href),f=c.blockedURI;f!==l.href&&f!==l.protocol.slice(0,-1)&&f!==l.origin||(i=c,a())};s.addEventListener(o,u);var a=function(){return s.removeEventListener(o,u)};return n==null||n.then(a,a),Promise.resolve().then(t).then(function(c){return a(),c},function(c){return new Promise(function(l){var f=new MessageChannel;f.port1.onmessage=function(){return l()},f.port2.postMessage(null)}).then(function(){if(a(),i)return r(i);throw c})})}var he={default:"endpoint"};var Re="Blocked by CSP",be="The endpoint parameter is not a valid URL";var _t="API key required";var St="3.11.4",q="Failed to load the JS script of the agent",W="9319";function Pt(e,t){var r,n,i,s,o,u,a,c=[],l=(r=function(d){var g=me([],d,!0);return{current:function(){return g[0]},postpone:function(){var h=g.shift();h!==void 0&&g.push(h)},exclude:function(){g.shift()}}}(e),s=100,o=3e3,u=0,n=function(){return Math.random()*Math.min(o,s*Math.pow(2,u++))},i=new Set,[r.current(),function(d,g){var h,b=g instanceof Error?g.message:"";if(b===Re||b===be)r.exclude(),h=0;else if(b===W)r.exclude();else if(b===q){var A=Date.now()-d.getTime()<50,v=r.current();v&&A&&!i.has(v)&&(i.add(v),h=0),r.postpone()}else r.postpone();var x=r.current();return x===void 0?void 0:[x,h!=null?h:d.getTime()+n()-Date.now()]}]),f=l[0],p=l[1];if(f===void 0)return Promise.reject(new TypeError("The list of script URL patterns is empty"));var y=function(d){var g=new Date,h=function(A){return c.push({url:d,startedAt:g,finishedAt:new Date,error:A})},b=t(d);return b.then(function(){return h()},h),b.catch(function(A){if(a!=null||(a=A),c.length>=5)throw a;var v=p(g,A);if(!v)throw a;var x,st=v[0],ut=v[1];return(x=ut,new Promise(function(ct){return setTimeout(ct,x)})).then(function(){return y(st)})})};return y(f).then(function(d){return[d,c]})}var Ee="https://fpnpmcdn.net/v<version>/<apiKey>/loader_v<loaderVersion>.js",_e=Ee;function Se(e){var t;e.scriptUrlPattern;var r=e.token,n=e.apiKey,i=n===void 0?r:n,s=ge(e,["scriptUrlPattern","token","apiKey"]),o=(t=bt(e,"scriptUrlPattern"))!==null&&t!==void 0?t:Ee,u=function(){var l=[],f=function(){l.push({time:new Date,state:document.visibilityState})},p=function(y,d,g,h){return y.addEventListener(d,g,h),function(){return y.removeEventListener(d,g,h)}}(document,"visibilitychange",f);return f(),[l,p]}(),a=u[0],c=u[1];return Promise.resolve().then(function(){if(!i||typeof i!="string")throw new Error(_t);var l=function(f,p){return(Array.isArray(f)?f:[f]).map(function(y){return function(d,g){var h=encodeURIComponent;return d.replace(/<[^<>]+>/g,function(b){return b==="<version>"?"3":b==="<apiKey>"?h(g):b==="<loaderVersion>"?h(St):b})}(String(y),p)})}(o,i);return Pt(l,vt)}).catch(function(l){throw c(),function(f){return f instanceof Error&&f.message===W?new Error(q):f}(l)}).then(function(l){var f=l[0],p=l[1];return c(),f.load(C(C({},s),{ldi:{attempts:p,visibilityStates:a}}))})}function vt(e){return Et(e,function(){return function(t){return new Promise(function(r,n){if(function(u){if(URL.prototype)try{return new URL(u,location.href),!1}catch(a){if(a instanceof Error&&a.name==="TypeError")return!0;throw a}}(t))throw new Error(be);var i=document.createElement("script"),s=function(){var u;return(u=i.parentNode)===null||u===void 0?void 0:u.removeChild(i)},o=document.head||document.getElementsByTagName("head")[0];i.onload=function(){s(),r()},i.onerror=function(){s(),n(new Error(q))},i.async=!0,i.src=t,o.appendChild(i)})}(e)},function(){throw new Error(Re)}).then(wt)}function wt(){var e=window,t="__fpjs_p_l_b",r=e[t];if(function(n,i){var s,o=(s=Object.getOwnPropertyDescriptor)===null||s===void 0?void 0:s.call(Object,n,i);o!=null&&o.configurable?delete n[i]:o&&!o.writable||(n[i]=void 0)}(e,t),typeof(r==null?void 0:r.load)!="function")throw new Error(W);return r}var H,X;function Pe(e){let t="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",r="";for(let n=0;n<e;n++)r+=t.charAt(Math.floor(Math.random()*t.length));return r}function ve(t){return m(this,arguments,function*({config:e}){return yield Se({apiKey:e.publicKey,endpoint:[e.endpoint,he],scriptUrlPattern:[e.scriptUrlPattern,_e],region:"eu"})})}function we(i){return m(this,arguments,function*({config:e,clientId:t,agent:r,payerId:n}){if((e==null?void 0:e.disabled)===!0){let o={disabled:!0,emulated:!1,fingerprintDetails:{timestamp:new Date().toISOString(),requestId:"",visitorId:""}};return btoa(JSON.stringify(o))}if((e==null?void 0:e.disabled)===!1&&(e!=null&&e.useEmulation)&&(t!=null&&t.startsWith("test"))){let o={disabled:!1,emulated:!0,fingerprintDetails:{timestamp:new Date().toISOString(),requestId:`${Date.now()}.${Pe(6)}`,visitorId:Pe(20)}};return btoa(JSON.stringify(o))}if(r!==void 0&&(e==null?void 0:e.disabled)===!1){let o=Date.now();if(H!==void 0&&X!==void 0&&o-X<e.cacheDurationInSeconds*1e3)return btoa(JSON.stringify(H));try{let u=yield r.get({linkedId:t,tag:{payerId:n}}),a={disabled:!1,emulated:!1,fingerprintDetails:{timestamp:new Date().toISOString(),requestId:u.requestId,visitorId:u.visitorId}};return H=a,X=o,btoa(JSON.stringify(a))}catch(u){let a={error:{outcome:"Failed",message:`Error: ${JSON.stringify(u)}`}};return btoa(JSON.stringify(a))}}return btoa(JSON.stringify({error:{outcome:"Failed",message:"Attempted to get fingerprint data but either runtime config or the agent are not present"}}))})}var Ae=Rt(Ie());function te(){return typeof crypto!="undefined"&&crypto.randomUUID?crypto.randomUUID():"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,function(e){let t=Math.random()*16|0;return(e==="x"?t:t&3|8).toString(16)})}var xt="https://analytics.stitch.money/query",Te={loggingUrl:xt},re={};function ne(e={}){let n=e,{loggingUrl:t}=n,r=de(n,["loggingUrl"]);typeof t=="string"&&t.length>0&&(Te.loggingUrl=t),re=w(w({sessionId:te()},re),r)}function Ct(){var e,t,r;return((t=(e=window==null?void 0:window.location)==null?void 0:e.ancestorOrigins)==null?void 0:t.length)>0?Object.values((r=window==null?void 0:window.location)==null?void 0:r.ancestorOrigins).join(","):(document==null?void 0:document.referrer)||void 0}function _(e,t,r){return m(this,null,function*(){try{yield fetch(Te.loggingUrl,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({type:"LOG_ERROR",error:{message:e,error:(0,Ae.serializeError)(t),metadata:w(w({hostname:Ct()},re),r)}})})}catch(n){}})}function Dt(e){return typeof e=="number"}function Mt(e){return typeof e=="string"}function jt(e){return typeof e=="bigint"}function xe(e){return!!e&&Object.prototype.toString.call(e)==="[object Date]"&&!isNaN(e)}function Ce(e){return e!=null&&typeof e=="object"&&Object.prototype.toString.call(e)==="[object Object]"}var De=new WeakSet;function D(e){return De.add(e),e}function Me(e,t){return D({type:"object",fields:e,text:t})}function kt(e,t){return D({type:"array",items:e,text:t})}function F(e,t){return D({type:"opaque",value:e,text:t})}function $t(e,t){return D({type:"scalar",value:e,text:t})}function je(e,t){return t!==void 0?D(pe(w({},e),{text:t})):e}function ke(e,t){let r=new Map([...e.fields,...t]);return Me(r,e.text)}function $e(e){return De.has(e)}function Ut(e,t,r){r.add(e);let n=[];for(let i of e)n.push(ae(i,void 0,r));return kt(n,t)}function Ue(e,t,r){r.add(e);let n=new Map;for(let i of Object.keys(e)){let s=e[i];n.set(i,ae(s,void 0,r))}return Me(n,t)}function ae(e,t,r){return e==null||typeof e=="string"||typeof e=="number"||typeof e=="boolean"||typeof e=="symbol"||typeof e.getMonth=="function"?$t(e,t):$e(e)?je(e,t):Array.isArray(e)?r.has(e)?F("<circular ref>",t):Ut(e,t,r):Ce(e)?r.has(e)?F("<circular ref>",t):Ue(e,t,r):F(typeof e=="function"?"<function>":"???",t)}function O(e,t){return ae(e,t,new WeakSet)}function Fe(e,t){return Ue(e,t,new WeakSet)}var I=" ";function ie(e){return e.indexOf(`
2
+ var ct=Object.create;var J=Object.defineProperty,lt=Object.defineProperties,ft=Object.getOwnPropertyDescriptor,pt=Object.getOwnPropertyDescriptors,dt=Object.getOwnPropertyNames,U=Object.getOwnPropertySymbols,yt=Object.getPrototypeOf,Y=Object.prototype.hasOwnProperty,fe=Object.prototype.propertyIsEnumerable;var B=(e,t,r)=>t in e?J(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,w=(e,t)=>{for(var r in t||(t={}))Y.call(t,r)&&B(e,r,t[r]);if(U)for(var r of U(t))fe.call(t,r)&&B(e,r,t[r]);return e},pe=(e,t)=>lt(e,pt(t));var de=(e,t)=>{var r={};for(var n in e)Y.call(e,n)&&t.indexOf(n)<0&&(r[n]=e[n]);if(e!=null&&U)for(var n of U(e))t.indexOf(n)<0&&fe.call(e,n)&&(r[n]=e[n]);return r};var gt=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var mt=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let i of dt(t))!Y.call(e,i)&&i!==r&&J(e,i,{get:()=>t[i],enumerable:!(n=ft(t,i))||n.enumerable});return e};var ht=(e,t,r)=>(r=e!=null?ct(yt(e)):{},mt(t||!e||!e.__esModule?J(r,"default",{value:e,enumerable:!0}):r,e));var E=(e,t,r)=>(B(e,typeof t!="symbol"?t+"":t,r),r);var m=(e,t,r)=>new Promise((n,i)=>{var s=a=>{try{u(r.next(a))}catch(c){i(c)}},o=a=>{try{u(r.throw(a))}catch(c){i(c)}},u=a=>a.done?n(a.value):Promise.resolve(a.value).then(s,o);u((r=r.apply(e,t)).next())});var Ie=gt((Pr,Oe)=>{"use strict";var Z=class e extends Error{constructor(t){super(e._prepareSuperMessage(t)),Object.defineProperty(this,"name",{value:"NonError",configurable:!0,writable:!0}),Error.captureStackTrace&&Error.captureStackTrace(this,e)}static _prepareSuperMessage(t){try{return JSON.stringify(t)}catch(r){return String(t)}}},Ot=[{property:"name",enumerable:!1},{property:"message",enumerable:!1},{property:"stack",enumerable:!1},{property:"code",enumerable:!0}],Q=Symbol(".toJSON called"),It=e=>{e[Q]=!0;let t=e.toJSON();return delete e[Q],t},ee=({from:e,seen:t,to_:r,forceEnumerable:n,maxDepth:i,depth:s})=>{let o=r||(Array.isArray(e)?[]:{});if(t.push(e),s>=i)return o;if(typeof e.toJSON=="function"&&e[Q]!==!0)return It(e);for(let[u,a]of Object.entries(e)){if(typeof Buffer=="function"&&Buffer.isBuffer(a)){o[u]="[object Buffer]";continue}if(typeof a!="function"){if(!a||typeof a!="object"){o[u]=a;continue}if(!t.includes(e[u])){s++,o[u]=ee({from:e[u],seen:t.slice(),forceEnumerable:n,maxDepth:i,depth:s});continue}o[u]="[Circular]"}}for(let{property:u,enumerable:a}of Ot)typeof e[u]=="string"&&Object.defineProperty(o,u,{value:e[u],enumerable:n?!0:a,configurable:!0,writable:!0});return o},At=(e,t={})=>{let{maxDepth:r=Number.POSITIVE_INFINITY}=t;return typeof e=="object"&&e!==null?ee({from:e,seen:[],forceEnumerable:!0,maxDepth:r,depth:0}):typeof e=="function"?`[Function: ${e.name||"anonymous"}]`:e},Tt=(e,t={})=>{let{maxDepth:r=Number.POSITIVE_INFINITY}=t;if(e instanceof Error)return e;if(typeof e=="object"&&e!==null&&!Array.isArray(e)){let n=new Error;return ee({from:e,seen:[],to_:n,maxDepth:r,depth:0}),n}return new Z(e)};Oe.exports={serializeError:At,deserializeError:Tt}});var ye=(n=>(n.ApplePay="APPLE_PAY",n.SamsungPay="SAMSUNG_PAY",n.GooglePay="GOOGLE_PAY",n))(ye||{});var C=function(){return C=Object.assign||function(t){for(var r,n=1,i=arguments.length;n<i;n++){r=arguments[n];for(var s in r)Object.prototype.hasOwnProperty.call(r,s)&&(t[s]=r[s])}return t},C.apply(this,arguments)};function ge(e,t){var r={};for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&t.indexOf(n)<0&&(r[n]=e[n]);if(e!=null&&typeof Object.getOwnPropertySymbols=="function")for(var i=0,n=Object.getOwnPropertySymbols(e);i<n.length;i++)t.indexOf(n[i])<0&&Object.prototype.propertyIsEnumerable.call(e,n[i])&&(r[n[i]]=e[n[i]]);return r}function me(e,t,r){if(r||arguments.length===2)for(var n=0,i=t.length,s;n<i;n++)(s||!(n in t))&&(s||(s=Array.prototype.slice.call(t,0,n)),s[n]=t[n]);return e.concat(s||Array.prototype.slice.call(t))}function Rt(e,t){return function(r,n){return Object.prototype.hasOwnProperty.call(r,n)}(e,t)?e[t]:void 0}function bt(e,t,r,n){var i,s=document,o="securitypolicyviolation",u=function(c){var l=new URL(e,location.href),f=c.blockedURI;f!==l.href&&f!==l.protocol.slice(0,-1)&&f!==l.origin||(i=c,a())};s.addEventListener(o,u);var a=function(){return s.removeEventListener(o,u)};return n==null||n.then(a,a),Promise.resolve().then(t).then(function(c){return a(),c},function(c){return new Promise(function(l){var f=new MessageChannel;f.port1.onmessage=function(){return l()},f.port2.postMessage(null)}).then(function(){if(a(),i)return r(i);throw c})})}var he={default:"endpoint"};var Re="Blocked by CSP",be="The endpoint parameter is not a valid URL";var Et="API key required";var St="3.11.4",q="Failed to load the JS script of the agent",W="9319";function _t(e,t){var r,n,i,s,o,u,a,c=[],l=(r=function(d){var g=me([],d,!0);return{current:function(){return g[0]},postpone:function(){var h=g.shift();h!==void 0&&g.push(h)},exclude:function(){g.shift()}}}(e),s=100,o=3e3,u=0,n=function(){return Math.random()*Math.min(o,s*Math.pow(2,u++))},i=new Set,[r.current(),function(d,g){var h,b=g instanceof Error?g.message:"";if(b===Re||b===be)r.exclude(),h=0;else if(b===W)r.exclude();else if(b===q){var A=Date.now()-d.getTime()<50,v=r.current();v&&A&&!i.has(v)&&(i.add(v),h=0),r.postpone()}else r.postpone();var N=r.current();return N===void 0?void 0:[N,h!=null?h:d.getTime()+n()-Date.now()]}]),f=l[0],p=l[1];if(f===void 0)return Promise.reject(new TypeError("The list of script URL patterns is empty"));var y=function(d){var g=new Date,h=function(A){return c.push({url:d,startedAt:g,finishedAt:new Date,error:A})},b=t(d);return b.then(function(){return h()},h),b.catch(function(A){if(a!=null||(a=A),c.length>=5)throw a;var v=p(g,A);if(!v)throw a;var N,at=v[0],st=v[1];return(N=st,new Promise(function(ut){return setTimeout(ut,N)})).then(function(){return y(at)})})};return y(f).then(function(d){return[d,c]})}var Ee="https://fpnpmcdn.net/v<version>/<apiKey>/loader_v<loaderVersion>.js",Se=Ee;function _e(e){var t;e.scriptUrlPattern;var r=e.token,n=e.apiKey,i=n===void 0?r:n,s=ge(e,["scriptUrlPattern","token","apiKey"]),o=(t=Rt(e,"scriptUrlPattern"))!==null&&t!==void 0?t:Ee,u=function(){var l=[],f=function(){l.push({time:new Date,state:document.visibilityState})},p=function(y,d,g,h){return y.addEventListener(d,g,h),function(){return y.removeEventListener(d,g,h)}}(document,"visibilitychange",f);return f(),[l,p]}(),a=u[0],c=u[1];return Promise.resolve().then(function(){if(!i||typeof i!="string")throw new Error(Et);var l=function(f,p){return(Array.isArray(f)?f:[f]).map(function(y){return function(d,g){var h=encodeURIComponent;return d.replace(/<[^<>]+>/g,function(b){return b==="<version>"?"3":b==="<apiKey>"?h(g):b==="<loaderVersion>"?h(St):b})}(String(y),p)})}(o,i);return _t(l,Pt)}).catch(function(l){throw c(),function(f){return f instanceof Error&&f.message===W?new Error(q):f}(l)}).then(function(l){var f=l[0],p=l[1];return c(),f.load(C(C({},s),{ldi:{attempts:p,visibilityStates:a}}))})}function Pt(e){return bt(e,function(){return function(t){return new Promise(function(r,n){if(function(u){if(URL.prototype)try{return new URL(u,location.href),!1}catch(a){if(a instanceof Error&&a.name==="TypeError")return!0;throw a}}(t))throw new Error(be);var i=document.createElement("script"),s=function(){var u;return(u=i.parentNode)===null||u===void 0?void 0:u.removeChild(i)},o=document.head||document.getElementsByTagName("head")[0];i.onload=function(){s(),r()},i.onerror=function(){s(),n(new Error(q))},i.async=!0,i.src=t,o.appendChild(i)})}(e)},function(){throw new Error(Re)}).then(vt)}function vt(){var e=window,t="__fpjs_p_l_b",r=e[t];if(function(n,i){var s,o=(s=Object.getOwnPropertyDescriptor)===null||s===void 0?void 0:s.call(Object,n,i);o!=null&&o.configurable?delete n[i]:o&&!o.writable||(n[i]=void 0)}(e,t),typeof(r==null?void 0:r.load)!="function")throw new Error(W);return r}var H,X;function Pe(e){let t="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",r="";for(let n=0;n<e;n++)r+=t.charAt(Math.floor(Math.random()*t.length));return r}function ve(t){return m(this,arguments,function*({config:e}){return yield _e({apiKey:e.publicKey,endpoint:[e.endpoint,he],scriptUrlPattern:[e.scriptUrlPattern,Se],region:"eu"})})}function we(i){return m(this,arguments,function*({config:e,clientId:t,agent:r,payerId:n}){if((e==null?void 0:e.disabled)===!0){let o={disabled:!0,emulated:!1,fingerprintDetails:{timestamp:new Date().toISOString(),requestId:"",visitorId:""}};return btoa(JSON.stringify(o))}if((e==null?void 0:e.disabled)===!1&&(e!=null&&e.useEmulation)&&(t!=null&&t.startsWith("test"))){let o={disabled:!1,emulated:!0,fingerprintDetails:{timestamp:new Date().toISOString(),requestId:`${Date.now()}.${Pe(6)}`,visitorId:Pe(20)}};return btoa(JSON.stringify(o))}if(r!==void 0&&(e==null?void 0:e.disabled)===!1){let o=Date.now();if(H!==void 0&&X!==void 0&&o-X<e.cacheDurationInSeconds*1e3)return btoa(JSON.stringify(H));try{let u=yield r.get({linkedId:t,tag:{payerId:n}}),a={disabled:!1,emulated:!1,fingerprintDetails:{timestamp:new Date().toISOString(),requestId:u.requestId,visitorId:u.visitorId}};return H=a,X=o,btoa(JSON.stringify(a))}catch(u){let a={error:{outcome:"Failed",message:`Error: ${JSON.stringify(u)}`}};return btoa(JSON.stringify(a))}}return btoa(JSON.stringify({error:{outcome:"Failed",message:"Attempted to get fingerprint data but either runtime config or the agent are not present"}}))})}var Ae=ht(Ie());function te(){return typeof crypto!="undefined"&&crypto.randomUUID?crypto.randomUUID():"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,function(e){let t=Math.random()*16|0;return(e==="x"?t:t&3|8).toString(16)})}var xt="https://analytics.stitch.money/query",Te={loggingUrl:xt},re={};function ne(e={}){let n=e,{loggingUrl:t}=n,r=de(n,["loggingUrl"]);typeof t=="string"&&t.length>0&&(Te.loggingUrl=t),re=w(w({sessionId:te()},re),r)}function Nt(){var e,t,r;return((t=(e=window==null?void 0:window.location)==null?void 0:e.ancestorOrigins)==null?void 0:t.length)>0?Object.values((r=window==null?void 0:window.location)==null?void 0:r.ancestorOrigins).join(","):(document==null?void 0:document.referrer)||void 0}function S(e,t,r){return m(this,null,function*(){try{yield fetch(Te.loggingUrl,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({type:"LOG_ERROR",error:{message:e,error:(0,Ae.serializeError)(t),metadata:w(w({hostname:Nt()},re),r)}})})}catch(n){}})}function Ct(e){return typeof e=="number"}function Dt(e){return typeof e=="string"}function Mt(e){return typeof e=="bigint"}function Ne(e){return!!e&&Object.prototype.toString.call(e)==="[object Date]"&&!isNaN(e)}function Ce(e){return e!=null&&typeof e=="object"&&Object.prototype.toString.call(e)==="[object Object]"}var De=new WeakSet;function D(e){return De.add(e),e}function Me(e,t){return D({type:"object",fields:e,text:t})}function jt(e,t){return D({type:"array",items:e,text:t})}function F(e,t){return D({type:"opaque",value:e,text:t})}function kt(e,t){return D({type:"scalar",value:e,text:t})}function je(e,t){return t!==void 0?D(pe(w({},e),{text:t})):e}function ke(e,t){let r=new Map([...e.fields,...t]);return Me(r,e.text)}function $e(e){return De.has(e)}function $t(e,t,r){r.add(e);let n=[];for(let i of e)n.push(ae(i,void 0,r));return jt(n,t)}function Ue(e,t,r){r.add(e);let n=new Map;for(let i of Object.keys(e)){let s=e[i];n.set(i,ae(s,void 0,r))}return Me(n,t)}function ae(e,t,r){return e==null||typeof e=="string"||typeof e=="number"||typeof e=="boolean"||typeof e=="symbol"||typeof e.getMonth=="function"?kt(e,t):$e(e)?je(e,t):Array.isArray(e)?r.has(e)?F("<circular ref>",t):$t(e,t,r):Ce(e)?r.has(e)?F("<circular ref>",t):Ue(e,t,r):F(typeof e=="function"?"<function>":"???",t)}function O(e,t){return ae(e,t,new WeakSet)}function Fe(e,t){return Ue(e,t,new WeakSet)}var I=" ";function ie(e){return e.indexOf(`
3
3
  `)>=0}function se(e,t=I){return ie(e)?e.split(`
4
4
  `).map(r=>`${t}${r}`).join(`
5
- `):`${t}${e}`}var Ft=/'/g;function T(e){return typeof e=="string"?"'"+e.replace(Ft,"\\'")+"'":JSON.stringify(e)}function L(e,t=[]){let r=[];if(e.type==="array"){let s=e.items,o=0;for(let u of s)for(let a of L(u,[...t,o++]))r.push(a)}else if(e.type==="object"){let s=e.fields;for(let[o,u]of s)for(let a of L(u,[...t,o]))r.push(a)}let n=e.text;if(!n)return r;let i;return t.length===0?i="":t.length===1?i=typeof t[0]=="number"?`Value at index ${t[0]}: `:`Value at key ${T(t[0])}: `:i=`Value at keypath ${T(t.map(String).join("."))}: `,[...r,`${i}${n}`]}function Lt(e,t=80){let r=JSON.stringify(e);if(r.length<=t)return r;let n=`${e.substring(0,t-15)}...`;return r=`${JSON.stringify(n)} [truncated]`,r}function Gt(e,t){let{items:r}=e;if(r.length===0)return"[]";let n=[];for(let i of r){let[s,o]=ue(i,`${t}${I}`);n.push(`${t}${I}${s},`),o!==void 0&&n.push(se(o,`${t}${I}`))}return["[",...n,`${t}]`].join(`
6
- `)}function Vt(e,t){let{fields:r}=e;if(r.size===0)return"{}";let n=[];for(let[i,s]of r){let o=Le(i),u=`${t}${I}${" ".repeat(o.length+2)}`,[a,c]=ue(s,`${t}${I}`);n.push(`${t}${I}${o}: ${a},`),c!==void 0&&n.push(se(c,u))}return["{",...n,`${t}}`].join(`
7
- `)}function Le(e){return typeof e=="string"?Lt(e):typeof e=="number"||typeof e=="boolean"||typeof e=="symbol"?e.toString():e===null?"null":e===void 0?"undefined":xe(e)?`new Date(${T(e.toISOString())})`:e instanceof Date?"(Invalid Date)":"(unserializable)"}function ue(e,t=""){let r;e.type==="array"?r=Gt(e,t):e.type==="object"?r=Vt(e,t):e.type==="scalar"?r=Le(e.value):r=e.value;let n=e.text;if(n!==void 0){let i="^".repeat(ie(r)?1:r.length);return[r,[i,n].join(ie(n)?`
8
- `:" ")]}else return[r,void 0]}function zt(e){let[t,r]=ue(e);return r!==void 0?`${t}
9
- ${r}`:t}function Kt(e){return L(e,[]).join(`
10
- `)}function Ge(e){return{ok:!0,value:e,error:void 0}}function Ve(e){return{ok:!1,value:void 0,error:e}}function Bt(e){return t=>{try{let r=e(t);return Ge(r)}catch(r){return Ve(O(t,r instanceof Error?r.message:String(r)))}}}function Jt(e,t){let r=t(e);if(typeof r=="string"){let n=new Error(`
11
- ${r}`);return n.name="Decoding error",n}else return r}function R(e){function t(l){return e(l,Ge,f=>Ve($e(f)?f:O(l,f)))}function r(l,f=zt){let p=t(l);if(p.ok)return p.value;throw Jt(p.error,f)}function n(l){return t(l).value}function i(l){return o(Bt(l))}function s(l,f){return a(p=>l(p)?null:f)}function o(l){return R((f,p,y)=>{let d=t(f);if(!d.ok)return d;let g=Ne(l)?l:l(d.value,p,y);return Ne(g)?g.decode(d.value):g})}function u(l){return o(l)}function a(l){return o((f,p,y)=>{let d=l(f);return d===null?p(f):y(typeof d=="string"?O(f,d):d)})}function c(l){return R((f,p,y)=>{let d=t(f);return d.ok?d:y(O(d.error,l))})}return Yt({verify:r,value:n,decode:t,transform:i,refine:s,reject:a,describe:c,then:o,pipe:u})}var ze=new WeakSet;function Yt(e){return ze.add(e),e}function Ne(e){return ze.has(e)}var qt=R((e,t,r)=>Array.isArray(e)?t(e):r("Must be an array"));function Wt(e,t,r,n){let i=[];for(let s=0;s<e.length;++s){let o=e[s];if(o.ok)i.push(o.value);else{let u=o.error,a=t.slice();return a.splice(s,1,O(u,u.text?`${u.text} (at index ${s})`:`index ${s}`)),n(O(a))}}return r(i)}function Ht(e){let t=e.decode;return qt.then((r,n,i)=>{let s=r.map(t);return Wt(s,r,n,i)})}function Xt(e){return R((t,r,n)=>t instanceof e?r(t):n(`Must be ${e.name} instance`))}function Ke(e){return R(t=>e().decode(t))}function Zt(e,t){let r=new Set;for(let n of e)t.has(n)||r.add(n);return r}var Be=R((e,t,r)=>Ce(e)?t(e):r("Must be an object"));function M(e){let t=new Set(Object.keys(e));return Be.then((r,n,i)=>{let s=new Set(Object.keys(r)),o=Zt(t,s),u={},a=null;for(let c of Object.keys(e)){let l=e[c],f=r[c],p=l.decode(f);if(p.ok){let y=p.value;y!==void 0&&(u[c]=y),o.delete(c)}else{let y=p.error;f===void 0?o.add(c):(a===null&&(a=new Map),a.set(c,y))}}if(a||o.size>0){let c=Fe(r);if(a&&(c=ke(c,a)),o.size>0){let l=Array.from(o).map(T).join(", "),f=o.size>1?"keys":"key";c=je(c,`Missing ${f}: ${l}`)}return i(c)}return n(u)})}var oe=`Either:
12
- `;function Qt(e){return`-${se(e).substring(1)}`}function er(e){return e.startsWith(oe)?e.substring(oe.length):Qt(e)}function ce(...e){if(e.length===0)throw new Error("Pass at least one decoder to either()");return R((t,r,n)=>{let i=[];for(let o=0;o<e.length;o++){let u=e[o].decode(t);if(u.ok)return u;i.push(u.error)}let s=oe+i.map(o=>er(L(o).join(`
5
+ `):`${t}${e}`}var Ut=/'/g;function T(e){return typeof e=="string"?"'"+e.replace(Ut,"\\'")+"'":JSON.stringify(e)}function L(e,t=[]){let r=[];if(e.type==="array"){let s=e.items,o=0;for(let u of s)for(let a of L(u,[...t,o++]))r.push(a)}else if(e.type==="object"){let s=e.fields;for(let[o,u]of s)for(let a of L(u,[...t,o]))r.push(a)}let n=e.text;if(!n)return r;let i;return t.length===0?i="":t.length===1?i=typeof t[0]=="number"?`Value at index ${t[0]}: `:`Value at key ${T(t[0])}: `:i=`Value at keypath ${T(t.map(String).join("."))}: `,[...r,`${i}${n}`]}function Ft(e,t=80){let r=JSON.stringify(e);if(r.length<=t)return r;let n=`${e.substring(0,t-15)}...`;return r=`${JSON.stringify(n)} [truncated]`,r}function Lt(e,t){let{items:r}=e;if(r.length===0)return"[]";let n=[];for(let i of r){let[s,o]=ue(i,`${t}${I}`);n.push(`${t}${I}${s},`),o!==void 0&&n.push(se(o,`${t}${I}`))}return["[",...n,`${t}]`].join(`
6
+ `)}function Gt(e,t){let{fields:r}=e;if(r.size===0)return"{}";let n=[];for(let[i,s]of r){let o=Le(i),u=`${t}${I}${" ".repeat(o.length+2)}`,[a,c]=ue(s,`${t}${I}`);n.push(`${t}${I}${o}: ${a},`),c!==void 0&&n.push(se(c,u))}return["{",...n,`${t}}`].join(`
7
+ `)}function Le(e){return typeof e=="string"?Ft(e):typeof e=="number"||typeof e=="boolean"||typeof e=="symbol"?e.toString():e===null?"null":e===void 0?"undefined":Ne(e)?`new Date(${T(e.toISOString())})`:e instanceof Date?"(Invalid Date)":"(unserializable)"}function ue(e,t=""){let r;e.type==="array"?r=Lt(e,t):e.type==="object"?r=Gt(e,t):e.type==="scalar"?r=Le(e.value):r=e.value;let n=e.text;if(n!==void 0){let i="^".repeat(ie(r)?1:r.length);return[r,[i,n].join(ie(n)?`
8
+ `:" ")]}else return[r,void 0]}function Vt(e){let[t,r]=ue(e);return r!==void 0?`${t}
9
+ ${r}`:t}function zt(e){return L(e,[]).join(`
10
+ `)}function Ge(e){return{ok:!0,value:e,error:void 0}}function Ve(e){return{ok:!1,value:void 0,error:e}}function Kt(e){return t=>{try{let r=e(t);return Ge(r)}catch(r){return Ve(O(t,r instanceof Error?r.message:String(r)))}}}function Bt(e,t){let r=t(e);if(typeof r=="string"){let n=new Error(`
11
+ ${r}`);return n.name="Decoding error",n}else return r}function R(e){function t(l){return e(l,Ge,f=>Ve($e(f)?f:O(l,f)))}function r(l,f=Vt){let p=t(l);if(p.ok)return p.value;throw Bt(p.error,f)}function n(l){return t(l).value}function i(l){return o(Kt(l))}function s(l,f){return a(p=>l(p)?null:f)}function o(l){return R((f,p,y)=>{let d=t(f);if(!d.ok)return d;let g=xe(l)?l:l(d.value,p,y);return xe(g)?g.decode(d.value):g})}function u(l){return o(l)}function a(l){return o((f,p,y)=>{let d=l(f);return d===null?p(f):y(typeof d=="string"?O(f,d):d)})}function c(l){return R((f,p,y)=>{let d=t(f);return d.ok?d:y(O(d.error,l))})}return Jt({verify:r,value:n,decode:t,transform:i,refine:s,reject:a,describe:c,then:o,pipe:u})}var ze=new WeakSet;function Jt(e){return ze.add(e),e}function xe(e){return ze.has(e)}var Yt=R((e,t,r)=>Array.isArray(e)?t(e):r("Must be an array"));function qt(e,t,r,n){let i=[];for(let s=0;s<e.length;++s){let o=e[s];if(o.ok)i.push(o.value);else{let u=o.error,a=t.slice();return a.splice(s,1,O(u,u.text?`${u.text} (at index ${s})`:`index ${s}`)),n(O(a))}}return r(i)}function Wt(e){let t=e.decode;return Yt.then((r,n,i)=>{let s=r.map(t);return qt(s,r,n,i)})}function Ht(e){return R((t,r,n)=>t instanceof e?r(t):n(`Must be ${e.name} instance`))}function Ke(e){return R(t=>e().decode(t))}function Xt(e,t){let r=new Set;for(let n of e)t.has(n)||r.add(n);return r}var Be=R((e,t,r)=>Ce(e)?t(e):r("Must be an object"));function M(e){let t=new Set(Object.keys(e));return Be.then((r,n,i)=>{let s=new Set(Object.keys(r)),o=Xt(t,s),u={},a=null;for(let c of Object.keys(e)){let l=e[c],f=r[c],p=l.decode(f);if(p.ok){let y=p.value;y!==void 0&&(u[c]=y),o.delete(c)}else{let y=p.error;f===void 0?o.add(c):(a===null&&(a=new Map),a.set(c,y))}}if(a||o.size>0){let c=Fe(r);if(a&&(c=ke(c,a)),o.size>0){let l=Array.from(o).map(T).join(", "),f=o.size>1?"keys":"key";c=je(c,`Missing ${f}: ${l}`)}return i(c)}return n(u)})}var oe=`Either:
12
+ `;function Zt(e){return`-${se(e).substring(1)}`}function Qt(e){return e.startsWith(oe)?e.substring(oe.length):Zt(e)}function ce(...e){if(e.length===0)throw new Error("Pass at least one decoder to either()");return R((t,r,n)=>{let i=[];for(let o=0;o<e.length;o++){let u=e[o].decode(t);if(u.ok)return u;i.push(u.error)}let s=oe+i.map(o=>Qt(L(o).join(`
13
13
  `))).join(`
14
- `);return n(s)})}var tr=Je(null),Tr=Je(void 0),Nr=R((e,t,r)=>e==null?t(e):r("Must be undefined or null"));function Je(e){return R((t,r,n)=>t===e?r(e):n(`Must be ${typeof e=="symbol"?String(e):T(e)}`))}var xr=R((e,t,r)=>t(e));var G=R((e,t,r)=>typeof e=="boolean"?t(e):r("Must be boolean")),Cr=R((e,t,r)=>t(!!e));function rr(e,t){let r=t!==void 0?e:void 0,n=t!==void 0?t:e;return Be.then((i,s,o)=>{var c;let u={},a=new Map;for(let l of Object.keys(i)){let f=i[l],p=r==null?void 0:r.decode(l);if((p==null?void 0:p.ok)===!1)return o(O(i,`Invalid key ${T(l)}: ${Kt(p.error)}`));let y=(c=p==null?void 0:p.value)!=null?c:l,d=n.decode(f);d.ok?a.size===0&&(u[y]=d.value):(a.set(l,d.error),u={})}return a.size>0?o(ke(Fe(i),a)):s(u)})}var nr=/^([A-Za-z]{3,9}(?:[+][A-Za-z]{3,9})?):\/\/(?:([-;:&=+$,\w]+)@)?(?:([A-Za-z0-9.-]+)(?::([0-9]{2,5}))?)(\/(?:[-+~%/.,\w]*)?(?:\?[-+=&;%@.,/\w]*)?(?:#[.,!/\w]*)?)?$/,Ye=R((e,t,r)=>Mt(e)?t(e):r("Must be string")),N=P(/\S/,"Must be non-empty string");function P(e,t){return Ye.refine(r=>e.test(r),t)}var Dr=P(/^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/,"Must be email"),ir=ce(P(nr,"Must be URL").transform(e=>new URL(e)),Xt(URL)),Mr=ir.refine(e=>e.protocol==="https:","Must be an HTTPS URL"),jr=P(/^[a-z_][a-z0-9_]*$/i,"Must be valid identifier");var qe=P(/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i,"Must be uuid"),kr=qe.refine(e=>e[14]==="1","Must be uuidv1"),$r=qe.refine(e=>e[14]==="4","Must be uuidv4"),or=P(/^[0-9]+$/,"Must only contain digits"),Ur=P(/^[0-9a-f]+$/i,"Must only contain hexadecimal digits"),Fr=or.transform(Number),ar=/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:[.]\d+)?(?:Z|[+-]\d{2}:?\d{2})$/,sr=R((e,t,r)=>xe(e)?t(e):r("Must be a Date")),ur=P(ar,"Must be ISO8601 format").transform(e=>{let t=new Date(e);if(isNaN(t.getTime()))throw new Error("Must be valid date/time value");return t}),Lr=ce(sr,ur).describe("Must be a Date or date string"),cr=R((e,t,r)=>Dt(e)?t(e):r("Must be number")),j=cr.refine(e=>Number.isFinite(e),"Number must be finite"),lr=j.refine(e=>Number.isInteger(e),"Number must be an integer"),We=j.refine(e=>e>=0&&!Object.is(e,-0),"Number must be positive"),Gr=lr.refine(e=>e>=0&&!Object.is(e,-0),"Number must be positive"),Vr=R((e,t,r)=>jt(e)?t(e):r("Must be bigint")),fr=Ke(()=>rr(He)),pr=Ke(()=>Ht(He)),He=ce(tr,Ye,j,G,fr,pr).describe("Must be valid JSON value");var V=3,Xe=500,dr=M({analytics:M({changeEventDebounceDelayMs:We}),evervault:M({teamId:N,appId:N}),fingerprint:M({disabled:G,useEmulation:G,publicKey:N,endpoint:N,scriptUrlPattern:N,cacheDurationInSeconds:j})});function k(e,t){return m(this,null,function*(){try{let r=0;for(;r<V;)try{let n=yield fetch(`https://public-keys.stitch.money/${e}`,{signal:t});if(n.ok)return{type:"success",runtimeConfig:dr.verify(yield n.json())};if(r++,r===V)return{type:"error",error:new Error(`[${k.name}] Failed to retrieve runtime config after ${V} attempts. public-keys worker returned ${n.status} response`)};yield new Promise(i=>setTimeout(i,Xe))}catch(n){if(r++,r===V)throw n;yield new Promise(i=>setTimeout(i,Xe))}return{type:"error",error:new Error(`[${k.name}] Failed to retrieve runtime config`)}}catch(r){return r instanceof Error?{type:"error",error:r}:typeof r=="string"?{type:"error",error:new Error(r)}:{type:"error",error:new Error(`[${k.name}] Failed to retrieve runtime config. Unknown error thrown`)}}})}import{v4 as mr}from"uuid";var $=e=>e instanceof Error?e.toString():JSON.stringify(e),Ze=e=>e.toLowerCase().startsWith("test-");var yr="9ba67dd8d5b247cfb3f76e",z={version:"2",serviceId:yr,protocol:"PROTOCOL_3DS",allowedBrands:["visa","mastercard"]};function Qe(e,t){return{apiVersion:2,apiVersionMinor:0,allowedPaymentMethods:[{type:"CARD",parameters:{allowedAuthMethods:["CRYPTOGRAM_3DS",...t&&Ze(t)?["PAN_ONLY"]:[]],allowedCardNetworks:["VISA","MASTERCARD"]},tokenizationSpecification:{type:"PAYMENT_GATEWAY",parameters:{gateway:"stitch",gatewayMerchantId:e}}}],existingPaymentMethodRequired:!0}}function et(){return window.ApplePaySession?ApplePaySession.canMakePayments():!1}function tt(){if(!window.ApplePaySession)return-1;let t=r=>r===0?-1:ApplePaySession.supportsVersion(r)?r:t(r-1);return t(14)}function rt(e,t,r){return m(this,null,function*(){var n;if(!e||!t)return!1;try{let i=yield e.isReadyToPay(Qe(t,r));return i.result&&((n=i.paymentMethodPresent)!=null?n:!1)}catch(i){return!1}})}function nt(e){return m(this,null,function*(){if(!e)return!1;try{return(yield e.isReadyToPay(z)).result}catch(t){return!1}})}var S=class extends Error{constructor(t){super(t),this.name="SessionError"}};var it="3.4.0";var hr="[onvalidatemerchant]",ot="[onpaymentauthorized]",K="[onClickSamsungPaySessionHandler]",le="[onClickGooglePaySessionHandler]",at=class{constructor(t){E(this,"onCancelPayment");E(this,"clientId");E(this,"gatewayMerchantId");E(this,"applePayIsSupported",!1);E(this,"samsungPayIsSupported",!1);E(this,"googlePayIsSupported",!1);E(this,"runtimeConfig");E(this,"fingerprintAgent");E(this,"googlePayClient");E(this,"samsungPayClient");ne({source:"wallets-client",version:it});let{onCancelPayment:r,clientId:n,gatewayMerchantId:i}=t;this.googlePayClient=i?new google.payments.api.PaymentsClient({environment:n!=null&&n.startsWith("test-")?"TEST":"PRODUCTION"}):void 0,this.samsungPayClient=window.SamsungPay?new window.SamsungPay.PaymentClient({environment:n!=null&&n.startsWith("test-")?"STAGE":"PRODUCTION",nonce:mr()}):void 0,this.onCancelPayment=r!=null?r:()=>{},this.clientId=n,this.gatewayMerchantId=i,this.loadFingerprintAgent()}loadRuntimeConfig(){return m(this,null,function*(){var t,r;if(this.runtimeConfig===void 0&&this.clientId){let n=yield k(this.clientId);if(n.type==="error"){let i=(r=(t=n.error)==null?void 0:t.message)!=null?r:"Failed to load runtime configuration";throw _(i,n.error,{clientId:this.clientId}),n.error?n.error:new Error(i)}this.runtimeConfig=n.runtimeConfig}})}loadFingerprintAgent(){return m(this,null,function*(){this.fingerprintAgent===void 0&&(this.runtimeConfig===void 0&&(yield this.loadRuntimeConfig()),this.runtimeConfig!==void 0&&!this.runtimeConfig.fingerprint.disabled&&(this.fingerprintAgent=yield ve({config:this.runtimeConfig.fingerprint})))})}fingerprint(){return m(this,null,function*(){var r;let t=yield we({config:(r=this.runtimeConfig)==null?void 0:r.fingerprint,agent:this.fingerprintAgent,clientId:this.clientId});return ne({fingerprint:t}),t})}supportedPaymentMethods(){return m(this,null,function*(){let t=[];return this.applePayIsSupported=et(),this.applePayIsSupported&&t.push("APPLE_PAY"),this.samsungPayIsSupported=yield nt(this.samsungPayClient),this.samsungPayIsSupported&&t.push("SAMSUNG_PAY"),this.googlePayIsSupported=yield rt(this.googlePayClient,this.gatewayMerchantId,this.clientId),this.googlePayIsSupported&&t.push("GOOGLE_PAY"),t})}onClickApplePaySessionHandler(t,r,n,i,s,o){let u=tt();return()=>{var l,f;let a={countryCode:"ZA",currencyCode:t,supportedNetworks:["visa","masterCard"],merchantCapabilities:["supports3DS"],total:{label:n,amount:r.toString()}};o&&(a.recurringPaymentRequest={paymentDescription:n,billingAgreement:o.billingAgreement,regularBilling:{label:n,amount:((l=o.recurringAmount)!=null?l:r).toString(),paymentTiming:"recurring",recurringPaymentIntervalUnit:o.recurringIntervalUnit,recurringPaymentIntervalCount:(f=o.recurringIntervalCount)!=null?f:1},managementURL:o.managementUrl});let c;try{c=new ApplePaySession(u,a)}catch(p){_("Failed to create Apple Pay session",p,{clientId:this.clientId});return}c.onvalidatemerchant=p=>m(this,null,function*(){try{let y=yield i(p.validationURL);c==null||c.completeMerchantValidation(y)}catch(y){throw _(`${hr} Failed to complete merchant validation`,y,{clientId:this.clientId}),new S(`Failed to complete merchant validation: ${$(y)}`)}}),c.onpaymentauthorized=p=>m(this,null,function*(){try{let y=p.payment.token,d=yield this.fingerprint(),g=yield s(y,d);switch(g.status){case"TransactionPending":case"TransactionSuccess":{c==null||c.completePayment(ApplePaySession.STATUS_SUCCESS);break}case"TransactionFailure":{c==null||c.completePayment(ApplePaySession.STATUS_FAILURE);break}default:{let h="Invalid transaction status",b=new S(`${h} ${g.status}`);throw _(`${ot} Invalid transaction status`,b,{clientId:this.clientId}),b}}}catch(y){throw c==null||c.completePayment(ApplePaySession.STATUS_FAILURE),_(`${ot} Failed to create payment`,y,{clientId:this.clientId}),new S(`Failed to create payment: ${$(y)}`)}}),c.oncancel=()=>{this.onCancelPayment()},c.begin()}}onClickSamsungPaySessionHandler(t,r,n,i,s,o,u){return()=>m(this,null,function*(){if(!this.samsungPayClient){let a="Samsung Pay client not initialized",c=new Error(a);throw _(`${K} ${a}`,c,{clientId:this.clientId}),c}try{let a={orderNumber:i,merchant:{name:n,url:s,id:o,countryCode:"ZA"},amount:{option:"FORMAT_TOTAL_PRICE_ONLY",currency:t,total:r}},c=yield this.fingerprint(),l=yield this.samsungPayClient.loadPaymentSheet(z,a),f=yield u(l,c);switch(f.status){case"TransactionPending":break;case"TransactionFailure":{this.samsungPayClient.notify({status:"REJECTED"});break}case"TransactionSuccess":{this.samsungPayClient.notify({status:"CHARGED"});break}default:{this.samsungPayClient.notify({status:"ERRED"});let p=`${K} Invalid transaction status: ${f.status}`,y=new S(p);throw _(p,y,{clientId:this.clientId}),y}}}catch(a){throw _(`${K} Failed to create payment`,a,{clientId:this.clientId}),new S(`${K} Failed to create payment: ${$(a)}`)}})}onClickGooglePaySessionHandler(t){return r=>m(this,null,function*(){try{let n=yield this.fingerprint(),i=yield t(r.paymentMethodData.tokenizationData.token,n);switch(i.status){case"TransactionPending":case"TransactionFailure":case"TransactionSuccess":break;default:{let s=`${le} Invalid transaction status: ${i.status}`,o=new S(s);throw _(s,o,{clientId:this.clientId}),o}}}catch(n){throw _(`${le} Failed to create payment`,n,{clientId:this.clientId}),new S(`${le} Failed to create payment: ${$(n)}`)}})}};export{at as StitchWalletClientSdk,ye as WalletType};
14
+ `);return n(s)})}var er=Je(null),Ar=Je(void 0),Tr=R((e,t,r)=>e==null?t(e):r("Must be undefined or null"));function Je(e){return R((t,r,n)=>t===e?r(e):n(`Must be ${typeof e=="symbol"?String(e):T(e)}`))}var xr=R((e,t,r)=>t(e));var G=R((e,t,r)=>typeof e=="boolean"?t(e):r("Must be boolean")),Nr=R((e,t,r)=>t(!!e));function tr(e,t){let r=t!==void 0?e:void 0,n=t!==void 0?t:e;return Be.then((i,s,o)=>{var c;let u={},a=new Map;for(let l of Object.keys(i)){let f=i[l],p=r==null?void 0:r.decode(l);if((p==null?void 0:p.ok)===!1)return o(O(i,`Invalid key ${T(l)}: ${zt(p.error)}`));let y=(c=p==null?void 0:p.value)!=null?c:l,d=n.decode(f);d.ok?a.size===0&&(u[y]=d.value):(a.set(l,d.error),u={})}return a.size>0?o(ke(Fe(i),a)):s(u)})}var rr=/^([A-Za-z]{3,9}(?:[+][A-Za-z]{3,9})?):\/\/(?:([-;:&=+$,\w]+)@)?(?:([A-Za-z0-9.-]+)(?::([0-9]{2,5}))?)(\/(?:[-+~%/.,\w]*)?(?:\?[-+=&;%@.,/\w]*)?(?:#[.,!/\w]*)?)?$/,Ye=R((e,t,r)=>Dt(e)?t(e):r("Must be string")),x=P(/\S/,"Must be non-empty string");function P(e,t){return Ye.refine(r=>e.test(r),t)}var Cr=P(/^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/,"Must be email"),nr=ce(P(rr,"Must be URL").transform(e=>new URL(e)),Ht(URL)),Dr=nr.refine(e=>e.protocol==="https:","Must be an HTTPS URL"),Mr=P(/^[a-z_][a-z0-9_]*$/i,"Must be valid identifier");var qe=P(/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i,"Must be uuid"),jr=qe.refine(e=>e[14]==="1","Must be uuidv1"),kr=qe.refine(e=>e[14]==="4","Must be uuidv4"),ir=P(/^[0-9]+$/,"Must only contain digits"),$r=P(/^[0-9a-f]+$/i,"Must only contain hexadecimal digits"),Ur=ir.transform(Number),or=/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:[.]\d+)?(?:Z|[+-]\d{2}:?\d{2})$/,ar=R((e,t,r)=>Ne(e)?t(e):r("Must be a Date")),sr=P(or,"Must be ISO8601 format").transform(e=>{let t=new Date(e);if(isNaN(t.getTime()))throw new Error("Must be valid date/time value");return t}),Fr=ce(ar,sr).describe("Must be a Date or date string"),ur=R((e,t,r)=>Ct(e)?t(e):r("Must be number")),j=ur.refine(e=>Number.isFinite(e),"Number must be finite"),cr=j.refine(e=>Number.isInteger(e),"Number must be an integer"),We=j.refine(e=>e>=0&&!Object.is(e,-0),"Number must be positive"),Lr=cr.refine(e=>e>=0&&!Object.is(e,-0),"Number must be positive"),Gr=R((e,t,r)=>Mt(e)?t(e):r("Must be bigint")),lr=Ke(()=>tr(He)),fr=Ke(()=>Wt(He)),He=ce(er,Ye,j,G,lr,fr).describe("Must be valid JSON value");var V=3,Xe=500,pr=M({analytics:M({changeEventDebounceDelayMs:We}),evervault:M({teamId:x,appId:x}),fingerprint:M({disabled:G,useEmulation:G,publicKey:x,endpoint:x,scriptUrlPattern:x,cacheDurationInSeconds:j})});function k(e,t){return m(this,null,function*(){try{let r=0;for(;r<V;)try{let n=yield fetch(`https://public-keys.stitch.money/${e}`,{signal:t});if(n.ok)return{type:"success",runtimeConfig:pr.verify(yield n.json())};if(r++,r===V)return{type:"error",error:new Error(`[${k.name}] Failed to retrieve runtime config after ${V} attempts. public-keys worker returned ${n.status} response`)};yield new Promise(i=>setTimeout(i,Xe))}catch(n){if(r++,r===V)throw n;yield new Promise(i=>setTimeout(i,Xe))}return{type:"error",error:new Error(`[${k.name}] Failed to retrieve runtime config`)}}catch(r){return r instanceof Error?{type:"error",error:r}:typeof r=="string"?{type:"error",error:new Error(r)}:{type:"error",error:new Error(`[${k.name}] Failed to retrieve runtime config. Unknown error thrown`)}}})}import{v4 as gr}from"uuid";var dr="9ba67dd8d5b247cfb3f76e",z={version:"2",serviceId:dr,protocol:"PROTOCOL_3DS",allowedBrands:["visa","mastercard"]};function Ze(e){return{apiVersion:2,apiVersionMinor:0,allowedPaymentMethods:[{type:"CARD",parameters:{allowedAuthMethods:["CRYPTOGRAM_3DS"],allowedCardNetworks:["VISA","MASTERCARD"]},tokenizationSpecification:{type:"PAYMENT_GATEWAY",parameters:{gateway:"stitch",gatewayMerchantId:e}}}],existingPaymentMethodRequired:!0}}function Qe(){return window.ApplePaySession?ApplePaySession.canMakePayments():!1}function et(){if(!window.ApplePaySession)return-1;let t=r=>r===0?-1:ApplePaySession.supportsVersion(r)?r:t(r-1);return t(14)}function tt(e,t){return m(this,null,function*(){var r;if(!e||!t)return!1;try{let n=yield e.isReadyToPay(Ze(t));return n.result&&((r=n.paymentMethodPresent)!=null?r:!1)}catch(n){return!1}})}function rt(e){return m(this,null,function*(){if(!e)return!1;try{return(yield e.isReadyToPay(z)).result}catch(t){return!1}})}var _=class extends Error{constructor(t){super(t),this.name="SessionError"}};var $=e=>e instanceof Error?e.toString():JSON.stringify(e);var nt="3.5.0";var mr="[onvalidatemerchant]",it="[onpaymentauthorized]",K="[onClickSamsungPaySessionHandler]",le="[onClickGooglePaySessionHandler]",ot=class{constructor(t){E(this,"onCancelPayment");E(this,"clientId");E(this,"gatewayMerchantId");E(this,"applePayIsSupported",!1);E(this,"samsungPayIsSupported",!1);E(this,"googlePayIsSupported",!1);E(this,"runtimeConfig");E(this,"fingerprintAgent");E(this,"googlePayClient");E(this,"samsungPayClient");ne({source:"wallets-client",version:nt});let{onCancelPayment:r,clientId:n,gatewayMerchantId:i}=t;this.googlePayClient=i?new google.payments.api.PaymentsClient({environment:n!=null&&n.startsWith("test-")?"TEST":"PRODUCTION"}):void 0,this.samsungPayClient=window.SamsungPay?new window.SamsungPay.PaymentClient({environment:n!=null&&n.startsWith("test-")?"STAGE":"PRODUCTION",nonce:gr()}):void 0,this.onCancelPayment=r!=null?r:()=>{},this.clientId=n,this.gatewayMerchantId=i,this.loadFingerprintAgent()}loadRuntimeConfig(){return m(this,null,function*(){var t,r;if(this.runtimeConfig===void 0&&this.clientId){let n=yield k(this.clientId);if(n.type==="error"){let i=(r=(t=n.error)==null?void 0:t.message)!=null?r:"Failed to load runtime configuration";throw S(i,n.error,{clientId:this.clientId}),n.error?n.error:new Error(i)}this.runtimeConfig=n.runtimeConfig}})}loadFingerprintAgent(){return m(this,null,function*(){this.fingerprintAgent===void 0&&(this.runtimeConfig===void 0&&(yield this.loadRuntimeConfig()),this.runtimeConfig!==void 0&&!this.runtimeConfig.fingerprint.disabled&&(this.fingerprintAgent=yield ve({config:this.runtimeConfig.fingerprint})))})}fingerprint(){return m(this,null,function*(){var r;let t=yield we({config:(r=this.runtimeConfig)==null?void 0:r.fingerprint,agent:this.fingerprintAgent,clientId:this.clientId});return ne({fingerprint:t}),t})}supportedPaymentMethods(){return m(this,null,function*(){let t=[];return this.applePayIsSupported=Qe(),this.applePayIsSupported&&t.push("APPLE_PAY"),this.samsungPayIsSupported=yield rt(this.samsungPayClient),this.samsungPayIsSupported&&t.push("SAMSUNG_PAY"),this.googlePayIsSupported=yield tt(this.googlePayClient,this.gatewayMerchantId),this.googlePayIsSupported&&t.push("GOOGLE_PAY"),t})}onClickApplePaySessionHandler(t,r,n,i,s,o){let u=et();return()=>{var l,f;let a={countryCode:"ZA",currencyCode:t,supportedNetworks:["visa","masterCard"],merchantCapabilities:["supports3DS"],total:{label:n,amount:r.toString()}};o&&(a.recurringPaymentRequest={paymentDescription:n,billingAgreement:o.billingAgreement,regularBilling:{label:n,amount:((l=o.recurringAmount)!=null?l:r).toString(),paymentTiming:"recurring",recurringPaymentIntervalUnit:o.recurringIntervalUnit,recurringPaymentIntervalCount:(f=o.recurringIntervalCount)!=null?f:1},managementURL:o.managementUrl});let c;try{c=new ApplePaySession(u,a)}catch(p){S("Failed to create Apple Pay session",p,{clientId:this.clientId});return}c.onvalidatemerchant=p=>m(this,null,function*(){try{let y=yield i(p.validationURL);c==null||c.completeMerchantValidation(y)}catch(y){throw S(`${mr} Failed to complete merchant validation`,y,{clientId:this.clientId}),new _(`Failed to complete merchant validation: ${$(y)}`)}}),c.onpaymentauthorized=p=>m(this,null,function*(){try{let y=p.payment.token,d=yield this.fingerprint(),g=yield s(y,d);switch(g.status){case"TransactionPending":case"TransactionSuccess":{c==null||c.completePayment(ApplePaySession.STATUS_SUCCESS);break}case"TransactionFailure":{c==null||c.completePayment(ApplePaySession.STATUS_FAILURE);break}default:{let h="Invalid transaction status",b=new _(`${h} ${g.status}`);throw S(`${it} Invalid transaction status`,b,{clientId:this.clientId}),b}}}catch(y){throw c==null||c.completePayment(ApplePaySession.STATUS_FAILURE),S(`${it} Failed to create payment`,y,{clientId:this.clientId}),new _(`Failed to create payment: ${$(y)}`)}}),c.oncancel=()=>{this.onCancelPayment()},c.begin()}}onClickSamsungPaySessionHandler(t,r,n,i,s,o,u){return()=>m(this,null,function*(){if(!this.samsungPayClient){let a="Samsung Pay client not initialized",c=new Error(a);throw S(`${K} ${a}`,c,{clientId:this.clientId}),c}try{let a={orderNumber:i,merchant:{name:n,url:s,id:o,countryCode:"ZA"},amount:{option:"FORMAT_TOTAL_PRICE_ONLY",currency:t,total:r}},c=yield this.fingerprint(),l=yield this.samsungPayClient.loadPaymentSheet(z,a),f=yield u(l,c);switch(f.status){case"TransactionPending":break;case"TransactionFailure":{this.samsungPayClient.notify({status:"REJECTED"});break}case"TransactionSuccess":{this.samsungPayClient.notify({status:"CHARGED"});break}default:{this.samsungPayClient.notify({status:"ERRED"});let p=`${K} Invalid transaction status: ${f.status}`,y=new _(p);throw S(p,y,{clientId:this.clientId}),y}}}catch(a){throw S(`${K} Failed to create payment`,a,{clientId:this.clientId}),new _(`${K} Failed to create payment: ${$(a)}`)}})}onClickGooglePaySessionHandler(t){return r=>m(this,null,function*(){try{let n=yield this.fingerprint(),i=yield t(r.paymentMethodData.tokenizationData.token,n);switch(i.status){case"TransactionPending":case"TransactionFailure":case"TransactionSuccess":break;default:{let s=`${le} Invalid transaction status: ${i.status}`,o=new _(s);throw S(s,o,{clientId:this.clientId}),o}}}catch(n){throw S(`${le} Failed to create payment`,n,{clientId:this.clientId}),new _(`${le} Failed to create payment: ${$(n)}`)}})}};export{ot as StitchWalletClientSdk,ye as WalletType};
15
15
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../node_modules/.pnpm/serialize-error@8.1.0/node_modules/serialize-error/index.js","../src/types.ts","../../../node_modules/.pnpm/tslib@2.8.1/node_modules/tslib/tslib.es6.mjs","../../../node_modules/.pnpm/@fingerprintjs+fingerprintjs-pro@3.11.4/node_modules/@fingerprintjs/fingerprintjs-pro/dist/fp.esm.min.js","../../fingerprint/src/index.ts","../../logger-stitch/src/index.ts","../../logger-stitch/src/utils.ts","../../../node_modules/.pnpm/decoders@2.4.2/node_modules/decoders/dist/index.js","../../runtime-config/src/index.ts","../src/wallets/client.ts","../src/utils/helpers.ts","../src/utils/constants.ts","../src/utils/browser-support.ts","../src/utils/errors.ts","../package.json"],"sourcesContent":["'use strict';\n\nclass NonError extends Error {\n\tconstructor(message) {\n\t\tsuper(NonError._prepareSuperMessage(message));\n\t\tObject.defineProperty(this, 'name', {\n\t\t\tvalue: 'NonError',\n\t\t\tconfigurable: true,\n\t\t\twritable: true\n\t\t});\n\n\t\tif (Error.captureStackTrace) {\n\t\t\tError.captureStackTrace(this, NonError);\n\t\t}\n\t}\n\n\tstatic _prepareSuperMessage(message) {\n\t\ttry {\n\t\t\treturn JSON.stringify(message);\n\t\t} catch {\n\t\t\treturn String(message);\n\t\t}\n\t}\n}\n\nconst commonProperties = [\n\t{property: 'name', enumerable: false},\n\t{property: 'message', enumerable: false},\n\t{property: 'stack', enumerable: false},\n\t{property: 'code', enumerable: true}\n];\n\nconst isCalled = Symbol('.toJSON called');\n\nconst toJSON = from => {\n\tfrom[isCalled] = true;\n\tconst json = from.toJSON();\n\tdelete from[isCalled];\n\treturn json;\n};\n\nconst destroyCircular = ({\n\tfrom,\n\tseen,\n\tto_,\n\tforceEnumerable,\n\tmaxDepth,\n\tdepth\n}) => {\n\tconst to = to_ || (Array.isArray(from) ? [] : {});\n\n\tseen.push(from);\n\n\tif (depth >= maxDepth) {\n\t\treturn to;\n\t}\n\n\tif (typeof from.toJSON === 'function' && from[isCalled] !== true) {\n\t\treturn toJSON(from);\n\t}\n\n\tfor (const [key, value] of Object.entries(from)) {\n\t\tif (typeof Buffer === 'function' && Buffer.isBuffer(value)) {\n\t\t\tto[key] = '[object Buffer]';\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (typeof value === 'function') {\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (!value || typeof value !== 'object') {\n\t\t\tto[key] = value;\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (!seen.includes(from[key])) {\n\t\t\tdepth++;\n\n\t\t\tto[key] = destroyCircular({\n\t\t\t\tfrom: from[key],\n\t\t\t\tseen: seen.slice(),\n\t\t\t\tforceEnumerable,\n\t\t\t\tmaxDepth,\n\t\t\t\tdepth\n\t\t\t});\n\t\t\tcontinue;\n\t\t}\n\n\t\tto[key] = '[Circular]';\n\t}\n\n\tfor (const {property, enumerable} of commonProperties) {\n\t\tif (typeof from[property] === 'string') {\n\t\t\tObject.defineProperty(to, property, {\n\t\t\t\tvalue: from[property],\n\t\t\t\tenumerable: forceEnumerable ? true : enumerable,\n\t\t\t\tconfigurable: true,\n\t\t\t\twritable: true\n\t\t\t});\n\t\t}\n\t}\n\n\treturn to;\n};\n\nconst serializeError = (value, options = {}) => {\n\tconst {maxDepth = Number.POSITIVE_INFINITY} = options;\n\n\tif (typeof value === 'object' && value !== null) {\n\t\treturn destroyCircular({\n\t\t\tfrom: value,\n\t\t\tseen: [],\n\t\t\tforceEnumerable: true,\n\t\t\tmaxDepth,\n\t\t\tdepth: 0\n\t\t});\n\t}\n\n\t// People sometimes throw things besides Error objects…\n\tif (typeof value === 'function') {\n\t\t// `JSON.stringify()` discards functions. We do too, unless a function is thrown directly.\n\t\treturn `[Function: ${(value.name || 'anonymous')}]`;\n\t}\n\n\treturn value;\n};\n\nconst deserializeError = (value, options = {}) => {\n\tconst {maxDepth = Number.POSITIVE_INFINITY} = options;\n\n\tif (value instanceof Error) {\n\t\treturn value;\n\t}\n\n\tif (typeof value === 'object' && value !== null && !Array.isArray(value)) {\n\t\tconst newError = new Error(); // eslint-disable-line unicorn/error-message\n\t\tdestroyCircular({\n\t\t\tfrom: value,\n\t\t\tseen: [],\n\t\t\tto_: newError,\n\t\t\tmaxDepth,\n\t\t\tdepth: 0\n\t\t});\n\t\treturn newError;\n\t}\n\n\treturn new NonError(value);\n};\n\nmodule.exports = {\n\tserializeError,\n\tdeserializeError\n};\n","export enum WalletType {\n ApplePay = 'APPLE_PAY',\n SamsungPay = 'SAMSUNG_PAY',\n GooglePay = 'GOOGLE_PAY',\n}\n\nexport type StitchTransactionState =\n | 'TransactionPending'\n | 'TransactionSuccess'\n | 'TransactionFailure';\n\nexport interface StitchTransaction {\n id: string;\n externalReference: string;\n quantity: number;\n currency: string;\n nonce: string;\n status: StitchTransactionState;\n statusReason?: string | null;\n interactionUrl?: string | null;\n}\nexport interface InitialisationProperties {\n onCancelPayment?: () => void;\n clientId?: string;\n gatewayMerchantId?: string;\n}\n\nexport interface SamsungPayClient {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n isReadyToPay: (paymentMethods: SamsungPayPaymentMethods) => Promise<any>;\n loadPaymentSheet: (\n paymentMethods: SamsungPayPaymentMethods,\n transactionDetail: SamsungPayTransactionDetail,\n ) => Promise<SamsungPayPaymentCredential>;\n notify: (paymentResult: SamsungPayPaymentResult) => void;\n}\n\nexport type WalletPaySession = ApplePaySession;\n\nexport interface ApplePaySession {\n epochTimestamp: number;\n expiresAt: number;\n merchantSessionIdentifier: string;\n nonce: string;\n merchantIdentifier: string;\n domainName: string;\n displayName: string;\n signature: string;\n operationalAnalyticsIdentifier: string;\n retries: number;\n pspId: string;\n}\n\nexport interface SamsungPayPaymentResult {\n status: 'CHARGED' | 'REJECTED' | 'CANCELED' | 'ERRED';\n provider?: string;\n}\nexport type SamsungPayAllowedBrands = 'visa' | 'mastercard';\n\nexport interface SamsungPayPaymentCredential {\n card_brand: string;\n card_last4digit: string;\n '3DS': {\n type?: string;\n version: string;\n data: string;\n };\n recurring_payment: boolean;\n}\n\nexport interface SamsungPayPaymentMethods {\n version: '2';\n serviceId: string;\n protocol: 'PROTOCOL_3DS';\n allowedBrands: SamsungPayAllowedBrands[];\n}\n\nexport interface SamsungPayTransactionDetail {\n orderNumber: string;\n merchant: {\n name: string;\n url: string;\n id: string;\n countryCode: string;\n };\n amount: {\n option: 'FORMAT_TOTAL_PRICE_ONLY' | 'FORMAT_TOTAL_ESTIMATED_AMOUNT';\n currency: string;\n total: number;\n };\n}\n\nexport type ApplePayVerifyCallback = (url: string) => Promise<WalletPaySession>;\n\nexport type CreatePaymentCallback = (\n paymentToken:\n | ApplePayJS.ApplePayPaymentToken\n | google.payments.api.PaymentMethodTokenizationData['token']\n | SamsungPayPaymentCredential,\n fingerprint?: string,\n) => Promise<CreatePaymentCallbackResponse>;\n\nexport interface CreatePaymentCallbackResponse {\n status: StitchTransaction['status'];\n}\n","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nvar ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose, inner;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n if (async) inner = dispose;\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n var r, s = 0;\n function next() {\n while (r = env.stack.pop()) {\n try {\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\n if (r.dispose) {\n var result = r.dispose.call(r.value);\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n else s |= 1;\n }\n catch (e) {\n fail(e);\n }\n }\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\n });\n }\n return path;\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __esDecorate,\n __runInitializers,\n __propKey,\n __setFunctionName,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n __rewriteRelativeImportExtension,\n};\n","/**\n * Fingerprint Pro v3.11.4 - Copyright (c) FingerprintJS, Inc, 2024 (https://fingerprint.com)\n */\n\nimport{__spreadArray as e,__rest as t,__assign as n}from\"tslib\";function r(e,t){return function(e,t){return Object.prototype.hasOwnProperty.call(e,t)}(e,t)?e[t]:void 0}function o(e,t,n,r){var o,i=document,a=\"securitypolicyviolation\",u=function(t){var n=new URL(e,location.href),r=t.blockedURI;r!==n.href&&r!==n.protocol.slice(0,-1)&&r!==n.origin||(o=t,R())};i.addEventListener(a,u);var R=function(){return i.removeEventListener(a,u)};return null==r||r.then(R,R),Promise.resolve().then(t).then((function(e){return R(),e}),(function(e){return new Promise((function(e){var t=new MessageChannel;t.port1.onmessage=function(){return e()},t.port2.postMessage(null)})).then((function(){if(R(),o)return n(o);throw e}))}))}var i={default:\"endpoint\"},a={default:\"tlsEndpoint\"},u=\"Client timeout\",R=\"Network connection error\",c=\"Network request aborted\",s=\"Response cannot be parsed\",f=\"Blocked by CSP\",l=\"The endpoint parameter is not a valid URL\";function E(e){for(var t=\"\",n=0;n<e.length;++n)if(n>0){var r=e[n].toLowerCase();r!==e[n]?t+=\" \".concat(r):t+=e[n]}else t+=e[n].toUpperCase();return t}var d=/*#__PURE__*/E(\"WrongRegion\"),p=/*#__PURE__*/E(\"SubscriptionNotActive\"),v=/*#__PURE__*/E(\"UnsupportedVersion\"),_=/*#__PURE__*/E(\"InstallationMethodRestricted\"),O=/*#__PURE__*/E(\"HostnameRestricted\"),h=/*#__PURE__*/E(\"IntegrationFailed\"),I=\"API key required\",N=\"API key not found\",T=\"API key expired\",m=\"Request cannot be parsed\",w=\"Request failed\",A=\"Request failed to process\",P=\"Too many requests, rate limit exceeded\",y=\"Not available for this origin\",D=\"Not available with restricted header\",S=I,g=N,L=T,U=\"3.11.4\",b=\"Failed to load the JS script of the agent\",C=\"9319\";function M(t,n){var r,o,i,a,u,R,c,s=[],E=(r=function(t){var n=e([],t,!0);return{current:function(){return n[0]},postpone:function(){var e=n.shift();void 0!==e&&n.push(e)},exclude:function(){n.shift()}}}(t),a=100,u=3e3,R=0,o=function(){return Math.random()*Math.min(u,a*Math.pow(2,R++))},i=new Set,[r.current(),function(e,t){var n,a=t instanceof Error?t.message:\"\";if(a===f||a===l)r.exclude(),n=0;else if(a===C)r.exclude();else if(a===b){var u=Date.now()-e.getTime()<50,R=r.current();R&&u&&!i.has(R)&&(i.add(R),n=0),r.postpone()}else r.postpone();var c=r.current();return void 0===c?void 0:[c,null!=n?n:e.getTime()+o()-Date.now()]}]),d=E[0],p=E[1];if(void 0===d)return Promise.reject(new TypeError(\"The list of script URL patterns is empty\"));var v=function(e){var t=new Date,r=function(n){return s.push({url:e,startedAt:t,finishedAt:new Date,error:n})},o=n(e);return o.then((function(){return r()}),r),o.catch((function(e){if(null!=c||(c=e),s.length>=5)throw c;var n=p(t,e);if(!n)throw c;var r,o=n[0],i=n[1];return(r=i,new Promise((function(e){return setTimeout(e,r)}))).then((function(){return v(o)}))}))};return v(d).then((function(e){return[e,s]}))}var K=\"https://fpnpmcdn.net/v<version>/<apiKey>/loader_v<loaderVersion>.js\",B=K;function F(e){var o;e.scriptUrlPattern;var i=e.token,a=e.apiKey,u=void 0===a?i:a,R=t(e,[\"scriptUrlPattern\",\"token\",\"apiKey\"]),c=null!==(o=r(e,\"scriptUrlPattern\"))&&void 0!==o?o:K,s=function(){var e=[],t=function(){e.push({time:new Date,state:document.visibilityState})},n=function(e,t,n,r){return e.addEventListener(t,n,r),function(){return e.removeEventListener(t,n,r)}}(document,\"visibilitychange\",t);return t(),[e,n]}(),f=s[0],l=s[1];return Promise.resolve().then((function(){if(!u||\"string\"!=typeof u)throw new Error(I);var e=function(e,t){return(Array.isArray(e)?e:[e]).map((function(e){return function(e,t){var n=encodeURIComponent;return e.replace(/<[^<>]+>/g,(function(e){return\"<version>\"===e?\"3\":\"<apiKey>\"===e?n(t):\"<loaderVersion>\"===e?n(U):e}))}(String(e),t)}))}(c,u);return M(e,V)})).catch((function(e){throw l(),function(e){if(e instanceof Error&&e.message===C)return new Error(b);return e}(e)})).then((function(e){var t=e[0],r=e[1];return l(),t.load(n(n({},R),{ldi:{attempts:r,visibilityStates:f}}))}))}function V(e){return o(e,(function(){return function(e){return new Promise((function(t,n){if(function(e){if(URL.prototype)try{return new URL(e,location.href),!1}catch(t){if(t instanceof Error&&\"TypeError\"===t.name)return!0;throw t}}(e))throw new Error(l);var r=document.createElement(\"script\"),o=function(){var e;return null===(e=r.parentNode)||void 0===e?void 0:e.removeChild(r)},i=document.head||document.getElementsByTagName(\"head\")[0];r.onload=function(){o(),t()},r.onerror=function(){o(),n(new Error(b))},r.async=!0,r.src=e,i.appendChild(r)}))}(e)}),(function(){throw new Error(f)})).then(k)}function k(){var e=window,t=\"__fpjs_p_l_b\",n=e[t];if(function(e,t){var n,r=null===(n=Object.getOwnPropertyDescriptor)||void 0===n?void 0:n.call(Object,e,t);(null==r?void 0:r.configurable)?delete e[t]:r&&!r.writable||(e[t]=void 0)}(e,t),\"function\"!=typeof(null==n?void 0:n.load))throw new Error(C);return n}var G={load:F,defaultScriptUrlPattern:B,ERROR_SCRIPT_LOAD_FAIL:b,ERROR_API_KEY_EXPIRED:T,ERROR_API_KEY_INVALID:N,ERROR_API_KEY_MISSING:I,ERROR_BAD_REQUEST_FORMAT:m,ERROR_BAD_RESPONSE_FORMAT:s,ERROR_CLIENT_TIMEOUT:u,ERROR_CSP_BLOCK:f,ERROR_FORBIDDEN_ENDPOINT:O,ERROR_FORBIDDEN_HEADER:D,ERROR_FORBIDDEN_ORIGIN:y,ERROR_GENERAL_SERVER_FAILURE:w,ERROR_INSTALLATION_METHOD_RESTRICTED:_,ERROR_INTEGRATION_FAILURE:h,ERROR_INVALID_ENDPOINT:l,ERROR_NETWORK_ABORT:c,ERROR_NETWORK_CONNECTION:R,ERROR_RATE_LIMIT:P,ERROR_SERVER_TIMEOUT:A,ERROR_SUBSCRIPTION_NOT_ACTIVE:p,ERROR_TOKEN_EXPIRED:L,ERROR_TOKEN_INVALID:g,ERROR_TOKEN_MISSING:S,ERROR_UNSUPPORTED_VERSION:v,ERROR_WRONG_REGION:d,defaultEndpoint:i,defaultTlsEndpoint:a};export{T as ERROR_API_KEY_EXPIRED,N as ERROR_API_KEY_INVALID,I as ERROR_API_KEY_MISSING,m as ERROR_BAD_REQUEST_FORMAT,s as ERROR_BAD_RESPONSE_FORMAT,u as ERROR_CLIENT_TIMEOUT,f as ERROR_CSP_BLOCK,O as ERROR_FORBIDDEN_ENDPOINT,D as ERROR_FORBIDDEN_HEADER,y as ERROR_FORBIDDEN_ORIGIN,w as ERROR_GENERAL_SERVER_FAILURE,_ as ERROR_INSTALLATION_METHOD_RESTRICTED,h as ERROR_INTEGRATION_FAILURE,l as ERROR_INVALID_ENDPOINT,c as ERROR_NETWORK_ABORT,R as ERROR_NETWORK_CONNECTION,P as ERROR_RATE_LIMIT,b as ERROR_SCRIPT_LOAD_FAIL,A as ERROR_SERVER_TIMEOUT,p as ERROR_SUBSCRIPTION_NOT_ACTIVE,L as ERROR_TOKEN_EXPIRED,g as ERROR_TOKEN_INVALID,S as ERROR_TOKEN_MISSING,v as ERROR_UNSUPPORTED_VERSION,d as ERROR_WRONG_REGION,G as default,i as defaultEndpoint,B as defaultScriptUrlPattern,a as defaultTlsEndpoint,F as load};\n","// eslint-disable-next-line @typescript-eslint/naming-convention\nimport * as FingerprintJS from '@fingerprintjs/fingerprintjs-pro';\nimport type { RuntimeConfig } from 'runtime-config-stitch';\n\nlet lastFingerprintResult: FingerprintData | undefined;\nlet lastFingerprintTimestamp: number | undefined;\n\nexport interface FingerprintData {\n disabled: boolean;\n emulated: boolean;\n fingerprintDetails: {\n timestamp: string;\n requestId: string;\n visitorId: string;\n };\n}\n\nexport interface FingerprintError {\n error: {\n outcome: 'Success' | 'Failed';\n message: string;\n };\n}\n\nexport type Agent = FingerprintJS.Agent;\n\nfunction generateRandomId(length: number): string {\n const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';\n let result = '';\n for (let i = 0; i < length; i++) {\n result += chars.charAt(Math.floor(Math.random() * chars.length));\n }\n return result;\n}\n\nexport async function getFingerprintAgent({\n config,\n}: {\n config: RuntimeConfig['fingerprint'];\n}): Promise<Agent> {\n const agent = await FingerprintJS.load({\n apiKey: config.publicKey,\n endpoint: [config.endpoint, FingerprintJS.defaultEndpoint],\n scriptUrlPattern: [config.scriptUrlPattern, FingerprintJS.defaultScriptUrlPattern],\n region: 'eu',\n });\n return agent;\n}\n\nexport async function getFingerprintData({\n config,\n clientId,\n agent,\n payerId,\n}: {\n config: RuntimeConfig['fingerprint'] | undefined;\n clientId: string | undefined;\n agent: Agent | undefined;\n payerId?: string;\n}): Promise<string> {\n if (config?.disabled === true) {\n const data: FingerprintData = {\n disabled: true,\n emulated: false,\n fingerprintDetails: {\n timestamp: new Date().toISOString(),\n requestId: '',\n visitorId: '',\n },\n };\n return btoa(JSON.stringify(data));\n }\n\n if (config?.disabled === false && config?.useEmulation && clientId?.startsWith('test')) {\n const data: FingerprintData = {\n disabled: false,\n emulated: true,\n fingerprintDetails: {\n timestamp: new Date().toISOString(),\n requestId: `${Date.now()}.${generateRandomId(6)}`,\n visitorId: generateRandomId(20),\n },\n };\n return btoa(JSON.stringify(data));\n }\n\n if (agent !== undefined && config?.disabled === false) {\n const now = Date.now();\n\n if (\n lastFingerprintResult !== undefined &&\n lastFingerprintTimestamp !== undefined &&\n now - lastFingerprintTimestamp < config.cacheDurationInSeconds * 1000\n ) {\n return btoa(JSON.stringify(lastFingerprintResult));\n }\n\n try {\n const result = await agent.get({\n linkedId: clientId,\n tag: {\n payerId,\n },\n });\n const data: FingerprintData = {\n disabled: false,\n emulated: false,\n fingerprintDetails: {\n timestamp: new Date().toISOString(),\n requestId: result.requestId,\n visitorId: result.visitorId,\n },\n };\n lastFingerprintResult = data;\n lastFingerprintTimestamp = now;\n return btoa(JSON.stringify(data));\n } catch (error) {\n const data: FingerprintError = {\n error: {\n outcome: 'Failed',\n message: `Error: ${JSON.stringify(error)}`,\n },\n };\n return btoa(JSON.stringify(data));\n }\n }\n\n const data: FingerprintError = {\n error: {\n outcome: 'Failed',\n message:\n 'Attempted to get fingerprint data but either runtime config or the agent are not present',\n },\n };\n return btoa(JSON.stringify(data));\n}\n","import { serializeError } from 'serialize-error';\n\nimport generateUUID from './utils';\n\nconst STITCH_LOGGING_URL = 'https://analytics.stitch.money/query';\n\nexport interface LoggerOptions {\n loggingUrl?: string;\n}\n\nlet loggerOptions = {\n loggingUrl: STITCH_LOGGING_URL,\n} satisfies LoggerOptions;\n\nexport interface BaseMetadata {\n version?: string;\n sessionId?: string;\n clientId?: string;\n source?: string;\n hostname?: string;\n fingerprint?: string;\n}\n\nexport interface WalletsMetadata extends BaseMetadata {\n type: WalletType;\n}\n\nexport type WalletType = 'SAMSUNG' | 'APPLE' | 'GOOGLE';\n\nexport type Metadata = BaseMetadata | WalletsMetadata;\n\nlet loggerMetadata = {} satisfies Metadata;\n\nexport function configure(options: LoggerOptions & Metadata = {}): void {\n const { loggingUrl, ...rest } = options;\n\n if (typeof loggingUrl === 'string' && loggingUrl.length > 0) {\n loggerOptions.loggingUrl = loggingUrl;\n }\n\n loggerMetadata = {\n sessionId: generateUUID(),\n ...loggerMetadata,\n ...rest,\n };\n}\n\nfunction getHostname(): string | undefined {\n return window?.location?.ancestorOrigins?.length > 0\n ? Object.values(window?.location?.ancestorOrigins).join(',')\n : document?.referrer || undefined;\n}\n\nexport async function logEvent(message: string, metadata: Metadata): Promise<void> {\n try {\n await fetch(loggerOptions.loggingUrl, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({\n type: 'LOG_EVENT',\n event: {\n message,\n metadata: {\n hostname: getHostname(),\n ...loggerMetadata,\n ...metadata,\n },\n },\n }),\n });\n } catch (error) {\n try {\n await logError(`[logEvent] Error logging event`, error, metadata);\n } catch {\n // Swallow errors here, don't want to log errors to clients app console\n }\n }\n}\n\nexport async function logError(message: string, error: unknown, metadata: Metadata): Promise<void> {\n try {\n await fetch(loggerOptions.loggingUrl, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({\n type: 'LOG_ERROR',\n error: {\n message,\n error: serializeError(error),\n metadata: {\n hostname: getHostname(),\n ...loggerMetadata,\n ...metadata,\n },\n },\n }),\n });\n } catch {\n // Swallow errors here, don't want to log errors to clients app console\n }\n}\n","export default function generateUUID(): string {\n if (typeof crypto !== 'undefined' && crypto.randomUUID) {\n return crypto.randomUUID();\n } else {\n // Fallback for environments where crypto.randomUUID is not available.\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\n const r = (Math.random() * 16) | 0;\n const v = c === 'x' ? r : (r & 0x3) | 0x8;\n return v.toString(16);\n });\n }\n}\n","// src/lib/utils.ts\nfunction isNumber(value) {\n return typeof value === \"number\";\n}\nfunction isString(value) {\n return typeof value === \"string\";\n}\nfunction isBigInt(value) {\n return typeof value === \"bigint\";\n}\nfunction isDate(value) {\n return !!value && Object.prototype.toString.call(value) === \"[object Date]\" && !isNaN(value);\n}\nfunction isPojo(value) {\n return value !== null && value !== void 0 && typeof value === \"object\" && // This still seems to be the only reliable way to determine whether\n // something is a pojo... ¯\\_(ツ)_/¯\n Object.prototype.toString.call(value) === \"[object Object]\";\n}\n\n// src/core/annotate.ts\nvar _register = /* @__PURE__ */ new WeakSet();\nfunction brand(ann) {\n _register.add(ann);\n return ann;\n}\nfunction makeObjectAnn(fields, text) {\n return brand({ type: \"object\", fields, text });\n}\nfunction makeArrayAnn(items, text) {\n return brand({ type: \"array\", items, text });\n}\nfunction makeOpaqueAnn(value, text) {\n return brand({ type: \"opaque\", value, text });\n}\nfunction makeScalarAnn(value, text) {\n return brand({ type: \"scalar\", value, text });\n}\nfunction updateText(annotation, text) {\n if (text !== void 0) {\n return brand({ ...annotation, text });\n } else {\n return annotation;\n }\n}\nfunction merge(objAnnotation, fields) {\n const newFields = new Map([...objAnnotation.fields, ...fields]);\n return makeObjectAnn(newFields, objAnnotation.text);\n}\nfunction isAnnotation(thing) {\n return _register.has(thing);\n}\nfunction annotateArray(arr, text, seen) {\n seen.add(arr);\n const items = [];\n for (const value of arr) {\n items.push(annotate(value, void 0, seen));\n }\n return makeArrayAnn(items, text);\n}\nfunction annotateObject(obj, text, seen) {\n seen.add(obj);\n const fields = /* @__PURE__ */ new Map();\n for (const key of Object.keys(obj)) {\n const value = obj[key];\n fields.set(key, annotate(value, void 0, seen));\n }\n return makeObjectAnn(fields, text);\n}\nfunction annotate(value, text, seen) {\n if (value === null || value === void 0 || typeof value === \"string\" || typeof value === \"number\" || typeof value === \"boolean\" || typeof value === \"symbol\" || typeof value.getMonth === \"function\") {\n return makeScalarAnn(value, text);\n }\n if (isAnnotation(value)) {\n return updateText(value, text);\n }\n if (Array.isArray(value)) {\n if (seen.has(value)) {\n return makeOpaqueAnn(\"<circular ref>\", text);\n } else {\n return annotateArray(value, text, seen);\n }\n }\n if (isPojo(value)) {\n if (seen.has(value)) {\n return makeOpaqueAnn(\"<circular ref>\", text);\n } else {\n return annotateObject(value, text, seen);\n }\n }\n if (typeof value === \"function\") {\n return makeOpaqueAnn(\"<function>\", text);\n }\n return makeOpaqueAnn(\"???\", text);\n}\nfunction public_annotate(value, text) {\n return annotate(value, text, /* @__PURE__ */ new WeakSet());\n}\nfunction public_annotateObject(obj, text) {\n return annotateObject(obj, text, /* @__PURE__ */ new WeakSet());\n}\n\n// src/lib/text.ts\nvar INDENT = \" \";\nfunction isMultiline(s) {\n return s.indexOf(\"\\n\") >= 0;\n}\nfunction indent(s, prefix = INDENT) {\n if (isMultiline(s)) {\n return s.split(\"\\n\").map((line) => `${prefix}${line}`).join(\"\\n\");\n } else {\n return `${prefix}${s}`;\n }\n}\nvar quotePattern = /'/g;\nfunction quote(value) {\n return typeof value === \"string\" ? \"'\" + value.replace(quotePattern, \"\\\\'\") + \"'\" : JSON.stringify(value);\n}\n\n// src/core/format.ts\nfunction summarize(ann, keypath = []) {\n const result = [];\n if (ann.type === \"array\") {\n const items = ann.items;\n let index = 0;\n for (const ann2 of items) {\n for (const item of summarize(ann2, [...keypath, index++])) {\n result.push(item);\n }\n }\n } else if (ann.type === \"object\") {\n const fields = ann.fields;\n for (const [key, value] of fields) {\n for (const item of summarize(value, [...keypath, key])) {\n result.push(item);\n }\n }\n }\n const text = ann.text;\n if (!text) {\n return result;\n }\n let prefix;\n if (keypath.length === 0) {\n prefix = \"\";\n } else if (keypath.length === 1) {\n prefix = typeof keypath[0] === \"number\" ? `Value at index ${keypath[0]}: ` : `Value at key ${quote(keypath[0])}: `;\n } else {\n prefix = `Value at keypath ${quote(keypath.map(String).join(\".\"))}: `;\n }\n return [...result, `${prefix}${text}`];\n}\nfunction serializeString(s, width = 80) {\n let ser = JSON.stringify(s);\n if (ser.length <= width) {\n return ser;\n }\n const truncated = `${s.substring(0, width - 15)}...`;\n ser = `${JSON.stringify(truncated)} [truncated]`;\n return ser;\n}\nfunction serializeArray(annotation, prefix) {\n const { items } = annotation;\n if (items.length === 0) {\n return \"[]\";\n }\n const result = [];\n for (const item of items) {\n const [ser, ann] = serializeAnnotation(item, `${prefix}${INDENT}`);\n result.push(`${prefix}${INDENT}${ser}${\",\"}`);\n if (ann !== void 0) {\n result.push(indent(ann, `${prefix}${INDENT}`));\n }\n }\n return [\"[\", ...result, `${prefix}]`].join(\"\\n\");\n}\nfunction serializeObject(annotation, prefix) {\n const { fields } = annotation;\n if (fields.size === 0) {\n return \"{}\";\n }\n const result = [];\n for (const [key, valueAnnotation] of fields) {\n const kser = serializeValue(key);\n const valPrefix = `${prefix}${INDENT}${\" \".repeat(kser.length + 2)}`;\n const [vser, vann] = serializeAnnotation(valueAnnotation, `${prefix}${INDENT}`);\n result.push(`${prefix}${INDENT}${kser}: ${vser},`);\n if (vann !== void 0) {\n result.push(indent(vann, valPrefix));\n }\n }\n return [\"{\", ...result, `${prefix}}`].join(\"\\n\");\n}\nfunction serializeValue(value) {\n if (typeof value === \"string\") {\n return serializeString(value);\n } else if (typeof value === \"number\" || typeof value === \"boolean\" || typeof value === \"symbol\") {\n return value.toString();\n } else if (value === null) {\n return \"null\";\n } else if (value === void 0) {\n return \"undefined\";\n } else {\n if (isDate(value)) {\n return `new Date(${quote(value.toISOString())})`;\n } else if (value instanceof Date) {\n return \"(Invalid Date)\";\n } else {\n return \"(unserializable)\";\n }\n }\n}\nfunction serializeAnnotation(ann, prefix = \"\") {\n let serialized;\n if (ann.type === \"array\") {\n serialized = serializeArray(ann, prefix);\n } else if (ann.type === \"object\") {\n serialized = serializeObject(ann, prefix);\n } else if (ann.type === \"scalar\") {\n serialized = serializeValue(ann.value);\n } else {\n /* @__PURE__ */ ((_) => {\n })(ann);\n serialized = ann.value;\n }\n const text = ann.text;\n if (text !== void 0) {\n const sep = \"^\".repeat(isMultiline(serialized) ? 1 : serialized.length);\n return [serialized, [sep, text].join(isMultiline(text) ? \"\\n\" : \" \")];\n } else {\n return [serialized, void 0];\n }\n}\nfunction formatInline(ann) {\n const [serialized, annotation] = serializeAnnotation(ann);\n if (annotation !== void 0) {\n return `${serialized}\n${annotation}`;\n } else {\n return serialized;\n }\n}\nfunction formatShort(ann) {\n return summarize(ann, []).join(\"\\n\");\n}\n\n// src/core/Result.ts\nfunction ok(value) {\n return { ok: true, value, error: void 0 };\n}\nfunction err(error) {\n return { ok: false, value: void 0, error };\n}\n\n// src/core/Decoder.ts\nfunction noThrow(fn) {\n return (t) => {\n try {\n const v = fn(t);\n return ok(v);\n } catch (e) {\n return err(public_annotate(t, e instanceof Error ? e.message : String(e)));\n }\n };\n}\nfunction format(err2, formatter) {\n const formatted = formatter(err2);\n if (typeof formatted === \"string\") {\n const err3 = new Error(`\n${formatted}`);\n err3.name = \"Decoding error\";\n return err3;\n } else {\n return formatted;\n }\n}\nfunction define(fn) {\n function decode(blob) {\n return fn(\n blob,\n ok,\n (msg) => err(isAnnotation(msg) ? msg : public_annotate(blob, msg))\n );\n }\n function verify(blob, formatter = formatInline) {\n const result = decode(blob);\n if (result.ok) {\n return result.value;\n } else {\n throw format(result.error, formatter);\n }\n }\n function value(blob) {\n return decode(blob).value;\n }\n function transform(transformFn) {\n return then(noThrow(transformFn));\n }\n function refine(predicateFn, errmsg) {\n return reject(\n (value2) => predicateFn(value2) ? (\n // Don't reject\n null\n ) : (\n // Reject with the given error message\n errmsg\n )\n );\n }\n function then(next) {\n return define((blob, ok2, err2) => {\n const r1 = decode(blob);\n if (!r1.ok) return r1;\n const r2 = isDecoder(next) ? next : next(r1.value, ok2, err2);\n return isDecoder(r2) ? r2.decode(r1.value) : r2;\n });\n }\n function pipe(next) {\n return then(next);\n }\n function reject(rejectFn) {\n return then((blob, ok2, err2) => {\n const errmsg = rejectFn(blob);\n return errmsg === null ? ok2(blob) : err2(typeof errmsg === \"string\" ? public_annotate(blob, errmsg) : errmsg);\n });\n }\n function describe(message) {\n return define((blob, _, err2) => {\n const result = decode(blob);\n if (result.ok) {\n return result;\n } else {\n return err2(public_annotate(result.error, message));\n }\n });\n }\n return brand2({\n verify,\n value,\n decode,\n transform,\n refine,\n reject,\n describe,\n then,\n pipe\n });\n}\nvar _register2 = /* @__PURE__ */ new WeakSet();\nfunction brand2(decoder) {\n _register2.add(decoder);\n return decoder;\n}\nfunction isDecoder(thing) {\n return _register2.has(thing);\n}\n\n// src/arrays.ts\nvar poja = define((blob, ok2, err2) => {\n if (!Array.isArray(blob)) {\n return err2(\"Must be an array\");\n }\n return ok2(blob);\n});\nfunction all(items, blobs, ok2, err2) {\n const results = [];\n for (let index = 0; index < items.length; ++index) {\n const result = items[index];\n if (result.ok) {\n results.push(result.value);\n } else {\n const ann = result.error;\n const clone = blobs.slice();\n clone.splice(\n index,\n 1,\n public_annotate(ann, ann.text ? `${ann.text} (at index ${index})` : `index ${index}`)\n );\n return err2(public_annotate(clone));\n }\n }\n return ok2(results);\n}\nfunction array(decoder) {\n const decodeFn = decoder.decode;\n return poja.then((blobs, ok2, err2) => {\n const results = blobs.map(decodeFn);\n return all(results, blobs, ok2, err2);\n });\n}\nfunction isNonEmpty(arr) {\n return arr.length > 0;\n}\nfunction nonEmptyArray(decoder) {\n return array(decoder).refine(isNonEmpty, \"Must be non-empty array\");\n}\nvar ntuple = (n) => poja.refine((arr) => arr.length === n, `Must be a ${n}-tuple`);\nfunction tuple(...decoders) {\n return ntuple(decoders.length).then((blobs, ok2, err2) => {\n let allOk = true;\n const rvs = decoders.map((decoder, i) => {\n const blob = blobs[i];\n const result = decoder.decode(blob);\n if (result.ok) {\n return result.value;\n } else {\n allOk = false;\n return result.error;\n }\n });\n if (allOk) {\n return ok2(rvs);\n } else {\n return err2(public_annotate(rvs));\n }\n });\n}\n\n// src/misc.ts\nfunction instanceOf(klass) {\n return define(\n (blob, ok2, err2) => blob instanceof klass ? ok2(blob) : err2(`Must be ${klass.name} instance`)\n );\n}\nfunction lazy(decoderFn) {\n return define((blob) => decoderFn().decode(blob));\n}\nfunction prep(mapperFn, decoder) {\n return define((originalInput, _, err2) => {\n let blob;\n try {\n blob = mapperFn(originalInput);\n } catch (e) {\n return err2(\n public_annotate(\n originalInput,\n // istanbul ignore next\n e instanceof Error ? e.message : String(e)\n )\n );\n }\n const r = decoder.decode(blob);\n return r.ok ? r : err2(public_annotate(originalInput, r.error.text));\n });\n}\n\n// src/lib/set-methods.ts\nfunction difference(xs, ys) {\n const result = /* @__PURE__ */ new Set();\n for (const x of xs) {\n if (!ys.has(x)) {\n result.add(x);\n }\n }\n return result;\n}\n\n// src/objects.ts\nvar pojo = define(\n (blob, ok2, err2) => isPojo(blob) ? ok2(blob) : err2(\"Must be an object\")\n);\nfunction object(decoders) {\n const knownKeys = new Set(Object.keys(decoders));\n return pojo.then((plainObj, ok2, err2) => {\n const actualKeys = new Set(Object.keys(plainObj));\n const missingKeys = difference(knownKeys, actualKeys);\n const record2 = {};\n let errors = null;\n for (const key of Object.keys(decoders)) {\n const decoder = decoders[key];\n const rawValue = plainObj[key];\n const result = decoder.decode(rawValue);\n if (result.ok) {\n const value = result.value;\n if (value !== void 0) {\n record2[key] = value;\n }\n missingKeys.delete(key);\n } else {\n const ann = result.error;\n if (rawValue === void 0) {\n missingKeys.add(key);\n } else {\n if (errors === null) {\n errors = /* @__PURE__ */ new Map();\n }\n errors.set(key, ann);\n }\n }\n }\n if (errors || missingKeys.size > 0) {\n let objAnn = public_annotateObject(plainObj);\n if (errors) {\n objAnn = merge(objAnn, errors);\n }\n if (missingKeys.size > 0) {\n const errMsg = Array.from(missingKeys).map(quote).join(\", \");\n const pluralized = missingKeys.size > 1 ? \"keys\" : \"key\";\n objAnn = updateText(objAnn, `Missing ${pluralized}: ${errMsg}`);\n }\n return err2(objAnn);\n }\n return ok2(record2);\n });\n}\nfunction exact(decoders) {\n const allowedKeys = new Set(Object.keys(decoders));\n const checked = pojo.reject((plainObj) => {\n const actualKeys = new Set(Object.keys(plainObj));\n const extraKeys = difference(actualKeys, allowedKeys);\n return extraKeys.size > 0 ? `Unexpected extra keys: ${Array.from(extraKeys).map(quote).join(\", \")}` : null;\n });\n return checked.pipe(object(decoders));\n}\nfunction inexact(decoders) {\n return pojo.pipe((plainObj) => {\n const allkeys = new Set(Object.keys(plainObj));\n return object(decoders).transform((safepart) => {\n const safekeys = new Set(Object.keys(decoders));\n for (const k of safekeys) allkeys.add(k);\n const rv = {};\n for (const k of allkeys) {\n if (safekeys.has(k)) {\n const value = safepart[k];\n if (value !== void 0) {\n rv[k] = value;\n }\n } else {\n rv[k] = plainObj[k];\n }\n }\n return rv;\n });\n });\n}\n\n// src/unions.ts\nvar EITHER_PREFIX = \"Either:\\n\";\nfunction itemize(s) {\n return `-${indent(s).substring(1)}`;\n}\nfunction nest(errText) {\n return errText.startsWith(EITHER_PREFIX) ? errText.substring(EITHER_PREFIX.length) : itemize(errText);\n}\nfunction either(...decoders) {\n if (decoders.length === 0) {\n throw new Error(\"Pass at least one decoder to either()\");\n }\n return define((blob, _, err2) => {\n const errors = [];\n for (let i = 0; i < decoders.length; i++) {\n const result = decoders[i].decode(blob);\n if (result.ok) {\n return result;\n } else {\n errors.push(result.error);\n }\n }\n const text = EITHER_PREFIX + errors.map((err3) => nest(summarize(err3).join(\"\\n\"))).join(\"\\n\");\n return err2(text);\n });\n}\nfunction oneOf(constants) {\n return define((blob, ok2, err2) => {\n const winner = constants.find((c) => c === blob);\n if (winner !== void 0) {\n return ok2(winner);\n }\n return err2(`Must be one of ${constants.map((value) => quote(value)).join(\", \")}`);\n });\n}\nfunction enum_(enumObj) {\n const values = Object.values(enumObj);\n if (!values.some(isNumber)) {\n return oneOf(values);\n } else {\n const nums = values.filter(isNumber);\n const ignore = new Set(nums.map((val) => enumObj[val]));\n const strings = values.filter(isString).filter((val) => !ignore.has(val));\n return oneOf([...nums, ...strings]);\n }\n}\nfunction taggedUnion(field, mapping2) {\n const scout = object({\n [field]: prep(String, oneOf(Object.keys(mapping2)))\n }).transform((o) => o[field]);\n return select(\n scout,\n // peek...\n (key) => mapping2[key]\n // ...then select\n );\n}\nfunction select(scout, selectFn) {\n return define((blob) => {\n const result = scout.decode(blob);\n return result.ok ? selectFn(result.value).decode(blob) : result;\n });\n}\n\n// src/basics.ts\nfunction lazyval(value) {\n return typeof value === \"function\" ? value() : value;\n}\nvar null_ = constant(null);\nvar undefined_ = constant(void 0);\nvar nullish_ = define(\n (blob, ok2, err2) => (\n // Equiv to either(undefined_, null_), but combined for better error message\n blob == null ? ok2(blob) : err2(\"Must be undefined or null\")\n )\n);\nfunction optional(decoder, defaultValue) {\n const rv = either(undefined_, decoder);\n return arguments.length >= 2 ? rv.transform((value) => value ?? lazyval(defaultValue)) : rv;\n}\nfunction nullable(decoder, defaultValue) {\n const rv = either(null_, decoder);\n return arguments.length >= 2 ? rv.transform((value) => value ?? lazyval(defaultValue)) : rv;\n}\nvar maybe = nullish;\nfunction nullish(decoder, defaultValue) {\n const rv = either(nullish_, decoder);\n return arguments.length >= 2 ? rv.transform((value) => value ?? lazyval(defaultValue)) : rv;\n}\nfunction constant(value) {\n return define(\n (blob, ok2, err2) => blob === value ? ok2(value) : err2(`Must be ${typeof value === \"symbol\" ? String(value) : quote(value)}`)\n );\n}\nfunction always(value) {\n return define(\n typeof value === \"function\" ? (_, ok2) => ok2(value()) : (_, ok2) => ok2(value)\n );\n}\nfunction never(msg) {\n return define((_, __, err2) => err2(msg));\n}\nvar fail = never;\nvar hardcoded = always;\nvar unknown = define((blob, ok2, _) => ok2(blob));\nvar mixed = unknown;\n\n// src/booleans.ts\nvar boolean = define((blob, ok2, err2) => {\n return typeof blob === \"boolean\" ? ok2(blob) : err2(\"Must be boolean\");\n});\nvar truthy = define((blob, ok2, _) => ok2(!!blob));\n\n// src/collections.ts\nfunction record(fst, snd) {\n const keyDecoder = snd !== void 0 ? fst : void 0;\n const valueDecoder = snd !== void 0 ? snd : fst;\n return pojo.then((input, ok2, err2) => {\n let rv = {};\n const errors = /* @__PURE__ */ new Map();\n for (const key of Object.keys(input)) {\n const value = input[key];\n const keyResult = keyDecoder?.decode(key);\n if (keyResult?.ok === false) {\n return err2(\n public_annotate(input, `Invalid key ${quote(key)}: ${formatShort(keyResult.error)}`)\n );\n }\n const k = keyResult?.value ?? key;\n const result = valueDecoder.decode(value);\n if (result.ok) {\n if (errors.size === 0) {\n rv[k] = result.value;\n }\n } else {\n errors.set(key, result.error);\n rv = {};\n }\n }\n if (errors.size > 0) {\n return err2(merge(public_annotateObject(input), errors));\n } else {\n return ok2(rv);\n }\n });\n}\nvar dict = record;\nfunction setFromArray(decoder) {\n return array(decoder).transform((items) => new Set(items));\n}\nvar set = setFromArray;\nfunction mapping(decoder) {\n return record(decoder).transform((obj) => new Map(Object.entries(obj)));\n}\n\n// src/lib/size-options.ts\nfunction bySizeOptions(options) {\n const size = options?.size;\n const min = size ?? options?.min;\n const max = size ?? options?.max;\n const atLeast = min === max ? \"\" : \"at least \";\n const atMost = min === max ? \"\" : \"at most \";\n const tooShort = min !== void 0 && `Too short, must be ${atLeast}${min} chars`;\n const tooLong = max !== void 0 && `Too long, must be ${atMost}${max} chars`;\n return tooShort && tooLong ? (s) => s.length < min ? tooShort : s.length > max ? tooLong : null : tooShort ? (s) => s.length < min ? tooShort : null : tooLong ? (s) => s.length > max ? tooLong : null : () => null;\n}\n\n// src/strings.ts\nvar url_re = /^([A-Za-z]{3,9}(?:[+][A-Za-z]{3,9})?):\\/\\/(?:([-;:&=+$,\\w]+)@)?(?:([A-Za-z0-9.-]+)(?::([0-9]{2,5}))?)(\\/(?:[-+~%/.,\\w]*)?(?:\\?[-+=&;%@.,/\\w]*)?(?:#[.,!/\\w]*)?)?$/;\nvar string = define(\n (blob, ok2, err2) => isString(blob) ? ok2(blob) : err2(\"Must be string\")\n);\nvar nonEmptyString = regex(/\\S/, \"Must be non-empty string\");\nfunction regex(regex2, msg) {\n return string.refine((s) => regex2.test(s), msg);\n}\nvar email = regex(\n // The almost perfect email regex, taken from https://emailregex.com/\n /^(([^<>()[\\]\\\\.,;:\\s@\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/,\n \"Must be email\"\n);\nvar url = either(\n regex(url_re, \"Must be URL\").transform((value) => new URL(value)),\n instanceOf(URL)\n);\nvar httpsUrl = url.refine(\n (value) => value.protocol === \"https:\",\n \"Must be an HTTPS URL\"\n);\nvar identifier = regex(\n /^[a-z_][a-z0-9_]*$/i,\n \"Must be valid identifier\"\n);\nfunction nanoid(options) {\n return regex(/^[a-z0-9_-]+$/i, \"Must be nano ID\").reject(\n bySizeOptions(options ?? { size: 21 })\n );\n}\nvar uuid = regex(\n /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i,\n \"Must be uuid\"\n);\nvar uuidv1 = (\n // https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_1_(date-time_and_MAC_address)\n uuid.refine((value) => value[14] === \"1\", \"Must be uuidv1\")\n);\nvar uuidv4 = (\n // https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_4_(random)\n uuid.refine((value) => value[14] === \"4\", \"Must be uuidv4\")\n);\nvar decimal = regex(/^[0-9]+$/, \"Must only contain digits\");\nvar hexadecimal = regex(\n /^[0-9a-f]+$/i,\n \"Must only contain hexadecimal digits\"\n);\nvar numeric = decimal.transform(Number);\n\n// src/dates.ts\nvar iso8601_re = /^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:[.]\\d+)?(?:Z|[+-]\\d{2}:?\\d{2})$/;\nvar date = define((blob, ok2, err2) => {\n return isDate(blob) ? ok2(blob) : err2(\"Must be a Date\");\n});\nvar iso8601 = (\n // Input itself needs to match the ISO8601 regex...\n regex(iso8601_re, \"Must be ISO8601 format\").transform(\n // Make sure it is a _valid_ date\n (value) => {\n const date2 = new Date(value);\n if (isNaN(date2.getTime())) {\n throw new Error(\"Must be valid date/time value\");\n }\n return date2;\n }\n )\n);\nvar datelike = either(date, iso8601).describe(\"Must be a Date or date string\");\n\n// src/numbers.ts\nvar anyNumber = define(\n (blob, ok2, err2) => isNumber(blob) ? ok2(blob) : err2(\"Must be number\")\n);\nvar number = anyNumber.refine(\n (n) => Number.isFinite(n),\n \"Number must be finite\"\n);\nvar integer = number.refine(\n (n) => Number.isInteger(n),\n \"Number must be an integer\"\n);\nvar positiveNumber = number.refine(\n (n) => n >= 0 && !Object.is(n, -0),\n \"Number must be positive\"\n);\nvar positiveInteger = integer.refine(\n (n) => n >= 0 && !Object.is(n, -0),\n \"Number must be positive\"\n);\nvar bigint = define(\n (blob, ok2, err2) => isBigInt(blob) ? ok2(blob) : err2(\"Must be bigint\")\n);\n\n// src/json.ts\nvar jsonObject = lazy(() => record(json));\nvar jsonArray = lazy(() => array(json));\nvar json = either(\n null_,\n string,\n number,\n boolean,\n jsonObject,\n jsonArray\n).describe(\"Must be valid JSON value\");\nexport {\n always,\n anyNumber,\n array,\n bigint,\n boolean,\n constant,\n date,\n datelike,\n decimal,\n define,\n dict,\n either,\n email,\n enum_,\n err,\n exact,\n fail,\n formatInline,\n formatShort,\n hardcoded,\n hexadecimal,\n httpsUrl,\n identifier,\n inexact,\n instanceOf,\n integer,\n iso8601,\n json,\n jsonArray,\n jsonObject,\n lazy,\n mapping,\n maybe,\n mixed,\n nanoid,\n never,\n nonEmptyArray,\n nonEmptyString,\n null_,\n nullable,\n nullish,\n number,\n numeric,\n object,\n ok,\n oneOf,\n optional,\n poja,\n pojo,\n positiveInteger,\n positiveNumber,\n prep,\n record,\n regex,\n select,\n set,\n setFromArray,\n string,\n taggedUnion,\n truthy,\n tuple,\n undefined_,\n unknown,\n url,\n uuid,\n uuidv1,\n uuidv4\n};\n","import { boolean, nonEmptyString, number, object, positiveNumber, type Decoder } from 'decoders';\n\nconst MAX_RETRIES = 3;\nconst DELAY = 500; // 0.5s\nexport interface RuntimeConfig {\n analytics: {\n changeEventDebounceDelayMs: number;\n };\n evervault: {\n teamId: string;\n appId: string;\n };\n fingerprint: {\n disabled: boolean;\n useEmulation: boolean;\n publicKey: string;\n endpoint: string;\n scriptUrlPattern: string;\n cacheDurationInSeconds: number;\n };\n}\n\nconst runtimeConfigDecoder: Decoder<RuntimeConfig> = object({\n analytics: object({\n changeEventDebounceDelayMs: positiveNumber,\n }),\n evervault: object({\n teamId: nonEmptyString,\n appId: nonEmptyString,\n }),\n fingerprint: object({\n disabled: boolean,\n useEmulation: boolean,\n publicKey: nonEmptyString,\n endpoint: nonEmptyString,\n scriptUrlPattern: nonEmptyString,\n cacheDurationInSeconds: number,\n }),\n});\n\nexport async function getRuntimeConfig(\n clientId: string,\n signal?: AbortSignal,\n): Promise<{ type: 'success'; runtimeConfig: RuntimeConfig } | { type: 'error'; error?: Error }> {\n try {\n let attempt = 0;\n\n while (attempt < MAX_RETRIES) {\n try {\n const response = await fetch(`https://public-keys.stitch.money/${clientId}`, {\n signal,\n });\n\n if (response.ok) {\n const runtimeConfig = runtimeConfigDecoder.verify(await response.json());\n return { type: 'success', runtimeConfig };\n }\n\n attempt++;\n if (attempt === MAX_RETRIES) {\n return {\n type: 'error',\n error: new Error(\n `[${getRuntimeConfig.name}] Failed to retrieve runtime config after ${MAX_RETRIES} attempts. public-keys worker returned ${response.status} response`,\n ),\n };\n }\n\n await new Promise((resolve) => setTimeout(resolve, DELAY));\n } catch (error) {\n attempt++;\n if (attempt === MAX_RETRIES) {\n throw error;\n }\n\n await new Promise((resolve) => setTimeout(resolve, DELAY));\n }\n }\n return {\n type: 'error',\n error: new Error(`[${getRuntimeConfig.name}] Failed to retrieve runtime config`),\n };\n } catch (error) {\n if (error instanceof Error) {\n return { type: 'error', error };\n }\n if (typeof error === 'string') {\n return { type: 'error', error: new Error(error) };\n }\n\n return {\n type: 'error',\n error: new Error(\n `[${getRuntimeConfig.name}] Failed to retrieve runtime config. Unknown error thrown`,\n ),\n };\n }\n}\n","import { getFingerprintAgent, getFingerprintData, type Agent } from 'fingerprint-stitch';\nimport { configure as configureLogger, logError } from 'logger-stitch';\nimport { getRuntimeConfig, type RuntimeConfig } from 'runtime-config-stitch';\nimport { v4 } from 'uuid';\n\nimport {\n WalletType,\n type ApplePayVerifyCallback,\n type CreatePaymentCallback,\n type InitialisationProperties,\n type SamsungPayClient,\n type SamsungPayPaymentCredential,\n type SamsungPayTransactionDetail,\n} from 'src/types';\nimport {\n determineApplePaySupport,\n determineGooglePaySupport,\n determineSamsungPaySupport,\n getApplePayVersion,\n} from 'src/utils/browser-support';\nimport { SAMSUNG_PAY_PAYMENT_METHODS } from 'src/utils/constants';\nimport { SessionError } from 'src/utils/errors';\nimport { getErrorAsString } from 'src/utils/helpers';\nimport { version } from '../../package.json';\n\nconst LOG_PREFIX_ON_VALIDATE_MERCHANT = '[onvalidatemerchant]';\nconst LOG_PREFIX_ON_PAYMENT_AUTHORIZED = '[onpaymentauthorized]';\nconst LOG_PREFIX_SAMSUNG_PAY_SESSION_HANDLER = '[onClickSamsungPaySessionHandler]';\nconst LOG_PREFIX_GOOGLE_PAY_SESSION_HANDLER = '[onClickGooglePaySessionHandler]';\n\n/**\n * Client-side SDK for handling Stitch wallet payments\n */\nexport class StitchWalletClientSdk {\n private readonly onCancelPayment: () => void;\n private readonly clientId: string | undefined;\n private readonly gatewayMerchantId: string | undefined;\n\n private applePayIsSupported: boolean = false;\n private samsungPayIsSupported: boolean = false;\n private googlePayIsSupported: boolean = false;\n\n private runtimeConfig: RuntimeConfig | undefined;\n private fingerprintAgent: Agent | undefined;\n\n private readonly googlePayClient: google.payments.api.PaymentsClient | undefined;\n private readonly samsungPayClient: SamsungPayClient | undefined;\n /**\n * Initializes a StitchWalletClientSdk instance\n *\n * @param {InitialisationProperties} initialisationProperties\n */\n constructor(initialisationProperties: InitialisationProperties) {\n configureLogger({\n source: 'wallets-client',\n version,\n });\n\n const { onCancelPayment, clientId, gatewayMerchantId } = initialisationProperties;\n this.googlePayClient = gatewayMerchantId\n ? new google.payments.api.PaymentsClient({\n environment: clientId?.startsWith('test-') ? 'TEST' : 'PRODUCTION',\n })\n : undefined;\n\n this.samsungPayClient = window.SamsungPay\n ? new window.SamsungPay.PaymentClient({\n environment: clientId?.startsWith('test-') ? 'STAGE' : 'PRODUCTION',\n nonce: v4(),\n })\n : undefined;\n\n this.onCancelPayment = onCancelPayment ?? (() => {});\n this.clientId = clientId;\n this.gatewayMerchantId = gatewayMerchantId;\n\n void this.loadFingerprintAgent();\n }\n\n private async loadRuntimeConfig() {\n if (this.runtimeConfig !== undefined) {\n return;\n }\n if (this.clientId) {\n const configResult = await getRuntimeConfig(this.clientId);\n if (configResult.type === 'error') {\n const errorMessage =\n configResult.error?.message ?? 'Failed to load runtime configuration';\n void logError(errorMessage, configResult.error, {\n clientId: this.clientId,\n });\n\n if (configResult.error) {\n throw configResult.error;\n }\n\n throw new Error(errorMessage);\n }\n\n this.runtimeConfig = configResult.runtimeConfig;\n }\n }\n\n private async loadFingerprintAgent() {\n if (this.fingerprintAgent !== undefined) {\n return;\n }\n if (this.runtimeConfig === undefined) {\n await this.loadRuntimeConfig();\n }\n if (this.runtimeConfig !== undefined && !this.runtimeConfig.fingerprint.disabled) {\n this.fingerprintAgent = await getFingerprintAgent({\n config: this.runtimeConfig.fingerprint,\n });\n }\n }\n\n /**\n * Returns encoded fingerprint data for the current device\n *\n * @returns {Promise<string>} Encoded fingerprint data\n */\n public async fingerprint(): Promise<string> {\n const data = await getFingerprintData({\n config: this.runtimeConfig?.fingerprint,\n agent: this.fingerprintAgent,\n clientId: this.clientId,\n });\n configureLogger({ fingerprint: data });\n return data;\n }\n\n /**\n * Returns a list of wallet payment methods supported on the device and/or browser\n *\n * @returns {Promise<WalletType[]>} Array of supported payment methods\n */\n public async supportedPaymentMethods(): Promise<WalletType[]> {\n const supportedWallets: WalletType[] = [];\n\n this.applePayIsSupported = determineApplePaySupport();\n if (this.applePayIsSupported) {\n supportedWallets.push(WalletType.ApplePay);\n }\n\n this.samsungPayIsSupported = await determineSamsungPaySupport(this.samsungPayClient);\n if (this.samsungPayIsSupported) {\n supportedWallets.push(WalletType.SamsungPay);\n }\n\n this.googlePayIsSupported = await determineGooglePaySupport(\n this.googlePayClient,\n this.gatewayMerchantId,\n this.clientId,\n );\n if (this.googlePayIsSupported) {\n supportedWallets.push(WalletType.GooglePay);\n }\n\n return supportedWallets;\n }\n\n /**\n * Returns a onClick handler function for an Apple Pay session encapsulating merchant validation and payment creation\n *\n * @param {string} currency - Payment currency in ISO 4127 format e.g. ZAR.\n * @param {number} amount - Payment amount.\n * @param {string} label - Payment sheet label.\n * @param {ApplePayVerifyCallback} verifyCallback - Callback for merchant validation.\n * @param {CreatePaymentCallback} createPaymentCallback - Callback for payment creation.\n * @param {RecurringPaymentOptions} [recurringPaymentOptions] - @alpha Optional parameters for recurring payments.\n * @returns {() => void} Function to handle Apple Pay button interaction.\n */\n public onClickApplePaySessionHandler(\n currency: string,\n amount: number,\n label: string,\n verifyCallback: ApplePayVerifyCallback,\n createPaymentCallback: CreatePaymentCallback,\n recurringPaymentOptions?: {\n managementUrl: string;\n billingAgreement?: string;\n recurringAmount?: number;\n recurringIntervalUnit?: ApplePayJS.ApplePayRecurringPaymentDateUnit;\n recurringIntervalCount?: number;\n },\n ): () => void {\n const version = getApplePayVersion();\n\n return () => {\n const request: ApplePayJS.ApplePayPaymentRequest = {\n countryCode: 'ZA',\n currencyCode: currency,\n supportedNetworks: ['visa', 'masterCard'],\n merchantCapabilities: ['supports3DS'],\n total: {\n label,\n amount: amount.toString(),\n },\n };\n if (recurringPaymentOptions) {\n request.recurringPaymentRequest = {\n paymentDescription: label,\n billingAgreement: recurringPaymentOptions.billingAgreement,\n regularBilling: {\n label,\n amount: (recurringPaymentOptions.recurringAmount ?? amount).toString(),\n paymentTiming: 'recurring',\n recurringPaymentIntervalUnit: recurringPaymentOptions.recurringIntervalUnit,\n recurringPaymentIntervalCount:\n recurringPaymentOptions.recurringIntervalCount ?? 1,\n },\n managementURL: recurringPaymentOptions.managementUrl,\n };\n }\n\n let session: ApplePaySession | undefined;\n try {\n session = new ApplePaySession(version, request);\n } catch (error) {\n void logError('Failed to create Apple Pay session', error, {\n clientId: this.clientId,\n });\n return;\n }\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n session.onvalidatemerchant = async (event) => {\n try {\n const verifyCallbackResponse = await verifyCallback(event.validationURL);\n session?.completeMerchantValidation(verifyCallbackResponse);\n } catch (error) {\n void logError(\n `${LOG_PREFIX_ON_VALIDATE_MERCHANT} Failed to complete merchant validation`,\n error,\n {\n clientId: this.clientId,\n },\n );\n throw new SessionError(\n `Failed to complete merchant validation: ${getErrorAsString(error)}`,\n );\n }\n };\n\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n session.onpaymentauthorized = async (event) => {\n try {\n const paymentToken = event.payment.token;\n const fingerprintData = await this.fingerprint();\n const createPaymentCallbackResponse = await createPaymentCallback(\n paymentToken,\n fingerprintData,\n );\n\n switch (createPaymentCallbackResponse.status) {\n case 'TransactionPending':\n case 'TransactionSuccess': {\n session?.completePayment(ApplePaySession.STATUS_SUCCESS);\n break;\n }\n case 'TransactionFailure': {\n session?.completePayment(ApplePaySession.STATUS_FAILURE);\n break;\n }\n default: {\n const errorMessage = 'Invalid transaction status';\n const error = new SessionError(\n `${errorMessage} ${createPaymentCallbackResponse.status}`,\n );\n void logError(\n `${LOG_PREFIX_ON_PAYMENT_AUTHORIZED} Invalid transaction status`,\n error,\n {\n clientId: this.clientId,\n },\n );\n throw error;\n }\n }\n } catch (error) {\n session?.completePayment(ApplePaySession.STATUS_FAILURE);\n void logError(\n `${LOG_PREFIX_ON_PAYMENT_AUTHORIZED} Failed to create payment`,\n error,\n {\n clientId: this.clientId,\n },\n );\n throw new SessionError(`Failed to create payment: ${getErrorAsString(error)}`);\n }\n };\n // eslint-disable-next-line unicorn/prefer-add-event-listener\n session.oncancel = () => {\n this.onCancelPayment();\n };\n\n session.begin();\n };\n }\n\n /**\n * Returns a onClick handler function for a Samsung Pay session encapsulating payment creation\n *\n * @param {string} currency - Payment currency in ISO 4127 format e.g. ZAR.\n * @param {number} amount - Payment amount.\n * @param {string} label - Payment sheet label.\n * @param {string} externalReference - Payment external reference.\n * @param {string} initiativeContext - Merchant domain URL.\n * @param {string} gatewayMerchantId - Gateway merchant ID.\n * @param {CreatePaymentCallback} createPaymentCallback - Callback for payment creation.\n * @returns {() => void} Function to handle Samsung Pay button interaction.\n */\n public onClickSamsungPaySessionHandler(\n currency: string,\n amount: number,\n label: string,\n externalReference: string,\n initiativeContext: string,\n gatewayMerchantId: string,\n createPaymentCallback: CreatePaymentCallback,\n ): () => void {\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n return async () => {\n if (!this.samsungPayClient) {\n const errorMessage = 'Samsung Pay client not initialized';\n const error = new Error(errorMessage);\n void logError(`${LOG_PREFIX_SAMSUNG_PAY_SESSION_HANDLER} ${errorMessage}`, error, {\n clientId: this.clientId,\n });\n throw error;\n }\n try {\n const transactionDetail: SamsungPayTransactionDetail = {\n orderNumber: externalReference,\n merchant: {\n name: label,\n url: initiativeContext,\n id: gatewayMerchantId,\n countryCode: 'ZA',\n },\n amount: {\n option: 'FORMAT_TOTAL_PRICE_ONLY',\n currency,\n total: amount,\n },\n };\n\n const fingerprintData = await this.fingerprint();\n const paymentCredential: SamsungPayPaymentCredential =\n await this.samsungPayClient.loadPaymentSheet(\n SAMSUNG_PAY_PAYMENT_METHODS,\n transactionDetail,\n );\n\n const createPaymentCallbackResponse = await createPaymentCallback(\n paymentCredential,\n fingerprintData,\n );\n\n switch (createPaymentCallbackResponse.status) {\n case 'TransactionPending': {\n break;\n }\n case 'TransactionFailure': {\n this.samsungPayClient.notify({\n status: 'REJECTED',\n });\n break;\n }\n case 'TransactionSuccess': {\n this.samsungPayClient.notify({\n status: 'CHARGED',\n });\n\n break;\n }\n default: {\n this.samsungPayClient.notify({\n status: 'ERRED',\n });\n const errorMessage = `${LOG_PREFIX_SAMSUNG_PAY_SESSION_HANDLER} Invalid transaction status: ${createPaymentCallbackResponse.status}`;\n const error = new SessionError(errorMessage);\n void logError(errorMessage, error, { clientId: this.clientId });\n throw error;\n }\n }\n } catch (error) {\n void logError(\n `${LOG_PREFIX_SAMSUNG_PAY_SESSION_HANDLER} Failed to create payment`,\n error,\n {\n clientId: this.clientId,\n },\n );\n throw new SessionError(\n `${LOG_PREFIX_SAMSUNG_PAY_SESSION_HANDLER} Failed to create payment: ${getErrorAsString(error)}`,\n );\n }\n };\n }\n\n /**\n * Returns a onClick handler function for a Google Pay session encapsulating payment creation\n *\n * @param {CreatePaymentCallback} createPaymentCallback - Callback for payment creation.\n * @returns {() => void} Function to handle Google Pay button interaction\n */\n public onClickGooglePaySessionHandler(\n createPaymentCallback: CreatePaymentCallback,\n ): (paymentData: google.payments.api.PaymentData) => void {\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n return async (paymentData) => {\n try {\n const fingerprintData = await this.fingerprint();\n const createPaymentCallbackResponse = await createPaymentCallback(\n paymentData.paymentMethodData.tokenizationData.token,\n fingerprintData,\n );\n\n switch (createPaymentCallbackResponse.status) {\n case 'TransactionPending':\n case 'TransactionFailure':\n case 'TransactionSuccess': {\n break;\n }\n default: {\n const errorMessage = `${LOG_PREFIX_GOOGLE_PAY_SESSION_HANDLER} Invalid transaction status: ${createPaymentCallbackResponse.status}`;\n const error = new SessionError(errorMessage);\n void logError(errorMessage, error, { clientId: this.clientId });\n throw error;\n }\n }\n } catch (error) {\n void logError(\n `${LOG_PREFIX_GOOGLE_PAY_SESSION_HANDLER} Failed to create payment`,\n error,\n {\n clientId: this.clientId,\n },\n );\n throw new SessionError(\n `${LOG_PREFIX_GOOGLE_PAY_SESSION_HANDLER} Failed to create payment: ${getErrorAsString(error)}`,\n );\n }\n };\n }\n}\n","/**\n * Converts any error object into a string representation.\n *\n * @param {unknown} error - The error object to convert.\n * @returns {string} String representation of the error.\n */\nexport const getErrorAsString = (error: unknown): string => {\n return error instanceof Error ? error.toString() : JSON.stringify(error);\n};\n\nexport const isTestClient = (clientId: string): boolean => {\n return clientId.toLowerCase().startsWith('test-');\n};\n","import type { SamsungPayPaymentMethods } from 'src/types';\nimport { isTestClient } from 'src/utils/helpers';\n\nexport const SAMSUNG_PAY_SERVICE_ID = '9ba67dd8d5b247cfb3f76e';\n\nexport const SAMSUNG_PAY_PAYMENT_METHODS: SamsungPayPaymentMethods = {\n version: '2',\n serviceId: SAMSUNG_PAY_SERVICE_ID,\n protocol: 'PROTOCOL_3DS',\n allowedBrands: ['visa', 'mastercard'],\n};\n\nexport function generateGooglePayIsReadyToPayRequest(\n gatewayMerchantId: string,\n stitchClientId?: string,\n): google.payments.api.IsReadyToPayRequest {\n return {\n apiVersion: 2,\n apiVersionMinor: 0,\n allowedPaymentMethods: [\n {\n type: 'CARD',\n parameters: {\n allowedAuthMethods: [\n 'CRYPTOGRAM_3DS',\n ...(stitchClientId && isTestClient(stitchClientId)\n ? ['PAN_ONLY' as const]\n : []),\n ],\n allowedCardNetworks: ['VISA', 'MASTERCARD'],\n },\n tokenizationSpecification: {\n type: 'PAYMENT_GATEWAY',\n parameters: {\n gateway: 'stitch',\n gatewayMerchantId,\n },\n },\n },\n ],\n existingPaymentMethodRequired: true,\n };\n}\n","// eslint-disable @typescript-eslint/naming-convention\n\nimport type { SamsungPayClient } from 'src/types';\nimport {\n generateGooglePayIsReadyToPayRequest,\n SAMSUNG_PAY_PAYMENT_METHODS,\n} from 'src/utils/constants';\n\ninterface SamsungPay {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n PaymentClient: any;\n}\n\ndeclare global {\n interface Window {\n ApplePaySession: ApplePaySession;\n SamsungPay: SamsungPay;\n }\n}\n\n/**\n * Determines whether Apple Pay is supported by the device.\n *\n * @returns {boolean} Whether Apple Pay is supported.\n */\nexport function determineApplePaySupport(): boolean {\n if (!window.ApplePaySession) {\n return false;\n }\n return ApplePaySession.canMakePayments();\n}\n\n/**\n * Determines the maximum supported Apple Pay version by the browser.\n *\n * @returns {number} The maximum supported version, or -1 if unsupported.\n */\nexport function getApplePayVersion(): number {\n const noSupportedVersion = -1;\n if (!window.ApplePaySession) {\n return noSupportedVersion;\n }\n\n const findMaxSupportedVersion = (version: number): number => {\n if (version === 0) return noSupportedVersion;\n if (ApplePaySession.supportsVersion(version)) {\n return version;\n }\n return findMaxSupportedVersion(version - 1);\n };\n\n return findMaxSupportedVersion(14);\n}\n\n/**\n * Determines whether Google Pay is supported on the device.\n *\n * @returns {boolean} Whether Google Pay is supported.\n */\n\nexport async function determineGooglePaySupport(\n client?: google.payments.api.PaymentsClient,\n gatewayMerchantId?: string,\n stitchClientId?: string,\n): Promise<boolean> {\n if (!client || !gatewayMerchantId) {\n return false;\n }\n try {\n const response = await client.isReadyToPay(\n generateGooglePayIsReadyToPayRequest(gatewayMerchantId, stitchClientId),\n );\n return response.result && (response.paymentMethodPresent ?? false);\n } catch {\n return false;\n }\n}\n\n/**\n * Determines whether Samsung Pay is supported by the browser.\n *\n * @returns {boolean} Whether Samsung Pay is supported.\n */\nexport async function determineSamsungPaySupport(client?: SamsungPayClient): Promise<boolean> {\n if (!client) {\n return false;\n }\n try {\n const response = await client.isReadyToPay(SAMSUNG_PAY_PAYMENT_METHODS);\n return response.result;\n } catch {\n return false;\n }\n}\n","export class ApiError extends Error {\n constructor(message: string) {\n super(message);\n this.name = 'ApiError';\n }\n}\n\nexport class UserInputError extends Error {\n constructor(message: string) {\n super(message);\n this.name = 'UserInputError';\n }\n}\n\nexport class SessionError extends Error {\n constructor(message: string) {\n super(message);\n this.name = 'SessionError';\n }\n}\n","{\n \"name\": \"@stitch-money/client\",\n \"version\": \"3.4.0\",\n \"private\": false,\n \"description\": \"JavaScript package for the Stitch SDK\",\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"https://github.com/Stitch-Money/stitch-js.git\",\n \"directory\": \"packages/client\"\n },\n \"license\": \"MIT\",\n \"type\": \"module\",\n \"main\": \"./build/index.js\",\n \"module\": \"./build/index.js\",\n \"types\": \"./build/index.d.ts\",\n \"files\": [\n \"build\"\n ],\n \"scripts\": {\n \"build\": \"wireit\",\n \"lint\": \"eslint .\",\n \"prepublishOnly\": \"wireit\",\n \"test\": \"vitest\",\n \"typecheck\": \"tsc --noEmit\"\n },\n \"devDependencies\": {\n \"@types/applepayjs\": \"14.0.6\",\n \"@types/googlepay\": \"^0.7.6\",\n \"@types/uuid\": \"9.0.8\",\n \"@vitejs/plugin-react\": \"4.2.1\",\n \"eslint-config-stitch\": \"workspace:*\",\n \"fingerprint-stitch\": \"workspace:^\",\n \"jsdom\": \"24.0.0\",\n \"logger-stitch\": \"workspace:^\",\n \"prop-types\": \"^15.8.1\",\n \"runtime-config-stitch\": \"workspace:^\",\n \"tsconfig-stitch\": \"workspace:*\",\n \"tsup\": \"8.0.2\",\n \"vite\": \"^5.2.0\",\n \"vite-tsconfig-paths\": \"4.3.1\",\n \"vitest\": \"3.2.4\"\n },\n \"peerDependencies\": {\n \"uuid\": \"9.0.1\"\n },\n \"wireit\": {\n \"build\": {\n \"command\": \"tsup\",\n \"files\": [\n \"src/**\",\n \"tsup.config.ts\"\n ],\n \"output\": [\n \"build/**\"\n ]\n },\n \"prepublishOnly\": {\n \"dependencies\": [\n \"build\"\n ]\n }\n }\n}\n"],"mappings":"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","names":["require_serialize_error","__commonJSMin","exports","module","NonError","_NonError","message","e","commonProperties","isCalled","toJSON","from","json","destroyCircular","seen","to_","forceEnumerable","maxDepth","depth","to","key","value","property","enumerable","serializeError","options","deserializeError","newError","WalletType","__assign","s","i","n","p","__rest","e","t","__spreadArray","to","from","pack","i","l","ar","r","e","t","o","n","i","a","R","f","l","I","U","b","C","M","t","n","o","a","u","R","c","s","E","__spreadArray","e","f","l","d","v","r","i","K","B","F","__rest","I","V","__assign","k","lastFingerprintResult","lastFingerprintTimestamp","generateRandomId","length","chars","result","i","getFingerprintAgent","_0","__async","config","F","B","getFingerprintData","clientId","agent","payerId","data","now","error","import_serialize_error","generateUUID","c","r","STITCH_LOGGING_URL","loggerOptions","loggerMetadata","configure","options","_a","loggingUrl","rest","__objRest","__spreadValues","generateUUID","getHostname","_b","_c","logError","message","error","metadata","__async","loggerOptions","__spreadValues","getHostname","loggerMetadata","e","isNumber","value","isString","isBigInt","isDate","isPojo","_register","brand","ann","makeObjectAnn","fields","text","makeArrayAnn","items","makeOpaqueAnn","makeScalarAnn","updateText","annotation","__spreadProps","__spreadValues","merge","objAnnotation","newFields","isAnnotation","thing","annotateArray","arr","seen","annotate","annotateObject","obj","key","public_annotate","public_annotateObject","INDENT","isMultiline","s","indent","prefix","line","quotePattern","quote","summarize","keypath","result","index","ann2","item","serializeString","width","ser","truncated","serializeArray","serializeAnnotation","serializeObject","valueAnnotation","kser","serializeValue","valPrefix","vser","vann","serialized","sep","formatInline","formatShort","ok","err","error","noThrow","fn","v","e","format","err2","formatter","formatted","err3","define","decode","blob","msg","verify","transform","transformFn","then","refine","predicateFn","errmsg","reject","value2","next","ok2","r1","r2","isDecoder","pipe","rejectFn","describe","message","_","brand2","_register2","decoder","poja","all","blobs","results","clone","array","decodeFn","instanceOf","klass","define","blob","ok2","err2","lazy","decoderFn","difference","xs","ys","result","x","pojo","define","blob","ok2","err2","isPojo","object","decoders","knownKeys","plainObj","actualKeys","missingKeys","record2","errors","key","decoder","rawValue","value","ann","objAnn","public_annotateObject","merge","errMsg","quote","pluralized","updateText","EITHER_PREFIX","itemize","s","indent","nest","errText","either","decoders","define","blob","_","err2","errors","i","result","text","err3","summarize","null_","constant","undefined_","nullish_","define","blob","ok2","err2","constant","value","define","blob","ok2","err2","quote","unknown","define","blob","ok2","_","boolean","define","blob","ok2","err2","truthy","_","record","fst","snd","keyDecoder","valueDecoder","pojo","input","_a","rv","errors","key","value","keyResult","public_annotate","quote","formatShort","k","result","merge","public_annotateObject","url_re","string","define","blob","ok2","err2","isString","nonEmptyString","regex","regex2","msg","s","email","url","either","value","instanceOf","httpsUrl","identifier","uuid","regex","uuidv1","value","uuidv4","decimal","hexadecimal","numeric","iso8601_re","date","define","blob","ok2","err2","isDate","iso8601","date2","datelike","either","anyNumber","isNumber","number","n","integer","positiveNumber","positiveInteger","bigint","isBigInt","jsonObject","lazy","record","json","jsonArray","array","null_","string","boolean","MAX_RETRIES","DELAY","runtimeConfigDecoder","object","positiveNumber","nonEmptyString","boolean","number","getRuntimeConfig","clientId","signal","__async","attempt","response","resolve","error","v4","getErrorAsString","error","isTestClient","clientId","SAMSUNG_PAY_SERVICE_ID","SAMSUNG_PAY_PAYMENT_METHODS","generateGooglePayIsReadyToPayRequest","gatewayMerchantId","stitchClientId","isTestClient","determineApplePaySupport","getApplePayVersion","findMaxSupportedVersion","version","determineGooglePaySupport","client","gatewayMerchantId","stitchClientId","__async","_a","response","generateGooglePayIsReadyToPayRequest","e","determineSamsungPaySupport","SAMSUNG_PAY_PAYMENT_METHODS","SessionError","message","version","LOG_PREFIX_ON_VALIDATE_MERCHANT","LOG_PREFIX_ON_PAYMENT_AUTHORIZED","LOG_PREFIX_SAMSUNG_PAY_SESSION_HANDLER","LOG_PREFIX_GOOGLE_PAY_SESSION_HANDLER","StitchWalletClientSdk","initialisationProperties","__publicField","configure","version","onCancelPayment","clientId","gatewayMerchantId","v4","__async","_a","_b","configResult","getRuntimeConfig","errorMessage","logError","getFingerprintAgent","data","getFingerprintData","supportedWallets","determineApplePaySupport","determineSamsungPaySupport","determineGooglePaySupport","currency","amount","label","verifyCallback","createPaymentCallback","recurringPaymentOptions","getApplePayVersion","request","session","error","event","verifyCallbackResponse","SessionError","getErrorAsString","paymentToken","fingerprintData","createPaymentCallbackResponse","externalReference","initiativeContext","transactionDetail","paymentCredential","SAMSUNG_PAY_PAYMENT_METHODS","paymentData"]}
1
+ {"version":3,"sources":["../../../node_modules/.pnpm/serialize-error@8.1.0/node_modules/serialize-error/index.js","../src/types.ts","../../../node_modules/.pnpm/tslib@2.8.1/node_modules/tslib/tslib.es6.mjs","../../../node_modules/.pnpm/@fingerprintjs+fingerprintjs-pro@3.11.4/node_modules/@fingerprintjs/fingerprintjs-pro/dist/fp.esm.min.js","../../fingerprint/src/index.ts","../../logger-stitch/src/index.ts","../../logger-stitch/src/utils.ts","../../../node_modules/.pnpm/decoders@2.4.2/node_modules/decoders/dist/index.js","../../runtime-config/src/index.ts","../src/wallets/client.ts","../src/utils/constants.ts","../src/utils/browser-support.ts","../src/utils/errors.ts","../src/utils/helpers.ts","../package.json"],"sourcesContent":["'use strict';\n\nclass NonError extends Error {\n\tconstructor(message) {\n\t\tsuper(NonError._prepareSuperMessage(message));\n\t\tObject.defineProperty(this, 'name', {\n\t\t\tvalue: 'NonError',\n\t\t\tconfigurable: true,\n\t\t\twritable: true\n\t\t});\n\n\t\tif (Error.captureStackTrace) {\n\t\t\tError.captureStackTrace(this, NonError);\n\t\t}\n\t}\n\n\tstatic _prepareSuperMessage(message) {\n\t\ttry {\n\t\t\treturn JSON.stringify(message);\n\t\t} catch {\n\t\t\treturn String(message);\n\t\t}\n\t}\n}\n\nconst commonProperties = [\n\t{property: 'name', enumerable: false},\n\t{property: 'message', enumerable: false},\n\t{property: 'stack', enumerable: false},\n\t{property: 'code', enumerable: true}\n];\n\nconst isCalled = Symbol('.toJSON called');\n\nconst toJSON = from => {\n\tfrom[isCalled] = true;\n\tconst json = from.toJSON();\n\tdelete from[isCalled];\n\treturn json;\n};\n\nconst destroyCircular = ({\n\tfrom,\n\tseen,\n\tto_,\n\tforceEnumerable,\n\tmaxDepth,\n\tdepth\n}) => {\n\tconst to = to_ || (Array.isArray(from) ? [] : {});\n\n\tseen.push(from);\n\n\tif (depth >= maxDepth) {\n\t\treturn to;\n\t}\n\n\tif (typeof from.toJSON === 'function' && from[isCalled] !== true) {\n\t\treturn toJSON(from);\n\t}\n\n\tfor (const [key, value] of Object.entries(from)) {\n\t\tif (typeof Buffer === 'function' && Buffer.isBuffer(value)) {\n\t\t\tto[key] = '[object Buffer]';\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (typeof value === 'function') {\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (!value || typeof value !== 'object') {\n\t\t\tto[key] = value;\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (!seen.includes(from[key])) {\n\t\t\tdepth++;\n\n\t\t\tto[key] = destroyCircular({\n\t\t\t\tfrom: from[key],\n\t\t\t\tseen: seen.slice(),\n\t\t\t\tforceEnumerable,\n\t\t\t\tmaxDepth,\n\t\t\t\tdepth\n\t\t\t});\n\t\t\tcontinue;\n\t\t}\n\n\t\tto[key] = '[Circular]';\n\t}\n\n\tfor (const {property, enumerable} of commonProperties) {\n\t\tif (typeof from[property] === 'string') {\n\t\t\tObject.defineProperty(to, property, {\n\t\t\t\tvalue: from[property],\n\t\t\t\tenumerable: forceEnumerable ? true : enumerable,\n\t\t\t\tconfigurable: true,\n\t\t\t\twritable: true\n\t\t\t});\n\t\t}\n\t}\n\n\treturn to;\n};\n\nconst serializeError = (value, options = {}) => {\n\tconst {maxDepth = Number.POSITIVE_INFINITY} = options;\n\n\tif (typeof value === 'object' && value !== null) {\n\t\treturn destroyCircular({\n\t\t\tfrom: value,\n\t\t\tseen: [],\n\t\t\tforceEnumerable: true,\n\t\t\tmaxDepth,\n\t\t\tdepth: 0\n\t\t});\n\t}\n\n\t// People sometimes throw things besides Error objects…\n\tif (typeof value === 'function') {\n\t\t// `JSON.stringify()` discards functions. We do too, unless a function is thrown directly.\n\t\treturn `[Function: ${(value.name || 'anonymous')}]`;\n\t}\n\n\treturn value;\n};\n\nconst deserializeError = (value, options = {}) => {\n\tconst {maxDepth = Number.POSITIVE_INFINITY} = options;\n\n\tif (value instanceof Error) {\n\t\treturn value;\n\t}\n\n\tif (typeof value === 'object' && value !== null && !Array.isArray(value)) {\n\t\tconst newError = new Error(); // eslint-disable-line unicorn/error-message\n\t\tdestroyCircular({\n\t\t\tfrom: value,\n\t\t\tseen: [],\n\t\t\tto_: newError,\n\t\t\tmaxDepth,\n\t\t\tdepth: 0\n\t\t});\n\t\treturn newError;\n\t}\n\n\treturn new NonError(value);\n};\n\nmodule.exports = {\n\tserializeError,\n\tdeserializeError\n};\n","export enum WalletType {\n ApplePay = 'APPLE_PAY',\n SamsungPay = 'SAMSUNG_PAY',\n GooglePay = 'GOOGLE_PAY',\n}\n\nexport type StitchTransactionState =\n | 'TransactionPending'\n | 'TransactionSuccess'\n | 'TransactionFailure';\n\nexport interface StitchTransaction {\n id: string;\n externalReference: string;\n quantity: number;\n currency: string;\n nonce: string;\n status: StitchTransactionState;\n statusReason?: string | null;\n interactionUrl?: string | null;\n}\nexport interface InitialisationProperties {\n onCancelPayment?: () => void;\n clientId?: string;\n gatewayMerchantId?: string;\n}\n\nexport interface SamsungPayClient {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n isReadyToPay: (paymentMethods: SamsungPayPaymentMethods) => Promise<any>;\n loadPaymentSheet: (\n paymentMethods: SamsungPayPaymentMethods,\n transactionDetail: SamsungPayTransactionDetail,\n ) => Promise<SamsungPayPaymentCredential>;\n notify: (paymentResult: SamsungPayPaymentResult) => void;\n}\n\nexport type WalletPaySession = ApplePaySession;\n\nexport interface ApplePaySession {\n epochTimestamp: number;\n expiresAt: number;\n merchantSessionIdentifier: string;\n nonce: string;\n merchantIdentifier: string;\n domainName: string;\n displayName: string;\n signature: string;\n operationalAnalyticsIdentifier: string;\n retries: number;\n pspId: string;\n}\n\nexport interface SamsungPayPaymentResult {\n status: 'CHARGED' | 'REJECTED' | 'CANCELED' | 'ERRED';\n provider?: string;\n}\nexport type SamsungPayAllowedBrands = 'visa' | 'mastercard';\n\nexport interface SamsungPayPaymentCredential {\n card_brand: string;\n card_last4digit: string;\n '3DS': {\n type?: string;\n version: string;\n data: string;\n };\n recurring_payment: boolean;\n}\n\nexport interface SamsungPayPaymentMethods {\n version: '2';\n serviceId: string;\n protocol: 'PROTOCOL_3DS';\n allowedBrands: SamsungPayAllowedBrands[];\n}\n\nexport interface SamsungPayTransactionDetail {\n orderNumber: string;\n merchant: {\n name: string;\n url: string;\n id: string;\n countryCode: string;\n };\n amount: {\n option: 'FORMAT_TOTAL_PRICE_ONLY' | 'FORMAT_TOTAL_ESTIMATED_AMOUNT';\n currency: string;\n total: number;\n };\n}\n\nexport type ApplePayVerifyCallback = (url: string) => Promise<WalletPaySession>;\n\nexport type CreatePaymentCallback = (\n paymentToken:\n | ApplePayJS.ApplePayPaymentToken\n | google.payments.api.PaymentMethodTokenizationData['token']\n | SamsungPayPaymentCredential,\n fingerprint?: string,\n) => Promise<CreatePaymentCallbackResponse>;\n\nexport interface CreatePaymentCallbackResponse {\n status: StitchTransaction['status'];\n}\n","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nvar ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose, inner;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n if (async) inner = dispose;\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n var r, s = 0;\n function next() {\n while (r = env.stack.pop()) {\n try {\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\n if (r.dispose) {\n var result = r.dispose.call(r.value);\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n else s |= 1;\n }\n catch (e) {\n fail(e);\n }\n }\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\n });\n }\n return path;\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __esDecorate,\n __runInitializers,\n __propKey,\n __setFunctionName,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n __rewriteRelativeImportExtension,\n};\n","/**\n * Fingerprint Pro v3.11.4 - Copyright (c) FingerprintJS, Inc, 2024 (https://fingerprint.com)\n */\n\nimport{__spreadArray as e,__rest as t,__assign as n}from\"tslib\";function r(e,t){return function(e,t){return Object.prototype.hasOwnProperty.call(e,t)}(e,t)?e[t]:void 0}function o(e,t,n,r){var o,i=document,a=\"securitypolicyviolation\",u=function(t){var n=new URL(e,location.href),r=t.blockedURI;r!==n.href&&r!==n.protocol.slice(0,-1)&&r!==n.origin||(o=t,R())};i.addEventListener(a,u);var R=function(){return i.removeEventListener(a,u)};return null==r||r.then(R,R),Promise.resolve().then(t).then((function(e){return R(),e}),(function(e){return new Promise((function(e){var t=new MessageChannel;t.port1.onmessage=function(){return e()},t.port2.postMessage(null)})).then((function(){if(R(),o)return n(o);throw e}))}))}var i={default:\"endpoint\"},a={default:\"tlsEndpoint\"},u=\"Client timeout\",R=\"Network connection error\",c=\"Network request aborted\",s=\"Response cannot be parsed\",f=\"Blocked by CSP\",l=\"The endpoint parameter is not a valid URL\";function E(e){for(var t=\"\",n=0;n<e.length;++n)if(n>0){var r=e[n].toLowerCase();r!==e[n]?t+=\" \".concat(r):t+=e[n]}else t+=e[n].toUpperCase();return t}var d=/*#__PURE__*/E(\"WrongRegion\"),p=/*#__PURE__*/E(\"SubscriptionNotActive\"),v=/*#__PURE__*/E(\"UnsupportedVersion\"),_=/*#__PURE__*/E(\"InstallationMethodRestricted\"),O=/*#__PURE__*/E(\"HostnameRestricted\"),h=/*#__PURE__*/E(\"IntegrationFailed\"),I=\"API key required\",N=\"API key not found\",T=\"API key expired\",m=\"Request cannot be parsed\",w=\"Request failed\",A=\"Request failed to process\",P=\"Too many requests, rate limit exceeded\",y=\"Not available for this origin\",D=\"Not available with restricted header\",S=I,g=N,L=T,U=\"3.11.4\",b=\"Failed to load the JS script of the agent\",C=\"9319\";function M(t,n){var r,o,i,a,u,R,c,s=[],E=(r=function(t){var n=e([],t,!0);return{current:function(){return n[0]},postpone:function(){var e=n.shift();void 0!==e&&n.push(e)},exclude:function(){n.shift()}}}(t),a=100,u=3e3,R=0,o=function(){return Math.random()*Math.min(u,a*Math.pow(2,R++))},i=new Set,[r.current(),function(e,t){var n,a=t instanceof Error?t.message:\"\";if(a===f||a===l)r.exclude(),n=0;else if(a===C)r.exclude();else if(a===b){var u=Date.now()-e.getTime()<50,R=r.current();R&&u&&!i.has(R)&&(i.add(R),n=0),r.postpone()}else r.postpone();var c=r.current();return void 0===c?void 0:[c,null!=n?n:e.getTime()+o()-Date.now()]}]),d=E[0],p=E[1];if(void 0===d)return Promise.reject(new TypeError(\"The list of script URL patterns is empty\"));var v=function(e){var t=new Date,r=function(n){return s.push({url:e,startedAt:t,finishedAt:new Date,error:n})},o=n(e);return o.then((function(){return r()}),r),o.catch((function(e){if(null!=c||(c=e),s.length>=5)throw c;var n=p(t,e);if(!n)throw c;var r,o=n[0],i=n[1];return(r=i,new Promise((function(e){return setTimeout(e,r)}))).then((function(){return v(o)}))}))};return v(d).then((function(e){return[e,s]}))}var K=\"https://fpnpmcdn.net/v<version>/<apiKey>/loader_v<loaderVersion>.js\",B=K;function F(e){var o;e.scriptUrlPattern;var i=e.token,a=e.apiKey,u=void 0===a?i:a,R=t(e,[\"scriptUrlPattern\",\"token\",\"apiKey\"]),c=null!==(o=r(e,\"scriptUrlPattern\"))&&void 0!==o?o:K,s=function(){var e=[],t=function(){e.push({time:new Date,state:document.visibilityState})},n=function(e,t,n,r){return e.addEventListener(t,n,r),function(){return e.removeEventListener(t,n,r)}}(document,\"visibilitychange\",t);return t(),[e,n]}(),f=s[0],l=s[1];return Promise.resolve().then((function(){if(!u||\"string\"!=typeof u)throw new Error(I);var e=function(e,t){return(Array.isArray(e)?e:[e]).map((function(e){return function(e,t){var n=encodeURIComponent;return e.replace(/<[^<>]+>/g,(function(e){return\"<version>\"===e?\"3\":\"<apiKey>\"===e?n(t):\"<loaderVersion>\"===e?n(U):e}))}(String(e),t)}))}(c,u);return M(e,V)})).catch((function(e){throw l(),function(e){if(e instanceof Error&&e.message===C)return new Error(b);return e}(e)})).then((function(e){var t=e[0],r=e[1];return l(),t.load(n(n({},R),{ldi:{attempts:r,visibilityStates:f}}))}))}function V(e){return o(e,(function(){return function(e){return new Promise((function(t,n){if(function(e){if(URL.prototype)try{return new URL(e,location.href),!1}catch(t){if(t instanceof Error&&\"TypeError\"===t.name)return!0;throw t}}(e))throw new Error(l);var r=document.createElement(\"script\"),o=function(){var e;return null===(e=r.parentNode)||void 0===e?void 0:e.removeChild(r)},i=document.head||document.getElementsByTagName(\"head\")[0];r.onload=function(){o(),t()},r.onerror=function(){o(),n(new Error(b))},r.async=!0,r.src=e,i.appendChild(r)}))}(e)}),(function(){throw new Error(f)})).then(k)}function k(){var e=window,t=\"__fpjs_p_l_b\",n=e[t];if(function(e,t){var n,r=null===(n=Object.getOwnPropertyDescriptor)||void 0===n?void 0:n.call(Object,e,t);(null==r?void 0:r.configurable)?delete e[t]:r&&!r.writable||(e[t]=void 0)}(e,t),\"function\"!=typeof(null==n?void 0:n.load))throw new Error(C);return n}var G={load:F,defaultScriptUrlPattern:B,ERROR_SCRIPT_LOAD_FAIL:b,ERROR_API_KEY_EXPIRED:T,ERROR_API_KEY_INVALID:N,ERROR_API_KEY_MISSING:I,ERROR_BAD_REQUEST_FORMAT:m,ERROR_BAD_RESPONSE_FORMAT:s,ERROR_CLIENT_TIMEOUT:u,ERROR_CSP_BLOCK:f,ERROR_FORBIDDEN_ENDPOINT:O,ERROR_FORBIDDEN_HEADER:D,ERROR_FORBIDDEN_ORIGIN:y,ERROR_GENERAL_SERVER_FAILURE:w,ERROR_INSTALLATION_METHOD_RESTRICTED:_,ERROR_INTEGRATION_FAILURE:h,ERROR_INVALID_ENDPOINT:l,ERROR_NETWORK_ABORT:c,ERROR_NETWORK_CONNECTION:R,ERROR_RATE_LIMIT:P,ERROR_SERVER_TIMEOUT:A,ERROR_SUBSCRIPTION_NOT_ACTIVE:p,ERROR_TOKEN_EXPIRED:L,ERROR_TOKEN_INVALID:g,ERROR_TOKEN_MISSING:S,ERROR_UNSUPPORTED_VERSION:v,ERROR_WRONG_REGION:d,defaultEndpoint:i,defaultTlsEndpoint:a};export{T as ERROR_API_KEY_EXPIRED,N as ERROR_API_KEY_INVALID,I as ERROR_API_KEY_MISSING,m as ERROR_BAD_REQUEST_FORMAT,s as ERROR_BAD_RESPONSE_FORMAT,u as ERROR_CLIENT_TIMEOUT,f as ERROR_CSP_BLOCK,O as ERROR_FORBIDDEN_ENDPOINT,D as ERROR_FORBIDDEN_HEADER,y as ERROR_FORBIDDEN_ORIGIN,w as ERROR_GENERAL_SERVER_FAILURE,_ as ERROR_INSTALLATION_METHOD_RESTRICTED,h as ERROR_INTEGRATION_FAILURE,l as ERROR_INVALID_ENDPOINT,c as ERROR_NETWORK_ABORT,R as ERROR_NETWORK_CONNECTION,P as ERROR_RATE_LIMIT,b as ERROR_SCRIPT_LOAD_FAIL,A as ERROR_SERVER_TIMEOUT,p as ERROR_SUBSCRIPTION_NOT_ACTIVE,L as ERROR_TOKEN_EXPIRED,g as ERROR_TOKEN_INVALID,S as ERROR_TOKEN_MISSING,v as ERROR_UNSUPPORTED_VERSION,d as ERROR_WRONG_REGION,G as default,i as defaultEndpoint,B as defaultScriptUrlPattern,a as defaultTlsEndpoint,F as load};\n","// eslint-disable-next-line @typescript-eslint/naming-convention\nimport * as FingerprintJS from '@fingerprintjs/fingerprintjs-pro';\nimport type { RuntimeConfig } from 'runtime-config-stitch';\n\nlet lastFingerprintResult: FingerprintData | undefined;\nlet lastFingerprintTimestamp: number | undefined;\n\nexport interface FingerprintData {\n disabled: boolean;\n emulated: boolean;\n fingerprintDetails: {\n timestamp: string;\n requestId: string;\n visitorId: string;\n };\n}\n\nexport interface FingerprintError {\n error: {\n outcome: 'Success' | 'Failed';\n message: string;\n };\n}\n\nexport type Agent = FingerprintJS.Agent;\n\nfunction generateRandomId(length: number): string {\n const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';\n let result = '';\n for (let i = 0; i < length; i++) {\n result += chars.charAt(Math.floor(Math.random() * chars.length));\n }\n return result;\n}\n\nexport async function getFingerprintAgent({\n config,\n}: {\n config: RuntimeConfig['fingerprint'];\n}): Promise<Agent> {\n const agent = await FingerprintJS.load({\n apiKey: config.publicKey,\n endpoint: [config.endpoint, FingerprintJS.defaultEndpoint],\n scriptUrlPattern: [config.scriptUrlPattern, FingerprintJS.defaultScriptUrlPattern],\n region: 'eu',\n });\n return agent;\n}\n\nexport async function getFingerprintData({\n config,\n clientId,\n agent,\n payerId,\n}: {\n config: RuntimeConfig['fingerprint'] | undefined;\n clientId: string | undefined;\n agent: Agent | undefined;\n payerId?: string;\n}): Promise<string> {\n if (config?.disabled === true) {\n const data: FingerprintData = {\n disabled: true,\n emulated: false,\n fingerprintDetails: {\n timestamp: new Date().toISOString(),\n requestId: '',\n visitorId: '',\n },\n };\n return btoa(JSON.stringify(data));\n }\n\n if (config?.disabled === false && config?.useEmulation && clientId?.startsWith('test')) {\n const data: FingerprintData = {\n disabled: false,\n emulated: true,\n fingerprintDetails: {\n timestamp: new Date().toISOString(),\n requestId: `${Date.now()}.${generateRandomId(6)}`,\n visitorId: generateRandomId(20),\n },\n };\n return btoa(JSON.stringify(data));\n }\n\n if (agent !== undefined && config?.disabled === false) {\n const now = Date.now();\n\n if (\n lastFingerprintResult !== undefined &&\n lastFingerprintTimestamp !== undefined &&\n now - lastFingerprintTimestamp < config.cacheDurationInSeconds * 1000\n ) {\n return btoa(JSON.stringify(lastFingerprintResult));\n }\n\n try {\n const result = await agent.get({\n linkedId: clientId,\n tag: {\n payerId,\n },\n });\n const data: FingerprintData = {\n disabled: false,\n emulated: false,\n fingerprintDetails: {\n timestamp: new Date().toISOString(),\n requestId: result.requestId,\n visitorId: result.visitorId,\n },\n };\n lastFingerprintResult = data;\n lastFingerprintTimestamp = now;\n return btoa(JSON.stringify(data));\n } catch (error) {\n const data: FingerprintError = {\n error: {\n outcome: 'Failed',\n message: `Error: ${JSON.stringify(error)}`,\n },\n };\n return btoa(JSON.stringify(data));\n }\n }\n\n const data: FingerprintError = {\n error: {\n outcome: 'Failed',\n message:\n 'Attempted to get fingerprint data but either runtime config or the agent are not present',\n },\n };\n return btoa(JSON.stringify(data));\n}\n","import { serializeError } from 'serialize-error';\n\nimport generateUUID from './utils';\n\nconst STITCH_LOGGING_URL = 'https://analytics.stitch.money/query';\n\nexport interface LoggerOptions {\n loggingUrl?: string;\n}\n\nlet loggerOptions = {\n loggingUrl: STITCH_LOGGING_URL,\n} satisfies LoggerOptions;\n\nexport interface BaseMetadata {\n version?: string;\n sessionId?: string;\n clientId?: string;\n source?: string;\n hostname?: string;\n fingerprint?: string;\n}\n\nexport interface WalletsMetadata extends BaseMetadata {\n type: WalletType;\n}\n\nexport type WalletType = 'SAMSUNG' | 'APPLE' | 'GOOGLE';\n\nexport type Metadata = BaseMetadata | WalletsMetadata;\n\nlet loggerMetadata = {} satisfies Metadata;\n\nexport function configure(options: LoggerOptions & Metadata = {}): void {\n const { loggingUrl, ...rest } = options;\n\n if (typeof loggingUrl === 'string' && loggingUrl.length > 0) {\n loggerOptions.loggingUrl = loggingUrl;\n }\n\n loggerMetadata = {\n sessionId: generateUUID(),\n ...loggerMetadata,\n ...rest,\n };\n}\n\nfunction getHostname(): string | undefined {\n return window?.location?.ancestorOrigins?.length > 0\n ? Object.values(window?.location?.ancestorOrigins).join(',')\n : document?.referrer || undefined;\n}\n\nexport async function logEvent(message: string, metadata: Metadata): Promise<void> {\n try {\n await fetch(loggerOptions.loggingUrl, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({\n type: 'LOG_EVENT',\n event: {\n message,\n metadata: {\n hostname: getHostname(),\n ...loggerMetadata,\n ...metadata,\n },\n },\n }),\n });\n } catch (error) {\n try {\n await logError(`[logEvent] Error logging event`, error, metadata);\n } catch {\n // Swallow errors here, don't want to log errors to clients app console\n }\n }\n}\n\nexport async function logError(message: string, error: unknown, metadata: Metadata): Promise<void> {\n try {\n await fetch(loggerOptions.loggingUrl, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({\n type: 'LOG_ERROR',\n error: {\n message,\n error: serializeError(error),\n metadata: {\n hostname: getHostname(),\n ...loggerMetadata,\n ...metadata,\n },\n },\n }),\n });\n } catch {\n // Swallow errors here, don't want to log errors to clients app console\n }\n}\n","export default function generateUUID(): string {\n if (typeof crypto !== 'undefined' && crypto.randomUUID) {\n return crypto.randomUUID();\n } else {\n // Fallback for environments where crypto.randomUUID is not available.\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\n const r = (Math.random() * 16) | 0;\n const v = c === 'x' ? r : (r & 0x3) | 0x8;\n return v.toString(16);\n });\n }\n}\n","// src/lib/utils.ts\nfunction isNumber(value) {\n return typeof value === \"number\";\n}\nfunction isString(value) {\n return typeof value === \"string\";\n}\nfunction isBigInt(value) {\n return typeof value === \"bigint\";\n}\nfunction isDate(value) {\n return !!value && Object.prototype.toString.call(value) === \"[object Date]\" && !isNaN(value);\n}\nfunction isPojo(value) {\n return value !== null && value !== void 0 && typeof value === \"object\" && // This still seems to be the only reliable way to determine whether\n // something is a pojo... ¯\\_(ツ)_/¯\n Object.prototype.toString.call(value) === \"[object Object]\";\n}\n\n// src/core/annotate.ts\nvar _register = /* @__PURE__ */ new WeakSet();\nfunction brand(ann) {\n _register.add(ann);\n return ann;\n}\nfunction makeObjectAnn(fields, text) {\n return brand({ type: \"object\", fields, text });\n}\nfunction makeArrayAnn(items, text) {\n return brand({ type: \"array\", items, text });\n}\nfunction makeOpaqueAnn(value, text) {\n return brand({ type: \"opaque\", value, text });\n}\nfunction makeScalarAnn(value, text) {\n return brand({ type: \"scalar\", value, text });\n}\nfunction updateText(annotation, text) {\n if (text !== void 0) {\n return brand({ ...annotation, text });\n } else {\n return annotation;\n }\n}\nfunction merge(objAnnotation, fields) {\n const newFields = new Map([...objAnnotation.fields, ...fields]);\n return makeObjectAnn(newFields, objAnnotation.text);\n}\nfunction isAnnotation(thing) {\n return _register.has(thing);\n}\nfunction annotateArray(arr, text, seen) {\n seen.add(arr);\n const items = [];\n for (const value of arr) {\n items.push(annotate(value, void 0, seen));\n }\n return makeArrayAnn(items, text);\n}\nfunction annotateObject(obj, text, seen) {\n seen.add(obj);\n const fields = /* @__PURE__ */ new Map();\n for (const key of Object.keys(obj)) {\n const value = obj[key];\n fields.set(key, annotate(value, void 0, seen));\n }\n return makeObjectAnn(fields, text);\n}\nfunction annotate(value, text, seen) {\n if (value === null || value === void 0 || typeof value === \"string\" || typeof value === \"number\" || typeof value === \"boolean\" || typeof value === \"symbol\" || typeof value.getMonth === \"function\") {\n return makeScalarAnn(value, text);\n }\n if (isAnnotation(value)) {\n return updateText(value, text);\n }\n if (Array.isArray(value)) {\n if (seen.has(value)) {\n return makeOpaqueAnn(\"<circular ref>\", text);\n } else {\n return annotateArray(value, text, seen);\n }\n }\n if (isPojo(value)) {\n if (seen.has(value)) {\n return makeOpaqueAnn(\"<circular ref>\", text);\n } else {\n return annotateObject(value, text, seen);\n }\n }\n if (typeof value === \"function\") {\n return makeOpaqueAnn(\"<function>\", text);\n }\n return makeOpaqueAnn(\"???\", text);\n}\nfunction public_annotate(value, text) {\n return annotate(value, text, /* @__PURE__ */ new WeakSet());\n}\nfunction public_annotateObject(obj, text) {\n return annotateObject(obj, text, /* @__PURE__ */ new WeakSet());\n}\n\n// src/lib/text.ts\nvar INDENT = \" \";\nfunction isMultiline(s) {\n return s.indexOf(\"\\n\") >= 0;\n}\nfunction indent(s, prefix = INDENT) {\n if (isMultiline(s)) {\n return s.split(\"\\n\").map((line) => `${prefix}${line}`).join(\"\\n\");\n } else {\n return `${prefix}${s}`;\n }\n}\nvar quotePattern = /'/g;\nfunction quote(value) {\n return typeof value === \"string\" ? \"'\" + value.replace(quotePattern, \"\\\\'\") + \"'\" : JSON.stringify(value);\n}\n\n// src/core/format.ts\nfunction summarize(ann, keypath = []) {\n const result = [];\n if (ann.type === \"array\") {\n const items = ann.items;\n let index = 0;\n for (const ann2 of items) {\n for (const item of summarize(ann2, [...keypath, index++])) {\n result.push(item);\n }\n }\n } else if (ann.type === \"object\") {\n const fields = ann.fields;\n for (const [key, value] of fields) {\n for (const item of summarize(value, [...keypath, key])) {\n result.push(item);\n }\n }\n }\n const text = ann.text;\n if (!text) {\n return result;\n }\n let prefix;\n if (keypath.length === 0) {\n prefix = \"\";\n } else if (keypath.length === 1) {\n prefix = typeof keypath[0] === \"number\" ? `Value at index ${keypath[0]}: ` : `Value at key ${quote(keypath[0])}: `;\n } else {\n prefix = `Value at keypath ${quote(keypath.map(String).join(\".\"))}: `;\n }\n return [...result, `${prefix}${text}`];\n}\nfunction serializeString(s, width = 80) {\n let ser = JSON.stringify(s);\n if (ser.length <= width) {\n return ser;\n }\n const truncated = `${s.substring(0, width - 15)}...`;\n ser = `${JSON.stringify(truncated)} [truncated]`;\n return ser;\n}\nfunction serializeArray(annotation, prefix) {\n const { items } = annotation;\n if (items.length === 0) {\n return \"[]\";\n }\n const result = [];\n for (const item of items) {\n const [ser, ann] = serializeAnnotation(item, `${prefix}${INDENT}`);\n result.push(`${prefix}${INDENT}${ser}${\",\"}`);\n if (ann !== void 0) {\n result.push(indent(ann, `${prefix}${INDENT}`));\n }\n }\n return [\"[\", ...result, `${prefix}]`].join(\"\\n\");\n}\nfunction serializeObject(annotation, prefix) {\n const { fields } = annotation;\n if (fields.size === 0) {\n return \"{}\";\n }\n const result = [];\n for (const [key, valueAnnotation] of fields) {\n const kser = serializeValue(key);\n const valPrefix = `${prefix}${INDENT}${\" \".repeat(kser.length + 2)}`;\n const [vser, vann] = serializeAnnotation(valueAnnotation, `${prefix}${INDENT}`);\n result.push(`${prefix}${INDENT}${kser}: ${vser},`);\n if (vann !== void 0) {\n result.push(indent(vann, valPrefix));\n }\n }\n return [\"{\", ...result, `${prefix}}`].join(\"\\n\");\n}\nfunction serializeValue(value) {\n if (typeof value === \"string\") {\n return serializeString(value);\n } else if (typeof value === \"number\" || typeof value === \"boolean\" || typeof value === \"symbol\") {\n return value.toString();\n } else if (value === null) {\n return \"null\";\n } else if (value === void 0) {\n return \"undefined\";\n } else {\n if (isDate(value)) {\n return `new Date(${quote(value.toISOString())})`;\n } else if (value instanceof Date) {\n return \"(Invalid Date)\";\n } else {\n return \"(unserializable)\";\n }\n }\n}\nfunction serializeAnnotation(ann, prefix = \"\") {\n let serialized;\n if (ann.type === \"array\") {\n serialized = serializeArray(ann, prefix);\n } else if (ann.type === \"object\") {\n serialized = serializeObject(ann, prefix);\n } else if (ann.type === \"scalar\") {\n serialized = serializeValue(ann.value);\n } else {\n /* @__PURE__ */ ((_) => {\n })(ann);\n serialized = ann.value;\n }\n const text = ann.text;\n if (text !== void 0) {\n const sep = \"^\".repeat(isMultiline(serialized) ? 1 : serialized.length);\n return [serialized, [sep, text].join(isMultiline(text) ? \"\\n\" : \" \")];\n } else {\n return [serialized, void 0];\n }\n}\nfunction formatInline(ann) {\n const [serialized, annotation] = serializeAnnotation(ann);\n if (annotation !== void 0) {\n return `${serialized}\n${annotation}`;\n } else {\n return serialized;\n }\n}\nfunction formatShort(ann) {\n return summarize(ann, []).join(\"\\n\");\n}\n\n// src/core/Result.ts\nfunction ok(value) {\n return { ok: true, value, error: void 0 };\n}\nfunction err(error) {\n return { ok: false, value: void 0, error };\n}\n\n// src/core/Decoder.ts\nfunction noThrow(fn) {\n return (t) => {\n try {\n const v = fn(t);\n return ok(v);\n } catch (e) {\n return err(public_annotate(t, e instanceof Error ? e.message : String(e)));\n }\n };\n}\nfunction format(err2, formatter) {\n const formatted = formatter(err2);\n if (typeof formatted === \"string\") {\n const err3 = new Error(`\n${formatted}`);\n err3.name = \"Decoding error\";\n return err3;\n } else {\n return formatted;\n }\n}\nfunction define(fn) {\n function decode(blob) {\n return fn(\n blob,\n ok,\n (msg) => err(isAnnotation(msg) ? msg : public_annotate(blob, msg))\n );\n }\n function verify(blob, formatter = formatInline) {\n const result = decode(blob);\n if (result.ok) {\n return result.value;\n } else {\n throw format(result.error, formatter);\n }\n }\n function value(blob) {\n return decode(blob).value;\n }\n function transform(transformFn) {\n return then(noThrow(transformFn));\n }\n function refine(predicateFn, errmsg) {\n return reject(\n (value2) => predicateFn(value2) ? (\n // Don't reject\n null\n ) : (\n // Reject with the given error message\n errmsg\n )\n );\n }\n function then(next) {\n return define((blob, ok2, err2) => {\n const r1 = decode(blob);\n if (!r1.ok) return r1;\n const r2 = isDecoder(next) ? next : next(r1.value, ok2, err2);\n return isDecoder(r2) ? r2.decode(r1.value) : r2;\n });\n }\n function pipe(next) {\n return then(next);\n }\n function reject(rejectFn) {\n return then((blob, ok2, err2) => {\n const errmsg = rejectFn(blob);\n return errmsg === null ? ok2(blob) : err2(typeof errmsg === \"string\" ? public_annotate(blob, errmsg) : errmsg);\n });\n }\n function describe(message) {\n return define((blob, _, err2) => {\n const result = decode(blob);\n if (result.ok) {\n return result;\n } else {\n return err2(public_annotate(result.error, message));\n }\n });\n }\n return brand2({\n verify,\n value,\n decode,\n transform,\n refine,\n reject,\n describe,\n then,\n pipe\n });\n}\nvar _register2 = /* @__PURE__ */ new WeakSet();\nfunction brand2(decoder) {\n _register2.add(decoder);\n return decoder;\n}\nfunction isDecoder(thing) {\n return _register2.has(thing);\n}\n\n// src/arrays.ts\nvar poja = define((blob, ok2, err2) => {\n if (!Array.isArray(blob)) {\n return err2(\"Must be an array\");\n }\n return ok2(blob);\n});\nfunction all(items, blobs, ok2, err2) {\n const results = [];\n for (let index = 0; index < items.length; ++index) {\n const result = items[index];\n if (result.ok) {\n results.push(result.value);\n } else {\n const ann = result.error;\n const clone = blobs.slice();\n clone.splice(\n index,\n 1,\n public_annotate(ann, ann.text ? `${ann.text} (at index ${index})` : `index ${index}`)\n );\n return err2(public_annotate(clone));\n }\n }\n return ok2(results);\n}\nfunction array(decoder) {\n const decodeFn = decoder.decode;\n return poja.then((blobs, ok2, err2) => {\n const results = blobs.map(decodeFn);\n return all(results, blobs, ok2, err2);\n });\n}\nfunction isNonEmpty(arr) {\n return arr.length > 0;\n}\nfunction nonEmptyArray(decoder) {\n return array(decoder).refine(isNonEmpty, \"Must be non-empty array\");\n}\nvar ntuple = (n) => poja.refine((arr) => arr.length === n, `Must be a ${n}-tuple`);\nfunction tuple(...decoders) {\n return ntuple(decoders.length).then((blobs, ok2, err2) => {\n let allOk = true;\n const rvs = decoders.map((decoder, i) => {\n const blob = blobs[i];\n const result = decoder.decode(blob);\n if (result.ok) {\n return result.value;\n } else {\n allOk = false;\n return result.error;\n }\n });\n if (allOk) {\n return ok2(rvs);\n } else {\n return err2(public_annotate(rvs));\n }\n });\n}\n\n// src/misc.ts\nfunction instanceOf(klass) {\n return define(\n (blob, ok2, err2) => blob instanceof klass ? ok2(blob) : err2(`Must be ${klass.name} instance`)\n );\n}\nfunction lazy(decoderFn) {\n return define((blob) => decoderFn().decode(blob));\n}\nfunction prep(mapperFn, decoder) {\n return define((originalInput, _, err2) => {\n let blob;\n try {\n blob = mapperFn(originalInput);\n } catch (e) {\n return err2(\n public_annotate(\n originalInput,\n // istanbul ignore next\n e instanceof Error ? e.message : String(e)\n )\n );\n }\n const r = decoder.decode(blob);\n return r.ok ? r : err2(public_annotate(originalInput, r.error.text));\n });\n}\n\n// src/lib/set-methods.ts\nfunction difference(xs, ys) {\n const result = /* @__PURE__ */ new Set();\n for (const x of xs) {\n if (!ys.has(x)) {\n result.add(x);\n }\n }\n return result;\n}\n\n// src/objects.ts\nvar pojo = define(\n (blob, ok2, err2) => isPojo(blob) ? ok2(blob) : err2(\"Must be an object\")\n);\nfunction object(decoders) {\n const knownKeys = new Set(Object.keys(decoders));\n return pojo.then((plainObj, ok2, err2) => {\n const actualKeys = new Set(Object.keys(plainObj));\n const missingKeys = difference(knownKeys, actualKeys);\n const record2 = {};\n let errors = null;\n for (const key of Object.keys(decoders)) {\n const decoder = decoders[key];\n const rawValue = plainObj[key];\n const result = decoder.decode(rawValue);\n if (result.ok) {\n const value = result.value;\n if (value !== void 0) {\n record2[key] = value;\n }\n missingKeys.delete(key);\n } else {\n const ann = result.error;\n if (rawValue === void 0) {\n missingKeys.add(key);\n } else {\n if (errors === null) {\n errors = /* @__PURE__ */ new Map();\n }\n errors.set(key, ann);\n }\n }\n }\n if (errors || missingKeys.size > 0) {\n let objAnn = public_annotateObject(plainObj);\n if (errors) {\n objAnn = merge(objAnn, errors);\n }\n if (missingKeys.size > 0) {\n const errMsg = Array.from(missingKeys).map(quote).join(\", \");\n const pluralized = missingKeys.size > 1 ? \"keys\" : \"key\";\n objAnn = updateText(objAnn, `Missing ${pluralized}: ${errMsg}`);\n }\n return err2(objAnn);\n }\n return ok2(record2);\n });\n}\nfunction exact(decoders) {\n const allowedKeys = new Set(Object.keys(decoders));\n const checked = pojo.reject((plainObj) => {\n const actualKeys = new Set(Object.keys(plainObj));\n const extraKeys = difference(actualKeys, allowedKeys);\n return extraKeys.size > 0 ? `Unexpected extra keys: ${Array.from(extraKeys).map(quote).join(\", \")}` : null;\n });\n return checked.pipe(object(decoders));\n}\nfunction inexact(decoders) {\n return pojo.pipe((plainObj) => {\n const allkeys = new Set(Object.keys(plainObj));\n return object(decoders).transform((safepart) => {\n const safekeys = new Set(Object.keys(decoders));\n for (const k of safekeys) allkeys.add(k);\n const rv = {};\n for (const k of allkeys) {\n if (safekeys.has(k)) {\n const value = safepart[k];\n if (value !== void 0) {\n rv[k] = value;\n }\n } else {\n rv[k] = plainObj[k];\n }\n }\n return rv;\n });\n });\n}\n\n// src/unions.ts\nvar EITHER_PREFIX = \"Either:\\n\";\nfunction itemize(s) {\n return `-${indent(s).substring(1)}`;\n}\nfunction nest(errText) {\n return errText.startsWith(EITHER_PREFIX) ? errText.substring(EITHER_PREFIX.length) : itemize(errText);\n}\nfunction either(...decoders) {\n if (decoders.length === 0) {\n throw new Error(\"Pass at least one decoder to either()\");\n }\n return define((blob, _, err2) => {\n const errors = [];\n for (let i = 0; i < decoders.length; i++) {\n const result = decoders[i].decode(blob);\n if (result.ok) {\n return result;\n } else {\n errors.push(result.error);\n }\n }\n const text = EITHER_PREFIX + errors.map((err3) => nest(summarize(err3).join(\"\\n\"))).join(\"\\n\");\n return err2(text);\n });\n}\nfunction oneOf(constants) {\n return define((blob, ok2, err2) => {\n const winner = constants.find((c) => c === blob);\n if (winner !== void 0) {\n return ok2(winner);\n }\n return err2(`Must be one of ${constants.map((value) => quote(value)).join(\", \")}`);\n });\n}\nfunction enum_(enumObj) {\n const values = Object.values(enumObj);\n if (!values.some(isNumber)) {\n return oneOf(values);\n } else {\n const nums = values.filter(isNumber);\n const ignore = new Set(nums.map((val) => enumObj[val]));\n const strings = values.filter(isString).filter((val) => !ignore.has(val));\n return oneOf([...nums, ...strings]);\n }\n}\nfunction taggedUnion(field, mapping2) {\n const scout = object({\n [field]: prep(String, oneOf(Object.keys(mapping2)))\n }).transform((o) => o[field]);\n return select(\n scout,\n // peek...\n (key) => mapping2[key]\n // ...then select\n );\n}\nfunction select(scout, selectFn) {\n return define((blob) => {\n const result = scout.decode(blob);\n return result.ok ? selectFn(result.value).decode(blob) : result;\n });\n}\n\n// src/basics.ts\nfunction lazyval(value) {\n return typeof value === \"function\" ? value() : value;\n}\nvar null_ = constant(null);\nvar undefined_ = constant(void 0);\nvar nullish_ = define(\n (blob, ok2, err2) => (\n // Equiv to either(undefined_, null_), but combined for better error message\n blob == null ? ok2(blob) : err2(\"Must be undefined or null\")\n )\n);\nfunction optional(decoder, defaultValue) {\n const rv = either(undefined_, decoder);\n return arguments.length >= 2 ? rv.transform((value) => value ?? lazyval(defaultValue)) : rv;\n}\nfunction nullable(decoder, defaultValue) {\n const rv = either(null_, decoder);\n return arguments.length >= 2 ? rv.transform((value) => value ?? lazyval(defaultValue)) : rv;\n}\nvar maybe = nullish;\nfunction nullish(decoder, defaultValue) {\n const rv = either(nullish_, decoder);\n return arguments.length >= 2 ? rv.transform((value) => value ?? lazyval(defaultValue)) : rv;\n}\nfunction constant(value) {\n return define(\n (blob, ok2, err2) => blob === value ? ok2(value) : err2(`Must be ${typeof value === \"symbol\" ? String(value) : quote(value)}`)\n );\n}\nfunction always(value) {\n return define(\n typeof value === \"function\" ? (_, ok2) => ok2(value()) : (_, ok2) => ok2(value)\n );\n}\nfunction never(msg) {\n return define((_, __, err2) => err2(msg));\n}\nvar fail = never;\nvar hardcoded = always;\nvar unknown = define((blob, ok2, _) => ok2(blob));\nvar mixed = unknown;\n\n// src/booleans.ts\nvar boolean = define((blob, ok2, err2) => {\n return typeof blob === \"boolean\" ? ok2(blob) : err2(\"Must be boolean\");\n});\nvar truthy = define((blob, ok2, _) => ok2(!!blob));\n\n// src/collections.ts\nfunction record(fst, snd) {\n const keyDecoder = snd !== void 0 ? fst : void 0;\n const valueDecoder = snd !== void 0 ? snd : fst;\n return pojo.then((input, ok2, err2) => {\n let rv = {};\n const errors = /* @__PURE__ */ new Map();\n for (const key of Object.keys(input)) {\n const value = input[key];\n const keyResult = keyDecoder?.decode(key);\n if (keyResult?.ok === false) {\n return err2(\n public_annotate(input, `Invalid key ${quote(key)}: ${formatShort(keyResult.error)}`)\n );\n }\n const k = keyResult?.value ?? key;\n const result = valueDecoder.decode(value);\n if (result.ok) {\n if (errors.size === 0) {\n rv[k] = result.value;\n }\n } else {\n errors.set(key, result.error);\n rv = {};\n }\n }\n if (errors.size > 0) {\n return err2(merge(public_annotateObject(input), errors));\n } else {\n return ok2(rv);\n }\n });\n}\nvar dict = record;\nfunction setFromArray(decoder) {\n return array(decoder).transform((items) => new Set(items));\n}\nvar set = setFromArray;\nfunction mapping(decoder) {\n return record(decoder).transform((obj) => new Map(Object.entries(obj)));\n}\n\n// src/lib/size-options.ts\nfunction bySizeOptions(options) {\n const size = options?.size;\n const min = size ?? options?.min;\n const max = size ?? options?.max;\n const atLeast = min === max ? \"\" : \"at least \";\n const atMost = min === max ? \"\" : \"at most \";\n const tooShort = min !== void 0 && `Too short, must be ${atLeast}${min} chars`;\n const tooLong = max !== void 0 && `Too long, must be ${atMost}${max} chars`;\n return tooShort && tooLong ? (s) => s.length < min ? tooShort : s.length > max ? tooLong : null : tooShort ? (s) => s.length < min ? tooShort : null : tooLong ? (s) => s.length > max ? tooLong : null : () => null;\n}\n\n// src/strings.ts\nvar url_re = /^([A-Za-z]{3,9}(?:[+][A-Za-z]{3,9})?):\\/\\/(?:([-;:&=+$,\\w]+)@)?(?:([A-Za-z0-9.-]+)(?::([0-9]{2,5}))?)(\\/(?:[-+~%/.,\\w]*)?(?:\\?[-+=&;%@.,/\\w]*)?(?:#[.,!/\\w]*)?)?$/;\nvar string = define(\n (blob, ok2, err2) => isString(blob) ? ok2(blob) : err2(\"Must be string\")\n);\nvar nonEmptyString = regex(/\\S/, \"Must be non-empty string\");\nfunction regex(regex2, msg) {\n return string.refine((s) => regex2.test(s), msg);\n}\nvar email = regex(\n // The almost perfect email regex, taken from https://emailregex.com/\n /^(([^<>()[\\]\\\\.,;:\\s@\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/,\n \"Must be email\"\n);\nvar url = either(\n regex(url_re, \"Must be URL\").transform((value) => new URL(value)),\n instanceOf(URL)\n);\nvar httpsUrl = url.refine(\n (value) => value.protocol === \"https:\",\n \"Must be an HTTPS URL\"\n);\nvar identifier = regex(\n /^[a-z_][a-z0-9_]*$/i,\n \"Must be valid identifier\"\n);\nfunction nanoid(options) {\n return regex(/^[a-z0-9_-]+$/i, \"Must be nano ID\").reject(\n bySizeOptions(options ?? { size: 21 })\n );\n}\nvar uuid = regex(\n /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i,\n \"Must be uuid\"\n);\nvar uuidv1 = (\n // https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_1_(date-time_and_MAC_address)\n uuid.refine((value) => value[14] === \"1\", \"Must be uuidv1\")\n);\nvar uuidv4 = (\n // https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_4_(random)\n uuid.refine((value) => value[14] === \"4\", \"Must be uuidv4\")\n);\nvar decimal = regex(/^[0-9]+$/, \"Must only contain digits\");\nvar hexadecimal = regex(\n /^[0-9a-f]+$/i,\n \"Must only contain hexadecimal digits\"\n);\nvar numeric = decimal.transform(Number);\n\n// src/dates.ts\nvar iso8601_re = /^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:[.]\\d+)?(?:Z|[+-]\\d{2}:?\\d{2})$/;\nvar date = define((blob, ok2, err2) => {\n return isDate(blob) ? ok2(blob) : err2(\"Must be a Date\");\n});\nvar iso8601 = (\n // Input itself needs to match the ISO8601 regex...\n regex(iso8601_re, \"Must be ISO8601 format\").transform(\n // Make sure it is a _valid_ date\n (value) => {\n const date2 = new Date(value);\n if (isNaN(date2.getTime())) {\n throw new Error(\"Must be valid date/time value\");\n }\n return date2;\n }\n )\n);\nvar datelike = either(date, iso8601).describe(\"Must be a Date or date string\");\n\n// src/numbers.ts\nvar anyNumber = define(\n (blob, ok2, err2) => isNumber(blob) ? ok2(blob) : err2(\"Must be number\")\n);\nvar number = anyNumber.refine(\n (n) => Number.isFinite(n),\n \"Number must be finite\"\n);\nvar integer = number.refine(\n (n) => Number.isInteger(n),\n \"Number must be an integer\"\n);\nvar positiveNumber = number.refine(\n (n) => n >= 0 && !Object.is(n, -0),\n \"Number must be positive\"\n);\nvar positiveInteger = integer.refine(\n (n) => n >= 0 && !Object.is(n, -0),\n \"Number must be positive\"\n);\nvar bigint = define(\n (blob, ok2, err2) => isBigInt(blob) ? ok2(blob) : err2(\"Must be bigint\")\n);\n\n// src/json.ts\nvar jsonObject = lazy(() => record(json));\nvar jsonArray = lazy(() => array(json));\nvar json = either(\n null_,\n string,\n number,\n boolean,\n jsonObject,\n jsonArray\n).describe(\"Must be valid JSON value\");\nexport {\n always,\n anyNumber,\n array,\n bigint,\n boolean,\n constant,\n date,\n datelike,\n decimal,\n define,\n dict,\n either,\n email,\n enum_,\n err,\n exact,\n fail,\n formatInline,\n formatShort,\n hardcoded,\n hexadecimal,\n httpsUrl,\n identifier,\n inexact,\n instanceOf,\n integer,\n iso8601,\n json,\n jsonArray,\n jsonObject,\n lazy,\n mapping,\n maybe,\n mixed,\n nanoid,\n never,\n nonEmptyArray,\n nonEmptyString,\n null_,\n nullable,\n nullish,\n number,\n numeric,\n object,\n ok,\n oneOf,\n optional,\n poja,\n pojo,\n positiveInteger,\n positiveNumber,\n prep,\n record,\n regex,\n select,\n set,\n setFromArray,\n string,\n taggedUnion,\n truthy,\n tuple,\n undefined_,\n unknown,\n url,\n uuid,\n uuidv1,\n uuidv4\n};\n","import { boolean, nonEmptyString, number, object, positiveNumber, type Decoder } from 'decoders';\n\nconst MAX_RETRIES = 3;\nconst DELAY = 500; // 0.5s\nexport interface RuntimeConfig {\n analytics: {\n changeEventDebounceDelayMs: number;\n };\n evervault: {\n teamId: string;\n appId: string;\n };\n fingerprint: {\n disabled: boolean;\n useEmulation: boolean;\n publicKey: string;\n endpoint: string;\n scriptUrlPattern: string;\n cacheDurationInSeconds: number;\n };\n}\n\nconst runtimeConfigDecoder: Decoder<RuntimeConfig> = object({\n analytics: object({\n changeEventDebounceDelayMs: positiveNumber,\n }),\n evervault: object({\n teamId: nonEmptyString,\n appId: nonEmptyString,\n }),\n fingerprint: object({\n disabled: boolean,\n useEmulation: boolean,\n publicKey: nonEmptyString,\n endpoint: nonEmptyString,\n scriptUrlPattern: nonEmptyString,\n cacheDurationInSeconds: number,\n }),\n});\n\nexport async function getRuntimeConfig(\n clientId: string,\n signal?: AbortSignal,\n): Promise<{ type: 'success'; runtimeConfig: RuntimeConfig } | { type: 'error'; error?: Error }> {\n try {\n let attempt = 0;\n\n while (attempt < MAX_RETRIES) {\n try {\n const response = await fetch(`https://public-keys.stitch.money/${clientId}`, {\n signal,\n });\n\n if (response.ok) {\n const runtimeConfig = runtimeConfigDecoder.verify(await response.json());\n return { type: 'success', runtimeConfig };\n }\n\n attempt++;\n if (attempt === MAX_RETRIES) {\n return {\n type: 'error',\n error: new Error(\n `[${getRuntimeConfig.name}] Failed to retrieve runtime config after ${MAX_RETRIES} attempts. public-keys worker returned ${response.status} response`,\n ),\n };\n }\n\n await new Promise((resolve) => setTimeout(resolve, DELAY));\n } catch (error) {\n attempt++;\n if (attempt === MAX_RETRIES) {\n throw error;\n }\n\n await new Promise((resolve) => setTimeout(resolve, DELAY));\n }\n }\n return {\n type: 'error',\n error: new Error(`[${getRuntimeConfig.name}] Failed to retrieve runtime config`),\n };\n } catch (error) {\n if (error instanceof Error) {\n return { type: 'error', error };\n }\n if (typeof error === 'string') {\n return { type: 'error', error: new Error(error) };\n }\n\n return {\n type: 'error',\n error: new Error(\n `[${getRuntimeConfig.name}] Failed to retrieve runtime config. Unknown error thrown`,\n ),\n };\n }\n}\n","import { getFingerprintAgent, getFingerprintData, type Agent } from 'fingerprint-stitch';\nimport { configure as configureLogger, logError } from 'logger-stitch';\nimport { getRuntimeConfig, type RuntimeConfig } from 'runtime-config-stitch';\nimport { v4 } from 'uuid';\n\nimport {\n WalletType,\n type ApplePayVerifyCallback,\n type CreatePaymentCallback,\n type InitialisationProperties,\n type SamsungPayClient,\n type SamsungPayPaymentCredential,\n type SamsungPayTransactionDetail,\n} from 'src/types';\nimport {\n determineApplePaySupport,\n determineGooglePaySupport,\n determineSamsungPaySupport,\n getApplePayVersion,\n} from 'src/utils/browser-support';\nimport { SAMSUNG_PAY_PAYMENT_METHODS } from 'src/utils/constants';\nimport { SessionError } from 'src/utils/errors';\nimport { getErrorAsString } from 'src/utils/helpers';\nimport { version } from '../../package.json';\n\nconst LOG_PREFIX_ON_VALIDATE_MERCHANT = '[onvalidatemerchant]';\nconst LOG_PREFIX_ON_PAYMENT_AUTHORIZED = '[onpaymentauthorized]';\nconst LOG_PREFIX_SAMSUNG_PAY_SESSION_HANDLER = '[onClickSamsungPaySessionHandler]';\nconst LOG_PREFIX_GOOGLE_PAY_SESSION_HANDLER = '[onClickGooglePaySessionHandler]';\n\n/**\n * Client-side SDK for handling Stitch wallet payments\n */\nexport class StitchWalletClientSdk {\n private readonly onCancelPayment: () => void;\n private readonly clientId: string | undefined;\n private readonly gatewayMerchantId: string | undefined;\n\n private applePayIsSupported: boolean = false;\n private samsungPayIsSupported: boolean = false;\n private googlePayIsSupported: boolean = false;\n\n private runtimeConfig: RuntimeConfig | undefined;\n private fingerprintAgent: Agent | undefined;\n\n private readonly googlePayClient: google.payments.api.PaymentsClient | undefined;\n private readonly samsungPayClient: SamsungPayClient | undefined;\n /**\n * Initializes a StitchWalletClientSdk instance\n *\n * @param {InitialisationProperties} initialisationProperties\n */\n constructor(initialisationProperties: InitialisationProperties) {\n configureLogger({\n source: 'wallets-client',\n version,\n });\n\n const { onCancelPayment, clientId, gatewayMerchantId } = initialisationProperties;\n this.googlePayClient = gatewayMerchantId\n ? new google.payments.api.PaymentsClient({\n environment: clientId?.startsWith('test-') ? 'TEST' : 'PRODUCTION',\n })\n : undefined;\n\n this.samsungPayClient = window.SamsungPay\n ? new window.SamsungPay.PaymentClient({\n environment: clientId?.startsWith('test-') ? 'STAGE' : 'PRODUCTION',\n nonce: v4(),\n })\n : undefined;\n\n this.onCancelPayment = onCancelPayment ?? (() => {});\n this.clientId = clientId;\n this.gatewayMerchantId = gatewayMerchantId;\n\n void this.loadFingerprintAgent();\n }\n\n private async loadRuntimeConfig() {\n if (this.runtimeConfig !== undefined) {\n return;\n }\n if (this.clientId) {\n const configResult = await getRuntimeConfig(this.clientId);\n if (configResult.type === 'error') {\n const errorMessage =\n configResult.error?.message ?? 'Failed to load runtime configuration';\n void logError(errorMessage, configResult.error, {\n clientId: this.clientId,\n });\n\n if (configResult.error) {\n throw configResult.error;\n }\n\n throw new Error(errorMessage);\n }\n\n this.runtimeConfig = configResult.runtimeConfig;\n }\n }\n\n private async loadFingerprintAgent() {\n if (this.fingerprintAgent !== undefined) {\n return;\n }\n if (this.runtimeConfig === undefined) {\n await this.loadRuntimeConfig();\n }\n if (this.runtimeConfig !== undefined && !this.runtimeConfig.fingerprint.disabled) {\n this.fingerprintAgent = await getFingerprintAgent({\n config: this.runtimeConfig.fingerprint,\n });\n }\n }\n\n /**\n * Returns encoded fingerprint data for the current device\n *\n * @returns {Promise<string>} Encoded fingerprint data\n */\n public async fingerprint(): Promise<string> {\n const data = await getFingerprintData({\n config: this.runtimeConfig?.fingerprint,\n agent: this.fingerprintAgent,\n clientId: this.clientId,\n });\n configureLogger({ fingerprint: data });\n return data;\n }\n\n /**\n * Returns a list of wallet payment methods supported on the device and/or browser\n *\n * @returns {Promise<WalletType[]>} Array of supported payment methods\n */\n public async supportedPaymentMethods(): Promise<WalletType[]> {\n const supportedWallets: WalletType[] = [];\n\n this.applePayIsSupported = determineApplePaySupport();\n if (this.applePayIsSupported) {\n supportedWallets.push(WalletType.ApplePay);\n }\n\n this.samsungPayIsSupported = await determineSamsungPaySupport(this.samsungPayClient);\n if (this.samsungPayIsSupported) {\n supportedWallets.push(WalletType.SamsungPay);\n }\n\n this.googlePayIsSupported = await determineGooglePaySupport(\n this.googlePayClient,\n this.gatewayMerchantId,\n );\n if (this.googlePayIsSupported) {\n supportedWallets.push(WalletType.GooglePay);\n }\n\n return supportedWallets;\n }\n\n /**\n * Returns a onClick handler function for an Apple Pay session encapsulating merchant validation and payment creation\n *\n * @param {string} currency - Payment currency in ISO 4127 format e.g. ZAR.\n * @param {number} amount - Payment amount.\n * @param {string} label - Payment sheet label.\n * @param {ApplePayVerifyCallback} verifyCallback - Callback for merchant validation.\n * @param {CreatePaymentCallback} createPaymentCallback - Callback for payment creation.\n * @param {RecurringPaymentOptions} [recurringPaymentOptions] - @alpha Optional parameters for recurring payments.\n * @returns {() => void} Function to handle Apple Pay button interaction.\n */\n public onClickApplePaySessionHandler(\n currency: string,\n amount: number,\n label: string,\n verifyCallback: ApplePayVerifyCallback,\n createPaymentCallback: CreatePaymentCallback,\n recurringPaymentOptions?: {\n managementUrl: string;\n billingAgreement?: string;\n recurringAmount?: number;\n recurringIntervalUnit?: ApplePayJS.ApplePayRecurringPaymentDateUnit;\n recurringIntervalCount?: number;\n },\n ): () => void {\n const version = getApplePayVersion();\n\n return () => {\n const request: ApplePayJS.ApplePayPaymentRequest = {\n countryCode: 'ZA',\n currencyCode: currency,\n supportedNetworks: ['visa', 'masterCard'],\n merchantCapabilities: ['supports3DS'],\n total: {\n label,\n amount: amount.toString(),\n },\n };\n if (recurringPaymentOptions) {\n request.recurringPaymentRequest = {\n paymentDescription: label,\n billingAgreement: recurringPaymentOptions.billingAgreement,\n regularBilling: {\n label,\n amount: (recurringPaymentOptions.recurringAmount ?? amount).toString(),\n paymentTiming: 'recurring',\n recurringPaymentIntervalUnit: recurringPaymentOptions.recurringIntervalUnit,\n recurringPaymentIntervalCount:\n recurringPaymentOptions.recurringIntervalCount ?? 1,\n },\n managementURL: recurringPaymentOptions.managementUrl,\n };\n }\n\n let session: ApplePaySession | undefined;\n try {\n session = new ApplePaySession(version, request);\n } catch (error) {\n void logError('Failed to create Apple Pay session', error, {\n clientId: this.clientId,\n });\n return;\n }\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n session.onvalidatemerchant = async (event) => {\n try {\n const verifyCallbackResponse = await verifyCallback(event.validationURL);\n session?.completeMerchantValidation(verifyCallbackResponse);\n } catch (error) {\n void logError(\n `${LOG_PREFIX_ON_VALIDATE_MERCHANT} Failed to complete merchant validation`,\n error,\n {\n clientId: this.clientId,\n },\n );\n throw new SessionError(\n `Failed to complete merchant validation: ${getErrorAsString(error)}`,\n );\n }\n };\n\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n session.onpaymentauthorized = async (event) => {\n try {\n const paymentToken = event.payment.token;\n const fingerprintData = await this.fingerprint();\n const createPaymentCallbackResponse = await createPaymentCallback(\n paymentToken,\n fingerprintData,\n );\n\n switch (createPaymentCallbackResponse.status) {\n case 'TransactionPending':\n case 'TransactionSuccess': {\n session?.completePayment(ApplePaySession.STATUS_SUCCESS);\n break;\n }\n case 'TransactionFailure': {\n session?.completePayment(ApplePaySession.STATUS_FAILURE);\n break;\n }\n default: {\n const errorMessage = 'Invalid transaction status';\n const error = new SessionError(\n `${errorMessage} ${createPaymentCallbackResponse.status}`,\n );\n void logError(\n `${LOG_PREFIX_ON_PAYMENT_AUTHORIZED} Invalid transaction status`,\n error,\n {\n clientId: this.clientId,\n },\n );\n throw error;\n }\n }\n } catch (error) {\n session?.completePayment(ApplePaySession.STATUS_FAILURE);\n void logError(\n `${LOG_PREFIX_ON_PAYMENT_AUTHORIZED} Failed to create payment`,\n error,\n {\n clientId: this.clientId,\n },\n );\n throw new SessionError(`Failed to create payment: ${getErrorAsString(error)}`);\n }\n };\n // eslint-disable-next-line unicorn/prefer-add-event-listener\n session.oncancel = () => {\n this.onCancelPayment();\n };\n\n session.begin();\n };\n }\n\n /**\n * Returns a onClick handler function for a Samsung Pay session encapsulating payment creation\n *\n * @param {string} currency - Payment currency in ISO 4127 format e.g. ZAR.\n * @param {number} amount - Payment amount.\n * @param {string} label - Payment sheet label.\n * @param {string} externalReference - Payment external reference.\n * @param {string} initiativeContext - Merchant domain URL.\n * @param {string} gatewayMerchantId - Gateway merchant ID.\n * @param {CreatePaymentCallback} createPaymentCallback - Callback for payment creation.\n * @returns {() => void} Function to handle Samsung Pay button interaction.\n */\n public onClickSamsungPaySessionHandler(\n currency: string,\n amount: number,\n label: string,\n externalReference: string,\n initiativeContext: string,\n gatewayMerchantId: string,\n createPaymentCallback: CreatePaymentCallback,\n ): () => void {\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n return async () => {\n if (!this.samsungPayClient) {\n const errorMessage = 'Samsung Pay client not initialized';\n const error = new Error(errorMessage);\n void logError(`${LOG_PREFIX_SAMSUNG_PAY_SESSION_HANDLER} ${errorMessage}`, error, {\n clientId: this.clientId,\n });\n throw error;\n }\n try {\n const transactionDetail: SamsungPayTransactionDetail = {\n orderNumber: externalReference,\n merchant: {\n name: label,\n url: initiativeContext,\n id: gatewayMerchantId,\n countryCode: 'ZA',\n },\n amount: {\n option: 'FORMAT_TOTAL_PRICE_ONLY',\n currency,\n total: amount,\n },\n };\n\n const fingerprintData = await this.fingerprint();\n const paymentCredential: SamsungPayPaymentCredential =\n await this.samsungPayClient.loadPaymentSheet(\n SAMSUNG_PAY_PAYMENT_METHODS,\n transactionDetail,\n );\n\n const createPaymentCallbackResponse = await createPaymentCallback(\n paymentCredential,\n fingerprintData,\n );\n\n switch (createPaymentCallbackResponse.status) {\n case 'TransactionPending': {\n break;\n }\n case 'TransactionFailure': {\n this.samsungPayClient.notify({\n status: 'REJECTED',\n });\n break;\n }\n case 'TransactionSuccess': {\n this.samsungPayClient.notify({\n status: 'CHARGED',\n });\n\n break;\n }\n default: {\n this.samsungPayClient.notify({\n status: 'ERRED',\n });\n const errorMessage = `${LOG_PREFIX_SAMSUNG_PAY_SESSION_HANDLER} Invalid transaction status: ${createPaymentCallbackResponse.status}`;\n const error = new SessionError(errorMessage);\n void logError(errorMessage, error, { clientId: this.clientId });\n throw error;\n }\n }\n } catch (error) {\n void logError(\n `${LOG_PREFIX_SAMSUNG_PAY_SESSION_HANDLER} Failed to create payment`,\n error,\n {\n clientId: this.clientId,\n },\n );\n throw new SessionError(\n `${LOG_PREFIX_SAMSUNG_PAY_SESSION_HANDLER} Failed to create payment: ${getErrorAsString(error)}`,\n );\n }\n };\n }\n\n /**\n * Returns a onClick handler function for a Google Pay session encapsulating payment creation\n *\n * @param {CreatePaymentCallback} createPaymentCallback - Callback for payment creation.\n * @returns {() => void} Function to handle Google Pay button interaction\n */\n public onClickGooglePaySessionHandler(\n createPaymentCallback: CreatePaymentCallback,\n ): (paymentData: google.payments.api.PaymentData) => void {\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n return async (paymentData) => {\n try {\n const fingerprintData = await this.fingerprint();\n const createPaymentCallbackResponse = await createPaymentCallback(\n paymentData.paymentMethodData.tokenizationData.token,\n fingerprintData,\n );\n\n switch (createPaymentCallbackResponse.status) {\n case 'TransactionPending':\n case 'TransactionFailure':\n case 'TransactionSuccess': {\n break;\n }\n default: {\n const errorMessage = `${LOG_PREFIX_GOOGLE_PAY_SESSION_HANDLER} Invalid transaction status: ${createPaymentCallbackResponse.status}`;\n const error = new SessionError(errorMessage);\n void logError(errorMessage, error, { clientId: this.clientId });\n throw error;\n }\n }\n } catch (error) {\n void logError(\n `${LOG_PREFIX_GOOGLE_PAY_SESSION_HANDLER} Failed to create payment`,\n error,\n {\n clientId: this.clientId,\n },\n );\n throw new SessionError(\n `${LOG_PREFIX_GOOGLE_PAY_SESSION_HANDLER} Failed to create payment: ${getErrorAsString(error)}`,\n );\n }\n };\n }\n}\n","import type { SamsungPayPaymentMethods } from 'src/types';\n\nexport const SAMSUNG_PAY_SERVICE_ID = '9ba67dd8d5b247cfb3f76e';\n\nexport const SAMSUNG_PAY_PAYMENT_METHODS: SamsungPayPaymentMethods = {\n version: '2',\n serviceId: SAMSUNG_PAY_SERVICE_ID,\n protocol: 'PROTOCOL_3DS',\n allowedBrands: ['visa', 'mastercard'],\n};\n\nexport function generateGooglePayIsReadyToPayRequest(\n gatewayMerchantId: string,\n): google.payments.api.IsReadyToPayRequest {\n return {\n apiVersion: 2,\n apiVersionMinor: 0,\n allowedPaymentMethods: [\n {\n type: 'CARD',\n parameters: {\n allowedAuthMethods: ['CRYPTOGRAM_3DS'],\n allowedCardNetworks: ['VISA', 'MASTERCARD'],\n },\n tokenizationSpecification: {\n type: 'PAYMENT_GATEWAY',\n parameters: {\n gateway: 'stitch',\n gatewayMerchantId,\n },\n },\n },\n ],\n existingPaymentMethodRequired: true,\n };\n}\n","// eslint-disable @typescript-eslint/naming-convention\n\nimport type { SamsungPayClient } from 'src/types';\nimport {\n generateGooglePayIsReadyToPayRequest,\n SAMSUNG_PAY_PAYMENT_METHODS,\n} from 'src/utils/constants';\n\ninterface SamsungPay {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n PaymentClient: any;\n}\n\ndeclare global {\n interface Window {\n ApplePaySession: ApplePaySession;\n SamsungPay: SamsungPay;\n }\n}\n\n/**\n * Determines whether Apple Pay is supported by the device.\n *\n * @returns {boolean} Whether Apple Pay is supported.\n */\nexport function determineApplePaySupport(): boolean {\n if (!window.ApplePaySession) {\n return false;\n }\n return ApplePaySession.canMakePayments();\n}\n\n/**\n * Determines the maximum supported Apple Pay version by the browser.\n *\n * @returns {number} The maximum supported version, or -1 if unsupported.\n */\nexport function getApplePayVersion(): number {\n const noSupportedVersion = -1;\n if (!window.ApplePaySession) {\n return noSupportedVersion;\n }\n\n const findMaxSupportedVersion = (version: number): number => {\n if (version === 0) return noSupportedVersion;\n if (ApplePaySession.supportsVersion(version)) {\n return version;\n }\n return findMaxSupportedVersion(version - 1);\n };\n\n return findMaxSupportedVersion(14);\n}\n\n/**\n * Determines whether Google Pay is supported on the device.\n *\n * @returns {boolean} Whether Google Pay is supported.\n */\n\nexport async function determineGooglePaySupport(\n client?: google.payments.api.PaymentsClient,\n gatewayMerchantId?: string,\n): Promise<boolean> {\n if (!client || !gatewayMerchantId) {\n return false;\n }\n try {\n const response = await client.isReadyToPay(\n generateGooglePayIsReadyToPayRequest(gatewayMerchantId),\n );\n return response.result && (response.paymentMethodPresent ?? false);\n } catch {\n return false;\n }\n}\n\n/**\n * Determines whether Samsung Pay is supported by the browser.\n *\n * @returns {boolean} Whether Samsung Pay is supported.\n */\nexport async function determineSamsungPaySupport(client?: SamsungPayClient): Promise<boolean> {\n if (!client) {\n return false;\n }\n try {\n const response = await client.isReadyToPay(SAMSUNG_PAY_PAYMENT_METHODS);\n return response.result;\n } catch {\n return false;\n }\n}\n","export class ApiError extends Error {\n constructor(message: string) {\n super(message);\n this.name = 'ApiError';\n }\n}\n\nexport class UserInputError extends Error {\n constructor(message: string) {\n super(message);\n this.name = 'UserInputError';\n }\n}\n\nexport class SessionError extends Error {\n constructor(message: string) {\n super(message);\n this.name = 'SessionError';\n }\n}\n","/**\n * Converts any error object into a string representation.\n *\n * @param {unknown} error - The error object to convert.\n * @returns {string} String representation of the error.\n */\nexport const getErrorAsString = (error: unknown): string => {\n return error instanceof Error ? error.toString() : JSON.stringify(error);\n};\n\nexport const isTestClient = (clientId: string): boolean => {\n return clientId.toLowerCase().startsWith('test-');\n};\n","{\n \"name\": \"@stitch-money/client\",\n \"version\": \"3.5.0\",\n \"private\": false,\n \"description\": \"JavaScript package for the Stitch SDK\",\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"https://github.com/Stitch-Money/stitch-js.git\",\n \"directory\": \"packages/client\"\n },\n \"license\": \"MIT\",\n \"type\": \"module\",\n \"main\": \"./build/index.js\",\n \"module\": \"./build/index.js\",\n \"types\": \"./build/index.d.ts\",\n \"files\": [\n \"build\"\n ],\n \"scripts\": {\n \"build\": \"wireit\",\n \"lint\": \"eslint .\",\n \"prepublishOnly\": \"wireit\",\n \"test\": \"vitest\",\n \"typecheck\": \"tsc --noEmit\"\n },\n \"devDependencies\": {\n \"@types/applepayjs\": \"14.0.6\",\n \"@types/googlepay\": \"^0.7.6\",\n \"@types/uuid\": \"9.0.8\",\n \"@vitejs/plugin-react\": \"4.2.1\",\n \"eslint-config-stitch\": \"workspace:*\",\n \"fingerprint-stitch\": \"workspace:^\",\n \"jsdom\": \"24.0.0\",\n \"logger-stitch\": \"workspace:^\",\n \"prop-types\": \"^15.8.1\",\n \"runtime-config-stitch\": \"workspace:^\",\n \"tsconfig-stitch\": \"workspace:*\",\n \"tsup\": \"8.0.2\",\n \"vite\": \"^5.2.0\",\n \"vite-tsconfig-paths\": \"4.3.1\",\n \"vitest\": \"3.2.4\"\n },\n \"peerDependencies\": {\n \"uuid\": \"9.0.1\"\n },\n \"wireit\": {\n \"build\": {\n \"command\": \"tsup\",\n \"files\": [\n \"src/**\",\n \"tsup.config.ts\"\n ],\n \"output\": [\n \"build/**\"\n ]\n },\n \"prepublishOnly\": {\n \"dependencies\": [\n \"build\"\n ]\n }\n }\n}\n"],"mappings":"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","names":["require_serialize_error","__commonJSMin","exports","module","NonError","_NonError","message","e","commonProperties","isCalled","toJSON","from","json","destroyCircular","seen","to_","forceEnumerable","maxDepth","depth","to","key","value","property","enumerable","serializeError","options","deserializeError","newError","WalletType","__assign","s","i","n","p","__rest","e","t","__spreadArray","to","from","pack","i","l","ar","r","e","t","o","n","i","a","R","f","l","I","U","b","C","M","t","n","o","a","u","R","c","s","E","__spreadArray","e","f","l","d","v","r","i","K","B","F","__rest","I","V","__assign","k","lastFingerprintResult","lastFingerprintTimestamp","generateRandomId","length","chars","result","i","getFingerprintAgent","_0","__async","config","F","B","getFingerprintData","clientId","agent","payerId","data","now","error","import_serialize_error","generateUUID","c","r","STITCH_LOGGING_URL","loggerOptions","loggerMetadata","configure","options","_a","loggingUrl","rest","__objRest","__spreadValues","generateUUID","getHostname","_b","_c","logError","message","error","metadata","__async","loggerOptions","__spreadValues","getHostname","loggerMetadata","e","isNumber","value","isString","isBigInt","isDate","isPojo","_register","brand","ann","makeObjectAnn","fields","text","makeArrayAnn","items","makeOpaqueAnn","makeScalarAnn","updateText","annotation","__spreadProps","__spreadValues","merge","objAnnotation","newFields","isAnnotation","thing","annotateArray","arr","seen","annotate","annotateObject","obj","key","public_annotate","public_annotateObject","INDENT","isMultiline","s","indent","prefix","line","quotePattern","quote","summarize","keypath","result","index","ann2","item","serializeString","width","ser","truncated","serializeArray","serializeAnnotation","serializeObject","valueAnnotation","kser","serializeValue","valPrefix","vser","vann","serialized","sep","formatInline","formatShort","ok","err","error","noThrow","fn","v","e","format","err2","formatter","formatted","err3","define","decode","blob","msg","verify","transform","transformFn","then","refine","predicateFn","errmsg","reject","value2","next","ok2","r1","r2","isDecoder","pipe","rejectFn","describe","message","_","brand2","_register2","decoder","poja","all","blobs","results","clone","array","decodeFn","instanceOf","klass","define","blob","ok2","err2","lazy","decoderFn","difference","xs","ys","result","x","pojo","define","blob","ok2","err2","isPojo","object","decoders","knownKeys","plainObj","actualKeys","missingKeys","record2","errors","key","decoder","rawValue","value","ann","objAnn","public_annotateObject","merge","errMsg","quote","pluralized","updateText","EITHER_PREFIX","itemize","s","indent","nest","errText","either","decoders","define","blob","_","err2","errors","i","result","text","err3","summarize","null_","constant","undefined_","nullish_","define","blob","ok2","err2","constant","value","define","blob","ok2","err2","quote","unknown","define","blob","ok2","_","boolean","define","blob","ok2","err2","truthy","_","record","fst","snd","keyDecoder","valueDecoder","pojo","input","_a","rv","errors","key","value","keyResult","public_annotate","quote","formatShort","k","result","merge","public_annotateObject","url_re","string","define","blob","ok2","err2","isString","nonEmptyString","regex","regex2","msg","s","email","url","either","value","instanceOf","httpsUrl","identifier","uuid","regex","uuidv1","value","uuidv4","decimal","hexadecimal","numeric","iso8601_re","date","define","blob","ok2","err2","isDate","iso8601","date2","datelike","either","anyNumber","isNumber","number","n","integer","positiveNumber","positiveInteger","bigint","isBigInt","jsonObject","lazy","record","json","jsonArray","array","null_","string","boolean","MAX_RETRIES","DELAY","runtimeConfigDecoder","object","positiveNumber","nonEmptyString","boolean","number","getRuntimeConfig","clientId","signal","__async","attempt","response","resolve","error","v4","SAMSUNG_PAY_SERVICE_ID","SAMSUNG_PAY_PAYMENT_METHODS","generateGooglePayIsReadyToPayRequest","gatewayMerchantId","determineApplePaySupport","getApplePayVersion","findMaxSupportedVersion","version","determineGooglePaySupport","client","gatewayMerchantId","__async","_a","response","generateGooglePayIsReadyToPayRequest","e","determineSamsungPaySupport","SAMSUNG_PAY_PAYMENT_METHODS","SessionError","message","getErrorAsString","error","version","LOG_PREFIX_ON_VALIDATE_MERCHANT","LOG_PREFIX_ON_PAYMENT_AUTHORIZED","LOG_PREFIX_SAMSUNG_PAY_SESSION_HANDLER","LOG_PREFIX_GOOGLE_PAY_SESSION_HANDLER","StitchWalletClientSdk","initialisationProperties","__publicField","configure","version","onCancelPayment","clientId","gatewayMerchantId","v4","__async","_a","_b","configResult","getRuntimeConfig","errorMessage","logError","getFingerprintAgent","data","getFingerprintData","supportedWallets","determineApplePaySupport","determineSamsungPaySupport","determineGooglePaySupport","currency","amount","label","verifyCallback","createPaymentCallback","recurringPaymentOptions","getApplePayVersion","request","session","error","event","verifyCallbackResponse","SessionError","getErrorAsString","paymentToken","fingerprintData","createPaymentCallbackResponse","externalReference","initiativeContext","transactionDetail","paymentCredential","SAMSUNG_PAY_PAYMENT_METHODS","paymentData"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@stitch-money/client",
3
- "version": "3.5.0",
3
+ "version": "3.6.0",
4
4
  "private": false,
5
5
  "description": "JavaScript package for the Stitch SDK",
6
6
  "repository": {
@@ -29,8 +29,8 @@
29
29
  "vitest": "3.2.4",
30
30
  "eslint-config-stitch": "0.0.0",
31
31
  "fingerprint-stitch": "^0.0.0",
32
- "logger-stitch": "^0.1.1",
33
32
  "runtime-config-stitch": "^0.0.0",
33
+ "logger-stitch": "^0.1.1",
34
34
  "tsconfig-stitch": "0.0.0"
35
35
  },
36
36
  "peerDependencies": {