]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blame - client/src/assets/player/peertube-videojs-typings.ts
Better hls warn/error logging
[github/Chocobozzz/PeerTube.git] / client / src / assets / player / peertube-videojs-typings.ts
CommitLineData
5abc96fc
C
1import { Config, Level } from 'hls.js'
2import videojs from 'video.js'
4572c3d0 3import { VideoFile, VideoPlaylist, VideoPlaylistElement } from '@shared/models'
09209296 4import { P2pMediaLoaderPlugin } from './p2p-media-loader/p2p-media-loader-plugin'
da332417 5import { RedundancyUrlManager } from './p2p-media-loader/redundancy-url-manager'
5abc96fc
C
6import { PlayerMode } from './peertube-player-manager'
7import { PeerTubePlugin } from './peertube-plugin'
4572c3d0 8import { PlaylistPlugin } from './playlist/playlist-plugin'
5abc96fc
C
9import { EndCardOptions } from './upnext/end-card'
10import { WebTorrentPlugin } from './webtorrent/webtorrent-plugin'
c6352f2c 11
f5fcd9f7 12declare module 'video.js' {
83fcadac 13
f5fcd9f7 14 export interface VideoJsPlayer {
83fcadac
C
15 srOptions_: HlsjsConfigHandlerOptions
16
f5fcd9f7
C
17 theaterEnabled: boolean
18
19 // FIXME: add it to upstream typings
20 posterImage: {
21 show (): void
22 hide (): void
23 }
24
25 handleTechSeeked_ (): void
26
27 // Plugins
28
c6352f2c 29 peertube (): PeerTubePlugin
83fcadac 30
2adfc7ea 31 webtorrent (): WebTorrentPlugin
83fcadac 32
09209296 33 p2pMediaLoader (): P2pMediaLoaderPlugin
c6352f2c 34
f5fcd9f7
C
35 contextmenuUI (options: any): any
36
37 bezels (): void
38
83fcadac 39 qualityLevels (): QualityLevels
c6352f2c 40
f5fcd9f7
C
41 textTracks (): TextTrackList & {
42 on: Function
1151f521 43 tracks_: (TextTrack & { id: string, label: string, src: string })[]
f5fcd9f7 44 }
83fcadac 45
abb3097e 46 dock (options: { title: string, description: string }): void
5abc96fc
C
47
48 upnext (options: Partial<EndCardOptions>): void
4572c3d0
C
49
50 playlist (): PlaylistPlugin
f5fcd9f7 51 }
c6352f2c
C
52}
53
83fcadac
C
54export interface VideoJSTechHLS extends videojs.Tech {
55 hlsProvider: any // FIXME: typings
56}
57
58export interface HlsjsConfigHandlerOptions {
59 hlsjsConfig?: Config & { cueHandler: any }// FIXME: typings
60 captionConfig?: any // FIXME: typings
61
62 levelLabelHandler?: (level: Level) => string
63}
64
65type QualityLevelRepresentation = {
66 id: number
67 height: number
68
69 label?: string
70 width?: number
71 bandwidth?: number
72 bitrate?: number
73
74 enabled?: Function
75 _enabled: boolean
76}
77
78type QualityLevels = QualityLevelRepresentation[] & {
79 selectedIndex: number
80 selectedIndex_: number
81
82 addQualityLevel (representation: QualityLevelRepresentation): void
83}
84
16f7022b
C
85type VideoJSCaption = {
86 label: string
87 language: string
88 src: string
89}
90
6e46de09
C
91type UserWatching = {
92 url: string,
93 authorizationHeader: string
94}
95
2adfc7ea 96type PeerTubePluginOptions = {
09209296
C
97 mode: PlayerMode
98
2adfc7ea 99 autoplay: boolean
c6352f2c
C
100 videoViewUrl: string
101 videoDuration: number
6e46de09
C
102
103 userWatching?: UserWatching
2adfc7ea
C
104 subtitle?: string
105
106 videoCaptions: VideoJSCaption[]
f0a39880
C
107
108 stopTime: number | string
10f26f42
C
109
110 isLive: boolean
58b9ce30 111
112 videoUUID: string
2adfc7ea
C
113}
114
4572c3d0 115type PlaylistPluginOptions = {
e8bb5b6b
C
116 createComponent: boolean
117
118 elements?: VideoPlaylistElement[]
4572c3d0
C
119
120 playlist: VideoPlaylist
121
122 getCurrentPosition: () => number
123
e8bb5b6b
C
124 embedUrl: string
125 embedTitle: string
126
127 onItemClicked?: (element: VideoPlaylistElement) => void
4572c3d0
C
128}
129
a950e4c8
C
130type NextPreviousVideoButtonOptions = {
131 type: 'next' | 'previous'
132 handler: Function
133 isDisabled: () => boolean
134}
135
2adfc7ea
C
136type WebtorrentPluginOptions = {
137 playerElement: HTMLVideoElement
138
139 autoplay: boolean
140 videoDuration: number
141
142 videoFiles: VideoFile[]
f0a39880
C
143
144 startTime: number | string
2adfc7ea
C
145}
146
147type P2PMediaLoaderPluginOptions = {
da332417 148 redundancyUrlManager: RedundancyUrlManager
2adfc7ea
C
149 type: string
150 src: string
f0a39880
C
151
152 startTime: number | string
2adfc7ea
C
153}
154
155type VideoJSPluginOptions = {
4572c3d0
C
156 playlist?: PlaylistPluginOptions
157
2adfc7ea
C
158 peertube: PeerTubePluginOptions
159
160 webtorrent?: WebtorrentPluginOptions
161
162 p2pMediaLoader?: P2PMediaLoaderPluginOptions
c6352f2c
C
163}
164
2adfc7ea
C
165type LoadedQualityData = {
166 qualitySwitchCallback: Function,
167 qualityData: {
168 video: {
169 id: number
170 label: string
171 selected: boolean
172 }[]
173 }
174}
175
176type ResolutionUpdateData = {
177 auto: boolean,
178 resolutionId: number
3b6f205c 179 id?: number
2adfc7ea
C
180}
181
182type AutoResolutionUpdateData = {
183 possible: boolean
184}
185
3b6f205c 186type PlayerNetworkInfo = {
17152837
FC
187 source: 'webtorrent' | 'p2p-media-loader'
188
09209296
C
189 http: {
190 downloadSpeed: number
191 uploadSpeed: number
192 downloaded: number
193 uploaded: number
194 }
195
3b6f205c
C
196 p2p: {
197 downloadSpeed: number
198 uploadSpeed: number
199 downloaded: number
200 uploaded: number
201 numPeers: number
202 }
203}
204
4572c3d0
C
205type PlaylistItemOptions = {
206 element: VideoPlaylistElement
207
208 onClicked: Function
209}
210
c6352f2c 211export {
3b6f205c 212 PlayerNetworkInfo,
4572c3d0 213 PlaylistItemOptions,
a950e4c8 214 NextPreviousVideoButtonOptions,
2adfc7ea
C
215 ResolutionUpdateData,
216 AutoResolutionUpdateData,
4572c3d0 217 PlaylistPluginOptions,
6e46de09 218 VideoJSCaption,
2adfc7ea
C
219 UserWatching,
220 PeerTubePluginOptions,
221 WebtorrentPluginOptions,
222 P2PMediaLoaderPluginOptions,
223 VideoJSPluginOptions,
83fcadac
C
224 LoadedQualityData,
225 QualityLevelRepresentation,
226 QualityLevels
c6352f2c 227}