unified-video-framework 1.4.444 → 1.4.445

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 (119) hide show
  1. package/package.json +1 -1
  2. package/packages/core/dist/version.d.ts +1 -1
  3. package/packages/core/dist/version.js +1 -1
  4. package/packages/core/src/version.ts +1 -1
  5. package/packages/web/dist/WebPlayer.d.ts.map +1 -1
  6. package/packages/web/dist/WebPlayer.js +52 -19
  7. package/packages/web/dist/WebPlayer.js.map +1 -1
  8. package/packages/web/src/WebPlayer.ts +62 -19
  9. package/packages/web/dist/WebPlayer.d.ts +0 -350
  10. package/packages/web/dist/ads/GoogleAdsManager.d.ts +0 -57
  11. package/packages/web/dist/ads/LiveStreamAdsManager.d.ts +0 -29
  12. package/packages/web/dist/ads/LiveStreamAdsManager.d.ts.map +0 -1
  13. package/packages/web/dist/ads/LiveStreamAdsManager.js +0 -168
  14. package/packages/web/dist/ads/LiveStreamAdsManager.js.map +0 -1
  15. package/packages/web/dist/chapters/ChapterManager.d.ts +0 -42
  16. package/packages/web/dist/chapters/CreditsButtonController.d.ts +0 -46
  17. package/packages/web/dist/chapters/SkipButtonController.d.ts +0 -31
  18. package/packages/web/dist/chapters/UserPreferencesManager.d.ts +0 -25
  19. package/packages/web/dist/chapters/index.d.ts +0 -12
  20. package/packages/web/dist/chapters/types/ChapterTypes.d.ts +0 -136
  21. package/packages/web/dist/drm/BunnyCDNDRMProvider.d.ts +0 -13
  22. package/packages/web/dist/drm/BunnyCDNDRMProvider.d.ts.map +0 -1
  23. package/packages/web/dist/drm/BunnyCDNDRMProvider.js +0 -65
  24. package/packages/web/dist/drm/BunnyCDNDRMProvider.js.map +0 -1
  25. package/packages/web/dist/drm/DRMManager.d.ts +0 -20
  26. package/packages/web/dist/drm/DRMManager.d.ts.map +0 -1
  27. package/packages/web/dist/drm/DRMManager.js +0 -130
  28. package/packages/web/dist/drm/DRMManager.js.map +0 -1
  29. package/packages/web/dist/drm/FairPlayDRMHandler.d.ts +0 -24
  30. package/packages/web/dist/drm/FairPlayDRMHandler.d.ts.map +0 -1
  31. package/packages/web/dist/drm/FairPlayDRMHandler.js +0 -190
  32. package/packages/web/dist/drm/FairPlayDRMHandler.js.map +0 -1
  33. package/packages/web/dist/drm/WidevineDRMHandler.d.ts +0 -21
  34. package/packages/web/dist/drm/WidevineDRMHandler.d.ts.map +0 -1
  35. package/packages/web/dist/drm/WidevineDRMHandler.js +0 -143
  36. package/packages/web/dist/drm/WidevineDRMHandler.js.map +0 -1
  37. package/packages/web/dist/drm/index.d.ts +0 -15
  38. package/packages/web/dist/drm/index.d.ts.map +0 -1
  39. package/packages/web/dist/drm/index.js +0 -13
  40. package/packages/web/dist/drm/index.js.map +0 -1
  41. package/packages/web/dist/drm/providers/BunnyNetProvider.d.ts +0 -19
  42. package/packages/web/dist/drm/providers/BunnyNetProvider.d.ts.map +0 -1
  43. package/packages/web/dist/drm/providers/BunnyNetProvider.js +0 -112
  44. package/packages/web/dist/drm/providers/BunnyNetProvider.js.map +0 -1
  45. package/packages/web/dist/drm/providers/GenericProvider.d.ts +0 -30
  46. package/packages/web/dist/drm/providers/GenericProvider.d.ts.map +0 -1
  47. package/packages/web/dist/drm/providers/GenericProvider.js +0 -104
  48. package/packages/web/dist/drm/providers/GenericProvider.js.map +0 -1
  49. package/packages/web/dist/drm/systems/BaseDRM.d.ts +0 -18
  50. package/packages/web/dist/drm/systems/BaseDRM.d.ts.map +0 -1
  51. package/packages/web/dist/drm/systems/BaseDRM.js +0 -29
  52. package/packages/web/dist/drm/systems/BaseDRM.js.map +0 -1
  53. package/packages/web/dist/drm/systems/FairPlayDRM.d.ts +0 -32
  54. package/packages/web/dist/drm/systems/FairPlayDRM.d.ts.map +0 -1
  55. package/packages/web/dist/drm/systems/FairPlayDRM.js +0 -208
  56. package/packages/web/dist/drm/systems/FairPlayDRM.js.map +0 -1
  57. package/packages/web/dist/drm/systems/PlayReadyDRM.d.ts +0 -9
  58. package/packages/web/dist/drm/systems/PlayReadyDRM.d.ts.map +0 -1
  59. package/packages/web/dist/drm/systems/PlayReadyDRM.js +0 -114
  60. package/packages/web/dist/drm/systems/PlayReadyDRM.js.map +0 -1
  61. package/packages/web/dist/drm/systems/WidevineDRM.d.ts +0 -9
  62. package/packages/web/dist/drm/systems/WidevineDRM.d.ts.map +0 -1
  63. package/packages/web/dist/drm/systems/WidevineDRM.js +0 -159
  64. package/packages/web/dist/drm/systems/WidevineDRM.js.map +0 -1
  65. package/packages/web/dist/drm/types/BunnyNetTypes.d.ts +0 -20
  66. package/packages/web/dist/drm/types/BunnyNetTypes.d.ts.map +0 -1
  67. package/packages/web/dist/drm/types/BunnyNetTypes.js +0 -8
  68. package/packages/web/dist/drm/types/BunnyNetTypes.js.map +0 -1
  69. package/packages/web/dist/drm/types/DRMTypes.d.ts +0 -60
  70. package/packages/web/dist/drm/types/DRMTypes.d.ts.map +0 -1
  71. package/packages/web/dist/drm/types/DRMTypes.js +0 -22
  72. package/packages/web/dist/drm/types/DRMTypes.js.map +0 -1
  73. package/packages/web/dist/drm/utils/BrowserDetector.d.ts +0 -20
  74. package/packages/web/dist/drm/utils/BrowserDetector.d.ts.map +0 -1
  75. package/packages/web/dist/drm/utils/BrowserDetector.js +0 -211
  76. package/packages/web/dist/drm/utils/BrowserDetector.js.map +0 -1
  77. package/packages/web/dist/drm/utils/CertificateManager.d.ts +0 -15
  78. package/packages/web/dist/drm/utils/CertificateManager.d.ts.map +0 -1
  79. package/packages/web/dist/drm/utils/CertificateManager.js +0 -46
  80. package/packages/web/dist/drm/utils/CertificateManager.js.map +0 -1
  81. package/packages/web/dist/drm/utils/DRMErrorHandler.d.ts +0 -7
  82. package/packages/web/dist/drm/utils/DRMErrorHandler.d.ts.map +0 -1
  83. package/packages/web/dist/drm/utils/DRMErrorHandler.js +0 -49
  84. package/packages/web/dist/drm/utils/DRMErrorHandler.js.map +0 -1
  85. package/packages/web/dist/drm/utils/LicenseRequestHandler.d.ts +0 -15
  86. package/packages/web/dist/drm/utils/LicenseRequestHandler.d.ts.map +0 -1
  87. package/packages/web/dist/drm/utils/LicenseRequestHandler.js +0 -110
  88. package/packages/web/dist/drm/utils/LicenseRequestHandler.js.map +0 -1
  89. package/packages/web/dist/drm.d.ts +0 -4
  90. package/packages/web/dist/drm.js +0 -5
  91. package/packages/web/dist/index.d.ts +0 -7
  92. package/packages/web/dist/paywall/EmailAuthController.d.ts +0 -60
  93. package/packages/web/dist/paywall/PaywallController.d.ts +0 -74
  94. package/packages/web/dist/react/EPG.d.ts +0 -8
  95. package/packages/web/dist/react/WebPlayerView.d.ts +0 -397
  96. package/packages/web/dist/react/WebPlayerViewWithEPG.d.ts +0 -97
  97. package/packages/web/dist/react/components/ChapterProgress.d.ts +0 -22
  98. package/packages/web/dist/react/components/EPGNavigationControls.d.ts +0 -15
  99. package/packages/web/dist/react/components/EPGOverlay-improved-positioning.d.ts +0 -5
  100. package/packages/web/dist/react/components/EPGOverlay.d.ts +0 -5
  101. package/packages/web/dist/react/components/EPGProgramDetails.d.ts +0 -13
  102. package/packages/web/dist/react/components/EPGProgramGrid.d.ts +0 -19
  103. package/packages/web/dist/react/components/EPGTimelineHeader.d.ts +0 -16
  104. package/packages/web/dist/react/components/SkipButton.d.ts +0 -18
  105. package/packages/web/dist/react/components/commerce/ProductBadge.d.ts +0 -10
  106. package/packages/web/dist/react/components/commerce/ProductPanel.d.ts +0 -13
  107. package/packages/web/dist/react/examples/google-ads-example.d.ts +0 -4
  108. package/packages/web/dist/react/examples/live-stream-ads-example.d.ts +0 -8
  109. package/packages/web/dist/react/examples/live-stream-ads-example.d.ts.map +0 -1
  110. package/packages/web/dist/react/examples/live-stream-ads-example.js +0 -177
  111. package/packages/web/dist/react/examples/live-stream-ads-example.js.map +0 -1
  112. package/packages/web/dist/react/hooks/useChapters.d.ts +0 -29
  113. package/packages/web/dist/react/hooks/useCommerceSync.d.ts +0 -8
  114. package/packages/web/dist/react/types/EPGTypes.d.ts +0 -101
  115. package/packages/web/dist/react/types/FlashNewsTickerTypes.d.ts +0 -146
  116. package/packages/web/dist/react/types/VideoCommerceTypes.d.ts +0 -109
  117. package/packages/web/dist/react/utils/EPGUtils.d.ts +0 -21
  118. package/packages/web/dist/test/epg-test.d.ts +0 -3
  119. package/packages/web/dist/utils/YouTubeExtractor.d.ts +0 -38
