stormcloud-video-player 0.8.2 → 0.8.4

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 (36) hide show
  1. package/dist/stormcloud-vp.min.js +3 -1
  2. package/lib/index.cjs +536 -341
  3. package/lib/index.cjs.map +1 -1
  4. package/lib/index.d.cts +37 -2
  5. package/lib/index.d.ts +37 -2
  6. package/lib/index.js +477 -342
  7. package/lib/index.js.map +1 -1
  8. package/lib/player/StormcloudVideoPlayer.cjs +266 -206
  9. package/lib/player/StormcloudVideoPlayer.cjs.map +1 -1
  10. package/lib/player/StormcloudVideoPlayer.d.cts +5 -2
  11. package/lib/players/FilePlayer.cjs.map +1 -1
  12. package/lib/players/HlsPlayer.cjs +266 -206
  13. package/lib/players/HlsPlayer.cjs.map +1 -1
  14. package/lib/players/HlsPlayer.d.cts +1 -1
  15. package/lib/players/index.cjs +266 -206
  16. package/lib/players/index.cjs.map +1 -1
  17. package/lib/sdk/hlsAdPlayer.cjs.map +1 -1
  18. package/lib/sdk/hlsAdPlayer.d.cts +1 -1
  19. package/lib/sdk/pal.cjs.map +1 -1
  20. package/lib/{types-DDwAfBLt.d.cts → types-BmF_60m2.d.cts} +2 -0
  21. package/lib/ui/StormcloudVideoPlayer.cjs +450 -341
  22. package/lib/ui/StormcloudVideoPlayer.cjs.map +1 -1
  23. package/lib/ui/StormcloudVideoPlayer.d.cts +1 -1
  24. package/lib/utils/browserCompat.cjs.map +1 -1
  25. package/lib/utils/mqttClient.cjs +245 -0
  26. package/lib/utils/mqttClient.cjs.map +1 -0
  27. package/lib/utils/mqttClient.d.cts +13 -0
  28. package/lib/utils/mqttConfig.cjs +141 -0
  29. package/lib/utils/mqttConfig.cjs.map +1 -0
  30. package/lib/utils/mqttConfig.d.cts +20 -0
  31. package/lib/utils/polyfills.cjs.map +1 -1
  32. package/lib/utils/tracking.cjs +182 -170
  33. package/lib/utils/tracking.cjs.map +1 -1
  34. package/lib/utils/tracking.d.cts +1 -1
  35. package/package.json +3 -1
  36. package/src/certs/emqxsl-ca.crt +22 -0
