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.
Files changed (48) hide show
  1. package/README.md +269 -228
  2. package/dist/stormcloud-vp.min.js +1 -1
  3. package/lib/index.cjs +5197 -6747
  4. package/lib/index.cjs.map +1 -1
  5. package/lib/index.d.cts +196 -195
  6. package/lib/index.d.ts +196 -195
  7. package/lib/index.js +5321 -6863
  8. package/lib/index.js.map +1 -1
  9. package/lib/player/StormcloudVideoPlayer.cjs +4802 -3170
  10. package/lib/player/StormcloudVideoPlayer.cjs.map +1 -1
  11. package/lib/player/StormcloudVideoPlayer.d.cts +113 -70
  12. package/lib/players/HlsPlayer.cjs +4810 -3179
  13. package/lib/players/HlsPlayer.cjs.map +1 -1
  14. package/lib/players/HlsPlayer.d.cts +1 -1
  15. package/lib/players/index.cjs +4877 -3246
  16. package/lib/players/index.cjs.map +1 -1
  17. package/lib/sdk/hlsAdPlayer.cjs +1021 -0
  18. package/lib/sdk/hlsAdPlayer.cjs.map +1 -0
  19. package/lib/sdk/hlsAdPlayer.d.cts +10 -0
  20. package/lib/sdk/pal.cjs +358 -0
  21. package/lib/sdk/pal.cjs.map +1 -0
  22. package/lib/sdk/pal.d.cts +28 -0
  23. package/lib/{types-CIHDHY7A.d.cts → types-DDwAfBLt.d.cts} +11 -10
  24. package/lib/ui/StormcloudVideoPlayer.cjs +5070 -6609
  25. package/lib/ui/StormcloudVideoPlayer.cjs.map +1 -1
  26. package/lib/ui/StormcloudVideoPlayer.d.cts +1 -14
  27. package/lib/utils/browserCompat.cjs +10 -114
  28. package/lib/utils/browserCompat.cjs.map +1 -1
  29. package/lib/utils/browserCompat.d.cts +3 -7
  30. package/lib/utils/tracking.cjs +179 -150
  31. package/lib/utils/tracking.cjs.map +1 -1
  32. package/lib/utils/tracking.d.cts +11 -6
  33. package/package.json +1 -2
  34. package/lib/sdk/adstormPlayer.cjs +0 -1567
  35. package/lib/sdk/adstormPlayer.cjs.map +0 -1
  36. package/lib/sdk/adstormPlayer.d.cts +0 -23
  37. package/lib/sdk/vastParser.cjs +0 -517
  38. package/lib/sdk/vastParser.cjs.map +0 -1
  39. package/lib/sdk/vastParser.d.cts +0 -45
  40. package/lib/ui/OverlayRenderer.cjs +0 -2376
  41. package/lib/ui/OverlayRenderer.cjs.map +0 -1
  42. package/lib/ui/OverlayRenderer.d.cts +0 -17
  43. package/lib/utils/adcision.cjs +0 -282
  44. package/lib/utils/adcision.cjs.map +0 -1
  45. package/lib/utils/adcision.d.cts +0 -31
  46. package/lib/utils/overlays.cjs +0 -354
  47. package/lib/utils/overlays.cjs.map +0 -1
  48. 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-CIHDHY7A.cjs';
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
- if (webOSVersion !== void 0 && webOSVersion >= 4) {
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
- if (tizenVersion !== void 0 && tizenVersion >= 4) {
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
- if (chromeVersion >= 53) {
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
- if (chromeVersion >= 53) {
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 supportsGoogleIMA() {
261
+ function getBrowserConfigOverrides() {
334
262
  var browser = detectBrowser();
335
- if (browser.isLegacyTV) {
336
- return false;
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 browser.supportsIMA;
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
- supportsIMA: imaSupport,
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, getRecommendedAdPlayer, logBrowserInfo, supportsFeature, supportsGoogleIMA, supportsModernJS };
34
+ export { type BrowserInfo, detectBrowser, getBrowserConfigOverrides, logBrowserInfo, supportsFeature, supportsModernJS };