stormcloud-video-player 0.7.50 → 0.8.1
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/README.md +269 -228
- package/dist/stormcloud-vp.min.js +1 -1
- package/lib/index.cjs +5197 -6747
- package/lib/index.cjs.map +1 -1
- package/lib/index.d.cts +196 -195
- package/lib/index.d.ts +196 -195
- package/lib/index.js +5321 -6863
- package/lib/index.js.map +1 -1
- package/lib/player/StormcloudVideoPlayer.cjs +4802 -3170
- package/lib/player/StormcloudVideoPlayer.cjs.map +1 -1
- package/lib/player/StormcloudVideoPlayer.d.cts +113 -70
- package/lib/players/HlsPlayer.cjs +4810 -3179
- package/lib/players/HlsPlayer.cjs.map +1 -1
- package/lib/players/HlsPlayer.d.cts +1 -1
- package/lib/players/index.cjs +4877 -3246
- package/lib/players/index.cjs.map +1 -1
- package/lib/sdk/hlsAdPlayer.cjs +1021 -0
- package/lib/sdk/hlsAdPlayer.cjs.map +1 -0
- package/lib/sdk/hlsAdPlayer.d.cts +10 -0
- package/lib/sdk/pal.cjs +358 -0
- package/lib/sdk/pal.cjs.map +1 -0
- package/lib/sdk/pal.d.cts +28 -0
- package/lib/{types-CIHDHY7A.d.cts → types-DDwAfBLt.d.cts} +11 -10
- package/lib/ui/StormcloudVideoPlayer.cjs +5070 -6609
- package/lib/ui/StormcloudVideoPlayer.cjs.map +1 -1
- package/lib/ui/StormcloudVideoPlayer.d.cts +1 -14
- package/lib/utils/browserCompat.cjs +10 -114
- package/lib/utils/browserCompat.cjs.map +1 -1
- package/lib/utils/browserCompat.d.cts +3 -7
- package/lib/utils/tracking.cjs +179 -150
- package/lib/utils/tracking.cjs.map +1 -1
- package/lib/utils/tracking.d.cts +11 -6
- package/package.json +1 -2
- package/lib/sdk/adstormPlayer.cjs +0 -1567
- package/lib/sdk/adstormPlayer.cjs.map +0 -1
- package/lib/sdk/adstormPlayer.d.cts +0 -23
- package/lib/sdk/vastParser.cjs +0 -517
- package/lib/sdk/vastParser.cjs.map +0 -1
- package/lib/sdk/vastParser.d.cts +0 -45
- package/lib/ui/OverlayRenderer.cjs +0 -2376
- package/lib/ui/OverlayRenderer.cjs.map +0 -1
- package/lib/ui/OverlayRenderer.d.cts +0 -17
- package/lib/utils/adcision.cjs +0 -282
- package/lib/utils/adcision.cjs.map +0 -1
- package/lib/utils/adcision.d.cts +0 -31
- package/lib/utils/overlays.cjs +0 -354
- package/lib/utils/overlays.cjs.map +0 -1
- package/lib/utils/overlays.d.cts +0 -70
|
@@ -1,25 +1,12 @@
|
|
|
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-DDwAfBLt.cjs';
|
|
4
4
|
|
|
5
5
|
type StormcloudVideoPlayerProps = Omit<StormcloudVideoPlayerConfig, "videoElement"> & React.VideoHTMLAttributes<HTMLVideoElement> & {
|
|
6
6
|
onReady?: (player: StormcloudVideoPlayer) => void;
|
|
7
7
|
wrapperClassName?: string;
|
|
8
8
|
wrapperStyle?: React.CSSProperties;
|
|
9
9
|
licenseKey?: string;
|
|
10
|
-
swirlProjectId?: number;
|
|
11
|
-
swirlShowcaseDemo?: boolean;
|
|
12
|
-
swirlOverlayApiBaseUrl?: string;
|
|
13
|
-
swirlOverlayCoordinateSpace?: {
|
|
14
|
-
width: number;
|
|
15
|
-
height: number;
|
|
16
|
-
} | null;
|
|
17
|
-
adcisionChannelId?: number;
|
|
18
|
-
disableOverlays?: boolean;
|
|
19
|
-
showAdsControl?: boolean;
|
|
20
|
-
showOverlaysControl?: boolean;
|
|
21
|
-
showAiContextControl?: boolean;
|
|
22
|
-
showDebugControl?: boolean;
|
|
23
10
|
};
|
|
24
11
|
declare const StormcloudVideoPlayerComponent: React.FC<StormcloudVideoPlayerProps>;
|
|
25
12
|
|
|
@@ -110,18 +110,12 @@ __export(browserCompat_exports, {
|
|
|
110
110
|
getBrowserConfigOverrides: function getBrowserConfigOverrides1() {
|
|
111
111
|
return getBrowserConfigOverrides;
|
|
112
112
|
},
|
|
113
|
-
getRecommendedAdPlayer: function getRecommendedAdPlayer1() {
|
|
114
|
-
return getRecommendedAdPlayer;
|
|
115
|
-
},
|
|
116
113
|
logBrowserInfo: function logBrowserInfo1() {
|
|
117
114
|
return logBrowserInfo;
|
|
118
115
|
},
|
|
119
116
|
supportsFeature: function supportsFeature1() {
|
|
120
117
|
return supportsFeature;
|
|
121
118
|
},
|
|
122
|
-
supportsGoogleIMA: function supportsGoogleIMA1() {
|
|
123
|
-
return supportsGoogleIMA;
|
|
124
|
-
},
|
|
125
119
|
supportsModernJS: function supportsModernJS1() {
|
|
126
120
|
return supportsModernJS;
|
|
127
121
|
}
|
|
@@ -163,9 +157,7 @@ function detectBrowser() {
|
|
|
163
157
|
var majorVersion = 0;
|
|
164
158
|
var isSmartTV = false;
|
|
165
159
|
var isLegacyTV = false;
|
|
166
|
-
var supportsIMA = true;
|
|
167
160
|
var supportsModernJS2 = true;
|
|
168
|
-
var recommendedAdPlayer = "ima";
|
|
169
161
|
var webOSVersion;
|
|
170
162
|
var tizenVersion;
|
|
171
163
|
var chromeVersionNum;
|
|
@@ -210,29 +202,7 @@ function detectBrowser() {
|
|
|
210
202
|
version = "Unknown";
|
|
211
203
|
webOSVersion = void 0;
|
|
212
204
|
}
|
|
213
|
-
|
|
214
|
-
supportsIMA = true;
|
|
215
|
-
recommendedAdPlayer = "ima";
|
|
216
|
-
isLegacyTV = false;
|
|
217
|
-
} else if (webOSVersion !== void 0 && webOSVersion >= 3) {
|
|
218
|
-
if (chromeVersion >= 53) {
|
|
219
|
-
supportsIMA = true;
|
|
220
|
-
recommendedAdPlayer = "ima";
|
|
221
|
-
isLegacyTV = false;
|
|
222
|
-
} else {
|
|
223
|
-
supportsIMA = false;
|
|
224
|
-
recommendedAdPlayer = "hls";
|
|
225
|
-
isLegacyTV = true;
|
|
226
|
-
}
|
|
227
|
-
} else if (chromeVersion >= 53) {
|
|
228
|
-
supportsIMA = true;
|
|
229
|
-
recommendedAdPlayer = "ima";
|
|
230
|
-
isLegacyTV = false;
|
|
231
|
-
} else {
|
|
232
|
-
supportsIMA = false;
|
|
233
|
-
recommendedAdPlayer = "hls";
|
|
234
|
-
isLegacyTV = true;
|
|
235
|
-
}
|
|
205
|
+
isLegacyTV = webOSVersion !== void 0 && webOSVersion < 3;
|
|
236
206
|
} else if (/Tizen/i.test(ua)) {
|
|
237
207
|
name = "Samsung Tizen";
|
|
238
208
|
isSmartTV = true;
|
|
@@ -243,74 +213,34 @@ function detectBrowser() {
|
|
|
243
213
|
majorVersion = parts1[0] ? parseInt(parts1[0], 10) : 0;
|
|
244
214
|
tizenVersion = majorVersion;
|
|
245
215
|
}
|
|
246
|
-
|
|
247
|
-
supportsIMA = true;
|
|
248
|
-
recommendedAdPlayer = "ima";
|
|
249
|
-
isLegacyTV = false;
|
|
250
|
-
} else if (tizenVersion !== void 0 && tizenVersion >= 3 && chromeVersion >= 47) {
|
|
251
|
-
supportsIMA = true;
|
|
252
|
-
recommendedAdPlayer = "ima";
|
|
253
|
-
isLegacyTV = false;
|
|
254
|
-
} else if (chromeVersion >= 53) {
|
|
255
|
-
supportsIMA = true;
|
|
256
|
-
recommendedAdPlayer = "ima";
|
|
257
|
-
isLegacyTV = false;
|
|
258
|
-
} else {
|
|
259
|
-
supportsIMA = false;
|
|
260
|
-
recommendedAdPlayer = "hls";
|
|
261
|
-
isLegacyTV = true;
|
|
262
|
-
}
|
|
216
|
+
isLegacyTV = tizenVersion !== void 0 && tizenVersion < 3;
|
|
263
217
|
} else if (/SMART-TV|SmartTV/i.test(ua)) {
|
|
264
218
|
name = "Smart TV";
|
|
265
219
|
isSmartTV = true;
|
|
266
|
-
|
|
267
|
-
supportsIMA = true;
|
|
268
|
-
recommendedAdPlayer = "ima";
|
|
269
|
-
} else {
|
|
270
|
-
supportsIMA = false;
|
|
271
|
-
recommendedAdPlayer = "hls";
|
|
272
|
-
isLegacyTV = true;
|
|
273
|
-
}
|
|
220
|
+
isLegacyTV = chromeVersion > 0 && chromeVersion < 53;
|
|
274
221
|
} else if (/NetCast/i.test(ua)) {
|
|
275
222
|
name = "LG NetCast";
|
|
276
223
|
isSmartTV = true;
|
|
277
224
|
isLegacyTV = true;
|
|
278
|
-
supportsIMA = false;
|
|
279
|
-
recommendedAdPlayer = "hls";
|
|
280
225
|
} else if (/BRAVIA/i.test(ua)) {
|
|
281
226
|
name = "Sony BRAVIA";
|
|
282
227
|
isSmartTV = true;
|
|
283
|
-
|
|
284
|
-
supportsIMA = true;
|
|
285
|
-
recommendedAdPlayer = "ima";
|
|
286
|
-
} else {
|
|
287
|
-
supportsIMA = false;
|
|
288
|
-
recommendedAdPlayer = "hls";
|
|
289
|
-
isLegacyTV = true;
|
|
290
|
-
}
|
|
228
|
+
isLegacyTV = chromeVersion > 0 && chromeVersion < 53;
|
|
291
229
|
} else {
|
|
292
230
|
if (chromeVersion > 0) {
|
|
293
231
|
name = "Chrome";
|
|
294
232
|
version = chromeVersion.toString();
|
|
295
233
|
majorVersion = chromeVersion;
|
|
296
234
|
if (chromeVersion < 50) {
|
|
297
|
-
supportsIMA = false;
|
|
298
235
|
supportsModernJS2 = false;
|
|
299
|
-
recommendedAdPlayer = "hls";
|
|
300
236
|
}
|
|
301
237
|
}
|
|
302
238
|
if (webkitVersion > 0 && webkitVersion < 600) {
|
|
303
239
|
supportsModernJS2 = false;
|
|
304
|
-
if (chromeVersion < 50) {
|
|
305
|
-
supportsIMA = false;
|
|
306
|
-
recommendedAdPlayer = "hls";
|
|
307
|
-
}
|
|
308
240
|
}
|
|
309
241
|
}
|
|
310
242
|
if (typeof Promise === "undefined" || typeof Map === "undefined" || typeof Set === "undefined") {
|
|
311
243
|
supportsModernJS2 = false;
|
|
312
|
-
supportsIMA = false;
|
|
313
|
-
recommendedAdPlayer = "hls";
|
|
314
244
|
}
|
|
315
245
|
if (typeof URLSearchParams === "undefined") {
|
|
316
246
|
supportsModernJS2 = false;
|
|
@@ -322,38 +252,19 @@ function detectBrowser() {
|
|
|
322
252
|
isSmartTV: isSmartTV,
|
|
323
253
|
isLegacyTV: isLegacyTV,
|
|
324
254
|
platform: platform,
|
|
325
|
-
supportsIMA: supportsIMA,
|
|
326
255
|
supportsModernJS: supportsModernJS2,
|
|
327
|
-
recommendedAdPlayer: recommendedAdPlayer,
|
|
328
256
|
webOSVersion: webOSVersion,
|
|
329
257
|
tizenVersion: tizenVersion,
|
|
330
258
|
chromeVersion: chromeVersionNum
|
|
331
259
|
};
|
|
332
260
|
}
|
|
333
|
-
function
|
|
261
|
+
function getBrowserConfigOverrides() {
|
|
334
262
|
var browser = detectBrowser();
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
if (typeof document === "undefined" || typeof document.createElement !== "function") {
|
|
339
|
-
return false;
|
|
340
|
-
}
|
|
341
|
-
try {
|
|
342
|
-
var video = document.createElement("video");
|
|
343
|
-
if (!video) {
|
|
344
|
-
return false;
|
|
345
|
-
}
|
|
346
|
-
} catch (e) {
|
|
347
|
-
return false;
|
|
348
|
-
}
|
|
349
|
-
if (typeof Promise === "undefined") {
|
|
350
|
-
return false;
|
|
263
|
+
var overrides = {};
|
|
264
|
+
if (browser.isSmartTV) {
|
|
265
|
+
overrides.allowNativeHls = true;
|
|
351
266
|
}
|
|
352
|
-
return
|
|
353
|
-
}
|
|
354
|
-
function getRecommendedAdPlayer() {
|
|
355
|
-
var browser = detectBrowser();
|
|
356
|
-
return browser.recommendedAdPlayer;
|
|
267
|
+
return overrides;
|
|
357
268
|
}
|
|
358
269
|
function supportsModernJS() {
|
|
359
270
|
try {
|
|
@@ -366,15 +277,12 @@ function logBrowserInfo() {
|
|
|
366
277
|
var debug = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : false;
|
|
367
278
|
if (!debug) return;
|
|
368
279
|
var browser = detectBrowser();
|
|
369
|
-
var imaSupport = supportsGoogleIMA();
|
|
370
280
|
console.log("[StormcloudVideoPlayer] Browser Compatibility Info:", _object_spread_props(_object_spread({
|
|
371
281
|
browser: "".concat(browser.name, " ").concat(browser.version),
|
|
372
282
|
platform: browser.platform,
|
|
373
283
|
isSmartTV: browser.isSmartTV,
|
|
374
284
|
isLegacyTV: browser.isLegacyTV,
|
|
375
|
-
|
|
376
|
-
supportsModernJS: browser.supportsModernJS,
|
|
377
|
-
recommendedAdPlayer: browser.recommendedAdPlayer
|
|
285
|
+
supportsModernJS: browser.supportsModernJS
|
|
378
286
|
}, browser.webOSVersion !== void 0 ? {
|
|
379
287
|
webOSVersion: browser.webOSVersion
|
|
380
288
|
} : {}, browser.tizenVersion !== void 0 ? {
|
|
@@ -385,18 +293,8 @@ function logBrowserInfo() {
|
|
|
385
293
|
userAgent: navigator.userAgent
|
|
386
294
|
}));
|
|
387
295
|
}
|
|
388
|
-
function getBrowserConfigOverrides() {
|
|
389
|
-
var browser = detectBrowser();
|
|
390
|
-
var overrides = {};
|
|
391
|
-
if (browser.isSmartTV) {
|
|
392
|
-
overrides.allowNativeHls = true;
|
|
393
|
-
}
|
|
394
|
-
return overrides;
|
|
395
|
-
}
|
|
396
296
|
function supportsFeature(feature) {
|
|
397
297
|
switch(feature){
|
|
398
|
-
case "ima":
|
|
399
|
-
return supportsGoogleIMA();
|
|
400
298
|
case "urlsearchparams":
|
|
401
299
|
return typeof URLSearchParams !== "undefined";
|
|
402
300
|
case "textencoder":
|
|
@@ -415,10 +313,8 @@ function supportsFeature(feature) {
|
|
|
415
313
|
0 && (module.exports = {
|
|
416
314
|
detectBrowser: detectBrowser,
|
|
417
315
|
getBrowserConfigOverrides: getBrowserConfigOverrides,
|
|
418
|
-
getRecommendedAdPlayer: getRecommendedAdPlayer,
|
|
419
316
|
logBrowserInfo: logBrowserInfo,
|
|
420
317
|
supportsFeature: supportsFeature,
|
|
421
|
-
supportsGoogleIMA: supportsGoogleIMA,
|
|
422
318
|
supportsModernJS: supportsModernJS
|
|
423
319
|
});
|
|
424
320
|
//# sourceMappingURL=browserCompat.cjs.map
|
|
@@ -1 +1 @@
|
|
|
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","toString","Promise","Map","Set","URLSearchParams"],"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.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 allowNativeHls?: boolean;\n} {\n const browser = detectBrowser();\n const overrides: { allowNativeHls?: boolean } = {};\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","logBrowserInfo","supportsFeature","supportsModernJS","module","exports","getChromeVersion","ua","match","parseInt","getWebKitVersion","getPlatform","navigator","userAgentData","platform","userAgent","test","version","majorVersion","isSmartTV","isLegacyTV","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 logBrowserInfo: () => logBrowserInfo,\n supportsFeature: () => supportsFeature,\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 supportsModernJS2 = true;\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 isLegacyTV = webOSVersion !== void 0 && webOSVersion < 3;\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 isLegacyTV = tizenVersion !== void 0 && tizenVersion < 3;\n } else if (/SMART-TV|SmartTV/i.test(ua)) {\n name = \"Smart TV\";\n isSmartTV = true;\n isLegacyTV = chromeVersion > 0 && chromeVersion < 53;\n } else if (/NetCast/i.test(ua)) {\n name = \"LG NetCast\";\n isSmartTV = true;\n isLegacyTV = true;\n } else if (/BRAVIA/i.test(ua)) {\n name = \"Sony BRAVIA\";\n isSmartTV = true;\n isLegacyTV = chromeVersion > 0 && chromeVersion < 53;\n } else {\n if (chromeVersion > 0) {\n name = \"Chrome\";\n version = chromeVersion.toString();\n majorVersion = chromeVersion;\n if (chromeVersion < 50) {\n supportsModernJS2 = false;\n }\n }\n if (webkitVersion > 0 && webkitVersion < 600) {\n supportsModernJS2 = false;\n }\n }\n if (typeof Promise === \"undefined\" || typeof Map === \"undefined\" || typeof Set === \"undefined\") {\n supportsModernJS2 = false;\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 supportsModernJS: supportsModernJS2,\n webOSVersion,\n tizenVersion,\n chromeVersion: chromeVersionNum\n };\n}\nfunction getBrowserConfigOverrides() {\n const browser = detectBrowser();\n const overrides = {};\n if (browser.isSmartTV) {\n overrides.allowNativeHls = true;\n }\n return overrides;\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 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 supportsModernJS: browser.supportsModernJS,\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 supportsFeature(feature) {\n switch (feature) {\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 logBrowserInfo,\n supportsFeature,\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 supportsModernJS: boolean;\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 supportsModernJS = true;\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 isLegacyTV = webOSVersion !== undefined && webOSVersion < 3;\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 isLegacyTV = tizenVersion !== undefined && tizenVersion < 3;\n } else if (/SMART-TV|SmartTV/i.test(ua)) {\n name = 'Smart TV';\n isSmartTV = true;\n isLegacyTV = chromeVersion > 0 && chromeVersion < 53;\n } else if (/NetCast/i.test(ua)) {\n name = 'LG NetCast';\n isSmartTV = true;\n isLegacyTV = true;\n } else if (/BRAVIA/i.test(ua)) {\n name = 'Sony BRAVIA';\n isSmartTV = true;\n isLegacyTV = chromeVersion > 0 && chromeVersion < 53;\n } else {\n if (chromeVersion > 0) {\n name = 'Chrome';\n version = chromeVersion.toString();\n majorVersion = chromeVersion;\n\n if (chromeVersion < 50) {\n supportsModernJS = false;\n }\n }\n\n if (webkitVersion > 0 && webkitVersion < 600) {\n supportsModernJS = false;\n }\n }\n\n if (typeof Promise === 'undefined' ||\n typeof Map === 'undefined' ||\n typeof Set === 'undefined') {\n supportsModernJS = false;\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 supportsModernJS,\n webOSVersion,\n tizenVersion,\n chromeVersion: chromeVersionNum,\n };\n}\n\nexport function getBrowserConfigOverrides(): {\n allowNativeHls?: boolean;\n} {\n const browser = detectBrowser();\n const overrides: { allowNativeHls?: boolean } = {};\n\n if (browser.isSmartTV) {\n overrides.allowNativeHls = true;\n }\n\n return overrides;\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\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 supportsModernJS: browser.supportsModernJS,\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 supportsFeature(feature: string): boolean {\n switch (feature) {\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"]}
|
|
@@ -18,21 +18,17 @@ interface BrowserInfo {
|
|
|
18
18
|
isSmartTV: boolean;
|
|
19
19
|
isLegacyTV: boolean;
|
|
20
20
|
platform: string;
|
|
21
|
-
supportsIMA: boolean;
|
|
22
21
|
supportsModernJS: boolean;
|
|
23
|
-
recommendedAdPlayer: 'ima' | 'hls';
|
|
24
22
|
webOSVersion?: number | undefined;
|
|
25
23
|
tizenVersion?: number | undefined;
|
|
26
24
|
chromeVersion?: number | undefined;
|
|
27
25
|
}
|
|
28
26
|
declare function detectBrowser(): BrowserInfo;
|
|
29
|
-
declare function supportsGoogleIMA(): boolean;
|
|
30
|
-
declare function getRecommendedAdPlayer(): 'ima' | 'hls';
|
|
31
|
-
declare function supportsModernJS(): boolean;
|
|
32
|
-
declare function logBrowserInfo(debug?: boolean): void;
|
|
33
27
|
declare function getBrowserConfigOverrides(): {
|
|
34
28
|
allowNativeHls?: boolean;
|
|
35
29
|
};
|
|
30
|
+
declare function supportsModernJS(): boolean;
|
|
31
|
+
declare function logBrowserInfo(debug?: boolean): void;
|
|
36
32
|
declare function supportsFeature(feature: string): boolean;
|
|
37
33
|
|
|
38
|
-
export { type BrowserInfo, detectBrowser, getBrowserConfigOverrides,
|
|
34
|
+
export { type BrowserInfo, detectBrowser, getBrowserConfigOverrides, logBrowserInfo, supportsFeature, supportsModernJS };
|