https://www.terranovastyle.com/cdn/shopifycloud/checkout-web/assets/c1/performance-index.mu6MOGR9.js
1const A="sandbox-js-fetch",m="sandbox-js-fetch-2025-07",_="sandbox-js-fetch-2023-04",R="sandbox-js-eval",j="sandbox-js-eval-2025-07",J="sandbox-js-eval-2023-04",K="sandbox-polyfill-fetch",O={checkout:A,"checkout-2025-07":m,"checkout-2023-04":_,"checkout-post-purchase":"sandbox-js-fetch-post-purchase"},z={checkout:R,"checkout-2025-07":j,"checkout-2023-04":J},B=["extension-fetch-call"];[...new Set(Object.values(O))];[...new Set(Object.values(z))];const t={primary:"primary",primaryLight:"primary-light",primaryDark:"primary-dark",secondary:"secondary",secondaryLight:"secondary-light",secondaryDark:"secondary-dark",tertiary:"tertiary",tertiaryLight:"tertiary-light",tertiaryDark:"tertiary-dark"};function v(i,e){return`${i}-${e}`}function S(i,e){return`${i}:${e}`}function N(i){let e=[];return{add:c=>{e.push(c),e.length>i&&e.shift()},clear:()=>{e=[]},get queue(){return e}}}const q=Date.now();function C(){return typeof performance?.timeOrigin=="number"?performance.timeOrigin:q}function M(i){return B.includes(i)}const a={"api-object":{tooltip:"Duration creating the extension's API object",devtoolsColor:t.tertiaryDark,endLifecyclePhase:"apiObjectEnd"},"app-metafields-load":{tooltip:"Duration of loading the extension's app metafields",devtoolsColor:t.tertiary,endLifecyclePhase:"appMetafieldsLoadEnd"},"sandbox-iframe-load":{tooltip:"Duration loading the iframe that bootstraps all extension web workers",devtoolsColor:t.tertiaryLight,endLifecyclePhase:"sandboxIframeLoadEnd"},"post-purchase-iframe-load":{tooltip:"Duration loading the iframe that bootstraps post-purchase extension web workers",devtoolsColor:t.tertiaryLight,endLifecyclePhase:"postPurchaseIframeLoadEnd"},"sandbox-js-fetch":{tooltip:"Duration downloading Shopify sandbox JavaScript for remote-dom extensions",devtoolsColor:t.secondary,endLifecyclePhase:"sandboxJsFetchEnd"},"sandbox-js-fetch-post-purchase":{tooltip:"Duration downloading and executing sandbox JavaScript for post-purchase extensions",devtoolsColor:t.secondaryLight,endLifecyclePhase:"sandboxJsFetchPostPurchaseEnd"},"sandbox-js-fetch-2023-04":{tooltip:"Duration downloading and executing sandbox JavaScript for older extension on API version 2023-04",devtoolsColor:t.secondaryLight,endLifecyclePhase:"sandboxJsFetch2023_04End"},"sandbox-js-fetch-2025-07":{tooltip:"Duration downloading Shopify sandbox JavaScript for extensions that rely on the 2025-07 sandbox version (2024-04 < API version <= 2025-07)",devtoolsColor:t.secondaryLight,endLifecyclePhase:"sandboxJsFetch2025_07End"},"sandbox-polyfill-fetch":{tooltip:"Duration downloading the sandbox polyfill bundle",devtoolsColor:t.secondary,endLifecyclePhase:"sandboxPolyfillFetchEnd"},"sandbox-js-eval":{tooltip:"Duration standing up a web worker and evaluating Shopify sandbox JavaScript for remote-dom extensions",devtoolsColor:t.secondary,endLifecyclePhase:"sandboxJsEvalEnd"},"sandbox-js-eval-2025-07":{tooltip:"Duration standing up a web worker and evaluating Shopify sandbox JavaScript for extensions that rely on the 2025-07 sandbox version (2024-04 < API version <= 2025-07)",devtoolsColor:t.secondaryLight,endLifecyclePhase:"sandboxJsEval2025_07End"},"sandbox-js-eval-2023-04":{tooltip:"Duration standing up a web worker and evaluating Shopify sandbox JavaScript for older extensions on API version 2023-04",devtoolsColor:t.secondaryLight,endLifecyclePhase:"sandboxJsEval2023_04End"},"partner-js-fetch":{tooltip:"Duration downloading partner JavaScript for the extension",devtoolsColor:t.secondaryDark,endLifecyclePhase:"partnerJsFetchEnd"},"partner-js-eval":{tooltip:"Duration evaluating partner JavaScript for an extension",devtoolsColor:t.secondaryDark,endLifecyclePhase:"partnerJsEvalEnd"},"js-loading":{tooltip:"Composite duration of all fetching, loading, and evaluation of sandbox/partner JS prior to an extension's execution",devtoolsColor:t.secondaryDark,endLifecyclePhase:"jsLoadingEnd",includeInMetrics:!0},execution:{tooltip:"Duration of first call to the remote extension's registration callback",devtoolsColor:t.primaryDark,endLifecyclePhase:"executionEnd"},"partner-js-exec":{tooltip:"Duration rendering or running partner JavaScript within a web worker",devtoolsColor:t.primaryLight,endLifecyclePhase:"partnerJsExecEnd"},"wait-time-after-execution":{tooltip:"Time between extension execution completion and when the extension becomes visible in the UI",devtoolsColor:t.primary,endLifecyclePhase:"waitTimeAfterExecution",includeInMetrics:!0},"extension-loading":{tooltip:"Time from initial checkout load to when the extension is visible",devtoolsColor:t.primaryLight,endLifecyclePhase:"visible",includeInMetrics:!0},"loading-skeleton":{tooltip:"Time an extension's loading skeleton is visible",devtoolsColor:t.tert
1iary,endLifecyclePhase:"skeletonEnd"},"extension-fetch-call":{tooltip:"Duration of an extension fetch call",devtoolsColor:t.secondary},"extension-tts":{tooltip:"Time from the start of extension code execution until its initial render settles, including any data it waits on",devtoolsColor:t.primary,endLifecyclePhase:"timeToSettleEnd",restartsPerAttempt:!0}},T={};Object.entries(a).forEach(([i,{endLifecyclePhase:e}])=>{e&&(T[v(i,"end")]=e)});const F=200,X=U({metricQueueLimit:F});function U({metricQueueLimit:i}){let e=!0;const c=N(i),s=new Map,r=new Set;function E(o){r.forEach(n=>n(o))}function w(){E(c.queue),c.clear()}function D(o){r.size>0?E([o]):c.add(o)}function P(o,n,l){const f=v(o,l);let d=n.type;n.type==="extension"&&(d=n.instanceId??n.extension.id);const p=S(f,d);if(l==="start"&&a[o].restartsPerAttempt&&(s.delete(p),s.delete(S(v(o,"end"),d))),!s.has(p)){const y={};if("startTime"in n&&typeof n.startTime=="number"){const k=n.startTime-C();k>=0&&(y.startTime=k)}try{performance?.mark?.(p,y)}catch{}s.set(p,{initialLoad:e})}let u="duration"in n?n.duration:void 0;const b=S(v(o,"start"),d);l==="end"&&(u?L(o,n,{duration:u,end:p}):u=L(o,n,{start:b,end:p}));const h=T[f];if(!h)return;const g=s.get(b);s.delete(b);let x;if(n.type==="extension"){const y=n.timestamp?new Date(n.timestamp):new Date;x={type:"extension-metric",extension:n.extension,instanceId:n.instanceId??void 0,mark:h,timestamp:y,duration:n.ttsRenderObserved===!1?void 0:u,transferredBundleSize:n.transferredBundleSize,bundleSize:n.bundleSize,initialLoad:g?.initialLoad,ttsCompletionReason:n.ttsCompletionReason,ttsRenderObserved:n.ttsRenderObserved,ttsRequestCount:n.ttsRequestCount}}else n.type==="sandbox-fetch"?x={type:"sandbox-fetch-metric",mark:h,timestamp:new Date,duration:u,transferredBundleSize:n.transferredBundleSize,bundleSize:n.bundleSize,initialLoad:g?.initialLoad}:x={type:"iframe-loader-metric",mark:h,timestamp:new Date,duration:u,initialLoad:g?.initialLoad};D(x)}function I(o,n){const l={},f=n.startTime-C();f>=0&&(l.startTime=f),L(o,n,{start:l.startTime,duration:n.duration});const d={type:"extension-fetch-call-metric",mark:"fetch-call-end",timestamp:new Date(n.timestamp),duration:n.duration,extension:n.extension,instanceId:n.instanceId??void 0,httpStatus:n.httpStatus,httpMethod:n.httpMethod,destination:n.destination,errorType:n.errorType,origin:n.origin,requestUrl:n.requestUrl};D(d)}return{markStarted(o,n){M(o)||P(o,n,"start")},markFinished(o,n){const l=n.type==="extension-fetch";if(!(l&&!M(o))){if(l){I(o,n);return}P(o,n,"end")}},subscribe(o){return r.add(o),w(),()=>{r.delete(o)}},get initialLoad(){return e},setEndOfInitialLoad(){e=!1}}}function L(i,e,c){if(typeof performance?.measure=="function")try{const s=performance.measure(i,{detail:{devtools:$(i,e)},...c});return typeof PerformanceMeasure=="function"&&s instanceof PerformanceMeasure?s.duration:void 0}catch{return}}function $(i,e,c="track-entry"){let s=e.type;e.type==="sandbox-fetch"&&(s="iframe-loader");const r=[["Event Description",a[i].tooltip]];return e.type==="iframe-loader"&&e.appId&&r.push(["App ID",e.appId]),(e.type==="extension"||e.type==="extension-fetch")&&(s=`extension-${e.extension.id}`,r.push(["Extension ID",e.extension.id],["Extension Name",e.extension.name],["Extension API Version",e.extension.apiVersion],["App ID",e.extension.appId]),e.instanceId&&r.push(["Instance ID",e.instanceId]),e.extension.appName&&r.push(["App Name",e.extension.appName]),e.extension.extensionPoint&&r.push(["Extension Target",`${e.extension.extensionPoint.target}${e.extension.placementReference?` (${e.extension.placementReference})`:""}`])),(e.type==="sandbox-fetch"||e.type==="extension")&&(e.transferredBundleSize&&r.push(["Transferred Bundle Size",String(e.transferredBundleSize)]),e.bundleSize&&r.push(["Bundle Size",String(e.bundleSize)])),e.type==="extension-fetch"&&(e.errorType&&r.push(["Error Type",e.errorType]),e.httpStatus&&r.push(["HTTP Status",String(e.httpStatus)]),r.push(["Destination",e.destination])),e.type==="extension"&&e.ttsCompletionReason&&(r.push(["Reason",e.ttsCompletionReason],["Render Observed",String(e.ttsRenderObserved)]),e.ttsRequestCount!=null&&r.push(["Request Count",String(e.ttsRequestCount)])),c==="track-entry"?{dataType:c,color:a[i].devtoolsColor,track:s,trackGroup:"UI Extensions",tooltipText:a[i].tooltip,properties:r}:{dataType:c,color:a[i].devtoolsColor,tooltipText:a[i].tooltip,properties:r}}export{K as S,z as a,X as e,a as m,O as s};
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.