stormcloud-video-player 0.8.54 → 0.8.56
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/index.cjs +243 -80
- package/lib/index.cjs.map +1 -1
- package/lib/index.js +243 -80
- package/lib/index.js.map +1 -1
- package/lib/player/AdBreakOrchestrator.cjs +41 -40
- package/lib/player/AdBreakOrchestrator.cjs.map +1 -1
- package/lib/player/AdConfigManager.cjs +24 -30
- package/lib/player/AdConfigManager.cjs.map +1 -1
- package/lib/player/AdTimingService.cjs +18 -25
- package/lib/player/AdTimingService.cjs.map +1 -1
- package/lib/player/HlsEngine.cjs +12 -21
- package/lib/player/HlsEngine.cjs.map +1 -1
- package/lib/player/PlaceholderLayer.cjs +1 -3
- package/lib/player/PlaceholderLayer.cjs.map +1 -1
- package/lib/player/PlayerControls.cjs.map +1 -1
- package/lib/player/Scte35CueManager.cjs +2 -4
- package/lib/player/Scte35CueManager.cjs.map +1 -1
- package/lib/player/Scte35Parser.cjs +6 -12
- package/lib/player/Scte35Parser.cjs.map +1 -1
- package/lib/player/StormcloudVideoPlayer.cjs +233 -66
- package/lib/player/StormcloudVideoPlayer.cjs.map +1 -1
- package/lib/player/playerTypes.cjs.map +1 -1
- package/lib/players/FilePlayer.cjs +17 -26
- package/lib/players/FilePlayer.cjs.map +1 -1
- package/lib/players/HlsPlayer.cjs +243 -80
- package/lib/players/HlsPlayer.cjs.map +1 -1
- package/lib/players/index.cjs +243 -80
- package/lib/players/index.cjs.map +1 -1
- package/lib/sdk/hlsAdPlayer.cjs +190 -25
- package/lib/sdk/hlsAdPlayer.cjs.map +1 -1
- package/lib/sdk/pal.cjs +6 -9
- package/lib/sdk/pal.cjs.map +1 -1
- package/lib/ui/StormcloudVideoPlayer.cjs +233 -66
- package/lib/ui/StormcloudVideoPlayer.cjs.map +1 -1
- package/lib/utils/browserCompat.cjs +3 -6
- package/lib/utils/browserCompat.cjs.map +1 -1
- package/lib/utils/ctvVastSignals.cjs +3 -6
- package/lib/utils/ctvVastSignals.cjs.map +1 -1
- package/lib/utils/devUrl.cjs.map +1 -1
- package/lib/utils/mqttClient.cjs +1 -3
- package/lib/utils/mqttClient.cjs.map +1 -1
- package/lib/utils/mqttConfig.cjs +1 -3
- package/lib/utils/mqttConfig.cjs.map +1 -1
- package/lib/utils/polyfills.cjs +4 -7
- package/lib/utils/polyfills.cjs.map +1 -1
- package/lib/utils/tracking.cjs +8 -13
- package/lib/utils/tracking.cjs.map +1 -1
- package/lib/utils/vastEnvironmentSignals.cjs +3 -6
- package/lib/utils/vastEnvironmentSignals.cjs.map +1 -1
- package/lib/utils/vastMacros.cjs +4 -2
- package/lib/utils/vastMacros.cjs.map +1 -1
- package/lib/utils/vastTrackingMacros.cjs +185 -0
- package/lib/utils/vastTrackingMacros.cjs.map +1 -0
- package/lib/utils/vastTrackingMacros.d.cts +19 -0
- package/package.json +1 -1
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
function _type_of(obj) {
|
|
3
|
+
"@swc/helpers - typeof";
|
|
4
|
+
return obj && typeof Symbol !== "undefined" && obj.constructor === Symbol ? "symbol" : typeof obj;
|
|
5
|
+
}
|
|
6
|
+
var __defProp = Object.defineProperty;
|
|
7
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
8
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
9
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
10
|
+
var __export = function __export(target, all) {
|
|
11
|
+
for(var name in all)__defProp(target, name, {
|
|
12
|
+
get: all[name],
|
|
13
|
+
enumerable: true
|
|
14
|
+
});
|
|
15
|
+
};
|
|
16
|
+
var __copyProps = function __copyProps(to, from, except, desc) {
|
|
17
|
+
if (from && (typeof from === "undefined" ? "undefined" : _type_of(from)) === "object" || typeof from === "function") {
|
|
18
|
+
var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
|
|
19
|
+
try {
|
|
20
|
+
var _loop = function() {
|
|
21
|
+
var key = _step.value;
|
|
22
|
+
if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
|
|
23
|
+
get: function get() {
|
|
24
|
+
return from[key];
|
|
25
|
+
},
|
|
26
|
+
enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
|
|
27
|
+
});
|
|
28
|
+
};
|
|
29
|
+
for(var _iterator = __getOwnPropNames(from)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true)_loop();
|
|
30
|
+
} catch (err) {
|
|
31
|
+
_didIteratorError = true;
|
|
32
|
+
_iteratorError = err;
|
|
33
|
+
} finally{
|
|
34
|
+
try {
|
|
35
|
+
if (!_iteratorNormalCompletion && _iterator.return != null) {
|
|
36
|
+
_iterator.return();
|
|
37
|
+
}
|
|
38
|
+
} finally{
|
|
39
|
+
if (_didIteratorError) {
|
|
40
|
+
throw _iteratorError;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
return to;
|
|
46
|
+
};
|
|
47
|
+
var __toCommonJS = function __toCommonJS(mod) {
|
|
48
|
+
return __copyProps(__defProp({}, "__esModule", {
|
|
49
|
+
value: true
|
|
50
|
+
}), mod);
|
|
51
|
+
};
|
|
52
|
+
// src/utils/vastTrackingMacros.ts
|
|
53
|
+
var vastTrackingMacros_exports = {};
|
|
54
|
+
__export(vastTrackingMacros_exports, {
|
|
55
|
+
generateCachebuster: function generateCachebuster1() {
|
|
56
|
+
return generateCachebuster;
|
|
57
|
+
},
|
|
58
|
+
substituteVastTrackingMacros: function substituteVastTrackingMacros1() {
|
|
59
|
+
return substituteVastTrackingMacros;
|
|
60
|
+
}
|
|
61
|
+
});
|
|
62
|
+
module.exports = __toCommonJS(vastTrackingMacros_exports);
|
|
63
|
+
var VAST_MACRO_PATTERN = /\[([A-Z][A-Z0-9_]*)\]/g;
|
|
64
|
+
var CACHEBUSTING_ALIASES = /\[CACHEBUSTER\]|\[cachebuster\]|\[timestamp\]|\[random\]|\[INSERT_RANDOM_NUMBER\]|%%CACHEBUSTER%%|%%CACHEBUST%%|\$\{CACHEBUSTER\}|\$\{CACHEBUSTING\}|\{cachebuster\}|\{random\}/g;
|
|
65
|
+
var KNOWN_VAST_MACROS = /* @__PURE__ */ new Set([
|
|
66
|
+
"ADCATEGORIES",
|
|
67
|
+
"ADCOUNT",
|
|
68
|
+
"ADPLAYHEAD",
|
|
69
|
+
"ADSERVINGID",
|
|
70
|
+
"ADTYPE",
|
|
71
|
+
"APIFRAMEWORKS",
|
|
72
|
+
"APPBUNDLE",
|
|
73
|
+
"ASSETURI",
|
|
74
|
+
"BLOCKEDADCATEGORIES",
|
|
75
|
+
"BREAKMAXADLENGTH",
|
|
76
|
+
"BREAKMAXADS",
|
|
77
|
+
"BREAKMAXDURATION",
|
|
78
|
+
"BREAKMINADLENGTH",
|
|
79
|
+
"BREAKPOSITION",
|
|
80
|
+
"CACHEBUSTING",
|
|
81
|
+
"CLICKPOS",
|
|
82
|
+
"CLICKTYPE",
|
|
83
|
+
"CLIENTUA",
|
|
84
|
+
"CONTENTID",
|
|
85
|
+
"CONTENTPLAYHEAD",
|
|
86
|
+
"CONTENTURI",
|
|
87
|
+
"DEVICEIP",
|
|
88
|
+
"DEVICEUA",
|
|
89
|
+
"DOMAIN",
|
|
90
|
+
"ERRORCODE",
|
|
91
|
+
"EXTENSIONS",
|
|
92
|
+
"GDPRCONSENT",
|
|
93
|
+
"IFA",
|
|
94
|
+
"IFATYPE",
|
|
95
|
+
"INVENTORYSTATE",
|
|
96
|
+
"LATLONG",
|
|
97
|
+
"LIMITADTRACKING",
|
|
98
|
+
"MEDIAMIME",
|
|
99
|
+
"MEDIAPLAYHEAD",
|
|
100
|
+
"OMIDPARTNER",
|
|
101
|
+
"PAGEURL",
|
|
102
|
+
"PLACEMENTTYPE",
|
|
103
|
+
"PLAYERCAPABILITIES",
|
|
104
|
+
"PLAYERSIZE",
|
|
105
|
+
"PLAYERSTATE",
|
|
106
|
+
"PODSEQUENCE",
|
|
107
|
+
"REGULATIONS",
|
|
108
|
+
"SERVERSIDE",
|
|
109
|
+
"SERVERUA",
|
|
110
|
+
"TIMESTAMP",
|
|
111
|
+
"TRANSACTIONID",
|
|
112
|
+
"UNIVERSALADID",
|
|
113
|
+
"VASTVERSIONS",
|
|
114
|
+
"VERIFICATIONVENDORS"
|
|
115
|
+
]);
|
|
116
|
+
function generateCachebuster() {
|
|
117
|
+
return String(Math.floor(Math.random() * 9e7) + 1e7);
|
|
118
|
+
}
|
|
119
|
+
function formatPlayhead(seconds) {
|
|
120
|
+
if (seconds == null || !Number.isFinite(seconds) || seconds < 0) {
|
|
121
|
+
return void 0;
|
|
122
|
+
}
|
|
123
|
+
var total = Math.floor(seconds);
|
|
124
|
+
var hh = String(Math.floor(total / 3600)).padStart(2, "0");
|
|
125
|
+
var mm = String(Math.floor(total % 3600 / 60)).padStart(2, "0");
|
|
126
|
+
var ss = String(total % 60).padStart(2, "0");
|
|
127
|
+
var ms = String(Math.floor((seconds - total) * 1e3)).padStart(3, "0");
|
|
128
|
+
return "".concat(hh, ":").concat(mm, ":").concat(ss, ".").concat(ms);
|
|
129
|
+
}
|
|
130
|
+
function resolveMacroValues(ctx) {
|
|
131
|
+
var values = /* @__PURE__ */ new Map();
|
|
132
|
+
var set = function set(key, value) {
|
|
133
|
+
if (value != null && value !== "") values.set(key, value);
|
|
134
|
+
};
|
|
135
|
+
var adPlayhead = formatPlayhead(ctx.adPlayheadSeconds);
|
|
136
|
+
set("ADPLAYHEAD", adPlayhead);
|
|
137
|
+
set("MEDIAPLAYHEAD", adPlayhead);
|
|
138
|
+
set("CONTENTPLAYHEAD", formatPlayhead(ctx.contentPlayheadSeconds));
|
|
139
|
+
set("ASSETURI", ctx.assetUri);
|
|
140
|
+
set("MEDIAMIME", ctx.mediaMime);
|
|
141
|
+
set("TIMESTAMP", (/* @__PURE__ */ new Date()).toISOString());
|
|
142
|
+
set("SERVERSIDE", "0");
|
|
143
|
+
if (ctx.errorCode != null && ctx.errorCode !== "") {
|
|
144
|
+
set("ERRORCODE", String(ctx.errorCode));
|
|
145
|
+
}
|
|
146
|
+
if (ctx.playerWidth != null && ctx.playerHeight != null) {
|
|
147
|
+
set("PLAYERSIZE", "".concat(Math.round(ctx.playerWidth), ",").concat(Math.round(ctx.playerHeight)));
|
|
148
|
+
}
|
|
149
|
+
set("IFA", ctx.deviceId);
|
|
150
|
+
set("IFATYPE", ctx.deviceIdType);
|
|
151
|
+
if (ctx.limitAdTracking != null) {
|
|
152
|
+
set("LIMITADTRACKING", ctx.limitAdTracking ? "1" : "0");
|
|
153
|
+
}
|
|
154
|
+
set("PAGEURL", ctx.pageUrl);
|
|
155
|
+
if (ctx.pageUrl) {
|
|
156
|
+
try {
|
|
157
|
+
set("DOMAIN", new URL(ctx.pageUrl).hostname);
|
|
158
|
+
} catch (unused) {}
|
|
159
|
+
}
|
|
160
|
+
set("CLIENTUA", ctx.clientUa);
|
|
161
|
+
set("DEVICEUA", ctx.clientUa);
|
|
162
|
+
if (ctx.podSequence != null) {
|
|
163
|
+
set("PODSEQUENCE", String(ctx.podSequence));
|
|
164
|
+
}
|
|
165
|
+
return values;
|
|
166
|
+
}
|
|
167
|
+
function substituteVastTrackingMacros(url) {
|
|
168
|
+
var ctx = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};
|
|
169
|
+
if (!url) return url;
|
|
170
|
+
var values = resolveMacroValues(ctx);
|
|
171
|
+
return url.replace(CACHEBUSTING_ALIASES, function() {
|
|
172
|
+
return generateCachebuster();
|
|
173
|
+
}).replace(VAST_MACRO_PATTERN, function(match, name) {
|
|
174
|
+
if (name === "CACHEBUSTING") return generateCachebuster();
|
|
175
|
+
var value = values.get(name);
|
|
176
|
+
if (value != null) return encodeURIComponent(value);
|
|
177
|
+
return KNOWN_VAST_MACROS.has(name) ? "" : match;
|
|
178
|
+
});
|
|
179
|
+
}
|
|
180
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
181
|
+
0 && (module.exports = {
|
|
182
|
+
generateCachebuster: generateCachebuster,
|
|
183
|
+
substituteVastTrackingMacros: substituteVastTrackingMacros
|
|
184
|
+
});
|
|
185
|
+
//# sourceMappingURL=vastTrackingMacros.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/home/ubuntu24-new/Dev/stormcloud-vp/lib/utils/vastTrackingMacros.cjs","../../src/utils/vastTrackingMacros.ts"],"names":["__defProp","Object","defineProperty","__getOwnPropDesc","__getOwnPropNames","getOwnPropertyDescriptor","getOwnPropertyNames","__hasOwnProp","prototype","hasOwnProperty","__export","target","all","name","get","enumerable","__copyProps","to","from","except","desc","key","call","__toCommonJS","mod","value","vastTrackingMacros_exports","generateCachebuster","substituteVastTrackingMacros","module","exports","VAST_MACRO_PATTERN","CACHEBUSTING_ALIASES","KNOWN_VAST_MACROS","Set"],"mappings":"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","sourcesContent":["\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\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 __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/utils/vastTrackingMacros.ts\nvar vastTrackingMacros_exports = {};\n__export(vastTrackingMacros_exports, {\n generateCachebuster: () => generateCachebuster,\n substituteVastTrackingMacros: () => substituteVastTrackingMacros\n});\nmodule.exports = __toCommonJS(vastTrackingMacros_exports);\nvar VAST_MACRO_PATTERN = /\\[([A-Z][A-Z0-9_]*)\\]/g;\nvar CACHEBUSTING_ALIASES = /\\[CACHEBUSTER\\]|\\[cachebuster\\]|\\[timestamp\\]|\\[random\\]|\\[INSERT_RANDOM_NUMBER\\]|%%CACHEBUSTER%%|%%CACHEBUST%%|\\$\\{CACHEBUSTER\\}|\\$\\{CACHEBUSTING\\}|\\{cachebuster\\}|\\{random\\}/g;\nvar KNOWN_VAST_MACROS = /* @__PURE__ */ new Set([\n \"ADCATEGORIES\",\n \"ADCOUNT\",\n \"ADPLAYHEAD\",\n \"ADSERVINGID\",\n \"ADTYPE\",\n \"APIFRAMEWORKS\",\n \"APPBUNDLE\",\n \"ASSETURI\",\n \"BLOCKEDADCATEGORIES\",\n \"BREAKMAXADLENGTH\",\n \"BREAKMAXADS\",\n \"BREAKMAXDURATION\",\n \"BREAKMINADLENGTH\",\n \"BREAKPOSITION\",\n \"CACHEBUSTING\",\n \"CLICKPOS\",\n \"CLICKTYPE\",\n \"CLIENTUA\",\n \"CONTENTID\",\n \"CONTENTPLAYHEAD\",\n \"CONTENTURI\",\n \"DEVICEIP\",\n \"DEVICEUA\",\n \"DOMAIN\",\n \"ERRORCODE\",\n \"EXTENSIONS\",\n \"GDPRCONSENT\",\n \"IFA\",\n \"IFATYPE\",\n \"INVENTORYSTATE\",\n \"LATLONG\",\n \"LIMITADTRACKING\",\n \"MEDIAMIME\",\n \"MEDIAPLAYHEAD\",\n \"OMIDPARTNER\",\n \"PAGEURL\",\n \"PLACEMENTTYPE\",\n \"PLAYERCAPABILITIES\",\n \"PLAYERSIZE\",\n \"PLAYERSTATE\",\n \"PODSEQUENCE\",\n \"REGULATIONS\",\n \"SERVERSIDE\",\n \"SERVERUA\",\n \"TIMESTAMP\",\n \"TRANSACTIONID\",\n \"UNIVERSALADID\",\n \"VASTVERSIONS\",\n \"VERIFICATIONVENDORS\"\n]);\nfunction generateCachebuster() {\n return String(Math.floor(Math.random() * 9e7) + 1e7);\n}\nfunction formatPlayhead(seconds) {\n if (seconds == null || !Number.isFinite(seconds) || seconds < 0) {\n return void 0;\n }\n const total = Math.floor(seconds);\n const hh = String(Math.floor(total / 3600)).padStart(2, \"0\");\n const mm = String(Math.floor(total % 3600 / 60)).padStart(2, \"0\");\n const ss = String(total % 60).padStart(2, \"0\");\n const ms = String(Math.floor((seconds - total) * 1e3)).padStart(3, \"0\");\n return `${hh}:${mm}:${ss}.${ms}`;\n}\nfunction resolveMacroValues(ctx) {\n const values = /* @__PURE__ */ new Map();\n const set = (key, value) => {\n if (value != null && value !== \"\") values.set(key, value);\n };\n const adPlayhead = formatPlayhead(ctx.adPlayheadSeconds);\n set(\"ADPLAYHEAD\", adPlayhead);\n set(\"MEDIAPLAYHEAD\", adPlayhead);\n set(\"CONTENTPLAYHEAD\", formatPlayhead(ctx.contentPlayheadSeconds));\n set(\"ASSETURI\", ctx.assetUri);\n set(\"MEDIAMIME\", ctx.mediaMime);\n set(\"TIMESTAMP\", (/* @__PURE__ */ new Date()).toISOString());\n set(\"SERVERSIDE\", \"0\");\n if (ctx.errorCode != null && ctx.errorCode !== \"\") {\n set(\"ERRORCODE\", String(ctx.errorCode));\n }\n if (ctx.playerWidth != null && ctx.playerHeight != null) {\n set(\"PLAYERSIZE\", `${Math.round(ctx.playerWidth)},${Math.round(ctx.playerHeight)}`);\n }\n set(\"IFA\", ctx.deviceId);\n set(\"IFATYPE\", ctx.deviceIdType);\n if (ctx.limitAdTracking != null) {\n set(\"LIMITADTRACKING\", ctx.limitAdTracking ? \"1\" : \"0\");\n }\n set(\"PAGEURL\", ctx.pageUrl);\n if (ctx.pageUrl) {\n try {\n set(\"DOMAIN\", new URL(ctx.pageUrl).hostname);\n } catch {\n }\n }\n set(\"CLIENTUA\", ctx.clientUa);\n set(\"DEVICEUA\", ctx.clientUa);\n if (ctx.podSequence != null) {\n set(\"PODSEQUENCE\", String(ctx.podSequence));\n }\n return values;\n}\nfunction substituteVastTrackingMacros(url, ctx = {}) {\n if (!url) return url;\n const values = resolveMacroValues(ctx);\n return url.replace(CACHEBUSTING_ALIASES, () => generateCachebuster()).replace(VAST_MACRO_PATTERN, (match, name) => {\n if (name === \"CACHEBUSTING\") return generateCachebuster();\n const value = values.get(name);\n if (value != null) return encodeURIComponent(value);\n return KNOWN_VAST_MACROS.has(name) ? \"\" : match;\n });\n}\n// Annotate the CommonJS export names for ESM import in node:\n0 && (module.exports = {\n generateCachebuster,\n substituteVastTrackingMacros\n});\n","export interface VastTrackingMacroContext {\n adPlayheadSeconds?: number | undefined;\n contentPlayheadSeconds?: number | undefined;\n assetUri?: string | undefined;\n mediaMime?: string | undefined;\n playerWidth?: number | undefined;\n playerHeight?: number | undefined;\n errorCode?: number | string | undefined;\n deviceId?: string | undefined;\n deviceIdType?: string | undefined;\n limitAdTracking?: boolean | undefined;\n pageUrl?: string | undefined;\n clientUa?: string | undefined;\n podSequence?: number | undefined;\n}\n\nconst VAST_MACRO_PATTERN = /\\[([A-Z][A-Z0-9_]*)\\]/g;\n\nconst CACHEBUSTING_ALIASES =\n /\\[CACHEBUSTER\\]|\\[cachebuster\\]|\\[timestamp\\]|\\[random\\]|\\[INSERT_RANDOM_NUMBER\\]|%%CACHEBUSTER%%|%%CACHEBUST%%|\\$\\{CACHEBUSTER\\}|\\$\\{CACHEBUSTING\\}|\\{cachebuster\\}|\\{random\\}/g;\n\nconst KNOWN_VAST_MACROS = new Set([\n \"ADCATEGORIES\",\n \"ADCOUNT\",\n \"ADPLAYHEAD\",\n \"ADSERVINGID\",\n \"ADTYPE\",\n \"APIFRAMEWORKS\",\n \"APPBUNDLE\",\n \"ASSETURI\",\n \"BLOCKEDADCATEGORIES\",\n \"BREAKMAXADLENGTH\",\n \"BREAKMAXADS\",\n \"BREAKMAXDURATION\",\n \"BREAKMINADLENGTH\",\n \"BREAKPOSITION\",\n \"CACHEBUSTING\",\n \"CLICKPOS\",\n \"CLICKTYPE\",\n \"CLIENTUA\",\n \"CONTENTID\",\n \"CONTENTPLAYHEAD\",\n \"CONTENTURI\",\n \"DEVICEIP\",\n \"DEVICEUA\",\n \"DOMAIN\",\n \"ERRORCODE\",\n \"EXTENSIONS\",\n \"GDPRCONSENT\",\n \"IFA\",\n \"IFATYPE\",\n \"INVENTORYSTATE\",\n \"LATLONG\",\n \"LIMITADTRACKING\",\n \"MEDIAMIME\",\n \"MEDIAPLAYHEAD\",\n \"OMIDPARTNER\",\n \"PAGEURL\",\n \"PLACEMENTTYPE\",\n \"PLAYERCAPABILITIES\",\n \"PLAYERSIZE\",\n \"PLAYERSTATE\",\n \"PODSEQUENCE\",\n \"REGULATIONS\",\n \"SERVERSIDE\",\n \"SERVERUA\",\n \"TIMESTAMP\",\n \"TRANSACTIONID\",\n \"UNIVERSALADID\",\n \"VASTVERSIONS\",\n \"VERIFICATIONVENDORS\",\n]);\n\nexport function generateCachebuster(): string {\n return String(Math.floor(Math.random() * 90000000) + 10000000);\n}\n\nfunction formatPlayhead(seconds: number | undefined): string | undefined {\n if (seconds == null || !Number.isFinite(seconds) || seconds < 0) {\n return undefined;\n }\n const total = Math.floor(seconds);\n const hh = String(Math.floor(total / 3600)).padStart(2, \"0\");\n const mm = String(Math.floor((total % 3600) / 60)).padStart(2, \"0\");\n const ss = String(total % 60).padStart(2, \"0\");\n const ms = String(Math.floor((seconds - total) * 1000)).padStart(3, \"0\");\n return `${hh}:${mm}:${ss}.${ms}`;\n}\n\nfunction resolveMacroValues(\n ctx: VastTrackingMacroContext\n): Map<string, string> {\n const values = new Map<string, string>();\n const set = (key: string, value: string | undefined) => {\n if (value != null && value !== \"\") values.set(key, value);\n };\n\n const adPlayhead = formatPlayhead(ctx.adPlayheadSeconds);\n set(\"ADPLAYHEAD\", adPlayhead);\n set(\"MEDIAPLAYHEAD\", adPlayhead);\n set(\"CONTENTPLAYHEAD\", formatPlayhead(ctx.contentPlayheadSeconds));\n\n set(\"ASSETURI\", ctx.assetUri);\n set(\"MEDIAMIME\", ctx.mediaMime);\n set(\"TIMESTAMP\", new Date().toISOString());\n set(\"SERVERSIDE\", \"0\");\n\n if (ctx.errorCode != null && ctx.errorCode !== \"\") {\n set(\"ERRORCODE\", String(ctx.errorCode));\n }\n\n if (ctx.playerWidth != null && ctx.playerHeight != null) {\n set(\"PLAYERSIZE\", `${Math.round(ctx.playerWidth)},${Math.round(ctx.playerHeight)}`);\n }\n\n set(\"IFA\", ctx.deviceId);\n set(\"IFATYPE\", ctx.deviceIdType);\n if (ctx.limitAdTracking != null) {\n set(\"LIMITADTRACKING\", ctx.limitAdTracking ? \"1\" : \"0\");\n }\n\n set(\"PAGEURL\", ctx.pageUrl);\n if (ctx.pageUrl) {\n try {\n set(\"DOMAIN\", new URL(ctx.pageUrl).hostname);\n } catch {}\n }\n\n set(\"CLIENTUA\", ctx.clientUa);\n set(\"DEVICEUA\", ctx.clientUa);\n\n if (ctx.podSequence != null) {\n set(\"PODSEQUENCE\", String(ctx.podSequence));\n }\n\n return values;\n}\n\nexport function substituteVastTrackingMacros(\n url: string,\n ctx: VastTrackingMacroContext = {}\n): string {\n if (!url) return url;\n\n const values = resolveMacroValues(ctx);\n\n return url\n .replace(CACHEBUSTING_ALIASES, () => generateCachebuster())\n .replace(VAST_MACRO_PATTERN, (match, name: string) => {\n if (name === \"CACHEBUSTING\") return generateCachebuster();\n\n const value = values.get(name);\n if (value != null) return encodeURIComponent(value);\n\n return KNOWN_VAST_MACROS.has(name) ? \"\" : match;\n });\n}\n"]}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
interface VastTrackingMacroContext {
|
|
2
|
+
adPlayheadSeconds?: number | undefined;
|
|
3
|
+
contentPlayheadSeconds?: number | undefined;
|
|
4
|
+
assetUri?: string | undefined;
|
|
5
|
+
mediaMime?: string | undefined;
|
|
6
|
+
playerWidth?: number | undefined;
|
|
7
|
+
playerHeight?: number | undefined;
|
|
8
|
+
errorCode?: number | string | undefined;
|
|
9
|
+
deviceId?: string | undefined;
|
|
10
|
+
deviceIdType?: string | undefined;
|
|
11
|
+
limitAdTracking?: boolean | undefined;
|
|
12
|
+
pageUrl?: string | undefined;
|
|
13
|
+
clientUa?: string | undefined;
|
|
14
|
+
podSequence?: number | undefined;
|
|
15
|
+
}
|
|
16
|
+
declare function generateCachebuster(): string;
|
|
17
|
+
declare function substituteVastTrackingMacros(url: string, ctx?: VastTrackingMacroContext): string;
|
|
18
|
+
|
|
19
|
+
export { type VastTrackingMacroContext, generateCachebuster, substituteVastTrackingMacros };
|