peertube-videojs-typings.ts 2.6 KB

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