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.
- package/dist/stormcloud-vp.min.js +1 -1
- package/lib/StormcloudPlayer.cjs +42 -5
- package/lib/StormcloudPlayer.cjs.map +1 -1
- package/lib/index.cjs +56 -12
- package/lib/index.cjs.map +1 -1
- package/lib/index.d.ts +6 -1
- package/lib/index.js +56 -12
- package/lib/index.js.map +1 -1
- package/lib/player/EdgePodRequest.cjs +14 -2
- package/lib/player/EdgePodRequest.cjs.map +1 -1
- package/lib/player/EdgePodRequest.d.cts +1 -1
- package/lib/player/HlsEngine.cjs +9 -3
- package/lib/player/HlsEngine.cjs.map +1 -1
- package/lib/player/Scte35Parser.cjs +8 -0
- package/lib/player/Scte35Parser.cjs.map +1 -1
- package/lib/player/Scte35Parser.d.cts +2 -1
- package/lib/player/StormcloudVideoPlayer.cjs +42 -5
- package/lib/player/StormcloudVideoPlayer.cjs.map +1 -1
- package/lib/player/StormcloudVideoPlayer.d.cts +6 -1
- package/lib/players/HlsPlayer.cjs +42 -5
- package/lib/players/HlsPlayer.cjs.map +1 -1
- package/lib/players/index.cjs +42 -5
- package/lib/players/index.cjs.map +1 -1
- package/lib/ui/StormcloudVideoPlayer.cjs +56 -12
- package/lib/ui/StormcloudVideoPlayer.cjs.map +1 -1
- package/package.json +1 -1
package/lib/index.d.ts
CHANGED
|
@@ -258,7 +258,7 @@ declare class StormcloudVideoPlayer {
|
|
|
258
258
|
private readonly adBreak;
|
|
259
259
|
private readonly floorLadder;
|
|
260
260
|
private floorLadderEnabled;
|
|
261
|
-
private
|
|
261
|
+
private edgePodBaseUrl;
|
|
262
262
|
constructor(config: StormcloudVideoPlayerConfig);
|
|
263
263
|
private get debug();
|
|
264
264
|
private createAdPlayer;
|
|
@@ -266,6 +266,11 @@ declare class StormcloudVideoPlayer {
|
|
|
266
266
|
setAdFloorLadder(update: Partial<AdFloorLadderConfig>): FloorLadderValidationReport;
|
|
267
267
|
setAdFloorLadderEnabled(enabled: boolean): void;
|
|
268
268
|
isAdFloorLadderEnabled(): boolean;
|
|
269
|
+
setEdgePodRequest(update: {
|
|
270
|
+
enableEdgePodRequest?: boolean;
|
|
271
|
+
edgePodUrl?: string;
|
|
272
|
+
}): void;
|
|
273
|
+
getEdgePodUrl(): string | undefined;
|
|
269
274
|
private warnOnInvalidFloorLadder;
|
|
270
275
|
getAdFloorLadder(): AdFloorLadderConfig;
|
|
271
276
|
getAdFloorBounds(): FloorLadderBounds;
|
package/lib/index.js
CHANGED
|
@@ -6413,6 +6413,10 @@ function toNumber(val) {
|
|
|
6413
6413
|
var n = typeof val === "string" ? parseFloat(val) : Number(val);
|
|
6414
6414
|
return Number.isNaN(n) ? void 0 : n;
|
|
6415
6415
|
}
|
|
6416
|
+
function getDateRangeDurationSeconds(attrs) {
|
|
6417
|
+
var _toNumber;
|
|
6418
|
+
return (_toNumber = toNumber(attrs["DURATION"])) !== null && _toNumber !== void 0 ? _toNumber : toNumber(attrs["PLANNED-DURATION"]);
|
|
6419
|
+
}
|
|
6416
6420
|
function isManifestBasedMarker(marker) {
|
|
6417
6421
|
var raw = marker.raw;
|
|
6418
6422
|
if (!raw) return false;
|
|
@@ -8784,11 +8788,13 @@ var HlsEngine = /*#__PURE__*/ function() {
|
|
|
8784
8788
|
}
|
|
8785
8789
|
}
|
|
8786
8790
|
if (!tag) continue;
|
|
8791
|
+
if (tag.includes("EXT-X-CUE-OUT-CONT")) continue;
|
|
8787
8792
|
if (tag.includes("EXT-X-CUE-OUT") || tag.includes("EXT-X-DATERANGE")) {
|
|
8788
|
-
var
|
|
8793
|
+
var isDateRange = tag.includes("EXT-X-DATERANGE");
|
|
8794
|
+
var attrs = isDateRange ? parseAttributeList(value) : {};
|
|
8789
8795
|
var hasScteOut = tag.includes("EXT-X-CUE-OUT") || "SCTE35-OUT" in attrs || attrs["SCTE35-OUT"] !== void 0;
|
|
8790
8796
|
if (hasScteOut) {
|
|
8791
|
-
var durationSeconds = parseCueOutDuration(value);
|
|
8797
|
+
var durationSeconds = isDateRange ? getDateRangeDurationSeconds(attrs) : parseCueOutDuration(value);
|
|
8792
8798
|
var marker = _object_spread_props(_object_spread({
|
|
8793
8799
|
type: "start"
|
|
8794
8800
|
}, durationSeconds !== void 0 ? {
|
|
@@ -8962,7 +8968,7 @@ var HlsEngine = /*#__PURE__*/ function() {
|
|
|
8962
8968
|
var hasScteOut = "SCTE35-OUT" in attrs || attrs["SCTE35-OUT"] !== void 0;
|
|
8963
8969
|
var hasScteIn = "SCTE35-IN" in attrs || attrs["SCTE35-IN"] !== void 0;
|
|
8964
8970
|
var klass = String((_attrs_CLASS = attrs["CLASS"]) !== null && _attrs_CLASS !== void 0 ? _attrs_CLASS : "");
|
|
8965
|
-
var duration =
|
|
8971
|
+
var duration = getDateRangeDurationSeconds(attrs);
|
|
8966
8972
|
if (hasScteOut || /com\.apple\.hls\.cue/i.test(klass)) {
|
|
8967
8973
|
var marker2 = _object_spread_props(_object_spread({
|
|
8968
8974
|
type: "start"
|
|
@@ -9229,19 +9235,31 @@ var HlsEngine = /*#__PURE__*/ function() {
|
|
|
9229
9235
|
// src/player/EdgePodRequest.ts
|
|
9230
9236
|
var EDGE_POD_MAX_ADS = 10;
|
|
9231
9237
|
var EDGE_POD_EXCEEDS_BUDGET = "edge_pod_exceeds_budget";
|
|
9238
|
+
var LICENSE_KEY_PLACEHOLDER = /\{licenseKey\}|%7BlicenseKey%7D/gi;
|
|
9232
9239
|
function resolveEdgePodBaseUrl(config) {
|
|
9233
|
-
var _config_edgePodUrl;
|
|
9240
|
+
var _config_edgePodUrl, _config_licenseKey;
|
|
9234
9241
|
if (config.enableEdgePodRequest !== true) return void 0;
|
|
9235
9242
|
var raw = (_config_edgePodUrl = config.edgePodUrl) === null || _config_edgePodUrl === void 0 ? void 0 : _config_edgePodUrl.trim();
|
|
9236
9243
|
if (!raw) {
|
|
9237
9244
|
console.warn("[AdBreak][EDGE] enableEdgePodRequest is true but edgePodUrl is missing; using GAM only");
|
|
9238
9245
|
return void 0;
|
|
9239
9246
|
}
|
|
9247
|
+
var licenseKey = (_config_licenseKey = config.licenseKey) === null || _config_licenseKey === void 0 ? void 0 : _config_licenseKey.trim();
|
|
9248
|
+
if (!licenseKey) {
|
|
9249
|
+
console.warn("[AdBreak][EDGE] enableEdgePodRequest is true but licenseKey is missing; using GAM only");
|
|
9250
|
+
return void 0;
|
|
9251
|
+
}
|
|
9252
|
+
var encodedKey = encodeURIComponent(licenseKey);
|
|
9240
9253
|
try {
|
|
9241
|
-
var
|
|
9254
|
+
var hasPlaceholder = raw.search(LICENSE_KEY_PLACEHOLDER) !== -1;
|
|
9255
|
+
var url = new URL(hasPlaceholder ? raw.replace(LICENSE_KEY_PLACEHOLDER, encodedKey) : raw);
|
|
9242
9256
|
if (url.protocol !== "https:" && url.protocol !== "http:") {
|
|
9243
9257
|
throw new Error("unsupported protocol ".concat(url.protocol));
|
|
9244
9258
|
}
|
|
9259
|
+
if (!hasPlaceholder) {
|
|
9260
|
+
var path = url.pathname.replace(/\/+$/, "");
|
|
9261
|
+
url.pathname = /\/[^/]+\/pod$/.test(path) ? path.replace(/\/[^/]+\/pod$/, "/".concat(encodedKey, "/pod")) : "".concat(path, "/").concat(encodedKey, "/pod");
|
|
9262
|
+
}
|
|
9245
9263
|
return url.toString();
|
|
9246
9264
|
} catch (unused) {
|
|
9247
9265
|
console.warn("[AdBreak][EDGE] edgePodUrl is not a valid http(s) URL; using GAM only");
|
|
@@ -11721,6 +11739,25 @@ var StormcloudVideoPlayer = /*#__PURE__*/ function() {
|
|
|
11721
11739
|
return this.floorLadderEnabled;
|
|
11722
11740
|
}
|
|
11723
11741
|
},
|
|
11742
|
+
{
|
|
11743
|
+
key: "setEdgePodRequest",
|
|
11744
|
+
value: function setEdgePodRequest(update) {
|
|
11745
|
+
if (update.enableEdgePodRequest === this.config.enableEdgePodRequest && update.edgePodUrl === this.config.edgePodUrl) {
|
|
11746
|
+
return;
|
|
11747
|
+
}
|
|
11748
|
+
if (update.enableEdgePodRequest === void 0) delete this.config.enableEdgePodRequest;
|
|
11749
|
+
else this.config.enableEdgePodRequest = update.enableEdgePodRequest;
|
|
11750
|
+
if (update.edgePodUrl === void 0) delete this.config.edgePodUrl;
|
|
11751
|
+
else this.config.edgePodUrl = update.edgePodUrl;
|
|
11752
|
+
this.edgePodBaseUrl = resolveEdgePodBaseUrl(this.config);
|
|
11753
|
+
}
|
|
11754
|
+
},
|
|
11755
|
+
{
|
|
11756
|
+
key: "getEdgePodUrl",
|
|
11757
|
+
value: function getEdgePodUrl() {
|
|
11758
|
+
return this.edgePodBaseUrl;
|
|
11759
|
+
}
|
|
11760
|
+
},
|
|
11724
11761
|
{
|
|
11725
11762
|
key: "warnOnInvalidFloorLadder",
|
|
11726
11763
|
value: function warnOnInvalidFloorLadder(report) {
|
|
@@ -12559,9 +12596,7 @@ var CRITICAL_PROPS = [
|
|
|
12559
12596
|
"ctvAdRequest",
|
|
12560
12597
|
"adFloorMinCents",
|
|
12561
12598
|
"adFloorMaxCents",
|
|
12562
|
-
"adFloorStepCents"
|
|
12563
|
-
"enableEdgePodRequest",
|
|
12564
|
-
"edgePodUrl"
|
|
12599
|
+
"adFloorStepCents"
|
|
12565
12600
|
];
|
|
12566
12601
|
var CONTROLS_HIDE_DELAY = 3e3;
|
|
12567
12602
|
var DEFAULT_PLAYER_ASPECT_RATIO = 16 / 9;
|
|
@@ -12760,9 +12795,7 @@ var StormcloudVideoPlayerComponent = React.memo(function(props) {
|
|
|
12760
12795
|
vastMode,
|
|
12761
12796
|
adFloorMinCents,
|
|
12762
12797
|
adFloorMaxCents,
|
|
12763
|
-
adFloorStepCents
|
|
12764
|
-
enableEdgePodRequest,
|
|
12765
|
-
edgePodUrl
|
|
12798
|
+
adFloorStepCents
|
|
12766
12799
|
]);
|
|
12767
12800
|
useEffect(function() {
|
|
12768
12801
|
if (typeof window === "undefined") return;
|
|
@@ -12875,6 +12908,17 @@ var StormcloudVideoPlayerComponent = React.memo(function(props) {
|
|
|
12875
12908
|
}, [
|
|
12876
12909
|
adFloorLadderEnabled
|
|
12877
12910
|
]);
|
|
12911
|
+
useEffect(function() {
|
|
12912
|
+
if (!playerRef.current) return;
|
|
12913
|
+
playerRef.current.setEdgePodRequest(_object_spread({}, enableEdgePodRequest !== void 0 ? {
|
|
12914
|
+
enableEdgePodRequest: enableEdgePodRequest
|
|
12915
|
+
} : {}, edgePodUrl !== void 0 ? {
|
|
12916
|
+
edgePodUrl: edgePodUrl
|
|
12917
|
+
} : {}));
|
|
12918
|
+
}, [
|
|
12919
|
+
enableEdgePodRequest,
|
|
12920
|
+
edgePodUrl
|
|
12921
|
+
]);
|
|
12878
12922
|
useEffect(function() {
|
|
12879
12923
|
if (!playerRef.current) return;
|
|
12880
12924
|
var checkAdStatus = function checkAdStatus() {
|
|
@@ -13951,7 +13995,7 @@ var StormcloudVideoPlayerComponent = React.memo(function(props) {
|
|
|
13951
13995
|
}
|
|
13952
13996
|
}
|
|
13953
13997
|
}
|
|
13954
|
-
if (prevProps.adFloorLadderEnabled !== nextProps.adFloorLadderEnabled) {
|
|
13998
|
+
if (prevProps.adFloorLadderEnabled !== nextProps.adFloorLadderEnabled || prevProps.enableEdgePodRequest !== nextProps.enableEdgePodRequest || prevProps.edgePodUrl !== nextProps.edgePodUrl) {
|
|
13955
13999
|
return false;
|
|
13956
14000
|
}
|
|
13957
14001
|
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)) {
|