stormcloud-video-player 0.8.15 → 0.8.17

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 (52) hide show
  1. package/dist/stormcloud-vp.min.js +2 -2
  2. package/lib/index.cjs +4476 -4205
  3. package/lib/index.cjs.map +1 -1
  4. package/lib/index.d.cts +18 -190
  5. package/lib/index.d.ts +18 -190
  6. package/lib/index.js +4483 -4204
  7. package/lib/index.js.map +1 -1
  8. package/lib/player/AdBreakOrchestrator.cjs +2275 -0
  9. package/lib/player/AdBreakOrchestrator.cjs.map +1 -0
  10. package/lib/player/AdBreakOrchestrator.d.cts +62 -0
  11. package/lib/player/AdPreloadPool.cjs +673 -0
  12. package/lib/player/AdPreloadPool.cjs.map +1 -0
  13. package/lib/player/AdPreloadPool.d.cts +37 -0
  14. package/lib/player/AdTimingService.cjs +841 -0
  15. package/lib/player/AdTimingService.cjs.map +1 -0
  16. package/lib/player/AdTimingService.d.cts +88 -0
  17. package/lib/player/HlsEngine.cjs +1502 -0
  18. package/lib/player/HlsEngine.cjs.map +1 -0
  19. package/lib/player/HlsEngine.d.cts +38 -0
  20. package/lib/player/PlaceholderLayer.cjs +191 -0
  21. package/lib/player/PlaceholderLayer.cjs.map +1 -0
  22. package/lib/player/PlaceholderLayer.d.cts +12 -0
  23. package/lib/player/PlayerControls.cjs +225 -0
  24. package/lib/player/PlayerControls.cjs.map +1 -0
  25. package/lib/player/PlayerControls.d.cts +13 -0
  26. package/lib/player/Scte35CueManager.cjs +413 -0
  27. package/lib/player/Scte35CueManager.cjs.map +1 -0
  28. package/lib/player/Scte35CueManager.d.cts +43 -0
  29. package/lib/player/Scte35Parser.cjs +945 -0
  30. package/lib/player/Scte35Parser.cjs.map +1 -0
  31. package/lib/player/Scte35Parser.d.cts +23 -0
  32. package/lib/player/StormcloudVideoPlayer.cjs +4449 -4178
  33. package/lib/player/StormcloudVideoPlayer.cjs.map +1 -1
  34. package/lib/player/StormcloudVideoPlayer.d.cts +19 -191
  35. package/lib/player/VmapManager.cjs +1706 -0
  36. package/lib/player/VmapManager.cjs.map +1 -0
  37. package/lib/player/VmapManager.d.cts +38 -0
  38. package/lib/player/playerTypes.cjs +49 -0
  39. package/lib/player/playerTypes.cjs.map +1 -0
  40. package/lib/player/playerTypes.d.cts +20 -0
  41. package/lib/players/HlsPlayer.cjs +4449 -4179
  42. package/lib/players/HlsPlayer.cjs.map +1 -1
  43. package/lib/players/HlsPlayer.d.cts +1 -1
  44. package/lib/players/index.cjs +4449 -4179
  45. package/lib/players/index.cjs.map +1 -1
  46. package/lib/sdk/hlsAdPlayer.d.cts +1 -1
  47. package/lib/{types-CWWADkvd.d.cts → types-DNiBmPKK.d.cts} +18 -1
  48. package/lib/ui/StormcloudVideoPlayer.cjs +4478 -4207
  49. package/lib/ui/StormcloudVideoPlayer.cjs.map +1 -1
  50. package/lib/ui/StormcloudVideoPlayer.d.cts +1 -1
  51. package/lib/utils/tracking.d.cts +1 -1
  52. package/package.json +1 -1
