{
  "version": 3,
  "sources": ["/cdn/shop/t/26/assets/cw-commerce-bridge-20261023-v2.js?cw=20261023-v2"],
  "sourcesContent": ["(function(root){\n  'use strict';\n  const KEY='cw_commerce_bridge_v1';\n  const ORIGIN='https://craftedwondersart.com';\n  const ENDPOINT='https://cw-preferences.hsingtouhengyoukuan.workers.dev/commerce';\n  const BOOTSTRAP=ORIGIN+'/apps/cw-preferences/commerce/bootstrap';\n  const LEASE=1800000;\n  const MODE='live';\n  const CAP=/^c1\\.[a-f0-9]{64}\\.[0-9]{13}\\.[0-9]{13}\\.[a-f0-9]{64}$/;\n  const KEYS=['v','source','capability','epoch','grantedAt','expiresAt','endpoint','mode'];\n  function validBridge(value,now,includeExpired=false){\n    if(!value||typeof value!=='object'||Array.isArray(value)||Object.keys(value).length!==KEYS.length\n      ||!KEYS.every(k=>Object.hasOwn(value,k))||value.v!==1||value.source!=='cw_commerce_v1'\n      ||!CAP.test(value.capability)||!/^[a-f0-9]{32}$/.test(value.epoch||'')\n      ||value.endpoint!==ENDPOINT||!['qa','live'].includes(value.mode)\n      ||!Number.isSafeInteger(value.grantedAt)||!Number.isSafeInteger(value.expiresAt)\n      ||value.expiresAt-value.grantedAt!==LEASE||value.grantedAt>now\n      ||(!includeExpired&&value.expiresAt<=now))return null;\n    const parts=value.capability.split('.');\n    if(Number(parts[2])!==value.grantedAt||Number(parts[3])!==value.expiresAt)return null;\n    return Object.fromEntries(KEYS.map(k=>[k,value[k]]));\n  }\n  function createBridge(page,now=Date.now){\n    let revision=0,busy=false,retry=null,refresh=null,expiry=null,stopped=false,pendingSync=false;\n    let current=null,attempts=0;\n    function allowed(){try{return page.Shopify?.customerPrivacy?.analyticsProcessingAllowed?.()===true;}catch(_){return false;}}\n    function clear(){try{page.sessionStorage.removeItem(KEY);}catch(_){}current=null;if(expiry)page.clearTimeout(expiry);expiry=null;}\n    function read(includeExpired=false){try{return validBridge(JSON.parse(page.sessionStorage.getItem(KEY)),now(),includeExpired);}catch(_){return null;}}\n    function qaFlag(){try{const q=new URL(page.location.href).searchParams;return q.getAll('cw_qa').length===1&&q.get('cw_qa')==='1';}catch(_){return false;}}\n    async function revoke(value){\n      if(!value)return;\n      try{await page.fetch(ENDPOINT+'/revoke',{method:'POST',headers:{'Content-Type':'application/json',Authorization:'Bearer '+value.capability},credentials:'omit',keepalive:true,body:'{}'});}catch(_){}\n    }\n    function withdraw(){\n      revision++;const old=[current,read(true)].filter(Boolean);clear();\n      if(retry)page.clearTimeout(retry);retry=null;\n      if(refresh)page.clearInterval(refresh);refresh=null;\n      for(const value of new Map(old.map(v=>[v.capability,v])).values())void revoke(value);\n    }\n    function schedule(){\n      if(!retry&&attempts<4&&allowed()&&!stopped)retry=page.setTimeout(()=>{retry=null;void update();},1000);\n    }\n    async function update(){\n      if(stopped)return false;\n      if(!allowed()){withdraw();return false;}\n      if(busy)return false;\n      if(MODE==='qa'&&!qaFlag()&&read()?.mode!=='qa')return false;\n      busy=true;attempts++;\n      const generation=revision,previous=read();\n      try{\n        if(page.cwAnalytics?.measurementId!=='G-7CW02SR4D7'||typeof page.cwAnalytics?.commerceContext!=='function'){schedule();return false;}\n        const context=await page.cwAnalytics.commerceContext();\n        if(stopped||generation!==revision||!allowed())return false;\n        if(!context){schedule();return false;}\n        const qa=MODE==='qa';\n        const response=await page.fetch(BOOTSTRAP,{method:'POST',credentials:'same-origin',headers:{'Content-Type':'application/json'},body:JSON.stringify({qa,previousCapability:previous?.capability||null,context})});\n        if(!response.ok){if(response.status>=500||response.status===429)schedule();return false;}\n        const value=validBridge(await response.json(),now());\n        if(!value)return false;\n        if(value.mode!==MODE||stopped||generation!==revision||!allowed()){void revoke(value);return false;}\n        try{page.sessionStorage.setItem(KEY,JSON.stringify(value));current=value;}catch(_){void revoke(value);clear();return false;}\n        if(!allowed()||generation!==revision){withdraw();return false;}\n        if(expiry)page.clearTimeout(expiry);\n        expiry=page.setTimeout(()=>{\n          // A restored page may hold A while this same tab now stores B.\n          const stored=read(true);\n          if(stored?.capability===value.capability){try{page.sessionStorage.removeItem(KEY);}catch(_){}}\n          if(current?.capability===value.capability)current=null;\n          expiry=null;void revoke(value);attempts=0;if(allowed())void update();\n        },Math.max(1,value.expiresAt-now()));\n        attempts=0;\n        return true;\n      }catch(_){schedule();return false;}\n      finally{busy=false;if(pendingSync){pendingSync=false;attempts=0;schedule();}}\n    }\n    function sync(){\n      if(!allowed()){withdraw();return;}\n      attempts=0;if(busy)pendingSync=true;else void update();\n      if(!refresh&&!stopped)refresh=page.setInterval(()=>{if(page.document.visibilityState==='visible')void update();},60000);\n    }\n    function stop(){stopped=true;withdraw();}\n    function init(){\n      if(page.location.origin!==ORIGIN)return;\n      page.document.addEventListener('visitorConsentCollected',sync);\n      page.document.addEventListener('cwCustomerPrivacyReady',sync);\n      page.addEventListener('pageshow',sync);\n      sync();\n    }\n    return {init,sync,update,stop,state:()=>({ready:!!read(),allowed:allowed(),busy,stopped})};\n  }\n  if(typeof module!=='undefined'&&module.exports)module.exports={KEY,ENDPOINT,BOOTSTRAP,validBridge,createBridge};\n  if(!root.document||root.location?.origin!==ORIGIN||root.CwCommerceBridge)return;\n  const bridge=createBridge(root);root.CwCommerceBridge=Object.freeze(bridge);bridge.init();\n})(typeof window!=='undefined'?window:globalThis);\n"],
  "mappings": "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",
  "names": []
}
