stormcloud-video-player 0.8.68 → 0.8.69

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 (37) hide show
  1. package/dist/stormcloud-vp.min.js +1 -1
  2. package/lib/Player.cjs +30 -8
  3. package/lib/Player.cjs.map +1 -1
  4. package/lib/Player.d.cts +2 -1
  5. package/lib/StormcloudPlayer.cjs +5615 -5101
  6. package/lib/StormcloudPlayer.cjs.map +1 -1
  7. package/lib/StormcloudPlayer.d.cts +1 -0
  8. package/lib/index.cjs +5688 -5117
  9. package/lib/index.cjs.map +1 -1
  10. package/lib/index.d.cts +2 -1
  11. package/lib/index.d.ts +81 -1
  12. package/lib/index.js +5663 -5119
  13. package/lib/index.js.map +1 -1
  14. package/lib/player/AdBreakOrchestrator.cjs +314 -113
  15. package/lib/player/AdBreakOrchestrator.cjs.map +1 -1
  16. package/lib/player/AdBreakOrchestrator.d.cts +9 -3
  17. package/lib/player/FloorLadder.cjs +578 -0
  18. package/lib/player/FloorLadder.cjs.map +1 -0
  19. package/lib/player/FloorLadder.d.cts +74 -0
  20. package/lib/player/StormcloudVideoPlayer.cjs +5615 -5101
  21. package/lib/player/StormcloudVideoPlayer.cjs.map +1 -1
  22. package/lib/player/StormcloudVideoPlayer.d.cts +9 -1
  23. package/lib/players/HlsPlayer.cjs +5615 -5101
  24. package/lib/players/HlsPlayer.cjs.map +1 -1
  25. package/lib/players/index.cjs +5615 -5101
  26. package/lib/players/index.cjs.map +1 -1
  27. package/lib/props.cjs +30 -8
  28. package/lib/props.cjs.map +1 -1
  29. package/lib/props.d.cts +1 -0
  30. package/lib/types.d.cts +22 -1
  31. package/lib/ui/StormcloudVideoPlayer.cjs +5634 -5091
  32. package/lib/ui/StormcloudVideoPlayer.cjs.map +1 -1
  33. package/lib/ui/StormcloudVideoPlayer.d.cts +1 -0
  34. package/lib/utils/vastMacros.cjs +4 -0
  35. package/lib/utils/vastMacros.cjs.map +1 -1
  36. package/lib/utils/vastMacros.d.cts +2 -1
  37. package/package.json +1 -1
package/lib/index.d.cts CHANGED
@@ -1,7 +1,8 @@
1
1
  export { StormcloudVideoPlayerComponent, StormcloudVideoPlayerProps, StormcloudVideoPlayerComponent as default } from './ui/StormcloudVideoPlayer.cjs';
2
2
  export { default as StormcloudPlayer, createStormcloudPlayer } from './StormcloudPlayer.cjs';
3
3
  export { StormcloudVideoPlayer } from './player/StormcloudVideoPlayer.cjs';
