stormcloud-video-player 0.8.73 → 0.8.75
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 +10 -70
- package/dist/stormcloud-vp.min.js +1 -1
- package/lib/Player.d.cts +2 -1
- package/lib/StormcloudPlayer.cjs +988 -273
- package/lib/StormcloudPlayer.cjs.map +1 -1
- package/lib/StormcloudPlayer.d.cts +1 -0
- package/lib/index.cjs +999 -278
- package/lib/index.cjs.map +1 -1
- package/lib/index.d.cts +1 -0
- package/lib/index.d.ts +40 -3
- package/lib/index.js +992 -279
- package/lib/index.js.map +1 -1
- package/lib/player/AdBreakOrchestrator.cjs +767 -67
- package/lib/player/AdBreakOrchestrator.cjs.map +1 -1
- package/lib/player/AdBreakOrchestrator.d.cts +7 -9
- package/lib/player/AdConfigManager.cjs +315 -62
- package/lib/player/AdConfigManager.cjs.map +1 -1
- package/lib/player/AdConfigManager.d.cts +7 -12
- package/lib/player/AdTimingService.cjs +37 -1
- package/lib/player/AdTimingService.cjs.map +1 -1
- package/lib/player/AdTimingService.d.cts +8 -1
- package/lib/player/EdgePodRequest.d.cts +1 -0
- package/lib/player/FloorLadder.d.cts +1 -0
- package/lib/player/HlsEngine.d.cts +1 -0
- package/lib/player/OptimizedPodRequest.cjs +719 -0
- package/lib/player/OptimizedPodRequest.cjs.map +1 -0
- package/lib/player/OptimizedPodRequest.d.cts +101 -0
- package/lib/player/PlayerControls.d.cts +1 -0
- package/lib/player/Scte35CueManager.d.cts +1 -0
- package/lib/player/Scte35Parser.d.cts +1 -0
- package/lib/player/StormcloudVideoPlayer.cjs +988 -273
- package/lib/player/StormcloudVideoPlayer.cjs.map +1 -1
- package/lib/player/StormcloudVideoPlayer.d.cts +1 -0
- package/lib/player/playerTypes.d.cts +1 -0
- package/lib/players/HlsPlayer.cjs +988 -273
- package/lib/players/HlsPlayer.cjs.map +1 -1
- package/lib/players/HlsPlayer.d.cts +1 -0
- package/lib/players/index.cjs +988 -273
- package/lib/players/index.cjs.map +1 -1
- package/lib/props.d.cts +1 -0
- package/lib/sdk/hlsAdPlayer.cjs +316 -51
- package/lib/sdk/hlsAdPlayer.cjs.map +1 -1
- package/lib/sdk/hlsAdPlayer.d.cts +3 -1
- package/lib/sdk/pal.cjs +108 -83
- package/lib/sdk/pal.cjs.map +1 -1
- package/lib/sdk/pal.d.cts +1 -0
- package/lib/types.d.cts +9 -2
- package/lib/ui/StormcloudVideoPlayer.cjs +991 -278
- package/lib/ui/StormcloudVideoPlayer.cjs.map +1 -1
- package/lib/ui/StormcloudVideoPlayer.d.cts +1 -0
- package/lib/utils/ctvVastSignals.cjs +9 -7
- package/lib/utils/ctvVastSignals.cjs.map +1 -1
- package/lib/utils/tracking.cjs +17 -3
- package/lib/utils/tracking.cjs.map +1 -1
- package/lib/utils/tracking.d.cts +2 -1
- package/lib/utils/vastEnvironmentSignals.cjs +9 -7
- package/lib/utils/vastEnvironmentSignals.cjs.map +1 -1
- package/lib/utils/vastMacros.cjs +251 -10
- package/lib/utils/vastMacros.cjs.map +1 -1
- package/lib/utils/vastMacros.d.cts +13 -4
- package/package.json +5 -3
package/lib/props.d.cts
CHANGED
package/lib/sdk/hlsAdPlayer.cjs
CHANGED
|
@@ -300,6 +300,9 @@ var hlsAdPlayer_exports = {};
|
|
|
300
300
|
__export(hlsAdPlayer_exports, {
|
|
301
301
|
createHlsAdPlayer: function createHlsAdPlayer1() {
|
|
302
302
|
return createHlsAdPlayer;
|
|
303
|
+
},
|
|
304
|
+
resetGamCredentialsMode: function resetGamCredentialsMode1() {
|
|
305
|
+
return resetGamCredentialsMode;
|
|
303
306
|
}
|
|
304
307
|
});
|
|
305
308
|
module.exports = __toCommonJS(hlsAdPlayer_exports);
|
|
@@ -570,6 +573,268 @@ function substituteVastTrackingMacros(url) {
|
|
|
570
573
|
return KNOWN_VAST_MACROS.has(name) ? "" : match;
|
|
571
574
|
});
|
|
572
575
|
}
|
|
576
|
+
// src/utils/vastEnvironmentSignals.ts
|
|
577
|
+
var DEVICE_TYPE_HINT = {
|
|
578
|
+
FEATURE_PHONE: 1,
|
|
579
|
+
SMARTPHONE: 2,
|
|
580
|
+
DESKTOP: 3,
|
|
581
|
+
TABLET: 4,
|
|
582
|
+
CONNECTED_TV: 5,
|
|
583
|
+
GAME_CONSOLE: 6,
|
|
584
|
+
SET_TOP_BOX: 7
|
|
585
|
+
};
|
|
586
|
+
var DEVICE_TYPE_HINT_ALIASES = {
|
|
587
|
+
featurephone: DEVICE_TYPE_HINT.FEATURE_PHONE,
|
|
588
|
+
smartphone: DEVICE_TYPE_HINT.SMARTPHONE,
|
|
589
|
+
mobile: DEVICE_TYPE_HINT.SMARTPHONE,
|
|
590
|
+
phone: DEVICE_TYPE_HINT.SMARTPHONE,
|
|
591
|
+
desktop: DEVICE_TYPE_HINT.DESKTOP,
|
|
592
|
+
pc: DEVICE_TYPE_HINT.DESKTOP,
|
|
593
|
+
tablet: DEVICE_TYPE_HINT.TABLET,
|
|
594
|
+
ctv: DEVICE_TYPE_HINT.CONNECTED_TV,
|
|
595
|
+
tv: DEVICE_TYPE_HINT.CONNECTED_TV,
|
|
596
|
+
connectedtv: DEVICE_TYPE_HINT.CONNECTED_TV,
|
|
597
|
+
smarttv: DEVICE_TYPE_HINT.CONNECTED_TV,
|
|
598
|
+
console: DEVICE_TYPE_HINT.GAME_CONSOLE,
|
|
599
|
+
gameconsole: DEVICE_TYPE_HINT.GAME_CONSOLE,
|
|
600
|
+
stb: DEVICE_TYPE_HINT.SET_TOP_BOX,
|
|
601
|
+
settopbox: DEVICE_TYPE_HINT.SET_TOP_BOX
|
|
602
|
+
};
|
|
603
|
+
var PERSISTENT_ID_COOKIE_MAX_AGE = 60 * 60 * 24 * 365 * 5;
|
|
604
|
+
// src/utils/vastMacros.ts
|
|
605
|
+
var INVALID_VAST_PARAM_KEY = /^\s|\s$/;
|
|
606
|
+
function removeBrokenAppNameOrphans(params, appName) {
|
|
607
|
+
var toDelete = [];
|
|
608
|
+
params.forEach(function(_value, key) {
|
|
609
|
+
if (!key || INVALID_VAST_PARAM_KEY.test(key)) {
|
|
610
|
+
toDelete.push(key);
|
|
611
|
+
}
|
|
612
|
+
});
|
|
613
|
+
if (appName && appName.includes("&")) {
|
|
614
|
+
var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
|
|
615
|
+
try {
|
|
616
|
+
for(var _iterator = appName.split("&").slice(1)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){
|
|
617
|
+
var suffix = _step.value;
|
|
618
|
+
var trimmed = suffix.replace(/^\s+/, "");
|
|
619
|
+
if (!trimmed) continue;
|
|
620
|
+
toDelete.push(suffix, " ".concat(trimmed), trimmed);
|
|
621
|
+
}
|
|
622
|
+
} catch (err) {
|
|
623
|
+
_didIteratorError = true;
|
|
624
|
+
_iteratorError = err;
|
|
625
|
+
} finally{
|
|
626
|
+
try {
|
|
627
|
+
if (!_iteratorNormalCompletion && _iterator.return != null) {
|
|
628
|
+
_iterator.return();
|
|
629
|
+
}
|
|
630
|
+
} finally{
|
|
631
|
+
if (_didIteratorError) {
|
|
632
|
+
throw _iteratorError;
|
|
633
|
+
}
|
|
634
|
+
}
|
|
635
|
+
}
|
|
636
|
+
}
|
|
637
|
+
var _iteratorNormalCompletion1 = true, _didIteratorError1 = false, _iteratorError1 = undefined;
|
|
638
|
+
try {
|
|
639
|
+
for(var _iterator1 = new Set(toDelete)[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = true){
|
|
640
|
+
var key = _step1.value;
|
|
641
|
+
if (key) params.delete(key);
|
|
642
|
+
}
|
|
643
|
+
} catch (err) {
|
|
644
|
+
_didIteratorError1 = true;
|
|
645
|
+
_iteratorError1 = err;
|
|
646
|
+
} finally{
|
|
647
|
+
try {
|
|
648
|
+
if (!_iteratorNormalCompletion1 && _iterator1.return != null) {
|
|
649
|
+
_iterator1.return();
|
|
650
|
+
}
|
|
651
|
+
} finally{
|
|
652
|
+
if (_didIteratorError1) {
|
|
653
|
+
throw _iteratorError1;
|
|
654
|
+
}
|
|
655
|
+
}
|
|
656
|
+
}
|
|
657
|
+
}
|
|
658
|
+
function normalizeVastTagUrl(raw) {
|
|
659
|
+
if (!raw) return raw;
|
|
660
|
+
try {
|
|
661
|
+
var url = new URL(raw);
|
|
662
|
+
var anValue = url.searchParams.get("an");
|
|
663
|
+
if (anValue !== null) {
|
|
664
|
+
var orphanFragments = [];
|
|
665
|
+
url.searchParams.forEach(function(_value, key) {
|
|
666
|
+
if (key && INVALID_VAST_PARAM_KEY.test(key)) {
|
|
667
|
+
orphanFragments.push(key.trim());
|
|
668
|
+
}
|
|
669
|
+
});
|
|
670
|
+
if (orphanFragments.length > 0) {
|
|
671
|
+
var reconstructed = [
|
|
672
|
+
anValue.replace(/\s+$/, "")
|
|
673
|
+
].concat(_to_consumable_array(orphanFragments)).filter(Boolean).join(" & ");
|
|
674
|
+
url.searchParams.forEach(function(_value, key) {
|
|
675
|
+
if (key && INVALID_VAST_PARAM_KEY.test(key)) {
|
|
676
|
+
url.searchParams.delete(key);
|
|
677
|
+
}
|
|
678
|
+
});
|
|
679
|
+
url.searchParams.set("an", reconstructed);
|
|
680
|
+
return url.toString().replace(/([?&]an=)([^&]*)/, function(_match, prefix, val) {
|
|
681
|
+
return prefix + val.replace(/\+/g, "%20");
|
|
682
|
+
});
|
|
683
|
+
}
|
|
684
|
+
}
|
|
685
|
+
removeBrokenAppNameOrphans(url.searchParams);
|
|
686
|
+
return url.toString();
|
|
687
|
+
} catch (unused) {
|
|
688
|
+
return raw;
|
|
689
|
+
}
|
|
690
|
+
}
|
|
691
|
+
var SCVP_MACRO_DETECT = /\[SCVP-|%5BSCVP-|\(SCVP-|%28SCVP-/i;
|
|
692
|
+
var SCVP_MACRO_PATTERN = /\[SCVP-([A-Z0-9-]+)\]|\(SCVP-([A-Z0-9-]+)\)/gi;
|
|
693
|
+
var SCVP_WHOLE_VALUE_PATTERN = /^\s*(?:\[SCVP-([A-Z0-9-]+)\]|\(SCVP-([A-Z0-9-]+)\))\s*$/i;
|
|
694
|
+
var NESTED_QUERY_PARAM_KEYS = /* @__PURE__ */ new Set([
|
|
695
|
+
"cust_params"
|
|
696
|
+
]);
|
|
697
|
+
function safeDecode(value) {
|
|
698
|
+
try {
|
|
699
|
+
return decodeURIComponent(value.replace(/\+/g, " "));
|
|
700
|
+
} catch (unused) {
|
|
701
|
+
return value;
|
|
702
|
+
}
|
|
703
|
+
}
|
|
704
|
+
function findScvpMacroNames(url) {
|
|
705
|
+
if (!url) return [];
|
|
706
|
+
var names = /* @__PURE__ */ new Set();
|
|
707
|
+
var text = url;
|
|
708
|
+
for(var pass = 0; pass < 3; pass++){
|
|
709
|
+
text.replace(SCVP_MACRO_PATTERN, function(_m, bracketName, parenName) {
|
|
710
|
+
names.add(String(bracketName || parenName).toUpperCase());
|
|
711
|
+
return "";
|
|
712
|
+
});
|
|
713
|
+
var decoded = safeDecode(text);
|
|
714
|
+
if (decoded === text) break;
|
|
715
|
+
text = decoded;
|
|
716
|
+
}
|
|
717
|
+
return Array.from(names);
|
|
718
|
+
}
|
|
719
|
+
var keepNone = function keepNone() {
|
|
720
|
+
return false;
|
|
721
|
+
};
|
|
722
|
+
function substituteScvpParams(params, values, unresolved, keep, nested) {
|
|
723
|
+
var out = [];
|
|
724
|
+
var replaceMacro = function replaceMacro(match, bracketName, parenName) {
|
|
725
|
+
var name = String(bracketName || parenName).toUpperCase();
|
|
726
|
+
var value = values.get(name);
|
|
727
|
+
if (value != null) return value;
|
|
728
|
+
if (keep(name)) return match;
|
|
729
|
+
unresolved.add(name);
|
|
730
|
+
return "";
|
|
731
|
+
};
|
|
732
|
+
params.forEach(function(value, key) {
|
|
733
|
+
var whole = value.match(SCVP_WHOLE_VALUE_PATTERN);
|
|
734
|
+
if (whole) {
|
|
735
|
+
var name = String(whole[1] || whole[2]).toUpperCase();
|
|
736
|
+
var resolved = values.get(name);
|
|
737
|
+
if (resolved != null) {
|
|
738
|
+
out.push([
|
|
739
|
+
key,
|
|
740
|
+
resolved
|
|
741
|
+
]);
|
|
742
|
+
} else if (keep(name)) {
|
|
743
|
+
out.push([
|
|
744
|
+
key,
|
|
745
|
+
value
|
|
746
|
+
]);
|
|
747
|
+
} else {
|
|
748
|
+
unresolved.add(name);
|
|
749
|
+
}
|
|
750
|
+
return;
|
|
751
|
+
}
|
|
752
|
+
if (!SCVP_MACRO_DETECT.test(value)) {
|
|
753
|
+
out.push([
|
|
754
|
+
key,
|
|
755
|
+
value
|
|
756
|
+
]);
|
|
757
|
+
return;
|
|
758
|
+
}
|
|
759
|
+
if (!nested && NESTED_QUERY_PARAM_KEYS.has(key)) {
|
|
760
|
+
var inner = substituteScvpParams(new URLSearchParams(value), values, unresolved, keep, true);
|
|
761
|
+
if (inner.length > 0) {
|
|
762
|
+
out.push([
|
|
763
|
+
key,
|
|
764
|
+
inner.map(function(param) {
|
|
765
|
+
var _param = _sliced_to_array(param, 2), k = _param[0], v = _param[1];
|
|
766
|
+
return "".concat(encodeURIComponent(k), "=").concat(encodeURIComponent(v));
|
|
767
|
+
}).join("&")
|
|
768
|
+
]);
|
|
769
|
+
}
|
|
770
|
+
return;
|
|
771
|
+
}
|
|
772
|
+
out.push([
|
|
773
|
+
key,
|
|
774
|
+
value.replace(SCVP_MACRO_PATTERN, replaceMacro)
|
|
775
|
+
]);
|
|
776
|
+
});
|
|
777
|
+
return out;
|
|
778
|
+
}
|
|
779
|
+
function substituteScvpMacros(baseUrl, values) {
|
|
780
|
+
var keep = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : keepNone;
|
|
781
|
+
var unresolved = /* @__PURE__ */ new Set();
|
|
782
|
+
var url;
|
|
783
|
+
try {
|
|
784
|
+
url = new URL(normalizeVastTagUrl(baseUrl));
|
|
785
|
+
} catch (unused) {
|
|
786
|
+
var replaced = baseUrl.replace(SCVP_MACRO_PATTERN, function(match, bracketName, parenName) {
|
|
787
|
+
var name = String(bracketName || parenName).toUpperCase();
|
|
788
|
+
var value = values.get(name);
|
|
789
|
+
if (value != null) return encodeURIComponent(value);
|
|
790
|
+
if (keep(name)) return match;
|
|
791
|
+
unresolved.add(name);
|
|
792
|
+
return "";
|
|
793
|
+
});
|
|
794
|
+
return {
|
|
795
|
+
url: replaced,
|
|
796
|
+
unresolved: Array.from(unresolved)
|
|
797
|
+
};
|
|
798
|
+
}
|
|
799
|
+
var entries = substituteScvpParams(url.searchParams, values, unresolved, keep, false);
|
|
800
|
+
var search = new URLSearchParams();
|
|
801
|
+
var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
|
|
802
|
+
try {
|
|
803
|
+
for(var _iterator = entries[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){
|
|
804
|
+
var _step_value = _sliced_to_array(_step.value, 2), key = _step_value[0], value = _step_value[1];
|
|
805
|
+
search.append(key, value);
|
|
806
|
+
}
|
|
807
|
+
} catch (err) {
|
|
808
|
+
_didIteratorError = true;
|
|
809
|
+
_iteratorError = err;
|
|
810
|
+
} finally{
|
|
811
|
+
try {
|
|
812
|
+
if (!_iteratorNormalCompletion && _iterator.return != null) {
|
|
813
|
+
_iterator.return();
|
|
814
|
+
}
|
|
815
|
+
} finally{
|
|
816
|
+
if (_didIteratorError) {
|
|
817
|
+
throw _iteratorError;
|
|
818
|
+
}
|
|
819
|
+
}
|
|
820
|
+
}
|
|
821
|
+
url.search = search.toString();
|
|
822
|
+
return {
|
|
823
|
+
url: url.toString(),
|
|
824
|
+
unresolved: Array.from(unresolved)
|
|
825
|
+
};
|
|
826
|
+
}
|
|
827
|
+
function stripScvpMacros(url) {
|
|
828
|
+
if (findScvpMacroNames(url).length === 0) return {
|
|
829
|
+
url: url,
|
|
830
|
+
unresolved: []
|
|
831
|
+
};
|
|
832
|
+
return substituteScvpMacros(url, /* @__PURE__ */ new Map());
|
|
833
|
+
}
|
|
834
|
+
// src/player/OptimizedPodRequest.ts
|
|
835
|
+
function isPodRequestAbortedError(error) {
|
|
836
|
+
return !!error && error.podRequestAborted === true;
|
|
837
|
+
}
|
|
573
838
|
// src/sdk/hlsAdPlayer.ts
|
|
574
839
|
var LINEAR_TRACKING_EVENTS = [
|
|
575
840
|
"creativeView",
|
|
@@ -650,6 +915,10 @@ function toVastMediaErrorCode(error) {
|
|
|
650
915
|
return VAST_ERROR_MEDIA_DISPLAY;
|
|
651
916
|
}
|
|
652
917
|
}
|
|
918
|
+
var gamCredentialsMode = "include";
|
|
919
|
+
function resetGamCredentialsMode() {
|
|
920
|
+
gamCredentialsMode = "include";
|
|
921
|
+
}
|
|
653
922
|
function createHlsAdPlayer(contentVideo, options) {
|
|
654
923
|
var _contentVideo_AD_VIDEO_PROP, _contentVideo_AD_CONTAINER_PROP, _ref;
|
|
655
924
|
var adPlaying = false;
|
|
@@ -1521,9 +1790,9 @@ function createHlsAdPlayer(contentVideo, options) {
|
|
|
1521
1790
|
}
|
|
1522
1791
|
}
|
|
1523
1792
|
function fetchVastXml(vastTagUrl) {
|
|
1524
|
-
var credentials = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : "include", kind = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : "gam";
|
|
1793
|
+
var credentials = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : "include", kind = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : "gam", finalizeRequestUrl = arguments.length > 3 ? arguments[3] : void 0;
|
|
1525
1794
|
return _async_to_generator(function() {
|
|
1526
|
-
var controller, timeoutId, startedAt, attempt, requestVast, response, error, error1;
|
|
1795
|
+
var controller, timeoutId, startedAt, attempt, resolveDispatchUrl, requestVast, response, error, error1;
|
|
1527
1796
|
return _ts_generator(this, function(_state) {
|
|
1528
1797
|
switch(_state.label){
|
|
1529
1798
|
case 0:
|
|
@@ -1537,13 +1806,32 @@ function createHlsAdPlayer(contentVideo, options) {
|
|
|
1537
1806
|
}, VAST_REQUEST_TIMEOUT_MS) : void 0;
|
|
1538
1807
|
startedAt = Date.now();
|
|
1539
1808
|
attempt = 0;
|
|
1809
|
+
resolveDispatchUrl = function resolveDispatchUrl() {
|
|
1810
|
+
if (kind === "wrapper") return vastTagUrl;
|
|
1811
|
+
if (finalizeRequestUrl) return finalizeRequestUrl(vastTagUrl, attempt);
|
|
1812
|
+
var _stripScvpMacros = stripScvpMacros(vastTagUrl), url = _stripScvpMacros.url, unresolved = _stripScvpMacros.unresolved;
|
|
1813
|
+
if (unresolved.length > 0) {
|
|
1814
|
+
console.warn("[HlsAdPlayer] Removed unresolved SCVP macros before dispatch:", unresolved.join(", "));
|
|
1815
|
+
}
|
|
1816
|
+
return url;
|
|
1817
|
+
};
|
|
1540
1818
|
requestVast = function requestVast(creds) {
|
|
1541
1819
|
return _async_to_generator(function() {
|
|
1542
|
-
var response;
|
|
1820
|
+
var pending, response;
|
|
1543
1821
|
return _ts_generator(this, function(_state) {
|
|
1544
1822
|
switch(_state.label){
|
|
1545
1823
|
case 0:
|
|
1546
1824
|
attempt++;
|
|
1825
|
+
pending = fetch(resolveDispatchUrl(), _object_spread({
|
|
1826
|
+
mode: "cors",
|
|
1827
|
+
credentials: creds,
|
|
1828
|
+
headers: {
|
|
1829
|
+
"Accept": "application/xml, text/xml, */*"
|
|
1830
|
+
},
|
|
1831
|
+
referrerPolicy: "no-referrer-when-downgrade"
|
|
1832
|
+
}, controller ? {
|
|
1833
|
+
signal: controller.signal
|
|
1834
|
+
} : {}));
|
|
1547
1835
|
if (kind !== "wrapper") {
|
|
1548
1836
|
logFunnel("".concat(kind, "_http_request_sent"), {
|
|
1549
1837
|
attempt: attempt,
|
|
@@ -1552,16 +1840,7 @@ function createHlsAdPlayer(contentVideo, options) {
|
|
|
1552
1840
|
}
|
|
1553
1841
|
return [
|
|
1554
1842
|
4,
|
|
1555
|
-
|
|
1556
|
-
mode: "cors",
|
|
1557
|
-
credentials: creds,
|
|
1558
|
-
headers: {
|
|
1559
|
-
"Accept": "application/xml, text/xml, */*"
|
|
1560
|
-
},
|
|
1561
|
-
referrerPolicy: "no-referrer-when-downgrade"
|
|
1562
|
-
}, controller ? {
|
|
1563
|
-
signal: controller.signal
|
|
1564
|
-
} : {}))
|
|
1843
|
+
pending
|
|
1565
1844
|
];
|
|
1566
1845
|
case 1:
|
|
1567
1846
|
response = _state.sent();
|
|
@@ -1585,9 +1864,9 @@ function createHlsAdPlayer(contentVideo, options) {
|
|
|
1585
1864
|
case 1:
|
|
1586
1865
|
_state.trys.push([
|
|
1587
1866
|
1,
|
|
1588
|
-
|
|
1589
|
-
|
|
1590
|
-
|
|
1867
|
+
7,
|
|
1868
|
+
8,
|
|
1869
|
+
9
|
|
1591
1870
|
]);
|
|
1592
1871
|
_state.label = 2;
|
|
1593
1872
|
case 2:
|
|
@@ -1595,7 +1874,7 @@ function createHlsAdPlayer(contentVideo, options) {
|
|
|
1595
1874
|
2,
|
|
1596
1875
|
4,
|
|
1597
1876
|
,
|
|
1598
|
-
|
|
1877
|
+
5
|
|
1599
1878
|
]);
|
|
1600
1879
|
return [
|
|
1601
1880
|
4,
|
|
@@ -1605,36 +1884,21 @@ function createHlsAdPlayer(contentVideo, options) {
|
|
|
1605
1884
|
response = _state.sent();
|
|
1606
1885
|
return [
|
|
1607
1886
|
3,
|
|
1608
|
-
|
|
1887
|
+
5
|
|
1609
1888
|
];
|
|
1610
1889
|
case 4:
|
|
1611
1890
|
error = _state.sent();
|
|
1612
|
-
if (
|
|
1613
|
-
|
|
1614
|
-
|
|
1615
|
-
|
|
1616
|
-
|
|
1617
|
-
|
|
1618
|
-
|
|
1619
|
-
|
|
1620
|
-
|
|
1621
|
-
4,
|
|
1622
|
-
requestVast("omit")
|
|
1623
|
-
];
|
|
1624
|
-
case 5:
|
|
1625
|
-
response = _state.sent();
|
|
1626
|
-
return [
|
|
1627
|
-
3,
|
|
1628
|
-
7
|
|
1629
|
-
];
|
|
1630
|
-
case 6:
|
|
1891
|
+
if (kind === "gam" && !(controller === null || controller === void 0 ? void 0 : controller.signal.aborted) && !isPodRequestAbortedError(error)) {
|
|
1892
|
+
gamCredentialsMode = credentials === "include" ? "omit" : "include";
|
|
1893
|
+
console.warn('[HlsAdPlayer] GAM fetch failed with credentials="'.concat(credentials, '"; next GAM request will use credentials="').concat(gamCredentialsMode, '":'), error);
|
|
1894
|
+
logFunnel("gam_credentials_mode_changed", {
|
|
1895
|
+
from: credentials,
|
|
1896
|
+
to: gamCredentialsMode,
|
|
1897
|
+
errorMessage: error === null || error === void 0 ? void 0 : error.message
|
|
1898
|
+
});
|
|
1899
|
+
}
|
|
1631
1900
|
throw error;
|
|
1632
|
-
case
|
|
1633
|
-
return [
|
|
1634
|
-
3,
|
|
1635
|
-
8
|
|
1636
|
-
];
|
|
1637
|
-
case 8:
|
|
1901
|
+
case 5:
|
|
1638
1902
|
if (!response.ok) {
|
|
1639
1903
|
throw new Error("Failed to fetch VAST: HTTP ".concat(response.status, " ").concat(response.statusText));
|
|
1640
1904
|
}
|
|
@@ -1642,12 +1906,12 @@ function createHlsAdPlayer(contentVideo, options) {
|
|
|
1642
1906
|
4,
|
|
1643
1907
|
response.text()
|
|
1644
1908
|
];
|
|
1645
|
-
case
|
|
1909
|
+
case 6:
|
|
1646
1910
|
return [
|
|
1647
1911
|
2,
|
|
1648
1912
|
_state.sent()
|
|
1649
1913
|
];
|
|
1650
|
-
case
|
|
1914
|
+
case 7:
|
|
1651
1915
|
error1 = _state.sent();
|
|
1652
1916
|
if (controller === null || controller === void 0 ? void 0 : controller.signal.aborted) {
|
|
1653
1917
|
if (pendingRequestAbortReason) {
|
|
@@ -1656,13 +1920,13 @@ function createHlsAdPlayer(contentVideo, options) {
|
|
|
1656
1920
|
throw new Error("VAST request timeout after ".concat(VAST_REQUEST_TIMEOUT_MS, "ms: ").concat(vastTagUrl));
|
|
1657
1921
|
}
|
|
1658
1922
|
throw error1;
|
|
1659
|
-
case
|
|
1923
|
+
case 8:
|
|
1660
1924
|
if (timeoutId !== void 0) clearTimeout(timeoutId);
|
|
1661
1925
|
if (controller) pendingVastRequests.delete(controller);
|
|
1662
1926
|
return [
|
|
1663
1927
|
7
|
|
1664
1928
|
];
|
|
1665
|
-
case
|
|
1929
|
+
case 9:
|
|
1666
1930
|
return [
|
|
1667
1931
|
2
|
|
1668
1932
|
];
|
|
@@ -1795,7 +2059,7 @@ function createHlsAdPlayer(contentVideo, options) {
|
|
|
1795
2059
|
});
|
|
1796
2060
|
}
|
|
1797
2061
|
function fetchAndParsePod(vastTagUrl) {
|
|
1798
|
-
var source = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : "gam";
|
|
2062
|
+
var source = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : "gam", finalizeRequestUrl = arguments.length > 2 ? arguments[2] : void 0;
|
|
1799
2063
|
return _async_to_generator(function() {
|
|
1800
2064
|
var _root_getAttribute, _root_getAttribute1, isEdge, vastXml, trimmedXml, xmlDoc, root, adElements, _root_getAttribute2, _empty_errorUrls, empty, _empty_errorCode, resolveAd, candidates, podElements, buffet, resolveAll, ads, _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, ad, err, _iteratorNormalCompletion1, _didIteratorError1, _iteratorError1, _iterator1, _step1, ad1, err;
|
|
1801
2065
|
return _ts_generator(this, function(_state) {
|
|
@@ -1805,7 +2069,7 @@ function createHlsAdPlayer(contentVideo, options) {
|
|
|
1805
2069
|
isEdge = source === "edge";
|
|
1806
2070
|
return [
|
|
1807
2071
|
4,
|
|
1808
|
-
fetchVastXml(vastTagUrl, isEdge ? "omit" :
|
|
2072
|
+
fetchVastXml(vastTagUrl, isEdge ? "omit" : gamCredentialsMode, source, finalizeRequestUrl)
|
|
1809
2073
|
];
|
|
1810
2074
|
case 1:
|
|
1811
2075
|
vastXml = _state.sent();
|
|
@@ -3128,7 +3392,7 @@ function createHlsAdPlayer(contentVideo, options) {
|
|
|
3128
3392
|
case 2:
|
|
3129
3393
|
return [
|
|
3130
3394
|
4,
|
|
3131
|
-
fetchAndParsePod(vastTagUrl, source)
|
|
3395
|
+
fetchAndParsePod(vastTagUrl, source, requestOptions === null || requestOptions === void 0 ? void 0 : requestOptions.finalizeRequestUrl)
|
|
3132
3396
|
];
|
|
3133
3397
|
case 3:
|
|
3134
3398
|
ads = _state.sent();
|
|
@@ -3612,6 +3876,7 @@ function createHlsAdPlayer(contentVideo, options) {
|
|
|
3612
3876
|
}
|
|
3613
3877
|
// Annotate the CommonJS export names for ESM import in node:
|
|
3614
3878
|
0 && (module.exports = {
|
|
3615
|
-
createHlsAdPlayer: createHlsAdPlayer
|
|
3879
|
+
createHlsAdPlayer: createHlsAdPlayer,
|
|
3880
|
+
resetGamCredentialsMode: resetGamCredentialsMode
|
|
3616
3881
|
});
|
|
3617
3882
|
//# sourceMappingURL=hlsAdPlayer.cjs.map
|