stormcloud-video-player 0.8.74 → 0.8.76

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.
Files changed (40) hide show
  1. package/dist/stormcloud-vp.min.js +1 -1
  2. package/lib/Player.cjs +10 -12
  3. package/lib/Player.cjs.map +1 -1
  4. package/lib/StormcloudPlayer.cjs +165 -79
  5. package/lib/StormcloudPlayer.cjs.map +1 -1
  6. package/lib/index.cjs +176 -134
  7. package/lib/index.cjs.map +1 -1
  8. package/lib/index.d.cts +1 -1
  9. package/lib/index.d.ts +5 -19
  10. package/lib/index.js +170 -132
  11. package/lib/index.js.map +1 -1
  12. package/lib/player/AdBreakOrchestrator.cjs +45 -13
  13. package/lib/player/AdBreakOrchestrator.cjs.map +1 -1
  14. package/lib/player/AdConfigManager.cjs +19 -4
  15. package/lib/player/AdConfigManager.cjs.map +1 -1
  16. package/lib/player/AdConfigManager.d.cts +3 -0
  17. package/lib/player/EdgePodRequest.cjs +31 -1
  18. package/lib/player/EdgePodRequest.cjs.map +1 -1
  19. package/lib/player/EdgePodRequest.d.cts +21 -3
  20. package/lib/player/FloorLadder.cjs +86 -27
  21. package/lib/player/FloorLadder.cjs.map +1 -1
  22. package/lib/player/FloorLadder.d.cts +8 -7
  23. package/lib/player/StormcloudVideoPlayer.cjs +165 -79
  24. package/lib/player/StormcloudVideoPlayer.cjs.map +1 -1
  25. package/lib/player/StormcloudVideoPlayer.d.cts +3 -9
  26. package/lib/players/HlsPlayer.cjs +165 -79
  27. package/lib/players/HlsPlayer.cjs.map +1 -1
  28. package/lib/players/index.cjs +165 -79
  29. package/lib/players/index.cjs.map +1 -1
  30. package/lib/props.cjs +10 -12
  31. package/lib/props.cjs.map +1 -1
  32. package/lib/types.d.cts +3 -7
  33. package/lib/ui/StormcloudVideoPlayer.cjs +169 -140
  34. package/lib/ui/StormcloudVideoPlayer.cjs.map +1 -1
  35. package/lib/utils/tracking.cjs +7 -0
  36. package/lib/utils/tracking.cjs.map +1 -1
  37. package/lib/utils/tracking.d.cts +2 -1
  38. package/lib/utils/vastMacros.cjs +2 -1
  39. package/lib/utils/vastMacros.cjs.map +1 -1
  40. package/package.json +1 -1