package/lib/index.d.cts CHANGED
@@ -145,223 +145,51 @@ interface AdImpressionInfo {
145
145
  declare class StormcloudVideoPlayer {
146
146
  private readonly video;
147
147
  private readonly config;
148
- private hls?;
149
148
  private adPlayer;
150
149
  private attached;
151
- private inAdBreak;
152
- private currentAdBreakStartWallClockMs;
153
- private expectedAdBreakDurationMs;
154
- private adStopTimerId;
155
- private adStartTimerId;
156
- private adFailsafeTimerId;
157
- private ptsDriftEmaMs;
158
- private adPodQueue;
159
- private apiVastTagUrl;
160
- private apiNumberAds;
161
- private vmapBreaks;
162
- private consumedVmapBreakIds;
163
- private lastHeartbeatTime;
164
- private heartbeatInterval;
165
- private currentAdIndex;
166
- private totalAdsInBreak;
167
- private showAds;
168
- private isLiveStream;
169
- private nativeHlsMode;
170
- private videoSrcProtection;
171
- private bufferedSegmentsCount;
172
- private shouldAutoplayAfterBuffering;
173
- private hasInitialBufferCompleted;
174
- private adRequestTokenCounter;
175
- private activeAdRequestToken;
176
- private adRequestWatchdogId;
177
- private adRequestWatchdogToken;
178
- private adFailsafeToken;
179
- private failedVastUrls;
180
- private temporaryFailureUrls;
181
- private readonly temporaryFailureCooldownMs;
182
- private continuousFetchingActive;
183
- private adRequestQueue;
184
- private maxPlaceholderDurationMs;
185
- private isShowingPlaceholder;
186
150
  private timeUpdateHandler?;
187
151
  private endedHandler?;
188
152
  private emptiedHandler?;
189
- private readonly tsScte35Pids;
190
- private readonly pmtPids;
191
- private readonly processedTsScte35Sections;
192
- private readonly pendingScte35Cues;
193
- private readonly recentScte35CueKeys;
194
- private readonly recentScte35CueLimit;
195
- private pendingScte35CueKey;
196
- private activeScte35BreakKey;
197
- private scheduledScte35BreakKey;
198
- private totalAdRequestsInBreak;
199
- private readonly maxTotalAdRequestsPerBreak;
200
- private pendingAdBreak;
201
- private prefetchTimerId;
202
- private consecutiveFailures;
203
- private readonly maxConsecutiveFailures;
204
- private lastAdRequestTime;
205
- private readonly minAdRequestIntervalMs;
206
- private readonly defaultMinRemainingMsToStartAd;
207
- private readonly backoffBaseMs;
208
- private readonly maxBackoffMs;
209
- private placeholderContainer;
210
- private globalConsecutiveNoFills;
211
- private readonly globalNoFillThreshold;
212
- private globalNoFillCooldownUntil;
213
- private readonly globalNoFillBackoffBaseMs;
214
- private readonly globalNoFillBackoffMaxMs;
215
- private globalLastGamRequestTime;
216
- private readonly globalMinGamIntervalMs;
217
- private preloadPool;
218
- private readonly maxPreloadPoolSize;
219
- private preloadPoolActive;
220
- private preloadPoolLoopRunning;
221
- private adDetectSentForCurrentBreak;
222
- private adBreakEpoch;
223
- private adBreakPlayedDurationMs;
224
153
  private palNonce;
225
154
  private palPlaybackStarted;
226
- private readonly streamCorrelator;
227
- private consentSignals;
228
- private podCounter;
229
- private podAssignedByPrefetch;
230
- private adRequestPositionInBreak;
155
+ private readonly cueManager;
156
+ private readonly vmap;
157
+ private readonly timing;
158
+ private readonly preloadPool;
159
+ private readonly placeholder;
160
+ private readonly hlsEngine;
161
+ private readonly adBreak;
231
162
  constructor(config: StormcloudVideoPlayerConfig);
163
+ private get debug();
232
164
  private createAdPlayer;
165
+ private generateVastUrls;
233
166
  load(): Promise<void>;
234
- private attachImaEventListeners;
235
- private recreateAdController;
236
- private ensurePlaceholderContainer;
237
- private showPlaceholderLayer;
238
- private hidePlaceholderLayer;
167
+ private onManifestParsed;
239
168
  private attach;
240
- private shouldUseNativeHls;
241
- private onId3Tag;
242
- private parseScte35FromId3;
243
- private decodeId3ValueToText;
244
- private createScte35CueContext;
245
- private getFragmentStartSeconds;
246
- private onScte35Cue;
247
- private createScte35Cue;
248
- private getScte35CueKey;
249
- private getPendingScte35CueKey;
250
- private getScte35MarkerRaw;
251
- private toIdentityString;
252
- private isStrongScte35CueKey;
253
- private hasRecentlyHandledScte35Cue;
254
- private markScte35CueHandled;
255
- private trimRecentScte35CueMaps;
256
- private shouldAcceptScte35EndCue;
257
- private activatePendingScte35CuesForFragment;
169
+ private shouldContinueLiveStreamDuringAds;
258
170
  private onScte35Marker;
259
171
  private startScte35AdBreak;
260
- private parseCueOutDuration;
261
- private parseCueOutCont;
262
- private parseAttributeList;
263
- private toNumber;
264
- private isManifestBasedMarker;
265
- private normalizeFragmentPayload;
266
- private processFragmentScte35Payload;
267
- private parseScte35FromTsPackets;
268
- private detectTsPacketFormat;
269
- private parsePatSection;
270
- private parsePmtSection;
271
- private descriptorsIdentifyScte35;
272
- private collectScte35SectionsFromPayload;
273
- private appendScte35Bytes;
274
- private addScte35SectionMarker;
275
- private hasProcessedTsScte35Section;
276
- private getPsiSectionStart;
277
- private getPsiSectionLength;
278
- private parseScte35Binary;
279
- private parseScte35SegmentationDescriptors;
280
- private parseScte35SegmentationDescriptor;
281
- private markerTypeFromSegmentationTypeId;
282
- private initializeTracking;
283
- private sendHeartbeatIfNeeded;
284
- private isVmapEnabled;
285
- private fetchAdConfiguration;
286
- private fetchAndParseVmap;
287
- private parseVmapToBreaks;
288
- private parseVmapTimeOffsetToMs;
289
- private getAdBreakKey;
290
- private resolveBreakStartMs;
172
+ private onAdStopTimerFired;
173
+ private startAdPrefetch;
174
+ private onTimeUpdate;
175
+ private onVideoEnded;
176
+ private handleVmapAdBreak;
291
177
  getCurrentAdIndex(): number;
292
178
  getTotalAdsInBreak(): number;
293
179
  getAdRemainingMs(): number;
294
- private beginNewAdPod;
295
- private generateVastUrlsWithCorrelators;
296
180
  isAdPlaying(): boolean;
297
181
  isShowingAds(): boolean;
298
182
  getStreamType(): "hls" | "other";
299
183
  shouldShowNativeControls(): boolean;
300
- private shouldContinueLiveStreamDuringAds;
301
- private startAdPrefetch;
302
- private clearPendingAdBreak;
303
- private startPreloadPool;
304
- private preloadAdIntoPool;
305
- private preloadPoolLoop;
306
- private getPreloadedAd;
307
- private stopPreloadPool;
308
- private handleAdStart;
309
- private continuousFetchLoopRunning;
310
- private startContinuousFetching;
311
- private continuousFetchLoop;
312
- private stopContinuousFetching;
313
- private tryNextAvailableAdWithRateLimit;
314
- private tryNextAvailableAd;
315
- private showPlaceholderAndWaitForAds;
316
- private findCurrentOrNextBreak;
317
- private onTimeUpdate;
318
- private onVideoEnded;
319
- private handleVmapAdBreak;
320
- private scheduleAdStopCountdown;
321
- private clearAdStopTimer;
322
- private ensureAdStoppedByTimer;
323
- private scheduleAdStartIn;
324
- private clearAdStartTimer;
325
- private updatePtsDrift;
326
- private isTemporaryAdError;
327
- private isUrlInCooldown;
328
- private cleanupTemporaryFailures;
329
- private isGamInCooldown;
330
- private recordGamNoFill;
331
- private resetGamNoFillCounter;
332
- private enforceGlobalRateLimit;
333
- private playSingleAd;
334
- private handleAdPodComplete;
335
- private handleAdFailure;
336
- private startAdRequestWatchdog;
337
- private clearAdRequestWatchdog;
338
- private startAdFailsafeTimer;
339
- private clearAdFailsafeTimer;
340
- private selectVastTagsForBreak;
341
- private logAdState;
342
- private getWallClockRemainingAdMs;
343
- private getDurationBudgetRemainingMs;
344
- private getLoadedAdDurationMs;
345
- private adFitsRemainingBudget;
346
- private logAdDurationDecision;
347
- private recordPlayedAdDuration;
348
- private ensureLoadedAdFitsBudget;
349
- private rejectLoadedAdForDuration;
350
- private markAdStarted;
351
- private getRemainingAdMs;
352
- private getMinRemainingMsToStartAd;
353
- private hasTimeToStartAnotherAd;
354
- private findBreakForTime;
184
+ isLive(): boolean;
185
+ get videoElement(): HTMLVideoElement;
355
186
  toggleMute(): void;
356
187
  toggleFullscreen(): Promise<void>;
357
188
  isMuted(): boolean;
358
189
  setMuted(muted: boolean): void;
359
190
  setVolume(volume: number): void;
360
191
  getVolume(): number;
361
- private getAdAudioVolume;
362
192
  isFullscreen(): boolean;
363
- isLive(): boolean;
364
- get videoElement(): HTMLVideoElement;
365
193
  resize(): void;
366
194
  destroy(): void;
367
195
  }
package/lib/index.d.ts CHANGED
@@ -145,223 +145,51 @@ interface AdImpressionInfo {
145
145
  declare class StormcloudVideoPlayer {
146
146
  private readonly video;
147
147
  private readonly config;
148
- private hls?;
149
148
  private adPlayer;
150
149
  private attached;
151
- private inAdBreak;
152
- private currentAdBreakStartWallClockMs;
153
- private expectedAdBreakDurationMs;
154
- private adStopTimerId;
155
- private adStartTimerId;
156
- private adFailsafeTimerId;
157
- private ptsDriftEmaMs;
158
- private adPodQueue;
159
- private apiVastTagUrl;
160
- private apiNumberAds;
161
- private vmapBreaks;
162
- private consumedVmapBreakIds;
163
- private lastHeartbeatTime;
164
- private heartbeatInterval;
165
- private currentAdIndex;
166
- private totalAdsInBreak;
167
- private showAds;
168
- private isLiveStream;
169
- private nativeHlsMode;
170
- private videoSrcProtection;
171
- private bufferedSegmentsCount;
172
- private shouldAutoplayAfterBuffering;
173
- private hasInitialBufferCompleted;
174
- private adRequestTokenCounter;
175
- private activeAdRequestToken;
176
- private adRequestWatchdogId;
177
- private adRequestWatchdogToken;
178
- private adFailsafeToken;
179
- private failedVastUrls;
180
- private temporaryFailureUrls;
181
- private readonly temporaryFailureCooldownMs;
182
- private continuousFetchingActive;
183
- private adRequestQueue;
184
- private maxPlaceholderDurationMs;
185
- private isShowingPlaceholder;
186
150
  private timeUpdateHandler?;
187
151
  private endedHandler?;
188
152
  private emptiedHandler?;
189
- private readonly tsScte35Pids;
190
- private readonly pmtPids;
191
- private readonly processedTsScte35Sections;
192
- private readonly pendingScte35Cues;
193
- private readonly recentScte35CueKeys;
194
- private readonly recentScte35CueLimit;
195
- private pendingScte35CueKey;
196
- private activeScte35BreakKey;
197
- private scheduledScte35BreakKey;
198
- private totalAdRequestsInBreak;
199
- private readonly maxTotalAdRequestsPerBreak;
200
- private pendingAdBreak;
201
- private prefetchTimerId;
202
- private consecutiveFailures;
203
- private readonly maxConsecutiveFailures;
204
- private lastAdRequestTime;
205
- private readonly minAdRequestIntervalMs;
206
- private readonly defaultMinRemainingMsToStartAd;
207
- private readonly backoffBaseMs;
208
- private readonly maxBackoffMs;
209
- private placeholderContainer;
210
- private globalConsecutiveNoFills;
211
- private readonly globalNoFillThreshold;
212
- private globalNoFillCooldownUntil;
213
- private readonly globalNoFillBackoffBaseMs;
214
- private readonly globalNoFillBackoffMaxMs;
215
- private globalLastGamRequestTime;
216
- private readonly globalMinGamIntervalMs;
217
- private preloadPool;
218
- private readonly maxPreloadPoolSize;
219
- private preloadPoolActive;
220
- private preloadPoolLoopRunning;
221
- private adDetectSentForCurrentBreak;
222
- private adBreakEpoch;
223
- private adBreakPlayedDurationMs;
224
153
  private palNonce;
225
154
  private palPlaybackStarted;
226
- private readonly streamCorrelator;
227
- private consentSignals;
228
- private podCounter;
229
- private podAssignedByPrefetch;
230
- private adRequestPositionInBreak;
155
+ private readonly cueManager;
156
+ private readonly vmap;
157
+ private readonly timing;
158
+ private readonly preloadPool;
159
+ private readonly placeholder;
160
+ private readonly hlsEngine;
161
+ private readonly adBreak;
231
162
  constructor(config: StormcloudVideoPlayerConfig);
163
+ private get debug();
232
164
  private createAdPlayer;
165
+ private generateVastUrls;
233
166
  load(): Promise<void>;
234
- private attachImaEventListeners;
235
- private recreateAdController;
236
- private ensurePlaceholderContainer;
237
- private showPlaceholderLayer;
238
- private hidePlaceholderLayer;
167
+ private onManifestParsed;
239
168
  private attach;
240
- private shouldUseNativeHls;
241
- private onId3Tag;
242
- private parseScte35FromId3;
243
- private decodeId3ValueToText;
244
- private createScte35CueContext;
245
- private getFragmentStartSeconds;
246
- private onScte35Cue;
247
- private createScte35Cue;
248
- private getScte35CueKey;
249
- private getPendingScte35CueKey;
250
- private getScte35MarkerRaw;
251
- private toIdentityString;
252
- private isStrongScte35CueKey;
253
- private hasRecentlyHandledScte35Cue;
254
- private markScte35CueHandled;
255
- private trimRecentScte35CueMaps;
256
- private shouldAcceptScte35EndCue;
257
- private activatePendingScte35CuesForFragment;
169
+ private shouldContinueLiveStreamDuringAds;
258
170
  private onScte35Marker;
259
171
  private startScte35AdBreak;
260
- private parseCueOutDuration;
261
- private parseCueOutCont;
262
- private parseAttributeList;
263
- private toNumber;
264
- private isManifestBasedMarker;
265
- private normalizeFragmentPayload;
266
- private processFragmentScte35Payload;
267
- private parseScte35FromTsPackets;
268
- private detectTsPacketFormat;
269
- private parsePatSection;
270
- private parsePmtSection;
271
- private descriptorsIdentifyScte35;
272
- private collectScte35SectionsFromPayload;
273
- private appendScte35Bytes;
274
- private addScte35SectionMarker;
275
- private hasProcessedTsScte35Section;
276
- private getPsiSectionStart;
277
- private getPsiSectionLength;
278
- private parseScte35Binary;
279
- private parseScte35SegmentationDescriptors;
280
- private parseScte35SegmentationDescriptor;
281
- private markerTypeFromSegmentationTypeId;
282
- private initializeTracking;
283
- private sendHeartbeatIfNeeded;
284
- private isVmapEnabled;
285
- private fetchAdConfiguration;
286
- private fetchAndParseVmap;
287
- private parseVmapToBreaks;
288
- private parseVmapTimeOffsetToMs;
289
- private getAdBreakKey;
290
- private resolveBreakStartMs;
172
+ private onAdStopTimerFired;
173
+ private startAdPrefetch;
174
+ private onTimeUpdate;
175
+ private onVideoEnded;
176
+ private handleVmapAdBreak;
291
177
  getCurrentAdIndex(): number;
292
178
  getTotalAdsInBreak(): number;
293
179
  getAdRemainingMs(): number;
294
- private beginNewAdPod;
295
- private generateVastUrlsWithCorrelators;
296
180
  isAdPlaying(): boolean;
297
181
  isShowingAds(): boolean;
298
182
  getStreamType(): "hls" | "other";
299
183
  shouldShowNativeControls(): boolean;
300
- private shouldContinueLiveStreamDuringAds;
301
- private startAdPrefetch;
302
- private clearPendingAdBreak;
303
- private startPreloadPool;
304
- private preloadAdIntoPool;
305
- private preloadPoolLoop;
306
- private getPreloadedAd;
307
- private stopPreloadPool;
308
- private handleAdStart;
309
- private continuousFetchLoopRunning;
310
- private startContinuousFetching;
311
- private continuousFetchLoop;
312
- private stopContinuousFetching;
313
- private tryNextAvailableAdWithRateLimit;
314
- private tryNextAvailableAd;
315
- private showPlaceholderAndWaitForAds;
316
- private findCurrentOrNextBreak;
317
- private onTimeUpdate;
318
- private onVideoEnded;
319
- private handleVmapAdBreak;
320
- private scheduleAdStopCountdown;
321
- private clearAdStopTimer;
322
- private ensureAdStoppedByTimer;
323
- private scheduleAdStartIn;
324
- private clearAdStartTimer;
325
- private updatePtsDrift;
326
- private isTemporaryAdError;
327
- private isUrlInCooldown;
328
- private cleanupTemporaryFailures;
329
- private isGamInCooldown;
330
- private recordGamNoFill;
331
- private resetGamNoFillCounter;
332
- private enforceGlobalRateLimit;
333
- private playSingleAd;
334
- private handleAdPodComplete;
335
- private handleAdFailure;
336
- private startAdRequestWatchdog;
337
- private clearAdRequestWatchdog;
338
- private startAdFailsafeTimer;
339
- private clearAdFailsafeTimer;
340
- private selectVastTagsForBreak;
341
- private logAdState;
342
- private getWallClockRemainingAdMs;
343
- private getDurationBudgetRemainingMs;
344
- private getLoadedAdDurationMs;
345
- private adFitsRemainingBudget;
346
- private logAdDurationDecision;
347
- private recordPlayedAdDuration;
348
- private ensureLoadedAdFitsBudget;
349
- private rejectLoadedAdForDuration;
350
- private markAdStarted;
351
- private getRemainingAdMs;
352
- private getMinRemainingMsToStartAd;
353
- private hasTimeToStartAnotherAd;
354
- private findBreakForTime;
184
+ isLive(): boolean;
185
+ get videoElement(): HTMLVideoElement;
355
186
  toggleMute(): void;
356
187
  toggleFullscreen(): Promise<void>;
357
188
  isMuted(): boolean;
358
189
  setMuted(muted: boolean): void;
359
190
  setVolume(volume: number): void;
360
191
  getVolume(): number;
361
- private getAdAudioVolume;
362
192
  isFullscreen(): boolean;
363
- isLive(): boolean;
364
- get videoElement(): HTMLVideoElement;
365
193
  resize(): void;
366
194
  destroy(): void;
367
195
  }