stormcloud-video-player 0.8.73 → 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.
Files changed (61) hide show
  1. package/README.md +10 -70
  2. package/dist/stormcloud-vp.min.js +1 -1
  3. package/lib/Player.d.cts +1 -0
  4. package/lib/StormcloudPlayer.cjs +987 -273
  5. package/lib/StormcloudPlayer.cjs.map +1 -1
  6. package/lib/StormcloudPlayer.d.cts +1 -0
  7. package/lib/index.cjs +998 -278
  8. package/lib/index.cjs.map +1 -1
  9. package/lib/index.d.cts +1 -0
  10. package/lib/index.d.ts +40 -3
  11. package/lib/index.js +991 -279
  12. package/lib/index.js.map +1 -1
  13. package/lib/player/AdBreakOrchestrator.cjs +767 -67
  14. package/lib/player/AdBreakOrchestrator.cjs.map +1 -1
  15. package/lib/player/AdBreakOrchestrator.d.cts +7 -9
  16. package/lib/player/AdConfigManager.cjs +314 -62
  17. package/lib/player/AdConfigManager.cjs.map +1 -1
  18. package/lib/player/AdConfigManager.d.cts +7 -12
  19. package/lib/player/AdTimingService.cjs +37 -1
  20. package/lib/player/AdTimingService.cjs.map +1 -1
  21. package/lib/player/AdTimingService.d.cts +8 -1
  22. package/lib/player/EdgePodRequest.d.cts +1 -0
  23. package/lib/player/FloorLadder.d.cts +1 -0
  24. package/lib/player/HlsEngine.d.cts +1 -0
  25. package/lib/player/OptimizedPodRequest.cjs +719 -0
  26. package/lib/player/OptimizedPodRequest.cjs.map +1 -0
  27. package/lib/player/OptimizedPodRequest.d.cts +101 -0
  28. package/lib/player/PlayerControls.d.cts +1 -0
  29. package/lib/player/Scte35CueManager.d.cts +1 -0
  30. package/lib/player/Scte35Parser.d.cts +1 -0
  31. package/lib/player/StormcloudVideoPlayer.cjs +987 -273
  32. package/lib/player/StormcloudVideoPlayer.cjs.map +1 -1
  33. package/lib/player/StormcloudVideoPlayer.d.cts +1 -0
  34. package/lib/player/playerTypes.d.cts +1 -0
  35. package/lib/players/HlsPlayer.cjs +987 -273
  36. package/lib/players/HlsPlayer.cjs.map +1 -1
  37. package/lib/players/HlsPlayer.d.cts +1 -0
  38. package/lib/players/index.cjs +987 -273
  39. package/lib/players/index.cjs.map +1 -1
  40. package/lib/props.d.cts +1 -0
  41. package/lib/sdk/hlsAdPlayer.cjs +316 -51
  42. package/lib/sdk/hlsAdPlayer.cjs.map +1 -1
  43. package/lib/sdk/hlsAdPlayer.d.cts +3 -1
  44. package/lib/sdk/pal.cjs +108 -83
  45. package/lib/sdk/pal.cjs.map +1 -1
  46. package/lib/sdk/pal.d.cts +1 -0
  47. package/lib/types.d.cts +9 -2
  48. package/lib/ui/StormcloudVideoPlayer.cjs +990 -278
  49. package/lib/ui/StormcloudVideoPlayer.cjs.map +1 -1
  50. package/lib/ui/StormcloudVideoPlayer.d.cts +1 -0
  51. package/lib/utils/ctvVastSignals.cjs +9 -7
  52. package/lib/utils/ctvVastSignals.cjs.map +1 -1
  53. package/lib/utils/tracking.cjs +17 -3
  54. package/lib/utils/tracking.cjs.map +1 -1
  55. package/lib/utils/tracking.d.cts +2 -1
  56. package/lib/utils/vastEnvironmentSignals.cjs +9 -7
  57. package/lib/utils/vastEnvironmentSignals.cjs.map +1 -1
  58. package/lib/utils/vastMacros.cjs +250 -10
  59. package/lib/utils/vastMacros.cjs.map +1 -1
  60. package/lib/utils/vastMacros.d.cts +13 -4
  61. package/package.json +5 -3
