unified-video-framework 1.4.443 → 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.
- package/package.json +1 -1
- package/packages/core/dist/version.d.ts +1 -1
- package/packages/core/dist/version.js +1 -1
- package/packages/core/src/version.ts +1 -1
- package/packages/web/dist/WebPlayer.d.ts.map +1 -1
- package/packages/web/dist/WebPlayer.js +52 -414
- package/packages/web/dist/WebPlayer.js.map +1 -1
- package/packages/web/dist/react/types/FlashNewsTickerTypes.d.ts.map +1 -1
- package/packages/web/src/WebPlayer.ts +60 -464
- package/packages/web/src/react/types/FlashNewsTickerTypes.ts +2 -5
- package/packages/web/dist/WebPlayer.d.ts +0 -353
- package/packages/web/dist/ads/GoogleAdsManager.d.ts +0 -57
- package/packages/web/dist/ads/LiveStreamAdsManager.d.ts +0 -29
- package/packages/web/dist/ads/LiveStreamAdsManager.d.ts.map +0 -1
- package/packages/web/dist/ads/LiveStreamAdsManager.js +0 -168
- package/packages/web/dist/ads/LiveStreamAdsManager.js.map +0 -1
- package/packages/web/dist/chapters/ChapterManager.d.ts +0 -42
- package/packages/web/dist/chapters/CreditsButtonController.d.ts +0 -46
- package/packages/web/dist/chapters/SkipButtonController.d.ts +0 -31
- package/packages/web/dist/chapters/UserPreferencesManager.d.ts +0 -25
- package/packages/web/dist/chapters/index.d.ts +0 -12
- package/packages/web/dist/chapters/types/ChapterTypes.d.ts +0 -136
- package/packages/web/dist/drm/BunnyCDNDRMProvider.d.ts +0 -13
- package/packages/web/dist/drm/BunnyCDNDRMProvider.d.ts.map +0 -1
- package/packages/web/dist/drm/BunnyCDNDRMProvider.js +0 -65
- package/packages/web/dist/drm/BunnyCDNDRMProvider.js.map +0 -1
- package/packages/web/dist/drm/DRMManager.d.ts +0 -20
- package/packages/web/dist/drm/DRMManager.d.ts.map +0 -1
- package/packages/web/dist/drm/DRMManager.js +0 -130
- package/packages/web/dist/drm/DRMManager.js.map +0 -1
- package/packages/web/dist/drm/FairPlayDRMHandler.d.ts +0 -24
- package/packages/web/dist/drm/FairPlayDRMHandler.d.ts.map +0 -1
- package/packages/web/dist/drm/FairPlayDRMHandler.js +0 -190
- package/packages/web/dist/drm/FairPlayDRMHandler.js.map +0 -1
- package/packages/web/dist/drm/WidevineDRMHandler.d.ts +0 -21
- package/packages/web/dist/drm/WidevineDRMHandler.d.ts.map +0 -1
- package/packages/web/dist/drm/WidevineDRMHandler.js +0 -143
- package/packages/web/dist/drm/WidevineDRMHandler.js.map +0 -1
- package/packages/web/dist/drm/index.d.ts +0 -15
- package/packages/web/dist/drm/index.d.ts.map +0 -1
- package/packages/web/dist/drm/index.js +0 -13
- package/packages/web/dist/drm/index.js.map +0 -1
- package/packages/web/dist/drm/providers/BunnyNetProvider.d.ts +0 -19
- package/packages/web/dist/drm/providers/BunnyNetProvider.d.ts.map +0 -1
- package/packages/web/dist/drm/providers/BunnyNetProvider.js +0 -112
- package/packages/web/dist/drm/providers/BunnyNetProvider.js.map +0 -1
- package/packages/web/dist/drm/providers/GenericProvider.d.ts +0 -30
- package/packages/web/dist/drm/providers/GenericProvider.d.ts.map +0 -1
- package/packages/web/dist/drm/providers/GenericProvider.js +0 -104
- package/packages/web/dist/drm/providers/GenericProvider.js.map +0 -1
- package/packages/web/dist/drm/systems/BaseDRM.d.ts +0 -18
- package/packages/web/dist/drm/systems/BaseDRM.d.ts.map +0 -1
- package/packages/web/dist/drm/systems/BaseDRM.js +0 -29
- package/packages/web/dist/drm/systems/BaseDRM.js.map +0 -1
- package/packages/web/dist/drm/systems/FairPlayDRM.d.ts +0 -32
- package/packages/web/dist/drm/systems/FairPlayDRM.d.ts.map +0 -1
- package/packages/web/dist/drm/systems/FairPlayDRM.js +0 -208
- package/packages/web/dist/drm/systems/FairPlayDRM.js.map +0 -1
- package/packages/web/dist/drm/systems/PlayReadyDRM.d.ts +0 -9
- package/packages/web/dist/drm/systems/PlayReadyDRM.d.ts.map +0 -1
- package/packages/web/dist/drm/systems/PlayReadyDRM.js +0 -114
- package/packages/web/dist/drm/systems/PlayReadyDRM.js.map +0 -1
- package/packages/web/dist/drm/systems/WidevineDRM.d.ts +0 -9
- package/packages/web/dist/drm/systems/WidevineDRM.d.ts.map +0 -1
- package/packages/web/dist/drm/systems/WidevineDRM.js +0 -159
- package/packages/web/dist/drm/systems/WidevineDRM.js.map +0 -1
- package/packages/web/dist/drm/types/BunnyNetTypes.d.ts +0 -20
- package/packages/web/dist/drm/types/BunnyNetTypes.d.ts.map +0 -1
- package/packages/web/dist/drm/types/BunnyNetTypes.js +0 -8
- package/packages/web/dist/drm/types/BunnyNetTypes.js.map +0 -1
- package/packages/web/dist/drm/types/DRMTypes.d.ts +0 -60
- package/packages/web/dist/drm/types/DRMTypes.d.ts.map +0 -1
- package/packages/web/dist/drm/types/DRMTypes.js +0 -22
- package/packages/web/dist/drm/types/DRMTypes.js.map +0 -1
- package/packages/web/dist/drm/utils/BrowserDetector.d.ts +0 -20
- package/packages/web/dist/drm/utils/BrowserDetector.d.ts.map +0 -1
- package/packages/web/dist/drm/utils/BrowserDetector.js +0 -211
- package/packages/web/dist/drm/utils/BrowserDetector.js.map +0 -1
- package/packages/web/dist/drm/utils/CertificateManager.d.ts +0 -15
- package/packages/web/dist/drm/utils/CertificateManager.d.ts.map +0 -1
- package/packages/web/dist/drm/utils/CertificateManager.js +0 -46
- package/packages/web/dist/drm/utils/CertificateManager.js.map +0 -1
- package/packages/web/dist/drm/utils/DRMErrorHandler.d.ts +0 -7
- package/packages/web/dist/drm/utils/DRMErrorHandler.d.ts.map +0 -1
- package/packages/web/dist/drm/utils/DRMErrorHandler.js +0 -49
- package/packages/web/dist/drm/utils/DRMErrorHandler.js.map +0 -1
- package/packages/web/dist/drm/utils/LicenseRequestHandler.d.ts +0 -15
- package/packages/web/dist/drm/utils/LicenseRequestHandler.d.ts.map +0 -1
- package/packages/web/dist/drm/utils/LicenseRequestHandler.js +0 -110
- package/packages/web/dist/drm/utils/LicenseRequestHandler.js.map +0 -1
- package/packages/web/dist/drm.d.ts +0 -4
- package/packages/web/dist/drm.js +0 -5
- package/packages/web/dist/index.d.ts +0 -7
- package/packages/web/dist/paywall/EmailAuthController.d.ts +0 -60
- package/packages/web/dist/paywall/PaywallController.d.ts +0 -74
- package/packages/web/dist/react/EPG.d.ts +0 -8
- package/packages/web/dist/react/WebPlayerView.d.ts +0 -397
- package/packages/web/dist/react/WebPlayerViewWithEPG.d.ts +0 -97
- package/packages/web/dist/react/components/ChapterProgress.d.ts +0 -22
- package/packages/web/dist/react/components/EPGNavigationControls.d.ts +0 -15
- package/packages/web/dist/react/components/EPGOverlay-improved-positioning.d.ts +0 -5
- package/packages/web/dist/react/components/EPGOverlay.d.ts +0 -5
- package/packages/web/dist/react/components/EPGProgramDetails.d.ts +0 -13
- package/packages/web/dist/react/components/EPGProgramGrid.d.ts +0 -19
- package/packages/web/dist/react/components/EPGTimelineHeader.d.ts +0 -16
- package/packages/web/dist/react/components/SkipButton.d.ts +0 -18
- package/packages/web/dist/react/components/commerce/ProductBadge.d.ts +0 -10
- package/packages/web/dist/react/components/commerce/ProductPanel.d.ts +0 -13
- package/packages/web/dist/react/examples/google-ads-example.d.ts +0 -4
- package/packages/web/dist/react/examples/live-stream-ads-example.d.ts +0 -8
- package/packages/web/dist/react/examples/live-stream-ads-example.d.ts.map +0 -1
- package/packages/web/dist/react/examples/live-stream-ads-example.js +0 -177
- package/packages/web/dist/react/examples/live-stream-ads-example.js.map +0 -1
- package/packages/web/dist/react/hooks/useChapters.d.ts +0 -29
- package/packages/web/dist/react/hooks/useCommerceSync.d.ts +0 -8
- package/packages/web/dist/react/types/EPGTypes.d.ts +0 -101
- package/packages/web/dist/react/types/FlashNewsTickerTypes.d.ts +0 -146
- package/packages/web/dist/react/types/VideoCommerceTypes.d.ts +0 -109
- package/packages/web/dist/react/utils/EPGUtils.d.ts +0 -21
- package/packages/web/dist/test/epg-test.d.ts +0 -3
- package/packages/web/dist/utils/YouTubeExtractor.d.ts +0 -38
|
@@ -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"}
|
|
@@ -1,130 +0,0 @@
|
|
|
1
|
-
import { DRMType as DRMTypeEnum } from "../../../core/dist/index.js";
|
|
2
|
-
import { DRMErrorCode } from "./types/DRMTypes.js";
|
|
3
|
-
import { BrowserDetector } from "./utils/BrowserDetector.js";
|
|
4
|
-
import { BunnyNetProvider } from "./providers/BunnyNetProvider.js";
|
|
5
|
-
import { WidevineDRM } from "./systems/WidevineDRM.js";
|
|
6
|
-
import { FairPlayDRM } from "./systems/FairPlayDRM.js";
|
|
7
|
-
import { PlayReadyDRM } from "./systems/PlayReadyDRM.js";
|
|
8
|
-
import { DRMErrorHandler } from "./utils/DRMErrorHandler.js";
|
|
9
|
-
export class DRMManager {
|
|
10
|
-
constructor(videoElement, config, debug = false) {
|
|
11
|
-
this.drmSystem = null;
|
|
12
|
-
this.debug = false;
|
|
13
|
-
this.videoElement = videoElement;
|
|
14
|
-
this.config = this.normalizeConfig(config);
|
|
15
|
-
this.debug = debug || this.config.debug || false;
|
|
16
|
-
this.browserDetector = BrowserDetector.getInstance();
|
|
17
|
-
}
|
|
18
|
-
async initialize() {
|
|
19
|
-
try {
|
|
20
|
-
this.log('Initializing DRM system...');
|
|
21
|
-
if (typeof window !== 'undefined' && !window.isSecureContext) {
|
|
22
|
-
throw DRMErrorHandler.createError(DRMErrorCode.SECURE_CONTEXT_REQUIRED, 'DRM requires a secure context (HTTPS or localhost). Please ensure your site is running over HTTPS.', true);
|
|
23
|
-
}
|
|
24
|
-
const capabilities = await this.browserDetector.detectCapabilities();
|
|
25
|
-
this.log('Browser DRM capabilities:', capabilities);
|
|
26
|
-
const drmType = this.selectDRMType(capabilities);
|
|
27
|
-
if (!drmType) {
|
|
28
|
-
const browserName = this.browserDetector.getBrowserName();
|
|
29
|
-
throw DRMErrorHandler.createError(DRMErrorCode.UNSUPPORTED_BROWSER, `No supported DRM system found in ${browserName}. Please use Chrome, Safari, Firefox, or Edge.`, true, { browser: browserName, capabilities });
|
|
30
|
-
}
|
|
31
|
-
this.log(`Selected DRM type: ${drmType}`);
|
|
32
|
-
this.drmSystem = this.createDRMSystem(drmType);
|
|
33
|
-
await this.drmSystem.initialize();
|
|
34
|
-
return {
|
|
35
|
-
success: true,
|
|
36
|
-
drmType,
|
|
37
|
-
keySystem: this.drmSystem.getKeySystem(),
|
|
38
|
-
};
|
|
39
|
-
}
|
|
40
|
-
catch (error) {
|
|
41
|
-
this.log('DRM initialization failed:', error);
|
|
42
|
-
const capabilities = await this.browserDetector.detectCapabilities();
|
|
43
|
-
const drmError = error.code && error.code.startsWith('DRM_')
|
|
44
|
-
? error
|
|
45
|
-
: DRMErrorHandler.createError(DRMErrorCode.CONFIGURATION_ERROR, error.message || 'DRM initialization failed', true, { ...error, capabilities });
|
|
46
|
-
return {
|
|
47
|
-
success: false,
|
|
48
|
-
drmType: this.config.type,
|
|
49
|
-
keySystem: '',
|
|
50
|
-
error: drmError,
|
|
51
|
-
};
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
getHLSConfig() {
|
|
55
|
-
if (!this.drmSystem) {
|
|
56
|
-
throw new Error('DRM system not initialized. Call initialize() first.');
|
|
57
|
-
}
|
|
58
|
-
return this.drmSystem.getHLSConfig();
|
|
59
|
-
}
|
|
60
|
-
getDashProtectionData() {
|
|
61
|
-
if (!this.drmSystem) {
|
|
62
|
-
throw new Error('DRM system not initialized. Call initialize() first.');
|
|
63
|
-
}
|
|
64
|
-
return this.drmSystem.getDashProtectionData();
|
|
65
|
-
}
|
|
66
|
-
async destroy() {
|
|
67
|
-
if (this.drmSystem) {
|
|
68
|
-
this.log('Destroying DRM system');
|
|
69
|
-
await this.drmSystem.destroy();
|
|
70
|
-
this.drmSystem = null;
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
selectDRMType(capabilities) {
|
|
74
|
-
if (this.config.type) {
|
|
75
|
-
const typeSupported = this.isDRMTypeSupported(this.config.type, capabilities);
|
|
76
|
-
if (typeSupported) {
|
|
77
|
-
return this.config.type;
|
|
78
|
-
}
|
|
79
|
-
this.log(`Requested DRM type ${this.config.type} not supported, falling back to browser default`);
|
|
80
|
-
}
|
|
81
|
-
return capabilities.supportedType;
|
|
82
|
-
}
|
|
83
|
-
isDRMTypeSupported(drmType, capabilities) {
|
|
84
|
-
switch (drmType) {
|
|
85
|
-
case DRMTypeEnum.WIDEVINE:
|
|
86
|
-
return capabilities.widevine;
|
|
87
|
-
case DRMTypeEnum.FAIRPLAY:
|
|
88
|
-
return capabilities.fairplay;
|
|
89
|
-
case DRMTypeEnum.PLAYREADY:
|
|
90
|
-
return capabilities.playready;
|
|
91
|
-
default:
|
|
92
|
-
return false;
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
createDRMSystem(drmType) {
|
|
96
|
-
switch (drmType) {
|
|
97
|
-
case DRMTypeEnum.FAIRPLAY:
|
|
98
|
-
return new FairPlayDRM(this.videoElement, this.config, this.debug);
|
|
99
|
-
case DRMTypeEnum.WIDEVINE:
|
|
100
|
-
return new WidevineDRM(this.videoElement, this.config, this.debug);
|
|
101
|
-
case DRMTypeEnum.PLAYREADY:
|
|
102
|
-
return new PlayReadyDRM(this.videoElement, this.config, this.debug);
|
|
103
|
-
default:
|
|
104
|
-
throw DRMErrorHandler.createError(DRMErrorCode.CONFIGURATION_ERROR, `Unsupported DRM type: ${drmType}`, true);
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
normalizeConfig(config) {
|
|
108
|
-
const extended = { ...config };
|
|
109
|
-
if (BunnyNetProvider.isBunnyNetConfig(config)) {
|
|
110
|
-
extended.provider = 'bunny';
|
|
111
|
-
const ids = BunnyNetProvider.extractIdsFromUrl(config.licenseUrl);
|
|
112
|
-
if (ids.libraryId)
|
|
113
|
-
extended.libraryId = ids.libraryId;
|
|
114
|
-
if (ids.videoId)
|
|
115
|
-
extended.videoId = ids.videoId;
|
|
116
|
-
this.log('Detected Bunny.net DRM configuration');
|
|
117
|
-
}
|
|
118
|
-
extended.retryConfig = extended.retryConfig || {
|
|
119
|
-
maxRetries: 3,
|
|
120
|
-
retryDelay: 1000,
|
|
121
|
-
};
|
|
122
|
-
return extended;
|
|
123
|
-
}
|
|
124
|
-
log(...args) {
|
|
125
|
-
if (this.debug) {
|
|
126
|
-
console.log('[DRMManager]', ...args);
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
}
|
|
130
|
-
//# sourceMappingURL=DRMManager.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"DRMManager.js","sourceRoot":"","sources":["../../src/drm/DRMManager.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAA8C,YAAY,EAAmB,MAAM,kBAAkB,CAAC;AAC7G,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAEtD,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAE1D,MAAM,OAAO,UAAU;IAOrB,YAAY,YAA8B,EAAE,MAAiB,EAAE,QAAiB,KAAK;QAJ7E,cAAS,GAAmB,IAAI,CAAC;QAEjC,UAAK,GAAY,KAAK,CAAC;QAG7B,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACjC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;QAC3C,IAAI,CAAC,KAAK,GAAG,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,KAAK,CAAC;QACjD,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC,WAAW,EAAE,CAAC;IACvD,CAAC;IAKD,KAAK,CAAC,UAAU;QACd,IAAI;YACF,IAAI,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC;YAGvC,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,CAAC,MAAM,CAAC,eAAe,EAAE;gBAC5D,MAAM,eAAe,CAAC,WAAW,CAC/B,YAAY,CAAC,uBAAuB,EACpC,oGAAoG,EACpG,IAAI,CACL,CAAC;aACH;YAGD,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,kBAAkB,EAAE,CAAC;YACrE,IAAI,CAAC,GAAG,CAAC,2BAA2B,EAAE,YAAY,CAAC,CAAC;YAGpD,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;YACjD,IAAI,CAAC,OAAO,EAAE;gBACZ,MAAM,WAAW,GAAG,IAAI,CAAC,eAAe,CAAC,cAAc,EAAE,CAAC;gBAC1D,MAAM,eAAe,CAAC,WAAW,CAC/B,YAAY,CAAC,mBAAmB,EAChC,oCAAoC,WAAW,gDAAgD,EAC/F,IAAI,EACJ,EAAE,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,CACvC,CAAC;aACH;YAED,IAAI,CAAC,GAAG,CAAC,sBAAsB,OAAO,EAAE,CAAC,CAAC;YAG1C,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;YAG/C,MAAM,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC;YAElC,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,OAAO;gBACP,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE;aACzC,CAAC;SACH;QAAC,OAAO,KAAU,EAAE;YACnB,IAAI,CAAC,GAAG,CAAC,4BAA4B,EAAE,KAAK,CAAC,CAAC;YAE9C,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,kBAAkB,EAAE,CAAC;YACrE,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;gBAC1D,CAAC,CAAC,KAAK;gBACP,CAAC,CAAC,eAAe,CAAC,WAAW,CAC3B,YAAY,CAAC,mBAAmB,EAChC,KAAK,CAAC,OAAO,IAAI,2BAA2B,EAC5C,IAAI,EACJ,EAAE,GAAG,KAAK,EAAE,YAAY,EAAE,CAC3B,CAAC;YAEJ,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI;gBACzB,SAAS,EAAE,EAAE;gBACb,KAAK,EAAE,QAAQ;aAChB,CAAC;SACH;IACH,CAAC;IAKD,YAAY;QACV,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;YACnB,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;SACzE;QAED,OAAO,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC;IACvC,CAAC;IAKD,qBAAqB;QACnB,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;YACnB,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;SACzE;QAED,OAAO,IAAI,CAAC,SAAS,CAAC,qBAAqB,EAAE,CAAC;IAChD,CAAC;IAKD,KAAK,CAAC,OAAO;QACX,IAAI,IAAI,CAAC,SAAS,EAAE;YAClB,IAAI,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;YAClC,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;YAC/B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;SACvB;IACH,CAAC;IAKO,aAAa,CAAC,YAA6B;QAEjD,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;YACpB,MAAM,aAAa,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;YAC9E,IAAI,aAAa,EAAE;gBACjB,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;aACzB;YAED,IAAI,CAAC,GAAG,CAAC,sBAAsB,IAAI,CAAC,MAAM,CAAC,IAAI,iDAAiD,CAAC,CAAC;SACnG;QAGD,OAAO,YAAY,CAAC,aAAa,CAAC;IACpC,CAAC;IAKO,kBAAkB,CAAC,OAAgB,EAAE,YAA6B;QACxE,QAAQ,OAAO,EAAE;YACf,KAAK,WAAW,CAAC,QAAQ;gBACvB,OAAO,YAAY,CAAC,QAAQ,CAAC;YAC/B,KAAK,WAAW,CAAC,QAAQ;gBACvB,OAAO,YAAY,CAAC,QAAQ,CAAC;YAC/B,KAAK,WAAW,CAAC,SAAS;gBACxB,OAAO,YAAY,CAAC,SAAS,CAAC;YAChC;gBACE,OAAO,KAAK,CAAC;SAChB;IACH,CAAC;IAKO,eAAe,CAAC,OAAgB;QACtC,QAAQ,OAAO,EAAE;YACf,KAAK,WAAW,CAAC,QAAQ;gBACvB,OAAO,IAAI,WAAW,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;YAErE,KAAK,WAAW,CAAC,QAAQ;gBACvB,OAAO,IAAI,WAAW,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;YAErE,KAAK,WAAW,CAAC,SAAS;gBACxB,OAAO,IAAI,YAAY,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;YAEtE;gBACE,MAAM,eAAe,CAAC,WAAW,CAC/B,YAAY,CAAC,mBAAmB,EAChC,yBAAyB,OAAO,EAAE,EAClC,IAAI,CACL,CAAC;SACL;IACH,CAAC;IAKO,eAAe,CAAC,MAAiB;QACvC,MAAM,QAAQ,GAAG,EAAE,GAAG,MAAM,EAAuB,CAAC;QAGpD,IAAI,gBAAgB,CAAC,gBAAgB,CAAC,MAAM,CAAC,EAAE;YAC7C,QAAQ,CAAC,QAAQ,GAAG,OAAO,CAAC;YAG5B,MAAM,GAAG,GAAG,gBAAgB,CAAC,iBAAiB,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;YAClE,IAAI,GAAG,CAAC,SAAS;gBAAE,QAAQ,CAAC,SAAS,GAAG,GAAG,CAAC,SAAS,CAAC;YACtD,IAAI,GAAG,CAAC,OAAO;gBAAE,QAAQ,CAAC,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC;YAEhD,IAAI,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAC;SAClD;QAGD,QAAQ,CAAC,WAAW,GAAG,QAAQ,CAAC,WAAW,IAAI;YAC7C,UAAU,EAAE,CAAC;YACb,UAAU,EAAE,IAAI;SACjB,CAAC;QAEF,OAAO,QAAQ,CAAC;IAClB,CAAC;IAKO,GAAG,CAAC,GAAG,IAAW;QACxB,IAAI,IAAI,CAAC,KAAK,EAAE;YACd,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,GAAG,IAAI,CAAC,CAAC;SACtC;IACH,CAAC;CACF"}
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
import { IDRMHandler, WebDRMConfig } from './types/DRMTypes';
|
|
2
|
-
export declare class FairPlayDRMHandler implements IDRMHandler {
|
|
3
|
-
private config;
|
|
4
|
-
private bunnyProvider;
|
|
5
|
-
private videoElement;
|
|
6
|
-
private certificateData;
|
|
7
|
-
private pendingSessions;
|
|
8
|
-
constructor(config: WebDRMConfig);
|
|
9
|
-
isSupported(): boolean;
|
|
10
|
-
initialize(): Promise<void>;
|
|
11
|
-
private fetchCertificate;
|
|
12
|
-
private getCertificateUrl;
|
|
13
|
-
private getCertificateHeaders;
|
|
14
|
-
setupDRM(videoElement: HTMLVideoElement, manifestUrl: string): Promise<void>;
|
|
15
|
-
private onWebkitNeedKey;
|
|
16
|
-
private extractContentId;
|
|
17
|
-
private onKeyMessage;
|
|
18
|
-
private requestLicense;
|
|
19
|
-
private getLicenseUrl;
|
|
20
|
-
private getLicenseHeaders;
|
|
21
|
-
onLicenseRequest(licenseRequest: ArrayBuffer): Promise<ArrayBuffer>;
|
|
22
|
-
destroy(): void;
|
|
23
|
-
}
|
|
24
|
-
//# sourceMappingURL=FairPlayDRMHandler.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"FairPlayDRMHandler.d.ts","sourceRoot":"","sources":["../../src/drm/FairPlayDRMHandler.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,WAAW,EAAE,YAAY,EAAY,MAAM,kBAAkB,CAAC;AAGvE,qBAAa,kBAAmB,YAAW,WAAW;IACpD,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,aAAa,CAAoC;IACzD,OAAO,CAAC,YAAY,CAAiC;IACrD,OAAO,CAAC,eAAe,CAA4B;IACnD,OAAO,CAAC,eAAe,CAAuB;gBAElC,MAAM,EAAE,YAAY;IAWhC,WAAW,IAAI,OAAO;IAahB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;YA4BnB,gBAAgB;IA6B9B,OAAO,CAAC,iBAAiB;IAezB,OAAO,CAAC,qBAAqB;IAUvB,QAAQ,CAAC,YAAY,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;YAgBpE,eAAe;IAgD7B,OAAO,CAAC,gBAAgB;YAiBV,YAAY;YA+BZ,cAAc;IAsC5B,OAAO,CAAC,aAAa;YAYP,iBAAiB;IAYzB,gBAAgB,CAAC,cAAc,EAAE,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;IAOzE,OAAO,IAAI,IAAI;CAmBhB"}
|