@stitch-money/client 2.1.0 → 2.2.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 +10 -10
- package/build/index.js.map +1 -1
- package/package.json +2 -2
package/build/index.js
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
"use client"
|
|
2
|
-
var Qe=Object.create;var z=Object.defineProperty,et=Object.defineProperties,tt=Object.getOwnPropertyDescriptor,rt=Object.getOwnPropertyDescriptors,nt=Object.getOwnPropertyNames,ne=Object.getOwnPropertySymbols,ot=Object.getPrototypeOf,oe=Object.prototype.hasOwnProperty,it=Object.prototype.propertyIsEnumerable;var G=(e,t,r)=>t in e?z(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,k=(e,t)=>{for(var r in t||(t={}))oe.call(t,r)&&G(e,r,t[r]);if(ne)for(var r of ne(t))it.call(t,r)&&G(e,r,t[r]);return e},ie=(e,t)=>et(e,rt(t));var at=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var st=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of nt(t))!oe.call(e,o)&&o!==r&&z(e,o,{get:()=>t[o],enumerable:!(n=tt(t,o))||n.enumerable});return e};var ut=(e,t,r)=>(r=e!=null?Qe(ot(e)):{},st(t||!e||!e.__esModule?z(r,"default",{value:e,enumerable:!0}):r,e));var E=(e,t,r)=>(G(e,typeof t!="symbol"?t+"":t,r),r);var g=(e,t,r)=>new Promise((n,o)=>{var a=s=>{try{u(r.next(s))}catch(l){o(l)}},i=s=>{try{u(r.throw(s))}catch(l){o(l)}},u=s=>s.done?n(s.value):Promise.resolve(s.value).then(a,i);u((r=r.apply(e,t)).next())});var be=at((dr,Re)=>{"use strict";var q=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)}}},ht=[{property:"name",enumerable:!1},{property:"message",enumerable:!1},{property:"stack",enumerable:!1},{property:"code",enumerable:!0}],W=Symbol(".toJSON called"),Rt=e=>{e[W]=!0;let t=e.toJSON();return delete e[W],t},H=({from:e,seen:t,to_:r,forceEnumerable:n,maxDepth:o,depth:a})=>{let i=r||(Array.isArray(e)?[]:{});if(t.push(e),a>=o)return i;if(typeof e.toJSON=="function"&&e[W]!==!0)return Rt(e);for(let[u,s]of Object.entries(e)){if(typeof Buffer=="function"&&Buffer.isBuffer(s)){i[u]="[object Buffer]";continue}if(typeof s!="function"){if(!s||typeof s!="object"){i[u]=s;continue}if(!t.includes(e[u])){a++,i[u]=H({from:e[u],seen:t.slice(),forceEnumerable:n,maxDepth:o,depth:a});continue}i[u]="[Circular]"}}for(let{property:u,enumerable:s}of ht)typeof e[u]=="string"&&Object.defineProperty(i,u,{value:e[u],enumerable:n?!0:s,configurable:!0,writable:!0});return i},bt=(e,t={})=>{let{maxDepth:r=Number.POSITIVE_INFINITY}=t;return typeof e=="object"&&e!==null?H({from:e,seen:[],forceEnumerable:!0,maxDepth:r,depth:0}):typeof e=="function"?`[Function: ${e.name||"anonymous"}]`:e},Et=(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 H({from:e,seen:[],to_:n,maxDepth:r,depth:0}),n}return new q(e)};Re.exports={serializeError:bt,deserializeError:Et}});var ae=(n=>(n.ApplePay="APPLE_PAY",n.SamsungPay="SAMSUNG_PAY",n.GooglePay="GOOGLE_PAY",n))(ae||{});var N=function(){return N=Object.assign||function(t){for(var r,n=1,o=arguments.length;n<o;n++){r=arguments[n];for(var a in r)Object.prototype.hasOwnProperty.call(r,a)&&(t[a]=r[a])}return t},N.apply(this,arguments)};function se(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 o=0,n=Object.getOwnPropertySymbols(e);o<n.length;o++)t.indexOf(n[o])<0&&Object.prototype.propertyIsEnumerable.call(e,n[o])&&(r[n[o]]=e[n[o]]);return r}function ue(e,t,r){if(r||arguments.length===2)for(var n=0,o=t.length,a;n<o;n++)(a||!(n in t))&&(a||(a=Array.prototype.slice.call(t,0,n)),a[n]=t[n]);return e.concat(a||Array.prototype.slice.call(t))}function ct(e,t){return function(r,n){return Object.prototype.hasOwnProperty.call(r,n)}(e,t)?e[t]:void 0}function ft(e,t,r,n){var o,a=document,i="securitypolicyviolation",u=function(l){var c=new URL(e,location.href),f=l.blockedURI;f!==c.href&&f!==c.protocol.slice(0,-1)&&f!==c.origin||(o=l,s())};a.addEventListener(i,u);var s=function(){return a.removeEventListener(i,u)};return n==null||n.then(s,s),Promise.resolve().then(t).then(function(l){return s(),l},function(l){return new Promise(function(c){var f=new MessageChannel;f.port1.onmessage=function(){return c()},f.port2.postMessage(null)}).then(function(){if(s(),o)return r(o);throw l})})}var ce={default:"endpoint"};var fe="Blocked by CSP",le="The endpoint parameter is not a valid URL";var lt="API key required";var pt="3.11.4",K="Failed to load the JS script of the agent",B="9319";function dt(e,t){var r,n,o,a,i,u,s,l=[],c=(r=function(d){var m=ue([],d,!0);return{current:function(){return m[0]},postpone:function(){var h=m.shift();h!==void 0&&m.push(h)},exclude:function(){m.shift()}}}(e),a=100,i=3e3,u=0,n=function(){return Math.random()*Math.min(i,a*Math.pow(2,u++))},o=new Set,[r.current(),function(d,m){var h,b=m instanceof Error?m.message:"";if(b===fe||b===le)r.exclude(),h=0;else if(b===B)r.exclude();else if(b===K){var O=Date.now()-d.getTime()<50,P=r.current();P&&O&&!o.has(P)&&(o.add(P),h=0),r.postpone()}else r.postpone();var T=r.current();return T===void 0?void 0:[T,h!=null?h:d.getTime()+n()-Date.now()]}]),f=c[0],p=c[1];if(f===void 0)return Promise.reject(new TypeError("The list of script URL patterns is empty"));var y=function(d){var m=new Date,h=function(O){return l.push({url:d,startedAt:m,finishedAt:new Date,error:O})},b=t(d);return b.then(function(){return h()},h),b.catch(function(O){if(s!=null||(s=O),l.length>=5)throw s;var P=p(m,O);if(!P)throw s;var T,He=P[0],Ze=P[1];return(T=Ze,new Promise(function(Xe){return setTimeout(Xe,T)})).then(function(){return y(He)})})};return y(f).then(function(d){return[d,l]})}var pe="https://fpnpmcdn.net/v<version>/<apiKey>/loader_v<loaderVersion>.js",de=pe;function ye(e){var t;e.scriptUrlPattern;var r=e.token,n=e.apiKey,o=n===void 0?r:n,a=se(e,["scriptUrlPattern","token","apiKey"]),i=(t=ct(e,"scriptUrlPattern"))!==null&&t!==void 0?t:pe,u=function(){var c=[],f=function(){c.push({time:new Date,state:document.visibilityState})},p=function(y,d,m,h){return y.addEventListener(d,m,h),function(){return y.removeEventListener(d,m,h)}}(document,"visibilitychange",f);return f(),[c,p]}(),s=u[0],l=u[1];return Promise.resolve().then(function(){if(!o||typeof o!="string")throw new Error(lt);var c=function(f,p){return(Array.isArray(f)?f:[f]).map(function(y){return function(d,m){var h=encodeURIComponent;return d.replace(/<[^<>]+>/g,function(b){return b==="<version>"?"3":b==="<apiKey>"?h(m):b==="<loaderVersion>"?h(pt):b})}(String(y),p)})}(i,o);return dt(c,yt)}).catch(function(c){throw l(),function(f){return f instanceof Error&&f.message===B?new Error(K):f}(c)}).then(function(c){var f=c[0],p=c[1];return l(),f.load(N(N({},a),{ldi:{attempts:p,visibilityStates:s}}))})}function yt(e){return ft(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(s){if(s instanceof Error&&s.name==="TypeError")return!0;throw s}}(t))throw new Error(le);var o=document.createElement("script"),a=function(){var u;return(u=o.parentNode)===null||u===void 0?void 0:u.removeChild(o)},i=document.head||document.getElementsByTagName("head")[0];o.onload=function(){a(),r()},o.onerror=function(){a(),n(new Error(K))},o.async=!0,o.src=t,i.appendChild(o)})}(e)},function(){throw new Error(fe)}).then(mt)}function mt(){var e=window,t="__fpjs_p_l_b",r=e[t];if(function(n,o){var a,i=(a=Object.getOwnPropertyDescriptor)===null||a===void 0?void 0:a.call(Object,n,o);i!=null&&i.configurable?delete n[o]:i&&!i.writable||(n[o]=void 0)}(e,t),typeof(r==null?void 0:r.load)!="function")throw new Error(B);return r}var J,Y;function me(e){let t="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",r="";for(let n=0;n<e;n++)r+=t.charAt(Math.floor(Math.random()*t.length));return r}function ge(t){return g(this,arguments,function*({config:e}){return yield ye({apiKey:e.publicKey,endpoint:[e.endpoint,ce],scriptUrlPattern:[e.scriptUrlPattern,de],region:"eu"})})}function he(n){return g(this,arguments,function*({config:e,clientId:t,agent:r}){if((e==null?void 0:e.disabled)===!0){let a={disabled:!0,emulated:!1,fingerprintDetails:{timestamp:new Date().toISOString(),requestId:"",visitorId:""}};return btoa(JSON.stringify(a))}if((e==null?void 0:e.disabled)===!1&&(e!=null&&e.useEmulation)&&(t!=null&&t.startsWith("test"))){let a={disabled:!1,emulated:!0,fingerprintDetails:{timestamp:new Date().toISOString(),requestId:`${Date.now()}.${me(6)}`,visitorId:me(20)}};return btoa(JSON.stringify(a))}if(r!==void 0&&(e==null?void 0:e.disabled)===!1){let a=Date.now();if(J!==void 0&&Y!==void 0&&a-Y<e.cacheDurationInSeconds*1e3)return btoa(JSON.stringify(J));try{let i=yield r.get(),u={disabled:!1,emulated:!1,fingerprintDetails:{timestamp:new Date().toISOString(),requestId:i.requestId,visitorId:i.visitorId}};return J=u,Y=a,btoa(JSON.stringify(u))}catch(i){let u={error:{outcome:"Failed",message:`Error: ${JSON.stringify(i)}`}};return btoa(JSON.stringify(u))}}return btoa(JSON.stringify({error:{outcome:"Failed",message:"Attempted to get fingerprint data but either runtime config or the agent are not present"}}))})}var Ee=ut(be());var St="https://analytics.stitch.money/query",_t,Pt;function Se(e,t,r){return g(this,null,function*(){try{yield fetch(St,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({type:"LOG_ERROR",error:{message:e,error:JSON.stringify((0,Ee.serializeError)(t)),metadata:k({sessionId:_t,source:Pt},r)}})})}catch(n){}})}function wt(e){return typeof e=="number"}function vt(e){return typeof e=="string"}function Ot(e){return typeof e=="bigint"}function Pe(e){return!!e&&Object.prototype.toString.call(e)==="[object Date]"&&!isNaN(e)}function we(e){return e!=null&&typeof e=="object"&&Object.prototype.toString.call(e)==="[object Object]"}var ve=new WeakSet;function C(e){return ve.add(e),e}function Oe(e,t){return C({type:"object",fields:e,text:t})}function At(e,t){return C({type:"array",items:e,text:t})}function $(e,t){return C({type:"opaque",value:e,text:t})}function It(e,t){return C({type:"scalar",value:e,text:t})}function Ae(e,t){return t!==void 0?C(ie(k({},e),{text:t})):e}function Ie(e,t){let r=new Map([...e.fields,...t]);return Oe(r,e.text)}function Te(e){return ve.has(e)}function Tt(e,t,r){r.add(e);let n=[];for(let o of e)n.push(Q(o,void 0,r));return At(n,t)}function Ne(e,t,r){r.add(e);let n=new Map;for(let o of Object.keys(e)){let a=e[o];n.set(o,Q(a,void 0,r))}return Oe(n,t)}function Q(e,t,r){return e==null||typeof e=="string"||typeof e=="number"||typeof e=="boolean"||typeof e=="symbol"||typeof e.getMonth=="function"?It(e,t):Te(e)?Ae(e,t):Array.isArray(e)?r.has(e)?$("<circular ref>",t):Tt(e,t,r):we(e)?r.has(e)?$("<circular ref>",t):Ne(e,t,r):$(typeof e=="function"?"<function>":"???",t)}function w(e,t){return Q(e,t,new WeakSet)}function Ce(e,t){return Ne(e,t,new WeakSet)}var v=" ";function Z(e){return e.indexOf(`
|
|
2
|
+
var it=Object.create;var z=Object.defineProperty,ot=Object.defineProperties,at=Object.getOwnPropertyDescriptor,st=Object.getOwnPropertyDescriptors,ut=Object.getOwnPropertyNames,ne=Object.getOwnPropertySymbols,ct=Object.getPrototypeOf,ie=Object.prototype.hasOwnProperty,lt=Object.prototype.propertyIsEnumerable;var G=(e,t,r)=>t in e?z(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,k=(e,t)=>{for(var r in t||(t={}))ie.call(t,r)&&G(e,r,t[r]);if(ne)for(var r of ne(t))lt.call(t,r)&&G(e,r,t[r]);return e},oe=(e,t)=>ot(e,st(t));var ft=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var pt=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let i of ut(t))!ie.call(e,i)&&i!==r&&z(e,i,{get:()=>t[i],enumerable:!(n=at(t,i))||n.enumerable});return e};var dt=(e,t,r)=>(r=e!=null?it(ct(e)):{},pt(t||!e||!e.__esModule?z(r,"default",{value:e,enumerable:!0}):r,e));var E=(e,t,r)=>(G(e,typeof t!="symbol"?t+"":t,r),r);var g=(e,t,r)=>new Promise((n,i)=>{var a=s=>{try{u(r.next(s))}catch(f){i(f)}},o=s=>{try{u(r.throw(s))}catch(f){i(f)}},u=s=>s.done?n(s.value):Promise.resolve(s.value).then(a,o);u((r=r.apply(e,t)).next())});var be=ft((Rr,Re)=>{"use strict";var Y=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)}}},_t=[{property:"name",enumerable:!1},{property:"message",enumerable:!1},{property:"stack",enumerable:!1},{property:"code",enumerable:!0}],W=Symbol(".toJSON called"),Pt=e=>{e[W]=!0;let t=e.toJSON();return delete e[W],t},H=({from:e,seen:t,to_:r,forceEnumerable:n,maxDepth:i,depth:a})=>{let o=r||(Array.isArray(e)?[]:{});if(t.push(e),a>=i)return o;if(typeof e.toJSON=="function"&&e[W]!==!0)return Pt(e);for(let[u,s]of Object.entries(e)){if(typeof Buffer=="function"&&Buffer.isBuffer(s)){o[u]="[object Buffer]";continue}if(typeof s!="function"){if(!s||typeof s!="object"){o[u]=s;continue}if(!t.includes(e[u])){a++,o[u]=H({from:e[u],seen:t.slice(),forceEnumerable:n,maxDepth:i,depth:a});continue}o[u]="[Circular]"}}for(let{property:u,enumerable:s}of _t)typeof e[u]=="string"&&Object.defineProperty(o,u,{value:e[u],enumerable:n?!0:s,configurable:!0,writable:!0});return o},wt=(e,t={})=>{let{maxDepth:r=Number.POSITIVE_INFINITY}=t;return typeof e=="object"&&e!==null?H({from:e,seen:[],forceEnumerable:!0,maxDepth:r,depth:0}):typeof e=="function"?`[Function: ${e.name||"anonymous"}]`:e},vt=(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 H({from:e,seen:[],to_:n,maxDepth:r,depth:0}),n}return new Y(e)};Re.exports={serializeError:wt,deserializeError:vt}});var ae=(n=>(n.ApplePay="APPLE_PAY",n.SamsungPay="SAMSUNG_PAY",n.GooglePay="GOOGLE_PAY",n))(ae||{});var N=function(){return N=Object.assign||function(t){for(var r,n=1,i=arguments.length;n<i;n++){r=arguments[n];for(var a in r)Object.prototype.hasOwnProperty.call(r,a)&&(t[a]=r[a])}return t},N.apply(this,arguments)};function se(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 ue(e,t,r){if(r||arguments.length===2)for(var n=0,i=t.length,a;n<i;n++)(a||!(n in t))&&(a||(a=Array.prototype.slice.call(t,0,n)),a[n]=t[n]);return e.concat(a||Array.prototype.slice.call(t))}function yt(e,t){return function(r,n){return Object.prototype.hasOwnProperty.call(r,n)}(e,t)?e[t]:void 0}function mt(e,t,r,n){var i,a=document,o="securitypolicyviolation",u=function(f){var c=new URL(e,location.href),l=f.blockedURI;l!==c.href&&l!==c.protocol.slice(0,-1)&&l!==c.origin||(i=f,s())};a.addEventListener(o,u);var s=function(){return a.removeEventListener(o,u)};return n==null||n.then(s,s),Promise.resolve().then(t).then(function(f){return s(),f},function(f){return new Promise(function(c){var l=new MessageChannel;l.port1.onmessage=function(){return c()},l.port2.postMessage(null)}).then(function(){if(s(),i)return r(i);throw f})})}var ce={default:"endpoint"};var le="Blocked by CSP",fe="The endpoint parameter is not a valid URL";var gt="API key required";var ht="3.11.4",K="Failed to load the JS script of the agent",B="9319";function Rt(e,t){var r,n,i,a,o,u,s,f=[],c=(r=function(d){var m=ue([],d,!0);return{current:function(){return m[0]},postpone:function(){var h=m.shift();h!==void 0&&m.push(h)},exclude:function(){m.shift()}}}(e),a=100,o=3e3,u=0,n=function(){return Math.random()*Math.min(o,a*Math.pow(2,u++))},i=new Set,[r.current(),function(d,m){var h,b=m instanceof Error?m.message:"";if(b===le||b===fe)r.exclude(),h=0;else if(b===B)r.exclude();else if(b===K){var O=Date.now()-d.getTime()<50,P=r.current();P&&O&&!i.has(P)&&(i.add(P),h=0),r.postpone()}else r.postpone();var T=r.current();return T===void 0?void 0:[T,h!=null?h:d.getTime()+n()-Date.now()]}]),l=c[0],p=c[1];if(l===void 0)return Promise.reject(new TypeError("The list of script URL patterns is empty"));var y=function(d){var m=new Date,h=function(O){return f.push({url:d,startedAt:m,finishedAt:new Date,error:O})},b=t(d);return b.then(function(){return h()},h),b.catch(function(O){if(s!=null||(s=O),f.length>=5)throw s;var P=p(m,O);if(!P)throw s;var T,tt=P[0],rt=P[1];return(T=rt,new Promise(function(nt){return setTimeout(nt,T)})).then(function(){return y(tt)})})};return y(l).then(function(d){return[d,f]})}var pe="https://fpnpmcdn.net/v<version>/<apiKey>/loader_v<loaderVersion>.js",de=pe;function ye(e){var t;e.scriptUrlPattern;var r=e.token,n=e.apiKey,i=n===void 0?r:n,a=se(e,["scriptUrlPattern","token","apiKey"]),o=(t=yt(e,"scriptUrlPattern"))!==null&&t!==void 0?t:pe,u=function(){var c=[],l=function(){c.push({time:new Date,state:document.visibilityState})},p=function(y,d,m,h){return y.addEventListener(d,m,h),function(){return y.removeEventListener(d,m,h)}}(document,"visibilitychange",l);return l(),[c,p]}(),s=u[0],f=u[1];return Promise.resolve().then(function(){if(!i||typeof i!="string")throw new Error(gt);var c=function(l,p){return(Array.isArray(l)?l:[l]).map(function(y){return function(d,m){var h=encodeURIComponent;return d.replace(/<[^<>]+>/g,function(b){return b==="<version>"?"3":b==="<apiKey>"?h(m):b==="<loaderVersion>"?h(ht):b})}(String(y),p)})}(o,i);return Rt(c,bt)}).catch(function(c){throw f(),function(l){return l instanceof Error&&l.message===B?new Error(K):l}(c)}).then(function(c){var l=c[0],p=c[1];return f(),l.load(N(N({},a),{ldi:{attempts:p,visibilityStates:s}}))})}function bt(e){return mt(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(s){if(s instanceof Error&&s.name==="TypeError")return!0;throw s}}(t))throw new Error(fe);var i=document.createElement("script"),a=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(){a(),r()},i.onerror=function(){a(),n(new Error(K))},i.async=!0,i.src=t,o.appendChild(i)})}(e)},function(){throw new Error(le)}).then(Et)}function Et(){var e=window,t="__fpjs_p_l_b",r=e[t];if(function(n,i){var a,o=(a=Object.getOwnPropertyDescriptor)===null||a===void 0?void 0:a.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(B);return r}var J,q;function me(e){let t="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",r="";for(let n=0;n<e;n++)r+=t.charAt(Math.floor(Math.random()*t.length));return r}function ge(t){return g(this,arguments,function*({config:e}){return yield ye({apiKey:e.publicKey,endpoint:[e.endpoint,ce],scriptUrlPattern:[e.scriptUrlPattern,de],region:"eu"})})}function he(n){return g(this,arguments,function*({config:e,clientId:t,agent:r}){if((e==null?void 0:e.disabled)===!0){let a={disabled:!0,emulated:!1,fingerprintDetails:{timestamp:new Date().toISOString(),requestId:"",visitorId:""}};return btoa(JSON.stringify(a))}if((e==null?void 0:e.disabled)===!1&&(e!=null&&e.useEmulation)&&(t!=null&&t.startsWith("test"))){let a={disabled:!1,emulated:!0,fingerprintDetails:{timestamp:new Date().toISOString(),requestId:`${Date.now()}.${me(6)}`,visitorId:me(20)}};return btoa(JSON.stringify(a))}if(r!==void 0&&(e==null?void 0:e.disabled)===!1){let a=Date.now();if(J!==void 0&&q!==void 0&&a-q<e.cacheDurationInSeconds*1e3)return btoa(JSON.stringify(J));try{let o=yield r.get(),u={disabled:!1,emulated:!1,fingerprintDetails:{timestamp:new Date().toISOString(),requestId:o.requestId,visitorId:o.visitorId}};return J=u,q=a,btoa(JSON.stringify(u))}catch(o){let u={error:{outcome:"Failed",message:`Error: ${JSON.stringify(o)}`}};return btoa(JSON.stringify(u))}}return btoa(JSON.stringify({error:{outcome:"Failed",message:"Attempted to get fingerprint data but either runtime config or the agent are not present"}}))})}var Ee=dt(be());import{v4 as Ot}from"uuid";var Se="https://analytics.stitch.money/query",_e,At,Pe;function we(e={}){let{loggingUrl:t}=e;t!==void 0&&(Se=t),_e=Ot(),Pe=e.version}function ve(e,t,r){return g(this,null,function*(){try{yield fetch(Se,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({type:"LOG_ERROR",error:{message:e,error:JSON.stringify((0,Ee.serializeError)(t)),metadata:k({version:Pe,sessionId:_e,source:At},r)}})})}catch(n){}})}function It(e){return typeof e=="number"}function Tt(e){return typeof e=="string"}function Nt(e){return typeof e=="bigint"}function Ae(e){return!!e&&Object.prototype.toString.call(e)==="[object Date]"&&!isNaN(e)}function Ie(e){return e!=null&&typeof e=="object"&&Object.prototype.toString.call(e)==="[object Object]"}var Te=new WeakSet;function C(e){return Te.add(e),e}function Ne(e,t){return C({type:"object",fields:e,text:t})}function Ct(e,t){return C({type:"array",items:e,text:t})}function $(e,t){return C({type:"opaque",value:e,text:t})}function Dt(e,t){return C({type:"scalar",value:e,text:t})}function Ce(e,t){return t!==void 0?C(oe(k({},e),{text:t})):e}function De(e,t){let r=new Map([...e.fields,...t]);return Ne(r,e.text)}function Me(e){return Te.has(e)}function Mt(e,t,r){r.add(e);let n=[];for(let i of e)n.push(Q(i,void 0,r));return Ct(n,t)}function xe(e,t,r){r.add(e);let n=new Map;for(let i of Object.keys(e)){let a=e[i];n.set(i,Q(a,void 0,r))}return Ne(n,t)}function Q(e,t,r){return e==null||typeof e=="string"||typeof e=="number"||typeof e=="boolean"||typeof e=="symbol"||typeof e.getMonth=="function"?Dt(e,t):Me(e)?Ce(e,t):Array.isArray(e)?r.has(e)?$("<circular ref>",t):Mt(e,t,r):Ie(e)?r.has(e)?$("<circular ref>",t):xe(e,t,r):$(typeof e=="function"?"<function>":"???",t)}function w(e,t){return Q(e,t,new WeakSet)}function je(e,t){return xe(e,t,new WeakSet)}var v=" ";function Z(e){return e.indexOf(`
|
|
3
3
|
`)>=0}function ee(e,t=v){return Z(e)?e.split(`
|
|
4
4
|
`).map(r=>`${t}${r}`).join(`
|
|
5
|
-
`):`${t}${e}`}var
|
|
6
|
-
`)}function
|
|
7
|
-
`)}function
|
|
8
|
-
`:" ")]}else return[r,void 0]}function
|
|
9
|
-
${r}`:t}function
|
|
10
|
-
`)}function
|
|
11
|
-
${r}`);return n.name="Decoding error",n}else return r}function R(e){function t(c){return e(c,
|
|
12
|
-
`;function
|
|
5
|
+
`):`${t}${e}`}var xt=/'/g;function A(e){return typeof e=="string"?"'"+e.replace(xt,"\\'")+"'":JSON.stringify(e)}function F(e,t=[]){let r=[];if(e.type==="array"){let a=e.items,o=0;for(let u of a)for(let s of F(u,[...t,o++]))r.push(s)}else if(e.type==="object"){let a=e.fields;for(let[o,u]of a)for(let s of F(u,[...t,o]))r.push(s)}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 ${A(t[0])}: `:i=`Value at keypath ${A(t.map(String).join("."))}: `,[...r,`${i}${n}`]}function jt(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 kt(e,t){let{items:r}=e;if(r.length===0)return"[]";let n=[];for(let i of r){let[a,o]=te(i,`${t}${v}`);n.push(`${t}${v}${a},`),o!==void 0&&n.push(ee(o,`${t}${v}`))}return["[",...n,`${t}]`].join(`
|
|
6
|
+
`)}function $t(e,t){let{fields:r}=e;if(r.size===0)return"{}";let n=[];for(let[i,a]of r){let o=ke(i),u=`${t}${v}${" ".repeat(o.length+2)}`,[s,f]=te(a,`${t}${v}`);n.push(`${t}${v}${o}: ${s},`),f!==void 0&&n.push(ee(f,u))}return["{",...n,`${t}}`].join(`
|
|
7
|
+
`)}function ke(e){return typeof e=="string"?jt(e):typeof e=="number"||typeof e=="boolean"||typeof e=="symbol"?e.toString():e===null?"null":e===void 0?"undefined":Ae(e)?`new Date(${A(e.toISOString())})`:e instanceof Date?"(Invalid Date)":"(unserializable)"}function te(e,t=""){let r;e.type==="array"?r=kt(e,t):e.type==="object"?r=$t(e,t):e.type==="scalar"?r=ke(e.value):r=e.value;let n=e.text;if(n!==void 0){let i="^".repeat(Z(r)?1:r.length);return[r,[i,n].join(Z(n)?`
|
|
8
|
+
`:" ")]}else return[r,void 0]}function Ft(e){let[t,r]=te(e);return r!==void 0?`${t}
|
|
9
|
+
${r}`:t}function Ut(e){return F(e,[]).join(`
|
|
10
|
+
`)}function $e(e){return{ok:!0,value:e,error:void 0}}function Fe(e){return{ok:!1,value:void 0,error:e}}function Lt(e){return t=>{try{let r=e(t);return $e(r)}catch(r){return Fe(w(t,r instanceof Error?r.message:String(r)))}}}function Vt(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(c){return e(c,$e,l=>Fe(Me(l)?l:w(c,l)))}function r(c,l=Ft){let p=t(c);if(p.ok)return p.value;throw Vt(p.error,l)}function n(c){return t(c).value}function i(c){return o(Lt(c))}function a(c,l){return s(p=>c(p)?null:l)}function o(c){return R((l,p,y)=>{let d=t(l);if(!d.ok)return d;let m=Oe(c)?c:c(d.value,p,y);return Oe(m)?m.decode(d.value):m})}function u(c){return o(c)}function s(c){return o((l,p,y)=>{let d=c(l);return d===null?p(l):y(typeof d=="string"?w(l,d):d)})}function f(c){return R((l,p,y)=>{let d=t(l);return d.ok?d:y(w(d.error,c))})}return Gt({verify:r,value:n,decode:t,transform:i,refine:a,reject:s,describe:f,then:o,pipe:u})}var Ue=new WeakSet;function Gt(e){return Ue.add(e),e}function Oe(e){return Ue.has(e)}var zt=R((e,t,r)=>Array.isArray(e)?t(e):r("Must be an array"));function Kt(e,t,r,n){let i=[];for(let a=0;a<e.length;++a){let o=e[a];if(o.ok)i.push(o.value);else{let u=o.error,s=t.slice();return s.splice(a,1,w(u,u.text?`${u.text} (at index ${a})`:`index ${a}`)),n(w(s))}}return r(i)}function Bt(e){let t=e.decode;return zt.then((r,n,i)=>{let a=r.map(t);return Kt(a,r,n,i)})}function Jt(e){return R((t,r,n)=>t instanceof e?r(t):n(`Must be ${e.name} instance`))}function Le(e){return R(t=>e().decode(t))}function qt(e,t){let r=new Set;for(let n of e)t.has(n)||r.add(n);return r}var Ve=R((e,t,r)=>Ie(e)?t(e):r("Must be an object"));function D(e){let t=new Set(Object.keys(e));return Ve.then((r,n,i)=>{let a=new Set(Object.keys(r)),o=qt(t,a),u={},s=null;for(let f of Object.keys(e)){let c=e[f],l=r[f],p=c.decode(l);if(p.ok){let y=p.value;y!==void 0&&(u[f]=y),o.delete(f)}else{let y=p.error;l===void 0?o.add(f):(s===null&&(s=new Map),s.set(f,y))}}if(s||o.size>0){let f=je(r);if(s&&(f=De(f,s)),o.size>0){let c=Array.from(o).map(A).join(", "),l=o.size>1?"keys":"key";f=Ce(f,`Missing ${l}: ${c}`)}return i(f)}return n(u)})}var X=`Either:
|
|
12
|
+
`;function Yt(e){return`-${ee(e).substring(1)}`}function Wt(e){return e.startsWith(X)?e.substring(X.length):Yt(e)}function re(...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 a=X+i.map(o=>Wt(F(o).join(`
|
|
13
13
|
`))).join(`
|
|
14
|
-
`);return n(a)})}var
|
|
14
|
+
`);return n(a)})}var Ht=Ge(null),_r=Ge(void 0),Pr=R((e,t,r)=>e==null?t(e):r("Must be undefined or null"));function Ge(e){return R((t,r,n)=>t===e?r(e):n(`Must be ${typeof e=="symbol"?String(e):A(e)}`))}var wr=R((e,t,r)=>t(e));var U=R((e,t,r)=>typeof e=="boolean"?t(e):r("Must be boolean")),vr=R((e,t,r)=>t(!!e));function Zt(e,t){let r=t!==void 0?e:void 0,n=t!==void 0?t:e;return Ve.then((i,a,o)=>{var f;let u={},s=new Map;for(let c of Object.keys(i)){let l=i[c],p=r==null?void 0:r.decode(c);if((p==null?void 0:p.ok)===!1)return o(w(i,`Invalid key ${A(c)}: ${Ut(p.error)}`));let y=(f=p==null?void 0:p.value)!=null?f:c,d=n.decode(l);d.ok?s.size===0&&(u[y]=d.value):(s.set(c,d.error),u={})}return s.size>0?o(De(je(i),s)):a(u)})}var Xt=/^([A-Za-z]{3,9}(?:[+][A-Za-z]{3,9})?):\/\/(?:([-;:&=+$,\w]+)@)?(?:([A-Za-z0-9.-]+)(?::([0-9]{2,5}))?)(\/(?:[-+~%/.,\w]*)?(?:\?[-+=&;%@.,/\w]*)?(?:#[.,!/\w]*)?)?$/,ze=R((e,t,r)=>Tt(e)?t(e):r("Must be string")),I=_(/\S/,"Must be non-empty string");function _(e,t){return ze.refine(r=>e.test(r),t)}var Or=_(/^(([^<>()[\]\\.,;:\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"),Qt=re(_(Xt,"Must be URL").transform(e=>new URL(e)),Jt(URL)),Ar=Qt.refine(e=>e.protocol==="https:","Must be an HTTPS URL"),Ir=_(/^[a-z_][a-z0-9_]*$/i,"Must be valid identifier");var Ke=_(/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i,"Must be uuid"),Tr=Ke.refine(e=>e[14]==="1","Must be uuidv1"),Nr=Ke.refine(e=>e[14]==="4","Must be uuidv4"),er=_(/^[0-9]+$/,"Must only contain digits"),Cr=_(/^[0-9a-f]+$/i,"Must only contain hexadecimal digits"),Dr=er.transform(Number),tr=/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:[.]\d+)?(?:Z|[+-]\d{2}:?\d{2})$/,rr=R((e,t,r)=>Ae(e)?t(e):r("Must be a Date")),nr=_(tr,"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}),Mr=re(rr,nr).describe("Must be a Date or date string"),ir=R((e,t,r)=>It(e)?t(e):r("Must be number")),M=ir.refine(e=>Number.isFinite(e),"Number must be finite"),or=M.refine(e=>Number.isInteger(e),"Number must be an integer"),Be=M.refine(e=>e>=0&&!Object.is(e,-0),"Number must be positive"),xr=or.refine(e=>e>=0&&!Object.is(e,-0),"Number must be positive"),jr=R((e,t,r)=>Nt(e)?t(e):r("Must be bigint")),ar=Le(()=>Zt(Je)),sr=Le(()=>Bt(Je)),Je=re(Ht,ze,M,U,ar,sr).describe("Must be valid JSON value");var L=3,qe=500,ur=D({analytics:D({changeEventDebounceDelayMs:Be}),evervault:D({teamId:I,appId:I}),fingerprint:D({disabled:U,useEmulation:U,publicKey:I,endpoint:I,scriptUrlPattern:I,cacheDurationInSeconds:M})});function x(e,t){return g(this,null,function*(){try{let r=0;for(;r<L;)try{let n=yield fetch(`https://public-keys.stitch.money/${e}`,{signal:t});if(n.ok)return{type:"success",runtimeConfig:ur.verify(yield n.json())};if(r++,r===L)return{type:"error",error:new Error(`[${x.name}] Failed to retrieve runtime config after ${L} attempts. public-keys worker returned ${n.status} response`)};yield new Promise(i=>setTimeout(i,qe))}catch(n){if(r++,r===L)throw n;yield new Promise(i=>setTimeout(i,qe))}return{type:"error",error:new Error(`[${x.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(`[${x.name}] Failed to retrieve runtime config. Unknown error thrown`)}}})}import{v4 as fr}from"uuid";var cr="9ba67dd8d5b247cfb3f76e",V={version:"2",serviceId:cr,protocol:"PROTOCOL_3DS",allowedBrands:["visa","mastercard"]};function Ye(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}}}]}}function We(){return window.ApplePaySession?ApplePaySession.canMakePayments():!1}function He(){if(!window.ApplePaySession)return-1;let t=r=>r===0?-1:ApplePaySession.supportsVersion(r)?r:t(r-1);return t(14)}function Ze(e,t){return g(this,null,function*(){if(!e||!t)return!0;try{return(yield e.isReadyToPay(Ye(t))).result}catch(r){return!1}})}function Xe(e){return g(this,null,function*(){if(!e)return!1;try{return(yield e.isReadyToPay(V)).result}catch(t){return!1}})}var S=class extends Error{constructor(t){super(t),this.name="SessionError"}};var j=e=>e instanceof Error?e.toString():JSON.stringify(e);var Qe="2.2.0";var et=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");we({source:"wallets-client",version:Qe});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:fr()}):void 0,this.onCancelPayment=r!=null?r:()=>{},this.clientId=n,this.gatewayMerchantId=i,this.loadFingerprintAgent()}loadRuntimeConfig(){return g(this,null,function*(){var t,r;if(this.runtimeConfig===void 0&&this.clientId){let n=yield x(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 ve(i,n.error,{clientId:this.clientId,hostname:window.parent.origin}),n.error?n.error:new Error(i)}this.runtimeConfig=n.runtimeConfig}})}loadFingerprintAgent(){return g(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 ge({config:this.runtimeConfig.fingerprint})))})}fingerprint(){return g(this,null,function*(){var r;return yield he({config:(r=this.runtimeConfig)==null?void 0:r.fingerprint,agent:this.fingerprintAgent,clientId:this.clientId})})}supportedPaymentMethods(){return g(this,null,function*(){let t=[];return this.applePayIsSupported=We(),this.applePayIsSupported&&t.push("APPLE_PAY"),this.samsungPayIsSupported=yield Xe(this.samsungPayClient),this.samsungPayIsSupported&&t.push("SAMSUNG_PAY"),this.googlePayIsSupported=yield Ze(this.googlePayClient,this.gatewayMerchantId),this.googlePayIsSupported&&t.push("GOOGLE_PAY"),t})}onClickApplePaySessionHandler(t,r,n,i,a,o){let u=He();return()=>{var c,l;let s={countryCode:"ZA",currencyCode:t,supportedNetworks:["visa","masterCard"],merchantCapabilities:["supports3DS"],total:{label:n,amount:r.toString()}};o&&(s.recurringPaymentRequest={paymentDescription:n,billingAgreement:o.billingAgreement,regularBilling:{label:n,amount:((c=o.recurringAmount)!=null?c:r).toString(),paymentTiming:"recurring",recurringPaymentIntervalUnit:o.recurringIntervalUnit,recurringPaymentIntervalCount:(l=o.recurringIntervalCount)!=null?l:1},managementURL:o.managementUrl});let f=new ApplePaySession(u,s);f.onvalidatemerchant=p=>g(this,null,function*(){try{let y=yield i(p.validationURL);f.completeMerchantValidation(y)}catch(y){throw new S(`Failed to complete merchant validation: ${j(y)}`)}}),f.onpaymentauthorized=p=>g(this,null,function*(){try{let y=p.payment.token,d=yield this.fingerprint(),m=yield a(y,d);switch(m.status){case"TransactionPending":case"TransactionSuccess":{f.completePayment(ApplePaySession.STATUS_SUCCESS);break}case"TransactionFailure":{f.completePayment(ApplePaySession.STATUS_FAILURE);break}default:throw new S(`Invalid transaction status: ${m.status}`)}}catch(y){throw f.completePayment(ApplePaySession.STATUS_FAILURE),new S(`Failed to create payment: ${j(y)}`)}}),f.oncancel=()=>{this.onCancelPayment()},f.begin()}}onClickSamsungPaySessionHandler(t,r,n,i,a,o,u){return()=>g(this,null,function*(){if(!this.samsungPayClient)throw new Error("Samsung Pay client not initialized");try{let s={orderNumber:i,merchant:{name:n,url:a,id:o,countryCode:"ZA"},amount:{option:"FORMAT_TOTAL_PRICE_ONLY",currency:t,total:r}},f=yield this.fingerprint(),c=yield this.samsungPayClient.loadPaymentSheet(V,s),l=yield u(c,f);switch(l.status){case"TransactionPending":break;case"TransactionFailure":{this.samsungPayClient.notify({status:"REJECTED"});break}case"TransactionSuccess":{this.samsungPayClient.notify({status:"CHARGED"});break}default:throw this.samsungPayClient.notify({status:"ERRED"}),new S(`Invalid transaction status: ${l.status}`)}}catch(s){throw new S(`Failed to create payment: ${j(s)}`)}})}onClickGooglePaySessionHandler(t){return r=>g(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:throw new S(`Invalid transaction status: ${i.status}`)}}catch(n){throw new S(`Failed to create payment: ${j(n)}`)}})}};export{et as StitchWalletClientSdk,ae as WalletType};
|
|
15
15
|
//# sourceMappingURL=index.js.map
|
package/build/index.js.map
CHANGED
|
@@ -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","../../../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"],"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}: {\n config: RuntimeConfig['fingerprint'] | undefined;\n clientId: string | undefined;\n agent: Agent | undefined;\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 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\nlet stitchLoggingUrl = 'https://analytics.stitch.money/query';\nlet sessionId: string | undefined;\nlet source: string | undefined;\n\nexport interface LoggerOptions {\n loggingUrl?: string;\n source?: string;\n}\n\nexport function configure(options: LoggerOptions = {}): void {\n const { loggingUrl } = options;\n if (loggingUrl !== undefined) {\n stitchLoggingUrl = loggingUrl;\n }\n sessionId = self.crypto.randomUUID();\n}\n\nexport interface BaseMetadata {\n sessionId?: string;\n clientId?: string;\n source?: string;\n hostname?: 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\nexport interface Event {\n message: string;\n metadata?: Metadata;\n}\n\nexport async function logEvent(message: string, metadata: Metadata): Promise<void> {\n try {\n await fetch(stitchLoggingUrl, {\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 sessionId,\n source,\n ...metadata,\n },\n },\n }),\n });\n } catch (error) {\n try {\n await logError(`[${logEvent.name}] 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(stitchLoggingUrl, {\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: JSON.stringify(serializeError(error)),\n metadata: {\n sessionId,\n source,\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","// 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 { 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';\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 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 = new window.SamsungPay.PaymentClient({\n environment: clientId?.startsWith('test-') ? 'STAGE' : 'PRODUCTION',\n nonce: v4(),\n });\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 hostname: window.parent.origin,\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() {\n const data = await getFingerprintData({\n config: this.runtimeConfig?.fingerprint,\n agent: this.fingerprintAgent,\n clientId: this.clientId,\n });\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 const session = new ApplePaySession(version, request);\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 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 throw new SessionError(\n `Invalid transaction status: ${createPaymentCallbackResponse.status}`,\n );\n }\n }\n } catch (error) {\n session.completePayment(ApplePaySession.STATUS_FAILURE);\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 throw new Error('Samsung Pay client not initialized');\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 throw new SessionError(\n `Invalid transaction status: ${createPaymentCallbackResponse.status}`,\n );\n }\n }\n } catch (error) {\n throw new SessionError(`Failed to create payment: ${getErrorAsString(error)}`);\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 throw new SessionError(\n `Invalid transaction status: ${createPaymentCallbackResponse.status}`,\n );\n }\n }\n } catch (error) {\n throw new SessionError(`Failed to create payment: ${getErrorAsString(error)}`);\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: ['PAN_ONLY', '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 };\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 true;\n }\n try {\n const response = await client.isReadyToPay(\n generateGooglePayIsReadyToPayRequest(gatewayMerchantId),\n );\n return response.result;\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"],"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","i","u","R","c","s","E","__spreadArray","e","a","f","l","d","v","r","K","B","F","__rest","I","V","__assign","k","lastFingerprintResult","lastFingerprintTimestamp","generateRandomId","length","chars","result","i","getFingerprintAgent","_0","__async","config","F","B","getFingerprintData","clientId","agent","data","now","error","import_serialize_error","stitchLoggingUrl","sessionId","source","logError","message","error","metadata","__async","stitchLoggingUrl","__spreadValues","sessionId","source","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","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","generateGooglePayIsReadyToPayRequest","e","determineSamsungPaySupport","SAMSUNG_PAY_PAYMENT_METHODS","SessionError","message","getErrorAsString","error","StitchWalletClientSdk","initialisationProperties","__publicField","onCancelPayment","clientId","gatewayMerchantId","v4","__async","_a","_b","configResult","getRuntimeConfig","errorMessage","logError","getFingerprintAgent","getFingerprintData","supportedWallets","determineApplePaySupport","determineSamsungPaySupport","determineGooglePaySupport","currency","amount","label","verifyCallback","createPaymentCallback","recurringPaymentOptions","version","getApplePayVersion","request","session","event","verifyCallbackResponse","error","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","../../../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}: {\n config: RuntimeConfig['fingerprint'] | undefined;\n clientId: string | undefined;\n agent: Agent | undefined;\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 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';\nimport { v4 as uuidv4 } from 'uuid';\n\nlet stitchLoggingUrl = 'https://analytics.stitch.money/query';\nlet sessionId: string | undefined;\nlet source: string | undefined;\nlet version: string | undefined;\n\nexport interface LoggerOptions {\n loggingUrl?: string;\n source?: string;\n version?: string;\n}\n\nexport function configure(options: LoggerOptions = {}): void {\n const { loggingUrl } = options;\n if (loggingUrl !== undefined) {\n stitchLoggingUrl = loggingUrl;\n }\n sessionId = uuidv4();\n version = options.version;\n}\n\nexport interface BaseMetadata {\n version?: string;\n sessionId?: string;\n clientId?: string;\n source?: string;\n hostname?: 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\nexport interface Event {\n message: string;\n metadata?: Metadata;\n}\n\nexport async function logEvent(message: string, metadata: Metadata): Promise<void> {\n try {\n await fetch(stitchLoggingUrl, {\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 version,\n sessionId,\n source,\n ...metadata,\n },\n },\n }),\n });\n } catch (error) {\n try {\n await logError(`[${logEvent.name}] 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(stitchLoggingUrl, {\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: JSON.stringify(serializeError(error)),\n metadata: {\n version,\n sessionId,\n source,\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","// 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\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 hostname: window.parent.origin,\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() {\n const data = await getFingerprintData({\n config: this.runtimeConfig?.fingerprint,\n agent: this.fingerprintAgent,\n clientId: this.clientId,\n });\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 const session = new ApplePaySession(version, request);\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 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 throw new SessionError(\n `Invalid transaction status: ${createPaymentCallbackResponse.status}`,\n );\n }\n }\n } catch (error) {\n session.completePayment(ApplePaySession.STATUS_FAILURE);\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 throw new Error('Samsung Pay client not initialized');\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 throw new SessionError(\n `Invalid transaction status: ${createPaymentCallbackResponse.status}`,\n );\n }\n }\n } catch (error) {\n throw new SessionError(`Failed to create payment: ${getErrorAsString(error)}`);\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 throw new SessionError(\n `Invalid transaction status: ${createPaymentCallbackResponse.status}`,\n );\n }\n }\n } catch (error) {\n throw new SessionError(`Failed to create payment: ${getErrorAsString(error)}`);\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 };\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 true;\n }\n try {\n const response = await client.isReadyToPay(\n generateGooglePayIsReadyToPayRequest(gatewayMerchantId),\n );\n return response.result;\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","{\n \"name\": \"@stitch-money/client\",\n \"version\": \"2.2.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-tsconfig-paths\": \"4.3.1\",\n \"vitest\": \"1.3.1\"\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","u","R","c","s","E","__spreadArray","e","a","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","data","now","error","import_serialize_error","uuidv4","stitchLoggingUrl","sessionId","source","version","configure","options","loggingUrl","uuidv4","logError","message","error","metadata","__async","stitchLoggingUrl","__spreadValues","version","sessionId","source","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","generateGooglePayIsReadyToPayRequest","e","determineSamsungPaySupport","SAMSUNG_PAY_PAYMENT_METHODS","SessionError","message","getErrorAsString","error","version","StitchWalletClientSdk","initialisationProperties","__publicField","configure","version","onCancelPayment","clientId","gatewayMerchantId","v4","__async","_a","_b","configResult","getRuntimeConfig","errorMessage","logError","getFingerprintAgent","getFingerprintData","supportedWallets","determineApplePaySupport","determineSamsungPaySupport","determineGooglePaySupport","currency","amount","label","verifyCallback","createPaymentCallback","recurringPaymentOptions","getApplePayVersion","request","session","event","verifyCallbackResponse","error","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": "2.
|
|
3
|
+
"version": "2.2.0",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "JavaScript package for the Stitch SDK",
|
|
6
6
|
"repository": {
|
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
"vitest": "1.3.1",
|
|
29
29
|
"eslint-config-stitch": "0.0.0",
|
|
30
30
|
"fingerprint-stitch": "^0.0.0",
|
|
31
|
-
"logger-stitch": "^0.1.
|
|
31
|
+
"logger-stitch": "^0.1.1",
|
|
32
32
|
"runtime-config-stitch": "^0.0.0",
|
|
33
33
|
"tsconfig-stitch": "0.0.0"
|
|
34
34
|
},
|