stormcloud-video-player 0.8.62 → 0.8.63
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/stormcloud-vp.min.js +1 -1
- package/lib/StormcloudPlayer.cjs +21 -23
- package/lib/StormcloudPlayer.cjs.map +1 -1
- package/lib/index.cjs +21 -23
- package/lib/index.cjs.map +1 -1
- package/lib/index.js +21 -23
- package/lib/index.js.map +1 -1
- package/lib/player/AdConfigManager.cjs +21 -23
- package/lib/player/AdConfigManager.cjs.map +1 -1
- package/lib/player/AdConfigManager.d.cts +1 -1
- package/lib/player/StormcloudVideoPlayer.cjs +21 -23
- package/lib/player/StormcloudVideoPlayer.cjs.map +1 -1
- package/lib/players/HlsPlayer.cjs +21 -23
- package/lib/players/HlsPlayer.cjs.map +1 -1
- package/lib/players/index.cjs +21 -23
- package/lib/players/index.cjs.map +1 -1
- package/lib/ui/StormcloudVideoPlayer.cjs +21 -23
- package/lib/ui/StormcloudVideoPlayer.cjs.map +1 -1
- package/lib/utils/ctvVastSignals.cjs +1 -21
- package/lib/utils/ctvVastSignals.cjs.map +1 -1
- package/lib/utils/vastEnvironmentSignals.cjs +1 -21
- package/lib/utils/vastEnvironmentSignals.cjs.map +1 -1
- package/lib/utils/vastMacros.cjs +17 -0
- package/lib/utils/vastMacros.cjs.map +1 -1
- package/lib/utils/vastMacros.d.cts +2 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["d:\\project\\stormcloud-vp\\lib\\player\\AdConfigManager.cjs"],"names":["__defProp","Object","defineProperty","__getOwnPropDesc","getOwnPropertyDescriptor","__getOwnPropNames","getOwnPropertyNames","__hasOwnProp","prototype","hasOwnProperty","__export","target","all","name","get","enumerable","__copyProps","to","from","except","desc","key","call","__toCommonJS","mod","value","AdConfigManager_exports","AdConfigManager","module","exports","CTV_SESSION_STORAGE_KEY","WEB_SESSION_STORAGE_KEY","inMemoryWebSessionId","PLAYER_ID_STORAGE_KEY","DEVICE_ID_STORAGE_KEYS","ANDROID_ID_TYPES","Set","resolveVastEnvironmentSignals","isCtv","platformLat","bridgeSignals","readNativeBridgeSignals","platformDevice","readPlatformNativeDeviceId","realDeviceId","deviceId","readStoredDeviceId","deviceIdType","readStoredString","inferDeviceIdType","limitAdTracking","readStoredLimitAdTracking","dpid","getOrCreateStoredUuid","deviceTypeHint","resolveDeviceTypeHint","sessionId","getOrCreateCtvSessionId","webSessionId","getOrCreateWebSessionId","DEVICE_TYPE_HINT","FEATURE_PHONE","SMARTPHONE","DESKTOP","TABLET","CONNECTED_TV","GAME_CONSOLE","SET_TOP_BOX","DEVICE_TYPE_HINT_ALIASES","featurephone","smartphone","mobile","phone","desktop","pc","tablet","ctv","tv","connectedtv","smarttv","console","gameconsole","stb","settopbox","SET_TOP_BOX_UA","GAME_CONSOLE_UA","CONNECTED_TV_UA","FEATURE_PHONE_UA","override","readDeviceTypeHintOverride","inferDeviceTypeHint","fallback","navigator","ua","userAgent","maxTouchPoints","test","window","keys","fromGlobal","normalizeDeviceTypeHint","__STORMCLOUD_DTH__","getNativeBridgeSources","source","normalized","safeCall","Number","isInteger","trimmed","trim","parseInt","toLowerCase","replace","fn","thisArg","isEquivalentDeviceIdType","tagType","runtimeType","tag","runtime","has","resolveNativeDeviceId","includeStored","isMacroPlaceholder","isZeroedAdId","storageKey","existing","readPersistentId","writePersistentId","id","createUuid","sessionStorage","getItem","setItem","readCookie","localStorage","writeCookie","PERSISTENT_ID_COOKIE_MAX_AGE","document","prefix","encodeURIComponent","parts","cookie","split","part","entry","startsWith","decodeURIComponent","slice","length","bytes","crypto","randomUUID","Uint8Array","getRandomValues","seed","Date","now","Math","floor","performanceNow","i","random","hex","toString","padStart","performance","adinfo","webapis","tifa","getTIFA","lat","isLATEnabled","webOSDev","lgudid","LGUDID","roku","Roku","rida","getPublisherUniqueId","ZEROED_AD_ID_PATTERNS","t","contentUrl","readBridgeValue","appId","appName","readBridgeBoolean","__STORMCLOUD_CTV_AD_INFO__","__STORMCLOUD_CTV__","stormcloudCtv","AiryTV","Android","webOS","tizen","amazon","filter","Boolean","result","normalizeBoolean","UNEXPANDED_MACRO_PATTERN","INVALID_VAST_PARAM_KEY","EXAMPLE_COM_URL","CTV_UNSUPPORTED_PARAMS","INLINE_DEVICE_MACRO_REPLACEMENTS","pattern","getValue","ctx","correlator","isMacroPlaceholder2","generateCorrelator","buf","Uint32Array","String","MAX_SAFE_INTEGER","expandInlineMacroPlaceholders","baseUrl","url","applyDeviceIdentityParams","params","runtimeId","tagRdid","tagLat","latValue","set","delete","tagRdidValid","tagTypeValid","removeBrokenAppNameOrphans","toDelete","forEach","_value","push","includes","suffix","normalizeVastTagUrl","raw","URL","anValue","searchParams","orphanFragments","reconstructed","join","_match","val","applyVastMacros","expandedUrl","replaceCorrelatorFallback","streamCorrelator","pod","podMinDurationMs","max","round","podMaxDurationMs","podMaxAds","existingUrl","pageUrl","adWillPlayMuted","adWillAutoPlay","consent","gdpr","gdprConsent","usPrivacy","adTest","programTitle","channelName","staleKeys","correlatorRegex","sep","PRIVATE_HOST_PATTERNS","isLocalDevHost","hostname","host","endsWith","some","toDevSafeUrl","rawUrl","protocol","cleanPath","pathname","DEFAULT_TRACKING_INGEST_CONFIG","enabled","trackingIngestConfig","isTrackingIngestEnabled","normalizeIngestBaseUrl","buildTrackingIngestUrl","channel","base","ingestPlayerTracking","licenseKey","body","response","error","fetch","method","headers","Authorization","JSON","stringify","ok","warn","status","cachedBrowserId","buildAnalyticsContext","config","context","debugAdTiming","isLiveStream","inputStreamType","getClientInfo","screen","platform","vendor","memory","deviceMemory","hardwareConcurrency","screenInfo","width","height","availWidth","availHeight","orientation","type","pixelDepth","deviceType","brand","os","model","isSmartTV","isAndroid","isWebView","isWebApp","webosMatch","match","tizenMatch","tvMatch","androidModelMatch","outerHeight","outerWidth","matchMedia","matches","standalone","angle","substring","domain","location","origin","path","language","languages","cookieEnabled","doNotTrack","referrer","visibilityState","sha256Hex","input","encodedData","utf8","buffer","hashBuffer","hash","char","fallbackHash","timestamp","subtle","digest","TextEncoder","encode","unescape","charCodeAt","Array","map","b","abs","padEnd","resolvePlayerIdentitySeed","clientInfo","nativeDeviceId","persistedId","getBrowserID","canPublish","buildPlayerMetricEvent","flags","playerId","captureAt","log","toISOString","player_id","device_type","ad_loaded","adLoaded","ad_detect","adDetect","capture_at","input_stream_type","sendInitialTracking","metricEvent","events","sendHeartbeat","heartbeatData","video","vmapBreaks","consumedVmapBreakIds","viewCorrelator","consentSignals","podCounter","podAssignedByPrefetch","lastHeartbeatTime","defaultPodMaxAds","defaultPodMaxDurationMs","debug","isVmapEnabled","isVmap","vmapUrl","fetchAdConfiguration","data","vastMode","vastEndpoint","apiUrl","imaPayload","decodedPayload","numberAds","fetchAndParseVmap","apiVastTagUrl","vastTagUrl","json","ima","payload","options","vast","cue_tones","number_ads","apiNumberAds","vmapXml","Error","text","parseVmapToBreaks","clear","DOMParser","doc","parseFromString","querySelector","VMAP_NS","adBreakNodes","getElementsByTagNameNS","querySelectorAll","getElementsByTagName","el","localName","parsed","node","index","timeOffsetRaw","getAttribute","startTimeMs","parseVmapTimeOffsetToMs","adTagNode","adTagUrl","textContent","breakId","sort","a","aStart","bStart","timeOffset","hms","hh","mm","ss","ms","hours","minutes","seconds","millis","percent","ratio","durationSec","duration","isFinite","getAdBreakKey","adBreak","resolveBreakStartMs","findCurrentOrNextBreak","nowMs","schedule","candidate","tol","driftToleranceMs","breakStartMs","findBreakForTime","durationMs","end","selectVastTagsForBreak","s","beginNewAdPod","resolvePodParams","breakDurationMs","maxDurationMs","maxAds","minDurationMs","podExactDuration","getPalDescriptionUrl","generatePodVastUrl","podParams","adPlayer","palNonce","inAdBreak","getOriginalMutedState","muted","envSignals","ctvAdRequest","urlWithMacros","href","autoplay","storageAllowed","finalUrl","injectNonce","initializeTracking","then","heartbeatInterval","setInterval","sendHeartbeatIfNeeded","catch","destroyTracking","clearInterval"],"mappings":"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","sourcesContent":["\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/player/AdConfigManager.ts\nvar AdConfigManager_exports = {};\n__export(AdConfigManager_exports, {\n AdConfigManager: () => AdConfigManager\n});\nmodule.exports = __toCommonJS(AdConfigManager_exports);\n\n// src/utils/vastEnvironmentSignals.ts\nvar CTV_SESSION_STORAGE_KEY = \"stormcloud.ctv.sid\";\nvar WEB_SESSION_STORAGE_KEY = \"stormcloud.web.sid\";\nvar inMemoryWebSessionId;\nvar PLAYER_ID_STORAGE_KEY = \"stormcloud.player.id\";\nvar DEVICE_ID_STORAGE_KEYS = [\n \"rdid\",\n \"ifa\",\n \"advertisingId\",\n \"advertising_id\",\n \"deviceAdvertisingId\",\n \"aaid\",\n \"adid\",\n \"rida\",\n \"tifa\",\n \"lgudid\"\n];\nvar ANDROID_ID_TYPES = /* @__PURE__ */ new Set([\"aaid\", \"adid\"]);\nfunction resolveVastEnvironmentSignals(isCtv) {\n const bridgeSignals = readNativeBridgeSignals();\n const platformDevice = readPlatformNativeDeviceId();\n const realDeviceId = bridgeSignals.deviceId || (isCtv ? readStoredDeviceId() : void 0) || platformDevice.deviceId;\n let deviceId = realDeviceId;\n let deviceIdType = bridgeSignals.deviceIdType || readStoredString(\"deviceIdType\") || readStoredString(\"idtype\") || platformDevice.deviceIdType || inferDeviceIdType();\n const platformLat = bridgeSignals.deviceId ? bridgeSignals.limitAdTracking : platformDevice.limitAdTracking;\n let limitAdTracking = deviceId != null ? platformLat ?? readStoredLimitAdTracking() ?? false : void 0;\n if (!deviceId && isCtv) {\n const dpid = getOrCreateStoredUuid(PLAYER_ID_STORAGE_KEY);\n if (dpid) {\n deviceId = dpid;\n deviceIdType = \"dpid\";\n limitAdTracking = platformLat ?? readStoredLimitAdTracking() ?? false;\n }\n }\n const deviceTypeHint = resolveDeviceTypeHint(isCtv);\n if (isCtv) {\n return {\n isCtv: true,\n sessionId: getOrCreateCtvSessionId(),\n ...deviceId ? { deviceId } : {},\n ...deviceId && deviceIdType ? { deviceIdType } : {},\n ...deviceId && limitAdTracking != null ? { limitAdTracking } : {},\n deviceTypeHint\n };\n }\n const webSessionId = getOrCreateWebSessionId();\n return {\n isCtv: false,\n ...webSessionId ? { sessionId: webSessionId } : {},\n ...deviceId ? { deviceId } : {},\n ...deviceId && deviceIdType ? { deviceIdType } : {},\n ...deviceId && limitAdTracking != null ? { limitAdTracking } : {},\n deviceTypeHint\n };\n}\nvar DEVICE_TYPE_HINT = {\n FEATURE_PHONE: 1,\n SMARTPHONE: 2,\n DESKTOP: 3,\n TABLET: 4,\n CONNECTED_TV: 5,\n GAME_CONSOLE: 6,\n SET_TOP_BOX: 7\n};\nvar DEVICE_TYPE_HINT_ALIASES = {\n featurephone: DEVICE_TYPE_HINT.FEATURE_PHONE,\n smartphone: DEVICE_TYPE_HINT.SMARTPHONE,\n mobile: DEVICE_TYPE_HINT.SMARTPHONE,\n phone: DEVICE_TYPE_HINT.SMARTPHONE,\n desktop: DEVICE_TYPE_HINT.DESKTOP,\n pc: DEVICE_TYPE_HINT.DESKTOP,\n tablet: DEVICE_TYPE_HINT.TABLET,\n ctv: DEVICE_TYPE_HINT.CONNECTED_TV,\n tv: DEVICE_TYPE_HINT.CONNECTED_TV,\n connectedtv: DEVICE_TYPE_HINT.CONNECTED_TV,\n smarttv: DEVICE_TYPE_HINT.CONNECTED_TV,\n console: DEVICE_TYPE_HINT.GAME_CONSOLE,\n gameconsole: DEVICE_TYPE_HINT.GAME_CONSOLE,\n stb: DEVICE_TYPE_HINT.SET_TOP_BOX,\n settopbox: DEVICE_TYPE_HINT.SET_TOP_BOX\n};\nvar SET_TOP_BOX_UA = /LGSTB|\\bSTB\\b|STB\\d|Set-?Top|SetTopBox|TV ?Box|Kaon|Humax|Arris|Technicolor|Sagemcom|Infomir|MAG\\d{3}|KreaTV|Amino|Formuler|Dune ?HD|TiVo|MiBOX|Mi Box|SHIELD Android TV|\\bAFT[A-Z]|Roku|AppleTV|Apple TV|CrKey/i;\nvar GAME_CONSOLE_UA = /PlayStation|Xbox|Nintendo/i;\nvar CONNECTED_TV_UA = /Web0S|webOS|Tizen|SMART-TV|SmartTV|NetCast|BRAVIA|HbbTV|VIDAA|Hisense|Philips|Viera|AQUOS|Android TV|Google TV|\\bTV\\b/i;\nvar FEATURE_PHONE_UA = /KAIOS|MIDP|J2ME|Series40|Opera Mini/i;\nfunction resolveDeviceTypeHint(isCtv) {\n const override = readDeviceTypeHintOverride(isCtv);\n if (override != null) return override;\n return inferDeviceTypeHint(isCtv);\n}\nfunction inferDeviceTypeHint(isCtv) {\n const fallback = isCtv ? DEVICE_TYPE_HINT.CONNECTED_TV : DEVICE_TYPE_HINT.DESKTOP;\n if (typeof navigator === \"undefined\") return fallback;\n const ua = navigator.userAgent || \"\";\n const maxTouchPoints = navigator.maxTouchPoints || 0;\n if (SET_TOP_BOX_UA.test(ua)) return DEVICE_TYPE_HINT.SET_TOP_BOX;\n if (GAME_CONSOLE_UA.test(ua)) return DEVICE_TYPE_HINT.GAME_CONSOLE;\n if (CONNECTED_TV_UA.test(ua) && !/Mobile/i.test(ua)) {\n return DEVICE_TYPE_HINT.CONNECTED_TV;\n }\n if (FEATURE_PHONE_UA.test(ua)) return DEVICE_TYPE_HINT.FEATURE_PHONE;\n if (/iPad/i.test(ua) || /Macintosh/i.test(ua) && maxTouchPoints > 1) {\n return DEVICE_TYPE_HINT.TABLET;\n }\n if (/iPhone|iPod/i.test(ua)) return DEVICE_TYPE_HINT.SMARTPHONE;\n if (/Android/i.test(ua)) {\n if (/Mobile/i.test(ua)) return DEVICE_TYPE_HINT.SMARTPHONE;\n if (maxTouchPoints === 0) return DEVICE_TYPE_HINT.SET_TOP_BOX;\n return DEVICE_TYPE_HINT.TABLET;\n }\n if (/Mobile|Windows Phone|BlackBerry/i.test(ua)) return DEVICE_TYPE_HINT.SMARTPHONE;\n return fallback;\n}\nfunction readDeviceTypeHintOverride(isCtv) {\n if (typeof window === \"undefined\") return void 0;\n const keys = [\"dth\", \"deviceTypeHint\"];\n const fromGlobal = normalizeDeviceTypeHint(window.__STORMCLOUD_DTH__);\n if (fromGlobal != null) return fromGlobal;\n for (const source of getNativeBridgeSources()) {\n for (const key of keys) {\n const value = source?.[key];\n const normalized = normalizeDeviceTypeHint(\n typeof value === \"function\" ? safeCall(value, source) : value\n );\n if (normalized != null) return normalized;\n }\n }\n if (!isCtv) return void 0;\n for (const key of [\"stormcloud.dth\", \"dth\"]) {\n const normalized = normalizeDeviceTypeHint(readStoredString(key));\n if (normalized != null) return normalized;\n }\n return void 0;\n}\nfunction normalizeDeviceTypeHint(value) {\n if (typeof value === \"number\") {\n return Number.isInteger(value) && value >= 1 && value <= 7 ? value : void 0;\n }\n if (typeof value !== \"string\") return void 0;\n const trimmed = value.trim();\n if (/^[1-7]$/.test(trimmed)) return parseInt(trimmed, 10);\n return DEVICE_TYPE_HINT_ALIASES[trimmed.toLowerCase().replace(/[\\s_-]/g, \"\")];\n}\nfunction safeCall(fn, thisArg) {\n try {\n return fn.call(thisArg);\n } catch {\n return void 0;\n }\n}\nfunction inferDeviceIdType() {\n if (typeof navigator === \"undefined\") {\n return void 0;\n }\n const ua = navigator.userAgent;\n if (/Roku/i.test(ua)) return \"rida\";\n if (/Tizen|Samsung/i.test(ua)) return \"tifa\";\n if (/AppleTV|Apple TV/i.test(ua)) return \"tvOS\";\n if (/AFT|Fire TV|Amazon/i.test(ua)) return \"afai\";\n if (/Web0S|webOS|LG Browser|LGSTB|LGE/i.test(ua)) return \"lgudid\";\n if (/Android|Google TV/i.test(ua)) return \"aaid\";\n if (/iPhone|iPad|iPod/i.test(ua)) return \"idfa\";\n return void 0;\n}\nfunction isEquivalentDeviceIdType(tagType, runtimeType) {\n if (!tagType || !runtimeType) return false;\n const tag = tagType.toLowerCase();\n const runtime = runtimeType.toLowerCase();\n if (tag === runtime) return true;\n return ANDROID_ID_TYPES.has(tag) && ANDROID_ID_TYPES.has(runtime);\n}\nfunction resolveNativeDeviceId(includeStored = true) {\n const bridgeSignals = readNativeBridgeSignals();\n const platformDevice = readPlatformNativeDeviceId();\n const deviceId = bridgeSignals.deviceId || (includeStored ? readStoredDeviceId() : void 0) || platformDevice.deviceId;\n if (!deviceId || isMacroPlaceholder(deviceId) || isZeroedAdId(deviceId)) {\n return void 0;\n }\n return deviceId;\n}\nfunction getOrCreateStoredUuid(storageKey) {\n if (typeof window === \"undefined\") {\n return void 0;\n }\n const existing = readPersistentId(storageKey);\n if (existing) {\n writePersistentId(storageKey, existing);\n return existing;\n }\n const id = createUuid();\n writePersistentId(storageKey, id);\n return id;\n}\nfunction getOrCreateCtvSessionId() {\n const existing = readPersistentId(CTV_SESSION_STORAGE_KEY);\n if (existing) {\n writePersistentId(CTV_SESSION_STORAGE_KEY, existing);\n return existing;\n }\n const sessionId = createUuid();\n writePersistentId(CTV_SESSION_STORAGE_KEY, sessionId);\n return sessionId;\n}\nfunction getOrCreateWebSessionId() {\n if (typeof window === \"undefined\") return void 0;\n try {\n const existing = window.sessionStorage?.getItem(WEB_SESSION_STORAGE_KEY);\n if (existing && !isMacroPlaceholder(existing)) return existing;\n } catch {\n }\n const sessionId = inMemoryWebSessionId || createUuid();\n inMemoryWebSessionId = sessionId;\n try {\n window.sessionStorage?.setItem(WEB_SESSION_STORAGE_KEY, sessionId);\n } catch {\n }\n return sessionId;\n}\nfunction readPersistentId(storageKey) {\n return readStoredString(storageKey) || readCookie(storageKey);\n}\nfunction writePersistentId(storageKey, value) {\n try {\n window.localStorage?.setItem(storageKey, value);\n } catch {\n }\n writeCookie(storageKey, value);\n}\nvar PERSISTENT_ID_COOKIE_MAX_AGE = 60 * 60 * 24 * 365 * 5;\nfunction readCookie(name) {\n if (typeof document === \"undefined\") {\n return void 0;\n }\n try {\n const prefix = encodeURIComponent(name) + \"=\";\n const parts = document.cookie ? document.cookie.split(\";\") : [];\n for (const part of parts) {\n const entry = part.trim();\n if (entry.startsWith(prefix)) {\n return decodeURIComponent(entry.slice(prefix.length)) || void 0;\n }\n }\n } catch {\n }\n return void 0;\n}\nfunction writeCookie(name, value) {\n if (typeof document === \"undefined\") {\n return;\n }\n try {\n document.cookie = encodeURIComponent(name) + \"=\" + encodeURIComponent(value) + \";path=/;max-age=\" + PERSISTENT_ID_COOKIE_MAX_AGE + \";SameSite=Lax\";\n } catch {\n }\n}\nfunction createUuid() {\n if (typeof crypto !== \"undefined\" && typeof crypto.randomUUID === \"function\") {\n return crypto.randomUUID();\n }\n const bytes = new Uint8Array(16);\n if (typeof crypto !== \"undefined\" && typeof crypto.getRandomValues === \"function\") {\n crypto.getRandomValues(bytes);\n } else {\n let seed = Date.now() ^ Math.floor(performanceNow() * 1e3);\n for (let i = 0; i < 16; i++) {\n seed = seed * 1103515245 + 12345 & 2147483647;\n bytes[i] = (seed ^ Math.floor(Math.random() * 256)) & 255;\n }\n }\n bytes[6] = (bytes[6] ?? 0) & 15 | 64;\n bytes[8] = (bytes[8] ?? 0) & 63 | 128;\n let hex = \"\";\n for (let i = 0; i < 16; i++) {\n hex += (bytes[i] ?? 0).toString(16).padStart(2, \"0\");\n }\n return hex.slice(0, 8) + \"-\" + hex.slice(8, 12) + \"-\" + hex.slice(12, 16) + \"-\" + hex.slice(16, 20) + \"-\" + hex.slice(20, 32);\n}\nfunction performanceNow() {\n try {\n if (typeof performance !== \"undefined\" && typeof performance.now === \"function\") {\n return performance.now();\n }\n } catch {\n }\n return 0;\n}\nfunction readPlatformNativeDeviceId() {\n if (typeof window === \"undefined\") return {};\n try {\n const adinfo = window.webapis?.adinfo;\n if (adinfo) {\n const tifa = typeof adinfo.getTIFA === \"function\" ? adinfo.getTIFA() : adinfo.tifa;\n if (typeof tifa === \"string\" && tifa && !isMacroPlaceholder(tifa)) {\n const lat = typeof adinfo.isLATEnabled === \"function\" ? adinfo.isLATEnabled() : void 0;\n return {\n deviceId: tifa,\n deviceIdType: \"tifa\",\n ...typeof lat === \"boolean\" ? { limitAdTracking: lat } : {}\n };\n }\n }\n } catch {\n }\n try {\n const webOSDev = window.webOSDev;\n if (webOSDev) {\n const lgudid = typeof webOSDev.LGUDID === \"function\" ? webOSDev.LGUDID() : webOSDev.lgudid ?? webOSDev.LGUDID;\n if (typeof lgudid === \"string\" && lgudid) {\n if (isZeroedAdId(lgudid)) {\n return { deviceIdType: \"lgudid\", limitAdTracking: true };\n }\n if (!isMacroPlaceholder(lgudid)) {\n return { deviceId: lgudid, deviceIdType: \"lgudid\", limitAdTracking: false };\n }\n }\n }\n } catch {\n }\n try {\n const roku = window.Roku;\n if (roku) {\n const rida = typeof roku.getPublisherUniqueId === \"function\" ? roku.getPublisherUniqueId() : roku.rida;\n if (typeof rida === \"string\" && rida && !isMacroPlaceholder(rida)) {\n return { deviceId: rida, deviceIdType: \"rida\", limitAdTracking: false };\n }\n }\n } catch {\n }\n return {};\n}\nvar ZEROED_AD_ID_PATTERNS = /* @__PURE__ */ new Set([\n \"38400000-8cf0-11bd-b23e-10b96e40000d\",\n \"00000000-0000-0000-0000-000000000000\"\n]);\nfunction isMacroPlaceholder(value) {\n const t = value.trim();\n return !t || /^(\\[[^\\]]*\\]|\\{[^}]*\\}|%%[^%]*%%)$/.test(t) || /^(unknown|null|undefined|none|n\\/a|\\$\\{[^}]+\\})$/i.test(t) || ZEROED_AD_ID_PATTERNS.has(t.toLowerCase());\n}\nfunction isZeroedAdId(value) {\n return ZEROED_AD_ID_PATTERNS.has(value.trim().toLowerCase());\n}\nfunction readNativeBridgeSignals() {\n for (const source of getNativeBridgeSources()) {\n const contentUrl = readBridgeValue(source, [\"contentUrl\", \"url\", \"videoUrl\", \"canonicalUrl\"]) || void 0;\n const appId = readBridgeValue(source, [\"appId\", \"msid\", \"applicationId\", \"packageName\"]) || void 0;\n const appName = readBridgeValue(source, [\"appName\", \"an\", \"applicationName\"]) || void 0;\n const deviceId = readBridgeValue(source, [\n \"rdid\",\n \"ifa\",\n \"advertisingId\",\n \"adId\",\n \"deviceId\",\n \"lgudid\",\n \"LGUDID\",\n \"tifa\",\n \"rida\",\n \"afai\",\n \"aaid\"\n ]) || void 0;\n if (!contentUrl && !deviceId && !appId && !appName) continue;\n const deviceIdType = readBridgeValue(source, [\n \"idtype\",\n \"deviceIdType\",\n \"advertisingIdType\",\n \"idType\"\n ]) || inferDeviceIdType();\n const limitAdTracking = readBridgeBoolean(source, [\n \"is_lat\",\n \"limitAdTracking\",\n \"limitedAdTracking\",\n \"lat\"\n ]);\n return {\n ...contentUrl ? { contentUrl } : {},\n ...appId ? { appId } : {},\n ...appName ? { appName } : {},\n ...deviceId ? { deviceId } : {},\n ...deviceId && deviceIdType ? { deviceIdType } : {},\n ...deviceId && limitAdTracking != null ? { limitAdTracking } : {}\n };\n }\n return {};\n}\nfunction getNativeBridgeSources() {\n if (typeof window === \"undefined\") {\n return [];\n }\n return [\n window.__STORMCLOUD_CTV_AD_INFO__,\n window.__STORMCLOUD_CTV__,\n window.stormcloudCtv,\n window.AiryTV,\n window.Android,\n window.webOS,\n window.tizen,\n window.amazon\n ].filter(Boolean);\n}\nfunction readBridgeValue(source, keys) {\n for (const key of keys) {\n const value = source?.[key];\n if (typeof value === \"string\" && value) {\n return value;\n }\n if (typeof value === \"function\") {\n try {\n const result = value.call(source);\n if (typeof result === \"string\" && result) {\n return result;\n }\n } catch {\n }\n }\n }\n return void 0;\n}\nfunction readBridgeBoolean(source, keys) {\n for (const key of keys) {\n const value = source?.[key];\n const normalized = normalizeBoolean(value);\n if (normalized != null) {\n return normalized;\n }\n if (typeof value === \"function\") {\n try {\n const result = normalizeBoolean(value.call(source));\n if (result != null) {\n return result;\n }\n } catch {\n }\n }\n }\n return void 0;\n}\nfunction readStoredDeviceId() {\n for (const key of DEVICE_ID_STORAGE_KEYS) {\n const value = readStoredString(key);\n if (value) {\n return value;\n }\n }\n return void 0;\n}\nfunction readStoredString(key) {\n if (typeof window === \"undefined\") {\n return void 0;\n }\n try {\n const value = window.localStorage?.getItem(key);\n return value || void 0;\n } catch {\n return void 0;\n }\n}\nfunction readStoredLimitAdTracking() {\n return normalizeBoolean(\n readStoredString(\"limitAdTracking\") || readStoredString(\"limitedAdTracking\") || readStoredString(\"is_lat\")\n );\n}\nfunction normalizeBoolean(value) {\n if (typeof value === \"boolean\") {\n return value;\n }\n if (typeof value === \"number\") {\n return value === 1;\n }\n if (typeof value === \"string\") {\n const normalized = value.toLowerCase();\n if (normalized === \"1\" || normalized === \"true\" || normalized === \"yes\") {\n return true;\n }\n if (normalized === \"0\" || normalized === \"false\" || normalized === \"no\") {\n return false;\n }\n }\n return void 0;\n}\n\n// src/utils/vastMacros.ts\nvar UNEXPANDED_MACRO_PATTERN = /^(\\[[^\\]]*\\]|\\{[^}]*\\}|%%[^%]*%%)$/;\nvar INVALID_VAST_PARAM_KEY = /^\\s|\\s$/;\nvar EXAMPLE_COM_URL = /example\\.com/i;\nvar CTV_UNSUPPORTED_PARAMS = [\n \"tfcd\",\n \"npa\",\n \"min_ad_duration\",\n \"max_ad_duration\",\n \"unviewed_position_start\",\n \"impl\",\n \"vad_type\",\n \"gdpr\",\n \"gdpr_consent\",\n \"us_privacy\"\n];\nvar INLINE_DEVICE_MACRO_REPLACEMENTS = [\n { pattern: /\\[RDID\\]/gi, getValue: (ctx) => ctx.deviceId },\n { pattern: /\\[IFA\\]/gi, getValue: (ctx) => ctx.deviceId },\n { pattern: /\\[ADVERTISING[_-]?ID(?:ENTIFIER)?\\]/gi, getValue: (ctx) => ctx.deviceId },\n { pattern: /\\[DEVICE[_-]?ID\\]/gi, getValue: (ctx) => ctx.deviceId },\n { pattern: /\\[IDTYPE\\]/gi, getValue: (ctx) => ctx.deviceIdType },\n { pattern: /\\{rdid\\}/gi, getValue: (ctx) => ctx.deviceId },\n { pattern: /\\{device[_-]?id\\}/gi, getValue: (ctx) => ctx.deviceId },\n { pattern: /\\{idtype\\}/gi, getValue: (ctx) => ctx.deviceIdType },\n { pattern: /%%ADVERTISING_IDENTIFIER_PLAIN%%/gi, getValue: (ctx) => ctx.deviceId },\n { pattern: /%%ADVERTISING_ID_OPT_OUT%%/gi, getValue: (ctx) => ctx.limitAdTracking != null ? ctx.limitAdTracking ? \"1\" : \"0\" : void 0 },\n { pattern: /%%ADVERTISING_ID_TYPE%%/gi, getValue: (ctx) => ctx.deviceIdType },\n { pattern: /%%ADVERTISING_ID%%/gi, getValue: (ctx) => ctx.deviceId },\n { pattern: /%%LIMIT_AD_TRACKING%%/gi, getValue: (ctx) => ctx.limitAdTracking != null ? ctx.limitAdTracking ? \"1\" : \"0\" : void 0 },\n { pattern: /%%SESSION_ID%%/gi, getValue: (ctx) => ctx.sessionId },\n { pattern: /%%CORRELATOR%%/gi, getValue: (ctx) => ctx.correlator }\n];\nfunction isMacroPlaceholder2(value) {\n if (value == null) return true;\n const trimmed = value.trim();\n if (!trimmed) return true;\n if (UNEXPANDED_MACRO_PATTERN.test(trimmed)) return true;\n return /^(unknown|null|undefined|none|n\\/a|\\$\\{[^}]+\\})$/i.test(trimmed);\n}\nfunction generateCorrelator() {\n if (typeof crypto !== \"undefined\" && crypto.getRandomValues) {\n try {\n const buf = new Uint32Array(2);\n crypto.getRandomValues(buf);\n const value = (buf[0] ?? 0) * 2097152 + ((buf[1] ?? 0) & 2097151);\n if (value > 0) {\n return String(value);\n }\n } catch {\n }\n }\n return String(Math.floor(Math.random() * Number.MAX_SAFE_INTEGER) + 1);\n}\nfunction expandInlineMacroPlaceholders(baseUrl, ctx) {\n let url = baseUrl;\n for (const { pattern, getValue } of INLINE_DEVICE_MACRO_REPLACEMENTS) {\n const value = getValue(ctx);\n if (value != null && value !== \"\") {\n url = url.replace(pattern, encodeURIComponent(value));\n }\n }\n return url;\n}\nfunction applyDeviceIdentityParams(params, ctx) {\n const runtimeId = ctx.deviceId?.trim();\n const runtimeType = ctx.deviceIdType?.trim() || inferDeviceIdType();\n const tagRdid = params.get(\"rdid\");\n const tagType = params.get(\"idtype\");\n const tagLat = params.get(\"is_lat\");\n const latValue = ctx.limitAdTracking != null ? ctx.limitAdTracking ? \"1\" : \"0\" : void 0;\n if (runtimeId) {\n params.set(\"rdid\", runtimeId);\n params.set(\"idtype\", runtimeType || tagType || \"aaid\");\n params.set(\"is_lat\", latValue ?? (isMacroPlaceholder2(tagLat) ? \"0\" : tagLat));\n return;\n }\n if (!ctx.isCtv) {\n params.delete(\"rdid\");\n params.delete(\"idtype\");\n params.delete(\"is_lat\");\n return;\n }\n const tagRdidValid = Boolean(tagRdid && !isMacroPlaceholder2(tagRdid));\n const tagTypeValid = Boolean(tagType && !isMacroPlaceholder2(tagType));\n if (tagRdidValid && tagTypeValid && runtimeType && !isEquivalentDeviceIdType(tagType, runtimeType)) {\n params.delete(\"rdid\");\n params.delete(\"idtype\");\n params.delete(\"is_lat\");\n return;\n }\n if (tagRdidValid) {\n if (isMacroPlaceholder2(tagType) && runtimeType) {\n params.set(\"idtype\", runtimeType);\n }\n if (isMacroPlaceholder2(tagLat)) {\n params.set(\"is_lat\", latValue ?? \"0\");\n }\n return;\n }\n params.delete(\"rdid\");\n params.delete(\"idtype\");\n params.delete(\"is_lat\");\n}\nfunction removeBrokenAppNameOrphans(params, appName) {\n const toDelete = [];\n params.forEach((_value, key) => {\n if (!key || INVALID_VAST_PARAM_KEY.test(key)) {\n toDelete.push(key);\n }\n });\n if (appName && appName.includes(\"&\")) {\n for (const suffix of appName.split(\"&\").slice(1)) {\n const trimmed = suffix.replace(/^\\s+/, \"\");\n if (!trimmed) continue;\n toDelete.push(suffix, ` ${trimmed}`, trimmed);\n }\n }\n for (const key of new Set(toDelete)) {\n if (key) params.delete(key);\n }\n}\nfunction normalizeVastTagUrl(raw) {\n if (!raw) return raw;\n try {\n const url = new URL(raw);\n const anValue = url.searchParams.get(\"an\");\n if (anValue !== null) {\n const orphanFragments = [];\n url.searchParams.forEach((_value, key) => {\n if (key && INVALID_VAST_PARAM_KEY.test(key)) {\n orphanFragments.push(key.trim());\n }\n });\n if (orphanFragments.length > 0) {\n const reconstructed = [anValue.replace(/\\s+$/, \"\"), ...orphanFragments].filter(Boolean).join(\" & \");\n url.searchParams.forEach((_value, key) => {\n if (key && INVALID_VAST_PARAM_KEY.test(key)) {\n url.searchParams.delete(key);\n }\n });\n url.searchParams.set(\"an\", reconstructed);\n return url.toString().replace(\n /([?&]an=)([^&]*)/,\n (_match, prefix, val) => prefix + val.replace(/\\+/g, \"%20\")\n );\n }\n }\n removeBrokenAppNameOrphans(url.searchParams);\n return url.toString();\n } catch {\n return raw;\n }\n}\nfunction applyVastMacros(baseUrl, ctx) {\n const expandedUrl = expandInlineMacroPlaceholders(baseUrl, ctx);\n let url;\n try {\n url = new URL(normalizeVastTagUrl(expandedUrl));\n } catch {\n return replaceCorrelatorFallback(expandedUrl, ctx.correlator);\n }\n const params = url.searchParams;\n removeBrokenAppNameOrphans(params);\n params.set(\"correlator\", ctx.correlator);\n params.set(\"scor\", ctx.streamCorrelator);\n if (ctx.isCtv) {\n for (const key of CTV_UNSUPPORTED_PARAMS) {\n params.delete(key);\n }\n }\n if (ctx.pod != null) {\n params.set(\"pod\", String(ctx.pod));\n }\n params.delete(\"ppos\");\n params.delete(\"lip\");\n if (ctx.podMinDurationMs != null) {\n params.set(\"pmnd\", String(Math.max(0, Math.round(ctx.podMinDurationMs))));\n }\n if (ctx.podMaxDurationMs != null) {\n params.set(\"pmxd\", String(Math.max(0, Math.round(ctx.podMaxDurationMs))));\n }\n if (ctx.podMaxAds != null) {\n params.set(\"pmad\", String(Math.max(1, Math.round(ctx.podMaxAds))));\n }\n const existingUrl = params.get(\"url\") || \"\";\n if (EXAMPLE_COM_URL.test(existingUrl)) {\n params.delete(\"url\");\n params.delete(\"description_url\");\n }\n if (!ctx.isCtv && ctx.pageUrl) {\n if (isMacroPlaceholder2(params.get(\"url\"))) {\n params.set(\"url\", ctx.pageUrl);\n }\n if (isMacroPlaceholder2(params.get(\"description_url\"))) {\n params.set(\"description_url\", params.get(\"url\") || ctx.pageUrl);\n }\n }\n if (!ctx.isCtv) {\n params.delete(\"an\");\n params.delete(\"msid\");\n params.delete(\"sid\");\n }\n if (ctx.adWillPlayMuted != null) {\n params.set(\"vpmute\", ctx.adWillPlayMuted ? \"1\" : \"0\");\n }\n if (ctx.adWillAutoPlay != null) {\n params.set(\"vpa\", ctx.adWillAutoPlay ? \"auto\" : \"click\");\n }\n if (ctx.sessionId) {\n params.set(\"sid\", ctx.sessionId);\n }\n if (ctx.deviceTypeHint != null) {\n params.set(\"dth\", String(ctx.deviceTypeHint));\n } else if (ctx.isCtv) {\n params.set(\"dth\", \"5\");\n }\n applyDeviceIdentityParams(params, ctx);\n if (!ctx.isCtv) {\n const consent = ctx.consent;\n if (consent?.gdpr != null) {\n params.set(\"gdpr\", consent.gdpr);\n }\n if (consent?.gdprConsent != null) {\n params.set(\"gdpr_consent\", consent.gdprConsent);\n }\n if (consent?.usPrivacy != null) {\n params.set(\"us_privacy\", consent.usPrivacy);\n }\n }\n if (ctx.adTest) {\n params.set(\"adtest\", \"on\");\n }\n if (ctx.programTitle) {\n params.set(\"ct_ti\", ctx.programTitle);\n }\n if (ctx.channelName) {\n params.set(\"ct_ch\", ctx.channelName);\n }\n const staleKeys = [];\n params.forEach((value, key) => {\n if (isMacroPlaceholder2(value)) {\n staleKeys.push(key);\n }\n });\n for (const key of staleKeys) {\n params.delete(key);\n }\n removeBrokenAppNameOrphans(params);\n return url.toString();\n}\nfunction replaceCorrelatorFallback(baseUrl, correlator) {\n const correlatorRegex = /([?&])correlator=([^&]*)/;\n if (correlatorRegex.test(baseUrl)) {\n return baseUrl.replace(correlatorRegex, `$1correlator=${correlator}`);\n }\n const sep = baseUrl.includes(\"?\") ? \"&\" : \"?\";\n return `${baseUrl}${sep}correlator=${correlator}`;\n}\n\n// src/utils/devUrl.ts\nvar PRIVATE_HOST_PATTERNS = [\n /^localhost$/i,\n /^127\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}$/,\n /^0\\.0\\.0\\.0$/,\n /^::1$/,\n /^10\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}$/,\n /^192\\.168\\.\\d{1,3}\\.\\d{1,3}$/,\n /^172\\.(1[6-9]|2\\d|3[0-1])\\.\\d{1,3}\\.\\d{1,3}$/\n];\nfunction isLocalDevHost(hostname) {\n const host = hostname.replace(/^\\[/, \"\").replace(/\\]$/, \"\").toLowerCase();\n if (!host) return false;\n if (host.endsWith(\".local\") || host.endsWith(\".localhost\")) return true;\n return PRIVATE_HOST_PATTERNS.some((pattern) => pattern.test(host));\n}\nfunction toDevSafeUrl(rawUrl) {\n if (!rawUrl) return rawUrl ?? \"\";\n let url;\n try {\n url = new URL(rawUrl);\n } catch {\n return rawUrl;\n }\n if (url.protocol !== \"http:\" && url.protocol !== \"https:\") {\n return rawUrl;\n }\n if (!isLocalDevHost(url.hostname)) {\n return rawUrl;\n }\n const cleanPath = url.pathname.replace(/\\/{2,}/g, \"/\") || \"/index.html\";\n return `file://${cleanPath}`;\n}\n\n// src/utils/trackingIngest.ts\nvar DEFAULT_TRACKING_INGEST_CONFIG = {\n enabled: true,\n baseUrl: \"https://player-analytics-ingest-api-760490581852.us-central1.run.app/api/adstorm/player-tracking\"\n};\nvar trackingIngestConfig = {\n ...DEFAULT_TRACKING_INGEST_CONFIG\n};\nfunction isTrackingIngestEnabled() {\n return trackingIngestConfig.enabled === true;\n}\nfunction normalizeIngestBaseUrl(baseUrl) {\n return baseUrl.replace(/\\/+$/, \"\");\n}\nfunction buildTrackingIngestUrl(channel) {\n const base = normalizeIngestBaseUrl(trackingIngestConfig.baseUrl);\n if (channel === \"impressions\") {\n return `${base}/impressions/ingest`;\n }\n return `${base}/metrics/ingest`;\n}\nasync function ingestPlayerTracking(licenseKey, channel, body) {\n if (!isTrackingIngestEnabled() || !licenseKey) {\n return false;\n }\n try {\n const response = await fetch(buildTrackingIngestUrl(channel), {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: `License-Key ${licenseKey}`\n },\n body: JSON.stringify(body)\n });\n if (!response.ok) {\n console.warn(\n `[StormcloudVideoPlayer] Tracking ingest failed (${response.status}) for ${channel}`\n );\n return false;\n }\n return true;\n } catch (error) {\n console.warn(\n `[StormcloudVideoPlayer] Tracking ingest error for ${channel}:`,\n error\n );\n return false;\n }\n}\n\n// src/utils/tracking.ts\nvar cachedBrowserId = null;\nfunction buildAnalyticsContext(config) {\n const context = {};\n if (config.debugAdTiming) {\n context.debugAdTiming = true;\n }\n if (config.isLiveStream !== void 0) {\n context.inputStreamType = config.isLiveStream ? \"live\" : \"vod\";\n }\n return context;\n}\nfunction getClientInfo() {\n const ua = navigator.userAgent;\n const platform = navigator.platform;\n const vendor = navigator.vendor || \"\";\n const maxTouchPoints = navigator.maxTouchPoints || 0;\n const memory = navigator.deviceMemory || null;\n const hardwareConcurrency = navigator.hardwareConcurrency || 1;\n const screenInfo = {\n width: screen?.width,\n height: screen?.height,\n availWidth: screen?.availWidth,\n availHeight: screen?.availHeight,\n orientation: screen?.orientation?.type || \"\",\n pixelDepth: screen?.pixelDepth\n };\n let deviceType = \"desktop\";\n let brand = \"Unknown\";\n let os = \"Unknown\";\n let model = \"\";\n let isSmartTV = false;\n let isAndroid = false;\n let isWebView = false;\n let isWebApp = false;\n if (ua.includes(\"Web0S\")) {\n brand = \"LG\";\n os = \"webOS\";\n isSmartTV = true;\n deviceType = \"tv\";\n const webosMatch = ua.match(/Web0S\\/([^\\s]+)/);\n model = webosMatch ? `webOS ${webosMatch[1]}` : \"webOS TV\";\n } else if (ua.includes(\"Tizen\")) {\n brand = \"Samsung\";\n os = \"Tizen\";\n isSmartTV = true;\n deviceType = \"tv\";\n const tizenMatch = ua.match(/Tizen\\/([^\\s]+)/);\n const tvMatch = ua.match(/(?:Smart-TV|SMART-TV|TV)/i) ? \"Smart TV\" : \"\";\n model = tizenMatch ? `Tizen ${tizenMatch[1]} ${tvMatch}`.trim() : \"Tizen TV\";\n } else if (ua.includes(\"Philips\")) {\n brand = \"Philips\";\n os = \"Saphi\";\n isSmartTV = true;\n deviceType = \"tv\";\n } else if (ua.includes(\"Sharp\") || ua.includes(\"AQUOS\")) {\n brand = \"Sharp\";\n os = \"Android TV\";\n isSmartTV = true;\n deviceType = \"tv\";\n } else if (ua.includes(\"Android\") && (ua.includes(\"Sony\") || vendor.includes(\"Sony\"))) {\n brand = \"Sony\";\n os = \"Android TV\";\n isSmartTV = true;\n deviceType = \"tv\";\n } else if (ua.includes(\"Android\") && (ua.includes(\"NetCast\") || ua.includes(\"LG\"))) {\n brand = \"LG\";\n os = \"Android TV\";\n isSmartTV = true;\n deviceType = \"tv\";\n } else if (ua.includes(\" Roku\") || ua.includes(\"Roku/\")) {\n brand = \"Roku\";\n os = \"Roku OS\";\n isSmartTV = true;\n deviceType = \"tv\";\n } else if (ua.includes(\"AppleTV\")) {\n brand = \"Apple\";\n os = \"tvOS\";\n isSmartTV = true;\n deviceType = \"tv\";\n }\n if (ua.includes(\"Android\")) {\n isAndroid = true;\n os = \"Android\";\n deviceType = /Mobile/.test(ua) ? \"mobile\" : \"tablet\";\n if (ua.includes(\"Android\") && (maxTouchPoints === 0 || ua.includes(\"Google TV\") || ua.includes(\"XiaoMi\"))) {\n deviceType = \"tv\";\n isSmartTV = true;\n brand = brand === \"Unknown\" ? \"Android TV\" : brand;\n }\n const androidModelMatch = ua.match(/\\(([^)]*Android[^)]*)\\)/);\n if (androidModelMatch && androidModelMatch[1]) {\n model = androidModelMatch[1];\n }\n }\n if (/iPad|iPhone|iPod/.test(ua)) {\n os = \"iOS\";\n deviceType = \"mobile\";\n brand = \"Apple\";\n if (navigator.maxTouchPoints > 1 && /iPad/.test(ua)) {\n deviceType = \"tablet\";\n }\n }\n if (!isAndroid && !isSmartTV && !/Mobile/.test(ua)) {\n if (ua.includes(\"Windows\")) {\n os = \"Windows\";\n deviceType = \"desktop\";\n } else if (ua.includes(\"Mac\") && !/iPhone/.test(ua)) {\n os = \"macOS\";\n deviceType = \"desktop\";\n if (maxTouchPoints > 1) deviceType = \"tablet\";\n } else if (ua.includes(\"Linux\")) {\n os = \"Linux\";\n deviceType = \"desktop\";\n }\n }\n if (brand === \"Unknown\") {\n if (vendor.includes(\"Google\") || ua.includes(\"Chrome\")) brand = \"Google\";\n if (vendor.includes(\"Apple\")) brand = \"Apple\";\n if (vendor.includes(\"Samsung\") || ua.includes(\"SM-\")) brand = \"Samsung\";\n }\n isWebView = /wv|WebView|Linux; U;/.test(ua);\n if (window?.outerHeight === 0 && window?.outerWidth === 0) {\n isWebView = true;\n }\n isWebApp = window.matchMedia(\"(display-mode: standalone)\").matches || window.navigator.standalone === true || window.screen?.orientation?.angle !== void 0;\n return {\n brand,\n os,\n model: model || ua.substring(0, 50) + \"...\",\n deviceType,\n isSmartTV,\n isAndroid,\n isWebView,\n isWebApp,\n domain: window.location.hostname,\n origin: window.location.origin,\n path: window.location.pathname,\n userAgent: ua,\n vendor,\n platform,\n screen: screenInfo,\n hardwareConcurrency,\n deviceMemory: memory,\n maxTouchPoints,\n language: navigator.language,\n languages: navigator.languages?.join(\",\") || \"\",\n cookieEnabled: navigator.cookieEnabled,\n doNotTrack: navigator.doNotTrack || \"\",\n referrer: document.referrer,\n visibilityState: document.visibilityState\n };\n}\nasync function sha256Hex(input) {\n if (typeof crypto !== \"undefined\" && crypto.subtle?.digest) {\n try {\n await crypto.subtle.digest(\"SHA-256\", new Uint8Array([1, 2, 3]));\n let encodedData;\n if (typeof TextEncoder !== \"undefined\") {\n encodedData = new TextEncoder().encode(input);\n } else {\n const utf8 = unescape(encodeURIComponent(input));\n const buffer = new Uint8Array(utf8.length);\n for (let i = 0; i < utf8.length; i++) {\n buffer[i] = utf8.charCodeAt(i);\n }\n encodedData = buffer;\n }\n const hashBuffer = await crypto.subtle.digest(\"SHA-256\", encodedData);\n return Array.from(new Uint8Array(hashBuffer)).map((b) => b.toString(16).padStart(2, \"0\")).join(\"\");\n } catch {\n console.warn(\n \"[StormcloudVideoPlayer] crypto.subtle not supported, using fallback hash\"\n );\n }\n }\n let hash = 0;\n for (let i = 0; i < input.length; i++) {\n const char = input.charCodeAt(i);\n hash = (hash << 5) - hash + char;\n hash = hash & hash;\n }\n const fallbackHash = Math.abs(hash).toString(16).padStart(8, \"0\");\n const timestamp = Date.now().toString(16).padStart(12, \"0\");\n const random = Math.random().toString(16).substring(2, 14).padStart(12, \"0\");\n return (fallbackHash + timestamp + random).padEnd(64, \"0\");\n}\nfunction resolvePlayerIdentitySeed(clientInfo) {\n const nativeDeviceId = resolveNativeDeviceId(clientInfo.isSmartTV);\n if (nativeDeviceId) {\n return `device:${nativeDeviceId}`;\n }\n const persistedId = getOrCreateStoredUuid(PLAYER_ID_STORAGE_KEY);\n if (persistedId) {\n return `persisted:${persistedId}`;\n }\n return `fingerprint:${JSON.stringify(clientInfo)}`;\n}\nasync function getBrowserID(clientInfo) {\n if (cachedBrowserId) {\n return cachedBrowserId;\n }\n cachedBrowserId = await sha256Hex(resolvePlayerIdentitySeed(clientInfo));\n return cachedBrowserId;\n}\nfunction canPublish(licenseKey) {\n return Boolean(isTrackingIngestEnabled() && licenseKey);\n}\nasync function buildPlayerMetricEvent(context = {}, flags = {}) {\n const clientInfo = getClientInfo();\n const debugAdTiming = !!context.debugAdTiming;\n if (debugAdTiming) {\n console.log(\"[StormcloudVideoPlayer] clientInfo: \", JSON.stringify(clientInfo, null, 2));\n }\n const playerId = await getBrowserID(clientInfo);\n if (debugAdTiming) {\n console.log(\"[StormcloudVideoPlayer] playerId: \", playerId);\n }\n const captureAt = flags.captureAt ?? (/* @__PURE__ */ new Date()).toISOString();\n return {\n player_id: playerId,\n device_type: clientInfo.deviceType,\n os: clientInfo.os.toLowerCase(),\n ad_loaded: flags.adLoaded ?? false,\n ad_detect: flags.adDetect ?? false,\n capture_at: captureAt,\n ...context.inputStreamType ? { input_stream_type: context.inputStreamType } : {}\n };\n}\nasync function sendInitialTracking(licenseKey, context = {}) {\n if (!canPublish(licenseKey)) return;\n try {\n const metricEvent = await buildPlayerMetricEvent(context, {\n adLoaded: false,\n adDetect: false\n });\n await ingestPlayerTracking(licenseKey, \"metrics\", {\n events: [metricEvent]\n });\n } catch (error) {\n console.error(\n \"[StormcloudVideoPlayer] Error sending initial tracking data:\",\n error\n );\n }\n}\nasync function sendHeartbeat(licenseKey, context = {}, flags = {}) {\n if (!canPublish(licenseKey)) return;\n try {\n const heartbeatData = await buildPlayerMetricEvent(context, flags);\n await ingestPlayerTracking(licenseKey, \"metrics\", {\n events: [heartbeatData]\n });\n } catch (error) {\n console.error(\"[StormcloudVideoPlayer] Error sending heartbeat:\", error);\n }\n}\n\n// src/player/AdConfigManager.ts\nvar AdConfigManager = class {\n constructor(config, video) {\n this.vmapBreaks = [];\n this.consumedVmapBreakIds = /* @__PURE__ */ new Set();\n this.streamCorrelator = generateCorrelator();\n this.viewCorrelator = generateCorrelator();\n this.consentSignals = {};\n this.podCounter = 0;\n this.podAssignedByPrefetch = false;\n this.lastHeartbeatTime = 0;\n this.defaultPodMaxAds = 6;\n this.defaultPodMaxDurationMs = 12e4;\n this.config = config;\n this.video = video;\n }\n get debug() {\n return !!this.config.debugAdTiming;\n }\n isVmapEnabled() {\n return !!(this.config.isVmap && this.config.vmapUrl?.trim());\n }\n async fetchAdConfiguration() {\n if (this.isVmapEnabled()) {\n await this.fetchAndParseVmap(this.config.vmapUrl);\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] VMAP mode enabled\");\n }\n return;\n }\n const vastMode = this.config.vastMode || \"default\";\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] VAST mode:\", vastMode);\n }\n if (vastMode === \"adstorm\") {\n if (!this.config.licenseKey) {\n if (this.debug) {\n console.warn(\n \"[StormcloudVideoPlayer] AdStorm mode requires a license key\"\n );\n }\n return;\n }\n const vastEndpoint = `https://adstorm.co/api-adstorm-dev/adstorm/vast/${this.config.licenseKey}`;\n this.apiVastTagUrl = vastEndpoint;\n if (this.debug) {\n console.log(\n \"[StormcloudVideoPlayer] Using AdStorm VAST endpoint (adstorm mode):\",\n vastEndpoint\n );\n }\n return;\n }\n if (this.config.vastTagUrl) {\n this.apiVastTagUrl = normalizeVastTagUrl(this.config.vastTagUrl);\n if (this.debug) {\n console.log(\n \"[StormcloudVideoPlayer] Using custom VAST tag URL:\",\n this.apiVastTagUrl\n );\n }\n return;\n }\n const apiUrl = \"https://adstorm.co/api-adstorm-dev/adstorm/ads/web\";\n if (this.debug) {\n console.log(\n \"[StormcloudVideoPlayer] Fetching ad configuration from:\",\n apiUrl\n );\n }\n const headers = {};\n if (this.config.licenseKey) {\n headers[\"Authorization\"] = `Bearer ${this.config.licenseKey}`;\n }\n const response = await fetch(apiUrl, { headers });\n if (!response.ok) {\n if (this.debug) {\n console.warn(\n `[StormcloudVideoPlayer] Failed to fetch ad configuration: ${response.status}`\n );\n }\n return;\n }\n const data = await response.json();\n const imaPayload = data.response?.ima?.[\"publisherdesk.ima\"]?.payload;\n if (imaPayload) {\n let decodedPayload = imaPayload;\n try {\n decodedPayload = decodeURIComponent(imaPayload);\n } catch {\n console.warn(\"[StormcloudVideoPlayer] imaPayload was not URI-encoded; using as-is:\", imaPayload);\n }\n console.log(\"[StormcloudVideoPlayer] Raw VAST tag URL (from API):\", decodedPayload);\n this.apiVastTagUrl = normalizeVastTagUrl(decodedPayload);\n if (this.debug) {\n console.log(\n \"[StormcloudVideoPlayer] Normalized VAST tag URL:\",\n this.apiVastTagUrl\n );\n }\n } else {\n if (this.debug) {\n console.warn(\n \"[StormcloudVideoPlayer] No VAST tag URL found in /ads/web response\"\n );\n }\n }\n const numberAds = data.response?.options?.vast?.cue_tones?.number_ads;\n if (numberAds != null && numberAds > 0) {\n this.apiNumberAds = numberAds;\n if (this.debug) {\n console.log(\n \"[StormcloudVideoPlayer] Number of ads per break from API:\",\n this.apiNumberAds\n );\n }\n }\n }\n async fetchAndParseVmap(vmapUrl) {\n if (!vmapUrl.trim()) {\n return;\n }\n try {\n const response = await fetch(vmapUrl);\n if (!response.ok) {\n throw new Error(`Failed to fetch VMAP (${response.status})`);\n }\n const vmapXml = await response.text();\n this.vmapBreaks = this.parseVmapToBreaks(vmapXml);\n this.consumedVmapBreakIds.clear();\n if (this.debug) {\n console.log(\n `[StormcloudVideoPlayer] Loaded ${this.vmapBreaks.length} VMAP ad break(s) from:`,\n vmapUrl\n );\n }\n } catch (error) {\n this.vmapBreaks = [];\n this.consumedVmapBreakIds.clear();\n if (this.debug) {\n console.warn(\"[StormcloudVideoPlayer] Failed to load VMAP:\", error);\n }\n }\n }\n parseVmapToBreaks(vmapXml) {\n if (typeof DOMParser === \"undefined\") {\n return [];\n }\n const doc = new DOMParser().parseFromString(vmapXml, \"application/xml\");\n if (doc.querySelector(\"parsererror\")) {\n if (this.debug) {\n console.warn(\"[StormcloudVideoPlayer] Invalid VMAP XML received\");\n }\n return [];\n }\n const VMAP_NS = \"http://www.iab.net/videosuite/vmap\";\n let adBreakNodes = Array.from(doc.getElementsByTagNameNS(VMAP_NS, \"AdBreak\"));\n if (adBreakNodes.length === 0) {\n adBreakNodes = Array.from(\n doc.querySelectorAll(\"AdBreak, vmap\\\\:AdBreak\")\n );\n }\n if (adBreakNodes.length === 0) {\n adBreakNodes = Array.from(doc.getElementsByTagName(\"*\")).filter(\n (el) => el.localName === \"AdBreak\"\n );\n }\n const parsed = [];\n adBreakNodes.forEach((node, index) => {\n const timeOffsetRaw = (node.getAttribute(\"timeOffset\") || \"\").trim();\n const startTimeMs = this.parseVmapTimeOffsetToMs(timeOffsetRaw);\n if (startTimeMs == null) {\n return;\n }\n let adTagNode = node.getElementsByTagNameNS(VMAP_NS, \"AdTagURI\")[0];\n if (!adTagNode) {\n adTagNode = node.querySelector(\"AdTagURI, vmap\\\\:AdTagURI\") ?? void 0;\n }\n const adTagUrl = (adTagNode?.textContent || \"\").trim();\n if (!adTagUrl) {\n return;\n }\n const breakId = node.getAttribute(\"breakId\") || `vmap-break-${index}-${timeOffsetRaw || \"unknown\"}`;\n parsed.push({\n id: breakId,\n startTimeMs,\n vastTagUrl: adTagUrl\n });\n });\n parsed.sort((a, b) => {\n const aStart = a.startTimeMs < 0 ? Number.MAX_SAFE_INTEGER : a.startTimeMs;\n const bStart = b.startTimeMs < 0 ? Number.MAX_SAFE_INTEGER : b.startTimeMs;\n return aStart - bStart;\n });\n return parsed;\n }\n parseVmapTimeOffsetToMs(timeOffset) {\n if (!timeOffset) {\n return void 0;\n }\n const normalized = timeOffset.trim().toLowerCase();\n if (normalized === \"start\") {\n return 0;\n }\n if (normalized === \"end\") {\n return -1;\n }\n const hms = timeOffset.match(\n /^(\\d{1,2}):(\\d{2}):(\\d{2})(?:\\.(\\d{1,3}))?$/\n );\n if (hms) {\n const [, hh, mm, ss, ms = \"0\"] = hms;\n const hours = Number(hh);\n const minutes = Number(mm);\n const seconds = Number(ss);\n const millis = Number(ms.padEnd(3, \"0\").slice(0, 3));\n return (hours * 3600 + minutes * 60 + seconds) * 1e3 + millis;\n }\n const percent = timeOffset.match(/^(\\d+(?:\\.\\d+)?)%$/);\n if (percent) {\n const ratio = Number(percent[1]) / 100;\n const durationSec = this.video.duration;\n if (Number.isFinite(durationSec) && durationSec > 0) {\n return Math.floor(durationSec * 1e3 * ratio);\n }\n return void 0;\n }\n return void 0;\n }\n getAdBreakKey(adBreak) {\n if (adBreak.id) {\n return adBreak.id;\n }\n return `${adBreak.startTimeMs}-${adBreak.vastTagUrl || \"\"}`;\n }\n resolveBreakStartMs(adBreak) {\n if (adBreak.startTimeMs >= 0) {\n return adBreak.startTimeMs;\n }\n if (adBreak.startTimeMs === -1) {\n const durationSec = this.video.duration;\n if (Number.isFinite(durationSec) && durationSec > 0) {\n return Math.floor(durationSec * 1e3);\n }\n }\n return void 0;\n }\n findCurrentOrNextBreak(nowMs) {\n const schedule = this.vmapBreaks;\n let candidate;\n const tol = this.config.driftToleranceMs ?? 1e3;\n for (const b of schedule) {\n if (this.consumedVmapBreakIds.has(this.getAdBreakKey(b))) {\n continue;\n }\n const breakStartMs = this.resolveBreakStartMs(b);\n if (breakStartMs == null) {\n continue;\n }\n if (breakStartMs <= nowMs + tol && (candidate == null || breakStartMs > (this.resolveBreakStartMs(candidate) ?? 0))) {\n candidate = b;\n }\n }\n return candidate;\n }\n findBreakForTime(nowMs) {\n const schedule = this.vmapBreaks;\n for (const b of schedule) {\n if (this.consumedVmapBreakIds.has(this.getAdBreakKey(b))) {\n continue;\n }\n const breakStartMs = this.resolveBreakStartMs(b);\n if (breakStartMs == null) {\n continue;\n }\n if (b.durationMs) {\n const end = breakStartMs + b.durationMs;\n if (nowMs >= breakStartMs && nowMs < end) {\n return b;\n }\n continue;\n }\n if (nowMs >= breakStartMs) {\n return b;\n }\n }\n return void 0;\n }\n selectVastTagsForBreak(b) {\n if (!b || !b.vastTagUrl) return void 0;\n if (b.vastTagUrl.includes(\",\")) {\n return b.vastTagUrl.split(\",\").map((s) => s.trim()).filter((s) => s.length > 0);\n }\n return [b.vastTagUrl];\n }\n beginNewAdPod() {\n this.podCounter++;\n }\n resolvePodParams(breakDurationMs) {\n const maxDurationMs = breakDurationMs != null && breakDurationMs > 0 ? breakDurationMs : this.config.podMaxDurationMs != null && this.config.podMaxDurationMs > 0 ? this.config.podMaxDurationMs : this.defaultPodMaxDurationMs;\n const maxAds = this.config.podMaxAds && this.config.podMaxAds > 0 ? this.config.podMaxAds : this.apiNumberAds && this.apiNumberAds > 0 ? this.apiNumberAds : this.defaultPodMaxAds;\n const minDurationMs = this.config.podExactDuration && maxDurationMs != null ? maxDurationMs : 0;\n return { maxAds, minDurationMs, maxDurationMs };\n }\n getPalDescriptionUrl() {\n if (!this.apiVastTagUrl) return void 0;\n try {\n const params = new URL(this.apiVastTagUrl).searchParams;\n return params.get(\"description_url\") || params.get(\"url\") || void 0;\n } catch {\n return void 0;\n }\n }\n generatePodVastUrl(baseUrl, podParams, adPlayer, palNonce, inAdBreak) {\n const adWillPlayMuted = inAdBreak ? adPlayer.getOriginalMutedState() : this.video.muted;\n const envSignals = resolveVastEnvironmentSignals(!!this.config.ctvAdRequest);\n const urlWithMacros = applyVastMacros(baseUrl, {\n correlator: this.viewCorrelator,\n streamCorrelator: this.streamCorrelator,\n pod: this.podCounter > 0 ? this.podCounter : void 0,\n podMaxAds: podParams.maxAds,\n podMinDurationMs: podParams.minDurationMs,\n podMaxDurationMs: podParams.maxDurationMs,\n isCtv: envSignals.isCtv,\n pageUrl: !envSignals.isCtv && typeof window !== \"undefined\" ? toDevSafeUrl(window.location.href) : void 0,\n adWillPlayMuted,\n adWillAutoPlay: !!this.config.autoplay,\n sessionId: envSignals.isCtv || this.consentSignals.storageAllowed !== false ? envSignals.sessionId : void 0,\n deviceId: envSignals.deviceId,\n deviceIdType: envSignals.deviceIdType,\n limitAdTracking: envSignals.limitAdTracking,\n deviceTypeHint: envSignals.deviceTypeHint,\n adTest: this.config.adTest,\n ...this.config.programTitle ? { programTitle: this.config.programTitle } : {},\n ...this.config.channelName ? { channelName: this.config.channelName } : {},\n consent: this.consentSignals\n });\n const finalUrl = palNonce.injectNonce(urlWithMacros);\n console.log(\n `[StormcloudVideoPlayer] Resolved optimized-pod request URL (pod=${this.podCounter}, pmad=${podParams.maxAds}, pmnd=${podParams.minDurationMs}, pmxd=${podParams.maxDurationMs ?? \"?\"}):`,\n finalUrl\n );\n return finalUrl;\n }\n // --- Tracking ---\n initializeTracking() {\n sendInitialTracking(this.config.licenseKey, buildAnalyticsContext(this.config)).then(() => {\n this.heartbeatInterval = window.setInterval(() => {\n this.sendHeartbeatIfNeeded();\n }, 5e3);\n }).catch((error) => {\n if (this.debug) {\n console.warn(\n \"[StormcloudVideoPlayer] Failed to send initial tracking:\",\n error\n );\n }\n this.heartbeatInterval = window.setInterval(() => {\n this.sendHeartbeatIfNeeded();\n }, 5e3);\n });\n }\n sendHeartbeatIfNeeded() {\n const now = Date.now();\n if (!this.lastHeartbeatTime || now - this.lastHeartbeatTime > 3e4) {\n this.lastHeartbeatTime = now;\n sendHeartbeat(this.config.licenseKey, buildAnalyticsContext(this.config)).catch((error) => {\n if (this.debug) {\n console.warn(\n \"[StormcloudVideoPlayer] Failed to send heartbeat:\",\n error\n );\n }\n });\n }\n }\n destroyTracking() {\n if (this.heartbeatInterval) {\n clearInterval(this.heartbeatInterval);\n this.heartbeatInterval = void 0;\n }\n }\n};\n// Annotate the CommonJS export names for ESM import in node:\n0 && (module.exports = {\n AdConfigManager\n});\n"]}
|
|
1
|
+
{"version":3,"sources":["d:\\project\\stormcloud-vp\\lib\\player\\AdConfigManager.cjs"],"names":["__defProp","Object","defineProperty","__getOwnPropDesc","getOwnPropertyDescriptor","__getOwnPropNames","getOwnPropertyNames","__hasOwnProp","prototype","hasOwnProperty","__export","target","all","name","get","enumerable","__copyProps","to","from","except","desc","key","call","__toCommonJS","mod","value","AdConfigManager_exports","AdConfigManager","module","exports","CTV_SESSION_STORAGE_KEY","PLAYER_ID_STORAGE_KEY","DEVICE_ID_STORAGE_KEYS","ANDROID_ID_TYPES","Set","resolveVastEnvironmentSignals","isCtv","platformLat","bridgeSignals","readNativeBridgeSignals","platformDevice","readPlatformNativeDeviceId","realDeviceId","deviceId","readStoredDeviceId","deviceIdType","readStoredString","inferDeviceIdType","limitAdTracking","readStoredLimitAdTracking","dpid","getOrCreateStoredUuid","deviceTypeHint","resolveDeviceTypeHint","sessionId","getOrCreateCtvSessionId","DEVICE_TYPE_HINT","FEATURE_PHONE","SMARTPHONE","DESKTOP","TABLET","CONNECTED_TV","GAME_CONSOLE","SET_TOP_BOX","DEVICE_TYPE_HINT_ALIASES","featurephone","smartphone","mobile","phone","desktop","pc","tablet","ctv","tv","connectedtv","smarttv","console","gameconsole","stb","settopbox","SET_TOP_BOX_UA","GAME_CONSOLE_UA","CONNECTED_TV_UA","FEATURE_PHONE_UA","override","readDeviceTypeHintOverride","inferDeviceTypeHint","fallback","navigator","ua","userAgent","maxTouchPoints","test","window","keys","fromGlobal","normalizeDeviceTypeHint","__STORMCLOUD_DTH__","getNativeBridgeSources","source","normalized","safeCall","Number","isInteger","trimmed","trim","parseInt","toLowerCase","replace","fn","thisArg","isEquivalentDeviceIdType","tagType","runtimeType","tag","runtime","has","resolveNativeDeviceId","includeStored","isMacroPlaceholder","isZeroedAdId","storageKey","existing","readPersistentId","writePersistentId","id","createUuid","readCookie","localStorage","setItem","writeCookie","PERSISTENT_ID_COOKIE_MAX_AGE","document","prefix","encodeURIComponent","parts","cookie","split","part","entry","startsWith","decodeURIComponent","slice","length","bytes","crypto","randomUUID","Uint8Array","getRandomValues","seed","Date","now","Math","floor","performanceNow","i","random","hex","toString","padStart","performance","adinfo","webapis","tifa","getTIFA","lat","isLATEnabled","webOSDev","lgudid","LGUDID","roku","Roku","rida","getPublisherUniqueId","ZEROED_AD_ID_PATTERNS","t","contentUrl","readBridgeValue","appId","appName","readBridgeBoolean","__STORMCLOUD_CTV_AD_INFO__","__STORMCLOUD_CTV__","stormcloudCtv","AiryTV","Android","webOS","tizen","amazon","filter","Boolean","result","normalizeBoolean","getItem","UNEXPANDED_MACRO_PATTERN","INVALID_VAST_PARAM_KEY","EXAMPLE_COM_URL","CTV_UNSUPPORTED_PARAMS","INLINE_DEVICE_MACRO_REPLACEMENTS","pattern","getValue","ctx","correlator","isMacroPlaceholder2","generateCorrelator","buf","Uint32Array","String","MAX_SAFE_INTEGER","pageViewCorrelator","getPageViewCorrelator","location","pathname","search","expandInlineMacroPlaceholders","baseUrl","url","applyDeviceIdentityParams","params","runtimeId","tagRdid","tagLat","latValue","set","delete","tagRdidValid","tagTypeValid","removeBrokenAppNameOrphans","toDelete","forEach","_value","push","includes","suffix","normalizeVastTagUrl","raw","URL","anValue","searchParams","orphanFragments","reconstructed","join","_match","val","applyVastMacros","expandedUrl","replaceCorrelatorFallback","streamCorrelator","pod","podMinDurationMs","max","round","podMaxDurationMs","podMaxAds","existingUrl","pageUrl","adWillPlayMuted","adWillAutoPlay","consent","gdpr","gdprConsent","usPrivacy","adTest","programTitle","channelName","staleKeys","correlatorRegex","sep","PRIVATE_HOST_PATTERNS","isLocalDevHost","hostname","host","endsWith","some","toDevSafeUrl","rawUrl","protocol","cleanPath","DEFAULT_TRACKING_INGEST_CONFIG","enabled","trackingIngestConfig","isTrackingIngestEnabled","normalizeIngestBaseUrl","buildTrackingIngestUrl","channel","base","ingestPlayerTracking","licenseKey","body","response","error","fetch","method","headers","Authorization","JSON","stringify","ok","warn","status","cachedBrowserId","buildAnalyticsContext","config","context","debugAdTiming","isLiveStream","inputStreamType","getClientInfo","screen","platform","vendor","memory","deviceMemory","hardwareConcurrency","screenInfo","width","height","availWidth","availHeight","orientation","type","pixelDepth","deviceType","brand","os","model","isSmartTV","isAndroid","isWebView","isWebApp","webosMatch","match","tizenMatch","tvMatch","androidModelMatch","outerHeight","outerWidth","matchMedia","matches","standalone","angle","substring","domain","origin","path","language","languages","cookieEnabled","doNotTrack","referrer","visibilityState","sha256Hex","input","encodedData","utf8","buffer","hashBuffer","hash","char","fallbackHash","timestamp","subtle","digest","TextEncoder","encode","unescape","charCodeAt","Array","map","b","abs","padEnd","resolvePlayerIdentitySeed","clientInfo","nativeDeviceId","persistedId","getBrowserID","canPublish","buildPlayerMetricEvent","flags","playerId","captureAt","log","toISOString","player_id","device_type","ad_loaded","adLoaded","ad_detect","adDetect","capture_at","input_stream_type","sendInitialTracking","metricEvent","events","sendHeartbeat","heartbeatData","video","vmapBreaks","consumedVmapBreakIds","consentSignals","podCounter","podAssignedByPrefetch","lastHeartbeatTime","defaultPodMaxAds","defaultPodMaxDurationMs","viewCorrelator","debug","isVmapEnabled","isVmap","vmapUrl","fetchAdConfiguration","data","vastMode","vastEndpoint","apiUrl","imaPayload","decodedPayload","numberAds","fetchAndParseVmap","apiVastTagUrl","vastTagUrl","json","ima","payload","options","vast","cue_tones","number_ads","apiNumberAds","vmapXml","Error","text","parseVmapToBreaks","clear","DOMParser","doc","parseFromString","querySelector","VMAP_NS","adBreakNodes","getElementsByTagNameNS","querySelectorAll","getElementsByTagName","el","localName","parsed","node","index","timeOffsetRaw","getAttribute","startTimeMs","parseVmapTimeOffsetToMs","adTagNode","adTagUrl","textContent","breakId","sort","a","aStart","bStart","timeOffset","hms","hh","mm","ss","ms","hours","minutes","seconds","millis","percent","ratio","durationSec","duration","isFinite","getAdBreakKey","adBreak","resolveBreakStartMs","findCurrentOrNextBreak","nowMs","schedule","candidate","tol","driftToleranceMs","breakStartMs","findBreakForTime","durationMs","end","selectVastTagsForBreak","s","beginNewAdPod","resolvePodParams","breakDurationMs","maxDurationMs","maxAds","minDurationMs","podExactDuration","getPalDescriptionUrl","generatePodVastUrl","podParams","adPlayer","palNonce","inAdBreak","getOriginalMutedState","muted","envSignals","ctvAdRequest","urlWithMacros","href","autoplay","finalUrl","injectNonce","initializeTracking","then","heartbeatInterval","setInterval","sendHeartbeatIfNeeded","catch","destroyTracking","clearInterval"],"mappings":"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","sourcesContent":["\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/player/AdConfigManager.ts\nvar AdConfigManager_exports = {};\n__export(AdConfigManager_exports, {\n AdConfigManager: () => AdConfigManager\n});\nmodule.exports = __toCommonJS(AdConfigManager_exports);\n\n// src/utils/vastEnvironmentSignals.ts\nvar CTV_SESSION_STORAGE_KEY = \"stormcloud.ctv.sid\";\nvar PLAYER_ID_STORAGE_KEY = \"stormcloud.player.id\";\nvar DEVICE_ID_STORAGE_KEYS = [\n \"rdid\",\n \"ifa\",\n \"advertisingId\",\n \"advertising_id\",\n \"deviceAdvertisingId\",\n \"aaid\",\n \"adid\",\n \"rida\",\n \"tifa\",\n \"lgudid\"\n];\nvar ANDROID_ID_TYPES = /* @__PURE__ */ new Set([\"aaid\", \"adid\"]);\nfunction resolveVastEnvironmentSignals(isCtv) {\n const bridgeSignals = readNativeBridgeSignals();\n const platformDevice = readPlatformNativeDeviceId();\n const realDeviceId = bridgeSignals.deviceId || (isCtv ? readStoredDeviceId() : void 0) || platformDevice.deviceId;\n let deviceId = realDeviceId;\n let deviceIdType = bridgeSignals.deviceIdType || readStoredString(\"deviceIdType\") || readStoredString(\"idtype\") || platformDevice.deviceIdType || inferDeviceIdType();\n const platformLat = bridgeSignals.deviceId ? bridgeSignals.limitAdTracking : platformDevice.limitAdTracking;\n let limitAdTracking = deviceId != null ? platformLat ?? readStoredLimitAdTracking() ?? false : void 0;\n if (!deviceId && isCtv) {\n const dpid = getOrCreateStoredUuid(PLAYER_ID_STORAGE_KEY);\n if (dpid) {\n deviceId = dpid;\n deviceIdType = \"dpid\";\n limitAdTracking = platformLat ?? readStoredLimitAdTracking() ?? false;\n }\n }\n const deviceTypeHint = resolveDeviceTypeHint(isCtv);\n if (isCtv) {\n return {\n isCtv: true,\n sessionId: getOrCreateCtvSessionId(),\n ...deviceId ? { deviceId } : {},\n ...deviceId && deviceIdType ? { deviceIdType } : {},\n ...deviceId && limitAdTracking != null ? { limitAdTracking } : {},\n deviceTypeHint\n };\n }\n return {\n isCtv: false,\n ...deviceId ? { deviceId } : {},\n ...deviceId && deviceIdType ? { deviceIdType } : {},\n ...deviceId && limitAdTracking != null ? { limitAdTracking } : {},\n deviceTypeHint\n };\n}\nvar DEVICE_TYPE_HINT = {\n FEATURE_PHONE: 1,\n SMARTPHONE: 2,\n DESKTOP: 3,\n TABLET: 4,\n CONNECTED_TV: 5,\n GAME_CONSOLE: 6,\n SET_TOP_BOX: 7\n};\nvar DEVICE_TYPE_HINT_ALIASES = {\n featurephone: DEVICE_TYPE_HINT.FEATURE_PHONE,\n smartphone: DEVICE_TYPE_HINT.SMARTPHONE,\n mobile: DEVICE_TYPE_HINT.SMARTPHONE,\n phone: DEVICE_TYPE_HINT.SMARTPHONE,\n desktop: DEVICE_TYPE_HINT.DESKTOP,\n pc: DEVICE_TYPE_HINT.DESKTOP,\n tablet: DEVICE_TYPE_HINT.TABLET,\n ctv: DEVICE_TYPE_HINT.CONNECTED_TV,\n tv: DEVICE_TYPE_HINT.CONNECTED_TV,\n connectedtv: DEVICE_TYPE_HINT.CONNECTED_TV,\n smarttv: DEVICE_TYPE_HINT.CONNECTED_TV,\n console: DEVICE_TYPE_HINT.GAME_CONSOLE,\n gameconsole: DEVICE_TYPE_HINT.GAME_CONSOLE,\n stb: DEVICE_TYPE_HINT.SET_TOP_BOX,\n settopbox: DEVICE_TYPE_HINT.SET_TOP_BOX\n};\nvar SET_TOP_BOX_UA = /LGSTB|\\bSTB\\b|STB\\d|Set-?Top|SetTopBox|TV ?Box|Kaon|Humax|Arris|Technicolor|Sagemcom|Infomir|MAG\\d{3}|KreaTV|Amino|Formuler|Dune ?HD|TiVo|MiBOX|Mi Box|SHIELD Android TV|\\bAFT[A-Z]|Roku|AppleTV|Apple TV|CrKey/i;\nvar GAME_CONSOLE_UA = /PlayStation|Xbox|Nintendo/i;\nvar CONNECTED_TV_UA = /Web0S|webOS|Tizen|SMART-TV|SmartTV|NetCast|BRAVIA|HbbTV|VIDAA|Hisense|Philips|Viera|AQUOS|Android TV|Google TV|\\bTV\\b/i;\nvar FEATURE_PHONE_UA = /KAIOS|MIDP|J2ME|Series40|Opera Mini/i;\nfunction resolveDeviceTypeHint(isCtv) {\n const override = readDeviceTypeHintOverride(isCtv);\n if (override != null) return override;\n return inferDeviceTypeHint(isCtv);\n}\nfunction inferDeviceTypeHint(isCtv) {\n const fallback = isCtv ? DEVICE_TYPE_HINT.CONNECTED_TV : DEVICE_TYPE_HINT.DESKTOP;\n if (typeof navigator === \"undefined\") return fallback;\n const ua = navigator.userAgent || \"\";\n const maxTouchPoints = navigator.maxTouchPoints || 0;\n if (SET_TOP_BOX_UA.test(ua)) return DEVICE_TYPE_HINT.SET_TOP_BOX;\n if (GAME_CONSOLE_UA.test(ua)) return DEVICE_TYPE_HINT.GAME_CONSOLE;\n if (CONNECTED_TV_UA.test(ua) && !/Mobile/i.test(ua)) {\n return DEVICE_TYPE_HINT.CONNECTED_TV;\n }\n if (FEATURE_PHONE_UA.test(ua)) return DEVICE_TYPE_HINT.FEATURE_PHONE;\n if (/iPad/i.test(ua) || /Macintosh/i.test(ua) && maxTouchPoints > 1) {\n return DEVICE_TYPE_HINT.TABLET;\n }\n if (/iPhone|iPod/i.test(ua)) return DEVICE_TYPE_HINT.SMARTPHONE;\n if (/Android/i.test(ua)) {\n if (/Mobile/i.test(ua)) return DEVICE_TYPE_HINT.SMARTPHONE;\n if (maxTouchPoints === 0) return DEVICE_TYPE_HINT.SET_TOP_BOX;\n return DEVICE_TYPE_HINT.TABLET;\n }\n if (/Mobile|Windows Phone|BlackBerry/i.test(ua)) return DEVICE_TYPE_HINT.SMARTPHONE;\n return fallback;\n}\nfunction readDeviceTypeHintOverride(isCtv) {\n if (typeof window === \"undefined\") return void 0;\n const keys = [\"dth\", \"deviceTypeHint\"];\n const fromGlobal = normalizeDeviceTypeHint(window.__STORMCLOUD_DTH__);\n if (fromGlobal != null) return fromGlobal;\n for (const source of getNativeBridgeSources()) {\n for (const key of keys) {\n const value = source?.[key];\n const normalized = normalizeDeviceTypeHint(\n typeof value === \"function\" ? safeCall(value, source) : value\n );\n if (normalized != null) return normalized;\n }\n }\n if (!isCtv) return void 0;\n for (const key of [\"stormcloud.dth\", \"dth\"]) {\n const normalized = normalizeDeviceTypeHint(readStoredString(key));\n if (normalized != null) return normalized;\n }\n return void 0;\n}\nfunction normalizeDeviceTypeHint(value) {\n if (typeof value === \"number\") {\n return Number.isInteger(value) && value >= 1 && value <= 7 ? value : void 0;\n }\n if (typeof value !== \"string\") return void 0;\n const trimmed = value.trim();\n if (/^[1-7]$/.test(trimmed)) return parseInt(trimmed, 10);\n return DEVICE_TYPE_HINT_ALIASES[trimmed.toLowerCase().replace(/[\\s_-]/g, \"\")];\n}\nfunction safeCall(fn, thisArg) {\n try {\n return fn.call(thisArg);\n } catch {\n return void 0;\n }\n}\nfunction inferDeviceIdType() {\n if (typeof navigator === \"undefined\") {\n return void 0;\n }\n const ua = navigator.userAgent;\n if (/Roku/i.test(ua)) return \"rida\";\n if (/Tizen|Samsung/i.test(ua)) return \"tifa\";\n if (/AppleTV|Apple TV/i.test(ua)) return \"tvOS\";\n if (/AFT|Fire TV|Amazon/i.test(ua)) return \"afai\";\n if (/Web0S|webOS|LG Browser|LGSTB|LGE/i.test(ua)) return \"lgudid\";\n if (/Android|Google TV/i.test(ua)) return \"aaid\";\n if (/iPhone|iPad|iPod/i.test(ua)) return \"idfa\";\n return void 0;\n}\nfunction isEquivalentDeviceIdType(tagType, runtimeType) {\n if (!tagType || !runtimeType) return false;\n const tag = tagType.toLowerCase();\n const runtime = runtimeType.toLowerCase();\n if (tag === runtime) return true;\n return ANDROID_ID_TYPES.has(tag) && ANDROID_ID_TYPES.has(runtime);\n}\nfunction resolveNativeDeviceId(includeStored = true) {\n const bridgeSignals = readNativeBridgeSignals();\n const platformDevice = readPlatformNativeDeviceId();\n const deviceId = bridgeSignals.deviceId || (includeStored ? readStoredDeviceId() : void 0) || platformDevice.deviceId;\n if (!deviceId || isMacroPlaceholder(deviceId) || isZeroedAdId(deviceId)) {\n return void 0;\n }\n return deviceId;\n}\nfunction getOrCreateStoredUuid(storageKey) {\n if (typeof window === \"undefined\") {\n return void 0;\n }\n const existing = readPersistentId(storageKey);\n if (existing) {\n writePersistentId(storageKey, existing);\n return existing;\n }\n const id = createUuid();\n writePersistentId(storageKey, id);\n return id;\n}\nfunction getOrCreateCtvSessionId() {\n const existing = readPersistentId(CTV_SESSION_STORAGE_KEY);\n if (existing) {\n writePersistentId(CTV_SESSION_STORAGE_KEY, existing);\n return existing;\n }\n const sessionId = createUuid();\n writePersistentId(CTV_SESSION_STORAGE_KEY, sessionId);\n return sessionId;\n}\nfunction readPersistentId(storageKey) {\n return readStoredString(storageKey) || readCookie(storageKey);\n}\nfunction writePersistentId(storageKey, value) {\n try {\n window.localStorage?.setItem(storageKey, value);\n } catch {\n }\n writeCookie(storageKey, value);\n}\nvar PERSISTENT_ID_COOKIE_MAX_AGE = 60 * 60 * 24 * 365 * 5;\nfunction readCookie(name) {\n if (typeof document === \"undefined\") {\n return void 0;\n }\n try {\n const prefix = encodeURIComponent(name) + \"=\";\n const parts = document.cookie ? document.cookie.split(\";\") : [];\n for (const part of parts) {\n const entry = part.trim();\n if (entry.startsWith(prefix)) {\n return decodeURIComponent(entry.slice(prefix.length)) || void 0;\n }\n }\n } catch {\n }\n return void 0;\n}\nfunction writeCookie(name, value) {\n if (typeof document === \"undefined\") {\n return;\n }\n try {\n document.cookie = encodeURIComponent(name) + \"=\" + encodeURIComponent(value) + \";path=/;max-age=\" + PERSISTENT_ID_COOKIE_MAX_AGE + \";SameSite=Lax\";\n } catch {\n }\n}\nfunction createUuid() {\n if (typeof crypto !== \"undefined\" && typeof crypto.randomUUID === \"function\") {\n return crypto.randomUUID();\n }\n const bytes = new Uint8Array(16);\n if (typeof crypto !== \"undefined\" && typeof crypto.getRandomValues === \"function\") {\n crypto.getRandomValues(bytes);\n } else {\n let seed = Date.now() ^ Math.floor(performanceNow() * 1e3);\n for (let i = 0; i < 16; i++) {\n seed = seed * 1103515245 + 12345 & 2147483647;\n bytes[i] = (seed ^ Math.floor(Math.random() * 256)) & 255;\n }\n }\n bytes[6] = (bytes[6] ?? 0) & 15 | 64;\n bytes[8] = (bytes[8] ?? 0) & 63 | 128;\n let hex = \"\";\n for (let i = 0; i < 16; i++) {\n hex += (bytes[i] ?? 0).toString(16).padStart(2, \"0\");\n }\n return hex.slice(0, 8) + \"-\" + hex.slice(8, 12) + \"-\" + hex.slice(12, 16) + \"-\" + hex.slice(16, 20) + \"-\" + hex.slice(20, 32);\n}\nfunction performanceNow() {\n try {\n if (typeof performance !== \"undefined\" && typeof performance.now === \"function\") {\n return performance.now();\n }\n } catch {\n }\n return 0;\n}\nfunction readPlatformNativeDeviceId() {\n if (typeof window === \"undefined\") return {};\n try {\n const adinfo = window.webapis?.adinfo;\n if (adinfo) {\n const tifa = typeof adinfo.getTIFA === \"function\" ? adinfo.getTIFA() : adinfo.tifa;\n if (typeof tifa === \"string\" && tifa && !isMacroPlaceholder(tifa)) {\n const lat = typeof adinfo.isLATEnabled === \"function\" ? adinfo.isLATEnabled() : void 0;\n return {\n deviceId: tifa,\n deviceIdType: \"tifa\",\n ...typeof lat === \"boolean\" ? { limitAdTracking: lat } : {}\n };\n }\n }\n } catch {\n }\n try {\n const webOSDev = window.webOSDev;\n if (webOSDev) {\n const lgudid = typeof webOSDev.LGUDID === \"function\" ? webOSDev.LGUDID() : webOSDev.lgudid ?? webOSDev.LGUDID;\n if (typeof lgudid === \"string\" && lgudid) {\n if (isZeroedAdId(lgudid)) {\n return { deviceIdType: \"lgudid\", limitAdTracking: true };\n }\n if (!isMacroPlaceholder(lgudid)) {\n return { deviceId: lgudid, deviceIdType: \"lgudid\", limitAdTracking: false };\n }\n }\n }\n } catch {\n }\n try {\n const roku = window.Roku;\n if (roku) {\n const rida = typeof roku.getPublisherUniqueId === \"function\" ? roku.getPublisherUniqueId() : roku.rida;\n if (typeof rida === \"string\" && rida && !isMacroPlaceholder(rida)) {\n return { deviceId: rida, deviceIdType: \"rida\", limitAdTracking: false };\n }\n }\n } catch {\n }\n return {};\n}\nvar ZEROED_AD_ID_PATTERNS = /* @__PURE__ */ new Set([\n \"38400000-8cf0-11bd-b23e-10b96e40000d\",\n \"00000000-0000-0000-0000-000000000000\"\n]);\nfunction isMacroPlaceholder(value) {\n const t = value.trim();\n return !t || /^(\\[[^\\]]*\\]|\\{[^}]*\\}|%%[^%]*%%)$/.test(t) || /^(unknown|null|undefined|none|n\\/a|\\$\\{[^}]+\\})$/i.test(t) || ZEROED_AD_ID_PATTERNS.has(t.toLowerCase());\n}\nfunction isZeroedAdId(value) {\n return ZEROED_AD_ID_PATTERNS.has(value.trim().toLowerCase());\n}\nfunction readNativeBridgeSignals() {\n for (const source of getNativeBridgeSources()) {\n const contentUrl = readBridgeValue(source, [\"contentUrl\", \"url\", \"videoUrl\", \"canonicalUrl\"]) || void 0;\n const appId = readBridgeValue(source, [\"appId\", \"msid\", \"applicationId\", \"packageName\"]) || void 0;\n const appName = readBridgeValue(source, [\"appName\", \"an\", \"applicationName\"]) || void 0;\n const deviceId = readBridgeValue(source, [\n \"rdid\",\n \"ifa\",\n \"advertisingId\",\n \"adId\",\n \"deviceId\",\n \"lgudid\",\n \"LGUDID\",\n \"tifa\",\n \"rida\",\n \"afai\",\n \"aaid\"\n ]) || void 0;\n if (!contentUrl && !deviceId && !appId && !appName) continue;\n const deviceIdType = readBridgeValue(source, [\n \"idtype\",\n \"deviceIdType\",\n \"advertisingIdType\",\n \"idType\"\n ]) || inferDeviceIdType();\n const limitAdTracking = readBridgeBoolean(source, [\n \"is_lat\",\n \"limitAdTracking\",\n \"limitedAdTracking\",\n \"lat\"\n ]);\n return {\n ...contentUrl ? { contentUrl } : {},\n ...appId ? { appId } : {},\n ...appName ? { appName } : {},\n ...deviceId ? { deviceId } : {},\n ...deviceId && deviceIdType ? { deviceIdType } : {},\n ...deviceId && limitAdTracking != null ? { limitAdTracking } : {}\n };\n }\n return {};\n}\nfunction getNativeBridgeSources() {\n if (typeof window === \"undefined\") {\n return [];\n }\n return [\n window.__STORMCLOUD_CTV_AD_INFO__,\n window.__STORMCLOUD_CTV__,\n window.stormcloudCtv,\n window.AiryTV,\n window.Android,\n window.webOS,\n window.tizen,\n window.amazon\n ].filter(Boolean);\n}\nfunction readBridgeValue(source, keys) {\n for (const key of keys) {\n const value = source?.[key];\n if (typeof value === \"string\" && value) {\n return value;\n }\n if (typeof value === \"function\") {\n try {\n const result = value.call(source);\n if (typeof result === \"string\" && result) {\n return result;\n }\n } catch {\n }\n }\n }\n return void 0;\n}\nfunction readBridgeBoolean(source, keys) {\n for (const key of keys) {\n const value = source?.[key];\n const normalized = normalizeBoolean(value);\n if (normalized != null) {\n return normalized;\n }\n if (typeof value === \"function\") {\n try {\n const result = normalizeBoolean(value.call(source));\n if (result != null) {\n return result;\n }\n } catch {\n }\n }\n }\n return void 0;\n}\nfunction readStoredDeviceId() {\n for (const key of DEVICE_ID_STORAGE_KEYS) {\n const value = readStoredString(key);\n if (value) {\n return value;\n }\n }\n return void 0;\n}\nfunction readStoredString(key) {\n if (typeof window === \"undefined\") {\n return void 0;\n }\n try {\n const value = window.localStorage?.getItem(key);\n return value || void 0;\n } catch {\n return void 0;\n }\n}\nfunction readStoredLimitAdTracking() {\n return normalizeBoolean(\n readStoredString(\"limitAdTracking\") || readStoredString(\"limitedAdTracking\") || readStoredString(\"is_lat\")\n );\n}\nfunction normalizeBoolean(value) {\n if (typeof value === \"boolean\") {\n return value;\n }\n if (typeof value === \"number\") {\n return value === 1;\n }\n if (typeof value === \"string\") {\n const normalized = value.toLowerCase();\n if (normalized === \"1\" || normalized === \"true\" || normalized === \"yes\") {\n return true;\n }\n if (normalized === \"0\" || normalized === \"false\" || normalized === \"no\") {\n return false;\n }\n }\n return void 0;\n}\n\n// src/utils/vastMacros.ts\nvar UNEXPANDED_MACRO_PATTERN = /^(\\[[^\\]]*\\]|\\{[^}]*\\}|%%[^%]*%%)$/;\nvar INVALID_VAST_PARAM_KEY = /^\\s|\\s$/;\nvar EXAMPLE_COM_URL = /example\\.com/i;\nvar CTV_UNSUPPORTED_PARAMS = [\n \"tfcd\",\n \"npa\",\n \"min_ad_duration\",\n \"max_ad_duration\",\n \"unviewed_position_start\",\n \"impl\",\n \"vad_type\",\n \"gdpr\",\n \"gdpr_consent\",\n \"us_privacy\"\n];\nvar INLINE_DEVICE_MACRO_REPLACEMENTS = [\n { pattern: /\\[RDID\\]/gi, getValue: (ctx) => ctx.deviceId },\n { pattern: /\\[IFA\\]/gi, getValue: (ctx) => ctx.deviceId },\n { pattern: /\\[ADVERTISING[_-]?ID(?:ENTIFIER)?\\]/gi, getValue: (ctx) => ctx.deviceId },\n { pattern: /\\[DEVICE[_-]?ID\\]/gi, getValue: (ctx) => ctx.deviceId },\n { pattern: /\\[IDTYPE\\]/gi, getValue: (ctx) => ctx.deviceIdType },\n { pattern: /\\{rdid\\}/gi, getValue: (ctx) => ctx.deviceId },\n { pattern: /\\{device[_-]?id\\}/gi, getValue: (ctx) => ctx.deviceId },\n { pattern: /\\{idtype\\}/gi, getValue: (ctx) => ctx.deviceIdType },\n { pattern: /%%ADVERTISING_IDENTIFIER_PLAIN%%/gi, getValue: (ctx) => ctx.deviceId },\n { pattern: /%%ADVERTISING_ID_OPT_OUT%%/gi, getValue: (ctx) => ctx.limitAdTracking != null ? ctx.limitAdTracking ? \"1\" : \"0\" : void 0 },\n { pattern: /%%ADVERTISING_ID_TYPE%%/gi, getValue: (ctx) => ctx.deviceIdType },\n { pattern: /%%ADVERTISING_ID%%/gi, getValue: (ctx) => ctx.deviceId },\n { pattern: /%%LIMIT_AD_TRACKING%%/gi, getValue: (ctx) => ctx.limitAdTracking != null ? ctx.limitAdTracking ? \"1\" : \"0\" : void 0 },\n { pattern: /%%SESSION_ID%%/gi, getValue: (ctx) => ctx.sessionId },\n { pattern: /%%CORRELATOR%%/gi, getValue: (ctx) => ctx.correlator }\n];\nfunction isMacroPlaceholder2(value) {\n if (value == null) return true;\n const trimmed = value.trim();\n if (!trimmed) return true;\n if (UNEXPANDED_MACRO_PATTERN.test(trimmed)) return true;\n return /^(unknown|null|undefined|none|n\\/a|\\$\\{[^}]+\\})$/i.test(trimmed);\n}\nfunction generateCorrelator() {\n if (typeof crypto !== \"undefined\" && crypto.getRandomValues) {\n try {\n const buf = new Uint32Array(2);\n crypto.getRandomValues(buf);\n const value = (buf[0] ?? 0) * 2097152 + ((buf[1] ?? 0) & 2097151);\n if (value > 0) {\n return String(value);\n }\n } catch {\n }\n }\n return String(Math.floor(Math.random() * Number.MAX_SAFE_INTEGER) + 1);\n}\nvar pageViewCorrelator;\nfunction getPageViewCorrelator() {\n const key = typeof window !== \"undefined\" ? window.location.pathname + window.location.search : \"\";\n if (!pageViewCorrelator || pageViewCorrelator.key !== key) {\n pageViewCorrelator = { key, value: generateCorrelator() };\n }\n return pageViewCorrelator.value;\n}\nfunction expandInlineMacroPlaceholders(baseUrl, ctx) {\n let url = baseUrl;\n for (const { pattern, getValue } of INLINE_DEVICE_MACRO_REPLACEMENTS) {\n const value = getValue(ctx);\n if (value != null && value !== \"\") {\n url = url.replace(pattern, encodeURIComponent(value));\n }\n }\n return url;\n}\nfunction applyDeviceIdentityParams(params, ctx) {\n const runtimeId = ctx.deviceId?.trim();\n const runtimeType = ctx.deviceIdType?.trim() || inferDeviceIdType();\n const tagRdid = params.get(\"rdid\");\n const tagType = params.get(\"idtype\");\n const tagLat = params.get(\"is_lat\");\n const latValue = ctx.limitAdTracking != null ? ctx.limitAdTracking ? \"1\" : \"0\" : void 0;\n if (runtimeId) {\n params.set(\"rdid\", runtimeId);\n params.set(\"idtype\", runtimeType || tagType || \"aaid\");\n params.set(\"is_lat\", latValue ?? (isMacroPlaceholder2(tagLat) ? \"0\" : tagLat));\n return;\n }\n if (!ctx.isCtv) {\n params.delete(\"rdid\");\n params.delete(\"idtype\");\n params.delete(\"is_lat\");\n return;\n }\n const tagRdidValid = Boolean(tagRdid && !isMacroPlaceholder2(tagRdid));\n const tagTypeValid = Boolean(tagType && !isMacroPlaceholder2(tagType));\n if (tagRdidValid && tagTypeValid && runtimeType && !isEquivalentDeviceIdType(tagType, runtimeType)) {\n params.delete(\"rdid\");\n params.delete(\"idtype\");\n params.delete(\"is_lat\");\n return;\n }\n if (tagRdidValid) {\n if (isMacroPlaceholder2(tagType) && runtimeType) {\n params.set(\"idtype\", runtimeType);\n }\n if (isMacroPlaceholder2(tagLat)) {\n params.set(\"is_lat\", latValue ?? \"0\");\n }\n return;\n }\n params.delete(\"rdid\");\n params.delete(\"idtype\");\n params.delete(\"is_lat\");\n}\nfunction removeBrokenAppNameOrphans(params, appName) {\n const toDelete = [];\n params.forEach((_value, key) => {\n if (!key || INVALID_VAST_PARAM_KEY.test(key)) {\n toDelete.push(key);\n }\n });\n if (appName && appName.includes(\"&\")) {\n for (const suffix of appName.split(\"&\").slice(1)) {\n const trimmed = suffix.replace(/^\\s+/, \"\");\n if (!trimmed) continue;\n toDelete.push(suffix, ` ${trimmed}`, trimmed);\n }\n }\n for (const key of new Set(toDelete)) {\n if (key) params.delete(key);\n }\n}\nfunction normalizeVastTagUrl(raw) {\n if (!raw) return raw;\n try {\n const url = new URL(raw);\n const anValue = url.searchParams.get(\"an\");\n if (anValue !== null) {\n const orphanFragments = [];\n url.searchParams.forEach((_value, key) => {\n if (key && INVALID_VAST_PARAM_KEY.test(key)) {\n orphanFragments.push(key.trim());\n }\n });\n if (orphanFragments.length > 0) {\n const reconstructed = [anValue.replace(/\\s+$/, \"\"), ...orphanFragments].filter(Boolean).join(\" & \");\n url.searchParams.forEach((_value, key) => {\n if (key && INVALID_VAST_PARAM_KEY.test(key)) {\n url.searchParams.delete(key);\n }\n });\n url.searchParams.set(\"an\", reconstructed);\n return url.toString().replace(\n /([?&]an=)([^&]*)/,\n (_match, prefix, val) => prefix + val.replace(/\\+/g, \"%20\")\n );\n }\n }\n removeBrokenAppNameOrphans(url.searchParams);\n return url.toString();\n } catch {\n return raw;\n }\n}\nfunction applyVastMacros(baseUrl, ctx) {\n const expandedUrl = expandInlineMacroPlaceholders(baseUrl, ctx);\n let url;\n try {\n url = new URL(normalizeVastTagUrl(expandedUrl));\n } catch {\n return replaceCorrelatorFallback(expandedUrl, ctx.correlator);\n }\n const params = url.searchParams;\n removeBrokenAppNameOrphans(params);\n params.set(\"correlator\", ctx.correlator);\n params.set(\"scor\", ctx.streamCorrelator);\n if (ctx.isCtv) {\n for (const key of CTV_UNSUPPORTED_PARAMS) {\n params.delete(key);\n }\n } else {\n params.set(\"unviewed_position_start\", \"1\");\n }\n if (ctx.pod != null) {\n params.set(\"pod\", String(ctx.pod));\n }\n params.delete(\"ppos\");\n params.delete(\"lip\");\n if (ctx.podMinDurationMs != null) {\n params.set(\"pmnd\", String(Math.max(0, Math.round(ctx.podMinDurationMs))));\n }\n if (ctx.podMaxDurationMs != null) {\n params.set(\"pmxd\", String(Math.max(0, Math.round(ctx.podMaxDurationMs))));\n }\n if (ctx.podMaxAds != null) {\n params.set(\"pmad\", String(Math.max(1, Math.round(ctx.podMaxAds))));\n }\n const existingUrl = params.get(\"url\") || \"\";\n if (EXAMPLE_COM_URL.test(existingUrl)) {\n params.delete(\"url\");\n params.delete(\"description_url\");\n }\n if (!ctx.isCtv && ctx.pageUrl) {\n if (isMacroPlaceholder2(params.get(\"url\"))) {\n params.set(\"url\", ctx.pageUrl);\n }\n if (isMacroPlaceholder2(params.get(\"description_url\"))) {\n params.set(\"description_url\", params.get(\"url\") || ctx.pageUrl);\n }\n }\n if (!ctx.isCtv) {\n params.delete(\"an\");\n params.delete(\"msid\");\n params.delete(\"sid\");\n }\n if (ctx.adWillPlayMuted != null) {\n params.set(\"vpmute\", ctx.adWillPlayMuted ? \"1\" : \"0\");\n }\n if (ctx.adWillAutoPlay != null) {\n params.set(\"vpa\", ctx.adWillAutoPlay ? \"auto\" : \"click\");\n }\n if (ctx.sessionId) {\n params.set(\"sid\", ctx.sessionId);\n }\n if (ctx.deviceTypeHint != null) {\n params.set(\"dth\", String(ctx.deviceTypeHint));\n } else if (ctx.isCtv) {\n params.set(\"dth\", \"5\");\n }\n applyDeviceIdentityParams(params, ctx);\n if (!ctx.isCtv) {\n const consent = ctx.consent;\n if (consent?.gdpr != null) {\n params.set(\"gdpr\", consent.gdpr);\n }\n if (consent?.gdprConsent != null) {\n params.set(\"gdpr_consent\", consent.gdprConsent);\n }\n if (consent?.usPrivacy != null) {\n params.set(\"us_privacy\", consent.usPrivacy);\n }\n }\n if (ctx.adTest) {\n params.set(\"adtest\", \"on\");\n }\n if (ctx.programTitle) {\n params.set(\"ct_ti\", ctx.programTitle);\n }\n if (ctx.channelName) {\n params.set(\"ct_ch\", ctx.channelName);\n }\n const staleKeys = [];\n params.forEach((value, key) => {\n if (isMacroPlaceholder2(value)) {\n staleKeys.push(key);\n }\n });\n for (const key of staleKeys) {\n params.delete(key);\n }\n removeBrokenAppNameOrphans(params);\n return url.toString();\n}\nfunction replaceCorrelatorFallback(baseUrl, correlator) {\n const correlatorRegex = /([?&])correlator=([^&]*)/;\n if (correlatorRegex.test(baseUrl)) {\n return baseUrl.replace(correlatorRegex, `$1correlator=${correlator}`);\n }\n const sep = baseUrl.includes(\"?\") ? \"&\" : \"?\";\n return `${baseUrl}${sep}correlator=${correlator}`;\n}\n\n// src/utils/devUrl.ts\nvar PRIVATE_HOST_PATTERNS = [\n /^localhost$/i,\n /^127\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}$/,\n /^0\\.0\\.0\\.0$/,\n /^::1$/,\n /^10\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}$/,\n /^192\\.168\\.\\d{1,3}\\.\\d{1,3}$/,\n /^172\\.(1[6-9]|2\\d|3[0-1])\\.\\d{1,3}\\.\\d{1,3}$/\n];\nfunction isLocalDevHost(hostname) {\n const host = hostname.replace(/^\\[/, \"\").replace(/\\]$/, \"\").toLowerCase();\n if (!host) return false;\n if (host.endsWith(\".local\") || host.endsWith(\".localhost\")) return true;\n return PRIVATE_HOST_PATTERNS.some((pattern) => pattern.test(host));\n}\nfunction toDevSafeUrl(rawUrl) {\n if (!rawUrl) return rawUrl ?? \"\";\n let url;\n try {\n url = new URL(rawUrl);\n } catch {\n return rawUrl;\n }\n if (url.protocol !== \"http:\" && url.protocol !== \"https:\") {\n return rawUrl;\n }\n if (!isLocalDevHost(url.hostname)) {\n return rawUrl;\n }\n const cleanPath = url.pathname.replace(/\\/{2,}/g, \"/\") || \"/index.html\";\n return `file://${cleanPath}`;\n}\n\n// src/utils/trackingIngest.ts\nvar DEFAULT_TRACKING_INGEST_CONFIG = {\n enabled: true,\n baseUrl: \"https://player-analytics-ingest-api-760490581852.us-central1.run.app/api/adstorm/player-tracking\"\n};\nvar trackingIngestConfig = {\n ...DEFAULT_TRACKING_INGEST_CONFIG\n};\nfunction isTrackingIngestEnabled() {\n return trackingIngestConfig.enabled === true;\n}\nfunction normalizeIngestBaseUrl(baseUrl) {\n return baseUrl.replace(/\\/+$/, \"\");\n}\nfunction buildTrackingIngestUrl(channel) {\n const base = normalizeIngestBaseUrl(trackingIngestConfig.baseUrl);\n if (channel === \"impressions\") {\n return `${base}/impressions/ingest`;\n }\n return `${base}/metrics/ingest`;\n}\nasync function ingestPlayerTracking(licenseKey, channel, body) {\n if (!isTrackingIngestEnabled() || !licenseKey) {\n return false;\n }\n try {\n const response = await fetch(buildTrackingIngestUrl(channel), {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: `License-Key ${licenseKey}`\n },\n body: JSON.stringify(body)\n });\n if (!response.ok) {\n console.warn(\n `[StormcloudVideoPlayer] Tracking ingest failed (${response.status}) for ${channel}`\n );\n return false;\n }\n return true;\n } catch (error) {\n console.warn(\n `[StormcloudVideoPlayer] Tracking ingest error for ${channel}:`,\n error\n );\n return false;\n }\n}\n\n// src/utils/tracking.ts\nvar cachedBrowserId = null;\nfunction buildAnalyticsContext(config) {\n const context = {};\n if (config.debugAdTiming) {\n context.debugAdTiming = true;\n }\n if (config.isLiveStream !== void 0) {\n context.inputStreamType = config.isLiveStream ? \"live\" : \"vod\";\n }\n return context;\n}\nfunction getClientInfo() {\n const ua = navigator.userAgent;\n const platform = navigator.platform;\n const vendor = navigator.vendor || \"\";\n const maxTouchPoints = navigator.maxTouchPoints || 0;\n const memory = navigator.deviceMemory || null;\n const hardwareConcurrency = navigator.hardwareConcurrency || 1;\n const screenInfo = {\n width: screen?.width,\n height: screen?.height,\n availWidth: screen?.availWidth,\n availHeight: screen?.availHeight,\n orientation: screen?.orientation?.type || \"\",\n pixelDepth: screen?.pixelDepth\n };\n let deviceType = \"desktop\";\n let brand = \"Unknown\";\n let os = \"Unknown\";\n let model = \"\";\n let isSmartTV = false;\n let isAndroid = false;\n let isWebView = false;\n let isWebApp = false;\n if (ua.includes(\"Web0S\")) {\n brand = \"LG\";\n os = \"webOS\";\n isSmartTV = true;\n deviceType = \"tv\";\n const webosMatch = ua.match(/Web0S\\/([^\\s]+)/);\n model = webosMatch ? `webOS ${webosMatch[1]}` : \"webOS TV\";\n } else if (ua.includes(\"Tizen\")) {\n brand = \"Samsung\";\n os = \"Tizen\";\n isSmartTV = true;\n deviceType = \"tv\";\n const tizenMatch = ua.match(/Tizen\\/([^\\s]+)/);\n const tvMatch = ua.match(/(?:Smart-TV|SMART-TV|TV)/i) ? \"Smart TV\" : \"\";\n model = tizenMatch ? `Tizen ${tizenMatch[1]} ${tvMatch}`.trim() : \"Tizen TV\";\n } else if (ua.includes(\"Philips\")) {\n brand = \"Philips\";\n os = \"Saphi\";\n isSmartTV = true;\n deviceType = \"tv\";\n } else if (ua.includes(\"Sharp\") || ua.includes(\"AQUOS\")) {\n brand = \"Sharp\";\n os = \"Android TV\";\n isSmartTV = true;\n deviceType = \"tv\";\n } else if (ua.includes(\"Android\") && (ua.includes(\"Sony\") || vendor.includes(\"Sony\"))) {\n brand = \"Sony\";\n os = \"Android TV\";\n isSmartTV = true;\n deviceType = \"tv\";\n } else if (ua.includes(\"Android\") && (ua.includes(\"NetCast\") || ua.includes(\"LG\"))) {\n brand = \"LG\";\n os = \"Android TV\";\n isSmartTV = true;\n deviceType = \"tv\";\n } else if (ua.includes(\" Roku\") || ua.includes(\"Roku/\")) {\n brand = \"Roku\";\n os = \"Roku OS\";\n isSmartTV = true;\n deviceType = \"tv\";\n } else if (ua.includes(\"AppleTV\")) {\n brand = \"Apple\";\n os = \"tvOS\";\n isSmartTV = true;\n deviceType = \"tv\";\n }\n if (ua.includes(\"Android\")) {\n isAndroid = true;\n os = \"Android\";\n deviceType = /Mobile/.test(ua) ? \"mobile\" : \"tablet\";\n if (ua.includes(\"Android\") && (maxTouchPoints === 0 || ua.includes(\"Google TV\") || ua.includes(\"XiaoMi\"))) {\n deviceType = \"tv\";\n isSmartTV = true;\n brand = brand === \"Unknown\" ? \"Android TV\" : brand;\n }\n const androidModelMatch = ua.match(/\\(([^)]*Android[^)]*)\\)/);\n if (androidModelMatch && androidModelMatch[1]) {\n model = androidModelMatch[1];\n }\n }\n if (/iPad|iPhone|iPod/.test(ua)) {\n os = \"iOS\";\n deviceType = \"mobile\";\n brand = \"Apple\";\n if (navigator.maxTouchPoints > 1 && /iPad/.test(ua)) {\n deviceType = \"tablet\";\n }\n }\n if (!isAndroid && !isSmartTV && !/Mobile/.test(ua)) {\n if (ua.includes(\"Windows\")) {\n os = \"Windows\";\n deviceType = \"desktop\";\n } else if (ua.includes(\"Mac\") && !/iPhone/.test(ua)) {\n os = \"macOS\";\n deviceType = \"desktop\";\n if (maxTouchPoints > 1) deviceType = \"tablet\";\n } else if (ua.includes(\"Linux\")) {\n os = \"Linux\";\n deviceType = \"desktop\";\n }\n }\n if (brand === \"Unknown\") {\n if (vendor.includes(\"Google\") || ua.includes(\"Chrome\")) brand = \"Google\";\n if (vendor.includes(\"Apple\")) brand = \"Apple\";\n if (vendor.includes(\"Samsung\") || ua.includes(\"SM-\")) brand = \"Samsung\";\n }\n isWebView = /wv|WebView|Linux; U;/.test(ua);\n if (window?.outerHeight === 0 && window?.outerWidth === 0) {\n isWebView = true;\n }\n isWebApp = window.matchMedia(\"(display-mode: standalone)\").matches || window.navigator.standalone === true || window.screen?.orientation?.angle !== void 0;\n return {\n brand,\n os,\n model: model || ua.substring(0, 50) + \"...\",\n deviceType,\n isSmartTV,\n isAndroid,\n isWebView,\n isWebApp,\n domain: window.location.hostname,\n origin: window.location.origin,\n path: window.location.pathname,\n userAgent: ua,\n vendor,\n platform,\n screen: screenInfo,\n hardwareConcurrency,\n deviceMemory: memory,\n maxTouchPoints,\n language: navigator.language,\n languages: navigator.languages?.join(\",\") || \"\",\n cookieEnabled: navigator.cookieEnabled,\n doNotTrack: navigator.doNotTrack || \"\",\n referrer: document.referrer,\n visibilityState: document.visibilityState\n };\n}\nasync function sha256Hex(input) {\n if (typeof crypto !== \"undefined\" && crypto.subtle?.digest) {\n try {\n await crypto.subtle.digest(\"SHA-256\", new Uint8Array([1, 2, 3]));\n let encodedData;\n if (typeof TextEncoder !== \"undefined\") {\n encodedData = new TextEncoder().encode(input);\n } else {\n const utf8 = unescape(encodeURIComponent(input));\n const buffer = new Uint8Array(utf8.length);\n for (let i = 0; i < utf8.length; i++) {\n buffer[i] = utf8.charCodeAt(i);\n }\n encodedData = buffer;\n }\n const hashBuffer = await crypto.subtle.digest(\"SHA-256\", encodedData);\n return Array.from(new Uint8Array(hashBuffer)).map((b) => b.toString(16).padStart(2, \"0\")).join(\"\");\n } catch {\n console.warn(\n \"[StormcloudVideoPlayer] crypto.subtle not supported, using fallback hash\"\n );\n }\n }\n let hash = 0;\n for (let i = 0; i < input.length; i++) {\n const char = input.charCodeAt(i);\n hash = (hash << 5) - hash + char;\n hash = hash & hash;\n }\n const fallbackHash = Math.abs(hash).toString(16).padStart(8, \"0\");\n const timestamp = Date.now().toString(16).padStart(12, \"0\");\n const random = Math.random().toString(16).substring(2, 14).padStart(12, \"0\");\n return (fallbackHash + timestamp + random).padEnd(64, \"0\");\n}\nfunction resolvePlayerIdentitySeed(clientInfo) {\n const nativeDeviceId = resolveNativeDeviceId(clientInfo.isSmartTV);\n if (nativeDeviceId) {\n return `device:${nativeDeviceId}`;\n }\n const persistedId = getOrCreateStoredUuid(PLAYER_ID_STORAGE_KEY);\n if (persistedId) {\n return `persisted:${persistedId}`;\n }\n return `fingerprint:${JSON.stringify(clientInfo)}`;\n}\nasync function getBrowserID(clientInfo) {\n if (cachedBrowserId) {\n return cachedBrowserId;\n }\n cachedBrowserId = await sha256Hex(resolvePlayerIdentitySeed(clientInfo));\n return cachedBrowserId;\n}\nfunction canPublish(licenseKey) {\n return Boolean(isTrackingIngestEnabled() && licenseKey);\n}\nasync function buildPlayerMetricEvent(context = {}, flags = {}) {\n const clientInfo = getClientInfo();\n const debugAdTiming = !!context.debugAdTiming;\n if (debugAdTiming) {\n console.log(\"[StormcloudVideoPlayer] clientInfo: \", JSON.stringify(clientInfo, null, 2));\n }\n const playerId = await getBrowserID(clientInfo);\n if (debugAdTiming) {\n console.log(\"[StormcloudVideoPlayer] playerId: \", playerId);\n }\n const captureAt = flags.captureAt ?? (/* @__PURE__ */ new Date()).toISOString();\n return {\n player_id: playerId,\n device_type: clientInfo.deviceType,\n os: clientInfo.os.toLowerCase(),\n ad_loaded: flags.adLoaded ?? false,\n ad_detect: flags.adDetect ?? false,\n capture_at: captureAt,\n ...context.inputStreamType ? { input_stream_type: context.inputStreamType } : {}\n };\n}\nasync function sendInitialTracking(licenseKey, context = {}) {\n if (!canPublish(licenseKey)) return;\n try {\n const metricEvent = await buildPlayerMetricEvent(context, {\n adLoaded: false,\n adDetect: false\n });\n await ingestPlayerTracking(licenseKey, \"metrics\", {\n events: [metricEvent]\n });\n } catch (error) {\n console.error(\n \"[StormcloudVideoPlayer] Error sending initial tracking data:\",\n error\n );\n }\n}\nasync function sendHeartbeat(licenseKey, context = {}, flags = {}) {\n if (!canPublish(licenseKey)) return;\n try {\n const heartbeatData = await buildPlayerMetricEvent(context, flags);\n await ingestPlayerTracking(licenseKey, \"metrics\", {\n events: [heartbeatData]\n });\n } catch (error) {\n console.error(\"[StormcloudVideoPlayer] Error sending heartbeat:\", error);\n }\n}\n\n// src/player/AdConfigManager.ts\nvar AdConfigManager = class {\n constructor(config, video) {\n this.vmapBreaks = [];\n this.consumedVmapBreakIds = /* @__PURE__ */ new Set();\n this.streamCorrelator = generateCorrelator();\n this.consentSignals = {};\n this.podCounter = 0;\n this.podAssignedByPrefetch = false;\n this.lastHeartbeatTime = 0;\n this.defaultPodMaxAds = 6;\n this.defaultPodMaxDurationMs = 12e4;\n this.config = config;\n this.video = video;\n }\n get viewCorrelator() {\n return getPageViewCorrelator();\n }\n get debug() {\n return !!this.config.debugAdTiming;\n }\n isVmapEnabled() {\n return !!(this.config.isVmap && this.config.vmapUrl?.trim());\n }\n async fetchAdConfiguration() {\n if (this.isVmapEnabled()) {\n await this.fetchAndParseVmap(this.config.vmapUrl);\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] VMAP mode enabled\");\n }\n return;\n }\n const vastMode = this.config.vastMode || \"default\";\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] VAST mode:\", vastMode);\n }\n if (vastMode === \"adstorm\") {\n if (!this.config.licenseKey) {\n if (this.debug) {\n console.warn(\n \"[StormcloudVideoPlayer] AdStorm mode requires a license key\"\n );\n }\n return;\n }\n const vastEndpoint = `https://adstorm.co/api-adstorm-dev/adstorm/vast/${this.config.licenseKey}`;\n this.apiVastTagUrl = vastEndpoint;\n if (this.debug) {\n console.log(\n \"[StormcloudVideoPlayer] Using AdStorm VAST endpoint (adstorm mode):\",\n vastEndpoint\n );\n }\n return;\n }\n if (this.config.vastTagUrl) {\n this.apiVastTagUrl = normalizeVastTagUrl(this.config.vastTagUrl);\n if (this.debug) {\n console.log(\n \"[StormcloudVideoPlayer] Using custom VAST tag URL:\",\n this.apiVastTagUrl\n );\n }\n return;\n }\n const apiUrl = \"https://adstorm.co/api-adstorm-dev/adstorm/ads/web\";\n if (this.debug) {\n console.log(\n \"[StormcloudVideoPlayer] Fetching ad configuration from:\",\n apiUrl\n );\n }\n const headers = {};\n if (this.config.licenseKey) {\n headers[\"Authorization\"] = `Bearer ${this.config.licenseKey}`;\n }\n const response = await fetch(apiUrl, { headers });\n if (!response.ok) {\n if (this.debug) {\n console.warn(\n `[StormcloudVideoPlayer] Failed to fetch ad configuration: ${response.status}`\n );\n }\n return;\n }\n const data = await response.json();\n const imaPayload = data.response?.ima?.[\"publisherdesk.ima\"]?.payload;\n if (imaPayload) {\n let decodedPayload = imaPayload;\n try {\n decodedPayload = decodeURIComponent(imaPayload);\n } catch {\n console.warn(\"[StormcloudVideoPlayer] imaPayload was not URI-encoded; using as-is:\", imaPayload);\n }\n console.log(\"[StormcloudVideoPlayer] Raw VAST tag URL (from API):\", decodedPayload);\n this.apiVastTagUrl = normalizeVastTagUrl(decodedPayload);\n if (this.debug) {\n console.log(\n \"[StormcloudVideoPlayer] Normalized VAST tag URL:\",\n this.apiVastTagUrl\n );\n }\n } else {\n if (this.debug) {\n console.warn(\n \"[StormcloudVideoPlayer] No VAST tag URL found in /ads/web response\"\n );\n }\n }\n const numberAds = data.response?.options?.vast?.cue_tones?.number_ads;\n if (numberAds != null && numberAds > 0) {\n this.apiNumberAds = numberAds;\n if (this.debug) {\n console.log(\n \"[StormcloudVideoPlayer] Number of ads per break from API:\",\n this.apiNumberAds\n );\n }\n }\n }\n async fetchAndParseVmap(vmapUrl) {\n if (!vmapUrl.trim()) {\n return;\n }\n try {\n const response = await fetch(vmapUrl);\n if (!response.ok) {\n throw new Error(`Failed to fetch VMAP (${response.status})`);\n }\n const vmapXml = await response.text();\n this.vmapBreaks = this.parseVmapToBreaks(vmapXml);\n this.consumedVmapBreakIds.clear();\n if (this.debug) {\n console.log(\n `[StormcloudVideoPlayer] Loaded ${this.vmapBreaks.length} VMAP ad break(s) from:`,\n vmapUrl\n );\n }\n } catch (error) {\n this.vmapBreaks = [];\n this.consumedVmapBreakIds.clear();\n if (this.debug) {\n console.warn(\"[StormcloudVideoPlayer] Failed to load VMAP:\", error);\n }\n }\n }\n parseVmapToBreaks(vmapXml) {\n if (typeof DOMParser === \"undefined\") {\n return [];\n }\n const doc = new DOMParser().parseFromString(vmapXml, \"application/xml\");\n if (doc.querySelector(\"parsererror\")) {\n if (this.debug) {\n console.warn(\"[StormcloudVideoPlayer] Invalid VMAP XML received\");\n }\n return [];\n }\n const VMAP_NS = \"http://www.iab.net/videosuite/vmap\";\n let adBreakNodes = Array.from(doc.getElementsByTagNameNS(VMAP_NS, \"AdBreak\"));\n if (adBreakNodes.length === 0) {\n adBreakNodes = Array.from(\n doc.querySelectorAll(\"AdBreak, vmap\\\\:AdBreak\")\n );\n }\n if (adBreakNodes.length === 0) {\n adBreakNodes = Array.from(doc.getElementsByTagName(\"*\")).filter(\n (el) => el.localName === \"AdBreak\"\n );\n }\n const parsed = [];\n adBreakNodes.forEach((node, index) => {\n const timeOffsetRaw = (node.getAttribute(\"timeOffset\") || \"\").trim();\n const startTimeMs = this.parseVmapTimeOffsetToMs(timeOffsetRaw);\n if (startTimeMs == null) {\n return;\n }\n let adTagNode = node.getElementsByTagNameNS(VMAP_NS, \"AdTagURI\")[0];\n if (!adTagNode) {\n adTagNode = node.querySelector(\"AdTagURI, vmap\\\\:AdTagURI\") ?? void 0;\n }\n const adTagUrl = (adTagNode?.textContent || \"\").trim();\n if (!adTagUrl) {\n return;\n }\n const breakId = node.getAttribute(\"breakId\") || `vmap-break-${index}-${timeOffsetRaw || \"unknown\"}`;\n parsed.push({\n id: breakId,\n startTimeMs,\n vastTagUrl: adTagUrl\n });\n });\n parsed.sort((a, b) => {\n const aStart = a.startTimeMs < 0 ? Number.MAX_SAFE_INTEGER : a.startTimeMs;\n const bStart = b.startTimeMs < 0 ? Number.MAX_SAFE_INTEGER : b.startTimeMs;\n return aStart - bStart;\n });\n return parsed;\n }\n parseVmapTimeOffsetToMs(timeOffset) {\n if (!timeOffset) {\n return void 0;\n }\n const normalized = timeOffset.trim().toLowerCase();\n if (normalized === \"start\") {\n return 0;\n }\n if (normalized === \"end\") {\n return -1;\n }\n const hms = timeOffset.match(\n /^(\\d{1,2}):(\\d{2}):(\\d{2})(?:\\.(\\d{1,3}))?$/\n );\n if (hms) {\n const [, hh, mm, ss, ms = \"0\"] = hms;\n const hours = Number(hh);\n const minutes = Number(mm);\n const seconds = Number(ss);\n const millis = Number(ms.padEnd(3, \"0\").slice(0, 3));\n return (hours * 3600 + minutes * 60 + seconds) * 1e3 + millis;\n }\n const percent = timeOffset.match(/^(\\d+(?:\\.\\d+)?)%$/);\n if (percent) {\n const ratio = Number(percent[1]) / 100;\n const durationSec = this.video.duration;\n if (Number.isFinite(durationSec) && durationSec > 0) {\n return Math.floor(durationSec * 1e3 * ratio);\n }\n return void 0;\n }\n return void 0;\n }\n getAdBreakKey(adBreak) {\n if (adBreak.id) {\n return adBreak.id;\n }\n return `${adBreak.startTimeMs}-${adBreak.vastTagUrl || \"\"}`;\n }\n resolveBreakStartMs(adBreak) {\n if (adBreak.startTimeMs >= 0) {\n return adBreak.startTimeMs;\n }\n if (adBreak.startTimeMs === -1) {\n const durationSec = this.video.duration;\n if (Number.isFinite(durationSec) && durationSec > 0) {\n return Math.floor(durationSec * 1e3);\n }\n }\n return void 0;\n }\n findCurrentOrNextBreak(nowMs) {\n const schedule = this.vmapBreaks;\n let candidate;\n const tol = this.config.driftToleranceMs ?? 1e3;\n for (const b of schedule) {\n if (this.consumedVmapBreakIds.has(this.getAdBreakKey(b))) {\n continue;\n }\n const breakStartMs = this.resolveBreakStartMs(b);\n if (breakStartMs == null) {\n continue;\n }\n if (breakStartMs <= nowMs + tol && (candidate == null || breakStartMs > (this.resolveBreakStartMs(candidate) ?? 0))) {\n candidate = b;\n }\n }\n return candidate;\n }\n findBreakForTime(nowMs) {\n const schedule = this.vmapBreaks;\n for (const b of schedule) {\n if (this.consumedVmapBreakIds.has(this.getAdBreakKey(b))) {\n continue;\n }\n const breakStartMs = this.resolveBreakStartMs(b);\n if (breakStartMs == null) {\n continue;\n }\n if (b.durationMs) {\n const end = breakStartMs + b.durationMs;\n if (nowMs >= breakStartMs && nowMs < end) {\n return b;\n }\n continue;\n }\n if (nowMs >= breakStartMs) {\n return b;\n }\n }\n return void 0;\n }\n selectVastTagsForBreak(b) {\n if (!b || !b.vastTagUrl) return void 0;\n if (b.vastTagUrl.includes(\",\")) {\n return b.vastTagUrl.split(\",\").map((s) => s.trim()).filter((s) => s.length > 0);\n }\n return [b.vastTagUrl];\n }\n beginNewAdPod() {\n this.podCounter++;\n }\n resolvePodParams(breakDurationMs) {\n const maxDurationMs = breakDurationMs != null && breakDurationMs > 0 ? breakDurationMs : this.config.podMaxDurationMs != null && this.config.podMaxDurationMs > 0 ? this.config.podMaxDurationMs : this.defaultPodMaxDurationMs;\n const maxAds = this.config.podMaxAds && this.config.podMaxAds > 0 ? this.config.podMaxAds : this.apiNumberAds && this.apiNumberAds > 0 ? this.apiNumberAds : this.defaultPodMaxAds;\n const minDurationMs = this.config.podExactDuration && maxDurationMs != null ? maxDurationMs : 0;\n return { maxAds, minDurationMs, maxDurationMs };\n }\n getPalDescriptionUrl() {\n if (!this.apiVastTagUrl) return void 0;\n try {\n const params = new URL(this.apiVastTagUrl).searchParams;\n return params.get(\"description_url\") || params.get(\"url\") || void 0;\n } catch {\n return void 0;\n }\n }\n generatePodVastUrl(baseUrl, podParams, adPlayer, palNonce, inAdBreak) {\n const adWillPlayMuted = inAdBreak ? adPlayer.getOriginalMutedState() : this.video.muted;\n const envSignals = resolveVastEnvironmentSignals(!!this.config.ctvAdRequest);\n const urlWithMacros = applyVastMacros(baseUrl, {\n correlator: this.viewCorrelator,\n streamCorrelator: this.streamCorrelator,\n pod: this.podCounter > 0 ? this.podCounter : void 0,\n podMaxAds: podParams.maxAds,\n podMinDurationMs: podParams.minDurationMs,\n podMaxDurationMs: podParams.maxDurationMs,\n isCtv: envSignals.isCtv,\n pageUrl: !envSignals.isCtv && typeof window !== \"undefined\" ? toDevSafeUrl(window.location.href) : void 0,\n adWillPlayMuted,\n adWillAutoPlay: !!this.config.autoplay,\n sessionId: envSignals.sessionId,\n deviceId: envSignals.deviceId,\n deviceIdType: envSignals.deviceIdType,\n limitAdTracking: envSignals.limitAdTracking,\n deviceTypeHint: envSignals.deviceTypeHint,\n adTest: this.config.adTest,\n ...this.config.programTitle ? { programTitle: this.config.programTitle } : {},\n ...this.config.channelName ? { channelName: this.config.channelName } : {},\n consent: this.consentSignals\n });\n const finalUrl = palNonce.injectNonce(urlWithMacros);\n console.log(\n `[StormcloudVideoPlayer] Resolved optimized-pod request URL (pod=${this.podCounter}, pmad=${podParams.maxAds}, pmnd=${podParams.minDurationMs}, pmxd=${podParams.maxDurationMs ?? \"?\"}):`,\n finalUrl\n );\n return finalUrl;\n }\n // --- Tracking ---\n initializeTracking() {\n sendInitialTracking(this.config.licenseKey, buildAnalyticsContext(this.config)).then(() => {\n this.heartbeatInterval = window.setInterval(() => {\n this.sendHeartbeatIfNeeded();\n }, 5e3);\n }).catch((error) => {\n if (this.debug) {\n console.warn(\n \"[StormcloudVideoPlayer] Failed to send initial tracking:\",\n error\n );\n }\n this.heartbeatInterval = window.setInterval(() => {\n this.sendHeartbeatIfNeeded();\n }, 5e3);\n });\n }\n sendHeartbeatIfNeeded() {\n const now = Date.now();\n if (!this.lastHeartbeatTime || now - this.lastHeartbeatTime > 3e4) {\n this.lastHeartbeatTime = now;\n sendHeartbeat(this.config.licenseKey, buildAnalyticsContext(this.config)).catch((error) => {\n if (this.debug) {\n console.warn(\n \"[StormcloudVideoPlayer] Failed to send heartbeat:\",\n error\n );\n }\n });\n }\n }\n destroyTracking() {\n if (this.heartbeatInterval) {\n clearInterval(this.heartbeatInterval);\n this.heartbeatInterval = void 0;\n }\n }\n};\n// Annotate the CommonJS export names for ESM import in node:\n0 && (module.exports = {\n AdConfigManager\n});\n"]}
|
|
@@ -8,7 +8,7 @@ declare class AdConfigManager {
|
|
|
8
8
|
apiVastTagUrl: string | undefined;
|
|
9
9
|
apiNumberAds: number | undefined;
|
|
10
10
|
readonly streamCorrelator: string;
|
|
11
|
-
|
|
11
|
+
get viewCorrelator(): string;
|
|
12
12
|
consentSignals: VastConsentSignals;
|
|
13
13
|
podCounter: number;
|
|
14
14
|
podAssignedByPrefetch: boolean;
|