import{x as e,K as t,T as o,C as n,q as r,B as a,u as i}from"./jsxRuntime.module-BVgM4NZG.js";import{i as s,a as c,o as u}from"./constants-OAvCAmL5.js";const d=[];for(let me=0;me<256;++me)d.push((me+256).toString(16).slice(1));let l;const p=new Uint8Array(16);const h={randomUUID:"undefined"!=typeof crypto&&crypto.randomUUID&&crypto.randomUUID.bind(crypto)};function m(e,t,o){var n;if(h.randomUUID&&!t&&!e)return h.randomUUID();const r=(e=e||{}).random??(null==(n=e.rng)?void 0:n.call(e))??function(){if(!l){if("undefined"==typeof crypto||!crypto.getRandomValues)throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");l=crypto.getRandomValues.bind(crypto)}return l(p)}();if(r.length<16)throw new Error("Random bytes length must be >= 16");if(r[6]=15&r[6]|64,r[8]=63&r[8]|128,t){if((o=o||0)<0||o+16>t.length)throw new RangeError(`UUID byte range ${o}:${o+15} is out of buffer bounds`);for(let e=0;e<16;++e)t[o+e]=r[e];return t}return function(e,t=0){return(d[e[t+0]]+d[e[t+1]]+d[e[t+2]]+d[e[t+3]]+"-"+d[e[t+4]]+d[e[t+5]]+"-"+d[e[t+6]]+d[e[t+7]]+"-"+d[e[t+8]]+d[e[t+9]]+"-"+d[e[t+10]]+d[e[t+11]]+d[e[t+12]]+d[e[t+13]]+d[e[t+14]]+d[e[t+15]]).toLowerCase()}(r)}function f(e,t,o){return(t=function(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var o=e[Symbol.toPrimitive];if(void 0!==o){var n=o.call(e,t);if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:t+""}(t))in e?Object.defineProperty(e,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[t]=o,e}function g(e,t){var o=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),o.push.apply(o,n)}return o}function v(e){for(var t=1;te.toString(16))).join("")}function M(e,t=!0){return e&&Object.keys(e).length&&t?Object.keys(e).map((t=>({[P(t)]:e[t]}))).reduce(((e,t)=>v(v({},e),t))):e}function P(e){return e.split(/(?=[A-Z])/).join("_").toLowerCase()}function O(e){return e.events.map((e=>{let t=!0,o=!0;return e&&e.options&&Object.prototype.hasOwnProperty.call(e.options,"convertEventCase")&&(t=Boolean(e.options.convertEventCase)),e&&e.options&&Object.prototype.hasOwnProperty.call(e.options,"convertMetaDataCase")&&(o=Boolean(e.options.convertMetaDataCase)),v({schema_id:e.schemaId,payload:M(e.payload,t)},e.metadata&&{metadata:M(e.metadata,o)})}))}class C extends Error{constructor(e){super(`Error producing to the Monorail Edge. Response received: ${JSON.stringify(e)}`),f(this,"name","MonorailUnableToProduceError"),this.response=e,Object.setPrototypeOf(this,C.prototype)}}class k extends Error{constructor(e){super(`Response not from Monorail Edge. Response received: ${JSON.stringify(e)}`),f(this,"name","MonorailInterceptedProduceError"),this.response=e,Object.setPrototypeOf(this,k.prototype)}}class j extends Error{constructor(e){super(`Error producing to the Monorail Edge. Response received: ${JSON.stringify(e)}`),f(this,"name","MonorailBatchProduceError"),Object.setPrototypeOf(this,j.prototype),this.response=e}}class A extends Error{constructor(e,t){super(`Error completing request. A network failure may have prevented the request from completing. Error: ${e}. Schemas: ${Array.from(new Set(t)).join(", ")}`),f(this,"name","MonorailRequestError"),Object.setPrototypeOf(this,A.prototype)}}class S extends Error{constructor(e,t){super(`Error reading response from Monorail Edge. Status: ${t||"unknown"}. Error: ${(null==e?void 0:e.message)||"Unknown error"}`),f(this,"name","MonorailResponseReadError"),this.error=e,this.status=t,Object.setPrototypeOf(this,S.prototype)}}class U{static withEndpoint(e){return new U(`https://${new URL(e).hostname}`)}constructor(e=y,t={}){var o,n;if(this.edgeDomain=e,this.optionsOrKeepalive=t,"boolean"==typeof t)return this.keepalive=t,void(this.detectInterceptedErrorEnabled=!1);this.keepalive=null!==(o=t.keepalive)&&void 0!==o&&o,this.detectInterceptedErrorEnabled=null!==(n=t.detectInterceptedErrorEnabled)&&void 0!==n&&n}async produceBatch(e){const t={events:O(e),metadata:M(e.metadata)};let o,n;try{o=await fetch(this.produceBatchEndpoint(),{method:"post",headers:D(e.metadata),body:JSON.stringify(t),keepalive:this.keepalive})}catch(r){throw new A(r,e.events.map((e=>e.schemaId)))}if(207===o.status){const e=await o.json();throw new j(e)}try{n=await o.text()}catch(r){throw new S(r,o.status)}if(!o.ok){if(!Boolean(o.headers.get("x-request-id"))&&this.detectInterceptedErrorEnabled)throw new k({status:o.status,message:n});throw new C({status:o.status,message:n})}return{status:o.status}}async produce(e){let t,o,n=!0;e&&e.options&&Object.prototype.hasOwnProperty.call(e.options,"convertEventCase")&&(n=Boolean(e.options.convertEventCase));try{t=await async function({endpoint:e,event:t,keepalive:o}){var n,r,a,i,s;const c=t.metadata?{clientMessageId:null===(n=t.metadata)||void 0===n?void 0:n.clientMessageId,eventCreatedAtMs:null===(r=t.metadata)||void 0===r?void 0:r.eventCreatedAtMs,consent:null===(a=t.metadata)||void 0===a?void 0:a.consent,consent_provider:null===(i=t.metadata)||void 0===i?void 0:i.consent_provider,consent_version:null===(s=t.metadata)||void 0===s?void 0:s.consent_version}:void 0;return fetch(null!=e?e:w+_,{method:"post",headers:D(t.metadata),body:JSON.stringify({schema_id:t.schemaId,payload:t.payload,metadata:c&&M(c,!0)}),keepalive:o})}({endpoint:this.produceEndpoint(),keepalive:this.keepalive,event:v(v({},e),{},{payload:M(e.payload,n)})})}catch(r){throw new A(r,[e.schemaId])}if(!t)throw new C({message:"No response from edge"});try{o=await t.text()}catch(r){throw new S(r,t.status)}if(!t.ok){if(!Boolean(t.headers.get("x-request-id"))&&this.detectInterceptedErrorEnabled)throw new k({status:t.status,message:o});throw new C({status:t.status,message:o})}return{status:t.status}}produceBatchEndpoint(){return this.edgeDomain+"/unstable/produce_batch"}produceEndpoint(){return this.edgeDomain+_}}function D(e){const t={"Content-Type":"application/json; charset=utf-8","X-Monorail-Edge-Event-Created-At-Ms":(e&&e.eventCreatedAtMs||Date.now()).toString(),"X-Monorail-Edge-Event-Sent-At-Ms":Date.now().toString(),"X-Monorail-Edge-Client-Message-Id":(e&&e.clientMessageId||I()).toString()};return e&&e.userAgent&&(t["User-Agent"]=e.userAgent),e&&e.remoteIp&&(t["X-Forwarded-For"]=e.remoteIp),e&&e.deviceInstallId&&(t["X-Monorail-Edge-Device-Install-Id"]=e.deviceInstallId),e&&e.client&&(t["X-Monorail-Edge-Client"]=e.client),e&&e.clientOs&&(t["X-Monorail-Edge-Client-OS"]=e.clientOs),t}class z{static printWelcomeMessage(e){console.log(`%c👋 from Monorail%c\n\nWe've noticed that you're${e?"":" not"} running in debug mode. As such, we will ${e?"produce":"not produce"} Monorail events to the console. \n\nIf you want Monorail events to ${e?"stop":"start"} appearing here, %cset debugMode=${(!e).toString()}%c, for the Monorail Log Producer in your code.`,"font-size: large;","font-size: normal;","font-weight: bold;","font-weight: normal;")}constructor(e){this.sendToConsole=e,e&&z.printWelcomeMessage(e)}async produce(e){return this.sendToConsole&&console.log("Monorail event produced",e),new Promise((t=>{t(e)}))}produceBatch(e){return this.sendToConsole&&console.log("Monorail Batch event produced",e),new Promise((t=>{t(e)}))}}class x{static createLogProducer(e){return new x(new z(e.debugMode),e.middleware||[])}static createHttpProducerWithEndpoint(e,t=[]){return new x(U.withEndpoint(e),t)}static createHttpProducer(e){return new x(e.production?new U(w,e.options):new U(y,e.options),e.middleware||[])}static buildMiddlewareChain(e,t=0){return t===e.length?this.identityFn:o=>e[t].do(o,this.buildMiddlewareChain(e,t+1))}constructor(e,t){this.producer=e,this.middleware=t,this.executeChain=x.buildMiddlewareChain(this.middleware.concat(new E(e)))}produce(e){return e.metadata=v({eventCreatedAtMs:Date.now(),clientMessageId:I()},e.metadata),this.executeChain(e)}produceBatch(e){return this.executeChain(e)}}class R{constructor(e){this.version=e.version}}class T{constructor(e){if(null==e||!e.provider)throw new $("ConsentTrackingMiddleware requires an instance of ConsentTrackingProvider");this.provider=e.provider}async do(e,t){if(b(e))return t(await this.provider.annotateEvent(e));const o=await Promise.all(e.events.map((e=>this.provider.annotateEvent(e))));return t(v(v({},e),{},{events:o}))}}class $ extends Error{constructor(e){super(e),Object.setPrototypeOf(this,$.prototype)}}const q="",B="1",L="0",N="p",F="a",V="m",X="t",J="m",W="a",H="p",K="s";function Z(e){try{return decodeURIComponent(e)}catch(t){return""}}function G(e,t=!1){const o=document.cookie?document.cookie.split("; "):[];for(let n=0;ne.charCodeAt(0).toString(16).padStart(2,"0"))).join("");c=[8,13,18,23].reduce(((e,t)=>e.slice(0,t)+"-"+e.slice(t)),t)}function u(e){const t=o.split(".")[0];return t.includes(e.toLowerCase())?L:t.includes(e.toUpperCase())?B:q}function d(e){return o.includes(e.replace("t","s").toUpperCase())}return{v:"3",con:{CMP:{[W]:u(W),[H]:u(H),[J]:u(J),[K]:u(K)}},region:n||"",cus:s,purposes:{[F]:d(F),[N]:d(N),[V]:d(V),[X]:d(X)},sale_of_data_region:"t"==a,display_banner:"t"==r,consent_id:c}}(e);return}(e)}function Y(e){const t=Q();if(!t||!t.purposes)return!0;const o=t.purposes[e];return"boolean"!=typeof o||o}function ee(){return Y(F)}function te(){return Y(N)}function oe(){return Y(V)}function ne(){return Y(X)}function re(){const e=[];return ee()&&e.push("analytics"),oe()&&e.push("marketing"),ne()&&e.push("sale_of_data"),te()&&e.push("preferences"),e}class ae extends R{async annotateEvent(e){return Promise.resolve(function(e,t){if("v1"===t){const o=re();return{...e,metadata:{...null==e?void 0:e.metadata,consent:o,consent_provider:"consent-tracking-api",consent_version:t}}}throw new ie(t||"unknown")}(e,this.version))}getRequiredConsentForEmission(){if("v1"===this.version)return["analytics","marketing"];throw new ie(this.version||"unknown")}}class ie extends Error{constructor(e){super(`Version ${e} is not supported by the consent-tracking-api provider`),this.name="MonorailConsentTrackingApiProviderVersionError",Object.setPrototypeOf(this,ie.prototype)}}class se extends Error{constructor(e,t){super(`${e} must be used within a <${t}>`),this.name="ContextWithoutProviderError"}}function ce(t,o,n){const r=e(t);if(void 0===r)throw new se(o,n);return r}const ue="shop_accounts_identity_verification_ui_event/2.4";var de=(e=>(e.Account="account",e.AccountLogin="account_login",e.AuthorizeDefault="authorize_default",e.AuthorizeDiscount="authorize_discount",e.AuthorizeFailed="authorize_failed",e.AuthorizeFollow="authorize_follow",e.AuthorizePopUp="authorize_pop_up",e.AuthorizePrequal="authorize_prequal",e.AuthorizeThirdParty="authorize_third_party",e.ChangeEmail="change_email",e.InstallmentsIframe="installments_iframe",e.InstallmentsPrequal="installments_prequal",e.InstallmentsPrequalAmount="installments_prequal_amount",e.Login="login",e.LoginSeamless="loginSeamless",e.LoginStateMachine="login_state_machine",e.Modal="modal",e.PaymentPage="payment_page",e.PreAuth="pre_auth",e.ShopAuthInput="shop_auth_input",e.Webauthn="webauthn",e))(de||{});const le=t(void 0);function pe({analyticsTraceId:e,authorizationFlowId:t,checkoutVersion:d=n.Classic,children:l,clientUuid:p,parentPageLoadId:h,publicId:f,shopAccountUuid:g,shopId:v,shopifyDomain:y="",token:w,uiSection:_}){const b=o((()=>{const e=[];return d===n.CheckoutOne&&w&&"undefined"!=typeof window&&e.push(function(){const e=new ae({version:"v1"});return new T({provider:e})}()),e}),[d,w]),E=o((()=>s()?x.createHttpProducer({production:!0,middleware:b}):x.createLogProducer({debugMode:c(),middleware:b})),[b]),I=o((()=>e??m()),[e]),M=o((()=>({analyticsTraceId:I,...t&&{authorizationFlowId:t},...w&&{checkoutToken:w},...d&&{checkoutVersion:d},...p&&{clientUuid:p},...f&&{publicId:f},...g&&{shopAccountUuid:g},...v&&{shopId:v},...y&&{shopifyDomain:y}})),[I,t,w,d,p,f,g,v,y]),P=r((e=>[e===ue,null!=p&&"authorize_default"===_,"authorize_discount"===_,"authorize_follow"===_,"authorize_prequal"===_,"authorize_pop_up"===_,"shop_auth_input"===_,"installments_prequal"===_,null!=p&&"pre_auth"===_,null!=w,null!=p&&null!=t,null!=f||"account_login"===_].some(Boolean)),[t,w,p,f,_]),O=r((e=>{if(!E)return;if(!P(e.schemaId))return void a.notify("Unexpected params for trackMonorail",(t=>{t.addMetadata("monorail",{schemaId:e.schemaId,payload:e.payload,globalPayload:M,uiSection:_})}));try{E.produce({schemaId:e.schemaId,payload:{...M,...e.payload}})}catch(t){(e=>!e.message.includes("Cannot read property 'randomUUID' of undefined"))(t)?a.notify("Error producing monorail event",(t=>{t.addMetadata("monorail",{schemaId:e.schemaId,payload:e.payload,globalPayload:M,uiSection:_})})):console.error("Error producing monorail event",t)}}),[M,P,E,_]),C=o((()=>({checkoutVersion:d,openTelemetryClient:u,parentPageLoadId:h,trackMonorail:O,analyticsTraceId:I})),[d,h,O,I]);return i(le.Provider,{value:C,children:l})}function he(){return ce(le,"useAnalyticsContext","AnalyticsProvider")}export{pe as A,ue as S,de as U,he as a,ce as u,m as v};