unified-video-framework 1.4.424 → 1.4.426

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 (106) hide show
  1. package/package.json +1 -1
  2. package/packages/core/dist/VideoPlayerFactory.d.ts.map +1 -1
  3. package/packages/core/dist/VideoPlayerFactory.js +7 -0
  4. package/packages/core/dist/VideoPlayerFactory.js.map +1 -1
  5. package/packages/core/dist/index.d.ts +2 -0
  6. package/packages/core/dist/index.d.ts.map +1 -1
  7. package/packages/core/dist/index.js +1 -0
  8. package/packages/core/dist/index.js.map +1 -1
  9. package/packages/core/dist/telemetry/TelemetryManager.d.ts +20 -0
  10. package/packages/core/dist/telemetry/TelemetryManager.d.ts.map +1 -0
  11. package/packages/core/dist/telemetry/TelemetryManager.js +49 -0
  12. package/packages/core/dist/telemetry/TelemetryManager.js.map +1 -0
  13. package/packages/core/src/VideoPlayerFactory.ts +28 -18
  14. package/packages/core/src/index.ts +4 -0
  15. package/packages/core/src/telemetry/TelemetryManager.ts +72 -0
  16. package/packages/web/dist/WebPlayer.d.ts +0 -2
  17. package/packages/web/dist/WebPlayer.d.ts.map +1 -1
  18. package/packages/web/dist/WebPlayer.js +0 -50
  19. package/packages/web/dist/WebPlayer.js.map +1 -1
  20. package/packages/web/dist/drm/systems/PlayReadyDRM.d.ts.map +1 -1
  21. package/packages/web/dist/drm/systems/PlayReadyDRM.js +5 -2
  22. package/packages/web/dist/drm/systems/PlayReadyDRM.js.map +1 -1
  23. package/packages/web/dist/drm/systems/WidevineDRM.d.ts.map +1 -1
  24. package/packages/web/dist/drm/systems/WidevineDRM.js +4 -2
  25. package/packages/web/dist/drm/systems/WidevineDRM.js.map +1 -1
  26. package/packages/web/dist/react/WebPlayerView.d.ts +0 -1
  27. package/packages/web/dist/react/WebPlayerView.d.ts.map +1 -1
  28. package/packages/web/dist/react/WebPlayerView.js +0 -5
  29. package/packages/web/dist/react/WebPlayerView.js.map +1 -1
  30. package/packages/web/src/WebPlayer.ts +0 -65
  31. package/packages/web/src/react/WebPlayerView.tsx +0 -6
  32. package/scripts/fix-imports.js +8 -54
  33. package/packages/core/src/BasePlayer.d.ts +0 -61
  34. package/packages/core/src/BasePlayer.d.ts.map +0 -1
  35. package/packages/core/src/BasePlayer.js +0 -175
  36. package/packages/core/src/BasePlayer.js.map +0 -1
  37. package/packages/core/src/VideoPlayerFactory.d.ts +0 -8
  38. package/packages/core/src/VideoPlayerFactory.d.ts.map +0 -1
  39. package/packages/core/src/VideoPlayerFactory.js +0 -95
  40. package/packages/core/src/VideoPlayerFactory.js.map +0 -1
  41. package/packages/core/src/analytics/adapters/PlayerAnalyticsAdapter.d.ts +0 -18
  42. package/packages/core/src/analytics/adapters/PlayerAnalyticsAdapter.d.ts.map +0 -1
  43. package/packages/core/src/analytics/adapters/PlayerAnalyticsAdapter.js +0 -117
  44. package/packages/core/src/analytics/adapters/PlayerAnalyticsAdapter.js.map +0 -1
  45. package/packages/core/src/analytics/core/AnalyticsProvider.d.ts +0 -18
  46. package/packages/core/src/analytics/core/AnalyticsProvider.d.ts.map +0 -1
  47. package/packages/core/src/analytics/core/AnalyticsProvider.js +0 -99
  48. package/packages/core/src/analytics/core/AnalyticsProvider.js.map +0 -1
  49. package/packages/core/src/analytics/core/DynamicAnalyticsManager.d.ts +0 -20
  50. package/packages/core/src/analytics/core/DynamicAnalyticsManager.d.ts.map +0 -1
  51. package/packages/core/src/analytics/core/DynamicAnalyticsManager.js +0 -161
  52. package/packages/core/src/analytics/core/DynamicAnalyticsManager.js.map +0 -1
  53. package/packages/core/src/analytics/core/EventBatcher.d.ts +0 -32
  54. package/packages/core/src/analytics/core/EventBatcher.d.ts.map +0 -1
  55. package/packages/core/src/analytics/core/EventBatcher.js +0 -98
  56. package/packages/core/src/analytics/core/EventBatcher.js.map +0 -1
  57. package/packages/core/src/analytics/core/PlayerAnalytics.d.ts +0 -19
  58. package/packages/core/src/analytics/core/PlayerAnalytics.d.ts.map +0 -1
  59. package/packages/core/src/analytics/core/PlayerAnalytics.js +0 -80
  60. package/packages/core/src/analytics/core/PlayerAnalytics.js.map +0 -1
  61. package/packages/core/src/analytics/index.d.ts +0 -13
  62. package/packages/core/src/analytics/index.d.ts.map +0 -1
  63. package/packages/core/src/analytics/index.js +0 -13
  64. package/packages/core/src/analytics/index.js.map +0 -1
  65. package/packages/core/src/analytics/types/AnalyticsTypes.d.ts +0 -239
  66. package/packages/core/src/analytics/types/AnalyticsTypes.d.ts.map +0 -1
  67. package/packages/core/src/analytics/types/AnalyticsTypes.js +0 -8
  68. package/packages/core/src/analytics/types/AnalyticsTypes.js.map +0 -1
  69. package/packages/core/src/analytics/utils/DeviceDetection.d.ts +0 -27
  70. package/packages/core/src/analytics/utils/DeviceDetection.d.ts.map +0 -1
  71. package/packages/core/src/analytics/utils/DeviceDetection.js +0 -184
  72. package/packages/core/src/analytics/utils/DeviceDetection.js.map +0 -1
  73. package/packages/core/src/chapter-manager.d.ts +0 -39
  74. package/packages/core/src/chapter-manager.d.ts.map +0 -1
  75. package/packages/core/src/chapter-manager.js +0 -173
  76. package/packages/core/src/chapter-manager.js.map +0 -1
  77. package/packages/core/src/index.d.ts +0 -10
  78. package/packages/core/src/index.d.ts.map +0 -1
  79. package/packages/core/src/index.js +0 -8
  80. package/packages/core/src/index.js.map +0 -1
  81. package/packages/core/src/interfaces/IVideoPlayer.d.ts +0 -229
  82. package/packages/core/src/interfaces/IVideoPlayer.d.ts.map +0 -1
  83. package/packages/core/src/interfaces/IVideoPlayer.js +0 -2
  84. package/packages/core/src/interfaces/IVideoPlayer.js.map +0 -1
  85. package/packages/core/src/interfaces.d.ts +0 -455
  86. package/packages/core/src/interfaces.d.ts.map +0 -1
  87. package/packages/core/src/interfaces.js +0 -32
  88. package/packages/core/src/interfaces.js.map +0 -1
  89. package/packages/core/src/utils/EventEmitter.d.ts +0 -14
  90. package/packages/core/src/utils/EventEmitter.d.ts.map +0 -1
  91. package/packages/core/src/utils/EventEmitter.js +0 -55
  92. package/packages/core/src/utils/EventEmitter.js.map +0 -1
  93. package/packages/web/src/drm/DRMManager.ts +0 -224
  94. package/packages/web/src/drm/index.ts +0 -37
  95. package/packages/web/src/drm/providers/BunnyNetProvider.ts +0 -171
  96. package/packages/web/src/drm/providers/GenericProvider.ts +0 -151
  97. package/packages/web/src/drm/systems/BaseDRM.ts +0 -68
  98. package/packages/web/src/drm/systems/FairPlayDRM.ts +0 -317
  99. package/packages/web/src/drm/systems/PlayReadyDRM.ts +0 -153
  100. package/packages/web/src/drm/systems/WidevineDRM.ts +0 -130
  101. package/packages/web/src/drm/types/BunnyNetTypes.ts +0 -35
  102. package/packages/web/src/drm/types/DRMTypes.ts +0 -93
  103. package/packages/web/src/drm/utils/BrowserDetector.ts +0 -281
  104. package/packages/web/src/drm/utils/CertificateManager.ts +0 -86
  105. package/packages/web/src/drm/utils/DRMErrorHandler.ts +0 -84
  106. package/packages/web/src/drm/utils/LicenseRequestHandler.ts +0 -180
