stormcloud-video-player 0.8.19 → 0.8.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/stormcloud-vp.min.js +1 -1
- package/lib/index.cjs +54 -12
- package/lib/index.cjs.map +1 -1
- package/lib/index.js +54 -12
- package/lib/index.js.map +1 -1
- package/lib/player/AdConfigManager.cjs +61 -8
- package/lib/player/AdConfigManager.cjs.map +1 -1
- package/lib/player/StormcloudVideoPlayer.cjs +54 -12
- package/lib/player/StormcloudVideoPlayer.cjs.map +1 -1
- package/lib/players/HlsPlayer.cjs +54 -12
- package/lib/players/HlsPlayer.cjs.map +1 -1
- package/lib/players/index.cjs +54 -12
- package/lib/players/index.cjs.map +1 -1
- package/lib/sdk/hlsAdPlayer.cjs +5 -4
- package/lib/sdk/hlsAdPlayer.cjs.map +1 -1
- package/lib/ui/StormcloudVideoPlayer.cjs +54 -12
- package/lib/ui/StormcloudVideoPlayer.cjs.map +1 -1
- package/lib/utils/ctvVastSignals.cjs +12 -1
- package/lib/utils/ctvVastSignals.cjs.map +1 -1
- package/lib/utils/vastEnvironmentSignals.cjs +12 -1
- package/lib/utils/vastEnvironmentSignals.cjs.map +1 -1
- package/lib/utils/vastMacros.cjs +49 -3
- package/lib/utils/vastMacros.cjs.map +1 -1
- package/package.json +1 -1
|
@@ -7,6 +7,9 @@ function _array_like_to_array(arr, len) {
|
|
|
7
7
|
function _array_with_holes(arr) {
|
|
8
8
|
if (Array.isArray(arr)) return arr;
|
|
9
9
|
}
|
|
10
|
+
function _array_without_holes(arr) {
|
|
11
|
+
if (Array.isArray(arr)) return _array_like_to_array(arr);
|
|
12
|
+
}
|
|
10
13
|
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
|
|
11
14
|
try {
|
|
12
15
|
var info = gen[key](arg);
|
|
@@ -68,6 +71,9 @@ function _define_property(obj, key, value) {
|
|
|
68
71
|
}
|
|
69
72
|
return obj;
|
|
70
73
|
}
|
|
74
|
+
function _iterable_to_array(iter) {
|
|
75
|
+
if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter);
|
|
76
|
+
}
|
|
71
77
|
function _iterable_to_array_limit(arr, i) {
|
|
72
78
|
var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"];
|
|
73
79
|
if (_i == null) return;
|
|
@@ -95,6 +101,9 @@ function _iterable_to_array_limit(arr, i) {
|
|
|
95
101
|
function _non_iterable_rest() {
|
|
96
102
|
throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
|
|
97
103
|
}
|
|
104
|
+
function _non_iterable_spread() {
|
|
105
|
+
throw new TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
|
|
106
|
+
}
|
|
98
107
|
function _object_spread(target) {
|
|
99
108
|
for(var i = 1; i < arguments.length; i++){
|
|
100
109
|
var source = arguments[i] != null ? arguments[i] : {};
|
|
@@ -137,6 +146,9 @@ function _object_spread_props(target, source) {
|
|
|
137
146
|
function _sliced_to_array(arr, i) {
|
|
138
147
|
return _array_with_holes(arr) || _iterable_to_array_limit(arr, i) || _unsupported_iterable_to_array(arr, i) || _non_iterable_rest();
|
|
139
148
|
}
|
|
149
|
+
function _to_consumable_array(arr) {
|
|
150
|
+
return _array_without_holes(arr) || _iterable_to_array(arr) || _unsupported_iterable_to_array(arr) || _non_iterable_spread();
|
|
151
|
+
}
|
|
140
152
|
function _type_of(obj) {
|
|
141
153
|
"@swc/helpers - typeof";
|
|
142
154
|
return obj && typeof Symbol !== "undefined" && obj.constructor === Symbol ? "symbol" : typeof obj;
|
|
@@ -316,9 +328,20 @@ __export(AdConfigManager_exports, {
|
|
|
316
328
|
module.exports = __toCommonJS(AdConfigManager_exports);
|
|
317
329
|
// src/utils/vastEnvironmentSignals.ts
|
|
318
330
|
var AIRY_ANDROID_APP_ID = "com.freeairytv.android";
|
|
331
|
+
var AIRY_WEBOS_APP_ID = "com.freeairytv.webos";
|
|
332
|
+
var AIRY_TIZEN_APP_ID = "com.freeairytv.samsung";
|
|
333
|
+
var AIRY_ROKU_APP_ID = "com.freeairytv.roku";
|
|
319
334
|
var AIRY_APP_NAME = "AiryTV Movies & TV";
|
|
320
335
|
var AIRY_DEFAULT_CONTENT_URL = "https://live.airy.tv";
|
|
321
336
|
var CTV_SESSION_STORAGE_KEY = "stormcloud.ctv.sid";
|
|
337
|
+
function getDefaultAppId() {
|
|
338
|
+
if (typeof navigator === "undefined") return AIRY_ANDROID_APP_ID;
|
|
339
|
+
var ua = navigator.userAgent;
|
|
340
|
+
if (/Web0S|webOS|LG Browser|LGSTB|LGE/i.test(ua)) return AIRY_WEBOS_APP_ID;
|
|
341
|
+
if (/Tizen|Samsung/i.test(ua)) return AIRY_TIZEN_APP_ID;
|
|
342
|
+
if (/Roku/i.test(ua)) return AIRY_ROKU_APP_ID;
|
|
343
|
+
return AIRY_ANDROID_APP_ID;
|
|
344
|
+
}
|
|
322
345
|
var DEVICE_ID_STORAGE_KEYS = [
|
|
323
346
|
"rdid",
|
|
324
347
|
"ifa",
|
|
@@ -345,7 +368,7 @@ function resolveVastEnvironmentSignals(isCtv) {
|
|
|
345
368
|
return _object_spread_props(_object_spread({
|
|
346
369
|
isCtv: true,
|
|
347
370
|
contentUrl: bridgeSignals.contentUrl || readStoredString("contentUrl") || AIRY_DEFAULT_CONTENT_URL,
|
|
348
|
-
appId: bridgeSignals.appId || readStoredString("appId") || readStoredString("msid") ||
|
|
371
|
+
appId: bridgeSignals.appId || readStoredString("appId") || readStoredString("msid") || getDefaultAppId(),
|
|
349
372
|
appName: bridgeSignals.appName || readStoredString("appName") || readStoredString("an") || AIRY_APP_NAME,
|
|
350
373
|
sessionId: getOrCreateCtvSessionId()
|
|
351
374
|
}, deviceId ? {
|
|
@@ -642,7 +665,6 @@ var CTV_UNSUPPORTED_PARAMS = [
|
|
|
642
665
|
"max_ad_duration",
|
|
643
666
|
"unviewed_position_start",
|
|
644
667
|
"impl",
|
|
645
|
-
"scor",
|
|
646
668
|
"vad_type",
|
|
647
669
|
"gdpr",
|
|
648
670
|
"gdpr_consent",
|
|
@@ -891,6 +913,29 @@ function normalizeVastTagUrl(raw) {
|
|
|
891
913
|
if (!raw) return raw;
|
|
892
914
|
try {
|
|
893
915
|
var url = new URL(raw);
|
|
916
|
+
var anValue = url.searchParams.get("an");
|
|
917
|
+
if (anValue !== null) {
|
|
918
|
+
var orphanFragments = [];
|
|
919
|
+
url.searchParams.forEach(function(_value, key) {
|
|
920
|
+
if (key && INVALID_VAST_PARAM_KEY.test(key)) {
|
|
921
|
+
orphanFragments.push(key.trim());
|
|
922
|
+
}
|
|
923
|
+
});
|
|
924
|
+
if (orphanFragments.length > 0) {
|
|
925
|
+
var reconstructed = [
|
|
926
|
+
anValue.trimEnd()
|
|
927
|
+
].concat(_to_consumable_array(orphanFragments)).filter(Boolean).join(" & ");
|
|
928
|
+
url.searchParams.forEach(function(_value, key) {
|
|
929
|
+
if (key && INVALID_VAST_PARAM_KEY.test(key)) {
|
|
930
|
+
url.searchParams.delete(key);
|
|
931
|
+
}
|
|
932
|
+
});
|
|
933
|
+
url.searchParams.set("an", reconstructed);
|
|
934
|
+
return url.toString().replace(/([?&]an=)([^&]*)/, function(_match, prefix, val) {
|
|
935
|
+
return prefix + val.replace(/\+/g, "%20");
|
|
936
|
+
});
|
|
937
|
+
}
|
|
938
|
+
}
|
|
894
939
|
removeBrokenAppNameOrphans(url.searchParams);
|
|
895
940
|
return url.toString();
|
|
896
941
|
} catch (unused) {
|
|
@@ -908,6 +953,7 @@ function applyVastMacros(baseUrl, ctx) {
|
|
|
908
953
|
var params = url.searchParams;
|
|
909
954
|
removeBrokenAppNameOrphans(params, ctx.appName);
|
|
910
955
|
params.set("correlator", ctx.correlator);
|
|
956
|
+
params.set("scor", ctx.streamCorrelator);
|
|
911
957
|
if (ctx.isCtv) {
|
|
912
958
|
var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
|
|
913
959
|
try {
|
|
@@ -929,8 +975,6 @@ function applyVastMacros(baseUrl, ctx) {
|
|
|
929
975
|
}
|
|
930
976
|
}
|
|
931
977
|
}
|
|
932
|
-
} else {
|
|
933
|
-
params.set("scor", ctx.streamCorrelator);
|
|
934
978
|
}
|
|
935
979
|
if (ctx.pod != null) {
|
|
936
980
|
params.set("pod", String(ctx.pod));
|
|
@@ -1517,7 +1561,7 @@ var AdConfigManager = /*#__PURE__*/ function() {
|
|
|
1517
1561
|
key: "fetchAdConfiguration",
|
|
1518
1562
|
value: function fetchAdConfiguration() {
|
|
1519
1563
|
return _async_to_generator(function() {
|
|
1520
|
-
var _data_response_ima_publisherdeskima, _data_response_ima, _data_response, _data_response_options_vast_cue_tones, _data_response_options_vast, _data_response_options, _data_response1, vastMode, vastEndpoint, apiUrl, headers, response, data, imaPayload, numberAds;
|
|
1564
|
+
var _data_response_ima_publisherdeskima, _data_response_ima, _data_response, _data_response_options_vast_cue_tones, _data_response_options_vast, _data_response_options, _data_response1, vastMode, vastEndpoint, apiUrl, headers, response, data, imaPayload, decodedPayload, numberAds;
|
|
1521
1565
|
return _ts_generator(this, function(_state) {
|
|
1522
1566
|
switch(_state.label){
|
|
1523
1567
|
case 0:
|
|
@@ -1601,9 +1645,16 @@ var AdConfigManager = /*#__PURE__*/ function() {
|
|
|
1601
1645
|
data = _state.sent();
|
|
1602
1646
|
imaPayload = (_data_response = data.response) === null || _data_response === void 0 ? void 0 : (_data_response_ima = _data_response.ima) === null || _data_response_ima === void 0 ? void 0 : (_data_response_ima_publisherdeskima = _data_response_ima["publisherdesk.ima"]) === null || _data_response_ima_publisherdeskima === void 0 ? void 0 : _data_response_ima_publisherdeskima.payload;
|
|
1603
1647
|
if (imaPayload) {
|
|
1604
|
-
|
|
1648
|
+
decodedPayload = imaPayload;
|
|
1649
|
+
try {
|
|
1650
|
+
decodedPayload = decodeURIComponent(imaPayload);
|
|
1651
|
+
} catch (unused) {
|
|
1652
|
+
console.warn("[StormcloudVideoPlayer] imaPayload was not URI-encoded; using as-is:", imaPayload);
|
|
1653
|
+
}
|
|
1654
|
+
console.log("[StormcloudVideoPlayer] Raw VAST tag URL (from API):", decodedPayload);
|
|
1655
|
+
this.apiVastTagUrl = normalizeVastTagUrl(decodedPayload);
|
|
1605
1656
|
if (this.debug) {
|
|
1606
|
-
console.log("[StormcloudVideoPlayer]
|
|
1657
|
+
console.log("[StormcloudVideoPlayer] Normalized VAST tag URL:", this.apiVastTagUrl);
|
|
1607
1658
|
}
|
|
1608
1659
|
} else {
|
|
1609
1660
|
if (this.debug) {
|
|
@@ -1937,7 +1988,9 @@ var AdConfigManager = /*#__PURE__*/ function() {
|
|
|
1937
1988
|
adTest: this.config.adTest,
|
|
1938
1989
|
consent: this.consentSignals
|
|
1939
1990
|
});
|
|
1940
|
-
|
|
1991
|
+
var finalUrl = palNonce.injectNonce(urlWithMacros);
|
|
1992
|
+
console.log("[StormcloudVideoPlayer] Resolved ad request URL (pod=".concat(this.podCounter, ", pos=").concat(this.adRequestPositionInBreak, "):"), finalUrl);
|
|
1993
|
+
urls.push(finalUrl);
|
|
1941
1994
|
}
|
|
1942
1995
|
return urls;
|
|
1943
1996
|
}
|