stormcloud-video-player 0.5.2 → 0.5.4
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 +370 -447
- package/lib/index.cjs.map +1 -1
- package/lib/index.d.cts +355 -267
- package/lib/index.d.ts +355 -267
- package/lib/index.js +329 -406
- package/lib/index.js.map +1 -1
- package/lib/player/StormcloudVideoPlayer.cjs +96 -178
- package/lib/player/StormcloudVideoPlayer.cjs.map +1 -1
- package/lib/player/StormcloudVideoPlayer.d.cts +1 -1
- package/lib/players/FilePlayer.cjs +99 -116
- package/lib/players/FilePlayer.cjs.map +1 -1
- package/lib/players/HlsPlayer.cjs +148 -230
- package/lib/players/HlsPlayer.cjs.map +1 -1
- package/lib/players/HlsPlayer.d.cts +1 -1
- package/lib/players/index.cjs +227 -309
- package/lib/players/index.cjs.map +1 -1
- package/lib/sdk/hlsAdPlayer.cjs +17 -9
- package/lib/sdk/hlsAdPlayer.cjs.map +1 -1
- package/lib/sdk/hlsAdPlayer.d.cts +1 -1
- package/lib/sdk/ima.cjs +28 -20
- package/lib/sdk/ima.cjs.map +1 -1
- package/lib/sdk/ima.d.cts +1 -1
- package/lib/sdk/prebid.cjs +27 -85
- package/lib/sdk/prebid.cjs.map +1 -1
- package/lib/sdk/prebid.d.cts +6 -3
- package/lib/sdk/prebidController.cjs +35 -108
- package/lib/sdk/prebidController.cjs.map +1 -1
- package/lib/sdk/prebidController.d.cts +3 -2
- package/lib/sdk/vastParser.cjs +19 -11
- package/lib/sdk/vastParser.cjs.map +1 -1
- package/lib/{types-g2d4Akez.d.cts → types-CRi_KrjM.d.cts} +1 -45
- package/lib/ui/StormcloudVideoPlayer.cjs +190 -267
- package/lib/ui/StormcloudVideoPlayer.cjs.map +1 -1
- package/lib/ui/StormcloudVideoPlayer.d.cts +1 -1
- package/lib/utils/browserCompat.cjs +11 -11
- package/lib/utils/browserCompat.cjs.map +1 -1
- package/lib/utils/polyfills.cjs +13 -13
- package/lib/utils/polyfills.cjs.map +1 -1
- package/lib/utils/tracking.cjs +19 -11
- package/lib/utils/tracking.cjs.map +1 -1
- package/lib/utils/tracking.d.cts +1 -1
- package/package.json +1 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { StormcloudVideoPlayer } from '../player/StormcloudVideoPlayer.cjs';
|
|
3
|
-
import { S as StormcloudVideoPlayerConfig } from '../types-
|
|
3
|
+
import { S as StormcloudVideoPlayerConfig } from '../types-CRi_KrjM.cjs';
|
|
4
4
|
|
|
5
5
|
type StormcloudVideoPlayerProps = Omit<StormcloudVideoPlayerConfig, "videoElement"> & React.VideoHTMLAttributes<HTMLVideoElement> & {
|
|
6
6
|
onReady?: (player: StormcloudVideoPlayer) => void;
|
|
@@ -59,20 +59,20 @@ var __defProp = Object.defineProperty;
|
|
|
59
59
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
60
60
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
61
61
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
62
|
-
var __export = function(target, all) {
|
|
62
|
+
var __export = function __export(target, all) {
|
|
63
63
|
for(var name in all)__defProp(target, name, {
|
|
64
64
|
get: all[name],
|
|
65
65
|
enumerable: true
|
|
66
66
|
});
|
|
67
67
|
};
|
|
68
|
-
var __copyProps = function(to, from, except, desc) {
|
|
68
|
+
var __copyProps = function __copyProps(to, from, except, desc) {
|
|
69
69
|
if (from && (typeof from === "undefined" ? "undefined" : _type_of(from)) === "object" || typeof from === "function") {
|
|
70
70
|
var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
|
|
71
71
|
try {
|
|
72
72
|
var _loop = function() {
|
|
73
73
|
var key = _step.value;
|
|
74
74
|
if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
|
|
75
|
-
get: function() {
|
|
75
|
+
get: function get() {
|
|
76
76
|
return from[key];
|
|
77
77
|
},
|
|
78
78
|
enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
|
|
@@ -96,7 +96,7 @@ var __copyProps = function(to, from, except, desc) {
|
|
|
96
96
|
}
|
|
97
97
|
return to;
|
|
98
98
|
};
|
|
99
|
-
var __toCommonJS = function(mod) {
|
|
99
|
+
var __toCommonJS = function __toCommonJS(mod) {
|
|
100
100
|
return __copyProps(__defProp({}, "__esModule", {
|
|
101
101
|
value: true
|
|
102
102
|
}), mod);
|
|
@@ -104,25 +104,25 @@ var __toCommonJS = function(mod) {
|
|
|
104
104
|
// src/utils/browserCompat.ts
|
|
105
105
|
var browserCompat_exports = {};
|
|
106
106
|
__export(browserCompat_exports, {
|
|
107
|
-
detectBrowser: function() {
|
|
107
|
+
detectBrowser: function detectBrowser1() {
|
|
108
108
|
return detectBrowser;
|
|
109
109
|
},
|
|
110
|
-
getBrowserConfigOverrides: function() {
|
|
110
|
+
getBrowserConfigOverrides: function getBrowserConfigOverrides1() {
|
|
111
111
|
return getBrowserConfigOverrides;
|
|
112
112
|
},
|
|
113
|
-
getRecommendedAdPlayer: function() {
|
|
113
|
+
getRecommendedAdPlayer: function getRecommendedAdPlayer1() {
|
|
114
114
|
return getRecommendedAdPlayer;
|
|
115
115
|
},
|
|
116
|
-
logBrowserInfo: function() {
|
|
116
|
+
logBrowserInfo: function logBrowserInfo1() {
|
|
117
117
|
return logBrowserInfo;
|
|
118
118
|
},
|
|
119
|
-
supportsFeature: function() {
|
|
119
|
+
supportsFeature: function supportsFeature1() {
|
|
120
120
|
return supportsFeature;
|
|
121
121
|
},
|
|
122
|
-
supportsGoogleIMA: function() {
|
|
122
|
+
supportsGoogleIMA: function supportsGoogleIMA1() {
|
|
123
123
|
return supportsGoogleIMA;
|
|
124
124
|
},
|
|
125
|
-
supportsModernJS: function() {
|
|
125
|
+
supportsModernJS: function supportsModernJS1() {
|
|
126
126
|
return supportsModernJS;
|
|
127
127
|
}
|
|
128
128
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/home/ubuntu24/Dev/stormcloud-vp/lib/utils/browserCompat.cjs","../../src/utils/browserCompat.ts"],"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","browserCompat_exports","detectBrowser","getBrowserConfigOverrides","getRecommendedAdPlayer","logBrowserInfo","supportsFeature","supportsGoogleIMA","supportsModernJS","module","exports","getChromeVersion","ua","match","parseInt","getWebKitVersion","getPlatform","navigator","userAgentData","platform","userAgent","test","version","majorVersion","isSmartTV","isLegacyTV","supportsIMA","recommendedAdPlayer","webOSVersion","tizenVersion","chromeVersionNum","chromeVersion","webkitVersion","parts","split"],"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/browserCompat.ts\nvar browserCompat_exports = {};\n__export(browserCompat_exports, {\n detectBrowser: () => detectBrowser,\n getBrowserConfigOverrides: () => getBrowserConfigOverrides,\n getRecommendedAdPlayer: () => getRecommendedAdPlayer,\n logBrowserInfo: () => logBrowserInfo,\n supportsFeature: () => supportsFeature,\n supportsGoogleIMA: () => supportsGoogleIMA,\n supportsModernJS: () => supportsModernJS\n});\nmodule.exports = __toCommonJS(browserCompat_exports);\nfunction getChromeVersion(ua) {\n const match = ua.match(/Chrome\\/(\\d+)/);\n return match && match[1] ? parseInt(match[1], 10) : 0;\n}\nfunction getWebKitVersion(ua) {\n const match = ua.match(/AppleWebKit\\/(\\d+)/);\n return match && match[1] ? parseInt(match[1], 10) : 0;\n}\nfunction getPlatform() {\n if (\"userAgentData\" in navigator && navigator.userAgentData?.platform) {\n return navigator.userAgentData.platform;\n }\n const ua = navigator.userAgent;\n if (/Mac|iPhone|iPad|iPod/i.test(ua)) {\n return /iPhone|iPad|iPod/i.test(ua) ? \"iPhone\" : \"MacIntel\";\n }\n if (/Win/i.test(ua)) {\n return \"Win32\";\n }\n if (/Linux/i.test(ua)) {\n return /Android/i.test(ua) ? \"Linux armv8l\" : \"Linux x86_64\";\n }\n if (/CrOS/i.test(ua)) {\n return \"CrOS\";\n }\n return navigator.platform || \"Unknown\";\n}\nfunction detectBrowser() {\n const ua = navigator.userAgent;\n const platform = getPlatform();\n let name = \"Unknown\";\n let version = \"0\";\n let majorVersion = 0;\n let isSmartTV = false;\n let isLegacyTV = false;\n let supportsIMA = true;\n let supportsModernJS2 = true;\n let recommendedAdPlayer = \"ima\";\n let webOSVersion;\n let tizenVersion;\n let chromeVersionNum;\n const chromeVersion = getChromeVersion(ua);\n const webkitVersion = getWebKitVersion(ua);\n chromeVersionNum = chromeVersion > 0 ? chromeVersion : void 0;\n if (/Web0S|webOS|LG Browser|LGSTB/i.test(ua)) {\n name = \"LG WebOS\";\n isSmartTV = true;\n let match = ua.match(/Web0S[/\\s]*([\\d.]+)/i) || ua.match(/webOS[/\\s]*([\\d.]+)/i);\n if (!match || !match[1]) {\n match = ua.match(/webOSTV[/\\s-]*([\\d.]+)/i) || ua.match(/webOS\\.TV[/\\s-]*([\\d.]+)/i);\n }\n if (match && match[1]) {\n version = match[1];\n const parts = version.split(\".\");\n majorVersion = parts[0] ? parseInt(parts[0], 10) : 0;\n webOSVersion = majorVersion;\n } else if (chromeVersion > 0) {\n if (chromeVersion >= 79) {\n webOSVersion = 6;\n version = \"6.0\";\n majorVersion = 6;\n } else if (chromeVersion >= 68) {\n webOSVersion = 5;\n version = \"5.0\";\n majorVersion = 5;\n } else if (chromeVersion >= 53) {\n webOSVersion = 4;\n version = \"4.0\";\n majorVersion = 4;\n } else if (chromeVersion >= 38) {\n webOSVersion = 3;\n version = \"3.0\";\n majorVersion = 3;\n } else {\n webOSVersion = 2;\n version = \"2.0\";\n majorVersion = 2;\n }\n } else {\n version = \"Unknown\";\n webOSVersion = void 0;\n }\n if (webOSVersion !== void 0 && webOSVersion >= 4) {\n supportsIMA = true;\n recommendedAdPlayer = \"ima\";\n isLegacyTV = false;\n } else if (webOSVersion !== void 0 && webOSVersion >= 3) {\n if (chromeVersion >= 53) {\n supportsIMA = true;\n recommendedAdPlayer = \"ima\";\n isLegacyTV = false;\n } else {\n supportsIMA = false;\n recommendedAdPlayer = \"hls\";\n isLegacyTV = true;\n }\n } else if (chromeVersion >= 53) {\n supportsIMA = true;\n recommendedAdPlayer = \"ima\";\n isLegacyTV = false;\n } else {\n supportsIMA = false;\n recommendedAdPlayer = \"hls\";\n isLegacyTV = true;\n }\n } else if (/Tizen/i.test(ua)) {\n name = \"Samsung Tizen\";\n isSmartTV = true;\n const match = ua.match(/Tizen[/\\s]*([\\d.]+)/i);\n version = match && match[1] ? match[1] : \"Unknown\";\n if (version !== \"Unknown\") {\n const parts = version.split(\".\");\n majorVersion = parts[0] ? parseInt(parts[0], 10) : 0;\n tizenVersion = majorVersion;\n }\n if (tizenVersion !== void 0 && tizenVersion >= 4) {\n supportsIMA = true;\n recommendedAdPlayer = \"ima\";\n isLegacyTV = false;\n } else if (tizenVersion !== void 0 && tizenVersion >= 3 && chromeVersion >= 47) {\n supportsIMA = true;\n recommendedAdPlayer = \"ima\";\n isLegacyTV = false;\n } else if (chromeVersion >= 53) {\n supportsIMA = true;\n recommendedAdPlayer = \"ima\";\n isLegacyTV = false;\n } else {\n supportsIMA = false;\n recommendedAdPlayer = \"hls\";\n isLegacyTV = true;\n }\n } else if (/SMART-TV|SmartTV/i.test(ua)) {\n name = \"Smart TV\";\n isSmartTV = true;\n if (chromeVersion >= 53) {\n supportsIMA = true;\n recommendedAdPlayer = \"ima\";\n } else {\n supportsIMA = false;\n recommendedAdPlayer = \"hls\";\n isLegacyTV = true;\n }\n } else if (/NetCast/i.test(ua)) {\n name = \"LG NetCast\";\n isSmartTV = true;\n isLegacyTV = true;\n supportsIMA = false;\n recommendedAdPlayer = \"hls\";\n } else if (/BRAVIA/i.test(ua)) {\n name = \"Sony BRAVIA\";\n isSmartTV = true;\n if (chromeVersion >= 53) {\n supportsIMA = true;\n recommendedAdPlayer = \"ima\";\n } else {\n supportsIMA = false;\n recommendedAdPlayer = \"hls\";\n isLegacyTV = true;\n }\n } else {\n if (chromeVersion > 0) {\n name = \"Chrome\";\n version = chromeVersion.toString();\n majorVersion = chromeVersion;\n if (chromeVersion < 50) {\n supportsIMA = false;\n supportsModernJS2 = false;\n recommendedAdPlayer = \"hls\";\n }\n }\n if (webkitVersion > 0 && webkitVersion < 600) {\n supportsModernJS2 = false;\n if (chromeVersion < 50) {\n supportsIMA = false;\n recommendedAdPlayer = \"hls\";\n }\n }\n }\n if (typeof Promise === \"undefined\" || typeof Map === \"undefined\" || typeof Set === \"undefined\") {\n supportsModernJS2 = false;\n supportsIMA = false;\n recommendedAdPlayer = \"hls\";\n }\n if (typeof URLSearchParams === \"undefined\") {\n supportsModernJS2 = false;\n }\n return {\n name,\n version,\n majorVersion,\n isSmartTV,\n isLegacyTV,\n platform,\n supportsIMA,\n supportsModernJS: supportsModernJS2,\n recommendedAdPlayer,\n webOSVersion,\n tizenVersion,\n chromeVersion: chromeVersionNum\n };\n}\nfunction supportsGoogleIMA() {\n const browser = detectBrowser();\n if (browser.isLegacyTV) {\n return false;\n }\n if (typeof document === \"undefined\" || typeof document.createElement !== \"function\") {\n return false;\n }\n try {\n const video = document.createElement(\"video\");\n if (!video) {\n return false;\n }\n } catch (e) {\n return false;\n }\n if (typeof Promise === \"undefined\") {\n return false;\n }\n return browser.supportsIMA;\n}\nfunction getRecommendedAdPlayer() {\n const browser = detectBrowser();\n return browser.recommendedAdPlayer;\n}\nfunction supportsModernJS() {\n try {\n return typeof Promise !== \"undefined\" && typeof Map !== \"undefined\" && typeof Set !== \"undefined\" && typeof Array.from !== \"undefined\" && typeof Object.assign !== \"undefined\" && typeof Array.prototype.forEach !== \"undefined\" && typeof String.prototype.includes !== \"undefined\";\n } catch (e) {\n return false;\n }\n}\nfunction logBrowserInfo(debug = false) {\n if (!debug) return;\n const browser = detectBrowser();\n const imaSupport = supportsGoogleIMA();\n console.log(\"[StormcloudVideoPlayer] Browser Compatibility Info:\", {\n browser: `${browser.name} ${browser.version}`,\n platform: browser.platform,\n isSmartTV: browser.isSmartTV,\n isLegacyTV: browser.isLegacyTV,\n supportsIMA: imaSupport,\n supportsModernJS: browser.supportsModernJS,\n recommendedAdPlayer: browser.recommendedAdPlayer,\n ...browser.webOSVersion !== void 0 ? { webOSVersion: browser.webOSVersion } : {},\n ...browser.tizenVersion !== void 0 ? { tizenVersion: browser.tizenVersion } : {},\n ...browser.chromeVersion !== void 0 ? { chromeVersion: browser.chromeVersion } : {},\n userAgent: navigator.userAgent\n });\n}\nfunction getBrowserConfigOverrides() {\n const browser = detectBrowser();\n const overrides = {};\n if (browser.isLegacyTV || !browser.supportsIMA) {\n overrides.adPlayerType = \"hls\";\n }\n if (browser.isSmartTV) {\n overrides.allowNativeHls = true;\n }\n return overrides;\n}\nfunction supportsFeature(feature) {\n switch (feature) {\n case \"ima\":\n return supportsGoogleIMA();\n case \"urlsearchparams\":\n return typeof URLSearchParams !== \"undefined\";\n case \"textencoder\":\n return typeof TextEncoder !== \"undefined\";\n case \"promises\":\n return typeof Promise !== \"undefined\";\n case \"fetch\":\n return typeof fetch !== \"undefined\";\n case \"crypto\":\n return typeof crypto !== \"undefined\" && typeof crypto.subtle !== \"undefined\";\n default:\n return false;\n }\n}\n// Annotate the CommonJS export names for ESM import in node:\n0 && (module.exports = {\n detectBrowser,\n getBrowserConfigOverrides,\n getRecommendedAdPlayer,\n logBrowserInfo,\n supportsFeature,\n supportsGoogleIMA,\n supportsModernJS\n});\n","interface NavigatorUAData {\n platform?: string;\n brands?: Array<{ brand: string; version: string }>;\n mobile?: boolean;\n}\n\ndeclare global {\n interface Navigator {\n userAgentData?: NavigatorUAData;\n }\n}\n\nexport interface BrowserInfo {\n name: string;\n version: string;\n majorVersion: number;\n isSmartTV: boolean;\n isLegacyTV: boolean;\n platform: string;\n supportsIMA: boolean;\n supportsModernJS: boolean;\n recommendedAdPlayer: 'ima' | 'hls';\n webOSVersion?: number | undefined;\n tizenVersion?: number | undefined;\n chromeVersion?: number | undefined;\n}\n\nfunction getChromeVersion(ua: string): number {\n const match = ua.match(/Chrome\\/(\\d+)/);\n return match && match[1] ? parseInt(match[1], 10) : 0;\n}\n\nfunction getWebKitVersion(ua: string): number {\n const match = ua.match(/AppleWebKit\\/(\\d+)/);\n return match && match[1] ? parseInt(match[1], 10) : 0;\n}\n\nfunction getPlatform(): string {\n if ('userAgentData' in navigator && navigator.userAgentData?.platform) {\n return navigator.userAgentData.platform;\n }\n\n const ua = navigator.userAgent;\n if (/Mac|iPhone|iPad|iPod/i.test(ua)) {\n return /iPhone|iPad|iPod/i.test(ua) ? 'iPhone' : 'MacIntel';\n }\n if (/Win/i.test(ua)) {\n return 'Win32';\n }\n if (/Linux/i.test(ua)) {\n return /Android/i.test(ua) ? 'Linux armv8l' : 'Linux x86_64';\n }\n if (/CrOS/i.test(ua)) {\n return 'CrOS';\n }\n\n // eslint-disable-next-line deprecation/deprecation\n return (navigator as any).platform || 'Unknown';\n}\n\nexport function detectBrowser(): BrowserInfo {\n const ua = navigator.userAgent;\n const platform = getPlatform();\n\n let name = 'Unknown';\n let version = '0';\n let majorVersion = 0;\n let isSmartTV = false;\n let isLegacyTV = false;\n let supportsIMA = true;\n let supportsModernJS = true;\n let recommendedAdPlayer: 'ima' | 'hls' = 'ima';\n let webOSVersion: number | undefined;\n let tizenVersion: number | undefined;\n let chromeVersionNum: number | undefined;\n\n const chromeVersion = getChromeVersion(ua);\n const webkitVersion = getWebKitVersion(ua);\n chromeVersionNum = chromeVersion > 0 ? chromeVersion : undefined;\n\n if (/Web0S|webOS|LG Browser|LGSTB/i.test(ua)) {\n name = 'LG WebOS';\n isSmartTV = true;\n \n let match = ua.match(/Web0S[/\\s]*([\\d.]+)/i) || ua.match(/webOS[/\\s]*([\\d.]+)/i);\n \n if (!match || !match[1]) {\n match = ua.match(/webOSTV[/\\s-]*([\\d.]+)/i) || ua.match(/webOS\\.TV[/\\s-]*([\\d.]+)/i);\n }\n \n if (match && match[1]) {\n version = match[1];\n const parts = version.split('.');\n majorVersion = parts[0] ? parseInt(parts[0], 10) : 0;\n webOSVersion = majorVersion;\n } else if (chromeVersion > 0) {\n if (chromeVersion >= 79) {\n webOSVersion = 6;\n version = '6.0';\n majorVersion = 6;\n } else if (chromeVersion >= 68) {\n webOSVersion = 5;\n version = '5.0';\n majorVersion = 5;\n } else if (chromeVersion >= 53) {\n webOSVersion = 4;\n version = '4.0';\n majorVersion = 4;\n } else if (chromeVersion >= 38) {\n webOSVersion = 3;\n version = '3.0';\n majorVersion = 3;\n } else {\n webOSVersion = 2;\n version = '2.0';\n majorVersion = 2;\n }\n } else {\n version = 'Unknown';\n webOSVersion = undefined;\n }\n\n if (webOSVersion !== undefined && webOSVersion >= 4) {\n supportsIMA = true;\n recommendedAdPlayer = 'ima';\n isLegacyTV = false;\n } else if (webOSVersion !== undefined && webOSVersion >= 3) {\n if (chromeVersion >= 53) {\n supportsIMA = true;\n recommendedAdPlayer = 'ima';\n isLegacyTV = false;\n } else {\n supportsIMA = false;\n recommendedAdPlayer = 'hls';\n isLegacyTV = true;\n }\n } else if (chromeVersion >= 53) {\n supportsIMA = true;\n recommendedAdPlayer = 'ima';\n isLegacyTV = false;\n } else {\n supportsIMA = false;\n recommendedAdPlayer = 'hls';\n isLegacyTV = true;\n }\n } else if (/Tizen/i.test(ua)) {\n name = 'Samsung Tizen';\n isSmartTV = true;\n const match = ua.match(/Tizen[/\\s]*([\\d.]+)/i);\n version = match && match[1] ? match[1] : 'Unknown';\n if (version !== 'Unknown') {\n const parts = version.split('.');\n majorVersion = parts[0] ? parseInt(parts[0], 10) : 0;\n tizenVersion = majorVersion;\n }\n \n if (tizenVersion !== undefined && tizenVersion >= 4) {\n supportsIMA = true;\n recommendedAdPlayer = 'ima';\n isLegacyTV = false;\n } else if (tizenVersion !== undefined && tizenVersion >= 3 && chromeVersion >= 47) {\n supportsIMA = true;\n recommendedAdPlayer = 'ima';\n isLegacyTV = false;\n } else if (chromeVersion >= 53) {\n supportsIMA = true;\n recommendedAdPlayer = 'ima';\n isLegacyTV = false;\n } else {\n supportsIMA = false;\n recommendedAdPlayer = 'hls';\n isLegacyTV = true;\n }\n } else if (/SMART-TV|SmartTV/i.test(ua)) {\n name = 'Smart TV';\n isSmartTV = true;\n if (chromeVersion >= 53) {\n supportsIMA = true;\n recommendedAdPlayer = 'ima';\n } else {\n supportsIMA = false;\n recommendedAdPlayer = 'hls';\n isLegacyTV = true;\n }\n } else if (/NetCast/i.test(ua)) {\n name = 'LG NetCast';\n isSmartTV = true;\n isLegacyTV = true;\n supportsIMA = false;\n recommendedAdPlayer = 'hls';\n } else if (/BRAVIA/i.test(ua)) {\n name = 'Sony BRAVIA';\n isSmartTV = true;\n if (chromeVersion >= 53) {\n supportsIMA = true;\n recommendedAdPlayer = 'ima';\n } else {\n supportsIMA = false;\n recommendedAdPlayer = 'hls';\n isLegacyTV = true;\n }\n } else {\n if (chromeVersion > 0) {\n name = 'Chrome';\n version = chromeVersion.toString();\n majorVersion = chromeVersion;\n\n if (chromeVersion < 50) {\n supportsIMA = false;\n supportsModernJS = false;\n recommendedAdPlayer = 'hls';\n }\n }\n\n if (webkitVersion > 0 && webkitVersion < 600) {\n supportsModernJS = false;\n if (chromeVersion < 50) {\n supportsIMA = false;\n recommendedAdPlayer = 'hls';\n }\n }\n }\n\n if (typeof Promise === 'undefined' ||\n typeof Map === 'undefined' ||\n typeof Set === 'undefined') {\n supportsModernJS = false;\n supportsIMA = false;\n recommendedAdPlayer = 'hls';\n }\n\n if (typeof URLSearchParams === 'undefined') {\n supportsModernJS = false;\n }\n\n return {\n name,\n version,\n majorVersion,\n isSmartTV,\n isLegacyTV,\n platform,\n supportsIMA,\n supportsModernJS,\n recommendedAdPlayer,\n webOSVersion,\n tizenVersion,\n chromeVersion: chromeVersionNum,\n };\n}\n\nexport function supportsGoogleIMA(): boolean {\n const browser = detectBrowser();\n\n if (browser.isLegacyTV) {\n return false;\n }\n\n if (typeof document === 'undefined' ||\n typeof document.createElement !== 'function') {\n return false;\n }\n\n try {\n const video = document.createElement('video');\n if (!video) {\n return false;\n }\n } catch (e) {\n return false;\n }\n\n if (typeof Promise === 'undefined') {\n return false;\n }\n\n return browser.supportsIMA;\n}\n\nexport function getRecommendedAdPlayer(): 'ima' | 'hls' {\n const browser = detectBrowser();\n return browser.recommendedAdPlayer;\n}\n\nexport function supportsModernJS(): boolean {\n try {\n return (\n typeof Promise !== 'undefined' &&\n typeof Map !== 'undefined' &&\n typeof Set !== 'undefined' &&\n typeof Array.from !== 'undefined' &&\n typeof Object.assign !== 'undefined' &&\n typeof Array.prototype.forEach !== 'undefined' &&\n typeof String.prototype.includes !== 'undefined'\n );\n } catch (e) {\n return false;\n }\n}\n\nexport function logBrowserInfo(debug: boolean = false): void {\n if (!debug) return;\n\n const browser = detectBrowser();\n const imaSupport = supportsGoogleIMA();\n\n console.log('[StormcloudVideoPlayer] Browser Compatibility Info:', {\n browser: `${browser.name} ${browser.version}`,\n platform: browser.platform,\n isSmartTV: browser.isSmartTV,\n isLegacyTV: browser.isLegacyTV,\n supportsIMA: imaSupport,\n supportsModernJS: browser.supportsModernJS,\n recommendedAdPlayer: browser.recommendedAdPlayer,\n ...(browser.webOSVersion !== undefined ? { webOSVersion: browser.webOSVersion } : {}),\n ...(browser.tizenVersion !== undefined ? { tizenVersion: browser.tizenVersion } : {}),\n ...(browser.chromeVersion !== undefined ? { chromeVersion: browser.chromeVersion } : {}),\n userAgent: navigator.userAgent,\n });\n}\n\nexport function getBrowserConfigOverrides(): {\n adPlayerType?: 'ima' | 'hls';\n allowNativeHls?: boolean;\n} {\n const browser = detectBrowser();\n const overrides: { adPlayerType?: 'ima' | 'hls'; allowNativeHls?: boolean } = {};\n\n if (browser.isLegacyTV || !browser.supportsIMA) {\n overrides.adPlayerType = 'hls';\n }\n\n if (browser.isSmartTV) {\n overrides.allowNativeHls = true;\n }\n\n return overrides;\n}\n\nexport function supportsFeature(feature: string): boolean {\n switch (feature) {\n case 'ima':\n return supportsGoogleIMA();\n case 'urlsearchparams':\n return typeof URLSearchParams !== 'undefined';\n case 'textencoder':\n return typeof TextEncoder !== 'undefined';\n case 'promises':\n return typeof Promise !== 'undefined';\n case 'fetch':\n return typeof fetch !== 'undefined';\n case 'crypto':\n return typeof crypto !== 'undefined' && typeof crypto.subtle !== 'undefined';\n default:\n return false;\n }\n}\n\n"]}
|
|
1
|
+
{"version":3,"sources":["/home/ubuntu24-new/Dev/stormcloud-vp/lib/utils/browserCompat.cjs","../../src/utils/browserCompat.ts"],"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","browserCompat_exports","detectBrowser","getBrowserConfigOverrides","getRecommendedAdPlayer","logBrowserInfo","supportsFeature","supportsGoogleIMA","supportsModernJS","module","exports","getChromeVersion","ua","match","parseInt","getWebKitVersion","getPlatform","navigator","userAgentData","platform","userAgent","test","version","majorVersion","isSmartTV","isLegacyTV","supportsIMA","recommendedAdPlayer","webOSVersion","tizenVersion","chromeVersionNum","chromeVersion","webkitVersion","parts","split"],"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/browserCompat.ts\nvar browserCompat_exports = {};\n__export(browserCompat_exports, {\n detectBrowser: () => detectBrowser,\n getBrowserConfigOverrides: () => getBrowserConfigOverrides,\n getRecommendedAdPlayer: () => getRecommendedAdPlayer,\n logBrowserInfo: () => logBrowserInfo,\n supportsFeature: () => supportsFeature,\n supportsGoogleIMA: () => supportsGoogleIMA,\n supportsModernJS: () => supportsModernJS\n});\nmodule.exports = __toCommonJS(browserCompat_exports);\nfunction getChromeVersion(ua) {\n const match = ua.match(/Chrome\\/(\\d+)/);\n return match && match[1] ? parseInt(match[1], 10) : 0;\n}\nfunction getWebKitVersion(ua) {\n const match = ua.match(/AppleWebKit\\/(\\d+)/);\n return match && match[1] ? parseInt(match[1], 10) : 0;\n}\nfunction getPlatform() {\n if (\"userAgentData\" in navigator && navigator.userAgentData?.platform) {\n return navigator.userAgentData.platform;\n }\n const ua = navigator.userAgent;\n if (/Mac|iPhone|iPad|iPod/i.test(ua)) {\n return /iPhone|iPad|iPod/i.test(ua) ? \"iPhone\" : \"MacIntel\";\n }\n if (/Win/i.test(ua)) {\n return \"Win32\";\n }\n if (/Linux/i.test(ua)) {\n return /Android/i.test(ua) ? \"Linux armv8l\" : \"Linux x86_64\";\n }\n if (/CrOS/i.test(ua)) {\n return \"CrOS\";\n }\n return navigator.platform || \"Unknown\";\n}\nfunction detectBrowser() {\n const ua = navigator.userAgent;\n const platform = getPlatform();\n let name = \"Unknown\";\n let version = \"0\";\n let majorVersion = 0;\n let isSmartTV = false;\n let isLegacyTV = false;\n let supportsIMA = true;\n let supportsModernJS2 = true;\n let recommendedAdPlayer = \"ima\";\n let webOSVersion;\n let tizenVersion;\n let chromeVersionNum;\n const chromeVersion = getChromeVersion(ua);\n const webkitVersion = getWebKitVersion(ua);\n chromeVersionNum = chromeVersion > 0 ? chromeVersion : void 0;\n if (/Web0S|webOS|LG Browser|LGSTB/i.test(ua)) {\n name = \"LG WebOS\";\n isSmartTV = true;\n let match = ua.match(/Web0S[/\\s]*([\\d.]+)/i) || ua.match(/webOS[/\\s]*([\\d.]+)/i);\n if (!match || !match[1]) {\n match = ua.match(/webOSTV[/\\s-]*([\\d.]+)/i) || ua.match(/webOS\\.TV[/\\s-]*([\\d.]+)/i);\n }\n if (match && match[1]) {\n version = match[1];\n const parts = version.split(\".\");\n majorVersion = parts[0] ? parseInt(parts[0], 10) : 0;\n webOSVersion = majorVersion;\n } else if (chromeVersion > 0) {\n if (chromeVersion >= 79) {\n webOSVersion = 6;\n version = \"6.0\";\n majorVersion = 6;\n } else if (chromeVersion >= 68) {\n webOSVersion = 5;\n version = \"5.0\";\n majorVersion = 5;\n } else if (chromeVersion >= 53) {\n webOSVersion = 4;\n version = \"4.0\";\n majorVersion = 4;\n } else if (chromeVersion >= 38) {\n webOSVersion = 3;\n version = \"3.0\";\n majorVersion = 3;\n } else {\n webOSVersion = 2;\n version = \"2.0\";\n majorVersion = 2;\n }\n } else {\n version = \"Unknown\";\n webOSVersion = void 0;\n }\n if (webOSVersion !== void 0 && webOSVersion >= 4) {\n supportsIMA = true;\n recommendedAdPlayer = \"ima\";\n isLegacyTV = false;\n } else if (webOSVersion !== void 0 && webOSVersion >= 3) {\n if (chromeVersion >= 53) {\n supportsIMA = true;\n recommendedAdPlayer = \"ima\";\n isLegacyTV = false;\n } else {\n supportsIMA = false;\n recommendedAdPlayer = \"hls\";\n isLegacyTV = true;\n }\n } else if (chromeVersion >= 53) {\n supportsIMA = true;\n recommendedAdPlayer = \"ima\";\n isLegacyTV = false;\n } else {\n supportsIMA = false;\n recommendedAdPlayer = \"hls\";\n isLegacyTV = true;\n }\n } else if (/Tizen/i.test(ua)) {\n name = \"Samsung Tizen\";\n isSmartTV = true;\n const match = ua.match(/Tizen[/\\s]*([\\d.]+)/i);\n version = match && match[1] ? match[1] : \"Unknown\";\n if (version !== \"Unknown\") {\n const parts = version.split(\".\");\n majorVersion = parts[0] ? parseInt(parts[0], 10) : 0;\n tizenVersion = majorVersion;\n }\n if (tizenVersion !== void 0 && tizenVersion >= 4) {\n supportsIMA = true;\n recommendedAdPlayer = \"ima\";\n isLegacyTV = false;\n } else if (tizenVersion !== void 0 && tizenVersion >= 3 && chromeVersion >= 47) {\n supportsIMA = true;\n recommendedAdPlayer = \"ima\";\n isLegacyTV = false;\n } else if (chromeVersion >= 53) {\n supportsIMA = true;\n recommendedAdPlayer = \"ima\";\n isLegacyTV = false;\n } else {\n supportsIMA = false;\n recommendedAdPlayer = \"hls\";\n isLegacyTV = true;\n }\n } else if (/SMART-TV|SmartTV/i.test(ua)) {\n name = \"Smart TV\";\n isSmartTV = true;\n if (chromeVersion >= 53) {\n supportsIMA = true;\n recommendedAdPlayer = \"ima\";\n } else {\n supportsIMA = false;\n recommendedAdPlayer = \"hls\";\n isLegacyTV = true;\n }\n } else if (/NetCast/i.test(ua)) {\n name = \"LG NetCast\";\n isSmartTV = true;\n isLegacyTV = true;\n supportsIMA = false;\n recommendedAdPlayer = \"hls\";\n } else if (/BRAVIA/i.test(ua)) {\n name = \"Sony BRAVIA\";\n isSmartTV = true;\n if (chromeVersion >= 53) {\n supportsIMA = true;\n recommendedAdPlayer = \"ima\";\n } else {\n supportsIMA = false;\n recommendedAdPlayer = \"hls\";\n isLegacyTV = true;\n }\n } else {\n if (chromeVersion > 0) {\n name = \"Chrome\";\n version = chromeVersion.toString();\n majorVersion = chromeVersion;\n if (chromeVersion < 50) {\n supportsIMA = false;\n supportsModernJS2 = false;\n recommendedAdPlayer = \"hls\";\n }\n }\n if (webkitVersion > 0 && webkitVersion < 600) {\n supportsModernJS2 = false;\n if (chromeVersion < 50) {\n supportsIMA = false;\n recommendedAdPlayer = \"hls\";\n }\n }\n }\n if (typeof Promise === \"undefined\" || typeof Map === \"undefined\" || typeof Set === \"undefined\") {\n supportsModernJS2 = false;\n supportsIMA = false;\n recommendedAdPlayer = \"hls\";\n }\n if (typeof URLSearchParams === \"undefined\") {\n supportsModernJS2 = false;\n }\n return {\n name,\n version,\n majorVersion,\n isSmartTV,\n isLegacyTV,\n platform,\n supportsIMA,\n supportsModernJS: supportsModernJS2,\n recommendedAdPlayer,\n webOSVersion,\n tizenVersion,\n chromeVersion: chromeVersionNum\n };\n}\nfunction supportsGoogleIMA() {\n const browser = detectBrowser();\n if (browser.isLegacyTV) {\n return false;\n }\n if (typeof document === \"undefined\" || typeof document.createElement !== \"function\") {\n return false;\n }\n try {\n const video = document.createElement(\"video\");\n if (!video) {\n return false;\n }\n } catch (e) {\n return false;\n }\n if (typeof Promise === \"undefined\") {\n return false;\n }\n return browser.supportsIMA;\n}\nfunction getRecommendedAdPlayer() {\n const browser = detectBrowser();\n return browser.recommendedAdPlayer;\n}\nfunction supportsModernJS() {\n try {\n return typeof Promise !== \"undefined\" && typeof Map !== \"undefined\" && typeof Set !== \"undefined\" && typeof Array.from !== \"undefined\" && typeof Object.assign !== \"undefined\" && typeof Array.prototype.forEach !== \"undefined\" && typeof String.prototype.includes !== \"undefined\";\n } catch (e) {\n return false;\n }\n}\nfunction logBrowserInfo(debug = false) {\n if (!debug) return;\n const browser = detectBrowser();\n const imaSupport = supportsGoogleIMA();\n console.log(\"[StormcloudVideoPlayer] Browser Compatibility Info:\", {\n browser: `${browser.name} ${browser.version}`,\n platform: browser.platform,\n isSmartTV: browser.isSmartTV,\n isLegacyTV: browser.isLegacyTV,\n supportsIMA: imaSupport,\n supportsModernJS: browser.supportsModernJS,\n recommendedAdPlayer: browser.recommendedAdPlayer,\n ...browser.webOSVersion !== void 0 ? { webOSVersion: browser.webOSVersion } : {},\n ...browser.tizenVersion !== void 0 ? { tizenVersion: browser.tizenVersion } : {},\n ...browser.chromeVersion !== void 0 ? { chromeVersion: browser.chromeVersion } : {},\n userAgent: navigator.userAgent\n });\n}\nfunction getBrowserConfigOverrides() {\n const browser = detectBrowser();\n const overrides = {};\n if (browser.isLegacyTV || !browser.supportsIMA) {\n overrides.adPlayerType = \"hls\";\n }\n if (browser.isSmartTV) {\n overrides.allowNativeHls = true;\n }\n return overrides;\n}\nfunction supportsFeature(feature) {\n switch (feature) {\n case \"ima\":\n return supportsGoogleIMA();\n case \"urlsearchparams\":\n return typeof URLSearchParams !== \"undefined\";\n case \"textencoder\":\n return typeof TextEncoder !== \"undefined\";\n case \"promises\":\n return typeof Promise !== \"undefined\";\n case \"fetch\":\n return typeof fetch !== \"undefined\";\n case \"crypto\":\n return typeof crypto !== \"undefined\" && typeof crypto.subtle !== \"undefined\";\n default:\n return false;\n }\n}\n// Annotate the CommonJS export names for ESM import in node:\n0 && (module.exports = {\n detectBrowser,\n getBrowserConfigOverrides,\n getRecommendedAdPlayer,\n logBrowserInfo,\n supportsFeature,\n supportsGoogleIMA,\n supportsModernJS\n});\n","interface NavigatorUAData {\n platform?: string;\n brands?: Array<{ brand: string; version: string }>;\n mobile?: boolean;\n}\n\ndeclare global {\n interface Navigator {\n userAgentData?: NavigatorUAData;\n }\n}\n\nexport interface BrowserInfo {\n name: string;\n version: string;\n majorVersion: number;\n isSmartTV: boolean;\n isLegacyTV: boolean;\n platform: string;\n supportsIMA: boolean;\n supportsModernJS: boolean;\n recommendedAdPlayer: 'ima' | 'hls';\n webOSVersion?: number | undefined;\n tizenVersion?: number | undefined;\n chromeVersion?: number | undefined;\n}\n\nfunction getChromeVersion(ua: string): number {\n const match = ua.match(/Chrome\\/(\\d+)/);\n return match && match[1] ? parseInt(match[1], 10) : 0;\n}\n\nfunction getWebKitVersion(ua: string): number {\n const match = ua.match(/AppleWebKit\\/(\\d+)/);\n return match && match[1] ? parseInt(match[1], 10) : 0;\n}\n\nfunction getPlatform(): string {\n if ('userAgentData' in navigator && navigator.userAgentData?.platform) {\n return navigator.userAgentData.platform;\n }\n\n const ua = navigator.userAgent;\n if (/Mac|iPhone|iPad|iPod/i.test(ua)) {\n return /iPhone|iPad|iPod/i.test(ua) ? 'iPhone' : 'MacIntel';\n }\n if (/Win/i.test(ua)) {\n return 'Win32';\n }\n if (/Linux/i.test(ua)) {\n return /Android/i.test(ua) ? 'Linux armv8l' : 'Linux x86_64';\n }\n if (/CrOS/i.test(ua)) {\n return 'CrOS';\n }\n\n // eslint-disable-next-line deprecation/deprecation\n return (navigator as any).platform || 'Unknown';\n}\n\nexport function detectBrowser(): BrowserInfo {\n const ua = navigator.userAgent;\n const platform = getPlatform();\n\n let name = 'Unknown';\n let version = '0';\n let majorVersion = 0;\n let isSmartTV = false;\n let isLegacyTV = false;\n let supportsIMA = true;\n let supportsModernJS = true;\n let recommendedAdPlayer: 'ima' | 'hls' = 'ima';\n let webOSVersion: number | undefined;\n let tizenVersion: number | undefined;\n let chromeVersionNum: number | undefined;\n\n const chromeVersion = getChromeVersion(ua);\n const webkitVersion = getWebKitVersion(ua);\n chromeVersionNum = chromeVersion > 0 ? chromeVersion : undefined;\n\n if (/Web0S|webOS|LG Browser|LGSTB/i.test(ua)) {\n name = 'LG WebOS';\n isSmartTV = true;\n \n let match = ua.match(/Web0S[/\\s]*([\\d.]+)/i) || ua.match(/webOS[/\\s]*([\\d.]+)/i);\n \n if (!match || !match[1]) {\n match = ua.match(/webOSTV[/\\s-]*([\\d.]+)/i) || ua.match(/webOS\\.TV[/\\s-]*([\\d.]+)/i);\n }\n \n if (match && match[1]) {\n version = match[1];\n const parts = version.split('.');\n majorVersion = parts[0] ? parseInt(parts[0], 10) : 0;\n webOSVersion = majorVersion;\n } else if (chromeVersion > 0) {\n if (chromeVersion >= 79) {\n webOSVersion = 6;\n version = '6.0';\n majorVersion = 6;\n } else if (chromeVersion >= 68) {\n webOSVersion = 5;\n version = '5.0';\n majorVersion = 5;\n } else if (chromeVersion >= 53) {\n webOSVersion = 4;\n version = '4.0';\n majorVersion = 4;\n } else if (chromeVersion >= 38) {\n webOSVersion = 3;\n version = '3.0';\n majorVersion = 3;\n } else {\n webOSVersion = 2;\n version = '2.0';\n majorVersion = 2;\n }\n } else {\n version = 'Unknown';\n webOSVersion = undefined;\n }\n\n if (webOSVersion !== undefined && webOSVersion >= 4) {\n supportsIMA = true;\n recommendedAdPlayer = 'ima';\n isLegacyTV = false;\n } else if (webOSVersion !== undefined && webOSVersion >= 3) {\n if (chromeVersion >= 53) {\n supportsIMA = true;\n recommendedAdPlayer = 'ima';\n isLegacyTV = false;\n } else {\n supportsIMA = false;\n recommendedAdPlayer = 'hls';\n isLegacyTV = true;\n }\n } else if (chromeVersion >= 53) {\n supportsIMA = true;\n recommendedAdPlayer = 'ima';\n isLegacyTV = false;\n } else {\n supportsIMA = false;\n recommendedAdPlayer = 'hls';\n isLegacyTV = true;\n }\n } else if (/Tizen/i.test(ua)) {\n name = 'Samsung Tizen';\n isSmartTV = true;\n const match = ua.match(/Tizen[/\\s]*([\\d.]+)/i);\n version = match && match[1] ? match[1] : 'Unknown';\n if (version !== 'Unknown') {\n const parts = version.split('.');\n majorVersion = parts[0] ? parseInt(parts[0], 10) : 0;\n tizenVersion = majorVersion;\n }\n \n if (tizenVersion !== undefined && tizenVersion >= 4) {\n supportsIMA = true;\n recommendedAdPlayer = 'ima';\n isLegacyTV = false;\n } else if (tizenVersion !== undefined && tizenVersion >= 3 && chromeVersion >= 47) {\n supportsIMA = true;\n recommendedAdPlayer = 'ima';\n isLegacyTV = false;\n } else if (chromeVersion >= 53) {\n supportsIMA = true;\n recommendedAdPlayer = 'ima';\n isLegacyTV = false;\n } else {\n supportsIMA = false;\n recommendedAdPlayer = 'hls';\n isLegacyTV = true;\n }\n } else if (/SMART-TV|SmartTV/i.test(ua)) {\n name = 'Smart TV';\n isSmartTV = true;\n if (chromeVersion >= 53) {\n supportsIMA = true;\n recommendedAdPlayer = 'ima';\n } else {\n supportsIMA = false;\n recommendedAdPlayer = 'hls';\n isLegacyTV = true;\n }\n } else if (/NetCast/i.test(ua)) {\n name = 'LG NetCast';\n isSmartTV = true;\n isLegacyTV = true;\n supportsIMA = false;\n recommendedAdPlayer = 'hls';\n } else if (/BRAVIA/i.test(ua)) {\n name = 'Sony BRAVIA';\n isSmartTV = true;\n if (chromeVersion >= 53) {\n supportsIMA = true;\n recommendedAdPlayer = 'ima';\n } else {\n supportsIMA = false;\n recommendedAdPlayer = 'hls';\n isLegacyTV = true;\n }\n } else {\n if (chromeVersion > 0) {\n name = 'Chrome';\n version = chromeVersion.toString();\n majorVersion = chromeVersion;\n\n if (chromeVersion < 50) {\n supportsIMA = false;\n supportsModernJS = false;\n recommendedAdPlayer = 'hls';\n }\n }\n\n if (webkitVersion > 0 && webkitVersion < 600) {\n supportsModernJS = false;\n if (chromeVersion < 50) {\n supportsIMA = false;\n recommendedAdPlayer = 'hls';\n }\n }\n }\n\n if (typeof Promise === 'undefined' ||\n typeof Map === 'undefined' ||\n typeof Set === 'undefined') {\n supportsModernJS = false;\n supportsIMA = false;\n recommendedAdPlayer = 'hls';\n }\n\n if (typeof URLSearchParams === 'undefined') {\n supportsModernJS = false;\n }\n\n return {\n name,\n version,\n majorVersion,\n isSmartTV,\n isLegacyTV,\n platform,\n supportsIMA,\n supportsModernJS,\n recommendedAdPlayer,\n webOSVersion,\n tizenVersion,\n chromeVersion: chromeVersionNum,\n };\n}\n\nexport function supportsGoogleIMA(): boolean {\n const browser = detectBrowser();\n\n if (browser.isLegacyTV) {\n return false;\n }\n\n if (typeof document === 'undefined' ||\n typeof document.createElement !== 'function') {\n return false;\n }\n\n try {\n const video = document.createElement('video');\n if (!video) {\n return false;\n }\n } catch (e) {\n return false;\n }\n\n if (typeof Promise === 'undefined') {\n return false;\n }\n\n return browser.supportsIMA;\n}\n\nexport function getRecommendedAdPlayer(): 'ima' | 'hls' {\n const browser = detectBrowser();\n return browser.recommendedAdPlayer;\n}\n\nexport function supportsModernJS(): boolean {\n try {\n return (\n typeof Promise !== 'undefined' &&\n typeof Map !== 'undefined' &&\n typeof Set !== 'undefined' &&\n typeof Array.from !== 'undefined' &&\n typeof Object.assign !== 'undefined' &&\n typeof Array.prototype.forEach !== 'undefined' &&\n typeof String.prototype.includes !== 'undefined'\n );\n } catch (e) {\n return false;\n }\n}\n\nexport function logBrowserInfo(debug: boolean = false): void {\n if (!debug) return;\n\n const browser = detectBrowser();\n const imaSupport = supportsGoogleIMA();\n\n console.log('[StormcloudVideoPlayer] Browser Compatibility Info:', {\n browser: `${browser.name} ${browser.version}`,\n platform: browser.platform,\n isSmartTV: browser.isSmartTV,\n isLegacyTV: browser.isLegacyTV,\n supportsIMA: imaSupport,\n supportsModernJS: browser.supportsModernJS,\n recommendedAdPlayer: browser.recommendedAdPlayer,\n ...(browser.webOSVersion !== undefined ? { webOSVersion: browser.webOSVersion } : {}),\n ...(browser.tizenVersion !== undefined ? { tizenVersion: browser.tizenVersion } : {}),\n ...(browser.chromeVersion !== undefined ? { chromeVersion: browser.chromeVersion } : {}),\n userAgent: navigator.userAgent,\n });\n}\n\nexport function getBrowserConfigOverrides(): {\n adPlayerType?: 'ima' | 'hls';\n allowNativeHls?: boolean;\n} {\n const browser = detectBrowser();\n const overrides: { adPlayerType?: 'ima' | 'hls'; allowNativeHls?: boolean } = {};\n\n if (browser.isLegacyTV || !browser.supportsIMA) {\n overrides.adPlayerType = 'hls';\n }\n\n if (browser.isSmartTV) {\n overrides.allowNativeHls = true;\n }\n\n return overrides;\n}\n\nexport function supportsFeature(feature: string): boolean {\n switch (feature) {\n case 'ima':\n return supportsGoogleIMA();\n case 'urlsearchparams':\n return typeof URLSearchParams !== 'undefined';\n case 'textencoder':\n return typeof TextEncoder !== 'undefined';\n case 'promises':\n return typeof Promise !== 'undefined';\n case 'fetch':\n return typeof fetch !== 'undefined';\n case 'crypto':\n return typeof crypto !== 'undefined' && typeof crypto.subtle !== 'undefined';\n default:\n return false;\n }\n}\n\n"]}
|
package/lib/utils/polyfills.cjs
CHANGED
|
@@ -79,20 +79,20 @@ var __defProp = Object.defineProperty;
|
|
|
79
79
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
80
80
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
81
81
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
82
|
-
var __export = function(target, all) {
|
|
82
|
+
var __export = function __export(target, all) {
|
|
83
83
|
for(var name in all)__defProp(target, name, {
|
|
84
84
|
get: all[name],
|
|
85
85
|
enumerable: true
|
|
86
86
|
});
|
|
87
87
|
};
|
|
88
|
-
var __copyProps = function(to, from, except, desc) {
|
|
88
|
+
var __copyProps = function __copyProps(to, from, except, desc) {
|
|
89
89
|
if (from && (typeof from === "undefined" ? "undefined" : _type_of(from)) === "object" || typeof from === "function") {
|
|
90
90
|
var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
|
|
91
91
|
try {
|
|
92
92
|
var _loop = function() {
|
|
93
93
|
var key = _step.value;
|
|
94
94
|
if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
|
|
95
|
-
get: function() {
|
|
95
|
+
get: function get() {
|
|
96
96
|
return from[key];
|
|
97
97
|
},
|
|
98
98
|
enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
|
|
@@ -116,7 +116,7 @@ var __copyProps = function(to, from, except, desc) {
|
|
|
116
116
|
}
|
|
117
117
|
return to;
|
|
118
118
|
};
|
|
119
|
-
var __toCommonJS = function(mod) {
|
|
119
|
+
var __toCommonJS = function __toCommonJS(mod) {
|
|
120
120
|
return __copyProps(__defProp({}, "__esModule", {
|
|
121
121
|
value: true
|
|
122
122
|
}), mod);
|
|
@@ -124,31 +124,31 @@ var __toCommonJS = function(mod) {
|
|
|
124
124
|
// src/utils/polyfills.ts
|
|
125
125
|
var polyfills_exports = {};
|
|
126
126
|
__export(polyfills_exports, {
|
|
127
|
-
initializePolyfills: function() {
|
|
127
|
+
initializePolyfills: function initializePolyfills1() {
|
|
128
128
|
return initializePolyfills;
|
|
129
129
|
},
|
|
130
|
-
polyfillArrayFrom: function() {
|
|
130
|
+
polyfillArrayFrom: function polyfillArrayFrom1() {
|
|
131
131
|
return polyfillArrayFrom;
|
|
132
132
|
},
|
|
133
|
-
polyfillObjectAssign: function() {
|
|
133
|
+
polyfillObjectAssign: function polyfillObjectAssign1() {
|
|
134
134
|
return polyfillObjectAssign;
|
|
135
135
|
},
|
|
136
|
-
polyfillPromiseFinally: function() {
|
|
136
|
+
polyfillPromiseFinally: function polyfillPromiseFinally1() {
|
|
137
137
|
return polyfillPromiseFinally;
|
|
138
138
|
},
|
|
139
|
-
polyfillStringEndsWith: function() {
|
|
139
|
+
polyfillStringEndsWith: function polyfillStringEndsWith1() {
|
|
140
140
|
return polyfillStringEndsWith;
|
|
141
141
|
},
|
|
142
|
-
polyfillStringIncludes: function() {
|
|
142
|
+
polyfillStringIncludes: function polyfillStringIncludes1() {
|
|
143
143
|
return polyfillStringIncludes;
|
|
144
144
|
},
|
|
145
|
-
polyfillStringStartsWith: function() {
|
|
145
|
+
polyfillStringStartsWith: function polyfillStringStartsWith1() {
|
|
146
146
|
return polyfillStringStartsWith;
|
|
147
147
|
},
|
|
148
|
-
polyfillTextEncoder: function() {
|
|
148
|
+
polyfillTextEncoder: function polyfillTextEncoder1() {
|
|
149
149
|
return polyfillTextEncoder;
|
|
150
150
|
},
|
|
151
|
-
polyfillURLSearchParams: function() {
|
|
151
|
+
polyfillURLSearchParams: function polyfillURLSearchParams1() {
|
|
152
152
|
return polyfillURLSearchParams;
|
|
153
153
|
}
|
|
154
154
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/home/ubuntu24/Dev/stormcloud-vp/lib/utils/polyfills.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"],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oBACIA,OAAAA,GAAYC,OAAOC,OAAAA,MAAAA,CAAc,EAAA,KAAA,MAAA,CAAA,EAAA,KAAA,KAAA,IAAA,MAAA,CAAA,EAAA,GAAA;kBACjCC,OAAAA,CAAAA,QAAAA,EAAAA,CAAmBF,OAAOG,wBAAwB
|
|
1
|
+
{"version":3,"sources":["/home/ubuntu24-new/Dev/stormcloud-vp/lib/utils/polyfills.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"],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oBACIA,OAAAA,GAAYC,OAAOC,OAAAA,MAAAA,CAAc,EAAA,KAAA,MAAA,CAAA,EAAA,KAAA,KAAA,IAAA,MAAA,CAAA,EAAA,GAAA;kBACjCC,OAAAA,CAAAA,QAAAA,EAAAA,CAAmBF,OAAOG,wBAAwB;;;;sCAClDC,OAAAA,IAAAA,SAAoBJ,OAAOK,mBAAmB;0BAC9CC,KAAAA,EAAAA,IAAAA,CAAAA,CAAeN,CAAAA,IAAAA,CAAAA,CAAOO,EAAAA,CAAAA,EAAAA,EAAAA,EAAS,CAACC,EAAAA,EAAAA,UAAc;wBAC9CC,WAAW,kBAACC,QAAQC;;;;kCACtB,IAAK,IAAIC,QAAQD,IACfZ,UAAUW,QAAQE,MAAM;sBAAEC,KAAKF,GAAG,CAACC,CAAAA,IAAK,EAAA,CAAA,GAAA,CAAA;oBAAEE,YAAY;;;;kCAAK,IAAA,IAAA,EAAA,KAAA;sBAC/D,IAAA,CAAA,MAAA,CAAA,GAAA,CAAA,MAAA;0BAAA,OAAA;uBAAA;kBACIC,cAAc,qBAACC,IAAIC,MAAMC,QAAQC;;;;uDACnC,IAAIF,IAAAA,IAAQ,CAAA,GAAA,IAAOA,qCAAP,SAAOA,KAAG,MAAM,YAAY,OAAOA,SAAS,YAAY;;kDAC7D,KAAA,CAAA,OAAA,CAAA,SAAA,QAAA,WAAA,2BAAA;;;0DAAA,IAAIG,MAAJ;0DACH,IAAI,CAACd,aAAae,IAAI,CAACL,IAAII,QAAQA,QAAQF,QACzCnB,UAAUiB,IAAII,KAAK;uDAAEP,KAAK,SAALA","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/polyfills.ts\nvar polyfills_exports = {};\n__export(polyfills_exports, {\n initializePolyfills: () => initializePolyfills,\n polyfillArrayFrom: () => polyfillArrayFrom,\n polyfillObjectAssign: () => polyfillObjectAssign,\n polyfillPromiseFinally: () => polyfillPromiseFinally,\n polyfillStringEndsWith: () => polyfillStringEndsWith,\n polyfillStringIncludes: () => polyfillStringIncludes,\n polyfillStringStartsWith: () => polyfillStringStartsWith,\n polyfillTextEncoder: () => polyfillTextEncoder,\n polyfillURLSearchParams: () => polyfillURLSearchParams\n});\nmodule.exports = __toCommonJS(polyfills_exports);\nfunction polyfillURLSearchParams() {\n if (typeof URLSearchParams !== \"undefined\") {\n return;\n }\n class URLSearchParamsPolyfill {\n constructor(init) {\n this.params = /* @__PURE__ */ new Map();\n if (typeof init === \"string\") {\n this.parseQueryString(init);\n } else if (init instanceof URLSearchParamsPolyfill) {\n init.forEach((value, key) => {\n this.append(key, value);\n });\n }\n }\n parseQueryString(query) {\n const cleanQuery = query.startsWith(\"?\") ? query.slice(1) : query;\n if (!cleanQuery) return;\n cleanQuery.split(\"&\").forEach((param) => {\n const [key, value] = param.split(\"=\");\n if (key) {\n const decodedKey = this.safeDecodeURIComponent(key);\n const decodedValue = value ? this.safeDecodeURIComponent(value) : \"\";\n this.append(decodedKey, decodedValue);\n }\n });\n }\n safeDecodeURIComponent(str) {\n try {\n return decodeURIComponent(str.replace(/\\+/g, \" \"));\n } catch (e) {\n return str;\n }\n }\n append(name, value) {\n const values = this.params.get(name) || [];\n values.push(String(value));\n this.params.set(name, values);\n }\n delete(name) {\n this.params.delete(name);\n }\n get(name) {\n const values = this.params.get(name);\n return values && values.length > 0 && values[0] !== void 0 ? values[0] : null;\n }\n getAll(name) {\n return this.params.get(name) || [];\n }\n has(name) {\n return this.params.has(name);\n }\n set(name, value) {\n this.params.set(name, [String(value)]);\n }\n forEach(callback) {\n this.params.forEach((values, key) => {\n values.forEach((value) => {\n callback(value, key, this);\n });\n });\n }\n toString() {\n const parts = [];\n this.params.forEach((values, key) => {\n values.forEach((value) => {\n parts.push(`${encodeURIComponent(key)}=${encodeURIComponent(value)}`);\n });\n });\n return parts.join(\"&\");\n }\n }\n window.URLSearchParams = URLSearchParamsPolyfill;\n}\nfunction polyfillTextEncoder() {\n if (typeof TextEncoder !== \"undefined\") {\n return;\n }\n class TextEncoderPolyfill {\n constructor() {\n this.encoding = \"utf-8\";\n }\n encode(str) {\n const utf8 = [];\n for (let i = 0; i < str.length; i++) {\n let charcode = str.charCodeAt(i);\n if (charcode < 128) {\n utf8.push(charcode);\n } else if (charcode < 2048) {\n utf8.push(192 | charcode >> 6, 128 | charcode & 63);\n } else if (charcode < 55296 || charcode >= 57344) {\n utf8.push(\n 224 | charcode >> 12,\n 128 | charcode >> 6 & 63,\n 128 | charcode & 63\n );\n } else {\n i++;\n charcode = 65536 + ((charcode & 1023) << 10 | str.charCodeAt(i) & 1023);\n utf8.push(\n 240 | charcode >> 18,\n 128 | charcode >> 12 & 63,\n 128 | charcode >> 6 & 63,\n 128 | charcode & 63\n );\n }\n }\n return new Uint8Array(utf8);\n }\n }\n window.TextEncoder = TextEncoderPolyfill;\n}\nfunction polyfillPromiseFinally() {\n if (typeof Promise !== \"undefined\" && !Promise.prototype.finally) {\n Promise.prototype.finally = function(callback) {\n const constructor = this.constructor;\n return this.then(\n (value) => constructor.resolve(callback()).then(() => value),\n (reason) => constructor.resolve(callback()).then(() => {\n throw reason;\n })\n );\n };\n }\n}\nfunction polyfillObjectAssign() {\n if (typeof Object.assign !== \"function\") {\n Object.assign = function(target, ...sources) {\n if (target == null) {\n throw new TypeError(\"Cannot convert undefined or null to object\");\n }\n const to = Object(target);\n for (let i = 0; i < sources.length; i++) {\n const nextSource = sources[i];\n if (nextSource != null) {\n for (const nextKey in nextSource) {\n if (Object.prototype.hasOwnProperty.call(nextSource, nextKey)) {\n to[nextKey] = nextSource[nextKey];\n }\n }\n }\n }\n return to;\n };\n }\n}\nfunction polyfillArrayFrom() {\n if (!Array.from) {\n Array.from = function(arrayLike, mapFn, thisArg) {\n const items = Object(arrayLike);\n if (arrayLike == null) {\n throw new TypeError(\"Array.from requires an array-like object\");\n }\n const len = items.length >>> 0;\n const result = new Array(len);\n for (let i = 0; i < len; i++) {\n if (mapFn) {\n result[i] = mapFn.call(thisArg, items[i], i);\n } else {\n result[i] = items[i];\n }\n }\n return result;\n };\n }\n}\nfunction polyfillStringStartsWith() {\n if (!String.prototype.startsWith) {\n String.prototype.startsWith = function(search, pos) {\n pos = !pos || pos < 0 ? 0 : +pos;\n return this.substring(pos, pos + search.length) === search;\n };\n }\n}\nfunction polyfillStringEndsWith() {\n if (!String.prototype.endsWith) {\n String.prototype.endsWith = function(search, length) {\n if (length === void 0 || length > this.length) {\n length = this.length;\n }\n return this.substring(length - search.length, length) === search;\n };\n }\n}\nfunction polyfillStringIncludes() {\n if (!String.prototype.includes) {\n String.prototype.includes = function(search, start) {\n if (typeof start !== \"number\") {\n start = 0;\n }\n if (start + search.length > this.length) {\n return false;\n }\n return this.indexOf(search, start) !== -1;\n };\n }\n}\nfunction initializePolyfills() {\n polyfillObjectAssign();\n polyfillArrayFrom();\n polyfillStringStartsWith();\n polyfillStringEndsWith();\n polyfillStringIncludes();\n polyfillURLSearchParams();\n polyfillTextEncoder();\n polyfillPromiseFinally();\n}\n// Annotate the CommonJS export names for ESM import in node:\n0 && (module.exports = {\n initializePolyfills,\n polyfillArrayFrom,\n polyfillObjectAssign,\n polyfillPromiseFinally,\n polyfillStringEndsWith,\n polyfillStringIncludes,\n polyfillStringStartsWith,\n polyfillTextEncoder,\n polyfillURLSearchParams\n});\n"]}
|
package/lib/utils/tracking.cjs
CHANGED
|
@@ -69,9 +69,17 @@ function _ts_generator(thisArg, body) {
|
|
|
69
69
|
},
|
|
70
70
|
trys: [],
|
|
71
71
|
ops: []
|
|
72
|
-
}, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
|
|
73
|
-
return
|
|
74
|
-
|
|
72
|
+
}, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype), d = Object.defineProperty;
|
|
73
|
+
return d(g, "next", {
|
|
74
|
+
value: verb(0)
|
|
75
|
+
}), d(g, "throw", {
|
|
76
|
+
value: verb(1)
|
|
77
|
+
}), d(g, "return", {
|
|
78
|
+
value: verb(2)
|
|
79
|
+
}), typeof Symbol === "function" && d(g, Symbol.iterator, {
|
|
80
|
+
value: function() {
|
|
81
|
+
return this;
|
|
82
|
+
}
|
|
75
83
|
}), g;
|
|
76
84
|
function verb(n) {
|
|
77
85
|
return function(v) {
|
|
@@ -155,20 +163,20 @@ var __defProp = Object.defineProperty;
|
|
|
155
163
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
156
164
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
157
165
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
158
|
-
var __export = function(target, all) {
|
|
166
|
+
var __export = function __export(target, all) {
|
|
159
167
|
for(var name in all)__defProp(target, name, {
|
|
160
168
|
get: all[name],
|
|
161
169
|
enumerable: true
|
|
162
170
|
});
|
|
163
171
|
};
|
|
164
|
-
var __copyProps = function(to, from, except, desc) {
|
|
172
|
+
var __copyProps = function __copyProps(to, from, except, desc) {
|
|
165
173
|
if (from && (typeof from === "undefined" ? "undefined" : _type_of(from)) === "object" || typeof from === "function") {
|
|
166
174
|
var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
|
|
167
175
|
try {
|
|
168
176
|
var _loop = function() {
|
|
169
177
|
var key = _step.value;
|
|
170
178
|
if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
|
|
171
|
-
get: function() {
|
|
179
|
+
get: function get() {
|
|
172
180
|
return from[key];
|
|
173
181
|
},
|
|
174
182
|
enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
|
|
@@ -192,7 +200,7 @@ var __copyProps = function(to, from, except, desc) {
|
|
|
192
200
|
}
|
|
193
201
|
return to;
|
|
194
202
|
};
|
|
195
|
-
var __toCommonJS = function(mod) {
|
|
203
|
+
var __toCommonJS = function __toCommonJS(mod) {
|
|
196
204
|
return __copyProps(__defProp({}, "__esModule", {
|
|
197
205
|
value: true
|
|
198
206
|
}), mod);
|
|
@@ -200,16 +208,16 @@ var __toCommonJS = function(mod) {
|
|
|
200
208
|
// src/utils/tracking.ts
|
|
201
209
|
var tracking_exports = {};
|
|
202
210
|
__export(tracking_exports, {
|
|
203
|
-
getBrowserID: function() {
|
|
211
|
+
getBrowserID: function getBrowserID1() {
|
|
204
212
|
return getBrowserID;
|
|
205
213
|
},
|
|
206
|
-
getClientInfo: function() {
|
|
214
|
+
getClientInfo: function getClientInfo1() {
|
|
207
215
|
return getClientInfo;
|
|
208
216
|
},
|
|
209
|
-
sendHeartbeat: function() {
|
|
217
|
+
sendHeartbeat: function sendHeartbeat1() {
|
|
210
218
|
return sendHeartbeat;
|
|
211
219
|
},
|
|
212
|
-
sendInitialTracking: function() {
|
|
220
|
+
sendInitialTracking: function sendInitialTracking1() {
|
|
213
221
|
return sendInitialTracking;
|
|
214
222
|
}
|
|
215
223
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/home/ubuntu24/Dev/stormcloud-vp/lib/utils/tracking.cjs"],"names":["__copyProps"],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qKASIA,GAAc","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 getBrowserID: () => getBrowserID,\n getClientInfo: () => getClientInfo,\n sendHeartbeat: () => sendHeartbeat,\n sendInitialTracking: () => sendInitialTracking\n});\nmodule.exports = __toCommonJS(tracking_exports);\nvar cachedBrowserId = null;\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 getBrowserID(clientInfo) {\n if (cachedBrowserId) {\n return cachedBrowserId;\n }\n const fingerprintString = JSON.stringify(clientInfo);\n if (typeof crypto !== \"undefined\" && crypto.subtle && 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(fingerprintString);\n } else {\n const utf8 = unescape(encodeURIComponent(fingerprintString));\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 const hashArray = Array.from(new Uint8Array(hashBuffer));\n const hashHex = hashArray.map((b) => b.toString(16).padStart(2, \"0\")).join(\"\");\n cachedBrowserId = hashHex;\n return hashHex;\n } catch (error) {\n console.warn(\n \"[StormcloudVideoPlayer] crypto.subtle.digest not supported, using fallback hash\"\n );\n }\n }\n let hash = 0;\n for (let i = 0; i < fingerprintString.length; i++) {\n const char = fingerprintString.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 cachedBrowserId = (fallbackHash + timestamp + random).padEnd(64, \"0\");\n return cachedBrowserId;\n}\nasync function sendInitialTracking(licenseKey) {\n try {\n const clientInfo = getClientInfo();\n const browserId = await getBrowserID(clientInfo);\n const trackingData = {\n browserId,\n ...clientInfo\n };\n const headers = {\n \"Content-Type\": \"application/json\"\n };\n if (licenseKey) {\n headers[\"Authorization\"] = `Bearer ${licenseKey}`;\n }\n const response = await fetch(\n \"https://adstorm.co/api-adstorm-dev/adstorm/player-tracking/track\",\n {\n method: \"POST\",\n headers,\n body: JSON.stringify(trackingData)\n }\n );\n if (!response.ok) {\n throw new Error(`HTTP error! status: ${response.status}`);\n }\n await response.json();\n } catch (error) {\n console.error(\n \"[StormcloudVideoPlayer] Error sending initial tracking data:\",\n error\n );\n }\n}\nasync function sendHeartbeat(licenseKey) {\n try {\n const clientInfo = getClientInfo();\n const browserId = await getBrowserID(clientInfo);\n const heartbeatData = {\n browserId,\n timestamp: (/* @__PURE__ */ new Date()).toISOString()\n };\n const headers = {\n \"Content-Type\": \"application/json\"\n };\n if (licenseKey) {\n headers[\"Authorization\"] = `Bearer ${licenseKey}`;\n }\n const response = await fetch(\n \"https://adstorm.co/api-adstorm-dev/adstorm/player-tracking/heartbeat\",\n {\n method: \"POST\",\n headers,\n body: JSON.stringify(heartbeatData)\n }\n );\n if (!response.ok) {\n throw new Error(`HTTP error! status: ${response.status}`);\n }\n await response.json();\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 getBrowserID,\n getClientInfo,\n sendHeartbeat,\n sendInitialTracking\n});\n"]}
|
|
1
|
+
{"version":3,"sources":["/home/ubuntu24-new/Dev/stormcloud-vp/lib/utils/tracking.cjs"],"names":["__getOwnPropNames","Object"],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oJAGIA,SAAoBC","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 getBrowserID: () => getBrowserID,\n getClientInfo: () => getClientInfo,\n sendHeartbeat: () => sendHeartbeat,\n sendInitialTracking: () => sendInitialTracking\n});\nmodule.exports = __toCommonJS(tracking_exports);\nvar cachedBrowserId = null;\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 getBrowserID(clientInfo) {\n if (cachedBrowserId) {\n return cachedBrowserId;\n }\n const fingerprintString = JSON.stringify(clientInfo);\n if (typeof crypto !== \"undefined\" && crypto.subtle && 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(fingerprintString);\n } else {\n const utf8 = unescape(encodeURIComponent(fingerprintString));\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 const hashArray = Array.from(new Uint8Array(hashBuffer));\n const hashHex = hashArray.map((b) => b.toString(16).padStart(2, \"0\")).join(\"\");\n cachedBrowserId = hashHex;\n return hashHex;\n } catch (error) {\n console.warn(\n \"[StormcloudVideoPlayer] crypto.subtle.digest not supported, using fallback hash\"\n );\n }\n }\n let hash = 0;\n for (let i = 0; i < fingerprintString.length; i++) {\n const char = fingerprintString.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 cachedBrowserId = (fallbackHash + timestamp + random).padEnd(64, \"0\");\n return cachedBrowserId;\n}\nasync function sendInitialTracking(licenseKey) {\n try {\n const clientInfo = getClientInfo();\n const browserId = await getBrowserID(clientInfo);\n const trackingData = {\n browserId,\n ...clientInfo\n };\n const headers = {\n \"Content-Type\": \"application/json\"\n };\n if (licenseKey) {\n headers[\"Authorization\"] = `Bearer ${licenseKey}`;\n }\n const response = await fetch(\n \"https://adstorm.co/api-adstorm-dev/adstorm/player-tracking/track\",\n {\n method: \"POST\",\n headers,\n body: JSON.stringify(trackingData)\n }\n );\n if (!response.ok) {\n throw new Error(`HTTP error! status: ${response.status}`);\n }\n await response.json();\n } catch (error) {\n console.error(\n \"[StormcloudVideoPlayer] Error sending initial tracking data:\",\n error\n );\n }\n}\nasync function sendHeartbeat(licenseKey) {\n try {\n const clientInfo = getClientInfo();\n const browserId = await getBrowserID(clientInfo);\n const heartbeatData = {\n browserId,\n timestamp: (/* @__PURE__ */ new Date()).toISOString()\n };\n const headers = {\n \"Content-Type\": \"application/json\"\n };\n if (licenseKey) {\n headers[\"Authorization\"] = `Bearer ${licenseKey}`;\n }\n const response = await fetch(\n \"https://adstorm.co/api-adstorm-dev/adstorm/player-tracking/heartbeat\",\n {\n method: \"POST\",\n headers,\n body: JSON.stringify(heartbeatData)\n }\n );\n if (!response.ok) {\n throw new Error(`HTTP error! status: ${response.status}`);\n }\n await response.json();\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 getBrowserID,\n getClientInfo,\n sendHeartbeat,\n sendInitialTracking\n});\n"]}
|
package/lib/utils/tracking.d.cts
CHANGED