unified-video-framework 1.4.412 → 1.4.414

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 (147) hide show
  1. package/package.json +6 -1
  2. package/packages/core/dist/interfaces/IVideoPlayer.d.ts +0 -22
  3. package/packages/core/dist/interfaces/IVideoPlayer.d.ts.map +1 -1
  4. package/packages/core/src/BasePlayer.d.ts +61 -0
  5. package/packages/core/src/BasePlayer.d.ts.map +1 -0
  6. package/packages/core/src/BasePlayer.js +175 -0
  7. package/packages/core/src/BasePlayer.js.map +1 -0
  8. package/packages/core/src/VideoPlayerFactory.d.ts +8 -0
  9. package/packages/core/src/VideoPlayerFactory.d.ts.map +1 -0
  10. package/packages/core/src/VideoPlayerFactory.js +95 -0
  11. package/packages/core/src/VideoPlayerFactory.js.map +1 -0
  12. package/packages/core/src/analytics/adapters/PlayerAnalyticsAdapter.d.ts +18 -0
  13. package/packages/core/src/analytics/adapters/PlayerAnalyticsAdapter.d.ts.map +1 -0
  14. package/packages/core/src/analytics/adapters/PlayerAnalyticsAdapter.js +117 -0
  15. package/packages/core/src/analytics/adapters/PlayerAnalyticsAdapter.js.map +1 -0
  16. package/packages/core/src/analytics/core/AnalyticsProvider.d.ts +18 -0
  17. package/packages/core/src/analytics/core/AnalyticsProvider.d.ts.map +1 -0
  18. package/packages/core/src/analytics/core/AnalyticsProvider.js +99 -0
  19. package/packages/core/src/analytics/core/AnalyticsProvider.js.map +1 -0
  20. package/packages/core/src/analytics/core/DynamicAnalyticsManager.d.ts +20 -0
  21. package/packages/core/src/analytics/core/DynamicAnalyticsManager.d.ts.map +1 -0
  22. package/packages/core/src/analytics/core/DynamicAnalyticsManager.js +161 -0
  23. package/packages/core/src/analytics/core/DynamicAnalyticsManager.js.map +1 -0
  24. package/packages/core/src/analytics/core/EventBatcher.d.ts +32 -0
  25. package/packages/core/src/analytics/core/EventBatcher.d.ts.map +1 -0
  26. package/packages/core/src/analytics/core/EventBatcher.js +98 -0
  27. package/packages/core/src/analytics/core/EventBatcher.js.map +1 -0
  28. package/packages/core/src/analytics/core/PlayerAnalytics.d.ts +19 -0
  29. package/packages/core/src/analytics/core/PlayerAnalytics.d.ts.map +1 -0
  30. package/packages/core/src/analytics/core/PlayerAnalytics.js +80 -0
  31. package/packages/core/src/analytics/core/PlayerAnalytics.js.map +1 -0
  32. package/packages/core/src/analytics/index.d.ts +13 -0
  33. package/packages/core/src/analytics/index.d.ts.map +1 -0
  34. package/packages/core/src/analytics/index.js +13 -0
  35. package/packages/core/src/analytics/index.js.map +1 -0
  36. package/packages/core/src/analytics/types/AnalyticsTypes.d.ts +239 -0
  37. package/packages/core/src/analytics/types/AnalyticsTypes.d.ts.map +1 -0
  38. package/packages/core/src/analytics/types/AnalyticsTypes.js +8 -0
  39. package/packages/core/src/analytics/types/AnalyticsTypes.js.map +1 -0
  40. package/packages/core/src/analytics/utils/DeviceDetection.d.ts +27 -0
  41. package/packages/core/src/analytics/utils/DeviceDetection.d.ts.map +1 -0
  42. package/packages/core/src/analytics/utils/DeviceDetection.js +184 -0
  43. package/packages/core/src/analytics/utils/DeviceDetection.js.map +1 -0
  44. package/packages/core/src/chapter-manager.d.ts +39 -0
  45. package/packages/core/src/chapter-manager.d.ts.map +1 -0
  46. package/packages/core/src/chapter-manager.js +173 -0
  47. package/packages/core/src/chapter-manager.js.map +1 -0
  48. package/packages/core/src/index.d.ts +10 -0
  49. package/packages/core/src/index.d.ts.map +1 -0
  50. package/packages/core/src/index.js +8 -0
  51. package/packages/core/src/index.js.map +1 -0
  52. package/packages/core/src/interfaces/IVideoPlayer.d.ts +229 -0
  53. package/packages/core/src/interfaces/IVideoPlayer.d.ts.map +1 -0
  54. package/packages/core/src/interfaces/IVideoPlayer.js +2 -0
  55. package/packages/core/src/interfaces/IVideoPlayer.js.map +1 -0
  56. package/packages/core/src/interfaces/IVideoPlayer.ts +0 -27
  57. package/packages/core/src/interfaces.d.ts +455 -0
  58. package/packages/core/src/interfaces.d.ts.map +1 -0
  59. package/packages/core/src/interfaces.js +32 -0
  60. package/packages/core/src/interfaces.js.map +1 -0
  61. package/packages/core/src/utils/EventEmitter.d.ts +14 -0
  62. package/packages/core/src/utils/EventEmitter.d.ts.map +1 -0
  63. package/packages/core/src/utils/EventEmitter.js +55 -0
  64. package/packages/core/src/utils/EventEmitter.js.map +1 -0
  65. package/packages/web/dist/WebPlayer.d.ts +0 -4
  66. package/packages/web/dist/WebPlayer.d.ts.map +1 -1
  67. package/packages/web/dist/WebPlayer.js +62 -73
  68. package/packages/web/dist/WebPlayer.js.map +1 -1
  69. package/packages/web/dist/drm/DRMManager.d.ts +16 -9
  70. package/packages/web/dist/drm/DRMManager.d.ts.map +1 -1
  71. package/packages/web/dist/drm/DRMManager.js +109 -42
  72. package/packages/web/dist/drm/DRMManager.js.map +1 -1
  73. package/packages/web/dist/drm/index.d.ts +15 -0
  74. package/packages/web/dist/drm/index.d.ts.map +1 -0
  75. package/packages/web/dist/drm/index.js +13 -0
  76. package/packages/web/dist/drm/index.js.map +1 -0
  77. package/packages/web/dist/drm/providers/BunnyNetProvider.d.ts +19 -0
  78. package/packages/web/dist/drm/providers/BunnyNetProvider.d.ts.map +1 -0
  79. package/packages/web/dist/drm/providers/BunnyNetProvider.js +112 -0
  80. package/packages/web/dist/drm/providers/BunnyNetProvider.js.map +1 -0
  81. package/packages/web/dist/drm/providers/GenericProvider.d.ts +30 -0
  82. package/packages/web/dist/drm/providers/GenericProvider.d.ts.map +1 -0
  83. package/packages/web/dist/drm/providers/GenericProvider.js +104 -0
  84. package/packages/web/dist/drm/providers/GenericProvider.js.map +1 -0
  85. package/packages/web/dist/drm/systems/BaseDRM.d.ts +18 -0
  86. package/packages/web/dist/drm/systems/BaseDRM.d.ts.map +1 -0
  87. package/packages/web/dist/drm/systems/BaseDRM.js +29 -0
  88. package/packages/web/dist/drm/systems/BaseDRM.js.map +1 -0
  89. package/packages/web/dist/drm/systems/FairPlayDRM.d.ts +32 -0
  90. package/packages/web/dist/drm/systems/FairPlayDRM.d.ts.map +1 -0
  91. package/packages/web/dist/drm/systems/FairPlayDRM.js +198 -0
  92. package/packages/web/dist/drm/systems/FairPlayDRM.js.map +1 -0
  93. package/packages/web/dist/drm/systems/PlayReadyDRM.d.ts +9 -0
  94. package/packages/web/dist/drm/systems/PlayReadyDRM.d.ts.map +1 -0
  95. package/packages/web/dist/drm/systems/PlayReadyDRM.js +92 -0
  96. package/packages/web/dist/drm/systems/PlayReadyDRM.js.map +1 -0
  97. package/packages/web/dist/drm/systems/WidevineDRM.d.ts +9 -0
  98. package/packages/web/dist/drm/systems/WidevineDRM.d.ts.map +1 -0
  99. package/packages/web/dist/drm/systems/WidevineDRM.js +73 -0
  100. package/packages/web/dist/drm/systems/WidevineDRM.js.map +1 -0
  101. package/packages/web/dist/drm/types/BunnyNetTypes.d.ts +20 -0
  102. package/packages/web/dist/drm/types/BunnyNetTypes.d.ts.map +1 -0
  103. package/packages/web/dist/drm/types/BunnyNetTypes.js +8 -0
  104. package/packages/web/dist/drm/types/BunnyNetTypes.js.map +1 -0
  105. package/packages/web/dist/drm/types/DRMTypes.d.ts +56 -49
  106. package/packages/web/dist/drm/types/DRMTypes.d.ts.map +1 -1
  107. package/packages/web/dist/drm/types/DRMTypes.js +19 -13
  108. package/packages/web/dist/drm/types/DRMTypes.js.map +1 -1
  109. package/packages/web/dist/drm/utils/BrowserDetector.d.ts +20 -0
  110. package/packages/web/dist/drm/utils/BrowserDetector.d.ts.map +1 -0
  111. package/packages/web/dist/drm/utils/BrowserDetector.js +168 -0
  112. package/packages/web/dist/drm/utils/BrowserDetector.js.map +1 -0
  113. package/packages/web/dist/drm/utils/CertificateManager.d.ts +15 -0
  114. package/packages/web/dist/drm/utils/CertificateManager.d.ts.map +1 -0
  115. package/packages/web/dist/drm/utils/CertificateManager.js +46 -0
  116. package/packages/web/dist/drm/utils/CertificateManager.js.map +1 -0
  117. package/packages/web/dist/drm/utils/DRMErrorHandler.d.ts +7 -0
  118. package/packages/web/dist/drm/utils/DRMErrorHandler.d.ts.map +1 -0
  119. package/packages/web/dist/drm/utils/DRMErrorHandler.js +49 -0
  120. package/packages/web/dist/drm/utils/DRMErrorHandler.js.map +1 -0
  121. package/packages/web/dist/drm/utils/LicenseRequestHandler.d.ts +15 -0
  122. package/packages/web/dist/drm/utils/LicenseRequestHandler.d.ts.map +1 -0
  123. package/packages/web/dist/drm/utils/LicenseRequestHandler.js +110 -0
  124. package/packages/web/dist/drm/utils/LicenseRequestHandler.js.map +1 -0
  125. package/packages/web/dist/react/WebPlayerView.d.ts +1 -18
  126. package/packages/web/dist/react/WebPlayerView.d.ts.map +1 -1
  127. package/packages/web/dist/react/WebPlayerView.js +0 -5
  128. package/packages/web/dist/react/WebPlayerView.js.map +1 -1
  129. package/packages/web/src/WebPlayer.ts +79 -106
  130. package/packages/web/src/drm/DRMManager.ts +214 -99
  131. package/packages/web/src/drm/index.ts +37 -0
  132. package/packages/web/src/drm/providers/BunnyNetProvider.ts +171 -0
  133. package/packages/web/src/drm/providers/GenericProvider.ts +151 -0
  134. package/packages/web/src/drm/systems/BaseDRM.ts +68 -0
  135. package/packages/web/src/drm/systems/FairPlayDRM.ts +306 -0
  136. package/packages/web/src/drm/systems/PlayReadyDRM.ts +132 -0
  137. package/packages/web/src/drm/systems/WidevineDRM.ts +106 -0
  138. package/packages/web/src/drm/types/BunnyNetTypes.ts +35 -0
  139. package/packages/web/src/drm/types/DRMTypes.ts +92 -97
  140. package/packages/web/src/drm/utils/BrowserDetector.ts +233 -0
  141. package/packages/web/src/drm/utils/CertificateManager.ts +86 -0
  142. package/packages/web/src/drm/utils/DRMErrorHandler.ts +84 -0
  143. package/packages/web/src/drm/utils/LicenseRequestHandler.ts +180 -0
  144. package/packages/web/src/react/WebPlayerView.tsx +1 -28
  145. package/packages/web/src/drm/BunnyCDNDRMProvider.ts +0 -104
  146. package/packages/web/src/drm/FairPlayDRMHandler.ts +0 -322
  147. package/packages/web/src/drm/WidevineDRMHandler.ts +0 -246