@@ -10,61 +10,24 @@ const path = require('path');
10
10
 
11
11
  function fixImports(filePath) {
12
12
  let content = fs.readFileSync(filePath, 'utf8');
13
-
13
+
14
14
  // Replace @unified-video/core imports with relative paths
15
15
  if (filePath.includes(path.join('packages', 'web', 'dist'))) {
16
- // Calculate the correct relative path depth based on file location
17
- const distPath = path.join('packages', 'web', 'dist');
18
- const distIndex = filePath.indexOf(distPath);
19
- const relativePath = filePath.substring(distIndex + distPath.length + 1);
20
- const depth = relativePath.split(path.sep).length;
21
- const upLevels = '../'.repeat(depth + 1); // +1 to get out of web/, then to packages/
22
- const coreImportPath = `${upLevels}core/dist/index.js`;
23
- const coreRequirePath = `${upLevels}core/dist`;
24
-
25
16
  // Fix CommonJS require statements
26
17
  content = content.replace(
27
18
  /require\(["']@unified-video\/core["']\)/g,
28
- `require("${coreRequirePath}")`
19
+ 'require("../../core/dist")'
29
20
  );
30
21
  // Fix ES module import statements
31
22
  content = content.replace(
32
23
  /from\s+["']@unified-video\/core["']/g,
33
- `from "${coreImportPath}"`
24
+ 'from "../../core/dist/index.js"'
34
25
  );
35
26
  content = content.replace(
36
27
  /import\s+["']@unified-video\/core["']/g,
37
- `import "${coreImportPath}"`
38
- );
39
-
40
- // Fix any leftover old-style imports from core/src
41
- content = content.replace(
42
- /require\(['"]\.\.\/\.\.\/\.\.\/core\/src\/interfaces['"]\)/g,
43
- `require("${coreRequirePath}")`
44
- );
45
- content = content.replace(
46
- /from\s+['"]\.\.\/\.\.\/\.\.\/core\/src\/interfaces['"]/g,
47
- `from "${coreImportPath}"`
48
- );
49
- content = content.replace(
50
- /from\s+['"]\.\.\/\.\.\/core\/src\/interfaces['"]/g,
51
- `from "${coreImportPath}"`
28
+ 'import "../../core/dist/index.js"'
52
29
  );
53
-
54
- // Fix incorrect relative paths to core/dist (already converted by TypeScript)
55
- content = content.replace(
56
- /from\s+['"](\.\.\/)+core\/dist\/index\.js['"]/g,
57
- `from "${coreImportPath}"`
58
- );
59
- content = content.replace(
60
- /import\s+['"](\.\.\/)+core\/dist\/index\.js['"]/g,
61
- `import "${coreImportPath}"`
62
- );
63
- content = content.replace(
64
- /require\(['"](\.\.\/)+core\/dist['"]\)/g,
65
- `require("${coreRequirePath}")`
66
- );
67
-
30
+
68
31
  // Fix relative imports within the same package to include .js extension
69
32
  content = content.replace(
70
33
  /from\s+["']\.\/([^"']+)(?<!\.js)["']/g,
@@ -80,28 +43,19 @@ function fixImports(filePath) {
80
43
  }
81
44
  );
82
45
  } else if (filePath.includes(path.join('packages', 'react-native', 'dist'))) {
83
- // Calculate the correct relative path depth based on file location
84
- const distPath = path.join('packages', 'react-native', 'dist');
85
- const distIndex = filePath.indexOf(distPath);
86
- const relativePath = filePath.substring(distIndex + distPath.length + 1);
87
- const depth = relativePath.split(path.sep).length;
88
- const upLevels = '../'.repeat(depth + 1); // +1 to get out of react-native/, then to packages/
89
- const coreImportPath = `${upLevels}core/dist/index.js`;
90
- const coreRequirePath = `${upLevels}core/dist`;
91
-
92
46
  // Fix CommonJS require statements
93
47
  content = content.replace(
94
48
  /require\(["']@unified-video\/core["']\)/g,
95
- `require("${coreRequirePath}")`
49
+ 'require("../../core/dist")'
96
50
  );
97
51
  // Fix ES module import statements
98
52
  content = content.replace(
99
53
  /from\s+["']@unified-video\/core["']/g,
100
- `from "${coreImportPath}"`
54
+ 'from "../../core/dist/index.js"'
101
55
  );
102
56
  content = content.replace(
103
57
  /import\s+["']@unified-video\/core["']/g,
104
- `import "${coreImportPath}"`
58
+ 'import "../../core/dist/index.js"'
105
59
  );
106
60
 
107
61
  // Fix relative imports within the same package to include .js extension
@@ -1,61 +0,0 @@
1
- import { IVideoPlayer, VideoSource, PlayerConfig, PlayerState, PlayerError, Quality, SubtitleTrack } from './interfaces/IVideoPlayer';
2
- import { PlayerEvent } from './interfaces';
3
- import { EventEmitter } from './utils/EventEmitter';
4
- export declare abstract class BasePlayer implements IVideoPlayer {
5
- protected container: HTMLElement | null;
6
- protected config: PlayerConfig;
7
- protected events: EventEmitter;
8
- protected state: PlayerState;
9
- protected source: VideoSource | null;
10
- protected subtitles: SubtitleTrack[];
11
- protected currentSubtitleIndex: number;
12
- constructor();
13
- protected getDefaultConfig(): PlayerConfig;
14
- protected getDefaultState(): PlayerState;
15
- initialize(container: HTMLElement | string, config?: PlayerConfig): Promise<void>;
16
- protected abstract setupPlayer(): Promise<void>;
17
- abstract destroy(): Promise<void>;
18
- abstract load(source: VideoSource): Promise<void>;
19
- play(): Promise<void>;
20
- pause(): void;
21
- stop(): void;
22
- abstract seek(time: number): void;
23
- setVolume(level: number): void;
24
- mute(): void;
25
- unmute(): void;
26
- toggleMute(): void;
27
- abstract getQualities(): Quality[];
28
- abstract getCurrentQuality(): Quality | null;
29
- abstract setQuality(index: number): void;
30
- abstract setAutoQuality(enabled: boolean): void;
31
- setPlaybackRate(rate: number): void;
32
- getPlaybackRate(): number;
33
- getCurrentTime(): number;
34
- getDuration(): number;
35
- getBufferedPercentage(): number;
36
- getState(): PlayerState;
37
- isPlaying(): boolean;
38
- isPaused(): boolean;
39
- isEnded(): boolean;
40
- abstract enterFullscreen(): Promise<void>;
41
- abstract exitFullscreen(): Promise<void>;
42
- toggleFullscreen(): Promise<void>;
43
- abstract enterPictureInPicture(): Promise<void>;
44
- abstract exitPictureInPicture(): Promise<void>;
45
- on(event: string, handler: Function): void;
46
- off(event: string, handler?: Function): void;
47
- once(event: string, handler: Function): void;
48
- protected emit(event: PlayerEvent, ...args: any[]): void;
49
- setFreeDuration?(seconds: number): void;
50
- resetFreePreviewGate?(): void;
51
- getSubtitles(): SubtitleTrack[];
52
- setSubtitleTrack(index: number): void;
53
- disableSubtitles(): void;
54
- protected abstract applySubtitleTrack(track: SubtitleTrack): void;
55
- protected abstract removeSubtitles(): void;
56
- protected handleError(error: PlayerError): void;
57
- protected updateTime(time: number): void;
58
- protected updateBuffered(percentage: number): void;
59
- protected setBuffering(isBuffering: boolean): void;
60
- }
61
- //# sourceMappingURL=BasePlayer.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"BasePlayer.d.ts","sourceRoot":"","sources":["BasePlayer.ts"],"names":[],"mappings":"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"}
@@ -1,175 +0,0 @@
1
- import { EventEmitter } from './utils/EventEmitter';
2
- export class BasePlayer {
3
- constructor() {
4
- this.container = null;
5
- this.source = null;
6
- this.subtitles = [];
7
- this.currentSubtitleIndex = -1;
8
- this.config = this.getDefaultConfig();
9
- this.events = new EventEmitter();
10
- this.state = this.getDefaultState();
11
- }
12
- getDefaultConfig() {
13
- return {
14
- autoPlay: false,
15
- muted: false,
16
- volume: 1.0,
17
- controls: true,
18
- loop: false,
19
- preload: 'metadata',
20
- playsInline: true,
21
- enableAdaptiveBitrate: true,
22
- debug: false,
23
- freeDuration: 0
24
- };
25
- }
26
- getDefaultState() {
27
- return {
28
- isPlaying: false,
29
- isPaused: true,
30
- isBuffering: false,
31
- isEnded: false,
32
- isError: false,
33
- currentTime: 0,
34
- duration: 0,
35
- bufferedPercentage: 0,
36
- volume: 1.0,
37
- isMuted: false,
38
- playbackRate: 1.0,
39
- availableQualities: []
40
- };
41
- }
42
- async initialize(container, config) {
43
- if (typeof container === 'string') {
44
- const element = document.querySelector(container);
45
- if (!element) {
46
- throw new Error(`Container element not found: ${container}`);
47
- }
48
- this.container = element;
49
- }
50
- else {
51
- this.container = container;
52
- }
53
- this.config = { ...this.getDefaultConfig(), ...config };
54
- this.state.volume = this.config.volume || 1.0;
55
- this.state.isMuted = this.config.muted || false;
56
- await this.setupPlayer();
57
- }
58
- async play() {
59
- this.state.isPlaying = true;
60
- this.state.isPaused = false;
61
- this.emit('onPlay');
62
- }
63
- pause() {
64
- this.state.isPlaying = false;
65
- this.state.isPaused = true;
66
- this.emit('onPause');
67
- }
68
- stop() {
69
- this.pause();
70
- this.seek(0);
71
- this.state.isEnded = true;
72
- }
73
- setVolume(level) {
74
- const volume = Math.max(0, Math.min(1, level));
75
- this.state.volume = volume;
76
- this.emit('onVolumeChanged', volume);
77
- }
78
- mute() {
79
- this.state.isMuted = true;
80
- this.emit('onVolumeChanged', 0);
81
- }
82
- unmute() {
83
- this.state.isMuted = false;
84
- this.emit('onVolumeChanged', this.state.volume);
85
- }
86
- toggleMute() {
87
- if (this.state.isMuted) {
88
- this.unmute();
89
- }
90
- else {
91
- this.mute();
92
- }
93
- }
94
- setPlaybackRate(rate) {
95
- this.state.playbackRate = rate;
96
- }
97
- getPlaybackRate() {
98
- return this.state.playbackRate;
99
- }
100
- getCurrentTime() {
101
- return this.state.currentTime;
102
- }
103
- getDuration() {
104
- return this.state.duration;
105
- }
106
- getBufferedPercentage() {
107
- return this.state.bufferedPercentage;
108
- }
109
- getState() {
110
- return { ...this.state };
111
- }
112
- isPlaying() {
113
- return this.state.isPlaying;
114
- }
115
- isPaused() {
116
- return this.state.isPaused;
117
- }
118
- isEnded() {
119
- return this.state.isEnded;
120
- }
121
- async toggleFullscreen() {
122
- if (document.fullscreenElement) {
123
- await this.exitFullscreen();
124
- }
125
- else {
126
- await this.enterFullscreen();
127
- }
128
- }
129
- on(event, handler) {
130
- this.events.on(event, handler);
131
- }
132
- off(event, handler) {
133
- this.events.off(event, handler);
134
- }
135
- once(event, handler) {
136
- this.events.once(event, handler);
137
- }
138
- emit(event, ...args) {
139
- this.events.emit(event, ...args);
140
- }
141
- getSubtitles() {
142
- return this.subtitles;
143
- }
144
- setSubtitleTrack(index) {
145
- if (index >= 0 && index < this.subtitles.length) {
146
- this.currentSubtitleIndex = index;
147
- this.applySubtitleTrack(this.subtitles[index]);
148
- }
149
- }
150
- disableSubtitles() {
151
- this.currentSubtitleIndex = -1;
152
- this.removeSubtitles();
153
- }
154
- handleError(error) {
155
- this.state.isError = true;
156
- this.state.isPlaying = false;
157
- this.emit('onError', error);
158
- if (this.config.debug) {
159
- console.error('[VideoPlayer Error]', error);
160
- }
161
- }
162
- updateTime(time) {
163
- this.state.currentTime = time;
164
- this.emit('onTimeUpdate', time);
165
- }
166
- updateBuffered(percentage) {
167
- this.state.bufferedPercentage = percentage;
168
- this.emit('onProgress', percentage);
169
- }
170
- setBuffering(isBuffering) {
171
- this.state.isBuffering = isBuffering;
172
- this.emit('onBuffering', isBuffering);
173
- }
174
- }
175
- //# sourceMappingURL=BasePlayer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"BasePlayer.js","sourceRoot":"","sources":["BasePlayer.ts"],"names":[],"mappings":"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"}
@@ -1,8 +0,0 @@
1
- import { IVideoPlayer, PlayerConfig } from './interfaces/IVideoPlayer';
2
- export type Platform = 'web' | 'ios' | 'android' | 'tizen' | 'webos' | 'roku' | 'androidtv' | 'appletv' | 'windows';
3
- export declare class VideoPlayerFactory {
4
- static create(platform: Platform, container: HTMLElement | string | any, config?: PlayerConfig): Promise<IVideoPlayer>;
5
- static detectPlatform(): Platform;
6
- static createForCurrentPlatform(container: HTMLElement | string | any, config?: PlayerConfig): Promise<IVideoPlayer>;
7
- }
8
- //# sourceMappingURL=VideoPlayerFactory.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"VideoPlayerFactory.d.ts","sourceRoot":"","sources":["VideoPlayerFactory.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAEvE,MAAM,MAAM,QAAQ,GAChB,KAAK,GACL,KAAK,GACL,SAAS,GACT,OAAO,GACP,OAAO,GACP,MAAM,GACN,WAAW,GACX,SAAS,GACT,SAAS,CAAC;AAEd,qBAAa,kBAAkB;WAIhB,MAAM,CACjB,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,WAAW,GAAG,MAAM,GAAG,GAAG,EACrC,MAAM,CAAC,EAAE,YAAY,GACpB,OAAO,CAAC,YAAY,CAAC;IAqExB,MAAM,CAAC,cAAc,IAAI,QAAQ;WAkDpB,wBAAwB,CACnC,SAAS,EAAE,WAAW,GAAG,MAAM,GAAG,GAAG,EACrC,MAAM,CAAC,EAAE,YAAY,GACpB,OAAO,CAAC,YAAY,CAAC;CAIzB"}
@@ -1,95 +0,0 @@
1
- export class VideoPlayerFactory {
2
- static async create(platform, container, config) {
3
- switch (platform) {
4
- case 'web':
5
- try {
6
- const WebModule = await eval('import("@unified-video/web")');
7
- if (WebModule?.WebPlayer) {
8
- const player = new WebModule.WebPlayer();
9
- await player.initialize(container, config);
10
- return player;
11
- }
12
- }
13
- catch (e) {
14
- }
15
- break;
16
- case 'ios':
17
- case 'android':
18
- try {
19
- const RNModule = await eval('import("@unified-video/react-native")');
20
- if (RNModule?.ReactNativePlayer) {
21
- return RNModule.ReactNativePlayer;
22
- }
23
- }
24
- catch (e) {
25
- }
26
- break;
27
- case 'tizen':
28
- case 'webos':
29
- try {
30
- const EnactModule = await eval('import("@unified-video/enact")');
31
- if (EnactModule?.EnactPlayer) {
32
- const player = new EnactModule.EnactPlayer();
33
- await player.initialize(container, config);
34
- return player;
35
- }
36
- }
37
- catch (e) {
38
- }
39
- break;
40
- case 'roku':
41
- try {
42
- const RokuModule = await eval('import("@unified-video/roku")');
43
- if (RokuModule?.RokuPlayer) {
44
- const player = new RokuModule.RokuPlayer();
45
- await player.initialize(container, config);
46
- return player;
47
- }
48
- }
49
- catch (e) {
50
- }
51
- break;
52
- default:
53
- throw new Error(`Platform '${platform}' is not supported`);
54
- }
55
- throw new Error(`Failed to load player for platform '${platform}'`);
56
- }
57
- static detectPlatform() {
58
- if (typeof global !== 'undefined' && global.nativeCallSyncHook) {
59
- try {
60
- const RN = eval('require("react-native")');
61
- if (RN && RN.Platform) {
62
- return RN.Platform.OS;
63
- }
64
- }
65
- catch (e) {
66
- }
67
- }
68
- if (typeof window !== 'undefined') {
69
- const userAgent = window.navigator.userAgent.toLowerCase();
70
- if (userAgent.includes('tizen'))
71
- return 'tizen';
72
- if (userAgent.includes('webos'))
73
- return 'webos';
74
- if (userAgent.includes('roku'))
75
- return 'roku';
76
- if (userAgent.includes('android') && userAgent.includes('tv')) {
77
- return 'androidtv';
78
- }
79
- if (userAgent.includes('appletv'))
80
- return 'appletv';
81
- if (userAgent.includes('windows'))
82
- return 'windows';
83
- return 'web';
84
- }
85
- if (typeof process !== 'undefined' && process.versions && process.versions.node) {
86
- return 'web';
87
- }
88
- throw new Error('Unable to detect platform');
89
- }
90
- static async createForCurrentPlatform(container, config) {
91
- const platform = this.detectPlatform();
92
- return this.create(platform, container, config);
93
- }
94
- }
95
- //# sourceMappingURL=VideoPlayerFactory.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"VideoPlayerFactory.js","sourceRoot":"","sources":["VideoPlayerFactory.ts"],"names":[],"mappings":"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"}
@@ -1,18 +0,0 @@
1
- import { AnalyticsEventData, PlayerSessionInfo, BaseAnalyticsProvider, PlayerAnalyticsConfig } from '../types/AnalyticsTypes';
2
- export declare class PlayerAnalyticsAdapter implements BaseAnalyticsProvider {
3
- name: string;
4
- enabled: boolean;
5
- private config;
6
- private currentSessionId;
7
- private eventQueue;
8
- private flushTimer;
9
- constructor(name: string, config: PlayerAnalyticsConfig);
10
- initialize(): Promise<void>;
11
- startSession(sessionInfo: PlayerSessionInfo): Promise<string>;
12
- trackEvent(event: AnalyticsEventData): Promise<void>;
13
- endSession(): Promise<void>;
14
- flush(): Promise<void>;
15
- destroy(): Promise<void>;
16
- private scheduleFlush;
17
- }
18
- //# sourceMappingURL=PlayerAnalyticsAdapter.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"PlayerAnalyticsAdapter.d.ts","sourceRoot":"","sources":["PlayerAnalyticsAdapter.ts"],"names":[],"mappings":"AAMA,OAAO,EACL,kBAAkB,EAClB,iBAAiB,EACjB,qBAAqB,EACrB,qBAAqB,EACtB,MAAM,yBAAyB,CAAC;AAGjC,qBAAa,sBAAuB,YAAW,qBAAqB;IAC3D,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;IACxB,OAAO,CAAC,MAAM,CAAwB;IACtC,OAAO,CAAC,gBAAgB,CAAuB;IAC/C,OAAO,CAAC,UAAU,CAA4B;IAC9C,OAAO,CAAC,UAAU,CAAa;gBAEnB,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,qBAAqB;IAMjD,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAI3B,YAAY,CAAC,WAAW,EAAE,iBAAiB,GAAG,OAAO,CAAC,MAAM,CAAC;IAqB7D,UAAU,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;IAgBpD,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAiB3B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IA4CtB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAgB9B,OAAO,CAAC,aAAa;CAStB"}
@@ -1,117 +0,0 @@
1
- import { deviceDetection } from '../utils/DeviceDetection';
2
- export class PlayerAnalyticsAdapter {
3
- constructor(name, config) {
4
- this.currentSessionId = null;
5
- this.eventQueue = [];
6
- this.flushTimer = null;
7
- this.name = name;
8
- this.enabled = true;
9
- this.config = config;
10
- }
11
- async initialize() {
12
- }
13
- async startSession(sessionInfo) {
14
- const sessionId = `sess_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`;
15
- this.currentSessionId = sessionId;
16
- const event = {
17
- eventType: 'session_start',
18
- timestamp: Date.now(),
19
- video: sessionInfo.initialVideo,
20
- device: deviceDetection.getDeviceInfo(),
21
- metadata: {
22
- sessionId,
23
- playerId: this.config.playerId,
24
- userId: sessionInfo.userId,
25
- customData: sessionInfo.customData
26
- }
27
- };
28
- await this.trackEvent(event);
29
- return sessionId;
30
- }
31
- async trackEvent(event) {
32
- if (!this.enabled) {
33
- return;
34
- }
35
- this.eventQueue.push(event);
36
- if (this.eventQueue.length >= (this.config.batchSize || 10)) {
37
- await this.flush();
38
- }
39
- else {
40
- this.scheduleFlush();
41
- }
42
- }
43
- async endSession() {
44
- if (this.currentSessionId) {
45
- const event = {
46
- eventType: 'session_end',
47
- timestamp: Date.now(),
48
- metadata: {
49
- sessionId: this.currentSessionId,
50
- playerId: this.config.playerId
51
- }
52
- };
53
- await this.trackEvent(event);
54
- await this.flush();
55
- this.currentSessionId = null;
56
- }
57
- }
58
- async flush() {
59
- if (this.eventQueue.length === 0) {
60
- return;
61
- }
62
- const events = [...this.eventQueue];
63
- this.eventQueue = [];
64
- if (this.flushTimer) {
65
- clearTimeout(this.flushTimer);
66
- this.flushTimer = null;
67
- }
68
- try {
69
- const payload = {
70
- session: {
71
- sessionId: this.currentSessionId || 'unknown',
72
- playerId: this.config.playerId,
73
- timestamp: Date.now(),
74
- customData: {}
75
- },
76
- events
77
- };
78
- const response = await fetch(`${this.config.baseUrl}/analytics/player/ingest`, {
79
- method: 'POST',
80
- headers: {
81
- 'Content-Type': 'application/json',
82
- 'Authorization': `Bearer ${this.config.apiKey}`,
83
- ...(this.config.tenantId && { 'X-Tenant-ID': this.config.tenantId })
84
- },
85
- body: JSON.stringify(payload)
86
- });
87
- if (!response.ok) {
88
- throw new Error(`Analytics API error: ${response.status}`);
89
- }
90
- }
91
- catch (error) {
92
- console.error('Failed to send analytics events:', error);
93
- this.eventQueue = [...events, ...this.eventQueue];
94
- }
95
- }
96
- async destroy() {
97
- if (this.currentSessionId) {
98
- await this.endSession();
99
- }
100
- if (this.flushTimer) {
101
- clearTimeout(this.flushTimer);
102
- this.flushTimer = null;
103
- }
104
- if (this.eventQueue.length > 0) {
105
- await this.flush();
106
- }
107
- }
108
- scheduleFlush() {
109
- if (this.flushTimer) {
110
- return;
111
- }
112
- this.flushTimer = setTimeout(() => {
113
- this.flush().catch(console.error);
114
- }, (this.config.flushInterval || 30) * 1000);
115
- }
116
- }
117
- //# sourceMappingURL=PlayerAnalyticsAdapter.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"PlayerAnalyticsAdapter.js","sourceRoot":"","sources":["PlayerAnalyticsAdapter.ts"],"names":[],"mappings":"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"}
@@ -1,18 +0,0 @@
1
- import { BaseAnalyticsProvider, AnalyticsEventData, PlayerSessionInfo, AnalyticsProviderType, DynamicAnalyticsConfig, PlayerAnalyticsConfig } from '../types/AnalyticsTypes';
2
- export declare abstract class AnalyticsProvider implements BaseAnalyticsProvider {
3
- name: string;
4
- enabled: boolean;
5
- constructor(name: string, enabled?: boolean);
6
- abstract initialize(): Promise<void>;
7
- abstract trackEvent(event: AnalyticsEventData): Promise<void>;
8
- abstract startSession(sessionInfo: PlayerSessionInfo): Promise<string>;
9
- abstract endSession(): Promise<void>;
10
- abstract flush(): Promise<void>;
11
- abstract destroy(): Promise<void>;
12
- }
13
- export declare function createAnalyticsProvider(type: AnalyticsProviderType, name: string, config: any): BaseAnalyticsProvider;
14
- export declare function getDefaultAnalyticsConfig(): DynamicAnalyticsConfig;
15
- export declare function createPlayerAnalyticsProviderConfig(baseUrl: string, apiKey: string, playerId: string, options?: Partial<PlayerAnalyticsConfig>): PlayerAnalyticsConfig;
16
- export declare function validateAnalyticsConfig(config: DynamicAnalyticsConfig): void;
17
- export declare function mergeAnalyticsConfigs(defaultConfig: DynamicAnalyticsConfig, userConfig: Partial<DynamicAnalyticsConfig>): DynamicAnalyticsConfig;
18
- //# sourceMappingURL=AnalyticsProvider.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"AnalyticsProvider.d.ts","sourceRoot":"","sources":["AnalyticsProvider.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,qBAAqB,EACrB,kBAAkB,EAClB,iBAAiB,EACjB,qBAAqB,EACrB,sBAAsB,EACtB,qBAAqB,EACtB,MAAM,yBAAyB,CAAC;AAMjC,8BAAsB,iBAAkB,YAAW,qBAAqB;IAC/D,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;gBAEZ,IAAI,EAAE,MAAM,EAAE,OAAO,UAAO;IAKxC,QAAQ,CAAC,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IACpC,QAAQ,CAAC,UAAU,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;IAC7D,QAAQ,CAAC,YAAY,CAAC,WAAW,EAAE,iBAAiB,GAAG,OAAO,CAAC,MAAM,CAAC;IACtE,QAAQ,CAAC,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IACpC,QAAQ,CAAC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAC/B,QAAQ,CAAC,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAClC;AAKD,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,qBAAqB,EAC3B,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,GAAG,GACV,qBAAqB,CAgBvB;AAKD,wBAAgB,yBAAyB,IAAI,sBAAsB,CAclE;AAKD,wBAAgB,mCAAmC,CACjD,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE,OAAO,CAAC,qBAAqB,CAAM,GAC3C,qBAAqB,CAavB;AAKD,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,sBAAsB,GAAG,IAAI,CA8B5E;AAsBD,wBAAgB,qBAAqB,CACnC,aAAa,EAAE,sBAAsB,EACrC,UAAU,EAAE,OAAO,CAAC,sBAAsB,CAAC,GAC1C,sBAAsB,CASxB"}