4
- export { AdBreak, AdController, AdControllerOptions, AdDetectInfo, AdImpressionInfo, AdLoadedInfo, AdSchedule, ClientInfo, HeartbeatData, ImaController, ImaControllerOptions, LateJoinPolicy, PlayerAnalyticsContext, StormcloudVideoPlayerConfig, TrackingData } from './types.cjs';
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 { 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';
5
6
  export { BaseStormcloudPlayerProps, OnProgressProps } from './props.cjs';
6
7
  export { canPlay } from './patterns.cjs';
7
8
  export { IS_BROWSER, IS_GLOBAL, IS_IOS, IS_SAFARI, SUPPORTS_DASH, SUPPORTS_HLS, isMediaStream, lazy, merge, omit, parseQuery, randomString, supportsWebKitPresentationMode } from './utils.cjs';
package/lib/index.d.ts CHANGED
@@ -50,6 +50,27 @@ interface StormcloudVideoPlayerConfig {
50
50
  podMaxAds?: number;
51
51
  podMaxDurationMs?: number;
52
52
  podExactDuration?: boolean;
53
+ adFloorLadder?: Partial<AdFloorLadderConfig>;
54
+ /** Floor levels that exist as GAM targeting values; `adFloorLadder` can narrow but never widen them. */
55
+ adFloorMinCents?: number;
56
+ adFloorMaxCents?: number;
57
+ adFloorStepCents?: number;
58
+ }
59
+ type AdPosition = "preroll" | "midroll" | "postroll";
60
+ type FloorLadderMode = "fixed";
61
+ interface AdFloorLadderConfig {
62
+ enabled: boolean;
63
+ targetingKey: string;
64
+ minFloorCents: number;
65
+ maxFloorCents: number;
66
+ stepCents: number;
67
+ selectedFloorCents: number;
68
+ fallbackFloorCents: number;
69
+ readyFloorCents: number[];
70
+ mode: FloorLadderMode;
71
+ allowedPositions: AdPosition[];
72
+ targetAdUnitPath: string;
73
+ configurationVersion: string;
53
74
  }
54
75
  interface AdController {
55
76
  initialize: () => void;
@@ -160,6 +181,58 @@ interface AdImpressionInfo {
160
181
  timestamp: string;
161
182
  }
162
183
 
184
+ declare const DEFAULT_WEB_FLOOR_LADDER_CONFIG: Readonly<AdFloorLadderConfig>;
185
+ type FloorValidationReason = "not_integer" | "out_of_range" | "not_step_multiple" | "not_ready";
186
+ type FloorValidation = {
187
+ ok: true;
188
+ } | {
189
+ ok: false;
190
+ reason: FloorValidationReason;
191
+ };
192
+ type FloorSource = "selected" | "fallback" | "none";
193
+ /** Levels that have targeting values in GAM; the ladder config can narrow these but never widen them. */
194
+ interface FloorLadderBounds {
195
+ minCents: number;
196
+ maxCents: number;
197
+ stepCents: number;
198
+ }
199
+ declare const DEFAULT_FLOOR_LADDER_BOUNDS: Readonly<FloorLadderBounds>;
200
+ interface FloorSelectionContext {
201
+ position: AdPosition;
202
+ isCtv: boolean;
203
+ bounds: Readonly<FloorLadderBounds>;
204
+ }
205
+ interface FloorSelectorResult {
206
+ floorCents?: number;
207
+ source: FloorSource;
208
+ reason?: string;
209
+ }
210
+ interface FloorSelector {
211
+ readonly name: string;
212
+ select(config: Readonly<AdFloorLadderConfig>, context: FloorSelectionContext): FloorSelectorResult;
213
+ }
214
+ interface OpportunityFloor {
215
+ readonly status: "armed" | "skipped";
216
+ readonly floorCents: number | undefined;
217
+ readonly source: FloorSource;
218
+ readonly reason: string | undefined;
219
+ readonly selector: string;
220
+ readonly position: AdPosition;
221
+ readonly configurationVersion: string;
222
+ readonly targetingKey: string;
223
+ readonly targetAdUnitPath: string;
224
+ }
225
+ interface FloorLadderValidationReport {
226
+ ok: boolean;
227
+ levels: number[];
228
+ errors: string[];
229
+ }
230
+ declare function generateFloorLevels(minCents: number, maxCents: number, stepCents: number): number[];
231
+ declare function resolveFloorLadderBounds(overrides?: Partial<FloorLadderBounds>): FloorLadderBounds;
232
+ declare function validateFloorCents(value: unknown, config: Readonly<AdFloorLadderConfig>, bounds?: Readonly<FloorLadderBounds>): FloorValidation;
233
+ declare function validateFloorLadderConfig(config: Readonly<AdFloorLadderConfig>, bounds?: Readonly<FloorLadderBounds>): FloorLadderValidationReport;
234
+ declare const fixedFloorSelector: FloorSelector;
235
+
163
236
  declare class StormcloudVideoPlayer {
164
237
  private readonly video;
165
238
  private readonly config;
@@ -176,9 +249,16 @@ declare class StormcloudVideoPlayer {
176
249
  private readonly placeholder;
177
250
  private readonly hlsEngine;
178
251
  private readonly adBreak;
252
+ private readonly floorLadder;
179
253
  constructor(config: StormcloudVideoPlayerConfig);
180
254
  private get debug();
181
255
  private createAdPlayer;
256
+ private isCtvEnvironment;
257
+ setAdFloorLadder(update: Partial<AdFloorLadderConfig>): FloorLadderValidationReport;
258
+ private warnOnInvalidFloorLadder;
259
+ getAdFloorLadder(): AdFloorLadderConfig;
260
+ getAdFloorBounds(): FloorLadderBounds;
261
+ setAdFloorSelector(selector: FloorSelector): void;
182
262
  private generatePodVastUrl;
183
263
  load(): Promise<void>;
184
264
  private onManifestParsed;
@@ -4041,4 +4121,4 @@ interface PalNonceManager {
4041
4121
  }
4042
4122
  declare function createPalNonceManager(): PalNonceManager;
4043
4123
 
4044
- export { type AdBreak, type AdController, type AdControllerOptions, type AdDetectInfo, type AdImpressionInfo, type AdLoadedInfo, type AdSchedule, type BaseStormcloudPlayerProps, type BrowserInfo, type ClientInfo, DEFAULT_TRACKING_INGEST_CONFIG, type HeartbeatData, IS_BROWSER, IS_GLOBAL, IS_IOS, IS_SAFARI, type ImaController, type ImaControllerOptions, type LateJoinPolicy, type OnProgressProps, 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, getBrowserConfigOverrides, getBrowserID, getClientInfo, ingestPlayerTracking, initializePolyfills, isMediaStream, isTrackingIngestEnabled, lazy, logBrowserInfo, merge, omit, parseQuery, players, randomString, requiresMediaPipelineResetAfterAds, sendAdDetectTracking, sendAdImpressionTracking, sendAdLoadedTracking, sendHeartbeat, sendInitialTracking, supportsFeature, supportsModernJS, supportsWebKitPresentationMode, trackingIngestConfig };
4124
+ 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 };