stormcloud-video-player 0.8.23 → 0.8.25
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/stormcloud-vp.min.js +1 -1
- package/lib/index.cjs +1187 -1109
- package/lib/index.cjs.map +1 -1
- package/lib/index.d.cts +3 -1
- package/lib/index.d.ts +3 -1
- package/lib/index.js +1028 -954
- package/lib/index.js.map +1 -1
- package/lib/player/AdBreakOrchestrator.cjs +419 -26
- package/lib/player/AdBreakOrchestrator.cjs.map +1 -1
- package/lib/player/AdBreakOrchestrator.d.cts +2 -1
- package/lib/player/AdConfigManager.cjs +90 -22
- package/lib/player/AdConfigManager.cjs.map +1 -1
- package/lib/player/AdConfigManager.d.cts +1 -1
- package/lib/player/AdPreloadPool.d.cts +1 -1
- package/lib/player/AdTimingService.d.cts +1 -1
- package/lib/player/HlsEngine.d.cts +1 -1
- package/lib/player/PlayerControls.d.cts +1 -1
- package/lib/player/Scte35CueManager.d.cts +1 -1
- package/lib/player/Scte35Parser.d.cts +1 -1
- package/lib/player/StormcloudVideoPlayer.cjs +1184 -1110
- package/lib/player/StormcloudVideoPlayer.cjs.map +1 -1
- package/lib/player/StormcloudVideoPlayer.d.cts +1 -1
- package/lib/player/playerTypes.d.cts +1 -1
- package/lib/players/HlsPlayer.cjs +1184 -1110
- package/lib/players/HlsPlayer.cjs.map +1 -1
- package/lib/players/HlsPlayer.d.cts +1 -1
- package/lib/players/index.cjs +1184 -1110
- package/lib/players/index.cjs.map +1 -1
- package/lib/sdk/hlsAdPlayer.d.cts +1 -1
- package/lib/{types-DNiBmPKK.d.cts → types-Bz4aRmzc.d.cts} +1 -0
- package/lib/ui/StormcloudVideoPlayer.cjs +1184 -1110
- package/lib/ui/StormcloudVideoPlayer.cjs.map +1 -1
- package/lib/ui/StormcloudVideoPlayer.d.cts +1 -1
- package/lib/utils/ctvVastSignals.cjs.map +1 -1
- package/lib/utils/tracking.cjs +411 -20
- package/lib/utils/tracking.cjs.map +1 -1
- package/lib/utils/tracking.d.cts +3 -2
- package/lib/utils/vastEnvironmentSignals.cjs +37 -0
- package/lib/utils/vastEnvironmentSignals.cjs.map +1 -1
- package/lib/utils/vastEnvironmentSignals.d.cts +4 -1
- package/lib/utils/vastMacros.cjs.map +1 -1
- package/package.json +1 -1
package/lib/index.cjs
CHANGED
|
@@ -464,6 +464,9 @@ __export(index_exports, {
|
|
|
464
464
|
applyMQTTConfig: function applyMQTTConfig1() {
|
|
465
465
|
return applyMQTTConfig;
|
|
466
466
|
},
|
|
467
|
+
buildAnalyticsContext: function buildAnalyticsContext1() {
|
|
468
|
+
return buildAnalyticsContext;
|
|
469
|
+
},
|
|
467
470
|
buildMQTTBrokerUrl: function buildMQTTBrokerUrl1() {
|
|
468
471
|
return buildMQTTBrokerUrl;
|
|
469
472
|
},
|
|
@@ -1769,1175 +1772,1243 @@ function disconnectMQTT() {
|
|
|
1769
1772
|
status = "disconnected";
|
|
1770
1773
|
}
|
|
1771
1774
|
}
|
|
1772
|
-
// src/utils/
|
|
1773
|
-
var
|
|
1774
|
-
|
|
1775
|
-
|
|
1775
|
+
// src/utils/vastEnvironmentSignals.ts
|
|
1776
|
+
var AIRY_ANDROID_APP_ID = "com.freeairytv.android";
|
|
1777
|
+
var AIRY_WEBOS_APP_ID = "com.freeairytv.webos";
|
|
1778
|
+
var AIRY_TIZEN_APP_ID = "com.freeairytv.samsung";
|
|
1779
|
+
var AIRY_ROKU_APP_ID = "com.freeairytv.roku";
|
|
1780
|
+
var AIRY_APP_NAME = "AiryTV Movies & TV";
|
|
1781
|
+
var AIRY_DEFAULT_CONTENT_URL = "https://live.airy.tv";
|
|
1782
|
+
var CTV_SESSION_STORAGE_KEY = "stormcloud.ctv.sid";
|
|
1783
|
+
var PLAYER_ID_STORAGE_KEY = "stormcloud.player.id";
|
|
1784
|
+
var LG_TEST_APP_ID = "com.hulu.plus";
|
|
1785
|
+
var LG_TEST_APP_NAME = "Hulu";
|
|
1786
|
+
var LG_TEST_CONTENT_URL = "https://www.hulu.com/live-tv";
|
|
1787
|
+
var _lgTestDeviceId;
|
|
1788
|
+
function getLgTestDeviceId() {
|
|
1789
|
+
if (!_lgTestDeviceId) _lgTestDeviceId = createUuid();
|
|
1790
|
+
return _lgTestDeviceId;
|
|
1791
|
+
}
|
|
1792
|
+
function isLgWebOS() {
|
|
1793
|
+
if (typeof navigator === "undefined") return false;
|
|
1794
|
+
return /Web0S|webOS|LG Browser|LGSTB|LGE/i.test(navigator.userAgent);
|
|
1795
|
+
}
|
|
1796
|
+
function getDefaultAppId() {
|
|
1797
|
+
if (typeof navigator === "undefined") return AIRY_ANDROID_APP_ID;
|
|
1776
1798
|
var ua = navigator.userAgent;
|
|
1777
|
-
|
|
1778
|
-
|
|
1779
|
-
|
|
1780
|
-
|
|
1781
|
-
|
|
1782
|
-
|
|
1783
|
-
|
|
1784
|
-
|
|
1785
|
-
|
|
1786
|
-
|
|
1787
|
-
|
|
1788
|
-
|
|
1789
|
-
|
|
1790
|
-
|
|
1791
|
-
|
|
1792
|
-
|
|
1793
|
-
|
|
1794
|
-
|
|
1795
|
-
|
|
1796
|
-
|
|
1797
|
-
|
|
1798
|
-
|
|
1799
|
-
|
|
1800
|
-
|
|
1801
|
-
|
|
1802
|
-
|
|
1803
|
-
|
|
1804
|
-
|
|
1805
|
-
|
|
1806
|
-
|
|
1807
|
-
|
|
1808
|
-
|
|
1809
|
-
|
|
1810
|
-
|
|
1811
|
-
|
|
1812
|
-
|
|
1813
|
-
|
|
1814
|
-
|
|
1815
|
-
|
|
1816
|
-
|
|
1817
|
-
|
|
1818
|
-
|
|
1819
|
-
|
|
1820
|
-
|
|
1821
|
-
|
|
1822
|
-
|
|
1823
|
-
} else if (ua.includes("Android") && (ua.includes("Sony") || vendor.includes("Sony"))) {
|
|
1824
|
-
brand = "Sony";
|
|
1825
|
-
os = "Android TV";
|
|
1826
|
-
isSmartTV = true;
|
|
1827
|
-
deviceType = "tv";
|
|
1828
|
-
} else if (ua.includes("Android") && (ua.includes("NetCast") || ua.includes("LG"))) {
|
|
1829
|
-
brand = "LG";
|
|
1830
|
-
os = "Android TV";
|
|
1831
|
-
isSmartTV = true;
|
|
1832
|
-
deviceType = "tv";
|
|
1833
|
-
} else if (ua.includes(" Roku") || ua.includes("Roku/")) {
|
|
1834
|
-
brand = "Roku";
|
|
1835
|
-
os = "Roku OS";
|
|
1836
|
-
isSmartTV = true;
|
|
1837
|
-
deviceType = "tv";
|
|
1838
|
-
} else if (ua.includes("AppleTV")) {
|
|
1839
|
-
brand = "Apple";
|
|
1840
|
-
os = "tvOS";
|
|
1841
|
-
isSmartTV = true;
|
|
1842
|
-
deviceType = "tv";
|
|
1843
|
-
}
|
|
1844
|
-
if (ua.includes("Android")) {
|
|
1845
|
-
isAndroid = true;
|
|
1846
|
-
os = "Android";
|
|
1847
|
-
deviceType = /Mobile/.test(ua) ? "mobile" : "tablet";
|
|
1848
|
-
if (ua.includes("Android") && (maxTouchPoints === 0 || ua.includes("Google TV") || ua.includes("XiaoMi"))) {
|
|
1849
|
-
deviceType = "tv";
|
|
1850
|
-
isSmartTV = true;
|
|
1851
|
-
brand = brand === "Unknown" ? "Android TV" : brand;
|
|
1852
|
-
}
|
|
1853
|
-
var androidModelMatch = ua.match(/\(([^)]*Android[^)]*)\)/);
|
|
1854
|
-
if (androidModelMatch && androidModelMatch[1]) {
|
|
1855
|
-
model = androidModelMatch[1];
|
|
1856
|
-
}
|
|
1799
|
+
if (/Web0S|webOS|LG Browser|LGSTB|LGE/i.test(ua)) return AIRY_WEBOS_APP_ID;
|
|
1800
|
+
if (/Tizen|Samsung/i.test(ua)) return AIRY_TIZEN_APP_ID;
|
|
1801
|
+
if (/Roku/i.test(ua)) return AIRY_ROKU_APP_ID;
|
|
1802
|
+
return AIRY_ANDROID_APP_ID;
|
|
1803
|
+
}
|
|
1804
|
+
var DEVICE_ID_STORAGE_KEYS = [
|
|
1805
|
+
"rdid",
|
|
1806
|
+
"ifa",
|
|
1807
|
+
"advertisingId",
|
|
1808
|
+
"advertising_id",
|
|
1809
|
+
"deviceAdvertisingId",
|
|
1810
|
+
"aaid",
|
|
1811
|
+
"adid",
|
|
1812
|
+
"rida",
|
|
1813
|
+
"tifa",
|
|
1814
|
+
"lgudid"
|
|
1815
|
+
];
|
|
1816
|
+
var ANDROID_ID_TYPES = /* @__PURE__ */ new Set([
|
|
1817
|
+
"aaid",
|
|
1818
|
+
"adid"
|
|
1819
|
+
]);
|
|
1820
|
+
function resolveVastEnvironmentSignals(isCtv) {
|
|
1821
|
+
var _ref;
|
|
1822
|
+
var bridgeSignals = readNativeBridgeSignals();
|
|
1823
|
+
var platformDevice = readPlatformNativeDeviceId();
|
|
1824
|
+
var lg = isCtv && isLgWebOS();
|
|
1825
|
+
var deviceId = bridgeSignals.deviceId || readStoredDeviceId() || platformDevice.deviceId || (lg && platformDevice.limitAdTracking !== true ? getLgTestDeviceId() : void 0);
|
|
1826
|
+
var deviceIdType = bridgeSignals.deviceIdType || readStoredString("deviceIdType") || readStoredString("idtype") || platformDevice.deviceIdType || inferDeviceIdType() || (lg ? "lgudid" : void 0);
|
|
1827
|
+
var platformLat = bridgeSignals.deviceId ? bridgeSignals.limitAdTracking : platformDevice.limitAdTracking;
|
|
1828
|
+
var limitAdTracking = deviceId != null ? (_ref = platformLat !== null && platformLat !== void 0 ? platformLat : readStoredLimitAdTracking()) !== null && _ref !== void 0 ? _ref : false : void 0;
|
|
1829
|
+
if (isCtv) {
|
|
1830
|
+
return _object_spread_props(_object_spread({
|
|
1831
|
+
isCtv: true,
|
|
1832
|
+
contentUrl: bridgeSignals.contentUrl || readStoredString("contentUrl") || (lg ? LG_TEST_CONTENT_URL : AIRY_DEFAULT_CONTENT_URL),
|
|
1833
|
+
appId: bridgeSignals.appId || readStoredString("appId") || readStoredString("msid") || (lg ? LG_TEST_APP_ID : getDefaultAppId()),
|
|
1834
|
+
appName: bridgeSignals.appName || readStoredString("appName") || readStoredString("an") || (lg ? LG_TEST_APP_NAME : AIRY_APP_NAME),
|
|
1835
|
+
sessionId: getOrCreateCtvSessionId()
|
|
1836
|
+
}, deviceId ? {
|
|
1837
|
+
deviceId: deviceId
|
|
1838
|
+
} : {}, deviceIdType ? {
|
|
1839
|
+
deviceIdType: deviceIdType
|
|
1840
|
+
} : {}, limitAdTracking != null ? {
|
|
1841
|
+
limitAdTracking: limitAdTracking
|
|
1842
|
+
} : {}), {
|
|
1843
|
+
deviceTypeHint: 5
|
|
1844
|
+
});
|
|
1857
1845
|
}
|
|
1858
|
-
|
|
1859
|
-
|
|
1860
|
-
|
|
1861
|
-
|
|
1862
|
-
|
|
1863
|
-
|
|
1864
|
-
|
|
1846
|
+
return _object_spread({
|
|
1847
|
+
isCtv: false
|
|
1848
|
+
}, deviceId ? {
|
|
1849
|
+
deviceId: deviceId
|
|
1850
|
+
} : {}, deviceIdType ? {
|
|
1851
|
+
deviceIdType: deviceIdType
|
|
1852
|
+
} : {}, limitAdTracking != null ? {
|
|
1853
|
+
limitAdTracking: limitAdTracking
|
|
1854
|
+
} : {});
|
|
1855
|
+
}
|
|
1856
|
+
function inferDeviceIdType() {
|
|
1857
|
+
if (typeof navigator === "undefined") {
|
|
1858
|
+
return void 0;
|
|
1865
1859
|
}
|
|
1866
|
-
|
|
1867
|
-
|
|
1868
|
-
|
|
1869
|
-
|
|
1870
|
-
|
|
1871
|
-
|
|
1872
|
-
|
|
1873
|
-
|
|
1874
|
-
|
|
1875
|
-
|
|
1876
|
-
|
|
1877
|
-
|
|
1860
|
+
var ua = navigator.userAgent;
|
|
1861
|
+
if (/Roku/i.test(ua)) return "rida";
|
|
1862
|
+
if (/Tizen|Samsung/i.test(ua)) return "tifa";
|
|
1863
|
+
if (/AppleTV|Apple TV/i.test(ua)) return "tvOS";
|
|
1864
|
+
if (/AFT|Fire TV|Amazon/i.test(ua)) return "afai";
|
|
1865
|
+
if (/Web0S|webOS|LG Browser|LGSTB|LGE/i.test(ua)) return "lgudid";
|
|
1866
|
+
if (/Android|Google TV/i.test(ua)) return "aaid";
|
|
1867
|
+
if (/iPhone|iPad|iPod/i.test(ua)) return "idfa";
|
|
1868
|
+
return void 0;
|
|
1869
|
+
}
|
|
1870
|
+
function isEquivalentDeviceIdType(tagType, runtimeType) {
|
|
1871
|
+
if (!tagType || !runtimeType) return false;
|
|
1872
|
+
var tag = tagType.toLowerCase();
|
|
1873
|
+
var runtime = runtimeType.toLowerCase();
|
|
1874
|
+
if (tag === runtime) return true;
|
|
1875
|
+
return ANDROID_ID_TYPES.has(tag) && ANDROID_ID_TYPES.has(runtime);
|
|
1876
|
+
}
|
|
1877
|
+
function resolveNativeDeviceId() {
|
|
1878
|
+
var bridgeSignals = readNativeBridgeSignals();
|
|
1879
|
+
var platformDevice = readPlatformNativeDeviceId();
|
|
1880
|
+
var deviceId = bridgeSignals.deviceId || readStoredDeviceId() || platformDevice.deviceId;
|
|
1881
|
+
if (!deviceId || isMacroPlaceholder(deviceId) || isZeroedAdId(deviceId)) {
|
|
1882
|
+
return void 0;
|
|
1878
1883
|
}
|
|
1879
|
-
|
|
1880
|
-
|
|
1881
|
-
|
|
1882
|
-
|
|
1884
|
+
return deviceId;
|
|
1885
|
+
}
|
|
1886
|
+
function getOrCreateStoredUuid(storageKey) {
|
|
1887
|
+
if (typeof window === "undefined") {
|
|
1888
|
+
return void 0;
|
|
1883
1889
|
}
|
|
1884
|
-
|
|
1885
|
-
if (
|
|
1886
|
-
|
|
1890
|
+
var existing = readStoredString(storageKey);
|
|
1891
|
+
if (existing) {
|
|
1892
|
+
return existing;
|
|
1887
1893
|
}
|
|
1888
|
-
|
|
1889
|
-
|
|
1890
|
-
|
|
1891
|
-
|
|
1892
|
-
|
|
1893
|
-
|
|
1894
|
-
isSmartTV: isSmartTV,
|
|
1895
|
-
isAndroid: isAndroid,
|
|
1896
|
-
isWebView: isWebView,
|
|
1897
|
-
isWebApp: isWebApp,
|
|
1898
|
-
domain: window.location.hostname,
|
|
1899
|
-
origin: window.location.origin,
|
|
1900
|
-
path: window.location.pathname,
|
|
1901
|
-
userAgent: ua,
|
|
1902
|
-
vendor: vendor,
|
|
1903
|
-
platform: platform,
|
|
1904
|
-
screen: screenInfo,
|
|
1905
|
-
hardwareConcurrency: hardwareConcurrency,
|
|
1906
|
-
deviceMemory: memory,
|
|
1907
|
-
maxTouchPoints: maxTouchPoints,
|
|
1908
|
-
language: navigator.language,
|
|
1909
|
-
languages: ((_navigator_languages = navigator.languages) === null || _navigator_languages === void 0 ? void 0 : _navigator_languages.join(",")) || "",
|
|
1910
|
-
cookieEnabled: navigator.cookieEnabled,
|
|
1911
|
-
doNotTrack: navigator.doNotTrack || "",
|
|
1912
|
-
referrer: document.referrer,
|
|
1913
|
-
visibilityState: document.visibilityState
|
|
1914
|
-
};
|
|
1894
|
+
var id = createUuid();
|
|
1895
|
+
try {
|
|
1896
|
+
var _window_localStorage;
|
|
1897
|
+
(_window_localStorage = window.localStorage) === null || _window_localStorage === void 0 ? void 0 : _window_localStorage.setItem(storageKey, id);
|
|
1898
|
+
} catch (unused) {}
|
|
1899
|
+
return id;
|
|
1915
1900
|
}
|
|
1916
|
-
function
|
|
1917
|
-
|
|
1918
|
-
|
|
1919
|
-
return
|
|
1920
|
-
|
|
1921
|
-
|
|
1922
|
-
|
|
1923
|
-
|
|
1924
|
-
|
|
1925
|
-
|
|
1926
|
-
|
|
1927
|
-
}
|
|
1928
|
-
fingerprintString = JSON.stringify(clientInfo);
|
|
1929
|
-
if (!(typeof crypto !== "undefined" && ((_crypto_subtle = crypto.subtle) === null || _crypto_subtle === void 0 ? void 0 : _crypto_subtle.digest))) return [
|
|
1930
|
-
3,
|
|
1931
|
-
5
|
|
1932
|
-
];
|
|
1933
|
-
_state.label = 1;
|
|
1934
|
-
case 1:
|
|
1935
|
-
_state.trys.push([
|
|
1936
|
-
1,
|
|
1937
|
-
4,
|
|
1938
|
-
,
|
|
1939
|
-
5
|
|
1940
|
-
]);
|
|
1941
|
-
return [
|
|
1942
|
-
4,
|
|
1943
|
-
crypto.subtle.digest("SHA-256", new Uint8Array([
|
|
1944
|
-
1,
|
|
1945
|
-
2,
|
|
1946
|
-
3
|
|
1947
|
-
]))
|
|
1948
|
-
];
|
|
1949
|
-
case 2:
|
|
1950
|
-
_state.sent();
|
|
1951
|
-
if (typeof TextEncoder !== "undefined") {
|
|
1952
|
-
encodedData = new TextEncoder().encode(fingerprintString);
|
|
1953
|
-
} else {
|
|
1954
|
-
utf8 = unescape(encodeURIComponent(fingerprintString));
|
|
1955
|
-
buffer = new Uint8Array(utf8.length);
|
|
1956
|
-
for(i = 0; i < utf8.length; i++){
|
|
1957
|
-
buffer[i] = utf8.charCodeAt(i);
|
|
1958
|
-
}
|
|
1959
|
-
encodedData = buffer;
|
|
1960
|
-
}
|
|
1961
|
-
return [
|
|
1962
|
-
4,
|
|
1963
|
-
crypto.subtle.digest("SHA-256", encodedData)
|
|
1964
|
-
];
|
|
1965
|
-
case 3:
|
|
1966
|
-
hashBuffer = _state.sent();
|
|
1967
|
-
hashHex = Array.from(new Uint8Array(hashBuffer)).map(function(b) {
|
|
1968
|
-
return b.toString(16).padStart(2, "0");
|
|
1969
|
-
}).join("");
|
|
1970
|
-
cachedBrowserId = hashHex;
|
|
1971
|
-
return [
|
|
1972
|
-
2,
|
|
1973
|
-
hashHex
|
|
1974
|
-
];
|
|
1975
|
-
case 4:
|
|
1976
|
-
unused = _state.sent();
|
|
1977
|
-
console.warn("[StormcloudVideoPlayer] crypto.subtle not supported, using fallback hash");
|
|
1978
|
-
return [
|
|
1979
|
-
3,
|
|
1980
|
-
5
|
|
1981
|
-
];
|
|
1982
|
-
case 5:
|
|
1983
|
-
hash = 0;
|
|
1984
|
-
for(i1 = 0; i1 < fingerprintString.length; i1++){
|
|
1985
|
-
char = fingerprintString.charCodeAt(i1);
|
|
1986
|
-
hash = (hash << 5) - hash + char;
|
|
1987
|
-
hash = hash & hash;
|
|
1988
|
-
}
|
|
1989
|
-
fallbackHash = Math.abs(hash).toString(16).padStart(8, "0");
|
|
1990
|
-
timestamp = Date.now().toString(16).padStart(12, "0");
|
|
1991
|
-
random = Math.random().toString(16).substring(2, 14).padStart(12, "0");
|
|
1992
|
-
cachedBrowserId = (fallbackHash + timestamp + random).padEnd(64, "0");
|
|
1993
|
-
return [
|
|
1994
|
-
2,
|
|
1995
|
-
cachedBrowserId
|
|
1996
|
-
];
|
|
1997
|
-
}
|
|
1998
|
-
});
|
|
1999
|
-
})();
|
|
1901
|
+
function getOrCreateCtvSessionId() {
|
|
1902
|
+
var existing = readStoredString(CTV_SESSION_STORAGE_KEY);
|
|
1903
|
+
if (existing) {
|
|
1904
|
+
return existing;
|
|
1905
|
+
}
|
|
1906
|
+
var sessionId = createUuid();
|
|
1907
|
+
try {
|
|
1908
|
+
var _window_localStorage;
|
|
1909
|
+
(_window_localStorage = window.localStorage) === null || _window_localStorage === void 0 ? void 0 : _window_localStorage.setItem(CTV_SESSION_STORAGE_KEY, sessionId);
|
|
1910
|
+
} catch (unused) {}
|
|
1911
|
+
return sessionId;
|
|
2000
1912
|
}
|
|
2001
|
-
function
|
|
2002
|
-
|
|
1913
|
+
function createUuid() {
|
|
1914
|
+
if (typeof crypto !== "undefined" && typeof crypto.randomUUID === "function") {
|
|
1915
|
+
return crypto.randomUUID();
|
|
1916
|
+
}
|
|
1917
|
+
return "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g, function(char) {
|
|
1918
|
+
var value = Math.floor(Math.random() * 16);
|
|
1919
|
+
var nibble = char === "x" ? value : value & 3 | 8;
|
|
1920
|
+
return nibble.toString(16);
|
|
1921
|
+
});
|
|
2003
1922
|
}
|
|
2004
|
-
function
|
|
2005
|
-
|
|
2006
|
-
|
|
2007
|
-
var
|
|
2008
|
-
|
|
2009
|
-
|
|
2010
|
-
|
|
2011
|
-
|
|
2012
|
-
|
|
2013
|
-
|
|
2014
|
-
|
|
2015
|
-
|
|
2016
|
-
|
|
2017
|
-
|
|
2018
|
-
|
|
2019
|
-
captureAt = (_flags_captureAt = flags.captureAt) !== null && _flags_captureAt !== void 0 ? _flags_captureAt : /* @__PURE__ */ new Date().toISOString();
|
|
2020
|
-
return [
|
|
2021
|
-
2,
|
|
2022
|
-
_object_spread({
|
|
2023
|
-
player_id: playerId,
|
|
2024
|
-
device_type: clientInfo.deviceType,
|
|
2025
|
-
os: clientInfo.os.toLowerCase(),
|
|
2026
|
-
ad_loaded: (_flags_adLoaded = flags.adLoaded) !== null && _flags_adLoaded !== void 0 ? _flags_adLoaded : false,
|
|
2027
|
-
ad_detect: (_flags_adDetect = flags.adDetect) !== null && _flags_adDetect !== void 0 ? _flags_adDetect : false,
|
|
2028
|
-
capture_at: captureAt
|
|
2029
|
-
}, context.inputStreamType ? {
|
|
2030
|
-
input_stream_type: context.inputStreamType
|
|
2031
|
-
} : {})
|
|
2032
|
-
];
|
|
1923
|
+
function readPlatformNativeDeviceId() {
|
|
1924
|
+
if (typeof window === "undefined") return {};
|
|
1925
|
+
try {
|
|
1926
|
+
var _window_webapis;
|
|
1927
|
+
var adinfo = (_window_webapis = window.webapis) === null || _window_webapis === void 0 ? void 0 : _window_webapis.adinfo;
|
|
1928
|
+
if (adinfo) {
|
|
1929
|
+
var tifa = typeof adinfo.getTIFA === "function" ? adinfo.getTIFA() : adinfo.tifa;
|
|
1930
|
+
if (typeof tifa === "string" && tifa && !isMacroPlaceholder(tifa)) {
|
|
1931
|
+
var lat = typeof adinfo.isLATEnabled === "function" ? adinfo.isLATEnabled() : void 0;
|
|
1932
|
+
return _object_spread({
|
|
1933
|
+
deviceId: tifa,
|
|
1934
|
+
deviceIdType: "tifa"
|
|
1935
|
+
}, typeof lat === "boolean" ? {
|
|
1936
|
+
limitAdTracking: lat
|
|
1937
|
+
} : {});
|
|
2033
1938
|
}
|
|
2034
|
-
}
|
|
2035
|
-
})
|
|
1939
|
+
}
|
|
1940
|
+
} catch (unused) {}
|
|
1941
|
+
try {
|
|
1942
|
+
var webOSDev = window.webOSDev;
|
|
1943
|
+
if (webOSDev) {
|
|
1944
|
+
var _webOSDev_lgudid;
|
|
1945
|
+
var lgudid = typeof webOSDev.LGUDID === "function" ? webOSDev.LGUDID() : (_webOSDev_lgudid = webOSDev.lgudid) !== null && _webOSDev_lgudid !== void 0 ? _webOSDev_lgudid : webOSDev.LGUDID;
|
|
1946
|
+
if (typeof lgudid === "string" && lgudid) {
|
|
1947
|
+
if (isZeroedAdId(lgudid)) {
|
|
1948
|
+
return {
|
|
1949
|
+
deviceIdType: "lgudid",
|
|
1950
|
+
limitAdTracking: true
|
|
1951
|
+
};
|
|
1952
|
+
}
|
|
1953
|
+
if (!isMacroPlaceholder(lgudid)) {
|
|
1954
|
+
return {
|
|
1955
|
+
deviceId: lgudid,
|
|
1956
|
+
deviceIdType: "lgudid",
|
|
1957
|
+
limitAdTracking: false
|
|
1958
|
+
};
|
|
1959
|
+
}
|
|
1960
|
+
}
|
|
1961
|
+
}
|
|
1962
|
+
} catch (unused) {}
|
|
1963
|
+
try {
|
|
1964
|
+
var roku = window.Roku;
|
|
1965
|
+
if (roku) {
|
|
1966
|
+
var rida = typeof roku.getPublisherUniqueId === "function" ? roku.getPublisherUniqueId() : roku.rida;
|
|
1967
|
+
if (typeof rida === "string" && rida && !isMacroPlaceholder(rida)) {
|
|
1968
|
+
return {
|
|
1969
|
+
deviceId: rida,
|
|
1970
|
+
deviceIdType: "rida",
|
|
1971
|
+
limitAdTracking: false
|
|
1972
|
+
};
|
|
1973
|
+
}
|
|
1974
|
+
}
|
|
1975
|
+
} catch (unused) {}
|
|
1976
|
+
return {};
|
|
2036
1977
|
}
|
|
2037
|
-
|
|
2038
|
-
|
|
2039
|
-
|
|
1978
|
+
var ZEROED_AD_ID_PATTERNS = /* @__PURE__ */ new Set([
|
|
1979
|
+
"38400000-8cf0-11bd-b23e-10b96e40000d",
|
|
1980
|
+
"00000000-0000-0000-0000-000000000000"
|
|
1981
|
+
]);
|
|
1982
|
+
function isMacroPlaceholder(value) {
|
|
1983
|
+
var t = value.trim();
|
|
1984
|
+
return !t || /^(\[[^\]]*\]|\{[^}]*\}|%%[^%]*%%)$/.test(t) || /^(unknown|null|undefined|none|n\/a|\$\{[^}]+\})$/i.test(t) || ZEROED_AD_ID_PATTERNS.has(t.toLowerCase());
|
|
2040
1985
|
}
|
|
2041
|
-
function
|
|
2042
|
-
return
|
|
2043
|
-
var context, metricEvent, error;
|
|
2044
|
-
var _arguments = arguments;
|
|
2045
|
-
return _ts_generator(this, function(_state) {
|
|
2046
|
-
switch(_state.label){
|
|
2047
|
-
case 0:
|
|
2048
|
-
context = _arguments.length > 1 && _arguments[1] !== void 0 ? _arguments[1] : {};
|
|
2049
|
-
if (!canPublish(licenseKey)) return [
|
|
2050
|
-
2
|
|
2051
|
-
];
|
|
2052
|
-
_state.label = 1;
|
|
2053
|
-
case 1:
|
|
2054
|
-
_state.trys.push([
|
|
2055
|
-
1,
|
|
2056
|
-
3,
|
|
2057
|
-
,
|
|
2058
|
-
4
|
|
2059
|
-
]);
|
|
2060
|
-
return [
|
|
2061
|
-
4,
|
|
2062
|
-
buildPlayerMetricEvent(context, {
|
|
2063
|
-
adLoaded: false,
|
|
2064
|
-
adDetect: false
|
|
2065
|
-
})
|
|
2066
|
-
];
|
|
2067
|
-
case 2:
|
|
2068
|
-
metricEvent = _state.sent();
|
|
2069
|
-
publishTracking(licenseKey, "metrics", {
|
|
2070
|
-
events: [
|
|
2071
|
-
metricEvent
|
|
2072
|
-
]
|
|
2073
|
-
});
|
|
2074
|
-
return [
|
|
2075
|
-
3,
|
|
2076
|
-
4
|
|
2077
|
-
];
|
|
2078
|
-
case 3:
|
|
2079
|
-
error = _state.sent();
|
|
2080
|
-
console.error("[StormcloudVideoPlayer] Error sending initial tracking data:", error);
|
|
2081
|
-
return [
|
|
2082
|
-
3,
|
|
2083
|
-
4
|
|
2084
|
-
];
|
|
2085
|
-
case 4:
|
|
2086
|
-
return [
|
|
2087
|
-
2
|
|
2088
|
-
];
|
|
2089
|
-
}
|
|
2090
|
-
});
|
|
2091
|
-
}).apply(this, arguments);
|
|
1986
|
+
function isZeroedAdId(value) {
|
|
1987
|
+
return ZEROED_AD_ID_PATTERNS.has(value.trim().toLowerCase());
|
|
2092
1988
|
}
|
|
2093
|
-
function
|
|
2094
|
-
|
|
2095
|
-
|
|
2096
|
-
|
|
2097
|
-
|
|
2098
|
-
|
|
2099
|
-
|
|
2100
|
-
|
|
2101
|
-
|
|
2102
|
-
|
|
2103
|
-
|
|
2104
|
-
|
|
2105
|
-
|
|
2106
|
-
|
|
2107
|
-
|
|
2108
|
-
|
|
2109
|
-
|
|
2110
|
-
|
|
2111
|
-
|
|
2112
|
-
|
|
2113
|
-
|
|
2114
|
-
|
|
2115
|
-
|
|
2116
|
-
|
|
2117
|
-
|
|
2118
|
-
|
|
2119
|
-
|
|
2120
|
-
|
|
2121
|
-
|
|
2122
|
-
|
|
2123
|
-
|
|
2124
|
-
|
|
2125
|
-
|
|
2126
|
-
|
|
2127
|
-
|
|
2128
|
-
|
|
2129
|
-
|
|
2130
|
-
|
|
2131
|
-
|
|
2132
|
-
|
|
1989
|
+
function readNativeBridgeSignals() {
|
|
1990
|
+
if (typeof window === "undefined") {
|
|
1991
|
+
return {};
|
|
1992
|
+
}
|
|
1993
|
+
var candidates = [
|
|
1994
|
+
window.__STORMCLOUD_CTV_AD_INFO__,
|
|
1995
|
+
window.__STORMCLOUD_CTV__,
|
|
1996
|
+
window.stormcloudCtv,
|
|
1997
|
+
window.AiryTV,
|
|
1998
|
+
window.Android,
|
|
1999
|
+
window.webOS,
|
|
2000
|
+
window.tizen,
|
|
2001
|
+
window.amazon
|
|
2002
|
+
].filter(Boolean);
|
|
2003
|
+
var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
|
|
2004
|
+
try {
|
|
2005
|
+
for(var _iterator = candidates[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){
|
|
2006
|
+
var source = _step.value;
|
|
2007
|
+
var contentUrl = readBridgeValue(source, [
|
|
2008
|
+
"contentUrl",
|
|
2009
|
+
"url",
|
|
2010
|
+
"videoUrl",
|
|
2011
|
+
"canonicalUrl"
|
|
2012
|
+
]) || void 0;
|
|
2013
|
+
var appId = readBridgeValue(source, [
|
|
2014
|
+
"appId",
|
|
2015
|
+
"msid",
|
|
2016
|
+
"applicationId",
|
|
2017
|
+
"packageName"
|
|
2018
|
+
]) || void 0;
|
|
2019
|
+
var appName = readBridgeValue(source, [
|
|
2020
|
+
"appName",
|
|
2021
|
+
"an",
|
|
2022
|
+
"applicationName"
|
|
2023
|
+
]) || void 0;
|
|
2024
|
+
var deviceId = readBridgeValue(source, [
|
|
2025
|
+
"rdid",
|
|
2026
|
+
"ifa",
|
|
2027
|
+
"advertisingId",
|
|
2028
|
+
"adId",
|
|
2029
|
+
"deviceId",
|
|
2030
|
+
"lgudid",
|
|
2031
|
+
"LGUDID",
|
|
2032
|
+
"tifa",
|
|
2033
|
+
"rida",
|
|
2034
|
+
"afai",
|
|
2035
|
+
"aaid"
|
|
2036
|
+
]) || void 0;
|
|
2037
|
+
if (!contentUrl && !deviceId && !appId && !appName) continue;
|
|
2038
|
+
var deviceIdType = readBridgeValue(source, [
|
|
2039
|
+
"idtype",
|
|
2040
|
+
"deviceIdType",
|
|
2041
|
+
"advertisingIdType",
|
|
2042
|
+
"idType"
|
|
2043
|
+
]) || inferDeviceIdType();
|
|
2044
|
+
var limitAdTracking = readBridgeBoolean(source, [
|
|
2045
|
+
"is_lat",
|
|
2046
|
+
"limitAdTracking",
|
|
2047
|
+
"limitedAdTracking",
|
|
2048
|
+
"lat"
|
|
2049
|
+
]);
|
|
2050
|
+
return _object_spread({}, contentUrl ? {
|
|
2051
|
+
contentUrl: contentUrl
|
|
2052
|
+
} : {}, appId ? {
|
|
2053
|
+
appId: appId
|
|
2054
|
+
} : {}, appName ? {
|
|
2055
|
+
appName: appName
|
|
2056
|
+
} : {}, deviceId ? {
|
|
2057
|
+
deviceId: deviceId
|
|
2058
|
+
} : {}, deviceId && deviceIdType ? {
|
|
2059
|
+
deviceIdType: deviceIdType
|
|
2060
|
+
} : {}, deviceId && limitAdTracking != null ? {
|
|
2061
|
+
limitAdTracking: limitAdTracking
|
|
2062
|
+
} : {});
|
|
2063
|
+
}
|
|
2064
|
+
} catch (err) {
|
|
2065
|
+
_didIteratorError = true;
|
|
2066
|
+
_iteratorError = err;
|
|
2067
|
+
} finally{
|
|
2068
|
+
try {
|
|
2069
|
+
if (!_iteratorNormalCompletion && _iterator.return != null) {
|
|
2070
|
+
_iterator.return();
|
|
2133
2071
|
}
|
|
2134
|
-
}
|
|
2135
|
-
|
|
2136
|
-
|
|
2137
|
-
function sendAdLoadedTracking(_0, _1) {
|
|
2138
|
-
return _async_to_generator(function(licenseKey, adLoadedInfo) {
|
|
2139
|
-
var context, error;
|
|
2140
|
-
var _arguments = arguments;
|
|
2141
|
-
return _ts_generator(this, function(_state) {
|
|
2142
|
-
switch(_state.label){
|
|
2143
|
-
case 0:
|
|
2144
|
-
context = _arguments.length > 2 && _arguments[2] !== void 0 ? _arguments[2] : {};
|
|
2145
|
-
_state.label = 1;
|
|
2146
|
-
case 1:
|
|
2147
|
-
_state.trys.push([
|
|
2148
|
-
1,
|
|
2149
|
-
3,
|
|
2150
|
-
,
|
|
2151
|
-
4
|
|
2152
|
-
]);
|
|
2153
|
-
return [
|
|
2154
|
-
4,
|
|
2155
|
-
sendHeartbeat(licenseKey, context, {
|
|
2156
|
-
adLoaded: true,
|
|
2157
|
-
captureAt: adLoadedInfo.timestamp
|
|
2158
|
-
})
|
|
2159
|
-
];
|
|
2160
|
-
case 2:
|
|
2161
|
-
_state.sent();
|
|
2162
|
-
return [
|
|
2163
|
-
3,
|
|
2164
|
-
4
|
|
2165
|
-
];
|
|
2166
|
-
case 3:
|
|
2167
|
-
error = _state.sent();
|
|
2168
|
-
console.error("[StormcloudVideoPlayer] Error sending ad loaded tracking:", error);
|
|
2169
|
-
return [
|
|
2170
|
-
3,
|
|
2171
|
-
4
|
|
2172
|
-
];
|
|
2173
|
-
case 4:
|
|
2174
|
-
return [
|
|
2175
|
-
2
|
|
2176
|
-
];
|
|
2072
|
+
} finally{
|
|
2073
|
+
if (_didIteratorError) {
|
|
2074
|
+
throw _iteratorError;
|
|
2177
2075
|
}
|
|
2178
|
-
}
|
|
2179
|
-
}
|
|
2076
|
+
}
|
|
2077
|
+
}
|
|
2078
|
+
return {};
|
|
2180
2079
|
}
|
|
2181
|
-
function
|
|
2182
|
-
|
|
2183
|
-
|
|
2184
|
-
var
|
|
2185
|
-
|
|
2186
|
-
|
|
2187
|
-
|
|
2188
|
-
|
|
2189
|
-
if (!canPublish(licenseKey)) return [
|
|
2190
|
-
2
|
|
2191
|
-
];
|
|
2192
|
-
_state.label = 1;
|
|
2193
|
-
case 1:
|
|
2194
|
-
_state.trys.push([
|
|
2195
|
-
1,
|
|
2196
|
-
3,
|
|
2197
|
-
,
|
|
2198
|
-
4
|
|
2199
|
-
]);
|
|
2200
|
-
return [
|
|
2201
|
-
4,
|
|
2202
|
-
buildPlayerMetricEvent(context, {
|
|
2203
|
-
captureAt: adImpressionInfo.timestamp
|
|
2204
|
-
})
|
|
2205
|
-
];
|
|
2206
|
-
case 2:
|
|
2207
|
-
metricEvent = _state.sent();
|
|
2208
|
-
publishTracking(licenseKey, "heartbeat", metricEvent);
|
|
2209
|
-
publishTracking(licenseKey, "impressions", {
|
|
2210
|
-
events: [
|
|
2211
|
-
{
|
|
2212
|
-
player_id: metricEvent.player_id,
|
|
2213
|
-
ad_played_count: 1,
|
|
2214
|
-
ad_url: adImpressionInfo.adUrl,
|
|
2215
|
-
capture_at: adImpressionInfo.timestamp
|
|
2216
|
-
}
|
|
2217
|
-
]
|
|
2218
|
-
});
|
|
2219
|
-
return [
|
|
2220
|
-
3,
|
|
2221
|
-
4
|
|
2222
|
-
];
|
|
2223
|
-
case 3:
|
|
2224
|
-
error = _state.sent();
|
|
2225
|
-
console.error("[StormcloudVideoPlayer] Error sending ad impression tracking:", error);
|
|
2226
|
-
return [
|
|
2227
|
-
3,
|
|
2228
|
-
4
|
|
2229
|
-
];
|
|
2230
|
-
case 4:
|
|
2231
|
-
return [
|
|
2232
|
-
2
|
|
2233
|
-
];
|
|
2080
|
+
function readBridgeValue(source, keys) {
|
|
2081
|
+
var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
|
|
2082
|
+
try {
|
|
2083
|
+
for(var _iterator = keys[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){
|
|
2084
|
+
var key = _step.value;
|
|
2085
|
+
var value = source === null || source === void 0 ? void 0 : source[key];
|
|
2086
|
+
if (typeof value === "string" && value) {
|
|
2087
|
+
return value;
|
|
2234
2088
|
}
|
|
2235
|
-
|
|
2236
|
-
|
|
2237
|
-
|
|
2238
|
-
|
|
2239
|
-
|
|
2240
|
-
|
|
2241
|
-
|
|
2242
|
-
return _ts_generator(this, function(_state) {
|
|
2243
|
-
switch(_state.label){
|
|
2244
|
-
case 0:
|
|
2245
|
-
context = _arguments.length > 1 && _arguments[1] !== void 0 ? _arguments[1] : {}, flags = _arguments.length > 2 && _arguments[2] !== void 0 ? _arguments[2] : {};
|
|
2246
|
-
if (!canPublish(licenseKey)) return [
|
|
2247
|
-
2
|
|
2248
|
-
];
|
|
2249
|
-
_state.label = 1;
|
|
2250
|
-
case 1:
|
|
2251
|
-
_state.trys.push([
|
|
2252
|
-
1,
|
|
2253
|
-
3,
|
|
2254
|
-
,
|
|
2255
|
-
4
|
|
2256
|
-
]);
|
|
2257
|
-
return [
|
|
2258
|
-
4,
|
|
2259
|
-
buildPlayerMetricEvent(context, flags)
|
|
2260
|
-
];
|
|
2261
|
-
case 2:
|
|
2262
|
-
heartbeatData = _state.sent();
|
|
2263
|
-
publishTracking(licenseKey, "heartbeat", heartbeatData);
|
|
2264
|
-
return [
|
|
2265
|
-
3,
|
|
2266
|
-
4
|
|
2267
|
-
];
|
|
2268
|
-
case 3:
|
|
2269
|
-
error = _state.sent();
|
|
2270
|
-
console.error("[StormcloudVideoPlayer] Error sending heartbeat:", error);
|
|
2271
|
-
return [
|
|
2272
|
-
3,
|
|
2273
|
-
4
|
|
2274
|
-
];
|
|
2275
|
-
case 4:
|
|
2276
|
-
return [
|
|
2277
|
-
2
|
|
2278
|
-
];
|
|
2089
|
+
if (typeof value === "function") {
|
|
2090
|
+
try {
|
|
2091
|
+
var result = value.call(source);
|
|
2092
|
+
if (typeof result === "string" && result) {
|
|
2093
|
+
return result;
|
|
2094
|
+
}
|
|
2095
|
+
} catch (unused) {}
|
|
2279
2096
|
}
|
|
2280
|
-
}
|
|
2281
|
-
})
|
|
2282
|
-
|
|
2283
|
-
|
|
2284
|
-
|
|
2285
|
-
|
|
2286
|
-
|
|
2287
|
-
|
|
2288
|
-
|
|
2289
|
-
|
|
2290
|
-
|
|
2291
|
-
|
|
2292
|
-
this.params = /* @__PURE__ */ new Map();
|
|
2293
|
-
if (typeof init === "string") {
|
|
2294
|
-
this.parseQueryString(init);
|
|
2295
|
-
} else if (_instanceof(init, URLSearchParamsPolyfill)) {
|
|
2296
|
-
init.forEach(function(value, key) {
|
|
2297
|
-
_this.append(key, value);
|
|
2298
|
-
});
|
|
2097
|
+
}
|
|
2098
|
+
} catch (err) {
|
|
2099
|
+
_didIteratorError = true;
|
|
2100
|
+
_iteratorError = err;
|
|
2101
|
+
} finally{
|
|
2102
|
+
try {
|
|
2103
|
+
if (!_iteratorNormalCompletion && _iterator.return != null) {
|
|
2104
|
+
_iterator.return();
|
|
2105
|
+
}
|
|
2106
|
+
} finally{
|
|
2107
|
+
if (_didIteratorError) {
|
|
2108
|
+
throw _iteratorError;
|
|
2299
2109
|
}
|
|
2300
2110
|
}
|
|
2301
|
-
|
|
2302
|
-
|
|
2303
|
-
|
|
2304
|
-
|
|
2305
|
-
|
|
2306
|
-
|
|
2307
|
-
|
|
2308
|
-
|
|
2309
|
-
|
|
2310
|
-
|
|
2311
|
-
|
|
2312
|
-
|
|
2313
|
-
|
|
2314
|
-
|
|
2315
|
-
|
|
2316
|
-
|
|
2317
|
-
|
|
2318
|
-
|
|
2319
|
-
key: "safeDecodeURIComponent",
|
|
2320
|
-
value: function safeDecodeURIComponent(str) {
|
|
2321
|
-
try {
|
|
2322
|
-
return decodeURIComponent(str.replace(/\+/g, " "));
|
|
2323
|
-
} catch (e) {
|
|
2324
|
-
return str;
|
|
2111
|
+
}
|
|
2112
|
+
return void 0;
|
|
2113
|
+
}
|
|
2114
|
+
function readBridgeBoolean(source, keys) {
|
|
2115
|
+
var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
|
|
2116
|
+
try {
|
|
2117
|
+
for(var _iterator = keys[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){
|
|
2118
|
+
var key = _step.value;
|
|
2119
|
+
var value = source === null || source === void 0 ? void 0 : source[key];
|
|
2120
|
+
var normalized = normalizeBoolean(value);
|
|
2121
|
+
if (normalized != null) {
|
|
2122
|
+
return normalized;
|
|
2123
|
+
}
|
|
2124
|
+
if (typeof value === "function") {
|
|
2125
|
+
try {
|
|
2126
|
+
var result = normalizeBoolean(value.call(source));
|
|
2127
|
+
if (result != null) {
|
|
2128
|
+
return result;
|
|
2325
2129
|
}
|
|
2326
|
-
}
|
|
2327
|
-
}
|
|
2328
|
-
|
|
2329
|
-
|
|
2330
|
-
|
|
2331
|
-
|
|
2332
|
-
|
|
2333
|
-
|
|
2334
|
-
|
|
2335
|
-
|
|
2336
|
-
|
|
2337
|
-
|
|
2338
|
-
|
|
2339
|
-
|
|
2340
|
-
|
|
2341
|
-
|
|
2342
|
-
|
|
2343
|
-
|
|
2344
|
-
|
|
2345
|
-
|
|
2346
|
-
|
|
2347
|
-
|
|
2348
|
-
|
|
2349
|
-
|
|
2350
|
-
|
|
2351
|
-
|
|
2352
|
-
|
|
2353
|
-
|
|
2354
|
-
|
|
2355
|
-
|
|
2356
|
-
|
|
2357
|
-
|
|
2358
|
-
|
|
2359
|
-
|
|
2360
|
-
|
|
2361
|
-
|
|
2362
|
-
key: "set",
|
|
2363
|
-
value: function set(name, value) {
|
|
2364
|
-
this.params.set(name, [
|
|
2365
|
-
String(value)
|
|
2366
|
-
]);
|
|
2367
|
-
}
|
|
2368
|
-
},
|
|
2369
|
-
{
|
|
2370
|
-
key: "forEach",
|
|
2371
|
-
value: function forEach(callback) {
|
|
2372
|
-
var _this = this;
|
|
2373
|
-
this.params.forEach(function(values, key) {
|
|
2374
|
-
values.forEach(function(value) {
|
|
2375
|
-
callback(value, key, _this);
|
|
2376
|
-
});
|
|
2377
|
-
});
|
|
2378
|
-
}
|
|
2379
|
-
},
|
|
2380
|
-
{
|
|
2381
|
-
key: "toString",
|
|
2382
|
-
value: function toString() {
|
|
2383
|
-
var parts = [];
|
|
2384
|
-
this.params.forEach(function(values, key) {
|
|
2385
|
-
values.forEach(function(value) {
|
|
2386
|
-
parts.push("".concat(encodeURIComponent(key), "=").concat(encodeURIComponent(value)));
|
|
2387
|
-
});
|
|
2388
|
-
});
|
|
2389
|
-
return parts.join("&");
|
|
2390
|
-
}
|
|
2130
|
+
} catch (unused) {}
|
|
2131
|
+
}
|
|
2132
|
+
}
|
|
2133
|
+
} catch (err) {
|
|
2134
|
+
_didIteratorError = true;
|
|
2135
|
+
_iteratorError = err;
|
|
2136
|
+
} finally{
|
|
2137
|
+
try {
|
|
2138
|
+
if (!_iteratorNormalCompletion && _iterator.return != null) {
|
|
2139
|
+
_iterator.return();
|
|
2140
|
+
}
|
|
2141
|
+
} finally{
|
|
2142
|
+
if (_didIteratorError) {
|
|
2143
|
+
throw _iteratorError;
|
|
2144
|
+
}
|
|
2145
|
+
}
|
|
2146
|
+
}
|
|
2147
|
+
return void 0;
|
|
2148
|
+
}
|
|
2149
|
+
function readStoredDeviceId() {
|
|
2150
|
+
var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
|
|
2151
|
+
try {
|
|
2152
|
+
for(var _iterator = DEVICE_ID_STORAGE_KEYS[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){
|
|
2153
|
+
var key = _step.value;
|
|
2154
|
+
var value = readStoredString(key);
|
|
2155
|
+
if (value) {
|
|
2156
|
+
return value;
|
|
2157
|
+
}
|
|
2158
|
+
}
|
|
2159
|
+
} catch (err) {
|
|
2160
|
+
_didIteratorError = true;
|
|
2161
|
+
_iteratorError = err;
|
|
2162
|
+
} finally{
|
|
2163
|
+
try {
|
|
2164
|
+
if (!_iteratorNormalCompletion && _iterator.return != null) {
|
|
2165
|
+
_iterator.return();
|
|
2391
2166
|
}
|
|
2392
|
-
|
|
2393
|
-
|
|
2394
|
-
|
|
2395
|
-
|
|
2167
|
+
} finally{
|
|
2168
|
+
if (_didIteratorError) {
|
|
2169
|
+
throw _iteratorError;
|
|
2170
|
+
}
|
|
2171
|
+
}
|
|
2172
|
+
}
|
|
2173
|
+
return void 0;
|
|
2396
2174
|
}
|
|
2397
|
-
function
|
|
2398
|
-
if (typeof
|
|
2399
|
-
return;
|
|
2175
|
+
function readStoredString(key) {
|
|
2176
|
+
if (typeof window === "undefined") {
|
|
2177
|
+
return void 0;
|
|
2400
2178
|
}
|
|
2401
|
-
|
|
2402
|
-
|
|
2403
|
-
|
|
2404
|
-
|
|
2179
|
+
try {
|
|
2180
|
+
var _window_localStorage;
|
|
2181
|
+
var value = (_window_localStorage = window.localStorage) === null || _window_localStorage === void 0 ? void 0 : _window_localStorage.getItem(key);
|
|
2182
|
+
return value || void 0;
|
|
2183
|
+
} catch (unused) {
|
|
2184
|
+
return void 0;
|
|
2185
|
+
}
|
|
2186
|
+
}
|
|
2187
|
+
function readStoredLimitAdTracking() {
|
|
2188
|
+
return normalizeBoolean(readStoredString("limitAdTracking") || readStoredString("limitedAdTracking") || readStoredString("is_lat"));
|
|
2189
|
+
}
|
|
2190
|
+
function normalizeBoolean(value) {
|
|
2191
|
+
if (typeof value === "boolean") {
|
|
2192
|
+
return value;
|
|
2193
|
+
}
|
|
2194
|
+
if (typeof value === "number") {
|
|
2195
|
+
return value === 1;
|
|
2196
|
+
}
|
|
2197
|
+
if (typeof value === "string") {
|
|
2198
|
+
var normalized = value.toLowerCase();
|
|
2199
|
+
if (normalized === "1" || normalized === "true" || normalized === "yes") {
|
|
2200
|
+
return true;
|
|
2405
2201
|
}
|
|
2406
|
-
|
|
2407
|
-
|
|
2408
|
-
|
|
2409
|
-
|
|
2410
|
-
|
|
2411
|
-
for(var i = 0; i < str.length; i++){
|
|
2412
|
-
var charcode = str.charCodeAt(i);
|
|
2413
|
-
if (charcode < 128) {
|
|
2414
|
-
utf8.push(charcode);
|
|
2415
|
-
} else if (charcode < 2048) {
|
|
2416
|
-
utf8.push(192 | charcode >> 6, 128 | charcode & 63);
|
|
2417
|
-
} else if (charcode < 55296 || charcode >= 57344) {
|
|
2418
|
-
utf8.push(224 | charcode >> 12, 128 | charcode >> 6 & 63, 128 | charcode & 63);
|
|
2419
|
-
} else {
|
|
2420
|
-
i++;
|
|
2421
|
-
charcode = 65536 + ((charcode & 1023) << 10 | str.charCodeAt(i) & 1023);
|
|
2422
|
-
utf8.push(240 | charcode >> 18, 128 | charcode >> 12 & 63, 128 | charcode >> 6 & 63, 128 | charcode & 63);
|
|
2423
|
-
}
|
|
2424
|
-
}
|
|
2425
|
-
return new Uint8Array(utf8);
|
|
2426
|
-
}
|
|
2427
|
-
}
|
|
2428
|
-
]);
|
|
2429
|
-
return TextEncoderPolyfill;
|
|
2430
|
-
}();
|
|
2431
|
-
window.TextEncoder = TextEncoderPolyfill;
|
|
2202
|
+
if (normalized === "0" || normalized === "false" || normalized === "no") {
|
|
2203
|
+
return false;
|
|
2204
|
+
}
|
|
2205
|
+
}
|
|
2206
|
+
return void 0;
|
|
2432
2207
|
}
|
|
2433
|
-
|
|
2434
|
-
|
|
2435
|
-
|
|
2436
|
-
|
|
2437
|
-
|
|
2438
|
-
|
|
2439
|
-
return value;
|
|
2440
|
-
});
|
|
2441
|
-
}, function(reason) {
|
|
2442
|
-
return constructor.resolve(callback()).then(function() {
|
|
2443
|
-
throw reason;
|
|
2444
|
-
});
|
|
2445
|
-
});
|
|
2446
|
-
};
|
|
2208
|
+
// src/utils/tracking.ts
|
|
2209
|
+
var cachedBrowserId = null;
|
|
2210
|
+
function buildAnalyticsContext(config) {
|
|
2211
|
+
var context = {};
|
|
2212
|
+
if (config.debugAdTiming) {
|
|
2213
|
+
context.debugAdTiming = true;
|
|
2447
2214
|
}
|
|
2215
|
+
if (config.isLiveStream !== void 0) {
|
|
2216
|
+
context.inputStreamType = config.isLiveStream ? "live" : "vod";
|
|
2217
|
+
}
|
|
2218
|
+
return context;
|
|
2448
2219
|
}
|
|
2449
|
-
function
|
|
2450
|
-
|
|
2451
|
-
|
|
2452
|
-
|
|
2453
|
-
|
|
2454
|
-
|
|
2455
|
-
|
|
2456
|
-
|
|
2457
|
-
|
|
2458
|
-
|
|
2459
|
-
|
|
2460
|
-
|
|
2461
|
-
|
|
2462
|
-
|
|
2463
|
-
|
|
2464
|
-
|
|
2220
|
+
function getClientInfo() {
|
|
2221
|
+
var _screen, _screen1, _screen2, _screen3, _screen_orientation, _screen4, _screen5, _window, _window1, _window_screen_orientation, _window_screen, _navigator_languages;
|
|
2222
|
+
var ua = navigator.userAgent;
|
|
2223
|
+
var platform = navigator.platform;
|
|
2224
|
+
var vendor = navigator.vendor || "";
|
|
2225
|
+
var maxTouchPoints = navigator.maxTouchPoints || 0;
|
|
2226
|
+
var memory = navigator.deviceMemory || null;
|
|
2227
|
+
var hardwareConcurrency = navigator.hardwareConcurrency || 1;
|
|
2228
|
+
var screenInfo = {
|
|
2229
|
+
width: (_screen = screen) === null || _screen === void 0 ? void 0 : _screen.width,
|
|
2230
|
+
height: (_screen1 = screen) === null || _screen1 === void 0 ? void 0 : _screen1.height,
|
|
2231
|
+
availWidth: (_screen2 = screen) === null || _screen2 === void 0 ? void 0 : _screen2.availWidth,
|
|
2232
|
+
availHeight: (_screen3 = screen) === null || _screen3 === void 0 ? void 0 : _screen3.availHeight,
|
|
2233
|
+
orientation: ((_screen4 = screen) === null || _screen4 === void 0 ? void 0 : (_screen_orientation = _screen4.orientation) === null || _screen_orientation === void 0 ? void 0 : _screen_orientation.type) || "",
|
|
2234
|
+
pixelDepth: (_screen5 = screen) === null || _screen5 === void 0 ? void 0 : _screen5.pixelDepth
|
|
2235
|
+
};
|
|
2236
|
+
var deviceType = "desktop";
|
|
2237
|
+
var brand = "Unknown";
|
|
2238
|
+
var os = "Unknown";
|
|
2239
|
+
var model = "";
|
|
2240
|
+
var isSmartTV = false;
|
|
2241
|
+
var isAndroid = false;
|
|
2242
|
+
var isWebView = false;
|
|
2243
|
+
var isWebApp = false;
|
|
2244
|
+
if (ua.includes("Web0S")) {
|
|
2245
|
+
brand = "LG";
|
|
2246
|
+
os = "webOS";
|
|
2247
|
+
isSmartTV = true;
|
|
2248
|
+
deviceType = "tv";
|
|
2249
|
+
var webosMatch = ua.match(/Web0S\/([^\s]+)/);
|
|
2250
|
+
model = webosMatch ? "webOS ".concat(webosMatch[1]) : "webOS TV";
|
|
2251
|
+
} else if (ua.includes("Tizen")) {
|
|
2252
|
+
brand = "Samsung";
|
|
2253
|
+
os = "Tizen";
|
|
2254
|
+
isSmartTV = true;
|
|
2255
|
+
deviceType = "tv";
|
|
2256
|
+
var tizenMatch = ua.match(/Tizen\/([^\s]+)/);
|
|
2257
|
+
var tvMatch = ua.match(/(?:Smart-TV|SMART-TV|TV)/i) ? "Smart TV" : "";
|
|
2258
|
+
model = tizenMatch ? "Tizen ".concat(tizenMatch[1], " ").concat(tvMatch).trim() : "Tizen TV";
|
|
2259
|
+
} else if (ua.includes("Philips")) {
|
|
2260
|
+
brand = "Philips";
|
|
2261
|
+
os = "Saphi";
|
|
2262
|
+
isSmartTV = true;
|
|
2263
|
+
deviceType = "tv";
|
|
2264
|
+
} else if (ua.includes("Sharp") || ua.includes("AQUOS")) {
|
|
2265
|
+
brand = "Sharp";
|
|
2266
|
+
os = "Android TV";
|
|
2267
|
+
isSmartTV = true;
|
|
2268
|
+
deviceType = "tv";
|
|
2269
|
+
} else if (ua.includes("Android") && (ua.includes("Sony") || vendor.includes("Sony"))) {
|
|
2270
|
+
brand = "Sony";
|
|
2271
|
+
os = "Android TV";
|
|
2272
|
+
isSmartTV = true;
|
|
2273
|
+
deviceType = "tv";
|
|
2274
|
+
} else if (ua.includes("Android") && (ua.includes("NetCast") || ua.includes("LG"))) {
|
|
2275
|
+
brand = "LG";
|
|
2276
|
+
os = "Android TV";
|
|
2277
|
+
isSmartTV = true;
|
|
2278
|
+
deviceType = "tv";
|
|
2279
|
+
} else if (ua.includes(" Roku") || ua.includes("Roku/")) {
|
|
2280
|
+
brand = "Roku";
|
|
2281
|
+
os = "Roku OS";
|
|
2282
|
+
isSmartTV = true;
|
|
2283
|
+
deviceType = "tv";
|
|
2284
|
+
} else if (ua.includes("AppleTV")) {
|
|
2285
|
+
brand = "Apple";
|
|
2286
|
+
os = "tvOS";
|
|
2287
|
+
isSmartTV = true;
|
|
2288
|
+
deviceType = "tv";
|
|
2289
|
+
}
|
|
2290
|
+
if (ua.includes("Android")) {
|
|
2291
|
+
isAndroid = true;
|
|
2292
|
+
os = "Android";
|
|
2293
|
+
deviceType = /Mobile/.test(ua) ? "mobile" : "tablet";
|
|
2294
|
+
if (ua.includes("Android") && (maxTouchPoints === 0 || ua.includes("Google TV") || ua.includes("XiaoMi"))) {
|
|
2295
|
+
deviceType = "tv";
|
|
2296
|
+
isSmartTV = true;
|
|
2297
|
+
brand = brand === "Unknown" ? "Android TV" : brand;
|
|
2298
|
+
}
|
|
2299
|
+
var androidModelMatch = ua.match(/\(([^)]*Android[^)]*)\)/);
|
|
2300
|
+
if (androidModelMatch && androidModelMatch[1]) {
|
|
2301
|
+
model = androidModelMatch[1];
|
|
2302
|
+
}
|
|
2303
|
+
}
|
|
2304
|
+
if (/iPad|iPhone|iPod/.test(ua)) {
|
|
2305
|
+
os = "iOS";
|
|
2306
|
+
deviceType = "mobile";
|
|
2307
|
+
brand = "Apple";
|
|
2308
|
+
if (navigator.maxTouchPoints > 1 && /iPad/.test(ua)) {
|
|
2309
|
+
deviceType = "tablet";
|
|
2310
|
+
}
|
|
2311
|
+
}
|
|
2312
|
+
if (!isAndroid && !isSmartTV && !/Mobile/.test(ua)) {
|
|
2313
|
+
if (ua.includes("Windows")) {
|
|
2314
|
+
os = "Windows";
|
|
2315
|
+
deviceType = "desktop";
|
|
2316
|
+
} else if (ua.includes("Mac") && !/iPhone/.test(ua)) {
|
|
2317
|
+
os = "macOS";
|
|
2318
|
+
deviceType = "desktop";
|
|
2319
|
+
if (maxTouchPoints > 1) deviceType = "tablet";
|
|
2320
|
+
} else if (ua.includes("Linux")) {
|
|
2321
|
+
os = "Linux";
|
|
2322
|
+
deviceType = "desktop";
|
|
2323
|
+
}
|
|
2324
|
+
}
|
|
2325
|
+
if (brand === "Unknown") {
|
|
2326
|
+
if (vendor.includes("Google") || ua.includes("Chrome")) brand = "Google";
|
|
2327
|
+
if (vendor.includes("Apple")) brand = "Apple";
|
|
2328
|
+
if (vendor.includes("Samsung") || ua.includes("SM-")) brand = "Samsung";
|
|
2329
|
+
}
|
|
2330
|
+
isWebView = /wv|WebView|Linux; U;/.test(ua);
|
|
2331
|
+
if (((_window = window) === null || _window === void 0 ? void 0 : _window.outerHeight) === 0 && ((_window1 = window) === null || _window1 === void 0 ? void 0 : _window1.outerWidth) === 0) {
|
|
2332
|
+
isWebView = true;
|
|
2333
|
+
}
|
|
2334
|
+
isWebApp = window.matchMedia("(display-mode: standalone)").matches || window.navigator.standalone === true || ((_window_screen = window.screen) === null || _window_screen === void 0 ? void 0 : (_window_screen_orientation = _window_screen.orientation) === null || _window_screen_orientation === void 0 ? void 0 : _window_screen_orientation.angle) !== void 0;
|
|
2335
|
+
return {
|
|
2336
|
+
brand: brand,
|
|
2337
|
+
os: os,
|
|
2338
|
+
model: model || ua.substring(0, 50) + "...",
|
|
2339
|
+
deviceType: deviceType,
|
|
2340
|
+
isSmartTV: isSmartTV,
|
|
2341
|
+
isAndroid: isAndroid,
|
|
2342
|
+
isWebView: isWebView,
|
|
2343
|
+
isWebApp: isWebApp,
|
|
2344
|
+
domain: window.location.hostname,
|
|
2345
|
+
origin: window.location.origin,
|
|
2346
|
+
path: window.location.pathname,
|
|
2347
|
+
userAgent: ua,
|
|
2348
|
+
vendor: vendor,
|
|
2349
|
+
platform: platform,
|
|
2350
|
+
screen: screenInfo,
|
|
2351
|
+
hardwareConcurrency: hardwareConcurrency,
|
|
2352
|
+
deviceMemory: memory,
|
|
2353
|
+
maxTouchPoints: maxTouchPoints,
|
|
2354
|
+
language: navigator.language,
|
|
2355
|
+
languages: ((_navigator_languages = navigator.languages) === null || _navigator_languages === void 0 ? void 0 : _navigator_languages.join(",")) || "",
|
|
2356
|
+
cookieEnabled: navigator.cookieEnabled,
|
|
2357
|
+
doNotTrack: navigator.doNotTrack || "",
|
|
2358
|
+
referrer: document.referrer,
|
|
2359
|
+
visibilityState: document.visibilityState
|
|
2360
|
+
};
|
|
2361
|
+
}
|
|
2362
|
+
function sha256Hex(input) {
|
|
2363
|
+
return _async_to_generator(function() {
|
|
2364
|
+
var _crypto_subtle, encodedData, utf8, buffer, i, hashBuffer, unused, hash, i1, char, fallbackHash, timestamp, random;
|
|
2365
|
+
return _ts_generator(this, function(_state) {
|
|
2366
|
+
switch(_state.label){
|
|
2367
|
+
case 0:
|
|
2368
|
+
if (!(typeof crypto !== "undefined" && ((_crypto_subtle = crypto.subtle) === null || _crypto_subtle === void 0 ? void 0 : _crypto_subtle.digest))) return [
|
|
2369
|
+
3,
|
|
2370
|
+
5
|
|
2371
|
+
];
|
|
2372
|
+
_state.label = 1;
|
|
2373
|
+
case 1:
|
|
2374
|
+
_state.trys.push([
|
|
2375
|
+
1,
|
|
2376
|
+
4,
|
|
2377
|
+
,
|
|
2378
|
+
5
|
|
2379
|
+
]);
|
|
2380
|
+
return [
|
|
2381
|
+
4,
|
|
2382
|
+
crypto.subtle.digest("SHA-256", new Uint8Array([
|
|
2383
|
+
1,
|
|
2384
|
+
2,
|
|
2385
|
+
3
|
|
2386
|
+
]))
|
|
2387
|
+
];
|
|
2388
|
+
case 2:
|
|
2389
|
+
_state.sent();
|
|
2390
|
+
if (typeof TextEncoder !== "undefined") {
|
|
2391
|
+
encodedData = new TextEncoder().encode(input);
|
|
2392
|
+
} else {
|
|
2393
|
+
utf8 = unescape(encodeURIComponent(input));
|
|
2394
|
+
buffer = new Uint8Array(utf8.length);
|
|
2395
|
+
for(i = 0; i < utf8.length; i++){
|
|
2396
|
+
buffer[i] = utf8.charCodeAt(i);
|
|
2465
2397
|
}
|
|
2398
|
+
encodedData = buffer;
|
|
2466
2399
|
}
|
|
2467
|
-
|
|
2468
|
-
|
|
2469
|
-
|
|
2470
|
-
|
|
2471
|
-
|
|
2472
|
-
|
|
2473
|
-
|
|
2474
|
-
|
|
2475
|
-
|
|
2476
|
-
|
|
2477
|
-
|
|
2478
|
-
|
|
2479
|
-
|
|
2480
|
-
|
|
2481
|
-
|
|
2482
|
-
|
|
2483
|
-
|
|
2484
|
-
|
|
2485
|
-
|
|
2486
|
-
|
|
2487
|
-
|
|
2400
|
+
return [
|
|
2401
|
+
4,
|
|
2402
|
+
crypto.subtle.digest("SHA-256", encodedData)
|
|
2403
|
+
];
|
|
2404
|
+
case 3:
|
|
2405
|
+
hashBuffer = _state.sent();
|
|
2406
|
+
return [
|
|
2407
|
+
2,
|
|
2408
|
+
Array.from(new Uint8Array(hashBuffer)).map(function(b) {
|
|
2409
|
+
return b.toString(16).padStart(2, "0");
|
|
2410
|
+
}).join("")
|
|
2411
|
+
];
|
|
2412
|
+
case 4:
|
|
2413
|
+
unused = _state.sent();
|
|
2414
|
+
console.warn("[StormcloudVideoPlayer] crypto.subtle not supported, using fallback hash");
|
|
2415
|
+
return [
|
|
2416
|
+
3,
|
|
2417
|
+
5
|
|
2418
|
+
];
|
|
2419
|
+
case 5:
|
|
2420
|
+
hash = 0;
|
|
2421
|
+
for(i1 = 0; i1 < input.length; i1++){
|
|
2422
|
+
char = input.charCodeAt(i1);
|
|
2423
|
+
hash = (hash << 5) - hash + char;
|
|
2424
|
+
hash = hash & hash;
|
|
2425
|
+
}
|
|
2426
|
+
fallbackHash = Math.abs(hash).toString(16).padStart(8, "0");
|
|
2427
|
+
timestamp = Date.now().toString(16).padStart(12, "0");
|
|
2428
|
+
random = Math.random().toString(16).substring(2, 14).padStart(12, "0");
|
|
2429
|
+
return [
|
|
2430
|
+
2,
|
|
2431
|
+
(fallbackHash + timestamp + random).padEnd(64, "0")
|
|
2432
|
+
];
|
|
2488
2433
|
}
|
|
2489
|
-
|
|
2490
|
-
|
|
2491
|
-
}
|
|
2434
|
+
});
|
|
2435
|
+
})();
|
|
2492
2436
|
}
|
|
2493
|
-
function
|
|
2494
|
-
|
|
2495
|
-
|
|
2496
|
-
|
|
2497
|
-
return this.substring(pos, pos + search.length) === search;
|
|
2498
|
-
};
|
|
2437
|
+
function resolvePlayerIdentitySeed(clientInfo) {
|
|
2438
|
+
var nativeDeviceId = resolveNativeDeviceId();
|
|
2439
|
+
if (nativeDeviceId) {
|
|
2440
|
+
return "device:".concat(nativeDeviceId);
|
|
2499
2441
|
}
|
|
2500
|
-
|
|
2501
|
-
|
|
2502
|
-
|
|
2503
|
-
String.prototype.endsWith = function(search, length) {
|
|
2504
|
-
if (length === void 0 || length > this.length) {
|
|
2505
|
-
length = this.length;
|
|
2506
|
-
}
|
|
2507
|
-
return this.substring(length - search.length, length) === search;
|
|
2508
|
-
};
|
|
2442
|
+
var persistedId = getOrCreateStoredUuid(PLAYER_ID_STORAGE_KEY);
|
|
2443
|
+
if (persistedId) {
|
|
2444
|
+
return "persisted:".concat(persistedId);
|
|
2509
2445
|
}
|
|
2446
|
+
return "fingerprint:".concat(JSON.stringify(clientInfo));
|
|
2510
2447
|
}
|
|
2511
|
-
function
|
|
2512
|
-
|
|
2513
|
-
|
|
2514
|
-
|
|
2515
|
-
|
|
2516
|
-
|
|
2517
|
-
|
|
2518
|
-
|
|
2448
|
+
function getBrowserID(clientInfo) {
|
|
2449
|
+
return _async_to_generator(function() {
|
|
2450
|
+
return _ts_generator(this, function(_state) {
|
|
2451
|
+
switch(_state.label){
|
|
2452
|
+
case 0:
|
|
2453
|
+
if (cachedBrowserId) {
|
|
2454
|
+
return [
|
|
2455
|
+
2,
|
|
2456
|
+
cachedBrowserId
|
|
2457
|
+
];
|
|
2458
|
+
}
|
|
2459
|
+
return [
|
|
2460
|
+
4,
|
|
2461
|
+
sha256Hex(resolvePlayerIdentitySeed(clientInfo))
|
|
2462
|
+
];
|
|
2463
|
+
case 1:
|
|
2464
|
+
cachedBrowserId = _state.sent();
|
|
2465
|
+
return [
|
|
2466
|
+
2,
|
|
2467
|
+
cachedBrowserId
|
|
2468
|
+
];
|
|
2519
2469
|
}
|
|
2520
|
-
|
|
2521
|
-
|
|
2522
|
-
}
|
|
2470
|
+
});
|
|
2471
|
+
})();
|
|
2523
2472
|
}
|
|
2524
|
-
function
|
|
2525
|
-
|
|
2526
|
-
polyfillArrayFrom();
|
|
2527
|
-
polyfillStringStartsWith();
|
|
2528
|
-
polyfillStringEndsWith();
|
|
2529
|
-
polyfillStringIncludes();
|
|
2530
|
-
polyfillURLSearchParams();
|
|
2531
|
-
polyfillTextEncoder();
|
|
2532
|
-
polyfillPromiseFinally();
|
|
2473
|
+
function canPublish(licenseKey) {
|
|
2474
|
+
return Boolean(isMQTTEnabled() && licenseKey);
|
|
2533
2475
|
}
|
|
2534
|
-
|
|
2535
|
-
|
|
2536
|
-
var
|
|
2537
|
-
var
|
|
2538
|
-
|
|
2539
|
-
|
|
2540
|
-
|
|
2541
|
-
|
|
2542
|
-
|
|
2543
|
-
|
|
2544
|
-
|
|
2545
|
-
|
|
2546
|
-
|
|
2547
|
-
|
|
2548
|
-
|
|
2476
|
+
function buildPlayerMetricEvent() {
|
|
2477
|
+
return _async_to_generator(function() {
|
|
2478
|
+
var context, flags, _flags_captureAt, _flags_adLoaded, _flags_adDetect, clientInfo, debugAdTiming, playerId, captureAt;
|
|
2479
|
+
var _arguments = arguments;
|
|
2480
|
+
return _ts_generator(this, function(_state) {
|
|
2481
|
+
switch(_state.label){
|
|
2482
|
+
case 0:
|
|
2483
|
+
context = _arguments.length > 0 && _arguments[0] !== void 0 ? _arguments[0] : {}, flags = _arguments.length > 1 && _arguments[1] !== void 0 ? _arguments[1] : {};
|
|
2484
|
+
clientInfo = getClientInfo();
|
|
2485
|
+
debugAdTiming = !!context.debugAdTiming;
|
|
2486
|
+
if (debugAdTiming) {
|
|
2487
|
+
console.log("[StormcloudVideoPlayer] clientInfo: ", JSON.stringify(clientInfo, null, 2));
|
|
2488
|
+
}
|
|
2489
|
+
return [
|
|
2490
|
+
4,
|
|
2491
|
+
getBrowserID(clientInfo)
|
|
2492
|
+
];
|
|
2493
|
+
case 1:
|
|
2494
|
+
playerId = _state.sent();
|
|
2495
|
+
if (debugAdTiming) {
|
|
2496
|
+
console.log("[StormcloudVideoPlayer] playerId: ", playerId);
|
|
2497
|
+
}
|
|
2498
|
+
captureAt = (_flags_captureAt = flags.captureAt) !== null && _flags_captureAt !== void 0 ? _flags_captureAt : /* @__PURE__ */ new Date().toISOString();
|
|
2499
|
+
return [
|
|
2500
|
+
2,
|
|
2501
|
+
_object_spread({
|
|
2502
|
+
player_id: playerId,
|
|
2503
|
+
device_type: clientInfo.deviceType,
|
|
2504
|
+
os: clientInfo.os.toLowerCase(),
|
|
2505
|
+
ad_loaded: (_flags_adLoaded = flags.adLoaded) !== null && _flags_adLoaded !== void 0 ? _flags_adLoaded : false,
|
|
2506
|
+
ad_detect: (_flags_adDetect = flags.adDetect) !== null && _flags_adDetect !== void 0 ? _flags_adDetect : false,
|
|
2507
|
+
capture_at: captureAt
|
|
2508
|
+
}, context.inputStreamType ? {
|
|
2509
|
+
input_stream_type: context.inputStreamType
|
|
2510
|
+
} : {})
|
|
2511
|
+
];
|
|
2512
|
+
}
|
|
2513
|
+
});
|
|
2514
|
+
}).apply(this, arguments);
|
|
2549
2515
|
}
|
|
2550
|
-
function
|
|
2551
|
-
|
|
2552
|
-
|
|
2516
|
+
function publishTracking(licenseKey, channel, body) {
|
|
2517
|
+
ensureMQTTClient();
|
|
2518
|
+
publishMQTT(buildPlayerTopic(licenseKey, channel), body);
|
|
2553
2519
|
}
|
|
2554
|
-
function
|
|
2555
|
-
|
|
2556
|
-
|
|
2557
|
-
|
|
2558
|
-
|
|
2559
|
-
|
|
2560
|
-
|
|
2520
|
+
function sendInitialTracking(_0) {
|
|
2521
|
+
return _async_to_generator(function(licenseKey) {
|
|
2522
|
+
var context, metricEvent, error;
|
|
2523
|
+
var _arguments = arguments;
|
|
2524
|
+
return _ts_generator(this, function(_state) {
|
|
2525
|
+
switch(_state.label){
|
|
2526
|
+
case 0:
|
|
2527
|
+
context = _arguments.length > 1 && _arguments[1] !== void 0 ? _arguments[1] : {};
|
|
2528
|
+
if (!canPublish(licenseKey)) return [
|
|
2529
|
+
2
|
|
2530
|
+
];
|
|
2531
|
+
_state.label = 1;
|
|
2532
|
+
case 1:
|
|
2533
|
+
_state.trys.push([
|
|
2534
|
+
1,
|
|
2535
|
+
3,
|
|
2536
|
+
,
|
|
2537
|
+
4
|
|
2538
|
+
]);
|
|
2539
|
+
return [
|
|
2540
|
+
4,
|
|
2541
|
+
buildPlayerMetricEvent(context, {
|
|
2542
|
+
adLoaded: false,
|
|
2543
|
+
adDetect: false
|
|
2544
|
+
})
|
|
2545
|
+
];
|
|
2546
|
+
case 2:
|
|
2547
|
+
metricEvent = _state.sent();
|
|
2548
|
+
publishTracking(licenseKey, "metrics", {
|
|
2549
|
+
events: [
|
|
2550
|
+
metricEvent
|
|
2551
|
+
]
|
|
2552
|
+
});
|
|
2553
|
+
return [
|
|
2554
|
+
3,
|
|
2555
|
+
4
|
|
2556
|
+
];
|
|
2557
|
+
case 3:
|
|
2558
|
+
error = _state.sent();
|
|
2559
|
+
console.error("[StormcloudVideoPlayer] Error sending initial tracking data:", error);
|
|
2560
|
+
return [
|
|
2561
|
+
3,
|
|
2562
|
+
4
|
|
2563
|
+
];
|
|
2564
|
+
case 4:
|
|
2565
|
+
return [
|
|
2566
|
+
2
|
|
2567
|
+
];
|
|
2568
|
+
}
|
|
2569
|
+
});
|
|
2570
|
+
}).apply(this, arguments);
|
|
2561
2571
|
}
|
|
2562
|
-
|
|
2563
|
-
|
|
2564
|
-
|
|
2565
|
-
|
|
2566
|
-
|
|
2567
|
-
|
|
2568
|
-
|
|
2569
|
-
|
|
2570
|
-
|
|
2571
|
-
|
|
2572
|
-
|
|
2573
|
-
|
|
2574
|
-
|
|
2575
|
-
|
|
2576
|
-
|
|
2577
|
-
]);
|
|
2578
|
-
|
|
2579
|
-
|
|
2580
|
-
|
|
2581
|
-
|
|
2582
|
-
|
|
2583
|
-
|
|
2584
|
-
|
|
2585
|
-
|
|
2586
|
-
|
|
2587
|
-
|
|
2588
|
-
|
|
2589
|
-
|
|
2590
|
-
|
|
2591
|
-
|
|
2592
|
-
|
|
2593
|
-
|
|
2594
|
-
|
|
2595
|
-
|
|
2596
|
-
|
|
2597
|
-
|
|
2598
|
-
|
|
2599
|
-
|
|
2600
|
-
|
|
2601
|
-
|
|
2572
|
+
function sendAdDetectTracking(_0, _1) {
|
|
2573
|
+
return _async_to_generator(function(licenseKey, adDetectInfo) {
|
|
2574
|
+
var context, error;
|
|
2575
|
+
var _arguments = arguments;
|
|
2576
|
+
return _ts_generator(this, function(_state) {
|
|
2577
|
+
switch(_state.label){
|
|
2578
|
+
case 0:
|
|
2579
|
+
context = _arguments.length > 2 && _arguments[2] !== void 0 ? _arguments[2] : {};
|
|
2580
|
+
_state.label = 1;
|
|
2581
|
+
case 1:
|
|
2582
|
+
_state.trys.push([
|
|
2583
|
+
1,
|
|
2584
|
+
3,
|
|
2585
|
+
,
|
|
2586
|
+
4
|
|
2587
|
+
]);
|
|
2588
|
+
return [
|
|
2589
|
+
4,
|
|
2590
|
+
sendHeartbeat(licenseKey, context, {
|
|
2591
|
+
adDetect: true,
|
|
2592
|
+
captureAt: adDetectInfo.timestamp
|
|
2593
|
+
})
|
|
2594
|
+
];
|
|
2595
|
+
case 2:
|
|
2596
|
+
_state.sent();
|
|
2597
|
+
return [
|
|
2598
|
+
3,
|
|
2599
|
+
4
|
|
2600
|
+
];
|
|
2601
|
+
case 3:
|
|
2602
|
+
error = _state.sent();
|
|
2603
|
+
console.error("[StormcloudVideoPlayer] Error sending ad detect tracking:", error);
|
|
2604
|
+
return [
|
|
2605
|
+
3,
|
|
2606
|
+
4
|
|
2607
|
+
];
|
|
2608
|
+
case 4:
|
|
2609
|
+
return [
|
|
2610
|
+
2
|
|
2611
|
+
];
|
|
2612
|
+
}
|
|
2602
2613
|
});
|
|
2603
|
-
}
|
|
2604
|
-
return _object_spread({
|
|
2605
|
-
isCtv: false
|
|
2606
|
-
}, deviceId ? {
|
|
2607
|
-
deviceId: deviceId
|
|
2608
|
-
} : {}, deviceIdType ? {
|
|
2609
|
-
deviceIdType: deviceIdType
|
|
2610
|
-
} : {}, limitAdTracking != null ? {
|
|
2611
|
-
limitAdTracking: limitAdTracking
|
|
2612
|
-
} : {});
|
|
2614
|
+
}).apply(this, arguments);
|
|
2613
2615
|
}
|
|
2614
|
-
function
|
|
2615
|
-
|
|
2616
|
-
|
|
2617
|
-
|
|
2618
|
-
|
|
2619
|
-
|
|
2620
|
-
|
|
2621
|
-
|
|
2622
|
-
|
|
2623
|
-
|
|
2624
|
-
|
|
2625
|
-
|
|
2626
|
-
|
|
2616
|
+
function sendAdLoadedTracking(_0, _1) {
|
|
2617
|
+
return _async_to_generator(function(licenseKey, adLoadedInfo) {
|
|
2618
|
+
var context, error;
|
|
2619
|
+
var _arguments = arguments;
|
|
2620
|
+
return _ts_generator(this, function(_state) {
|
|
2621
|
+
switch(_state.label){
|
|
2622
|
+
case 0:
|
|
2623
|
+
context = _arguments.length > 2 && _arguments[2] !== void 0 ? _arguments[2] : {};
|
|
2624
|
+
_state.label = 1;
|
|
2625
|
+
case 1:
|
|
2626
|
+
_state.trys.push([
|
|
2627
|
+
1,
|
|
2628
|
+
3,
|
|
2629
|
+
,
|
|
2630
|
+
4
|
|
2631
|
+
]);
|
|
2632
|
+
return [
|
|
2633
|
+
4,
|
|
2634
|
+
sendHeartbeat(licenseKey, context, {
|
|
2635
|
+
adLoaded: true,
|
|
2636
|
+
captureAt: adLoadedInfo.timestamp
|
|
2637
|
+
})
|
|
2638
|
+
];
|
|
2639
|
+
case 2:
|
|
2640
|
+
_state.sent();
|
|
2641
|
+
return [
|
|
2642
|
+
3,
|
|
2643
|
+
4
|
|
2644
|
+
];
|
|
2645
|
+
case 3:
|
|
2646
|
+
error = _state.sent();
|
|
2647
|
+
console.error("[StormcloudVideoPlayer] Error sending ad loaded tracking:", error);
|
|
2648
|
+
return [
|
|
2649
|
+
3,
|
|
2650
|
+
4
|
|
2651
|
+
];
|
|
2652
|
+
case 4:
|
|
2653
|
+
return [
|
|
2654
|
+
2
|
|
2655
|
+
];
|
|
2656
|
+
}
|
|
2657
|
+
});
|
|
2658
|
+
}).apply(this, arguments);
|
|
2627
2659
|
}
|
|
2628
|
-
function
|
|
2629
|
-
|
|
2630
|
-
|
|
2631
|
-
|
|
2632
|
-
|
|
2633
|
-
|
|
2660
|
+
function sendAdImpressionTracking(_0, _1) {
|
|
2661
|
+
return _async_to_generator(function(licenseKey, adImpressionInfo) {
|
|
2662
|
+
var context, metricEvent, error;
|
|
2663
|
+
var _arguments = arguments;
|
|
2664
|
+
return _ts_generator(this, function(_state) {
|
|
2665
|
+
switch(_state.label){
|
|
2666
|
+
case 0:
|
|
2667
|
+
context = _arguments.length > 2 && _arguments[2] !== void 0 ? _arguments[2] : {};
|
|
2668
|
+
if (!canPublish(licenseKey)) return [
|
|
2669
|
+
2
|
|
2670
|
+
];
|
|
2671
|
+
_state.label = 1;
|
|
2672
|
+
case 1:
|
|
2673
|
+
_state.trys.push([
|
|
2674
|
+
1,
|
|
2675
|
+
3,
|
|
2676
|
+
,
|
|
2677
|
+
4
|
|
2678
|
+
]);
|
|
2679
|
+
return [
|
|
2680
|
+
4,
|
|
2681
|
+
buildPlayerMetricEvent(context, {
|
|
2682
|
+
captureAt: adImpressionInfo.timestamp
|
|
2683
|
+
})
|
|
2684
|
+
];
|
|
2685
|
+
case 2:
|
|
2686
|
+
metricEvent = _state.sent();
|
|
2687
|
+
publishTracking(licenseKey, "heartbeat", metricEvent);
|
|
2688
|
+
publishTracking(licenseKey, "impressions", {
|
|
2689
|
+
events: [
|
|
2690
|
+
{
|
|
2691
|
+
player_id: metricEvent.player_id,
|
|
2692
|
+
ad_played_count: 1,
|
|
2693
|
+
ad_url: adImpressionInfo.adUrl,
|
|
2694
|
+
capture_at: adImpressionInfo.timestamp
|
|
2695
|
+
}
|
|
2696
|
+
]
|
|
2697
|
+
});
|
|
2698
|
+
return [
|
|
2699
|
+
3,
|
|
2700
|
+
4
|
|
2701
|
+
];
|
|
2702
|
+
case 3:
|
|
2703
|
+
error = _state.sent();
|
|
2704
|
+
console.error("[StormcloudVideoPlayer] Error sending ad impression tracking:", error);
|
|
2705
|
+
return [
|
|
2706
|
+
3,
|
|
2707
|
+
4
|
|
2708
|
+
];
|
|
2709
|
+
case 4:
|
|
2710
|
+
return [
|
|
2711
|
+
2
|
|
2712
|
+
];
|
|
2713
|
+
}
|
|
2714
|
+
});
|
|
2715
|
+
}).apply(this, arguments);
|
|
2634
2716
|
}
|
|
2635
|
-
function
|
|
2636
|
-
|
|
2637
|
-
|
|
2638
|
-
|
|
2639
|
-
|
|
2640
|
-
|
|
2641
|
-
|
|
2642
|
-
|
|
2643
|
-
|
|
2644
|
-
|
|
2645
|
-
|
|
2717
|
+
function sendHeartbeat(_0) {
|
|
2718
|
+
return _async_to_generator(function(licenseKey) {
|
|
2719
|
+
var context, flags, heartbeatData, error;
|
|
2720
|
+
var _arguments = arguments;
|
|
2721
|
+
return _ts_generator(this, function(_state) {
|
|
2722
|
+
switch(_state.label){
|
|
2723
|
+
case 0:
|
|
2724
|
+
context = _arguments.length > 1 && _arguments[1] !== void 0 ? _arguments[1] : {}, flags = _arguments.length > 2 && _arguments[2] !== void 0 ? _arguments[2] : {};
|
|
2725
|
+
if (!canPublish(licenseKey)) return [
|
|
2726
|
+
2
|
|
2727
|
+
];
|
|
2728
|
+
_state.label = 1;
|
|
2729
|
+
case 1:
|
|
2730
|
+
_state.trys.push([
|
|
2731
|
+
1,
|
|
2732
|
+
3,
|
|
2733
|
+
,
|
|
2734
|
+
4
|
|
2735
|
+
]);
|
|
2736
|
+
return [
|
|
2737
|
+
4,
|
|
2738
|
+
buildPlayerMetricEvent(context, flags)
|
|
2739
|
+
];
|
|
2740
|
+
case 2:
|
|
2741
|
+
heartbeatData = _state.sent();
|
|
2742
|
+
publishTracking(licenseKey, "heartbeat", heartbeatData);
|
|
2743
|
+
return [
|
|
2744
|
+
3,
|
|
2745
|
+
4
|
|
2746
|
+
];
|
|
2747
|
+
case 3:
|
|
2748
|
+
error = _state.sent();
|
|
2749
|
+
console.error("[StormcloudVideoPlayer] Error sending heartbeat:", error);
|
|
2750
|
+
return [
|
|
2751
|
+
3,
|
|
2752
|
+
4
|
|
2753
|
+
];
|
|
2754
|
+
case 4:
|
|
2755
|
+
return [
|
|
2756
|
+
2
|
|
2757
|
+
];
|
|
2758
|
+
}
|
|
2759
|
+
});
|
|
2760
|
+
}).apply(this, arguments);
|
|
2646
2761
|
}
|
|
2647
|
-
|
|
2648
|
-
|
|
2649
|
-
|
|
2762
|
+
// src/utils/polyfills.ts
|
|
2763
|
+
function polyfillURLSearchParams() {
|
|
2764
|
+
if (typeof URLSearchParams !== "undefined") {
|
|
2765
|
+
return;
|
|
2650
2766
|
}
|
|
2651
|
-
|
|
2652
|
-
|
|
2653
|
-
|
|
2654
|
-
|
|
2655
|
-
|
|
2656
|
-
|
|
2657
|
-
|
|
2658
|
-
|
|
2659
|
-
|
|
2660
|
-
|
|
2661
|
-
|
|
2662
|
-
if (adinfo) {
|
|
2663
|
-
var tifa = typeof adinfo.getTIFA === "function" ? adinfo.getTIFA() : adinfo.tifa;
|
|
2664
|
-
if (typeof tifa === "string" && tifa && !isMacroPlaceholder(tifa)) {
|
|
2665
|
-
var lat = typeof adinfo.isLATEnabled === "function" ? adinfo.isLATEnabled() : void 0;
|
|
2666
|
-
return _object_spread({
|
|
2667
|
-
deviceId: tifa,
|
|
2668
|
-
deviceIdType: "tifa"
|
|
2669
|
-
}, typeof lat === "boolean" ? {
|
|
2670
|
-
limitAdTracking: lat
|
|
2671
|
-
} : {});
|
|
2767
|
+
var URLSearchParamsPolyfill = /*#__PURE__*/ function() {
|
|
2768
|
+
function URLSearchParamsPolyfill(init) {
|
|
2769
|
+
var _this = this;
|
|
2770
|
+
_class_call_check(this, URLSearchParamsPolyfill);
|
|
2771
|
+
this.params = /* @__PURE__ */ new Map();
|
|
2772
|
+
if (typeof init === "string") {
|
|
2773
|
+
this.parseQueryString(init);
|
|
2774
|
+
} else if (_instanceof(init, URLSearchParamsPolyfill)) {
|
|
2775
|
+
init.forEach(function(value, key) {
|
|
2776
|
+
_this.append(key, value);
|
|
2777
|
+
});
|
|
2672
2778
|
}
|
|
2673
2779
|
}
|
|
2674
|
-
|
|
2675
|
-
|
|
2676
|
-
|
|
2677
|
-
|
|
2678
|
-
|
|
2679
|
-
|
|
2680
|
-
|
|
2681
|
-
|
|
2682
|
-
|
|
2683
|
-
|
|
2684
|
-
|
|
2685
|
-
|
|
2780
|
+
_create_class(URLSearchParamsPolyfill, [
|
|
2781
|
+
{
|
|
2782
|
+
key: "parseQueryString",
|
|
2783
|
+
value: function parseQueryString(query) {
|
|
2784
|
+
var _this = this;
|
|
2785
|
+
var cleanQuery = query.startsWith("?") ? query.slice(1) : query;
|
|
2786
|
+
if (!cleanQuery) return;
|
|
2787
|
+
cleanQuery.split("&").forEach(function(param) {
|
|
2788
|
+
var _param_split = _sliced_to_array(param.split("="), 2), key = _param_split[0], value = _param_split[1];
|
|
2789
|
+
if (key) {
|
|
2790
|
+
var decodedKey = _this.safeDecodeURIComponent(key);
|
|
2791
|
+
var decodedValue = value ? _this.safeDecodeURIComponent(value) : "";
|
|
2792
|
+
_this.append(decodedKey, decodedValue);
|
|
2793
|
+
}
|
|
2794
|
+
});
|
|
2686
2795
|
}
|
|
2687
|
-
|
|
2688
|
-
|
|
2689
|
-
|
|
2690
|
-
|
|
2691
|
-
|
|
2692
|
-
|
|
2796
|
+
},
|
|
2797
|
+
{
|
|
2798
|
+
key: "safeDecodeURIComponent",
|
|
2799
|
+
value: function safeDecodeURIComponent(str) {
|
|
2800
|
+
try {
|
|
2801
|
+
return decodeURIComponent(str.replace(/\+/g, " "));
|
|
2802
|
+
} catch (e) {
|
|
2803
|
+
return str;
|
|
2804
|
+
}
|
|
2805
|
+
}
|
|
2806
|
+
},
|
|
2807
|
+
{
|
|
2808
|
+
key: "append",
|
|
2809
|
+
value: function append(name, value) {
|
|
2810
|
+
var values = this.params.get(name) || [];
|
|
2811
|
+
values.push(String(value));
|
|
2812
|
+
this.params.set(name, values);
|
|
2813
|
+
}
|
|
2814
|
+
},
|
|
2815
|
+
{
|
|
2816
|
+
key: "delete",
|
|
2817
|
+
value: function _delete(name) {
|
|
2818
|
+
this.params.delete(name);
|
|
2819
|
+
}
|
|
2820
|
+
},
|
|
2821
|
+
{
|
|
2822
|
+
key: "get",
|
|
2823
|
+
value: function get(name) {
|
|
2824
|
+
var values = this.params.get(name);
|
|
2825
|
+
return values && values.length > 0 && values[0] !== void 0 ? values[0] : null;
|
|
2826
|
+
}
|
|
2827
|
+
},
|
|
2828
|
+
{
|
|
2829
|
+
key: "getAll",
|
|
2830
|
+
value: function getAll(name) {
|
|
2831
|
+
return this.params.get(name) || [];
|
|
2832
|
+
}
|
|
2833
|
+
},
|
|
2834
|
+
{
|
|
2835
|
+
key: "has",
|
|
2836
|
+
value: function has(name) {
|
|
2837
|
+
return this.params.has(name);
|
|
2838
|
+
}
|
|
2839
|
+
},
|
|
2840
|
+
{
|
|
2841
|
+
key: "set",
|
|
2842
|
+
value: function set(name, value) {
|
|
2843
|
+
this.params.set(name, [
|
|
2844
|
+
String(value)
|
|
2845
|
+
]);
|
|
2846
|
+
}
|
|
2847
|
+
},
|
|
2848
|
+
{
|
|
2849
|
+
key: "forEach",
|
|
2850
|
+
value: function forEach(callback) {
|
|
2851
|
+
var _this = this;
|
|
2852
|
+
this.params.forEach(function(values, key) {
|
|
2853
|
+
values.forEach(function(value) {
|
|
2854
|
+
callback(value, key, _this);
|
|
2855
|
+
});
|
|
2856
|
+
});
|
|
2857
|
+
}
|
|
2858
|
+
},
|
|
2859
|
+
{
|
|
2860
|
+
key: "toString",
|
|
2861
|
+
value: function toString() {
|
|
2862
|
+
var parts = [];
|
|
2863
|
+
this.params.forEach(function(values, key) {
|
|
2864
|
+
values.forEach(function(value) {
|
|
2865
|
+
parts.push("".concat(encodeURIComponent(key), "=").concat(encodeURIComponent(value)));
|
|
2866
|
+
});
|
|
2867
|
+
});
|
|
2868
|
+
return parts.join("&");
|
|
2693
2869
|
}
|
|
2694
2870
|
}
|
|
2695
|
-
|
|
2696
|
-
|
|
2697
|
-
|
|
2698
|
-
|
|
2699
|
-
if (roku) {
|
|
2700
|
-
var rida = typeof roku.getPublisherUniqueId === "function" ? roku.getPublisherUniqueId() : roku.rida;
|
|
2701
|
-
if (typeof rida === "string" && rida && !isMacroPlaceholder(rida)) {
|
|
2702
|
-
return {
|
|
2703
|
-
deviceId: rida,
|
|
2704
|
-
deviceIdType: "rida",
|
|
2705
|
-
limitAdTracking: false
|
|
2706
|
-
};
|
|
2707
|
-
}
|
|
2708
|
-
}
|
|
2709
|
-
} catch (unused) {}
|
|
2710
|
-
return {};
|
|
2711
|
-
}
|
|
2712
|
-
var ZEROED_AD_ID_PATTERNS = /* @__PURE__ */ new Set([
|
|
2713
|
-
"38400000-8cf0-11bd-b23e-10b96e40000d",
|
|
2714
|
-
"00000000-0000-0000-0000-000000000000"
|
|
2715
|
-
]);
|
|
2716
|
-
function isMacroPlaceholder(value) {
|
|
2717
|
-
var t = value.trim();
|
|
2718
|
-
return !t || /^(\[[^\]]*\]|\{[^}]*\}|%%[^%]*%%)$/.test(t) || /^(unknown|null|undefined|none|n\/a|\$\{[^}]+\})$/i.test(t) || ZEROED_AD_ID_PATTERNS.has(t.toLowerCase());
|
|
2719
|
-
}
|
|
2720
|
-
function isZeroedAdId(value) {
|
|
2721
|
-
return ZEROED_AD_ID_PATTERNS.has(value.trim().toLowerCase());
|
|
2722
|
-
}
|
|
2723
|
-
function readNativeBridgeSignals() {
|
|
2724
|
-
if (typeof window === "undefined") {
|
|
2725
|
-
return {};
|
|
2726
|
-
}
|
|
2727
|
-
var candidates = [
|
|
2728
|
-
window.__STORMCLOUD_CTV_AD_INFO__,
|
|
2729
|
-
window.__STORMCLOUD_CTV__,
|
|
2730
|
-
window.stormcloudCtv,
|
|
2731
|
-
window.AiryTV,
|
|
2732
|
-
window.Android,
|
|
2733
|
-
window.webOS,
|
|
2734
|
-
window.tizen,
|
|
2735
|
-
window.amazon
|
|
2736
|
-
].filter(Boolean);
|
|
2737
|
-
var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
|
|
2738
|
-
try {
|
|
2739
|
-
for(var _iterator = candidates[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){
|
|
2740
|
-
var source = _step.value;
|
|
2741
|
-
var contentUrl = readBridgeValue(source, [
|
|
2742
|
-
"contentUrl",
|
|
2743
|
-
"url",
|
|
2744
|
-
"videoUrl",
|
|
2745
|
-
"canonicalUrl"
|
|
2746
|
-
]) || void 0;
|
|
2747
|
-
var appId = readBridgeValue(source, [
|
|
2748
|
-
"appId",
|
|
2749
|
-
"msid",
|
|
2750
|
-
"applicationId",
|
|
2751
|
-
"packageName"
|
|
2752
|
-
]) || void 0;
|
|
2753
|
-
var appName = readBridgeValue(source, [
|
|
2754
|
-
"appName",
|
|
2755
|
-
"an",
|
|
2756
|
-
"applicationName"
|
|
2757
|
-
]) || void 0;
|
|
2758
|
-
var deviceId = readBridgeValue(source, [
|
|
2759
|
-
"rdid",
|
|
2760
|
-
"ifa",
|
|
2761
|
-
"advertisingId",
|
|
2762
|
-
"adId",
|
|
2763
|
-
"deviceId",
|
|
2764
|
-
"lgudid",
|
|
2765
|
-
"LGUDID",
|
|
2766
|
-
"tifa",
|
|
2767
|
-
"rida",
|
|
2768
|
-
"afai",
|
|
2769
|
-
"aaid"
|
|
2770
|
-
]) || void 0;
|
|
2771
|
-
if (!contentUrl && !deviceId && !appId && !appName) continue;
|
|
2772
|
-
var deviceIdType = readBridgeValue(source, [
|
|
2773
|
-
"idtype",
|
|
2774
|
-
"deviceIdType",
|
|
2775
|
-
"advertisingIdType",
|
|
2776
|
-
"idType"
|
|
2777
|
-
]) || inferDeviceIdType();
|
|
2778
|
-
var limitAdTracking = readBridgeBoolean(source, [
|
|
2779
|
-
"is_lat",
|
|
2780
|
-
"limitAdTracking",
|
|
2781
|
-
"limitedAdTracking",
|
|
2782
|
-
"lat"
|
|
2783
|
-
]);
|
|
2784
|
-
return _object_spread({}, contentUrl ? {
|
|
2785
|
-
contentUrl: contentUrl
|
|
2786
|
-
} : {}, appId ? {
|
|
2787
|
-
appId: appId
|
|
2788
|
-
} : {}, appName ? {
|
|
2789
|
-
appName: appName
|
|
2790
|
-
} : {}, deviceId ? {
|
|
2791
|
-
deviceId: deviceId
|
|
2792
|
-
} : {}, deviceId && deviceIdType ? {
|
|
2793
|
-
deviceIdType: deviceIdType
|
|
2794
|
-
} : {}, deviceId && limitAdTracking != null ? {
|
|
2795
|
-
limitAdTracking: limitAdTracking
|
|
2796
|
-
} : {});
|
|
2797
|
-
}
|
|
2798
|
-
} catch (err) {
|
|
2799
|
-
_didIteratorError = true;
|
|
2800
|
-
_iteratorError = err;
|
|
2801
|
-
} finally{
|
|
2802
|
-
try {
|
|
2803
|
-
if (!_iteratorNormalCompletion && _iterator.return != null) {
|
|
2804
|
-
_iterator.return();
|
|
2805
|
-
}
|
|
2806
|
-
} finally{
|
|
2807
|
-
if (_didIteratorError) {
|
|
2808
|
-
throw _iteratorError;
|
|
2809
|
-
}
|
|
2810
|
-
}
|
|
2811
|
-
}
|
|
2812
|
-
return {};
|
|
2871
|
+
]);
|
|
2872
|
+
return URLSearchParamsPolyfill;
|
|
2873
|
+
}();
|
|
2874
|
+
window.URLSearchParams = URLSearchParamsPolyfill;
|
|
2813
2875
|
}
|
|
2814
|
-
function
|
|
2815
|
-
|
|
2816
|
-
|
|
2817
|
-
|
|
2818
|
-
|
|
2819
|
-
|
|
2820
|
-
|
|
2821
|
-
|
|
2822
|
-
}
|
|
2823
|
-
if (typeof value === "function") {
|
|
2824
|
-
try {
|
|
2825
|
-
var result = value.call(source);
|
|
2826
|
-
if (typeof result === "string" && result) {
|
|
2827
|
-
return result;
|
|
2828
|
-
}
|
|
2829
|
-
} catch (unused) {}
|
|
2830
|
-
}
|
|
2876
|
+
function polyfillTextEncoder() {
|
|
2877
|
+
if (typeof TextEncoder !== "undefined") {
|
|
2878
|
+
return;
|
|
2879
|
+
}
|
|
2880
|
+
var TextEncoderPolyfill = /*#__PURE__*/ function() {
|
|
2881
|
+
function TextEncoderPolyfill() {
|
|
2882
|
+
_class_call_check(this, TextEncoderPolyfill);
|
|
2883
|
+
this.encoding = "utf-8";
|
|
2831
2884
|
}
|
|
2832
|
-
|
|
2833
|
-
|
|
2834
|
-
|
|
2835
|
-
|
|
2836
|
-
|
|
2837
|
-
|
|
2838
|
-
|
|
2839
|
-
|
|
2840
|
-
|
|
2841
|
-
|
|
2842
|
-
|
|
2885
|
+
_create_class(TextEncoderPolyfill, [
|
|
2886
|
+
{
|
|
2887
|
+
key: "encode",
|
|
2888
|
+
value: function encode(str) {
|
|
2889
|
+
var utf8 = [];
|
|
2890
|
+
for(var i = 0; i < str.length; i++){
|
|
2891
|
+
var charcode = str.charCodeAt(i);
|
|
2892
|
+
if (charcode < 128) {
|
|
2893
|
+
utf8.push(charcode);
|
|
2894
|
+
} else if (charcode < 2048) {
|
|
2895
|
+
utf8.push(192 | charcode >> 6, 128 | charcode & 63);
|
|
2896
|
+
} else if (charcode < 55296 || charcode >= 57344) {
|
|
2897
|
+
utf8.push(224 | charcode >> 12, 128 | charcode >> 6 & 63, 128 | charcode & 63);
|
|
2898
|
+
} else {
|
|
2899
|
+
i++;
|
|
2900
|
+
charcode = 65536 + ((charcode & 1023) << 10 | str.charCodeAt(i) & 1023);
|
|
2901
|
+
utf8.push(240 | charcode >> 18, 128 | charcode >> 12 & 63, 128 | charcode >> 6 & 63, 128 | charcode & 63);
|
|
2902
|
+
}
|
|
2903
|
+
}
|
|
2904
|
+
return new Uint8Array(utf8);
|
|
2905
|
+
}
|
|
2843
2906
|
}
|
|
2844
|
-
|
|
2907
|
+
]);
|
|
2908
|
+
return TextEncoderPolyfill;
|
|
2909
|
+
}();
|
|
2910
|
+
window.TextEncoder = TextEncoderPolyfill;
|
|
2911
|
+
}
|
|
2912
|
+
function polyfillPromiseFinally() {
|
|
2913
|
+
if (typeof Promise !== "undefined" && !Promise.prototype.finally) {
|
|
2914
|
+
Promise.prototype.finally = function(callback) {
|
|
2915
|
+
var constructor = this.constructor;
|
|
2916
|
+
return this.then(function(value) {
|
|
2917
|
+
return constructor.resolve(callback()).then(function() {
|
|
2918
|
+
return value;
|
|
2919
|
+
});
|
|
2920
|
+
}, function(reason) {
|
|
2921
|
+
return constructor.resolve(callback()).then(function() {
|
|
2922
|
+
throw reason;
|
|
2923
|
+
});
|
|
2924
|
+
});
|
|
2925
|
+
};
|
|
2845
2926
|
}
|
|
2846
|
-
return void 0;
|
|
2847
2927
|
}
|
|
2848
|
-
function
|
|
2849
|
-
|
|
2850
|
-
|
|
2851
|
-
|
|
2852
|
-
|
|
2853
|
-
var value = source === null || source === void 0 ? void 0 : source[key];
|
|
2854
|
-
var normalized = normalizeBoolean(value);
|
|
2855
|
-
if (normalized != null) {
|
|
2856
|
-
return normalized;
|
|
2857
|
-
}
|
|
2858
|
-
if (typeof value === "function") {
|
|
2859
|
-
try {
|
|
2860
|
-
var result = normalizeBoolean(value.call(source));
|
|
2861
|
-
if (result != null) {
|
|
2862
|
-
return result;
|
|
2863
|
-
}
|
|
2864
|
-
} catch (unused) {}
|
|
2928
|
+
function polyfillObjectAssign() {
|
|
2929
|
+
if (typeof Object.assign !== "function") {
|
|
2930
|
+
Object.assign = function(target) {
|
|
2931
|
+
for(var _len = arguments.length, sources = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++){
|
|
2932
|
+
sources[_key - 1] = arguments[_key];
|
|
2865
2933
|
}
|
|
2866
|
-
|
|
2867
|
-
|
|
2868
|
-
_didIteratorError = true;
|
|
2869
|
-
_iteratorError = err;
|
|
2870
|
-
} finally{
|
|
2871
|
-
try {
|
|
2872
|
-
if (!_iteratorNormalCompletion && _iterator.return != null) {
|
|
2873
|
-
_iterator.return();
|
|
2934
|
+
if (target == null) {
|
|
2935
|
+
throw new TypeError("Cannot convert undefined or null to object");
|
|
2874
2936
|
}
|
|
2875
|
-
|
|
2876
|
-
|
|
2877
|
-
|
|
2937
|
+
var to = Object(target);
|
|
2938
|
+
for(var i = 0; i < sources.length; i++){
|
|
2939
|
+
var nextSource = sources[i];
|
|
2940
|
+
if (nextSource != null) {
|
|
2941
|
+
for(var nextKey in nextSource){
|
|
2942
|
+
if (Object.prototype.hasOwnProperty.call(nextSource, nextKey)) {
|
|
2943
|
+
to[nextKey] = nextSource[nextKey];
|
|
2944
|
+
}
|
|
2945
|
+
}
|
|
2946
|
+
}
|
|
2878
2947
|
}
|
|
2879
|
-
|
|
2948
|
+
return to;
|
|
2949
|
+
};
|
|
2880
2950
|
}
|
|
2881
|
-
return void 0;
|
|
2882
2951
|
}
|
|
2883
|
-
function
|
|
2884
|
-
|
|
2885
|
-
|
|
2886
|
-
|
|
2887
|
-
|
|
2888
|
-
|
|
2889
|
-
if (value) {
|
|
2890
|
-
return value;
|
|
2891
|
-
}
|
|
2892
|
-
}
|
|
2893
|
-
} catch (err) {
|
|
2894
|
-
_didIteratorError = true;
|
|
2895
|
-
_iteratorError = err;
|
|
2896
|
-
} finally{
|
|
2897
|
-
try {
|
|
2898
|
-
if (!_iteratorNormalCompletion && _iterator.return != null) {
|
|
2899
|
-
_iterator.return();
|
|
2952
|
+
function polyfillArrayFrom() {
|
|
2953
|
+
if (!Array.from) {
|
|
2954
|
+
Array.from = function(arrayLike, mapFn, thisArg) {
|
|
2955
|
+
var items = Object(arrayLike);
|
|
2956
|
+
if (arrayLike == null) {
|
|
2957
|
+
throw new TypeError("Array.from requires an array-like object");
|
|
2900
2958
|
}
|
|
2901
|
-
|
|
2902
|
-
|
|
2903
|
-
|
|
2959
|
+
var len = items.length >>> 0;
|
|
2960
|
+
var result = new Array(len);
|
|
2961
|
+
for(var i = 0; i < len; i++){
|
|
2962
|
+
if (mapFn) {
|
|
2963
|
+
result[i] = mapFn.call(thisArg, items[i], i);
|
|
2964
|
+
} else {
|
|
2965
|
+
result[i] = items[i];
|
|
2966
|
+
}
|
|
2904
2967
|
}
|
|
2905
|
-
|
|
2968
|
+
return result;
|
|
2969
|
+
};
|
|
2906
2970
|
}
|
|
2907
|
-
return void 0;
|
|
2908
2971
|
}
|
|
2909
|
-
function
|
|
2910
|
-
if (
|
|
2911
|
-
|
|
2912
|
-
|
|
2913
|
-
|
|
2914
|
-
|
|
2915
|
-
var value = (_window_localStorage = window.localStorage) === null || _window_localStorage === void 0 ? void 0 : _window_localStorage.getItem(key);
|
|
2916
|
-
return value || void 0;
|
|
2917
|
-
} catch (unused) {
|
|
2918
|
-
return void 0;
|
|
2972
|
+
function polyfillStringStartsWith() {
|
|
2973
|
+
if (!String.prototype.startsWith) {
|
|
2974
|
+
String.prototype.startsWith = function(search, pos) {
|
|
2975
|
+
pos = !pos || pos < 0 ? 0 : +pos;
|
|
2976
|
+
return this.substring(pos, pos + search.length) === search;
|
|
2977
|
+
};
|
|
2919
2978
|
}
|
|
2920
2979
|
}
|
|
2921
|
-
function
|
|
2922
|
-
|
|
2923
|
-
|
|
2924
|
-
|
|
2925
|
-
|
|
2926
|
-
|
|
2927
|
-
|
|
2928
|
-
|
|
2929
|
-
return value === 1;
|
|
2980
|
+
function polyfillStringEndsWith() {
|
|
2981
|
+
if (!String.prototype.endsWith) {
|
|
2982
|
+
String.prototype.endsWith = function(search, length) {
|
|
2983
|
+
if (length === void 0 || length > this.length) {
|
|
2984
|
+
length = this.length;
|
|
2985
|
+
}
|
|
2986
|
+
return this.substring(length - search.length, length) === search;
|
|
2987
|
+
};
|
|
2930
2988
|
}
|
|
2931
|
-
|
|
2932
|
-
|
|
2933
|
-
|
|
2934
|
-
|
|
2935
|
-
|
|
2936
|
-
|
|
2937
|
-
|
|
2938
|
-
|
|
2989
|
+
}
|
|
2990
|
+
function polyfillStringIncludes() {
|
|
2991
|
+
if (!String.prototype.includes) {
|
|
2992
|
+
String.prototype.includes = function(search, start) {
|
|
2993
|
+
if (typeof start !== "number") {
|
|
2994
|
+
start = 0;
|
|
2995
|
+
}
|
|
2996
|
+
if (start + search.length > this.length) {
|
|
2997
|
+
return false;
|
|
2998
|
+
}
|
|
2999
|
+
return this.indexOf(search, start) !== -1;
|
|
3000
|
+
};
|
|
2939
3001
|
}
|
|
2940
|
-
|
|
3002
|
+
}
|
|
3003
|
+
function initializePolyfills() {
|
|
3004
|
+
polyfillObjectAssign();
|
|
3005
|
+
polyfillArrayFrom();
|
|
3006
|
+
polyfillStringStartsWith();
|
|
3007
|
+
polyfillStringEndsWith();
|
|
3008
|
+
polyfillStringIncludes();
|
|
3009
|
+
polyfillURLSearchParams();
|
|
3010
|
+
polyfillTextEncoder();
|
|
3011
|
+
polyfillPromiseFinally();
|
|
2941
3012
|
}
|
|
2942
3013
|
// src/utils/vastMacros.ts
|
|
2943
3014
|
var UNEXPANDED_MACRO_PATTERN = /^(\[[^\]]*\]|\{[^}]*\}|%%[^%]*%%)$/;
|
|
@@ -5090,7 +5161,7 @@ var AdConfigManager = /*#__PURE__*/ function() {
|
|
|
5090
5161
|
key: "initializeTracking",
|
|
5091
5162
|
value: function initializeTracking() {
|
|
5092
5163
|
var _this = this;
|
|
5093
|
-
sendInitialTracking(this.config.licenseKey).then(function() {
|
|
5164
|
+
sendInitialTracking(this.config.licenseKey, buildAnalyticsContext(this.config)).then(function() {
|
|
5094
5165
|
_this.heartbeatInterval = window.setInterval(function() {
|
|
5095
5166
|
_this.sendHeartbeatIfNeeded();
|
|
5096
5167
|
}, 5e3);
|
|
@@ -5111,7 +5182,7 @@ var AdConfigManager = /*#__PURE__*/ function() {
|
|
|
5111
5182
|
var now = Date.now();
|
|
5112
5183
|
if (!this.lastHeartbeatTime || now - this.lastHeartbeatTime > 3e4) {
|
|
5113
5184
|
this.lastHeartbeatTime = now;
|
|
5114
|
-
sendHeartbeat(this.config.licenseKey).catch(function(error) {
|
|
5185
|
+
sendHeartbeat(this.config.licenseKey, buildAnalyticsContext(this.config)).catch(function(error) {
|
|
5115
5186
|
if (_this.debug) {
|
|
5116
5187
|
console.warn("[StormcloudVideoPlayer] Failed to send heartbeat:", error);
|
|
5117
5188
|
}
|
|
@@ -6891,6 +6962,12 @@ var AdBreakOrchestrator = /*#__PURE__*/ function() {
|
|
|
6891
6962
|
return !!this.host.config.debugAdTiming;
|
|
6892
6963
|
}
|
|
6893
6964
|
},
|
|
6965
|
+
{
|
|
6966
|
+
key: "analyticsContext",
|
|
6967
|
+
get: function get() {
|
|
6968
|
+
return buildAnalyticsContext(this.host.config);
|
|
6969
|
+
}
|
|
6970
|
+
},
|
|
6894
6971
|
{
|
|
6895
6972
|
// ───────────────────────────────────────────────────────────────
|
|
6896
6973
|
// IMA event listeners
|
|
@@ -6904,7 +6981,7 @@ var AdBreakOrchestrator = /*#__PURE__*/ function() {
|
|
|
6904
6981
|
source: "hls",
|
|
6905
6982
|
adIndex: _this.timing.currentAdIndex,
|
|
6906
6983
|
timestamp: /* @__PURE__ */ new Date().toISOString()
|
|
6907
|
-
}).catch(function() {});
|
|
6984
|
+
}, _this.analyticsContext).catch(function() {});
|
|
6908
6985
|
_this.timing.recordPlayedAdDuration(_this.host.getAdPlayer());
|
|
6909
6986
|
var remaining = _this.timing.getRemainingAdMs();
|
|
6910
6987
|
_this.timing.consecutiveFailures = 0;
|
|
@@ -6966,7 +7043,7 @@ var AdBreakOrchestrator = /*#__PURE__*/ function() {
|
|
|
6966
7043
|
source: "hls",
|
|
6967
7044
|
adIndex: _this.timing.currentAdIndex,
|
|
6968
7045
|
timestamp: /* @__PURE__ */ new Date().toISOString()
|
|
6969
|
-
}).catch(function() {});
|
|
7046
|
+
}, _this.analyticsContext).catch(function() {});
|
|
6970
7047
|
if (!_this.host.video.muted) {
|
|
6971
7048
|
_this.host.video.muted = true;
|
|
6972
7049
|
if (_this.debug) {
|
|
@@ -7113,7 +7190,7 @@ var AdBreakOrchestrator = /*#__PURE__*/ function() {
|
|
|
7113
7190
|
source: "hls",
|
|
7114
7191
|
vastUrl: firstAdUrl,
|
|
7115
7192
|
timestamp: /* @__PURE__ */ new Date().toISOString()
|
|
7116
|
-
}).catch(function() {});
|
|
7193
|
+
}, this.analyticsContext).catch(function() {});
|
|
7117
7194
|
if (this.debug) {
|
|
7118
7195
|
console.log("[CONTINUOUS-FETCH] Using preloaded ad from pool (preloaded in advance, ready immediately!)");
|
|
7119
7196
|
}
|
|
@@ -7227,7 +7304,7 @@ var AdBreakOrchestrator = /*#__PURE__*/ function() {
|
|
|
7227
7304
|
source: "hls",
|
|
7228
7305
|
vastUrl: firstAdUrl,
|
|
7229
7306
|
timestamp: /* @__PURE__ */ new Date().toISOString()
|
|
7230
|
-
}).catch(function() {});
|
|
7307
|
+
}, this.analyticsContext).catch(function() {});
|
|
7231
7308
|
if (this.debug) {
|
|
7232
7309
|
console.log("[CONTINUOUS-FETCH] First ad request successful, starting playback");
|
|
7233
7310
|
}
|
|
@@ -7691,7 +7768,7 @@ var AdBreakOrchestrator = /*#__PURE__*/ function() {
|
|
|
7691
7768
|
source: "hls",
|
|
7692
7769
|
vastUrl: preloaded.vastUrl,
|
|
7693
7770
|
timestamp: /* @__PURE__ */ new Date().toISOString()
|
|
7694
|
-
}).catch(function() {});
|
|
7771
|
+
}, this.analyticsContext).catch(function() {});
|
|
7695
7772
|
_state.label = 1;
|
|
7696
7773
|
case 1:
|
|
7697
7774
|
_state.trys.push([
|
|
@@ -7924,7 +8001,7 @@ var AdBreakOrchestrator = /*#__PURE__*/ function() {
|
|
|
7924
8001
|
source: "hls",
|
|
7925
8002
|
vastUrl: vastTagUrl,
|
|
7926
8003
|
timestamp: /* @__PURE__ */ new Date().toISOString()
|
|
7927
|
-
}).catch(function() {});
|
|
8004
|
+
}, this.analyticsContext).catch(function() {});
|
|
7928
8005
|
this.timing.clearAdRequestWatchdog();
|
|
7929
8006
|
if (this.timing.activeAdRequestToken !== requestToken) return [
|
|
7930
8007
|
2
|
|
@@ -8716,7 +8793,7 @@ var StormcloudVideoPlayer = /*#__PURE__*/ function() {
|
|
|
8716
8793
|
sendAdDetectTracking(this.config.licenseKey, _object_spread({
|
|
8717
8794
|
source: "scte35",
|
|
8718
8795
|
timestamp: /* @__PURE__ */ new Date().toISOString()
|
|
8719
|
-
}, detectPayload)).catch(function() {});
|
|
8796
|
+
}, detectPayload), buildAnalyticsContext(this.config)).catch(function() {});
|
|
8720
8797
|
}
|
|
8721
8798
|
var hasPrefetchedAds = this.adBreak.pendingAdBreak && this.adBreak.pendingAdBreak.vastUrls.length > 0;
|
|
8722
8799
|
var durationMs = marker.durationSeconds != null ? marker.durationSeconds * 1e3 : ((_this_adBreak_pendingAdBreak = this.adBreak.pendingAdBreak) === null || _this_adBreak_pendingAdBreak === void 0 ? void 0 : _this_adBreak_pendingAdBreak.marker.durationSeconds) != null ? this.adBreak.pendingAdBreak.marker.durationSeconds * 1e3 : void 0;
|
|
@@ -8889,7 +8966,7 @@ var StormcloudVideoPlayer = /*#__PURE__*/ function() {
|
|
|
8889
8966
|
sendAdDetectTracking(this.config.licenseKey, _object_spread({
|
|
8890
8967
|
source: "scte35",
|
|
8891
8968
|
timestamp: /* @__PURE__ */ new Date().toISOString()
|
|
8892
|
-
}, detectPayload)).catch(function() {});
|
|
8969
|
+
}, detectPayload), buildAnalyticsContext(this.config)).catch(function() {});
|
|
8893
8970
|
if (this.debug) {
|
|
8894
8971
|
console.log("[PREFETCH] Starting ad prefetch for upcoming ad break");
|
|
8895
8972
|
console.log("[PREFETCH] Pre-generated ".concat(generatedUrls.length, " VAST URLs"));
|
|
@@ -11701,6 +11778,7 @@ var StormcloudPlayer_default = StormcloudPlayer;
|
|
|
11701
11778
|
StormcloudVideoPlayer: StormcloudVideoPlayer,
|
|
11702
11779
|
StormcloudVideoPlayerComponent: StormcloudVideoPlayerComponent,
|
|
11703
11780
|
applyMQTTConfig: applyMQTTConfig,
|
|
11781
|
+
buildAnalyticsContext: buildAnalyticsContext,
|
|
11704
11782
|
buildMQTTBrokerUrl: buildMQTTBrokerUrl,
|
|
11705
11783
|
buildPlayerTopic: buildPlayerTopic,
|
|
11706
11784
|
canPlay: canPlay,
|