@primer-io/checkout-web 2.50.2 → 2.50.4

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/LICENSE.md ADDED
@@ -0,0 +1,28 @@
1
+ BSD 3-Clause License
2
+
3
+ Copyright (c) 2021 Primer API Ltd, All rights reserved.
4
+
5
+ Redistribution and use in source and binary forms, with or without
6
+ modification, are permitted provided that the following conditions are met:
7
+
8
+ - Redistributions of source code must retain the above copyright notice, this
9
+ list of conditions and the following disclaimer.
10
+
11
+ - Redistributions in binary form must reproduce the above copyright notice,
12
+ this list of conditions and the following disclaimer in the documentation
13
+ and/or other materials provided with the distribution.
14
+
15
+ - Neither the name of the copyright holder nor the names of its
16
+ contributors may be used to endorse or promote products derived from
17
+ this software without specific prior written permission.
18
+
19
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
20
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
21
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
22
+ DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
23
+ FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
24
+ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
25
+ SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
26
+ CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
27
+ OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
28
+ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
package/dist/Primer.js CHANGED
@@ -1,2 +1,2 @@
1
- (function(M,T){typeof exports=="object"&&typeof module=="object"?module.exports=T():typeof define=="function"&&define.amd?define([],T):typeof exports=="object"?exports.Primer=T():M.Primer=T()})(this,()=>(()=>{var ee={189:()=>{},367:()=>{},56:()=>{}},M={};function T(R){var u=M[R];if(u!==void 0)return u.exports;var O=M[R]={exports:{}};return ee[R](O,O.exports,T),O.exports}T.d=(R,u)=>{for(var O in u)T.o(u,O)&&!T.o(R,O)&&Object.defineProperty(R,O,{enumerable:!0,get:u[O]})},T.o=(R,u)=>Object.prototype.hasOwnProperty.call(R,u),T.r=R=>{typeof Symbol<"u"&&Symbol.toStringTag&&Object.defineProperty(R,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(R,"__esModule",{value:!0})};var B={};return(()=>{"use strict";T.r(B),T.d(B,{CheckoutUXFlow:()=>Ke,ErrorCode:()=>ze,EventTypes:()=>Qe,HeadlessManagerType:()=>Ze,PaymentFlow:()=>We,PaymentInstrumentType:()=>w,PaymentMethodData:()=>nr.PaymentMethodData,PaymentMethodType:()=>p,Primer:()=>ir,SuccessScreenType:()=>Xe,ThreeDSecureStatus:()=>$e,TokenType:()=>rr,isStripeOptionsDropInWithFullMandateText:()=>or});const R={LEGACY:"legacy",V_2_4:"2.4"},u=R.LEGACY;let O=u;function qe(e){e||console.warn(`[Primer SDK] No API version was explicitly set. Defaulting to '${u}'.`),O=e??u}function Je(){return O}class D extends Error{constructor(t,r=!1){super(t),this.isReported=r,this.name=this.constructor.name,Error.captureStackTrace&&Error.captureStackTrace(this,this.constructor)}static from(t,r=!1){if(t instanceof D)return t;const n=t instanceof Error?t.message:String(t),o=new D(n,r);return t instanceof Error&&t.stack&&(o.stack=t.stack,Object.assign(o,t)),o}markAsReported(){this.isReported=!0}}const te="https://analytics.production.data.primer.io/sdk-logs";var ar=T(189),Er=T(367),v=(e=>(e.REQUEST_START="REQUEST_START",e.REQUEST_END="REQUEST_END",e))(v||{}),b=(e=>(e.START="START",e.END="END",e))(b||{});const H={createHeadless:"HEADLESS_LOADING",showUniversalCheckout:"DROP_IN_LOADING",showVaultManager:"VAULT_MANAGER_LOADING",preloadPrimer:"PRELOAD_PRIMER_LOADING"};var I=(e=>(e.NETWORK_CALL_EVENT="NETWORK_CALL_EVENT",e.CRASH_EVENT="CRASH_EVENT",e.TIMER_EVENT="TIMER_EVENT",e.MESSAGE_EVENT="MESSAGE_EVENT",e.V1_EVENT="V1_EVENT",e.SDK_FUNCTION_EVENT="SDK_FUNCTION_EVENT",e))(I||{});const et={get(e,t){let r;try{switch(e){case"PRIMER_SDK_VERSION":r="v2.50.2";break;case"PRIMER_ASSETS_URL":r=process.env.PRIMER_ASSETS_URL;break;case"PRIMER_BUILD_INTEGRATION_BUILDER":r=process.env.PRIMER_BUILD_INTEGRATION_BUILDER;break;default:break}}catch{}return r||t}};var tt=(e=>(e.CHARGING="CHARGING",e.NOT_CHARGING="NOT_CHARGING",e))(tt||{});async function rt(){if(typeof navigator>"u"||typeof performance>"u")return;const e=await navigator.getBattery?.();return{memoryFootprint:performance.memory?.usedJSHeapSize,screen:{height:screen?.height,width:screen?.width},userAgent:navigator.userAgent,locale:navigator.language,batteryLevel:e?.level,batteryStatus:e?.charging?"CHARGING":"NOT_CHARGING"}}const nt="WEB",ot=et.get("PRIMER_SDK_VERSION");async function re(e,t,r){return{...r,createdAt:Date.now(),device:await rt(),eventType:e,properties:t,sdkVersion:ot,sdkType:nt}}const ne=Symbol.for("__primerAnalytics__");let C={providers:new Map,timers:new Map,eventsQueue:new Map};if(typeof window<"u"){const e=window[ne];e?C=e:window[ne]=C}const oe=()=>C.providers,x=()=>C.timers,m=()=>C.eventsQueue,ie=500,y=new Map,Ae=64e3,it=5;function F(e,t=!1,r=1){if(y.has(e)){const i=y.get(e);clearTimeout(i),y.delete(e)}const n=()=>{const i=m().get(e);if(i?.length){let A=!0,s=[],_=0,a=0;for(;a<i.length;){const E=i[a],f=JSON.stringify(E),N=new Blob([f]).size;if(N>Ae){console.error("Event size exceeds maximum payload size and will be skipped:",E),a++;continue}if(_+N>Ae&&s.length>0){try{A=navigator.sendBeacon(e,JSON.stringify(s))}catch(P){A=!1,console.error("Unable to send events",P)}if(!A)break;s=[],_=0}s.push(E),_+=N,a++}if(s.length>0&&A)try{A=navigator.sendBeacon(e,JSON.stringify(s))}catch(E){A=!1,console.error("Unable to send events",E)}if(A)m().delete(e);else if(r<it){const E=ie*Math.pow(2,r);setTimeout(()=>F(e,t,r+1),E)}else console.error("Max retry attempts reached. Events will not be sent.")}};if(t){n();return}const o=setTimeout(n,ie);y.set(e,o)}function At(e,t){m().has(e)||m().set(e,[]),m().get(e)?.push(t),F(e)}const se=1024*5;function ae(e,t,r=new WeakSet,n=0,o=10){if(n>o||r.has(e))return e;r.add(e);const i=A=>typeof A=="object"&&A!==null?ae(A,t,r,n+1,o):t(A);return Array.isArray(e)?e.map(i):Object.fromEntries(Object.entries(e).map(([A,s])=>[A,i(s)]))}function st(e){return typeof e=="string"&&e.length>se?`${e.slice(0,se)}...`:e}function at(e){return typeof e=="function"?e.name||"function":e}let Ee=!1;function G({url:e=te,...t}){typeof document<"u"&&!Ee&&(document.addEventListener("visibilitychange",()=>{if(document.visibilityState==="hidden"){const o=l(t.checkoutSessionId);o.messageEvent({messageType:"VISIBILITY_CHANGE",message:"Checkout visibility is hidden (tab or window change, redirect or being closed)."}),F(o.url,!0)}}),Ee=!0);const r=o=>async i=>{if(typeof navigator>"u")return;const A=await re(o,i,t),_=ae(A,a=>st(at(a)));At(e,_)},n={crashEvent:r(I.CRASH_EVENT),messageEvent:r(I.MESSAGE_EVENT),networkCallEvent:r(I.NETWORK_CALL_EVENT),sdkFunctionEvent:r(I.SDK_FUNCTION_EVENT),timerStart:({id:o,...i})=>{const A=`${t.checkoutSessionId}|${o}`,s=performance?.now?performance.now():Date.now();return x().set(A,{start:s}),r(I.TIMER_EVENT)({...i,id:o,timerType:b.START})},timerEnd:({id:o,...i})=>{const A=`${t.checkoutSessionId}|${o}`,{start:s=void 0}=x().get(A)??{};x().delete(A);const _=performance?.now?performance.now():Date.now(),a=s?_-s:void 0;return r(I.TIMER_EVENT)({...i,id:o,timerType:b.END,duration:a})},v1Event:r(I.V1_EVENT),url:e};return oe().set(t.checkoutSessionId,n),l(t.checkoutSessionId)}function l(e){return new Proxy({},{get(t,r){return(oe().get(e)??G({checkoutSessionId:e}))[r]}})}const V=(e,t,r,n)=>({callType:r?v.REQUEST_END:v.REQUEST_START,id:e,errorBody:r?.error&&JSON.stringify(r.error,Object.getOwnPropertyNames(r.error)),method:t.method,responseCode:r?.status,url:t.url,duration:n});function Et(e){return e?new Promise(t=>{setTimeout(t,e)}):Promise.resolve()}const _t=8,ct=100,Tt=100;function Nt(e){return{enabled:e?.enabled??!1,maxRetries:_t,initialBackoff:ct,retryNetworkErrors:!0,retry500Errors:!1,maxJitter:Tt}}function Rt(e,t,r){const n=e*Math.pow(2,t-1),o=Math.random()*r;return Math.min(n+o,Number.MAX_SAFE_INTEGER)}async function _e(e,t,r,n=Et){let o=0;const i=Nt(t);if(!i.enabled)return e();for(;;)try{const A=await e();if(o){let s=`Request succeeded after ${o} retries.`;typeof A=="object"&&A&&"status"in A&&(s+=` Status code: ${A.status}`),r?.({messageType:"RETRY_SUCCESS",message:s,severity:"INFO"})}return A}catch(A){const s=A,_=o>=i.maxRetries,a=s.isNetworkError&&!i.retryNetworkErrors,E=s.status&&s.status>=500&&!i.retry500Errors;if(_||a||E){let P=`Failed after ${o} retries. `;throw _?P+=`Reached maximum retries (${i.maxRetries}).`:a?P+="Network error encountered and retryNetworkErrors is disabled.":E&&(P+="HTTP 500 error encountered and retry500Errors is disabled."),P+=` Last error: ${s.message}`,r?.({messageType:"RETRY_FAILED",message:P,severity:"ERROR",errorBody:JSON.stringify(A,Object.getOwnPropertyNames(A))}),new Error(P,{cause:A})}o++;const f=Rt(i.initialBackoff,o,i.maxJitter);let N="Unknown error";s.isNetworkError?N="Network error":s.status&&(N=`HTTP ${s.status} error`),r?.({messageType:"RETRY",message:`Retry attempt ${o}/${i.maxRetries} due to: ${N}. Error details: ${s.message}. Waiting for ${f.toFixed(2)}ms before next attempt.`,severity:"WARN",errorBody:JSON.stringify(A,Object.getOwnPropertyNames(A))}),await n(f)}}let K={cache:new Map};typeof window<"u"&&(window.__primerCache__??(window.__primerCache__=K),K=window.__primerCache__);const d=()=>K.cache,ce=1e3*60*60,dt=30,Te=50;function Ne(){if(d().size<=dt)return;const e=Date.now();for(const[t,r]of d())r.exp<e&&d().delete(t);if(d().size>Te)for(const[t]of d()){if(d().size<=Te)break;d().delete(t)}}function Pt({key:e,ttl:t=ce},r){t?d().set(e,{promise:Promise.resolve({...r,source:"CACHE"}),exp:Date.now()+t}):d().delete(e)}function ut(e){if(!e)return i=>i();const{key:t,refresh:r=!1,usePrimerSessionCacheTtlHeader:n=!1,ttl:o=ce}=e;return async i=>{const A=Date.now(),s=d().get(t);if(!r&&s&&s.exp>A)return s.promise;s&&d().delete(t);const _=i().then(a=>{let E=o;return n&&(E=(Number(a.headers.get("x-primer-session-cache-ttl"))||0)*1e3),Pt({key:t,ttl:E},a),Ne(),a},a=>{throw d().delete(t),a});return d().set(t,{promise:_,exp:A+o}),Ne(),_}}const W=()=>Re.randomUUID?.()||Ot(),Ot=()=>("10000000-1000-4000-8000"+-1e11).replace(/[018]/g,e=>(e^Dt()>>e/4).toString(16)),Dt=()=>(Re.getRandomValues?.(new Uint8Array(1))[0]??Math.random()*16)&15,Re=typeof crypto<"u"?crypto:{},de=15e3,It=(e,t,r)=>Pe(e,"get",t,r),ft=(e,t,r,n)=>Pe(e,"post",t,n,JSON.stringify(r)),Pe=async(e,t,r,n,o)=>{const i=W(),A=performance?.now();let s=l(e);const _={method:t,url:r,body:o};s.networkCallEvent(V(i,_));try{const a=await fetch(r,{body:o,method:t,headers:{"content-type":"application/json","x-request-id":i,...n}});if(!a.ok){const P=new Error(`HTTP error! status: ${a.status}`);throw P.status=a.status,P}const E=await a.json();if(r.includes("client-sdk/configuration")){const{primerAccountId:P,clientSession:{clientSessionId:Ar,customer:sr}}=E;s=G({checkoutSessionId:e,clientSessionId:Ar,customerId:sr?.customerId,primerAccountId:P,url:s.url})}const N=performance?.now()-A;return s.networkCallEvent(V(i,_,{data:E},N)),{data:E,headers:a.headers,status:a.status,source:"NETWORK"}}catch(a){const f=performance?.now()-A;throw Object.assign(a,{isNetworkError:a instanceof TypeError}),s.networkCallEvent(V(i,_,{error:a},f)),a}},ue=(e,t)=>new Promise((r,n)=>{const o=setTimeout(()=>{const i=new Error("Request timed out");i.isNetworkError=!0,n(i)},t);e.then(r).catch(n).finally(()=>clearTimeout(o))}),lt=(e,t)=>{const{headers:r,retryConfig:n,cacheConfig:o,timeout:i=de,checkoutSessionId:A}=t,s=l(A);return ut(o)(()=>_e(()=>ue(It(A,e,r),i),n,_=>s.messageEvent({..._,url:e})))},_r=(e,t,r)=>{const{headers:n,retryConfig:o,cacheConfig:i,timeout:A=de,checkoutSessionId:s}=r,_=getAnalytics(s);return cacheRequest(i)(()=>retryWithExponentialBackoff(()=>ue(ft(s,e,t,n),A),o,a=>_.messageEvent({...a,url:e})))},Oe="3.7.7",Lt=Oe,L=typeof Buffer=="function",De=typeof TextDecoder=="function"?new TextDecoder:void 0,Ie=typeof TextEncoder=="function"?new TextEncoder:void 0,Y=Array.prototype.slice.call("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="),U=(e=>{let t={};return e.forEach((r,n)=>t[r]=n),t})(Y),St=/^(?:[A-Za-z\d+\/]{4})*?(?:[A-Za-z\d+\/]{2}(?:==)?|[A-Za-z\d+\/]{3}=?)?$/,c=String.fromCharCode.bind(String),fe=typeof Uint8Array.from=="function"?Uint8Array.from.bind(Uint8Array):e=>new Uint8Array(Array.prototype.slice.call(e,0)),le=e=>e.replace(/=/g,"").replace(/[+\/]/g,t=>t=="+"?"-":"_"),Le=e=>e.replace(/[^A-Za-z0-9\+\/]/g,""),Se=e=>{let t,r,n,o,i="";const A=e.length%3;for(let s=0;s<e.length;){if((r=e.charCodeAt(s++))>255||(n=e.charCodeAt(s++))>255||(o=e.charCodeAt(s++))>255)throw new TypeError("invalid character found");t=r<<16|n<<8|o,i+=Y[t>>18&63]+Y[t>>12&63]+Y[t>>6&63]+Y[t&63]}return A?i.slice(0,A-3)+"===".substring(A):i},$=typeof btoa=="function"?e=>btoa(e):L?e=>Buffer.from(e,"binary").toString("base64"):Se,j=L?e=>Buffer.from(e).toString("base64"):e=>{let r=[];for(let n=0,o=e.length;n<o;n+=4096)r.push(c.apply(null,e.subarray(n,n+4096)));return $(r.join(""))},g=(e,t=!1)=>t?le(j(e)):j(e),Ct=e=>{if(e.length<2){var t=e.charCodeAt(0);return t<128?e:t<2048?c(192|t>>>6)+c(128|t&63):c(224|t>>>12&15)+c(128|t>>>6&63)+c(128|t&63)}else{var t=65536+(e.charCodeAt(0)-55296)*1024+(e.charCodeAt(1)-56320);return c(240|t>>>18&7)+c(128|t>>>12&63)+c(128|t>>>6&63)+c(128|t&63)}},mt=/[\uD800-\uDBFF][\uDC00-\uDFFFF]|[^\x00-\x7F]/g,Ce=e=>e.replace(mt,Ct),me=L?e=>Buffer.from(e,"utf8").toString("base64"):Ie?e=>j(Ie.encode(e)):e=>$(Ce(e)),S=(e,t=!1)=>t?le(me(e)):me(e),Ye=e=>S(e,!0),Yt=/[\xC0-\xDF][\x80-\xBF]|[\xE0-\xEF][\x80-\xBF]{2}|[\xF0-\xF7][\x80-\xBF]{3}/g,ht=e=>{switch(e.length){case 4:var t=(7&e.charCodeAt(0))<<18|(63&e.charCodeAt(1))<<12|(63&e.charCodeAt(2))<<6|63&e.charCodeAt(3),r=t-65536;return c((r>>>10)+55296)+c((r&1023)+56320);case 3:return c((15&e.charCodeAt(0))<<12|(63&e.charCodeAt(1))<<6|63&e.charCodeAt(2));default:return c((31&e.charCodeAt(0))<<6|63&e.charCodeAt(1))}},he=e=>e.replace(Yt,ht),pe=e=>{if(e=e.replace(/\s+/g,""),!St.test(e))throw new TypeError("malformed base64.");e+="==".slice(2-(e.length&3));let t,r="",n,o;for(let i=0;i<e.length;)t=U[e.charAt(i++)]<<18|U[e.charAt(i++)]<<12|(n=U[e.charAt(i++)])<<6|(o=U[e.charAt(i++)]),r+=n===64?c(t>>16&255):o===64?c(t>>16&255,t>>8&255):c(t>>16&255,t>>8&255,t&255);return r},z=typeof atob=="function"?e=>atob(Le(e)):L?e=>Buffer.from(e,"base64").toString("binary"):pe,Me=L?e=>fe(Buffer.from(e,"base64")):e=>fe(z(e).split("").map(t=>t.charCodeAt(0))),ye=e=>Me(Ue(e)),pt=L?e=>Buffer.from(e,"base64").toString("utf8"):De?e=>De.decode(Me(e)):e=>he(z(e)),Ue=e=>Le(e.replace(/[-_]/g,t=>t=="-"?"+":"/")),X=e=>pt(Ue(e)),Mt=e=>{if(typeof e!="string")return!1;const t=e.replace(/\s+/g,"").replace(/={0,2}$/,"");return!/[^\s0-9a-zA-Z\+/]/.test(t)||!/[^\s0-9a-zA-Z\-_]/.test(t)},ge=e=>({value:e,enumerable:!1,writable:!0,configurable:!0}),ke=function(){const e=(t,r)=>Object.defineProperty(String.prototype,t,ge(r));e("fromBase64",function(){return X(this)}),e("toBase64",function(t){return S(this,t)}),e("toBase64URI",function(){return S(this,!0)}),e("toBase64URL",function(){return S(this,!0)}),e("toUint8Array",function(){return ye(this)})},we=function(){const e=(t,r)=>Object.defineProperty(Uint8Array.prototype,t,ge(r));e("toBase64",function(t){return g(this,t)}),e("toBase64URI",function(){return g(this,!0)}),e("toBase64URL",function(){return g(this,!0)})},Be={version:Oe,VERSION:Lt,atob:z,atobPolyfill:pe,btoa:$,btoaPolyfill:Se,fromBase64:X,toBase64:S,encode:S,encodeURI:Ye,encodeURL:Ye,utob:Ce,btou:he,decode:X,isValid:Mt,fromUint8Array:g,toUint8Array:ye,extendString:ke,extendUint8Array:we,extendBuiltins:()=>{ke(),we()}},yt={encode:Ut,decode:Be.decode};function Ut(e,t={}){const{urlSafe:r=!1}=t;return Be.encode(e,r)}function gt(e){const t=Bt(e),r=t.exp*1e3;if(Date.now()>r)throw new Error(`${kt}. Expiration date: ${new Date(r).toISOString()}`);return t}const ve="The provided `clientToken`",kt=`${ve} has expired`,wt=`${ve} is malformed`;function Bt(e){try{const[t,r]=e.split("."),n=r||t;return JSON.parse(yt.decode(n))}catch{throw new Error(wt)}}const vt="v2.50.2",bt=(e,t,r)=>({"primer-client-token":e,"primer-sdk-client":"WEB","primer-sdk-version":vt,"primer-sdk-checkout-session-id":t,...r&&{"x-api-version":r}});async function Ht(e,t,r){const{accessToken:n,configurationUrl:o,analyticsUrlV2:i}=gt(e),A=G({checkoutSessionId:t,url:i}),s=Je(),_=s!==R.LEGACY?s:"2.3";A.timerStart({id:"CONFIGURATION_LOADING"});try{const{data:a,source:E}=await lt(`${o}/?withDisplayMetadata=true`,{checkoutSessionId:t,headers:bt(n,t,_),retryConfig:{enabled:!0},cacheConfig:r});return A.timerEnd({id:"CONFIGURATION_LOADING",context:{source:E}}),a}catch(a){const E=a instanceof Error?a.message:"Unknown error occurred";throw new Error(`Failed to initialize client: ${E}`)}}function be(e){return e instanceof Error?{errorBody:e.message,stacktrace:e.stack}:typeof e=="object"&&e!==null&&"message"in e?{errorBody:String(e.message),stacktrace:"stack"in e?String(e.stack):void 0}:{errorBody:String(e||"Unknown error")}}function k({checkoutSessionId:e,analytics:t,error:r,reporter:n}){t?.crashEvent?t.crashEvent({...be(r),reporter:n}):e&&Q(e,r,n)}async function Q(e,t,r){const n=te,o=await re(I.CRASH_EVENT,{...be(t),reporter:r},{checkoutSessionId:e});try{await fetch(n,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(o)})}catch(i){console.error("Failed to post crash event",i)}}const He=Symbol.for("initGlobalErrorMonitoringLoaded"),xe=(e,t)=>{typeof window<"u"&&window[He]||(window[He]=!0,window.addEventListener("error",r=>{xt(r)||Ft(r)&&k({checkoutSessionId:e,analytics:t,error:r.error,reporter:"window.onerror"})}),window.addEventListener("unhandledrejection",r=>{const n=r.reason||new Error("Unhandled promise rejection");Gt(n)&&k({checkoutSessionId:e,analytics:t,error:n,reporter:"unhandledrejection"})}))},xt=e=>e.message==="Script error."||!e.filename||e.lineno===0,Ft=e=>{const t=e.filename;return!!(t&&Z(t)&&new D(e.error).isReported)},Gt=e=>{if(e&&typeof e=="object"&&"stack"in e&&typeof e.stack=="string"){const t=D.from(e);if(t.isReported)return!1;if("fileName"in e&&typeof e.fileName=="string"){const n=e.fileName;if(Z(n))return!0}return Vt(t.stack).some(Z)}return!1},Z=e=>{try{return new URL(e,window.location.origin).hostname.endsWith(".primer.io")}catch{return!1}},Vt=e=>{if(!e)return[];const t=e.split(`
2
- `),r=[],n=/^\s*at\s+(?:.*?\s+)?\(?(.+?):\d+:\d+\)?$/;for(const o of t){const i=o.match(n);if(i&&i[1])r.push(i[1]);else{const A=/@(.*?):\d+:\d+$/,s=o.match(A);s&&s[1]&&r.push(s[1])}}return r};function Kt(e,t){const r=document.createElement(e);return Object.entries(t).forEach(([n,o])=>r.setAttribute(n,o)),r}function Fe(e,t,r){return document.querySelector(`${e}[${t}^="${r}"]`)}async function Ge(e,t,r,n,o,i){const{analytics:A,name:s=t,retryConfig:_}=i;await _e(()=>new Promise((E,f)=>{const N=Fe(e,r,t)||Kt(e,{...n,[r]:t});N.onload=()=>{A?.sdkFunctionEvent({name:s,params:[`${e.charAt(0).toUpperCase()+e.slice(1)} loaded successfully: ${t}`]}),E()},N.onerror=()=>{N.remove(),f(new Error(`${o}: ${t}`))},N.parentNode||document.head.appendChild(N)}),_,E=>A?.messageEvent({...E,url:t}))}function Wt(e,t={}){return Fe("script","src",e)&&window.__Primer?(t.analytics?.sdkFunctionEvent({name:t.name??e,params:["Script already loaded"]}),Promise.resolve()):Ge("script",e,"src",{...t.attributes,async:"",crossorigin:"anonymous"},"Can't load Primer SDK",t)}function $t(e,t={}){return Array.from(document.styleSheets).some(r=>r.href===e)?(t.analytics?.sdkFunctionEvent({name:t.name??e,params:["Stylesheet already loaded"]}),Promise.resolve()):Ge("link",e,"href",{...t.attributes,rel:"stylesheet"},"Can't load Primer SDK's Stylesheet",t)}let h;async function Ve(e){return h||(h=Promise.all([Wt("https://sdk.primer.io/web/v2.50.2/PrimerCoreSDK.min.js",{analytics:e,name:"loadPrimerScript"}),$t("https://sdk.primer.io/web/v2.50.2/Checkout.css",{analytics:e,name:"loadPrimerCss"})]).then(()=>{const n=window.__Primer;return delete window.__Primer,n}).catch(n=>{throw h=void 0,n}),h)}const jt=async()=>{const e=W();try{const t=l(e);try{xe(e,t),t.sdkFunctionEvent({name:"preloadPrimer"}),t.timerStart({id:H.preloadPrimer}),await Ve(t),t.timerEnd({id:H.preloadPrimer})}catch(r){const n=D.from(r);throw n.isReported||(k({checkoutSessionId:e,analytics:t,error:n,reporter:"preloadPrimer level 1"}),n.markAsReported()),n}}catch(t){const r=D.from(t);throw r.isReported||(Q(e,r,"preloadPrimer level 0"),r.markAsReported()),r}},zt="v2.50.2",Xt=q("createHeadless"),Qt=q("showUniversalCheckout"),Zt=q("showVaultManager");function q(e){return async(...[t,r,...n])=>{qe(r?.apiVersion);const o=W();try{const i=l(o);try{xe(o,i),i.sdkFunctionEvent({name:e,params:[t,r,...n]}),i.timerStart({id:H[e]});const[A,s]=await Promise.all([Ht(t,o,r?.clientSessionCachingEnabled?{key:t,usePrimerSessionCacheTtlHeader:!0}:void 0),Ve(i)]);return s[e](A,o,t,r,...n)}catch(A){const s=D.from(A);throw s.isReported||(k({checkoutSessionId:o,analytics:i,error:s,reporter:"lazyLoad level 1"}),s.markAsReported()),s}}catch(i){const A=D.from(i);throw A.isReported||(Q(o,A,"lazyLoad level 0"),A.markAsReported()),A}}}var qt=(e=>(e.LOADING="Loading",e.NO_PAYMENT_METHOD="NoPaymentMethod",e.THREE_DS="UniversalCheckout/3ds",e.CHOOSE_PAYMENT_METHOD="UniversalCheckout/Home",e.MANAGE_PAYMENT_METHODS="VaultManager/Home",e.DIRECT_DEBIT_FORM="DirectDebit/Form",e.DIRECT_DEBIT_MANDATE="DirectDebit/Mandate",e.CREDIT_CARD_FORM="CreditCard/Form",e.SUCCESS_PAYMENT_METHOD="UniversalCheckout/Success/PaymentMethod",e.SUCCESS_CHECK="UniversalCheckout/Success/Check",e))(qt||{}),Jt=(e=>(e.ROOT="primer-checkout",e.ROOT_CONTENT="primer-checkout-content",e.SUBMIT_BUTTON="primer-checkout-submit-button",e.THREE_DS_MODAL="primer-checkout-3ds-modal",e.VAULT="primer-checkout-vault",e.VAULT_INLINE="primer-checkout-vault-inline",e.NAVIGATE_PAYMENT_METHODS="primer-checkout-navigate-to-payment-methods",e.DIVIDER="primer-checkout-payment-method-divider",e.APM_BUTTONS="primer-checkout-apm-button-container",e.CARDHOLDER_NAME="primer-checkout-cardholder-name",e.CARDHOLDER_NAME_INPUT="primer-checkout-card-cardholder-name-input",e.ACTIONS="primer-checkout-actions",e.ACTIONS_MENU="primer-checkout-actions-menu",e.SAVE_PAYMENT_METHOD_CHECKBOX="primer-checkout-save-payment-method-input",e.SAVE_PAYMENT_METHOD_FIELD="primer-checkout-save-payment-method-field",e.SAVED_PAYMENT_METHODS_EMPTY="primer-checkout-saved-payment-methods-empty-text",e.CARD_FORM="primer-checkout-card-form",e.DD_SWITCH="primer-checkout-switch-dd-inputs",e.DD_IBAN_FIELD="primer-checkout-dd-iban-field",e.DD_LOCAL_FIELD="primer-checkout-dd-local-fields",e.DD_CUSTOMER_NAME_INPUT="primer-checkout-dd-customer-name-input",e.DD_CUSTOMER_EMAIL_INPUT="primer-checkout-dd-customer-email-input",e.DD_CUSTOMER_ADDRESS_LINE1="primer-checkout-dd-customer-address-input",e.DD_CUSTOMER_ADDRESS_LINE2="primer-checkout-dd-customer-address-line2-input",e.DD_CUSTOMER_ADDRESS_CITY="primer-checkout-dd-customer-city-input",e.DD_CUSTOMER_ADDRESS_POSTAL_CODE="primer-checkout-dd-customer-postal-code-input",e.DD_IBAN_INPUT="primer-checkout-dd-iban-input",e.DD_ACCOUNT_NUMBER_INPUT="primer-checkout-dd-account-number-input",e.DD_BANK_CODE_INPUT="primer-checkout-dd-bank-code-input",e.DD_BRANCH_CODE_INPUT="primer-checkout-dd-branch-code-input",e.DD_MANDATE_SMALL_PRINT="primer-checkout-small-print",e.ERROR_MESSAGE="primer-checkout-error-message",e))(Jt||{}),er=(e=>(e.TOKEN="PrimerCheckout__token",e.HIDDEN="PrimerCheckout--hidden",e.FOCUSED="PrimerCheckout--focused",e.SELECTED="PrimerCheckout--selected",e.LOADING="PrimerCheckout--loading",e.ERROR="PrimerCheckout--error",e.CARD_TYPE="PrimerCheckout__cardType",e.SAVED_PAYMENT_METHOD="PrimerCheckout__savedPaymentMethod",e.SAVED_PAYMENT_METHOD_CONTAINER="PrimerCheckout__savedPaymentMethodContainer",e.APM_BUTTON="PrimerCheckout__apmButton",e.EDIT_BUTTON="PrimerCheckout__editButton",e.MENU="PrimerCheckout__dropDownMenu",e.MENU_ITEM="PrimerCheckout__dropDownMenuItem",e.PAYMENT_METHOD_MENU_ITEM="PrimerCheckout__paymentMethodDropDownMenuItem",e.DELETE_PAYMENT_METHOD_BUTTON="PrimerCheckout__paymentMethodDropDownMenuItem__deleteButton",e.ENTER="PrimerCheckout--enter",e.ENTERING="PrimerCheckout--entering",e.ENTERED="PrimerCheckout--entered",e.EXIT="PrimerCheckout--exit",e.EXITING="PrimerCheckout--exiting",e.EXITED="PrimerCheckout--exited",e))(er||{}),Ke=(e=>(e.CHECKOUT="CHECKOUT",e.HEADLESS_CHECKOUT="HEADLESS_CHECKOUT",e.MANAGE_PAYMENT_METHODS="MANAGE_PAYMENT_METHODS",e))(Ke||{}),We=(e=>(e.DEFAULT="DEFAULT",e.PREFER_VAULT="PREFER_VAULT",e))(We||{}),tr=(e=>(e.TOKENIZE_STARTED="tokenize-started",e.TOKENIZE_ERROR="tokenize-error",e.TOKENIZE_SUCCESS="tokenize-success",e.TOKENIZE_DID_NOT_START="tokenize-did-not-start",e))(tr||{}),$e=(e=>(e.SUCCESS="AUTH_SUCCESS",e.FAILED="AUTH_FAILED",e.SKIPPED="SKIPPED",e.CHALLENGE="CHALLENGE",e))($e||{});const w={WORLDPAY_IDEAL:"WORLDPAY_IDEAL",AUTOMATED_CLEARING_HOUSE:"AUTOMATED_CLEARING_HOUSE",ADYEN_KLARNA:"ADYEN_KLARNA",ADYEN_BANCONTACT_CARD:"ADYEN_BANCONTACT_CARD",PAY_NL_KAARTDIRECT:"PAY_NL_KAARTDIRECT",ADYEN_EPS:"ADYEN_EPS",ADYEN_BANCONTACT_PAYCONIQ:"ADYEN_BANCONTACT_PAYCONIQ",OMISE_PROMPTPAY:"OMISE_PROMPTPAY",OMISE_TRUEMONEY:"OMISE_TRUEMONEY",ADYEN_MULTIBANCO:"ADYEN_MULTIBANCO",PACYPAY_WECHAT:"PACYPAY_WECHAT",PACYPAY_ALIPAY:"PACYPAY_ALIPAY",ADYEN_MBWAY:"ADYEN_MBWAY",XENDIT_DANA:"XENDIT_DANA",XENDIT_SHOPEEPAY:"XENDIT_SHOPEEPAY",ADYEN_PAYSHOP:"ADYEN_PAYSHOP",ADYEN_PAYTRAIL:"ADYEN_PAYTRAIL",CLEARPAY:"CLEARPAY",RAPYD_FAST:"RAPYD_FAST",RAPYD_PROMPTPAY:"RAPYD_PROMPTPAY",RAPYD_GCASH:"RAPYD_GCASH",RAPYD_POLI:"RAPYD_POLI",RAPYD_GRABPAY:"RAPYD_GRABPAY",PRIMER_PAYPAL:"PRIMER_PAYPAL",TWOC2P:"TWOC2P",NETS:"NETS",STRIPE_ACH:"STRIPE_ACH",STRIPE_GIROPAY:"STRIPE_GIROPAY",MOLLIE_GIROPAY:"MOLLIE_GIROPAY",MOLLIE_EPS:"MOLLIE_EPS",PAY_NL_EPS:"PAY_NL_EPS",PAY_NL_P24:"PAY_NL_P24",MOLLIE_P24:"MOLLIE_P24",MOLLIE_SOFORT:"MOLLIE_SOFORT",COINBASE:"COINBASE",OPENNODE:"OPENNODE",MOLLIE_GIFT_CARD:"MOLLIE_GIFTCARD",XFERS_PAYNOW:"XFERS_PAYNOW",CARD:"PAYMENT_CARD",APPLE_PAY:"APPLE_PAY",GOOGLE_PAY:"GOOGLE_PAY",PAYPAL:"PAYPAL_ORDER",PAYPAL_VAULTED:"PAYPAL_BILLING_AGREEMENT",GO_CARDLESS:"GOCARDLESS",PAY_NL_IDEAL:"PAY_NL_IDEAL",PAY_NL_SOFORT_BANKING:"PAY_NL_SOFORT_BANKING",PAY_NL_BANCONTACT:"PAY_NL_BANCONTACT",PAY_NL_PAYPAL:"PAY_NL_PAYPAL",PAY_NL_CREDIT_TRANSFER:"PAY_NL_CREDIT_TRANSFER",PAY_NL_DIRECT_DEBIT:"PAY_NL_DIRECT_DEBIT",PAY_NL_GIROPAY:"PAY_NL_GIROPAY",PAY_NL_PAYCONIQ:"PAY_NL_PAYCONIQ",HOOLAH:"HOOLAH",ADYEN_BLIK:"ADYEN_BLIK",ADYEN_VIPPS:"ADYEN_VIPPS",ADYEN_GIROPAY:"ADYEN_GIROPAY",ADYEN_SOFORT:"ADYEN_SOFORT",ADYEN_IDEAL:"ADYEN_IDEAL",ADYEN_TRUSTLY:"ADYEN_TRUSTLY",ADYEN_ALIPAY:"ADYEN_ALIPAY",ADYEN_TWINT:"ADYEN_TWINT",ADYEN_MOBILEPAY:"ADYEN_MOBILEPAY",MOLLIE_BANCONTACT:"MOLLIE_BANCONTACT",MOLLIE_IDEAL:"MOLLIE_IDEAL",BUCKAROO_GIROPAY:"BUCKAROO_GIROPAY",BUCKAROO_EPS:"BUCKAROO_EPS",BUCKAROO_SOFORT:"BUCKAROO_SOFORT",BUCKAROO_BANCONTACT:"BUCKAROO_BANCONTACT",BUCKAROO_IDEAL:"BUCKAROO_IDEAL",ATOME:"ATOME",KLARNA_CUSTOMER_TOKEN:"KLARNA_CUSTOMER_TOKEN"},p={WORLDPAY_IDEAL:"WORLDPAY_IDEAL",STRIPE_ACH:"STRIPE_ACH",STRIPE_IDEAL:"STRIPE_IDEAL",ADYEN_KLARNA:"ADYEN_KLARNA",ADYEN_BANCONTACT_CARD:"ADYEN_BANCONTACT_CARD",PAY_NL_KAARTDIRECT:"PAY_NL_KAARTDIRECT",ADYEN_EPS:"ADYEN_EPS",ADYEN_BANCONTACT_PAYCONIQ:"ADYEN_BANCONTACT_PAYCONIQ",OMISE_PROMPTPAY:"OMISE_PROMPTPAY",OMISE_TRUEMONEY:"OMISE_TRUEMONEY",ADYEN_MULTIBANCO:"ADYEN_MULTIBANCO",PACYPAY_WECHAT:"PACYPAY_WECHAT",PACYPAY_ALIPAY:"PACYPAY_ALIPAY",ADYEN_MBWAY:"ADYEN_MBWAY",XENDIT_DANA:"XENDIT_DANA",XENDIT_SHOPEEPAY:"XENDIT_SHOPEEPAY",ADYEN_PAYSHOP:"ADYEN_PAYSHOP",ADYEN_PAYTRAIL:"ADYEN_PAYTRAIL",CLEARPAY:"CLEARPAY",RAPYD_FAST:"RAPYD_FAST",RAPYD_PROMPTPAY:"RAPYD_PROMPTPAY",RAPYD_GCASH:"RAPYD_GCASH",RAPYD_POLI:"RAPYD_POLI",RAPYD_GRABPAY:"RAPYD_GRABPAY",PRIMER_PAYPAL:"PRIMER_PAYPAL",TWOC2P:"TWOC2P",NETS:"NETS",STRIPE_GIROPAY:"STRIPE_GIROPAY",MOLLIE_GIROPAY:"MOLLIE_GIROPAY",MOLLIE_EPS:"MOLLIE_EPS",PAY_NL_EPS:"PAY_NL_EPS",PAY_NL_P24:"PAY_NL_P24",MOLLIE_P24:"MOLLIE_P24",MOLLIE_SOFORT:"MOLLIE_SOFORT",COINBASE:"COINBASE",OPENNODE:"OPENNODE",MOLLIE_GIFT_CARD:"MOLLIE_GIFTCARD",XFERS_PAYNOW:"XFERS_PAYNOW",PAYMENT_CARD:"PAYMENT_CARD",APPLE_PAY:"APPLE_PAY",GOOGLE_PAY:"GOOGLE_PAY",PAYPAL:"PAYPAL",GO_CARDLESS:"GOCARDLESS",KLARNA:"KLARNA",PAY_NL_IDEAL:"PAY_NL_IDEAL",PAY_NL_SOFORT_BANKING:"PAY_NL_SOFORT_BANKING",PAY_NL_BANCONTACT:"PAY_NL_BANCONTACT",PAY_NL_PAYPAL:"PAY_NL_PAYPAL",PAY_NL_CREDIT_TRANSFER:"PAY_NL_CREDIT_TRANSFER",PAY_NL_DIRECT_DEBIT:"PAY_NL_DIRECT_DEBIT",PAY_NL_GIROPAY:"PAY_NL_GIROPAY",PAY_NL_PAYCONIQ:"PAY_NL_PAYCONIQ",HOOLAH:"HOOLAH",ADYEN_BLIK:"ADYEN_BLIK",ADYEN_MOBILEPAY:"ADYEN_MOBILEPAY",ADYEN_VIPPS:"ADYEN_VIPPS",ADYEN_GIROPAY:"ADYEN_GIROPAY",ADYEN_SOFORT:"ADYEN_SOFORT",ADYEN_IDEAL:"ADYEN_IDEAL",ADYEN_TRUSTLY:"ADYEN_TRUSTLY",ADYEN_ALIPAY:"ADYEN_ALIPAY",ADYEN_TWINT:"ADYEN_TWINT",ADYEN_BANK_TRANSFER:"ADYEN_BANK_TRANSFER",MOLLIE_BANCONTACT:"MOLLIE_BANCONTACT",MOLLIE_IDEAL:"MOLLIE_IDEAL",BUCKAROO_GIROPAY:"BUCKAROO_GIROPAY",BUCKAROO_EPS:"BUCKAROO_EPS",BUCKAROO_SOFORT:"BUCKAROO_SOFORT",BUCKAROO_BANCONTACT:"BUCKAROO_BANCONTACT",BUCKAROO_IDEAL:"BUCKAROO_IDEAL",ATOME:"ATOME"},Nr={PAYMENT_CARD:"PAYMENT_CARD",ADYEN_BANCONTACT_CARD:"ADYEN_BANCONTACT_CARD"},rr={SINGLE_USE:"SINGLE_USE",MULTI_USE:"MULTI_USE"},je={[w.PAYPAL_VAULTED]:p.PAYPAL,[w.KLARNA_CUSTOMER_TOKEN]:p.KLARNA,[w.AUTOMATED_CLEARING_HOUSE]:p.STRIPE_ACH},Rr=e=>{if(Object.values(p).includes(e))return e;if(je[e])return je[e]};var ze=(e=>(e.INITIALIZATION_ERROR="INITIALIZATION_ERROR",e.NO_PAYMENT_METHODS="NO_PAYMENT_METHODS",e.PRIMER_TEARDOWN="PRIMER_TEARDOWN",e.PRIMER_SERVER_ERROR="PRIMER_SERVER_ERROR",e.THREE_DS_AUTH_FAILED="THREE_DS_AUTH_FAILED",e.TOKENIZATION_ERROR="TOKENIZATION_ERROR",e.DUPLICATE_PAYMENT_METHOD_ERROR="DUPLICATE_PAYMENT_METHOD_ERROR",e.CARD_NUMBER_ERROR="CARD_NUMBER_ERROR",e.PAYMENT_METHOD_NOT_SETUP="PAYMENT_METHOD_NOT_SETUP",e.PAYMENT_METHOD_NOT_PROVIDED="PAYMENT_METHOD_NOT_PROVIDED",e.PAYMENT_METHOD_NOT_COMPATIBLE="PAYMENT_METHOD_NOT_COMPATIBLE",e.RESUME_ERROR="RESUME_ERROR",e.VALIDATION_ERROR="VALIDATION_ERROR",e.PAYMENT_FAILED="PAYMENT_FAILED",e.PAYMENT_CREATION_ABORTED="PAYMENT_CREATION_ABORTED",e.PAYMENT_CREATION_DISABLED="PAYMENT_CREATION_DISABLED",e.CLIENT_SESSION_UPDATE_ERROR="CLIENT_SESSION_UPDATE_ERROR",e.INVALID_ARGUMENT="INVALID_ARGUMENT",e.VAULT_FETCH="VAULT_FETCH",e.VAULT_DELETE="VAULT_DELETE",e.HEADLESS_VAULT_MANAGER_VALIDATION="HEADLESS_VAULT_MANAGER_VALIDATION",e.CARD_FORM_VALIDATION_UNEXPECTED_FIELD="CARD_FORM_VALIDATION_UNEXPECTED_FIELD",e.MISSING_FIRST_NAME_OR_LAST_NAME="MISSING_FIRST_NAME_OR_LAST_NAME",e.MISSING_EMAIL_ADDRESS="MISSING_EMAIL_ADDRESS",e.INVALID_FLOW="INVALID_FLOW",e))(ze||{});class J extends D{static fromErrorCode(t,r,n){return new J(t,r,n)}constructor(t,r,n){super(r.message),this.code=t,this.diagnosticsId=r.diagnosticsId??null,this.data=r.data,this.isFromDeveloper=r.isFromDeveloper??!1,this.name="PrimerClientError",Error.captureStackTrace&&Error.captureStackTrace(this,J),n&&(n.messageEvent({message:`${t}: ${r.message}`,messageType:t,severity:"ERROR",diagnosticsId:r.diagnosticsId??void 0,errorId:r.errorId??void 0,data:r.data??void 0,isFromDeveloper:r.isFromDeveloper?.toString(),stack:this.stack}),this.markAsReported())}}var nr=T(56),Xe=(e=>(e.PAYMENT_METHOD="PAYMENT_METHOD",e.CHECK="CHECK",e))(Xe||{});const or=e=>{const t=e?.mandateData;return t?"fullMandateText"in t:!1};var Qe=(e=>(e.CHANGE="change",e.ERROR="error",e.FOCUS="focus",e.BLUR="blur",e.CLICK="click",e.CLOSE="close",e))(Qe||{}),Ze=(e=>(e.CARD="CARD",e.NATIVE="NATIVE",e.REDIRECT="REDIRECT",e.FORM_WITH_REDIRECT="FORM_WITH_REDIRECT",e.KLARNA="KLARNA",e.ACH="ACH",e))(Ze||{});const ir={SDK_VERSION:zt,createHeadless:Xt,showUniversalCheckout:Qt,showVaultManager:Zt,preloadPrimer:jt}})(),B})());
1
+ (function(M,T){typeof exports=="object"&&typeof module=="object"?module.exports=T():typeof define=="function"&&define.amd?define([],T):typeof exports=="object"?exports.Primer=T():M.Primer=T()})(this,()=>(()=>{var ee={189:()=>{},367:()=>{},56:()=>{}},M={};function T(R){var u=M[R];if(u!==void 0)return u.exports;var O=M[R]={exports:{}};return ee[R](O,O.exports,T),O.exports}T.d=(R,u)=>{for(var O in u)T.o(u,O)&&!T.o(R,O)&&Object.defineProperty(R,O,{enumerable:!0,get:u[O]})},T.o=(R,u)=>Object.prototype.hasOwnProperty.call(R,u),T.r=R=>{typeof Symbol<"u"&&Symbol.toStringTag&&Object.defineProperty(R,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(R,"__esModule",{value:!0})};var v={};return(()=>{"use strict";T.r(v),T.d(v,{CheckoutUXFlow:()=>Ke,ErrorCode:()=>ze,EventTypes:()=>Qe,HeadlessManagerType:()=>Ze,PaymentFlow:()=>We,PaymentInstrumentType:()=>w,PaymentMethodData:()=>nr.PaymentMethodData,PaymentMethodType:()=>p,Primer:()=>ir,SuccessScreenType:()=>Xe,ThreeDSecureStatus:()=>$e,TokenType:()=>rr,isStripeOptionsDropInWithFullMandateText:()=>or});const R={LEGACY:"legacy",V_2_4:"2.4"},u=R.LEGACY;let O=u;function qe(e){e||console.warn(`[Primer SDK] No API version was explicitly set. Defaulting to '${u}'.`),O=e??u}function Je(){return O}class D extends Error{constructor(t,r=!1){super(t),this.isReported=r,this.name=this.constructor.name,Error.captureStackTrace&&Error.captureStackTrace(this,this.constructor)}static from(t,r=!1){if(t instanceof D)return t;const n=t instanceof Error?t.message:String(t),o=new D(n,r);return t instanceof Error&&t.stack&&(o.stack=t.stack,Object.assign(o,t)),o}markAsReported(){this.isReported=!0}}const te="https://analytics.production.data.primer.io/sdk-logs";var ar=T(189),Er=T(367),b=(e=>(e.REQUEST_START="REQUEST_START",e.REQUEST_END="REQUEST_END",e))(b||{}),H=(e=>(e.START="START",e.END="END",e))(H||{});const x={createHeadless:"HEADLESS_LOADING",showUniversalCheckout:"DROP_IN_LOADING",showVaultManager:"VAULT_MANAGER_LOADING",preloadPrimer:"PRELOAD_PRIMER_LOADING"};var I=(e=>(e.NETWORK_CALL_EVENT="NETWORK_CALL_EVENT",e.CRASH_EVENT="CRASH_EVENT",e.TIMER_EVENT="TIMER_EVENT",e.MESSAGE_EVENT="MESSAGE_EVENT",e.V1_EVENT="V1_EVENT",e.SDK_FUNCTION_EVENT="SDK_FUNCTION_EVENT",e))(I||{});const et={get(e,t){let r;try{switch(e){case"PRIMER_SDK_VERSION":r="v2.50.4";break;case"PRIMER_ASSETS_URL":r=process.env.PRIMER_ASSETS_URL;break;case"PRIMER_BUILD_INTEGRATION_BUILDER":r=process.env.PRIMER_BUILD_INTEGRATION_BUILDER;break;default:break}}catch{}return r||t}};var tt=(e=>(e.CHARGING="CHARGING",e.NOT_CHARGING="NOT_CHARGING",e))(tt||{});async function rt(){if(typeof navigator>"u"||typeof performance>"u")return;const e=await navigator.getBattery?.();return{memoryFootprint:performance.memory?.usedJSHeapSize,screen:{height:screen?.height,width:screen?.width},userAgent:navigator.userAgent,locale:navigator.language,batteryLevel:e?.level,batteryStatus:e?.charging?"CHARGING":"NOT_CHARGING"}}const nt="WEB",ot=et.get("PRIMER_SDK_VERSION");async function re(e,t,r){return{...r,createdAt:Date.now(),device:await rt(),eventType:e,properties:t,sdkVersion:ot,sdkType:nt}}const ne=Symbol.for("__primerAnalytics__");let C={providers:new Map,timers:new Map,eventsQueue:new Map};if(typeof window<"u"){const e=window[ne];e?C=e:window[ne]=C}const oe=()=>C.providers,F=()=>C.timers,m=()=>C.eventsQueue,ie=500,y=new Map,Ae=64e3,it=5;function G(e,t=!1,r=1){if(y.has(e)){const i=y.get(e);clearTimeout(i),y.delete(e)}const n=()=>{const i=m().get(e);if(i?.length){let A=!0,s=[],_=0,a=0;for(;a<i.length;){const E=i[a],f=JSON.stringify(E),N=new Blob([f]).size;if(N>Ae){console.error("Event size exceeds maximum payload size and will be skipped:",E),a++;continue}if(_+N>Ae&&s.length>0){try{A=navigator.sendBeacon(e,JSON.stringify(s))}catch(P){A=!1,console.error("Unable to send events",P)}if(!A)break;s=[],_=0}s.push(E),_+=N,a++}if(s.length>0&&A)try{A=navigator.sendBeacon(e,JSON.stringify(s))}catch(E){A=!1,console.error("Unable to send events",E)}if(A)m().delete(e);else if(r<it){const E=ie*Math.pow(2,r);setTimeout(()=>G(e,t,r+1),E)}else console.error("Max retry attempts reached. Events will not be sent.")}};if(t){n();return}const o=setTimeout(n,ie);y.set(e,o)}function At(e,t){m().has(e)||m().set(e,[]),m().get(e)?.push(t),G(e)}const se=1024*5;function ae(e,t,r=new WeakSet,n=0,o=10){if(n>o||r.has(e))return e;r.add(e);const i=A=>typeof A=="object"&&A!==null?ae(A,t,r,n+1,o):t(A);return Array.isArray(e)?e.map(i):Object.fromEntries(Object.entries(e).map(([A,s])=>[A,i(s)]))}function st(e){return typeof e=="string"&&e.length>se?`${e.slice(0,se)}...`:e}function at(e){return typeof e=="function"?e.name||"function":e}let Ee=!1;function V({url:e=te,...t}){typeof document<"u"&&!Ee&&(document.addEventListener("visibilitychange",()=>{if(document.visibilityState==="hidden"){const o=l(t.checkoutSessionId);o.messageEvent({messageType:"VISIBILITY_CHANGE",message:"Checkout visibility is hidden (tab or window change, redirect or being closed)."}),G(o.url,!0)}}),Ee=!0);const r=o=>async i=>{if(typeof navigator>"u")return;const A=await re(o,i,t),_=ae(A,a=>st(at(a)));At(e,_)},n={crashEvent:r(I.CRASH_EVENT),messageEvent:r(I.MESSAGE_EVENT),networkCallEvent:r(I.NETWORK_CALL_EVENT),sdkFunctionEvent:r(I.SDK_FUNCTION_EVENT),timerStart:({id:o,...i})=>{const A=`${t.checkoutSessionId}|${o}`,s=performance?.now?performance.now():Date.now();return F().set(A,{start:s}),r(I.TIMER_EVENT)({...i,id:o,timerType:H.START})},timerEnd:({id:o,...i})=>{const A=`${t.checkoutSessionId}|${o}`,{start:s=void 0}=F().get(A)??{};F().delete(A);const _=performance?.now?performance.now():Date.now(),a=s?_-s:void 0;return r(I.TIMER_EVENT)({...i,id:o,timerType:H.END,duration:a})},v1Event:r(I.V1_EVENT),url:e};return oe().set(t.checkoutSessionId,n),l(t.checkoutSessionId)}function l(e){return new Proxy({},{get(t,r){return(oe().get(e)??V({checkoutSessionId:e}))[r]}})}const K=(e,t,r,n)=>({callType:r?b.REQUEST_END:b.REQUEST_START,id:e,errorBody:r?.error&&JSON.stringify(r.error,Object.getOwnPropertyNames(r.error)),method:t.method,responseCode:r?.status,url:t.url,duration:n});function Et(e){return e?new Promise(t=>{setTimeout(t,e)}):Promise.resolve()}const _t=8,ct=100,Tt=100;function Nt(e){return{enabled:e?.enabled??!1,maxRetries:_t,initialBackoff:ct,retryNetworkErrors:!0,retry500Errors:!1,maxJitter:Tt}}function Rt(e,t,r){const n=e*Math.pow(2,t-1),o=Math.random()*r;return Math.min(n+o,Number.MAX_SAFE_INTEGER)}async function _e(e,t,r,n=Et){let o=0;const i=Nt(t);if(!i.enabled)return e();for(;;)try{const A=await e();if(o){let s=`Request succeeded after ${o} retries.`;typeof A=="object"&&A&&"status"in A&&(s+=` Status code: ${A.status}`),r?.({messageType:"RETRY_SUCCESS",message:s,severity:"INFO"})}return A}catch(A){const s=A,_=o>=i.maxRetries,a=s.isNetworkError&&!i.retryNetworkErrors,E=s.status&&s.status>=500&&!i.retry500Errors;if(_||a||E){let P=`Failed after ${o} retries. `;throw _?P+=`Reached maximum retries (${i.maxRetries}).`:a?P+="Network error encountered and retryNetworkErrors is disabled.":E&&(P+="HTTP 500 error encountered and retry500Errors is disabled."),P+=` Last error: ${s.message}`,r?.({messageType:"RETRY_FAILED",message:P,severity:"ERROR",errorBody:JSON.stringify(A,Object.getOwnPropertyNames(A))}),new Error(P,{cause:A})}o++;const f=Rt(i.initialBackoff,o,i.maxJitter);let N="Unknown error";s.isNetworkError?N="Network error":s.status&&(N=`HTTP ${s.status} error`),r?.({messageType:"RETRY",message:`Retry attempt ${o}/${i.maxRetries} due to: ${N}. Error details: ${s.message}. Waiting for ${f.toFixed(2)}ms before next attempt.`,severity:"WARN",errorBody:JSON.stringify(A,Object.getOwnPropertyNames(A))}),await n(f)}}let W={cache:new Map};typeof window<"u"&&(window.__primerCache__??(window.__primerCache__=W),W=window.__primerCache__);const d=()=>W.cache,ce=1e3*60*60,dt=30,Te=50;function Ne(){if(d().size<=dt)return;const e=Date.now();for(const[t,r]of d())r.exp<e&&d().delete(t);if(d().size>Te)for(const[t]of d()){if(d().size<=Te)break;d().delete(t)}}function Pt({key:e,ttl:t=ce},r){t?d().set(e,{promise:Promise.resolve({...r,source:"CACHE"}),exp:Date.now()+t}):d().delete(e)}function ut(e){if(!e)return i=>i();const{key:t,refresh:r=!1,usePrimerSessionCacheTtlHeader:n=!1,ttl:o=ce}=e;return async i=>{const A=Date.now(),s=d().get(t);if(!r&&s&&s.exp>A)return s.promise;s&&d().delete(t);const _=i().then(a=>{let E=o;return n&&(E=(Number(a.headers.get("x-primer-session-cache-ttl"))||0)*1e3),Pt({key:t,ttl:E},a),Ne(),a},a=>{throw d().delete(t),a});return d().set(t,{promise:_,exp:A+o}),Ne(),_}}const $=()=>Re.randomUUID?.()||Ot(),Ot=()=>("10000000-1000-4000-8000"+-1e11).replace(/[018]/g,e=>(e^Dt()>>e/4).toString(16)),Dt=()=>(Re.getRandomValues?.(new Uint8Array(1))[0]??Math.random()*16)&15,Re=typeof crypto<"u"?crypto:{},de=15e3,It=(e,t,r)=>Pe(e,"get",t,r),ft=(e,t,r,n)=>Pe(e,"post",t,n,JSON.stringify(r)),Pe=async(e,t,r,n,o)=>{const i=$(),A=performance?.now();let s=l(e);const _={method:t,url:r,body:o};s.networkCallEvent(K(i,_));try{const a=await fetch(r,{body:o,method:t,headers:{"content-type":"application/json","x-request-id":i,...n}});if(!a.ok){const P=new Error(`HTTP error! status: ${a.status}`);throw P.status=a.status,P}const E=await a.json();if(r.includes("client-sdk/configuration")){const{primerAccountId:P,clientSession:{clientSessionId:Ar,customer:sr}}=E;s=V({checkoutSessionId:e,clientSessionId:Ar,customerId:sr?.customerId,primerAccountId:P,url:s.url})}const N=performance?.now()-A;return s.networkCallEvent(K(i,_,{data:E},N)),{data:E,headers:a.headers,status:a.status,source:"NETWORK"}}catch(a){const f=performance?.now()-A;throw Object.assign(a,{isNetworkError:a instanceof TypeError}),s.networkCallEvent(K(i,_,{error:a},f)),a}},ue=(e,t)=>new Promise((r,n)=>{const o=setTimeout(()=>{const i=new Error("Request timed out");i.isNetworkError=!0,n(i)},t);e.then(r).catch(n).finally(()=>clearTimeout(o))}),lt=(e,t)=>{const{headers:r,retryConfig:n,cacheConfig:o,timeout:i=de,checkoutSessionId:A}=t,s=l(A);return ut(o)(()=>_e(()=>ue(It(A,e,r),i),n,_=>s.messageEvent({..._,url:e})))},_r=(e,t,r)=>{const{headers:n,retryConfig:o,cacheConfig:i,timeout:A=de,checkoutSessionId:s}=r,_=getAnalytics(s);return cacheRequest(i)(()=>retryWithExponentialBackoff(()=>ue(ft(s,e,t,n),A),o,a=>_.messageEvent({...a,url:e})))},Oe="3.7.7",Lt=Oe,L=typeof Buffer=="function",De=typeof TextDecoder=="function"?new TextDecoder:void 0,Ie=typeof TextEncoder=="function"?new TextEncoder:void 0,Y=Array.prototype.slice.call("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="),U=(e=>{let t={};return e.forEach((r,n)=>t[r]=n),t})(Y),St=/^(?:[A-Za-z\d+\/]{4})*?(?:[A-Za-z\d+\/]{2}(?:==)?|[A-Za-z\d+\/]{3}=?)?$/,c=String.fromCharCode.bind(String),fe=typeof Uint8Array.from=="function"?Uint8Array.from.bind(Uint8Array):e=>new Uint8Array(Array.prototype.slice.call(e,0)),le=e=>e.replace(/=/g,"").replace(/[+\/]/g,t=>t=="+"?"-":"_"),Le=e=>e.replace(/[^A-Za-z0-9\+\/]/g,""),Se=e=>{let t,r,n,o,i="";const A=e.length%3;for(let s=0;s<e.length;){if((r=e.charCodeAt(s++))>255||(n=e.charCodeAt(s++))>255||(o=e.charCodeAt(s++))>255)throw new TypeError("invalid character found");t=r<<16|n<<8|o,i+=Y[t>>18&63]+Y[t>>12&63]+Y[t>>6&63]+Y[t&63]}return A?i.slice(0,A-3)+"===".substring(A):i},j=typeof btoa=="function"?e=>btoa(e):L?e=>Buffer.from(e,"binary").toString("base64"):Se,z=L?e=>Buffer.from(e).toString("base64"):e=>{let r=[];for(let n=0,o=e.length;n<o;n+=4096)r.push(c.apply(null,e.subarray(n,n+4096)));return j(r.join(""))},g=(e,t=!1)=>t?le(z(e)):z(e),Ct=e=>{if(e.length<2){var t=e.charCodeAt(0);return t<128?e:t<2048?c(192|t>>>6)+c(128|t&63):c(224|t>>>12&15)+c(128|t>>>6&63)+c(128|t&63)}else{var t=65536+(e.charCodeAt(0)-55296)*1024+(e.charCodeAt(1)-56320);return c(240|t>>>18&7)+c(128|t>>>12&63)+c(128|t>>>6&63)+c(128|t&63)}},mt=/[\uD800-\uDBFF][\uDC00-\uDFFFF]|[^\x00-\x7F]/g,Ce=e=>e.replace(mt,Ct),me=L?e=>Buffer.from(e,"utf8").toString("base64"):Ie?e=>z(Ie.encode(e)):e=>j(Ce(e)),S=(e,t=!1)=>t?le(me(e)):me(e),Ye=e=>S(e,!0),Yt=/[\xC0-\xDF][\x80-\xBF]|[\xE0-\xEF][\x80-\xBF]{2}|[\xF0-\xF7][\x80-\xBF]{3}/g,ht=e=>{switch(e.length){case 4:var t=(7&e.charCodeAt(0))<<18|(63&e.charCodeAt(1))<<12|(63&e.charCodeAt(2))<<6|63&e.charCodeAt(3),r=t-65536;return c((r>>>10)+55296)+c((r&1023)+56320);case 3:return c((15&e.charCodeAt(0))<<12|(63&e.charCodeAt(1))<<6|63&e.charCodeAt(2));default:return c((31&e.charCodeAt(0))<<6|63&e.charCodeAt(1))}},he=e=>e.replace(Yt,ht),pe=e=>{if(e=e.replace(/\s+/g,""),!St.test(e))throw new TypeError("malformed base64.");e+="==".slice(2-(e.length&3));let t,r="",n,o;for(let i=0;i<e.length;)t=U[e.charAt(i++)]<<18|U[e.charAt(i++)]<<12|(n=U[e.charAt(i++)])<<6|(o=U[e.charAt(i++)]),r+=n===64?c(t>>16&255):o===64?c(t>>16&255,t>>8&255):c(t>>16&255,t>>8&255,t&255);return r},X=typeof atob=="function"?e=>atob(Le(e)):L?e=>Buffer.from(e,"base64").toString("binary"):pe,Me=L?e=>fe(Buffer.from(e,"base64")):e=>fe(X(e).split("").map(t=>t.charCodeAt(0))),ye=e=>Me(Ue(e)),pt=L?e=>Buffer.from(e,"base64").toString("utf8"):De?e=>De.decode(Me(e)):e=>he(X(e)),Ue=e=>Le(e.replace(/[-_]/g,t=>t=="-"?"+":"/")),Q=e=>pt(Ue(e)),Mt=e=>{if(typeof e!="string")return!1;const t=e.replace(/\s+/g,"").replace(/={0,2}$/,"");return!/[^\s0-9a-zA-Z\+/]/.test(t)||!/[^\s0-9a-zA-Z\-_]/.test(t)},ge=e=>({value:e,enumerable:!1,writable:!0,configurable:!0}),ke=function(){const e=(t,r)=>Object.defineProperty(String.prototype,t,ge(r));e("fromBase64",function(){return Q(this)}),e("toBase64",function(t){return S(this,t)}),e("toBase64URI",function(){return S(this,!0)}),e("toBase64URL",function(){return S(this,!0)}),e("toUint8Array",function(){return ye(this)})},we=function(){const e=(t,r)=>Object.defineProperty(Uint8Array.prototype,t,ge(r));e("toBase64",function(t){return g(this,t)}),e("toBase64URI",function(){return g(this,!0)}),e("toBase64URL",function(){return g(this,!0)})},Be={version:Oe,VERSION:Lt,atob:X,atobPolyfill:pe,btoa:j,btoaPolyfill:Se,fromBase64:Q,toBase64:S,encode:S,encodeURI:Ye,encodeURL:Ye,utob:Ce,btou:he,decode:Q,isValid:Mt,fromUint8Array:g,toUint8Array:ye,extendString:ke,extendUint8Array:we,extendBuiltins:()=>{ke(),we()}},yt={encode:Ut,decode:Be.decode};function Ut(e,t={}){const{urlSafe:r=!1}=t;return Be.encode(e,r)}function gt(e){const t=Bt(e),r=t.exp*1e3;if(Date.now()>r)throw new Error(`${kt}. Expiration date: ${new Date(r).toISOString()}`);return t}const ve="The provided `clientToken`",kt=`${ve} has expired`,wt=`${ve} is malformed`;function Bt(e){try{const[t,r]=e.split("."),n=r||t;return JSON.parse(yt.decode(n))}catch{throw new Error(wt)}}const vt="v2.50.4",bt=(e,t,r)=>({"primer-client-token":e,"primer-sdk-client":"WEB","primer-sdk-version":vt,"primer-sdk-checkout-session-id":t,...r&&{"x-api-version":r}});async function Ht(e,t,r){const{accessToken:n,configurationUrl:o,analyticsUrlV2:i}=gt(e),A=V({checkoutSessionId:t,url:i}),s=Je(),_=s!==R.LEGACY?s:"2.3";A.timerStart({id:"CONFIGURATION_LOADING"});try{const{data:a,source:E}=await lt(`${o}/?withDisplayMetadata=true`,{checkoutSessionId:t,headers:bt(n,t,_),retryConfig:{enabled:!0},cacheConfig:r});return A.timerEnd({id:"CONFIGURATION_LOADING",context:{source:E}}),a}catch(a){const E=a instanceof Error?a.message:"Unknown error occurred";throw new Error(`Failed to initialize client: ${E}`)}}function be(e){return e instanceof Error?{errorBody:e.message,stacktrace:e.stack}:typeof e=="object"&&e!==null&&"message"in e?{errorBody:String(e.message),stacktrace:"stack"in e?String(e.stack):void 0}:{errorBody:String(e||"Unknown error")}}function k({checkoutSessionId:e,analytics:t,error:r,reporter:n}){t?.crashEvent?t.crashEvent({...be(r),reporter:n}):e&&Z(e,r,n)}async function Z(e,t,r){const n=te,o=await re(I.CRASH_EVENT,{...be(t),reporter:r},{checkoutSessionId:e});try{await fetch(n,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(o)})}catch(i){console.error("Failed to post crash event",i)}}const He=Symbol.for("initGlobalErrorMonitoringLoaded"),xe=(e,t)=>{typeof window<"u"&&window[He]||(window[He]=!0,window.addEventListener("error",r=>{xt(r)||Ft(r)&&k({checkoutSessionId:e,analytics:t,error:r.error,reporter:"window.onerror"})}),window.addEventListener("unhandledrejection",r=>{const n=r.reason||new Error("Unhandled promise rejection");Gt(n)&&k({checkoutSessionId:e,analytics:t,error:n,reporter:"unhandledrejection"})}))},xt=e=>e.message==="Script error."||!e.filename||e.lineno===0,Ft=e=>{const t=e.filename;return!!(t&&q(t)&&new D(e.error).isReported)},Gt=e=>{if(e&&typeof e=="object"&&"stack"in e&&typeof e.stack=="string"){const t=D.from(e);if(t.isReported)return!1;if("fileName"in e&&typeof e.fileName=="string"){const n=e.fileName;if(q(n))return!0}return Vt(t.stack).some(q)}return!1},q=e=>{try{return new URL(e,window.location.origin).hostname.endsWith(".primer.io")}catch{return!1}},Vt=e=>{if(!e)return[];const t=e.split(`
2
+ `),r=[],n=/^\s*at\s+(?:.*?\s+)?\(?(.+?):\d+:\d+\)?$/;for(const o of t){const i=o.match(n);if(i&&i[1])r.push(i[1]);else{const A=/@(.*?):\d+:\d+$/,s=o.match(A);s&&s[1]&&r.push(s[1])}}return r};function Kt(e,t){const r=document.createElement(e);return Object.entries(t).forEach(([n,o])=>r.setAttribute(n,o)),r}function Fe(e,t,r){return document.querySelector(`${e}[${t}^="${r}"]`)}async function Ge(e,t,r,n,o,i){const{analytics:A,name:s=t,retryConfig:_}=i;await _e(()=>new Promise((E,f)=>{const N=Fe(e,r,t)||Kt(e,{...n,[r]:t});N.onload=()=>{A?.sdkFunctionEvent({name:s,params:[`${e.charAt(0).toUpperCase()+e.slice(1)} loaded successfully: ${t}`]}),E()},N.onerror=()=>{N.remove(),f(new Error(`${o}: ${t}`))},N.parentNode||document.head.appendChild(N)}),_,E=>A?.messageEvent({...E,url:t}))}function Wt(e,t={}){return Fe("script","src",e)&&window.__Primer?(t.analytics?.sdkFunctionEvent({name:t.name??e,params:["Script already loaded"]}),Promise.resolve()):Ge("script",e,"src",{...t.attributes,async:"",crossorigin:"anonymous"},"Can't load Primer SDK",t)}function $t(e,t={}){return Array.from(document.styleSheets).some(r=>r.href===e)?(t.analytics?.sdkFunctionEvent({name:t.name??e,params:["Stylesheet already loaded"]}),Promise.resolve()):Ge("link",e,"href",{...t.attributes,rel:"stylesheet"},"Can't load Primer SDK's Stylesheet",t)}let h;async function Ve(e){return h||(h=Promise.all([Wt("https://sdk.primer.io/web/v2.50.4/PrimerCoreSDK.min.js",{analytics:e,name:"loadPrimerScript"}),$t("https://sdk.primer.io/web/v2.50.4/Checkout.css",{analytics:e,name:"loadPrimerCss"})]).then(()=>{const n=window.__Primer;return delete window.__Primer,n}).catch(n=>{throw h=void 0,n}),h)}const jt=async()=>{const e=$();try{const t=l(e);try{xe(e,t),t.sdkFunctionEvent({name:"preloadPrimer"}),t.timerStart({id:x.preloadPrimer}),await Ve(t),t.timerEnd({id:x.preloadPrimer})}catch(r){const n=D.from(r);throw n.isReported||(k({checkoutSessionId:e,analytics:t,error:n,reporter:"preloadPrimer level 1"}),n.markAsReported()),n}}catch(t){const r=D.from(t);throw r.isReported||(Z(e,r,"preloadPrimer level 0"),r.markAsReported()),r}},zt="v2.50.4",Xt=J("createHeadless"),Qt=J("showUniversalCheckout"),Zt=J("showVaultManager");function J(e){return async(...[t,r,...n])=>{qe(r?.apiVersion);const o=$();try{const i=l(o);try{xe(o,i),i.sdkFunctionEvent({name:e,params:[t,r,...n]}),i.timerStart({id:x[e]});const[A,s]=await Promise.all([Ht(t,o,r?.clientSessionCachingEnabled?{key:t,usePrimerSessionCacheTtlHeader:!0}:void 0),Ve(i)]);return s[e](A,o,t,r,...n)}catch(A){const s=D.from(A);throw s.isReported||(k({checkoutSessionId:o,analytics:i,error:s,reporter:"lazyLoad level 1"}),s.markAsReported()),s}}catch(i){const A=D.from(i);throw A.isReported||(Z(o,A,"lazyLoad level 0"),A.markAsReported()),A}}}var qt=(e=>(e.LOADING="Loading",e.NO_PAYMENT_METHOD="NoPaymentMethod",e.THREE_DS="UniversalCheckout/3ds",e.CHOOSE_PAYMENT_METHOD="UniversalCheckout/Home",e.MANAGE_PAYMENT_METHODS="VaultManager/Home",e.DIRECT_DEBIT_FORM="DirectDebit/Form",e.DIRECT_DEBIT_MANDATE="DirectDebit/Mandate",e.CREDIT_CARD_FORM="CreditCard/Form",e.SUCCESS_PAYMENT_METHOD="UniversalCheckout/Success/PaymentMethod",e.SUCCESS_CHECK="UniversalCheckout/Success/Check",e))(qt||{}),Jt=(e=>(e.ROOT="primer-checkout",e.ROOT_CONTENT="primer-checkout-content",e.SUBMIT_BUTTON="primer-checkout-submit-button",e.THREE_DS_MODAL="primer-checkout-3ds-modal",e.VAULT="primer-checkout-vault",e.VAULT_INLINE="primer-checkout-vault-inline",e.NAVIGATE_PAYMENT_METHODS="primer-checkout-navigate-to-payment-methods",e.DIVIDER="primer-checkout-payment-method-divider",e.APM_BUTTONS="primer-checkout-apm-button-container",e.CARDHOLDER_NAME="primer-checkout-cardholder-name",e.CARDHOLDER_NAME_INPUT="primer-checkout-card-cardholder-name-input",e.ACTIONS="primer-checkout-actions",e.ACTIONS_MENU="primer-checkout-actions-menu",e.SAVE_PAYMENT_METHOD_CHECKBOX="primer-checkout-save-payment-method-input",e.SAVE_PAYMENT_METHOD_FIELD="primer-checkout-save-payment-method-field",e.SAVED_PAYMENT_METHODS_EMPTY="primer-checkout-saved-payment-methods-empty-text",e.CARD_FORM="primer-checkout-card-form",e.DD_SWITCH="primer-checkout-switch-dd-inputs",e.DD_IBAN_FIELD="primer-checkout-dd-iban-field",e.DD_LOCAL_FIELD="primer-checkout-dd-local-fields",e.DD_CUSTOMER_NAME_INPUT="primer-checkout-dd-customer-name-input",e.DD_CUSTOMER_EMAIL_INPUT="primer-checkout-dd-customer-email-input",e.DD_CUSTOMER_ADDRESS_LINE1="primer-checkout-dd-customer-address-input",e.DD_CUSTOMER_ADDRESS_LINE2="primer-checkout-dd-customer-address-line2-input",e.DD_CUSTOMER_ADDRESS_CITY="primer-checkout-dd-customer-city-input",e.DD_CUSTOMER_ADDRESS_POSTAL_CODE="primer-checkout-dd-customer-postal-code-input",e.DD_IBAN_INPUT="primer-checkout-dd-iban-input",e.DD_ACCOUNT_NUMBER_INPUT="primer-checkout-dd-account-number-input",e.DD_BANK_CODE_INPUT="primer-checkout-dd-bank-code-input",e.DD_BRANCH_CODE_INPUT="primer-checkout-dd-branch-code-input",e.DD_MANDATE_SMALL_PRINT="primer-checkout-small-print",e.ERROR_MESSAGE="primer-checkout-error-message",e))(Jt||{}),er=(e=>(e.TOKEN="PrimerCheckout__token",e.HIDDEN="PrimerCheckout--hidden",e.FOCUSED="PrimerCheckout--focused",e.SELECTED="PrimerCheckout--selected",e.LOADING="PrimerCheckout--loading",e.ERROR="PrimerCheckout--error",e.CARD_TYPE="PrimerCheckout__cardType",e.SAVED_PAYMENT_METHOD="PrimerCheckout__savedPaymentMethod",e.SAVED_PAYMENT_METHOD_CONTAINER="PrimerCheckout__savedPaymentMethodContainer",e.APM_BUTTON="PrimerCheckout__apmButton",e.EDIT_BUTTON="PrimerCheckout__editButton",e.MENU="PrimerCheckout__dropDownMenu",e.MENU_ITEM="PrimerCheckout__dropDownMenuItem",e.PAYMENT_METHOD_MENU_ITEM="PrimerCheckout__paymentMethodDropDownMenuItem",e.DELETE_PAYMENT_METHOD_BUTTON="PrimerCheckout__paymentMethodDropDownMenuItem__deleteButton",e.ENTER="PrimerCheckout--enter",e.ENTERING="PrimerCheckout--entering",e.ENTERED="PrimerCheckout--entered",e.EXIT="PrimerCheckout--exit",e.EXITING="PrimerCheckout--exiting",e.EXITED="PrimerCheckout--exited",e))(er||{}),Ke=(e=>(e.CHECKOUT="CHECKOUT",e.HEADLESS_CHECKOUT="HEADLESS_CHECKOUT",e.MANAGE_PAYMENT_METHODS="MANAGE_PAYMENT_METHODS",e))(Ke||{}),We=(e=>(e.DEFAULT="DEFAULT",e.PREFER_VAULT="PREFER_VAULT",e))(We||{}),tr=(e=>(e.TOKENIZE_STARTED="tokenize-started",e.TOKENIZE_ERROR="tokenize-error",e.TOKENIZE_SUCCESS="tokenize-success",e.TOKENIZE_DID_NOT_START="tokenize-did-not-start",e))(tr||{}),$e=(e=>(e.SUCCESS="AUTH_SUCCESS",e.FAILED="AUTH_FAILED",e.SKIPPED="SKIPPED",e.CHALLENGE="CHALLENGE",e))($e||{});const w={WORLDPAY_IDEAL:"WORLDPAY_IDEAL",AUTOMATED_CLEARING_HOUSE:"AUTOMATED_CLEARING_HOUSE",ADYEN_KLARNA:"ADYEN_KLARNA",ADYEN_BANCONTACT_CARD:"ADYEN_BANCONTACT_CARD",PAY_NL_KAARTDIRECT:"PAY_NL_KAARTDIRECT",ADYEN_EPS:"ADYEN_EPS",ADYEN_BANCONTACT_PAYCONIQ:"ADYEN_BANCONTACT_PAYCONIQ",OMISE_PROMPTPAY:"OMISE_PROMPTPAY",OMISE_TRUEMONEY:"OMISE_TRUEMONEY",ADYEN_MULTIBANCO:"ADYEN_MULTIBANCO",PACYPAY_WECHAT:"PACYPAY_WECHAT",PACYPAY_ALIPAY:"PACYPAY_ALIPAY",ADYEN_MBWAY:"ADYEN_MBWAY",XENDIT_DANA:"XENDIT_DANA",XENDIT_SHOPEEPAY:"XENDIT_SHOPEEPAY",ADYEN_PAYSHOP:"ADYEN_PAYSHOP",ADYEN_PAYTRAIL:"ADYEN_PAYTRAIL",CLEARPAY:"CLEARPAY",RAPYD_FAST:"RAPYD_FAST",RAPYD_PROMPTPAY:"RAPYD_PROMPTPAY",RAPYD_GCASH:"RAPYD_GCASH",RAPYD_POLI:"RAPYD_POLI",RAPYD_GRABPAY:"RAPYD_GRABPAY",PRIMER_PAYPAL:"PRIMER_PAYPAL",TWOC2P:"TWOC2P",NETS:"NETS",STRIPE_ACH:"STRIPE_ACH",STRIPE_GIROPAY:"STRIPE_GIROPAY",MOLLIE_GIROPAY:"MOLLIE_GIROPAY",MOLLIE_EPS:"MOLLIE_EPS",PAY_NL_EPS:"PAY_NL_EPS",PAY_NL_P24:"PAY_NL_P24",MOLLIE_P24:"MOLLIE_P24",MOLLIE_SOFORT:"MOLLIE_SOFORT",COINBASE:"COINBASE",OPENNODE:"OPENNODE",MOLLIE_GIFT_CARD:"MOLLIE_GIFTCARD",XFERS_PAYNOW:"XFERS_PAYNOW",CARD:"PAYMENT_CARD",APPLE_PAY:"APPLE_PAY",GOOGLE_PAY:"GOOGLE_PAY",PAYPAL:"PAYPAL_ORDER",PAYPAL_VAULTED:"PAYPAL_BILLING_AGREEMENT",GO_CARDLESS:"GOCARDLESS",PAY_NL_IDEAL:"PAY_NL_IDEAL",PAY_NL_SOFORT_BANKING:"PAY_NL_SOFORT_BANKING",PAY_NL_BANCONTACT:"PAY_NL_BANCONTACT",PAY_NL_PAYPAL:"PAY_NL_PAYPAL",PAY_NL_CREDIT_TRANSFER:"PAY_NL_CREDIT_TRANSFER",PAY_NL_DIRECT_DEBIT:"PAY_NL_DIRECT_DEBIT",PAY_NL_GIROPAY:"PAY_NL_GIROPAY",PAY_NL_PAYCONIQ:"PAY_NL_PAYCONIQ",HOOLAH:"HOOLAH",ADYEN_BLIK:"ADYEN_BLIK",ADYEN_VIPPS:"ADYEN_VIPPS",ADYEN_GIROPAY:"ADYEN_GIROPAY",ADYEN_SOFORT:"ADYEN_SOFORT",ADYEN_IDEAL:"ADYEN_IDEAL",ADYEN_TRUSTLY:"ADYEN_TRUSTLY",ADYEN_ALIPAY:"ADYEN_ALIPAY",ADYEN_TWINT:"ADYEN_TWINT",ADYEN_MOBILEPAY:"ADYEN_MOBILEPAY",MOLLIE_BANCONTACT:"MOLLIE_BANCONTACT",MOLLIE_IDEAL:"MOLLIE_IDEAL",BUCKAROO_GIROPAY:"BUCKAROO_GIROPAY",BUCKAROO_EPS:"BUCKAROO_EPS",BUCKAROO_SOFORT:"BUCKAROO_SOFORT",BUCKAROO_BANCONTACT:"BUCKAROO_BANCONTACT",BUCKAROO_IDEAL:"BUCKAROO_IDEAL",ATOME:"ATOME",KLARNA_CUSTOMER_TOKEN:"KLARNA_CUSTOMER_TOKEN"},p={WORLDPAY_IDEAL:"WORLDPAY_IDEAL",STRIPE_ACH:"STRIPE_ACH",STRIPE_IDEAL:"STRIPE_IDEAL",ADYEN_KLARNA:"ADYEN_KLARNA",ADYEN_BANCONTACT_CARD:"ADYEN_BANCONTACT_CARD",PAY_NL_KAARTDIRECT:"PAY_NL_KAARTDIRECT",ADYEN_EPS:"ADYEN_EPS",ADYEN_BANCONTACT_PAYCONIQ:"ADYEN_BANCONTACT_PAYCONIQ",OMISE_PROMPTPAY:"OMISE_PROMPTPAY",OMISE_TRUEMONEY:"OMISE_TRUEMONEY",ADYEN_MULTIBANCO:"ADYEN_MULTIBANCO",PACYPAY_WECHAT:"PACYPAY_WECHAT",PACYPAY_ALIPAY:"PACYPAY_ALIPAY",ADYEN_MBWAY:"ADYEN_MBWAY",XENDIT_DANA:"XENDIT_DANA",XENDIT_SHOPEEPAY:"XENDIT_SHOPEEPAY",ADYEN_PAYSHOP:"ADYEN_PAYSHOP",ADYEN_PAYTRAIL:"ADYEN_PAYTRAIL",CLEARPAY:"CLEARPAY",RAPYD_FAST:"RAPYD_FAST",RAPYD_PROMPTPAY:"RAPYD_PROMPTPAY",RAPYD_GCASH:"RAPYD_GCASH",RAPYD_POLI:"RAPYD_POLI",RAPYD_GRABPAY:"RAPYD_GRABPAY",PRIMER_PAYPAL:"PRIMER_PAYPAL",TWOC2P:"TWOC2P",NETS:"NETS",STRIPE_GIROPAY:"STRIPE_GIROPAY",MOLLIE_GIROPAY:"MOLLIE_GIROPAY",MOLLIE_EPS:"MOLLIE_EPS",PAY_NL_EPS:"PAY_NL_EPS",PAY_NL_P24:"PAY_NL_P24",MOLLIE_P24:"MOLLIE_P24",MOLLIE_SOFORT:"MOLLIE_SOFORT",COINBASE:"COINBASE",OPENNODE:"OPENNODE",MOLLIE_GIFT_CARD:"MOLLIE_GIFTCARD",XFERS_PAYNOW:"XFERS_PAYNOW",PAYMENT_CARD:"PAYMENT_CARD",APPLE_PAY:"APPLE_PAY",GOOGLE_PAY:"GOOGLE_PAY",PAYPAL:"PAYPAL",GO_CARDLESS:"GOCARDLESS",KLARNA:"KLARNA",PAY_NL_IDEAL:"PAY_NL_IDEAL",PAY_NL_SOFORT_BANKING:"PAY_NL_SOFORT_BANKING",PAY_NL_BANCONTACT:"PAY_NL_BANCONTACT",PAY_NL_PAYPAL:"PAY_NL_PAYPAL",PAY_NL_CREDIT_TRANSFER:"PAY_NL_CREDIT_TRANSFER",PAY_NL_DIRECT_DEBIT:"PAY_NL_DIRECT_DEBIT",PAY_NL_GIROPAY:"PAY_NL_GIROPAY",PAY_NL_PAYCONIQ:"PAY_NL_PAYCONIQ",HOOLAH:"HOOLAH",ADYEN_BLIK:"ADYEN_BLIK",ADYEN_MOBILEPAY:"ADYEN_MOBILEPAY",ADYEN_VIPPS:"ADYEN_VIPPS",ADYEN_GIROPAY:"ADYEN_GIROPAY",ADYEN_SOFORT:"ADYEN_SOFORT",ADYEN_IDEAL:"ADYEN_IDEAL",ADYEN_TRUSTLY:"ADYEN_TRUSTLY",ADYEN_ALIPAY:"ADYEN_ALIPAY",ADYEN_TWINT:"ADYEN_TWINT",ADYEN_BANK_TRANSFER:"ADYEN_BANK_TRANSFER",MOLLIE_BANCONTACT:"MOLLIE_BANCONTACT",MOLLIE_IDEAL:"MOLLIE_IDEAL",BUCKAROO_GIROPAY:"BUCKAROO_GIROPAY",BUCKAROO_EPS:"BUCKAROO_EPS",BUCKAROO_SOFORT:"BUCKAROO_SOFORT",BUCKAROO_BANCONTACT:"BUCKAROO_BANCONTACT",BUCKAROO_IDEAL:"BUCKAROO_IDEAL",ATOME:"ATOME"},Nr={PAYMENT_CARD:"PAYMENT_CARD",ADYEN_BANCONTACT_CARD:"ADYEN_BANCONTACT_CARD"},rr={SINGLE_USE:"SINGLE_USE",MULTI_USE:"MULTI_USE"},je={[w.PAYPAL_VAULTED]:p.PAYPAL,[w.KLARNA_CUSTOMER_TOKEN]:p.KLARNA,[w.AUTOMATED_CLEARING_HOUSE]:p.STRIPE_ACH},Rr=e=>{if(Object.values(p).includes(e))return e;if(je[e])return je[e]};var ze=(e=>(e.INITIALIZATION_ERROR="INITIALIZATION_ERROR",e.NO_PAYMENT_METHODS="NO_PAYMENT_METHODS",e.PRIMER_TEARDOWN="PRIMER_TEARDOWN",e.PRIMER_SERVER_ERROR="PRIMER_SERVER_ERROR",e.THREE_DS_AUTH_FAILED="THREE_DS_AUTH_FAILED",e.TOKENIZATION_ERROR="TOKENIZATION_ERROR",e.DUPLICATE_PAYMENT_METHOD_ERROR="DUPLICATE_PAYMENT_METHOD_ERROR",e.CARD_NUMBER_ERROR="CARD_NUMBER_ERROR",e.PAYMENT_METHOD_NOT_SETUP="PAYMENT_METHOD_NOT_SETUP",e.PAYMENT_METHOD_NOT_PROVIDED="PAYMENT_METHOD_NOT_PROVIDED",e.PAYMENT_METHOD_NOT_COMPATIBLE="PAYMENT_METHOD_NOT_COMPATIBLE",e.RESUME_ERROR="RESUME_ERROR",e.VALIDATION_ERROR="VALIDATION_ERROR",e.PAYMENT_FAILED="PAYMENT_FAILED",e.PAYMENT_CREATION_ABORTED="PAYMENT_CREATION_ABORTED",e.PAYMENT_CREATION_DISABLED="PAYMENT_CREATION_DISABLED",e.CLIENT_SESSION_UPDATE_ERROR="CLIENT_SESSION_UPDATE_ERROR",e.INVALID_ARGUMENT="INVALID_ARGUMENT",e.VAULT_FETCH="VAULT_FETCH",e.VAULT_DELETE="VAULT_DELETE",e.HEADLESS_VAULT_MANAGER_VALIDATION="HEADLESS_VAULT_MANAGER_VALIDATION",e.CARD_FORM_VALIDATION_UNEXPECTED_FIELD="CARD_FORM_VALIDATION_UNEXPECTED_FIELD",e.MISSING_FIRST_NAME_OR_LAST_NAME="MISSING_FIRST_NAME_OR_LAST_NAME",e.MISSING_EMAIL_ADDRESS="MISSING_EMAIL_ADDRESS",e.INVALID_FLOW="INVALID_FLOW",e))(ze||{});class B extends D{static fromErrorCode(t,r){return new B(t,r)}constructor(t,r){super(r.message),this.code=t,this.diagnosticsId=r.diagnosticsId??null,this.data=r.data,this.isFromDeveloper=r.isFromDeveloper??!1,this.name="PrimerClientError",Error.captureStackTrace&&Error.captureStackTrace(this,B)}}function dr(e,t,r){const n=new B(e,t);return r&&(r.messageEvent({message:`${e}: ${t.message}`,messageType:e,severity:"ERROR",diagnosticsId:t.diagnosticsId??void 0,errorId:t.errorId??void 0,data:t.data??void 0,isFromDeveloper:t.isFromDeveloper?.toString(),stack:n.stack}),n.markAsReported()),n}var nr=T(56),Xe=(e=>(e.PAYMENT_METHOD="PAYMENT_METHOD",e.CHECK="CHECK",e))(Xe||{});const or=e=>{const t=e?.mandateData;return t?"fullMandateText"in t:!1};var Qe=(e=>(e.CHANGE="change",e.ERROR="error",e.FOCUS="focus",e.BLUR="blur",e.CLICK="click",e.CLOSE="close",e))(Qe||{}),Ze=(e=>(e.CARD="CARD",e.NATIVE="NATIVE",e.REDIRECT="REDIRECT",e.FORM_WITH_REDIRECT="FORM_WITH_REDIRECT",e.KLARNA="KLARNA",e.ACH="ACH",e))(Ze||{});const ir={SDK_VERSION:zt,createHeadless:Xt,showUniversalCheckout:Qt,showVaultManager:Zt,preloadPrimer:jt}})(),v})());
package/dist/index.d.ts CHANGED
@@ -7,18 +7,6 @@
7
7
  * ensuring backward compatibility.
