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
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["d:\\project\\stormcloud-vp\\lib\\player\\playerTypes.cjs"],"names":["__defProp","Object","defineProperty"],"mappings":"AAAA
|
|
1
|
+
{"version":3,"sources":["d:\\project\\stormcloud-vp\\lib\\player\\playerTypes.cjs"],"names":["__defProp","Object","defineProperty","__getOwnPropDesc","getOwnPropertyDescriptor","__getOwnPropNames","getOwnPropertyNames","__hasOwnProp","prototype","hasOwnProperty","__copyProps","to","from","except","desc","key","call","get","enumerable","__toCommonJS","mod","value","playerTypes_exports","module","exports"],"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,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,CAACR,aAAaS,IAAI,CAACL,IAAII,QAAQA,QAAQF,QACzCb,UAAUW,IAAII,KAAK;oBAAEE,KAAK,SAALA;+BAAWL,IAAI,CAACG,IAAI;;oBAAEG,YAAY,CAAEJ,CAAAA,OAAOX,iBAAiBS,MAAMG,IAAG,KAAMD,KAAKI,UAAU;gBAAC;;YAFpH,QAAK,YAAWb,kBAAkBO,0BAA7B,SAAA,6BAAA,QAAA,yBAAA;;YAAA;YAAA;;;qBAAA,6BAAA;oBAAA;;;oBAAA;0BAAA;;;;IAGP;IACA,OAAOD;AACT;AACA,IAAIQ,eAAe,sBAACC;WAAQV,YAAYV,UAAU,CAAC,GAAG,cAAc;QAAEqB,OAAO;IAAK,IAAID;;AAEtF,4BAA4B;AAC5B,IAAIE,sBAAsB,CAAC;AAC3BC,OAAOC,OAAO,GAAGL,aAAaG","sourcesContent":["\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\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/player/playerTypes.ts\nvar playerTypes_exports = {};\nmodule.exports = __toCommonJS(playerTypes_exports);\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["d:\\project\\stormcloud-vp\\lib\\players\\FilePlayer.cjs"],"names":[],"mappings":"AAAA","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/players/FilePlayer.tsx\nvar FilePlayer_exports = {};\n__export(FilePlayer_exports, {\n default: () => FilePlayer\n});\nmodule.exports = __toCommonJS(FilePlayer_exports);\nvar import_react = require(\"react\");\n\n// src/patterns.ts\nvar HLS_EXTENSIONS = /\\.(m3u8)($|\\?)/i;\nvar HLS_PATHS = /\\/hls\\//i;\nvar DASH_EXTENSIONS = /\\.(mpd)($|\\?)/i;\nvar VIDEO_EXTENSIONS = /\\.(mp4|webm|ogg|avi|mov|wmv|flv|mkv)($|\\?)/i;\nvar AUDIO_EXTENSIONS = /\\.(mp3|wav|ogg|aac|wma|flac|m4a)($|\\?)/i;\nvar canPlay = {\n hls: (url) => {\n if (!url || typeof url !== \"string\") return false;\n return HLS_EXTENSIONS.test(url) || HLS_PATHS.test(url);\n },\n dash: (url) => {\n if (!url || typeof url !== \"string\") return false;\n return DASH_EXTENSIONS.test(url);\n },\n video: (url) => {\n if (!url || typeof url !== \"string\") return false;\n return VIDEO_EXTENSIONS.test(url);\n },\n audio: (url) => {\n if (!url || typeof url !== \"string\") return false;\n return AUDIO_EXTENSIONS.test(url);\n },\n file: (url) => {\n if (!url || typeof url !== \"string\") return false;\n return VIDEO_EXTENSIONS.test(url) || AUDIO_EXTENSIONS.test(url);\n }\n};\n\n// src/players/FilePlayer.tsx\nvar FilePlayer = class extends import_react.Component {\n constructor() {\n super(...arguments);\n this.mounted = false;\n this.ready = false;\n this.load = () => {\n if (!this.props.videoElement || !this.props.src) return;\n const video = this.props.videoElement;\n const handleLoadedMetadata = () => {\n if (this.mounted && !this.ready) {\n this.ready = true;\n this.props.onReady?.();\n }\n };\n const handlePlay = () => {\n if (this.mounted) {\n this.props.onPlay?.();\n }\n };\n const handlePause = () => {\n if (this.mounted) {\n this.props.onPause?.();\n }\n };\n const handleEnded = () => {\n if (this.mounted) {\n this.props.onEnded?.();\n }\n };\n const handleError = (error) => {\n if (this.mounted) {\n this.props.onError?.(error);\n }\n };\n const handleLoadedData = () => {\n if (this.mounted) {\n this.props.onLoaded?.();\n }\n };\n video.addEventListener(\"loadedmetadata\", handleLoadedMetadata);\n video.addEventListener(\"play\", handlePlay);\n video.addEventListener(\"pause\", handlePause);\n video.addEventListener(\"ended\", handleEnded);\n video.addEventListener(\"error\", handleError);\n video.addEventListener(\"loadeddata\", handleLoadedData);\n video.src = this.props.src;\n if (this.props.autoplay !== void 0) video.autoplay = this.props.autoplay;\n if (this.props.muted !== void 0) video.muted = this.props.muted;\n if (this.props.loop !== void 0) video.loop = this.props.loop;\n if (this.props.controls !== void 0) video.controls = this.props.controls;\n if (this.props.playsInline !== void 0)\n video.playsInline = this.props.playsInline;\n if (this.props.preload !== void 0)\n video.preload = this.props.preload;\n if (this.props.poster !== void 0) video.poster = this.props.poster;\n this.props.onMount?.(this);\n return () => {\n video.removeEventListener(\"loadedmetadata\", handleLoadedMetadata);\n video.removeEventListener(\"play\", handlePlay);\n video.removeEventListener(\"pause\", handlePause);\n video.removeEventListener(\"ended\", handleEnded);\n video.removeEventListener(\"error\", handleError);\n video.removeEventListener(\"loadeddata\", handleLoadedData);\n };\n };\n this.play = () => {\n if (this.props.videoElement) {\n const video = this.props.videoElement;\n const hasValidSource = video.src || video.currentSrc && video.currentSrc !== \"\" || video.readyState >= 1;\n if (hasValidSource) {\n video.play()?.catch((error) => {\n console.error(\"[FilePlayer] Failed to play:\", error);\n this.props.onError?.(error);\n });\n } else {\n console.warn(\"[FilePlayer] Cannot play: video has no valid source\");\n }\n }\n };\n this.pause = () => {\n if (this.props.videoElement) {\n this.props.videoElement.pause();\n }\n };\n this.stop = () => {\n this.pause();\n if (this.props.videoElement) {\n this.props.videoElement.currentTime = 0;\n }\n };\n this.seekTo = (seconds, keepPlaying) => {\n if (this.props.videoElement) {\n this.props.videoElement.currentTime = seconds;\n if (!keepPlaying) {\n this.pause();\n }\n }\n };\n this.setVolume = (volume) => {\n if (this.props.videoElement) {\n this.props.videoElement.volume = Math.max(0, Math.min(1, volume));\n }\n };\n this.mute = () => {\n if (this.props.videoElement) {\n this.props.videoElement.muted = true;\n }\n };\n this.unmute = () => {\n if (this.props.videoElement) {\n this.props.videoElement.muted = false;\n }\n };\n this.setPlaybackRate = (rate) => {\n if (this.props.videoElement && rate > 0) {\n this.props.videoElement.playbackRate = rate;\n }\n };\n this.setLoop = (loop) => {\n if (this.props.videoElement) {\n this.props.videoElement.loop = loop;\n }\n };\n this.getDuration = () => {\n if (this.props.videoElement && isFinite(this.props.videoElement.duration)) {\n return this.props.videoElement.duration;\n }\n return null;\n };\n this.getCurrentTime = () => {\n if (this.props.videoElement && isFinite(this.props.videoElement.currentTime)) {\n return this.props.videoElement.currentTime;\n }\n return null;\n };\n this.getSecondsLoaded = () => {\n if (this.props.videoElement && this.props.videoElement.buffered.length > 0) {\n return this.props.videoElement.buffered.end(\n this.props.videoElement.buffered.length - 1\n );\n }\n return null;\n };\n this.getInternalPlayer = (key = \"player\") => {\n if (key === \"video\") return this.props.videoElement;\n return null;\n };\n this.enablePIP = async () => {\n if (this.props.videoElement && \"requestPictureInPicture\" in this.props.videoElement) {\n try {\n await this.props.videoElement.requestPictureInPicture();\n } catch (error) {\n console.warn(\"Picture-in-Picture failed:\", error);\n }\n }\n };\n this.disablePIP = async () => {\n if (document.pictureInPictureElement) {\n try {\n await document.exitPictureInPicture();\n } catch (error) {\n console.warn(\"Exit Picture-in-Picture failed:\", error);\n }\n }\n };\n }\n componentDidMount() {\n this.mounted = true;\n this.load();\n }\n componentWillUnmount() {\n this.mounted = false;\n }\n componentDidUpdate(prevProps) {\n if (prevProps.src !== this.props.src) {\n this.load();\n }\n }\n render() {\n return null;\n }\n};\nFilePlayer.displayName = \"FilePlayer\";\nFilePlayer.canPlay = canPlay.file;\n"]}
|
|
1
|
+
{"version":3,"sources":["d:\\project\\stormcloud-vp\\lib\\players\\FilePlayer.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","FilePlayer_exports","default","FilePlayer","module","exports","import_react","require","HLS_EXTENSIONS","HLS_PATHS","DASH_EXTENSIONS","VIDEO_EXTENSIONS","AUDIO_EXTENSIONS","canPlay","hls","url","test","dash","video","audio","file","arguments","mounted","ready","load","props","videoElement","src","handleLoadedMetadata","onReady","handlePlay","onPlay","handlePause","onPause","handleEnded","onEnded","handleError","error","onError","handleLoadedData","onLoaded","addEventListener","autoplay","muted","loop","controls","playsInline","preload","poster","onMount","removeEventListener","play","hasValidSource","currentSrc","readyState","catch","console","warn","pause","stop","currentTime","seekTo","seconds","keepPlaying","setVolume","volume","Math","max","min","mute","unmute","setPlaybackRate","rate","playbackRate","setLoop","getDuration","isFinite","duration","getCurrentTime","getSecondsLoaded","buffered","length","end","getInternalPlayer","enablePIP","requestPictureInPicture","disablePIP","document","pictureInPictureElement","exitPictureInPicture","componentDidMount","componentWillUnmount","componentDidUpdate","prevProps","render","Component","displayName"],"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/players/FilePlayer.tsx\nvar FilePlayer_exports = {};\n__export(FilePlayer_exports, {\n default: () => FilePlayer\n});\nmodule.exports = __toCommonJS(FilePlayer_exports);\nvar import_react = require(\"react\");\n\n// src/patterns.ts\nvar HLS_EXTENSIONS = /\\.(m3u8)($|\\?)/i;\nvar HLS_PATHS = /\\/hls\\//i;\nvar DASH_EXTENSIONS = /\\.(mpd)($|\\?)/i;\nvar VIDEO_EXTENSIONS = /\\.(mp4|webm|ogg|avi|mov|wmv|flv|mkv)($|\\?)/i;\nvar AUDIO_EXTENSIONS = /\\.(mp3|wav|ogg|aac|wma|flac|m4a)($|\\?)/i;\nvar canPlay = {\n hls: (url) => {\n if (!url || typeof url !== \"string\") return false;\n return HLS_EXTENSIONS.test(url) || HLS_PATHS.test(url);\n },\n dash: (url) => {\n if (!url || typeof url !== \"string\") return false;\n return DASH_EXTENSIONS.test(url);\n },\n video: (url) => {\n if (!url || typeof url !== \"string\") return false;\n return VIDEO_EXTENSIONS.test(url);\n },\n audio: (url) => {\n if (!url || typeof url !== \"string\") return false;\n return AUDIO_EXTENSIONS.test(url);\n },\n file: (url) => {\n if (!url || typeof url !== \"string\") return false;\n return VIDEO_EXTENSIONS.test(url) || AUDIO_EXTENSIONS.test(url);\n }\n};\n\n// src/players/FilePlayer.tsx\nvar FilePlayer = class extends import_react.Component {\n constructor() {\n super(...arguments);\n this.mounted = false;\n this.ready = false;\n this.load = () => {\n if (!this.props.videoElement || !this.props.src) return;\n const video = this.props.videoElement;\n const handleLoadedMetadata = () => {\n if (this.mounted && !this.ready) {\n this.ready = true;\n this.props.onReady?.();\n }\n };\n const handlePlay = () => {\n if (this.mounted) {\n this.props.onPlay?.();\n }\n };\n const handlePause = () => {\n if (this.mounted) {\n this.props.onPause?.();\n }\n };\n const handleEnded = () => {\n if (this.mounted) {\n this.props.onEnded?.();\n }\n };\n const handleError = (error) => {\n if (this.mounted) {\n this.props.onError?.(error);\n }\n };\n const handleLoadedData = () => {\n if (this.mounted) {\n this.props.onLoaded?.();\n }\n };\n video.addEventListener(\"loadedmetadata\", handleLoadedMetadata);\n video.addEventListener(\"play\", handlePlay);\n video.addEventListener(\"pause\", handlePause);\n video.addEventListener(\"ended\", handleEnded);\n video.addEventListener(\"error\", handleError);\n video.addEventListener(\"loadeddata\", handleLoadedData);\n video.src = this.props.src;\n if (this.props.autoplay !== void 0) video.autoplay = this.props.autoplay;\n if (this.props.muted !== void 0) video.muted = this.props.muted;\n if (this.props.loop !== void 0) video.loop = this.props.loop;\n if (this.props.controls !== void 0) video.controls = this.props.controls;\n if (this.props.playsInline !== void 0)\n video.playsInline = this.props.playsInline;\n if (this.props.preload !== void 0)\n video.preload = this.props.preload;\n if (this.props.poster !== void 0) video.poster = this.props.poster;\n this.props.onMount?.(this);\n return () => {\n video.removeEventListener(\"loadedmetadata\", handleLoadedMetadata);\n video.removeEventListener(\"play\", handlePlay);\n video.removeEventListener(\"pause\", handlePause);\n video.removeEventListener(\"ended\", handleEnded);\n video.removeEventListener(\"error\", handleError);\n video.removeEventListener(\"loadeddata\", handleLoadedData);\n };\n };\n this.play = () => {\n if (this.props.videoElement) {\n const video = this.props.videoElement;\n const hasValidSource = video.src || video.currentSrc && video.currentSrc !== \"\" || video.readyState >= 1;\n if (hasValidSource) {\n video.play()?.catch((error) => {\n console.error(\"[FilePlayer] Failed to play:\", error);\n this.props.onError?.(error);\n });\n } else {\n console.warn(\"[FilePlayer] Cannot play: video has no valid source\");\n }\n }\n };\n this.pause = () => {\n if (this.props.videoElement) {\n this.props.videoElement.pause();\n }\n };\n this.stop = () => {\n this.pause();\n if (this.props.videoElement) {\n this.props.videoElement.currentTime = 0;\n }\n };\n this.seekTo = (seconds, keepPlaying) => {\n if (this.props.videoElement) {\n this.props.videoElement.currentTime = seconds;\n if (!keepPlaying) {\n this.pause();\n }\n }\n };\n this.setVolume = (volume) => {\n if (this.props.videoElement) {\n this.props.videoElement.volume = Math.max(0, Math.min(1, volume));\n }\n };\n this.mute = () => {\n if (this.props.videoElement) {\n this.props.videoElement.muted = true;\n }\n };\n this.unmute = () => {\n if (this.props.videoElement) {\n this.props.videoElement.muted = false;\n }\n };\n this.setPlaybackRate = (rate) => {\n if (this.props.videoElement && rate > 0) {\n this.props.videoElement.playbackRate = rate;\n }\n };\n this.setLoop = (loop) => {\n if (this.props.videoElement) {\n this.props.videoElement.loop = loop;\n }\n };\n this.getDuration = () => {\n if (this.props.videoElement && isFinite(this.props.videoElement.duration)) {\n return this.props.videoElement.duration;\n }\n return null;\n };\n this.getCurrentTime = () => {\n if (this.props.videoElement && isFinite(this.props.videoElement.currentTime)) {\n return this.props.videoElement.currentTime;\n }\n return null;\n };\n this.getSecondsLoaded = () => {\n if (this.props.videoElement && this.props.videoElement.buffered.length > 0) {\n return this.props.videoElement.buffered.end(\n this.props.videoElement.buffered.length - 1\n );\n }\n return null;\n };\n this.getInternalPlayer = (key = \"player\") => {\n if (key === \"video\") return this.props.videoElement;\n return null;\n };\n this.enablePIP = async () => {\n if (this.props.videoElement && \"requestPictureInPicture\" in this.props.videoElement) {\n try {\n await this.props.videoElement.requestPictureInPicture();\n } catch (error) {\n console.warn(\"Picture-in-Picture failed:\", error);\n }\n }\n };\n this.disablePIP = async () => {\n if (document.pictureInPictureElement) {\n try {\n await document.exitPictureInPicture();\n } catch (error) {\n console.warn(\"Exit Picture-in-Picture failed:\", error);\n }\n }\n };\n }\n componentDidMount() {\n this.mounted = true;\n this.load();\n }\n componentWillUnmount() {\n this.mounted = false;\n }\n componentDidUpdate(prevProps) {\n if (prevProps.src !== this.props.src) {\n this.load();\n }\n }\n render() {\n return null;\n }\n};\nFilePlayer.displayName = \"FilePlayer\";\nFilePlayer.canPlay = canPlay.file;\n"]}
|
|
@@ -2862,6 +2862,7 @@ function toDevSafeUrl(rawUrl) {
|
|
|
2862
2862
|
// src/sdk/pal.ts
|
|
2863
2863
|
var PAL_SDK_URL = "https://imasdk.googleapis.com/pal/sdkloader/pal.js";
|
|
2864
2864
|
var _nonceLoader;
|
|
2865
|
+
var _nonceLoaderAllowStorage;
|
|
2865
2866
|
var _palLoadPromise;
|
|
2866
2867
|
function loadPalSdk() {
|
|
2867
2868
|
var _window_goog;
|
|
@@ -2904,12 +2905,15 @@ function loadPalSdk() {
|
|
|
2904
2905
|
});
|
|
2905
2906
|
return _palLoadPromise;
|
|
2906
2907
|
}
|
|
2907
|
-
function getOrCreateNonceLoader() {
|
|
2908
|
-
if (_nonceLoader)
|
|
2908
|
+
function getOrCreateNonceLoader(allowStorage) {
|
|
2909
|
+
if (_nonceLoader && _nonceLoaderAllowStorage === allowStorage) {
|
|
2910
|
+
return _nonceLoader;
|
|
2911
|
+
}
|
|
2909
2912
|
var goog = window.goog;
|
|
2910
2913
|
var consentSettings = new goog.pal.ConsentSettings();
|
|
2911
|
-
consentSettings.allowStorage =
|
|
2914
|
+
consentSettings.allowStorage = allowStorage;
|
|
2912
2915
|
_nonceLoader = new goog.pal.NonceLoader(consentSettings);
|
|
2916
|
+
_nonceLoaderAllowStorage = allowStorage;
|
|
2913
2917
|
return _nonceLoader;
|
|
2914
2918
|
}
|
|
2915
2919
|
function createPalNonceManager() {
|
|
@@ -2918,7 +2922,7 @@ function createPalNonceManager() {
|
|
|
2918
2922
|
return {
|
|
2919
2923
|
generateNonce: function generateNonce() {
|
|
2920
2924
|
return _async_to_generator(function() {
|
|
2921
|
-
var options, _options_adWillAutoPlay, _options_adWillPlayMuted, _options_playerVolume, _options_continuousPlayback, loader, goog, request, manager, error;
|
|
2925
|
+
var options, _options_allowStorage, _options_adWillAutoPlay, _options_adWillPlayMuted, _options_playerVolume, _options_continuousPlayback, loader, goog, request, manager, error;
|
|
2922
2926
|
var _arguments = arguments;
|
|
2923
2927
|
return _ts_generator(this, function(_state) {
|
|
2924
2928
|
switch(_state.label){
|
|
@@ -2938,7 +2942,7 @@ function createPalNonceManager() {
|
|
|
2938
2942
|
];
|
|
2939
2943
|
case 2:
|
|
2940
2944
|
_state.sent();
|
|
2941
|
-
loader = getOrCreateNonceLoader();
|
|
2945
|
+
loader = getOrCreateNonceLoader((_options_allowStorage = options.allowStorage) !== null && _options_allowStorage !== void 0 ? _options_allowStorage : true);
|
|
2942
2946
|
goog = window.goog;
|
|
2943
2947
|
request = new goog.pal.NonceRequest();
|
|
2944
2948
|
request.adWillAutoPlay = (_options_adWillAutoPlay = options.adWillAutoPlay) !== null && _options_adWillAutoPlay !== void 0 ? _options_adWillAutoPlay : true;
|
|
@@ -3123,6 +3127,8 @@ function ingestPlayerTracking(licenseKey, channel, body) {
|
|
|
3123
3127
|
}
|
|
3124
3128
|
// src/utils/vastEnvironmentSignals.ts
|
|
3125
3129
|
var CTV_SESSION_STORAGE_KEY = "stormcloud.ctv.sid";
|
|
3130
|
+
var WEB_SESSION_STORAGE_KEY = "stormcloud.web.sid";
|
|
3131
|
+
var inMemoryWebSessionId;
|
|
3126
3132
|
var PLAYER_ID_STORAGE_KEY = "stormcloud.player.id";
|
|
3127
3133
|
var DEVICE_ID_STORAGE_KEYS = [
|
|
3128
3134
|
"rdid",
|
|
@@ -3144,7 +3150,7 @@ function resolveVastEnvironmentSignals(isCtv) {
|
|
|
3144
3150
|
var _ref;
|
|
3145
3151
|
var bridgeSignals = readNativeBridgeSignals();
|
|
3146
3152
|
var platformDevice = readPlatformNativeDeviceId();
|
|
3147
|
-
var realDeviceId = bridgeSignals.deviceId || readStoredDeviceId() || platformDevice.deviceId;
|
|
3153
|
+
var realDeviceId = bridgeSignals.deviceId || (isCtv ? readStoredDeviceId() : void 0) || platformDevice.deviceId;
|
|
3148
3154
|
var deviceId = realDeviceId;
|
|
3149
3155
|
var deviceIdType = bridgeSignals.deviceIdType || readStoredString("deviceIdType") || readStoredString("idtype") || platformDevice.deviceIdType || inferDeviceIdType();
|
|
3150
3156
|
var platformLat = bridgeSignals.deviceId ? bridgeSignals.limitAdTracking : platformDevice.limitAdTracking;
|
|
@@ -3173,9 +3179,12 @@ function resolveVastEnvironmentSignals(isCtv) {
|
|
|
3173
3179
|
deviceTypeHint: deviceTypeHint
|
|
3174
3180
|
});
|
|
3175
3181
|
}
|
|
3182
|
+
var webSessionId = getOrCreateWebSessionId();
|
|
3176
3183
|
return _object_spread_props(_object_spread({
|
|
3177
3184
|
isCtv: false
|
|
3178
|
-
},
|
|
3185
|
+
}, webSessionId ? {
|
|
3186
|
+
sessionId: webSessionId
|
|
3187
|
+
} : {}, deviceId ? {
|
|
3179
3188
|
deviceId: deviceId
|
|
3180
3189
|
} : {}, deviceId && deviceIdType ? {
|
|
3181
3190
|
deviceIdType: deviceIdType
|
|
@@ -3216,7 +3225,7 @@ var GAME_CONSOLE_UA = /PlayStation|Xbox|Nintendo/i;
|
|
|
3216
3225
|
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;
|
|
3217
3226
|
var FEATURE_PHONE_UA = /KAIOS|MIDP|J2ME|Series40|Opera Mini/i;
|
|
3218
3227
|
function resolveDeviceTypeHint(isCtv) {
|
|
3219
|
-
var override = readDeviceTypeHintOverride();
|
|
3228
|
+
var override = readDeviceTypeHintOverride(isCtv);
|
|
3220
3229
|
if (override != null) return override;
|
|
3221
3230
|
return inferDeviceTypeHint(isCtv);
|
|
3222
3231
|
}
|
|
@@ -3243,7 +3252,7 @@ function inferDeviceTypeHint(isCtv) {
|
|
|
3243
3252
|
if (/Mobile|Windows Phone|BlackBerry/i.test(ua)) return DEVICE_TYPE_HINT.SMARTPHONE;
|
|
3244
3253
|
return fallback;
|
|
3245
3254
|
}
|
|
3246
|
-
function readDeviceTypeHintOverride() {
|
|
3255
|
+
function readDeviceTypeHintOverride(isCtv) {
|
|
3247
3256
|
if (typeof window === "undefined") return void 0;
|
|
3248
3257
|
var keys = [
|
|
3249
3258
|
"dth",
|
|
@@ -3292,6 +3301,7 @@ function readDeviceTypeHintOverride() {
|
|
|
3292
3301
|
}
|
|
3293
3302
|
}
|
|
3294
3303
|
}
|
|
3304
|
+
if (!isCtv) return void 0;
|
|
3295
3305
|
for(var _i = 0, _iter = [
|
|
3296
3306
|
"stormcloud.dth",
|
|
3297
3307
|
"dth"
|
|
@@ -3340,9 +3350,10 @@ function isEquivalentDeviceIdType(tagType, runtimeType) {
|
|
|
3340
3350
|
return ANDROID_ID_TYPES.has(tag) && ANDROID_ID_TYPES.has(runtime);
|
|
3341
3351
|
}
|
|
3342
3352
|
function resolveNativeDeviceId() {
|
|
3353
|
+
var includeStored = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : true;
|
|
3343
3354
|
var bridgeSignals = readNativeBridgeSignals();
|
|
3344
3355
|
var platformDevice = readPlatformNativeDeviceId();
|
|
3345
|
-
var deviceId = bridgeSignals.deviceId || readStoredDeviceId() || platformDevice.deviceId;
|
|
3356
|
+
var deviceId = bridgeSignals.deviceId || (includeStored ? readStoredDeviceId() : void 0) || platformDevice.deviceId;
|
|
3346
3357
|
if (!deviceId || isMacroPlaceholder(deviceId) || isZeroedAdId(deviceId)) {
|
|
3347
3358
|
return void 0;
|
|
3348
3359
|
}
|
|
@@ -3371,6 +3382,21 @@ function getOrCreateCtvSessionId() {
|
|
|
3371
3382
|
writePersistentId(CTV_SESSION_STORAGE_KEY, sessionId);
|
|
3372
3383
|
return sessionId;
|
|
3373
3384
|
}
|
|
3385
|
+
function getOrCreateWebSessionId() {
|
|
3386
|
+
if (typeof window === "undefined") return void 0;
|
|
3387
|
+
try {
|
|
3388
|
+
var _window_sessionStorage;
|
|
3389
|
+
var existing = (_window_sessionStorage = window.sessionStorage) === null || _window_sessionStorage === void 0 ? void 0 : _window_sessionStorage.getItem(WEB_SESSION_STORAGE_KEY);
|
|
3390
|
+
if (existing && !isMacroPlaceholder(existing)) return existing;
|
|
3391
|
+
} catch (unused) {}
|
|
3392
|
+
var sessionId = inMemoryWebSessionId || createUuid();
|
|
3393
|
+
inMemoryWebSessionId = sessionId;
|
|
3394
|
+
try {
|
|
3395
|
+
var _window_sessionStorage1;
|
|
3396
|
+
(_window_sessionStorage1 = window.sessionStorage) === null || _window_sessionStorage1 === void 0 ? void 0 : _window_sessionStorage1.setItem(WEB_SESSION_STORAGE_KEY, sessionId);
|
|
3397
|
+
} catch (unused) {}
|
|
3398
|
+
return sessionId;
|
|
3399
|
+
}
|
|
3374
3400
|
function readPersistentId(storageKey) {
|
|
3375
3401
|
return readStoredString(storageKey) || readCookie(storageKey);
|
|
3376
3402
|
}
|
|
@@ -3972,7 +3998,7 @@ function sha256Hex(input) {
|
|
|
3972
3998
|
})();
|
|
3973
3999
|
}
|
|
3974
4000
|
function resolvePlayerIdentitySeed(clientInfo) {
|
|
3975
|
-
var nativeDeviceId = resolveNativeDeviceId();
|
|
4001
|
+
var nativeDeviceId = resolveNativeDeviceId(clientInfo.isSmartTV);
|
|
3976
4002
|
if (nativeDeviceId) {
|
|
3977
4003
|
return "device:".concat(nativeDeviceId);
|
|
3978
4004
|
}
|
|
@@ -4741,6 +4767,12 @@ function applyDeviceIdentityParams(params, ctx) {
|
|
|
4741
4767
|
params.set("is_lat", latValue !== null && latValue !== void 0 ? latValue : isMacroPlaceholder2(tagLat) ? "0" : tagLat);
|
|
4742
4768
|
return;
|
|
4743
4769
|
}
|
|
4770
|
+
if (!ctx.isCtv) {
|
|
4771
|
+
params.delete("rdid");
|
|
4772
|
+
params.delete("idtype");
|
|
4773
|
+
params.delete("is_lat");
|
|
4774
|
+
return;
|
|
4775
|
+
}
|
|
4744
4776
|
var tagRdidValid = Boolean(tagRdid && !isMacroPlaceholder2(tagRdid));
|
|
4745
4777
|
var tagTypeValid = Boolean(tagType && !isMacroPlaceholder2(tagType));
|
|
4746
4778
|
if (tagRdidValid && tagTypeValid && runtimeType && !isEquivalentDeviceIdType(tagType, runtimeType)) {
|
|
@@ -4895,15 +4927,24 @@ function applyVastMacros(baseUrl, ctx) {
|
|
|
4895
4927
|
if (ctx.podMaxAds != null) {
|
|
4896
4928
|
params.set("pmad", String(Math.max(1, Math.round(ctx.podMaxAds))));
|
|
4897
4929
|
}
|
|
4898
|
-
if (!ctx.isCtv && ctx.pageUrl) {
|
|
4899
|
-
params.set("url", ctx.pageUrl);
|
|
4900
|
-
params.set("description_url", ctx.pageUrl);
|
|
4901
|
-
}
|
|
4902
4930
|
var existingUrl = params.get("url") || "";
|
|
4903
4931
|
if (EXAMPLE_COM_URL.test(existingUrl)) {
|
|
4904
4932
|
params.delete("url");
|
|
4905
4933
|
params.delete("description_url");
|
|
4906
4934
|
}
|
|
4935
|
+
if (!ctx.isCtv && ctx.pageUrl) {
|
|
4936
|
+
if (isMacroPlaceholder2(params.get("url"))) {
|
|
4937
|
+
params.set("url", ctx.pageUrl);
|
|
4938
|
+
}
|
|
4939
|
+
if (isMacroPlaceholder2(params.get("description_url"))) {
|
|
4940
|
+
params.set("description_url", params.get("url") || ctx.pageUrl);
|
|
4941
|
+
}
|
|
4942
|
+
}
|
|
4943
|
+
if (!ctx.isCtv) {
|
|
4944
|
+
params.delete("an");
|
|
4945
|
+
params.delete("msid");
|
|
4946
|
+
params.delete("sid");
|
|
4947
|
+
}
|
|
4907
4948
|
if (ctx.adWillPlayMuted != null) {
|
|
4908
4949
|
params.set("vpmute", ctx.adWillPlayMuted ? "1" : "0");
|
|
4909
4950
|
}
|
|
@@ -4937,6 +4978,9 @@ function applyVastMacros(baseUrl, ctx) {
|
|
|
4937
4978
|
if (ctx.programTitle) {
|
|
4938
4979
|
params.set("ct_ti", ctx.programTitle);
|
|
4939
4980
|
}
|
|
4981
|
+
if (ctx.channelName) {
|
|
4982
|
+
params.set("ct_ch", ctx.channelName);
|
|
4983
|
+
}
|
|
4940
4984
|
var staleKeys = [];
|
|
4941
4985
|
params.forEach(function(value, key) {
|
|
4942
4986
|
if (isMacroPlaceholder2(value)) {
|
|
@@ -4989,8 +5033,10 @@ function fetchConsentSignals() {
|
|
|
4989
5033
|
tcfApi("addEventListener", 2, function(tcData, success) {
|
|
4990
5034
|
if (settled) return;
|
|
4991
5035
|
if (success && tcData && (tcData.eventStatus === "tcloaded" || tcData.eventStatus === "useractioncomplete")) {
|
|
5036
|
+
var _tcData_purpose_consents, _tcData_purpose;
|
|
4992
5037
|
settled = true;
|
|
4993
5038
|
signals.gdpr = tcData.gdprApplies ? "1" : "0";
|
|
5039
|
+
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;
|
|
4994
5040
|
if (typeof tcData.tcString === "string" && tcData.tcString) {
|
|
4995
5041
|
signals.gdprConsent = tcData.tcString;
|
|
4996
5042
|
}
|
|
@@ -6523,7 +6569,7 @@ var AdConfigManager = /*#__PURE__*/ function() {
|
|
|
6523
6569
|
pageUrl: !envSignals.isCtv && typeof window !== "undefined" ? toDevSafeUrl(window.location.href) : void 0,
|
|
6524
6570
|
adWillPlayMuted: adWillPlayMuted,
|
|
6525
6571
|
adWillAutoPlay: !!this.config.autoplay,
|
|
6526
|
-
sessionId: envSignals.sessionId,
|
|
6572
|
+
sessionId: envSignals.isCtv || this.consentSignals.storageAllowed !== false ? envSignals.sessionId : void 0,
|
|
6527
6573
|
deviceId: envSignals.deviceId,
|
|
6528
6574
|
deviceIdType: envSignals.deviceIdType,
|
|
6529
6575
|
limitAdTracking: envSignals.limitAdTracking,
|
|
@@ -6531,6 +6577,8 @@ var AdConfigManager = /*#__PURE__*/ function() {
|
|
|
6531
6577
|
adTest: this.config.adTest
|
|
6532
6578
|
}, this.config.programTitle ? {
|
|
6533
6579
|
programTitle: this.config.programTitle
|
|
6580
|
+
} : {}, this.config.channelName ? {
|
|
6581
|
+
channelName: this.config.channelName
|
|
6534
6582
|
} : {}), {
|
|
6535
6583
|
consent: this.consentSignals
|
|
6536
6584
|
}));
|
|
@@ -9651,7 +9699,7 @@ var StormcloudVideoPlayer = /*#__PURE__*/ function() {
|
|
|
9651
9699
|
// ───────────────────────────────────────────────────────────────
|
|
9652
9700
|
function load() {
|
|
9653
9701
|
return _async_to_generator(function() {
|
|
9654
|
-
var _this,
|
|
9702
|
+
var _this, error, palDescriptionUrl, continueLiveStreamDuringAds;
|
|
9655
9703
|
return _ts_generator(this, function(_state) {
|
|
9656
9704
|
switch(_state.label){
|
|
9657
9705
|
case 0:
|
|
@@ -9687,19 +9735,25 @@ var StormcloudVideoPlayer = /*#__PURE__*/ function() {
|
|
|
9687
9735
|
4
|
|
9688
9736
|
];
|
|
9689
9737
|
case 4:
|
|
9690
|
-
palDescriptionUrl = this.adConfig.getPalDescriptionUrl();
|
|
9691
|
-
|
|
9692
|
-
|
|
9693
|
-
|
|
9694
|
-
|
|
9695
|
-
adWillPlayMuted: true,
|
|
9696
|
-
playerVolume: 0,
|
|
9697
|
-
continuousPlayback: (_this_config_lowLatencyMode = this.config.lowLatencyMode) !== null && _this_config_lowLatencyMode !== void 0 ? _this_config_lowLatencyMode : false
|
|
9698
|
-
}, palDescriptionUrl ? {
|
|
9699
|
-
descriptionUrl: palDescriptionUrl
|
|
9700
|
-
} : {})).catch(function() {});
|
|
9701
|
-
fetchConsentSignals().then(function(signals) {
|
|
9738
|
+
palDescriptionUrl = this.config.ctvAdRequest ? this.adConfig.getPalDescriptionUrl() : void 0;
|
|
9739
|
+
fetchConsentSignals().catch(function() {
|
|
9740
|
+
return {};
|
|
9741
|
+
}).then(function(signals) {
|
|
9742
|
+
var _this_config_lowLatencyMode;
|
|
9702
9743
|
_this.adConfig.consentSignals = signals;
|
|
9744
|
+
var muted = _this.video.muted;
|
|
9745
|
+
return _this.palNonce.generateNonce(_object_spread({
|
|
9746
|
+
videoWidth: _this.video.offsetWidth || _this.video.clientWidth || 640,
|
|
9747
|
+
videoHeight: _this.video.offsetHeight || _this.video.clientHeight || 480,
|
|
9748
|
+
adWillAutoPlay: !!_this.config.autoplay,
|
|
9749
|
+
adWillPlayMuted: muted,
|
|
9750
|
+
playerVolume: muted ? 0 : _this.video.volume,
|
|
9751
|
+
continuousPlayback: (_this_config_lowLatencyMode = _this.config.lowLatencyMode) !== null && _this_config_lowLatencyMode !== void 0 ? _this_config_lowLatencyMode : false
|
|
9752
|
+
}, palDescriptionUrl ? {
|
|
9753
|
+
descriptionUrl: palDescriptionUrl
|
|
9754
|
+
} : {}, signals.storageAllowed != null ? {
|
|
9755
|
+
allowStorage: signals.storageAllowed
|
|
9756
|
+
} : {}));
|
|
9703
9757
|
}).catch(function() {});
|
|
9704
9758
|
this.adConfig.initializeTracking();
|
|
9705
9759
|
if (!this.hlsEngine.shouldUseNativeHls(function() {
|