package/lib/index.d.cts CHANGED
@@ -20,6 +20,7 @@ interface StormcloudVideoPlayerConfig {
20
20
  muted?: boolean;
21
21
  allowNativeHls?: boolean;
22
22
  lowLatencyMode?: boolean;
23
+ isLiveStream?: boolean;
23
24
  driftToleranceMs?: number;
24
25
  immediateManifestAds?: boolean;
25
26
  debugAdTiming?: boolean;
@@ -33,6 +34,7 @@ interface StormcloudVideoPlayerConfig {
33
34
  onControlClick?: () => void;
34
35
  licenseKey?: string;
35
36
  vastTagUrl?: string;
37
+ isVmap?: boolean;
36
38
  vmapUrl?: string;
37
39
  vastMode?: 'adstorm' | 'default';
38
40
  minSegmentsBeforePlay?: number;
@@ -177,6 +179,7 @@ declare class StormcloudVideoPlayer {
177
179
  private maxPlaceholderDurationMs;
178
180
  private isShowingPlaceholder;
179
181
  private timeUpdateHandler?;
182
+ private endedHandler?;
180
183
  private emptiedHandler?;
181
184
  private readonly tsScte35Pids;
182
185
  private readonly pmtPids;
@@ -265,6 +268,7 @@ declare class StormcloudVideoPlayer {
265
268
  private markerTypeFromSegmentationTypeId;
266
269
  private initializeTracking;
267
270
  private sendHeartbeatIfNeeded;
271
+ private isVmapEnabled;
268
272
  private fetchAdConfiguration;
269
273
  private fetchAndParseVmap;
270
274
  private parseVmapToBreaks;
@@ -297,7 +301,8 @@ declare class StormcloudVideoPlayer {
297
301
  private showPlaceholderAndWaitForAds;
298
302
  private findCurrentOrNextBreak;
299
303
  private onTimeUpdate;
300
- private handleMidAdJoin;
304
+ private onVideoEnded;
305
+ private handleVmapAdBreak;
301
306
  private scheduleAdStopCountdown;
302
307
  private clearAdStopTimer;
303
308
  private ensureAdStoppedByTimer;
@@ -376,6 +381,7 @@ interface BaseStormcloudPlayerProps {
376
381
  showCustomControls?: boolean;
377
382
  hideLoadingIndicator?: boolean;
378
383
  licenseKey?: string;
384
+ isVmap?: boolean;
379
385
  vmapUrl?: string;
380
386
  adFailsafeTimeoutMs?: number;
381
387
  minSegmentsBeforePlay?: number;
@@ -4075,6 +4081,35 @@ declare function sendAdLoadedTracking(licenseKey: string | undefined, adLoadedIn
4075
4081
  declare function sendAdImpressionTracking(licenseKey: string | undefined, adImpressionInfo: AdImpressionInfo, context?: PlayerAnalyticsContext): Promise<void>;
4076
4082
  declare function sendHeartbeat(licenseKey?: string, context?: PlayerAnalyticsContext, flags?: PlayerMetricFlags): Promise<void>;
4077
4083
 
4084
+ declare const MQTT_CA_CERT_FILE = "src/certs/emqxsl-ca.crt";
4085
+ type MQTTConfig = {
4086
+ enabled: boolean;
4087
+ brokerAddress: string;
4088
+ brokerPort: number;
4089
+ wsPort: number;
4090
+ username: string;
4091
+ password: string;
4092
+ topicPrefix: string;
4093
+ qos: 0 | 1 | 2;
4094
+ brokerUrl?: string;
4095
+ };
4096
+ declare const DEFAULT_MQTT_CONFIG: MQTTConfig;
4097
+ declare const mqttConfig: MQTTConfig;
4098
+ declare function applyMQTTConfig(overrides: Partial<MQTTConfig>): void;
4099
+ declare function isMQTTEnabled(): boolean;
4100
+ declare function buildMQTTBrokerUrl(): string;
4101
+ declare function buildPlayerTopic(licenseKey: string, channel: "metrics" | "impressions" | "heartbeat"): string;
4102
+
4103
+ type MQTTStatus = "disconnected" | "connecting" | "connected" | "error";
4104
+ declare function getMQTTStatus(): MQTTStatus;
4105
+ declare function isMQTTConnected(): boolean;
4106
+ declare function isMQTTConfigured(): boolean;
4107
+ declare function configureMQTT(overrides: Partial<MQTTConfig>): void;
4108
+ declare function initMQTTClient(): void;
4109
+ declare function ensureMQTTClient(): void;
4110
+ declare function publishMQTT(topic: string, payload: Record<string, unknown>): boolean;
4111
+ declare function disconnectMQTT(): void;
4112
+
4078
4113
  declare function initializePolyfills(): void;
4079
4114
 
4080
4115
  interface NavigatorUAData {
@@ -4143,4 +4178,4 @@ interface PalNonceManager {
4143
4178
  }
4144
4179
  declare function createPalNonceManager(): PalNonceManager;
4145
4180
 
4146
- export { type AdBreak, type AdController, type AdControllerOptions, type AdDetectInfo, type AdImpressionInfo, type AdLoadedInfo, type AdSchedule, type BaseStormcloudPlayerProps, type BrowserInfo, type ClientInfo, 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, canPlay, createHlsAdPlayer, createPalNonceManager, createStormcloudPlayer, StormcloudVideoPlayerComponent as default, detectBrowser, getBrowserConfigOverrides, getBrowserID, getClientInfo, initializePolyfills, isMediaStream, lazy, logBrowserInfo, merge, omit, parseQuery, players, randomString, sendAdDetectTracking, sendAdImpressionTracking, sendAdLoadedTracking, sendHeartbeat, sendInitialTracking, supportsFeature, supportsModernJS, supportsWebKitPresentationMode };
4181
+ export { type AdBreak, type AdController, type AdControllerOptions, type AdDetectInfo, type AdImpressionInfo, type AdLoadedInfo, type AdSchedule, type BaseStormcloudPlayerProps, type BrowserInfo, type ClientInfo, DEFAULT_MQTT_CONFIG, type HeartbeatData, IS_BROWSER, IS_GLOBAL, IS_IOS, IS_SAFARI, type ImaController, type ImaControllerOptions, type LateJoinPolicy, type MQTTConfig, type MQTTStatus, MQTT_CA_CERT_FILE, type OnProgressProps, type PalNonceManager, type PalNonceOptions, type PlayerAnalyticsContext, SUPPORTS_DASH, SUPPORTS_HLS, StormcloudPlayer, StormcloudVideoPlayer, StormcloudVideoPlayerComponent, type StormcloudVideoPlayerConfig, type StormcloudVideoPlayerProps, type TrackingData, applyMQTTConfig, buildMQTTBrokerUrl, buildPlayerTopic, canPlay, configureMQTT, createHlsAdPlayer, createPalNonceManager, createStormcloudPlayer, StormcloudVideoPlayerComponent as default, detectBrowser, disconnectMQTT, ensureMQTTClient, getBrowserConfigOverrides, getBrowserID, getClientInfo, getMQTTStatus, initMQTTClient, initializePolyfills, isMQTTConfigured, isMQTTConnected, isMQTTEnabled, isMediaStream, lazy, logBrowserInfo, merge, mqttConfig, omit, parseQuery, players, publishMQTT, randomString, sendAdDetectTracking, sendAdImpressionTracking, sendAdLoadedTracking, sendHeartbeat, sendInitialTracking, supportsFeature, supportsModernJS, supportsWebKitPresentationMode };
package/lib/index.d.ts CHANGED
@@ -20,6 +20,7 @@ interface StormcloudVideoPlayerConfig {
20
20
  muted?: boolean;
21
21
  allowNativeHls?: boolean;
22
22
  lowLatencyMode?: boolean;
23
+ isLiveStream?: boolean;
23
24
  driftToleranceMs?: number;
24
25
  immediateManifestAds?: boolean;
25
26
  debugAdTiming?: boolean;
@@ -33,6 +34,7 @@ interface StormcloudVideoPlayerConfig {
33
34
  onControlClick?: () => void;
34
35
  licenseKey?: string;
35
36
  vastTagUrl?: string;
37
+ isVmap?: boolean;
36
38
  vmapUrl?: string;
37
39
  vastMode?: 'adstorm' | 'default';
38
40
  minSegmentsBeforePlay?: number;
@@ -177,6 +179,7 @@ declare class StormcloudVideoPlayer {
177
179
  private maxPlaceholderDurationMs;
178
180
  private isShowingPlaceholder;
179
181
  private timeUpdateHandler?;
182
+ private endedHandler?;
180
183
  private emptiedHandler?;
181
184
  private readonly tsScte35Pids;
182
185
  private readonly pmtPids;
@@ -265,6 +268,7 @@ declare class StormcloudVideoPlayer {
265
268
  private markerTypeFromSegmentationTypeId;
266
269
  private initializeTracking;
267
270
  private sendHeartbeatIfNeeded;
271
+ private isVmapEnabled;
268
272
  private fetchAdConfiguration;
269
273
  private fetchAndParseVmap;
270
274
  private parseVmapToBreaks;
@@ -297,7 +301,8 @@ declare class StormcloudVideoPlayer {
297
301
  private showPlaceholderAndWaitForAds;
298
302
  private findCurrentOrNextBreak;
299
303
  private onTimeUpdate;
300
- private handleMidAdJoin;
304
+ private onVideoEnded;
305
+ private handleVmapAdBreak;
301
306
  private scheduleAdStopCountdown;
302
307
  private clearAdStopTimer;
303
308
  private ensureAdStoppedByTimer;
@@ -376,6 +381,7 @@ interface BaseStormcloudPlayerProps {
376
381
  showCustomControls?: boolean;
377
382
  hideLoadingIndicator?: boolean;
378
383
  licenseKey?: string;
384
+ isVmap?: boolean;
379
385
  vmapUrl?: string;
380
386
  adFailsafeTimeoutMs?: number;
381
387
  minSegmentsBeforePlay?: number;
@@ -4075,6 +4081,35 @@ declare function sendAdLoadedTracking(licenseKey: string | undefined, adLoadedIn
4075
4081
  declare function sendAdImpressionTracking(licenseKey: string | undefined, adImpressionInfo: AdImpressionInfo, context?: PlayerAnalyticsContext): Promise<void>;
4076
4082
  declare function sendHeartbeat(licenseKey?: string, context?: PlayerAnalyticsContext, flags?: PlayerMetricFlags): Promise<void>;
4077
4083
 
4084
+ declare const MQTT_CA_CERT_FILE = "src/certs/emqxsl-ca.crt";
4085
+ type MQTTConfig = {
4086
+ enabled: boolean;
4087
+ brokerAddress: string;
4088
+ brokerPort: number;
4089
+ wsPort: number;
4090
+ username: string;
4091
+ password: string;
4092
+ topicPrefix: string;
4093
+ qos: 0 | 1 | 2;
4094
+ brokerUrl?: string;
4095
+ };
4096
+ declare const DEFAULT_MQTT_CONFIG: MQTTConfig;
4097
+ declare const mqttConfig: MQTTConfig;
4098
+ declare function applyMQTTConfig(overrides: Partial<MQTTConfig>): void;
4099
+ declare function isMQTTEnabled(): boolean;
4100
+ declare function buildMQTTBrokerUrl(): string;
4101
+ declare function buildPlayerTopic(licenseKey: string, channel: "metrics" | "impressions" | "heartbeat"): string;
4102
+
4103
+ type MQTTStatus = "disconnected" | "connecting" | "connected" | "error";
4104
+ declare function getMQTTStatus(): MQTTStatus;
4105
+ declare function isMQTTConnected(): boolean;
4106
+ declare function isMQTTConfigured(): boolean;
4107
+ declare function configureMQTT(overrides: Partial<MQTTConfig>): void;
4108
+ declare function initMQTTClient(): void;
4109
+ declare function ensureMQTTClient(): void;
4110
+ declare function publishMQTT(topic: string, payload: Record<string, unknown>): boolean;
4111
+ declare function disconnectMQTT(): void;
4112
+
4078
4113
  declare function initializePolyfills(): void;
4079
4114
 
4080
4115
  interface NavigatorUAData {
@@ -4143,4 +4178,4 @@ interface PalNonceManager {
4143
4178
  }
4144
4179
  declare function createPalNonceManager(): PalNonceManager;
4145
4180
 
4146
- export { type AdBreak, type AdController, type AdControllerOptions, type AdDetectInfo, type AdImpressionInfo, type AdLoadedInfo, type AdSchedule, type BaseStormcloudPlayerProps, type BrowserInfo, type ClientInfo, 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, canPlay, createHlsAdPlayer, createPalNonceManager, createStormcloudPlayer, StormcloudVideoPlayerComponent as default, detectBrowser, getBrowserConfigOverrides, getBrowserID, getClientInfo, initializePolyfills, isMediaStream, lazy, logBrowserInfo, merge, omit, parseQuery, players, randomString, sendAdDetectTracking, sendAdImpressionTracking, sendAdLoadedTracking, sendHeartbeat, sendInitialTracking, supportsFeature, supportsModernJS, supportsWebKitPresentationMode };
4181
+ export { type AdBreak, type AdController, type AdControllerOptions, type AdDetectInfo, type AdImpressionInfo, type AdLoadedInfo, type AdSchedule, type BaseStormcloudPlayerProps, type BrowserInfo, type ClientInfo, DEFAULT_MQTT_CONFIG, type HeartbeatData, IS_BROWSER, IS_GLOBAL, IS_IOS, IS_SAFARI, type ImaController, type ImaControllerOptions, type LateJoinPolicy, type MQTTConfig, type MQTTStatus, MQTT_CA_CERT_FILE, type OnProgressProps, type PalNonceManager, type PalNonceOptions, type PlayerAnalyticsContext, SUPPORTS_DASH, SUPPORTS_HLS, StormcloudPlayer, StormcloudVideoPlayer, StormcloudVideoPlayerComponent, type StormcloudVideoPlayerConfig, type StormcloudVideoPlayerProps, type TrackingData, applyMQTTConfig, buildMQTTBrokerUrl, buildPlayerTopic, canPlay, configureMQTT, createHlsAdPlayer, createPalNonceManager, createStormcloudPlayer, StormcloudVideoPlayerComponent as default, detectBrowser, disconnectMQTT, ensureMQTTClient, getBrowserConfigOverrides, getBrowserID, getClientInfo, getMQTTStatus, initMQTTClient, initializePolyfills, isMQTTConfigured, isMQTTConnected, isMQTTEnabled, isMediaStream, lazy, logBrowserInfo, merge, mqttConfig, omit, parseQuery, players, publishMQTT, randomString, sendAdDetectTracking, sendAdImpressionTracking, sendAdLoadedTracking, sendHeartbeat, sendInitialTracking, supportsFeature, supportsModernJS, supportsWebKitPresentationMode };