stormcloud-video-player 0.8.16 → 0.8.18

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