stormcloud-video-player 0.8.68 → 0.8.70
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 +2 -2
- package/lib/Player.cjs +30 -8
- package/lib/Player.cjs.map +1 -1
- package/lib/Player.d.cts +2 -1
- package/lib/StormcloudPlayer.cjs +6104 -5114
- package/lib/StormcloudPlayer.cjs.map +1 -1
- package/lib/StormcloudPlayer.d.cts +1 -0
- package/lib/index.cjs +6217 -5149
- package/lib/index.cjs.map +1 -1
- package/lib/index.d.cts +2 -1
- package/lib/index.d.ts +93 -2
- package/lib/index.js +6199 -5158
- package/lib/index.js.map +1 -1
- package/lib/player/AdBreakOrchestrator.cjs +669 -131
- package/lib/player/AdBreakOrchestrator.cjs.map +1 -1
- package/lib/player/AdBreakOrchestrator.d.cts +27 -3
- package/lib/player/EdgePodRequest.cjs +136 -0
- package/lib/player/EdgePodRequest.cjs.map +1 -0
- package/lib/player/EdgePodRequest.d.cts +14 -0
- package/lib/player/FloorLadder.cjs +578 -0
- package/lib/player/FloorLadder.cjs.map +1 -0
- package/lib/player/FloorLadder.d.cts +74 -0
- package/lib/player/StormcloudVideoPlayer.cjs +6104 -5114
- package/lib/player/StormcloudVideoPlayer.cjs.map +1 -1
- package/lib/player/StormcloudVideoPlayer.d.cts +13 -1
- package/lib/players/HlsPlayer.cjs +6104 -5114
- package/lib/players/HlsPlayer.cjs.map +1 -1
- package/lib/players/index.cjs +6104 -5114
- package/lib/players/index.cjs.map +1 -1
- package/lib/props.cjs +30 -8
- package/lib/props.cjs.map +1 -1
- package/lib/props.d.cts +1 -0
- package/lib/sdk/hlsAdPlayer.cjs +120 -19
- package/lib/sdk/hlsAdPlayer.cjs.map +1 -1
- package/lib/types.d.cts +30 -2
- package/lib/ui/StormcloudVideoPlayer.cjs +6169 -5129
- package/lib/ui/StormcloudVideoPlayer.cjs.map +1 -1
- package/lib/ui/StormcloudVideoPlayer.d.cts +1 -0
- package/lib/utils/vastMacros.cjs +4 -0
- package/lib/utils/vastMacros.cjs.map +1 -1
- package/lib/utils/vastMacros.d.cts +2 -1
- package/package.json +1 -1
package/lib/props.cjs
CHANGED
|
@@ -95,14 +95,6 @@ __export(props_exports, {
|
|
|
95
95
|
}
|
|
96
96
|
});
|
|
97
97
|
module.exports = __toCommonJS(props_exports);
|
|
98
|
-
// src/sdk/hlsAdPlayer.ts
|
|
99
|
-
var import_hls = __toESM(require("hls.js"), 1);
|
|
100
|
-
// src/utils/trackingIngest.ts
|
|
101
|
-
var DEFAULT_TRACKING_INGEST_CONFIG = {
|
|
102
|
-
enabled: true,
|
|
103
|
-
baseUrl: "https://player-analytics-ingest-api-760490581852.us-central1.run.app/api/adstorm/player-tracking"
|
|
104
|
-
};
|
|
105
|
-
var trackingIngestConfig = _object_spread({}, DEFAULT_TRACKING_INGEST_CONFIG);
|
|
106
98
|
// src/utils/vastEnvironmentSignals.ts
|
|
107
99
|
var DEVICE_TYPE_HINT = {
|
|
108
100
|
FEATURE_PHONE: 1,
|
|
@@ -131,6 +123,36 @@ var DEVICE_TYPE_HINT_ALIASES = {
|
|
|
131
123
|
settopbox: DEVICE_TYPE_HINT.SET_TOP_BOX
|
|
132
124
|
};
|
|
133
125
|
var PERSISTENT_ID_COOKIE_MAX_AGE = 60 * 60 * 24 * 365 * 5;
|
|
126
|
+
// src/player/FloorLadder.ts
|
|
127
|
+
var DEFAULT_WEB_FLOOR_LADDER_CONFIG = Object.freeze({
|
|
128
|
+
enabled: false,
|
|
129
|
+
targetingKey: "airytv_web_floor",
|
|
130
|
+
minFloorCents: 25,
|
|
131
|
+
maxFloorCents: 300,
|
|
132
|
+
stepCents: 25,
|
|
133
|
+
selectedFloorCents: 25,
|
|
134
|
+
fallbackFloorCents: 25,
|
|
135
|
+
readyFloorCents: [],
|
|
136
|
+
mode: "fixed",
|
|
137
|
+
allowedPositions: [
|
|
138
|
+
"midroll"
|
|
139
|
+
],
|
|
140
|
+
targetAdUnitPath: "/21821455290/airytvadx/airytv-web",
|
|
141
|
+
configurationVersion: "2026-09-29.1"
|
|
142
|
+
});
|
|
143
|
+
var DEFAULT_FLOOR_LADDER_BOUNDS = Object.freeze({
|
|
144
|
+
minCents: 25,
|
|
145
|
+
maxCents: 300,
|
|
146
|
+
stepCents: 25
|
|
147
|
+
});
|
|
148
|
+
// src/sdk/hlsAdPlayer.ts
|
|
149
|
+
var import_hls = __toESM(require("hls.js"), 1);
|
|
150
|
+
// src/utils/trackingIngest.ts
|
|
151
|
+
var DEFAULT_TRACKING_INGEST_CONFIG = {
|
|
152
|
+
enabled: true,
|
|
153
|
+
baseUrl: "https://player-analytics-ingest-api-760490581852.us-central1.run.app/api/adstorm/player-tracking"
|
|
154
|
+
};
|
|
155
|
+
var trackingIngestConfig = _object_spread({}, DEFAULT_TRACKING_INGEST_CONFIG);
|
|
134
156
|
// src/player/HlsEngine.ts
|
|
135
157
|
var import_hls2 = __toESM(require("hls.js"), 1);
|
|
136
158
|
// src/props.ts
|
package/lib/props.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["d:\\project\\stormcloud-vp\\lib\\props.cjs"],"names":["__create","Object","create","__defProp","defineProperty","__getOwnPropDesc","getOwnPropertyDescriptor","__getOwnPropNames","getOwnPropertyNames","__getProtoOf","getPrototypeOf","__hasOwnProp","prototype","hasOwnProperty","__export","target","all","name","get","enumerable","__copyProps","to","from","except","desc","key","call","__toESM","mod","isNodeMode","__esModule","value","__toCommonJS","props_exports","defaultProps","module","exports","
|
|
1
|
+
{"version":3,"sources":["d:\\project\\stormcloud-vp\\lib\\props.cjs"],"names":["__create","Object","create","__defProp","defineProperty","__getOwnPropDesc","getOwnPropertyDescriptor","__getOwnPropNames","getOwnPropertyNames","__getProtoOf","getPrototypeOf","__hasOwnProp","prototype","hasOwnProperty","__export","target","all","name","get","enumerable","__copyProps","to","from","except","desc","key","call","__toESM","mod","isNodeMode","__esModule","value","__toCommonJS","props_exports","defaultProps","module","exports","DEVICE_TYPE_HINT","FEATURE_PHONE","SMARTPHONE","DESKTOP","TABLET","CONNECTED_TV","GAME_CONSOLE","SET_TOP_BOX","DEVICE_TYPE_HINT_ALIASES","featurephone","smartphone","mobile","phone","desktop","pc","tablet","ctv","tv","connectedtv","smarttv","console","gameconsole","stb","settopbox","PERSISTENT_ID_COOKIE_MAX_AGE","DEFAULT_WEB_FLOOR_LADDER_CONFIG","freeze","enabled","targetingKey","minFloorCents","maxFloorCents","stepCents","selectedFloorCents","fallbackFloorCents","readyFloorCents","mode","allowedPositions","targetAdUnitPath","configurationVersion","DEFAULT_FLOOR_LADDER_BOUNDS","minCents","maxCents","import_hls","require","DEFAULT_TRACKING_INGEST_CONFIG","baseUrl","trackingIngestConfig","import_hls2","noop","playing","loop","controls","volume","muted","playbackRate","width","height","style","progressInterval","playsInline","autoplay","preload","poster","className","wrapperClassName","wrapperStyle","allowNativeHls","lowLatencyMode","driftToleranceMs","immediateManifestAds","debugAdTiming","showCustomControls","hideLoadingIndicator","licenseKey","isVmap","vmapUrl","adFailsafeTimeoutMs","minSegmentsBeforePlay","onStart","onPlay","onPause","onBuffer","onBufferEnd","onEnded","onError","onDuration","onSeek","onProgress","onVolumeToggle","onFullscreenToggle","onControlClick"],"mappings":"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","sourcesContent":["\"use strict\";\nvar __create = Object.create;\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __getProtoOf = Object.getPrototypeOf;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(\n // If the importer is in node compatibility mode or this is not an ESM\n // file that has been converted to a CommonJS file using a Babel-\n // compatible transform (i.e. \"__esModule\" has not been set), then set\n // \"default\" to the CommonJS \"module.exports\" for node compatibility.\n isNodeMode || !mod || !mod.__esModule ? __defProp(target, \"default\", { value: mod, enumerable: true }) : target,\n mod\n));\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/props.ts\nvar props_exports = {};\n__export(props_exports, {\n defaultProps: () => defaultProps\n});\nmodule.exports = __toCommonJS(props_exports);\n\n// src/utils/vastEnvironmentSignals.ts\nvar DEVICE_TYPE_HINT = {\n FEATURE_PHONE: 1,\n SMARTPHONE: 2,\n DESKTOP: 3,\n TABLET: 4,\n CONNECTED_TV: 5,\n GAME_CONSOLE: 6,\n SET_TOP_BOX: 7\n};\nvar DEVICE_TYPE_HINT_ALIASES = {\n featurephone: DEVICE_TYPE_HINT.FEATURE_PHONE,\n smartphone: DEVICE_TYPE_HINT.SMARTPHONE,\n mobile: DEVICE_TYPE_HINT.SMARTPHONE,\n phone: DEVICE_TYPE_HINT.SMARTPHONE,\n desktop: DEVICE_TYPE_HINT.DESKTOP,\n pc: DEVICE_TYPE_HINT.DESKTOP,\n tablet: DEVICE_TYPE_HINT.TABLET,\n ctv: DEVICE_TYPE_HINT.CONNECTED_TV,\n tv: DEVICE_TYPE_HINT.CONNECTED_TV,\n connectedtv: DEVICE_TYPE_HINT.CONNECTED_TV,\n smarttv: DEVICE_TYPE_HINT.CONNECTED_TV,\n console: DEVICE_TYPE_HINT.GAME_CONSOLE,\n gameconsole: DEVICE_TYPE_HINT.GAME_CONSOLE,\n stb: DEVICE_TYPE_HINT.SET_TOP_BOX,\n settopbox: DEVICE_TYPE_HINT.SET_TOP_BOX\n};\nvar PERSISTENT_ID_COOKIE_MAX_AGE = 60 * 60 * 24 * 365 * 5;\n\n// src/player/FloorLadder.ts\nvar DEFAULT_WEB_FLOOR_LADDER_CONFIG = Object.freeze({\n enabled: false,\n targetingKey: \"airytv_web_floor\",\n minFloorCents: 25,\n maxFloorCents: 300,\n stepCents: 25,\n selectedFloorCents: 25,\n fallbackFloorCents: 25,\n readyFloorCents: [],\n mode: \"fixed\",\n allowedPositions: [\"midroll\"],\n targetAdUnitPath: \"/21821455290/airytvadx/airytv-web\",\n configurationVersion: \"2026-09-29.1\"\n});\nvar DEFAULT_FLOOR_LADDER_BOUNDS = Object.freeze({\n minCents: 25,\n maxCents: 300,\n stepCents: 25\n});\n\n// src/sdk/hlsAdPlayer.ts\nvar import_hls = __toESM(require(\"hls.js\"), 1);\n\n// src/utils/trackingIngest.ts\nvar DEFAULT_TRACKING_INGEST_CONFIG = {\n enabled: true,\n baseUrl: \"https://player-analytics-ingest-api-760490581852.us-central1.run.app/api/adstorm/player-tracking\"\n};\nvar trackingIngestConfig = {\n ...DEFAULT_TRACKING_INGEST_CONFIG\n};\n\n// src/player/HlsEngine.ts\nvar import_hls2 = __toESM(require(\"hls.js\"), 1);\n\n// src/props.ts\nvar noop = () => {\n};\nvar defaultProps = {\n playing: false,\n loop: false,\n controls: true,\n volume: 1,\n muted: false,\n playbackRate: 1,\n width: \"100%\",\n height: \"auto\",\n style: {},\n progressInterval: 1e3,\n playsInline: false,\n autoplay: false,\n preload: \"metadata\",\n poster: \"\",\n className: \"\",\n wrapperClassName: \"\",\n wrapperStyle: {},\n allowNativeHls: false,\n lowLatencyMode: false,\n driftToleranceMs: 1e3,\n immediateManifestAds: true,\n debugAdTiming: false,\n showCustomControls: false,\n hideLoadingIndicator: false,\n licenseKey: \"\",\n isVmap: false,\n vmapUrl: \"\",\n adFailsafeTimeoutMs: 1e4,\n minSegmentsBeforePlay: 2,\n onStart: noop,\n onPlay: noop,\n onPause: noop,\n onBuffer: noop,\n onBufferEnd: noop,\n onEnded: noop,\n onError: noop,\n onDuration: noop,\n onSeek: noop,\n onProgress: noop,\n onVolumeToggle: noop,\n onFullscreenToggle: noop,\n onControlClick: noop\n};\n// Annotate the CommonJS export names for ESM import in node:\n0 && (module.exports = {\n defaultProps\n});\n"]}
|
package/lib/props.d.cts
CHANGED
package/lib/sdk/hlsAdPlayer.cjs
CHANGED
|
@@ -880,7 +880,7 @@ function createHlsAdPlayer(contentVideo, options) {
|
|
|
880
880
|
img.onload = null;
|
|
881
881
|
img.onerror = null;
|
|
882
882
|
inFlightBeacons.delete(img);
|
|
883
|
-
console.log("[HlsAdPlayer] Tracking pixel settled (".concat(outcome, "): ").concat(
|
|
883
|
+
console.log("[HlsAdPlayer] Tracking pixel settled (".concat(outcome, "): ").concat(trackingHost));
|
|
884
884
|
if (outcome !== "load") {
|
|
885
885
|
logFunnel("tracking_request_settled", {
|
|
886
886
|
reason: outcome,
|
|
@@ -898,7 +898,7 @@ function createHlsAdPlayer(contentVideo, options) {
|
|
|
898
898
|
return release("timeout");
|
|
899
899
|
}, BEACON_TIMEOUT_MS);
|
|
900
900
|
img.src = trackingUrl;
|
|
901
|
-
console.log("[HlsAdPlayer] Fired tracking pixel: ".concat(
|
|
901
|
+
console.log("[HlsAdPlayer] Fired tracking pixel: ".concat(trackingHost));
|
|
902
902
|
logFunnel("tracking_request_created", {
|
|
903
903
|
trackingHost: trackingHost,
|
|
904
904
|
errorCode: options2 === null || options2 === void 0 ? void 0 : options2.errorCode
|
|
@@ -1352,7 +1352,7 @@ function createHlsAdPlayer(contentVideo, options) {
|
|
|
1352
1352
|
});
|
|
1353
1353
|
}
|
|
1354
1354
|
if (parsed.type === "wrapper") {
|
|
1355
|
-
console.log("[HlsAdPlayer] VAST wrapper detected, following VASTAdTagURI: ".concat(parsed.vastAdTagUri));
|
|
1355
|
+
console.log("[HlsAdPlayer] VAST wrapper detected, following VASTAdTagURI: ".concat(redactUrl(parsed.vastAdTagUri)));
|
|
1356
1356
|
}
|
|
1357
1357
|
return parsed;
|
|
1358
1358
|
}
|
|
@@ -1544,8 +1544,8 @@ function createHlsAdPlayer(contentVideo, options) {
|
|
|
1544
1544
|
switch(_state.label){
|
|
1545
1545
|
case 0:
|
|
1546
1546
|
attempt++;
|
|
1547
|
-
if (kind
|
|
1548
|
-
logFunnel("
|
|
1547
|
+
if (kind !== "wrapper") {
|
|
1548
|
+
logFunnel("".concat(kind, "_http_request_sent"), {
|
|
1549
1549
|
attempt: attempt,
|
|
1550
1550
|
credentials: creds
|
|
1551
1551
|
});
|
|
@@ -1565,8 +1565,8 @@ function createHlsAdPlayer(contentVideo, options) {
|
|
|
1565
1565
|
];
|
|
1566
1566
|
case 1:
|
|
1567
1567
|
response = _state.sent();
|
|
1568
|
-
if (kind
|
|
1569
|
-
logFunnel("
|
|
1568
|
+
if (kind !== "wrapper") {
|
|
1569
|
+
logFunnel("".concat(kind, "_response_received"), {
|
|
1570
1570
|
attempt: attempt,
|
|
1571
1571
|
httpStatus: response.status,
|
|
1572
1572
|
ok: response.ok,
|
|
@@ -1736,8 +1736,7 @@ function createHlsAdPlayer(contentVideo, options) {
|
|
|
1736
1736
|
elapsedMs: Date.now() - fetchStartedAt
|
|
1737
1737
|
});
|
|
1738
1738
|
}
|
|
1739
|
-
console.log("[HlsAdPlayer] VAST XML received");
|
|
1740
|
-
console.log("[HlsAdPlayer] VAST XML content (first 2000 chars):", vastXml.substring(0, 2e3));
|
|
1739
|
+
console.log("[HlsAdPlayer] VAST XML received (length=".concat(vastXml.length, ")"));
|
|
1741
1740
|
parsed = parseVastXml(vastXml);
|
|
1742
1741
|
if (parsed.type === "empty") {
|
|
1743
1742
|
;
|
|
@@ -1778,16 +1777,35 @@ function createHlsAdPlayer(contentVideo, options) {
|
|
|
1778
1777
|
});
|
|
1779
1778
|
}).apply(this, arguments);
|
|
1780
1779
|
}
|
|
1780
|
+
function isEdgeEmptySentinelAd(adElement) {
|
|
1781
|
+
var _textOf;
|
|
1782
|
+
if ((adElement.getAttribute("id") || "").trim().toLowerCase() === "empty") {
|
|
1783
|
+
return true;
|
|
1784
|
+
}
|
|
1785
|
+
var inLine = adElement.querySelector(":scope > InLine");
|
|
1786
|
+
if (!inLine) return false;
|
|
1787
|
+
if (/^no ad available$/i.test((_textOf = textOf(inLine.querySelector(":scope > AdTitle"))) !== null && _textOf !== void 0 ? _textOf : "")) {
|
|
1788
|
+
return true;
|
|
1789
|
+
}
|
|
1790
|
+
var durations = Array.from(inLine.querySelectorAll(":scope > Creatives > Creative > Linear > Duration")).map(function(el) {
|
|
1791
|
+
return parseVastTime(textOf(el));
|
|
1792
|
+
});
|
|
1793
|
+
return durations.length > 0 && durations.every(function(seconds) {
|
|
1794
|
+
return seconds === 0;
|
|
1795
|
+
});
|
|
1796
|
+
}
|
|
1781
1797
|
function fetchAndParsePod(vastTagUrl) {
|
|
1798
|
+
var source = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : "gam";
|
|
1782
1799
|
return _async_to_generator(function() {
|
|
1783
|
-
var _root_getAttribute, _root_getAttribute1, vastXml, trimmedXml, xmlDoc, root, adElements, _root_getAttribute2, _empty_errorUrls, empty, _empty_errorCode, resolveAd, podElements, buffet, resolveAll, ads, _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, ad, err, _iteratorNormalCompletion1, _didIteratorError1, _iteratorError1, _iterator1, _step1, ad1, err;
|
|
1800
|
+
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;
|
|
1784
1801
|
return _ts_generator(this, function(_state) {
|
|
1785
1802
|
switch(_state.label){
|
|
1786
1803
|
case 0:
|
|
1787
1804
|
lastPodAdElementCount = 0;
|
|
1805
|
+
isEdge = source === "edge";
|
|
1788
1806
|
return [
|
|
1789
1807
|
4,
|
|
1790
|
-
fetchVastXml(vastTagUrl)
|
|
1808
|
+
fetchVastXml(vastTagUrl, isEdge ? "omit" : "include", source)
|
|
1791
1809
|
];
|
|
1792
1810
|
case 1:
|
|
1793
1811
|
vastXml = _state.sent();
|
|
@@ -1810,7 +1828,6 @@ function createHlsAdPlayer(contentVideo, options) {
|
|
|
1810
1828
|
}
|
|
1811
1829
|
xmlDoc = parseXml(vastXml);
|
|
1812
1830
|
if (!xmlDoc) {
|
|
1813
|
-
console.error("[HlsAdPlayer] Pod VAST XML content (first 2000 chars):", vastXml.substring(0, 2e3));
|
|
1814
1831
|
logFunnel("vast_parsed", {
|
|
1815
1832
|
adElementCount: 0,
|
|
1816
1833
|
reason: "xml_parse_error"
|
|
@@ -1882,12 +1899,24 @@ function createHlsAdPlayer(contentVideo, options) {
|
|
|
1882
1899
|
});
|
|
1883
1900
|
})();
|
|
1884
1901
|
};
|
|
1885
|
-
|
|
1902
|
+
candidates = adElements;
|
|
1903
|
+
if (isEdge) {
|
|
1904
|
+
candidates = adElements.filter(function(el) {
|
|
1905
|
+
return !isEdgeEmptySentinelAd(el);
|
|
1906
|
+
});
|
|
1907
|
+
if (candidates.length < adElements.length) {
|
|
1908
|
+
logFunnel("edge_empty_sentinel", {
|
|
1909
|
+
sentinelCount: adElements.length - candidates.length,
|
|
1910
|
+
adElementCount: adElements.length
|
|
1911
|
+
});
|
|
1912
|
+
}
|
|
1913
|
+
}
|
|
1914
|
+
podElements = candidates.filter(function(el) {
|
|
1886
1915
|
return getAdSequence(el) !== void 0;
|
|
1887
1916
|
}).sort(function(a, b) {
|
|
1888
1917
|
return getAdSequence(a) - getAdSequence(b);
|
|
1889
1918
|
});
|
|
1890
|
-
buffet =
|
|
1919
|
+
buffet = candidates.filter(function(el) {
|
|
1891
1920
|
return getAdSequence(el) === void 0;
|
|
1892
1921
|
});
|
|
1893
1922
|
resolveAll = function resolveAll(elements) {
|
|
@@ -2044,7 +2073,9 @@ function createHlsAdPlayer(contentVideo, options) {
|
|
|
2044
2073
|
lastPodAdElementCount = adElements.length;
|
|
2045
2074
|
return [
|
|
2046
2075
|
2,
|
|
2047
|
-
ads
|
|
2076
|
+
isEdge ? ads.filter(function(ad) {
|
|
2077
|
+
return ad.duration > 0;
|
|
2078
|
+
}) : ads
|
|
2048
2079
|
];
|
|
2049
2080
|
}
|
|
2050
2081
|
});
|
|
@@ -3045,13 +3076,14 @@ function createHlsAdPlayer(contentVideo, options) {
|
|
|
3045
3076
|
contentVideo[AD_CONTAINER_PROP] = adContainerEl;
|
|
3046
3077
|
attachContainerHandlers();
|
|
3047
3078
|
},
|
|
3048
|
-
requestAds: function requestAds(vastTagUrl) {
|
|
3079
|
+
requestAds: function requestAds(vastTagUrl, requestOptions) {
|
|
3049
3080
|
return _async_to_generator(function() {
|
|
3050
|
-
var ads, preloaded, error;
|
|
3081
|
+
var _ref, source, ads, preloaded, error;
|
|
3051
3082
|
return _ts_generator(this, function(_state) {
|
|
3052
3083
|
switch(_state.label){
|
|
3053
3084
|
case 0:
|
|
3054
|
-
|
|
3085
|
+
source = (_ref = requestOptions === null || requestOptions === void 0 ? void 0 : requestOptions.source) !== null && _ref !== void 0 ? _ref : "gam";
|
|
3086
|
+
console.log("[HlsAdPlayer] Requesting ads (".concat(source, "):"), redactUrl(vastTagUrl));
|
|
3055
3087
|
if (adPlaying) {
|
|
3056
3088
|
console.warn("[HlsAdPlayer] Cannot request new ads while an ad is playing");
|
|
3057
3089
|
return [
|
|
@@ -3096,7 +3128,7 @@ function createHlsAdPlayer(contentVideo, options) {
|
|
|
3096
3128
|
case 2:
|
|
3097
3129
|
return [
|
|
3098
3130
|
4,
|
|
3099
|
-
fetchAndParsePod(vastTagUrl)
|
|
3131
|
+
fetchAndParsePod(vastTagUrl, source)
|
|
3100
3132
|
];
|
|
3101
3133
|
case 3:
|
|
3102
3134
|
ads = _state.sent();
|
|
@@ -3506,6 +3538,75 @@ function createHlsAdPlayer(contentVideo, options) {
|
|
|
3506
3538
|
return podAds.reduce(function(total, ad) {
|
|
3507
3539
|
return total + (ad.duration > 0 ? ad.duration * 1e3 : 0);
|
|
3508
3540
|
}, 0);
|
|
3541
|
+
},
|
|
3542
|
+
limitPodToBudget: function limitPodToBudget(maxDurationMs, maxAds) {
|
|
3543
|
+
if (adPlaying) return podAds.length;
|
|
3544
|
+
var kept = [];
|
|
3545
|
+
var dropped = [];
|
|
3546
|
+
var totalMs = 0;
|
|
3547
|
+
var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
|
|
3548
|
+
try {
|
|
3549
|
+
for(var _iterator = podAds[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){
|
|
3550
|
+
var ad = _step.value;
|
|
3551
|
+
var durationMs = Math.round(ad.duration * 1e3);
|
|
3552
|
+
if (kept.length < maxAds && totalMs + durationMs <= maxDurationMs) {
|
|
3553
|
+
kept.push(ad);
|
|
3554
|
+
totalMs += durationMs;
|
|
3555
|
+
} else {
|
|
3556
|
+
dropped.push(ad);
|
|
3557
|
+
}
|
|
3558
|
+
}
|
|
3559
|
+
} catch (err) {
|
|
3560
|
+
_didIteratorError = true;
|
|
3561
|
+
_iteratorError = err;
|
|
3562
|
+
} finally{
|
|
3563
|
+
try {
|
|
3564
|
+
if (!_iteratorNormalCompletion && _iterator.return != null) {
|
|
3565
|
+
_iterator.return();
|
|
3566
|
+
}
|
|
3567
|
+
} finally{
|
|
3568
|
+
if (_didIteratorError) {
|
|
3569
|
+
throw _iteratorError;
|
|
3570
|
+
}
|
|
3571
|
+
}
|
|
3572
|
+
}
|
|
3573
|
+
if (dropped.length > 0) {
|
|
3574
|
+
logFunnel("pod_trimmed_to_budget", {
|
|
3575
|
+
keptCount: kept.length,
|
|
3576
|
+
droppedCount: dropped.length,
|
|
3577
|
+
keptDurationMs: totalMs,
|
|
3578
|
+
maxDurationMs: maxDurationMs,
|
|
3579
|
+
maxAds: maxAds
|
|
3580
|
+
});
|
|
3581
|
+
var _iteratorNormalCompletion1 = true, _didIteratorError1 = false, _iteratorError1 = undefined;
|
|
3582
|
+
try {
|
|
3583
|
+
for(var _iterator1 = dropped[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = true){
|
|
3584
|
+
var ad1 = _step1.value;
|
|
3585
|
+
resolvedAds.add(ad1);
|
|
3586
|
+
fireTrackingPixels(ad1.trackingUrls.notUsed, {
|
|
3587
|
+
ad: ad1
|
|
3588
|
+
});
|
|
3589
|
+
}
|
|
3590
|
+
} catch (err) {
|
|
3591
|
+
_didIteratorError1 = true;
|
|
3592
|
+
_iteratorError1 = err;
|
|
3593
|
+
} finally{
|
|
3594
|
+
try {
|
|
3595
|
+
if (!_iteratorNormalCompletion1 && _iterator1.return != null) {
|
|
3596
|
+
_iterator1.return();
|
|
3597
|
+
}
|
|
3598
|
+
} finally{
|
|
3599
|
+
if (_didIteratorError1) {
|
|
3600
|
+
throw _iteratorError1;
|
|
3601
|
+
}
|
|
3602
|
+
}
|
|
3603
|
+
}
|
|
3604
|
+
}
|
|
3605
|
+
podAds = kept;
|
|
3606
|
+
podIndex = 0;
|
|
3607
|
+
currentAd = kept[0];
|
|
3608
|
+
currentAdMediaFile = void 0;
|
|
3609
|
+
return kept.length;
|
|
3509
3610
|
}
|
|
3510
3611
|
};
|
|
3511
3612
|
}
|