stormcloud-video-player 0.8.73 → 0.8.74

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (61) hide show
  1. package/README.md +10 -70
  2. package/dist/stormcloud-vp.min.js +1 -1
  3. package/lib/Player.d.cts +1 -0
  4. package/lib/StormcloudPlayer.cjs +987 -273
  5. package/lib/StormcloudPlayer.cjs.map +1 -1
  6. package/lib/StormcloudPlayer.d.cts +1 -0
  7. package/lib/index.cjs +998 -278
  8. package/lib/index.cjs.map +1 -1
  9. package/lib/index.d.cts +1 -0
  10. package/lib/index.d.ts +40 -3
  11. package/lib/index.js +991 -279
  12. package/lib/index.js.map +1 -1
  13. package/lib/player/AdBreakOrchestrator.cjs +767 -67
  14. package/lib/player/AdBreakOrchestrator.cjs.map +1 -1
  15. package/lib/player/AdBreakOrchestrator.d.cts +7 -9
  16. package/lib/player/AdConfigManager.cjs +314 -62
  17. package/lib/player/AdConfigManager.cjs.map +1 -1
  18. package/lib/player/AdConfigManager.d.cts +7 -12
  19. package/lib/player/AdTimingService.cjs +37 -1
  20. package/lib/player/AdTimingService.cjs.map +1 -1
  21. package/lib/player/AdTimingService.d.cts +8 -1
  22. package/lib/player/EdgePodRequest.d.cts +1 -0
  23. package/lib/player/FloorLadder.d.cts +1 -0
  24. package/lib/player/HlsEngine.d.cts +1 -0
  25. package/lib/player/OptimizedPodRequest.cjs +719 -0
  26. package/lib/player/OptimizedPodRequest.cjs.map +1 -0
  27. package/lib/player/OptimizedPodRequest.d.cts +101 -0
  28. package/lib/player/PlayerControls.d.cts +1 -0
  29. package/lib/player/Scte35CueManager.d.cts +1 -0
  30. package/lib/player/Scte35Parser.d.cts +1 -0
  31. package/lib/player/StormcloudVideoPlayer.cjs +987 -273
  32. package/lib/player/StormcloudVideoPlayer.cjs.map +1 -1
  33. package/lib/player/StormcloudVideoPlayer.d.cts +1 -0
  34. package/lib/player/playerTypes.d.cts +1 -0
  35. package/lib/players/HlsPlayer.cjs +987 -273
  36. package/lib/players/HlsPlayer.cjs.map +1 -1
  37. package/lib/players/HlsPlayer.d.cts +1 -0
  38. package/lib/players/index.cjs +987 -273
  39. package/lib/players/index.cjs.map +1 -1
  40. package/lib/props.d.cts +1 -0
  41. package/lib/sdk/hlsAdPlayer.cjs +316 -51
  42. package/lib/sdk/hlsAdPlayer.cjs.map +1 -1
  43. package/lib/sdk/hlsAdPlayer.d.cts +3 -1
  44. package/lib/sdk/pal.cjs +108 -83
  45. package/lib/sdk/pal.cjs.map +1 -1
  46. package/lib/sdk/pal.d.cts +1 -0
  47. package/lib/types.d.cts +9 -2
  48. package/lib/ui/StormcloudVideoPlayer.cjs +990 -278
  49. package/lib/ui/StormcloudVideoPlayer.cjs.map +1 -1
  50. package/lib/ui/StormcloudVideoPlayer.d.cts +1 -0
  51. package/lib/utils/ctvVastSignals.cjs +9 -7
  52. package/lib/utils/ctvVastSignals.cjs.map +1 -1
  53. package/lib/utils/tracking.cjs +17 -3
  54. package/lib/utils/tracking.cjs.map +1 -1
  55. package/lib/utils/tracking.d.cts +2 -1
  56. package/lib/utils/vastEnvironmentSignals.cjs +9 -7
  57. package/lib/utils/vastEnvironmentSignals.cjs.map +1 -1
  58. package/lib/utils/vastMacros.cjs +250 -10
  59. package/lib/utils/vastMacros.cjs.map +1 -1
  60. package/lib/utils/vastMacros.d.cts +13 -4
  61. package/package.json +5 -3
package/lib/props.d.cts CHANGED
@@ -1,6 +1,7 @@
1
1
  import { CSSProperties } from 'react';
2
2
  import { StormcloudVideoPlayer } from './player/StormcloudVideoPlayer.cjs';
3
3
  import './types.cjs';
4
+ import './player/OptimizedPodRequest.cjs';
4
5
  import './player/FloorLadder.cjs';
5
6
 
6
7
  interface OnProgressProps {
@@ -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
- fetch(vastTagUrl, _object_spread({
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
- 10,
1589
- 11,
1590
- 12
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
- 8
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
- 8
1887
+ 5
1609
1888
  ];
1610
1889
  case 4:
1611
1890
  error = _state.sent();
1612
- if (!(credentials !== "omit" && !(controller === null || controller === void 0 ? void 0 : controller.signal.aborted))) return [
1613
- 3,
1614
- 6
1615
- ];
1616
- console.warn('[HlsAdPlayer] VAST fetch failed with credentials="'.concat(credentials, '", retrying without credentials:'), error);
1617
- logFunnel("vast_credentials_retry", {
1618
- errorMessage: error === null || error === void 0 ? void 0 : error.message
1619
- });
1620
- return [
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 7:
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 9:
1909
+ case 6:
1646
1910
  return [
1647
1911
  2,
1648
1912
  _state.sent()
1649
1913
  ];
1650
- case 10:
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 11:
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 12:
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" : "include", source)
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