unified-video-framework 1.4.413 → 1.4.415

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 (107) hide show
  1. package/package.json +6 -1
  2. package/packages/core/src/BasePlayer.d.ts +61 -0
  3. package/packages/core/src/BasePlayer.d.ts.map +1 -0
  4. package/packages/core/src/BasePlayer.js +175 -0
  5. package/packages/core/src/BasePlayer.js.map +1 -0
  6. package/packages/core/src/VideoPlayerFactory.d.ts +8 -0
  7. package/packages/core/src/VideoPlayerFactory.d.ts.map +1 -0
  8. package/packages/core/src/VideoPlayerFactory.js +95 -0
  9. package/packages/core/src/VideoPlayerFactory.js.map +1 -0
  10. package/packages/core/src/analytics/adapters/PlayerAnalyticsAdapter.d.ts +18 -0
  11. package/packages/core/src/analytics/adapters/PlayerAnalyticsAdapter.d.ts.map +1 -0
  12. package/packages/core/src/analytics/adapters/PlayerAnalyticsAdapter.js +117 -0
  13. package/packages/core/src/analytics/adapters/PlayerAnalyticsAdapter.js.map +1 -0
  14. package/packages/core/src/analytics/core/AnalyticsProvider.d.ts +18 -0
  15. package/packages/core/src/analytics/core/AnalyticsProvider.d.ts.map +1 -0
  16. package/packages/core/src/analytics/core/AnalyticsProvider.js +99 -0
  17. package/packages/core/src/analytics/core/AnalyticsProvider.js.map +1 -0
  18. package/packages/core/src/analytics/core/DynamicAnalyticsManager.d.ts +20 -0
  19. package/packages/core/src/analytics/core/DynamicAnalyticsManager.d.ts.map +1 -0
  20. package/packages/core/src/analytics/core/DynamicAnalyticsManager.js +161 -0
  21. package/packages/core/src/analytics/core/DynamicAnalyticsManager.js.map +1 -0
  22. package/packages/core/src/analytics/core/EventBatcher.d.ts +32 -0
  23. package/packages/core/src/analytics/core/EventBatcher.d.ts.map +1 -0
  24. package/packages/core/src/analytics/core/EventBatcher.js +98 -0
  25. package/packages/core/src/analytics/core/EventBatcher.js.map +1 -0
  26. package/packages/core/src/analytics/core/PlayerAnalytics.d.ts +19 -0
  27. package/packages/core/src/analytics/core/PlayerAnalytics.d.ts.map +1 -0
  28. package/packages/core/src/analytics/core/PlayerAnalytics.js +80 -0
  29. package/packages/core/src/analytics/core/PlayerAnalytics.js.map +1 -0
  30. package/packages/core/src/analytics/index.d.ts +13 -0
  31. package/packages/core/src/analytics/index.d.ts.map +1 -0
  32. package/packages/core/src/analytics/index.js +13 -0
  33. package/packages/core/src/analytics/index.js.map +1 -0
  34. package/packages/core/src/analytics/types/AnalyticsTypes.d.ts +239 -0
  35. package/packages/core/src/analytics/types/AnalyticsTypes.d.ts.map +1 -0
  36. package/packages/core/src/analytics/types/AnalyticsTypes.js +8 -0
  37. package/packages/core/src/analytics/types/AnalyticsTypes.js.map +1 -0
  38. package/packages/core/src/analytics/utils/DeviceDetection.d.ts +27 -0
  39. package/packages/core/src/analytics/utils/DeviceDetection.d.ts.map +1 -0
  40. package/packages/core/src/analytics/utils/DeviceDetection.js +184 -0
  41. package/packages/core/src/analytics/utils/DeviceDetection.js.map +1 -0
  42. package/packages/core/src/chapter-manager.d.ts +39 -0
  43. package/packages/core/src/chapter-manager.d.ts.map +1 -0
  44. package/packages/core/src/chapter-manager.js +173 -0
  45. package/packages/core/src/chapter-manager.js.map +1 -0
  46. package/packages/core/src/index.d.ts +10 -0
  47. package/packages/core/src/index.d.ts.map +1 -0
  48. package/packages/core/src/index.js +8 -0
  49. package/packages/core/src/index.js.map +1 -0
  50. package/packages/core/src/interfaces/IVideoPlayer.d.ts +229 -0
  51. package/packages/core/src/interfaces/IVideoPlayer.d.ts.map +1 -0
  52. package/packages/core/src/interfaces/IVideoPlayer.js +2 -0
  53. package/packages/core/src/interfaces/IVideoPlayer.js.map +1 -0
  54. package/packages/core/src/interfaces.d.ts +455 -0
  55. package/packages/core/src/interfaces.d.ts.map +1 -0
  56. package/packages/core/src/interfaces.js +32 -0
  57. package/packages/core/src/interfaces.js.map +1 -0
  58. package/packages/core/src/utils/EventEmitter.d.ts +14 -0
  59. package/packages/core/src/utils/EventEmitter.d.ts.map +1 -0
  60. package/packages/core/src/utils/EventEmitter.js +55 -0
  61. package/packages/core/src/utils/EventEmitter.js.map +1 -0
  62. package/packages/web/dist/drm/DRMManager.d.ts +1 -1
  63. package/packages/web/dist/drm/DRMManager.d.ts.map +1 -1
  64. package/packages/web/dist/drm/DRMManager.js +7 -7
  65. package/packages/web/dist/drm/DRMManager.js.map +1 -1
  66. package/packages/web/dist/drm/providers/BunnyNetProvider.d.ts +1 -1
  67. package/packages/web/dist/drm/providers/BunnyNetProvider.d.ts.map +1 -1
  68. package/packages/web/dist/drm/providers/BunnyNetProvider.js +13 -13
  69. package/packages/web/dist/drm/providers/BunnyNetProvider.js.map +1 -1
  70. package/packages/web/dist/drm/providers/GenericProvider.d.ts +1 -1
  71. package/packages/web/dist/drm/providers/GenericProvider.d.ts.map +1 -1
  72. package/packages/web/dist/drm/providers/GenericProvider.js +8 -6
  73. package/packages/web/dist/drm/providers/GenericProvider.js.map +1 -1
  74. package/packages/web/dist/drm/systems/FairPlayDRM.d.ts.map +1 -1
  75. package/packages/web/dist/drm/systems/FairPlayDRM.js +2 -2
  76. package/packages/web/dist/drm/systems/FairPlayDRM.js.map +1 -1
  77. package/packages/web/dist/drm/systems/PlayReadyDRM.d.ts.map +1 -1
  78. package/packages/web/dist/drm/systems/PlayReadyDRM.js +7 -7
  79. package/packages/web/dist/drm/systems/PlayReadyDRM.js.map +1 -1
  80. package/packages/web/dist/drm/systems/WidevineDRM.d.ts.map +1 -1
  81. package/packages/web/dist/drm/systems/WidevineDRM.js +2 -2
  82. package/packages/web/dist/drm/systems/WidevineDRM.js.map +1 -1
  83. package/packages/web/dist/drm/types/BunnyNetTypes.d.ts +1 -1
  84. package/packages/web/dist/drm/types/BunnyNetTypes.d.ts.map +1 -1
  85. package/packages/web/dist/drm/types/DRMTypes.d.ts +1 -1
  86. package/packages/web/dist/drm/types/DRMTypes.d.ts.map +1 -1
  87. package/packages/web/dist/drm/types/DRMTypes.js +5 -5
  88. package/packages/web/dist/drm/types/DRMTypes.js.map +1 -1
  89. package/packages/web/dist/drm/utils/BrowserDetector.d.ts +1 -1
  90. package/packages/web/dist/drm/utils/BrowserDetector.d.ts.map +1 -1
  91. package/packages/web/dist/drm/utils/BrowserDetector.js +10 -10
  92. package/packages/web/dist/drm/utils/BrowserDetector.js.map +1 -1
  93. package/packages/web/src/drm/DRMManager.ts +214 -213
  94. package/packages/web/src/drm/index.ts +37 -37
  95. package/packages/web/src/drm/providers/BunnyNetProvider.ts +171 -170
  96. package/packages/web/src/drm/providers/GenericProvider.ts +151 -148
  97. package/packages/web/src/drm/systems/BaseDRM.ts +68 -68
  98. package/packages/web/src/drm/systems/FairPlayDRM.ts +306 -305
  99. package/packages/web/src/drm/systems/PlayReadyDRM.ts +132 -131
  100. package/packages/web/src/drm/systems/WidevineDRM.ts +106 -105
  101. package/packages/web/src/drm/types/BunnyNetTypes.ts +35 -35
  102. package/packages/web/src/drm/types/DRMTypes.ts +92 -91
  103. package/packages/web/src/drm/utils/BrowserDetector.ts +233 -232
  104. package/packages/web/src/drm/utils/CertificateManager.ts +86 -86
  105. package/packages/web/src/drm/utils/DRMErrorHandler.ts +84 -84
  106. package/packages/web/src/drm/utils/LicenseRequestHandler.ts +180 -180
  107. package/scripts/fix-imports.js +54 -8
