stormcloud-video-player 0.8.70 → 0.8.72

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.
@@ -6401,6 +6401,10 @@ function toNumber(val) {
6401
6401
  var n = typeof val === "string" ? parseFloat(val) : Number(val);
6402
6402
  return Number.isNaN(n) ? void 0 : n;
6403
6403
  }
6404
+ function getDateRangeDurationSeconds(attrs) {
6405
+ var _toNumber;
6406
+ return (_toNumber = toNumber(attrs["DURATION"])) !== null && _toNumber !== void 0 ? _toNumber : toNumber(attrs["PLANNED-DURATION"]);
6407
+ }
6404
6408
  function isManifestBasedMarker(marker) {
6405
6409
  var raw = marker.raw;
6406
6410
  if (!raw) return false;
@@ -8766,11 +8770,13 @@ var HlsEngine = /*#__PURE__*/ function() {
8766
8770
  }
8767
8771
  }
8768
8772
  if (!tag) continue;
8773
+ if (tag.includes("EXT-X-CUE-OUT-CONT")) continue;
8769
8774
  if (tag.includes("EXT-X-CUE-OUT") || tag.includes("EXT-X-DATERANGE")) {
8770
- var attrs = tag.includes("EXT-X-DATERANGE") ? parseAttributeList(value) : {};
8775
+ var isDateRange = tag.includes("EXT-X-DATERANGE");
8776
+ var attrs = isDateRange ? parseAttributeList(value) : {};
8771
8777
  var hasScteOut = tag.includes("EXT-X-CUE-OUT") || "SCTE35-OUT" in attrs || attrs["SCTE35-OUT"] !== void 0;
8772
8778
  if (hasScteOut) {
8773
- var durationSeconds = parseCueOutDuration(value);
8779
+ var durationSeconds = isDateRange ? getDateRangeDurationSeconds(attrs) : parseCueOutDuration(value);
8774
8780
  var marker = _object_spread_props(_object_spread({
8775
8781
  type: "start"
8776
8782
  }, durationSeconds !== void 0 ? {
@@ -8944,7 +8950,7 @@ var HlsEngine = /*#__PURE__*/ function() {
8944
8950
  var hasScteOut = "SCTE35-OUT" in attrs || attrs["SCTE35-OUT"] !== void 0;
8945
8951
  var hasScteIn = "SCTE35-IN" in attrs || attrs["SCTE35-IN"] !== void 0;
8946
8952
  var klass = String((_attrs_CLASS = attrs["CLASS"]) !== null && _attrs_CLASS !== void 0 ? _attrs_CLASS : "");
8947
- var duration = toNumber(attrs["DURATION"]);
8953
+ var duration = getDateRangeDurationSeconds(attrs);
8948
8954
  if (hasScteOut || /com\.apple\.hls\.cue/i.test(klass)) {
8949
8955
  var marker2 = _object_spread_props(_object_spread({
8950
8956
  type: "start"
@@ -9211,19 +9217,31 @@ var HlsEngine = /*#__PURE__*/ function() {
9211
9217
  // src/player/EdgePodRequest.ts
9212
9218
  var EDGE_POD_MAX_ADS = 10;
9213
9219
  var EDGE_POD_EXCEEDS_BUDGET = "edge_pod_exceeds_budget";
9220
+ var LICENSE_KEY_PLACEHOLDER = /\{licenseKey\}|%7BlicenseKey%7D/gi;
9214
9221
  function resolveEdgePodBaseUrl(config) {
9215
- var _config_edgePodUrl;
9222
+ var _config_edgePodUrl, _config_licenseKey;
9216
9223
  if (config.enableEdgePodRequest !== true) return void 0;
9217
9224
  var raw = (_config_edgePodUrl = config.edgePodUrl) === null || _config_edgePodUrl === void 0 ? void 0 : _config_edgePodUrl.trim();
9218
9225
  if (!raw) {
9219
9226
  console.warn("[AdBreak][EDGE] enableEdgePodRequest is true but edgePodUrl is missing; using GAM only");
9220
9227
  return void 0;
9221
9228
  }
9229
+ var licenseKey = (_config_licenseKey = config.licenseKey) === null || _config_licenseKey === void 0 ? void 0 : _config_licenseKey.trim();
9230
+ if (!licenseKey) {
9231
+ console.warn("[AdBreak][EDGE] enableEdgePodRequest is true but licenseKey is missing; using GAM only");
9232
+ return void 0;
9233
+ }
9234
+ var encodedKey = encodeURIComponent(licenseKey);
9222
9235
  try {
9223
- var url = new URL(raw);
9236
+ var hasPlaceholder = raw.search(LICENSE_KEY_PLACEHOLDER) !== -1;
9237
+ var url = new URL(hasPlaceholder ? raw.replace(LICENSE_KEY_PLACEHOLDER, encodedKey) : raw);
9224
9238
  if (url.protocol !== "https:" && url.protocol !== "http:") {
9225
9239
  throw new Error("unsupported protocol ".concat(url.protocol));
9226
9240
  }
9241
+ if (!hasPlaceholder) {
9242
+ var path = url.pathname.replace(/\/+$/, "");
9243
+ url.pathname = /\/[^/]+\/pod$/.test(path) ? path.replace(/\/[^/]+\/pod$/, "/".concat(encodedKey, "/pod")) : "".concat(path, "/").concat(encodedKey, "/pod");
9244
+ }
9227
9245
  return url.toString();
9228
9246
  } catch (unused) {
9229
9247
  console.warn("[AdBreak][EDGE] edgePodUrl is not a valid http(s) URL; using GAM only");
@@ -11701,6 +11719,25 @@ var StormcloudVideoPlayer = /*#__PURE__*/ function() {
11701
11719
  return this.floorLadderEnabled;
11702
11720
  }
11703
11721
  },
11722
+ {
11723
+ key: "setEdgePodRequest",
11724
+ value: function setEdgePodRequest(update) {
11725
+ if (update.enableEdgePodRequest === this.config.enableEdgePodRequest && update.edgePodUrl === this.config.edgePodUrl) {
11726
+ return;
11727
+ }
11728
+ if (update.enableEdgePodRequest === void 0) delete this.config.enableEdgePodRequest;
11729
+ else this.config.enableEdgePodRequest = update.enableEdgePodRequest;
11730
+ if (update.edgePodUrl === void 0) delete this.config.edgePodUrl;
11731
+ else this.config.edgePodUrl = update.edgePodUrl;
11732
+ this.edgePodBaseUrl = resolveEdgePodBaseUrl(this.config);
11733
+ }
11734
+ },
11735
+ {
11736
+ key: "getEdgePodUrl",
11737
+ value: function getEdgePodUrl() {
11738
+ return this.edgePodBaseUrl;
11739
+ }
11740
+ },
11704
11741
  {
11705
11742
  key: "warnOnInvalidFloorLadder",
11706
11743
  value: function warnOnInvalidFloorLadder(report) {
@@ -12539,9 +12576,7 @@ var CRITICAL_PROPS = [
12539
12576
  "ctvAdRequest",
12540
12577
  "adFloorMinCents",
12541
12578
  "adFloorMaxCents",
12542
- "adFloorStepCents",
12543
- "enableEdgePodRequest",
12544
- "edgePodUrl"
12579
+ "adFloorStepCents"
12545
12580
  ];
12546
12581
  var CONTROLS_HIDE_DELAY = 3e3;
12547
12582
  var DEFAULT_PLAYER_ASPECT_RATIO = 16 / 9;
@@ -12740,9 +12775,7 @@ var StormcloudVideoPlayerComponent = import_react.default.memo(function(props) {
12740
12775
  vastMode,
12741
12776
  adFloorMinCents,
12742
12777
  adFloorMaxCents,
12743
- adFloorStepCents,
12744
- enableEdgePodRequest,
12745
- edgePodUrl
12778
+ adFloorStepCents
12746
12779
  ]);
12747
12780
  (0, import_react.useEffect)(function() {
12748
12781
  if (typeof window === "undefined") return;
@@ -12855,6 +12888,17 @@ var StormcloudVideoPlayerComponent = import_react.default.memo(function(props) {
12855
12888
  }, [
12856
12889
  adFloorLadderEnabled
12857
12890
  ]);
12891
+ (0, import_react.useEffect)(function() {
12892
+ if (!playerRef.current) return;
12893
+ playerRef.current.setEdgePodRequest(_object_spread({}, enableEdgePodRequest !== void 0 ? {
12894
+ enableEdgePodRequest: enableEdgePodRequest
12895
+ } : {}, edgePodUrl !== void 0 ? {
12896
+ edgePodUrl: edgePodUrl
12897
+ } : {}));
12898
+ }, [
12899
+ enableEdgePodRequest,
12900
+ edgePodUrl
12901
+ ]);
12858
12902
  (0, import_react.useEffect)(function() {
12859
12903
  if (!playerRef.current) return;
12860
12904
  var checkAdStatus = function checkAdStatus() {
@@ -13931,7 +13975,7 @@ var StormcloudVideoPlayerComponent = import_react.default.memo(function(props) {
13931
13975
  }
13932
13976
  }
13933
13977
  }
13934
- if (prevProps.adFloorLadderEnabled !== nextProps.adFloorLadderEnabled) {
13978
+ if (prevProps.adFloorLadderEnabled !== nextProps.adFloorLadderEnabled || prevProps.enableEdgePodRequest !== nextProps.enableEdgePodRequest || prevProps.edgePodUrl !== nextProps.edgePodUrl) {
13935
13979
  return false;
13936
13980
  }
13937
13981
  if (JSON.stringify((_prevProps_adFloorLadder = prevProps.adFloorLadder) !== null && _prevProps_adFloorLadder !== void 0 ? _prevProps_adFloorLadder : null) !== JSON.stringify((_nextProps_adFloorLadder = nextProps.adFloorLadder) !== null && _nextProps_adFloorLadder !== void 0 ? _nextProps_adFloorLadder : null)) {