stormcloud-video-player 0.4.0 → 0.5.0
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 +245 -156
- package/dist/stormcloud-vp.min.js +1 -1
- package/lib/index.cjs +9759 -5311
- package/lib/index.cjs.map +1 -1
- package/lib/index.d.cts +193 -17
- package/lib/index.d.ts +193 -17
- package/lib/index.js +9761 -5329
- package/lib/index.js.map +1 -1
- package/lib/player/StormcloudVideoPlayer.cjs +7090 -1508
- package/lib/player/StormcloudVideoPlayer.cjs.map +1 -1
- package/lib/player/StormcloudVideoPlayer.d.cts +95 -9
- package/lib/players/HlsPlayer.cjs +7107 -1525
- package/lib/players/HlsPlayer.cjs.map +1 -1
- package/lib/players/HlsPlayer.d.cts +1 -1
- package/lib/players/index.cjs +7098 -1516
- package/lib/players/index.cjs.map +1 -1
- package/lib/sdk/hlsAdPlayer.cjs +302 -266
- package/lib/sdk/hlsAdPlayer.cjs.map +1 -1
- package/lib/sdk/hlsAdPlayer.d.cts +2 -2
- package/lib/sdk/ima.cjs +1375 -0
- package/lib/sdk/ima.cjs.map +1 -0
- package/lib/sdk/ima.d.cts +12 -0
- package/lib/sdk/prebid.cjs +564 -0
- package/lib/sdk/prebid.cjs.map +1 -0
- package/lib/sdk/prebid.d.cts +5 -0
- package/lib/sdk/prebidController.cjs +1560 -0
- package/lib/sdk/prebidController.cjs.map +1 -0
- package/lib/sdk/prebidController.d.cts +11 -0
- package/lib/sdk/vastParser.cjs +393 -0
- package/lib/sdk/vastParser.cjs.map +1 -0
- package/lib/sdk/vastParser.d.cts +45 -0
- package/lib/{types-Ca4ZDaWw.d.cts → types-g2d4Akez.d.cts} +72 -3
- package/lib/ui/StormcloudVideoPlayer.cjs +7130 -1530
- package/lib/ui/StormcloudVideoPlayer.cjs.map +1 -1
- package/lib/ui/StormcloudVideoPlayer.d.cts +1 -1
- package/lib/utils/browserCompat.cjs +222 -20
- package/lib/utils/browserCompat.cjs.map +1 -1
- package/lib/utils/browserCompat.d.cts +9 -1
- package/lib/utils/tracking.d.cts +1 -1
- package/package.json +2 -1
- package/lib/sdk/adstormPlayer.cjs +0 -908
- package/lib/sdk/adstormPlayer.cjs.map +0 -1
- package/lib/sdk/adstormPlayer.d.cts +0 -9
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { StormcloudVideoPlayer } from '../player/StormcloudVideoPlayer.cjs';
|
|
3
|
-
import { S as StormcloudVideoPlayerConfig } from '../types-
|
|
3
|
+
import { S as StormcloudVideoPlayerConfig } from '../types-g2d4Akez.cjs';
|
|
4
4
|
|
|
5
5
|
type StormcloudVideoPlayerProps = Omit<StormcloudVideoPlayerConfig, "videoElement"> & React.VideoHTMLAttributes<HTMLVideoElement> & {
|
|
6
6
|
onReady?: (player: StormcloudVideoPlayer) => void;
|
|
@@ -1,4 +1,56 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
function _define_property(obj, key, value) {
|
|
3
|
+
if (key in obj) {
|
|
4
|
+
Object.defineProperty(obj, key, {
|
|
5
|
+
value: value,
|
|
6
|
+
enumerable: true,
|
|
7
|
+
configurable: true,
|
|
8
|
+
writable: true
|
|
9
|
+
});
|
|
10
|
+
} else {
|
|
11
|
+
obj[key] = value;
|
|
12
|
+
}
|
|
13
|
+
return obj;
|
|
14
|
+
}
|
|
15
|
+
function _object_spread(target) {
|
|
16
|
+
for(var i = 1; i < arguments.length; i++){
|
|
17
|
+
var source = arguments[i] != null ? arguments[i] : {};
|
|
18
|
+
var ownKeys = Object.keys(source);
|
|
19
|
+
if (typeof Object.getOwnPropertySymbols === "function") {
|
|
20
|
+
ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {
|
|
21
|
+
return Object.getOwnPropertyDescriptor(source, sym).enumerable;
|
|
22
|
+
}));
|
|
23
|
+
}
|
|
24
|
+
ownKeys.forEach(function(key) {
|
|
25
|
+
_define_property(target, key, source[key]);
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
return target;
|
|
29
|
+
}
|
|
30
|
+
function ownKeys(object, enumerableOnly) {
|
|
31
|
+
var keys = Object.keys(object);
|
|
32
|
+
if (Object.getOwnPropertySymbols) {
|
|
33
|
+
var symbols = Object.getOwnPropertySymbols(object);
|
|
34
|
+
if (enumerableOnly) {
|
|
35
|
+
symbols = symbols.filter(function(sym) {
|
|
36
|
+
return Object.getOwnPropertyDescriptor(object, sym).enumerable;
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
keys.push.apply(keys, symbols);
|
|
40
|
+
}
|
|
41
|
+
return keys;
|
|
42
|
+
}
|
|
43
|
+
function _object_spread_props(target, source) {
|
|
44
|
+
source = source != null ? source : {};
|
|
45
|
+
if (Object.getOwnPropertyDescriptors) {
|
|
46
|
+
Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
|
|
47
|
+
} else {
|
|
48
|
+
ownKeys(Object(source)).forEach(function(key) {
|
|
49
|
+
Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
return target;
|
|
53
|
+
}
|
|
2
54
|
function _type_of(obj) {
|
|
3
55
|
"@swc/helpers - typeof";
|
|
4
56
|
return obj && typeof Symbol !== "undefined" && obj.constructor === Symbol ? "symbol" : typeof obj;
|
|
@@ -58,12 +110,18 @@ __export(browserCompat_exports, {
|
|
|
58
110
|
getBrowserConfigOverrides: function() {
|
|
59
111
|
return getBrowserConfigOverrides;
|
|
60
112
|
},
|
|
113
|
+
getRecommendedAdPlayer: function() {
|
|
114
|
+
return getRecommendedAdPlayer;
|
|
115
|
+
},
|
|
61
116
|
logBrowserInfo: function() {
|
|
62
117
|
return logBrowserInfo;
|
|
63
118
|
},
|
|
64
119
|
supportsFeature: function() {
|
|
65
120
|
return supportsFeature;
|
|
66
121
|
},
|
|
122
|
+
supportsGoogleIMA: function() {
|
|
123
|
+
return supportsGoogleIMA;
|
|
124
|
+
},
|
|
67
125
|
supportsModernJS: function() {
|
|
68
126
|
return supportsModernJS;
|
|
69
127
|
}
|
|
@@ -105,15 +163,75 @@ function detectBrowser() {
|
|
|
105
163
|
var majorVersion = 0;
|
|
106
164
|
var isSmartTV = false;
|
|
107
165
|
var isLegacyTV = false;
|
|
166
|
+
var supportsIMA = true;
|
|
108
167
|
var supportsModernJS2 = true;
|
|
109
|
-
|
|
168
|
+
var recommendedAdPlayer = "ima";
|
|
169
|
+
var webOSVersion;
|
|
170
|
+
var tizenVersion;
|
|
171
|
+
var chromeVersionNum;
|
|
172
|
+
var chromeVersion = getChromeVersion(ua);
|
|
173
|
+
var webkitVersion = getWebKitVersion(ua);
|
|
174
|
+
chromeVersionNum = chromeVersion > 0 ? chromeVersion : void 0;
|
|
175
|
+
if (/Web0S|webOS|LG Browser|LGSTB/i.test(ua)) {
|
|
110
176
|
name = "LG WebOS";
|
|
111
177
|
isSmartTV = true;
|
|
112
|
-
var match = ua.match(/Web0S[/\s]*([\d.]+)/i);
|
|
113
|
-
|
|
114
|
-
|
|
178
|
+
var match = ua.match(/Web0S[/\s]*([\d.]+)/i) || ua.match(/webOS[/\s]*([\d.]+)/i);
|
|
179
|
+
if (!match || !match[1]) {
|
|
180
|
+
match = ua.match(/webOSTV[/\s-]*([\d.]+)/i) || ua.match(/webOS\.TV[/\s-]*([\d.]+)/i);
|
|
181
|
+
}
|
|
182
|
+
if (match && match[1]) {
|
|
183
|
+
version = match[1];
|
|
115
184
|
var parts = version.split(".");
|
|
116
185
|
majorVersion = parts[0] ? parseInt(parts[0], 10) : 0;
|
|
186
|
+
webOSVersion = majorVersion;
|
|
187
|
+
} else if (chromeVersion > 0) {
|
|
188
|
+
if (chromeVersion >= 79) {
|
|
189
|
+
webOSVersion = 6;
|
|
190
|
+
version = "6.0";
|
|
191
|
+
majorVersion = 6;
|
|
192
|
+
} else if (chromeVersion >= 68) {
|
|
193
|
+
webOSVersion = 5;
|
|
194
|
+
version = "5.0";
|
|
195
|
+
majorVersion = 5;
|
|
196
|
+
} else if (chromeVersion >= 53) {
|
|
197
|
+
webOSVersion = 4;
|
|
198
|
+
version = "4.0";
|
|
199
|
+
majorVersion = 4;
|
|
200
|
+
} else if (chromeVersion >= 38) {
|
|
201
|
+
webOSVersion = 3;
|
|
202
|
+
version = "3.0";
|
|
203
|
+
majorVersion = 3;
|
|
204
|
+
} else {
|
|
205
|
+
webOSVersion = 2;
|
|
206
|
+
version = "2.0";
|
|
207
|
+
majorVersion = 2;
|
|
208
|
+
}
|
|
209
|
+
} else {
|
|
210
|
+
version = "Unknown";
|
|
211
|
+
webOSVersion = void 0;
|
|
212
|
+
}
|
|
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;
|
|
117
235
|
}
|
|
118
236
|
} else if (/Tizen/i.test(ua)) {
|
|
119
237
|
name = "Samsung Tizen";
|
|
@@ -123,39 +241,76 @@ function detectBrowser() {
|
|
|
123
241
|
if (version !== "Unknown") {
|
|
124
242
|
var parts1 = version.split(".");
|
|
125
243
|
majorVersion = parts1[0] ? parseInt(parts1[0], 10) : 0;
|
|
244
|
+
tizenVersion = majorVersion;
|
|
245
|
+
}
|
|
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;
|
|
126
262
|
}
|
|
127
263
|
} else if (/SMART-TV|SmartTV/i.test(ua)) {
|
|
128
264
|
name = "Smart TV";
|
|
129
265
|
isSmartTV = true;
|
|
266
|
+
if (chromeVersion >= 53) {
|
|
267
|
+
supportsIMA = true;
|
|
268
|
+
recommendedAdPlayer = "ima";
|
|
269
|
+
} else {
|
|
270
|
+
supportsIMA = false;
|
|
271
|
+
recommendedAdPlayer = "hls";
|
|
272
|
+
isLegacyTV = true;
|
|
273
|
+
}
|
|
130
274
|
} else if (/NetCast/i.test(ua)) {
|
|
131
275
|
name = "LG NetCast";
|
|
132
276
|
isSmartTV = true;
|
|
133
277
|
isLegacyTV = true;
|
|
278
|
+
supportsIMA = false;
|
|
279
|
+
recommendedAdPlayer = "hls";
|
|
134
280
|
} else if (/BRAVIA/i.test(ua)) {
|
|
135
281
|
name = "Sony BRAVIA";
|
|
136
282
|
isSmartTV = true;
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
283
|
+
if (chromeVersion >= 53) {
|
|
284
|
+
supportsIMA = true;
|
|
285
|
+
recommendedAdPlayer = "ima";
|
|
286
|
+
} else {
|
|
287
|
+
supportsIMA = false;
|
|
288
|
+
recommendedAdPlayer = "hls";
|
|
289
|
+
isLegacyTV = true;
|
|
290
|
+
}
|
|
291
|
+
} else {
|
|
292
|
+
if (chromeVersion > 0) {
|
|
142
293
|
name = "Chrome";
|
|
143
294
|
version = chromeVersion.toString();
|
|
144
295
|
majorVersion = chromeVersion;
|
|
296
|
+
if (chromeVersion < 50) {
|
|
297
|
+
supportsIMA = false;
|
|
298
|
+
supportsModernJS2 = false;
|
|
299
|
+
recommendedAdPlayer = "hls";
|
|
300
|
+
}
|
|
145
301
|
}
|
|
146
|
-
if (
|
|
302
|
+
if (webkitVersion > 0 && webkitVersion < 600) {
|
|
147
303
|
supportsModernJS2 = false;
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
supportsModernJS2 = false;
|
|
153
|
-
if (isSmartTV) {
|
|
154
|
-
isLegacyTV = true;
|
|
304
|
+
if (chromeVersion < 50) {
|
|
305
|
+
supportsIMA = false;
|
|
306
|
+
recommendedAdPlayer = "hls";
|
|
307
|
+
}
|
|
155
308
|
}
|
|
156
309
|
}
|
|
157
310
|
if (typeof Promise === "undefined" || typeof Map === "undefined" || typeof Set === "undefined") {
|
|
158
311
|
supportsModernJS2 = false;
|
|
312
|
+
supportsIMA = false;
|
|
313
|
+
recommendedAdPlayer = "hls";
|
|
159
314
|
}
|
|
160
315
|
if (typeof URLSearchParams === "undefined") {
|
|
161
316
|
supportsModernJS2 = false;
|
|
@@ -167,9 +322,39 @@ function detectBrowser() {
|
|
|
167
322
|
isSmartTV: isSmartTV,
|
|
168
323
|
isLegacyTV: isLegacyTV,
|
|
169
324
|
platform: platform,
|
|
170
|
-
|
|
325
|
+
supportsIMA: supportsIMA,
|
|
326
|
+
supportsModernJS: supportsModernJS2,
|
|
327
|
+
recommendedAdPlayer: recommendedAdPlayer,
|
|
328
|
+
webOSVersion: webOSVersion,
|
|
329
|
+
tizenVersion: tizenVersion,
|
|
330
|
+
chromeVersion: chromeVersionNum
|
|
171
331
|
};
|
|
172
332
|
}
|
|
333
|
+
function supportsGoogleIMA() {
|
|
334
|
+
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;
|
|
351
|
+
}
|
|
352
|
+
return browser.supportsIMA;
|
|
353
|
+
}
|
|
354
|
+
function getRecommendedAdPlayer() {
|
|
355
|
+
var browser = detectBrowser();
|
|
356
|
+
return browser.recommendedAdPlayer;
|
|
357
|
+
}
|
|
173
358
|
function supportsModernJS() {
|
|
174
359
|
try {
|
|
175
360
|
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";
|
|
@@ -181,18 +366,31 @@ function logBrowserInfo() {
|
|
|
181
366
|
var debug = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : false;
|
|
182
367
|
if (!debug) return;
|
|
183
368
|
var browser = detectBrowser();
|
|
184
|
-
|
|
369
|
+
var imaSupport = supportsGoogleIMA();
|
|
370
|
+
console.log("[StormcloudVideoPlayer] Browser Compatibility Info:", _object_spread_props(_object_spread({
|
|
185
371
|
browser: "".concat(browser.name, " ").concat(browser.version),
|
|
186
372
|
platform: browser.platform,
|
|
187
373
|
isSmartTV: browser.isSmartTV,
|
|
188
374
|
isLegacyTV: browser.isLegacyTV,
|
|
375
|
+
supportsIMA: imaSupport,
|
|
189
376
|
supportsModernJS: browser.supportsModernJS,
|
|
377
|
+
recommendedAdPlayer: browser.recommendedAdPlayer
|
|
378
|
+
}, browser.webOSVersion !== void 0 ? {
|
|
379
|
+
webOSVersion: browser.webOSVersion
|
|
380
|
+
} : {}, browser.tizenVersion !== void 0 ? {
|
|
381
|
+
tizenVersion: browser.tizenVersion
|
|
382
|
+
} : {}, browser.chromeVersion !== void 0 ? {
|
|
383
|
+
chromeVersion: browser.chromeVersion
|
|
384
|
+
} : {}), {
|
|
190
385
|
userAgent: navigator.userAgent
|
|
191
|
-
});
|
|
386
|
+
}));
|
|
192
387
|
}
|
|
193
388
|
function getBrowserConfigOverrides() {
|
|
194
389
|
var browser = detectBrowser();
|
|
195
390
|
var overrides = {};
|
|
391
|
+
if (browser.isLegacyTV || !browser.supportsIMA) {
|
|
392
|
+
overrides.adPlayerType = "hls";
|
|
393
|
+
}
|
|
196
394
|
if (browser.isSmartTV) {
|
|
197
395
|
overrides.allowNativeHls = true;
|
|
198
396
|
}
|
|
@@ -200,6 +398,8 @@ function getBrowserConfigOverrides() {
|
|
|
200
398
|
}
|
|
201
399
|
function supportsFeature(feature) {
|
|
202
400
|
switch(feature){
|
|
401
|
+
case "ima":
|
|
402
|
+
return supportsGoogleIMA();
|
|
203
403
|
case "urlsearchparams":
|
|
204
404
|
return typeof URLSearchParams !== "undefined";
|
|
205
405
|
case "textencoder":
|
|
@@ -218,8 +418,10 @@ function supportsFeature(feature) {
|
|
|
218
418
|
0 && (module.exports = {
|
|
219
419
|
detectBrowser: detectBrowser,
|
|
220
420
|
getBrowserConfigOverrides: getBrowserConfigOverrides,
|
|
421
|
+
getRecommendedAdPlayer: getRecommendedAdPlayer,
|
|
221
422
|
logBrowserInfo: logBrowserInfo,
|
|
222
423
|
supportsFeature: supportsFeature,
|
|
424
|
+
supportsGoogleIMA: supportsGoogleIMA,
|
|
223
425
|
supportsModernJS: supportsModernJS
|
|
224
426
|
});
|
|
225
427
|
//# sourceMappingURL=browserCompat.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/home/ubuntu24/Dev/stormcloud-vp/lib/utils/browserCompat.cjs","../../src/utils/browserCompat.ts"],"names":["__defProp","Object","defineProperty","__getOwnPropDesc","__getOwnPropNames","getOwnPropertyDescriptor","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","parts","split","chromeVersion","webkitVersion","toString","Promise","Map","Set","URLSearchParams","Array","assign","forEach","String","includes","e"],"mappings":"AAAA;;;;;;;;;AACA,IAAIA,WAAAA,SAAYC,OAAOC,CAAAA,aAAc;IACrC,EAAIC,EAAAA,IAAAA,QAAAA,IAAmBF,AACnBG,OAD0BC,GAC1BD,QAAAA,EAAoBH,IAAAA,OAD8B;QAC9BA,CAAOK,IAAAA,GAAAA,CAAAA,KAAAA;QAAAA,IAAmB,QAAA;IAAA;AAClD,IAAIC,eAAeN,OAAOO,SAAS,CAACC,cAAc;AAClD,IAAIC,WAAW,GAAA,SAAA,IAAA,CAACC,KAAAA,GAAQC,KAAAA;MACtB,EAAA,EAAK,IAAIC,EAAAA,CAAAA,OAAQD,qCAARC,MAAQD,GAAAA,KACfZ,MAAAA,IAAUW,QAAQE,MAAM,CAAA,SAAA,YAAA;YAAEC,kCAAAA,2BAAAA;;;gBAAAA,IAAKF,GAAG,CAACC,EAATC;kBAAgBC,EAAAA,CAAAA,SAAY,IAAA,IAAA,CAAA,IAAA,QAAA,QAAA,QAAK,UAAA,IAAA,KAAA;oBAAA,KAAA;+BAAA,IAAA,CAAA,IAAA;;oBAAA,YAAA,CAAA,CAAA,OAAA,iBAAA,MAAA,IAAA,KAAA,KAAA,UAAA;gBAAA;;gBAAjCD,IAAAA,YAASD,EAAK,gBAAA,0BAAdC,SAAAA,6BAAAA,QAAAA,yBAAAA;;YAAAA;YAAAA;;;qBAAAA,6BAAAA;oBAAAA;;;oBAAAA;0BAAAA;;;;IAC9B;IACA,EAAIE,KAAAA,SAAc,SAACC,IAAIC,MAAMC,QAAQC;IACnC,IAAIF,QAAQ,CAAA,OAAOA,qCAAP,SAAOA,KAAG,MAAM,YAAY,OAAOA,SAAS,YAAY;YAC7D,OAAA,SAAA;WAAA,YAAA,MAAA,IAAA,CAAA,GAAA,cAAA;QAAA,GAAA,IAAA;IAAA,IAAA;;;gBAAA,IAAIG,MAAJ,EAAA,CAAA;gBACH,IAAI,CAACd,WAAAA,EAAae,IAAI,CAACL,IAAII,QAAQA,QAAQF,QACzCnB,UAAUiB,IAAII,KAAK;sBAAEP;eAAAA,EAAK;;iCAAMI;eAAI,CAACG,IAAI;;;;;sBAAEN;eAAAA,OAAY,CAAEK,CAAAA,OAAOjB,iBAAiBe,MAAMG,IAAG,KAAMD,KAAKL,UAAU;;kBAAC,IAAA;eAAA;;;YAFpH,EAAA,GAAA,GAAK,UAAA,EAAWX,kBAAkBc,0BAA7B,SAAA,6BAAA,QAAA,yBAAA;;YAAA,IAAA,GAAA,KAAA,CAAA;cAAA,MAAA,KAAA,CAAA,EAAA,GAAA,SAAA,KAAA,CAAA,EAAA,EAAA,MAAA;;;qBAAA,GAAA,CAAA,yBAAA;sBAAA,GAAA,CAAA,EAAA,GAAA,SAAA,KAAA,CAAA,EAAA,EAAA,MAAA;;;QAAA;sBAAA,KAAA,eAAA,2BAAA,UAAA,aAAA,cAAA,+CAAA,yBAAA,QAAA,GAAA;8BAAA,QAAA,CAAA,QAAA;;;;QAGP,OAAA,oBAAA,IAAA,CAAA,MAAA,WAAA;MACA,OAAOD;IACT,IAAA,OAAA,IAAA,CAAA,KAAA;QACIM,OAAAA,QAAe,SAACC;aAAQR,YAAYhB,UAAU,CAAC,GAAG,cAAc;UAAEyB,OAAO,IAAA,CAAA,KAAA;QAAK,IAAID,GAAAA,WAAAA,IAAAA,CAAAA,MAAAA,iBAAAA;;IAEtF,IAAA,QAAA,IAAA,CAAA,KAAA,KAA6B;QCnB7BE,OAAAA,iBAAA,CAAA;IAAAhB,OAAAgB,uBAAA;MAAAC,KAAAA,UAAA,QAAA,IAAA;eAAAA;;MAAAC,EAAAA,KAAAA,UAAAA,QAAA,CAAA;eAAAA,IAAAA;;MAAAC,EAAAA,UAAAA,IAAA;iBAAAA,MAAAA;;MAAAC,EAAAA,aAAAA,EAAA;iBAAAA,WAAAA;;QAAAC,OAAAA,WAAA;mBAAAA,CAAAA;;QAAA,UAAA,SAAA,KAAA,CAAA,EAAA,GAAA,KAAA,CAAA,EAAA,GAAA;QAAAC,GAAAC,CAAAA,MAAA,GAAAV,GAAAA,UAAAG,CAAAA;YAsBA,GAASQ,CAAAA,QAAAA,MAAiBC,EAAA,KAAA,CAAA;YACxB,EAAMC,QAAQD,GAAGC,EAAAA,GAAA,CAAM,CAAA,CAAA,EAAA,GAAA,SAAA,KAAA,CAAA,EAAA,EAAA,MAAA;QACvB,OAAOA,SAASA,KAAA,CAAM,EAAC,GAAIC,SAASD,KAAA,CAAM,EAAC,EAAG,MAAM;IACtD,OAAA,IAAA,SAAA,IAAA,CAAA,KAAA;QAEA,KAASE,EAAAA,eAAiBH,EAAA;QACxB,IAAMC,QAAQD,GAAGC,KAAA,CAAM;QACvB,IAAA,CAAOA,QAAAA,EAASA,CAAAA,IAAA,CAAM,CAAA,CAAC,GAAIC,SAASD,KAAA,CAAM,EAAC,EAAG,MAAM;QACtD,UAAA,UAAA,MAAA,CAAA,EAAA,GAAA,MAAA,CAAA,EAAA,GAAA;QAEA,IAAA,CAASG,WAAAA,WAAAA;cAC6BC,EAAAA,SAAAA,QAAAA,KAAAA,CAAAA;YAApC,EAAI,aAAA,MAAA,CAAmBA,EAAAA,GAAAA,SAAAA,CAAaA,KAAAA,CAAAA,EAAAA,EAAAA,MAAAA,YAAAA,UAAUC,aAAA,cAAVD,+CAAAA,yBAAyBE,QAAA,GAAU;YACrE,OAAOF,UAAUC,aAAA,CAAcC,QAAA;MACjC,KAAA,IAAA,oBAAA,IAAA,CAAA,KAAA;QAEA,IAAMP,GAAAA,EAAKK,UAAUG,SAAA;QACrB,IAAI,QAAA,gBAAwBC,IAAA,CAAKT,KAAK;UACpC,CAAA,IAAA,EAAO,SAAA,IAAA,CAAA,KAAA,CAAoBS,IAAA,CAAKT,MAAM,WAAW;QACnD,OAAA;QACA,IAAI,OAAOS,CAAAA,GAAA,CAAKT,KAAK;YACnB,OAAO,EAAA;MACT,KAAA,IAAA,UAAA,IAAA,CAAA,KAAA;QACA,IAAI,GAAA,MAASS,IAAA,CAAKT,KAAK;YACrB,OAAO,CAAA,UAAWS,IAAA,CAAKT,MAAM,iBAAiB;MAChD;MACA,EAAI,QAAQS,IAAA,CAAKT,GAAAA,EAAK,eAAA;QACpB,OAAO,SAAA,iBAAA;MACT,EAAA,gBAAA,GAAA;QAGA,IAAA,CAAA,EAAQK,SAAAA,CAAkBE,QAAA,IAAY;YACxC,OAAA;YAEO,GAASf,OAAAA,cAAAA,QAAAA;YACd,EAAMQ,KAAKK,QAAAA,EAAUG,SAAA;QACrB,IAAMD,WAAWH;QAEjB,IAAI1B,OAAO,SAAA,IAAA;YACX,EAAIgC,UAAU,QAAA;YACd,EAAIC,WAAAA,IAAe;QACnB,IAAIC,YAAY;MAChB,IAAIC,aAAa;MACjB,EAAA,EAAIjB,cAAAA,KAAAA,CAAmB,eAAA,KAAA;QAEvB,IAAI,eAAea,CAAAA,GAAA,CAAKT,KAAK;YAC3BtB,OAAO,IAAA;cACPkC,WAAAA,CAAY;YACZ,IAAMX,QAAQD,GAAGC,KAAA,CAAM;UACvBS,UAAUT,SAASA,KAAA,CAAM,EAAC,GAAIA,KAAA,CAAM,EAAC,GAAI;UACzC,IAAIS,CAAAA,WAAY,CAAA,UAAW,KAAA,OAAA,QAAA,eAAA,OAAA,QAAA,aAAA;gBACzB,IAAMI,QAAQJ,QAAQK,KAAA,CAAM;cAC5BJ,eAAeG,KAAA,CAAM,EAAC,GAAIZ,SAASY,KAAA,CAAM,EAAC,EAAG,MAAM;UACrD,KAAA,oBAAA,aAAA;QACF,OAAA,IAAW,SAASL,IAAA,CAAKT,KAAK;UAC5BtB,OAAO;UACPkC,CAAAA,WAAY;YACZ,IAAMX,SAAQD,GAAGC,KAAA,CAAM;YACvBS,UAAUT,UAASA,MAAA,CAAM,EAAC,GAAIA,MAAA,CAAM,EAAC,GAAI;0BACzC,IAAIS,YAAY,WAAW;2BACzB,IAAMI,SAAQJ,QAAQK,KAAA,CAAM;4BAC5BJ,eAAeG,MAAA,CAAM,EAAC,GAAIZ,SAASY,MAAA,CAAM,EAAC,EAAG,MAAM;sBACrD;QACF,OAAA,IAAW,OAAA,aAAoBL,IAAA,CAAKT,KAAK;UACvCtB,OAAO;QACPkC,YAAY;IACd,KAAA,EAAA,IAAW,WAAWH,IAAA,CAAKT,KAAK;UAC9BtB,OAAO;YACPkC,GAAAA,OAAAA,EAAY,UAAA,eAAA,OAAA,QAAA,eAAA,OAAA,QAAA,eAAA,OAAA,MAAA,IAAA,KAAA,eAAA,OAAA,OAAA,MAAA,KAAA,eAAA,OAAA,MAAA,SAAA,CAAA,OAAA,KAAA,eAAA,OAAA,OAAA,SAAA,CAAA,QAAA,KAAA;UACZC,GAAAA,GAAAA,OAAa;QACf,OAAA,IAAW,UAAUJ,IAAA,CAAKT,KAAK;UAC7BtB,OAAO;QACPkC,YAAY;IACd,KAAA;QAAA,QAAA,iEAAA;MAEA,EAAA,CAAA,CAAMI,MAAAA,UAAgBjB,iBAAiBC;MACvC,EAAMiB,UAAAA,MAAgBd,iBAAiBH;MAEvC,IAAIgB,EAAAA,GAAAA,CAAAA,UAAgB,GAAG,0CAAA;YACrB,IAAI,CAACJ,GAAW,OAAXA,QAAW,IAAA,EAAA,KAAA,OAAA,QAAA,OAAA;gBACdlC,EAAAA,KAAO,GAAA,QAAA;gBACPgC,GAAAA,OAAUM,CAAAA,SAAAA,IAAcE,QAAA;gBACxBP,IAAAA,QAAAA,GAAeK,OAAAA;YACjB,cAAA,QAAA,gBAAA;YAEA,IAAIA,GAAAA,UAAAA,GAAgB,IAAI,EAAA;cACtBpB,oBAAmB;YACnBiB,aAAa;QACf,CAAA;MACF,EAAA,UAAA;MAEA,EAAII,YAAAA,CAAAA,GAAgB,KAAKA,gBAAgB,KAAK;UAC5CrB,MAAAA,SAAAA,EAAAA,GAAmB;YACnB,IAAIgB,EAAAA,SAAW,KAAA,GAAA;cACbC,aAAa;UACf,CAAA;IACF;IAEA,IAAI,CAAA,MAAOM,UAAAA,EAAY,KAAA,UACnB,OAAOC,QAAQ,eACf,OAAOC,QAAQ,aAAa;UAC9BzB,CAAAA,kBAAmB;QACrB,KAAA;YAEA,EAAI,KAAA,EAAO0B,KAAAA,eAAoB,KAAA,QAAa;YAC1C1B,CAAAA,mBAAmB;YACrB,OAAA,OAAA,gBAAA;QAEA,KAAA,EAAO;cACLlB,KAAAA,CAAAA,MAAAA,YAAAA;YACAgC,CAAAA,QAAAA;cACAC,KAAAA,OAAAA,EAAAA,QAAAA;YACAC,CAAAA,UAAAA;cACAC,KAAAA,OAAAA,WAAAA,eAAAA,OAAAA,OAAAA,MAAAA,KAAAA;YACAN,UAAAA;cACAX,KAAAA,aAAAA;MACF;AACF;AAEO,SAASA,oDAAAA;IACd,CAAA,CAAA,EAAI,KAAA,OAAA,GAAA;yBACF,OACE,OAAOuB,YAAY,eACnB,OAAOC,QAAQ,eACf,OAAOC,QAAQ,eACf,OAAOE,MAAMxC,IAAA,KAAS,eACtB,OAAOjB,OAAO0D,MAAA,KAAW,eACzB,OAAOD,MAAMlD,SAAA,CAAUoD,OAAA,KAAY,eACnC,OAAOC,OAAOrD,SAAA,CAAUsD,QAAA,KAAa;iCAEzC,EAAA,OAASC,GAAG;0BACV,OAAO;uBACT;IACF,kBAAA;CAEO,SAASlC","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 if (/Web0S|webOS/i.test(ua)) {\n name = \"LG WebOS\";\n isSmartTV = true;\n const match = ua.match(/Web0S[/\\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 }\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 }\n } else if (/SMART-TV|SmartTV/i.test(ua)) {\n name = \"Smart TV\";\n isSmartTV = true;\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 }\n const chromeVersion = getChromeVersion(ua);\n const webkitVersion = getWebKitVersion(ua);\n if (chromeVersion > 0) {\n if (!isSmartTV) {\n name = \"Chrome\";\n version = chromeVersion.toString();\n majorVersion = chromeVersion;\n }\n if (chromeVersion < 50) {\n supportsModernJS2 = false;\n isLegacyTV = true;\n }\n }\n if (webkitVersion > 0 && webkitVersion < 600) {\n supportsModernJS2 = false;\n if (isSmartTV) {\n isLegacyTV = true;\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 };\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 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 \"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}\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\n if (/Web0S|webOS/i.test(ua)) {\n name = 'LG WebOS';\n isSmartTV = true;\n const match = ua.match(/Web0S[/\\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 }\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 }\n } else if (/SMART-TV|SmartTV/i.test(ua)) {\n name = 'Smart TV';\n isSmartTV = true;\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 }\n\n const chromeVersion = getChromeVersion(ua);\n const webkitVersion = getWebKitVersion(ua);\n\n if (chromeVersion > 0) {\n if (!isSmartTV) {\n name = 'Chrome';\n version = chromeVersion.toString();\n majorVersion = chromeVersion;\n }\n\n if (chromeVersion < 50) {\n supportsModernJS = false;\n isLegacyTV = true;\n }\n }\n\n if (webkitVersion > 0 && webkitVersion < 600) {\n supportsModernJS = false;\n if (isSmartTV) {\n isLegacyTV = true;\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 };\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 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 '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"]}
|
|
1
|
+
{"version":3,"sources":["/home/ubuntu24/Dev/stormcloud-vp/lib/utils/browserCompat.cjs","../../src/utils/browserCompat.ts"],"names":["__defProp","Object","defineProperty","__getOwnPropDesc","getOwnPropertyDescriptor","__getOwnPropNames","getOwnPropertyNames","__hasOwnProp","prototype","hasOwnProperty","__export","target","all","name","get","enumerable","__copyProps","to","from","except","desc","key","call","__toCommonJS","mod","value","browserCompat_exports","detectBrowser","getBrowserConfigOverrides","getRecommendedAdPlayer","logBrowserInfo","supportsFeature","supportsGoogleIMA","supportsModernJS","module","exports","getChromeVersion","ua","match","parseInt","getWebKitVersion","getPlatform","navigator","userAgentData","platform","userAgent","test","version","majorVersion","isSmartTV","isLegacyTV","supportsIMA","recommendedAdPlayer","webOSVersion","tizenVersion","chromeVersionNum","chromeVersion","webkitVersion","parts","split","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.isLegacyTV || !browser.supportsIMA) {\n overrides.adPlayerType = \"hls\";\n }\n if (browser.isSmartTV) {\n overrides.allowNativeHls = true;\n }\n return overrides;\n}\nfunction supportsFeature(feature) {\n switch (feature) {\n case \"ima\":\n return supportsGoogleIMA();\n case \"urlsearchparams\":\n return typeof URLSearchParams !== \"undefined\";\n case \"textencoder\":\n return typeof TextEncoder !== \"undefined\";\n case \"promises\":\n return typeof Promise !== \"undefined\";\n case \"fetch\":\n return typeof fetch !== \"undefined\";\n case \"crypto\":\n return typeof crypto !== \"undefined\" && typeof crypto.subtle !== \"undefined\";\n default:\n return false;\n }\n}\n// Annotate the CommonJS export names for ESM import in node:\n0 && (module.exports = {\n detectBrowser,\n getBrowserConfigOverrides,\n getRecommendedAdPlayer,\n logBrowserInfo,\n supportsFeature,\n supportsGoogleIMA,\n supportsModernJS\n});\n","interface NavigatorUAData {\n platform?: string;\n brands?: Array<{ brand: string; version: string }>;\n mobile?: boolean;\n}\n\ndeclare global {\n interface Navigator {\n userAgentData?: NavigatorUAData;\n }\n}\n\nexport interface BrowserInfo {\n name: string;\n version: string;\n majorVersion: number;\n isSmartTV: boolean;\n isLegacyTV: boolean;\n platform: string;\n supportsIMA: boolean;\n supportsModernJS: boolean;\n recommendedAdPlayer: 'ima' | 'hls';\n webOSVersion?: number | undefined;\n tizenVersion?: number | undefined;\n chromeVersion?: number | undefined;\n}\n\nfunction getChromeVersion(ua: string): number {\n const match = ua.match(/Chrome\\/(\\d+)/);\n return match && match[1] ? parseInt(match[1], 10) : 0;\n}\n\nfunction getWebKitVersion(ua: string): number {\n const match = ua.match(/AppleWebKit\\/(\\d+)/);\n return match && match[1] ? parseInt(match[1], 10) : 0;\n}\n\nfunction getPlatform(): string {\n if ('userAgentData' in navigator && navigator.userAgentData?.platform) {\n return navigator.userAgentData.platform;\n }\n\n const ua = navigator.userAgent;\n if (/Mac|iPhone|iPad|iPod/i.test(ua)) {\n return /iPhone|iPad|iPod/i.test(ua) ? 'iPhone' : 'MacIntel';\n }\n if (/Win/i.test(ua)) {\n return 'Win32';\n }\n if (/Linux/i.test(ua)) {\n return /Android/i.test(ua) ? 'Linux armv8l' : 'Linux x86_64';\n }\n if (/CrOS/i.test(ua)) {\n return 'CrOS';\n }\n\n // eslint-disable-next-line deprecation/deprecation\n return (navigator as any).platform || 'Unknown';\n}\n\nexport function detectBrowser(): BrowserInfo {\n const ua = navigator.userAgent;\n const platform = getPlatform();\n\n let name = 'Unknown';\n let version = '0';\n let majorVersion = 0;\n let isSmartTV = false;\n let isLegacyTV = false;\n let supportsIMA = true;\n let supportsModernJS = true;\n let recommendedAdPlayer: 'ima' | 'hls' = 'ima';\n let webOSVersion: number | undefined;\n let tizenVersion: number | undefined;\n let chromeVersionNum: number | undefined;\n\n const chromeVersion = getChromeVersion(ua);\n const webkitVersion = getWebKitVersion(ua);\n chromeVersionNum = chromeVersion > 0 ? chromeVersion : undefined;\n\n if (/Web0S|webOS|LG Browser|LGSTB/i.test(ua)) {\n name = 'LG WebOS';\n isSmartTV = true;\n \n let match = ua.match(/Web0S[/\\s]*([\\d.]+)/i) || ua.match(/webOS[/\\s]*([\\d.]+)/i);\n \n if (!match || !match[1]) {\n match = ua.match(/webOSTV[/\\s-]*([\\d.]+)/i) || ua.match(/webOS\\.TV[/\\s-]*([\\d.]+)/i);\n }\n \n if (match && match[1]) {\n version = match[1];\n const parts = version.split('.');\n majorVersion = parts[0] ? parseInt(parts[0], 10) : 0;\n webOSVersion = majorVersion;\n } else if (chromeVersion > 0) {\n if (chromeVersion >= 79) {\n webOSVersion = 6;\n version = '6.0';\n majorVersion = 6;\n } else if (chromeVersion >= 68) {\n webOSVersion = 5;\n version = '5.0';\n majorVersion = 5;\n } else if (chromeVersion >= 53) {\n webOSVersion = 4;\n version = '4.0';\n majorVersion = 4;\n } else if (chromeVersion >= 38) {\n webOSVersion = 3;\n version = '3.0';\n majorVersion = 3;\n } else {\n webOSVersion = 2;\n version = '2.0';\n majorVersion = 2;\n }\n } else {\n version = 'Unknown';\n webOSVersion = undefined;\n }\n\n if (webOSVersion !== undefined && webOSVersion >= 4) {\n supportsIMA = true;\n recommendedAdPlayer = 'ima';\n isLegacyTV = false;\n } else if (webOSVersion !== undefined && webOSVersion >= 3) {\n if (chromeVersion >= 53) {\n supportsIMA = true;\n recommendedAdPlayer = 'ima';\n isLegacyTV = false;\n } else {\n supportsIMA = false;\n recommendedAdPlayer = 'hls';\n isLegacyTV = true;\n }\n } else if (chromeVersion >= 53) {\n supportsIMA = true;\n recommendedAdPlayer = 'ima';\n isLegacyTV = false;\n } else {\n supportsIMA = false;\n recommendedAdPlayer = 'hls';\n isLegacyTV = true;\n }\n } else if (/Tizen/i.test(ua)) {\n name = 'Samsung Tizen';\n isSmartTV = true;\n const match = ua.match(/Tizen[/\\s]*([\\d.]+)/i);\n version = match && match[1] ? match[1] : 'Unknown';\n if (version !== 'Unknown') {\n const parts = version.split('.');\n majorVersion = parts[0] ? parseInt(parts[0], 10) : 0;\n tizenVersion = majorVersion;\n }\n \n if (tizenVersion !== undefined && tizenVersion >= 4) {\n supportsIMA = true;\n recommendedAdPlayer = 'ima';\n isLegacyTV = false;\n } else if (tizenVersion !== undefined && tizenVersion >= 3 && chromeVersion >= 47) {\n supportsIMA = true;\n recommendedAdPlayer = 'ima';\n isLegacyTV = false;\n } else if (chromeVersion >= 53) {\n supportsIMA = true;\n recommendedAdPlayer = 'ima';\n isLegacyTV = false;\n } else {\n supportsIMA = false;\n recommendedAdPlayer = 'hls';\n isLegacyTV = true;\n }\n } else if (/SMART-TV|SmartTV/i.test(ua)) {\n name = 'Smart TV';\n isSmartTV = true;\n if (chromeVersion >= 53) {\n supportsIMA = true;\n recommendedAdPlayer = 'ima';\n } else {\n supportsIMA = false;\n recommendedAdPlayer = 'hls';\n isLegacyTV = true;\n }\n } else if (/NetCast/i.test(ua)) {\n name = 'LG NetCast';\n isSmartTV = true;\n isLegacyTV = true;\n supportsIMA = false;\n recommendedAdPlayer = 'hls';\n } else if (/BRAVIA/i.test(ua)) {\n name = 'Sony BRAVIA';\n isSmartTV = true;\n if (chromeVersion >= 53) {\n supportsIMA = true;\n recommendedAdPlayer = 'ima';\n } else {\n supportsIMA = false;\n recommendedAdPlayer = 'hls';\n isLegacyTV = true;\n }\n } else {\n if (chromeVersion > 0) {\n name = 'Chrome';\n version = chromeVersion.toString();\n majorVersion = chromeVersion;\n\n if (chromeVersion < 50) {\n supportsIMA = false;\n supportsModernJS = false;\n recommendedAdPlayer = 'hls';\n }\n }\n\n if (webkitVersion > 0 && webkitVersion < 600) {\n supportsModernJS = false;\n if (chromeVersion < 50) {\n supportsIMA = false;\n recommendedAdPlayer = 'hls';\n }\n }\n }\n\n if (typeof Promise === 'undefined' ||\n typeof Map === 'undefined' ||\n typeof Set === 'undefined') {\n supportsModernJS = false;\n supportsIMA = false;\n recommendedAdPlayer = 'hls';\n }\n\n if (typeof URLSearchParams === 'undefined') {\n supportsModernJS = false;\n }\n\n return {\n name,\n version,\n majorVersion,\n isSmartTV,\n isLegacyTV,\n platform,\n supportsIMA,\n supportsModernJS,\n recommendedAdPlayer,\n webOSVersion,\n tizenVersion,\n chromeVersion: chromeVersionNum,\n };\n}\n\nexport function supportsGoogleIMA(): boolean {\n const browser = detectBrowser();\n\n if (browser.isLegacyTV) {\n return false;\n }\n\n if (typeof document === 'undefined' ||\n typeof document.createElement !== 'function') {\n return false;\n }\n\n try {\n const video = document.createElement('video');\n if (!video) {\n return false;\n }\n } catch (e) {\n return false;\n }\n\n if (typeof Promise === 'undefined') {\n return false;\n }\n\n return browser.supportsIMA;\n}\n\nexport function getRecommendedAdPlayer(): 'ima' | 'hls' {\n const browser = detectBrowser();\n return browser.recommendedAdPlayer;\n}\n\nexport function supportsModernJS(): boolean {\n try {\n return (\n typeof Promise !== 'undefined' &&\n typeof Map !== 'undefined' &&\n typeof Set !== 'undefined' &&\n typeof Array.from !== 'undefined' &&\n typeof Object.assign !== 'undefined' &&\n typeof Array.prototype.forEach !== 'undefined' &&\n typeof String.prototype.includes !== 'undefined'\n );\n } catch (e) {\n return false;\n }\n}\n\nexport function logBrowserInfo(debug: boolean = false): void {\n if (!debug) return;\n\n const browser = detectBrowser();\n const imaSupport = supportsGoogleIMA();\n\n console.log('[StormcloudVideoPlayer] Browser Compatibility Info:', {\n browser: `${browser.name} ${browser.version}`,\n platform: browser.platform,\n isSmartTV: browser.isSmartTV,\n isLegacyTV: browser.isLegacyTV,\n supportsIMA: imaSupport,\n supportsModernJS: browser.supportsModernJS,\n recommendedAdPlayer: browser.recommendedAdPlayer,\n ...(browser.webOSVersion !== undefined ? { webOSVersion: browser.webOSVersion } : {}),\n ...(browser.tizenVersion !== undefined ? { tizenVersion: browser.tizenVersion } : {}),\n ...(browser.chromeVersion !== undefined ? { chromeVersion: browser.chromeVersion } : {}),\n userAgent: navigator.userAgent,\n });\n}\n\nexport function getBrowserConfigOverrides(): {\n adPlayerType?: 'ima' | 'hls';\n allowNativeHls?: boolean;\n} {\n const browser = detectBrowser();\n const overrides: { adPlayerType?: 'ima' | 'hls'; allowNativeHls?: boolean } = {};\n\n if (browser.isLegacyTV || !browser.supportsIMA) {\n overrides.adPlayerType = 'hls';\n }\n\n if (browser.isSmartTV) {\n overrides.allowNativeHls = true;\n }\n\n return overrides;\n}\n\nexport function supportsFeature(feature: string): boolean {\n switch (feature) {\n case 'ima':\n return supportsGoogleIMA();\n case 'urlsearchparams':\n return typeof URLSearchParams !== 'undefined';\n case 'textencoder':\n return typeof TextEncoder !== 'undefined';\n case 'promises':\n return typeof Promise !== 'undefined';\n case 'fetch':\n return typeof fetch !== 'undefined';\n case 'crypto':\n return typeof crypto !== 'undefined' && typeof crypto.subtle !== 'undefined';\n default:\n return false;\n }\n}\n\n"]}
|
|
@@ -18,14 +18,22 @@ interface BrowserInfo {
|
|
|
18
18
|
isSmartTV: boolean;
|
|
19
19
|
isLegacyTV: boolean;
|
|
20
20
|
platform: string;
|
|
21
|
+
supportsIMA: boolean;
|
|
21
22
|
supportsModernJS: boolean;
|
|
23
|
+
recommendedAdPlayer: 'ima' | 'hls';
|
|
24
|
+
webOSVersion?: number | undefined;
|
|
25
|
+
tizenVersion?: number | undefined;
|
|
26
|
+
chromeVersion?: number | undefined;
|
|
22
27
|
}
|
|
23
28
|
declare function detectBrowser(): BrowserInfo;
|
|
29
|
+
declare function supportsGoogleIMA(): boolean;
|
|
30
|
+
declare function getRecommendedAdPlayer(): 'ima' | 'hls';
|
|
24
31
|
declare function supportsModernJS(): boolean;
|
|
25
32
|
declare function logBrowserInfo(debug?: boolean): void;
|
|
26
33
|
declare function getBrowserConfigOverrides(): {
|
|
34
|
+
adPlayerType?: 'ima' | 'hls';
|
|
27
35
|
allowNativeHls?: boolean;
|
|
28
36
|
};
|
|
29
37
|
declare function supportsFeature(feature: string): boolean;
|
|
30
38
|
|
|
31
|
-
export { type BrowserInfo, detectBrowser, getBrowserConfigOverrides, logBrowserInfo, supportsFeature, supportsModernJS };
|
|
39
|
+
export { type BrowserInfo, detectBrowser, getBrowserConfigOverrides, getRecommendedAdPlayer, logBrowserInfo, supportsFeature, supportsGoogleIMA, supportsModernJS };
|
package/lib/utils/tracking.d.cts
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "stormcloud-video-player",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.5.0",
|
|
4
4
|
"main": "lib/index.js",
|
|
5
5
|
"typings": "lib/index.d.ts",
|
|
6
6
|
"scripts": {
|
|
@@ -41,6 +41,7 @@
|
|
|
41
41
|
"license": "MIT",
|
|
42
42
|
"dependencies": {
|
|
43
43
|
"hls.js": "^1.6.11",
|
|
44
|
+
"prebid.js": "^10.23.0",
|
|
44
45
|
"react-icons": "^5.5.0"
|
|
45
46
|
},
|
|
46
47
|
"devDependencies": {
|