@@ -1,86 +1,86 @@
1
- /**
2
- * Certificate Manager
3
- * Manages FairPlay DRM certificates with in-memory caching
4
- */
5
-
6
- export class CertificateManager {
7
- private static instance: CertificateManager;
8
- private cache: Map<string, ArrayBuffer>;
9
- private maxCacheSize: number = 10; // Max number of certificates to cache
10
-
11
- private constructor() {
12
- this.cache = new Map();
13
- }
14
-
15
- static getInstance(): CertificateManager {
16
- if (!CertificateManager.instance) {
17
- CertificateManager.instance = new CertificateManager();
18
- }
19
- return CertificateManager.instance;
20
- }
21
-
22
- /**
23
- * Get certificate from cache
24
- */
25
- getCertificate(url: string): ArrayBuffer | null {
26
- return this.cache.get(url) || null;
27
- }
28
-
29
- /**
30
- * Store certificate in cache
31
- */
32
- setCertificate(url: string, certificate: ArrayBuffer): void {
33
- // Implement LRU eviction if cache is full
34
- if (this.cache.size >= this.maxCacheSize && !this.cache.has(url)) {
35
- const firstKey = this.cache.keys().next().value;
36
- if (firstKey) {
37
- this.cache.delete(firstKey);
38
- }
39
- }
40
-
41
- this.cache.set(url, certificate);
42
- }
43
-
44
- /**
45
- * Check if certificate is cached
46
- */
47
- hasCertificate(url: string): boolean {
48
- return this.cache.has(url);
49
- }
50
-
51
- /**
52
- * Clear all cached certificates
53
- */
54
- clearCache(): void {
55
- this.cache.clear();
56
- }
57
-
58
- /**
59
- * Remove specific certificate from cache
60
- */
61
- removeCertificate(url: string): boolean {
62
- return this.cache.delete(url);
63
- }
64
-
65
- /**
66
- * Get cache size
67
- */
68
- getCacheSize(): number {
69
- return this.cache.size;
70
- }
71
-
72
- /**
73
- * Set max cache size
74
- */
75
- setMaxCacheSize(size: number): void {
76
- this.maxCacheSize = size;
77
-
78
- // Evict old entries if current size exceeds new max
79
- while (this.cache.size > this.maxCacheSize) {
80
- const firstKey = this.cache.keys().next().value;
81
- if (firstKey) {
82
- this.cache.delete(firstKey);
83
- }
84
- }
85
- }
86
- }
1
+ /**
2
+ * Certificate Manager
3
+ * Manages FairPlay DRM certificates with in-memory caching
4
+ */
5
+
6
+ export class CertificateManager {
7
+ private static instance: CertificateManager;
8
+ private cache: Map<string, ArrayBuffer>;
9
+ private maxCacheSize: number = 10; // Max number of certificates to cache
10
+
11
+ private constructor() {
12
+ this.cache = new Map();
13
+ }
14
+
15
+ static getInstance(): CertificateManager {
16
+ if (!CertificateManager.instance) {
17
+ CertificateManager.instance = new CertificateManager();
18
+ }
19
+ return CertificateManager.instance;
20
+ }
21
+
22
+ /**
23
+ * Get certificate from cache
24
+ */
25
+ getCertificate(url: string): ArrayBuffer | null {
26
+ return this.cache.get(url) || null;
27
+ }
28
+
29
+ /**
30
+ * Store certificate in cache
31
+ */
32
+ setCertificate(url: string, certificate: ArrayBuffer): void {
33
+ // Implement LRU eviction if cache is full
34
+ if (this.cache.size >= this.maxCacheSize && !this.cache.has(url)) {
35
+ const firstKey = this.cache.keys().next().value;
36
+ if (firstKey) {
37
+ this.cache.delete(firstKey);
38
+ }
39
+ }
40
+
41
+ this.cache.set(url, certificate);
42
+ }
43
+
44
+ /**
45
+ * Check if certificate is cached
46
+ */
47
+ hasCertificate(url: string): boolean {
48
+ return this.cache.has(url);
49
+ }
50
+
51
+ /**
52
+ * Clear all cached certificates
53
+ */
54
+ clearCache(): void {
55
+ this.cache.clear();
56
+ }
57
+
58
+ /**
59
+ * Remove specific certificate from cache
60
+ */
61
+ removeCertificate(url: string): boolean {
62
+ return this.cache.delete(url);
63
+ }
64
+
65
+ /**
66
+ * Get cache size
67
+ */
68
+ getCacheSize(): number {
69
+ return this.cache.size;
70
+ }
71
+
72
+ /**
73
+ * Set max cache size
74
+ */
75
+ setMaxCacheSize(size: number): void {
76
+ this.maxCacheSize = size;
77
+
78
+ // Evict old entries if current size exceeds new max
79
+ while (this.cache.size > this.maxCacheSize) {
80
+ const firstKey = this.cache.keys().next().value;
81
+ if (firstKey) {
82
+ this.cache.delete(firstKey);
83
+ }
84
+ }
85
+ }
86
+ }
@@ -1,84 +1,84 @@
1
- /**
2
- * DRM Error Handler
3
- * Converts DRM errors to user-friendly messages
4
- */
5
-
6
- import { DRMError, DRMErrorCode } from '../types/DRMTypes';
7
-
8
- export class DRMErrorHandler {
9
- /**
10
- * Get user-friendly error message
11
- */
12
- static getUserFriendlyMessage(error: DRMError): string {
13
- switch (error.code) {
14
- case DRMErrorCode.UNSUPPORTED_BROWSER:
15
- return 'DRM is not supported in this browser. Please use Chrome, Safari, Firefox, or Edge.';
16
-
17
- case DRMErrorCode.CERTIFICATE_LOAD_FAILED:
18
- return 'Failed to load DRM certificate. Please check your internet connection.';
19
-
20
- case DRMErrorCode.LICENSE_REQUEST_FAILED:
21
- return 'Failed to obtain content license. Please check your internet connection and try again.';
22
-
23
- case DRMErrorCode.KEY_SYSTEM_ACCESS_DENIED:
24
- return 'Access to DRM system was denied. Please ensure DRM is enabled in your browser settings.';
25
-
26
- case DRMErrorCode.MEDIA_KEYS_CREATION_FAILED:
27
- return 'Failed to initialize DRM protection. Please try refreshing the page.';
28
-
29
- case DRMErrorCode.SESSION_CREATION_FAILED:
30
- return 'Failed to create secure playback session. Please try again.';
31
-
32
- case DRMErrorCode.LICENSE_INVALID:
33
- return 'Invalid or expired content license. You may not have permission to view this content.';
34
-
35
- case DRMErrorCode.CONFIGURATION_ERROR:
36
- return 'DRM configuration error. Please contact support.';
37
-
38
- case DRMErrorCode.NETWORK_ERROR:
39
- return 'Network error while loading protected content. Please check your internet connection.';
40
-
41
- case DRMErrorCode.TIMEOUT:
42
- return 'DRM initialization timed out. Please try again.';
43
-
44
- default:
45
- return 'An error occurred while loading protected content. Please try again.';
46
- }
47
- }
48
-
49
- /**
50
- * Get technical error message for developers
51
- */
52
- static getTechnicalMessage(error: DRMError): string {
53
- let message = `[${error.code}] ${error.message}`;
54
-
55
- if (error.details) {
56
- message += `\nDetails: ${JSON.stringify(error.details, null, 2)}`;
57
- }
58
-
59
- if (error.systemError) {
60
- message += `\nSystem Error: ${error.systemError}`;
61
- }
62
-
63
- return message;
64
- }
65
-
66
- /**
67
- * Create standardized DRM error
68
- */
69
- static createError(
70
- code: DRMErrorCode,
71
- message: string,
72
- fatal: boolean = true,
73
- details?: any,
74
- systemError?: any
75
- ): DRMError {
76
- return {
77
- code,
78
- message,
79
- fatal,
80
- details,
81
- systemError,
82
- };
83
- }
84
- }
1
+ /**
2
+ * DRM Error Handler
3
+ * Converts DRM errors to user-friendly messages
4
+ */
5
+
6
+ import { DRMError, DRMErrorCode } from '../types/DRMTypes';
7
+
8
+ export class DRMErrorHandler {
9
+ /**
10
+ * Get user-friendly error message
11
+ */
12
+ static getUserFriendlyMessage(error: DRMError): string {
13
+ switch (error.code) {
14
+ case DRMErrorCode.UNSUPPORTED_BROWSER:
15
+ return 'DRM is not supported in this browser. Please use Chrome, Safari, Firefox, or Edge.';
16
+
17
+ case DRMErrorCode.CERTIFICATE_LOAD_FAILED:
18
+ return 'Failed to load DRM certificate. Please check your internet connection.';
19
+
20
+ case DRMErrorCode.LICENSE_REQUEST_FAILED:
21
+ return 'Failed to obtain content license. Please check your internet connection and try again.';
22
+
23
+ case DRMErrorCode.KEY_SYSTEM_ACCESS_DENIED:
24
+ return 'Access to DRM system was denied. Please ensure DRM is enabled in your browser settings.';
25
+
26
+ case DRMErrorCode.MEDIA_KEYS_CREATION_FAILED:
27
+ return 'Failed to initialize DRM protection. Please try refreshing the page.';
28
+
29
+ case DRMErrorCode.SESSION_CREATION_FAILED:
30
+ return 'Failed to create secure playback session. Please try again.';
31
+
32
+ case DRMErrorCode.LICENSE_INVALID:
33
+ return 'Invalid or expired content license. You may not have permission to view this content.';
34
+
35
+ case DRMErrorCode.CONFIGURATION_ERROR:
36
+ return 'DRM configuration error. Please contact support.';
37
+
38
+ case DRMErrorCode.NETWORK_ERROR:
39
+ return 'Network error while loading protected content. Please check your internet connection.';
40
+
41
+ case DRMErrorCode.TIMEOUT:
42
+ return 'DRM initialization timed out. Please try again.';
43
+
44
+ default:
45
+ return 'An error occurred while loading protected content. Please try again.';
46
+ }
47
+ }
48
+
49
+ /**
50
+ * Get technical error message for developers
51
+ */
52
+ static getTechnicalMessage(error: DRMError): string {
53
+ let message = `[${error.code}] ${error.message}`;
54
+
55
+ if (error.details) {
56
+ message += `\nDetails: ${JSON.stringify(error.details, null, 2)}`;
57
+ }
58
+
59
+ if (error.systemError) {
60
+ message += `\nSystem Error: ${error.systemError}`;
61
+ }
62
+
63
+ return message;
64
+ }
65
+
66
+ /**
67
+ * Create standardized DRM error
68
+ */
69
+ static createError(
70
+ code: DRMErrorCode,
71
+ message: string,
72
+ fatal: boolean = true,
73
+ details?: any,
74
+ systemError?: any
75
+ ): DRMError {
76
+ return {
77
+ code,
78
+ message,
79
+ fatal,
80
+ details,
81
+ systemError,
82
+ };
83
+ }
84
+ }