stormcloud-video-player 0.8.57 → 0.8.59
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/index.cjs +57 -81
- package/lib/index.cjs.map +1 -1
- package/lib/index.d.cts +1 -0
- package/lib/index.d.ts +1 -0
- package/lib/index.js +57 -81
- package/lib/index.js.map +1 -1
- package/lib/player/AdBreakOrchestrator.cjs.map +1 -1
- package/lib/player/AdBreakOrchestrator.d.cts +1 -1
- package/lib/player/AdConfigManager.cjs +47 -76
- package/lib/player/AdConfigManager.cjs.map +1 -1
- package/lib/player/AdConfigManager.d.cts +2 -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 +53 -79
- package/lib/player/StormcloudVideoPlayer.cjs.map +1 -1
- package/lib/player/StormcloudVideoPlayer.d.cts +1 -1
- package/lib/player/playerTypes.d.cts +1 -1
- package/lib/players/HlsPlayer.cjs +53 -79
- package/lib/players/HlsPlayer.cjs.map +1 -1
- package/lib/players/HlsPlayer.d.cts +1 -1
- package/lib/players/index.cjs +53 -79
- package/lib/players/index.cjs.map +1 -1
- package/lib/sdk/hlsAdPlayer.d.cts +1 -1
- package/lib/{types-cTqIKw_D.d.cts → types-52ASml2N.d.cts} +1 -0
- package/lib/ui/StormcloudVideoPlayer.cjs +57 -81
- package/lib/ui/StormcloudVideoPlayer.cjs.map +1 -1
- package/lib/ui/StormcloudVideoPlayer.d.cts +1 -1
- package/lib/utils/ctvVastSignals.cjs +30 -36
- package/lib/utils/ctvVastSignals.cjs.map +1 -1
- package/lib/utils/tracking.cjs.map +1 -1
- package/lib/utils/tracking.d.cts +1 -1
- package/lib/utils/vastEnvironmentSignals.cjs +16 -36
- package/lib/utils/vastEnvironmentSignals.cjs.map +1 -1
- package/lib/utils/vastEnvironmentSignals.d.cts +0 -3
- package/lib/utils/vastMacros.cjs +13 -34
- package/lib/utils/vastMacros.cjs.map +1 -1
- package/lib/utils/vastMacros.d.cts +1 -3
- package/package.json +1 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { S as Scte35Marker, a as StormcloudVideoPlayerConfig, A as AdController } from '../types-
|
|
1
|
+
import { S as Scte35Marker, a as StormcloudVideoPlayerConfig, A as AdController } from '../types-52ASml2N.cjs';
|
|
2
2
|
import { AdTimingService } from './AdTimingService.cjs';
|
|
3
3
|
import { AdConfigManager } from './AdConfigManager.cjs';
|
|
4
4
|
import { Scte35CueManager } from './Scte35CueManager.cjs';
|
|
@@ -309,34 +309,8 @@ __export(AdConfigManager_exports, {
|
|
|
309
309
|
});
|
|
310
310
|
module.exports = __toCommonJS(AdConfigManager_exports);
|
|
311
311
|
// src/utils/vastEnvironmentSignals.ts
|
|
312
|
-
var AIRY_ANDROID_APP_ID = "com.freeairytv.android";
|
|
313
|
-
var AIRY_WEBOS_APP_ID = "com.freeairytv.webos";
|
|
314
|
-
var AIRY_TIZEN_APP_ID = "com.freeairytv.samsung";
|
|
315
|
-
var AIRY_ROKU_APP_ID = "com.freeairytv.roku";
|
|
316
|
-
var AIRY_APP_NAME = "AiryTV Movies & TV";
|
|
317
|
-
var AIRY_DEFAULT_CONTENT_URL = "https://live.airy.tv";
|
|
318
312
|
var CTV_SESSION_STORAGE_KEY = "stormcloud.ctv.sid";
|
|
319
313
|
var PLAYER_ID_STORAGE_KEY = "stormcloud.player.id";
|
|
320
|
-
var LG_TEST_APP_ID = "com.hulu.plus";
|
|
321
|
-
var LG_TEST_APP_NAME = "Hulu";
|
|
322
|
-
var LG_TEST_CONTENT_URL = "https://www.hulu.com/live-tv";
|
|
323
|
-
var _lgTestDeviceId;
|
|
324
|
-
function getLgTestDeviceId() {
|
|
325
|
-
if (!_lgTestDeviceId) _lgTestDeviceId = createUuid();
|
|
326
|
-
return _lgTestDeviceId;
|
|
327
|
-
}
|
|
328
|
-
function isLgWebOS() {
|
|
329
|
-
if (typeof navigator === "undefined") return false;
|
|
330
|
-
return /Web0S|webOS|LG Browser|LGSTB|LGE/i.test(navigator.userAgent);
|
|
331
|
-
}
|
|
332
|
-
function getDefaultAppId() {
|
|
333
|
-
if (typeof navigator === "undefined") return AIRY_ANDROID_APP_ID;
|
|
334
|
-
var ua = navigator.userAgent;
|
|
335
|
-
if (/Web0S|webOS|LG Browser|LGSTB|LGE/i.test(ua)) return AIRY_WEBOS_APP_ID;
|
|
336
|
-
if (/Tizen|Samsung/i.test(ua)) return AIRY_TIZEN_APP_ID;
|
|
337
|
-
if (/Roku/i.test(ua)) return AIRY_ROKU_APP_ID;
|
|
338
|
-
return AIRY_ANDROID_APP_ID;
|
|
339
|
-
}
|
|
340
314
|
var DEVICE_ID_STORAGE_KEYS = [
|
|
341
315
|
"rdid",
|
|
342
316
|
"ifa",
|
|
@@ -357,23 +331,29 @@ function resolveVastEnvironmentSignals(isCtv) {
|
|
|
357
331
|
var _ref;
|
|
358
332
|
var bridgeSignals = readNativeBridgeSignals();
|
|
359
333
|
var platformDevice = readPlatformNativeDeviceId();
|
|
360
|
-
var
|
|
361
|
-
var deviceId =
|
|
362
|
-
var deviceIdType = bridgeSignals.deviceIdType || readStoredString("deviceIdType") || readStoredString("idtype") || platformDevice.deviceIdType || inferDeviceIdType()
|
|
334
|
+
var realDeviceId = bridgeSignals.deviceId || readStoredDeviceId() || platformDevice.deviceId;
|
|
335
|
+
var deviceId = realDeviceId;
|
|
336
|
+
var deviceIdType = bridgeSignals.deviceIdType || readStoredString("deviceIdType") || readStoredString("idtype") || platformDevice.deviceIdType || inferDeviceIdType();
|
|
363
337
|
var platformLat = bridgeSignals.deviceId ? bridgeSignals.limitAdTracking : platformDevice.limitAdTracking;
|
|
364
338
|
var limitAdTracking = deviceId != null ? (_ref = platformLat !== null && platformLat !== void 0 ? platformLat : readStoredLimitAdTracking()) !== null && _ref !== void 0 ? _ref : false : void 0;
|
|
339
|
+
if (!deviceId && isCtv) {
|
|
340
|
+
var dpid = getOrCreateStoredUuid(PLAYER_ID_STORAGE_KEY);
|
|
341
|
+
if (dpid) {
|
|
342
|
+
var _ref1;
|
|
343
|
+
deviceId = dpid;
|
|
344
|
+
deviceIdType = "dpid";
|
|
345
|
+
limitAdTracking = (_ref1 = platformLat !== null && platformLat !== void 0 ? platformLat : readStoredLimitAdTracking()) !== null && _ref1 !== void 0 ? _ref1 : false;
|
|
346
|
+
}
|
|
347
|
+
}
|
|
365
348
|
if (isCtv) {
|
|
366
349
|
return _object_spread_props(_object_spread({
|
|
367
350
|
isCtv: true,
|
|
368
|
-
contentUrl: bridgeSignals.contentUrl || readStoredString("contentUrl") || (lg ? LG_TEST_CONTENT_URL : AIRY_DEFAULT_CONTENT_URL),
|
|
369
|
-
appId: bridgeSignals.appId || readStoredString("appId") || readStoredString("msid") || (lg ? LG_TEST_APP_ID : getDefaultAppId()),
|
|
370
|
-
appName: bridgeSignals.appName || readStoredString("appName") || readStoredString("an") || (lg ? LG_TEST_APP_NAME : AIRY_APP_NAME),
|
|
371
351
|
sessionId: getOrCreateCtvSessionId()
|
|
372
352
|
}, deviceId ? {
|
|
373
353
|
deviceId: deviceId
|
|
374
|
-
} : {}, deviceIdType ? {
|
|
354
|
+
} : {}, deviceId && deviceIdType ? {
|
|
375
355
|
deviceIdType: deviceIdType
|
|
376
|
-
} : {}, limitAdTracking != null ? {
|
|
356
|
+
} : {}, deviceId && limitAdTracking != null ? {
|
|
377
357
|
limitAdTracking: limitAdTracking
|
|
378
358
|
} : {}), {
|
|
379
359
|
deviceTypeHint: 5
|
|
@@ -383,9 +363,9 @@ function resolveVastEnvironmentSignals(isCtv) {
|
|
|
383
363
|
isCtv: false
|
|
384
364
|
}, deviceId ? {
|
|
385
365
|
deviceId: deviceId
|
|
386
|
-
} : {}, deviceIdType ? {
|
|
366
|
+
} : {}, deviceId && deviceIdType ? {
|
|
387
367
|
deviceIdType: deviceIdType
|
|
388
|
-
} : {}, limitAdTracking != null ? {
|
|
368
|
+
} : {}, deviceId && limitAdTracking != null ? {
|
|
389
369
|
limitAdTracking: limitAdTracking
|
|
390
370
|
} : {});
|
|
391
371
|
}
|
|
@@ -816,7 +796,6 @@ var UNEXPANDED_MACRO_PATTERN = /^(\[[^\]]*\]|\{[^}]*\}|%%[^%]*%%)$/;
|
|
|
816
796
|
var INVALID_VAST_PARAM_KEY = /^\s|\s$/;
|
|
817
797
|
var EXAMPLE_COM_URL = /example\.com/i;
|
|
818
798
|
var CTV_UNSUPPORTED_PARAMS = [
|
|
819
|
-
"description_url",
|
|
820
799
|
"tfcd",
|
|
821
800
|
"npa",
|
|
822
801
|
"min_ad_duration",
|
|
@@ -907,18 +886,6 @@ var INLINE_DEVICE_MACRO_REPLACEMENTS = [
|
|
|
907
886
|
return ctx.limitAdTracking != null ? ctx.limitAdTracking ? "1" : "0" : void 0;
|
|
908
887
|
}
|
|
909
888
|
},
|
|
910
|
-
{
|
|
911
|
-
pattern: /%%MSID%%/gi,
|
|
912
|
-
getValue: function getValue(ctx) {
|
|
913
|
-
return ctx.appId;
|
|
914
|
-
}
|
|
915
|
-
},
|
|
916
|
-
{
|
|
917
|
-
pattern: /%%APP_NAME%%/gi,
|
|
918
|
-
getValue: function getValue(ctx) {
|
|
919
|
-
return ctx.appName;
|
|
920
|
-
}
|
|
921
|
-
},
|
|
922
889
|
{
|
|
923
890
|
pattern: /%%SESSION_ID%%/gi,
|
|
924
891
|
getValue: function getValue(ctx) {
|
|
@@ -1109,7 +1076,7 @@ function applyVastMacros(baseUrl, ctx) {
|
|
|
1109
1076
|
return replaceCorrelatorFallback(expandedUrl, ctx.correlator);
|
|
1110
1077
|
}
|
|
1111
1078
|
var params = url.searchParams;
|
|
1112
|
-
removeBrokenAppNameOrphans(params
|
|
1079
|
+
removeBrokenAppNameOrphans(params);
|
|
1113
1080
|
params.set("correlator", ctx.correlator);
|
|
1114
1081
|
params.set("scor", ctx.streamCorrelator);
|
|
1115
1082
|
if (ctx.isCtv) {
|
|
@@ -1148,18 +1115,14 @@ function applyVastMacros(baseUrl, ctx) {
|
|
|
1148
1115
|
if (ctx.podMaxAds != null) {
|
|
1149
1116
|
params.set("pmad", String(Math.max(1, Math.round(ctx.podMaxAds))));
|
|
1150
1117
|
}
|
|
1151
|
-
|
|
1152
|
-
|
|
1153
|
-
params.set("
|
|
1154
|
-
|
|
1155
|
-
|
|
1156
|
-
|
|
1157
|
-
|
|
1158
|
-
|
|
1159
|
-
if (EXAMPLE_COM_URL.test(existingUrl)) {
|
|
1160
|
-
params.delete("url");
|
|
1161
|
-
params.delete("description_url");
|
|
1162
|
-
}
|
|
1118
|
+
if (!ctx.isCtv && ctx.pageUrl) {
|
|
1119
|
+
params.set("url", ctx.pageUrl);
|
|
1120
|
+
params.set("description_url", ctx.pageUrl);
|
|
1121
|
+
}
|
|
1122
|
+
var existingUrl = params.get("url") || "";
|
|
1123
|
+
if (EXAMPLE_COM_URL.test(existingUrl)) {
|
|
1124
|
+
params.delete("url");
|
|
1125
|
+
params.delete("description_url");
|
|
1163
1126
|
}
|
|
1164
1127
|
if (ctx.adWillPlayMuted != null) {
|
|
1165
1128
|
params.set("vpmute", ctx.adWillPlayMuted ? "1" : "0");
|
|
@@ -1167,13 +1130,6 @@ function applyVastMacros(baseUrl, ctx) {
|
|
|
1167
1130
|
if (ctx.adWillAutoPlay != null) {
|
|
1168
1131
|
params.set("vpa", ctx.adWillAutoPlay ? "auto" : "click");
|
|
1169
1132
|
}
|
|
1170
|
-
if (ctx.appId) {
|
|
1171
|
-
params.set("msid", ctx.appId);
|
|
1172
|
-
}
|
|
1173
|
-
if (ctx.appName) {
|
|
1174
|
-
removeBrokenAppNameOrphans(params, ctx.appName);
|
|
1175
|
-
params.set("an", ctx.appName);
|
|
1176
|
-
}
|
|
1177
1133
|
if (ctx.sessionId) {
|
|
1178
1134
|
params.set("sid", ctx.sessionId);
|
|
1179
1135
|
}
|
|
@@ -1198,6 +1154,9 @@ function applyVastMacros(baseUrl, ctx) {
|
|
|
1198
1154
|
if (ctx.adTest) {
|
|
1199
1155
|
params.set("adtest", "on");
|
|
1200
1156
|
}
|
|
1157
|
+
if (ctx.programTitle) {
|
|
1158
|
+
params.set("ct_ti", ctx.programTitle);
|
|
1159
|
+
}
|
|
1201
1160
|
var staleKeys = [];
|
|
1202
1161
|
params.forEach(function(value, key) {
|
|
1203
1162
|
if (isMacroPlaceholder2(value)) {
|
|
@@ -1224,7 +1183,7 @@ function applyVastMacros(baseUrl, ctx) {
|
|
|
1224
1183
|
}
|
|
1225
1184
|
}
|
|
1226
1185
|
}
|
|
1227
|
-
removeBrokenAppNameOrphans(params
|
|
1186
|
+
removeBrokenAppNameOrphans(params);
|
|
1228
1187
|
return url.toString();
|
|
1229
1188
|
}
|
|
1230
1189
|
function replaceCorrelatorFallback(baseUrl, correlator) {
|
|
@@ -2213,13 +2172,25 @@ var AdConfigManager = /*#__PURE__*/ function() {
|
|
|
2213
2172
|
};
|
|
2214
2173
|
}
|
|
2215
2174
|
},
|
|
2175
|
+
{
|
|
2176
|
+
key: "getPalDescriptionUrl",
|
|
2177
|
+
value: function getPalDescriptionUrl() {
|
|
2178
|
+
if (!this.apiVastTagUrl) return void 0;
|
|
2179
|
+
try {
|
|
2180
|
+
var params = new URL(this.apiVastTagUrl).searchParams;
|
|
2181
|
+
return params.get("description_url") || params.get("url") || void 0;
|
|
2182
|
+
} catch (unused) {
|
|
2183
|
+
return void 0;
|
|
2184
|
+
}
|
|
2185
|
+
}
|
|
2186
|
+
},
|
|
2216
2187
|
{
|
|
2217
2188
|
key: "generatePodVastUrl",
|
|
2218
2189
|
value: function generatePodVastUrl(baseUrl, podParams, adPlayer, palNonce, inAdBreak) {
|
|
2219
2190
|
var _podParams_maxDurationMs;
|
|
2220
2191
|
var adWillPlayMuted = inAdBreak ? adPlayer.getOriginalMutedState() : this.video.muted;
|
|
2221
2192
|
var envSignals = resolveVastEnvironmentSignals(!!this.config.ctvAdRequest);
|
|
2222
|
-
var urlWithMacros = applyVastMacros(baseUrl, {
|
|
2193
|
+
var urlWithMacros = applyVastMacros(baseUrl, _object_spread_props(_object_spread({
|
|
2223
2194
|
correlator: this.viewCorrelator,
|
|
2224
2195
|
streamCorrelator: this.streamCorrelator,
|
|
2225
2196
|
pod: this.podCounter > 0 ? this.podCounter : void 0,
|
|
@@ -2227,20 +2198,20 @@ var AdConfigManager = /*#__PURE__*/ function() {
|
|
|
2227
2198
|
podMinDurationMs: podParams.minDurationMs,
|
|
2228
2199
|
podMaxDurationMs: podParams.maxDurationMs,
|
|
2229
2200
|
isCtv: envSignals.isCtv,
|
|
2230
|
-
contentUrl: envSignals.contentUrl,
|
|
2231
2201
|
pageUrl: !envSignals.isCtv && typeof window !== "undefined" ? toDevSafeUrl(window.location.href) : void 0,
|
|
2232
2202
|
adWillPlayMuted: adWillPlayMuted,
|
|
2233
2203
|
adWillAutoPlay: !!this.config.autoplay,
|
|
2234
|
-
appId: envSignals.appId,
|
|
2235
|
-
appName: envSignals.appName,
|
|
2236
2204
|
sessionId: envSignals.sessionId,
|
|
2237
2205
|
deviceId: envSignals.deviceId,
|
|
2238
2206
|
deviceIdType: envSignals.deviceIdType,
|
|
2239
2207
|
limitAdTracking: envSignals.limitAdTracking,
|
|
2240
2208
|
deviceTypeHint: envSignals.deviceTypeHint,
|
|
2241
|
-
adTest: this.config.adTest
|
|
2209
|
+
adTest: this.config.adTest
|
|
2210
|
+
}, this.config.programTitle ? {
|
|
2211
|
+
programTitle: this.config.programTitle
|
|
2212
|
+
} : {}), {
|
|
2242
2213
|
consent: this.consentSignals
|
|
2243
|
-
});
|
|
2214
|
+
}));
|
|
2244
2215
|
var finalUrl = palNonce.injectNonce(urlWithMacros);
|
|
2245
2216
|
console.log("[StormcloudVideoPlayer] Resolved optimized-pod request URL (pod=".concat(this.podCounter, ", pmad=").concat(podParams.maxAds, ", pmnd=").concat(podParams.minDurationMs, ", pmxd=").concat((_podParams_maxDurationMs = podParams.maxDurationMs) !== null && _podParams_maxDurationMs !== void 0 ? _podParams_maxDurationMs : "?", "):"), finalUrl);
|
|
2246
2217
|
return finalUrl;
|