@primer-io/checkout-web 2.59.10 โ†’ 2.60.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,32 @@
1
1
  # @primer-io/checkout-web
2
2
 
3
+ ## 2.60.0
4
+
5
+ ### Minor Changes
6
+
7
+ - 383ce8d: Add `idempotencyKey` to POST /payments through `onBeforePaymentCreate`
8
+
9
+ ### Patch Changes
10
+
11
+ - 3815491: Fix Adyen MB Way localized message.
12
+ - Updated dependencies [383ce8d]
13
+ - @primer-io/sdk-utils@0.2.3
14
+
15
+ ## 2.59.12
16
+
17
+ ### Patch Changes
18
+
19
+ - 95101b4: fix: ADYEN_BANCONTACT_PAYCONIC loading scene to exit correctly
20
+ - Updated dependencies [13ac6b1]
21
+ - Updated dependencies [b6d1957]
22
+ - @primer-io/sdk-utils@0.2.0
23
+
24
+ ## 2.59.11
25
+
26
+ ### Patch Changes
27
+
28
+ - 67c6702: chore: update readme
29
+
3
30
  ## 2.59.10
4
31
 
5
32
  ### Patch Changes
package/README.md CHANGED
@@ -41,9 +41,9 @@ Primer Web SDK
41
41
  # ๐Ÿ“š Documentation
42
42
 
