{
  "version": 3,
  "sources": ["/cdn/shop/t/66/assets/browser-env-setup-firebase.js"],
  "sourcesContent": ["// \uD83D\uDD12 BROWSER ENVIRONMENT SETUP - SECURE VERSION\n// This file contains NO secrets - only public configuration\n// Sensitive data is fetched securely from the server\n\n(function() {\n  'use strict';\n  \n  // Set up environment variables for browser (PUBLIC ONLY)\n  window.__ENV__ = {\n    // Firebase Configuration (will be populated securely from server)\n    FIREBASE_API_KEY: '', // Will be populated by server securely\n    FIREBASE_AUTH_DOMAIN: '', // Will be populated by server securely\n    FIREBASE_PROJECT_ID: 'kt-shopify-apps', // Will be populated by server securely\n    FIREBASE_STORAGE_BUCKET: '', // Will be populated by server securely\n    FIREBASE_MESSAGING_SENDER_ID: '', // Will be populated by server securely\n    FIREBASE_APP_ID: '', // Will be populated by server securely\n    FIREBASE_MEASUREMENT_ID: '',\n    \n    // Public Shopify Configuration\n    SHOPIFY_HOST: '', // Will be populated securely from server\n    \n    // Other configurations\n    NODE_ENV: 'production'\n  };\n  \n  // Function to get environment variable\n  window.getEnvVar = function(key, fallback = '') {\n    return window.__ENV__[key] || fallback;\n  };\n  \n  // Function to securely load configuration from server\n  window.loadSecureConfig = async function() {\n    try {\n      // Validate project ID before making request\n      const projectId = window.__ENV__.FIREBASE_PROJECT_ID;\n      if (!projectId) {\n        return false;\n      }\n\n      // Circuit breaker: skip fetch if it failed recently (within 10 minutes)\n      const lastFail = sessionStorage.getItem('firebaseConfigFail');\n      if (lastFail && (Date.now() - parseInt(lastFail, 10)) < 600000) {\n        return false;\n      }\n\n      const response = await fetch(`https://us-central1-${projectId}.cloudfunctions.net/getFirebaseConfig`, {\n        method: 'GET',\n        headers: {\n          'Accept': 'application/json',\n          'Content-Type': 'application/json'\n        },\n        signal: AbortSignal.timeout(5000)\n      });\n\n      if (response.ok) {\n        const config = await response.json();\n        if (config.success && config.config) {\n          Object.assign(window.__ENV__, config.config);\n          sessionStorage.removeItem('firebaseConfigFail');\n          return true;\n        } else {\n          sessionStorage.setItem('firebaseConfigFail', Date.now().toString());\n          return false;\n        }\n      } else {\n        sessionStorage.setItem('firebaseConfigFail', Date.now().toString());\n        return false;\n      }\n    } catch (error) {\n      sessionStorage.setItem('firebaseConfigFail', Date.now().toString());\n      return false;\n    }\n  };\n  \n  // Function to check if configuration is ready\n  window.isConfigReady = function() {\n    return !!(window.__ENV__.FIREBASE_API_KEY && \n              window.__ENV__.FIREBASE_AUTH_DOMAIN && \n              window.__ENV__.FIREBASE_PROJECT_ID);\n  };\n  \n  // Function to wait for configuration to be ready\n  window.waitForConfig = function() {\n    return new Promise((resolve) => {\n      if (window.isConfigReady()) {\n        resolve(window.__ENV__);\n      } else {\n        // Listen for config loaded event\n        window.addEventListener('secureConfigLoaded', () => resolve(window.__ENV__), { once: true });\n        // Safety timeout \u2014 never hang forever if event never fires\n        setTimeout(() => resolve(window.__ENV__), 5000);\n      }\n    });\n  };\n  \n  // Browser environment setup complete\n\n  // Auto-load configuration\n  // NOTE: getFirebaseConfig Cloud Function is currently returning 500.\n  // Disabled auto-fetch to eliminate console errors. Firebase features\n  // degrade gracefully. Re-enable when Cloud Function is fixed by\n  // uncommenting the loadSecureConfig() call below.\n  // window.loadSecureConfig().then(function(success) {\n  //   if (success) {\n  //     window.dispatchEvent(new Event('secureConfigLoaded'));\n  //   } else {\n  //     window.dispatchEvent(new Event('secureConfigLoaded'));\n  //   }\n  // }).catch(function() {\n  //   window.dispatchEvent(new Event('secureConfigLoaded'));\n  // });\n\n  // Skip config fetch \u2014 dispatch event immediately so initialization proceeds\n  window.dispatchEvent(new Event('secureConfigLoaded'));\n})();\n"],
  "mappings": "CAIC,UAAW,CACV,aAGA,OAAO,QAAU,CAEf,iBAAkB,GAClB,qBAAsB,GACtB,oBAAqB,kBACrB,wBAAyB,GACzB,6BAA8B,GAC9B,gBAAiB,GACjB,wBAAyB,GAGzB,aAAc,GAGd,SAAU,YACZ,EAGA,OAAO,UAAY,SAAS,IAAK,SAAW,GAAI,CAC9C,OAAO,OAAO,QAAQ,GAAG,GAAK,QAChC,EAGA,OAAO,iBAAmB,gBAAiB,CACzC,GAAI,CAEF,MAAM,UAAY,OAAO,QAAQ,oBACjC,GAAI,CAAC,UACH,MAAO,GAIT,MAAM,SAAW,eAAe,QAAQ,oBAAoB,EAC5D,GAAI,UAAa,KAAK,IAAI,EAAI,SAAS,SAAU,EAAE,EAAK,IACtD,MAAO,GAGT,MAAM,SAAW,MAAM,MAAM,uBAAuB,SAAS,wCAAyC,CACpG,OAAQ,MACR,QAAS,CACP,OAAU,mBACV,eAAgB,kBAClB,EACA,OAAQ,YAAY,QAAQ,GAAI,CAClC,CAAC,EAED,GAAI,SAAS,GAAI,CACf,MAAM,OAAS,MAAM,SAAS,KAAK,EACnC,OAAI,OAAO,SAAW,OAAO,QAC3B,OAAO,OAAO,OAAO,QAAS,OAAO,MAAM,EAC3C,eAAe,WAAW,oBAAoB,EACvC,KAEP,eAAe,QAAQ,qBAAsB,KAAK,IAAI,EAAE,SAAS,CAAC,EAC3D,GAEX,KACE,uBAAe,QAAQ,qBAAsB,KAAK,IAAI,EAAE,SAAS,CAAC,EAC3D,EAEX,MAAgB,CACd,sBAAe,QAAQ,qBAAsB,KAAK,IAAI,EAAE,SAAS,CAAC,EAC3D,EACT,CACF,EAGA,OAAO,cAAgB,UAAW,CAChC,MAAO,CAAC,EAAE,OAAO,QAAQ,kBACf,OAAO,QAAQ,sBACf,OAAO,QAAQ,oBAC3B,EAGA,OAAO,cAAgB,UAAW,CAChC,OAAO,IAAI,QAAS,SAAY,CAC1B,OAAO,cAAc,EACvB,QAAQ,OAAO,OAAO,GAGtB,OAAO,iBAAiB,qBAAsB,IAAM,QAAQ,OAAO,OAAO,EAAG,CAAE,KAAM,EAAK,CAAC,EAE3F,WAAW,IAAM,QAAQ,OAAO,OAAO,EAAG,GAAI,EAElD,CAAC,CACH,EAoBA,OAAO,cAAc,IAAI,MAAM,oBAAoB,CAAC,CACtD,GAAG",
  "names": []
}
