stormcloud-video-player 0.8.60 → 0.8.62
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/Player.cjs.map +1 -1
- package/lib/StormcloudPlayer.cjs +83 -29
- package/lib/StormcloudPlayer.cjs.map +1 -1
- package/lib/index.cjs +87 -31
- package/lib/index.cjs.map +1 -1
- package/lib/index.d.ts +4034 -0
- package/lib/index.js +13001 -0
- package/lib/index.js.map +1 -0
- package/lib/patterns.cjs.map +1 -1
- package/lib/player/AdBreakOrchestrator.cjs +3 -2
- package/lib/player/AdBreakOrchestrator.cjs.map +1 -1
- package/lib/player/AdConfigManager.cjs +53 -11
- package/lib/player/AdConfigManager.cjs.map +1 -1
- package/lib/player/AdTimingService.cjs.map +1 -1
- package/lib/player/HlsEngine.cjs.map +1 -1
- package/lib/player/PlaceholderLayer.cjs.map +1 -1
- package/lib/player/PlayerControls.cjs.map +1 -1
- package/lib/player/Scte35CueManager.cjs.map +1 -1
- package/lib/player/Scte35Parser.cjs.map +1 -1
- package/lib/player/StormcloudVideoPlayer.cjs +83 -29
- package/lib/player/StormcloudVideoPlayer.cjs.map +1 -1
- package/lib/player/playerTypes.cjs.map +1 -1
- package/lib/players/FilePlayer.cjs.map +1 -1
- package/lib/players/HlsPlayer.cjs +83 -29
- package/lib/players/HlsPlayer.cjs.map +1 -1
- package/lib/players/index.cjs +83 -29
- package/lib/players/index.cjs.map +1 -1
- package/lib/props.cjs.map +1 -1
- package/lib/sdk/hlsAdPlayer.cjs.map +1 -1
- package/lib/sdk/pal.cjs +9 -5
- package/lib/sdk/pal.cjs.map +1 -1
- package/lib/sdk/pal.d.cts +1 -0
- package/lib/types.cjs.map +1 -1
- package/lib/types.d.cts +1 -0
- package/lib/ui/StormcloudVideoPlayer.cjs +87 -31
- package/lib/ui/StormcloudVideoPlayer.cjs.map +1 -1
- package/lib/utils/browserCompat.cjs.map +1 -1
- package/lib/utils/ctvVastSignals.cjs +25 -4
- package/lib/utils/ctvVastSignals.cjs.map +1 -1
- package/lib/utils/devUrl.cjs.map +1 -1
- package/lib/utils/polyfills.cjs.map +1 -1
- package/lib/utils/tracking.cjs +3 -2
- package/lib/utils/tracking.cjs.map +1 -1
- package/lib/utils/trackingIngest.cjs.map +1 -1
- package/lib/utils/vastEnvironmentSignals.cjs +27 -5
- package/lib/utils/vastEnvironmentSignals.cjs.map +1 -1
- package/lib/utils/vastEnvironmentSignals.d.cts +1 -1
- package/lib/utils/vastMacros.cjs +24 -4
- package/lib/utils/vastMacros.cjs.map +1 -1
- package/lib/utils/vastMacros.d.cts +2 -0
- package/lib/utils/vastTrackingMacros.cjs.map +1 -1
- package/lib/utils.cjs.map +1 -1
- package/package.json +5 -3
package/lib/players/index.cjs
CHANGED
|
@@ -2898,6 +2898,7 @@ function toDevSafeUrl(rawUrl) {
|
|
|
2898
2898
|
// src/sdk/pal.ts
|
|
2899
2899
|
var PAL_SDK_URL = "https://imasdk.googleapis.com/pal/sdkloader/pal.js";
|
|
2900
2900
|
var _nonceLoader;
|
|
2901
|
+
var _nonceLoaderAllowStorage;
|
|
2901
2902
|
var _palLoadPromise;
|
|
2902
2903
|
function loadPalSdk() {
|
|
2903
2904
|
var _window_goog;
|
|
@@ -2940,12 +2941,15 @@ function loadPalSdk() {
|
|
|
2940
2941
|
});
|
|
2941
2942
|
return _palLoadPromise;
|
|
2942
2943
|
}
|
|
2943
|
-
function getOrCreateNonceLoader() {
|
|
2944
|
-
if (_nonceLoader)
|
|
2944
|
+
function getOrCreateNonceLoader(allowStorage) {
|
|
2945
|
+
if (_nonceLoader && _nonceLoaderAllowStorage === allowStorage) {
|
|
2946
|
+
return _nonceLoader;
|
|
2947
|
+
}
|
|
2945
2948
|
var goog = window.goog;
|
|
2946
2949
|
var consentSettings = new goog.pal.ConsentSettings();
|
|
2947
|
-
consentSettings.allowStorage =
|
|
2950
|
+
consentSettings.allowStorage = allowStorage;
|
|
2948
2951
|
_nonceLoader = new goog.pal.NonceLoader(consentSettings);
|
|
2952
|
+
_nonceLoaderAllowStorage = allowStorage;
|
|
2949
2953
|
return _nonceLoader;
|
|
2950
2954
|
}
|
|
2951
2955
|
function createPalNonceManager() {
|
|
@@ -2954,7 +2958,7 @@ function createPalNonceManager() {
|
|
|
2954
2958
|
return {
|
|
2955
2959
|
generateNonce: function generateNonce() {
|
|
2956
2960
|
return _async_to_generator(function() {
|
|
2957
|
-
var options, _options_adWillAutoPlay, _options_adWillPlayMuted, _options_playerVolume, _options_continuousPlayback, loader, goog, request, manager, error;
|
|
2961
|
+
var options, _options_allowStorage, _options_adWillAutoPlay, _options_adWillPlayMuted, _options_playerVolume, _options_continuousPlayback, loader, goog, request, manager, error;
|
|
2958
2962
|
var _arguments = arguments;
|
|
2959
2963
|
return _ts_generator(this, function(_state) {
|
|
2960
2964
|
switch(_state.label){
|
|
@@ -2974,7 +2978,7 @@ function createPalNonceManager() {
|
|
|
2974
2978
|
];
|
|
2975
2979
|
case 2:
|
|
2976
2980
|
_state.sent();
|
|
2977
|
-
loader = getOrCreateNonceLoader();
|
|
2981
|
+
loader = getOrCreateNonceLoader((_options_allowStorage = options.allowStorage) !== null && _options_allowStorage !== void 0 ? _options_allowStorage : true);
|
|
2978
2982
|
goog = window.goog;
|
|
2979
2983
|
request = new goog.pal.NonceRequest();
|
|
2980
2984
|
request.adWillAutoPlay = (_options_adWillAutoPlay = options.adWillAutoPlay) !== null && _options_adWillAutoPlay !== void 0 ? _options_adWillAutoPlay : true;
|
|
@@ -3159,6 +3163,8 @@ function ingestPlayerTracking(licenseKey, channel, body) {
|
|
|
3159
3163
|
}
|
|
3160
3164
|
// src/utils/vastEnvironmentSignals.ts
|
|
3161
3165
|
var CTV_SESSION_STORAGE_KEY = "stormcloud.ctv.sid";
|
|
3166
|
+
var WEB_SESSION_STORAGE_KEY = "stormcloud.web.sid";
|
|
3167
|
+
var inMemoryWebSessionId;
|
|
3162
3168
|
var PLAYER_ID_STORAGE_KEY = "stormcloud.player.id";
|
|
3163
3169
|
var DEVICE_ID_STORAGE_KEYS = [
|
|
3164
3170
|
"rdid",
|
|
@@ -3180,7 +3186,7 @@ function resolveVastEnvironmentSignals(isCtv) {
|
|
|
3180
3186
|
var _ref;
|
|
3181
3187
|
var bridgeSignals = readNativeBridgeSignals();
|
|
3182
3188
|
var platformDevice = readPlatformNativeDeviceId();
|
|
3183
|
-
var realDeviceId = bridgeSignals.deviceId || readStoredDeviceId() || platformDevice.deviceId;
|
|
3189
|
+
var realDeviceId = bridgeSignals.deviceId || (isCtv ? readStoredDeviceId() : void 0) || platformDevice.deviceId;
|
|
3184
3190
|
var deviceId = realDeviceId;
|
|
3185
3191
|
var deviceIdType = bridgeSignals.deviceIdType || readStoredString("deviceIdType") || readStoredString("idtype") || platformDevice.deviceIdType || inferDeviceIdType();
|
|
3186
3192
|
var platformLat = bridgeSignals.deviceId ? bridgeSignals.limitAdTracking : platformDevice.limitAdTracking;
|
|
@@ -3209,9 +3215,12 @@ function resolveVastEnvironmentSignals(isCtv) {
|
|
|
3209
3215
|
deviceTypeHint: deviceTypeHint
|
|
3210
3216
|
});
|
|
3211
3217
|
}
|
|
3218
|
+
var webSessionId = getOrCreateWebSessionId();
|
|
3212
3219
|
return _object_spread_props(_object_spread({
|
|
3213
3220
|
isCtv: false
|
|
3214
|
-
},
|
|
3221
|
+
}, webSessionId ? {
|
|
3222
|
+
sessionId: webSessionId
|
|
3223
|
+
} : {}, deviceId ? {
|
|
3215
3224
|
deviceId: deviceId
|
|
3216
3225
|
} : {}, deviceId && deviceIdType ? {
|
|
3217
3226
|
deviceIdType: deviceIdType
|
|
@@ -3252,7 +3261,7 @@ var GAME_CONSOLE_UA = /PlayStation|Xbox|Nintendo/i;
|
|
|
3252
3261
|
var CONNECTED_TV_UA = /Web0S|webOS|Tizen|SMART-TV|SmartTV|NetCast|BRAVIA|HbbTV|VIDAA|Hisense|Philips|Viera|AQUOS|Android TV|Google TV|\bTV\b/i;
|
|
3253
3262
|
var FEATURE_PHONE_UA = /KAIOS|MIDP|J2ME|Series40|Opera Mini/i;
|
|
3254
3263
|
function resolveDeviceTypeHint(isCtv) {
|
|
3255
|
-
var override = readDeviceTypeHintOverride();
|
|
3264
|
+
var override = readDeviceTypeHintOverride(isCtv);
|
|
3256
3265
|
if (override != null) return override;
|
|
3257
3266
|
return inferDeviceTypeHint(isCtv);
|
|
3258
3267
|
}
|
|
@@ -3279,7 +3288,7 @@ function inferDeviceTypeHint(isCtv) {
|
|
|
3279
3288
|
if (/Mobile|Windows Phone|BlackBerry/i.test(ua)) return DEVICE_TYPE_HINT.SMARTPHONE;
|
|
3280
3289
|
return fallback;
|
|
3281
3290
|
}
|
|
3282
|
-
function readDeviceTypeHintOverride() {
|
|
3291
|
+
function readDeviceTypeHintOverride(isCtv) {
|
|
3283
3292
|
if (typeof window === "undefined") return void 0;
|
|
3284
3293
|
var keys = [
|
|
3285
3294
|
"dth",
|
|
@@ -3328,6 +3337,7 @@ function readDeviceTypeHintOverride() {
|
|
|
3328
3337
|
}
|
|
3329
3338
|
}
|
|
3330
3339
|
}
|
|
3340
|
+
if (!isCtv) return void 0;
|
|
3331
3341
|
for(var _i = 0, _iter = [
|
|
3332
3342
|
"stormcloud.dth",
|
|
3333
3343
|
"dth"
|
|
@@ -3376,9 +3386,10 @@ function isEquivalentDeviceIdType(tagType, runtimeType) {
|
|
|
3376
3386
|
return ANDROID_ID_TYPES.has(tag) && ANDROID_ID_TYPES.has(runtime);
|
|
3377
3387
|
}
|
|
3378
3388
|
function resolveNativeDeviceId() {
|
|
3389
|
+
var includeStored = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : true;
|
|
3379
3390
|
var bridgeSignals = readNativeBridgeSignals();
|
|
3380
3391
|
var platformDevice = readPlatformNativeDeviceId();
|
|
3381
|
-
var deviceId = bridgeSignals.deviceId || readStoredDeviceId() || platformDevice.deviceId;
|
|
3392
|
+
var deviceId = bridgeSignals.deviceId || (includeStored ? readStoredDeviceId() : void 0) || platformDevice.deviceId;
|
|
3382
3393
|
if (!deviceId || isMacroPlaceholder(deviceId) || isZeroedAdId(deviceId)) {
|
|
3383
3394
|
return void 0;
|
|
3384
3395
|
}
|
|
@@ -3407,6 +3418,21 @@ function getOrCreateCtvSessionId() {
|
|
|
3407
3418
|
writePersistentId(CTV_SESSION_STORAGE_KEY, sessionId);
|
|
3408
3419
|
return sessionId;
|
|
3409
3420
|
}
|
|
3421
|
+
function getOrCreateWebSessionId() {
|
|
3422
|
+
if (typeof window === "undefined") return void 0;
|
|
3423
|
+
try {
|
|
3424
|
+
var _window_sessionStorage;
|
|
3425
|
+
var existing = (_window_sessionStorage = window.sessionStorage) === null || _window_sessionStorage === void 0 ? void 0 : _window_sessionStorage.getItem(WEB_SESSION_STORAGE_KEY);
|
|
3426
|
+
if (existing && !isMacroPlaceholder(existing)) return existing;
|
|
3427
|
+
} catch (unused) {}
|
|
3428
|
+
var sessionId = inMemoryWebSessionId || createUuid();
|
|
3429
|
+
inMemoryWebSessionId = sessionId;
|
|
3430
|
+
try {
|
|
3431
|
+
var _window_sessionStorage1;
|
|
3432
|
+
(_window_sessionStorage1 = window.sessionStorage) === null || _window_sessionStorage1 === void 0 ? void 0 : _window_sessionStorage1.setItem(WEB_SESSION_STORAGE_KEY, sessionId);
|
|
3433
|
+
} catch (unused) {}
|
|
3434
|
+
return sessionId;
|
|
3435
|
+
}
|
|
3410
3436
|
function readPersistentId(storageKey) {
|
|
3411
3437
|
return readStoredString(storageKey) || readCookie(storageKey);
|
|
3412
3438
|
}
|
|
@@ -4008,7 +4034,7 @@ function sha256Hex(input) {
|
|
|
4008
4034
|
})();
|
|
4009
4035
|
}
|
|
4010
4036
|
function resolvePlayerIdentitySeed(clientInfo) {
|
|
4011
|
-
var nativeDeviceId = resolveNativeDeviceId();
|
|
4037
|
+
var nativeDeviceId = resolveNativeDeviceId(clientInfo.isSmartTV);
|
|
4012
4038
|
if (nativeDeviceId) {
|
|
4013
4039
|
return "device:".concat(nativeDeviceId);
|
|
4014
4040
|
}
|
|
@@ -4777,6 +4803,12 @@ function applyDeviceIdentityParams(params, ctx) {
|
|
|
4777
4803
|
params.set("is_lat", latValue !== null && latValue !== void 0 ? latValue : isMacroPlaceholder2(tagLat) ? "0" : tagLat);
|
|
4778
4804
|
return;
|
|
4779
4805
|
}
|
|
4806
|
+
if (!ctx.isCtv) {
|
|
4807
|
+
params.delete("rdid");
|
|
4808
|
+
params.delete("idtype");
|
|
4809
|
+
params.delete("is_lat");
|
|
4810
|
+
return;
|
|
4811
|
+
}
|
|
4780
4812
|
var tagRdidValid = Boolean(tagRdid && !isMacroPlaceholder2(tagRdid));
|
|
4781
4813
|
var tagTypeValid = Boolean(tagType && !isMacroPlaceholder2(tagType));
|
|
4782
4814
|
if (tagRdidValid && tagTypeValid && runtimeType && !isEquivalentDeviceIdType(tagType, runtimeType)) {
|
|
@@ -4931,15 +4963,24 @@ function applyVastMacros(baseUrl, ctx) {
|
|
|
4931
4963
|
if (ctx.podMaxAds != null) {
|
|
4932
4964
|
params.set("pmad", String(Math.max(1, Math.round(ctx.podMaxAds))));
|
|
4933
4965
|
}
|
|
4934
|
-
if (!ctx.isCtv && ctx.pageUrl) {
|
|
4935
|
-
params.set("url", ctx.pageUrl);
|
|
4936
|
-
params.set("description_url", ctx.pageUrl);
|
|
4937
|
-
}
|
|
4938
4966
|
var existingUrl = params.get("url") || "";
|
|
4939
4967
|
if (EXAMPLE_COM_URL.test(existingUrl)) {
|
|
4940
4968
|
params.delete("url");
|
|
4941
4969
|
params.delete("description_url");
|
|
4942
4970
|
}
|
|
4971
|
+
if (!ctx.isCtv && ctx.pageUrl) {
|
|
4972
|
+
if (isMacroPlaceholder2(params.get("url"))) {
|
|
4973
|
+
params.set("url", ctx.pageUrl);
|
|
4974
|
+
}
|
|
4975
|
+
if (isMacroPlaceholder2(params.get("description_url"))) {
|
|
4976
|
+
params.set("description_url", params.get("url") || ctx.pageUrl);
|
|
4977
|
+
}
|
|
4978
|
+
}
|
|
4979
|
+
if (!ctx.isCtv) {
|
|
4980
|
+
params.delete("an");
|
|
4981
|
+
params.delete("msid");
|
|
4982
|
+
params.delete("sid");
|
|
4983
|
+
}
|
|
4943
4984
|
if (ctx.adWillPlayMuted != null) {
|
|
4944
4985
|
params.set("vpmute", ctx.adWillPlayMuted ? "1" : "0");
|
|
4945
4986
|
}
|
|
@@ -4973,6 +5014,9 @@ function applyVastMacros(baseUrl, ctx) {
|
|
|
4973
5014
|
if (ctx.programTitle) {
|
|
4974
5015
|
params.set("ct_ti", ctx.programTitle);
|
|
4975
5016
|
}
|
|
5017
|
+
if (ctx.channelName) {
|
|
5018
|
+
params.set("ct_ch", ctx.channelName);
|
|
5019
|
+
}
|
|
4976
5020
|
var staleKeys = [];
|
|
4977
5021
|
params.forEach(function(value, key) {
|
|
4978
5022
|
if (isMacroPlaceholder2(value)) {
|
|
@@ -5025,8 +5069,10 @@ function fetchConsentSignals() {
|
|
|
5025
5069
|
tcfApi("addEventListener", 2, function(tcData, success) {
|
|
5026
5070
|
if (settled) return;
|
|
5027
5071
|
if (success && tcData && (tcData.eventStatus === "tcloaded" || tcData.eventStatus === "useractioncomplete")) {
|
|
5072
|
+
var _tcData_purpose_consents, _tcData_purpose;
|
|
5028
5073
|
settled = true;
|
|
5029
5074
|
signals.gdpr = tcData.gdprApplies ? "1" : "0";
|
|
5075
|
+
signals.storageAllowed = tcData.gdprApplies ? ((_tcData_purpose = tcData.purpose) === null || _tcData_purpose === void 0 ? void 0 : (_tcData_purpose_consents = _tcData_purpose.consents) === null || _tcData_purpose_consents === void 0 ? void 0 : _tcData_purpose_consents[1]) === true : true;
|
|
5030
5076
|
if (typeof tcData.tcString === "string" && tcData.tcString) {
|
|
5031
5077
|
signals.gdprConsent = tcData.tcString;
|
|
5032
5078
|
}
|
|
@@ -6559,7 +6605,7 @@ var AdConfigManager = /*#__PURE__*/ function() {
|
|
|
6559
6605
|
pageUrl: !envSignals.isCtv && typeof window !== "undefined" ? toDevSafeUrl(window.location.href) : void 0,
|
|
6560
6606
|
adWillPlayMuted: adWillPlayMuted,
|
|
6561
6607
|
adWillAutoPlay: !!this.config.autoplay,
|
|
6562
|
-
sessionId: envSignals.sessionId,
|
|
6608
|
+
sessionId: envSignals.isCtv || this.consentSignals.storageAllowed !== false ? envSignals.sessionId : void 0,
|
|
6563
6609
|
deviceId: envSignals.deviceId,
|
|
6564
6610
|
deviceIdType: envSignals.deviceIdType,
|
|
6565
6611
|
limitAdTracking: envSignals.limitAdTracking,
|
|
@@ -6567,6 +6613,8 @@ var AdConfigManager = /*#__PURE__*/ function() {
|
|
|
6567
6613
|
adTest: this.config.adTest
|
|
6568
6614
|
}, this.config.programTitle ? {
|
|
6569
6615
|
programTitle: this.config.programTitle
|
|
6616
|
+
} : {}, this.config.channelName ? {
|
|
6617
|
+
channelName: this.config.channelName
|
|
6570
6618
|
} : {}), {
|
|
6571
6619
|
consent: this.consentSignals
|
|
6572
6620
|
}));
|
|
@@ -9687,7 +9735,7 @@ var StormcloudVideoPlayer = /*#__PURE__*/ function() {
|
|
|
9687
9735
|
// ───────────────────────────────────────────────────────────────
|
|
9688
9736
|
function load() {
|
|
9689
9737
|
return _async_to_generator(function() {
|
|
9690
|
-
var _this,
|
|
9738
|
+
var _this, error, palDescriptionUrl, continueLiveStreamDuringAds;
|
|
9691
9739
|
return _ts_generator(this, function(_state) {
|
|
9692
9740
|
switch(_state.label){
|
|
9693
9741
|
case 0:
|
|
@@ -9723,19 +9771,25 @@ var StormcloudVideoPlayer = /*#__PURE__*/ function() {
|
|
|
9723
9771
|
4
|
|
9724
9772
|
];
|
|
9725
9773
|
case 4:
|
|
9726
|
-
palDescriptionUrl = this.adConfig.getPalDescriptionUrl();
|
|
9727
|
-
|
|
9728
|
-
|
|
9729
|
-
|
|
9730
|
-
|
|
9731
|
-
adWillPlayMuted: true,
|
|
9732
|
-
playerVolume: 0,
|
|
9733
|
-
continuousPlayback: (_this_config_lowLatencyMode = this.config.lowLatencyMode) !== null && _this_config_lowLatencyMode !== void 0 ? _this_config_lowLatencyMode : false
|
|
9734
|
-
}, palDescriptionUrl ? {
|
|
9735
|
-
descriptionUrl: palDescriptionUrl
|
|
9736
|
-
} : {})).catch(function() {});
|
|
9737
|
-
fetchConsentSignals().then(function(signals) {
|
|
9774
|
+
palDescriptionUrl = this.config.ctvAdRequest ? this.adConfig.getPalDescriptionUrl() : void 0;
|
|
9775
|
+
fetchConsentSignals().catch(function() {
|
|
9776
|
+
return {};
|
|
9777
|
+
}).then(function(signals) {
|
|
9778
|
+
var _this_config_lowLatencyMode;
|
|
9738
9779
|
_this.adConfig.consentSignals = signals;
|
|
9780
|
+
var muted = _this.video.muted;
|
|
9781
|
+
return _this.palNonce.generateNonce(_object_spread({
|
|
9782
|
+
videoWidth: _this.video.offsetWidth || _this.video.clientWidth || 640,
|
|
9783
|
+
videoHeight: _this.video.offsetHeight || _this.video.clientHeight || 480,
|
|
9784
|
+
adWillAutoPlay: !!_this.config.autoplay,
|
|
9785
|
+
adWillPlayMuted: muted,
|
|
9786
|
+
playerVolume: muted ? 0 : _this.video.volume,
|
|
9787
|
+
continuousPlayback: (_this_config_lowLatencyMode = _this.config.lowLatencyMode) !== null && _this_config_lowLatencyMode !== void 0 ? _this_config_lowLatencyMode : false
|
|
9788
|
+
}, palDescriptionUrl ? {
|
|
9789
|
+
descriptionUrl: palDescriptionUrl
|
|
9790
|
+
} : {}, signals.storageAllowed != null ? {
|
|
9791
|
+
allowStorage: signals.storageAllowed
|
|
9792
|
+
} : {}));
|
|
9739
9793
|
}).catch(function() {});
|
|
9740
9794
|
this.adConfig.initializeTracking();
|
|
9741
9795
|
if (!this.hlsEngine.shouldUseNativeHls(function() {
|