@@ -1,168 +0,0 @@
1
- import { GoogleAdsManager } from "./GoogleAdsManager.js";
2
- export class LiveStreamAdsManager extends GoogleAdsManager {
3
- constructor(video, adContainer, config) {
4
- super(video, adContainer, config);
5
- this.isLiveStream = false;
6
- this.periodicAdTimer = null;
7
- this.lastAdBreakTime = 0;
8
- this.playbackStartTime = 0;
9
- this.streamStartTime = 0;
10
- this.hlsInstance = null;
11
- this.liveConfig = {
12
- periodicAdInterval: 300,
13
- syncToLiveEdge: false,
14
- liveEdgeOffset: 3,
15
- pauseStreamDuringAd: true,
16
- ...config
17
- };
18
- }
19
- async initializeLiveAds(hlsInstance) {
20
- await this.initialize();
21
- this.isLiveStream = true;
22
- this.hlsInstance = hlsInstance;
23
- this.playbackStartTime = this.video.currentTime || 0;
24
- this.streamStartTime = Date.now();
25
- const mode = this.liveConfig.liveAdBreakMode || 'periodic';
26
- console.log(`🔴 Live Stream Ads initialized`);
27
- console.log(` Mode: ${mode}`);
28
- console.log(` Periodic interval: ${this.liveConfig.periodicAdInterval}s`);
29
- if (mode === 'periodic') {
30
- this.setupPeriodicAdBreaks();
31
- }
32
- else {
33
- console.log('Manual mode - call triggerAdBreak() to show ads');
34
- }
35
- }
36
- setupPeriodicAdBreaks() {
37
- const interval = this.liveConfig.periodicAdInterval || 300;
38
- console.log(`⏰ Setting up periodic ad breaks every ${interval}s`);
39
- let accumulatedPlaybackTime = 0;
40
- let lastCheckTime = this.video.currentTime;
41
- this.periodicAdTimer = setInterval(() => {
42
- if (!this.video.paused && !this.isPlayingAd()) {
43
- const currentTime = this.video.currentTime || 0;
44
- const timeDelta = currentTime - lastCheckTime;
45
- if (timeDelta > 0 && timeDelta < 5) {
46
- accumulatedPlaybackTime += timeDelta;
47
- }
48
- lastCheckTime = currentTime;
49
- const timeSinceLastAd = accumulatedPlaybackTime - this.lastAdBreakTime;
50
- if (timeSinceLastAd >= interval) {
51
- console.log('⏰ Periodic ad break triggered');
52
- console.log(` Playback time: ${Math.floor(accumulatedPlaybackTime)}s`);
53
- console.log(` Time since last ad: ${Math.floor(timeSinceLastAd)}s`);
54
- this.liveConfig.onAdBreakScheduled?.(accumulatedPlaybackTime);
55
- this.triggerAdBreak();
56
- this.lastAdBreakTime = accumulatedPlaybackTime;
57
- }
58
- }
59
- }, 1000);
60
- }
61
- triggerAdBreak() {
62
- if (!this.adsManager) {
63
- console.error('❌ Ads manager not initialized');
64
- return;
65
- }
66
- if (this.isPlayingAd()) {
67
- console.warn('⚠️ Ad already playing, skipping trigger');
68
- return;
69
- }
70
- console.log('🎬 Triggering ad break for live stream');
71
- const currentTime = this.video.currentTime;
72
- console.log(`📍 Stream position before ad: ${currentTime.toFixed(2)}s`);
73
- if (this.liveConfig.pauseStreamDuringAd) {
74
- this.pauseStreamDownload();
75
- }
76
- this.video.__positionBeforeAd = currentTime;
77
- this.adsManager.start();
78
- }
79
- pauseStreamDownload() {
80
- try {
81
- if (this.hlsInstance && this.hlsInstance.stopLoad) {
82
- console.log('⏸️ Pausing stream download during ad');
83
- this.hlsInstance.stopLoad();
84
- }
85
- }
86
- catch (error) {
87
- console.warn('Could not pause stream download:', error);
88
- }
89
- }
90
- resumeStreamDownload() {
91
- try {
92
- if (this.hlsInstance && this.hlsInstance.startLoad) {
93
- console.log('▶️ Resuming stream download after ad');
94
- this.hlsInstance.startLoad();
95
- }
96
- }
97
- catch (error) {
98
- console.warn('Could not resume stream download:', error);
99
- }
100
- }
101
- setupLiveEdgeResume() {
102
- const originalOnAdEnd = this.liveConfig.onAdEnd;
103
- this.liveConfig.onAdEnd = () => {
104
- const positionBeforeAd = this.video.__positionBeforeAd;
105
- if (this.liveConfig.syncToLiveEdge) {
106
- console.log('📺 Ad ended, syncing to live edge (skipping content)');
107
- this.resumeStreamDownload();
108
- this.syncToLiveEdge();
109
- }
110
- else {
111
- console.log('📺 Ad ended, resuming from pause point (DVR-style)');
112
- this.resumeFromPausePoint(positionBeforeAd);
113
- }
114
- originalOnAdEnd?.();
115
- };
116
- }
117
- resumeFromPausePoint(pausedTime) {
118
- setTimeout(() => {
119
- try {
120
- console.log(`⏯️ Resuming from paused position: ${pausedTime.toFixed(2)}s`);
121
- if (this.liveConfig.pauseStreamDuringAd) {
122
- this.resumeStreamDownload();
123
- }
124
- this.video.currentTime = pausedTime;
125
- if (this.hlsInstance && this.hlsInstance.liveSyncPosition !== undefined) {
126
- const liveEdge = this.hlsInstance.liveSyncPosition;
127
- const behindLive = liveEdge - pausedTime;
128
- console.log(` Behind live by: ${behindLive.toFixed(1)} seconds`);
129
- }
130
- }
131
- catch (error) {
132
- console.error('❌ Error resuming from pause point:', error);
133
- }
134
- }, 100);
135
- }
136
- syncToLiveEdge() {
137
- setTimeout(() => {
138
- try {
139
- this.resumeStreamDownload();
140
- let liveEdgePosition;
141
- if (this.hlsInstance && this.hlsInstance.liveSyncPosition !== undefined) {
142
- console.log(`📍 HLS.js live edge: ${this.hlsInstance.liveSyncPosition.toFixed(2)}s`);
143
- liveEdgePosition = this.hlsInstance.liveSyncPosition;
144
- }
145
- if (liveEdgePosition !== undefined) {
146
- const offset = this.liveConfig.liveEdgeOffset || 3;
147
- const targetPosition = liveEdgePosition - offset;
148
- console.log(`⏩ Syncing to live edge: ${targetPosition.toFixed(2)}s (offset: ${offset}s)`);
149
- this.video.currentTime = targetPosition;
150
- }
151
- else {
152
- console.warn('⚠️ Could not determine live edge position');
153
- }
154
- }
155
- catch (error) {
156
- console.error('❌ Error syncing to live edge:', error);
157
- }
158
- }, 100);
159
- }
160
- destroy() {
161
- if (this.periodicAdTimer) {
162
- clearInterval(this.periodicAdTimer);
163
- this.periodicAdTimer = null;
164
- }
165
- super.destroy();
166
- }
167
- }
168
- //# sourceMappingURL=LiveStreamAdsManager.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"LiveStreamAdsManager.js","sourceRoot":"","sources":["../../src/ads/LiveStreamAdsManager.ts"],"names":[],"mappings":"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"}
@@ -1,42 +0,0 @@
1
- import { VideoSegment, VideoChapters, ChapterConfig, ChapterEvents, ChapterMarker, SegmentType } from './types/ChapterTypes';
2
- export declare class ChapterManager {
3
- private playerContainer;
4
- private videoElement;
5
- private chapters;
6
- private currentSegment;
7
- private previousSegment;
8
- private skipButtonController;
9
- private creditsButtonController;
10
- private config;
11
- private eventListeners;
12
- private isDestroyed;
13
- constructor(playerContainer: HTMLElement, videoElement: HTMLVideoElement, config?: ChapterConfig);
14
- loadChapters(chapters: VideoChapters): Promise<void>;
15
- loadChaptersFromUrl(url: string): Promise<void>;
16
- getCurrentSegment(currentTime: number): VideoSegment | null;
17
- skipToNextSegment(currentSegment: VideoSegment): void;
18
- skipToSegment(segmentId: string): void;
19
- getSegments(): VideoSegment[];
20
- getSegment(segmentId: string): VideoSegment | null;
21
- getSegmentsByType(type: SegmentType): VideoSegment[];
22
- getChapterMarkers(): ChapterMarker[];
23
- updateConfig(newConfig: Partial<ChapterConfig>): void;
24
- on<K extends keyof ChapterEvents>(event: K, listener: (data: ChapterEvents[K]) => void): void;
25
- off<K extends keyof ChapterEvents>(event: K, listener: (data: ChapterEvents[K]) => void): void;
26
- destroy(): void;
27
- hasChapters(): boolean;
28
- getChapters(): VideoChapters | null;
29
- private setupTimeUpdateListener;
30
- private checkCurrentSegment;
31
- private shouldShowSkipButton;
32
- private handleWatchCredits;
33
- private handleNextEpisode;
34
- private handleAutoRedirect;
35
- private getNextContentSegment;
36
- private sortSegments;
37
- private validateChapters;
38
- private updateChapterMarkers;
39
- private removeChapterMarkers;
40
- private emit;
41
- }
42
- //# sourceMappingURL=ChapterManager.d.ts.map
@@ -1,46 +0,0 @@
1
- import { VideoSegment, ChapterConfig } from './types/ChapterTypes';
2
- interface CreditsButtonCallbacks {
3
- onWatchCredits: (segment: VideoSegment) => void;
4
- onNextEpisode: (segment: VideoSegment, url: string) => void;
5
- onAutoRedirect: (segment: VideoSegment, url: string) => void;
6
- onButtonsShown: (segment: VideoSegment) => void;
7
- onButtonsHidden: (segment: VideoSegment, reason: string) => void;
8
- }
9
- export declare class CreditsButtonController {
10
- private playerContainer;
11
- private config;
12
- private callbacks;
13
- private buttonsContainer;
14
- private watchCreditsButton;
15
- private nextEpisodeButton;
16
- private currentSegment;
17
- private autoRedirectTimeout;
18
- private countdownInterval;
19
- private isVisible;
20
- private userWatchingCredits;
21
- private readonly DEFAULT_WATCH_CREDITS_LABEL;
22
- private readonly DEFAULT_NEXT_EPISODE_LABEL;
23
- private readonly DEFAULT_AUTO_REDIRECT_DELAY;
24
- constructor(playerContainer: HTMLElement, config: ChapterConfig, callbacks: CreditsButtonCallbacks);
25
- showCreditsButtons(segment: VideoSegment, currentTime: number): void;
26
- hideCreditsButtons(reason?: 'timeout' | 'segment-end' | 'user-action' | 'manual'): void;
27
- isUserWatchingCredits(): boolean;
28
- getCurrentSegment(): VideoSegment | null;
29
- isButtonsVisible(): boolean;
30
- destroy(): void;
31
- private createCreditsButtons;
32
- private applyContainerPosition;
33
- private applyButtonStyles;
34
- private adjustBrightness;
35
- private updateButtonLabels;
36
- private showButtons;
37
- private hideButtons;
38
- private handleWatchCreditsClick;
39
- private handleNextEpisodeClick;
40
- private startAutoRedirectCountdown;
41
- private createProgressBar;
42
- private redirectToNextEpisode;
43
- private clearTimeouts;
44
- }
45
- export {};
46
- //# sourceMappingURL=CreditsButtonController.d.ts.map
@@ -1,31 +0,0 @@
1
- import { VideoSegment, SkipButtonState, SkipButtonPosition, ChapterConfig } from './types/ChapterTypes';
2
- export declare class SkipButtonController {
3
- private playerContainer;
4
- private config;
5
- private onSkip;
6
- private onButtonShown;
7
- private onButtonHidden;
8
- private skipButton;
9
- private currentSegment;
10
- private autoSkipTimeout;
11
- private hideTimeout;
12
- private countdownInterval;
13
- private state;
14
- constructor(playerContainer: HTMLElement, config: ChapterConfig, onSkip: (segment: VideoSegment) => void, onButtonShown: (segment: VideoSegment) => void, onButtonHidden: (segment: VideoSegment, reason: string) => void);
15
- showSkipButton(segment: VideoSegment, currentTime: number): void;
16
- hideSkipButton(reason?: 'timeout' | 'segment-end' | 'user-action' | 'manual'): void;
17
- updatePosition(position: SkipButtonPosition): void;
18
- isVisible(): boolean;
19
- getState(): SkipButtonState;
20
- destroy(): void;
21
- private createSkipButton;
22
- private updateSkipButton;
23
- private applyPositionStyles;
24
- private showButton;
25
- private hideButton;
26
- private handleAutoSkip;
27
- private startAutoSkipCountdown;
28
- private handleAutoHide;
29
- private clearTimeouts;
30
- }
31
- //# sourceMappingURL=SkipButtonController.d.ts.map
@@ -1,25 +0,0 @@
1
- import { ChapterPreferences } from './types/ChapterTypes';
2
- export declare class UserPreferencesManager {
3
- private static readonly STORAGE_KEY;
4
- private static readonly DEFAULT_PREFERENCES;
5
- private preferences;
6
- private listeners;
7
- constructor(initialPreferences?: Partial<ChapterPreferences>);
8
- getPreferences(): ChapterPreferences;
9
- updatePreferences(updates: Partial<ChapterPreferences>): void;
10
- resetPreferences(): void;
11
- getPreference<K extends keyof ChapterPreferences>(key: K): ChapterPreferences[K];
12
- setPreference<K extends keyof ChapterPreferences>(key: K, value: ChapterPreferences[K]): void;
13
- toggleAutoSkip(segmentType: 'intro' | 'recap' | 'credits'): void;
14
- isAutoSkipEnabled(segmentType: 'intro' | 'recap' | 'credits'): boolean;
15
- addListener(listener: (preferences: ChapterPreferences) => void): void;
16
- removeListener(listener: (preferences: ChapterPreferences) => void): void;
17
- createPreferencesPanel(): HTMLElement;
18
- private loadPreferences;
19
- private savePreferences;
20
- private preferencesEqual;
21
- private notifyListeners;
22
- private setupPreferencesEventListeners;
23
- static getDefaultPreferences(): ChapterPreferences;
24
- }
25
- //# sourceMappingURL=UserPreferencesManager.d.ts.map
@@ -1,12 +0,0 @@
1
- export { ChapterManager } from './ChapterManager';
2
- export { SkipButtonController } from './SkipButtonController';
3
- export { UserPreferencesManager } from './UserPreferencesManager';
4
- export * from './types/ChapterTypes';
5
- export { useChapters } from '../react/hooks/useChapters';
6
- export { SkipButton } from '../react/components/SkipButton';
7
- export { ChapterProgress } from '../react/components/ChapterProgress';
8
- export type { UseChaptersOptions, UseChaptersResult } from '../react/hooks/useChapters';
9
- export type { SkipButtonProps } from '../react/components/SkipButton';
10
- export type { ChapterProgressProps } from '../react/components/ChapterProgress';
11
- export type { ChapterMarker } from '../react/components/ChapterProgress';
12
- //# sourceMappingURL=index.d.ts.map
@@ -1,136 +0,0 @@
1
- export type SegmentType = 'intro' | 'recap' | 'content' | 'credits' | 'ad';
2
- export type SkipButtonPosition = 'bottom-right' | 'bottom-left' | 'top-right' | 'top-left';
3
- export interface VideoSegment {
4
- id: string;
5
- type: SegmentType;
6
- startTime: number;
7
- endTime: number;
8
- title?: string;
9
- description?: string;
10
- skipLabel?: string;
11
- autoSkip?: boolean;
12
- autoSkipDelay?: number;
13
- showSkipButton?: boolean;
14
- nextEpisodeUrl?: string;
15
- watchCreditsLabel?: string;
16
- nextEpisodeLabel?: string;
17
- creditsButtonStyle?: {
18
- layout?: 'vertical' | 'horizontal';
19
- watchCreditsColor?: string;
20
- watchCreditsBgColor?: string;
21
- nextEpisodeColor?: string;
22
- nextEpisodeBgColor?: string;
23
- position?: 'bottom-right' | 'bottom-left' | 'top-right' | 'top-left' | 'bottom-center' | 'top-center';
24
- };
25
- }
26
- export interface VideoChapters {
27
- videoId: string;
28
- duration: number;
29
- segments: VideoSegment[];
30
- metadata?: {
31
- version?: string;
32
- createdAt?: string;
33
- updatedAt?: string;
34
- source?: 'manual' | 'auto-detected' | 'crowdsourced';
35
- };
36
- }
37
- export interface ChapterConfig {
38
- enabled: boolean;
39
- data?: VideoChapters;
40
- dataUrl?: string;
41
- autoHide?: boolean;
42
- autoHideDelay?: number;
43
- showChapterMarkers?: boolean;
44
- skipButtonPosition?: SkipButtonPosition;
45
- customStyles?: {
46
- skipButton?: Partial<CSSStyleDeclaration>;
47
- chapterMarkers?: Partial<CSSStyleDeclaration>;
48
- progressMarkers?: {
49
- intro?: string;
50
- recap?: string;
51
- content?: string;
52
- credits?: string;
53
- ad?: string;
54
- };
55
- };
56
- userPreferences?: ChapterPreferences;
57
- }
58
- export interface ChapterPreferences {
59
- autoSkipIntro?: boolean;
60
- autoSkipRecap?: boolean;
61
- autoSkipCredits?: boolean;
62
- showSkipButtons?: boolean;
63
- skipButtonTimeout?: number;
64
- rememberChoices?: boolean;
65
- resumePlaybackAfterSkip?: boolean;
66
- }
67
- export interface ChapterEvents {
68
- segmentEntered: {
69
- segment: VideoSegment;
70
- currentTime: number;
71
- previousSegment?: VideoSegment;
72
- };
73
- segmentExited: {
74
- segment: VideoSegment;
75
- currentTime: number;
76
- nextSegment?: VideoSegment;
77
- };
78
- segmentSkipped: {
79
- fromSegment: VideoSegment;
80
- toSegment?: VideoSegment;
81
- skipMethod: 'button' | 'auto' | 'manual';
82
- currentTime: number;
83
- };
84
- skipButtonShown: {
85
- segment: VideoSegment;
86
- currentTime: number;
87
- };
88
- skipButtonHidden: {
89
- segment: VideoSegment;
90
- currentTime: number;
91
- reason: 'timeout' | 'segment-end' | 'user-action' | 'manual';
92
- };
93
- chaptersLoaded: {
94
- chapters: VideoChapters;
95
- segmentCount: number;
96
- };
97
- chaptersLoadError: {
98
- error: Error;
99
- url?: string;
100
- };
101
- creditsWatched: {
102
- segment: VideoSegment;
103
- currentTime: number;
104
- };
105
- nextEpisodeClicked: {
106
- segment: VideoSegment;
107
- nextEpisodeUrl: string;
108
- currentTime: number;
109
- };
110
- creditsAutoRedirect: {
111
- segment: VideoSegment;
112
- nextEpisodeUrl: string;
113
- currentTime: number;
114
- };
115
- creditsFullyWatched: {
116
- segment: VideoSegment;
117
- nextEpisodeUrl?: string;
118
- currentTime: number;
119
- };
120
- }
121
- export interface SkipButtonState {
122
- visible: boolean;
123
- segment: VideoSegment | null;
124
- autoSkipCountdown?: number;
125
- position: SkipButtonPosition;
126
- }
127
- export interface ChapterMarker {
128
- segment: VideoSegment;
129
- position: number;
130
- color?: string;
131
- label?: string;
132
- }
133
- export declare const DEFAULT_CHAPTER_CONFIG: ChapterConfig;
134
- export declare const DEFAULT_SKIP_LABELS: Record<SegmentType, string>;
135
- export declare const SEGMENT_COLORS: Record<SegmentType, string>;
136
- //# sourceMappingURL=ChapterTypes.d.ts.map
@@ -1,13 +0,0 @@
1
- import { BunnyCDNDRMConfig, DRMToken } from './types/DRMTypes';
2
- export declare class BunnyCDNDRMProvider {
3
- private config;
4
- constructor(config: BunnyCDNDRMConfig);
5
- getFairPlayCertificateUrl(): string;
6
- getFairPlayLicenseUrl(): string;
7
- getWidevineLicenseUrl(): string;
8
- getManifestUrl(): Promise<string>;
9
- injectToken(url: string, token: DRMToken): string;
10
- getLicenseHeaders(): Promise<Record<string, string>>;
11
- shouldRenewToken(token: DRMToken): boolean;
12
- }
13
- //# sourceMappingURL=BunnyCDNDRMProvider.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"BunnyCDNDRMProvider.d.ts","sourceRoot":"","sources":["../../src/drm/BunnyCDNDRMProvider.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,iBAAiB,EAAE,QAAQ,EAAY,MAAM,kBAAkB,CAAC;AAEzE,qBAAa,mBAAmB;IAClB,OAAO,CAAC,MAAM;gBAAN,MAAM,EAAE,iBAAiB;IAK7C,yBAAyB,IAAI,MAAM;IAUnC,qBAAqB,IAAI,MAAM;IAU/B,qBAAqB,IAAI,MAAM;IAWzB,cAAc,IAAI,OAAO,CAAC,MAAM,CAAC;IAcvC,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,GAAG,MAAM;IAa3C,iBAAiB,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IA2B1D,gBAAgB,CAAC,KAAK,EAAE,QAAQ,GAAG,OAAO;CAK3C"}
@@ -1,65 +0,0 @@
1
- import { DRMError } from "./types/DRMTypes.js";
2
- export class BunnyCDNDRMProvider {
3
- constructor(config) {
4
- this.config = config;
5
- }
6
- getFairPlayCertificateUrl() {
7
- if (this.config.certificateUrl) {
8
- return this.config.certificateUrl;
9
- }
10
- return `https://video.bunnycdn.com/FairPlay/${this.config.libraryId}/certificate`;
11
- }
12
- getFairPlayLicenseUrl() {
13
- if (this.config.licenseUrl) {
14
- return this.config.licenseUrl;
15
- }
16
- return `https://video.bunnycdn.com/FairPlay/${this.config.libraryId}/license/?videoId=${this.config.videoId}`;
17
- }
18
- getWidevineLicenseUrl() {
19
- if (this.config.licenseUrl) {
20
- return this.config.licenseUrl;
21
- }
22
- return `https://video.bunnycdn.com/Widevine/${this.config.libraryId}/license/?videoId=${this.config.videoId}`;
23
- }
24
- async getManifestUrl() {
25
- const baseUrl = `https://${this.config.pullZoneUrl}.b-cdn.net/${this.config.videoId}/playlist.m3u8`;
26
- const token = await this.config.tokenProvider.getManifestToken();
27
- if (!token) {
28
- throw new DRMError('No manifest token available', 'MANIFEST_TOKEN_ERROR');
29
- }
30
- return this.injectToken(baseUrl, token);
31
- }
32
- injectToken(url, token) {
33
- const urlObj = new URL(url);
34
- urlObj.searchParams.set('token', token.token);
35
- urlObj.searchParams.set('expires', token.expires.toString());
36
- if (token.tokenVer) {
37
- urlObj.searchParams.set('token_ver', token.tokenVer);
38
- }
39
- return urlObj.toString();
40
- }
41
- async getLicenseHeaders() {
42
- const token = await this.config.tokenProvider.getLicenseToken();
43
- if (!token) {
44
- throw new DRMError('No license token available', 'LICENSE_TOKEN_ERROR');
45
- }
46
- const headers = {
47
- 'Content-Type': 'application/octet-stream',
48
- 'X-Bunny-Token': token.token,
49
- 'X-Bunny-Expires': token.expires.toString(),
50
- };
51
- if (token.tokenVer) {
52
- headers['X-Bunny-Token-Version'] = token.tokenVer;
53
- }
54
- if (this.config.enableReferrerProtection) {
55
- headers['Referer'] = window.location.origin;
56
- }
57
- return headers;
58
- }
59
- shouldRenewToken(token) {
60
- const nowSeconds = Math.floor(Date.now() / 1000);
61
- const bufferSeconds = 300;
62
- return token.expires - nowSeconds < bufferSeconds;
63
- }
64
- }
65
- //# sourceMappingURL=BunnyCDNDRMProvider.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"BunnyCDNDRMProvider.js","sourceRoot":"","sources":["../../src/drm/BunnyCDNDRMProvider.ts"],"names":[],"mappings":"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"}
@@ -1,20 +0,0 @@
1
- import type { DRMConfig } from '@unified-video/core';
2
- import { DRMInitResult } from './types/DRMTypes';
3
- export declare class DRMManager {
4
- private videoElement;
5
- private config;
6
- private drmSystem;
7
- private browserDetector;
8
- private debug;
9
- constructor(videoElement: HTMLVideoElement, config: DRMConfig, debug?: boolean);
10
- initialize(): Promise<DRMInitResult>;
11
- getHLSConfig(): any;
12
- getDashProtectionData(): any;
13
- destroy(): Promise<void>;
14
- private selectDRMType;
15
- private isDRMTypeSupported;
16
- private createDRMSystem;
17
- private normalizeConfig;
18
- private log;
19
- }
20
- //# sourceMappingURL=DRMManager.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"DRMManager.d.ts","sourceRoot":"","sources":["../../src/drm/DRMManager.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAW,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAE9D,OAAO,EAAqB,aAAa,EAA2C,MAAM,kBAAkB,CAAC;AAS7G,qBAAa,UAAU;IACrB,OAAO,CAAC,YAAY,CAAmB;IACvC,OAAO,CAAC,MAAM,CAAoB;IAClC,OAAO,CAAC,SAAS,CAAwB;IACzC,OAAO,CAAC,eAAe,CAAkB;IACzC,OAAO,CAAC,KAAK,CAAkB;gBAEnB,YAAY,EAAE,gBAAgB,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,GAAE,OAAe;IAU/E,UAAU,IAAI,OAAO,CAAC,aAAa,CAAC;IAmE1C,YAAY,IAAI,GAAG;IAWnB,qBAAqB,IAAI,GAAG;IAWtB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAW9B,OAAO,CAAC,aAAa;IAkBrB,OAAO,CAAC,kBAAkB;IAgB1B,OAAO,CAAC,eAAe;IAuBvB,OAAO,CAAC,eAAe;IA2BvB,OAAO,CAAC,GAAG;CAKZ"}