8
8
  */
9
9
  export type APIVersionOption = "legacy" | "2.4";
10
- declare enum PaymentIntent {
11
- adyenKlarna = "ADYEN_KLARNA",
12
- applePay = "APPLE_PAY",
13
- googlePay = "GOOGLE_PAY",
14
- paypal = "PAYPAL",
15
- directDebit = "DIRECT_DEBIT",
16
- paymentCard = "PAYMENT_CARD",
17
- klarna = "KLARNA",
18
- mollieGiftCard = "MOLLIE_GIFT_CARD",
19
- netsPayByCard = "NETS_PAY_BY_CARD",
20
- payNlKaartdirect = "PAY_NL_KAARTDIRECT"
21
- }
22
10
  export declare const PaymentInstrumentType: {
23
11
  readonly WORLDPAY_IDEAL: "WORLDPAY_IDEAL";
24
12
  readonly AUTOMATED_CLEARING_HOUSE: "AUTOMATED_CLEARING_HOUSE";
@@ -172,70 +160,7 @@ export declare const TokenType: {
172
160
  readonly MULTI_USE: "MULTI_USE";
173
161
  };
174
162
  export type TokenType = (typeof TokenType)[keyof typeof TokenType];
175
- export interface AnalyticsData extends Record<string, any> {
176
- sdkEnvironment?: string;
177
- paymentIntent?: PaymentIntent;
178
- paymentMethod?: PaymentInstrumentType;
179
- amount?: number;
180
- currency?: string;
181
- sdkVersion?: string;
182
- isVault?: boolean;
183
- uxFlow?: string;
184
- sessionId?: string;
185
- }
186
- export interface CrashEventProperties {
187
- errorBody: string;
188
- stacktrace?: string;
189
- reporter?: string;
190
- }
191
163
  export type MessageSeverity = "ERROR" | "DEBUG" | "WARN" | "INFO";
192
- export interface MessageEventProperties {
193
- messageType: string;
194
- message: string;
195
- severity?: MessageSeverity;
196
- diagnosticId?: string;
197
- [k: string]: string | number | undefined;
198
- }
199
- declare enum NetworkCallType {
200
- REQUEST_START = "REQUEST_START",
201
- REQUEST_END = "REQUEST_END"
202
- }
203
- export type NetworkEventProperties = {
204
- id: string;
205
- url: string;
206
- method: string;
207
- errorBody?: string;
208
- responseCode?: number;
209
- duration?: number;
210
- callType: NetworkCallType;
211
- };
212
- export type TimerId = "CONFIGURATION_LOADING" | "HEADLESS_LOADING" | "EXPRESS_LOADING" | "DROP_IN_LOADING" | "VAULT_MANAGER_LOADING" | "PRELOAD_PRIMER_LOADING";
213
- export interface TimerEventProperties {
214
- id: TimerId;
215
- context?: {
216
- [k: string]: string | number | undefined;
217
- };
218
- }
219
- export interface SdkFunctionEventProperties {
220
- name: string;
221
- params?: object;
222
- module?: string;
223
- }
224
- export type V1EventProperties = {
225
- data?: AnalyticsData;
226
- event: string;
227
- };
228
- export type Analytics = {
229
- crashEvent(properties: CrashEventProperties): Promise<void>;
230
- messageEvent(properties: MessageEventProperties): Promise<void>;
231
- networkCallEvent(properties: NetworkEventProperties): Promise<void>;
232
- sdkFunctionEvent(properties: SdkFunctionEventProperties): Promise<void>;
233
- timerStart(properties: TimerEventProperties): Promise<void>;
234
- timerEnd(properties: TimerEventProperties): Promise<void>;
235
- v1Event(properties: V1EventProperties): Promise<void>;
236
- url: string;
237
- };
238
- export type Nullable<T> = T | null;
239
164
  export interface BorderStyle {
240
165
  borderStyle?: string;
241
166
  borderColor?: number | string;
@@ -361,27 +286,6 @@ export interface VaultMenuStyle {
361
286
  confirmButton?: BlockStyle & TextStyle;
362
287
  };
363
288
  }
364
- export interface SceneTransition {
365
- opacity?: string | number;
366
- transform?: string;
367
- transition?: string;
368
- }
369
- export interface SceneTransitionEventStyle {
370
- enter?: SceneTransition;
371
- entering?: SceneTransition;
372
- exit?: SceneTransition;
373
- exiting?: SceneTransition;
374
- }
375
- export interface SceneTransitionStyle extends SceneTransitionEventStyle {
376
- content: {
377
- transition?: string;
378
- };
379
- push?: SceneTransitionEventStyle;
380
- pop?: SceneTransitionEventStyle;
381
- }
382
- export interface InternalStyle {
383
- scene?: SceneTransitionStyle;
384
- }
385
289
  export interface NetworkErrorStyles {
386
290
  button?: {
387
291
  base: BlockStyle & TextStyle;
@@ -416,136 +320,6 @@ export interface CheckoutStyle {
416
320
  processingIndicator?: ProcessingIndicatorStyle;
417
321
  focusCheckoutOnInit?: boolean;
418
322
  }
419
- export interface IFrameMessagePayloadMeta {
420
- source: string;
421
- destination: string | null;
422
- name?: string;
423
- id?: string;
424
- replyTo?: string;
425
- placeholder?: string;
426
- style?: CheckoutStyle;
427
- css?: string;
428
- stylesheets?: Stylesheet[];
429
- ariaLabel?: string;
430
- allowedCardNetworks?: string[];
431
- [x: string]: unknown;
432
- }
433
- export interface IFrameInputMessagePayload<T = unknown> {
434
- type: string;
435
- meta?: Partial<IFrameMessagePayloadMeta>;
436
- payload?: T;
437
- }
438
- export interface IFrameMessagePayload<T = unknown> {
439
- type: string;
440
- meta: IFrameMessagePayloadMeta;
441
- payload: T;
442
- }
443
- export interface Observer {
444
- (event: IFrameMessagePayload): void;
445
- }
446
- declare class Observable {
447
- private observers;
448
- constructor();
449
- onEvent(_event: IFrameMessagePayload): void;
450
- on(type: string, observer: Observer): void;
451
- once(type: string, observer: Observer): void;
452
- notify(event: IFrameMessagePayload): void;
453
- }
454
- declare class IFrameMessageBus extends Observable {
455
- private frames;
456
- constructor();
457
- onEvent(event: IFrameMessagePayload): void;
458
- add(iframe: HTMLIFrameElement): void;
459
- publish(name: string, event: IFrameInputMessagePayload): void;
460
- rpc(name: string, evt: IFrameInputMessagePayload): Promise<IFrameMessagePayload>;
461
- }
462
- export type IFramePlacement = "append" | "prepend";
463
- export interface IFrameFactoryOptions {
464
- messageBus: IFrameMessageBus;
465
- assetsUrl: string;
466
- }
467
- export type CreateIFrameOptionsMeta = {
468
- name: string;
469
- id?: string;
470
- ariaLabel?: string;
471
- placeholder?: string;
472
- css?: string;
473
- stylesheets?: string[] | Stylesheet[];
474
- allowedCardNetworks?: string[];
475
- };
476
- export interface CreateIFrameOptions {
477
- filename: string;
478
- container: string | Element;
479
- placement?: IFramePlacement;
480
- payload?: unknown;
481
- meta: CreateIFrameOptionsMeta;
482
- style?: Record<string, string>;
483
- onReady?: () => void;
484
- }
485
- declare class IFrameFactory {
486
- private id;
487
- private messageBus;
488
- private assetsUrl;
489
- constructor({ messageBus, assetsUrl }: IFrameFactoryOptions);
490
- create({ filename, container, meta, payload, placement, style, onReady, }: CreateIFrameOptions): HTMLIFrameElement | null;
491
- }
492
- declare enum HttpMethod {
493
- GET = "get",
494
- POST = "post",
495
- DELETE = "delete",
496
- PATCH = "PATCH"
497
- }
498
- export interface ApiConfig {
499
- accessToken: string;
500
- analytics: Analytics;
501
- coreUrl: string;
502
- iframes: IFrameFactory;
503
- pciUrl: string;
504
- checkoutSessionId: string;
505
- }
506
- export interface RequestOptions {
507
- maxAttempts?: number;
508
- apiVersion?: string;
509
- }
510
- export interface APIRequestOptions {
511
- method: "get" | "post" | HttpMethod;
512
- url: string;
513
- body?: unknown;
514
- options?: RequestOptions;
515
- }
516
- export interface ValidationError {
517
- description: string;
518
- path: string;
519
- }
520
- export interface ValidationErrorDetail {
521
- model: string;
522
- errors: ValidationError[];
523
- }
524
- export interface APIErrorShape {
525
- message: string;
526
- validationErrors?: ValidationErrorDetail[];
527
- diagnosticsId?: string;
528
- errorId?: string;
529
- }
530
- export interface APIResponse<T = unknown> {
531
- error: Nullable<APIErrorShape>;
532
- data: Nullable<T>;
533
- status: Nullable<number>;
534
- headers: Record<string, string>;
535
- }
536
- declare class Api {
537
- private messageBus;
538
- isReady: Promise<void>;
539
- private checkoutSessionId;
540
- private analytics;
541
- constructor(messageBus: IFrameMessageBus, { analytics, accessToken, coreUrl, iframes, pciUrl, checkoutSessionId, }: ApiConfig);
542
- setAccessToken(accessToken: string): void;
543
- request<T>(payload: APIRequestOptions): Promise<APIResponse<T>>;
544
- post<T = unknown, U = unknown>(url: string, body: T, options?: RequestOptions): Promise<APIResponse<U>>;
545
- get<T>(url: string, options?: RequestOptions): Promise<APIResponse<T>>;
546
- delete<T>(url: string, options?: RequestOptions): Promise<APIResponse<T>>;
547
- patch<T = unknown, U = unknown>(url: string, body: T, options?: RequestOptions): Promise<APIResponse<U>>;
548
- }
549
323
  export interface IVaultedPaymentMethod<T, U extends PaymentInstrumentType> {
550
324
  id: string;
551
325
  analyticsId: string;
@@ -556,44 +330,6 @@ export interface IVaultedPaymentMethod<T, U extends PaymentInstrumentType> {
556
330
  userDescription?: string;
557
331
  }
558
332
  export type VaultedPaymentMethod = IVaultedPaymentMethod<any, any>;
559
- export interface VaultServices {
560
- api: Api;
561
- analytics: Analytics;
562
- }
563
- declare class Vault {
564
- private api;
565
- private analytics;
566
- constructor(services: VaultServices);
567
- fetch(): Promise<VaultedPaymentMethod[]>;
568
- delete(id: string | null): Promise<void>;
569
- }
570
- export type InternalFlowOptions = (UniversalCheckoutOptions | VaultManagerOptions) & HeadlessUniversalCheckoutOptions & {
571
- uxFlow?: string;
572
- newHeadlessOptionsParameter?: boolean;
573
- };
574
- /**
575
- * Configuration options for the retry mechanism
576
- */
577
- export interface RetryConfig {
578
- /** Whether retry is enabled */
579
- enabled: boolean;
580
- }
581
- declare class ScriptLoader {
582
- private readonly scripts;
583
- private readonly timeoutMilliseconds;
584
- constructor();
585
- load(src: string, options?: {
586
- name?: string;
587
- crossOrigin?: "" | "use-credentials";
588
- customAttributes?: Record<string, string>;
589
- retryConfig?: RetryConfig;
590
- analytics?: any;
591
- }): Promise<boolean>;
592
- }
593
- declare enum ImplementationType {
594
- WEB_REDIRECT = "WEB_REDIRECT",
595
- NATIVE_SDK = "NATIVE_SDK"
596
- }
597
333
  declare enum ProductType {
598
334
  DIGITAL = "DIGITAL",
599
335
  PHYSICAL = "PHYSICAL",
@@ -610,16 +346,6 @@ export interface ClientSessionLineItem {
610
346
  taxAmount?: number;
611
347
  taxCode?: string;
612
348
  }
613
- export interface ClientSessionOrder {
614
- countryCode?: string;
615
- currencyCode?: string;
616
- fees?: ClientSessionFeeItem[];
617
- lineItems?: ClientSessionLineItem[];
618
- merchantAmount?: number;
619
- orderId?: string;
620
- shipping?: ClientSessionShipping;
621
- totalOrderAmount: number;
622
- }
623
349
  export interface ClientSessionShipping {
624
350
  amount: number;
625
351
  methodId?: string;
@@ -631,16 +357,6 @@ export interface ClientSessionFeeItem {
631
357
  description?: string;
632
358
  amount: number;
633
359
  }
634
- export interface ClientSessionCustomer {
635
- customerId?: string;
636
- emailAddress?: string;
637
- mobileNumber?: string;
638
- firstName?: string;
639
- lastName?: string;
640
- billingAddress?: ClientSessionAddress;
641
- shippingAddress?: ClientSessionAddress;
642
- taxId?: string;
643
- }
644
360
  export interface ClientSessionAddress {
645
361
  firstName?: string;
646
362
  lastName?: string;
@@ -651,20 +367,6 @@ export interface ClientSessionAddress {
651
367
  countryCode?: string;
652
368
  postalCode?: string;
653
369
  }
654
- export interface ClientSessionPaymentMethodOptions {
655
- options?: PaymentMethodOption[];
656
- orderedAllowedCardNetworks: string[];
657
- vaultOnSuccess: boolean;
658
- }
659
- export interface PaymentMethodOption {
660
- type: string;
661
- surcharge?: number;
662
- networks?: CardNetworkOption[];
663
- }
664
- export interface CardNetworkOption {
665
- type: string;
666
- surcharge?: number;
667
- }
668
370
  export interface ClientSession {
669
371
  orderId?: string;
670
372
  currencyCode?: string;
@@ -692,538 +394,21 @@ export interface ClientSession {
692
394
  vaultOnSuccess?: boolean;
693
395
  };
694
396
  }
695
- export interface InternalClientSession {
696
- clientSessionId: string;
697
- customer: ClientSessionCustomer | null;
698
- paymentMethod: ClientSessionPaymentMethodOptions;
699
- order: ClientSessionOrder;
700
- }
701
- export interface PaymentMethodDisplayMetadata {
702
- button: {
703
- backgroundColor: BackgroundColor;
704
- borderColor: BorderColor;
705
- borderWidth: BorderWidth;
706
- cornerRadius: number;
707
- iconPositionRelativeToText?: "START" | "END";
708
- iconUrl: IconUrl;
709
- text?: string;
710
- textColor?: TextColor;
711
- };
712
- overlay: {
713
- logo: IconUrl;
714
- backgroundColor: BackgroundColor;
715
- };
716
- popup: {
717
- width: number;
718
- height: number;
719
- };
720
- }
721
397
  export interface BackgroundColor {
722
398
  colored: string;
723
399
  dark: string;
724
400
  light: string;
725
401
  }
726
- export interface BorderColor {
727
- dark: string;
728
- light: string;
729
- }
730
- export interface BorderWidth {
731
- colored: number;
732
- dark: number;
733
- light: number;
734
- }
735
402
  export interface IconUrl {
736
403
  colored: string;
737
404
  dark: string;
738
405
  light: string;
739
406
  }
740
- export interface TextColor {
741
- dark: string;
742
- light: string;
743
- }
744
- export interface PaymentMethodConfig {
745
- id: string;
746
- type: PaymentMethodType;
747
- name: string;
748
- implementationType: ImplementationType;
749
- displayMetadata: PaymentMethodDisplayMetadata;
750
- options: {
751
- captureVaultedCardCvv?: boolean;
752
- clientId?: string;
753
- threeDSecureToken?: string;
754
- threeDSecureInitUrl?: string;
755
- threeDSecureProvider?: string;
756
- threeDSecureEnabled?: boolean;
757
- };
758
- forceRedirect?: boolean;
759
- }
760
- export interface CheckoutModuleConfig extends Record<string, any> {
761
- type: string;
762
- options?: Record<string, any>;
763
- }
764
- export interface ClientSessionInfo {
765
- modulesUrl: string;
766
- paymentFlow: PaymentFlow;
767
- paymentMethods: PaymentMethodConfig[];
768
- checkoutModules: CheckoutModuleConfig[];
769
- threeDSecureToken: string | null;
770
- threeDSecureInitUrl: string | null;
771
- threeDSecureProvider: string | null;
772
- threeDSecureEnabled: boolean;
773
- clientSession: InternalClientSession;
774
- env: string;
775
- production: boolean;
776
- isTeardown: boolean;
777
- }
778
- export interface ClientConfiguration {
779
- binDataUrl: string;
780
- checkoutModules: CheckoutModuleConfig[];
781
- clientSession: InternalClientSession;
782
- coreUrl: string;
783
- env: string;
784
- paymentMethods: PaymentMethodConfig[];
785
- pciUrl: string;
786
- primerAccountId: string;
787
- settleOnAuth?: boolean;
788
- }
789
- declare class ClientConfigurationHandler {
790
- private config;
791
- private checkoutSessionId;
792
- constructor(config: ClientConfiguration, checkoutSessionId: string);
793
- fetchClientConfiguration(clientToken: string, cache?: boolean): Promise<ClientConfiguration>;
794
- getCurrentClientConfiguration(): ClientConfiguration;
795
- }
796
- declare enum ClientTokenIntent {
797
- CHECKOUT = "CHECKOUT",
798
- THREEDS_AUTHENTICATION = "3DS_AUTHENTICATION",
799
- PROCESSOR_3DS = "PROCESSOR_3DS",
800
- REDIRECTION_END = "REDIRECTION_END",
801
- STRIPE_ACH_REDIRECTION = "STRIPE_ACH_REDIRECTION"
802
- }
803
- export type CommonClientToken = {
804
- configurationUrl: string;
805
- analyticsUrl?: string;
806
- analyticsUrlV2: string;
807
- accessToken: string;
808
- paymentFlow: PaymentFlow;
809
- exp: number;
810
- };
811
- /**
812
- * Start: Stripe ACH vaulted intent client token
813
- */
814
- export type StripeACHVaultedIntentClientToken = {
815
- intent: ClientTokenIntent.STRIPE_ACH_REDIRECTION;
816
- sdkCompleteUrl: string;
817
- };
818
- /**
819
- * End: Stripe ACH vaulted intent client token
820
- */
821
- export type IntentClientToken = {
822
- intent: ClientTokenIntent.CHECKOUT | undefined;
823
- } | {
824
- intent: ClientTokenIntent.THREEDS_AUTHENTICATION;
825
- tokenId: string;
826
- threeDSProvider: string;
827
- threeDSToken: string;
828
- threeDSInitUrl: string;
829
- } | {
830
- intent: ClientTokenIntent.REDIRECTION_END;
831
- paymentId: string;
832
- resumeToken: string;
833
- } | StripeACHVaultedIntentClientToken | ({
834
- intent: string;
835
- } & Record<string, unknown>);
836
- export type DecodedClientToken = CommonClientToken & IntentClientToken;
837
- export type NewClientTokenListener = (decodedClientToken: DecodedClientToken) => void;
838
- export interface IClientTokenHandler {
839
- processClientToken(clientToken: string): DecodedClientToken;
840
- getOriginalClientToken(): string | undefined;
841
- getCurrentClientToken(): string | undefined;
842
- getCurrentDecodedClientToken(): DecodedClientToken | undefined;
843
- addNewClientTokenListener(listener: NewClientTokenListener): any;
844
- removeNewClientTokenListener(listener: NewClientTokenListener): any;
845
- }
846
- export interface LongPollServices {
847
- api: Api;
848
- }
849
- export interface LongPollOptions<T> {
850
- url: string;
851
- timeout: number;
852
- pollInterval: number;
853
- predicate(response: T): boolean;
854
- }
855
- declare class LongPoll {
856
- private api;
857
- private isStarted;
858
- constructor(services: LongPollServices);
859
- start<T>(options: LongPollOptions<T>): Promise<T | null>;
860
- stop(): void;
861
- private request;
862
- private tick;
863
- }
864
- export type Listener<K> = (state: K, action?: Action<K>) => void;
865
- export type Unsubscribe = () => void;
866
- export type Action<K> = (state: K, ...args: any[]) => void;
867
- export type BoundAction = (...args: any[]) => void;
868
- export interface IStore<K> {
869
- action(action: Action<K>): BoundAction;
870
- setState<U extends keyof K>(update: Pick<K, U>, overwrite?: boolean, action?: Action<K>): void;
871
- subscribe(f: Listener<K>): Unsubscribe;
872
- unsubscribe(f: Listener<K>): void;
873
- getState(): K;
874
- }
875
- export interface NodeLike {
876
- id: string;
877
- }
878
- declare enum SceneStage {
879
- Init = "init",
880
- Mounting = "mounting",
881
- Entering = "entering",
882
- Entered = "entered",
883
- Exiting = "exiting",
884
- Exited = "exited"
885
- }
886
- export type SceneState = {
887
- stage: SceneStage;
888
- promise: {
889
- resolve: () => void;
890
- reject: () => void;
891
- };
892
- };
893
- export interface IBaseState extends Record<string, any> {
894
- }
895
- export interface IBaseStore {
896
- getState(): IBaseState;
897
- subscribe(listener: any): any;
898
- }
899
- export type PrimitiveType = number | string | boolean;
900
- export type AtomicObject = Function | Promise<any> | Date | RegExp;
901
- export type IfAvailable<T, Fallback = void> = true | false extends (T extends never ? true : false) ? Fallback : keyof T extends never ? Fallback : T;
902
- export type WeakReferences = IfAvailable<WeakMap<any, any>> | IfAvailable<WeakSet<any>>;
903
- export type WritableDraft<T> = {
904
- -readonly [K in keyof T]: Draft<T[K]>;
905
- };
906
- export type Draft<T> = T extends PrimitiveType ? T : T extends AtomicObject ? T : T extends IfAvailable<ReadonlyMap<infer K, infer V>> ? Map<Draft<K>, Draft<V>> : T extends IfAvailable<ReadonlySet<infer V>> ? Set<Draft<V>> : T extends WeakReferences ? T : T extends object ? WritableDraft<T> : T;
907
- declare class BaseStore<K extends IBaseState> implements IBaseStore {
908
- readonly stateType: K;
909
- readonly state: IStore<K>;
910
- readonly subStores: Record<string, IBaseStore>;
911
- private eventHandlers;
912
- constructor(defaultState: K);
913
- setState<U extends keyof K>(update: Pick<K, U>, overwrite?: boolean, action?: Action<K>): void;
914
- produceState(recipe: (draft: Draft<K>) => Pick<K, never> | void): void;
915
- subscribe(f: Listener<K>): Unsubscribe;
916
- unsubscribe(f: Listener<K>): void;
917
- getState(): K;
918
- registerStore<U extends IBaseStore>(id: string, store: U): void;
919
- getStore<U extends IBaseStore>(id: string): U | undefined;
920
- protected registerEventHandler<T extends IBaseStore>(eventId: string, eventHandler: (store: T) => any): void;
921
- protected registerEventHandlers<T extends IBaseStore>(eventHandlers: Record<string, (store: T) => any>): void;
922
- on(eventName: string, listener: () => void): void;
923
- off(eventName: string, listener: () => void): void;
924
- }
925
- declare enum SceneEnum {
926
- LOADING = "Loading",
927
- NO_PAYMENT_METHOD = "NoPaymentMethod",
928
- THREE_DS = "UniversalCheckout/3ds",
929
- CHOOSE_PAYMENT_METHOD = "UniversalCheckout/Home",
930
- MANAGE_PAYMENT_METHODS = "VaultManager/Home",
931
- DIRECT_DEBIT_FORM = "DirectDebit/Form",
932
- DIRECT_DEBIT_MANDATE = "DirectDebit/Mandate",
933
- CREDIT_CARD_FORM = "CreditCard/Form",
934
- SUCCESS_PAYMENT_METHOD = "UniversalCheckout/Success/PaymentMethod",
935
- SUCCESS_CHECK = "UniversalCheckout/Success/Check"
936
- }
937
407
  export declare enum CheckoutUXFlow {
938
408
  CHECKOUT = "CHECKOUT",
939
409
  HEADLESS_CHECKOUT = "HEADLESS_CHECKOUT",
940
410
  MANAGE_PAYMENT_METHODS = "MANAGE_PAYMENT_METHODS"
941
411
  }
942
- export interface IStyleManagerOptions {
943
- isRtlLocale?: boolean;
944
- }
945
- export interface IStyleManager {
946
- setStyle(style?: CheckoutStyle, internalStyle?: InternalStyle, options?: IStyleManagerOptions): void;
947
- getStyle(): CheckoutStyle | undefined;
948
- getHostedFieldStyle(): string | null;
949
- getApmButtonStyle(): PaymentMethodButtonStyle | null;
950
- }
951
- export type PaymentMethodSpecs = {
952
- key: string;
953
- buttonManagedByPaymentMethod: boolean;
954
- canVault: boolean;
955
- hasExportedButtonOptions: boolean;
956
- homeScene?: string;
957
- implementationType?: ImplementationType;
958
- };
959
- declare class BasePaymentMethod {
960
- static specs: PaymentMethodSpecs;
961
- readonly type: PaymentMethodType;
962
- displayName: string;
963
- container: Element | null;
964
- remoteConfig: any;
965
- protected options: Record<string, any> | undefined;
966
- protected constructor(type: PaymentMethodType, name: string);
967
- static create: (_context: any, _options: Record<string, any>, _remoteConfig: any, _styleManager?: IStyleManager) => BasePaymentMethod;
968
- get specs(): PaymentMethodSpecs;
969
- setOption(key: any, value: any): void;
970
- setupAndValidate(): Promise<boolean>;
971
- mount(): Promise<boolean>;
972
- tokenize(_options?: any): Promise<void>;
973
- validate(): Promise<Validation>;
974
- setDisabled(_disabled: boolean): Promise<void>;
975
- focus(): void;
976
- blur(): void;
977
- getPaymentElement(): Element | null;
978
- getStore(): IBaseStore | undefined;
979
- getCustomButtonText(): string | undefined;
980
- }
981
- export interface ITranslation {
982
- _(key: string, options?: {
983
- defaultMessage: string;
984
- } & Record<string, unknown>): any;
985
- }
986
- declare class Translation implements ITranslation {
987
- private translator;
988
- private defaultTranslation?;
989
- constructor(translator?: any, defaultTranslation?: TranslationUnit);
990
- _(key: string, options?: {
991
- defaultMessage?: string;
992
- } & Record<string, unknown>): string;
993
- }
994
- export type TranslationUnit = Translation & Record<string, any>;
995
- export interface IClientSessionStore {
996
- setClientSession(clientSession: InternalClientSession): any;
997
- getClientSession(): InternalClientSession | null;
998
- }
999
- export type OptionStoreListenerEventName = "options.purchaseInfo" | "options.customerDetails" | "options.businessDetails" | "options.orderDetails";
1000
- export type OrderDetailsWithInitiator = {
1001
- orderDetails: ClientSessionOrder | null;
1002
- orderDetailsInitiator: string | null;
1003
- };
1004
- export interface IOptionStoreSetter {
1005
- setPurchaseInfo(purchaseInfo: PurchaseInformation | VaultInformation | null): any;
1006
- setCustomerDetails(customerDetails: ClientSessionCustomer | null, initiator: string | null): any;
1007
- setBusinessDetails(businessDetails: BusinessDetails | null, initiator: string | null): any;
1008
- setOrderDetails(orderDetails: ClientSessionOrder | null, initiator: string | null): any;
1009
- }
1010
- export interface IOptionStoreListener {
1011
- getPurchaseInfo(): PurchaseInformation | VaultInformation | null;
1012
- getCustomerDetails(): ClientSessionCustomer | null;
1013
- getBusinessDetails(): BusinessDetails | null;
1014
- getOrderDetails(): OrderDetailsWithInitiator;
1015
- on(eventName: OptionStoreListenerEventName, listener: () => void): any;
1016
- off(eventName: OptionStoreListenerEventName, listener: () => void): any;
1017
- }
1018
- export interface ICheckoutState extends IBaseState {
1019
- isLoading: boolean;
1020
- isProcessing: boolean;
1021
- locale: SupportedLocale;
1022
- tokens: VaultedPaymentMethod[];
1023
- translation: TranslationUnit;
1024
- paymentResponse: any;
1025
- currentToken: PaymentMethodToken | null;
1026
- scene: {
1027
- onEntering?: (sceneId: string) => void;
1028
- transition: SceneTransitionOptions | false;
1029
- };
1030
- apms: {
1031
- selected: string | null;
1032
- items: NodeLike[];
1033
- };
1034
- vault: {
1035
- items: VaultListItem[];
1036
- selected: string | null;
1037
- state: {
1038
- metadata?: InputMetadata;
1039
- securityCode?: string;
1040
- };
1041
- };
1042
- options: {
1043
- purchaseInfo: PurchaseInformation | VaultInformation | null;
1044
- customerDetails: CustomerDetails | null;
1045
- businessDetails: BusinessDetails | null;
1046
- orderDetails: ClientSessionOrder | null;
1047
- orderDetailsInitiator: string | null;
1048
- showSavePaymentMethod: boolean;
1049
- };
1050
- isTokenizationEnabled: boolean;
1051
- clientSession: InternalClientSession | null;
1052
- clientSessionInfo: ClientSessionInfo | null;
1053
- sceneStates: Partial<Record<SceneEnum, SceneState>>;
1054
- sceneAction?: string;
1055
- selectedVaultedPaymentMethod?: string;
1056
- error: {
1057
- message: string | null;
1058
- hideOnScreenEntered: boolean;
1059
- };
1060
- smallPrint: {
1061
- message: string | null;
1062
- };
1063
- paymentMethods: Record<string, BasePaymentMethod>;
1064
- checkoutModules: any[];
1065
- submitButton: {
1066
- isDisabled: boolean;
1067
- isVisible: boolean;
1068
- message: string;
1069
- canDisplayAmount: boolean;
1070
- };
1071
- form: {
1072
- inputLabelsVisible: boolean;
1073
- };
1074
- card: {
1075
- flow: CardPreferredFlow;
1076
- };
1077
- }
1078
- declare class CheckoutStore extends BaseStore<ICheckoutState> implements IOptionStoreSetter, IOptionStoreListener, IClientSessionStore {
1079
- private submitButtonEventListener;
1080
- private vault;
1081
- private options;
1082
- constructor(defaultState: ICheckoutState, options: UniversalCheckoutOptions | VaultManagerOptions);
1083
- setVault(vault: Vault): void;
1084
- setIsLoading(isLoading: boolean): void;
1085
- setIsProcessing(isProcessing: boolean): void;
1086
- setLocale(locale: SupportedLocale): void;
1087
- setPaymentResponse(paymentResponse: any): void;
1088
- getLocale(): SupportedLocale;
1089
- getIsRtlLocale(): boolean;
1090
- getPaymentResponse(): any;
1091
- setIsTokenizationEnabled(isEnabled: boolean): void;
1092
- getIsTokenizationEnabled(): boolean;
1093
- setScene(scene: string, action?: string): Promise<void>;
1094
- setSceneTransition(transitionOptions: SceneTransitionOptions | false | undefined): void;
1095
- handleSceneEntering(scene: string): void;
1096
- handleSceneEntered(scene: string): void;
1097
- handleSceneExited(scene: string): void;
1098
- handleSceneMounted(scene: string): void;
1099
- getCurrentScene(): string;
1100
- setCurrentToken(token: PaymentMethodToken | null): void;
1101
- triggerSubmitButtonClick(): void;
1102
- addSubmitButtonClickListener(listener: EventListener | EventListenerObject | null): void;
1103
- removeSubmitButtonClickListener(listener: EventListener | EventListenerObject | null): void;
1104
- setSubmitButtonDisabled(disabled: boolean): void;
1105
- setSubmitButtonVisible(isVisible: boolean): void;
1106
- setSubmitButtonContent(content: string): void;
1107
- setSubmitButtonCanDisplayAmount(isVisible: boolean): void;
1108
- setCardFlow(flow: CardPreferredFlow): void;
1109
- setInputLabelsVisible(visible: boolean): void;
1110
- setErrorMessage(content: string | null): void;
1111
- setHideErrorMessageOnSceneEntered(hideOnSceneEntered: boolean): void;
1112
- addAPM(apm: NodeLike): void;
1113
- setPaymentMethods(paymentMethods: Record<string, BasePaymentMethod>): void;
1114
- setSelectedPaymentMethod(paymentMethodType: PaymentMethodType | string | null): void;
1115
- setCheckoutModules(checkoutModules: any): void;
1116
- getCheckoutModules(): any[];
1117
- getCheckoutModuleWithType<CheckoutModule>(type: string): CheckoutModule | undefined;
1118
- selectFirstVault(): void;
1119
- addVault(vault: VaultedPaymentMethod): VaultListItem | null;
1120
- selectVault(id: string | null): void;
1121
- getSelectedVaultItem(): VaultListItem | undefined;
1122
- getSelectedVaultItemState(): {
1123
- metadata?: InputMetadata;
1124
- securityCode?: string;
1125
- };
1126
- setSelectedVaultItemState(state: ICheckoutState["vault"]["state"]): void;
1127
- removeVault(id: string): Promise<void>;
1128
- setSmallPrintMessage(message: string | null): void;
1129
- setTranslation(translation: TranslationUnit): void;
1130
- setShowSavedPaymentMethods(show: boolean): void;
1131
- setPurchaseInfo(purchaseInfo: PurchaseInformation | null): void;
1132
- setCustomerDetails(customerDetails: CustomerDetails | null, orderDetailsInitiator: string | null): void;
1133
- setBusinessDetails(businessDetails: BusinessDetails | null, orderDetailsInitiator: string | null): void;
1134
- setOrderDetails(orderDetails: ClientSessionOrder | null, orderDetailsInitiator: string | null): void;
1135
- setClientSession(clientSession: InternalClientSession): void;
1136
- setClientSessionInfo(clientSessionInfo: ClientSessionInfo): void;
1137
- setIsTeardown(isTeardown: boolean): void;
1138
- getIsTeardown(): boolean | undefined;
1139
- getPurchaseInfo(): PurchaseInformation | VaultInformation | null;
1140
- getCustomerDetails(): CustomerDetails | null;
1141
- getBusinessDetails(): BusinessDetails | null;
1142
- getOrderDetails(): {
1143
- orderDetails: ClientSessionOrder | null;
1144
- orderDetailsInitiator: string | null;
1145
- };
1146
- getClientSession(): InternalClientSession | null;
1147
- get hasAPMs(): boolean;
1148
- get selectedAPM(): string | null;
1149
- get hasVault(): boolean;
1150
- get hasCard(): boolean;
1151
- get hasCreditCardScene(): boolean;
1152
- get hasDirectDebit(): boolean;
1153
- get hasSurcharge(): boolean;
1154
- get hasCardSurcharge(): boolean;
1155
- get selectedVault(): string | null;
1156
- get savePaymentMethodVisible(): boolean;
1157
- get hasClientSession(): boolean;
1158
- get hasSelectedPaymentMethod(): PaymentMethodType | string | null;
1159
- get currentCardNetwork(): string | null;
1160
- get UIOrderAmount(): string | null;
1161
- get selectedPaymentMethod(): PaymentMethodType | string | null;
1162
- getSelectedVaultToken(): VaultedPaymentMethod | null;
1163
- getAllAPMs(): NodeLike[];
1164
- getAllVaulted(): VaultListItem[];
1165
- getTranslations(): Translation & Record<string, string>;
1166
- getPaymentMethodWithType<T extends BasePaymentMethod>(paymentMethodType: string): T | undefined;
1167
- getPaymentMethodStoreWithType<T extends IBaseStore>(paymentMethodType: string): T | undefined;
1168
- getPaymentMethods(): Record<string, BasePaymentMethod>;
1169
- hasVaultedToken(token: PaymentMethodToken): boolean;
1170
- }
1171
- export interface PackageDeclaration {
1172
- getModuleIdFromSceneId?: (sceneId: string) => string | null;
1173
- modules: {
1174
- PaymentMethod?: new (...args: unknown[]) => void;
1175
- } & Record<string, () => Promise<any>>;
1176
- }
1177
- export type ModuleKey = {
1178
- moduleId: string;
1179
- packageId: string;
1180
- };
1181
- export type Module = {
1182
- id: string;
1183
- packageId: string;
1184
- import(exportName?: string): Promise<unknown>;
1185
- };
1186
- export type Package = {
1187
- id: string;
1188
- getDeclaration(): PackageDeclaration;
1189
- getModule(string: any): Module;
1190
- };
1191
- export type ModuleFactory = {
1192
- getPackages(): Array<Package>;
1193
- getPackage(id: string): Package;
1194
- getModule(moduleKey: ModuleKey): Module;
1195
- };
1196
- export interface ClientContext {
1197
- clientTokenHandler: IClientTokenHandler;
1198
- clientConfigurationHandler: ClientConfigurationHandler;
1199
- iframes: IFrameFactory;
1200
- messageBus: IFrameMessageBus;
1201
- api: Api;
1202
- longPoll: LongPoll;
1203
- analytics: Analytics;
1204
- scriptLoader: ScriptLoader;
1205
- session: ClientSessionInfo;
1206
- moduleFactory: ModuleFactory;
1207
- clientOptions: InternalFlowOptions;
1208
- store: CheckoutStore;
1209
- }
1210
- declare class BaseClientContext implements ClientContext {
1211
- clientTokenHandler: IClientTokenHandler;
1212
- clientConfigurationHandler: ClientConfigurationHandler;
1213
- iframes: IFrameFactory;
1214
- messageBus: IFrameMessageBus;
1215
- api: Api;
1216
- longPoll: LongPoll;
1217
- analytics: Analytics;
1218
- scriptLoader: ScriptLoader;
1219
- moduleFactory: ModuleFactory;
1220
- clientOptions: InternalFlowOptions;
1221
- store: CheckoutStore;
1222
- /**
1223
- * @deprecated use context.store instead
1224
- */
1225
- get session(): ClientSessionInfo;
1226
- }
1227
412
  export type SecureInputOptions = {
1228
413
  ariaLabel?: string;
1229
414
  container: string;
@@ -1261,15 +446,14 @@ export type CvvInput = {
1261
446
  remove: () => void;
1262
447
  };
1263
448
  export type CvvInputOptions = CardSecurityCodeInputOptions;
1264
- export type HeadlessVaultManager = ReturnType<typeof createHeadlessVaultManager>;
1265
- declare function createHeadlessVaultManager(context: BaseClientContext): {
449
+ export interface HeadlessVaultManager {
1266
450
  fetchVaultedPaymentMethods(): Promise<VaultedPaymentMethod[]>;
1267
451
  deleteVaultedPaymentMethod(id: string): Promise<void>;
1268
452
  startPaymentFlow(id: string, data?: {
1269
453
  cvv?: string;
1270
454
  }): Promise<void>;
1271
455
  createCvvInput(options: CvvInputOptions): Promise<CvvInput | null>;
1272
- };
456
+ }
1273
457
  export declare enum PaymentFlow {
1274
458
  DEFAULT = "DEFAULT",
1275
459
  PREFER_VAULT = "PREFER_VAULT"
@@ -1326,8 +510,8 @@ declare class PrimerClientError<T = any> extends SDKError {
1326
510
  readonly diagnosticsId: string | null;
1327
511
  readonly data?: T;
1328
512
  readonly isFromDeveloper: boolean;
1329
- static fromErrorCode(code: ErrorCode, options: ErrorOptions$1, analytics?: Analytics): PrimerClientError;
1330
- constructor(code: ErrorCode, options: ErrorOptions$1<T>, analytics?: Analytics);
513
+ static fromErrorCode(code: ErrorCode, options: ErrorOptions$1): PrimerClientError;
514
+ constructor(code: ErrorCode, options: ErrorOptions$1<T>);
1331
515
  }
1332
516
  export interface CardMetadata {
1333
517
  /** @deprecated Use onCardNetworksChange instead. */
@@ -1964,6 +1148,7 @@ export interface GooglePayStyles {
1964
1148
  }
1965
1149
  export interface ApplePayStyles {
1966
1150
  buttonType?: "plain" | "buy" | "set-up" | "donate" | "check-out" | "book" | "subscribe";
1151
+ buttonHeight?: number;
1967
1152
  buttonStyle?: "white" | "white-outline" | "black";
1968
1153
  }
1969
1154
  export interface HeadlessButtonRenderOptions {
@@ -2033,6 +1218,7 @@ export type CardNetworkAsset = {
2033
1218
  displayName: string;
2034
1219
  };
2035
1220
  export interface CardPaymentMethodManagerOptions {
1221
+ /** @deprecated Use onCardNetworksChange instead. */
2036
1222
  onCardMetadataChange?: (metadata: CardMetadata) => void;
2037
1223
  onCardNetworksChange?: (event: CardNetworkChangeEvent) => void;
2038
1224
  onCardNetworksLoading?: () => void;
package/package.json CHANGED
@@ -1,10 +1,10 @@
1
1
  {
2
2
  "name": "@primer-io/checkout-web",
3
- "version": "2.50.2",
3
+ "version": "2.50.4",
4
4
  "description": "Primer.js for the web",
5
5
  "author": "Primer Developers <developers@primer.io>",
6
6
  "homepage": "",
7
- "license": "MIT",
7
+ "license": "BSD-3-Clause",
8
8
  "main": "dist/Primer.js",
9
9
  "files": [
10
10
  "dist/Primer.js",