@@ -209,6 +209,9 @@ __export(tracking_exports, {
209
209
  getBrowserID: function getBrowserID1() {
210
210
  return getBrowserID;
211
211
  },
212
+ getCachedBrowserId: function getCachedBrowserId1() {
213
+ return getCachedBrowserId;
214
+ },
212
215
  getClientInfo: function getClientInfo1() {
213
216
  return getClientInfo;
214
217
  },
@@ -999,6 +1002,9 @@ function resolvePlayerIdentitySeed(clientInfo) {
999
1002
  }
1000
1003
  return "fingerprint:".concat(JSON.stringify(clientInfo));
1001
1004
  }
1005
+ function getCachedBrowserId() {
1006
+ return cachedBrowserId !== null && cachedBrowserId !== void 0 ? cachedBrowserId : void 0;
1007
+ }
1002
1008
  function getBrowserID(clientInfo) {
1003
1009
  return _async_to_generator(function() {
1004
1010
  return _ts_generator(this, function(_state) {
@@ -1348,6 +1354,7 @@ function sendHeartbeat(_0) {
1348
1354
  0 && (module.exports = {
1349
1355
  buildAnalyticsContext: buildAnalyticsContext,
1350
1356
  getBrowserID: getBrowserID,
1357
+ getCachedBrowserId: getCachedBrowserId,
1351
1358
  getClientInfo: getClientInfo,
1352
1359
  sendAdDetectTracking: sendAdDetectTracking,
1353
1360
  sendAdImpressionTracking: sendAdImpressionTracking,
@@ -1 +1 @@
1
- {"version":3,"sources":["d:\\project\\stormcloud-vp\\lib\\utils\\tracking.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","tracking_exports","buildAnalyticsContext","getBrowserID","getClientInfo","sendAdDetectTracking","sendAdImpressionTracking","sendAdLoadedTracking","sendHeartbeat","sendInitialTracking","module","exports","DEFAULT_TRACKING_INGEST_CONFIG","enabled","baseUrl","trackingIngestConfig","isTrackingIngestEnabled","normalizeIngestBaseUrl","replace","buildTrackingIngestUrl","channel","base","ingestPlayerTracking","licenseKey","body","response","error","fetch","method","headers","Authorization","JSON","stringify","ok","console","warn","status","PLAYER_ID_STORAGE_KEY","DEVICE_ID_STORAGE_KEYS","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","gameconsole","stb","settopbox","inferDeviceIdType","navigator","ua","userAgent","test","resolveNativeDeviceId","includeStored","bridgeSignals","readNativeBridgeSignals","platformDevice","readPlatformNativeDeviceId","deviceId","readStoredDeviceId","isMacroPlaceholder","isZeroedAdId","getOrCreateStoredUuid","storageKey","window","existing","readPersistentId","writePersistentId","id","createUuid","readStoredString","readCookie","localStorage","setItem","writeCookie","PERSISTENT_ID_COOKIE_MAX_AGE","document","prefix","encodeURIComponent","parts","cookie","split","part","entry","trim","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","deviceIdType","limitAdTracking","webOSDev","lgudid","LGUDID","roku","Roku","rida","getPublisherUniqueId","ZEROED_AD_ID_PATTERNS","Set","t","has","toLowerCase","getNativeBridgeSources","source","contentUrl","readBridgeValue","appId","appName","readBridgeBoolean","__STORMCLOUD_CTV_AD_INFO__","__STORMCLOUD_CTV__","stormcloudCtv","AiryTV","Android","webOS","tizen","amazon","filter","Boolean","keys","result","normalized","normalizeBoolean","getItem","cachedBrowserId","config","context","contentNetwork","contentChannel","channelName","contentTitle","programTitle","debugAdTiming","isLiveStream","inputStreamType","screen","platform","vendor","maxTouchPoints","memory","deviceMemory","hardwareConcurrency","screenInfo","width","height","availWidth","availHeight","orientation","type","pixelDepth","deviceType","brand","os","model","isSmartTV","isAndroid","isWebView","isWebApp","includes","webosMatch","match","tizenMatch","tvMatch","androidModelMatch","outerHeight","outerWidth","matchMedia","matches","standalone","angle","substring","domain","location","hostname","origin","path","pathname","language","languages","join","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","canPublish","buildPlayerMetricEvent","flags","playerId","captureAt","log","toISOString","player_id","device_type","ad_loaded","adLoaded","ad_detect","adDetect","capture_at","input_stream_type","metricEvent","events","adDetectInfo","adLoadedInfo","adImpressionInfo","ad_played_count","ad_url","adUrl","content_network","content_channel","content_title","heartbeatData"],"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/utils/tracking.ts\nvar tracking_exports = {};\n__export(tracking_exports, {\n buildAnalyticsContext: () => buildAnalyticsContext,\n getBrowserID: () => getBrowserID,\n getClientInfo: () => getClientInfo,\n sendAdDetectTracking: () => sendAdDetectTracking,\n sendAdImpressionTracking: () => sendAdImpressionTracking,\n sendAdLoadedTracking: () => sendAdLoadedTracking,\n sendHeartbeat: () => sendHeartbeat,\n sendInitialTracking: () => sendInitialTracking\n});\nmodule.exports = __toCommonJS(tracking_exports);\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/vastEnvironmentSignals.ts\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 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};\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 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 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 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/tracking.ts\nvar cachedBrowserId = null;\nfunction buildAnalyticsContext(config) {\n const context = {};\n const contentNetwork = config.contentNetwork?.trim();\n const contentChannel = config.channelName?.trim();\n const contentTitle = config.programTitle?.trim();\n if (contentNetwork) context.contentNetwork = contentNetwork;\n if (contentChannel) context.contentChannel = contentChannel;\n if (contentTitle) context.contentTitle = contentTitle;\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 sendAdDetectTracking(licenseKey, adDetectInfo, context = {}) {\n try {\n await sendHeartbeat(licenseKey, context, {\n adDetect: true,\n captureAt: adDetectInfo.timestamp\n });\n } catch (error) {\n console.error(\n \"[StormcloudVideoPlayer] Error sending ad detect tracking:\",\n error\n );\n }\n}\nasync function sendAdLoadedTracking(licenseKey, adLoadedInfo, context = {}) {\n try {\n await sendHeartbeat(licenseKey, context, {\n adLoaded: true,\n captureAt: adLoadedInfo.timestamp\n });\n } catch (error) {\n console.error(\n \"[StormcloudVideoPlayer] Error sending ad loaded tracking:\",\n error\n );\n }\n}\nasync function sendAdImpressionTracking(licenseKey, adImpressionInfo, context = {}) {\n if (!canPublish(licenseKey)) return;\n try {\n const metricEvent = await buildPlayerMetricEvent(context, {\n captureAt: adImpressionInfo.timestamp\n });\n await ingestPlayerTracking(licenseKey, \"metrics\", {\n events: [metricEvent]\n });\n await ingestPlayerTracking(licenseKey, \"impressions\", {\n events: [\n {\n player_id: metricEvent.player_id,\n ad_played_count: 1,\n ad_url: adImpressionInfo.adUrl,\n capture_at: adImpressionInfo.timestamp,\n source: \"gam\",\n ...context.contentNetwork ? { content_network: context.contentNetwork } : {},\n ...context.contentChannel ? { content_channel: context.contentChannel } : {},\n ...context.contentTitle ? { content_title: context.contentTitle } : {}\n }\n ]\n });\n } catch (error) {\n console.error(\n \"[StormcloudVideoPlayer] Error sending ad impression tracking:\",\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// Annotate the CommonJS export names for ESM import in node:\n0 && (module.exports = {\n buildAnalyticsContext,\n getBrowserID,\n getClientInfo,\n sendAdDetectTracking,\n sendAdImpressionTracking,\n sendAdLoadedTracking,\n sendHeartbeat,\n sendInitialTracking\n});\n"]}
1
+ {"version":3,"sources":["d:\\project\\stormcloud-vp\\lib\\utils\\tracking.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","tracking_exports","buildAnalyticsContext","getBrowserID","getCachedBrowserId","getClientInfo","sendAdDetectTracking","sendAdImpressionTracking","sendAdLoadedTracking","sendHeartbeat","sendInitialTracking","module","exports","DEFAULT_TRACKING_INGEST_CONFIG","enabled","baseUrl","trackingIngestConfig","isTrackingIngestEnabled","normalizeIngestBaseUrl","replace","buildTrackingIngestUrl","channel","base","ingestPlayerTracking","licenseKey","body","response","error","fetch","method","headers","Authorization","JSON","stringify","ok","console","warn","status","PLAYER_ID_STORAGE_KEY","DEVICE_ID_STORAGE_KEYS","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","gameconsole","stb","settopbox","inferDeviceIdType","navigator","ua","userAgent","test","resolveNativeDeviceId","includeStored","bridgeSignals","readNativeBridgeSignals","platformDevice","readPlatformNativeDeviceId","deviceId","readStoredDeviceId","isMacroPlaceholder","isZeroedAdId","getOrCreateStoredUuid","storageKey","window","existing","readPersistentId","writePersistentId","id","createUuid","readStoredString","readCookie","localStorage","setItem","writeCookie","PERSISTENT_ID_COOKIE_MAX_AGE","document","prefix","encodeURIComponent","parts","cookie","split","part","entry","trim","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","deviceIdType","limitAdTracking","webOSDev","lgudid","LGUDID","roku","Roku","rida","getPublisherUniqueId","ZEROED_AD_ID_PATTERNS","Set","t","has","toLowerCase","getNativeBridgeSources","source","contentUrl","readBridgeValue","appId","appName","readBridgeBoolean","__STORMCLOUD_CTV_AD_INFO__","__STORMCLOUD_CTV__","stormcloudCtv","AiryTV","Android","webOS","tizen","amazon","filter","Boolean","keys","result","normalized","normalizeBoolean","getItem","cachedBrowserId","config","context","contentNetwork","contentChannel","channelName","contentTitle","programTitle","debugAdTiming","isLiveStream","inputStreamType","screen","platform","vendor","maxTouchPoints","memory","deviceMemory","hardwareConcurrency","screenInfo","width","height","availWidth","availHeight","orientation","type","pixelDepth","deviceType","brand","os","model","isSmartTV","isAndroid","isWebView","isWebApp","includes","webosMatch","match","tizenMatch","tvMatch","androidModelMatch","outerHeight","outerWidth","matchMedia","matches","standalone","angle","substring","domain","location","hostname","origin","path","pathname","language","languages","join","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","canPublish","buildPlayerMetricEvent","flags","playerId","captureAt","log","toISOString","player_id","device_type","ad_loaded","adLoaded","ad_detect","adDetect","capture_at","input_stream_type","metricEvent","events","adDetectInfo","adLoadedInfo","adImpressionInfo","ad_played_count","ad_url","adUrl","content_network","content_channel","content_title","heartbeatData"],"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/utils/tracking.ts\nvar tracking_exports = {};\n__export(tracking_exports, {\n buildAnalyticsContext: () => buildAnalyticsContext,\n getBrowserID: () => getBrowserID,\n getCachedBrowserId: () => getCachedBrowserId,\n getClientInfo: () => getClientInfo,\n sendAdDetectTracking: () => sendAdDetectTracking,\n sendAdImpressionTracking: () => sendAdImpressionTracking,\n sendAdLoadedTracking: () => sendAdLoadedTracking,\n sendHeartbeat: () => sendHeartbeat,\n sendInitialTracking: () => sendInitialTracking\n});\nmodule.exports = __toCommonJS(tracking_exports);\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/vastEnvironmentSignals.ts\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 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};\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 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 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 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/tracking.ts\nvar cachedBrowserId = null;\nfunction buildAnalyticsContext(config) {\n const context = {};\n const contentNetwork = config.contentNetwork?.trim();\n const contentChannel = config.channelName?.trim();\n const contentTitle = config.programTitle?.trim();\n if (contentNetwork) context.contentNetwork = contentNetwork;\n if (contentChannel) context.contentChannel = contentChannel;\n if (contentTitle) context.contentTitle = contentTitle;\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}\nfunction getCachedBrowserId() {\n return cachedBrowserId ?? void 0;\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 sendAdDetectTracking(licenseKey, adDetectInfo, context = {}) {\n try {\n await sendHeartbeat(licenseKey, context, {\n adDetect: true,\n captureAt: adDetectInfo.timestamp\n });\n } catch (error) {\n console.error(\n \"[StormcloudVideoPlayer] Error sending ad detect tracking:\",\n error\n );\n }\n}\nasync function sendAdLoadedTracking(licenseKey, adLoadedInfo, context = {}) {\n try {\n await sendHeartbeat(licenseKey, context, {\n adLoaded: true,\n captureAt: adLoadedInfo.timestamp\n });\n } catch (error) {\n console.error(\n \"[StormcloudVideoPlayer] Error sending ad loaded tracking:\",\n error\n );\n }\n}\nasync function sendAdImpressionTracking(licenseKey, adImpressionInfo, context = {}) {\n if (!canPublish(licenseKey)) return;\n try {\n const metricEvent = await buildPlayerMetricEvent(context, {\n captureAt: adImpressionInfo.timestamp\n });\n await ingestPlayerTracking(licenseKey, \"metrics\", {\n events: [metricEvent]\n });\n await ingestPlayerTracking(licenseKey, \"impressions\", {\n events: [\n {\n player_id: metricEvent.player_id,\n ad_played_count: 1,\n ad_url: adImpressionInfo.adUrl,\n capture_at: adImpressionInfo.timestamp,\n source: \"gam\",\n ...context.contentNetwork ? { content_network: context.contentNetwork } : {},\n ...context.contentChannel ? { content_channel: context.contentChannel } : {},\n ...context.contentTitle ? { content_title: context.contentTitle } : {}\n }\n ]\n });\n } catch (error) {\n console.error(\n \"[StormcloudVideoPlayer] Error sending ad impression tracking:\",\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// Annotate the CommonJS export names for ESM import in node:\n0 && (module.exports = {\n buildAnalyticsContext,\n getBrowserID,\n getCachedBrowserId,\n getClientInfo,\n sendAdDetectTracking,\n sendAdImpressionTracking,\n sendAdLoadedTracking,\n sendHeartbeat,\n sendInitialTracking\n});\n"]}
@@ -3,6 +3,7 @@ import '../player/OptimizedPodRequest.cjs';
3
3
 
4
4
  declare function buildAnalyticsContext(config: Pick<StormcloudVideoPlayerConfig, "debugAdTiming" | "isLiveStream" | "contentNetwork" | "channelName" | "programTitle">): PlayerAnalyticsContext;
5
5
  declare function getClientInfo(): ClientInfo;
6
+ declare function getCachedBrowserId(): string | undefined;
6
7
  declare function getBrowserID(clientInfo: ClientInfo): Promise<string>;
7
8
  type PlayerMetricFlags = {
8
9
  adLoaded?: boolean;
@@ -15,4 +16,4 @@ declare function sendAdLoadedTracking(licenseKey: string | undefined, adLoadedIn
15
16
  declare function sendAdImpressionTracking(licenseKey: string | undefined, adImpressionInfo: AdImpressionInfo, context?: PlayerAnalyticsContext): Promise<void>;
16
17
  declare function sendHeartbeat(licenseKey?: string, context?: PlayerAnalyticsContext, flags?: PlayerMetricFlags): Promise<void>;
17
18
 
18
- export { buildAnalyticsContext, getBrowserID, getClientInfo, sendAdDetectTracking, sendAdImpressionTracking, sendAdLoadedTracking, sendHeartbeat, sendInitialTracking };
19
+ export { buildAnalyticsContext, getBrowserID, getCachedBrowserId, getClientInfo, sendAdDetectTracking, sendAdImpressionTracking, sendAdLoadedTracking, sendHeartbeat, sendInitialTracking };
@@ -567,9 +567,10 @@ function resolveScvpMacroValues(ctx) {
567
567
  var deviceId = (_ctx_deviceId = ctx.deviceId) === null || _ctx_deviceId === void 0 ? void 0 : _ctx_deviceId.trim();
568
568
  var deviceIdType = deviceId ? ((_ctx_deviceIdType = ctx.deviceIdType) === null || _ctx_deviceIdType === void 0 ? void 0 : _ctx_deviceIdType.trim()) || inferDeviceIdType() : void 0;
569
569
  if (deviceId && deviceIdType) {
570
+ var _toFlag;
570
571
  set("RDID", deviceId);
571
572
  set("IDTYPE", deviceIdType);
572
- set("IS-LAT", toFlag(ctx.limitAdTracking));
573
+ set("IS-LAT", (_toFlag = toFlag(ctx.limitAdTracking)) !== null && _toFlag !== void 0 ? _toFlag : "0");
573
574
  }
574
575
  set("SID", ctx.sessionId);
575
576
  set("DTH", ctx.deviceTypeHint);
@@ -1 +1 @@
1
- {"version":3,"sources":["d:\\project\\stormcloud-vp\\lib\\utils\\vastMacros.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","vastMacros_exports","GAM_AD_HOSTS","SCVP_POD_MACROS","applyScvpMacros","applyVastMacros","ensureVideoAdType","fetchConsentSignals","findScvpMacroNames","generateCorrelator","getPageViewCorrelator","hasScvpMacros","isMacroPlaceholder","normalizeVastTagUrl","stripScvpMacros","substituteScvpMacros","module","exports","ANDROID_ID_TYPES","Set","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","inferDeviceIdType","navigator","ua","userAgent","test","isEquivalentDeviceIdType","tagType","runtimeType","tag","toLowerCase","runtime","has","PERSISTENT_ID_COOKIE_MAX_AGE","UNEXPANDED_MACRO_PATTERN","INVALID_VAST_PARAM_KEY","EXAMPLE_COM_URL","CTV_UNSUPPORTED_PARAMS","INLINE_DEVICE_MACRO_REPLACEMENTS","pattern","getValue","ctx","deviceId","deviceIdType","limitAdTracking","sessionId","correlator","trimmed","trim","crypto","getRandomValues","buf","Uint32Array","String","Math","floor","random","Number","MAX_SAFE_INTEGER","pageViewCorrelator","window","location","pathname","search","expandInlineMacroPlaceholders","baseUrl","url","replace","encodeURIComponent","applyDeviceIdentityParams","params","runtimeId","tagRdid","tagLat","latValue","set","isCtv","delete","tagRdidValid","Boolean","tagTypeValid","removeBrokenAppNameOrphans","appName","toDelete","forEach","_value","push","includes","split","slice","suffix","raw","URL","anValue","searchParams","orphanFragments","length","reconstructed","filter","join","toString","_match","prefix","val","rawUrl","hostname","SCVP_MACRO_DETECT","SCVP_MACRO_PATTERN","SCVP_WHOLE_VALUE_PATTERN","NESTED_QUERY_PARAM_KEYS","safeDecode","decodeURIComponent","names","text","pass","_m","bracketName","parenName","add","toUpperCase","decoded","Array","resolveScvpMacroValues","values","Map","str","toFlag","deviceTypeHint","palNonce","programTitle","channelName","pod","streamCorrelator","adWillPlayMuted","adWillAutoPlay","consent","gdpr","gdprConsent","usPrivacy","keepNone","substituteScvpParams","unresolved","keep","nested","out","replaceMacro","match","whole","resolved","inner","URLSearchParams","map","k","v","replaced","entries","append","deferred","expandedUrl","replaceCorrelatorFallback","existingUrl","pageUrl","adTest","staleKeys","correlatorRegex","sep","timeoutMs","signals","Promise","resolve","tasks","tcfApi","__tcfapi","settled","tcData","success","eventStatus","gdprApplies","storageAllowed","purpose","consents","tcString","listenerId","setTimeout","uspApi","__uspapi","data","uspString","then"],"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/utils/vastMacros.ts\nvar vastMacros_exports = {};\n__export(vastMacros_exports, {\n GAM_AD_HOSTS: () => GAM_AD_HOSTS,\n SCVP_POD_MACROS: () => SCVP_POD_MACROS,\n applyScvpMacros: () => applyScvpMacros,\n applyVastMacros: () => applyVastMacros,\n ensureVideoAdType: () => ensureVideoAdType,\n fetchConsentSignals: () => fetchConsentSignals,\n findScvpMacroNames: () => findScvpMacroNames,\n generateCorrelator: () => generateCorrelator,\n getPageViewCorrelator: () => getPageViewCorrelator,\n hasScvpMacros: () => hasScvpMacros,\n isMacroPlaceholder: () => isMacroPlaceholder,\n normalizeVastTagUrl: () => normalizeVastTagUrl,\n stripScvpMacros: () => stripScvpMacros,\n substituteScvpMacros: () => substituteScvpMacros\n});\nmodule.exports = __toCommonJS(vastMacros_exports);\n\n// src/utils/vastEnvironmentSignals.ts\nvar ANDROID_ID_TYPES = /* @__PURE__ */ new Set([\"aaid\", \"adid\"]);\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};\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}\nvar PERSISTENT_ID_COOKIE_MAX_AGE = 60 * 60 * 24 * 365 * 5;\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 isMacroPlaceholder(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 ?? (isMacroPlaceholder(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 && !isMacroPlaceholder(tagRdid));\n const tagTypeValid = Boolean(tagType && !isMacroPlaceholder(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 (isMacroPlaceholder(tagType) && runtimeType) {\n params.set(\"idtype\", runtimeType);\n }\n if (isMacroPlaceholder(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}\nvar GAM_AD_HOSTS = /* @__PURE__ */ new Set([\n \"pubads.g.doubleclick.net\",\n \"securepubads.g.doubleclick.net\"\n]);\nfunction ensureVideoAdType(rawUrl) {\n try {\n const url = new URL(rawUrl);\n if (!GAM_AD_HOSTS.has(url.hostname)) return rawUrl;\n if (url.searchParams.has(\"ad_type\")) return rawUrl;\n url.searchParams.set(\"ad_type\", \"video\");\n return url.toString();\n } catch {\n return rawUrl;\n }\n}\nvar SCVP_MACRO_DETECT = /\\[SCVP-|%5BSCVP-|\\(SCVP-|%28SCVP-/i;\nvar SCVP_MACRO_PATTERN = /\\[SCVP-([A-Z0-9-]+)\\]|\\(SCVP-([A-Z0-9-]+)\\)/gi;\nvar SCVP_WHOLE_VALUE_PATTERN = /^\\s*(?:\\[SCVP-([A-Z0-9-]+)\\]|\\(SCVP-([A-Z0-9-]+)\\))\\s*$/i;\nvar NESTED_QUERY_PARAM_KEYS = /* @__PURE__ */ new Set([\"cust_params\"]);\nvar SCVP_POD_MACROS = /* @__PURE__ */ new Set([\"PMND\", \"PMXD\", \"PMAD\"]);\nfunction hasScvpMacros(url) {\n return !!url && SCVP_MACRO_DETECT.test(url);\n}\nfunction safeDecode(value) {\n try {\n return decodeURIComponent(value.replace(/\\+/g, \" \"));\n } catch {\n return value;\n }\n}\nfunction findScvpMacroNames(url) {\n if (!url) return [];\n const names = /* @__PURE__ */ new Set();\n let text = url;\n for (let pass = 0; pass < 3; pass++) {\n text.replace(SCVP_MACRO_PATTERN, (_m, bracketName, parenName) => {\n names.add(String(bracketName || parenName).toUpperCase());\n return \"\";\n });\n const decoded = safeDecode(text);\n if (decoded === text) break;\n text = decoded;\n }\n return Array.from(names);\n}\nfunction resolveScvpMacroValues(ctx) {\n const values = /* @__PURE__ */ new Map();\n const set = (name, value) => {\n if (value == null) return;\n const str = String(value).trim();\n if (str) values.set(name, str);\n };\n const toFlag = (value) => value == null ? void 0 : value ? \"1\" : \"0\";\n const deviceId = ctx.deviceId?.trim();\n const deviceIdType = deviceId ? ctx.deviceIdType?.trim() || inferDeviceIdType() : void 0;\n if (deviceId && deviceIdType) {\n set(\"RDID\", deviceId);\n set(\"IDTYPE\", deviceIdType);\n set(\"IS-LAT\", toFlag(ctx.limitAdTracking));\n }\n set(\"SID\", ctx.sessionId);\n set(\"DTH\", ctx.deviceTypeHint);\n set(\"GIVN\", ctx.palNonce);\n set(\"CT-TI\", ctx.programTitle);\n set(\"CT-CH\", ctx.channelName);\n set(\"POD\", ctx.pod);\n set(\"CORRELATOR\", ctx.correlator);\n set(\"SCOR\", ctx.streamCorrelator);\n set(\"VPMUTE\", toFlag(ctx.adWillPlayMuted));\n if (ctx.adWillAutoPlay != null) {\n set(\"VPA\", ctx.adWillAutoPlay ? \"auto\" : \"click\");\n }\n set(\"GDPR\", ctx.consent?.gdpr);\n set(\"GDPR-CONSENT\", ctx.consent?.gdprConsent);\n set(\"US-PRIVACY\", ctx.consent?.usPrivacy);\n return values;\n}\nvar keepNone = () => false;\nfunction substituteScvpParams(params, values, unresolved, keep, nested) {\n const out = [];\n const replaceMacro = (match, bracketName, parenName) => {\n const name = String(bracketName || parenName).toUpperCase();\n const value = values.get(name);\n if (value != null) return value;\n if (keep(name)) return match;\n unresolved.add(name);\n return \"\";\n };\n params.forEach((value, key) => {\n const whole = value.match(SCVP_WHOLE_VALUE_PATTERN);\n if (whole) {\n const name = String(whole[1] || whole[2]).toUpperCase();\n const resolved = values.get(name);\n if (resolved != null) {\n out.push([key, resolved]);\n } else if (keep(name)) {\n out.push([key, value]);\n } else {\n unresolved.add(name);\n }\n return;\n }\n if (!SCVP_MACRO_DETECT.test(value)) {\n out.push([key, value]);\n return;\n }\n if (!nested && NESTED_QUERY_PARAM_KEYS.has(key)) {\n const inner = substituteScvpParams(new URLSearchParams(value), values, unresolved, keep, true);\n if (inner.length > 0) {\n out.push([\n key,\n inner.map(([k, v]) => `${encodeURIComponent(k)}=${encodeURIComponent(v)}`).join(\"&\")\n ]);\n }\n return;\n }\n out.push([key, value.replace(SCVP_MACRO_PATTERN, replaceMacro)]);\n });\n return out;\n}\nfunction substituteScvpMacros(baseUrl, values, keep = keepNone) {\n const unresolved = /* @__PURE__ */ new Set();\n let url;\n try {\n url = new URL(normalizeVastTagUrl(baseUrl));\n } catch {\n const replaced = baseUrl.replace(\n SCVP_MACRO_PATTERN,\n (match, bracketName, parenName) => {\n const name = String(bracketName || parenName).toUpperCase();\n const value = values.get(name);\n if (value != null) return encodeURIComponent(value);\n if (keep(name)) return match;\n unresolved.add(name);\n return \"\";\n }\n );\n return { url: replaced, unresolved: Array.from(unresolved) };\n }\n const entries = substituteScvpParams(url.searchParams, values, unresolved, keep, false);\n const search = new URLSearchParams();\n for (const [key, value] of entries) search.append(key, value);\n url.search = search.toString();\n return { url: url.toString(), unresolved: Array.from(unresolved) };\n}\nfunction applyScvpMacros(baseUrl, ctx, deferred = /* @__PURE__ */ new Set()) {\n return substituteScvpMacros(baseUrl, resolveScvpMacroValues(ctx), (name) => deferred.has(name));\n}\nfunction stripScvpMacros(url) {\n if (findScvpMacroNames(url).length === 0) return { url, unresolved: [] };\n return substituteScvpMacros(url, /* @__PURE__ */ new Map());\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 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 (isMacroPlaceholder(params.get(\"url\"))) {\n params.set(\"url\", ctx.pageUrl);\n }\n if (isMacroPlaceholder(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 (isMacroPlaceholder(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}\nfunction fetchConsentSignals(timeoutMs = 1500) {\n const signals = {};\n if (typeof window === \"undefined\") {\n return Promise.resolve(signals);\n }\n const tasks = [];\n const tcfApi = window.__tcfapi;\n if (typeof tcfApi === \"function\") {\n tasks.push(\n new Promise((resolve) => {\n let settled = false;\n try {\n tcfApi(\"addEventListener\", 2, (tcData, success) => {\n if (settled) return;\n if (success && tcData && (tcData.eventStatus === \"tcloaded\" || tcData.eventStatus === \"useractioncomplete\")) {\n settled = true;\n signals.gdpr = tcData.gdprApplies ? \"1\" : \"0\";\n signals.storageAllowed = tcData.gdprApplies ? tcData.purpose?.consents?.[1] === true : true;\n if (typeof tcData.tcString === \"string\" && tcData.tcString) {\n signals.gdprConsent = tcData.tcString;\n }\n try {\n tcfApi(\"removeEventListener\", 2, () => {\n }, tcData.listenerId);\n } catch {\n }\n resolve();\n }\n });\n } catch {\n resolve();\n }\n setTimeout(() => {\n if (!settled) {\n settled = true;\n resolve();\n }\n }, timeoutMs);\n })\n );\n }\n const uspApi = window.__uspapi;\n if (typeof uspApi === \"function\") {\n tasks.push(\n new Promise((resolve) => {\n try {\n uspApi(\"getUSPData\", 1, (data, success) => {\n if (success && typeof data?.uspString === \"string\" && data.uspString) {\n signals.usPrivacy = data.uspString;\n }\n resolve();\n });\n } catch {\n resolve();\n }\n setTimeout(resolve, timeoutMs);\n })\n );\n }\n if (tasks.length === 0) {\n return Promise.resolve(signals);\n }\n return Promise.all(tasks).then(() => signals);\n}\n// Annotate the CommonJS export names for ESM import in node:\n0 && (module.exports = {\n GAM_AD_HOSTS,\n SCVP_POD_MACROS,\n applyScvpMacros,\n applyVastMacros,\n ensureVideoAdType,\n fetchConsentSignals,\n findScvpMacroNames,\n generateCorrelator,\n getPageViewCorrelator,\n hasScvpMacros,\n isMacroPlaceholder,\n normalizeVastTagUrl,\n stripScvpMacros,\n substituteScvpMacros\n});\n"]}
1
+ {"version":3,"sources":["d:\\project\\stormcloud-vp\\lib\\utils\\vastMacros.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","vastMacros_exports","GAM_AD_HOSTS","SCVP_POD_MACROS","applyScvpMacros","applyVastMacros","ensureVideoAdType","fetchConsentSignals","findScvpMacroNames","generateCorrelator","getPageViewCorrelator","hasScvpMacros","isMacroPlaceholder","normalizeVastTagUrl","stripScvpMacros","substituteScvpMacros","module","exports","ANDROID_ID_TYPES","Set","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","inferDeviceIdType","navigator","ua","userAgent","test","isEquivalentDeviceIdType","tagType","runtimeType","tag","toLowerCase","runtime","has","PERSISTENT_ID_COOKIE_MAX_AGE","UNEXPANDED_MACRO_PATTERN","INVALID_VAST_PARAM_KEY","EXAMPLE_COM_URL","CTV_UNSUPPORTED_PARAMS","INLINE_DEVICE_MACRO_REPLACEMENTS","pattern","getValue","ctx","deviceId","deviceIdType","limitAdTracking","sessionId","correlator","trimmed","trim","crypto","getRandomValues","buf","Uint32Array","String","Math","floor","random","Number","MAX_SAFE_INTEGER","pageViewCorrelator","window","location","pathname","search","expandInlineMacroPlaceholders","baseUrl","url","replace","encodeURIComponent","applyDeviceIdentityParams","params","runtimeId","tagRdid","tagLat","latValue","set","isCtv","delete","tagRdidValid","Boolean","tagTypeValid","removeBrokenAppNameOrphans","appName","toDelete","forEach","_value","push","includes","split","slice","suffix","raw","URL","anValue","searchParams","orphanFragments","length","reconstructed","filter","join","toString","_match","prefix","val","rawUrl","hostname","SCVP_MACRO_DETECT","SCVP_MACRO_PATTERN","SCVP_WHOLE_VALUE_PATTERN","NESTED_QUERY_PARAM_KEYS","safeDecode","decodeURIComponent","names","text","pass","_m","bracketName","parenName","add","toUpperCase","decoded","Array","resolveScvpMacroValues","values","Map","str","toFlag","deviceTypeHint","palNonce","programTitle","channelName","pod","streamCorrelator","adWillPlayMuted","adWillAutoPlay","consent","gdpr","gdprConsent","usPrivacy","keepNone","substituteScvpParams","unresolved","keep","nested","out","replaceMacro","match","whole","resolved","inner","URLSearchParams","map","k","v","replaced","entries","append","deferred","expandedUrl","replaceCorrelatorFallback","existingUrl","pageUrl","adTest","staleKeys","correlatorRegex","sep","timeoutMs","signals","Promise","resolve","tasks","tcfApi","__tcfapi","settled","tcData","success","eventStatus","gdprApplies","storageAllowed","purpose","consents","tcString","listenerId","setTimeout","uspApi","__uspapi","data","uspString","then"],"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/utils/vastMacros.ts\nvar vastMacros_exports = {};\n__export(vastMacros_exports, {\n GAM_AD_HOSTS: () => GAM_AD_HOSTS,\n SCVP_POD_MACROS: () => SCVP_POD_MACROS,\n applyScvpMacros: () => applyScvpMacros,\n applyVastMacros: () => applyVastMacros,\n ensureVideoAdType: () => ensureVideoAdType,\n fetchConsentSignals: () => fetchConsentSignals,\n findScvpMacroNames: () => findScvpMacroNames,\n generateCorrelator: () => generateCorrelator,\n getPageViewCorrelator: () => getPageViewCorrelator,\n hasScvpMacros: () => hasScvpMacros,\n isMacroPlaceholder: () => isMacroPlaceholder,\n normalizeVastTagUrl: () => normalizeVastTagUrl,\n stripScvpMacros: () => stripScvpMacros,\n substituteScvpMacros: () => substituteScvpMacros\n});\nmodule.exports = __toCommonJS(vastMacros_exports);\n\n// src/utils/vastEnvironmentSignals.ts\nvar ANDROID_ID_TYPES = /* @__PURE__ */ new Set([\"aaid\", \"adid\"]);\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};\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}\nvar PERSISTENT_ID_COOKIE_MAX_AGE = 60 * 60 * 24 * 365 * 5;\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 isMacroPlaceholder(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 ?? (isMacroPlaceholder(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 && !isMacroPlaceholder(tagRdid));\n const tagTypeValid = Boolean(tagType && !isMacroPlaceholder(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 (isMacroPlaceholder(tagType) && runtimeType) {\n params.set(\"idtype\", runtimeType);\n }\n if (isMacroPlaceholder(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}\nvar GAM_AD_HOSTS = /* @__PURE__ */ new Set([\n \"pubads.g.doubleclick.net\",\n \"securepubads.g.doubleclick.net\"\n]);\nfunction ensureVideoAdType(rawUrl) {\n try {\n const url = new URL(rawUrl);\n if (!GAM_AD_HOSTS.has(url.hostname)) return rawUrl;\n if (url.searchParams.has(\"ad_type\")) return rawUrl;\n url.searchParams.set(\"ad_type\", \"video\");\n return url.toString();\n } catch {\n return rawUrl;\n }\n}\nvar SCVP_MACRO_DETECT = /\\[SCVP-|%5BSCVP-|\\(SCVP-|%28SCVP-/i;\nvar SCVP_MACRO_PATTERN = /\\[SCVP-([A-Z0-9-]+)\\]|\\(SCVP-([A-Z0-9-]+)\\)/gi;\nvar SCVP_WHOLE_VALUE_PATTERN = /^\\s*(?:\\[SCVP-([A-Z0-9-]+)\\]|\\(SCVP-([A-Z0-9-]+)\\))\\s*$/i;\nvar NESTED_QUERY_PARAM_KEYS = /* @__PURE__ */ new Set([\"cust_params\"]);\nvar SCVP_POD_MACROS = /* @__PURE__ */ new Set([\"PMND\", \"PMXD\", \"PMAD\"]);\nfunction hasScvpMacros(url) {\n return !!url && SCVP_MACRO_DETECT.test(url);\n}\nfunction safeDecode(value) {\n try {\n return decodeURIComponent(value.replace(/\\+/g, \" \"));\n } catch {\n return value;\n }\n}\nfunction findScvpMacroNames(url) {\n if (!url) return [];\n const names = /* @__PURE__ */ new Set();\n let text = url;\n for (let pass = 0; pass < 3; pass++) {\n text.replace(SCVP_MACRO_PATTERN, (_m, bracketName, parenName) => {\n names.add(String(bracketName || parenName).toUpperCase());\n return \"\";\n });\n const decoded = safeDecode(text);\n if (decoded === text) break;\n text = decoded;\n }\n return Array.from(names);\n}\nfunction resolveScvpMacroValues(ctx) {\n const values = /* @__PURE__ */ new Map();\n const set = (name, value) => {\n if (value == null) return;\n const str = String(value).trim();\n if (str) values.set(name, str);\n };\n const toFlag = (value) => value == null ? void 0 : value ? \"1\" : \"0\";\n const deviceId = ctx.deviceId?.trim();\n const deviceIdType = deviceId ? ctx.deviceIdType?.trim() || inferDeviceIdType() : void 0;\n if (deviceId && deviceIdType) {\n set(\"RDID\", deviceId);\n set(\"IDTYPE\", deviceIdType);\n set(\"IS-LAT\", toFlag(ctx.limitAdTracking) ?? \"0\");\n }\n set(\"SID\", ctx.sessionId);\n set(\"DTH\", ctx.deviceTypeHint);\n set(\"GIVN\", ctx.palNonce);\n set(\"CT-TI\", ctx.programTitle);\n set(\"CT-CH\", ctx.channelName);\n set(\"POD\", ctx.pod);\n set(\"CORRELATOR\", ctx.correlator);\n set(\"SCOR\", ctx.streamCorrelator);\n set(\"VPMUTE\", toFlag(ctx.adWillPlayMuted));\n if (ctx.adWillAutoPlay != null) {\n set(\"VPA\", ctx.adWillAutoPlay ? \"auto\" : \"click\");\n }\n set(\"GDPR\", ctx.consent?.gdpr);\n set(\"GDPR-CONSENT\", ctx.consent?.gdprConsent);\n set(\"US-PRIVACY\", ctx.consent?.usPrivacy);\n return values;\n}\nvar keepNone = () => false;\nfunction substituteScvpParams(params, values, unresolved, keep, nested) {\n const out = [];\n const replaceMacro = (match, bracketName, parenName) => {\n const name = String(bracketName || parenName).toUpperCase();\n const value = values.get(name);\n if (value != null) return value;\n if (keep(name)) return match;\n unresolved.add(name);\n return \"\";\n };\n params.forEach((value, key) => {\n const whole = value.match(SCVP_WHOLE_VALUE_PATTERN);\n if (whole) {\n const name = String(whole[1] || whole[2]).toUpperCase();\n const resolved = values.get(name);\n if (resolved != null) {\n out.push([key, resolved]);\n } else if (keep(name)) {\n out.push([key, value]);\n } else {\n unresolved.add(name);\n }\n return;\n }\n if (!SCVP_MACRO_DETECT.test(value)) {\n out.push([key, value]);\n return;\n }\n if (!nested && NESTED_QUERY_PARAM_KEYS.has(key)) {\n const inner = substituteScvpParams(new URLSearchParams(value), values, unresolved, keep, true);\n if (inner.length > 0) {\n out.push([\n key,\n inner.map(([k, v]) => `${encodeURIComponent(k)}=${encodeURIComponent(v)}`).join(\"&\")\n ]);\n }\n return;\n }\n out.push([key, value.replace(SCVP_MACRO_PATTERN, replaceMacro)]);\n });\n return out;\n}\nfunction substituteScvpMacros(baseUrl, values, keep = keepNone) {\n const unresolved = /* @__PURE__ */ new Set();\n let url;\n try {\n url = new URL(normalizeVastTagUrl(baseUrl));\n } catch {\n const replaced = baseUrl.replace(\n SCVP_MACRO_PATTERN,\n (match, bracketName, parenName) => {\n const name = String(bracketName || parenName).toUpperCase();\n const value = values.get(name);\n if (value != null) return encodeURIComponent(value);\n if (keep(name)) return match;\n unresolved.add(name);\n return \"\";\n }\n );\n return { url: replaced, unresolved: Array.from(unresolved) };\n }\n const entries = substituteScvpParams(url.searchParams, values, unresolved, keep, false);\n const search = new URLSearchParams();\n for (const [key, value] of entries) search.append(key, value);\n url.search = search.toString();\n return { url: url.toString(), unresolved: Array.from(unresolved) };\n}\nfunction applyScvpMacros(baseUrl, ctx, deferred = /* @__PURE__ */ new Set()) {\n return substituteScvpMacros(baseUrl, resolveScvpMacroValues(ctx), (name) => deferred.has(name));\n}\nfunction stripScvpMacros(url) {\n if (findScvpMacroNames(url).length === 0) return { url, unresolved: [] };\n return substituteScvpMacros(url, /* @__PURE__ */ new Map());\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 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 (isMacroPlaceholder(params.get(\"url\"))) {\n params.set(\"url\", ctx.pageUrl);\n }\n if (isMacroPlaceholder(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 (isMacroPlaceholder(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}\nfunction fetchConsentSignals(timeoutMs = 1500) {\n const signals = {};\n if (typeof window === \"undefined\") {\n return Promise.resolve(signals);\n }\n const tasks = [];\n const tcfApi = window.__tcfapi;\n if (typeof tcfApi === \"function\") {\n tasks.push(\n new Promise((resolve) => {\n let settled = false;\n try {\n tcfApi(\"addEventListener\", 2, (tcData, success) => {\n if (settled) return;\n if (success && tcData && (tcData.eventStatus === \"tcloaded\" || tcData.eventStatus === \"useractioncomplete\")) {\n settled = true;\n signals.gdpr = tcData.gdprApplies ? \"1\" : \"0\";\n signals.storageAllowed = tcData.gdprApplies ? tcData.purpose?.consents?.[1] === true : true;\n if (typeof tcData.tcString === \"string\" && tcData.tcString) {\n signals.gdprConsent = tcData.tcString;\n }\n try {\n tcfApi(\"removeEventListener\", 2, () => {\n }, tcData.listenerId);\n } catch {\n }\n resolve();\n }\n });\n } catch {\n resolve();\n }\n setTimeout(() => {\n if (!settled) {\n settled = true;\n resolve();\n }\n }, timeoutMs);\n })\n );\n }\n const uspApi = window.__uspapi;\n if (typeof uspApi === \"function\") {\n tasks.push(\n new Promise((resolve) => {\n try {\n uspApi(\"getUSPData\", 1, (data, success) => {\n if (success && typeof data?.uspString === \"string\" && data.uspString) {\n signals.usPrivacy = data.uspString;\n }\n resolve();\n });\n } catch {\n resolve();\n }\n setTimeout(resolve, timeoutMs);\n })\n );\n }\n if (tasks.length === 0) {\n return Promise.resolve(signals);\n }\n return Promise.all(tasks).then(() => signals);\n}\n// Annotate the CommonJS export names for ESM import in node:\n0 && (module.exports = {\n GAM_AD_HOSTS,\n SCVP_POD_MACROS,\n applyScvpMacros,\n applyVastMacros,\n ensureVideoAdType,\n fetchConsentSignals,\n findScvpMacroNames,\n generateCorrelator,\n getPageViewCorrelator,\n hasScvpMacros,\n isMacroPlaceholder,\n normalizeVastTagUrl,\n stripScvpMacros,\n substituteScvpMacros\n});\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "stormcloud-video-player",
3
- "version": "0.8.74",
3
+ "version": "0.8.76",
4
4
  "main": "lib/index.js",
5
5
  "typings": "lib/index.d.ts",
6
6
  "scripts": {