@@ -0,0 +1,239 @@
1
+ export interface AnalyticsConfig {
2
+ enabled: boolean;
3
+ providers: AnalyticsProviderConfig[];
4
+ globalSettings?: GlobalAnalyticsSettings;
5
+ }
6
+ export interface DynamicAnalyticsConfig extends AnalyticsConfig {
7
+ providers: DynamicProviderConfig[];
8
+ }
9
+ export interface GlobalAnalyticsSettings {
10
+ enableConsoleLogging?: boolean;
11
+ enableErrorReporting?: boolean;
12
+ sessionTimeout?: number;
13
+ defaultBatchSize?: number;
14
+ defaultFlushInterval?: number;
15
+ retryAttempts?: number;
16
+ retryDelay?: number;
17
+ }
18
+ export interface AnalyticsProviderConfig {
19
+ name: string;
20
+ enabled: boolean;
21
+ config: any;
22
+ }
23
+ export interface DynamicProviderConfig extends AnalyticsProviderConfig {
24
+ type: AnalyticsProviderType;
25
+ priority?: number;
26
+ }
27
+ export declare enum AnalyticsProviderType {
28
+ PLAYER_ANALYTICS = "player-analytics",
29
+ GOOGLE_ANALYTICS = "google-analytics",
30
+ ADOBE_ANALYTICS = "adobe-analytics",
31
+ CUSTOM = "custom"
32
+ }
33
+ export interface PlayerAnalyticsConfig {
34
+ baseUrl: string;
35
+ apiKey: string;
36
+ playerId: string;
37
+ tenantId?: string;
38
+ heartbeatInterval?: number;
39
+ batchSize?: number;
40
+ flushInterval?: number;
41
+ enableOfflineStorage?: boolean;
42
+ maxRetries?: number;
43
+ retryDelay?: number;
44
+ }
45
+ export interface AnalyticsEventData {
46
+ eventType: string;
47
+ timestamp: number;
48
+ currentTime?: number;
49
+ video?: VideoInfo;
50
+ device?: DeviceInfo;
51
+ player?: PlayerState;
52
+ network?: NetworkInfo;
53
+ engagement?: EngagementData;
54
+ custom?: Record<string, any>;
55
+ metadata?: EventMetadata;
56
+ }
57
+ export interface EventMetadata {
58
+ sessionId: string;
59
+ playerId: string;
60
+ userId?: string;
61
+ customData?: Record<string, any>;
62
+ }
63
+ export interface VideoInfo {
64
+ id: string;
65
+ title?: string;
66
+ type: 'video' | 'audio' | 'livestream';
67
+ duration?: number;
68
+ url?: string;
69
+ quality?: string;
70
+ bitrate?: number;
71
+ codec?: string;
72
+ format?: string;
73
+ thumbnail?: string;
74
+ description?: string;
75
+ tags?: string[];
76
+ chapter?: ChapterInfo;
77
+ }
78
+ export interface ChapterInfo {
79
+ id: string;
80
+ title: string;
81
+ startTime: number;
82
+ endTime: number;
83
+ thumbnail?: string;
84
+ }
85
+ export interface DeviceInfo {
86
+ deviceType: 'mobile' | 'tablet' | 'desktop' | 'smart_tv' | 'tv';
87
+ os: string;
88
+ osVersion?: string;
89
+ browser?: string;
90
+ browserVersion?: string;
91
+ screen: {
92
+ width: number;
93
+ height: number;
94
+ orientation?: 'portrait' | 'landscape';
95
+ };
96
+ userAgent?: string;
97
+ language?: string;
98
+ timezone?: string;
99
+ }
100
+ export interface PlayerState {
101
+ currentTime: number;
102
+ duration: number;
103
+ volume: number;
104
+ muted: boolean;
105
+ playbackRate: number;
106
+ buffered?: TimeRanges | null;
107
+ quality?: string;
108
+ isFullscreen?: boolean;
109
+ isPip?: boolean;
110
+ isLive?: boolean;
111
+ seekableRange?: {
112
+ start: number;
113
+ end: number;
114
+ };
115
+ }
116
+ export interface NetworkInfo {
117
+ connectionType?: string;
118
+ effectiveType?: string;
119
+ downlink?: number;
120
+ rtt?: number;
121
+ online: boolean;
122
+ }
123
+ export interface EngagementData {
124
+ watchTime: number;
125
+ uniqueWatchTime: number;
126
+ completionPercentage: number;
127
+ seekCount: number;
128
+ qualityChangeCount: number;
129
+ fullscreenCount: number;
130
+ bufferingTime: number;
131
+ bufferingEvents: number;
132
+ averageBitrate?: number;
133
+ startupTime?: number;
134
+ rebufferCount: number;
135
+ errorCount: number;
136
+ interactionCount: number;
137
+ socialShares?: number;
138
+ likes?: number;
139
+ comments?: number;
140
+ }
141
+ export interface PlayerSessionInfo {
142
+ sessionId: string;
143
+ playerId: string;
144
+ startTime: number;
145
+ endTime?: number;
146
+ userId?: string;
147
+ userType?: string;
148
+ customData?: Record<string, any>;
149
+ initialVideo?: VideoInfo;
150
+ totalVideos?: number;
151
+ totalWatchTime?: number;
152
+ }
153
+ export type AnalyticsEventType = 'session_start' | 'session_end' | 'video_load' | 'video_start' | 'play' | 'pause' | 'resume' | 'ended' | 'seeking' | 'seeked' | 'waiting' | 'stalled' | 'canplay' | 'timeupdate' | 'heartbeat' | 'qualitychange' | 'volumechange' | 'fullscreenchange' | 'ratechange' | 'resize' | 'enterpictureinpicture' | 'leavepictureinpicture' | 'error' | 'custom';
154
+ export interface AnalyticsError {
155
+ code: string | number;
156
+ message: string;
157
+ stack?: string;
158
+ fatal?: boolean;
159
+ context?: Record<string, any>;
160
+ timestamp: number;
161
+ }
162
+ export interface BatchConfig {
163
+ maxSize: number;
164
+ flushInterval: number;
165
+ maxWaitTime: number;
166
+ retryAttempts: number;
167
+ retryDelay: number;
168
+ }
169
+ export interface AnalyticsRequest {
170
+ session: PlayerSessionInfo;
171
+ events: AnalyticsEventData[];
172
+ timestamp: number;
173
+ batchId?: string;
174
+ }
175
+ export interface AnalyticsResponse {
176
+ success: boolean;
177
+ message?: string;
178
+ errors?: string[];
179
+ batchId?: string;
180
+ processedCount?: number;
181
+ }
182
+ export interface ProviderFactory<T = any> {
183
+ (config: T): BaseAnalyticsProvider;
184
+ }
185
+ export interface CustomProviderConfig {
186
+ factory: ProviderFactory;
187
+ [key: string]: any;
188
+ }
189
+ export interface BaseAnalyticsProvider {
190
+ name: string;
191
+ enabled: boolean;
192
+ initialize(): Promise<void>;
193
+ trackEvent(event: AnalyticsEventData): Promise<void>;
194
+ startSession(sessionInfo: PlayerSessionInfo): Promise<string>;
195
+ endSession(): Promise<void>;
196
+ flush(): Promise<void>;
197
+ destroy(): Promise<void>;
198
+ }
199
+ export type DeepPartial<T> = {
200
+ [P in keyof T]?: T[P] extends object ? DeepPartial<T[P]> : T[P];
201
+ };
202
+ export type EventHandler = (event: AnalyticsEventData) => void;
203
+ export type ErrorHandler = (error: AnalyticsError) => void;
204
+ export type SessionHandler = (sessionInfo: PlayerSessionInfo) => void;
205
+ export interface StorageItem {
206
+ id: string;
207
+ data: AnalyticsEventData;
208
+ timestamp: number;
209
+ attempts: number;
210
+ }
211
+ export interface StorageConfig {
212
+ maxItems: number;
213
+ maxAge: number;
214
+ storageKey: string;
215
+ }
216
+ export interface DeviceDetectionResult {
217
+ deviceType: DeviceInfo['deviceType'];
218
+ os: string;
219
+ osVersion?: string;
220
+ browser?: string;
221
+ browserVersion?: string;
222
+ screen: DeviceInfo['screen'];
223
+ userAgent: string;
224
+ isMobile: boolean;
225
+ isTablet: boolean;
226
+ isDesktop: boolean;
227
+ isSmartTV: boolean;
228
+ isTizen: boolean;
229
+ isWebOS: boolean;
230
+ isRoku: boolean;
231
+ }
232
+ export interface NetworkDetectionResult {
233
+ connectionType?: string;
234
+ effectiveType?: string;
235
+ downlink?: number;
236
+ rtt?: number;
237
+ online: boolean;
238
+ }
239
+ //# sourceMappingURL=AnalyticsTypes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AnalyticsTypes.d.ts","sourceRoot":"","sources":["AnalyticsTypes.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ export var AnalyticsProviderType;
2
+ (function (AnalyticsProviderType) {
3
+ AnalyticsProviderType["PLAYER_ANALYTICS"] = "player-analytics";
4
+ AnalyticsProviderType["GOOGLE_ANALYTICS"] = "google-analytics";
5
+ AnalyticsProviderType["ADOBE_ANALYTICS"] = "adobe-analytics";
6
+ AnalyticsProviderType["CUSTOM"] = "custom";
7
+ })(AnalyticsProviderType || (AnalyticsProviderType = {}));
8
+ //# sourceMappingURL=AnalyticsTypes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AnalyticsTypes.js","sourceRoot":"","sources":["AnalyticsTypes.ts"],"names":[],"mappings":"AAsCA,MAAM,CAAN,IAAY,qBAKX;AALD,WAAY,qBAAqB;IAC/B,8DAAqC,CAAA;IACrC,8DAAqC,CAAA;IACrC,4DAAmC,CAAA;IACnC,0CAAiB,CAAA;AACnB,CAAC,EALW,qBAAqB,KAArB,qBAAqB,QAKhC"}
@@ -0,0 +1,27 @@
1
+ import { DeviceDetectionResult, DeviceInfo, NetworkInfo } from '../types/AnalyticsTypes';
2
+ export declare class DeviceDetection {
3
+ private static instance;
4
+ static getInstance(): DeviceDetection;
5
+ detectDevice(): DeviceDetectionResult;
6
+ getDeviceInfo(): DeviceInfo;
7
+ getNetworkInfo(): NetworkInfo;
8
+ private getUserAgent;
9
+ private getDeviceType;
10
+ private getOS;
11
+ private getOSVersion;
12
+ private getBrowser;
13
+ private getBrowserVersion;
14
+ private getScreenInfo;
15
+ private getLanguage;
16
+ private getTimezone;
17
+ private getConnection;
18
+ private isMobile;
19
+ private isTablet;
20
+ private isDesktop;
21
+ private isSmartTV;
22
+ private isTizen;
23
+ private isWebOS;
24
+ private isRoku;
25
+ }
26
+ export declare const deviceDetection: DeviceDetection;
27
+ //# sourceMappingURL=DeviceDetection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DeviceDetection.d.ts","sourceRoot":"","sources":["DeviceDetection.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,qBAAqB,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAEzF,qBAAa,eAAe;IAC1B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAkB;IAEzC,MAAM,CAAC,WAAW,IAAI,eAAe;IAUrC,YAAY,IAAI,qBAAqB;IAwBrC,aAAa,IAAI,UAAU;IAmB3B,cAAc,IAAI,WAAW;IAY7B,OAAO,CAAC,YAAY;IAIpB,OAAO,CAAC,aAAa;IAOrB,OAAO,CAAC,KAAK;IAYb,OAAO,CAAC,YAAY;IA0BpB,OAAO,CAAC,UAAU;IAUlB,OAAO,CAAC,iBAAiB;IA0BzB,OAAO,CAAC,aAAa;IAcrB,OAAO,CAAC,WAAW;IAKnB,OAAO,CAAC,WAAW;IAKnB,OAAO,CAAC,aAAa;IAKrB,OAAO,CAAC,QAAQ;IAIhB,OAAO,CAAC,QAAQ;IAIhB,OAAO,CAAC,SAAS;IAIjB,OAAO,CAAC,SAAS;IAIjB,OAAO,CAAC,OAAO;IAIf,OAAO,CAAC,OAAO;IAIf,OAAO,CAAC,MAAM;CAGf;AAGD,eAAO,MAAM,eAAe,iBAAgC,CAAC"}
@@ -0,0 +1,184 @@
1
+ export class DeviceDetection {
2
+ static getInstance() {
3
+ if (!DeviceDetection.instance) {
4
+ DeviceDetection.instance = new DeviceDetection();
5
+ }
6
+ return DeviceDetection.instance;
7
+ }
8
+ detectDevice() {
9
+ const userAgent = this.getUserAgent();
10
+ return {
11
+ deviceType: this.getDeviceType(userAgent),
12
+ os: this.getOS(userAgent),
13
+ osVersion: this.getOSVersion(userAgent),
14
+ browser: this.getBrowser(userAgent),
15
+ browserVersion: this.getBrowserVersion(userAgent),
16
+ screen: this.getScreenInfo(),
17
+ userAgent,
18
+ isMobile: this.isMobile(userAgent),
19
+ isTablet: this.isTablet(userAgent),
20
+ isDesktop: this.isDesktop(userAgent),
21
+ isSmartTV: this.isSmartTV(userAgent),
22
+ isTizen: this.isTizen(userAgent),
23
+ isWebOS: this.isWebOS(userAgent),
24
+ isRoku: this.isRoku(userAgent)
25
+ };
26
+ }
27
+ getDeviceInfo() {
28
+ const detection = this.detectDevice();
29
+ return {
30
+ deviceType: detection.deviceType,
31
+ os: detection.os,
32
+ osVersion: detection.osVersion,
33
+ browser: detection.browser,
34
+ browserVersion: detection.browserVersion,
35
+ screen: detection.screen,
36
+ userAgent: detection.userAgent,
37
+ language: this.getLanguage(),
38
+ timezone: this.getTimezone()
39
+ };
40
+ }
41
+ getNetworkInfo() {
42
+ const connection = this.getConnection();
43
+ return {
44
+ connectionType: connection?.type,
45
+ effectiveType: connection?.effectiveType,
46
+ downlink: connection?.downlink,
47
+ rtt: connection?.rtt,
48
+ online: navigator?.onLine ?? true
49
+ };
50
+ }
51
+ getUserAgent() {
52
+ return typeof navigator !== 'undefined' ? navigator.userAgent : '';
53
+ }
54
+ getDeviceType(userAgent) {
55
+ if (this.isSmartTV(userAgent))
56
+ return 'smart_tv';
57
+ if (this.isMobile(userAgent))
58
+ return 'mobile';
59
+ if (this.isTablet(userAgent))
60
+ return 'tablet';
61
+ return 'desktop';
62
+ }
63
+ getOS(userAgent) {
64
+ if (/Windows NT/i.test(userAgent))
65
+ return 'Windows';
66
+ if (/Mac OS X/i.test(userAgent))
67
+ return 'macOS';
68
+ if (/Linux/i.test(userAgent))
69
+ return 'Linux';
70
+ if (/Android/i.test(userAgent))
71
+ return 'Android';
72
+ if (/iPhone|iPad|iPod/i.test(userAgent))
73
+ return 'iOS';
74
+ if (/Tizen/i.test(userAgent))
75
+ return 'Tizen';
76
+ if (/webOS/i.test(userAgent))
77
+ return 'webOS';
78
+ if (/Roku/i.test(userAgent))
79
+ return 'Roku';
80
+ return 'Unknown';
81
+ }
82
+ getOSVersion(userAgent) {
83
+ let match;
84
+ match = userAgent.match(/Windows NT ([\d.]+)/);
85
+ if (match)
86
+ return match[1];
87
+ match = userAgent.match(/Mac OS X ([\d_]+)/);
88
+ if (match)
89
+ return match[1].replace(/_/g, '.');
90
+ match = userAgent.match(/OS ([\d_]+)/);
91
+ if (match)
92
+ return match[1].replace(/_/g, '.');
93
+ match = userAgent.match(/Android ([\d.]+)/);
94
+ if (match)
95
+ return match[1];
96
+ match = userAgent.match(/Tizen ([\d.]+)/);
97
+ if (match)
98
+ return match[1];
99
+ return undefined;
100
+ }
101
+ getBrowser(userAgent) {
102
+ if (/Chrome/i.test(userAgent) && !/Edge/i.test(userAgent))
103
+ return 'Chrome';
104
+ if (/Firefox/i.test(userAgent))
105
+ return 'Firefox';
106
+ if (/Safari/i.test(userAgent) && !/Chrome/i.test(userAgent))
107
+ return 'Safari';
108
+ if (/Edge/i.test(userAgent))
109
+ return 'Edge';
110
+ if (/Opera/i.test(userAgent))
111
+ return 'Opera';
112
+ if (/Samsung/i.test(userAgent))
113
+ return 'Samsung Internet';
114
+ return undefined;
115
+ }
116
+ getBrowserVersion(userAgent) {
117
+ let match;
118
+ match = userAgent.match(/Chrome\/([\d.]+)/);
119
+ if (match && !/Edge/i.test(userAgent))
120
+ return match[1];
121
+ match = userAgent.match(/Firefox\/([\d.]+)/);
122
+ if (match)
123
+ return match[1];
124
+ match = userAgent.match(/Version\/([\d.]+).*Safari/);
125
+ if (match)
126
+ return match[1];
127
+ match = userAgent.match(/Edge\/([\d.]+)/);
128
+ if (match)
129
+ return match[1];
130
+ match = userAgent.match(/Opera.*Version\/([\d.]+)/);
131
+ if (match)
132
+ return match[1];
133
+ return undefined;
134
+ }
135
+ getScreenInfo() {
136
+ if (typeof window === 'undefined' || !window.screen) {
137
+ return { width: 1920, height: 1080 };
138
+ }
139
+ const orientation = window.screen.width > window.screen.height ? 'landscape' : 'portrait';
140
+ return {
141
+ width: window.screen.width,
142
+ height: window.screen.height,
143
+ orientation
144
+ };
145
+ }
146
+ getLanguage() {
147
+ if (typeof navigator === 'undefined')
148
+ return 'en-US';
149
+ return navigator.language || 'en-US';
150
+ }
151
+ getTimezone() {
152
+ if (typeof Intl === 'undefined')
153
+ return 'UTC';
154
+ return Intl.DateTimeFormat().resolvedOptions().timeZone || 'UTC';
155
+ }
156
+ getConnection() {
157
+ if (typeof navigator === 'undefined')
158
+ return null;
159
+ return navigator.connection || navigator.mozConnection || navigator.webkitConnection;
160
+ }
161
+ isMobile(userAgent) {
162
+ return /Android|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(userAgent);
163
+ }
164
+ isTablet(userAgent) {
165
+ return /iPad|Android.*(?!.*Mobile)/i.test(userAgent);
166
+ }
167
+ isDesktop(userAgent) {
168
+ return !this.isMobile(userAgent) && !this.isSmartTV(userAgent);
169
+ }
170
+ isSmartTV(userAgent) {
171
+ return /Smart.*TV|Tizen|webOS|Roku|PlayStation|Xbox/i.test(userAgent);
172
+ }
173
+ isTizen(userAgent) {
174
+ return /Tizen/i.test(userAgent);
175
+ }
176
+ isWebOS(userAgent) {
177
+ return /webOS/i.test(userAgent);
178
+ }
179
+ isRoku(userAgent) {
180
+ return /Roku/i.test(userAgent);
181
+ }
182
+ }
183
+ export const deviceDetection = DeviceDetection.getInstance();
184
+ //# sourceMappingURL=DeviceDetection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DeviceDetection.js","sourceRoot":"","sources":["DeviceDetection.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,39 @@
1
+ import { Chapter, ChapterSegment, ChapterConfig, EventHandler } from './interfaces';
2
+ export interface ChapterManagerEvents {
3
+ chapterchange: Chapter | null;
4
+ segmententered: ChapterSegment;
5
+ segmentexited: ChapterSegment;
6
+ segmentskipped: ChapterSegment;
7
+ }
8
+ export declare class ChapterManager {
9
+ private config;
10
+ private chapters;
11
+ private segments;
12
+ private currentChapter;
13
+ private activeSegments;
14
+ private lastProcessedTime;
15
+ private eventHandlers;
16
+ constructor(config?: ChapterConfig);
17
+ updateConfig(config: ChapterConfig): void;
18
+ loadChapterData(url: string): Promise<void>;
19
+ initialize(): Promise<void>;
20
+ processTimeUpdate(currentTime: number): void;
21
+ private processChapterChange;
22
+ private processSegments;
23
+ getCurrentChapter(currentTime: number): Chapter | null;
24
+ getChapters(): Chapter[];
25
+ getSegments(): ChapterSegment[];
26
+ getSegmentsAtTime(currentTime: number): ChapterSegment[];
27
+ skipSegment(segment: ChapterSegment): void;
28
+ seekToChapter(chapterId: string): Chapter | null;
29
+ getNextChapter(currentTime: number): Chapter | null;
30
+ getPreviousChapter(currentTime: number): Chapter | null;
31
+ on<K extends keyof ChapterManagerEvents>(event: K, handler: EventHandler): void;
32
+ off<K extends keyof ChapterManagerEvents>(event: K, handler?: EventHandler): void;
33
+ private emit;
34
+ reset(): void;
35
+ destroy(): void;
36
+ getCurrentChapterInfo(): Chapter | null;
37
+ isEnabled(): boolean;
38
+ }
39
+ //# sourceMappingURL=chapter-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chapter-manager.d.ts","sourceRoot":"","sources":["chapter-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAEpF,MAAM,WAAW,oBAAoB;IACnC,aAAa,EAAE,OAAO,GAAG,IAAI,CAAC;IAC9B,cAAc,EAAE,cAAc,CAAC;IAC/B,aAAa,EAAE,cAAc,CAAC;IAC9B,cAAc,EAAE,cAAc,CAAC;CAChC;AAED,qBAAa,cAAc;IACzB,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,QAAQ,CAAiB;IACjC,OAAO,CAAC,QAAQ,CAAwB;IACxC,OAAO,CAAC,cAAc,CAAwB;IAC9C,OAAO,CAAC,cAAc,CAA0B;IAChD,OAAO,CAAC,iBAAiB,CAAc;IACvC,OAAO,CAAC,aAAa,CAA8D;gBAEvE,MAAM,GAAE,aAAkB;IAetC,YAAY,CAAC,MAAM,EAAE,aAAa,GAAG,IAAI;IASnC,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAuB3C,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAajC,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI;IAa5C,OAAO,CAAC,oBAAoB;IAgB5B,OAAO,CAAC,eAAe;IA0CvB,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,GAAG,IAAI;IAStD,WAAW,IAAI,OAAO,EAAE;IAOxB,WAAW,IAAI,cAAc,EAAE;IAO/B,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,cAAc,EAAE;IASxD,WAAW,CAAC,OAAO,EAAE,cAAc,GAAG,IAAI;IAW1C,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,GAAG,IAAI;IAahD,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,GAAG,IAAI;IAOnD,kBAAkB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,GAAG,IAAI;IAWvD,EAAE,CAAC,CAAC,SAAS,MAAM,oBAAoB,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,YAAY,GAAG,IAAI;IAS/E,GAAG,CAAC,CAAC,SAAS,MAAM,oBAAoB,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,IAAI;IAgBjF,OAAO,CAAC,IAAI;IAcZ,KAAK,IAAI,IAAI;IASb,OAAO,IAAI,IAAI;IAQf,qBAAqB,IAAI,OAAO,GAAG,IAAI;IAOvC,SAAS,IAAI,OAAO;CAGrB"}