{ "version": 3, "sources": ["../../../node_modules/@segment/analytics-next/src/core/environment/index.ts", "../../../node_modules/@segment/analytics-next/src/lib/global-analytics-helper.ts", "../../../node_modules/@segment/analytics-next/src/lib/parse-cdn.ts", "../../../node_modules/@segment/analytics-next/src/lib/load-script.ts"], "sourcesContent": ["export function isBrowser(): boolean {\n return typeof window !== 'undefined'\n}\n\nexport function isServer(): boolean {\n return !isBrowser()\n}\n", "import { AnalyticsSnippet } from '../browser/standalone-interface'\n\n/**\n * Stores the global window analytics key\n */\nlet _globalAnalyticsKey = 'analytics'\n\n/**\n * Gets the global analytics/buffer\n * @param key name of the window property where the buffer is stored (default: analytics)\n * @returns AnalyticsSnippet\n */\nexport function getGlobalAnalytics(): AnalyticsSnippet | undefined {\n return (window as any)[_globalAnalyticsKey]\n}\n\n/**\n * Replaces the global window key for the analytics/buffer object\n * @param key key name\n */\nexport function setGlobalAnalyticsKey(key: string) {\n _globalAnalyticsKey = key\n}\n\n/**\n * Sets the global analytics object\n * @param analytics analytics snippet\n */\nexport function setGlobalAnalytics(analytics: AnalyticsSnippet): void {\n ;(window as any)[_globalAnalyticsKey] = analytics\n}\n", "import { getGlobalAnalytics } from './global-analytics-helper'\nimport { embeddedWriteKey } from './embedded-write-key'\n\nconst analyticsScriptRegex =\n /(https:\\/\\/.*)\\/analytics\\.js\\/v1\\/(?:.*?)\\/(?:platform|analytics.*)?/\nconst getCDNUrlFromScriptTag = (): string | undefined => {\n let cdn: string | undefined\n const scripts = Array.prototype.slice.call(\n document.querySelectorAll('script')\n )\n scripts.forEach((s) => {\n const src = s.getAttribute('src') ?? ''\n const result = analyticsScriptRegex.exec(src)\n\n if (result && result[1]) {\n cdn = result[1]\n }\n })\n return cdn\n}\n\nlet _globalCDN: string | undefined // set globalCDN as in-memory singleton\nconst getGlobalCDNUrl = (): string | undefined => {\n const result = _globalCDN ?? getGlobalAnalytics()?._cdn\n return result\n}\n\nexport const setGlobalCDNUrl = (cdn: string) => {\n const globalAnalytics = getGlobalAnalytics()\n if (globalAnalytics) {\n globalAnalytics._cdn = cdn\n }\n _globalCDN = cdn\n}\n\nexport const getCDN = (): string => {\n const globalCdnUrl = getGlobalCDNUrl()\n\n if (globalCdnUrl) return globalCdnUrl\n\n const cdnFromScriptTag = getCDNUrlFromScriptTag()\n\n if (cdnFromScriptTag) {\n return cdnFromScriptTag\n } else {\n // it's possible that the CDN is not found in the page because:\n // - the script is loaded through a proxy\n // - the script is removed after execution\n // in this case, we fall back to the default Segment CDN\n return `https://cdn.segment.com`\n }\n}\n\nexport const getNextIntegrationsURL = () => {\n const cdn = getCDN()\n return `${cdn}/next-integrations`\n}\n\n/**\n * Replaces the CDN URL in the script tag with the one from Analytics.js 1.0\n *\n * @returns the path to Analytics JS 1.0\n **/\nexport function getLegacyAJSPath(): string {\n const writeKey = embeddedWriteKey() ?? getGlobalAnalytics()?._writeKey\n\n const scripts = Array.prototype.slice.call(\n document.querySelectorAll('script')\n )\n let path: string | undefined = undefined\n\n for (const s of scripts) {\n const src = s.getAttribute('src') ?? ''\n const result = analyticsScriptRegex.exec(src)\n\n if (result && result[1]) {\n path = src\n break\n }\n }\n\n if (path) {\n return path.replace('analytics.min.js', 'analytics.classic.js')\n }\n\n return `https://cdn.segment.com/analytics.js/v1/${writeKey}/analytics.classic.js`\n}\n", "function findScript(src: string): HTMLScriptElement | undefined {\n const scripts = Array.prototype.slice.call(\n window.document.querySelectorAll('script')\n )\n return scripts.find((s) => s.src === src)\n}\n\n/**\n * Load a script from a URL and append it to the document.\n */\nexport function loadScript(\n src: string,\n attributes?: Record\n): Promise {\n const found = findScript(src)\n\n if (found !== undefined) {\n const status = found?.getAttribute('status')\n\n if (status === 'loaded') {\n return Promise.resolve(found)\n }\n\n if (status === 'loading') {\n return new Promise((resolve, reject) => {\n found.addEventListener('load', () => resolve(found))\n found.addEventListener('error', (err) => reject(err))\n })\n }\n }\n\n return new Promise((resolve, reject) => {\n const script = window.document.createElement('script')\n\n script.type = 'text/javascript'\n script.src = src\n script.async = true\n\n script.setAttribute('status', 'loading')\n for (const [k, v] of Object.entries(attributes ?? {})) {\n script.setAttribute(k, v)\n }\n\n script.onload = (): void => {\n script.onerror = script.onload = null\n script.setAttribute('status', 'loaded')\n resolve(script)\n }\n\n script.onerror = (): void => {\n script.onerror = script.onload = null\n script.setAttribute('status', 'error')\n reject(new Error(`Failed to load ${src}`))\n }\n\n const firstExistingScript = window.document.querySelector('script')\n if (!firstExistingScript) {\n window.document.head.appendChild(script)\n } else {\n firstExistingScript.parentElement?.insertBefore(\n script,\n firstExistingScript\n )\n }\n })\n}\n\nexport function unloadScript(src: string): Promise {\n const found = findScript(src)\n\n if (found !== undefined) {\n found.remove()\n }\n\n return Promise.resolve()\n}\n"], "mappings": "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", "names": [] }