]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blob - client/src/assets/player/peertube-videojs-typings.ts
Add ability to disable webtorrent
[github/Chocobozzz/PeerTube.git] / client / src / assets / player / peertube-videojs-typings.ts
1 // FIXME: something weird with our path definition in tsconfig and typings
2 // @ts-ignore
3 import * as videojs from 'video.js'
4
5 import { PeerTubePlugin } from './peertube-plugin'
6 import { WebTorrentPlugin } from './webtorrent/webtorrent-plugin'
7 import { P2pMediaLoaderPlugin } from './p2p-media-loader/p2p-media-loader-plugin'
8 import { PlayerMode } from './peertube-player-manager'
9 import { RedundancyUrlManager } from './p2p-media-loader/redundancy-url-manager'
10 import { VideoFile } from '@shared/models'
11
12 declare namespace videojs {
13 interface Player {
14 peertube (): PeerTubePlugin
15 webtorrent (): WebTorrentPlugin
16 p2pMediaLoader (): P2pMediaLoaderPlugin
17 }
18 }
19
20 interface VideoJSComponentInterface {
21 _player: videojs.Player
22
23 new (player: videojs.Player, options?: any): any
24
25 registerComponent (name: string, obj: any): any
26 }
27
28 type VideoJSCaption = {
29 label: string
30 language: string
31 src: string
32 }
33
34 type UserWatching = {
35 url: string,
36 authorizationHeader: string
37 }
38
39 type 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
54 type WebtorrentPluginOptions = {
55 playerElement: HTMLVideoElement
56
57 autoplay: boolean
58 videoDuration: number
59
60 videoFiles: VideoFile[]
61
62 startTime: number | string
63 }
64
65 type P2PMediaLoaderPluginOptions = {
66 redundancyUrlManager: RedundancyUrlManager
67 type: string
68 src: string
69
70 startTime: number | string
71 }
72
73 type VideoJSPluginOptions = {
74 peertube: PeerTubePluginOptions
75
76 webtorrent?: WebtorrentPluginOptions
77
78 p2pMediaLoader?: P2PMediaLoaderPluginOptions
79 }
80
81 // videojs typings don't have some method we need
82 const videojsUntyped = videojs as any
83
84 type LoadedQualityData = {
85 qualitySwitchCallback: Function,
86 qualityData: {
87 video: {
88 id: number
89 label: string
90 selected: boolean
91 }[]
92 }
93 }
94
95 type ResolutionUpdateData = {
96 auto: boolean,
97 resolutionId: number
98 id?: number
99 }
100
101 type AutoResolutionUpdateData = {
102 possible: boolean
103 }
104
105 type 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
122 export {
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 }