43
43
  - [Documentation](https://primer.io/docs)
44
- - [SDK reference](https://primer.io/docs/sdk/web/2.x.x)
45
- - [API reference](https://apiref.primer.io/docs)
46
- - [Changelogs](https://primerio.notion.site/Web-SDK-fa20ef5e42c3478fa00521192925a5c6)
44
+ - [SDK reference](https://primer.io/docs/sdk/web/v2.x.x)
45
+ - [API reference](https://primer.io/docs/api-reference)
46
+ - [Changelogs](https://primer.io/docs/changelogs/web-sdk)
47
47
 
48
48
  <br/>
49
49
 
@@ -67,14 +67,6 @@ Not yet integrated with Primer and interested in learning more? [Contact us](htt
67
67
 
68
68
  <br/>
69
69
 
70
- # ๐Ÿงช Testing
71
-
72
- This project uses Vitest for unit testing and specifically excludes component tests with jsdom. Only TypeScript/JavaScript-based unit tests are supported in the main test environment.
73
-
74
- If component testing is needed, please use the Playwright e2e tests in the `/playwright` directory.
75
-
76
- <br/>
77
-
78
70
  # ๐Ÿงฑ Installation
79
71
 
80
72
  ## With npm (recommended)
@@ -143,7 +135,7 @@ You can use **Headless Universal Checkout** with your own UI, giving you more fl
143
135
 
144
136
  ## ๐Ÿš€ Quick start
145
137
 
146
- Take a look at our [Quick Start Guide](https://primer.io/docs/payments/universal-checkout/drop-in/get-started/web) for accepting your first payment with Drop-in Checkout.
138
+ Take a look at our [Quick Start Guide](https://primer.io/docs/checkout/drop-in) for accepting your first payment with Drop-in Checkout.
147
139
 
148
140
  ## ๐Ÿ‘ฉโ€๐Ÿ’ป Usage
149
141
 
@@ -179,13 +171,13 @@ const options = {
179
171
  const checkout = await Primer.showUniversalCheckout(clientToken, options);
180
172
  ```
181
173
 
182
- Note that more options can be passed to Drop-in Checkout. Please refer to the [SDK Reference](https://primer.io/docs/sdk/web/2.x.x/primer/showUniversalCheckout) for more information.
174
+ Note that more options can be passed to Drop-in Checkout. Please refer to the [SDK Reference](https://primer.io/docs/sdk/web/v2.x.x/primer/methods/showUniversalCheckout) for more information.
183
175
 
184
176
  # Headless Universal Checkout
185
177
 
186
178
  ## ๐Ÿš€ Quick start
187
179
 
188
- Take a look at the [Quick Start Guide](https://primer.io/docs/payments/universal-checkout/headless/get-started/web) for accepting your first payment with Headless Checkout.
180
+ Take a look at the [Quick Start Guide](https://primer.io/docs/checkout/headless) for accepting your first payment with Headless Checkout.
189
181
 
190
182
  ## ๐Ÿ‘ฉโ€๐Ÿ’ป Usage
191
183
 
@@ -252,7 +244,7 @@ await headless.start();
252
244
  console.log('Headless Universal Checkout is loaded!');
253
245
  ```
254
246
 
255
- Note that more options can be passed to Headless Checkout. Please refer to the [SDK Reference](https://primer.io/docs/sdk/web/2.x.x/primer-headless-checkout/configure) for more information.
247
+ Note that more options can be passed to Headless Checkout. Please refer to the [SDK Reference](https://primer.io/docs/sdk/web/v2.x.x/primer/methods/createHeadless) for more information.
256
248
 
257
249
  ### ๐Ÿš€ Create your UI
258
250
 
@@ -262,4 +254,4 @@ Primer enables you to create the UI that suits your needs, using the provided in
262
254
 
263
255
  Handling payment methods is done by instantiating a payment method manager using `createPaymentMethodManager(paymentMethodType: string, options)`. The instance of the manager depends on `managerType`.
264
256
 
265
- You can learn more about the supported payment method managers in our [SDK Reference](https://primer.io/docs/sdk/web/2.x.x/primer-headless-checkout/createPaymentMethodManager).
257
+ You can learn more about the supported payment method managers in our [SDK Reference](https://primer.io/docs/sdk/web/v2.x.x/primer-headless-checkout/methods/createPaymentMethodManager).
package/dist/Primer.js CHANGED
@@ -1,2 +1,2 @@
1
- !function(e,r){"object"==typeof exports&&"object"==typeof module?module.exports=r():"function"==typeof define&&define.amd?define([],r):"object"==typeof exports?exports.Primer=r():e.Primer=r()}(this,()=>(()=>{"use strict";let e;var r,t,A,o,E,n,_,i,a,s,c,N,T,R={};R.d=(e,r)=>{for(var t in r)R.o(r,t)&&!R.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:r[t]})},R.o=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),R.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var O={};R.r(O),R.d(O,{SuccessScreenType:()=>rr,PaymentFlow:()=>e6,PrimerClientError:()=>re,ThreeDSecureStatus:()=>e5,TokenType:()=>e8,isStripeOptionsDropInWithFullMandateText:()=>rt,PaymentInstrumentType:()=>e3,ErrorCode:()=>e9,EventTypes:()=>rA,CheckoutUXFlow:()=>e2,HeadlessManagerType:()=>ro,PaymentMethodType:()=>e4,Primer:()=>rE});let P=()=>I.randomUUID?.()||d(),d=()=>"10000000-1000-4000-8000-100000000000".replace(/[018]/g,e=>(e^D()>>e/4).toString(16)),D=()=>(I.getRandomValues?.(new Uint8Array(1))[0]??16*Math.random())&15,I="undefined"!=typeof crypto?crypto:{},u="2.4";class l extends Error{static from(e,r=!1){if(e instanceof l)return e;let t=new l(e instanceof Error?e.message:String(e),r);return e instanceof Error&&e.stack&&(t.stack=e.stack,Object.assign(t,e)),t}markAsReported(){this.isReported=!0}constructor(e,r=!1){var t,A;super(e),A=void 0,(t="isReported")in this?Object.defineProperty(this,t,{value:A,enumerable:!0,configurable:!0,writable:!0}):this[t]=A,this.isReported=r,this.name=this.constructor.name,Error.captureStackTrace&&Error.captureStackTrace(this,this.constructor)}}let S="https://analytics.production.data.primer.io/sdk-logs";var C=((Y={}).REQUEST_START="REQUEST_START",Y.REQUEST_END="REQUEST_END",Y),L=((p={}).START="START",p.END="END",p);let m={createHeadless:"HEADLESS_LOADING",showUniversalCheckout:"DROP_IN_LOADING",showVaultManager:"VAULT_MANAGER_LOADING",preloadPrimer:"PRELOAD_PRIMER_LOADING"};var Y,p,h,M,f=((h={}).NETWORK_CALL_EVENT="NETWORK_CALL_EVENT",h.CRASH_EVENT="CRASH_EVENT",h.TIMER_EVENT="TIMER_EVENT",h.MESSAGE_EVENT="MESSAGE_EVENT",h.SCRIPT_UNAUTHORIZED_EVENT="SCRIPT_UNAUTHORIZED_EVENT",h.V1_EVENT="V1_EVENT",h.SDK_FUNCTION_EVENT="SDK_FUNCTION_EVENT",h),y=((M=y||{}).CHARGING="CHARGING",M.NOT_CHARGING="NOT_CHARGING",M);async function U(){if("undefined"==typeof navigator||"undefined"==typeof performance)return;let 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"}}let k=({get(e,r){let t;try{switch(e){case"PRIMER_SDK_VERSION":t="v2.59.10";break;case"PRIMER_ASSETS_URL":t=process.env.PRIMER_ASSETS_URL;break;case"PRIMER_BUILD_INTEGRATION_BUILDER":t=process.env.PRIMER_BUILD_INTEGRATION_BUILDER}}catch{}return t||r}}).get("PRIMER_SDK_VERSION");async function w(e,r,t){return{...t,createdAt:Date.now(),device:await U(),eventType:e,properties:r,sdkVersion:k,sdkType:"WEB"}}let g=Symbol.for("__primerAnalytics__"),B={providers:new Map,timers:new Map,eventsQueue:new Map};if("undefined"!=typeof window){let e=window[g];e?B=e:window[g]=B}let v=()=>B.providers,H=()=>B.timers,F=()=>B.eventsQueue;function G(){return"undefined"!=typeof navigator&&"function"==typeof navigator.sendBeacon}let b=new Map;function K(e,r=!1,t=1){b.has(e)&&(clearTimeout(b.get(e)),b.delete(e));let A=()=>{let A=F().get(e);if(A?.length){let o=!0,E=[],n=0,_=0;for(;_<A.length;){let r=A[_],t=new Blob([JSON.stringify(r)]).size;if(t>64e3){console.error("Event size exceeds maximum payload size and will be skipped:",r),_++;continue}if(n+t>64e3&&E.length>0){if(G())try{o=navigator.sendBeacon(e,JSON.stringify(E))}catch(e){o=!1,console.warn("Unable to send events",e)}else o=!1;if(!o)break;E=[],n=0}E.push(r),n+=t,_++}if(E.length>0&&o)if(G())try{o=navigator.sendBeacon(e,JSON.stringify(E))}catch(e){o=!1,console.warn("Unable to send events",e)}else o=!1;o?F().delete(e):t<5?setTimeout(()=>K(e,r,t+1),500*Math.pow(2,t)):console.error("Max retry attempts reached. Events will not be sent.")}};if(r)return void A();let o=setTimeout(A,500);b.set(e,o)}let V=!1;function x({url:e=S,...r}){"undefined"==typeof document||V||(document.addEventListener("visibilitychange",()=>{if("hidden"===document.visibilityState){let e=W(r.checkoutSessionId);e.messageEvent({messageType:"VISIBILITY_CHANGE",message:"Checkout visibility is hidden (tab or window change, redirect or being closed)."}),K(e.url,!0)}}),V=!0);let t=t=>async A=>{var o;let E;"undefined"!=typeof navigator&&(o=function e(r,t,A=new WeakSet,o=0,E=10){if(o>E||A.has(r))return r;A.add(r);let n=r=>"object"==typeof r&&null!==r?e(r,t,A,o+1,E):t(r);return Array.isArray(r)?r.map(n):Object.fromEntries(Object.entries(r).map(([e,r])=>[e,n(r)]))}(await w(t,A,r),e=>{var r;return"string"==typeof(r="function"==typeof e?e.name||"function":e)&&r.length>5120?`${r.slice(0,5120)}...`:r}),F().has(e)||F().set(e,[]),E=F().get(e),E?.push(o),K(e))},A={crashEvent:t(f.CRASH_EVENT),messageEvent:t(f.MESSAGE_EVENT),networkCallEvent:t(f.NETWORK_CALL_EVENT),scriptUnauthorizedEvent:t(f.SCRIPT_UNAUTHORIZED_EVENT),sdkFunctionEvent:t(f.SDK_FUNCTION_EVENT),timerStart:({id:e,...A})=>{let o=`${r.checkoutSessionId}|${e}`,E=performance?.now?performance.now():Date.now();return H().set(o,{start:E}),t(f.TIMER_EVENT)({...A,id:e,timerType:L.START})},timerEnd:({id:e,...A})=>{let o=`${r.checkoutSessionId}|${e}`,{start:E}=H().get(o)??{};H().delete(o);let n=performance?.now?performance.now():Date.now();return t(f.TIMER_EVENT)({...A,id:e,timerType:L.END,duration:E?n-E:void 0})},v1Event:t(f.V1_EVENT),url:e};return v().set(r.checkoutSessionId,A),W(r.checkoutSessionId)}function W(e){return new Proxy({},{get:(r,t)=>(v().get(e)??x({checkoutSessionId:e}))[t]})}let $=(e,r,t,A)=>({callType:t?C.REQUEST_END:C.REQUEST_START,id:e,errorBody:t?.error&&JSON.stringify(t.error,Object.getOwnPropertyNames(t.error)),method:r.method,responseCode:t?.status,url:r.url,duration:A});function j(e){return e?new Promise(r=>{setTimeout(r,e)}):Promise.resolve()}async function X(e,r,t,A=j){let o=0,E={enabled:r?.enabled??!1,maxRetries:8,initialBackoff:100,retryNetworkErrors:!0,retry500Errors:!1,maxJitter:100};if(!E.enabled)return e();for(;;)try{let r=await e();if(o){let e=`Request succeeded after ${o} retries.`;"object"==typeof r&&r&&"status"in r&&(e+=` Status code: ${r.status}`),t?.({messageType:"RETRY_SUCCESS",message:e,severity:"INFO"})}return r}catch(a){let e=o>=E.maxRetries,r=a.isNetworkError&&!E.retryNetworkErrors,n=a.status&&a.status>=500&&!E.retry500Errors;if(e||r||n){let A=`Failed after ${o} retries. `;throw e?A+=`Reached maximum retries (${E.maxRetries}).`:r?A+="Network error encountered and retryNetworkErrors is disabled.":n&&(A+="HTTP 500 error encountered and retry500Errors is disabled."),A+=` Last error: ${a.message}`,t?.({messageType:"RETRY_FAILED",message:A,severity:"ERROR",errorBody:JSON.stringify(a,Object.getOwnPropertyNames(a))}),Error(A,{cause:a})}o++;let _=Math.min(E.initialBackoff*Math.pow(2,o-1)+Math.random()*E.maxJitter,Number.MAX_SAFE_INTEGER),i="Unknown error";a.isNetworkError?i="Network error":a.status&&(i=`HTTP ${a.status} error`),t?.({messageType:"RETRY",message:`Retry attempt ${o}/${E.maxRetries} due to: ${i}. Error details: ${a.message}. Waiting for ${_.toFixed(2)}ms before next attempt.`,severity:"WARN",errorBody:JSON.stringify(a,Object.getOwnPropertyNames(a))}),await A(_)}}let z={cache:new Map};"undefined"!=typeof window&&((r=window)[t="__primerCache__"]??(r[t]=z),z=window.__primerCache__);let Q=()=>z.cache;function Z(){if(Q().size<=30)return;let e=Date.now();for(let[r,t]of Q())t.exp<e&&Q().delete(r);if(Q().size>50)for(let[e]of Q()){if(Q().size<=50)break;Q().delete(e)}}let J=(e,r,t)=>q(e,"get",r,t),q=async(e,r,t,A,o)=>{let E=P(),n=performance?.now(),_=W(e),i={method:r,url:t,body:o};_.networkCallEvent($(E,i));try{let a=await fetch(t,{body:o,method:r,headers:{"content-type":"application/json","x-request-id":E,...A}});if(!a.ok){let e=Error(`HTTP error! status: ${a.status}`);throw e.status=a.status,e}let s=await a.json();if(t.includes("client-sdk/configuration")){let{primerAccountId:r,clientSession:{clientSessionId:t,customer:A}}=s;_=x({checkoutSessionId:e,clientSessionId:t,customerId:A?.customerId,primerAccountId:r,url:_.url})}let c=performance?.now();return _.networkCallEvent($(E,i,{data:s},c-n)),{data:s,headers:a.headers,status:a.status,source:"NETWORK"}}catch(r){let e=performance?.now();throw Object.assign(r,{isNetworkError:r instanceof TypeError}),_.networkCallEvent($(E,i,{error:r},e-n)),r}},ee=(e,r)=>new Promise((t,A)=>{let o=setTimeout(()=>{let e=Error("Request timed out");e.isNetworkError=!0,A(e)},r);e.then(t).catch(A).finally(()=>clearTimeout(o))}),er=(e,r)=>{let{headers:t,retryConfig:A,cacheConfig:o,timeout:E=15e3,checkoutSessionId:n}=r,_=W(n);return(function(e){if(!e)return e=>e();let{key:r,refresh:t=!1,usePrimerSessionCacheTtlHeader:A=!1,ttl:o=36e5}=e;return async e=>{let E=Date.now(),n=Q().get(r);if(!t&&n&&n.exp>E)return n.promise;n&&Q().delete(r);let _=e().then(e=>{let t=o;return A&&(t=1e3*(Number(e.headers.get("x-primer-session-cache-ttl"))||0)),function({key:e,ttl:r=36e5},t){r?Q().set(e,{promise:Promise.resolve({...t,source:"CACHE"}),exp:Date.now()+r}):Q().delete(e)}({key:r,ttl:t},e),Z(),e},e=>{throw Q().delete(r),e});return Q().set(r,{promise:_,exp:E+o}),Z(),_}})(o)(()=>X(()=>ee(J(n,e,t),E),A,r=>_.messageEvent({...r,url:e})))},et="function"==typeof Buffer,eA="function"==typeof TextDecoder?new TextDecoder:void 0,eo="function"==typeof TextEncoder?new TextEncoder:void 0,eE=Array.prototype.slice.call("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="),en=(e=>{let r={};return e.forEach((e,t)=>r[e]=t),r})(eE),e_=/^(?:[A-Za-z\d+\/]{4})*?(?:[A-Za-z\d+\/]{2}(?:==)?|[A-Za-z\d+\/]{3}=?)?$/,ei=String.fromCharCode.bind(String),ea="function"==typeof Uint8Array.from?Uint8Array.from.bind(Uint8Array):e=>new Uint8Array(Array.prototype.slice.call(e,0)),es=e=>e.replace(/=/g,"").replace(/[+\/]/g,e=>"+"==e?"-":"_"),ec=e=>e.replace(/[^A-Za-z0-9\+\/]/g,""),eN="function"==typeof btoa?e=>btoa(e):et?e=>Buffer.from(e,"binary").toString("base64"):e=>{let r,t,A,o,E="",n=e.length%3;for(let n=0;n<e.length;){if((t=e.charCodeAt(n++))>255||(A=e.charCodeAt(n++))>255||(o=e.charCodeAt(n++))>255)throw TypeError("invalid character found");E+=eE[(r=t<<16|A<<8|o)>>18&63]+eE[r>>12&63]+eE[r>>6&63]+eE[63&r]}return n?E.slice(0,n-3)+"===".substring(n):E},eT=et?e=>Buffer.from(e).toString("base64"):e=>{let r=[];for(let t=0,A=e.length;t<A;t+=4096)r.push(ei.apply(null,e.subarray(t,t+4096)));return eN(r.join(""))},eR=(e,r=!1)=>r?es(eT(e)):eT(e),eO=e=>{if(e.length<2){var r=e.charCodeAt(0);return r<128?e:r<2048?ei(192|r>>>6)+ei(128|63&r):ei(224|r>>>12&15)+ei(128|r>>>6&63)+ei(128|63&r)}var r=65536+(e.charCodeAt(0)-55296)*1024+(e.charCodeAt(1)-56320);return ei(240|r>>>18&7)+ei(128|r>>>12&63)+ei(128|r>>>6&63)+ei(128|63&r)},eP=/[\uD800-\uDBFF][\uDC00-\uDFFFF]|[^\x00-\x7F]/g,ed=e=>e.replace(eP,eO),eD=et?e=>Buffer.from(e,"utf8").toString("base64"):eo?e=>eT(eo.encode(e)):e=>eN(ed(e)),eI=(e,r=!1)=>r?es(eD(e)):eD(e),eu=/[\xC0-\xDF][\x80-\xBF]|[\xE0-\xEF][\x80-\xBF]{2}|[\xF0-\xF7][\x80-\xBF]{3}/g,el=e=>{switch(e.length){case 4:var r=((7&e.charCodeAt(0))<<18|(63&e.charCodeAt(1))<<12|(63&e.charCodeAt(2))<<6|63&e.charCodeAt(3))-65536;return ei((r>>>10)+55296)+ei((1023&r)+56320);case 3:return ei((15&e.charCodeAt(0))<<12|(63&e.charCodeAt(1))<<6|63&e.charCodeAt(2));default:return ei((31&e.charCodeAt(0))<<6|63&e.charCodeAt(1))}},eS=e=>e.replace(eu,el),eC="function"==typeof atob?e=>atob(ec(e)):et?e=>Buffer.from(e,"base64").toString("binary"):e=>{if(e=e.replace(/\s+/g,""),!e_.test(e))throw TypeError("malformed base64.");e+="==".slice(2-(3&e.length));let r,t="",A,o;for(let E=0;E<e.length;)r=en[e.charAt(E++)]<<18|en[e.charAt(E++)]<<12|(A=en[e.charAt(E++)])<<6|(o=en[e.charAt(E++)]),t+=64===A?ei(r>>16&255):64===o?ei(r>>16&255,r>>8&255):ei(r>>16&255,r>>8&255,255&r);return t},eL=et?e=>ea(Buffer.from(e,"base64")):e=>ea(eC(e).split("").map(e=>e.charCodeAt(0))),em=e=>eL(ep(e)),eY=et?e=>Buffer.from(e,"base64").toString("utf8"):eA?e=>eA.decode(eL(e)):e=>eS(eC(e)),ep=e=>ec(e.replace(/[-_]/g,e=>"-"==e?"+":"/")),eh=e=>eY(ep(e)),eM=e=>({value:e,enumerable:!1,writable:!0,configurable:!0}),ef={encode:eI,decode:eh},ey={encode:function(e,r={}){let{urlSafe:t=!1}=r;return ef.encode(e,t)},decode:ef.decode},eU="The provided `clientToken`",ek=`${eU} has expired`,ew=`${eU} is malformed`,eg=(e,r,t)=>({"primer-client-token":e,"primer-sdk-client":"WEB","primer-sdk-version":"v2.59.10","primer-sdk-checkout-session-id":r,...t&&{"x-api-version":t}});async function eB(e,r,t){let{accessToken:A,configurationUrl:o,analyticsUrlV2:E}=function(e){let r=function(e){try{let[r,t]=e.split(".");return JSON.parse(ey.decode(t||r))}catch{throw Error(ew)}}(e),t=1e3*r.exp;if(Date.now()>t)throw Error(`${ek}. Expiration date: ${new Date(t).toISOString()}`);return r}(e),n=x({checkoutSessionId:r,url:E}),_=u;n.timerStart({id:"CONFIGURATION_LOADING"});try{let{data:e,source:E}=await er(`${o}/?withDisplayMetadata=true`,{checkoutSessionId:r,headers:eg(A,r,_),retryConfig:{enabled:!0},cacheConfig:t});return n.timerEnd({id:"CONFIGURATION_LOADING",context:{source:E}}),e}catch(r){let e=r instanceof Error?r.message:"Unknown error occurred";throw Error(`Failed to initialize client: ${e}`)}}function ev(e){return e instanceof Error?{errorBody:e.message,stacktrace:e.stack}:"object"==typeof e&&null!==e&&"message"in e?{errorBody:String(e.message),stacktrace:"stack"in e?String(e.stack):void 0}:{errorBody:String(e||"Unknown error")}}function eH({checkoutSessionId:e,analytics:r,error:t,reporter:A}){r?.crashEvent?r.crashEvent({...ev(t),reporter:A}):e&&eF(e,t,A)}async function eF(e,r,t){let A=await w(f.CRASH_EVENT,{...ev(r),reporter:t},{checkoutSessionId:e});try{await fetch(S,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(A)})}catch(e){console.error("Failed to post crash event",e)}}let eG=Symbol.for("initGlobalErrorMonitoringLoaded"),eb=(e,r)=>{"undefined"!=typeof window&&window[eG]||(window[eG]=!0,window.addEventListener("error",t=>{!eK(t)&&eV(t)&&eH({checkoutSessionId:e,analytics:r,error:t.error,reporter:"window.onerror"})}),window.addEventListener("unhandledrejection",t=>{let A=t.reason||Error("Unhandled promise rejection");ex(A)&&eH({checkoutSessionId:e,analytics:r,error:A,reporter:"unhandledrejection"})}))},eK=e=>"Script error."===e.message||!e.filename||0===e.lineno,eV=e=>{let r=e.filename;return!!(r&&eW(r))&&!!new l(e.error).isReported},ex=e=>{if(e&&"object"==typeof e&&"stack"in e&&"string"==typeof e.stack){let r=l.from(e);return!r.isReported&&(!!("fileName"in e&&"string"==typeof e.fileName&&eW(e.fileName))||e$(r.stack).some(eW))}return!1},eW=e=>{try{return new URL(e,window.location.origin).hostname.endsWith(".primer.io")}catch{return!1}},e$=e=>{if(!e)return[];let r=e.split("\n"),t=[],A=/^\s*at\s+(?:.*?\s+)?\(?(.+?):\d+:\d+\)?$/;for(let e of r){let r=e.match(A);if(r&&r[1])t.push(r[1]);else{let r=/@(.*?):\d+:\d+$/,A=e.match(r);A&&A[1]&&t.push(A[1])}}return t},ej=["https://sdk.primer.io/web/","https://sdk.dev.primer.io/web/","https://sdk.sandbox.primer.io/web/","https://sdk.production.primer.io/web/","https://assets.primer.io/","https://x.klarnacdn.net/kp/lib/v","https://www.paypal.com/sdk/js","https://www.paypalobjects.com/","https://js.stripe.com/","https://pay.google.com/gp/p/js/"];function eX(e,r,t){return document.querySelector(`${e}[${r}^="${t}"]`)}async function ez(e,r,t,A,o,E){let{analytics:n,name:_=r,retryConfig:i}=E;await X(()=>new Promise((E,i)=>{var a;let s,c=eX(e,t,r)||(a={...A,[t]:r},s=document.createElement(e),Object.entries(a).forEach(([e,r])=>s.setAttribute(e,r)),s);c.onload=()=>{n?.sdkFunctionEvent({name:_,params:[`${e.charAt(0).toUpperCase()+e.slice(1)} loaded successfully: ${r}`]}),E()},c.onerror=()=>{c.remove(),i(Error(`${o}: ${r}`))},c.parentNode||document.head.appendChild(c)}),i,e=>n?.messageEvent({...e,url:r}))}async function eQ(r){return e||(e=Promise.all([function(e,r={}){if(!ej.some(r=>e.startsWith(r))){let t=`Script source not authorized per PCI DSS 6.4.3: ${e}`;return r.analytics?.scriptUnauthorizedEvent({scriptSource:e,errorMessage:t,severity:"ERROR"}),console.error(`[Primer SDK Security] ${t}`),Promise.reject(Error(t))}return eX("script","src",e)&&window.__Primer?(r.analytics?.sdkFunctionEvent({name:r.name??e,params:["Script already loaded"]}),Promise.resolve()):ez("script",e,"src",{...r.attributes,async:"",crossorigin:"anonymous"},"Can't load Primer SDK",r)}("https://sdk.primer.io/web/v2.59.10/PrimerCoreSDK.min.js",{analytics:r,name:"loadPrimerScript"}),function(e,r={}){return Array.from(document.styleSheets).some(r=>r.href===e)?(r.analytics?.sdkFunctionEvent({name:r.name??e,params:["Stylesheet already loaded"]}),Promise.resolve()):ez("link",e,"href",{...r.attributes,rel:"stylesheet"},"Can't load Primer SDK's Stylesheet",r)}("https://sdk.primer.io/web/v2.59.10/Checkout.css",{analytics:r,name:"loadPrimerCss"})]).then(()=>{let e=window.__Primer;return delete window.__Primer,e}).catch(r=>{throw e=void 0,r}))}let eZ=async()=>{let e=P();try{let r=W(e);try{eb(e,r),r.sdkFunctionEvent({name:"preloadPrimer"}),r.timerStart({id:m.preloadPrimer}),await eQ(r),r.timerEnd({id:m.preloadPrimer})}catch(A){let t=l.from(A);throw t.isReported||(eH({checkoutSessionId:e,analytics:r,error:t,reporter:"preloadPrimer level 1"}),t.markAsReported()),t}}catch(t){let r=l.from(t);throw r.isReported||(eF(e,r,"preloadPrimer level 0"),r.markAsReported()),r}},eJ=e1("createHeadless"),eq=e1("showUniversalCheckout"),e0=e1("showVaultManager");function e1(e){return async(...[r,t,...A])=>{u=t?.apiVersion??"2.4";let o=P();try{let E=W(o);try{eb(o,E),E.sdkFunctionEvent({name:e,params:[r,t,...A]}),E.timerStart({id:m[e]});let[n,_]=await Promise.all([eB(r,o,t?.clientSessionCachingEnabled?{key:r,usePrimerSessionCacheTtlHeader:!0}:void 0),eQ(E)]);return _[e](n,o,r,t,...A)}catch(r){let e=l.from(r);throw e.isReported||(eH({checkoutSessionId:o,analytics:E,error:e,reporter:"lazyLoad level 1"}),e.markAsReported()),e}}catch(r){let e=l.from(r);throw e.isReported||(eF(o,e,"lazyLoad level 0"),e.markAsReported()),e}}}(A={}).LOADING="Loading",A.NO_PAYMENT_METHOD="NoPaymentMethod",A.THREE_DS="UniversalCheckout/3ds",A.CHOOSE_PAYMENT_METHOD="UniversalCheckout/Home",A.MANAGE_PAYMENT_METHODS="VaultManager/Home",A.DIRECT_DEBIT_FORM="DirectDebit/Form",A.DIRECT_DEBIT_MANDATE="DirectDebit/Mandate",A.CREDIT_CARD_FORM="CreditCard/Form",A.SUCCESS_PAYMENT_METHOD="UniversalCheckout/Success/PaymentMethod",A.SUCCESS_CHECK="UniversalCheckout/Success/Check",(o={}).ROOT="primer-checkout",o.ROOT_CONTENT="primer-checkout-content",o.SUBMIT_BUTTON="primer-checkout-submit-button",o.THREE_DS_MODAL="primer-checkout-3ds-modal",o.VAULT="primer-checkout-vault",o.VAULT_INLINE="primer-checkout-vault-inline",o.NAVIGATE_PAYMENT_METHODS="primer-checkout-navigate-to-payment-methods",o.DIVIDER="primer-checkout-payment-method-divider",o.APM_BUTTONS="primer-checkout-apm-button-container",o.CARDHOLDER_NAME="primer-checkout-cardholder-name",o.CARDHOLDER_NAME_INPUT="primer-checkout-card-cardholder-name-input",o.ACTIONS="primer-checkout-actions",o.ACTIONS_MENU="primer-checkout-actions-menu",o.SAVE_PAYMENT_METHOD_CHECKBOX="primer-checkout-save-payment-method-input",o.SAVE_PAYMENT_METHOD_FIELD="primer-checkout-save-payment-method-field",o.SAVED_PAYMENT_METHODS_EMPTY="primer-checkout-saved-payment-methods-empty-text",o.CARD_FORM="primer-checkout-card-form",o.DD_SWITCH="primer-checkout-switch-dd-inputs",o.DD_IBAN_FIELD="primer-checkout-dd-iban-field",o.DD_LOCAL_FIELD="primer-checkout-dd-local-fields",o.DD_CUSTOMER_NAME_INPUT="primer-checkout-dd-customer-name-input",o.DD_CUSTOMER_EMAIL_INPUT="primer-checkout-dd-customer-email-input",o.DD_CUSTOMER_ADDRESS_LINE1="primer-checkout-dd-customer-address-input",o.DD_CUSTOMER_ADDRESS_LINE2="primer-checkout-dd-customer-address-line2-input",o.DD_CUSTOMER_ADDRESS_CITY="primer-checkout-dd-customer-city-input",o.DD_CUSTOMER_ADDRESS_POSTAL_CODE="primer-checkout-dd-customer-postal-code-input",o.DD_IBAN_INPUT="primer-checkout-dd-iban-input",o.DD_ACCOUNT_NUMBER_INPUT="primer-checkout-dd-account-number-input",o.DD_BANK_CODE_INPUT="primer-checkout-dd-bank-code-input",o.DD_BRANCH_CODE_INPUT="primer-checkout-dd-branch-code-input",o.DD_MANDATE_SMALL_PRINT="primer-checkout-small-print",o.ERROR_MESSAGE="primer-checkout-error-message",(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";var e2=((n={}).CHECKOUT="CHECKOUT",n.HEADLESS_CHECKOUT="HEADLESS_CHECKOUT",n.MANAGE_PAYMENT_METHODS="MANAGE_PAYMENT_METHODS",n),e6=((_={}).DEFAULT="DEFAULT",_.PREFER_VAULT="PREFER_VAULT",_);(i={}).TOKENIZE_STARTED="tokenize-started",i.TOKENIZE_ERROR="tokenize-error",i.TOKENIZE_SUCCESS="tokenize-success",i.TOKENIZE_DID_NOT_START="tokenize-did-not-start";var e5=((a={}).SUCCESS="AUTH_SUCCESS",a.FAILED="AUTH_FAILED",a.SKIPPED="SKIPPED",a.CHALLENGE="CHALLENGE",a);let e3={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",PAY_NL_RIVERTY:"PAY_NL_RIVERTY",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",DLOCAL_PIX:"DLOCAL_PIX",ALMA:"ALMA",ADYEN_CASHAPP:"ADYEN_CASHAPP",ADYEN_AFFIRM:"ADYEN_AFFIRM"},e4={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",PAY_NL_RIVERTY:"PAY_NL_RIVERTY",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",DLOCAL_PIX:"DLOCAL_PIX",ALMA:"ALMA",ADYEN_CASHAPP:"ADYEN_CASHAPP",ADYEN_AFFIRM:"ADYEN_AFFIRM"},e8={SINGLE_USE:"SINGLE_USE",MULTI_USE:"MULTI_USE"};e3.PAYPAL_VAULTED,e4.PAYPAL,e3.KLARNA_CUSTOMER_TOKEN,e4.KLARNA,e3.AUTOMATED_CLEARING_HOUSE,e4.STRIPE_ACH,e3.CARD,e4.PAYMENT_CARD;var e9=((s={}).INITIALIZATION_ERROR="INITIALIZATION_ERROR",s.NO_PAYMENT_METHODS="NO_PAYMENT_METHODS",s.PRIMER_TEARDOWN="PRIMER_TEARDOWN",s.PRIMER_SERVER_ERROR="PRIMER_SERVER_ERROR",s.THREE_DS_AUTH_FAILED="THREE_DS_AUTH_FAILED",s.TOKENIZATION_ERROR="TOKENIZATION_ERROR",s.DUPLICATE_PAYMENT_METHOD_ERROR="DUPLICATE_PAYMENT_METHOD_ERROR",s.CARD_NUMBER_ERROR="CARD_NUMBER_ERROR",s.PAYMENT_METHOD_NOT_SETUP="PAYMENT_METHOD_NOT_SETUP",s.PAYMENT_METHOD_NOT_PROVIDED="PAYMENT_METHOD_NOT_PROVIDED",s.PAYMENT_METHOD_NOT_COMPATIBLE="PAYMENT_METHOD_NOT_COMPATIBLE",s.RESUME_ERROR="RESUME_ERROR",s.VALIDATION_ERROR="VALIDATION_ERROR",s.PAYMENT_FAILED="PAYMENT_FAILED",s.PAYMENT_CREATION_ABORTED="PAYMENT_CREATION_ABORTED",s.PAYMENT_CREATION_DISABLED="PAYMENT_CREATION_DISABLED",s.CLIENT_SESSION_UPDATE_ERROR="CLIENT_SESSION_UPDATE_ERROR",s.INVALID_ARGUMENT="INVALID_ARGUMENT",s.VAULT_FETCH="VAULT_FETCH",s.VAULT_DELETE="VAULT_DELETE",s.HEADLESS_VAULT_MANAGER_VALIDATION="HEADLESS_VAULT_MANAGER_VALIDATION",s.CARD_FORM_VALIDATION_UNEXPECTED_FIELD="CARD_FORM_VALIDATION_UNEXPECTED_FIELD",s.MISSING_FIRST_NAME_OR_LAST_NAME="MISSING_FIRST_NAME_OR_LAST_NAME",s.MISSING_EMAIL_ADDRESS="MISSING_EMAIL_ADDRESS",s.INVALID_FLOW="INVALID_FLOW",s);function e7(e,r,t){return r in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e}class re extends l{static fromErrorCode(e,r){return new re(e,r)}static fromExistingError(e,r,t){if(e instanceof re)return e;let A=e?.message?`${e.message}, `:"";return new re(r,{...t,message:`${A}${t.message}`})}constructor(e,r){super(r.message),e7(this,"code",void 0),e7(this,"diagnosticsId",void 0),e7(this,"data",void 0),e7(this,"isFromDeveloper",void 0),this.code=e,this.diagnosticsId=r.diagnosticsId??null,this.data=r.data,this.isFromDeveloper=r.isFromDeveloper??!1,this.name="PrimerClientError",Error.captureStackTrace&&Error.captureStackTrace(this,re)}}var rr=((c={}).PAYMENT_METHOD="PAYMENT_METHOD",c.CHECK="CHECK",c);let rt=e=>{let r=e?.mandateData;return!!r&&"fullMandateText"in r};var rA=((N={}).CHANGE="change",N.ERROR="error",N.FOCUS="focus",N.BLUR="blur",N.CLICK="click",N.CLOSE="close",N.CONFIRMED_KLARNA_CATEGORY="CONFIRMED_KLARNA_CATEGORY",N.CONFIRMED_KLARNA_CATEGORY_ERROR="CONFIRMED_KLARNA_CATEGORY_ERROR",N.KLARNA_SESSION_UPDATE="KLARNA_SESSION_UPDATE",N.KLARNA_SESSION_REFRESH_ERROR="KLARNA_SESSION_REFRESH_ERROR",N),ro=((T={}).CARD="CARD",T.NATIVE="NATIVE",T.REDIRECT="REDIRECT",T.KLARNA="KLARNA",T.ACH="ACH",T);let rE={SDK_VERSION:"v2.59.10",createHeadless:eJ,showUniversalCheckout:eq,showVaultManager:e0,preloadPrimer:eZ};return O})());
1
+ !function(e,r){"object"==typeof exports&&"object"==typeof module?module.exports=r():"function"==typeof define&&define.amd?define([],r):"object"==typeof exports?exports.Primer=r():e.Primer=r()}(this,()=>(()=>{"use strict";let e;var r,t,A,E,o,n,_,i,a,s,c,T,N,R={};R.d=(e,r)=>{for(var t in r)R.o(r,t)&&!R.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:r[t]})},R.o=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),R.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var O={};R.r(O),R.d(O,{SuccessScreenType:()=>rr,PaymentFlow:()=>e6,PrimerClientError:()=>re,ThreeDSecureStatus:()=>e5,TokenType:()=>e8,isStripeOptionsDropInWithFullMandateText:()=>rt,PaymentInstrumentType:()=>e3,ErrorCode:()=>e9,EventTypes:()=>rA,CheckoutUXFlow:()=>e2,HeadlessManagerType:()=>rE,PaymentMethodType:()=>e4,Primer:()=>ro});let P=()=>I.randomUUID?.()||d(),d=()=>"10000000-1000-4000-8000-100000000000".replace(/[018]/g,e=>(e^D()>>e/4).toString(16)),D=()=>(I.getRandomValues?.(new Uint8Array(1))[0]??16*Math.random())&15,I="undefined"!=typeof crypto?crypto:{},u="2.4";class l extends Error{static from(e,r=!1){if(e instanceof l)return e;let t=new l(e instanceof Error?e.message:String(e),r);return e instanceof Error&&e.stack&&(t.stack=e.stack,Object.assign(t,e)),t}markAsReported(){this.isReported=!0}constructor(e,r=!1){var t,A;super(e),A=void 0,(t="isReported")in this?Object.defineProperty(this,t,{value:A,enumerable:!0,configurable:!0,writable:!0}):this[t]=A,this.isReported=r,this.name=this.constructor.name,Error.captureStackTrace&&Error.captureStackTrace(this,this.constructor)}}let S="https://analytics.production.data.primer.io/sdk-logs";var C=((Y={}).REQUEST_START="REQUEST_START",Y.REQUEST_END="REQUEST_END",Y),L=((p={}).START="START",p.END="END",p);let m={createHeadless:"HEADLESS_LOADING",showUniversalCheckout:"DROP_IN_LOADING",showVaultManager:"VAULT_MANAGER_LOADING",preloadPrimer:"PRELOAD_PRIMER_LOADING"};var Y,p,h,M,f=((h={}).NETWORK_CALL_EVENT="NETWORK_CALL_EVENT",h.CRASH_EVENT="CRASH_EVENT",h.TIMER_EVENT="TIMER_EVENT",h.MESSAGE_EVENT="MESSAGE_EVENT",h.SCRIPT_UNAUTHORIZED_EVENT="SCRIPT_UNAUTHORIZED_EVENT",h.V1_EVENT="V1_EVENT",h.SDK_FUNCTION_EVENT="SDK_FUNCTION_EVENT",h),y=((M=y||{}).CHARGING="CHARGING",M.NOT_CHARGING="NOT_CHARGING",M);async function U(){if("undefined"==typeof navigator||"undefined"==typeof performance)return;let 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"}}let k=({get(e,r){let t;try{switch(e){case"PRIMER_SDK_VERSION":t="v2.60.0";break;case"PRIMER_ASSETS_URL":t=process.env.PRIMER_ASSETS_URL;break;case"PRIMER_BUILD_INTEGRATION_BUILDER":t=process.env.PRIMER_BUILD_INTEGRATION_BUILDER}}catch{}return t||r}}).get("PRIMER_SDK_VERSION");async function w(e,r,t){return{...t,createdAt:Date.now(),device:await U(),eventType:e,properties:r,sdkVersion:k,sdkType:"WEB"}}let g=Symbol.for("__primerAnalytics__"),B={providers:new Map,timers:new Map,eventsQueue:new Map};if("undefined"!=typeof window){let e=window[g];e?B=e:window[g]=B}let v=()=>B.providers,H=()=>B.timers,F=()=>B.eventsQueue;function G(){return"undefined"!=typeof navigator&&"function"==typeof navigator.sendBeacon}let b=new Map;function K(e,r=!1,t=1){b.has(e)&&(clearTimeout(b.get(e)),b.delete(e));let A=()=>{let A=F().get(e);if(A?.length){let E=!0,o=[],n=0,_=0;for(;_<A.length;){let r=A[_],t=new Blob([JSON.stringify(r)]).size;if(t>64e3){console.error("Event size exceeds maximum payload size and will be skipped:",r),_++;continue}if(n+t>64e3&&o.length>0){if(G())try{E=navigator.sendBeacon(e,JSON.stringify(o))}catch(e){E=!1,console.warn("Unable to send events",e)}else E=!1;if(!E)break;o=[],n=0}o.push(r),n+=t,_++}if(o.length>0&&E)if(G())try{E=navigator.sendBeacon(e,JSON.stringify(o))}catch(e){E=!1,console.warn("Unable to send events",e)}else E=!1;E?F().delete(e):t<5?setTimeout(()=>K(e,r,t+1),500*Math.pow(2,t)):console.error("Max retry attempts reached. Events will not be sent.")}};if(r)return void A();let E=setTimeout(A,500);b.set(e,E)}let V=!1;function x({url:e=S,...r}){"undefined"==typeof document||V||(document.addEventListener("visibilitychange",()=>{if("hidden"===document.visibilityState){let e=W(r.checkoutSessionId);e.messageEvent({messageType:"VISIBILITY_CHANGE",message:"Checkout visibility is hidden (tab or window change, redirect or being closed)."}),K(e.url,!0)}}),V=!0);let t=t=>async A=>{var E;let o;"undefined"!=typeof navigator&&(E=function e(r,t,A=new WeakSet,E=0,o=10){if(E>o||A.has(r))return r;A.add(r);let n=r=>"object"==typeof r&&null!==r?e(r,t,A,E+1,o):t(r);return Array.isArray(r)?r.map(n):Object.fromEntries(Object.entries(r).map(([e,r])=>[e,n(r)]))}(await w(t,A,r),e=>{var r;return"string"==typeof(r="function"==typeof e?e.name||"function":e)&&r.length>5120?`${r.slice(0,5120)}...`:r}),F().has(e)||F().set(e,[]),o=F().get(e),o?.push(E),K(e))},A={crashEvent:t(f.CRASH_EVENT),messageEvent:t(f.MESSAGE_EVENT),networkCallEvent:t(f.NETWORK_CALL_EVENT),scriptUnauthorizedEvent:t(f.SCRIPT_UNAUTHORIZED_EVENT),sdkFunctionEvent:t(f.SDK_FUNCTION_EVENT),timerStart:({id:e,...A})=>{let E=`${r.checkoutSessionId}|${e}`,o=performance?.now?performance.now():Date.now();return H().set(E,{start:o}),t(f.TIMER_EVENT)({...A,id:e,timerType:L.START})},timerEnd:({id:e,...A})=>{let E=`${r.checkoutSessionId}|${e}`,{start:o}=H().get(E)??{};H().delete(E);let n=performance?.now?performance.now():Date.now();return t(f.TIMER_EVENT)({...A,id:e,timerType:L.END,duration:o?n-o:void 0})},v1Event:t(f.V1_EVENT),url:e};return v().set(r.checkoutSessionId,A),W(r.checkoutSessionId)}function W(e){return new Proxy({},{get:(r,t)=>(v().get(e)??x({checkoutSessionId:e}))[t]})}let $=(e,r,t,A)=>({callType:t?C.REQUEST_END:C.REQUEST_START,id:e,errorBody:t?.error&&JSON.stringify(t.error,Object.getOwnPropertyNames(t.error)),method:r.method,responseCode:t?.status,url:r.url,duration:A});function j(e){return e?new Promise(r=>{setTimeout(r,e)}):Promise.resolve()}async function X(e,r,t,A=j){let E=0,o={enabled:r?.enabled??!1,maxRetries:8,initialBackoff:100,retryNetworkErrors:!0,retry500Errors:!1,maxJitter:100};if(!o.enabled)return e();for(;;)try{let r=await e();if(E){let e=`Request succeeded after ${E} retries.`;"object"==typeof r&&r&&"status"in r&&(e+=` Status code: ${r.status}`),t?.({messageType:"RETRY_SUCCESS",message:e,severity:"INFO"})}return r}catch(a){let e=E>=o.maxRetries,r=a.isNetworkError&&!o.retryNetworkErrors,n=a.status&&a.status>=500&&!o.retry500Errors;if(e||r||n){let A=`Failed after ${E} retries. `;throw e?A+=`Reached maximum retries (${o.maxRetries}).`:r?A+="Network error encountered and retryNetworkErrors is disabled.":n&&(A+="HTTP 500 error encountered and retry500Errors is disabled."),A+=` Last error: ${a.message}`,t?.({messageType:"RETRY_FAILED",message:A,severity:"ERROR",errorBody:JSON.stringify(a,Object.getOwnPropertyNames(a))}),Error(A,{cause:a})}E++;let _=Math.min(o.initialBackoff*Math.pow(2,E-1)+Math.random()*o.maxJitter,Number.MAX_SAFE_INTEGER),i="Unknown error";a.isNetworkError?i="Network error":a.status&&(i=`HTTP ${a.status} error`),t?.({messageType:"RETRY",message:`Retry attempt ${E}/${o.maxRetries} due to: ${i}. Error details: ${a.message}. Waiting for ${_.toFixed(2)}ms before next attempt.`,severity:"WARN",errorBody:JSON.stringify(a,Object.getOwnPropertyNames(a))}),await A(_)}}let z={cache:new Map};"undefined"!=typeof window&&((r=window)[t="__primerCache__"]??(r[t]=z),z=window.__primerCache__);let Q=()=>z.cache;function Z(){if(Q().size<=30)return;let e=Date.now();for(let[r,t]of Q())t.exp<e&&Q().delete(r);if(Q().size>50)for(let[e]of Q()){if(Q().size<=50)break;Q().delete(e)}}let J=(e,r,t)=>q(e,"get",r,t),q=async(e,r,t,A,E)=>{let o=P(),n=performance?.now(),_=W(e),i={method:r,url:t,body:E};_.networkCallEvent($(o,i));try{let a=await fetch(t,{body:E,method:r,headers:{"content-type":"application/json","x-request-id":o,...A}});if(!a.ok){let e=Error(`HTTP error! status: ${a.status}`);throw e.status=a.status,e}let s=await a.json();if(t.includes("client-sdk/configuration")){let{primerAccountId:r,clientSession:{clientSessionId:t,customer:A}}=s;_=x({checkoutSessionId:e,clientSessionId:t,customerId:A?.customerId,primerAccountId:r,url:_.url})}let c=performance?.now();return _.networkCallEvent($(o,i,{data:s},c-n)),{data:s,headers:a.headers,status:a.status,source:"NETWORK"}}catch(r){let e=performance?.now();throw Object.assign(r,{isNetworkError:r instanceof TypeError}),_.networkCallEvent($(o,i,{error:r},e-n)),r}},ee=(e,r)=>new Promise((t,A)=>{let E=setTimeout(()=>{let e=Error("Request timed out");e.isNetworkError=!0,A(e)},r);e.then(t).catch(A).finally(()=>clearTimeout(E))}),er=(e,r)=>{let{headers:t,retryConfig:A,cacheConfig:E,timeout:o=15e3,checkoutSessionId:n}=r,_=W(n);return(function(e){if(!e)return e=>e();let{key:r,refresh:t=!1,usePrimerSessionCacheTtlHeader:A=!1,ttl:E=36e5}=e;return async e=>{let o=Date.now(),n=Q().get(r);if(!t&&n&&n.exp>o)return n.promise;n&&Q().delete(r);let _=e().then(e=>{let t=E;return A&&(t=1e3*(Number(e.headers.get("x-primer-session-cache-ttl"))||0)),function({key:e,ttl:r=36e5},t){r?Q().set(e,{promise:Promise.resolve({...t,source:"CACHE"}),exp:Date.now()+r}):Q().delete(e)}({key:r,ttl:t},e),Z(),e},e=>{throw Q().delete(r),e});return Q().set(r,{promise:_,exp:o+E}),Z(),_}})(E)(()=>X(()=>ee(J(n,e,t),o),A,r=>_.messageEvent({...r,url:e})))},et="function"==typeof Buffer,eA="function"==typeof TextDecoder?new TextDecoder:void 0,eE="function"==typeof TextEncoder?new TextEncoder:void 0,eo=Array.prototype.slice.call("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="),en=(e=>{let r={};return e.forEach((e,t)=>r[e]=t),r})(eo),e_=/^(?:[A-Za-z\d+\/]{4})*?(?:[A-Za-z\d+\/]{2}(?:==)?|[A-Za-z\d+\/]{3}=?)?$/,ei=String.fromCharCode.bind(String),ea="function"==typeof Uint8Array.from?Uint8Array.from.bind(Uint8Array):e=>new Uint8Array(Array.prototype.slice.call(e,0)),es=e=>e.replace(/=/g,"").replace(/[+\/]/g,e=>"+"==e?"-":"_"),ec=e=>e.replace(/[^A-Za-z0-9\+\/]/g,""),eT="function"==typeof btoa?e=>btoa(e):et?e=>Buffer.from(e,"binary").toString("base64"):e=>{let r,t,A,E,o="",n=e.length%3;for(let n=0;n<e.length;){if((t=e.charCodeAt(n++))>255||(A=e.charCodeAt(n++))>255||(E=e.charCodeAt(n++))>255)throw TypeError("invalid character found");o+=eo[(r=t<<16|A<<8|E)>>18&63]+eo[r>>12&63]+eo[r>>6&63]+eo[63&r]}return n?o.slice(0,n-3)+"===".substring(n):o},eN=et?e=>Buffer.from(e).toString("base64"):e=>{let r=[];for(let t=0,A=e.length;t<A;t+=4096)r.push(ei.apply(null,e.subarray(t,t+4096)));return eT(r.join(""))},eR=(e,r=!1)=>r?es(eN(e)):eN(e),eO=e=>{if(e.length<2){var r=e.charCodeAt(0);return r<128?e:r<2048?ei(192|r>>>6)+ei(128|63&r):ei(224|r>>>12&15)+ei(128|r>>>6&63)+ei(128|63&r)}var r=65536+(e.charCodeAt(0)-55296)*1024+(e.charCodeAt(1)-56320);return ei(240|r>>>18&7)+ei(128|r>>>12&63)+ei(128|r>>>6&63)+ei(128|63&r)},eP=/[\uD800-\uDBFF][\uDC00-\uDFFFF]|[^\x00-\x7F]/g,ed=e=>e.replace(eP,eO),eD=et?e=>Buffer.from(e,"utf8").toString("base64"):eE?e=>eN(eE.encode(e)):e=>eT(ed(e)),eI=(e,r=!1)=>r?es(eD(e)):eD(e),eu=/[\xC0-\xDF][\x80-\xBF]|[\xE0-\xEF][\x80-\xBF]{2}|[\xF0-\xF7][\x80-\xBF]{3}/g,el=e=>{switch(e.length){case 4:var r=((7&e.charCodeAt(0))<<18|(63&e.charCodeAt(1))<<12|(63&e.charCodeAt(2))<<6|63&e.charCodeAt(3))-65536;return ei((r>>>10)+55296)+ei((1023&r)+56320);case 3:return ei((15&e.charCodeAt(0))<<12|(63&e.charCodeAt(1))<<6|63&e.charCodeAt(2));default:return ei((31&e.charCodeAt(0))<<6|63&e.charCodeAt(1))}},eS=e=>e.replace(eu,el),eC="function"==typeof atob?e=>atob(ec(e)):et?e=>Buffer.from(e,"base64").toString("binary"):e=>{if(e=e.replace(/\s+/g,""),!e_.test(e))throw TypeError("malformed base64.");e+="==".slice(2-(3&e.length));let r,t="",A,E;for(let o=0;o<e.length;)r=en[e.charAt(o++)]<<18|en[e.charAt(o++)]<<12|(A=en[e.charAt(o++)])<<6|(E=en[e.charAt(o++)]),t+=64===A?ei(r>>16&255):64===E?ei(r>>16&255,r>>8&255):ei(r>>16&255,r>>8&255,255&r);return t},eL=et?e=>ea(Buffer.from(e,"base64")):e=>ea(eC(e).split("").map(e=>e.charCodeAt(0))),em=e=>eL(ep(e)),eY=et?e=>Buffer.from(e,"base64").toString("utf8"):eA?e=>eA.decode(eL(e)):e=>eS(eC(e)),ep=e=>ec(e.replace(/[-_]/g,e=>"-"==e?"+":"/")),eh=e=>eY(ep(e)),eM=e=>({value:e,enumerable:!1,writable:!0,configurable:!0}),ef={encode:eI,decode:eh},ey={encode:function(e,r={}){let{urlSafe:t=!1}=r;return ef.encode(e,t)},decode:ef.decode},eU="The provided `clientToken`",ek=`${eU} has expired`,ew=`${eU} is malformed`,eg=(e,r,t)=>({"primer-client-token":e,"primer-sdk-client":"WEB","primer-sdk-version":"v2.60.0","primer-sdk-checkout-session-id":r,...t&&{"x-api-version":t}});async function eB(e,r,t){let{accessToken:A,configurationUrl:E,analyticsUrlV2:o}=function(e){let r=function(e){try{let[r,t]=e.split(".");return JSON.parse(ey.decode(t||r))}catch{throw Error(ew)}}(e),t=1e3*r.exp;if(Date.now()>t)throw Error(`${ek}. Expiration date: ${new Date(t).toISOString()}`);return r}(e),n=x({checkoutSessionId:r,url:o}),_=u;n.timerStart({id:"CONFIGURATION_LOADING"});try{let{data:e,source:o}=await er(`${E}/?withDisplayMetadata=true`,{checkoutSessionId:r,headers:eg(A,r,_),retryConfig:{enabled:!0},cacheConfig:t});return n.timerEnd({id:"CONFIGURATION_LOADING",context:{source:o}}),e}catch(r){let e=r instanceof Error?r.message:"Unknown error occurred";throw Error(`Failed to initialize client: ${e}`)}}function ev(e){return e instanceof Error?{errorBody:e.message,stacktrace:e.stack}:"object"==typeof e&&null!==e&&"message"in e?{errorBody:String(e.message),stacktrace:"stack"in e?String(e.stack):void 0}:{errorBody:String(e||"Unknown error")}}function eH({checkoutSessionId:e,analytics:r,error:t,reporter:A}){r?.crashEvent?r.crashEvent({...ev(t),reporter:A}):e&&eF(e,t,A)}async function eF(e,r,t){let A=await w(f.CRASH_EVENT,{...ev(r),reporter:t},{checkoutSessionId:e});try{await fetch(S,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(A)})}catch(e){console.error("Failed to post crash event",e)}}let eG=Symbol.for("initGlobalErrorMonitoringLoaded"),eb=(e,r)=>{"undefined"!=typeof window&&window[eG]||(window[eG]=!0,window.addEventListener("error",t=>{!eK(t)&&eV(t)&&eH({checkoutSessionId:e,analytics:r,error:t.error,reporter:"window.onerror"})}),window.addEventListener("unhandledrejection",t=>{let A=t.reason||Error("Unhandled promise rejection");ex(A)&&eH({checkoutSessionId:e,analytics:r,error:A,reporter:"unhandledrejection"})}))},eK=e=>"Script error."===e.message||!e.filename||0===e.lineno,eV=e=>{let r=e.filename;return!!(r&&eW(r))&&!!new l(e.error).isReported},ex=e=>{if(e&&"object"==typeof e&&"stack"in e&&"string"==typeof e.stack){let r=l.from(e);return!r.isReported&&(!!("fileName"in e&&"string"==typeof e.fileName&&eW(e.fileName))||e$(r.stack).some(eW))}return!1},eW=e=>{try{return new URL(e,window.location.origin).hostname.endsWith(".primer.io")}catch{return!1}},e$=e=>{if(!e)return[];let r=e.split("\n"),t=[],A=/^\s*at\s+(?:.*?\s+)?\(?(.+?):\d+:\d+\)?$/;for(let e of r){let r=e.match(A);if(r&&r[1])t.push(r[1]);else{let r=/@(.*?):\d+:\d+$/,A=e.match(r);A&&A[1]&&t.push(A[1])}}return t},ej=["https://sdk.primer.io/web/","https://sdk.dev.primer.io/web/","https://sdk.sandbox.primer.io/web/","https://sdk.production.primer.io/web/","https://assets.primer.io/","https://x.klarnacdn.net/kp/lib/v","https://www.paypal.com/sdk/js","https://www.paypalobjects.com/","https://js.stripe.com/","https://pay.google.com/gp/p/js/"];function eX(e,r,t){return document.querySelector(`${e}[${r}^="${t}"]`)}async function ez(e,r,t,A,E,o){let{analytics:n,name:_=r,retryConfig:i}=o;await X(()=>new Promise((o,i)=>{var a;let s,c=eX(e,t,r)||(a={...A,[t]:r},s=document.createElement(e),Object.entries(a).forEach(([e,r])=>s.setAttribute(e,r)),s);c.onload=()=>{n?.sdkFunctionEvent({name:_,params:[`${e.charAt(0).toUpperCase()+e.slice(1)} loaded successfully: ${r}`]}),o()},c.onerror=()=>{c.remove(),i(Error(`${E}: ${r}`))},c.parentNode||document.head.appendChild(c)}),i,e=>n?.messageEvent({...e,url:r}))}async function eQ(r){return e||(e=Promise.all([function(e,r={}){if(!ej.some(r=>e.startsWith(r))){let t=`Script source not authorized per PCI DSS 6.4.3: ${e}`;return r.analytics?.scriptUnauthorizedEvent({scriptSource:e,errorMessage:t,severity:"ERROR"}),console.error(`[Primer SDK Security] ${t}`),Promise.reject(Error(t))}return eX("script","src",e)&&window.__Primer?(r.analytics?.sdkFunctionEvent({name:r.name??e,params:["Script already loaded"]}),Promise.resolve()):ez("script",e,"src",{...r.attributes,async:"",crossorigin:"anonymous"},"Can't load Primer SDK",r)}("https://sdk.primer.io/web/v2.60.0/PrimerCoreSDK.min.js",{analytics:r,name:"loadPrimerScript"}),function(e,r={}){return Array.from(document.styleSheets).some(r=>r.href===e)?(r.analytics?.sdkFunctionEvent({name:r.name??e,params:["Stylesheet already loaded"]}),Promise.resolve()):ez("link",e,"href",{...r.attributes,rel:"stylesheet"},"Can't load Primer SDK's Stylesheet",r)}("https://sdk.primer.io/web/v2.60.0/Checkout.css",{analytics:r,name:"loadPrimerCss"})]).then(()=>{let e=window.__Primer;return delete window.__Primer,e}).catch(r=>{throw e=void 0,r}))}let eZ=async()=>{let e=P();try{let r=W(e);try{eb(e,r),r.sdkFunctionEvent({name:"preloadPrimer"}),r.timerStart({id:m.preloadPrimer}),await eQ(r),r.timerEnd({id:m.preloadPrimer})}catch(A){let t=l.from(A);throw t.isReported||(eH({checkoutSessionId:e,analytics:r,error:t,reporter:"preloadPrimer level 1"}),t.markAsReported()),t}}catch(t){let r=l.from(t);throw r.isReported||(eF(e,r,"preloadPrimer level 0"),r.markAsReported()),r}},eJ=e1("createHeadless"),eq=e1("showUniversalCheckout"),e0=e1("showVaultManager");function e1(e){return async(...[r,t,...A])=>{u=t?.apiVersion??"2.4";let E=P();try{let o=W(E);try{eb(E,o),o.sdkFunctionEvent({name:e,params:[r,t,...A]}),o.timerStart({id:m[e]});let[n,_]=await Promise.all([eB(r,E,t?.clientSessionCachingEnabled?{key:r,usePrimerSessionCacheTtlHeader:!0}:void 0),eQ(o)]);return _[e](n,E,r,t,...A)}catch(r){let e=l.from(r);throw e.isReported||(eH({checkoutSessionId:E,analytics:o,error:e,reporter:"lazyLoad level 1"}),e.markAsReported()),e}}catch(r){let e=l.from(r);throw e.isReported||(eF(E,e,"lazyLoad level 0"),e.markAsReported()),e}}}(A={}).LOADING="Loading",A.NO_PAYMENT_METHOD="NoPaymentMethod",A.THREE_DS="UniversalCheckout/3ds",A.CHOOSE_PAYMENT_METHOD="UniversalCheckout/Home",A.MANAGE_PAYMENT_METHODS="VaultManager/Home",A.DIRECT_DEBIT_FORM="DirectDebit/Form",A.DIRECT_DEBIT_MANDATE="DirectDebit/Mandate",A.CREDIT_CARD_FORM="CreditCard/Form",A.SUCCESS_PAYMENT_METHOD="UniversalCheckout/Success/PaymentMethod",A.SUCCESS_CHECK="UniversalCheckout/Success/Check",(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",(o={}).TOKEN="PrimerCheckout__token",o.HIDDEN="PrimerCheckout--hidden",o.FOCUSED="PrimerCheckout--focused",o.SELECTED="PrimerCheckout--selected",o.LOADING="PrimerCheckout--loading",o.ERROR="PrimerCheckout--error",o.CARD_TYPE="PrimerCheckout__cardType",o.SAVED_PAYMENT_METHOD="PrimerCheckout__savedPaymentMethod",o.SAVED_PAYMENT_METHOD_CONTAINER="PrimerCheckout__savedPaymentMethodContainer",o.APM_BUTTON="PrimerCheckout__apmButton",o.EDIT_BUTTON="PrimerCheckout__editButton",o.MENU="PrimerCheckout__dropDownMenu",o.MENU_ITEM="PrimerCheckout__dropDownMenuItem",o.PAYMENT_METHOD_MENU_ITEM="PrimerCheckout__paymentMethodDropDownMenuItem",o.DELETE_PAYMENT_METHOD_BUTTON="PrimerCheckout__paymentMethodDropDownMenuItem__deleteButton",o.ENTER="PrimerCheckout--enter",o.ENTERING="PrimerCheckout--entering",o.ENTERED="PrimerCheckout--entered",o.EXIT="PrimerCheckout--exit",o.EXITING="PrimerCheckout--exiting",o.EXITED="PrimerCheckout--exited";var e2=((n={}).CHECKOUT="CHECKOUT",n.HEADLESS_CHECKOUT="HEADLESS_CHECKOUT",n.MANAGE_PAYMENT_METHODS="MANAGE_PAYMENT_METHODS",n),e6=((_={}).DEFAULT="DEFAULT",_.PREFER_VAULT="PREFER_VAULT",_);(i={}).TOKENIZE_STARTED="tokenize-started",i.TOKENIZE_ERROR="tokenize-error",i.TOKENIZE_SUCCESS="tokenize-success",i.TOKENIZE_DID_NOT_START="tokenize-did-not-start";var e5=((a={}).SUCCESS="AUTH_SUCCESS",a.FAILED="AUTH_FAILED",a.SKIPPED="SKIPPED",a.CHALLENGE="CHALLENGE",a);let e3={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",PAY_NL_RIVERTY:"PAY_NL_RIVERTY",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",DLOCAL_PIX:"DLOCAL_PIX",ALMA:"ALMA",ADYEN_CASHAPP:"ADYEN_CASHAPP",ADYEN_AFFIRM:"ADYEN_AFFIRM"},e4={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",PAY_NL_RIVERTY:"PAY_NL_RIVERTY",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",DLOCAL_PIX:"DLOCAL_PIX",ALMA:"ALMA",ADYEN_CASHAPP:"ADYEN_CASHAPP",ADYEN_AFFIRM:"ADYEN_AFFIRM"},e8={SINGLE_USE:"SINGLE_USE",MULTI_USE:"MULTI_USE"};e3.PAYPAL_VAULTED,e4.PAYPAL,e3.KLARNA_CUSTOMER_TOKEN,e4.KLARNA,e3.AUTOMATED_CLEARING_HOUSE,e4.STRIPE_ACH,e3.CARD,e4.PAYMENT_CARD;var e9=((s={}).INITIALIZATION_ERROR="INITIALIZATION_ERROR",s.NO_PAYMENT_METHODS="NO_PAYMENT_METHODS",s.PRIMER_TEARDOWN="PRIMER_TEARDOWN",s.PRIMER_SERVER_ERROR="PRIMER_SERVER_ERROR",s.THREE_DS_AUTH_FAILED="THREE_DS_AUTH_FAILED",s.TOKENIZATION_ERROR="TOKENIZATION_ERROR",s.DUPLICATE_PAYMENT_METHOD_ERROR="DUPLICATE_PAYMENT_METHOD_ERROR",s.CARD_NUMBER_ERROR="CARD_NUMBER_ERROR",s.PAYMENT_METHOD_NOT_SETUP="PAYMENT_METHOD_NOT_SETUP",s.PAYMENT_METHOD_NOT_PROVIDED="PAYMENT_METHOD_NOT_PROVIDED",s.PAYMENT_METHOD_NOT_COMPATIBLE="PAYMENT_METHOD_NOT_COMPATIBLE",s.RESUME_ERROR="RESUME_ERROR",s.VALIDATION_ERROR="VALIDATION_ERROR",s.PAYMENT_FAILED="PAYMENT_FAILED",s.PAYMENT_CREATION_ABORTED="PAYMENT_CREATION_ABORTED",s.PAYMENT_CREATION_DISABLED="PAYMENT_CREATION_DISABLED",s.CLIENT_SESSION_UPDATE_ERROR="CLIENT_SESSION_UPDATE_ERROR",s.INVALID_ARGUMENT="INVALID_ARGUMENT",s.IDEMPOTENCY_KEY_ALREADY_EXISTS="IDEMPOTENCY_KEY_ALREADY_EXISTS",s.VAULT_FETCH="VAULT_FETCH",s.VAULT_DELETE="VAULT_DELETE",s.HEADLESS_VAULT_MANAGER_VALIDATION="HEADLESS_VAULT_MANAGER_VALIDATION",s.CARD_FORM_VALIDATION_UNEXPECTED_FIELD="CARD_FORM_VALIDATION_UNEXPECTED_FIELD",s.MISSING_FIRST_NAME_OR_LAST_NAME="MISSING_FIRST_NAME_OR_LAST_NAME",s.MISSING_EMAIL_ADDRESS="MISSING_EMAIL_ADDRESS",s.INVALID_FLOW="INVALID_FLOW",s);function e7(e,r,t){return r in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e}class re extends l{static fromErrorCode(e,r){return new re(e,r)}static fromExistingError(e,r,t){if(e instanceof re)return e;let A=e?.message?`${e.message}, `:"";return new re(r,{...t,message:`${A}${t.message}`})}constructor(e,r){super(r.message),e7(this,"code",void 0),e7(this,"diagnosticsId",void 0),e7(this,"data",void 0),e7(this,"isFromDeveloper",void 0),this.code=e,this.diagnosticsId=r.diagnosticsId??null,this.data=r.data,this.isFromDeveloper=r.isFromDeveloper??!1,this.name="PrimerClientError",Error.captureStackTrace&&Error.captureStackTrace(this,re)}}var rr=((c={}).PAYMENT_METHOD="PAYMENT_METHOD",c.CHECK="CHECK",c);let rt=e=>{let r=e?.mandateData;return!!r&&"fullMandateText"in r};var rA=((T={}).CHANGE="change",T.ERROR="error",T.FOCUS="focus",T.BLUR="blur",T.CLICK="click",T.CLOSE="close",T.CONFIRMED_KLARNA_CATEGORY="CONFIRMED_KLARNA_CATEGORY",T.CONFIRMED_KLARNA_CATEGORY_ERROR="CONFIRMED_KLARNA_CATEGORY_ERROR",T.KLARNA_SESSION_UPDATE="KLARNA_SESSION_UPDATE",T.KLARNA_SESSION_REFRESH_ERROR="KLARNA_SESSION_REFRESH_ERROR",T),rE=((N={}).CARD="CARD",N.NATIVE="NATIVE",N.REDIRECT="REDIRECT",N.KLARNA="KLARNA",N.ACH="ACH",N);let ro={SDK_VERSION:"v2.60.0",createHeadless:eJ,showUniversalCheckout:eq,showVaultManager:e0,preloadPrimer:eZ};return O})());
2
2
  //# sourceMappingURL=Primer.js.map
package/dist/index.d.ts CHANGED
@@ -642,6 +642,7 @@ export declare enum ErrorCode {
642
642
  PAYMENT_CREATION_DISABLED = "PAYMENT_CREATION_DISABLED",
643
643
  CLIENT_SESSION_UPDATE_ERROR = "CLIENT_SESSION_UPDATE_ERROR",
644
644
  INVALID_ARGUMENT = "INVALID_ARGUMENT",
645
+ IDEMPOTENCY_KEY_ALREADY_EXISTS = "IDEMPOTENCY_KEY_ALREADY_EXISTS",
645
646
  VAULT_FETCH = "VAULT_FETCH",
646
647
  VAULT_DELETE = "VAULT_DELETE",
647
648
  HEADLESS_VAULT_MANAGER_VALIDATION = "HEADLESS_VAULT_MANAGER_VALIDATION",
@@ -1113,7 +1114,9 @@ export type Payment = {
1113
1114
  paymentMethodData?: PaymentMethodData$1;
1114
1115
  };
1115
1116
  export interface onBeforePaymentCreateHandler {
1116
- continuePaymentCreation: () => void;
1117
+ continuePaymentCreation: (options?: {
1118
+ idempotencyKey?: string;
1119
+ }) => void;
1117
1120
  abortPaymentCreation: () => void;
1118
1121
  }
1119
1122
  export interface OnCheckoutFailHandler {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@primer-io/checkout-web",
3
- "version": "2.59.10",
3
+ "version": "2.60.0",
4
4
  "description": "Primer.js for the web",
5
5
  "author": "Primer Developers <developers@primer.io>",
6
6
  "homepage": "",