stormcloud-video-player 0.8.18 → 0.8.20
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/README.md +67 -83
- package/dist/stormcloud-vp.min.js +1 -1
- package/lib/index.cjs +686 -353
- package/lib/index.cjs.map +1 -1
- package/lib/index.d.cts +1 -1
- package/lib/index.d.ts +1 -1
- package/lib/index.js +686 -353
- package/lib/index.js.map +1 -1
- package/lib/player/AdBreakOrchestrator.cjs +11 -11
- package/lib/player/AdBreakOrchestrator.cjs.map +1 -1
- package/lib/player/AdBreakOrchestrator.d.cts +4 -4
- package/lib/player/{VmapManager.cjs → AdConfigManager.cjs} +561 -217
- package/lib/player/AdConfigManager.cjs.map +1 -0
- package/lib/player/{VmapManager.d.cts → AdConfigManager.d.cts} +3 -3
- package/lib/player/AdPreloadPool.d.cts +1 -1
- package/lib/player/AdTimingService.d.cts +1 -1
- package/lib/player/HlsEngine.d.cts +1 -1
- package/lib/player/PlayerControls.d.cts +1 -1
- package/lib/player/Scte35CueManager.d.cts +1 -1
- package/lib/player/Scte35Parser.d.cts +1 -1
- package/lib/player/StormcloudVideoPlayer.cjs +686 -353
- package/lib/player/StormcloudVideoPlayer.cjs.map +1 -1
- package/lib/player/StormcloudVideoPlayer.d.cts +2 -2
- package/lib/player/playerTypes.d.cts +1 -1
- package/lib/players/HlsPlayer.cjs +686 -353
- package/lib/players/HlsPlayer.cjs.map +1 -1
- package/lib/players/HlsPlayer.d.cts +1 -1
- package/lib/players/index.cjs +686 -353
- package/lib/players/index.cjs.map +1 -1
- package/lib/sdk/hlsAdPlayer.cjs +5 -4
- package/lib/sdk/hlsAdPlayer.cjs.map +1 -1
- package/lib/sdk/hlsAdPlayer.d.cts +1 -1
- package/lib/types-BAP8n5mE.d.cts +126 -0
- package/lib/ui/StormcloudVideoPlayer.cjs +686 -353
- package/lib/ui/StormcloudVideoPlayer.cjs.map +1 -1
- package/lib/ui/StormcloudVideoPlayer.d.cts +1 -1
- package/lib/utils/ctvVastSignals.cjs +103 -33
- package/lib/utils/ctvVastSignals.cjs.map +1 -1
- package/lib/utils/ctvVastSignals.d.cts +1 -13
- package/lib/utils/tracking.d.cts +1 -1
- package/lib/utils/vastEnvironmentSignals.cjs +450 -0
- package/lib/utils/vastEnvironmentSignals.cjs.map +1 -0
- package/lib/utils/vastEnvironmentSignals.d.cts +16 -0
- package/lib/utils/vastMacros.cjs +347 -25
- package/lib/utils/vastMacros.cjs.map +1 -1
- package/lib/utils/vastMacros.d.cts +3 -1
- package/package.json +1 -1
- package/lib/player/VmapManager.cjs.map +0 -1
|
@@ -7,6 +7,9 @@ function _array_like_to_array(arr, len) {
|
|
|
7
7
|
function _array_with_holes(arr) {
|
|
8
8
|
if (Array.isArray(arr)) return arr;
|
|
9
9
|
}
|
|
10
|
+
function _array_without_holes(arr) {
|
|
11
|
+
if (Array.isArray(arr)) return _array_like_to_array(arr);
|
|
12
|
+
}
|
|
10
13
|
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
|
|
11
14
|
try {
|
|
12
15
|
var info = gen[key](arg);
|
|
@@ -68,6 +71,9 @@ function _define_property(obj, key, value) {
|
|
|
68
71
|
}
|
|
69
72
|
return obj;
|
|
70
73
|
}
|
|
74
|
+
function _iterable_to_array(iter) {
|
|
75
|
+
if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter);
|
|
76
|
+
}
|
|
71
77
|
function _iterable_to_array_limit(arr, i) {
|
|
72
78
|
var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"];
|
|
73
79
|
if (_i == null) return;
|
|
@@ -95,6 +101,9 @@ function _iterable_to_array_limit(arr, i) {
|
|
|
95
101
|
function _non_iterable_rest() {
|
|
96
102
|
throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
|
|
97
103
|
}
|
|
104
|
+
function _non_iterable_spread() {
|
|
105
|
+
throw new TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
|
|
106
|
+
}
|
|
98
107
|
function _object_spread(target) {
|
|
99
108
|
for(var i = 1; i < arguments.length; i++){
|
|
100
109
|
var source = arguments[i] != null ? arguments[i] : {};
|
|
@@ -137,6 +146,9 @@ function _object_spread_props(target, source) {
|
|
|
137
146
|
function _sliced_to_array(arr, i) {
|
|
138
147
|
return _array_with_holes(arr) || _iterable_to_array_limit(arr, i) || _unsupported_iterable_to_array(arr, i) || _non_iterable_rest();
|
|
139
148
|
}
|
|
149
|
+
function _to_consumable_array(arr) {
|
|
150
|
+
return _array_without_holes(arr) || _iterable_to_array(arr) || _unsupported_iterable_to_array(arr) || _non_iterable_spread();
|
|
151
|
+
}
|
|
140
152
|
function _type_of(obj) {
|
|
141
153
|
"@swc/helpers - typeof";
|
|
142
154
|
return obj && typeof Symbol !== "undefined" && obj.constructor === Symbol ? "symbol" : typeof obj;
|
|
@@ -306,175 +318,30 @@ var __toCommonJS = function __toCommonJS(mod) {
|
|
|
306
318
|
value: true
|
|
307
319
|
}), mod);
|
|
308
320
|
};
|
|
309
|
-
// src/player/
|
|
310
|
-
var
|
|
311
|
-
__export(
|
|
312
|
-
|
|
313
|
-
return
|
|
321
|
+
// src/player/AdConfigManager.ts
|
|
322
|
+
var AdConfigManager_exports = {};
|
|
323
|
+
__export(AdConfigManager_exports, {
|
|
324
|
+
AdConfigManager: function AdConfigManager1() {
|
|
325
|
+
return AdConfigManager;
|
|
314
326
|
}
|
|
315
327
|
});
|
|
316
|
-
module.exports = __toCommonJS(
|
|
317
|
-
// src/utils/
|
|
318
|
-
function generateCorrelator() {
|
|
319
|
-
if (typeof crypto !== "undefined" && crypto.getRandomValues) {
|
|
320
|
-
try {
|
|
321
|
-
var _buf_, _buf_1;
|
|
322
|
-
var buf = new Uint32Array(2);
|
|
323
|
-
crypto.getRandomValues(buf);
|
|
324
|
-
var value = ((_buf_ = buf[0]) !== null && _buf_ !== void 0 ? _buf_ : 0) * 2097152 + (((_buf_1 = buf[1]) !== null && _buf_1 !== void 0 ? _buf_1 : 0) & 2097151);
|
|
325
|
-
if (value > 0) {
|
|
326
|
-
return String(value);
|
|
327
|
-
}
|
|
328
|
-
} catch (unused) {}
|
|
329
|
-
}
|
|
330
|
-
return String(Math.floor(Math.random() * Number.MAX_SAFE_INTEGER) + 1);
|
|
331
|
-
}
|
|
332
|
-
var UNEXPANDED_MACRO_PATTERN = /^(\[[^\]]*\]|\{[^}]*\}|%%[^%]*%%)$/;
|
|
333
|
-
var CTV_UNSUPPORTED_PARAMS = [
|
|
334
|
-
"description_url",
|
|
335
|
-
"tfcd",
|
|
336
|
-
"npa",
|
|
337
|
-
"min_ad_duration",
|
|
338
|
-
"max_ad_duration",
|
|
339
|
-
"unviewed_position_start",
|
|
340
|
-
"impl",
|
|
341
|
-
"scor",
|
|
342
|
-
"vad_type",
|
|
343
|
-
"gdpr",
|
|
344
|
-
"gdpr_consent",
|
|
345
|
-
"us_privacy"
|
|
346
|
-
];
|
|
347
|
-
function applyVastMacros(baseUrl, ctx) {
|
|
348
|
-
var url;
|
|
349
|
-
try {
|
|
350
|
-
url = new URL(baseUrl);
|
|
351
|
-
} catch (unused) {
|
|
352
|
-
return replaceCorrelatorFallback(baseUrl, ctx.correlator);
|
|
353
|
-
}
|
|
354
|
-
var params = url.searchParams;
|
|
355
|
-
params.set("correlator", ctx.correlator);
|
|
356
|
-
if (ctx.isCtv) {
|
|
357
|
-
var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
|
|
358
|
-
try {
|
|
359
|
-
for(var _iterator = CTV_UNSUPPORTED_PARAMS[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){
|
|
360
|
-
var key = _step.value;
|
|
361
|
-
params.delete(key);
|
|
362
|
-
}
|
|
363
|
-
} catch (err) {
|
|
364
|
-
_didIteratorError = true;
|
|
365
|
-
_iteratorError = err;
|
|
366
|
-
} finally{
|
|
367
|
-
try {
|
|
368
|
-
if (!_iteratorNormalCompletion && _iterator.return != null) {
|
|
369
|
-
_iterator.return();
|
|
370
|
-
}
|
|
371
|
-
} finally{
|
|
372
|
-
if (_didIteratorError) {
|
|
373
|
-
throw _iteratorError;
|
|
374
|
-
}
|
|
375
|
-
}
|
|
376
|
-
}
|
|
377
|
-
} else {
|
|
378
|
-
params.set("scor", ctx.streamCorrelator);
|
|
379
|
-
}
|
|
380
|
-
if (ctx.pod != null) {
|
|
381
|
-
params.set("pod", String(ctx.pod));
|
|
382
|
-
}
|
|
383
|
-
if (ctx.adPosition != null) {
|
|
384
|
-
params.set("ppos", String(ctx.adPosition));
|
|
385
|
-
}
|
|
386
|
-
var requestUrl = ctx.contentUrl || ctx.pageUrl;
|
|
387
|
-
if (requestUrl) {
|
|
388
|
-
params.set("url", requestUrl);
|
|
389
|
-
if (!ctx.isCtv) {
|
|
390
|
-
params.set("description_url", requestUrl);
|
|
391
|
-
}
|
|
392
|
-
}
|
|
393
|
-
if (ctx.adWillPlayMuted != null) {
|
|
394
|
-
params.set("vpmute", ctx.adWillPlayMuted ? "1" : "0");
|
|
395
|
-
}
|
|
396
|
-
if (ctx.adWillAutoPlay != null) {
|
|
397
|
-
params.set("vpa", ctx.adWillAutoPlay ? "auto" : "click");
|
|
398
|
-
}
|
|
399
|
-
if (ctx.appId) {
|
|
400
|
-
params.set("msid", ctx.appId);
|
|
401
|
-
}
|
|
402
|
-
if (ctx.appName) {
|
|
403
|
-
params.set("an", ctx.appName);
|
|
404
|
-
}
|
|
405
|
-
if (ctx.sessionId) {
|
|
406
|
-
params.set("sid", ctx.sessionId);
|
|
407
|
-
}
|
|
408
|
-
if (ctx.deviceTypeHint != null) {
|
|
409
|
-
params.set("dth", String(ctx.deviceTypeHint));
|
|
410
|
-
} else if (ctx.isCtv) {
|
|
411
|
-
params.set("dth", "5");
|
|
412
|
-
}
|
|
413
|
-
if (ctx.deviceId && ctx.deviceIdType) {
|
|
414
|
-
params.set("rdid", ctx.deviceId);
|
|
415
|
-
params.set("idtype", ctx.deviceIdType);
|
|
416
|
-
params.set("is_lat", ctx.limitAdTracking ? "1" : "0");
|
|
417
|
-
} else {
|
|
418
|
-
params.delete("rdid");
|
|
419
|
-
params.delete("idtype");
|
|
420
|
-
params.delete("is_lat");
|
|
421
|
-
}
|
|
422
|
-
if (!ctx.isCtv) {
|
|
423
|
-
var consent = ctx.consent;
|
|
424
|
-
if ((consent === null || consent === void 0 ? void 0 : consent.gdpr) != null) {
|
|
425
|
-
params.set("gdpr", consent.gdpr);
|
|
426
|
-
}
|
|
427
|
-
if ((consent === null || consent === void 0 ? void 0 : consent.gdprConsent) != null) {
|
|
428
|
-
params.set("gdpr_consent", consent.gdprConsent);
|
|
429
|
-
}
|
|
430
|
-
if ((consent === null || consent === void 0 ? void 0 : consent.usPrivacy) != null) {
|
|
431
|
-
params.set("us_privacy", consent.usPrivacy);
|
|
432
|
-
}
|
|
433
|
-
}
|
|
434
|
-
if (ctx.adTest) {
|
|
435
|
-
params.set("adtest", "on");
|
|
436
|
-
}
|
|
437
|
-
var staleKeys = [];
|
|
438
|
-
params.forEach(function(value, key) {
|
|
439
|
-
if (UNEXPANDED_MACRO_PATTERN.test(value)) {
|
|
440
|
-
staleKeys.push(key);
|
|
441
|
-
}
|
|
442
|
-
});
|
|
443
|
-
var _iteratorNormalCompletion1 = true, _didIteratorError1 = false, _iteratorError1 = undefined;
|
|
444
|
-
try {
|
|
445
|
-
for(var _iterator1 = staleKeys[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = true){
|
|
446
|
-
var key1 = _step1.value;
|
|
447
|
-
params.delete(key1);
|
|
448
|
-
}
|
|
449
|
-
} catch (err) {
|
|
450
|
-
_didIteratorError1 = true;
|
|
451
|
-
_iteratorError1 = err;
|
|
452
|
-
} finally{
|
|
453
|
-
try {
|
|
454
|
-
if (!_iteratorNormalCompletion1 && _iterator1.return != null) {
|
|
455
|
-
_iterator1.return();
|
|
456
|
-
}
|
|
457
|
-
} finally{
|
|
458
|
-
if (_didIteratorError1) {
|
|
459
|
-
throw _iteratorError1;
|
|
460
|
-
}
|
|
461
|
-
}
|
|
462
|
-
}
|
|
463
|
-
return url.toString();
|
|
464
|
-
}
|
|
465
|
-
function replaceCorrelatorFallback(baseUrl, correlator) {
|
|
466
|
-
var correlatorRegex = /([?&])correlator=([^&]*)/;
|
|
467
|
-
if (correlatorRegex.test(baseUrl)) {
|
|
468
|
-
return baseUrl.replace(correlatorRegex, "$1correlator=".concat(correlator));
|
|
469
|
-
}
|
|
470
|
-
var sep = baseUrl.includes("?") ? "&" : "?";
|
|
471
|
-
return "".concat(baseUrl).concat(sep, "correlator=").concat(correlator);
|
|
472
|
-
}
|
|
473
|
-
// src/utils/ctvVastSignals.ts
|
|
328
|
+
module.exports = __toCommonJS(AdConfigManager_exports);
|
|
329
|
+
// src/utils/vastEnvironmentSignals.ts
|
|
474
330
|
var AIRY_ANDROID_APP_ID = "com.freeairytv.android";
|
|
331
|
+
var AIRY_WEBOS_APP_ID = "com.freeairytv.webos";
|
|
332
|
+
var AIRY_TIZEN_APP_ID = "com.freeairytv.samsung";
|
|
333
|
+
var AIRY_ROKU_APP_ID = "com.freeairytv.roku";
|
|
475
334
|
var AIRY_APP_NAME = "AiryTV Movies & TV";
|
|
476
335
|
var AIRY_DEFAULT_CONTENT_URL = "https://live.airy.tv";
|
|
477
336
|
var CTV_SESSION_STORAGE_KEY = "stormcloud.ctv.sid";
|
|
337
|
+
function getDefaultAppId() {
|
|
338
|
+
if (typeof navigator === "undefined") return AIRY_ANDROID_APP_ID;
|
|
339
|
+
var ua = navigator.userAgent;
|
|
340
|
+
if (/Web0S|webOS|LG Browser|LGSTB|LGE/i.test(ua)) return AIRY_WEBOS_APP_ID;
|
|
341
|
+
if (/Tizen|Samsung/i.test(ua)) return AIRY_TIZEN_APP_ID;
|
|
342
|
+
if (/Roku/i.test(ua)) return AIRY_ROKU_APP_ID;
|
|
343
|
+
return AIRY_ANDROID_APP_ID;
|
|
344
|
+
}
|
|
478
345
|
var DEVICE_ID_STORAGE_KEYS = [
|
|
479
346
|
"rdid",
|
|
480
347
|
"ifa",
|
|
@@ -484,28 +351,66 @@ var DEVICE_ID_STORAGE_KEYS = [
|
|
|
484
351
|
"aaid",
|
|
485
352
|
"adid",
|
|
486
353
|
"rida",
|
|
487
|
-
"tifa"
|
|
354
|
+
"tifa",
|
|
355
|
+
"lgudid"
|
|
488
356
|
];
|
|
489
|
-
|
|
357
|
+
var ANDROID_ID_TYPES = /* @__PURE__ */ new Set([
|
|
358
|
+
"aaid",
|
|
359
|
+
"adid"
|
|
360
|
+
]);
|
|
361
|
+
function resolveVastEnvironmentSignals(isCtv) {
|
|
490
362
|
var _ref, _bridgeSignals_limitAdTracking;
|
|
491
363
|
var bridgeSignals = readNativeBridgeSignals();
|
|
492
364
|
var deviceId = bridgeSignals.deviceId || readStoredDeviceId();
|
|
493
|
-
var deviceIdType = bridgeSignals.deviceIdType || readStoredString("deviceIdType") || inferDeviceIdType();
|
|
494
|
-
var
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
365
|
+
var deviceIdType = bridgeSignals.deviceIdType || readStoredString("deviceIdType") || readStoredString("idtype") || inferDeviceIdType();
|
|
366
|
+
var limitAdTracking = deviceId != null ? (_ref = (_bridgeSignals_limitAdTracking = bridgeSignals.limitAdTracking) !== null && _bridgeSignals_limitAdTracking !== void 0 ? _bridgeSignals_limitAdTracking : readStoredLimitAdTracking()) !== null && _ref !== void 0 ? _ref : false : void 0;
|
|
367
|
+
if (isCtv) {
|
|
368
|
+
return _object_spread_props(_object_spread({
|
|
369
|
+
isCtv: true,
|
|
370
|
+
contentUrl: bridgeSignals.contentUrl || readStoredString("contentUrl") || AIRY_DEFAULT_CONTENT_URL,
|
|
371
|
+
appId: bridgeSignals.appId || readStoredString("appId") || readStoredString("msid") || getDefaultAppId(),
|
|
372
|
+
appName: bridgeSignals.appName || readStoredString("appName") || readStoredString("an") || AIRY_APP_NAME,
|
|
373
|
+
sessionId: getOrCreateCtvSessionId()
|
|
374
|
+
}, deviceId ? {
|
|
375
|
+
deviceId: deviceId
|
|
376
|
+
} : {}, deviceIdType ? {
|
|
377
|
+
deviceIdType: deviceIdType
|
|
378
|
+
} : {}, limitAdTracking != null ? {
|
|
379
|
+
limitAdTracking: limitAdTracking
|
|
380
|
+
} : {}), {
|
|
381
|
+
deviceTypeHint: 5
|
|
382
|
+
});
|
|
383
|
+
}
|
|
384
|
+
return _object_spread({
|
|
385
|
+
isCtv: false
|
|
500
386
|
}, deviceId ? {
|
|
501
387
|
deviceId: deviceId
|
|
502
|
-
} : {},
|
|
388
|
+
} : {}, deviceIdType ? {
|
|
503
389
|
deviceIdType: deviceIdType
|
|
504
|
-
} : {},
|
|
505
|
-
limitAdTracking:
|
|
506
|
-
} : {})
|
|
507
|
-
|
|
508
|
-
|
|
390
|
+
} : {}, limitAdTracking != null ? {
|
|
391
|
+
limitAdTracking: limitAdTracking
|
|
392
|
+
} : {});
|
|
393
|
+
}
|
|
394
|
+
function inferDeviceIdType() {
|
|
395
|
+
if (typeof navigator === "undefined") {
|
|
396
|
+
return void 0;
|
|
397
|
+
}
|
|
398
|
+
var ua = navigator.userAgent;
|
|
399
|
+
if (/Roku/i.test(ua)) return "rida";
|
|
400
|
+
if (/Tizen|Samsung/i.test(ua)) return "tifa";
|
|
401
|
+
if (/AppleTV|Apple TV/i.test(ua)) return "tvOS";
|
|
402
|
+
if (/AFT|Fire TV|Amazon/i.test(ua)) return "afai";
|
|
403
|
+
if (/Web0S|webOS|LG Browser|LGSTB|LGE/i.test(ua)) return "lgudid";
|
|
404
|
+
if (/Android|Google TV/i.test(ua)) return "aaid";
|
|
405
|
+
if (/iPhone|iPad|iPod/i.test(ua)) return "idfa";
|
|
406
|
+
return void 0;
|
|
407
|
+
}
|
|
408
|
+
function isEquivalentDeviceIdType(tagType, runtimeType) {
|
|
409
|
+
if (!tagType || !runtimeType) return false;
|
|
410
|
+
var tag = tagType.toLowerCase();
|
|
411
|
+
var runtime = runtimeType.toLowerCase();
|
|
412
|
+
if (tag === runtime) return true;
|
|
413
|
+
return ANDROID_ID_TYPES.has(tag) && ANDROID_ID_TYPES.has(runtime);
|
|
509
414
|
}
|
|
510
415
|
function getOrCreateCtvSessionId() {
|
|
511
416
|
var existing = readStoredString(CTV_SESSION_STORAGE_KEY);
|
|
@@ -538,7 +443,10 @@ function readNativeBridgeSignals() {
|
|
|
538
443
|
window.__STORMCLOUD_CTV__,
|
|
539
444
|
window.stormcloudCtv,
|
|
540
445
|
window.AiryTV,
|
|
541
|
-
window.Android
|
|
446
|
+
window.Android,
|
|
447
|
+
window.webOS,
|
|
448
|
+
window.tizen,
|
|
449
|
+
window.amazon
|
|
542
450
|
].filter(Boolean);
|
|
543
451
|
var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
|
|
544
452
|
try {
|
|
@@ -550,18 +458,36 @@ function readNativeBridgeSignals() {
|
|
|
550
458
|
"videoUrl",
|
|
551
459
|
"canonicalUrl"
|
|
552
460
|
]) || void 0;
|
|
461
|
+
var appId = readBridgeValue(source, [
|
|
462
|
+
"appId",
|
|
463
|
+
"msid",
|
|
464
|
+
"applicationId",
|
|
465
|
+
"packageName"
|
|
466
|
+
]) || void 0;
|
|
467
|
+
var appName = readBridgeValue(source, [
|
|
468
|
+
"appName",
|
|
469
|
+
"an",
|
|
470
|
+
"applicationName"
|
|
471
|
+
]) || void 0;
|
|
553
472
|
var deviceId = readBridgeValue(source, [
|
|
554
473
|
"rdid",
|
|
555
474
|
"ifa",
|
|
556
475
|
"advertisingId",
|
|
557
476
|
"adId",
|
|
558
|
-
"deviceId"
|
|
477
|
+
"deviceId",
|
|
478
|
+
"lgudid",
|
|
479
|
+
"LGUDID",
|
|
480
|
+
"tifa",
|
|
481
|
+
"rida",
|
|
482
|
+
"afai",
|
|
483
|
+
"aaid"
|
|
559
484
|
]) || void 0;
|
|
560
|
-
if (!contentUrl && !deviceId) continue;
|
|
485
|
+
if (!contentUrl && !deviceId && !appId && !appName) continue;
|
|
561
486
|
var deviceIdType = readBridgeValue(source, [
|
|
562
487
|
"idtype",
|
|
563
488
|
"deviceIdType",
|
|
564
|
-
"advertisingIdType"
|
|
489
|
+
"advertisingIdType",
|
|
490
|
+
"idType"
|
|
565
491
|
]) || inferDeviceIdType();
|
|
566
492
|
var limitAdTracking = readBridgeBoolean(source, [
|
|
567
493
|
"is_lat",
|
|
@@ -571,6 +497,10 @@ function readNativeBridgeSignals() {
|
|
|
571
497
|
]);
|
|
572
498
|
return _object_spread({}, contentUrl ? {
|
|
573
499
|
contentUrl: contentUrl
|
|
500
|
+
} : {}, appId ? {
|
|
501
|
+
appId: appId
|
|
502
|
+
} : {}, appName ? {
|
|
503
|
+
appName: appName
|
|
574
504
|
} : {}, deviceId ? {
|
|
575
505
|
deviceId: deviceId
|
|
576
506
|
} : {}, deviceId && deviceIdType ? {
|
|
@@ -723,18 +653,423 @@ function normalizeBoolean(value) {
|
|
|
723
653
|
}
|
|
724
654
|
return void 0;
|
|
725
655
|
}
|
|
726
|
-
|
|
727
|
-
|
|
728
|
-
|
|
656
|
+
// src/utils/vastMacros.ts
|
|
657
|
+
var UNEXPANDED_MACRO_PATTERN = /^(\[[^\]]*\]|\{[^}]*\}|%%[^%]*%%)$/;
|
|
658
|
+
var INVALID_VAST_PARAM_KEY = /^\s|\s$/;
|
|
659
|
+
var EXAMPLE_COM_URL = /example\.com/i;
|
|
660
|
+
var CTV_UNSUPPORTED_PARAMS = [
|
|
661
|
+
"description_url",
|
|
662
|
+
"tfcd",
|
|
663
|
+
"npa",
|
|
664
|
+
"min_ad_duration",
|
|
665
|
+
"max_ad_duration",
|
|
666
|
+
"unviewed_position_start",
|
|
667
|
+
"impl",
|
|
668
|
+
"scor",
|
|
669
|
+
"vad_type",
|
|
670
|
+
"gdpr",
|
|
671
|
+
"gdpr_consent",
|
|
672
|
+
"us_privacy"
|
|
673
|
+
];
|
|
674
|
+
var INLINE_DEVICE_MACRO_REPLACEMENTS = [
|
|
675
|
+
{
|
|
676
|
+
pattern: /\[RDID\]/gi,
|
|
677
|
+
getValue: function getValue(ctx) {
|
|
678
|
+
return ctx.deviceId;
|
|
679
|
+
}
|
|
680
|
+
},
|
|
681
|
+
{
|
|
682
|
+
pattern: /\[IFA\]/gi,
|
|
683
|
+
getValue: function getValue(ctx) {
|
|
684
|
+
return ctx.deviceId;
|
|
685
|
+
}
|
|
686
|
+
},
|
|
687
|
+
{
|
|
688
|
+
pattern: /\[ADVERTISING[_-]?ID(?:ENTIFIER)?\]/gi,
|
|
689
|
+
getValue: function getValue(ctx) {
|
|
690
|
+
return ctx.deviceId;
|
|
691
|
+
}
|
|
692
|
+
},
|
|
693
|
+
{
|
|
694
|
+
pattern: /\[DEVICE[_-]?ID\]/gi,
|
|
695
|
+
getValue: function getValue(ctx) {
|
|
696
|
+
return ctx.deviceId;
|
|
697
|
+
}
|
|
698
|
+
},
|
|
699
|
+
{
|
|
700
|
+
pattern: /\[IDTYPE\]/gi,
|
|
701
|
+
getValue: function getValue(ctx) {
|
|
702
|
+
return ctx.deviceIdType;
|
|
703
|
+
}
|
|
704
|
+
},
|
|
705
|
+
{
|
|
706
|
+
pattern: /\{rdid\}/gi,
|
|
707
|
+
getValue: function getValue(ctx) {
|
|
708
|
+
return ctx.deviceId;
|
|
709
|
+
}
|
|
710
|
+
},
|
|
711
|
+
{
|
|
712
|
+
pattern: /\{device[_-]?id\}/gi,
|
|
713
|
+
getValue: function getValue(ctx) {
|
|
714
|
+
return ctx.deviceId;
|
|
715
|
+
}
|
|
716
|
+
},
|
|
717
|
+
{
|
|
718
|
+
pattern: /\{idtype\}/gi,
|
|
719
|
+
getValue: function getValue(ctx) {
|
|
720
|
+
return ctx.deviceIdType;
|
|
721
|
+
}
|
|
722
|
+
},
|
|
723
|
+
{
|
|
724
|
+
pattern: /%%ADVERTISING_IDENTIFIER_PLAIN%%/gi,
|
|
725
|
+
getValue: function getValue(ctx) {
|
|
726
|
+
return ctx.deviceId;
|
|
727
|
+
}
|
|
728
|
+
},
|
|
729
|
+
{
|
|
730
|
+
pattern: /%%ADVERTISING_ID_OPT_OUT%%/gi,
|
|
731
|
+
getValue: function getValue(ctx) {
|
|
732
|
+
return ctx.limitAdTracking != null ? ctx.limitAdTracking ? "1" : "0" : void 0;
|
|
733
|
+
}
|
|
734
|
+
},
|
|
735
|
+
{
|
|
736
|
+
pattern: /%%ADVERTISING_ID_TYPE%%/gi,
|
|
737
|
+
getValue: function getValue(ctx) {
|
|
738
|
+
return ctx.deviceIdType;
|
|
739
|
+
}
|
|
740
|
+
},
|
|
741
|
+
{
|
|
742
|
+
pattern: /%%ADVERTISING_ID%%/gi,
|
|
743
|
+
getValue: function getValue(ctx) {
|
|
744
|
+
return ctx.deviceId;
|
|
745
|
+
}
|
|
746
|
+
},
|
|
747
|
+
{
|
|
748
|
+
pattern: /%%LIMIT_AD_TRACKING%%/gi,
|
|
749
|
+
getValue: function getValue(ctx) {
|
|
750
|
+
return ctx.limitAdTracking != null ? ctx.limitAdTracking ? "1" : "0" : void 0;
|
|
751
|
+
}
|
|
752
|
+
},
|
|
753
|
+
{
|
|
754
|
+
pattern: /%%MSID%%/gi,
|
|
755
|
+
getValue: function getValue(ctx) {
|
|
756
|
+
return ctx.appId;
|
|
757
|
+
}
|
|
758
|
+
},
|
|
759
|
+
{
|
|
760
|
+
pattern: /%%APP_NAME%%/gi,
|
|
761
|
+
getValue: function getValue(ctx) {
|
|
762
|
+
return ctx.appName;
|
|
763
|
+
}
|
|
764
|
+
},
|
|
765
|
+
{
|
|
766
|
+
pattern: /%%SESSION_ID%%/gi,
|
|
767
|
+
getValue: function getValue(ctx) {
|
|
768
|
+
return ctx.sessionId;
|
|
769
|
+
}
|
|
770
|
+
},
|
|
771
|
+
{
|
|
772
|
+
pattern: /%%CORRELATOR%%/gi,
|
|
773
|
+
getValue: function getValue(ctx) {
|
|
774
|
+
return ctx.correlator;
|
|
775
|
+
}
|
|
729
776
|
}
|
|
730
|
-
|
|
731
|
-
|
|
732
|
-
if (
|
|
733
|
-
|
|
734
|
-
if (
|
|
735
|
-
if (
|
|
736
|
-
|
|
737
|
-
|
|
777
|
+
];
|
|
778
|
+
function isMacroPlaceholder(value) {
|
|
779
|
+
if (value == null) return true;
|
|
780
|
+
var trimmed = value.trim();
|
|
781
|
+
if (!trimmed) return true;
|
|
782
|
+
if (UNEXPANDED_MACRO_PATTERN.test(trimmed)) return true;
|
|
783
|
+
return /^(unknown|null|undefined|none|n\/a|\$\{[^}]+\})$/i.test(trimmed);
|
|
784
|
+
}
|
|
785
|
+
function generateCorrelator() {
|
|
786
|
+
if (typeof crypto !== "undefined" && crypto.getRandomValues) {
|
|
787
|
+
try {
|
|
788
|
+
var _buf_, _buf_1;
|
|
789
|
+
var buf = new Uint32Array(2);
|
|
790
|
+
crypto.getRandomValues(buf);
|
|
791
|
+
var value = ((_buf_ = buf[0]) !== null && _buf_ !== void 0 ? _buf_ : 0) * 2097152 + (((_buf_1 = buf[1]) !== null && _buf_1 !== void 0 ? _buf_1 : 0) & 2097151);
|
|
792
|
+
if (value > 0) {
|
|
793
|
+
return String(value);
|
|
794
|
+
}
|
|
795
|
+
} catch (unused) {}
|
|
796
|
+
}
|
|
797
|
+
return String(Math.floor(Math.random() * Number.MAX_SAFE_INTEGER) + 1);
|
|
798
|
+
}
|
|
799
|
+
function expandInlineMacroPlaceholders(baseUrl, ctx) {
|
|
800
|
+
var url = baseUrl;
|
|
801
|
+
var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
|
|
802
|
+
try {
|
|
803
|
+
for(var _iterator = INLINE_DEVICE_MACRO_REPLACEMENTS[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){
|
|
804
|
+
var _step_value = _step.value, pattern = _step_value.pattern, getValue = _step_value.getValue;
|
|
805
|
+
var value = getValue(ctx);
|
|
806
|
+
if (value != null && value !== "") {
|
|
807
|
+
url = url.replace(pattern, encodeURIComponent(value));
|
|
808
|
+
}
|
|
809
|
+
}
|
|
810
|
+
} catch (err) {
|
|
811
|
+
_didIteratorError = true;
|
|
812
|
+
_iteratorError = err;
|
|
813
|
+
} finally{
|
|
814
|
+
try {
|
|
815
|
+
if (!_iteratorNormalCompletion && _iterator.return != null) {
|
|
816
|
+
_iterator.return();
|
|
817
|
+
}
|
|
818
|
+
} finally{
|
|
819
|
+
if (_didIteratorError) {
|
|
820
|
+
throw _iteratorError;
|
|
821
|
+
}
|
|
822
|
+
}
|
|
823
|
+
}
|
|
824
|
+
return url;
|
|
825
|
+
}
|
|
826
|
+
function applyDeviceIdentityParams(params, ctx) {
|
|
827
|
+
var _ctx_deviceId, _ctx_deviceIdType;
|
|
828
|
+
var runtimeId = (_ctx_deviceId = ctx.deviceId) === null || _ctx_deviceId === void 0 ? void 0 : _ctx_deviceId.trim();
|
|
829
|
+
var runtimeType = ((_ctx_deviceIdType = ctx.deviceIdType) === null || _ctx_deviceIdType === void 0 ? void 0 : _ctx_deviceIdType.trim()) || inferDeviceIdType();
|
|
830
|
+
var tagRdid = params.get("rdid");
|
|
831
|
+
var tagType = params.get("idtype");
|
|
832
|
+
var tagLat = params.get("is_lat");
|
|
833
|
+
var latValue = ctx.limitAdTracking != null ? ctx.limitAdTracking ? "1" : "0" : void 0;
|
|
834
|
+
if (runtimeId) {
|
|
835
|
+
params.set("rdid", runtimeId);
|
|
836
|
+
params.set("idtype", runtimeType || tagType || "aaid");
|
|
837
|
+
params.set("is_lat", latValue !== null && latValue !== void 0 ? latValue : isMacroPlaceholder(tagLat) ? "0" : tagLat);
|
|
838
|
+
return;
|
|
839
|
+
}
|
|
840
|
+
var tagRdidValid = Boolean(tagRdid && !isMacroPlaceholder(tagRdid));
|
|
841
|
+
var tagTypeValid = Boolean(tagType && !isMacroPlaceholder(tagType));
|
|
842
|
+
if (tagRdidValid && tagTypeValid && runtimeType && !isEquivalentDeviceIdType(tagType, runtimeType)) {
|
|
843
|
+
params.delete("rdid");
|
|
844
|
+
params.delete("idtype");
|
|
845
|
+
params.delete("is_lat");
|
|
846
|
+
return;
|
|
847
|
+
}
|
|
848
|
+
if (tagRdidValid) {
|
|
849
|
+
if (isMacroPlaceholder(tagType) && runtimeType) {
|
|
850
|
+
params.set("idtype", runtimeType);
|
|
851
|
+
}
|
|
852
|
+
if (isMacroPlaceholder(tagLat)) {
|
|
853
|
+
params.set("is_lat", latValue !== null && latValue !== void 0 ? latValue : "0");
|
|
854
|
+
}
|
|
855
|
+
return;
|
|
856
|
+
}
|
|
857
|
+
params.delete("rdid");
|
|
858
|
+
params.delete("idtype");
|
|
859
|
+
params.delete("is_lat");
|
|
860
|
+
}
|
|
861
|
+
function removeBrokenAppNameOrphans(params, appName) {
|
|
862
|
+
var toDelete = [];
|
|
863
|
+
params.forEach(function(_value, key) {
|
|
864
|
+
if (!key || INVALID_VAST_PARAM_KEY.test(key)) {
|
|
865
|
+
toDelete.push(key);
|
|
866
|
+
}
|
|
867
|
+
});
|
|
868
|
+
if (appName && appName.includes("&")) {
|
|
869
|
+
var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
|
|
870
|
+
try {
|
|
871
|
+
for(var _iterator = appName.split("&").slice(1)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){
|
|
872
|
+
var suffix = _step.value;
|
|
873
|
+
var trimmed = suffix.trimStart();
|
|
874
|
+
if (!trimmed) continue;
|
|
875
|
+
toDelete.push(suffix, " ".concat(trimmed), trimmed);
|
|
876
|
+
}
|
|
877
|
+
} catch (err) {
|
|
878
|
+
_didIteratorError = true;
|
|
879
|
+
_iteratorError = err;
|
|
880
|
+
} finally{
|
|
881
|
+
try {
|
|
882
|
+
if (!_iteratorNormalCompletion && _iterator.return != null) {
|
|
883
|
+
_iterator.return();
|
|
884
|
+
}
|
|
885
|
+
} finally{
|
|
886
|
+
if (_didIteratorError) {
|
|
887
|
+
throw _iteratorError;
|
|
888
|
+
}
|
|
889
|
+
}
|
|
890
|
+
}
|
|
891
|
+
}
|
|
892
|
+
var _iteratorNormalCompletion1 = true, _didIteratorError1 = false, _iteratorError1 = undefined;
|
|
893
|
+
try {
|
|
894
|
+
for(var _iterator1 = new Set(toDelete)[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = true){
|
|
895
|
+
var key = _step1.value;
|
|
896
|
+
if (key) params.delete(key);
|
|
897
|
+
}
|
|
898
|
+
} catch (err) {
|
|
899
|
+
_didIteratorError1 = true;
|
|
900
|
+
_iteratorError1 = err;
|
|
901
|
+
} finally{
|
|
902
|
+
try {
|
|
903
|
+
if (!_iteratorNormalCompletion1 && _iterator1.return != null) {
|
|
904
|
+
_iterator1.return();
|
|
905
|
+
}
|
|
906
|
+
} finally{
|
|
907
|
+
if (_didIteratorError1) {
|
|
908
|
+
throw _iteratorError1;
|
|
909
|
+
}
|
|
910
|
+
}
|
|
911
|
+
}
|
|
912
|
+
}
|
|
913
|
+
function normalizeVastTagUrl(raw) {
|
|
914
|
+
if (!raw) return raw;
|
|
915
|
+
try {
|
|
916
|
+
var url = new URL(raw);
|
|
917
|
+
var anValue = url.searchParams.get("an");
|
|
918
|
+
if (anValue !== null) {
|
|
919
|
+
var orphanFragments = [];
|
|
920
|
+
url.searchParams.forEach(function(_value, key) {
|
|
921
|
+
if (key && INVALID_VAST_PARAM_KEY.test(key)) {
|
|
922
|
+
orphanFragments.push(key.trim());
|
|
923
|
+
}
|
|
924
|
+
});
|
|
925
|
+
if (orphanFragments.length > 0) {
|
|
926
|
+
var reconstructed = [
|
|
927
|
+
anValue.trimEnd()
|
|
928
|
+
].concat(_to_consumable_array(orphanFragments)).filter(Boolean).join(" & ");
|
|
929
|
+
url.searchParams.forEach(function(_value, key) {
|
|
930
|
+
if (key && INVALID_VAST_PARAM_KEY.test(key)) {
|
|
931
|
+
url.searchParams.delete(key);
|
|
932
|
+
}
|
|
933
|
+
});
|
|
934
|
+
url.searchParams.set("an", reconstructed);
|
|
935
|
+
return url.toString().replace(/([?&]an=)([^&]*)/, function(_match, prefix, val) {
|
|
936
|
+
return prefix + val.replace(/\+/g, "%20");
|
|
937
|
+
});
|
|
938
|
+
}
|
|
939
|
+
}
|
|
940
|
+
removeBrokenAppNameOrphans(url.searchParams);
|
|
941
|
+
return url.toString();
|
|
942
|
+
} catch (unused) {
|
|
943
|
+
return raw;
|
|
944
|
+
}
|
|
945
|
+
}
|
|
946
|
+
function applyVastMacros(baseUrl, ctx) {
|
|
947
|
+
var expandedUrl = expandInlineMacroPlaceholders(baseUrl, ctx);
|
|
948
|
+
var url;
|
|
949
|
+
try {
|
|
950
|
+
url = new URL(normalizeVastTagUrl(expandedUrl));
|
|
951
|
+
} catch (unused) {
|
|
952
|
+
return replaceCorrelatorFallback(expandedUrl, ctx.correlator);
|
|
953
|
+
}
|
|
954
|
+
var params = url.searchParams;
|
|
955
|
+
removeBrokenAppNameOrphans(params, ctx.appName);
|
|
956
|
+
params.set("correlator", ctx.correlator);
|
|
957
|
+
if (ctx.isCtv) {
|
|
958
|
+
var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
|
|
959
|
+
try {
|
|
960
|
+
for(var _iterator = CTV_UNSUPPORTED_PARAMS[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){
|
|
961
|
+
var key = _step.value;
|
|
962
|
+
params.delete(key);
|
|
963
|
+
}
|
|
964
|
+
} catch (err) {
|
|
965
|
+
_didIteratorError = true;
|
|
966
|
+
_iteratorError = err;
|
|
967
|
+
} finally{
|
|
968
|
+
try {
|
|
969
|
+
if (!_iteratorNormalCompletion && _iterator.return != null) {
|
|
970
|
+
_iterator.return();
|
|
971
|
+
}
|
|
972
|
+
} finally{
|
|
973
|
+
if (_didIteratorError) {
|
|
974
|
+
throw _iteratorError;
|
|
975
|
+
}
|
|
976
|
+
}
|
|
977
|
+
}
|
|
978
|
+
} else {
|
|
979
|
+
params.set("scor", ctx.streamCorrelator);
|
|
980
|
+
}
|
|
981
|
+
if (ctx.pod != null) {
|
|
982
|
+
params.set("pod", String(ctx.pod));
|
|
983
|
+
}
|
|
984
|
+
if (ctx.adPosition != null) {
|
|
985
|
+
params.set("ppos", String(ctx.adPosition));
|
|
986
|
+
}
|
|
987
|
+
var requestUrl = ctx.contentUrl || ctx.pageUrl;
|
|
988
|
+
if (requestUrl) {
|
|
989
|
+
params.set("url", requestUrl);
|
|
990
|
+
if (!ctx.isCtv) {
|
|
991
|
+
params.set("description_url", requestUrl);
|
|
992
|
+
}
|
|
993
|
+
} else {
|
|
994
|
+
var existingUrl = params.get("url") || "";
|
|
995
|
+
if (EXAMPLE_COM_URL.test(existingUrl)) {
|
|
996
|
+
params.delete("url");
|
|
997
|
+
params.delete("description_url");
|
|
998
|
+
}
|
|
999
|
+
}
|
|
1000
|
+
if (ctx.adWillPlayMuted != null) {
|
|
1001
|
+
params.set("vpmute", ctx.adWillPlayMuted ? "1" : "0");
|
|
1002
|
+
}
|
|
1003
|
+
if (ctx.adWillAutoPlay != null) {
|
|
1004
|
+
params.set("vpa", ctx.adWillAutoPlay ? "auto" : "click");
|
|
1005
|
+
}
|
|
1006
|
+
if (ctx.appId) {
|
|
1007
|
+
params.set("msid", ctx.appId);
|
|
1008
|
+
}
|
|
1009
|
+
if (ctx.appName) {
|
|
1010
|
+
removeBrokenAppNameOrphans(params, ctx.appName);
|
|
1011
|
+
params.set("an", ctx.appName);
|
|
1012
|
+
}
|
|
1013
|
+
if (ctx.sessionId) {
|
|
1014
|
+
params.set("sid", ctx.sessionId);
|
|
1015
|
+
}
|
|
1016
|
+
if (ctx.deviceTypeHint != null) {
|
|
1017
|
+
params.set("dth", String(ctx.deviceTypeHint));
|
|
1018
|
+
} else if (ctx.isCtv) {
|
|
1019
|
+
params.set("dth", "5");
|
|
1020
|
+
}
|
|
1021
|
+
applyDeviceIdentityParams(params, ctx);
|
|
1022
|
+
if (!ctx.isCtv) {
|
|
1023
|
+
var consent = ctx.consent;
|
|
1024
|
+
if ((consent === null || consent === void 0 ? void 0 : consent.gdpr) != null) {
|
|
1025
|
+
params.set("gdpr", consent.gdpr);
|
|
1026
|
+
}
|
|
1027
|
+
if ((consent === null || consent === void 0 ? void 0 : consent.gdprConsent) != null) {
|
|
1028
|
+
params.set("gdpr_consent", consent.gdprConsent);
|
|
1029
|
+
}
|
|
1030
|
+
if ((consent === null || consent === void 0 ? void 0 : consent.usPrivacy) != null) {
|
|
1031
|
+
params.set("us_privacy", consent.usPrivacy);
|
|
1032
|
+
}
|
|
1033
|
+
}
|
|
1034
|
+
if (ctx.adTest) {
|
|
1035
|
+
params.set("adtest", "on");
|
|
1036
|
+
}
|
|
1037
|
+
var staleKeys = [];
|
|
1038
|
+
params.forEach(function(value, key) {
|
|
1039
|
+
if (isMacroPlaceholder(value)) {
|
|
1040
|
+
staleKeys.push(key);
|
|
1041
|
+
}
|
|
1042
|
+
});
|
|
1043
|
+
var _iteratorNormalCompletion1 = true, _didIteratorError1 = false, _iteratorError1 = undefined;
|
|
1044
|
+
try {
|
|
1045
|
+
for(var _iterator1 = staleKeys[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = true){
|
|
1046
|
+
var key1 = _step1.value;
|
|
1047
|
+
params.delete(key1);
|
|
1048
|
+
}
|
|
1049
|
+
} catch (err) {
|
|
1050
|
+
_didIteratorError1 = true;
|
|
1051
|
+
_iteratorError1 = err;
|
|
1052
|
+
} finally{
|
|
1053
|
+
try {
|
|
1054
|
+
if (!_iteratorNormalCompletion1 && _iterator1.return != null) {
|
|
1055
|
+
_iterator1.return();
|
|
1056
|
+
}
|
|
1057
|
+
} finally{
|
|
1058
|
+
if (_didIteratorError1) {
|
|
1059
|
+
throw _iteratorError1;
|
|
1060
|
+
}
|
|
1061
|
+
}
|
|
1062
|
+
}
|
|
1063
|
+
removeBrokenAppNameOrphans(params, ctx.appName);
|
|
1064
|
+
return url.toString();
|
|
1065
|
+
}
|
|
1066
|
+
function replaceCorrelatorFallback(baseUrl, correlator) {
|
|
1067
|
+
var correlatorRegex = /([?&])correlator=([^&]*)/;
|
|
1068
|
+
if (correlatorRegex.test(baseUrl)) {
|
|
1069
|
+
return baseUrl.replace(correlatorRegex, "$1correlator=".concat(correlator));
|
|
1070
|
+
}
|
|
1071
|
+
var sep = baseUrl.includes("?") ? "&" : "?";
|
|
1072
|
+
return "".concat(baseUrl).concat(sep, "correlator=").concat(correlator);
|
|
738
1073
|
}
|
|
739
1074
|
// src/utils/mqttConfig.ts
|
|
740
1075
|
var DEFAULT_MQTT_CONFIG = {
|
|
@@ -1195,10 +1530,10 @@ function sendHeartbeat(_0) {
|
|
|
1195
1530
|
});
|
|
1196
1531
|
}).apply(this, arguments);
|
|
1197
1532
|
}
|
|
1198
|
-
// src/player/
|
|
1199
|
-
var
|
|
1200
|
-
function
|
|
1201
|
-
_class_call_check(this,
|
|
1533
|
+
// src/player/AdConfigManager.ts
|
|
1534
|
+
var AdConfigManager = /*#__PURE__*/ function() {
|
|
1535
|
+
function AdConfigManager(config, video) {
|
|
1536
|
+
_class_call_check(this, AdConfigManager);
|
|
1202
1537
|
this.vmapBreaks = [];
|
|
1203
1538
|
this.consumedVmapBreakIds = /* @__PURE__ */ new Set();
|
|
1204
1539
|
this.streamCorrelator = generateCorrelator();
|
|
@@ -1210,7 +1545,7 @@ var VmapManager = /*#__PURE__*/ function() {
|
|
|
1210
1545
|
this.config = config;
|
|
1211
1546
|
this.video = video;
|
|
1212
1547
|
}
|
|
1213
|
-
_create_class(
|
|
1548
|
+
_create_class(AdConfigManager, [
|
|
1214
1549
|
{
|
|
1215
1550
|
key: "debug",
|
|
1216
1551
|
get: function get() {
|
|
@@ -1228,7 +1563,7 @@ var VmapManager = /*#__PURE__*/ function() {
|
|
|
1228
1563
|
key: "fetchAdConfiguration",
|
|
1229
1564
|
value: function fetchAdConfiguration() {
|
|
1230
1565
|
return _async_to_generator(function() {
|
|
1231
|
-
var _data_response_ima_publisherdeskima, _data_response_ima, _data_response, _data_response_options_vast_cue_tones, _data_response_options_vast, _data_response_options, _data_response1, vastMode, vastEndpoint, apiUrl, headers, response, data, imaPayload, numberAds;
|
|
1566
|
+
var _data_response_ima_publisherdeskima, _data_response_ima, _data_response, _data_response_options_vast_cue_tones, _data_response_options_vast, _data_response_options, _data_response1, vastMode, vastEndpoint, apiUrl, headers, response, data, imaPayload, decodedPayload, numberAds;
|
|
1232
1567
|
return _ts_generator(this, function(_state) {
|
|
1233
1568
|
switch(_state.label){
|
|
1234
1569
|
case 0:
|
|
@@ -1272,7 +1607,7 @@ var VmapManager = /*#__PURE__*/ function() {
|
|
|
1272
1607
|
];
|
|
1273
1608
|
}
|
|
1274
1609
|
if (this.config.vastTagUrl) {
|
|
1275
|
-
this.apiVastTagUrl = this.config.vastTagUrl;
|
|
1610
|
+
this.apiVastTagUrl = normalizeVastTagUrl(this.config.vastTagUrl);
|
|
1276
1611
|
if (this.debug) {
|
|
1277
1612
|
console.log("[StormcloudVideoPlayer] Using custom VAST tag URL:", this.apiVastTagUrl);
|
|
1278
1613
|
}
|
|
@@ -1312,9 +1647,16 @@ var VmapManager = /*#__PURE__*/ function() {
|
|
|
1312
1647
|
data = _state.sent();
|
|
1313
1648
|
imaPayload = (_data_response = data.response) === null || _data_response === void 0 ? void 0 : (_data_response_ima = _data_response.ima) === null || _data_response_ima === void 0 ? void 0 : (_data_response_ima_publisherdeskima = _data_response_ima["publisherdesk.ima"]) === null || _data_response_ima_publisherdeskima === void 0 ? void 0 : _data_response_ima_publisherdeskima.payload;
|
|
1314
1649
|
if (imaPayload) {
|
|
1315
|
-
|
|
1650
|
+
decodedPayload = imaPayload;
|
|
1651
|
+
try {
|
|
1652
|
+
decodedPayload = decodeURIComponent(imaPayload);
|
|
1653
|
+
} catch (unused) {
|
|
1654
|
+
console.warn("[StormcloudVideoPlayer] imaPayload was not URI-encoded; using as-is:", imaPayload);
|
|
1655
|
+
}
|
|
1656
|
+
console.log("[StormcloudVideoPlayer] Raw VAST tag URL (from API):", decodedPayload);
|
|
1657
|
+
this.apiVastTagUrl = normalizeVastTagUrl(decodedPayload);
|
|
1316
1658
|
if (this.debug) {
|
|
1317
|
-
console.log("[StormcloudVideoPlayer]
|
|
1659
|
+
console.log("[StormcloudVideoPlayer] Normalized VAST tag URL:", this.apiVastTagUrl);
|
|
1318
1660
|
}
|
|
1319
1661
|
} else {
|
|
1320
1662
|
if (this.debug) {
|
|
@@ -1627,28 +1969,30 @@ var VmapManager = /*#__PURE__*/ function() {
|
|
|
1627
1969
|
for(var i = 0; i < count; i++){
|
|
1628
1970
|
this.adRequestPositionInBreak++;
|
|
1629
1971
|
var adWillPlayMuted = inAdBreak ? adPlayer.getOriginalMutedState() : this.video.muted;
|
|
1630
|
-
var
|
|
1972
|
+
var envSignals = resolveVastEnvironmentSignals(!!this.config.ctvAdRequest);
|
|
1631
1973
|
var urlWithMacros = applyVastMacros(baseUrl, {
|
|
1632
1974
|
correlator: generateCorrelator(),
|
|
1633
1975
|
streamCorrelator: this.streamCorrelator,
|
|
1634
1976
|
pod: this.podCounter > 0 ? this.podCounter : void 0,
|
|
1635
1977
|
adPosition: this.adRequestPositionInBreak,
|
|
1636
|
-
isCtv:
|
|
1637
|
-
contentUrl:
|
|
1638
|
-
pageUrl: !
|
|
1978
|
+
isCtv: envSignals.isCtv,
|
|
1979
|
+
contentUrl: envSignals.contentUrl,
|
|
1980
|
+
pageUrl: !envSignals.isCtv && typeof window !== "undefined" ? window.location.href : void 0,
|
|
1639
1981
|
adWillPlayMuted: adWillPlayMuted,
|
|
1640
1982
|
adWillAutoPlay: !!this.config.autoplay,
|
|
1641
|
-
appId:
|
|
1642
|
-
appName:
|
|
1643
|
-
sessionId:
|
|
1644
|
-
deviceId:
|
|
1645
|
-
deviceIdType:
|
|
1646
|
-
limitAdTracking:
|
|
1647
|
-
deviceTypeHint:
|
|
1983
|
+
appId: envSignals.appId,
|
|
1984
|
+
appName: envSignals.appName,
|
|
1985
|
+
sessionId: envSignals.sessionId,
|
|
1986
|
+
deviceId: envSignals.deviceId,
|
|
1987
|
+
deviceIdType: envSignals.deviceIdType,
|
|
1988
|
+
limitAdTracking: envSignals.limitAdTracking,
|
|
1989
|
+
deviceTypeHint: envSignals.deviceTypeHint,
|
|
1648
1990
|
adTest: this.config.adTest,
|
|
1649
1991
|
consent: this.consentSignals
|
|
1650
1992
|
});
|
|
1651
|
-
|
|
1993
|
+
var finalUrl = palNonce.injectNonce(urlWithMacros);
|
|
1994
|
+
console.log("[StormcloudVideoPlayer] Resolved ad request URL (pod=".concat(this.podCounter, ", pos=").concat(this.adRequestPositionInBreak, "):"), finalUrl);
|
|
1995
|
+
urls.push(finalUrl);
|
|
1652
1996
|
}
|
|
1653
1997
|
return urls;
|
|
1654
1998
|
}
|
|
@@ -1697,10 +2041,10 @@ var VmapManager = /*#__PURE__*/ function() {
|
|
|
1697
2041
|
}
|
|
1698
2042
|
}
|
|
1699
2043
|
]);
|
|
1700
|
-
return
|
|
2044
|
+
return AdConfigManager;
|
|
1701
2045
|
}();
|
|
1702
2046
|
// Annotate the CommonJS export names for ESM import in node:
|
|
1703
2047
|
0 && (module.exports = {
|
|
1704
|
-
|
|
2048
|
+
AdConfigManager: AdConfigManager
|
|
1705
2049
|
});
|
|
1706
|
-
//# sourceMappingURL=
|
|
2050
|
+
//# sourceMappingURL=AdConfigManager.cjs.map
|