@primer-io/checkout-web 2.44.1 → 2.45.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/dist/Primer.js CHANGED
@@ -1,2 +1 @@
1
- (function(h,s){typeof exports=="object"&&typeof module=="object"?module.exports=s():typeof define=="function"&&define.amd?define([],s):typeof exports=="object"?exports.Primer=s():h.Primer=s()})(this,()=>(()=>{var W={476:()=>{},962:()=>{},473:()=>{}},h={};function s(a){var O=h[a];if(O!==void 0)return O.exports;var D=h[a]={exports:{}};return W[a](D,D.exports,s),D.exports}s.d=(a,O)=>{for(var D in O)s.o(O,D)&&!s.o(a,D)&&Object.defineProperty(a,D,{enumerable:!0,get:O[D]})},s.o=(a,O)=>Object.prototype.hasOwnProperty.call(a,O),s.r=a=>{typeof Symbol<"u"&&Symbol.toStringTag&&Object.defineProperty(a,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(a,"__esModule",{value:!0})};var w={};return(()=>{"use strict";s.r(w),s.d(w,{CheckoutUXFlow:()=>fr,ErrorCode:()=>gr,EventTypes:()=>br,HeadlessManagerType:()=>vr,PaymentFlow:()=>lr,PaymentInstrumentType:()=>hr,PaymentMethodData:()=>$t.PaymentMethodData,PaymentMethodType:()=>V,Primer:()=>Xt,SuccessScreenType:()=>wr,ThreeDSecureStatus:()=>Mr,TokenType:()=>Ur,isStripeOptionsDropInWithFullMandateText:()=>jt,preloadPrimer:()=>pt});const a=8,O=100,D=100,xr=r=>new Promise(t=>setTimeout(t,r));function Hr(r){return{enabled:r?.enabled??!1,maxRetries:a,initialBackoff:O,retryNetworkErrors:!0,retry500Errors:!1,maxJitter:D}}function Fr(r,t,e){const o=r*Math.pow(2,t-1),A=Math.random()*e;return Math.min(o+A,Number.MAX_SAFE_INTEGER)}async function m(r,t,e,o,A=xr){let _=0;const E=Hr(t);if(!E.enabled)return r();for(;;)try{const i=await r();return o&&o(),i}catch(i){const n=i,T=_>=E.maxRetries,R=n.isNetworkError&&!E.retryNetworkErrors,N=n.status&&n.status>=500&&!E.retry500Errors;if(T||R||N){let C=`Failed after ${_} retries. `;throw T?C+=`Reached maximum retries (${E.maxRetries}).`:R?C+="Network error encountered and retryNetworkErrors is disabled.":N&&(C+="HTTP 500 error encountered and retry500Errors is disabled."),C+=` Last error: ${n.message}`,e&&e(C),new Error(C,{cause:i})}_++;const Y=Fr(E.initialBackoff,_,E.maxJitter);let M="Unknown error";n.isNetworkError?M="Network error":n.status&&(M=`HTTP ${n.status} error`),e&&e(`Retry attempt ${_}/${E.maxRetries} due to: ${M}. Error details: ${n.message}. Waiting for ${Y.toFixed(2)}ms before next attempt.`),await A(Y)}}function pr(r,t){const e=document.createElement(r);return Object.entries(t).forEach(([o,A])=>e.setAttribute(o,A)),e}function $(r,t,e){return document.querySelector(`${r}[${t}^="${e}"]`)}async function j(r,t,e,o,A,_){const{logger:E,retryConfig:i}=_;await m(()=>new Promise((T,R)=>{const N=$(r,e,t)||pr(r,{...o,[e]:t});N.onload=()=>{E?.(`${r.charAt(0).toUpperCase()+r.slice(1)} loaded successfully: ${t}`),T()},N.onerror=()=>{N.remove(),R(new Error(`${A}: ${t}`))},N.parentNode||document.head.appendChild(N)}),i,E)}function Gr(r,t={}){return $("script","src",r)&&window.__Primer?(t.logger?.("Script already loaded"),Promise.resolve()):j("script",r,"src",{...t.attributes,async:"",crossorigin:"anonymous"},"Can't load Primer SDK",t)}function Kr(r,t={}){return Array.from(document.styleSheets).some(e=>e.href===r)?(t.logger?.("Stylesheet already loaded"),Promise.resolve()):j("link",r,"href",{...t.attributes,rel:"stylesheet"},"Can't load Primer SDK's Stylesheet",t)}let d;async function X(r){return d||(d=Promise.all([Gr("https://sdk.primer.io/web/v2.44.1/PrimerCoreSDK.min.js",{logger:o=>{r?.sdkFunctionEvent({name:"loadPrimerScript",params:[o]})}}),Kr("https://sdk.primer.io/web/v2.44.1/Checkout.css",{logger:o=>{r?.sdkFunctionEvent({name:"loadPrimerCss",params:[o]})}})]).then(()=>{const o=window.__Primer;return delete window.__Primer,o}).catch(o=>{throw d=void 0,o}),d)}var zt=s(476),Qt=s(962),b=(r=>(r.REQUEST_START="REQUEST_START",r.REQUEST_END="REQUEST_END",r))(b||{}),Vr=(r=>(r.START="START",r.END="END",r))(Vr||{}),P=(r=>(r.NETWORK_CALL_EVENT="NETWORK_CALL_EVENT",r.CRASH_EVENT="CRASH_EVENT",r.TIMER_EVENT="TIMER_EVENT",r.MESSAGE_EVENT="MESSAGE_EVENT",r.V1_EVENT="V1_EVENT",r.SDK_FUNCTION_EVENT="SDK_FUNCTION_EVENT",r))(P||{});const Wr={get(r,t){let e;try{switch(r){case"PRIMER_SDK_VERSION":e="v2.44.1";break;case"PRIMER_ASSETS_URL":e=process.env.PRIMER_ASSETS_URL;break;case"PRIMER_CORE_API_URL":e=process.env.PRIMER_CORE_API_URL;break;case"PRIMER_PCI_API_URL":e=process.env.PRIMER_PCI_API_URL;break;case"PRIMER_MODULES_URL":e=process.env.PRIMER_MODULES_URL;break;case"PRIMER_BUILD_INTEGRATION_BUILDER":e=process.env.PRIMER_BUILD_INTEGRATION_BUILDER;break;case"SENTRY_DSN":e=process.env.SENTRY_DSN;break;default:break}}catch{}return e||t}};var mr=(r=>(r.CHARGING="CHARGING",r.NOT_CHARGING="NOT_CHARGING",r))(mr||{});async function $r(){if(typeof navigator>"u")return;const r=await navigator.getBattery?.();return{memoryFootprint:performance.memory?.usedJSHeapSize,screen:{height:screen?.height,width:screen?.width},platformVersion:navigator.platform,userAgent:navigator.userAgent,locale:navigator.language,batteryLevel:r?.level,batteryStatus:r?.charging?"CHARGING":"NOT_CHARGING"}}const jr="WEB",Xr=Wr.get("PRIMER_SDK_VERSION");async function zr(r,t,e){return{...e,createdAt:Date.now(),device:await $r(),eventType:r,properties:t,sdkVersion:Xr,sdkType:jr}}const z="https://analytics.production.data.primer.io/sdk-logs",Qr=z==="https://analytics.sandbox.data.primer.io/playwright",Q=1024*5,Zr=500,U=new Map,I=new Map;function v({url:r=z,...t}={}){typeof document<"u"&&document.addEventListener("visibilitychange",()=>{document.visibilityState==="hidden"&&Z(r,!0)});const e=o=>async A=>{if(typeof navigator>"u")return;const _=await zr(o,A,t),E=n=>qr(yr(n));if(Qr)return;const i=J(_,E);Jr(r,i)};return{crashEvent:e(P.CRASH_EVENT),messageEvent:e(P.MESSAGE_EVENT),networkCallEvent:e(P.NETWORK_CALL_EVENT),sdkFunctionEvent:e(P.SDK_FUNCTION_EVENT),timerEvent:e(P.TIMER_EVENT),v1Event:e(P.V1_EVENT)}}function Z(r,t=!1){if(U.has(r)){const A=U.get(r);clearTimeout(A),U.delete(r)}const e=()=>{const A=I.get(r);if(A?.length){try{navigator.sendBeacon(r,JSON.stringify(A))}catch(_){console.error("Unable to access navigator",_)}I.delete(r)}};if(t){e();return}const o=setTimeout(e,Zr);U.set(r,o)}function Jr(r,t){I.has(r)||I.set(r,[]),I.get(r)?.push(t),Z(r)}function J(r,t){const e=o=>typeof o=="object"&&o!==null?J(o,t):t(o);return Array.isArray(r)?r.map(e):Object.fromEntries(Object.entries(r).map(([o,A])=>[o,e(A)]))}function qr(r){return typeof r=="string"&&r.length>Q?`${r.slice(0,Q)}...`:r}function yr(r){return typeof r=="function"?r.name||"function":r}class x{constructor(t,e){this.type=t,this.displayName=e}get specs(){return this.constructor.specs}setOption(t,e){this.options&&(this.options[t]=e)}setupAndValidate(){return Promise.resolve(!0)}mount(){return Promise.resolve(!0)}tokenize(t){return Promise.resolve()}validate(){return Promise.resolve({valid:!0,validationErrors:[]})}setDisabled(t){return Promise.resolve()}focus(){}blur(){}getPaymentElement(){return null}getStore(){}}x.specs={key:"__none__",canVault:!1,buttonManagedByPaymentMethod:!1,hasExportedButtonOptions:!1},x.create=(r,t,e,o)=>{throw new Error("Cannot instantiate BasePaymentMethod")};class rt extends x{async tokenize(t){}}class tt{get session(){const t=this.store.getState().clientSessionInfo;if(!t)throw new Error("Client Context Session does not exist");return t}}const et=[Array,rt,tt,Map,Set];function ot(r){const t=new Set,e=20;let o=0;for(;o++<e&&r&&r!==Object.prototype;)Object.getOwnPropertyNames(r).forEach(A=>t.add(A)),r=Object.getPrototypeOf(r);return[...t]}function q(r,t,e,o,A){if(!e||et.some(_=>e instanceof _))return e;switch(typeof e){case"function":return new Proxy(e,{apply(_,E,i=[]){const n={name:t.replace(/^bound /,""),params:i,module:A};r?.sdkFunctionEvent(n);const T=i.map((R,N)=>q(r,`${N}`,R,o,[A,t,`${N}`].filter(Boolean).join(".")));return _.apply(E,T)}});case"object":return e===o?e:At(r,e,[A,t].filter(Boolean).join("."));default:return e}}function At(r,t,e){return Object.fromEntries(ot(t).map(o=>{const A=t?.[o],_=q(r,o,A,A,e);return[o,_]}))}const y=()=>rr.randomUUID?.()||_t(),_t=()=>("10000000-1000-4000-8000"+-1e11).replace(/[018]/g,r=>(r^Et()>>r/4).toString(16)),Et=()=>(rr.getRandomValues?.(new Uint8Array(1))[0]??Math.random()*16)&15,rr=typeof crypto<"u"?crypto:{},it=new Set(["post","get","delete"]),nt=new Set(["post"]);function ct(r,t,e,o){const A=nt.has(r);return{method:r,options:A?o:e,body:A?e:void 0,url:t}}function Zt(r,t){const e=({prop:o})=>({apply:async(A,_,E=[])=>{const i=ct(o.toString(),...E);if(i.options?.isAnalytics)return A.apply(_,E);const n=uuid();t?.networkCallEvent(prepareNetworkEventProps(n,i));const T=Date.now(),R=await A.apply(_,E),Y=Date.now()-T;return t?.networkCallEvent(prepareNetworkEventProps(n,i,R,Y)),R}});return new Proxy(r,{get(o,A){const _=o[A];return typeof _=="function"&&it.has(A)?new Proxy(_,e({prop:A})):_}})}const H=(r,t,e,o)=>({callType:e?b.REQUEST_END:b.REQUEST_START,id:r,errorBody:e?.error&&JSON.stringify(e.error),method:t.method,responseCode:e?.status,url:t.url,duration:o}),tr="3.6.1",st=tr,at=typeof atob=="function",Nt=typeof btoa=="function",L=typeof Buffer=="function",er=typeof TextDecoder=="function"?new TextDecoder:void 0,or=typeof TextEncoder=="function"?new TextEncoder:void 0,f=[..."ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="],B=(r=>{let t={};return r.forEach((e,o)=>t[e]=o),t})(f),Rt=/^(?:[A-Za-z\d+\/]{4})*?(?:[A-Za-z\d+\/]{2}(?:==)?|[A-Za-z\d+\/]{3}=?)?$/,c=String.fromCharCode.bind(String),Ar=typeof Uint8Array.from=="function"?Uint8Array.from.bind(Uint8Array):(r,t=e=>e)=>new Uint8Array(Array.prototype.slice.call(r,0).map(t)),_r=r=>r.replace(/[+\/]/g,t=>t=="+"?"-":"_").replace(/=+$/m,""),Er=r=>r.replace(/[^A-Za-z0-9\+\/]/g,""),ir=r=>{let t,e,o,A,_="";const E=r.length%3;for(let i=0;i<r.length;){if((e=r.charCodeAt(i++))>255||(o=r.charCodeAt(i++))>255||(A=r.charCodeAt(i++))>255)throw new TypeError("invalid character found");t=e<<16|o<<8|A,_+=f[t>>18&63]+f[t>>12&63]+f[t>>6&63]+f[t&63]}return E?_.slice(0,E-3)+"===".substring(E):_},F=Nt?r=>btoa(r):L?r=>Buffer.from(r,"binary").toString("base64"):ir,p=L?r=>Buffer.from(r).toString("base64"):r=>{let e=[];for(let o=0,A=r.length;o<A;o+=4096)e.push(c.apply(null,r.subarray(o,o+4096)));return F(e.join(""))},g=(r,t=!1)=>t?_r(p(r)):p(r),Ot=r=>{if(r.length<2){var t=r.charCodeAt(0);return t<128?r:t<2048?c(192|t>>>6)+c(128|t&63):c(224|t>>>12&15)+c(128|t>>>6&63)+c(128|t&63)}else{var t=65536+(r.charCodeAt(0)-55296)*1024+(r.charCodeAt(1)-56320);return c(240|t>>>18&7)+c(128|t>>>12&63)+c(128|t>>>6&63)+c(128|t&63)}},Dt=/[\uD800-\uDBFF][\uDC00-\uDFFFF]|[^\x00-\x7F]/g,nr=r=>r.replace(Dt,Ot),cr=L?r=>Buffer.from(r,"utf8").toString("base64"):or?r=>p(or.encode(r)):r=>F(nr(r)),S=(r,t=!1)=>t?_r(cr(r)):cr(r),sr=r=>S(r,!0),Tt=/[\xC0-\xDF][\x80-\xBF]|[\xE0-\xEF][\x80-\xBF]{2}|[\xF0-\xF7][\x80-\xBF]{3}/g,ut=r=>{switch(r.length){case 4:var t=(7&r.charCodeAt(0))<<18|(63&r.charCodeAt(1))<<12|(63&r.charCodeAt(2))<<6|63&r.charCodeAt(3),e=t-65536;return c((e>>>10)+55296)+c((e&1023)+56320);case 3:return c((15&r.charCodeAt(0))<<12|(63&r.charCodeAt(1))<<6|63&r.charCodeAt(2));default:return c((31&r.charCodeAt(0))<<6|63&r.charCodeAt(1))}},ar=r=>r.replace(Tt,ut),Nr=r=>{if(r=r.replace(/\s+/g,""),!Rt.test(r))throw new TypeError("malformed base64.");r+="==".slice(2-(r.length&3));let t,e="",o,A;for(let _=0;_<r.length;)t=B[r.charAt(_++)]<<18|B[r.charAt(_++)]<<12|(o=B[r.charAt(_++)])<<6|(A=B[r.charAt(_++)]),e+=o===64?c(t>>16&255):A===64?c(t>>16&255,t>>8&255):c(t>>16&255,t>>8&255,t&255);return e},G=at?r=>atob(Er(r)):L?r=>Buffer.from(r,"base64").toString("binary"):Nr,Rr=L?r=>Ar(Buffer.from(r,"base64")):r=>Ar(G(r),t=>t.charCodeAt(0)),Or=r=>Rr(Dr(r)),Pt=L?r=>Buffer.from(r,"base64").toString("utf8"):er?r=>er.decode(Rr(r)):r=>ar(G(r)),Dr=r=>Er(r.replace(/[-_]/g,t=>t=="-"?"+":"/")),K=r=>Pt(Dr(r)),Lt=r=>{if(typeof r!="string")return!1;const t=r.replace(/\s+/g,"").replace(/=+$/,"");return!/[^\s0-9a-zA-Z\+/]/.test(t)||!/[^\s0-9a-zA-Z\-_]/.test(t)},Tr=r=>({value:r,enumerable:!1,writable:!0,configurable:!0}),ur=function(){const r=(t,e)=>Object.defineProperty(String.prototype,t,Tr(e));r("fromBase64",function(){return K(this)}),r("toBase64",function(t){return S(this,t)}),r("toBase64URI",function(){return S(this,!0)}),r("toBase64URL",function(){return S(this,!0)}),r("toUint8Array",function(){return Or(this)})},Pr=function(){const r=(t,e)=>Object.defineProperty(Uint8Array.prototype,t,Tr(e));r("toBase64",function(t){return g(this,t)}),r("toBase64URI",function(){return g(this,!0)}),r("toBase64URL",function(){return g(this,!0)})},Lr={version:tr,VERSION:st,atob:G,atobPolyfill:Nr,btoa:F,btoaPolyfill:ir,fromBase64:K,toBase64:S,encode:S,encodeURI:sr,encodeURL:sr,utob:nr,btou:ar,decode:K,isValid:Lt,fromUint8Array:g,toUint8Array:Or,extendString:ur,extendUint8Array:Pr,extendBuiltins:()=>{ur(),Pr()}},St={encode:Yt,decode:Lr.decode};function Yt(r,t={}){const{urlSafe:e=!1}=t;return Lr.encode(r,e)}function Ct(r){const t=ft(r),e=t.exp*1e3;if(Date.now()>e)throw new Error(`${dt}. Expiration date: ${new Date(e).toISOString()}`);return t}const Sr="The provided `clientToken`",dt=`${Sr} has expired`,It=`${Sr} is malformed`;function ft(r){try{const[t,e]=r.split("."),o=e||t;return JSON.parse(St.decode(o))}catch{throw new Error(It)}}const Yr=15e3,lt={"content-type":"application/json"},Mt=(r,t)=>Cr("get",r,t),ht=(r,t,e)=>Cr("post",r,e,JSON.stringify(t)),Cr=(r,t,e,o)=>fetch(t,{body:o,method:r,headers:{...lt,...e}}).then(async A=>{if(!A.ok){const _=new Error(`HTTP error! status: ${A.status}`);throw _.status=A.status,_}return A.json()}).catch(A=>{if(A instanceof TypeError){const _=new Error("Network error");throw _.isNetworkError=!0,_}throw A}),dr=(r,t)=>new Promise((e,o)=>{const A=setTimeout(()=>{const _=new Error("Request timed out");_.isNetworkError=!0,o(_)},t);r.then(e).catch(o).finally(()=>clearTimeout(A))}),Ut=(r,t={})=>{const{headers:e,log:o,retryConfig:A,timeout:_=Yr}=t;return m(()=>dr(Mt(r,e),_),A,o)},yt=(r,t,e={})=>{const{headers:o,log:A,retryConfig:_,timeout:E=Yr}=e;return retryWithExponentialBackoff(()=>dr(ht(r,t,o),E),_,A)},Bt="v2.44.1",gt=(r,t,e)=>({"primer-client-token":r,"primer-sdk-client":"WEB","primer-sdk-version":Bt,"primer-sdk-checkout-session-id":t,...e&&{"x-api-version":e}});async function kt(r,t,e,o){try{return await Ut(`${t}/?withDisplayMetadata=true`,{headers:gt(r,e,"2.2"),log:o,retryConfig:{enabled:!0}})}catch(A){const _=A instanceof Error?A.message:"Unknown error occurred",E=A instanceof Error&&A.stack?A.stack:JSON.stringify(A);throw o?.(`Failed to initialize client: ${_}
2
- Error details: ${E}`),new Error(`Failed to initialize client: ${_}`)}}const wt="v2.44.1",bt=k("createHeadless"),vt=k("showExpressCheckout"),xt=k("showUniversalCheckout"),Ht=k("showVaultManager"),Ir="LOAD_PERFORMANCE",l=y();let u=v({checkoutSessionId:l});u.messageEvent({message:"parsed",messageType:Ir,now:performance.now?.()});function k(r){return async(...[t,e,...o])=>{u.sdkFunctionEvent({name:r,params:[t,e,...o]}),u.messageEvent({message:"create",messageType:Ir,now:performance.now?.()});const[A,_]=await Promise.all([Ft(t),X(u)]);return _[r](A,l,t,e)}}async function Ft(r){const{accessToken:t,configurationUrl:e,analyticsUrlV2:o}=Ct(r);u=v({checkoutSessionId:l,url:o});const A=`${e}/?withDisplayMetadata=true`,_=y(),E={method:"get",url:A},i=Date.now();u.networkCallEvent(H(_,E));const n=await kt(t,e,l,M=>{u.networkCallEvent(H(_,E,{error:M}))}),{primerAccountId:T}=n,{clientSessionId:R}=n.clientSession;u=v({checkoutSessionId:l,clientSessionId:R,primerAccountId:T,url:o});const Y=Date.now()-i;return u.networkCallEvent(H(_,E,{data:n},Y)),n}const pt=()=>X().then(()=>{});var Gt=(r=>(r.LOADING="Loading",r.NO_PAYMENT_METHOD="NoPaymentMethod",r.THREE_DS="UniversalCheckout/3ds",r.CHOOSE_PAYMENT_METHOD="UniversalCheckout/Home",r.MANAGE_PAYMENT_METHODS="VaultManager/Home",r.DIRECT_DEBIT_FORM="DirectDebit/Form",r.DIRECT_DEBIT_MANDATE="DirectDebit/Mandate",r.CREDIT_CARD_FORM="CreditCard/Form",r.SUCCESS_PAYMENT_METHOD="UniversalCheckout/Success/PaymentMethod",r.SUCCESS_CHECK="UniversalCheckout/Success/Check",r))(Gt||{}),Kt=(r=>(r.ROOT="primer-checkout",r.ROOT_CONTENT="primer-checkout-content",r.SUBMIT_BUTTON="primer-checkout-submit-button",r.THREE_DS_MODAL="primer-checkout-3ds-modal",r.VAULT="primer-checkout-vault",r.VAULT_INLINE="primer-checkout-vault-inline",r.NAVIGATE_PAYMENT_METHODS="primer-checkout-navigate-to-payment-methods",r.DIVIDER="primer-checkout-payment-method-divider",r.APM_BUTTONS="primer-checkout-apm-button-container",r.CARDHOLDER_NAME="primer-checkout-cardholder-name",r.CARDHOLDER_NAME_INPUT="primer-checkout-card-cardholder-name-input",r.ACTIONS="primer-checkout-actions",r.ACTIONS_MENU="primer-checkout-actions-menu",r.SAVE_PAYMENT_METHOD_CHECKBOX="primer-checkout-save-payment-method-input",r.SAVE_PAYMENT_METHOD_FIELD="primer-checkout-save-payment-method-field",r.SAVED_PAYMENT_METHODS_EMPTY="primer-checkout-saved-payment-methods-empty-text",r.CARD_FORM="primer-checkout-card-form",r.DD_SWITCH="primer-checkout-switch-dd-inputs",r.DD_IBAN_FIELD="primer-checkout-dd-iban-field",r.DD_LOCAL_FIELD="primer-checkout-dd-local-fields",r.DD_CUSTOMER_NAME_INPUT="primer-checkout-dd-customer-name-input",r.DD_CUSTOMER_EMAIL_INPUT="primer-checkout-dd-customer-email-input",r.DD_CUSTOMER_ADDRESS_LINE1="primer-checkout-dd-customer-address-input",r.DD_CUSTOMER_ADDRESS_LINE2="primer-checkout-dd-customer-address-line2-input",r.DD_CUSTOMER_ADDRESS_CITY="primer-checkout-dd-customer-city-input",r.DD_CUSTOMER_ADDRESS_POSTAL_CODE="primer-checkout-dd-customer-postal-code-input",r.DD_IBAN_INPUT="primer-checkout-dd-iban-input",r.DD_ACCOUNT_NUMBER_INPUT="primer-checkout-dd-account-number-input",r.DD_BANK_CODE_INPUT="primer-checkout-dd-bank-code-input",r.DD_BRANCH_CODE_INPUT="primer-checkout-dd-branch-code-input",r.DD_MANDATE_SMALL_PRINT="primer-checkout-small-print",r.ERROR_MESSAGE="primer-checkout-error-message",r))(Kt||{}),Vt=(r=>(r.TOKEN="PrimerCheckout__token",r.HIDDEN="PrimerCheckout--hidden",r.FOCUSED="PrimerCheckout--focused",r.SELECTED="PrimerCheckout--selected",r.LOADING="PrimerCheckout--loading",r.ERROR="PrimerCheckout--error",r.CARD_TYPE="PrimerCheckout__cardType",r.SAVED_PAYMENT_METHOD="PrimerCheckout__savedPaymentMethod",r.SAVED_PAYMENT_METHOD_CONTAINER="PrimerCheckout__savedPaymentMethodContainer",r.APM_BUTTON="PrimerCheckout__apmButton",r.EDIT_BUTTON="PrimerCheckout__editButton",r.MENU="PrimerCheckout__dropDownMenu",r.MENU_ITEM="PrimerCheckout__dropDownMenuItem",r.PAYMENT_METHOD_MENU_ITEM="PrimerCheckout__paymentMethodDropDownMenuItem",r.DELETE_PAYMENT_METHOD_BUTTON="PrimerCheckout__paymentMethodDropDownMenuItem__deleteButton",r.ENTER="PrimerCheckout--enter",r.ENTERING="PrimerCheckout--entering",r.ENTERED="PrimerCheckout--entered",r.EXIT="PrimerCheckout--exit",r.EXITING="PrimerCheckout--exiting",r.EXITED="PrimerCheckout--exited",r))(Vt||{}),fr=(r=>(r.CHECKOUT="CHECKOUT",r.EXPRESS_CHECKOUT="EXPRESS_CHECKOUT",r.HEADLESS_CHECKOUT="HEADLESS_CHECKOUT",r.MANAGE_PAYMENT_METHODS="MANAGE_PAYMENT_METHODS",r.SINGLE_PAYMENT_METHOD_CHECKOUT="SINGLE_PAYMENT_METHOD_CHECKOUT",r))(fr||{}),lr=(r=>(r.DEFAULT="DEFAULT",r.PREFER_VAULT="PREFER_VAULT",r))(lr||{}),Wt=(r=>(r.TOKENIZE_STARTED="tokenize-started",r.TOKENIZE_ERROR="tokenize-error",r.TOKENIZE_SUCCESS="tokenize-success",r.TOKENIZE_DID_NOT_START="tokenize-did-not-start",r))(Wt||{}),Mr=(r=>(r.SUCCESS="AUTH_SUCCESS",r.FAILED="AUTH_FAILED",r.SKIPPED="SKIPPED",r.CHALLENGE="CHALLENGE",r))(Mr||{}),hr=(r=>(r.WORLDPAY_IDEAL="WORLDPAY_IDEAL",r.ADYEN_KLARNA="ADYEN_KLARNA",r.ADYEN_BANCONTACT_CARD="ADYEN_BANCONTACT_CARD",r.PAY_NL_KAARTDIRECT="PAY_NL_KAARTDIRECT",r.ADYEN_EPS="ADYEN_EPS",r.ADYEN_BANCONTACT_PAYCONIQ="ADYEN_BANCONTACT_PAYCONIQ",r.OMISE_PROMPTPAY="OMISE_PROMPTPAY",r.OMISE_TRUEMONEY="OMISE_TRUEMONEY",r.ADYEN_MULTIBANCO="ADYEN_MULTIBANCO",r.PACYPAY_WECHAT="PACYPAY_WECHAT",r.PACYPAY_ALIPAY="PACYPAY_ALIPAY",r.ADYEN_MBWAY="ADYEN_MBWAY",r.XENDIT_DANA="XENDIT_DANA",r.XENDIT_SHOPEEPAY="XENDIT_SHOPEEPAY",r.ADYEN_PAYSHOP="ADYEN_PAYSHOP",r.ADYEN_PAYTRAIL="ADYEN_PAYTRAIL",r.CLEARPAY="CLEARPAY",r.RAPYD_FAST="RAPYD_FAST",r.RAPYD_PROMPTPAY="RAPYD_PROMPTPAY",r.RAPYD_GCASH="RAPYD_GCASH",r.RAPYD_POLI="RAPYD_POLI",r.RAPYD_GRABPAY="RAPYD_GRABPAY",r.PRIMER_PAYPAL="PRIMER_PAYPAL",r.TWOC2P="TWOC2P",r.NETS="NETS",r.STRIPE_ACH="STRIPE_ACH",r.STRIPE_GIROPAY="STRIPE_GIROPAY",r.MOLLIE_GIROPAY="MOLLIE_GIROPAY",r.MOLLIE_EPS="MOLLIE_EPS",r.PAY_NL_EPS="PAY_NL_EPS",r.PAY_NL_P24="PAY_NL_P24",r.MOLLIE_P24="MOLLIE_P24",r.MOLLIE_SOFORT="MOLLIE_SOFORT",r.COINBASE="COINBASE",r.OPENNODE="OPENNODE",r.MOLLIE_GIFT_CARD="MOLLIE_GIFTCARD",r.XFERS_PAYNOW="XFERS_PAYNOW",r.CARD="PAYMENT_CARD",r.APPLE_PAY="APPLE_PAY",r.GOOGLE_PAY="GOOGLE_PAY",r.PAYPAL="PAYPAL_ORDER",r.PAYPAL_VAULTED="PAYPAL_BILLING_AGREEMENT",r.GO_CARDLESS="GOCARDLESS",r.PAY_NL_IDEAL="PAY_NL_IDEAL",r.PAY_NL_SOFORT_BANKING="PAY_NL_SOFORT_BANKING",r.PAY_NL_BANCONTACT="PAY_NL_BANCONTACT",r.PAY_NL_PAYPAL="PAY_NL_PAYPAL",r.PAY_NL_CREDIT_TRANSFER="PAY_NL_CREDIT_TRANSFER",r.PAY_NL_DIRECT_DEBIT="PAY_NL_DIRECT_DEBIT",r.PAY_NL_GIROPAY="PAY_NL_GIROPAY",r.PAY_NL_PAYCONIQ="PAY_NL_PAYCONIQ",r.HOOLAH="HOOLAH",r.ADYEN_BLIK="ADYEN_BLIK",r.ADYEN_VIPPS="ADYEN_VIPPS",r.ADYEN_GIROPAY="ADYEN_GIROPAY",r.ADYEN_SOFORT="ADYEN_SOFORT",r.ADYEN_IDEAL="ADYEN_IDEAL",r.ADYEN_TRUSTLY="ADYEN_TRUSTLY",r.ADYEN_ALIPAY="ADYEN_ALIPAY",r.ADYEN_TWINT="ADYEN_TWINT",r.ADYEN_MOBILEPAY="ADYEN_MOBILEPAY",r.MOLLIE_BANCONTACT="MOLLIE_BANCONTACT",r.MOLLIE_IDEAL="MOLLIE_IDEAL",r.BUCKAROO_GIROPAY="BUCKAROO_GIROPAY",r.BUCKAROO_EPS="BUCKAROO_EPS",r.BUCKAROO_SOFORT="BUCKAROO_SOFORT",r.BUCKAROO_BANCONTACT="BUCKAROO_BANCONTACT",r.BUCKAROO_IDEAL="BUCKAROO_IDEAL",r.ATOME="ATOME",r.KLARNA_CUSTOMER_TOKEN="KLARNA_CUSTOMER_TOKEN",r))(hr||{}),V=(r=>(r.WORLDPAY_IDEAL="WORLDPAY_IDEAL",r.STRIPE_ACH="STRIPE_ACH",r.STRIPE_IDEAL="STRIPE_IDEAL",r.ADYEN_KLARNA="ADYEN_KLARNA",r.ADYEN_BANCONTACT_CARD="ADYEN_BANCONTACT_CARD",r.PAY_NL_KAARTDIRECT="PAY_NL_KAARTDIRECT",r.ADYEN_EPS="ADYEN_EPS",r.ADYEN_BANCONTACT_PAYCONIQ="ADYEN_BANCONTACT_PAYCONIQ",r.OMISE_PROMPTPAY="OMISE_PROMPTPAY",r.OMISE_TRUEMONEY="OMISE_TRUEMONEY",r.ADYEN_MULTIBANCO="ADYEN_MULTIBANCO",r.PACYPAY_WECHAT="PACYPAY_WECHAT",r.PACYPAY_ALIPAY="PACYPAY_ALIPAY",r.ADYEN_MBWAY="ADYEN_MBWAY",r.XENDIT_DANA="XENDIT_DANA",r.XENDIT_SHOPEEPAY="XENDIT_SHOPEEPAY",r.ADYEN_PAYSHOP="ADYEN_PAYSHOP",r.ADYEN_PAYTRAIL="ADYEN_PAYTRAIL",r.CLEARPAY="CLEARPAY",r.RAPYD_FAST="RAPYD_FAST",r.RAPYD_PROMPTPAY="RAPYD_PROMPTPAY",r.RAPYD_GCASH="RAPYD_GCASH",r.RAPYD_POLI="RAPYD_POLI",r.RAPYD_GRABPAY="RAPYD_GRABPAY",r.PRIMER_PAYPAL="PRIMER_PAYPAL",r.TWOC2P="TWOC2P",r.NETS="NETS",r.STRIPE_GIROPAY="STRIPE_GIROPAY",r.MOLLIE_GIROPAY="MOLLIE_GIROPAY",r.MOLLIE_EPS="MOLLIE_EPS",r.PAY_NL_EPS="PAY_NL_EPS",r.PAY_NL_P24="PAY_NL_P24",r.MOLLIE_P24="MOLLIE_P24",r.MOLLIE_SOFORT="MOLLIE_SOFORT",r.COINBASE="COINBASE",r.OPENNODE="OPENNODE",r.MOLLIE_GIFT_CARD="MOLLIE_GIFTCARD",r.XFERS_PAYNOW="XFERS_PAYNOW",r.PAYMENT_CARD="PAYMENT_CARD",r.APPLE_PAY="APPLE_PAY",r.GOOGLE_PAY="GOOGLE_PAY",r.PAYPAL="PAYPAL",r.GO_CARDLESS="GOCARDLESS",r.KLARNA="KLARNA",r.PAY_NL_IDEAL="PAY_NL_IDEAL",r.PAY_NL_SOFORT_BANKING="PAY_NL_SOFORT_BANKING",r.PAY_NL_BANCONTACT="PAY_NL_BANCONTACT",r.PAY_NL_PAYPAL="PAY_NL_PAYPAL",r.PAY_NL_CREDIT_TRANSFER="PAY_NL_CREDIT_TRANSFER",r.PAY_NL_DIRECT_DEBIT="PAY_NL_DIRECT_DEBIT",r.PAY_NL_GIROPAY="PAY_NL_GIROPAY",r.PAY_NL_PAYCONIQ="PAY_NL_PAYCONIQ",r.HOOLAH="HOOLAH",r.ADYEN_BLIK="ADYEN_BLIK",r.ADYEN_MOBILEPAY="ADYEN_MOBILEPAY",r.ADYEN_VIPPS="ADYEN_VIPPS",r.ADYEN_GIROPAY="ADYEN_GIROPAY",r.ADYEN_SOFORT="ADYEN_SOFORT",r.ADYEN_IDEAL="ADYEN_IDEAL",r.ADYEN_TRUSTLY="ADYEN_TRUSTLY",r.ADYEN_ALIPAY="ADYEN_ALIPAY",r.ADYEN_TWINT="ADYEN_TWINT",r.ADYEN_BANK_TRANSFER="ADYEN_BANK_TRANSFER",r.MOLLIE_BANCONTACT="MOLLIE_BANCONTACT",r.MOLLIE_IDEAL="MOLLIE_IDEAL",r.BUCKAROO_GIROPAY="BUCKAROO_GIROPAY",r.BUCKAROO_EPS="BUCKAROO_EPS",r.BUCKAROO_SOFORT="BUCKAROO_SOFORT",r.BUCKAROO_BANCONTACT="BUCKAROO_BANCONTACT",r.BUCKAROO_IDEAL="BUCKAROO_IDEAL",r.ATOME="ATOME",r))(V||{}),mt=(r=>(r.PAYMENT_CARD="PAYMENT_CARD",r.ADYEN_BANCONTACT_CARD="ADYEN_BANCONTACT_CARD",r))(mt||{}),Ur=(r=>(r.SINGLE_USE="SINGLE_USE",r.MULTI_USE="MULTI_USE",r))(Ur||{});const Br={PAYPAL_BILLING_AGREEMENT:"PAYPAL",KLARNA_CUSTOMER_TOKEN:"KLARNA"},re=r=>{if(Object.values(V).includes(r))return r;if(Br[r])return Br[r]};var gr=(r=>(r.INITIALIZATION_ERROR="INITIALIZATION_ERROR",r.NO_PAYMENT_METHODS="NO_PAYMENT_METHODS",r.PRIMER_TEARDOWN="PRIMER_TEARDOWN",r.PRIMER_SERVER_ERROR="PRIMER_SERVER_ERROR",r.THREE_DS_AUTH_FAILED="THREE_DS_AUTH_FAILED",r.TOKENIZATION_ERROR="TOKENIZATION_ERROR",r.DUPLICATE_PAYMENT_METHOD_ERROR="DUPLICATE_PAYMENT_METHOD_ERROR",r.CARD_NUMBER_ERROR="CARD_NUMBER_ERROR",r.PAYMENT_METHOD_NOT_SETUP="PAYMENT_METHOD_NOT_SETUP",r.PAYMENT_METHOD_NOT_PROVIDED="PAYMENT_METHOD_NOT_PROVIDED",r.PAYMENT_METHOD_NOT_COMPATIBLE="PAYMENT_METHOD_NOT_COMPATIBLE",r.RESUME_ERROR="RESUME_ERROR",r.VALIDATION_ERROR="VALIDATION_ERROR",r.PAYMENT_FAILED="PAYMENT_FAILED",r.PAYMENT_CREATION_ABORTED="PAYMENT_CREATION_ABORTED",r.PAYMENT_CREATION_DISABLED="PAYMENT_CREATION_DISABLED",r.CLIENT_SESSION_UPDATE_ERROR="CLIENT_SESSION_UPDATE_ERROR",r.INVALID_ARGUMENT="INVALID_ARGUMENT",r.VAULT_FETCH="VAULT_FETCH",r.VAULT_DELETE="VAULT_DELETE",r.HEADLESS_VAULT_MANAGER_VALIDATION="HEADLESS_VAULT_MANAGER_VALIDATION",r.CARD_FORM_VALIDATION_UNEXPECTED_FIELD="CARD_FORM_VALIDATION_UNEXPECTED_FIELD",r.MISSING_FIRST_NAME_OR_LAST_NAME="MISSING_FIRST_NAME_OR_LAST_NAME",r.MISSING_EMAIL_ADDRESS="MISSING_EMAIL_ADDRESS",r.INVALID_FLOW="INVALID_FLOW",r))(gr||{});class kr extends Error{static fromErrorCode(t,e,o){return new kr(t,e,o)}constructor(t,e,o){super(e.message),this.message=e.message,this.code=t,this.diagnosticsId=e.diagnosticsId||null,this.data=e.data,this.isFromDeveloper=e.isFromDeveloper??!1,o?.messageEvent?.({message:e.message,messageType:t,severity:"ERROR",...e.diagnosticsId&&{diagnosticsId:e.diagnosticsId},...e.errorId&&{errorId:e.errorId},...e.data&&{data:e.data},...e.isFromDeveloper!==void 0&&{isFromDeveloper:String(e.isFromDeveloper)},stack:this.stack})}}const te=r=>{throw console.error(r.message),r};var $t=s(473),wr=(r=>(r.PAYMENT_METHOD="PAYMENT_METHOD",r.CHECK="CHECK",r))(wr||{});const jt=r=>"fullMandateText"in r?.mandateData;var br=(r=>(r.CHANGE="change",r.ERROR="error",r.FOCUS="focus",r.BLUR="blur",r.CLICK="click",r.CLOSE="close",r))(br||{}),vr=(r=>(r.CARD="CARD",r.NATIVE="NATIVE",r.REDIRECT="REDIRECT",r.FORM_WITH_REDIRECT="FORM_WITH_REDIRECT",r.KLARNA="KLARNA",r.ACH="ACH",r))(vr||{});const Xt={SDK_VERSION:wt,createHeadless:bt,showExpressCheckout:vt,showUniversalCheckout:xt,showVaultManager:Ht}})(),w})());
1
+ (function(l,R){typeof exports=="object"&&typeof module=="object"?module.exports=R():typeof define=="function"&&define.amd?define([],R):typeof exports=="object"?exports.Primer=R():l.Primer=R()})(this,()=>(()=>{var W={476:()=>{},962:()=>{},473:()=>{}},l={};function R(D){var P=l[D];if(P!==void 0)return P.exports;var d=l[D]={exports:{}};return W[D](d,d.exports,R),d.exports}R.d=(D,P)=>{for(var d in P)R.o(P,d)&&!R.o(D,d)&&Object.defineProperty(D,d,{enumerable:!0,get:P[d]})},R.o=(D,P)=>Object.prototype.hasOwnProperty.call(D,P),R.r=D=>{typeof Symbol<"u"&&Symbol.toStringTag&&Object.defineProperty(D,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(D,"__esModule",{value:!0})};var g={};return(()=>{"use strict";R.r(g),R.d(g,{CheckoutUXFlow:()=>Ur,ErrorCode:()=>vr,EventTypes:()=>Hr,HeadlessManagerType:()=>Fr,PaymentFlow:()=>Br,PaymentInstrumentType:()=>gr,PaymentMethodData:()=>Qe.PaymentMethodData,PaymentMethodType:()=>V,Primer:()=>qe,SuccessScreenType:()=>br,ThreeDSecureStatus:()=>wr,TokenType:()=>kr,isStripeOptionsDropInWithFullMandateText:()=>Ze,preloadPrimer:()=>Ve});function D(r){return r?new Promise(e=>{setTimeout(e,r)}):Promise.resolve()}const P=8,d=100,Gr=100;function Kr(r){return{enabled:r?.enabled??!1,maxRetries:P,initialBackoff:d,retryNetworkErrors:!0,retry500Errors:!1,maxJitter:Gr}}function mr(r,e,t){const o=r*Math.pow(2,e-1),A=Math.random()*t;return Math.min(o+A,Number.MAX_SAFE_INTEGER)}async function $(r,e,t,o=D){let A=0;const _=Kr(e);if(!_.enabled)return r();for(;;)try{const i=await r();if(A){let E=`Request succeeded after ${A} retries.`;typeof i=="object"&&i&&"status"in i&&(E+=` Status code: ${i.status}`),t?.({messageType:"RETRY_SUCCESS",message:E,severity:"INFO"})}return i}catch(i){const E=i,n=A>=_.maxRetries,s=E.isNetworkError&&!_.retryNetworkErrors,c=E.status&&E.status>=500&&!_.retry500Errors;if(n||s||c){let T=`Failed after ${A} retries. `;throw n?T+=`Reached maximum retries (${_.maxRetries}).`:s?T+="Network error encountered and retryNetworkErrors is disabled.":c&&(T+="HTTP 500 error encountered and retry500Errors is disabled."),T+=` Last error: ${E.message}`,t?.({messageType:"RETRY_FAILED",message:T,severity:"ERROR"}),new Error(T,{cause:i})}A++;const O=mr(_.initialBackoff,A,_.maxJitter);let a="Unknown error";E.isNetworkError?a="Network error":E.status&&(a=`HTTP ${E.status} error`),t?.({messageType:"RETRY",message:`Retry attempt ${A}/${_.maxRetries} due to: ${a}. Error details: ${E.message}. Waiting for ${O.toFixed(2)}ms before next attempt.`,severity:"WARN"}),await o(O)}}function Vr(r,e){const t=document.createElement(r);return Object.entries(e).forEach(([o,A])=>t.setAttribute(o,A)),t}function X(r,e,t){return document.querySelector(`${r}[${e}^="${t}"]`)}async function j(r,e,t,o,A,_){const{analytics:i,name:E=e,retryConfig:n}=_;await $(()=>new Promise((c,O)=>{const a=X(r,t,e)||Vr(r,{...o,[t]:e});a.onload=()=>{i?.sdkFunctionEvent({name:E,params:[`${r.charAt(0).toUpperCase()+r.slice(1)} loaded successfully: ${e}`]}),c()},a.onerror=()=>{a.remove(),O(new Error(`${A}: ${e}`))},a.parentNode||document.head.appendChild(a)}),n,c=>i?.messageEvent({...c,url:e}))}function Wr(r,e={}){return X("script","src",r)&&window.__Primer?(e.analytics?.sdkFunctionEvent({name:e.name??r,params:["Script already loaded"]}),Promise.resolve()):j("script",r,"src",{...e.attributes,async:"",crossorigin:"anonymous"},"Can't load Primer SDK",e)}function $r(r,e={}){return Array.from(document.styleSheets).some(t=>t.href===r)?(e.analytics?.sdkFunctionEvent({name:e.name??r,params:["Stylesheet already loaded"]}),Promise.resolve()):j("link",r,"href",{...e.attributes,rel:"stylesheet"},"Can't load Primer SDK's Stylesheet",e)}let I;async function z(r){return I||(I=Promise.all([Wr("https://sdk.primer.io/web/v2.45.0/PrimerCoreSDK.min.js",{analytics:r,name:"loadPrimerScript"}),$r("https://sdk.primer.io/web/v2.45.0/Checkout.css",{analytics:r,name:"loadPrimerCss"})]).then(()=>{const o=window.__Primer;return delete window.__Primer,o}).catch(o=>{throw I=void 0,o}),I)}window.__primerCache__??(window.__primerCache__=new Map);const u=()=>window.__primerCache__,Q=1e3*60*60,Xr=30,Z=50;function q(){if(u().size<=Xr)return;const r=Date.now();for(const[e,t]of u())t.exp<r&&u().delete(e);if(u().size>Z)for(const[e]of u()){if(u().size<=Z)break;u().delete(e)}}function rt({key:r,ttl:e=Q},t){e?u().set(r,{promise:Promise.resolve(t),exp:Date.now()+e}):u().delete(r)}function jr(r){if(!r)return _=>_();const{key:e,refresh:t=!1,usePrimerSessionCacheTtlHeader:o=!1,ttl:A=Q}=r;return async _=>{const i=Date.now(),E=u().get(e);if(!t&&E&&E.exp>i)return E.promise;E&&u().delete(e);const n=_().then(s=>{const c=Date.now();let O=A;return o&&(O=(Number(s.headers.get("x-primer-session-cache-ttl"))||0)*1e3),O?u().set(e,{promise:Promise.resolve({...s,source:"CACHE"}),exp:c+O}):u().delete(e),q(),s},s=>{throw u().delete(e),s});return u().set(e,{promise:n,exp:i+A}),q(),n}}const J=()=>y.randomUUID?.()||zr(),zr=()=>("10000000-1000-4000-8000"+-1e11).replace(/[018]/g,r=>(r^Qr()>>r/4).toString(16)),Qr=()=>(y.getRandomValues?.(new Uint8Array(1))[0]??Math.random()*16)&15,y=typeof crypto<"u"?crypto:{};var et=R(476),tt=R(962),k=(r=>(r.REQUEST_START="REQUEST_START",r.REQUEST_END="REQUEST_END",r))(k||{}),p=(r=>(r.START="START",r.END="END",r))(p||{});const Zr={createHeadless:"HEADLESS_LOADING",showExpressCheckout:"EXPRESS_LOADING",showUniversalCheckout:"DROP_IN_LOADING",showVaultManager:"VAULT_MANAGER_LOADING"};var L=(r=>(r.NETWORK_CALL_EVENT="NETWORK_CALL_EVENT",r.CRASH_EVENT="CRASH_EVENT",r.TIMER_EVENT="TIMER_EVENT",r.MESSAGE_EVENT="MESSAGE_EVENT",r.V1_EVENT="V1_EVENT",r.SDK_FUNCTION_EVENT="SDK_FUNCTION_EVENT",r))(L||{});const qr={get(r,e){let t;try{switch(r){case"PRIMER_SDK_VERSION":t="v2.45.0";break;case"PRIMER_ASSETS_URL":t=process.env.PRIMER_ASSETS_URL;break;case"PRIMER_CORE_API_URL":t=process.env.PRIMER_CORE_API_URL;break;case"PRIMER_PCI_API_URL":t=process.env.PRIMER_PCI_API_URL;break;case"PRIMER_MODULES_URL":t=process.env.PRIMER_MODULES_URL;break;case"PRIMER_BUILD_INTEGRATION_BUILDER":t=process.env.PRIMER_BUILD_INTEGRATION_BUILDER;break;case"SENTRY_DSN":t=process.env.SENTRY_DSN;break;default:break}}catch{}return t||e}};var Jr=(r=>(r.CHARGING="CHARGING",r.NOT_CHARGING="NOT_CHARGING",r))(Jr||{});async function yr(){if(typeof navigator>"u")return;const r=await navigator.getBattery?.();return{memoryFootprint:performance.memory?.usedJSHeapSize,screen:{height:screen?.height,width:screen?.width},platformVersion:navigator.platform,userAgent:navigator.userAgent,locale:navigator.language,batteryLevel:r?.level,batteryStatus:r?.charging?"CHARGING":"NOT_CHARGING"}}const re="WEB",ee=qr.get("PRIMER_SDK_VERSION");async function te(r,e,t){return{...t,createdAt:Date.now(),device:await yr(),eventType:r,properties:e,sdkVersion:ee,sdkType:re}}const rr="https://analytics.production.data.primer.io/sdk-logs",oe=rr==="https://analytics.sandbox.data.primer.io/playwright";window.__primerAnalytics__??(window.__primerAnalytics__={providers:new Map,timers:new Map,eventsQueue:new Map});const er=()=>window.__primerAnalytics__.providers,v=()=>window.__primerAnalytics__.timers,Y=()=>window.__primerAnalytics__.eventsQueue,tr=1024*5,Ae=500,h=new Map;function x({url:r=rr,...e}){typeof document<"u"&&document.addEventListener("visibilitychange",()=>{document.visibilityState==="hidden"&&or(r,!0)});const t=A=>async _=>{if(typeof navigator>"u")return;const i=await te(A,_,e),E=s=>Ee(ie(s));if(oe)return;const n=Ar(i,E);_e(r,n)},o={crashEvent:t(L.CRASH_EVENT),messageEvent:t(L.MESSAGE_EVENT),networkCallEvent:t(L.NETWORK_CALL_EVENT),sdkFunctionEvent:t(L.SDK_FUNCTION_EVENT),timerStart:({id:A,..._})=>{const i=`${e.checkoutSessionId}|${A}`;return v().set(i,{start:performance?.now()}),t(L.TIMER_EVENT)({..._,id:A,timerType:p.START})},timerEnd:({id:A,..._})=>{const i=`${e.checkoutSessionId}|${A}`,{start:E=void 0}=v().get(i)??{};v().delete(i);const n=performance?.now(),s=E?n-E:void 0;return t(L.TIMER_EVENT)({..._,id:A,timerType:p.END,duration:s})},v1Event:t(L.V1_EVENT),url:r};return er().set(e.checkoutSessionId,o),o}function b(r){return new Proxy({},{get(e,t){return(er().get(r)??x({checkoutSessionId:r}))[t]}})}function or(r,e=!1){if(h.has(r)){const A=h.get(r);clearTimeout(A),h.delete(r)}const t=()=>{const A=Y().get(r);let _=!1;if(A?.length){try{_=navigator.sendBeacon(r,JSON.stringify(A))}catch(i){_=!0,console.error("Unable to access navigator",i)}_&&Y().delete(r)}};if(e){t();return}const o=setTimeout(t,Ae);h.set(r,o)}function _e(r,e){Y().has(r)||Y().set(r,[]),Y().get(r)?.push(e),or(r)}function Ar(r,e){const t=o=>typeof o=="object"&&o!==null?Ar(o,e):e(o);return Array.isArray(r)?r.map(t):Object.fromEntries(Object.entries(r).map(([o,A])=>[o,t(A)]))}function Ee(r){return typeof r=="string"&&r.length>tr?`${r.slice(0,tr)}...`:r}function ie(r){return typeof r=="function"?r.name||"function":r}class H{constructor(e,t){this.type=e,this.displayName=t}get specs(){return this.constructor.specs}setOption(e,t){this.options&&(this.options[e]=t)}setupAndValidate(){return Promise.resolve(!0)}mount(){return Promise.resolve(!0)}tokenize(e){return Promise.resolve()}validate(){return Promise.resolve({valid:!0,validationErrors:[]})}setDisabled(e){return Promise.resolve()}focus(){}blur(){}getPaymentElement(){return null}getStore(){}}H.specs={key:"__none__",canVault:!1,buttonManagedByPaymentMethod:!1,hasExportedButtonOptions:!1},H.create=(r,e,t,o)=>{throw new Error("Cannot instantiate BasePaymentMethod")};class se extends H{async tokenize(e){}}class ne{get session(){const e=this.store.getState().clientSessionInfo;if(!e)throw new Error("Client Context Session does not exist");return e}}const ce=[Array,se,ne,Map,Set];function ae(r){const e=new Set,t=20;let o=0;for(;o++<t&&r&&r!==Object.prototype;)Object.getOwnPropertyNames(r).forEach(A=>e.add(A)),r=Object.getPrototypeOf(r);return[...e]}function _r(r,e,t,o,A){if(!t||ce.some(_=>t instanceof _))return t;switch(typeof t){case"function":return new Proxy(t,{apply(_,i,E=[]){const n={name:e.replace(/^bound /,""),params:E,module:A};r?.sdkFunctionEvent(n);const s=E.map((c,O)=>_r(r,`${O}`,c,o,[A,e,`${O}`].filter(Boolean).join(".")));return _.apply(i,s)}});case"object":return t===o?t:Ne(r,t,[A,e].filter(Boolean).join("."));default:return t}}function Ne(r,e,t){return Object.fromEntries(ae(e).map(o=>{const A=e?.[o],_=_r(r,o,A,A,t);return[o,_]}))}const Re=new Set(["post","get","delete"]),Oe=new Set(["post"]);function ue(r,e,t,o){const A=Oe.has(r);return{method:r,options:A?o:t,body:A?t:void 0,url:e}}function ot(r,e){const t=({prop:o})=>({apply:async(A,_,i=[])=>{const E=ue(o.toString(),...i);if(E.options?.isAnalytics)return A.apply(_,i);const n=uuid();e?.networkCallEvent(prepareNetworkEventProps(n,E));const s=performance?.now(),c=await A.apply(_,i),a=performance?.now()-s;return e?.networkCallEvent(prepareNetworkEventProps(n,E,c,a)),c}});return new Proxy(r,{get(o,A){const _=o[A];return typeof _=="function"&&Re.has(A)?new Proxy(_,t({prop:A})):_}})}const M=(r,e,t,o)=>({callType:t?k.REQUEST_END:k.REQUEST_START,id:r,errorBody:t?.error&&JSON.stringify(t.error),method:e.method,responseCode:t?.status,url:e.url,duration:o}),Er=15e3,De=(r,e,t)=>ir(r,"get",e,t),Te=(r,e,t,o)=>ir(r,"post",e,o,JSON.stringify(t)),ir=async(r,e,t,o,A)=>{const _=J(),i=performance?.now();let E=b(r);const n={method:e,url:t,body:A};E.networkCallEvent(M(_,n));try{const s=await fetch(t,{body:A,method:e,headers:{"content-type":"application/json",...o}});if(!s.ok){const T=new Error(`HTTP error! status: ${s.status}`);throw T.status=s.status,T}const c=await s.json();if(t.includes("client-sdk/configuration")){const{primerAccountId:T,clientSession:{clientSessionId:Je,customer:ye}}=c;E=x({checkoutSessionId:r,clientSessionId:Je,customerId:ye?.customerId,primerAccountId:T,url:E.url})}const a=performance?.now()-i;return E.networkCallEvent(M(_,n,{data:c},a)),{data:c,headers:s.headers,status:s.status,source:"NETWORK"}}catch(s){const O=performance?.now()-i;let a;throw s instanceof TypeError?(a=new Error("Network error"),a.isNetworkError=!0,E.networkCallEvent(M(_,n,{error:a},O)),a):(E.networkCallEvent(M(_,n,{error:s},O)),s)}},sr=(r,e)=>new Promise((t,o)=>{const A=setTimeout(()=>{const _=new Error("Request timed out");_.isNetworkError=!0,o(_)},e);r.then(t).catch(o).finally(()=>clearTimeout(A))}),Pe=(r,e)=>{const{headers:t,retryConfig:o,cacheConfig:A,timeout:_=Er,checkoutSessionId:i}=e,E=b(i);return jr(A)(()=>$(()=>sr(De(i,r,t),_),o,n=>E.messageEvent({...n,url:r})))},At=(r,e,t)=>{const{headers:o,retryConfig:A,cacheConfig:_,timeout:i=Er,checkoutSessionId:E}=t,n=getAnalytics(E);return cacheRequest(_)(()=>retryWithExponentialBackoff(()=>sr(Te(E,r,e,o),i),A,s=>n.messageEvent({...s,url:r})))},nr="3.6.1",de=nr,Le=typeof atob=="function",Se=typeof btoa=="function",S=typeof Buffer=="function",cr=typeof TextDecoder=="function"?new TextDecoder:void 0,ar=typeof TextEncoder=="function"?new TextEncoder:void 0,f=[..."ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="],U=(r=>{let e={};return r.forEach((t,o)=>e[t]=o),e})(f),Ce=/^(?:[A-Za-z\d+\/]{4})*?(?:[A-Za-z\d+\/]{2}(?:==)?|[A-Za-z\d+\/]{3}=?)?$/,N=String.fromCharCode.bind(String),Nr=typeof Uint8Array.from=="function"?Uint8Array.from.bind(Uint8Array):(r,e=t=>t)=>new Uint8Array(Array.prototype.slice.call(r,0).map(e)),Rr=r=>r.replace(/[+\/]/g,e=>e=="+"?"-":"_").replace(/=+$/m,""),Or=r=>r.replace(/[^A-Za-z0-9\+\/]/g,""),ur=r=>{let e,t,o,A,_="";const i=r.length%3;for(let E=0;E<r.length;){if((t=r.charCodeAt(E++))>255||(o=r.charCodeAt(E++))>255||(A=r.charCodeAt(E++))>255)throw new TypeError("invalid character found");e=t<<16|o<<8|A,_+=f[e>>18&63]+f[e>>12&63]+f[e>>6&63]+f[e&63]}return i?_.slice(0,i-3)+"===".substring(i):_},F=Se?r=>btoa(r):S?r=>Buffer.from(r,"binary").toString("base64"):ur,G=S?r=>Buffer.from(r).toString("base64"):r=>{let t=[];for(let o=0,A=r.length;o<A;o+=4096)t.push(N.apply(null,r.subarray(o,o+4096)));return F(t.join(""))},B=(r,e=!1)=>e?Rr(G(r)):G(r),Ie=r=>{if(r.length<2){var e=r.charCodeAt(0);return e<128?r:e<2048?N(192|e>>>6)+N(128|e&63):N(224|e>>>12&15)+N(128|e>>>6&63)+N(128|e&63)}else{var e=65536+(r.charCodeAt(0)-55296)*1024+(r.charCodeAt(1)-56320);return N(240|e>>>18&7)+N(128|e>>>12&63)+N(128|e>>>6&63)+N(128|e&63)}},Ye=/[\uD800-\uDBFF][\uDC00-\uDFFFF]|[^\x00-\x7F]/g,Dr=r=>r.replace(Ye,Ie),Tr=S?r=>Buffer.from(r,"utf8").toString("base64"):ar?r=>G(ar.encode(r)):r=>F(Dr(r)),C=(r,e=!1)=>e?Rr(Tr(r)):Tr(r),Pr=r=>C(r,!0),fe=/[\xC0-\xDF][\x80-\xBF]|[\xE0-\xEF][\x80-\xBF]{2}|[\xF0-\xF7][\x80-\xBF]{3}/g,le=r=>{switch(r.length){case 4:var e=(7&r.charCodeAt(0))<<18|(63&r.charCodeAt(1))<<12|(63&r.charCodeAt(2))<<6|63&r.charCodeAt(3),t=e-65536;return N((t>>>10)+55296)+N((t&1023)+56320);case 3:return N((15&r.charCodeAt(0))<<12|(63&r.charCodeAt(1))<<6|63&r.charCodeAt(2));default:return N((31&r.charCodeAt(0))<<6|63&r.charCodeAt(1))}},dr=r=>r.replace(fe,le),Lr=r=>{if(r=r.replace(/\s+/g,""),!Ce.test(r))throw new TypeError("malformed base64.");r+="==".slice(2-(r.length&3));let e,t="",o,A;for(let _=0;_<r.length;)e=U[r.charAt(_++)]<<18|U[r.charAt(_++)]<<12|(o=U[r.charAt(_++)])<<6|(A=U[r.charAt(_++)]),t+=o===64?N(e>>16&255):A===64?N(e>>16&255,e>>8&255):N(e>>16&255,e>>8&255,e&255);return t},K=Le?r=>atob(Or(r)):S?r=>Buffer.from(r,"base64").toString("binary"):Lr,Sr=S?r=>Nr(Buffer.from(r,"base64")):r=>Nr(K(r),e=>e.charCodeAt(0)),Cr=r=>Sr(Ir(r)),he=S?r=>Buffer.from(r,"base64").toString("utf8"):cr?r=>cr.decode(Sr(r)):r=>dr(K(r)),Ir=r=>Or(r.replace(/[-_]/g,e=>e=="-"?"+":"/")),m=r=>he(Ir(r)),Me=r=>{if(typeof r!="string")return!1;const e=r.replace(/\s+/g,"").replace(/=+$/,"");return!/[^\s0-9a-zA-Z\+/]/.test(e)||!/[^\s0-9a-zA-Z\-_]/.test(e)},Yr=r=>({value:r,enumerable:!1,writable:!0,configurable:!0}),fr=function(){const r=(e,t)=>Object.defineProperty(String.prototype,e,Yr(t));r("fromBase64",function(){return m(this)}),r("toBase64",function(e){return C(this,e)}),r("toBase64URI",function(){return C(this,!0)}),r("toBase64URL",function(){return C(this,!0)}),r("toUint8Array",function(){return Cr(this)})},lr=function(){const r=(e,t)=>Object.defineProperty(Uint8Array.prototype,e,Yr(t));r("toBase64",function(e){return B(this,e)}),r("toBase64URI",function(){return B(this,!0)}),r("toBase64URL",function(){return B(this,!0)})},hr={version:nr,VERSION:de,atob:K,atobPolyfill:Lr,btoa:F,btoaPolyfill:ur,fromBase64:m,toBase64:C,encode:C,encodeURI:Pr,encodeURL:Pr,utob:Dr,btou:dr,decode:m,isValid:Me,fromUint8Array:B,toUint8Array:Cr,extendString:fr,extendUint8Array:lr,extendBuiltins:()=>{fr(),lr()}},Ue={encode:Be,decode:hr.decode};function Be(r,e={}){const{urlSafe:t=!1}=e;return hr.encode(r,t)}function we(r){const e=pe(r),t=e.exp*1e3;if(Date.now()>t)throw new Error(`${ge}. Expiration date: ${new Date(t).toISOString()}`);return e}const Mr="The provided `clientToken`",ge=`${Mr} has expired`,ke=`${Mr} is malformed`;function pe(r){try{const[e,t]=r.split("."),o=t||e;return JSON.parse(Ue.decode(o))}catch{throw new Error(ke)}}const ve="v2.45.0",xe=(r,e,t)=>({"primer-client-token":r,"primer-sdk-client":"WEB","primer-sdk-version":ve,"primer-sdk-checkout-session-id":e,...t&&{"x-api-version":t}});async function be(r,e,t){const{accessToken:o,configurationUrl:A,analyticsUrlV2:_}=we(r),i=x({checkoutSessionId:e,url:_});i.timerStart({id:"CONFIGURATION_LOADING"});try{const{data:E,source:n}=await Pe(`${A}/?withDisplayMetadata=true`,{checkoutSessionId:e,headers:xe(o,e,"2.3"),retryConfig:{enabled:!0},cacheConfig:t});return i.timerEnd({id:"CONFIGURATION_LOADING",source:n}),E}catch(E){const n=E instanceof Error?E.message:"Unknown error occurred";throw new Error(`Failed to initialize client: ${n}`)}}const He="v2.45.0",Fe=w("createHeadless"),Ge=w("showExpressCheckout"),Ke=w("showUniversalCheckout"),me=w("showVaultManager");function w(r){return async(...[e,t,...o])=>{const A=J(),_=b(A);_.sdkFunctionEvent({name:r,params:[e,t,...o]}),_.timerStart({id:Zr[r]});const[i,E]=await Promise.all([be(e,A,t?.clientSessionCachingEnabled?{key:e,usePrimerSessionCacheTtlHeader:!0}:void 0),z(_)]);return E[r](i,A,e,t)}}const Ve=()=>z().then(()=>{});var We=(r=>(r.LOADING="Loading",r.NO_PAYMENT_METHOD="NoPaymentMethod",r.THREE_DS="UniversalCheckout/3ds",r.CHOOSE_PAYMENT_METHOD="UniversalCheckout/Home",r.MANAGE_PAYMENT_METHODS="VaultManager/Home",r.DIRECT_DEBIT_FORM="DirectDebit/Form",r.DIRECT_DEBIT_MANDATE="DirectDebit/Mandate",r.CREDIT_CARD_FORM="CreditCard/Form",r.SUCCESS_PAYMENT_METHOD="UniversalCheckout/Success/PaymentMethod",r.SUCCESS_CHECK="UniversalCheckout/Success/Check",r))(We||{}),$e=(r=>(r.ROOT="primer-checkout",r.ROOT_CONTENT="primer-checkout-content",r.SUBMIT_BUTTON="primer-checkout-submit-button",r.THREE_DS_MODAL="primer-checkout-3ds-modal",r.VAULT="primer-checkout-vault",r.VAULT_INLINE="primer-checkout-vault-inline",r.NAVIGATE_PAYMENT_METHODS="primer-checkout-navigate-to-payment-methods",r.DIVIDER="primer-checkout-payment-method-divider",r.APM_BUTTONS="primer-checkout-apm-button-container",r.CARDHOLDER_NAME="primer-checkout-cardholder-name",r.CARDHOLDER_NAME_INPUT="primer-checkout-card-cardholder-name-input",r.ACTIONS="primer-checkout-actions",r.ACTIONS_MENU="primer-checkout-actions-menu",r.SAVE_PAYMENT_METHOD_CHECKBOX="primer-checkout-save-payment-method-input",r.SAVE_PAYMENT_METHOD_FIELD="primer-checkout-save-payment-method-field",r.SAVED_PAYMENT_METHODS_EMPTY="primer-checkout-saved-payment-methods-empty-text",r.CARD_FORM="primer-checkout-card-form",r.DD_SWITCH="primer-checkout-switch-dd-inputs",r.DD_IBAN_FIELD="primer-checkout-dd-iban-field",r.DD_LOCAL_FIELD="primer-checkout-dd-local-fields",r.DD_CUSTOMER_NAME_INPUT="primer-checkout-dd-customer-name-input",r.DD_CUSTOMER_EMAIL_INPUT="primer-checkout-dd-customer-email-input",r.DD_CUSTOMER_ADDRESS_LINE1="primer-checkout-dd-customer-address-input",r.DD_CUSTOMER_ADDRESS_LINE2="primer-checkout-dd-customer-address-line2-input",r.DD_CUSTOMER_ADDRESS_CITY="primer-checkout-dd-customer-city-input",r.DD_CUSTOMER_ADDRESS_POSTAL_CODE="primer-checkout-dd-customer-postal-code-input",r.DD_IBAN_INPUT="primer-checkout-dd-iban-input",r.DD_ACCOUNT_NUMBER_INPUT="primer-checkout-dd-account-number-input",r.DD_BANK_CODE_INPUT="primer-checkout-dd-bank-code-input",r.DD_BRANCH_CODE_INPUT="primer-checkout-dd-branch-code-input",r.DD_MANDATE_SMALL_PRINT="primer-checkout-small-print",r.ERROR_MESSAGE="primer-checkout-error-message",r))($e||{}),Xe=(r=>(r.TOKEN="PrimerCheckout__token",r.HIDDEN="PrimerCheckout--hidden",r.FOCUSED="PrimerCheckout--focused",r.SELECTED="PrimerCheckout--selected",r.LOADING="PrimerCheckout--loading",r.ERROR="PrimerCheckout--error",r.CARD_TYPE="PrimerCheckout__cardType",r.SAVED_PAYMENT_METHOD="PrimerCheckout__savedPaymentMethod",r.SAVED_PAYMENT_METHOD_CONTAINER="PrimerCheckout__savedPaymentMethodContainer",r.APM_BUTTON="PrimerCheckout__apmButton",r.EDIT_BUTTON="PrimerCheckout__editButton",r.MENU="PrimerCheckout__dropDownMenu",r.MENU_ITEM="PrimerCheckout__dropDownMenuItem",r.PAYMENT_METHOD_MENU_ITEM="PrimerCheckout__paymentMethodDropDownMenuItem",r.DELETE_PAYMENT_METHOD_BUTTON="PrimerCheckout__paymentMethodDropDownMenuItem__deleteButton",r.ENTER="PrimerCheckout--enter",r.ENTERING="PrimerCheckout--entering",r.ENTERED="PrimerCheckout--entered",r.EXIT="PrimerCheckout--exit",r.EXITING="PrimerCheckout--exiting",r.EXITED="PrimerCheckout--exited",r))(Xe||{}),Ur=(r=>(r.CHECKOUT="CHECKOUT",r.EXPRESS_CHECKOUT="EXPRESS_CHECKOUT",r.HEADLESS_CHECKOUT="HEADLESS_CHECKOUT",r.MANAGE_PAYMENT_METHODS="MANAGE_PAYMENT_METHODS",r.SINGLE_PAYMENT_METHOD_CHECKOUT="SINGLE_PAYMENT_METHOD_CHECKOUT",r))(Ur||{}),Br=(r=>(r.DEFAULT="DEFAULT",r.PREFER_VAULT="PREFER_VAULT",r))(Br||{}),je=(r=>(r.TOKENIZE_STARTED="tokenize-started",r.TOKENIZE_ERROR="tokenize-error",r.TOKENIZE_SUCCESS="tokenize-success",r.TOKENIZE_DID_NOT_START="tokenize-did-not-start",r))(je||{}),wr=(r=>(r.SUCCESS="AUTH_SUCCESS",r.FAILED="AUTH_FAILED",r.SKIPPED="SKIPPED",r.CHALLENGE="CHALLENGE",r))(wr||{}),gr=(r=>(r.WORLDPAY_IDEAL="WORLDPAY_IDEAL",r.ADYEN_KLARNA="ADYEN_KLARNA",r.ADYEN_BANCONTACT_CARD="ADYEN_BANCONTACT_CARD",r.PAY_NL_KAARTDIRECT="PAY_NL_KAARTDIRECT",r.ADYEN_EPS="ADYEN_EPS",r.ADYEN_BANCONTACT_PAYCONIQ="ADYEN_BANCONTACT_PAYCONIQ",r.OMISE_PROMPTPAY="OMISE_PROMPTPAY",r.OMISE_TRUEMONEY="OMISE_TRUEMONEY",r.ADYEN_MULTIBANCO="ADYEN_MULTIBANCO",r.PACYPAY_WECHAT="PACYPAY_WECHAT",r.PACYPAY_ALIPAY="PACYPAY_ALIPAY",r.ADYEN_MBWAY="ADYEN_MBWAY",r.XENDIT_DANA="XENDIT_DANA",r.XENDIT_SHOPEEPAY="XENDIT_SHOPEEPAY",r.ADYEN_PAYSHOP="ADYEN_PAYSHOP",r.ADYEN_PAYTRAIL="ADYEN_PAYTRAIL",r.CLEARPAY="CLEARPAY",r.RAPYD_FAST="RAPYD_FAST",r.RAPYD_PROMPTPAY="RAPYD_PROMPTPAY",r.RAPYD_GCASH="RAPYD_GCASH",r.RAPYD_POLI="RAPYD_POLI",r.RAPYD_GRABPAY="RAPYD_GRABPAY",r.PRIMER_PAYPAL="PRIMER_PAYPAL",r.TWOC2P="TWOC2P",r.NETS="NETS",r.STRIPE_ACH="STRIPE_ACH",r.STRIPE_GIROPAY="STRIPE_GIROPAY",r.MOLLIE_GIROPAY="MOLLIE_GIROPAY",r.MOLLIE_EPS="MOLLIE_EPS",r.PAY_NL_EPS="PAY_NL_EPS",r.PAY_NL_P24="PAY_NL_P24",r.MOLLIE_P24="MOLLIE_P24",r.MOLLIE_SOFORT="MOLLIE_SOFORT",r.COINBASE="COINBASE",r.OPENNODE="OPENNODE",r.MOLLIE_GIFT_CARD="MOLLIE_GIFTCARD",r.XFERS_PAYNOW="XFERS_PAYNOW",r.CARD="PAYMENT_CARD",r.APPLE_PAY="APPLE_PAY",r.GOOGLE_PAY="GOOGLE_PAY",r.PAYPAL="PAYPAL_ORDER",r.PAYPAL_VAULTED="PAYPAL_BILLING_AGREEMENT",r.GO_CARDLESS="GOCARDLESS",r.PAY_NL_IDEAL="PAY_NL_IDEAL",r.PAY_NL_SOFORT_BANKING="PAY_NL_SOFORT_BANKING",r.PAY_NL_BANCONTACT="PAY_NL_BANCONTACT",r.PAY_NL_PAYPAL="PAY_NL_PAYPAL",r.PAY_NL_CREDIT_TRANSFER="PAY_NL_CREDIT_TRANSFER",r.PAY_NL_DIRECT_DEBIT="PAY_NL_DIRECT_DEBIT",r.PAY_NL_GIROPAY="PAY_NL_GIROPAY",r.PAY_NL_PAYCONIQ="PAY_NL_PAYCONIQ",r.HOOLAH="HOOLAH",r.ADYEN_BLIK="ADYEN_BLIK",r.ADYEN_VIPPS="ADYEN_VIPPS",r.ADYEN_GIROPAY="ADYEN_GIROPAY",r.ADYEN_SOFORT="ADYEN_SOFORT",r.ADYEN_IDEAL="ADYEN_IDEAL",r.ADYEN_TRUSTLY="ADYEN_TRUSTLY",r.ADYEN_ALIPAY="ADYEN_ALIPAY",r.ADYEN_TWINT="ADYEN_TWINT",r.ADYEN_MOBILEPAY="ADYEN_MOBILEPAY",r.MOLLIE_BANCONTACT="MOLLIE_BANCONTACT",r.MOLLIE_IDEAL="MOLLIE_IDEAL",r.BUCKAROO_GIROPAY="BUCKAROO_GIROPAY",r.BUCKAROO_EPS="BUCKAROO_EPS",r.BUCKAROO_SOFORT="BUCKAROO_SOFORT",r.BUCKAROO_BANCONTACT="BUCKAROO_BANCONTACT",r.BUCKAROO_IDEAL="BUCKAROO_IDEAL",r.ATOME="ATOME",r.KLARNA_CUSTOMER_TOKEN="KLARNA_CUSTOMER_TOKEN",r))(gr||{}),V=(r=>(r.WORLDPAY_IDEAL="WORLDPAY_IDEAL",r.STRIPE_ACH="STRIPE_ACH",r.STRIPE_IDEAL="STRIPE_IDEAL",r.ADYEN_KLARNA="ADYEN_KLARNA",r.ADYEN_BANCONTACT_CARD="ADYEN_BANCONTACT_CARD",r.PAY_NL_KAARTDIRECT="PAY_NL_KAARTDIRECT",r.ADYEN_EPS="ADYEN_EPS",r.ADYEN_BANCONTACT_PAYCONIQ="ADYEN_BANCONTACT_PAYCONIQ",r.OMISE_PROMPTPAY="OMISE_PROMPTPAY",r.OMISE_TRUEMONEY="OMISE_TRUEMONEY",r.ADYEN_MULTIBANCO="ADYEN_MULTIBANCO",r.PACYPAY_WECHAT="PACYPAY_WECHAT",r.PACYPAY_ALIPAY="PACYPAY_ALIPAY",r.ADYEN_MBWAY="ADYEN_MBWAY",r.XENDIT_DANA="XENDIT_DANA",r.XENDIT_SHOPEEPAY="XENDIT_SHOPEEPAY",r.ADYEN_PAYSHOP="ADYEN_PAYSHOP",r.ADYEN_PAYTRAIL="ADYEN_PAYTRAIL",r.CLEARPAY="CLEARPAY",r.RAPYD_FAST="RAPYD_FAST",r.RAPYD_PROMPTPAY="RAPYD_PROMPTPAY",r.RAPYD_GCASH="RAPYD_GCASH",r.RAPYD_POLI="RAPYD_POLI",r.RAPYD_GRABPAY="RAPYD_GRABPAY",r.PRIMER_PAYPAL="PRIMER_PAYPAL",r.TWOC2P="TWOC2P",r.NETS="NETS",r.STRIPE_GIROPAY="STRIPE_GIROPAY",r.MOLLIE_GIROPAY="MOLLIE_GIROPAY",r.MOLLIE_EPS="MOLLIE_EPS",r.PAY_NL_EPS="PAY_NL_EPS",r.PAY_NL_P24="PAY_NL_P24",r.MOLLIE_P24="MOLLIE_P24",r.MOLLIE_SOFORT="MOLLIE_SOFORT",r.COINBASE="COINBASE",r.OPENNODE="OPENNODE",r.MOLLIE_GIFT_CARD="MOLLIE_GIFTCARD",r.XFERS_PAYNOW="XFERS_PAYNOW",r.PAYMENT_CARD="PAYMENT_CARD",r.APPLE_PAY="APPLE_PAY",r.GOOGLE_PAY="GOOGLE_PAY",r.PAYPAL="PAYPAL",r.GO_CARDLESS="GOCARDLESS",r.KLARNA="KLARNA",r.PAY_NL_IDEAL="PAY_NL_IDEAL",r.PAY_NL_SOFORT_BANKING="PAY_NL_SOFORT_BANKING",r.PAY_NL_BANCONTACT="PAY_NL_BANCONTACT",r.PAY_NL_PAYPAL="PAY_NL_PAYPAL",r.PAY_NL_CREDIT_TRANSFER="PAY_NL_CREDIT_TRANSFER",r.PAY_NL_DIRECT_DEBIT="PAY_NL_DIRECT_DEBIT",r.PAY_NL_GIROPAY="PAY_NL_GIROPAY",r.PAY_NL_PAYCONIQ="PAY_NL_PAYCONIQ",r.HOOLAH="HOOLAH",r.ADYEN_BLIK="ADYEN_BLIK",r.ADYEN_MOBILEPAY="ADYEN_MOBILEPAY",r.ADYEN_VIPPS="ADYEN_VIPPS",r.ADYEN_GIROPAY="ADYEN_GIROPAY",r.ADYEN_SOFORT="ADYEN_SOFORT",r.ADYEN_IDEAL="ADYEN_IDEAL",r.ADYEN_TRUSTLY="ADYEN_TRUSTLY",r.ADYEN_ALIPAY="ADYEN_ALIPAY",r.ADYEN_TWINT="ADYEN_TWINT",r.ADYEN_BANK_TRANSFER="ADYEN_BANK_TRANSFER",r.MOLLIE_BANCONTACT="MOLLIE_BANCONTACT",r.MOLLIE_IDEAL="MOLLIE_IDEAL",r.BUCKAROO_GIROPAY="BUCKAROO_GIROPAY",r.BUCKAROO_EPS="BUCKAROO_EPS",r.BUCKAROO_SOFORT="BUCKAROO_SOFORT",r.BUCKAROO_BANCONTACT="BUCKAROO_BANCONTACT",r.BUCKAROO_IDEAL="BUCKAROO_IDEAL",r.ATOME="ATOME",r))(V||{}),ze=(r=>(r.PAYMENT_CARD="PAYMENT_CARD",r.ADYEN_BANCONTACT_CARD="ADYEN_BANCONTACT_CARD",r))(ze||{}),kr=(r=>(r.SINGLE_USE="SINGLE_USE",r.MULTI_USE="MULTI_USE",r))(kr||{});const pr={PAYPAL_BILLING_AGREEMENT:"PAYPAL",KLARNA_CUSTOMER_TOKEN:"KLARNA"},it=r=>{if(Object.values(V).includes(r))return r;if(pr[r])return pr[r]};var vr=(r=>(r.INITIALIZATION_ERROR="INITIALIZATION_ERROR",r.NO_PAYMENT_METHODS="NO_PAYMENT_METHODS",r.PRIMER_TEARDOWN="PRIMER_TEARDOWN",r.PRIMER_SERVER_ERROR="PRIMER_SERVER_ERROR",r.THREE_DS_AUTH_FAILED="THREE_DS_AUTH_FAILED",r.TOKENIZATION_ERROR="TOKENIZATION_ERROR",r.DUPLICATE_PAYMENT_METHOD_ERROR="DUPLICATE_PAYMENT_METHOD_ERROR",r.CARD_NUMBER_ERROR="CARD_NUMBER_ERROR",r.PAYMENT_METHOD_NOT_SETUP="PAYMENT_METHOD_NOT_SETUP",r.PAYMENT_METHOD_NOT_PROVIDED="PAYMENT_METHOD_NOT_PROVIDED",r.PAYMENT_METHOD_NOT_COMPATIBLE="PAYMENT_METHOD_NOT_COMPATIBLE",r.RESUME_ERROR="RESUME_ERROR",r.VALIDATION_ERROR="VALIDATION_ERROR",r.PAYMENT_FAILED="PAYMENT_FAILED",r.PAYMENT_CREATION_ABORTED="PAYMENT_CREATION_ABORTED",r.PAYMENT_CREATION_DISABLED="PAYMENT_CREATION_DISABLED",r.CLIENT_SESSION_UPDATE_ERROR="CLIENT_SESSION_UPDATE_ERROR",r.INVALID_ARGUMENT="INVALID_ARGUMENT",r.VAULT_FETCH="VAULT_FETCH",r.VAULT_DELETE="VAULT_DELETE",r.HEADLESS_VAULT_MANAGER_VALIDATION="HEADLESS_VAULT_MANAGER_VALIDATION",r.CARD_FORM_VALIDATION_UNEXPECTED_FIELD="CARD_FORM_VALIDATION_UNEXPECTED_FIELD",r.MISSING_FIRST_NAME_OR_LAST_NAME="MISSING_FIRST_NAME_OR_LAST_NAME",r.MISSING_EMAIL_ADDRESS="MISSING_EMAIL_ADDRESS",r.INVALID_FLOW="INVALID_FLOW",r))(vr||{});class xr extends Error{static fromErrorCode(e,t,o){return new xr(e,t,o)}constructor(e,t,o){super(t.message),this.message=t.message,this.code=e,this.diagnosticsId=t.diagnosticsId||null,this.data=t.data,this.isFromDeveloper=t.isFromDeveloper??!1,o?.messageEvent?.({message:t.message,messageType:e,severity:"ERROR",...t.diagnosticsId&&{diagnosticsId:t.diagnosticsId},...t.errorId&&{errorId:t.errorId},...t.data&&{data:t.data},...t.isFromDeveloper!==void 0&&{isFromDeveloper:String(t.isFromDeveloper)},stack:this.stack})}}const st=r=>{throw console.error(r.message),r};var Qe=R(473),br=(r=>(r.PAYMENT_METHOD="PAYMENT_METHOD",r.CHECK="CHECK",r))(br||{});const Ze=r=>"fullMandateText"in r?.mandateData;var Hr=(r=>(r.CHANGE="change",r.ERROR="error",r.FOCUS="focus",r.BLUR="blur",r.CLICK="click",r.CLOSE="close",r))(Hr||{}),Fr=(r=>(r.CARD="CARD",r.NATIVE="NATIVE",r.REDIRECT="REDIRECT",r.FORM_WITH_REDIRECT="FORM_WITH_REDIRECT",r.KLARNA="KLARNA",r.ACH="ACH",r))(Fr||{});const qe={SDK_VERSION:He,createHeadless:Fe,showExpressCheckout:Ge,showUniversalCheckout:Ke,showVaultManager:me}})(),g})());
package/dist/index.d.ts CHANGED
@@ -205,13 +205,10 @@ export type NetworkEventProperties = {
205
205
  duration?: number;
206
206
  callType: NetworkCallType;
207
207
  };
208
- declare enum TimerType {
209
- START = "START",
210
- END = "END"
211
- }
208
+ export type TimerId = "CONFIGURATION_LOADING" | "HEADLESS_LOADING" | "EXPRESS_LOADING" | "DROP_IN_LOADING" | "VAULT_MANAGER_LOADING";
212
209
  export interface TimerEventProperties {
213
- id: string;
214
- timerType: TimerType;
210
+ id: TimerId;
211
+ [k: string]: string | number | undefined;
215
212
  }
216
213
  export interface SdkFunctionEventProperties {
217
214
  name: string;
@@ -227,8 +224,10 @@ export type Analytics = {
227
224
  messageEvent(properties: MessageEventProperties): Promise<void>;
228
225
  networkCallEvent(properties: NetworkEventProperties): Promise<void>;
229
226
  sdkFunctionEvent(properties: SdkFunctionEventProperties): Promise<void>;
230
- timerEvent(properties: TimerEventProperties): Promise<void>;
227
+ timerStart(properties: TimerEventProperties): Promise<void>;
228
+ timerEnd(properties: TimerEventProperties): Promise<void>;
231
229
  v1Event(properties: V1EventProperties): Promise<void>;
230
+ url: string;
232
231
  };
233
232
  export type Nullable<T> = T | null;
234
233
  export interface BorderStyle {
@@ -504,7 +503,7 @@ export interface RequestOptions {
504
503
  isAnalytics?: boolean;
505
504
  }
506
505
  export interface APIRequestOptions {
507
- method: HttpMethod;
506
+ method: "get" | "post" | HttpMethod;
508
507
  url: string;
509
508
  body?: unknown;
510
509
  options?: RequestOptions;
@@ -519,7 +518,7 @@ export interface ValidationErrorDetail {
519
518
  }
520
519
  export interface APIErrorShape {
521
520
  message: string;
522
- validationErrors: ValidationErrorDetail[];
521
+ validationErrors?: ValidationErrorDetail[];
523
522
  diagnosticsId?: string;
524
523
  errorId?: string;
525
524
  }
@@ -527,6 +526,7 @@ export interface APIResponse<T = unknown> {
527
526
  error: Nullable<APIErrorShape>;
528
527
  data: Nullable<T>;
529
528
  status: Nullable<number>;
529
+ headers: Record<string, string>;
530
530
  }
531
531
  declare class Api {
532
532
  private messageBus;
@@ -563,6 +563,7 @@ declare class Vault {
563
563
  }
564
564
  export type InternalFlowOptions = (UniversalCheckoutOptions | VaultManagerOptions | SinglePaymentMethodCheckoutOptions) & HeadlessUniversalCheckoutOptions & {
565
565
  uxFlow?: string;
566
+ newHeadlessOptionsParameter?: boolean;
566
567
  };
567
568
  export interface ErrorMonitoring {
568
569
  captureException(error: Error): any;
@@ -574,16 +575,16 @@ export interface RetryConfig {
574
575
  /** Whether retry is enabled */
575
576
  enabled: boolean;
576
577
  }
577
- export type Logger = (error: string | Error) => void;
578
578
  declare class ScriptLoader {
579
579
  private readonly scripts;
580
580
  private readonly timeoutMilliseconds;
581
581
  constructor();
582
582
  load(src: string, options?: {
583
+ name?: string;
583
584
  crossOrigin?: "" | "use-credentials";
584
585
  customAttributes?: Record<string, string>;
585
586
  retryConfig?: RetryConfig;
586
- logger?: Logger;
587
+ analytics?: any;
587
588
  }): Promise<boolean>;
588
589
  }
589
590
  declare enum ImplementationType {
@@ -782,6 +783,13 @@ export interface ClientConfiguration {
782
783
  primerAccountId: string;
783
784
  settleOnAuth?: boolean;
784
785
  }
786
+ declare class ClientConfigurationHandler {
787
+ private config;
788
+ private checkoutSessionId;
789
+ constructor(config: ClientConfiguration, checkoutSessionId: string);
790
+ fetchClientConfiguration(clientToken: string, cache?: boolean): Promise<ClientConfiguration>;
791
+ getCurrentClientConfiguration(): ClientConfiguration;
792
+ }
785
793
  declare enum ClientTokenIntent {
786
794
  CHECKOUT = "CHECKOUT",
787
795
  THREEDS_AUTHENTICATION = "3DS_AUTHENTICATION",
@@ -821,13 +829,6 @@ export interface IClientTokenHandler {
821
829
  addNewClientTokenListener(listener: NewClientTokenListener): any;
822
830
  removeNewClientTokenListener(listener: NewClientTokenListener): any;
823
831
  }
824
- declare class ClientConfigurationHandler {
825
- private config;
826
- private checkoutSessionId;
827
- constructor(config: ClientConfiguration, checkoutSessionId: string);
828
- fetchClientConfiguration({ accessToken, configurationUrl, }: Pick<DecodedClientToken, "accessToken" | "configurationUrl">): Promise<ClientConfiguration>;
829
- getCurrentClientConfiguration(): ClientConfiguration;
830
- }
831
832
  export interface LongPollServices {
832
833
  api: Api;
833
834
  }
@@ -1791,6 +1792,7 @@ export interface SinglePaymentMethodCheckoutOptions extends TokenizationHandlers
1791
1792
  directDebit?: DirectDebitOptions;
1792
1793
  stripe?: StripeOptions;
1793
1794
  paymentHandling?: PaymentHandling;
1795
+ clientSessionCachingEnabled?: boolean;
1794
1796
  }
1795
1797
  export interface VaultManagerOptions extends WithAllowedCardNetworks {
1796
1798
  container: string | Element;
@@ -1838,6 +1840,7 @@ export interface UniversalCheckoutOptions extends TokenizationHandlers, PaymentH
1838
1840
  stripe?: StripeOptionsDropIn;
1839
1841
  paymentHandling?: PaymentHandling;
1840
1842
  advanced?: AdvancedOptions;
1843
+ clientSessionCachingEnabled?: boolean;
1841
1844
  }
1842
1845
  export interface HeadlessUniversalCheckoutOptions extends TokenizationHandlers, PaymentHandlers, PaymentMethodHandlers, ClientSessionHandlers, WithAllowedCardNetworks {
1843
1846
  style?: CheckoutStyle;
@@ -1853,6 +1856,7 @@ export interface HeadlessUniversalCheckoutOptions extends TokenizationHandlers,
1853
1856
  giftCard?: CustomizablePaymentMethodButton;
1854
1857
  stripe?: StripeOptions;
1855
1858
  onAvailablePaymentMethodsLoad: (paymentMethods: PaymentMethodInfo[]) => void;
1859
+ clientSessionCachingEnabled?: boolean;
1856
1860
  }
1857
1861
  export type WithAllowedCardNetworks = {
1858
1862
  /** @deprecated Use `orderedAllowedCardNetworks` on your Primer Dashboard instead. */
@@ -2058,9 +2062,17 @@ export interface PrimerHeadlessCheckout {
2058
2062
  createPaymentMethodManager(type: "STRIPE_ACH", options?: AchPaymentMethodManagerOptions): Promise<IAchPaymentMethodManager | null>;
2059
2063
  createPaymentMethodManager(type: PaymentMethodType, options?: PaymentMethodManagerOptions): Promise<IRedirectPaymentMethodManager | null>;
2060
2064
  createVaultManager(): HeadlessVaultManager;
2061
- configure: (options: HeadlessUniversalCheckoutOptions) => void;
2065
+ /**
2066
+ * @deprecated
2067
+ * The options should be set on the `createHeadless` second parameter instead:
2068
+ * ```
2069
+ * Primer.createHeadless('clientToken', options);
2070
+ * ```
2071
+ */
2072
+ configure: (options: Omit<HeadlessUniversalCheckoutOptions, "clientSessionCachingEnabled">) => void;
2062
2073
  getAssetsManager(): IAssetsManager;
2063
2074
  start: () => Promise<void>;
2075
+ refreshClientSession(): Promise<boolean>;
2064
2076
  }
2065
2077
  export interface PrimerSinglePaymentMethodCheckout {
2066
2078
  submit(): void;
@@ -2085,7 +2097,7 @@ export interface RemotePaymentMethodConfiguration<T> {
2085
2097
  }
2086
2098
  export declare const Primer: {
2087
2099
  SDK_VERSION: string;
2088
- createHeadless: (clientToken: string) => Promise<PrimerHeadlessCheckout>;
2100
+ createHeadless: (clientToken: string, options?: HeadlessUniversalCheckoutOptions | undefined) => Promise<PrimerHeadlessCheckout>;
2089
2101
  showExpressCheckout: (clientToken: string, options: any) => Promise<PrimerCheckout>;
2090
2102
  showUniversalCheckout: (clientToken: string, options: UniversalCheckoutOptions | SinglePaymentMethodCheckoutOptions) => Promise<PrimerCheckout>;
2091
2103
  showVaultManager: (clientToken: string, options: VaultManagerOptions) => Promise<PrimerVaultManager>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@primer-io/checkout-web",
3
- "version": "2.44.1",
3
+ "version": "2.45.0",
4
4
  "description": "Primer.js for the web",
5
5
  "author": "Primer Developers <developers@primer.io>",
6
6
  "homepage": "",