stormcloud-video-player 0.8.72 → 0.8.74
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 +10 -70
- package/dist/stormcloud-vp.min.js +1 -1
- package/lib/Player.d.cts +1 -0
- package/lib/StormcloudPlayer.cjs +992 -276
- package/lib/StormcloudPlayer.cjs.map +1 -1
- package/lib/StormcloudPlayer.d.cts +1 -0
- package/lib/index.cjs +1005 -281
- package/lib/index.cjs.map +1 -1
- package/lib/index.d.cts +1 -0
- package/lib/index.d.ts +40 -3
- package/lib/index.js +998 -282
- package/lib/index.js.map +1 -1
- package/lib/player/AdBreakOrchestrator.cjs +772 -70
- package/lib/player/AdBreakOrchestrator.cjs.map +1 -1
- package/lib/player/AdBreakOrchestrator.d.cts +7 -9
- package/lib/player/AdConfigManager.cjs +314 -62
- package/lib/player/AdConfigManager.cjs.map +1 -1
- package/lib/player/AdConfigManager.d.cts +7 -12
- package/lib/player/AdTimingService.cjs +37 -1
- package/lib/player/AdTimingService.cjs.map +1 -1
- package/lib/player/AdTimingService.d.cts +8 -1
- package/lib/player/EdgePodRequest.d.cts +1 -0
- package/lib/player/FloorLadder.d.cts +1 -0
- package/lib/player/HlsEngine.d.cts +1 -0
- package/lib/player/OptimizedPodRequest.cjs +719 -0
- package/lib/player/OptimizedPodRequest.cjs.map +1 -0
- package/lib/player/OptimizedPodRequest.d.cts +101 -0
- package/lib/player/PlayerControls.d.cts +1 -0
- package/lib/player/Scte35CueManager.d.cts +1 -0
- package/lib/player/Scte35Parser.d.cts +1 -0
- package/lib/player/StormcloudVideoPlayer.cjs +992 -276
- package/lib/player/StormcloudVideoPlayer.cjs.map +1 -1
- package/lib/player/StormcloudVideoPlayer.d.cts +1 -0
- package/lib/player/playerTypes.d.cts +1 -0
- package/lib/players/HlsPlayer.cjs +992 -276
- package/lib/players/HlsPlayer.cjs.map +1 -1
- package/lib/players/HlsPlayer.d.cts +1 -0
- package/lib/players/index.cjs +992 -276
- package/lib/players/index.cjs.map +1 -1
- package/lib/props.d.cts +1 -0
- package/lib/sdk/hlsAdPlayer.cjs +316 -51
- package/lib/sdk/hlsAdPlayer.cjs.map +1 -1
- package/lib/sdk/hlsAdPlayer.d.cts +3 -1
- package/lib/sdk/pal.cjs +108 -83
- package/lib/sdk/pal.cjs.map +1 -1
- package/lib/sdk/pal.d.cts +1 -0
- package/lib/types.d.cts +9 -2
- package/lib/ui/StormcloudVideoPlayer.cjs +997 -281
- package/lib/ui/StormcloudVideoPlayer.cjs.map +1 -1
- package/lib/ui/StormcloudVideoPlayer.d.cts +1 -0
- package/lib/utils/ctvVastSignals.cjs +9 -7
- package/lib/utils/ctvVastSignals.cjs.map +1 -1
- package/lib/utils/tracking.cjs +17 -3
- package/lib/utils/tracking.cjs.map +1 -1
- package/lib/utils/tracking.d.cts +2 -1
- package/lib/utils/vastEnvironmentSignals.cjs +9 -7
- package/lib/utils/vastEnvironmentSignals.cjs.map +1 -1
- package/lib/utils/vastMacros.cjs +250 -10
- package/lib/utils/vastMacros.cjs.map +1 -1
- package/lib/utils/vastMacros.d.cts +13 -4
- package/package.json +5 -3
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { AdController } from '../types.cjs';
|
|
2
2
|
import Hls from 'hls.js';
|
|
3
|
+
import '../player/OptimizedPodRequest.cjs';
|
|
3
4
|
|
|
5
|
+
declare function resetGamCredentialsMode(): void;
|
|
4
6
|
declare function createHlsAdPlayer(contentVideo: HTMLVideoElement, options?: {
|
|
5
7
|
continueLiveStreamDuringAds?: boolean;
|
|
6
8
|
licenseKey?: string;
|
|
@@ -8,4 +10,4 @@ declare function createHlsAdPlayer(contentVideo: HTMLVideoElement, options?: {
|
|
|
8
10
|
mediaStartTimeoutMs?: number;
|
|
9
11
|
}): AdController;
|
|
10
12
|
|
|
11
|
-
export { createHlsAdPlayer };
|
|
13
|
+
export { createHlsAdPlayer, resetGamCredentialsMode };
|
package/lib/sdk/pal.cjs
CHANGED
|
@@ -277,95 +277,38 @@ function getOrCreateNonceLoader(allowStorage) {
|
|
|
277
277
|
function createPalNonceManager() {
|
|
278
278
|
var currentNonce = "";
|
|
279
279
|
var currentNonceManager;
|
|
280
|
+
var pendingNonce;
|
|
280
281
|
return {
|
|
281
282
|
generateNonce: function generateNonce() {
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
case 1:
|
|
291
|
-
_state.trys.push([
|
|
292
|
-
1,
|
|
293
|
-
4,
|
|
294
|
-
,
|
|
295
|
-
5
|
|
296
|
-
]);
|
|
297
|
-
return [
|
|
298
|
-
4,
|
|
299
|
-
loadPalSdk()
|
|
300
|
-
];
|
|
301
|
-
case 2:
|
|
302
|
-
_state.sent();
|
|
303
|
-
loader = getOrCreateNonceLoader((_options_allowStorage = options.allowStorage) !== null && _options_allowStorage !== void 0 ? _options_allowStorage : true);
|
|
304
|
-
goog = window.goog;
|
|
305
|
-
request = new goog.pal.NonceRequest();
|
|
306
|
-
request.adWillAutoPlay = (_options_adWillAutoPlay = options.adWillAutoPlay) !== null && _options_adWillAutoPlay !== void 0 ? _options_adWillAutoPlay : true;
|
|
307
|
-
request.adWillPlayMuted = (_options_adWillPlayMuted = options.adWillPlayMuted) !== null && _options_adWillPlayMuted !== void 0 ? _options_adWillPlayMuted : false;
|
|
308
|
-
request.playerVolume = (_options_playerVolume = options.playerVolume) !== null && _options_playerVolume !== void 0 ? _options_playerVolume : request.adWillPlayMuted ? 0 : 1;
|
|
309
|
-
request.continuousPlayback = (_options_continuousPlayback = options.continuousPlayback) !== null && _options_continuousPlayback !== void 0 ? _options_continuousPlayback : true;
|
|
310
|
-
request.descriptionUrl = toDevSafeUrl(options.descriptionUrl || (typeof window !== "undefined" ? window.location.href : ""));
|
|
311
|
-
request.iconsSupported = true;
|
|
312
|
-
request.playerType = "StormcloudVideoPlayer";
|
|
313
|
-
request.playerVersion = "1.0";
|
|
314
|
-
request.supportedApiFrameworks = "2,7,9";
|
|
315
|
-
request.url = toDevSafeUrl(options.descriptionUrl || (typeof window !== "undefined" ? window.location.href : ""));
|
|
316
|
-
request.videoWidth = options.videoWidth || 640;
|
|
317
|
-
request.videoHeight = options.videoHeight || 480;
|
|
318
|
-
if (options.ppid) request.ppid = options.ppid;
|
|
319
|
-
if (options.sessionId) request.sessionId = options.sessionId;
|
|
320
|
-
console.log("[PAL] NonceRequest before generateNonce:", JSON.stringify({
|
|
321
|
-
adWillAutoPlay: request.adWillAutoPlay,
|
|
322
|
-
adWillPlayMuted: request.adWillPlayMuted,
|
|
323
|
-
playerVolume: request.playerVolume,
|
|
324
|
-
continuousPlayback: request.continuousPlayback,
|
|
325
|
-
descriptionUrl: request.descriptionUrl,
|
|
326
|
-
iconsSupported: request.iconsSupported,
|
|
327
|
-
playerType: request.playerType,
|
|
328
|
-
playerVersion: request.playerVersion,
|
|
329
|
-
supportedApiFrameworks: request.supportedApiFrameworks,
|
|
330
|
-
url: request.url,
|
|
331
|
-
videoWidth: request.videoWidth,
|
|
332
|
-
videoHeight: request.videoHeight,
|
|
333
|
-
ppid: request.ppid,
|
|
334
|
-
sessionId: request.sessionId
|
|
335
|
-
}, null, 2));
|
|
336
|
-
return [
|
|
337
|
-
4,
|
|
338
|
-
loader.loadNonceManager(request)
|
|
339
|
-
];
|
|
340
|
-
case 3:
|
|
341
|
-
manager = _state.sent();
|
|
342
|
-
currentNonceManager = manager;
|
|
343
|
-
currentNonce = manager.getNonce();
|
|
344
|
-
console.log("[PAL] Nonce generated successfully");
|
|
345
|
-
return [
|
|
346
|
-
2,
|
|
347
|
-
currentNonce
|
|
348
|
-
];
|
|
349
|
-
case 4:
|
|
350
|
-
error = _state.sent();
|
|
351
|
-
console.warn("[PAL] Failed to generate nonce:", error);
|
|
352
|
-
currentNonce = "";
|
|
353
|
-
currentNonceManager = void 0;
|
|
354
|
-
return [
|
|
355
|
-
2,
|
|
356
|
-
""
|
|
357
|
-
];
|
|
358
|
-
case 5:
|
|
359
|
-
return [
|
|
360
|
-
2
|
|
361
|
-
];
|
|
362
|
-
}
|
|
363
|
-
});
|
|
364
|
-
}).apply(this, arguments);
|
|
283
|
+
var options = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {};
|
|
284
|
+
var run = generate(options);
|
|
285
|
+
pendingNonce = run;
|
|
286
|
+
var settle = function settle() {
|
|
287
|
+
if (pendingNonce === run) pendingNonce = void 0;
|
|
288
|
+
};
|
|
289
|
+
run.then(settle, settle);
|
|
290
|
+
return run;
|
|
365
291
|
},
|
|
366
292
|
getCurrentNonce: function getCurrentNonce() {
|
|
367
293
|
return currentNonce;
|
|
368
294
|
},
|
|
295
|
+
waitForNonce: function waitForNonce(maxWaitMs) {
|
|
296
|
+
if (currentNonce) return Promise.resolve(currentNonce);
|
|
297
|
+
var pending = pendingNonce;
|
|
298
|
+
if (!pending || !(maxWaitMs > 0)) return Promise.resolve("");
|
|
299
|
+
return new Promise(function(resolve) {
|
|
300
|
+
var timer = setTimeout(function() {
|
|
301
|
+
return resolve(currentNonce);
|
|
302
|
+
}, maxWaitMs);
|
|
303
|
+
pending.then(function(nonce) {
|
|
304
|
+
clearTimeout(timer);
|
|
305
|
+
resolve(nonce);
|
|
306
|
+
}, function() {
|
|
307
|
+
clearTimeout(timer);
|
|
308
|
+
resolve("");
|
|
309
|
+
});
|
|
310
|
+
});
|
|
311
|
+
},
|
|
369
312
|
injectNonce: function injectNonce(vastTagUrl) {
|
|
370
313
|
if (!currentNonce || !vastTagUrl) return vastTagUrl;
|
|
371
314
|
try {
|
|
@@ -402,8 +345,90 @@ function createPalNonceManager() {
|
|
|
402
345
|
reset: function reset() {
|
|
403
346
|
currentNonce = "";
|
|
404
347
|
currentNonceManager = void 0;
|
|
348
|
+
pendingNonce = void 0;
|
|
405
349
|
}
|
|
406
350
|
};
|
|
351
|
+
function generate(options) {
|
|
352
|
+
return _async_to_generator(function() {
|
|
353
|
+
var _options_allowStorage, _options_adWillAutoPlay, _options_adWillPlayMuted, _options_playerVolume, _options_continuousPlayback, loader, goog, request, manager, error;
|
|
354
|
+
return _ts_generator(this, function(_state) {
|
|
355
|
+
switch(_state.label){
|
|
356
|
+
case 0:
|
|
357
|
+
_state.trys.push([
|
|
358
|
+
0,
|
|
359
|
+
3,
|
|
360
|
+
,
|
|
361
|
+
4
|
|
362
|
+
]);
|
|
363
|
+
return [
|
|
364
|
+
4,
|
|
365
|
+
loadPalSdk()
|
|
366
|
+
];
|
|
367
|
+
case 1:
|
|
368
|
+
_state.sent();
|
|
369
|
+
loader = getOrCreateNonceLoader((_options_allowStorage = options.allowStorage) !== null && _options_allowStorage !== void 0 ? _options_allowStorage : true);
|
|
370
|
+
goog = window.goog;
|
|
371
|
+
request = new goog.pal.NonceRequest();
|
|
372
|
+
request.adWillAutoPlay = (_options_adWillAutoPlay = options.adWillAutoPlay) !== null && _options_adWillAutoPlay !== void 0 ? _options_adWillAutoPlay : true;
|
|
373
|
+
request.adWillPlayMuted = (_options_adWillPlayMuted = options.adWillPlayMuted) !== null && _options_adWillPlayMuted !== void 0 ? _options_adWillPlayMuted : false;
|
|
374
|
+
request.playerVolume = (_options_playerVolume = options.playerVolume) !== null && _options_playerVolume !== void 0 ? _options_playerVolume : request.adWillPlayMuted ? 0 : 1;
|
|
375
|
+
request.continuousPlayback = (_options_continuousPlayback = options.continuousPlayback) !== null && _options_continuousPlayback !== void 0 ? _options_continuousPlayback : true;
|
|
376
|
+
request.descriptionUrl = toDevSafeUrl(options.descriptionUrl || (typeof window !== "undefined" ? window.location.href : ""));
|
|
377
|
+
request.iconsSupported = true;
|
|
378
|
+
request.playerType = "StormcloudVideoPlayer";
|
|
379
|
+
request.playerVersion = "1.0";
|
|
380
|
+
request.supportedApiFrameworks = "2,7,9";
|
|
381
|
+
request.url = toDevSafeUrl(options.descriptionUrl || (typeof window !== "undefined" ? window.location.href : ""));
|
|
382
|
+
request.videoWidth = options.videoWidth || 640;
|
|
383
|
+
request.videoHeight = options.videoHeight || 480;
|
|
384
|
+
if (options.ppid) request.ppid = options.ppid;
|
|
385
|
+
if (options.sessionId) request.sessionId = options.sessionId;
|
|
386
|
+
console.log("[PAL] NonceRequest before generateNonce:", JSON.stringify({
|
|
387
|
+
adWillAutoPlay: request.adWillAutoPlay,
|
|
388
|
+
adWillPlayMuted: request.adWillPlayMuted,
|
|
389
|
+
playerVolume: request.playerVolume,
|
|
390
|
+
continuousPlayback: request.continuousPlayback,
|
|
391
|
+
descriptionUrl: request.descriptionUrl,
|
|
392
|
+
iconsSupported: request.iconsSupported,
|
|
393
|
+
playerType: request.playerType,
|
|
394
|
+
playerVersion: request.playerVersion,
|
|
395
|
+
supportedApiFrameworks: request.supportedApiFrameworks,
|
|
396
|
+
url: request.url,
|
|
397
|
+
videoWidth: request.videoWidth,
|
|
398
|
+
videoHeight: request.videoHeight,
|
|
399
|
+
ppid: request.ppid,
|
|
400
|
+
sessionId: request.sessionId
|
|
401
|
+
}, null, 2));
|
|
402
|
+
return [
|
|
403
|
+
4,
|
|
404
|
+
loader.loadNonceManager(request)
|
|
405
|
+
];
|
|
406
|
+
case 2:
|
|
407
|
+
manager = _state.sent();
|
|
408
|
+
currentNonceManager = manager;
|
|
409
|
+
currentNonce = manager.getNonce();
|
|
410
|
+
console.log("[PAL] Nonce generated successfully");
|
|
411
|
+
return [
|
|
412
|
+
2,
|
|
413
|
+
currentNonce
|
|
414
|
+
];
|
|
415
|
+
case 3:
|
|
416
|
+
error = _state.sent();
|
|
417
|
+
console.warn("[PAL] Failed to generate nonce:", error);
|
|
418
|
+
currentNonce = "";
|
|
419
|
+
currentNonceManager = void 0;
|
|
420
|
+
return [
|
|
421
|
+
2,
|
|
422
|
+
""
|
|
423
|
+
];
|
|
424
|
+
case 4:
|
|
425
|
+
return [
|
|
426
|
+
2
|
|
427
|
+
];
|
|
428
|
+
}
|
|
429
|
+
});
|
|
430
|
+
})();
|
|
431
|
+
}
|
|
407
432
|
}
|
|
408
433
|
// Annotate the CommonJS export names for ESM import in node:
|
|
409
434
|
0 && (module.exports = {
|
package/lib/sdk/pal.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["d:\\project\\stormcloud-vp\\lib\\sdk\\pal.cjs"],"names":["__defProp","Object","defineProperty","__getOwnPropDesc","getOwnPropertyDescriptor","__getOwnPropNames","getOwnPropertyNames","__hasOwnProp","prototype","hasOwnProperty","__export","target","all","name","get","enumerable","__copyProps","to","from","except","desc","key","call","__toCommonJS","mod","value","pal_exports","createPalNonceManager","module","exports","PRIVATE_HOST_PATTERNS","isLocalDevHost","hostname","host","replace","toLowerCase","endsWith","some","pattern","test","toDevSafeUrl","rawUrl","url","URL","protocol","cleanPath","pathname","PAL_SDK_URL","_nonceLoader","_nonceLoaderAllowStorage","_palLoadPromise","loadPalSdk","window","goog","pal","Promise","resolve","reject","existing","document","querySelector","timeout","setTimeout","Error","addEventListener","clearTimeout","script","createElement","src","async","setAttribute","onload","onerror","head","appendChild","getOrCreateNonceLoader","allowStorage","consentSettings","ConsentSettings","NonceLoader","currentNonce","currentNonceManager","generateNonce","options","loader","request","manager","error","NonceRequest","adWillAutoPlay","adWillPlayMuted","playerVolume","continuousPlayback","descriptionUrl","location","href","iconsSupported","playerType","playerVersion","supportedApiFrameworks","videoWidth","videoHeight","ppid","sessionId","console","log","JSON","stringify","loadNonceManager","getNonce","warn","getCurrentNonce","injectNonce","vastTagUrl","searchParams","delete","set","toString","base","sep","includes","encodeURIComponent","sendPlaybackStart","sendPlaybackEnd","sendAdClick","sendAdTouch","event","reset"],"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/sdk/pal.ts\nvar pal_exports = {};\n__export(pal_exports, {\n createPalNonceManager: () => createPalNonceManager\n});\nmodule.exports = __toCommonJS(pal_exports);\n\n// src/utils/devUrl.ts\nvar PRIVATE_HOST_PATTERNS = [\n /^localhost$/i,\n /^127\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}$/,\n /^0\\.0\\.0\\.0$/,\n /^::1$/,\n /^10\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}$/,\n /^192\\.168\\.\\d{1,3}\\.\\d{1,3}$/,\n /^172\\.(1[6-9]|2\\d|3[0-1])\\.\\d{1,3}\\.\\d{1,3}$/\n];\nfunction isLocalDevHost(hostname) {\n const host = hostname.replace(/^\\[/, \"\").replace(/\\]$/, \"\").toLowerCase();\n if (!host) return false;\n if (host.endsWith(\".local\") || host.endsWith(\".localhost\")) return true;\n return PRIVATE_HOST_PATTERNS.some((pattern) => pattern.test(host));\n}\nfunction toDevSafeUrl(rawUrl) {\n if (!rawUrl) return rawUrl ?? \"\";\n let url;\n try {\n url = new URL(rawUrl);\n } catch {\n return rawUrl;\n }\n if (url.protocol !== \"http:\" && url.protocol !== \"https:\") {\n return rawUrl;\n }\n if (!isLocalDevHost(url.hostname)) {\n return rawUrl;\n }\n const cleanPath = url.pathname.replace(/\\/{2,}/g, \"/\") || \"/index.html\";\n return `file://${cleanPath}`;\n}\n\n// src/sdk/pal.ts\nvar PAL_SDK_URL = \"https://imasdk.googleapis.com/pal/sdkloader/pal.js\";\nvar _nonceLoader;\nvar _nonceLoaderAllowStorage;\nvar _palLoadPromise;\nfunction loadPalSdk() {\n if (typeof window !== \"undefined\" && window.goog?.pal) {\n return Promise.resolve();\n }\n if (_palLoadPromise) return _palLoadPromise;\n _palLoadPromise = new Promise((resolve, reject) => {\n const existing = document.querySelector(\n 'script[data-pal=\"true\"]'\n );\n if (existing) {\n if (window.goog?.pal) {\n resolve();\n return;\n }\n const timeout = setTimeout(\n () => reject(new Error(\"PAL SDK load timeout\")),\n 1e4\n );\n existing.addEventListener(\"load\", () => {\n clearTimeout(timeout);\n resolve();\n });\n existing.addEventListener(\"error\", () => {\n clearTimeout(timeout);\n reject(new Error(\"PAL SDK load failed\"));\n });\n return;\n }\n const script = document.createElement(\"script\");\n script.src = PAL_SDK_URL;\n script.async = true;\n script.setAttribute(\"data-pal\", \"true\");\n script.onload = () => resolve();\n script.onerror = () => reject(new Error(\"PAL SDK load failed\"));\n document.head.appendChild(script);\n });\n return _palLoadPromise;\n}\nfunction getOrCreateNonceLoader(allowStorage) {\n if (_nonceLoader && _nonceLoaderAllowStorage === allowStorage) {\n return _nonceLoader;\n }\n const goog = window.goog;\n const consentSettings = new goog.pal.ConsentSettings();\n consentSettings.allowStorage = allowStorage;\n _nonceLoader = new goog.pal.NonceLoader(consentSettings);\n _nonceLoaderAllowStorage = allowStorage;\n return _nonceLoader;\n}\nfunction createPalNonceManager() {\n let currentNonce = \"\";\n let currentNonceManager;\n return {\n async generateNonce(options = {}) {\n try {\n await loadPalSdk();\n const loader = getOrCreateNonceLoader(options.allowStorage ?? true);\n const goog = window.goog;\n const request = new goog.pal.NonceRequest();\n request.adWillAutoPlay = options.adWillAutoPlay ?? true;\n request.adWillPlayMuted = options.adWillPlayMuted ?? false;\n request.playerVolume = options.playerVolume ?? (request.adWillPlayMuted ? 0 : 1);\n request.continuousPlayback = options.continuousPlayback ?? true;\n request.descriptionUrl = toDevSafeUrl(\n options.descriptionUrl || (typeof window !== \"undefined\" ? window.location.href : \"\")\n );\n request.iconsSupported = true;\n request.playerType = \"StormcloudVideoPlayer\";\n request.playerVersion = \"1.0\";\n request.supportedApiFrameworks = \"2,7,9\";\n request.url = toDevSafeUrl(\n options.descriptionUrl || (typeof window !== \"undefined\" ? window.location.href : \"\")\n );\n request.videoWidth = options.videoWidth || 640;\n request.videoHeight = options.videoHeight || 480;\n if (options.ppid) request.ppid = options.ppid;\n if (options.sessionId) request.sessionId = options.sessionId;\n console.log(\n \"[PAL] NonceRequest before generateNonce:\",\n JSON.stringify({\n adWillAutoPlay: request.adWillAutoPlay,\n adWillPlayMuted: request.adWillPlayMuted,\n playerVolume: request.playerVolume,\n continuousPlayback: request.continuousPlayback,\n descriptionUrl: request.descriptionUrl,\n iconsSupported: request.iconsSupported,\n playerType: request.playerType,\n playerVersion: request.playerVersion,\n supportedApiFrameworks: request.supportedApiFrameworks,\n url: request.url,\n videoWidth: request.videoWidth,\n videoHeight: request.videoHeight,\n ppid: request.ppid,\n sessionId: request.sessionId\n }, null, 2)\n );\n const manager = await loader.loadNonceManager(request);\n currentNonceManager = manager;\n currentNonce = manager.getNonce();\n console.log(\"[PAL] Nonce generated successfully\");\n return currentNonce;\n } catch (error) {\n console.warn(\"[PAL] Failed to generate nonce:\", error);\n currentNonce = \"\";\n currentNonceManager = void 0;\n return \"\";\n }\n },\n getCurrentNonce() {\n return currentNonce;\n },\n injectNonce(vastTagUrl) {\n if (!currentNonce || !vastTagUrl) return vastTagUrl;\n try {\n const url = new URL(vastTagUrl);\n url.searchParams.delete(\"paln\");\n url.searchParams.set(\"givn\", currentNonce);\n return url.toString();\n } catch {\n let base = vastTagUrl.replace(/([?&])paln=[^&]*/g, \"\").replace(/[?&]$/, \"\");\n const sep = base.includes(\"?\") ? \"&\" : \"?\";\n return `${base}${sep}givn=${encodeURIComponent(currentNonce)}`;\n }\n },\n sendPlaybackStart() {\n try {\n currentNonceManager?.sendPlaybackStart();\n } catch {\n }\n },\n sendPlaybackEnd() {\n try {\n currentNonceManager?.sendPlaybackEnd();\n } catch {\n }\n },\n sendAdClick() {\n try {\n currentNonceManager?.sendAdClick();\n } catch {\n }\n },\n sendAdTouch(event) {\n try {\n currentNonceManager?.sendAdTouch(event);\n } catch {\n }\n },\n reset() {\n currentNonce = \"\";\n currentNonceManager = void 0;\n }\n };\n}\n// Annotate the CommonJS export names for ESM import in node:\n0 && (module.exports = {\n createPalNonceManager\n});\n"]}
|
|
1
|
+
{"version":3,"sources":["d:\\project\\stormcloud-vp\\lib\\sdk\\pal.cjs"],"names":["__defProp","Object","defineProperty","__getOwnPropDesc","getOwnPropertyDescriptor","__getOwnPropNames","getOwnPropertyNames","__hasOwnProp","prototype","hasOwnProperty","__export","target","all","name","get","enumerable","__copyProps","to","from","except","desc","key","call","__toCommonJS","mod","value","pal_exports","createPalNonceManager","module","exports","PRIVATE_HOST_PATTERNS","isLocalDevHost","hostname","host","replace","toLowerCase","endsWith","some","pattern","test","toDevSafeUrl","rawUrl","url","URL","protocol","cleanPath","pathname","PAL_SDK_URL","_nonceLoader","_nonceLoaderAllowStorage","_palLoadPromise","loadPalSdk","window","goog","pal","Promise","resolve","reject","existing","document","querySelector","timeout","setTimeout","Error","addEventListener","clearTimeout","script","createElement","src","async","setAttribute","onload","onerror","head","appendChild","getOrCreateNonceLoader","allowStorage","consentSettings","ConsentSettings","NonceLoader","currentNonce","currentNonceManager","pendingNonce","generateNonce","options","run","generate","settle","then","getCurrentNonce","waitForNonce","maxWaitMs","pending","timer","nonce","injectNonce","vastTagUrl","searchParams","delete","set","toString","base","sep","includes","encodeURIComponent","sendPlaybackStart","sendPlaybackEnd","sendAdClick","sendAdTouch","event","reset","loader","request","manager","error","NonceRequest","adWillAutoPlay","adWillPlayMuted","playerVolume","continuousPlayback","descriptionUrl","location","href","iconsSupported","playerType","playerVersion","supportedApiFrameworks","videoWidth","videoHeight","ppid","sessionId","console","log","JSON","stringify","loadNonceManager","getNonce","warn"],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,IAAIA,YAAYC,OAAOC,cAAc;AACrC,IAAIC,mBAAmBF,OAAOG,wBAAwB;AACtD,IAAIC,oBAAoBJ,OAAOK,mBAAmB;AAClD,IAAIC,eAAeN,OAAOO,SAAS,CAACC,cAAc;AAClD,IAAIC,WAAW,kBAACC,QAAQC;IACtB,IAAK,IAAIC,QAAQD,IACfZ,UAAUW,QAAQE,MAAM;QAAEC,KAAKF,GAAG,CAACC,KAAK;QAAEE,YAAY;IAAK;AAC/D;AACA,IAAIC,cAAc,qBAACC,IAAIC,MAAMC,QAAQC;IACnC,IAAIF,QAAQ,CAAA,OAAOA,qCAAP,SAAOA,KAAG,MAAM,YAAY,OAAOA,SAAS,YAAY;YAC7D,kCAAA,2BAAA;;;gBAAA,IAAIG,MAAJ;gBACH,IAAI,CAACd,aAAae,IAAI,CAACL,IAAII,QAAQA,QAAQF,QACzCnB,UAAUiB,IAAII,KAAK;oBAAEP,KAAK,SAALA;+BAAWI,IAAI,CAACG,IAAI;;oBAAEN,YAAY,CAAEK,CAAAA,OAAOjB,iBAAiBe,MAAMG,IAAG,KAAMD,KAAKL,UAAU;gBAAC;;YAFpH,QAAK,YAAWV,kBAAkBa,0BAA7B,SAAA,6BAAA,QAAA,yBAAA;;YAAA;YAAA;;;qBAAA,6BAAA;oBAAA;;;oBAAA;0BAAA;;;;IAGP;IACA,OAAOD;AACT;AACA,IAAIM,eAAe,sBAACC;WAAQR,YAAYhB,UAAU,CAAC,GAAG,cAAc;QAAEyB,OAAO;IAAK,IAAID;;AAEtF,iBAAiB;AACjB,IAAIE,cAAc,CAAC;AACnBhB,SAASgB,aAAa;IACpBC,uBAAuB,SAAvBA;eAA6BA;;AAC/B;AACAC,OAAOC,OAAO,GAAGN,aAAaG;AAE9B,sBAAsB;AACtB,IAAII,wBAAwB;IAC1B;IACA;IACA;IACA;IACA;IACA;IACA;CACD;AACD,SAASC,eAAeC,QAAQ;IAC9B,IAAMC,OAAOD,SAASE,OAAO,CAAC,OAAO,IAAIA,OAAO,CAAC,OAAO,IAAIC,WAAW;IACvE,IAAI,CAACF,MAAM,OAAO;IAClB,IAAIA,KAAKG,QAAQ,CAAC,aAAaH,KAAKG,QAAQ,CAAC,eAAe,OAAO;IACnE,OAAON,sBAAsBO,IAAI,CAAC,SAACC;eAAYA,QAAQC,IAAI,CAACN;;AAC9D;AACA,SAASO,aAAaC,MAAM;IAC1B,IAAI,CAACA,QAAQ,OAAOA,mBAAAA,oBAAAA,SAAU;IAC9B,IAAIC;IACJ,IAAI;QACFA,MAAM,IAAIC,IAAIF;IAChB,EAAE,eAAM;QACN,OAAOA;IACT;IACA,IAAIC,IAAIE,QAAQ,KAAK,WAAWF,IAAIE,QAAQ,KAAK,UAAU;QACzD,OAAOH;IACT;IACA,IAAI,CAACV,eAAeW,IAAIV,QAAQ,GAAG;QACjC,OAAOS;IACT;IACA,IAAMI,YAAYH,IAAII,QAAQ,CAACZ,OAAO,CAAC,WAAW,QAAQ;IAC1D,OAAO,AAAC,UAAmB,OAAVW;AACnB;AAEA,iBAAiB;AACjB,IAAIE,cAAc;AAClB,IAAIC;AACJ,IAAIC;AACJ,IAAIC;AACJ,SAASC;QAC8BC;IAArC,IAAI,OAAOA,WAAW,iBAAeA,eAAAA,OAAOC,IAAI,cAAXD,mCAAAA,aAAaE,GAAG,GAAE;QACrD,OAAOC,QAAQC,OAAO;IACxB;IACA,IAAIN,iBAAiB,OAAOA;IAC5BA,kBAAkB,IAAIK,QAAQ,SAACC,SAASC;QACtC,IAAMC,WAAWC,SAASC,aAAa,CACrC;QAEF,IAAIF,UAAU;gBACRN;YAAJ,KAAIA,eAAAA,OAAOC,IAAI,cAAXD,mCAAAA,aAAaE,GAAG,EAAE;gBACpBE;gBACA;YACF;YACA,IAAMK,UAAUC,WACd;uBAAML,OAAO,IAAIM,MAAM;eACvB;YAEFL,SAASM,gBAAgB,CAAC,QAAQ;gBAChCC,aAAaJ;gBACbL;YACF;YACAE,SAASM,gBAAgB,CAAC,SAAS;gBACjCC,aAAaJ;gBACbJ,OAAO,IAAIM,MAAM;YACnB;YACA;QACF;QACA,IAAMG,SAASP,SAASQ,aAAa,CAAC;QACtCD,OAAOE,GAAG,GAAGrB;QACbmB,OAAOG,KAAK,GAAG;QACfH,OAAOI,YAAY,CAAC,YAAY;QAChCJ,OAAOK,MAAM,GAAG;mBAAMf;;QACtBU,OAAOM,OAAO,GAAG;mBAAMf,OAAO,IAAIM,MAAM;;QACxCJ,SAASc,IAAI,CAACC,WAAW,CAACR;IAC5B;IACA,OAAOhB;AACT;AACA,SAASyB,uBAAuBC,YAAY;IAC1C,IAAI5B,gBAAgBC,6BAA6B2B,cAAc;QAC7D,OAAO5B;IACT;IACA,IAAMK,OAAOD,OAAOC,IAAI;IACxB,IAAMwB,kBAAkB,IAAIxB,KAAKC,GAAG,CAACwB,eAAe;IACpDD,gBAAgBD,YAAY,GAAGA;IAC/B5B,eAAe,IAAIK,KAAKC,GAAG,CAACyB,WAAW,CAACF;IACxC5B,2BAA2B2B;IAC3B,OAAO5B;AACT;AACA,SAASrB;IACP,IAAIqD,eAAe;IACnB,IAAIC;IACJ,IAAIC;IACJ,OAAO;QACLC,eAAAA,SAAAA;gBAAcC,UAAAA,iEAAU,CAAC;YACvB,IAAMC,MAAMC,SAASF;YACrBF,eAAeG;YACf,IAAME,SAAS;gBACb,IAAIL,iBAAiBG,KAAKH,eAAe,KAAK;YAChD;YACAG,IAAIG,IAAI,CAACD,QAAQA;YACjB,OAAOF;QACT;QACAI,iBAAAA,SAAAA;YACE,OAAOT;QACT;QACAU,cAAAA,SAAAA,aAAaC,SAAS;YACpB,IAAIX,cAAc,OAAOzB,QAAQC,OAAO,CAACwB;YACzC,IAAMY,UAAUV;YAChB,IAAI,CAACU,WAAW,CAAED,CAAAA,YAAY,CAAA,GAAI,OAAOpC,QAAQC,OAAO,CAAC;YACzD,OAAO,IAAID,QAAQ,SAACC;gBAClB,IAAMqC,QAAQ/B,WAAW;2BAAMN,QAAQwB;mBAAeW;gBACtDC,QAAQJ,IAAI,CACV,SAACM;oBACC7B,aAAa4B;oBACbrC,QAAQsC;gBACV,GACA;oBACE7B,aAAa4B;oBACbrC,QAAQ;gBACV;YAEJ;QACF;QACAuC,aAAAA,SAAAA,YAAYC,UAAU;YACpB,IAAI,CAAChB,gBAAgB,CAACgB,YAAY,OAAOA;YACzC,IAAI;gBACF,IAAMtD,MAAM,IAAIC,IAAIqD;gBACpBtD,IAAIuD,YAAY,CAACC,MAAM,CAAC;gBACxBxD,IAAIuD,YAAY,CAACE,GAAG,CAAC,QAAQnB;gBAC7B,OAAOtC,IAAI0D,QAAQ;YACrB,EAAE,eAAM;gBACN,IAAIC,OAAOL,WAAW9D,OAAO,CAAC,qBAAqB,IAAIA,OAAO,CAAC,SAAS;gBACxE,IAAMoE,MAAMD,KAAKE,QAAQ,CAAC,OAAO,MAAM;gBACvC,OAAO,AAAC,GAASD,OAAPD,MAAkBG,OAAXF,KAAI,SAAwC,OAAjCE,mBAAmBxB;YACjD;QACF;QACAyB,mBAAAA,SAAAA;YACE,IAAI;gBACFxB,gCAAAA,0CAAAA,oBAAqBwB,iBAAiB;YACxC,EAAE,eAAM,CACR;QACF;QACAC,iBAAAA,SAAAA;YACE,IAAI;gBACFzB,gCAAAA,0CAAAA,oBAAqByB,eAAe;YACtC,EAAE,eAAM,CACR;QACF;QACAC,aAAAA,SAAAA;YACE,IAAI;gBACF1B,gCAAAA,0CAAAA,oBAAqB0B,WAAW;YAClC,EAAE,eAAM,CACR;QACF;QACAC,aAAAA,SAAAA,YAAYC,KAAK;YACf,IAAI;gBACF5B,gCAAAA,0CAAAA,oBAAqB2B,WAAW,CAACC;YACnC,EAAE,eAAM,CACR;QACF;QACAC,OAAAA,SAAAA;YACE9B,eAAe;YACfC,sBAAsB,KAAK;YAC3BC,eAAe,KAAK;QACtB;IACF;IACA,SAAeI,SAASF,OAAO;;gBAGWA,uBAGbA,yBACCA,0BACHA,uBACMA,6BANvB2B,QACA1D,MACA2D,SAsCAC,SAKCC;;;;;;;;;;wBA9CP;;4BAAM/D;;;wBAAN;wBACM4D,SAASpC,wBAAuBS,wBAAAA,QAAQR,YAAY,cAApBQ,mCAAAA,wBAAwB;wBACxD/B,OAAOD,OAAOC,IAAI;wBAClB2D,UAAU,IAAI3D,KAAKC,GAAG,CAAC6D,YAAY;wBACzCH,QAAQI,cAAc,IAAGhC,0BAAAA,QAAQgC,cAAc,cAAtBhC,qCAAAA,0BAA0B;wBACnD4B,QAAQK,eAAe,IAAGjC,2BAAAA,QAAQiC,eAAe,cAAvBjC,sCAAAA,2BAA2B;wBACrD4B,QAAQM,YAAY,IAAGlC,wBAAAA,QAAQkC,YAAY,cAApBlC,mCAAAA,wBAAyB4B,QAAQK,eAAe,GAAG,IAAI;wBAC9EL,QAAQO,kBAAkB,IAAGnC,8BAAAA,QAAQmC,kBAAkB,cAA1BnC,yCAAAA,8BAA8B;wBAC3D4B,QAAQQ,cAAc,GAAGhF,aACvB4C,QAAQoC,cAAc,IAAK,CAAA,OAAOpE,WAAW,cAAcA,OAAOqE,QAAQ,CAACC,IAAI,GAAG,EAAC;wBAErFV,QAAQW,cAAc,GAAG;wBACzBX,QAAQY,UAAU,GAAG;wBACrBZ,QAAQa,aAAa,GAAG;wBACxBb,QAAQc,sBAAsB,GAAG;wBACjCd,QAAQtE,GAAG,GAAGF,aACZ4C,QAAQoC,cAAc,IAAK,CAAA,OAAOpE,WAAW,cAAcA,OAAOqE,QAAQ,CAACC,IAAI,GAAG,EAAC;wBAErFV,QAAQe,UAAU,GAAG3C,QAAQ2C,UAAU,IAAI;wBAC3Cf,QAAQgB,WAAW,GAAG5C,QAAQ4C,WAAW,IAAI;wBAC7C,IAAI5C,QAAQ6C,IAAI,EAAEjB,QAAQiB,IAAI,GAAG7C,QAAQ6C,IAAI;wBAC7C,IAAI7C,QAAQ8C,SAAS,EAAElB,QAAQkB,SAAS,GAAG9C,QAAQ8C,SAAS;wBAC5DC,QAAQC,GAAG,CACT,4CACAC,KAAKC,SAAS,CAAC;4BACblB,gBAAgBJ,QAAQI,cAAc;4BACtCC,iBAAiBL,QAAQK,eAAe;4BACxCC,cAAcN,QAAQM,YAAY;4BAClCC,oBAAoBP,QAAQO,kBAAkB;4BAC9CC,gBAAgBR,QAAQQ,cAAc;4BACtCG,gBAAgBX,QAAQW,cAAc;4BACtCC,YAAYZ,QAAQY,UAAU;4BAC9BC,eAAeb,QAAQa,aAAa;4BACpCC,wBAAwBd,QAAQc,sBAAsB;4BACtDpF,KAAKsE,QAAQtE,GAAG;4BAChBqF,YAAYf,QAAQe,UAAU;4BAC9BC,aAAahB,QAAQgB,WAAW;4BAChCC,MAAMjB,QAAQiB,IAAI;4BAClBC,WAAWlB,QAAQkB,SAAS;wBAC9B,GAAG,MAAM;wBAEK;;4BAAMnB,OAAOwB,gBAAgB,CAACvB;;;wBAAxCC,UAAU;wBAChBhC,sBAAsBgC;wBACtBjC,eAAeiC,QAAQuB,QAAQ;wBAC/BL,QAAQC,GAAG,CAAC;wBACZ;;4BAAOpD;;;wBACAkC;wBACPiB,QAAQM,IAAI,CAAC,mCAAmCvB;wBAChDlC,eAAe;wBACfC,sBAAsB,KAAK;wBAC3B;;4BAAO;;;;;;;;QAEX;;AACF;AACA,6DAA6D;AAC7D,KAAMrD,CAAAA,OAAOC,OAAO,GAAG;IACrBF,uBAAAA;AACF,CAAA","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/sdk/pal.ts\nvar pal_exports = {};\n__export(pal_exports, {\n createPalNonceManager: () => createPalNonceManager\n});\nmodule.exports = __toCommonJS(pal_exports);\n\n// src/utils/devUrl.ts\nvar PRIVATE_HOST_PATTERNS = [\n /^localhost$/i,\n /^127\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}$/,\n /^0\\.0\\.0\\.0$/,\n /^::1$/,\n /^10\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}$/,\n /^192\\.168\\.\\d{1,3}\\.\\d{1,3}$/,\n /^172\\.(1[6-9]|2\\d|3[0-1])\\.\\d{1,3}\\.\\d{1,3}$/\n];\nfunction isLocalDevHost(hostname) {\n const host = hostname.replace(/^\\[/, \"\").replace(/\\]$/, \"\").toLowerCase();\n if (!host) return false;\n if (host.endsWith(\".local\") || host.endsWith(\".localhost\")) return true;\n return PRIVATE_HOST_PATTERNS.some((pattern) => pattern.test(host));\n}\nfunction toDevSafeUrl(rawUrl) {\n if (!rawUrl) return rawUrl ?? \"\";\n let url;\n try {\n url = new URL(rawUrl);\n } catch {\n return rawUrl;\n }\n if (url.protocol !== \"http:\" && url.protocol !== \"https:\") {\n return rawUrl;\n }\n if (!isLocalDevHost(url.hostname)) {\n return rawUrl;\n }\n const cleanPath = url.pathname.replace(/\\/{2,}/g, \"/\") || \"/index.html\";\n return `file://${cleanPath}`;\n}\n\n// src/sdk/pal.ts\nvar PAL_SDK_URL = \"https://imasdk.googleapis.com/pal/sdkloader/pal.js\";\nvar _nonceLoader;\nvar _nonceLoaderAllowStorage;\nvar _palLoadPromise;\nfunction loadPalSdk() {\n if (typeof window !== \"undefined\" && window.goog?.pal) {\n return Promise.resolve();\n }\n if (_palLoadPromise) return _palLoadPromise;\n _palLoadPromise = new Promise((resolve, reject) => {\n const existing = document.querySelector(\n 'script[data-pal=\"true\"]'\n );\n if (existing) {\n if (window.goog?.pal) {\n resolve();\n return;\n }\n const timeout = setTimeout(\n () => reject(new Error(\"PAL SDK load timeout\")),\n 1e4\n );\n existing.addEventListener(\"load\", () => {\n clearTimeout(timeout);\n resolve();\n });\n existing.addEventListener(\"error\", () => {\n clearTimeout(timeout);\n reject(new Error(\"PAL SDK load failed\"));\n });\n return;\n }\n const script = document.createElement(\"script\");\n script.src = PAL_SDK_URL;\n script.async = true;\n script.setAttribute(\"data-pal\", \"true\");\n script.onload = () => resolve();\n script.onerror = () => reject(new Error(\"PAL SDK load failed\"));\n document.head.appendChild(script);\n });\n return _palLoadPromise;\n}\nfunction getOrCreateNonceLoader(allowStorage) {\n if (_nonceLoader && _nonceLoaderAllowStorage === allowStorage) {\n return _nonceLoader;\n }\n const goog = window.goog;\n const consentSettings = new goog.pal.ConsentSettings();\n consentSettings.allowStorage = allowStorage;\n _nonceLoader = new goog.pal.NonceLoader(consentSettings);\n _nonceLoaderAllowStorage = allowStorage;\n return _nonceLoader;\n}\nfunction createPalNonceManager() {\n let currentNonce = \"\";\n let currentNonceManager;\n let pendingNonce;\n return {\n generateNonce(options = {}) {\n const run = generate(options);\n pendingNonce = run;\n const settle = () => {\n if (pendingNonce === run) pendingNonce = void 0;\n };\n run.then(settle, settle);\n return run;\n },\n getCurrentNonce() {\n return currentNonce;\n },\n waitForNonce(maxWaitMs) {\n if (currentNonce) return Promise.resolve(currentNonce);\n const pending = pendingNonce;\n if (!pending || !(maxWaitMs > 0)) return Promise.resolve(\"\");\n return new Promise((resolve) => {\n const timer = setTimeout(() => resolve(currentNonce), maxWaitMs);\n pending.then(\n (nonce) => {\n clearTimeout(timer);\n resolve(nonce);\n },\n () => {\n clearTimeout(timer);\n resolve(\"\");\n }\n );\n });\n },\n injectNonce(vastTagUrl) {\n if (!currentNonce || !vastTagUrl) return vastTagUrl;\n try {\n const url = new URL(vastTagUrl);\n url.searchParams.delete(\"paln\");\n url.searchParams.set(\"givn\", currentNonce);\n return url.toString();\n } catch {\n let base = vastTagUrl.replace(/([?&])paln=[^&]*/g, \"\").replace(/[?&]$/, \"\");\n const sep = base.includes(\"?\") ? \"&\" : \"?\";\n return `${base}${sep}givn=${encodeURIComponent(currentNonce)}`;\n }\n },\n sendPlaybackStart() {\n try {\n currentNonceManager?.sendPlaybackStart();\n } catch {\n }\n },\n sendPlaybackEnd() {\n try {\n currentNonceManager?.sendPlaybackEnd();\n } catch {\n }\n },\n sendAdClick() {\n try {\n currentNonceManager?.sendAdClick();\n } catch {\n }\n },\n sendAdTouch(event) {\n try {\n currentNonceManager?.sendAdTouch(event);\n } catch {\n }\n },\n reset() {\n currentNonce = \"\";\n currentNonceManager = void 0;\n pendingNonce = void 0;\n }\n };\n async function generate(options) {\n try {\n await loadPalSdk();\n const loader = getOrCreateNonceLoader(options.allowStorage ?? true);\n const goog = window.goog;\n const request = new goog.pal.NonceRequest();\n request.adWillAutoPlay = options.adWillAutoPlay ?? true;\n request.adWillPlayMuted = options.adWillPlayMuted ?? false;\n request.playerVolume = options.playerVolume ?? (request.adWillPlayMuted ? 0 : 1);\n request.continuousPlayback = options.continuousPlayback ?? true;\n request.descriptionUrl = toDevSafeUrl(\n options.descriptionUrl || (typeof window !== \"undefined\" ? window.location.href : \"\")\n );\n request.iconsSupported = true;\n request.playerType = \"StormcloudVideoPlayer\";\n request.playerVersion = \"1.0\";\n request.supportedApiFrameworks = \"2,7,9\";\n request.url = toDevSafeUrl(\n options.descriptionUrl || (typeof window !== \"undefined\" ? window.location.href : \"\")\n );\n request.videoWidth = options.videoWidth || 640;\n request.videoHeight = options.videoHeight || 480;\n if (options.ppid) request.ppid = options.ppid;\n if (options.sessionId) request.sessionId = options.sessionId;\n console.log(\n \"[PAL] NonceRequest before generateNonce:\",\n JSON.stringify({\n adWillAutoPlay: request.adWillAutoPlay,\n adWillPlayMuted: request.adWillPlayMuted,\n playerVolume: request.playerVolume,\n continuousPlayback: request.continuousPlayback,\n descriptionUrl: request.descriptionUrl,\n iconsSupported: request.iconsSupported,\n playerType: request.playerType,\n playerVersion: request.playerVersion,\n supportedApiFrameworks: request.supportedApiFrameworks,\n url: request.url,\n videoWidth: request.videoWidth,\n videoHeight: request.videoHeight,\n ppid: request.ppid,\n sessionId: request.sessionId\n }, null, 2)\n );\n const manager = await loader.loadNonceManager(request);\n currentNonceManager = manager;\n currentNonce = manager.getNonce();\n console.log(\"[PAL] Nonce generated successfully\");\n return currentNonce;\n } catch (error) {\n console.warn(\"[PAL] Failed to generate nonce:\", error);\n currentNonce = \"\";\n currentNonceManager = void 0;\n return \"\";\n }\n }\n}\n// Annotate the CommonJS export names for ESM import in node:\n0 && (module.exports = {\n createPalNonceManager\n});\n"]}
|
package/lib/sdk/pal.d.cts
CHANGED
|
@@ -18,6 +18,7 @@ interface PalNonceOptions {
|
|
|
18
18
|
interface PalNonceManager {
|
|
19
19
|
generateNonce(options?: PalNonceOptions): Promise<string>;
|
|
20
20
|
getCurrentNonce(): string;
|
|
21
|
+
waitForNonce(maxWaitMs: number): Promise<string>;
|
|
21
22
|
injectNonce(vastTagUrl: string): string;
|
|
22
23
|
sendPlaybackStart(): void;
|
|
23
24
|
sendPlaybackEnd(): void;
|
package/lib/types.d.cts
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { AdPodConfig } from './player/OptimizedPodRequest.cjs';
|
|
2
|
+
|
|
1
3
|
type LateJoinPolicy = "play_remaining" | "skip_to_content";
|
|
2
4
|
interface AdBreak {
|
|
3
5
|
id?: string;
|
|
@@ -37,12 +39,13 @@ interface StormcloudVideoPlayerConfig {
|
|
|
37
39
|
vastTagUrl?: string;
|
|
38
40
|
isVmap?: boolean;
|
|
39
41
|
vmapUrl?: string;
|
|
40
|
-
vastMode?: 'adstorm' | 'default';
|
|
41
42
|
minSegmentsBeforePlay?: number;
|
|
42
43
|
ctvAdRequest?: boolean;
|
|
43
44
|
adTest?: boolean;
|
|
44
45
|
programTitle?: string;
|
|
45
46
|
channelName?: string;
|
|
47
|
+
contentNetwork?: string;
|
|
48
|
+
adPodConfig?: AdPodConfig;
|
|
46
49
|
podMaxAds?: number;
|
|
47
50
|
podMaxDurationMs?: number;
|
|
48
51
|
podExactDuration?: boolean;
|
|
@@ -84,6 +87,7 @@ interface Id3TagInfo {
|
|
|
84
87
|
type AdRequestSource = "gam" | "edge";
|
|
85
88
|
interface AdRequestOptions {
|
|
86
89
|
source?: AdRequestSource;
|
|
90
|
+
finalizeRequestUrl?: (vastTagUrl: string, attempt: number) => string;
|
|
87
91
|
}
|
|
88
92
|
interface AdController {
|
|
89
93
|
initialize: () => void;
|
|
@@ -181,6 +185,9 @@ interface TrackingData extends ClientInfo {
|
|
|
181
185
|
interface PlayerAnalyticsContext {
|
|
182
186
|
inputStreamType?: string;
|
|
183
187
|
debugAdTiming?: boolean;
|
|
188
|
+
contentNetwork?: string;
|
|
189
|
+
contentChannel?: string;
|
|
190
|
+
contentTitle?: string;
|
|
184
191
|
}
|
|
185
192
|
interface HeartbeatData {
|
|
186
193
|
browserId: string;
|
|
@@ -215,4 +222,4 @@ interface AdImpressionInfo {
|
|
|
215
222
|
timestamp: string;
|
|
216
223
|
}
|
|
217
224
|
|
|
218
|
-
export type
|
|
225
|
+
export { type AdBreak, type AdController, type AdControllerOptions, type AdDetectInfo, type AdFloorLadderConfig, type AdImpressionInfo, type AdLoadedInfo, AdPodConfig, type AdPosition, type AdRequestOptions, type AdRequestSource, type AdSchedule, type ClientInfo, type FloorLadderMode, type HeartbeatData, type Id3TagInfo, type ImaController, type ImaControllerOptions, type LateJoinPolicy, type PlayerAnalyticsContext, type Scte35Marker, type StormcloudApiResponse, type StormcloudVideoPlayerConfig, type TrackingData };
|