stormcloud-video-player 0.6.12 → 0.6.13
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.
- package/README.md +33 -294
- package/dist/stormcloud-vp.min.js +1 -1
- package/lib/index.cjs +144 -168
- package/lib/index.cjs.map +1 -1
- package/lib/index.d.cts +22 -3
- package/lib/index.d.ts +22 -3
- package/lib/index.js +113 -169
- package/lib/index.js.map +1 -1
- package/lib/player/StormcloudVideoPlayer.cjs +102 -166
- package/lib/player/StormcloudVideoPlayer.cjs.map +1 -1
- package/lib/player/StormcloudVideoPlayer.d.cts +1 -1
- package/lib/players/HlsPlayer.cjs +102 -166
- package/lib/players/HlsPlayer.cjs.map +1 -1
- package/lib/players/HlsPlayer.d.cts +1 -1
- package/lib/players/index.cjs +102 -166
- package/lib/players/index.cjs.map +1 -1
- package/lib/sdk/vastAdLayer.d.cts +1 -1
- package/lib/sdk/vastManager.d.cts +1 -1
- package/lib/{types-FjAlGhAL.d.cts → types-DSKC4ySr.d.cts} +0 -1
- package/lib/ui/StormcloudVideoPlayer.cjs +104 -170
- package/lib/ui/StormcloudVideoPlayer.cjs.map +1 -1
- package/lib/ui/StormcloudVideoPlayer.d.cts +1 -1
- package/lib/utils/mqttClient.cjs +79 -8
- package/lib/utils/mqttClient.cjs.map +1 -1
- package/lib/utils/mqttClient.d.cts +6 -2
- package/lib/utils/mqttConfig.cjs +136 -0
- package/lib/utils/mqttConfig.cjs.map +1 -0
- package/lib/utils/mqttConfig.d.cts +19 -0
- package/lib/utils/tracking.cjs +138 -159
- package/lib/utils/tracking.cjs.map +1 -1
- package/lib/utils/tracking.d.cts +2 -3
- package/package.json +2 -3
package/lib/index.d.cts
CHANGED
|
@@ -36,7 +36,6 @@ interface StormcloudVideoPlayerConfig {
|
|
|
36
36
|
disableFiller?: boolean;
|
|
37
37
|
adTransitionGapMs?: number;
|
|
38
38
|
singlePipelineMode?: boolean;
|
|
39
|
-
mqttBrokerUrl?: string;
|
|
40
39
|
}
|
|
41
40
|
interface ClientInfo {
|
|
42
41
|
brand: string;
|
|
@@ -3984,11 +3983,31 @@ type PlayerMetricFlags = {
|
|
|
3984
3983
|
declare function sendInitialTracking(licenseKey?: string, context?: PlayerAnalyticsContext): Promise<void>;
|
|
3985
3984
|
declare function sendHeartbeat(licenseKey?: string, context?: PlayerAnalyticsContext, flags?: PlayerMetricFlags): Promise<void>;
|
|
3986
3985
|
|
|
3986
|
+
type MQTTConfig = {
|
|
3987
|
+
enabled: boolean;
|
|
3988
|
+
brokerAddress: string;
|
|
3989
|
+
brokerPort: number;
|
|
3990
|
+
wsPort: number;
|
|
3991
|
+
username: string;
|
|
3992
|
+
password: string;
|
|
3993
|
+
topicPrefix: string;
|
|
3994
|
+
qos: 0 | 1 | 2;
|
|
3995
|
+
brokerUrl?: string;
|
|
3996
|
+
};
|
|
3997
|
+
declare const DEFAULT_MQTT_CONFIG: MQTTConfig;
|
|
3998
|
+
declare const mqttConfig: MQTTConfig;
|
|
3999
|
+
declare function applyMQTTConfig(overrides: Partial<MQTTConfig>): void;
|
|
4000
|
+
declare function isMQTTEnabled(): boolean;
|
|
4001
|
+
declare function buildMQTTBrokerUrl(): string;
|
|
4002
|
+
declare function buildPlayerTopic(licenseKey: string, channel: "metrics" | "impressions" | "heartbeat"): string;
|
|
4003
|
+
|
|
3987
4004
|
type MQTTStatus = "disconnected" | "connecting" | "connected" | "error";
|
|
3988
4005
|
declare function getMQTTStatus(): MQTTStatus;
|
|
3989
4006
|
declare function isMQTTConnected(): boolean;
|
|
3990
4007
|
declare function isMQTTConfigured(): boolean;
|
|
3991
|
-
declare function
|
|
4008
|
+
declare function configureMQTT(overrides: Partial<MQTTConfig>): void;
|
|
4009
|
+
declare function initMQTTClient(): void;
|
|
4010
|
+
declare function ensureMQTTClient(): void;
|
|
3992
4011
|
declare function publishMQTT(topic: string, payload: Record<string, unknown>): boolean;
|
|
3993
4012
|
declare function disconnectMQTT(): void;
|
|
3994
4013
|
|
|
@@ -4074,4 +4093,4 @@ interface VastAdLayer {
|
|
|
4074
4093
|
}
|
|
4075
4094
|
declare function createVastAdLayer(contentVideo: HTMLVideoElement, options?: VastAdLayerOptions): VastAdLayer;
|
|
4076
4095
|
|
|
4077
|
-
export { type AdBreak, type AdSchedule, type BaseStormcloudPlayerProps, type BrowserInfo, type ClientInfo, type HeartbeatData, IS_BROWSER, IS_GLOBAL, IS_IOS, IS_SAFARI, type LateJoinPolicy, type MQTTStatus, type OnProgressProps, SUPPORTS_DASH, SUPPORTS_HLS, StormcloudPlayer, StormcloudVideoPlayer, StormcloudVideoPlayerComponent, type StormcloudVideoPlayerConfig, type StormcloudVideoPlayerProps, type TrackingData, type VastAdLayer, type VastAdLayerOptions, type VastAdLayerOptionsUpdate, type VastBidResponse, type VastManager, type VastManagerOptions, canPlay, createStormcloudPlayer, createVastAdLayer, createVastManager, StormcloudVideoPlayerComponent as default, detectBrowser, disconnectMQTT, getBrowserConfigOverrides, getBrowserID, getClientInfo, getMQTTStatus, initMQTTClient, initializePolyfills, isMQTTConfigured, isMQTTConnected, isMediaStream, lazy, logBrowserInfo, merge, omit, parseQuery, players, publishMQTT, randomString, sendHeartbeat, sendInitialTracking, supportsFeature, supportsModernJS, supportsWebKitPresentationMode };
|
|
4096
|
+
export { type AdBreak, type AdSchedule, type BaseStormcloudPlayerProps, type BrowserInfo, type ClientInfo, DEFAULT_MQTT_CONFIG, type HeartbeatData, IS_BROWSER, IS_GLOBAL, IS_IOS, IS_SAFARI, type LateJoinPolicy, type MQTTConfig, type MQTTStatus, type OnProgressProps, SUPPORTS_DASH, SUPPORTS_HLS, StormcloudPlayer, StormcloudVideoPlayer, StormcloudVideoPlayerComponent, type StormcloudVideoPlayerConfig, type StormcloudVideoPlayerProps, type TrackingData, type VastAdLayer, type VastAdLayerOptions, type VastAdLayerOptionsUpdate, type VastBidResponse, type VastManager, type VastManagerOptions, applyMQTTConfig, buildMQTTBrokerUrl, buildPlayerTopic, canPlay, configureMQTT, createStormcloudPlayer, createVastAdLayer, createVastManager, 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, sendHeartbeat, sendInitialTracking, supportsFeature, supportsModernJS, supportsWebKitPresentationMode };
|
package/lib/index.d.ts
CHANGED
|
@@ -36,7 +36,6 @@ interface StormcloudVideoPlayerConfig {
|
|
|
36
36
|
disableFiller?: boolean;
|
|
37
37
|
adTransitionGapMs?: number;
|
|
38
38
|
singlePipelineMode?: boolean;
|
|
39
|
-
mqttBrokerUrl?: string;
|
|
40
39
|
}
|
|
41
40
|
interface ClientInfo {
|
|
42
41
|
brand: string;
|
|
@@ -3984,11 +3983,31 @@ type PlayerMetricFlags = {
|
|
|
3984
3983
|
declare function sendInitialTracking(licenseKey?: string, context?: PlayerAnalyticsContext): Promise<void>;
|
|
3985
3984
|
declare function sendHeartbeat(licenseKey?: string, context?: PlayerAnalyticsContext, flags?: PlayerMetricFlags): Promise<void>;
|
|
3986
3985
|
|
|
3986
|
+
type MQTTConfig = {
|
|
3987
|
+
enabled: boolean;
|
|
3988
|
+
brokerAddress: string;
|
|
3989
|
+
brokerPort: number;
|
|
3990
|
+
wsPort: number;
|
|
3991
|
+
username: string;
|
|
3992
|
+
password: string;
|
|
3993
|
+
topicPrefix: string;
|
|
3994
|
+
qos: 0 | 1 | 2;
|
|
3995
|
+
brokerUrl?: string;
|
|
3996
|
+
};
|
|
3997
|
+
declare const DEFAULT_MQTT_CONFIG: MQTTConfig;
|
|
3998
|
+
declare const mqttConfig: MQTTConfig;
|
|
3999
|
+
declare function applyMQTTConfig(overrides: Partial<MQTTConfig>): void;
|
|
4000
|
+
declare function isMQTTEnabled(): boolean;
|
|
4001
|
+
declare function buildMQTTBrokerUrl(): string;
|
|
4002
|
+
declare function buildPlayerTopic(licenseKey: string, channel: "metrics" | "impressions" | "heartbeat"): string;
|
|
4003
|
+
|
|
3987
4004
|
type MQTTStatus = "disconnected" | "connecting" | "connected" | "error";
|
|
3988
4005
|
declare function getMQTTStatus(): MQTTStatus;
|
|
3989
4006
|
declare function isMQTTConnected(): boolean;
|
|
3990
4007
|
declare function isMQTTConfigured(): boolean;
|
|
3991
|
-
declare function
|
|
4008
|
+
declare function configureMQTT(overrides: Partial<MQTTConfig>): void;
|
|
4009
|
+
declare function initMQTTClient(): void;
|
|
4010
|
+
declare function ensureMQTTClient(): void;
|
|
3992
4011
|
declare function publishMQTT(topic: string, payload: Record<string, unknown>): boolean;
|
|
3993
4012
|
declare function disconnectMQTT(): void;
|
|
3994
4013
|
|
|
@@ -4074,4 +4093,4 @@ interface VastAdLayer {
|
|
|
4074
4093
|
}
|
|
4075
4094
|
declare function createVastAdLayer(contentVideo: HTMLVideoElement, options?: VastAdLayerOptions): VastAdLayer;
|
|
4076
4095
|
|
|
4077
|
-
export { type AdBreak, type AdSchedule, type BaseStormcloudPlayerProps, type BrowserInfo, type ClientInfo, type HeartbeatData, IS_BROWSER, IS_GLOBAL, IS_IOS, IS_SAFARI, type LateJoinPolicy, type MQTTStatus, type OnProgressProps, SUPPORTS_DASH, SUPPORTS_HLS, StormcloudPlayer, StormcloudVideoPlayer, StormcloudVideoPlayerComponent, type StormcloudVideoPlayerConfig, type StormcloudVideoPlayerProps, type TrackingData, type VastAdLayer, type VastAdLayerOptions, type VastAdLayerOptionsUpdate, type VastBidResponse, type VastManager, type VastManagerOptions, canPlay, createStormcloudPlayer, createVastAdLayer, createVastManager, StormcloudVideoPlayerComponent as default, detectBrowser, disconnectMQTT, getBrowserConfigOverrides, getBrowserID, getClientInfo, getMQTTStatus, initMQTTClient, initializePolyfills, isMQTTConfigured, isMQTTConnected, isMediaStream, lazy, logBrowserInfo, merge, omit, parseQuery, players, publishMQTT, randomString, sendHeartbeat, sendInitialTracking, supportsFeature, supportsModernJS, supportsWebKitPresentationMode };
|
|
4096
|
+
export { type AdBreak, type AdSchedule, type BaseStormcloudPlayerProps, type BrowserInfo, type ClientInfo, DEFAULT_MQTT_CONFIG, type HeartbeatData, IS_BROWSER, IS_GLOBAL, IS_IOS, IS_SAFARI, type LateJoinPolicy, type MQTTConfig, type MQTTStatus, type OnProgressProps, SUPPORTS_DASH, SUPPORTS_HLS, StormcloudPlayer, StormcloudVideoPlayer, StormcloudVideoPlayerComponent, type StormcloudVideoPlayerConfig, type StormcloudVideoPlayerProps, type TrackingData, type VastAdLayer, type VastAdLayerOptions, type VastAdLayerOptionsUpdate, type VastBidResponse, type VastManager, type VastManagerOptions, applyMQTTConfig, buildMQTTBrokerUrl, buildPlayerTopic, canPlay, configureMQTT, createStormcloudPlayer, createVastAdLayer, createVastManager, 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, sendHeartbeat, sendInitialTracking, supportsFeature, supportsModernJS, supportsWebKitPresentationMode };
|
package/lib/index.js
CHANGED
|
@@ -2030,12 +2030,36 @@ function createVastAdLayer(contentVideo, options) {
|
|
|
2030
2030
|
}
|
|
2031
2031
|
};
|
|
2032
2032
|
}
|
|
2033
|
+
// src/utils/mqttConfig.ts
|
|
2034
|
+
var DEFAULT_MQTT_CONFIG = {
|
|
2035
|
+
enabled: true,
|
|
2036
|
+
brokerAddress: "vecbae77.ala.us-east-1.emqxsl.com",
|
|
2037
|
+
brokerPort: 8883,
|
|
2038
|
+
wsPort: 8084,
|
|
2039
|
+
username: "for-sonifi",
|
|
2040
|
+
password: "sonifi-mqtt",
|
|
2041
|
+
topicPrefix: "adstorm/players",
|
|
2042
|
+
qos: 1
|
|
2043
|
+
};
|
|
2044
|
+
var mqttConfig = _object_spread({}, DEFAULT_MQTT_CONFIG);
|
|
2045
|
+
function applyMQTTConfig(overrides) {
|
|
2046
|
+
Object.assign(mqttConfig, overrides);
|
|
2047
|
+
}
|
|
2048
|
+
function isMQTTEnabled() {
|
|
2049
|
+
return mqttConfig.enabled;
|
|
2050
|
+
}
|
|
2051
|
+
function buildMQTTBrokerUrl() {
|
|
2052
|
+
if (mqttConfig.brokerUrl) return mqttConfig.brokerUrl;
|
|
2053
|
+
return "wss://".concat(mqttConfig.brokerAddress, ":").concat(mqttConfig.wsPort, "/mqtt");
|
|
2054
|
+
}
|
|
2055
|
+
function buildPlayerTopic(licenseKey, channel) {
|
|
2056
|
+
return "".concat(mqttConfig.topicPrefix, "/").concat(licenseKey, "/").concat(channel);
|
|
2057
|
+
}
|
|
2033
2058
|
// src/utils/mqttClient.ts
|
|
2034
2059
|
import mqtt from "mqtt";
|
|
2035
2060
|
var LOG2 = "[StormcloudVideoPlayer][MQTT]";
|
|
2036
2061
|
var client = null;
|
|
2037
2062
|
var status = "disconnected";
|
|
2038
|
-
var brokerUrl = "";
|
|
2039
2063
|
function getMQTTStatus() {
|
|
2040
2064
|
return status;
|
|
2041
2065
|
}
|
|
@@ -2043,17 +2067,22 @@ function isMQTTConnected() {
|
|
|
2043
2067
|
return status === "connected" && client !== null && client.connected;
|
|
2044
2068
|
}
|
|
2045
2069
|
function isMQTTConfigured() {
|
|
2046
|
-
return
|
|
2070
|
+
return isMQTTEnabled();
|
|
2071
|
+
}
|
|
2072
|
+
function configureMQTT(overrides) {
|
|
2073
|
+
applyMQTTConfig(overrides);
|
|
2074
|
+
disconnectMQTT();
|
|
2047
2075
|
}
|
|
2048
|
-
function initMQTTClient(
|
|
2049
|
-
|
|
2050
|
-
|
|
2051
|
-
brokerUrl = url;
|
|
2076
|
+
function initMQTTClient() {
|
|
2077
|
+
if (client || !isMQTTEnabled()) return;
|
|
2078
|
+
var url = buildMQTTBrokerUrl();
|
|
2052
2079
|
status = "connecting";
|
|
2053
2080
|
var clientId = "stormcloud-vp-".concat(Math.random().toString(36).slice(2, 9));
|
|
2054
2081
|
try {
|
|
2055
2082
|
client = mqtt.connect(url, {
|
|
2056
2083
|
clientId: clientId,
|
|
2084
|
+
username: mqttConfig.username,
|
|
2085
|
+
password: mqttConfig.password,
|
|
2057
2086
|
keepalive: 60,
|
|
2058
2087
|
clean: true,
|
|
2059
2088
|
reconnectPeriod: 5e3,
|
|
@@ -2087,13 +2116,22 @@ function initMQTTClient(url) {
|
|
|
2087
2116
|
}
|
|
2088
2117
|
});
|
|
2089
2118
|
}
|
|
2119
|
+
function ensureMQTTClient() {
|
|
2120
|
+
if (isMQTTEnabled() && !client) {
|
|
2121
|
+
initMQTTClient();
|
|
2122
|
+
}
|
|
2123
|
+
}
|
|
2090
2124
|
function publishMQTT(topic, payload) {
|
|
2125
|
+
if (!isMQTTEnabled()) {
|
|
2126
|
+
return false;
|
|
2127
|
+
}
|
|
2128
|
+
ensureMQTTClient();
|
|
2091
2129
|
if (!client) {
|
|
2092
2130
|
return false;
|
|
2093
2131
|
}
|
|
2094
2132
|
try {
|
|
2095
2133
|
client.publish(topic, JSON.stringify(payload), {
|
|
2096
|
-
qos:
|
|
2134
|
+
qos: mqttConfig.qos
|
|
2097
2135
|
});
|
|
2098
2136
|
return true;
|
|
2099
2137
|
} catch (err) {
|
|
@@ -2106,7 +2144,6 @@ function disconnectMQTT() {
|
|
|
2106
2144
|
client.end(true);
|
|
2107
2145
|
client = null;
|
|
2108
2146
|
status = "disconnected";
|
|
2109
|
-
brokerUrl = "";
|
|
2110
2147
|
}
|
|
2111
2148
|
}
|
|
2112
2149
|
// src/utils/tracking.ts
|
|
@@ -2328,171 +2365,91 @@ function getBrowserID(clientInfo) {
|
|
|
2328
2365
|
});
|
|
2329
2366
|
})();
|
|
2330
2367
|
}
|
|
2331
|
-
|
|
2332
|
-
|
|
2333
|
-
mqttTopicPrefix = prefix || "adstorm";
|
|
2334
|
-
}
|
|
2335
|
-
var PLAYER_TRACKING_BASE_URL = "https://adstorm.co/api-adstorm-dev/adstorm/player-tracking";
|
|
2336
|
-
var TRACK_URL = "".concat(PLAYER_TRACKING_BASE_URL, "/metrics/ingest");
|
|
2337
|
-
var HEARTBEAT_URL = "".concat(PLAYER_TRACKING_BASE_URL, "/heartbeat");
|
|
2338
|
-
var IMPRESSIONS_URL = "".concat(PLAYER_TRACKING_BASE_URL, "/impressions/ingest");
|
|
2339
|
-
function buildHeaders(licenseKey) {
|
|
2340
|
-
var headers = {
|
|
2341
|
-
"Content-Type": "application/json"
|
|
2342
|
-
};
|
|
2343
|
-
if (licenseKey) headers["Authorization"] = "Bearer ".concat(licenseKey);
|
|
2344
|
-
return headers;
|
|
2368
|
+
function canPublish(licenseKey) {
|
|
2369
|
+
return Boolean(isMQTTEnabled() && licenseKey);
|
|
2345
2370
|
}
|
|
2346
|
-
function
|
|
2371
|
+
function buildPlayerMetricEvent() {
|
|
2347
2372
|
return _async_to_generator(function() {
|
|
2348
|
-
var
|
|
2349
|
-
return _ts_generator(this, function(_state) {
|
|
2350
|
-
switch(_state.label){
|
|
2351
|
-
case 0:
|
|
2352
|
-
return [
|
|
2353
|
-
4,
|
|
2354
|
-
fetch(url, {
|
|
2355
|
-
method: "POST",
|
|
2356
|
-
headers: buildHeaders(licenseKey),
|
|
2357
|
-
body: JSON.stringify(body)
|
|
2358
|
-
})
|
|
2359
|
-
];
|
|
2360
|
-
case 1:
|
|
2361
|
-
response = _state.sent();
|
|
2362
|
-
if (!response.ok) throw new Error("HTTP error! status: ".concat(response.status));
|
|
2363
|
-
return [
|
|
2364
|
-
4,
|
|
2365
|
-
response.json()
|
|
2366
|
-
];
|
|
2367
|
-
case 2:
|
|
2368
|
-
_state.sent();
|
|
2369
|
-
return [
|
|
2370
|
-
2
|
|
2371
|
-
];
|
|
2372
|
-
}
|
|
2373
|
-
});
|
|
2374
|
-
})();
|
|
2375
|
-
}
|
|
2376
|
-
function buildPlayerMetricEvent(_0) {
|
|
2377
|
-
return _async_to_generator(function(licenseKey) {
|
|
2378
|
-
var context, flags, _flags_captureAt, clientInfo, browserId, captureAt;
|
|
2373
|
+
var context, flags, _flags_captureAt, _flags_adLoaded, _flags_adDetect, clientInfo, playerId, captureAt;
|
|
2379
2374
|
var _arguments = arguments;
|
|
2380
2375
|
return _ts_generator(this, function(_state) {
|
|
2381
2376
|
switch(_state.label){
|
|
2382
2377
|
case 0:
|
|
2383
|
-
context = _arguments.length >
|
|
2378
|
+
context = _arguments.length > 0 && _arguments[0] !== void 0 ? _arguments[0] : {}, flags = _arguments.length > 1 && _arguments[1] !== void 0 ? _arguments[1] : {};
|
|
2384
2379
|
clientInfo = getClientInfo();
|
|
2385
2380
|
return [
|
|
2386
2381
|
4,
|
|
2387
2382
|
getBrowserID(clientInfo)
|
|
2388
2383
|
];
|
|
2389
2384
|
case 1:
|
|
2390
|
-
|
|
2385
|
+
playerId = _state.sent();
|
|
2391
2386
|
captureAt = (_flags_captureAt = flags.captureAt) !== null && _flags_captureAt !== void 0 ? _flags_captureAt : /* @__PURE__ */ new Date().toISOString();
|
|
2392
2387
|
return [
|
|
2393
2388
|
2,
|
|
2394
|
-
{
|
|
2395
|
-
player_id:
|
|
2396
|
-
browserId: browserId,
|
|
2389
|
+
_object_spread({
|
|
2390
|
+
player_id: playerId,
|
|
2397
2391
|
device_type: clientInfo.deviceType,
|
|
2398
|
-
|
|
2399
|
-
|
|
2400
|
-
|
|
2401
|
-
|
|
2402
|
-
|
|
2403
|
-
|
|
2404
|
-
|
|
2405
|
-
timestamp: captureAt
|
|
2406
|
-
}
|
|
2392
|
+
os: clientInfo.os.toLowerCase(),
|
|
2393
|
+
ad_loaded: (_flags_adLoaded = flags.adLoaded) !== null && _flags_adLoaded !== void 0 ? _flags_adLoaded : false,
|
|
2394
|
+
ad_detect: (_flags_adDetect = flags.adDetect) !== null && _flags_adDetect !== void 0 ? _flags_adDetect : false,
|
|
2395
|
+
capture_at: captureAt
|
|
2396
|
+
}, context.inputStreamType ? {
|
|
2397
|
+
input_stream_type: context.inputStreamType
|
|
2398
|
+
} : {})
|
|
2407
2399
|
];
|
|
2408
2400
|
}
|
|
2409
2401
|
});
|
|
2410
2402
|
}).apply(this, arguments);
|
|
2411
2403
|
}
|
|
2412
|
-
function
|
|
2413
|
-
|
|
2414
|
-
|
|
2415
|
-
switch(_state.label){
|
|
2416
|
-
case 0:
|
|
2417
|
-
if (isMQTTConfigured()) {
|
|
2418
|
-
publishMQTT(mqttTopic, body);
|
|
2419
|
-
return [
|
|
2420
|
-
2
|
|
2421
|
-
];
|
|
2422
|
-
}
|
|
2423
|
-
return [
|
|
2424
|
-
4,
|
|
2425
|
-
postJson(httpUrl, licenseKey, body)
|
|
2426
|
-
];
|
|
2427
|
-
case 1:
|
|
2428
|
-
_state.sent();
|
|
2429
|
-
return [
|
|
2430
|
-
2
|
|
2431
|
-
];
|
|
2432
|
-
}
|
|
2433
|
-
});
|
|
2434
|
-
})();
|
|
2404
|
+
function publishTracking(licenseKey, channel, body) {
|
|
2405
|
+
ensureMQTTClient();
|
|
2406
|
+
publishMQTT(buildPlayerTopic(licenseKey, channel), body);
|
|
2435
2407
|
}
|
|
2436
2408
|
function sendInitialTracking(_0) {
|
|
2437
2409
|
return _async_to_generator(function(licenseKey) {
|
|
2438
|
-
var context,
|
|
2410
|
+
var context, metricEvent, error;
|
|
2439
2411
|
var _arguments = arguments;
|
|
2440
2412
|
return _ts_generator(this, function(_state) {
|
|
2441
2413
|
switch(_state.label){
|
|
2442
2414
|
case 0:
|
|
2443
2415
|
context = _arguments.length > 1 && _arguments[1] !== void 0 ? _arguments[1] : {};
|
|
2416
|
+
if (!canPublish(licenseKey)) return [
|
|
2417
|
+
2
|
|
2418
|
+
];
|
|
2444
2419
|
_state.label = 1;
|
|
2445
2420
|
case 1:
|
|
2446
2421
|
_state.trys.push([
|
|
2447
2422
|
1,
|
|
2448
|
-
|
|
2423
|
+
3,
|
|
2449
2424
|
,
|
|
2450
|
-
|
|
2425
|
+
4
|
|
2451
2426
|
]);
|
|
2452
|
-
clientInfo = getClientInfo();
|
|
2453
2427
|
return [
|
|
2454
2428
|
4,
|
|
2455
|
-
|
|
2429
|
+
buildPlayerMetricEvent(context, {
|
|
2430
|
+
adLoaded: false,
|
|
2431
|
+
adDetect: false
|
|
2432
|
+
})
|
|
2456
2433
|
];
|
|
2457
2434
|
case 2:
|
|
2458
|
-
|
|
2459
|
-
|
|
2460
|
-
trackingData = _object_spread({
|
|
2461
|
-
browserId: browserId
|
|
2462
|
-
}, clientInfo);
|
|
2463
|
-
metricsBody = {
|
|
2435
|
+
metricEvent = _state.sent();
|
|
2436
|
+
publishTracking(licenseKey, "metrics", {
|
|
2464
2437
|
events: [
|
|
2465
|
-
|
|
2466
|
-
|
|
2467
|
-
|
|
2468
|
-
input_stream_type: context.inputStreamType,
|
|
2469
|
-
os: clientInfo.os,
|
|
2470
|
-
ad_loaded: false,
|
|
2471
|
-
ad_detect: false,
|
|
2472
|
-
license_key: licenseKey,
|
|
2473
|
-
capture_at: captureAt
|
|
2474
|
-
}
|
|
2475
|
-
],
|
|
2476
|
-
trackingData: trackingData
|
|
2477
|
-
};
|
|
2478
|
-
return [
|
|
2479
|
-
4,
|
|
2480
|
-
publishOrPost("".concat(mqttTopicPrefix, "/tracking/metrics"), TRACK_URL, licenseKey, metricsBody)
|
|
2481
|
-
];
|
|
2482
|
-
case 3:
|
|
2483
|
-
_state.sent();
|
|
2438
|
+
metricEvent
|
|
2439
|
+
]
|
|
2440
|
+
});
|
|
2484
2441
|
return [
|
|
2485
2442
|
3,
|
|
2486
|
-
|
|
2443
|
+
4
|
|
2487
2444
|
];
|
|
2488
|
-
case
|
|
2445
|
+
case 3:
|
|
2489
2446
|
error = _state.sent();
|
|
2490
2447
|
console.error("[StormcloudVideoPlayer] Error sending initial tracking data:", error);
|
|
2491
2448
|
return [
|
|
2492
2449
|
3,
|
|
2493
|
-
|
|
2450
|
+
4
|
|
2494
2451
|
];
|
|
2495
|
-
case
|
|
2452
|
+
case 4:
|
|
2496
2453
|
return [
|
|
2497
2454
|
2
|
|
2498
2455
|
];
|
|
@@ -2590,61 +2547,54 @@ function sendAdLoadedTracking(_0, _1) {
|
|
|
2590
2547
|
}
|
|
2591
2548
|
function sendAdImpressionTracking(_0, _1) {
|
|
2592
2549
|
return _async_to_generator(function(licenseKey, adImpressionInfo) {
|
|
2593
|
-
var context, metricEvent,
|
|
2550
|
+
var context, metricEvent, error;
|
|
2594
2551
|
var _arguments = arguments;
|
|
2595
2552
|
return _ts_generator(this, function(_state) {
|
|
2596
2553
|
switch(_state.label){
|
|
2597
2554
|
case 0:
|
|
2598
2555
|
context = _arguments.length > 2 && _arguments[2] !== void 0 ? _arguments[2] : {};
|
|
2556
|
+
if (!canPublish(licenseKey)) return [
|
|
2557
|
+
2
|
|
2558
|
+
];
|
|
2599
2559
|
_state.label = 1;
|
|
2600
2560
|
case 1:
|
|
2601
2561
|
_state.trys.push([
|
|
2602
2562
|
1,
|
|
2603
|
-
|
|
2563
|
+
3,
|
|
2604
2564
|
,
|
|
2605
|
-
|
|
2565
|
+
4
|
|
2606
2566
|
]);
|
|
2607
2567
|
return [
|
|
2608
2568
|
4,
|
|
2609
|
-
buildPlayerMetricEvent(
|
|
2569
|
+
buildPlayerMetricEvent(context, {
|
|
2610
2570
|
captureAt: adImpressionInfo.timestamp
|
|
2611
2571
|
})
|
|
2612
2572
|
];
|
|
2613
2573
|
case 2:
|
|
2614
2574
|
metricEvent = _state.sent();
|
|
2615
|
-
|
|
2616
|
-
|
|
2575
|
+
publishTracking(licenseKey, "heartbeat", metricEvent);
|
|
2576
|
+
publishTracking(licenseKey, "impressions", {
|
|
2617
2577
|
events: [
|
|
2618
2578
|
{
|
|
2619
2579
|
player_id: metricEvent.player_id,
|
|
2620
2580
|
ad_played_count: 1,
|
|
2621
2581
|
ad_url: adImpressionInfo.adUrl,
|
|
2622
|
-
license_key: licenseKey,
|
|
2623
2582
|
capture_at: adImpressionInfo.timestamp
|
|
2624
2583
|
}
|
|
2625
2584
|
]
|
|
2626
|
-
};
|
|
2627
|
-
return [
|
|
2628
|
-
4,
|
|
2629
|
-
Promise.all([
|
|
2630
|
-
publishOrPost("".concat(mqttTopicPrefix, "/tracking/heartbeat"), HEARTBEAT_URL, licenseKey, heartbeatBody),
|
|
2631
|
-
publishOrPost("".concat(mqttTopicPrefix, "/tracking/impressions"), IMPRESSIONS_URL, licenseKey, impressionsBody)
|
|
2632
|
-
])
|
|
2633
|
-
];
|
|
2634
|
-
case 3:
|
|
2635
|
-
_state.sent();
|
|
2585
|
+
});
|
|
2636
2586
|
return [
|
|
2637
2587
|
3,
|
|
2638
|
-
|
|
2588
|
+
4
|
|
2639
2589
|
];
|
|
2640
|
-
case
|
|
2590
|
+
case 3:
|
|
2641
2591
|
error = _state.sent();
|
|
2642
2592
|
console.error("[StormcloudVideoPlayer] Error sending ad impression tracking:", error);
|
|
2643
2593
|
return [
|
|
2644
2594
|
3,
|
|
2645
|
-
|
|
2595
|
+
4
|
|
2646
2596
|
];
|
|
2647
|
-
case
|
|
2597
|
+
case 4:
|
|
2648
2598
|
return [
|
|
2649
2599
|
2
|
|
2650
2600
|
];
|
|
@@ -2660,38 +2610,36 @@ function sendHeartbeat(_0) {
|
|
|
2660
2610
|
switch(_state.label){
|
|
2661
2611
|
case 0:
|
|
2662
2612
|
context = _arguments.length > 1 && _arguments[1] !== void 0 ? _arguments[1] : {}, flags = _arguments.length > 2 && _arguments[2] !== void 0 ? _arguments[2] : {};
|
|
2613
|
+
if (!canPublish(licenseKey)) return [
|
|
2614
|
+
2
|
|
2615
|
+
];
|
|
2663
2616
|
_state.label = 1;
|
|
2664
2617
|
case 1:
|
|
2665
2618
|
_state.trys.push([
|
|
2666
2619
|
1,
|
|
2667
|
-
|
|
2620
|
+
3,
|
|
2668
2621
|
,
|
|
2669
|
-
|
|
2622
|
+
4
|
|
2670
2623
|
]);
|
|
2671
2624
|
return [
|
|
2672
2625
|
4,
|
|
2673
|
-
buildPlayerMetricEvent(
|
|
2626
|
+
buildPlayerMetricEvent(context, flags)
|
|
2674
2627
|
];
|
|
2675
2628
|
case 2:
|
|
2676
2629
|
heartbeatData = _state.sent();
|
|
2677
|
-
|
|
2678
|
-
4,
|
|
2679
|
-
publishOrPost("".concat(mqttTopicPrefix, "/tracking/heartbeat"), HEARTBEAT_URL, licenseKey, heartbeatData)
|
|
2680
|
-
];
|
|
2681
|
-
case 3:
|
|
2682
|
-
_state.sent();
|
|
2630
|
+
publishTracking(licenseKey, "heartbeat", heartbeatData);
|
|
2683
2631
|
return [
|
|
2684
2632
|
3,
|
|
2685
|
-
|
|
2633
|
+
4
|
|
2686
2634
|
];
|
|
2687
|
-
case
|
|
2635
|
+
case 3:
|
|
2688
2636
|
error = _state.sent();
|
|
2689
2637
|
console.error("[StormcloudVideoPlayer] Error sending heartbeat:", error);
|
|
2690
2638
|
return [
|
|
2691
2639
|
3,
|
|
2692
|
-
|
|
2640
|
+
4
|
|
2693
2641
|
];
|
|
2694
|
-
case
|
|
2642
|
+
case 4:
|
|
2695
2643
|
return [
|
|
2696
2644
|
2
|
|
2697
2645
|
];
|
|
@@ -4633,10 +4581,8 @@ var StormcloudVideoPlayer = /*#__PURE__*/ function() {
|
|
|
4633
4581
|
key: "initializeTracking",
|
|
4634
4582
|
value: function initializeTracking() {
|
|
4635
4583
|
var _this = this;
|
|
4636
|
-
if (
|
|
4637
|
-
|
|
4638
|
-
setMQTTTopicPrefix(topicPrefix);
|
|
4639
|
-
initMQTTClient(this.config.mqttBrokerUrl, topicPrefix);
|
|
4584
|
+
if (isMQTTEnabled()) {
|
|
4585
|
+
initMQTTClient();
|
|
4640
4586
|
}
|
|
4641
4587
|
sendInitialTracking(this.config.licenseKey, this.getAnalyticsContext()).then(function() {
|
|
4642
4588
|
_this.heartbeatInterval = window.setInterval(function() {
|
|
@@ -6317,7 +6263,7 @@ var StormcloudVideoPlayer = /*#__PURE__*/ function() {
|
|
|
6317
6263
|
clearInterval(this.heartbeatInterval);
|
|
6318
6264
|
this.heartbeatInterval = void 0;
|
|
6319
6265
|
}
|
|
6320
|
-
if (
|
|
6266
|
+
if (isMQTTEnabled()) {
|
|
6321
6267
|
disconnectMQTT();
|
|
6322
6268
|
}
|
|
6323
6269
|
(_this_hls = this.hls) === null || _this_hls === void 0 ? void 0 : _this_hls.destroy();
|
|
@@ -6341,7 +6287,7 @@ var CRITICAL_PROPS = [
|
|
|
6341
6287
|
var CONTROLS_HIDE_DELAY = 3e3;
|
|
6342
6288
|
var DEFAULT_PLAYER_ASPECT_RATIO = 16 / 9;
|
|
6343
6289
|
var StormcloudVideoPlayerComponent = React.memo(function(props) {
|
|
6344
|
-
var src = props.src, autoplay = props.autoplay, muted = props.muted, lowLatencyMode = props.lowLatencyMode, allowNativeHls = props.allowNativeHls, driftToleranceMs = props.driftToleranceMs, immediateManifestAds = props.immediateManifestAds, debugAdTiming = props.debugAdTiming, showCustomControls = props.showCustomControls, hideLoadingIndicator = props.hideLoadingIndicator, onVolumeToggle = props.onVolumeToggle, onFullscreenToggle = props.onFullscreenToggle, onControlClick = props.onControlClick, onReady = props.onReady, wrapperClassName = props.wrapperClassName, wrapperStyle = props.wrapperStyle, className = props.className, style = props.style, controls = props.controls, playsInline = props.playsInline, preload = props.preload, poster = props.poster, children = props.children, licenseKey = props.licenseKey, minSegmentsBeforePlay = props.minSegmentsBeforePlay, disableAds = props.disableAds, disableFiller = props.disableFiller,
|
|
6290
|
+
var src = props.src, autoplay = props.autoplay, muted = props.muted, lowLatencyMode = props.lowLatencyMode, allowNativeHls = props.allowNativeHls, driftToleranceMs = props.driftToleranceMs, immediateManifestAds = props.immediateManifestAds, debugAdTiming = props.debugAdTiming, showCustomControls = props.showCustomControls, hideLoadingIndicator = props.hideLoadingIndicator, onVolumeToggle = props.onVolumeToggle, onFullscreenToggle = props.onFullscreenToggle, onControlClick = props.onControlClick, onReady = props.onReady, wrapperClassName = props.wrapperClassName, wrapperStyle = props.wrapperStyle, className = props.className, style = props.style, controls = props.controls, playsInline = props.playsInline, preload = props.preload, poster = props.poster, children = props.children, licenseKey = props.licenseKey, minSegmentsBeforePlay = props.minSegmentsBeforePlay, disableAds = props.disableAds, disableFiller = props.disableFiller, restVideoAttrs = _object_without_properties(props, [
|
|
6345
6291
|
"src",
|
|
6346
6292
|
"autoplay",
|
|
6347
6293
|
"muted",
|
|
@@ -6368,8 +6314,7 @@ var StormcloudVideoPlayerComponent = React.memo(function(props) {
|
|
|
6368
6314
|
"licenseKey",
|
|
6369
6315
|
"minSegmentsBeforePlay",
|
|
6370
6316
|
"disableAds",
|
|
6371
|
-
"disableFiller"
|
|
6372
|
-
"mqttBrokerUrl"
|
|
6317
|
+
"disableFiller"
|
|
6373
6318
|
]);
|
|
6374
6319
|
var videoRef = useRef(null);
|
|
6375
6320
|
var playerRef = useRef(null);
|
|
@@ -6529,7 +6474,6 @@ var StormcloudVideoPlayerComponent = React.memo(function(props) {
|
|
|
6529
6474
|
if (minSegmentsBeforePlay !== void 0) cfg.minSegmentsBeforePlay = minSegmentsBeforePlay;
|
|
6530
6475
|
if (disableAds !== void 0) cfg.disableAds = disableAds;
|
|
6531
6476
|
cfg.disableFiller = disableFiller !== null && disableFiller !== void 0 ? disableFiller : true;
|
|
6532
|
-
if (mqttBrokerUrl !== void 0) cfg.mqttBrokerUrl = mqttBrokerUrl;
|
|
6533
6477
|
var player = new StormcloudVideoPlayer(cfg);
|
|
6534
6478
|
playerRef.current = player;
|
|
6535
6479
|
player.load().then(function() {
|
|
@@ -8764,5 +8708,5 @@ var createStormcloudPlayer = function createStormcloudPlayer(playerList, fallbac
|
|
|
8764
8708
|
};
|
|
8765
8709
|
var StormcloudPlayer = createStormcloudPlayer(players_default, players_default[players_default.length - 1]);
|
|
8766
8710
|
var StormcloudPlayer_default = StormcloudPlayer;
|
|
8767
|
-
export { IS_BROWSER, IS_GLOBAL, IS_IOS, IS_SAFARI, SUPPORTS_DASH, SUPPORTS_HLS, StormcloudPlayer_default as StormcloudPlayer, StormcloudVideoPlayer, StormcloudVideoPlayerComponent, canPlay, createStormcloudPlayer, createVastAdLayer, createVastManager, StormcloudVideoPlayerComponent as default, detectBrowser, disconnectMQTT, getBrowserConfigOverrides, getBrowserID, getClientInfo, getMQTTStatus, initMQTTClient, initializePolyfills, isMQTTConfigured, isMQTTConnected, isMediaStream, lazy, logBrowserInfo, merge, omit, parseQuery, players_default as players, publishMQTT, randomString, sendHeartbeat, sendInitialTracking, supportsFeature, supportsModernJS, supportsWebKitPresentationMode };
|
|
8711
|
+
export { DEFAULT_MQTT_CONFIG, IS_BROWSER, IS_GLOBAL, IS_IOS, IS_SAFARI, SUPPORTS_DASH, SUPPORTS_HLS, StormcloudPlayer_default as StormcloudPlayer, StormcloudVideoPlayer, StormcloudVideoPlayerComponent, applyMQTTConfig, buildMQTTBrokerUrl, buildPlayerTopic, canPlay, configureMQTT, createStormcloudPlayer, createVastAdLayer, createVastManager, StormcloudVideoPlayerComponent as default, detectBrowser, disconnectMQTT, ensureMQTTClient, getBrowserConfigOverrides, getBrowserID, getClientInfo, getMQTTStatus, initMQTTClient, initializePolyfills, isMQTTConfigured, isMQTTConnected, isMQTTEnabled, isMediaStream, lazy, logBrowserInfo, merge, mqttConfig, omit, parseQuery, players_default as players, publishMQTT, randomString, sendHeartbeat, sendInitialTracking, supportsFeature, supportsModernJS, supportsWebKitPresentationMode };
|
|
8768
8712
|
//# sourceMappingURL=index.js.map
|