1import{bJ as e,g as t,E as s,bK as n,bL as a}from"./4c290a1e.C6TDJ9Fn.js";import{S as r}from"./app.CepNJbvh.js";import{a as o}from"./ac5a19ff.CRrh5Bdw.js";import{p as i}from"./2c1ab0fe.GMbxnz74.js";import{e as c,s as p,a as d}from"./9c384ce8.CFjjgE6K.js";import{i as l,a as h,c as u}from"./60a453ce.CkhHeRBc.js";class m extends Error{constructor(){super(...arguments),this.name="ExtensionUsageError"}}class f extends Error{constructor(){super(...arguments),this.name="ExtensionSandboxTruncatedScriptError"}}function b(e,t){if(e.startsWith(t))return e;const s=new URL("/cdn/shopifycloud/checkout-web/assets/c1/",import.meta.url).pathname.replace(/(c1|shop-pay-external)\/$/,"");return e.replace(s,t)}function x({extension:e,appSandboxPermissions:s,observability:n}){const{capabilities:a,apiVersion:r,appId:o,type:i,extensionPoint:{target:c}}=e,p=Boolean(o)&&l(r)&&!function(e){const t=e.collectBuyerConsent;for(const s of Object.keys(t))switch(s){case"smsMarketing":case"customerPrivacy":if(t[s])return!0}return!1}(a)&&!h(c),d={isShared:!1,appId:o,extensionType:i,hasSharedNetworkAccess:!1,hasSharedApiAccess:!1,cacheKey:()=>""};if(!p)return d;const m="local"===i,f=m||s.app(o).has("networkAccess",{extensionType:i}),b=m||s.app(o).has("apiAccess",{extensionType:i}),x=u(e),y=x&&!f,w=a.apiAccess&&!b;return m||!y&&!w?{isShared:!0,appId:o,extensionType:i,hasSharedNetworkAccess:f,hasSharedApiAccess:b,cacheKey:()=>`appId=${t(o)??o}:remote-dom:${i}:net=${f}:api=${b}`}:(n.log("shared_sandbox_permissions_mismatch","Extension is ineligible for a shared sandbox because its permissions do not match the shared sandbox permissions",{appId:o,extensionType:i,target:c,hasSharedNetworkAccess:f,hasSharedApiAccess:b,extensionNetworkAccess:x,extensionApiAccess:a.apiAccess}),d)}const y="__run",w="__terminate";class g extends Error{constructor(e,t,s){super(e),this.name=t,this.stack=s}toString(){return`${this.name}: ${this.message}\n ${this.stack}`}}function k(){}
1function S({extensionsPublicPath:r,isPostPurchase:d,observability:h,getPolyfills:u,appSandboxPermissions:m}){let y,S=!1;const v=new Set,$=function(t){const s=new Map;return function({url:n,sandboxType:a,name:r}){return[{type:"classic",name:r},(()=>{if(s.has(n)){const e=s.get(n);if(e)return e}const r=async function(n,a){let r="",o=0;const d=p[a];c.markStarted(d,{type:"sandbox-fetch"});try{const{response:s,text:p}=await i(async()=>{const s=o>0?{cache:"reload"}:{},i=await fetch(n,s);if(!i.ok)throw new e(`Failed to fetch sandbox asset: ${i.status}`);const c=await i.text();if(r=c,!c.slice(-256).includes("SANDBOX_EOF"))throw o++,t.observability&&t.observability.leaveErrorBreadcrumb("truncated_sandbox_fetch",{scriptUrl:n.href,sandboxType:a,httpStatus:i.status,contentLengthHeader:i.headers.get("content-length"),scriptBodyLength:c.length,scriptEnd:c.slice(-50)},"error"),new f("Sandbox script does not have expected end of file marker, likely truncated");return t.observability&&o>0&&t.observability.log("successful_retry_truncated_sandbox_fetch","Successful retry of truncated sandbox fetch",{scriptUrl:n.href,sandboxType:a,truncatedSandboxCounter:o}),{response:i,text:c}},{maxAttempts:2,initialRetryDelay:.5});return c.markFinished(d,{type:"sandbox-fetch",transferredBundleSize:Number(s.headers.get("content-length")),bundleSize:p.length}),p}catch(l){if(l instanceof f&&r.length>0)return r;throw l}finally{s.delete(n)}}(n,a);return s.set(n,r),r})()]}}({observability:h}),P=b("/cdn/shopifycloud/checkout-web/assets/c1/assets/load.D9UyAKTL.html",r);let L="";return(e=k,r,i)=>p=>{const f=new MessageChannel,b=new MessageChannel,{port1:k}=f,_=s();let I,T="checkout-2025-07";d?T="checkout-post-purchase":"2023-04"===i?.apiVersion?T="checkout-2023-04":i?.apiVersion&&l(i.apiVersion)&&(T="checkout"),I=i?function(e,s,n){const{appName:a,appId:r,extensionId:o,extensionPoint:{target:i}}=e,c=a||`app-id-${t(r)??"unknown"}`,p=x({extension:e,appSandboxPermissions:n.appSandboxPermissions,observability:n.observability});return p.isShared?`checkout-ui-sandbox-shared-${p.cacheKey()}-${s}`:`checkout-ui-sandbox-${c}-${i}-${o}-${s}`}(i,_,{appSandboxPermissions:m,observability:h}):`post-purchase-extension-${_}`;const[M,N]=$({url:p,sandboxType:T,name:I}),W={id:_,url:p.href,channel:f,errorChannel:b,allowNetworkAccess:Boolean(r.allowNetworkAccess),webWorkerOptions:M,sandboxScriptPromise:N,extension:i,sandboxType:T};if(null==y){const t=d?"post-purchase-iframe-load":"sandbox-iframe-load";v.add(W);const s=u?.();c.markStarted(t,{type:"iframe-loader",appId:i?.appId}),y=function({iframeUrl:e,onLoad:t}){const s=document.createElement("iframe");return s.setAttribute("style","display:none;"),s.addEventListener("load",function e(){t(),s.removeEventListener("load",e)}),s.src=e,s.setAttribute("allow","local-network-access"),s}({iframeUrl:P,async onLoad(){c.markFinished(t,{type:"iframe-loader",appId:i?.appId});try{s&&(L=await s)}catch(n){return S=!0,v.clear(),e(n instanceof a?n:new a("Failed to load sandbox polyfills",{cause:n}))}S=!0;for(const t of v)A(t,y,e,L);v.clear()}}),o(y)}else S?A(W,y,e,L):v.add(W);return b.port1.addEventListener("message",t=>{const s=t.data,n=new g(s.message,s.name,s.stack);e?.(n)}),{postMessage:(...t)=>{try{k.postMessage(...t)}catch(s){if(!E(s))throw s;e(new n(s.message??"Unknown postMessage error",{cause:s}))}},addEventListener:(...e)=>k.addEventListener(...e),removeEventListener:(...e)=>k.removeEventListener(...e),terminate:()=>{v.delete(W),y&&function({id:e,channel:t,errorChannel:s},n){t.port1.close(),s.port1.close(),n.contentWindow?.postMessage({[w]:e},"*")}(W,y)}}}}async function A({channel:e,errorChannel:t,id:s,url:a,allowNetworkAccess:r,sandboxScriptPromise:o,webWorkerOptions:i,extension:p,sandboxType:l},h,u,m=""){e.port1.start(),t.port1.start();const f=await o;if(!h.contentWindow)throw new v("iframe.contentWindow is not defined");const b=d[l];p&&b&&c.markStarted(b,{type:"extension",extension:p,instanceId:null});const x=m&&"string"==typeof f&&!f.startsWith("data:")?`${m};\n${f}`:f;try{h.contentWindow.postMessage({[y]:{id:s,url:a,allowNetworkAccess:r,sandboxScript:x,webWorkerOptions:i}},"*",[e.port2,t.port2])}catch(w){if(!E(w))throw w;u(new n(w.message??"Unknown postMessage error",{cause:w}))}}function E(e){return e instanceof DOMException&&"DataCloneError"===e.name&&/out of memory/i.test(e.message)}class v extends r{constructor(){super(...arguments),this.name="IframeContentWindowError",this.unactionable=!0}}export{m as E,x as a,S as c,b as r};
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.