stormcloud-video-player 0.8.19 → 0.8.20
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 +53 -9
- package/lib/index.cjs.map +1 -1
- package/lib/index.js +53 -9
- package/lib/index.js.map +1 -1
- package/lib/player/AdBreakOrchestrator.d.cts +1 -1
- package/lib/player/AdConfigManager.cjs +60 -5
- package/lib/player/AdConfigManager.cjs.map +1 -1
- package/lib/player/AdConfigManager.d.cts +1 -1
- package/lib/player/AdPreloadPool.d.cts +1 -1
- package/lib/player/AdTimingService.d.cts +1 -1
- package/lib/player/HlsEngine.d.cts +1 -1
- package/lib/player/PlayerControls.d.cts +1 -1
- package/lib/player/Scte35CueManager.d.cts +1 -1
- package/lib/player/Scte35Parser.d.cts +1 -1
- package/lib/player/StormcloudVideoPlayer.cjs +53 -9
- package/lib/player/StormcloudVideoPlayer.cjs.map +1 -1
- package/lib/player/StormcloudVideoPlayer.d.cts +1 -1
- package/lib/player/playerTypes.d.cts +1 -1
- package/lib/players/HlsPlayer.cjs +53 -9
- package/lib/players/HlsPlayer.cjs.map +1 -1
- package/lib/players/HlsPlayer.d.cts +1 -1
- package/lib/players/index.cjs +53 -9
- 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/sdk/hlsAdPlayer.d.cts +1 -1
- package/lib/types-BAP8n5mE.d.cts +126 -0
- package/lib/ui/StormcloudVideoPlayer.cjs +53 -9
- package/lib/ui/StormcloudVideoPlayer.cjs.map +1 -1
- package/lib/ui/StormcloudVideoPlayer.d.cts +1 -1
- package/lib/utils/ctvVastSignals.cjs +12 -1
- package/lib/utils/ctvVastSignals.cjs.map +1 -1
- package/lib/utils/tracking.d.cts +1 -1
- package/lib/utils/vastEnvironmentSignals.cjs +12 -1
- package/lib/utils/vastEnvironmentSignals.cjs.map +1 -1
- package/lib/utils/vastMacros.cjs +48 -0
- package/lib/utils/vastMacros.cjs.map +1 -1
- package/package.json +1 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { a as Scte35Marker, S as StormcloudVideoPlayerConfig, A as AdController } from '../types-BAP8n5mE.cjs';
|
|
2
2
|
import { AdTimingService } from './AdTimingService.cjs';
|
|
3
3
|
import { AdPreloadPool } from './AdPreloadPool.cjs';
|
|
4
4
|
import { AdConfigManager } from './AdConfigManager.cjs';
|
|
@@ -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 ? {
|
|
@@ -891,6 +914,29 @@ function normalizeVastTagUrl(raw) {
|
|
|
891
914
|
if (!raw) return raw;
|
|
892
915
|
try {
|
|
893
916
|
var url = new URL(raw);
|
|
917
|
+
var anValue = url.searchParams.get("an");
|
|
918
|
+
if (anValue !== null) {
|
|
919
|
+
var orphanFragments = [];
|
|
920
|
+
url.searchParams.forEach(function(_value, key) {
|
|
921
|
+
if (key && INVALID_VAST_PARAM_KEY.test(key)) {
|
|
922
|
+
orphanFragments.push(key.trim());
|
|
923
|
+
}
|
|
924
|
+
});
|
|
925
|
+
if (orphanFragments.length > 0) {
|
|
926
|
+
var reconstructed = [
|
|
927
|
+
anValue.trimEnd()
|
|
928
|
+
].concat(_to_consumable_array(orphanFragments)).filter(Boolean).join(" & ");
|
|
929
|
+
url.searchParams.forEach(function(_value, key) {
|
|
930
|
+
if (key && INVALID_VAST_PARAM_KEY.test(key)) {
|
|
931
|
+
url.searchParams.delete(key);
|
|
932
|
+
}
|
|
933
|
+
});
|
|
934
|
+
url.searchParams.set("an", reconstructed);
|
|
935
|
+
return url.toString().replace(/([?&]an=)([^&]*)/, function(_match, prefix, val) {
|
|
936
|
+
return prefix + val.replace(/\+/g, "%20");
|
|
937
|
+
});
|
|
938
|
+
}
|
|
939
|
+
}
|
|
894
940
|
removeBrokenAppNameOrphans(url.searchParams);
|
|
895
941
|
return url.toString();
|
|
896
942
|
} catch (unused) {
|
|
@@ -1517,7 +1563,7 @@ var AdConfigManager = /*#__PURE__*/ function() {
|
|
|
1517
1563
|
key: "fetchAdConfiguration",
|
|
1518
1564
|
value: function fetchAdConfiguration() {
|
|
1519
1565
|
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;
|
|
1566
|
+
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
1567
|
return _ts_generator(this, function(_state) {
|
|
1522
1568
|
switch(_state.label){
|
|
1523
1569
|
case 0:
|
|
@@ -1601,9 +1647,16 @@ var AdConfigManager = /*#__PURE__*/ function() {
|
|
|
1601
1647
|
data = _state.sent();
|
|
1602
1648
|
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
1649
|
if (imaPayload) {
|
|
1604
|
-
|
|
1650
|
+
decodedPayload = imaPayload;
|
|
1651
|
+
try {
|
|
1652
|
+
decodedPayload = decodeURIComponent(imaPayload);
|
|
1653
|
+
} catch (unused) {
|
|
1654
|
+
console.warn("[StormcloudVideoPlayer] imaPayload was not URI-encoded; using as-is:", imaPayload);
|
|
1655
|
+
}
|
|
1656
|
+
console.log("[StormcloudVideoPlayer] Raw VAST tag URL (from API):", decodedPayload);
|
|
1657
|
+
this.apiVastTagUrl = normalizeVastTagUrl(decodedPayload);
|
|
1605
1658
|
if (this.debug) {
|
|
1606
|
-
console.log("[StormcloudVideoPlayer]
|
|
1659
|
+
console.log("[StormcloudVideoPlayer] Normalized VAST tag URL:", this.apiVastTagUrl);
|
|
1607
1660
|
}
|
|
1608
1661
|
} else {
|
|
1609
1662
|
if (this.debug) {
|
|
@@ -1937,7 +1990,9 @@ var AdConfigManager = /*#__PURE__*/ function() {
|
|
|
1937
1990
|
adTest: this.config.adTest,
|
|
1938
1991
|
consent: this.consentSignals
|
|
1939
1992
|
});
|
|
1940
|
-
|
|
1993
|
+
var finalUrl = palNonce.injectNonce(urlWithMacros);
|
|
1994
|
+
console.log("[StormcloudVideoPlayer] Resolved ad request URL (pod=".concat(this.podCounter, ", pos=").concat(this.adRequestPositionInBreak, "):"), finalUrl);
|
|
1995
|
+
urls.push(finalUrl);
|
|
1941
1996
|
}
|
|
1942
1997
|
return urls;
|
|
1943
1998
|
}
|