package/lib/index.d.cts CHANGED
@@ -2,6 +2,7 @@ export { StormcloudVideoPlayerComponent, StormcloudVideoPlayerProps, StormcloudV
2
2
  export { default as StormcloudPlayer, createStormcloudPlayer } from './StormcloudPlayer.cjs';
3
3
  export { StormcloudVideoPlayer } from './player/StormcloudVideoPlayer.cjs';
4
4
  export { AdBreak, AdController, AdControllerOptions, AdDetectInfo, AdFloorLadderConfig, AdImpressionInfo, AdLoadedInfo, AdPosition, AdSchedule, ClientInfo, FloorLadderMode, HeartbeatData, ImaController, ImaControllerOptions, LateJoinPolicy, PlayerAnalyticsContext, StormcloudVideoPlayerConfig, TrackingData } from './types.cjs';
5
+ export { AdPodConfig, DEFAULT_REQUEST_SAFETY_MS, GAM_AD_OPPORTUNITY_DURATION_MS, OptimizedPodDiagnostics, PodResponseDiagnostics } from './player/OptimizedPodRequest.cjs';
5
6
  export { DEFAULT_FLOOR_LADDER_BOUNDS, DEFAULT_WEB_FLOOR_LADDER_CONFIG, FloorLadderBounds, FloorLadderValidationReport, FloorSelectionContext, FloorSelector, FloorSelectorResult, FloorSource, FloorValidation, OpportunityFloor, fixedFloorSelector, generateFloorLevels, resolveFloorLadderBounds, validateFloorCents, validateFloorLadderConfig } from './player/FloorLadder.cjs';
6
7
  export { BaseStormcloudPlayerProps, OnProgressProps } from './props.cjs';
7
8
  export { canPlay } from './patterns.cjs';
package/lib/index.d.ts CHANGED
@@ -2,6 +2,37 @@ import React, { CSSProperties, lazy as lazy$1 } from 'react';
2
2
  import * as csstype from 'csstype';
3
3
  import Hls from 'hls.js';
4
4
 
5
+ interface AdPodConfig {
6
+ requestSafetyMs?: number;
7
+ minPodDurationMs?: number;
8
+ maxAdsPerBreak?: number | null;
9
+ maxPodDurationMs?: number;
10
+ }
11
+ declare const DEFAULT_REQUEST_SAFETY_MS = 1500;
12
+ declare const GAM_AD_OPPORTUNITY_DURATION_MS = 30000;
13
+ type PmxdSource = "break_remaining" | "configured_cap" | "tag_cap";
14
+ interface OptimizedPodDiagnostics {
15
+ breakId: number;
16
+ optimizedPod: boolean;
17
+ pmxdSource: PmxdSource | undefined;
18
+ scteBreakDurationMs: number | undefined;
19
+ elapsedBeforeGamRequestMs: number | undefined;
20
+ remainingAtGamDispatchMs: number | undefined;
21
+ safetyReserveMs: number;
22
+ pmndSent: number | undefined;
23
+ pmxdSent: number | undefined;
24
+ pmadSent: number | undefined;
25
+ palNoncePresent: boolean;
26
+ gamRequestDispatchTimestamp: string;
27
+ strippedMacros: string[];
28
+ }
29
+ interface PodResponseDiagnostics {
30
+ vastAdCount: number;
31
+ totalVastCreativeDurationMs: number;
32
+ estimatedUnusedPodMs: number;
33
+ estimatedUnmatchedCount: number;
34
+ }
35
+
5
36
  type LateJoinPolicy = "play_remaining" | "skip_to_content";
6
37
  interface AdBreak {
7
38
  id?: string;
@@ -41,12 +72,13 @@ interface StormcloudVideoPlayerConfig {
41
72
  vastTagUrl?: string;
42
73
  isVmap?: boolean;
43
74
  vmapUrl?: string;
44
- vastMode?: 'adstorm' | 'default';
45
75
  minSegmentsBeforePlay?: number;
46
76
  ctvAdRequest?: boolean;
47
77
  adTest?: boolean;
48
78
  programTitle?: string;
49
79
  channelName?: string;
80
+ contentNetwork?: string;
81
+ adPodConfig?: AdPodConfig;
50
82
  podMaxAds?: number;
51
83
  podMaxDurationMs?: number;
52
84
  podExactDuration?: boolean;
@@ -77,6 +109,7 @@ interface AdFloorLadderConfig {
77
109
  type AdRequestSource = "gam" | "edge";
78
110
  interface AdRequestOptions {
79
111
  source?: AdRequestSource;
112
+ finalizeRequestUrl?: (vastTagUrl: string, attempt: number) => string;
80
113
  }
81
114
  interface AdController {
82
115
  initialize: () => void;
@@ -154,6 +187,9 @@ interface TrackingData extends ClientInfo {
154
187
  interface PlayerAnalyticsContext {
155
188
  inputStreamType?: string;
156
189
  debugAdTiming?: boolean;
190
+ contentNetwork?: string;
191
+ contentChannel?: string;
192
+ contentTitle?: string;
157
193
  }
158
194
  interface HeartbeatData {
159
195
  browserId: string;
@@ -4038,7 +4074,7 @@ declare const IS_SAFARI: boolean;
4038
4074
  declare const SUPPORTS_HLS: () => boolean;
4039
4075
  declare const SUPPORTS_DASH: () => boolean;
4040
4076
 
4041
- declare function buildAnalyticsContext(config: Pick<StormcloudVideoPlayerConfig, "debugAdTiming" | "isLiveStream">): PlayerAnalyticsContext;
4077
+ declare function buildAnalyticsContext(config: Pick<StormcloudVideoPlayerConfig, "debugAdTiming" | "isLiveStream" | "contentNetwork" | "channelName" | "programTitle">): PlayerAnalyticsContext;
4042
4078
  declare function getClientInfo(): ClientInfo;
4043
4079
  declare function getBrowserID(clientInfo: ClientInfo): Promise<string>;
4044
4080
  type PlayerMetricFlags = {
@@ -4128,6 +4164,7 @@ interface PalNonceOptions {
4128
4164
  interface PalNonceManager {
4129
4165
  generateNonce(options?: PalNonceOptions): Promise<string>;
4130
4166
  getCurrentNonce(): string;
4167
+ waitForNonce(maxWaitMs: number): Promise<string>;
4131
4168
  injectNonce(vastTagUrl: string): string;
4132
4169
  sendPlaybackStart(): void;
4133
4170
  sendPlaybackEnd(): void;
@@ -4137,4 +4174,4 @@ interface PalNonceManager {
4137
4174
  }
4138
4175
  declare function createPalNonceManager(): PalNonceManager;
4139
4176
 
4140
- export { type AdBreak, type AdController, type AdControllerOptions, type AdDetectInfo, type AdFloorLadderConfig, type AdImpressionInfo, type AdLoadedInfo, type AdPosition, type AdSchedule, type BaseStormcloudPlayerProps, type BrowserInfo, type ClientInfo, DEFAULT_FLOOR_LADDER_BOUNDS, DEFAULT_TRACKING_INGEST_CONFIG, DEFAULT_WEB_FLOOR_LADDER_CONFIG, type FloorLadderBounds, type FloorLadderMode, type FloorLadderValidationReport, type FloorSelectionContext, type FloorSelector, type FloorSelectorResult, type FloorSource, type FloorValidation, type HeartbeatData, IS_BROWSER, IS_GLOBAL, IS_IOS, IS_SAFARI, type ImaController, type ImaControllerOptions, type LateJoinPolicy, type OnProgressProps, type OpportunityFloor, type PalNonceManager, type PalNonceOptions, type PlayerAnalyticsContext, SUPPORTS_DASH, SUPPORTS_HLS, StormcloudPlayer, StormcloudVideoPlayer, StormcloudVideoPlayerComponent, type StormcloudVideoPlayerConfig, type StormcloudVideoPlayerProps, type TrackingData, type TrackingIngestChannel, type TrackingIngestConfig, applyTrackingIngestConfig, buildAnalyticsContext, canPlay, configureTrackingIngest, createHlsAdPlayer, createPalNonceManager, createStormcloudPlayer, StormcloudVideoPlayerComponent as default, detectBrowser, fixedFloorSelector, generateFloorLevels, getBrowserConfigOverrides, getBrowserID, getClientInfo, ingestPlayerTracking, initializePolyfills, isMediaStream, isTrackingIngestEnabled, lazy, logBrowserInfo, merge, omit, parseQuery, players, randomString, requiresMediaPipelineResetAfterAds, resolveFloorLadderBounds, sendAdDetectTracking, sendAdImpressionTracking, sendAdLoadedTracking, sendHeartbeat, sendInitialTracking, supportsFeature, supportsModernJS, supportsWebKitPresentationMode, trackingIngestConfig, validateFloorCents, validateFloorLadderConfig };
4177
+ export { type AdBreak, type AdController, type AdControllerOptions, type AdDetectInfo, type AdFloorLadderConfig, type AdImpressionInfo, type AdLoadedInfo, type AdPodConfig, type AdPosition, type AdSchedule, type BaseStormcloudPlayerProps, type BrowserInfo, type ClientInfo, DEFAULT_FLOOR_LADDER_BOUNDS, DEFAULT_REQUEST_SAFETY_MS, DEFAULT_TRACKING_INGEST_CONFIG, DEFAULT_WEB_FLOOR_LADDER_CONFIG, type FloorLadderBounds, type FloorLadderMode, type FloorLadderValidationReport, type FloorSelectionContext, type FloorSelector, type FloorSelectorResult, type FloorSource, type FloorValidation, GAM_AD_OPPORTUNITY_DURATION_MS, type HeartbeatData, IS_BROWSER, IS_GLOBAL, IS_IOS, IS_SAFARI, type ImaController, type ImaControllerOptions, type LateJoinPolicy, type OnProgressProps, type OpportunityFloor, type OptimizedPodDiagnostics, type PalNonceManager, type PalNonceOptions, type PlayerAnalyticsContext, type PodResponseDiagnostics, SUPPORTS_DASH, SUPPORTS_HLS, StormcloudPlayer, StormcloudVideoPlayer, StormcloudVideoPlayerComponent, type StormcloudVideoPlayerConfig, type StormcloudVideoPlayerProps, type TrackingData, type TrackingIngestChannel, type TrackingIngestConfig, applyTrackingIngestConfig, buildAnalyticsContext, canPlay, configureTrackingIngest, createHlsAdPlayer, createPalNonceManager, createStormcloudPlayer, StormcloudVideoPlayerComponent as default, detectBrowser, fixedFloorSelector, generateFloorLevels, getBrowserConfigOverrides, getBrowserID, getClientInfo, ingestPlayerTracking, initializePolyfills, isMediaStream, isTrackingIngestEnabled, lazy, logBrowserInfo, merge, omit, parseQuery, players, randomString, requiresMediaPipelineResetAfterAds, resolveFloorLadderBounds, sendAdDetectTracking, sendAdImpressionTracking, sendAdLoadedTracking, sendHeartbeat, sendInitialTracking, supportsFeature, supportsModernJS, supportsWebKitPresentationMode, trackingIngestConfig, validateFloorCents, validateFloorLadderConfig };