]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blame_incremental - client/src/assets/player/peertube-videojs-typings.ts
Improve HLS redundancy
[github/Chocobozzz/PeerTube.git] / client / src / assets / player / peertube-videojs-typings.ts
... / ...
CommitLineData
1// FIXME: something weird with our path definition in tsconfig and typings
2// @ts-ignore
3import * as videojs from 'video.js'
4
5import { VideoFile } from '../../../../shared/models/videos/video.model'
6import { PeerTubePlugin } from './peertube-plugin'
7import { WebTorrentPlugin } from './webtorrent/webtorrent-plugin'
8import { P2pMediaLoaderPlugin } from './p2p-media-loader/p2p-media-loader-plugin'
9import { PlayerMode } from './peertube-player-manager'
10import { RedundancyUrlManager } from './p2p-media-loader/redundancy-url-manager'
11
12declare namespace videojs {
13 interface Player {
14 peertube (): PeerTubePlugin
15 webtorrent (): WebTorrentPlugin
16 p2pMediaLoader (): P2pMediaLoaderPlugin
17 }
18}
19
20interface VideoJSComponentInterface {
21 _player: videojs.Player
22
23 new (player: videojs.Player, options?: any): any
24
25 registerComponent (name: string, obj: any): any
26}
27
28type VideoJSCaption = {
29 label: string
30 language: string
31 src: string
32}
33
34type UserWatching = {
35 url: string,
36 authorizationHeader: string
37}
38
39type PeerTubePluginOptions = {
40 mode: PlayerMode
41
42 autoplay: boolean
43 videoViewUrl: string
44 videoDuration: number
45
46 userWatching?: UserWatching
47 subtitle?: string
48
49 videoCaptions: VideoJSCaption[]
50
51 stopTime: number | string
52}
53
54type WebtorrentPluginOptions = {
55 playerElement: HTMLVideoElement
56
57 autoplay: boolean
58 videoDuration: number
59
60 videoFiles: VideoFile[]
61
62 startTime: number | string
63}
64
65type P2PMediaLoaderPluginOptions = {
66 redundancyUrlManager: RedundancyUrlManager
67 type: string
68 src: string
69
70 startTime: number | string
71}
72
73type VideoJSPluginOptions = {
74 peertube: PeerTubePluginOptions
75
76 webtorrent?: WebtorrentPluginOptions
77
78 p2pMediaLoader?: P2PMediaLoaderPluginOptions
79}
80
81// videojs typings don't have some method we need
82const videojsUntyped = videojs as any
83
84type LoadedQualityData = {
85 qualitySwitchCallback: Function,
86 qualityData: {
87 video: {
88 id: number
89 label: string
90 selected: boolean
91 }[]
92 }
93}
94
95type ResolutionUpdateData = {
96 auto: boolean,
97 resolutionId: number
98 id?: number
99}
100
101type AutoResolutionUpdateData = {
102 possible: boolean
103}
104
105type PlayerNetworkInfo = {
106 http: {
107 downloadSpeed: number
108 uploadSpeed: number
109 downloaded: number
110 uploaded: number
111 }
112
113 p2p: {
114 downloadSpeed: number
115 uploadSpeed: number
116 downloaded: number
117 uploaded: number
118 numPeers: number
119 }
120}
121
122export {
123 PlayerNetworkInfo,
124 ResolutionUpdateData,
125 AutoResolutionUpdateData,
126 VideoJSComponentInterface,
127 videojsUntyped,
128 VideoJSCaption,
129 UserWatching,
130 PeerTubePluginOptions,
131 WebtorrentPluginOptions,
132 P2PMediaLoaderPluginOptions,
133 VideoJSPluginOptions,
134 LoadedQualityData
135}