@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 +27 -0
- package/README.md +8 -16
- package/dist/Primer.js +1 -1
- package/dist/index.d.ts +4 -1
- package/package.json +1 -1
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/
|
|
45
|
-
- [API reference](https://
|
|
46
|
-
- [Changelogs](https://
|
|
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/
|
|
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/
|
|
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/
|
|
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/
|
|
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/
|
|
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: (
|
|
1117
|
+
continuePaymentCreation: (options?: {
|
|
1118
|
+
idempotencyKey?: string;
|
|
1119
|
+
}) => void;
|
|
1117
1120
|
abortPaymentCreation: () => void;
|
|
1118
1121
|
}
|
|
1119
1122
|
export interface OnCheckoutFailHandler {
|