bitmovin-player-react-native 0.44.1-alpha.0 → 1.0.0-alpha.0

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.
Files changed (497) hide show
  1. package/.eslintignore +11 -0
  2. package/.eslintrc.js +7 -0
  3. package/.gitattributes +3 -0
  4. package/.prettierignore +11 -0
  5. package/.ruby-version +1 -0
  6. package/.swiftlint.yml +171 -0
  7. package/Brewfile +2 -0
  8. package/CHANGELOG.md +627 -0
  9. package/CONTRIBUTING.md +255 -0
  10. package/TODO.md +0 -0
  11. package/android/.editorconfig +8 -0
  12. package/android/build.gradle +78 -75
  13. package/android/gradle/wrapper/gradle-wrapper.jar +0 -0
  14. package/android/gradle/wrapper/gradle-wrapper.properties +7 -0
  15. package/android/gradle.properties +1 -0
  16. package/android/gradlew +248 -0
  17. package/android/gradlew.bat +92 -0
  18. package/android/ktlint.gradle +31 -0
  19. package/android/src/main/java/com/bitmovin/player/reactnative/ActivityLifecycleListener.kt +51 -0
  20. package/android/src/main/java/com/bitmovin/player/reactnative/BitmovinCastManagerModule.kt +32 -55
  21. package/android/src/main/java/com/bitmovin/player/reactnative/BufferModule.kt +33 -45
  22. package/android/src/main/java/com/bitmovin/player/reactnative/CustomMessageHandlerModule.kt +84 -0
  23. package/android/src/main/java/com/bitmovin/player/reactnative/DebugModule.kt +6 -14
  24. package/android/src/main/java/com/bitmovin/player/reactnative/DecoderConfigModule.kt +89 -44
  25. package/android/src/main/java/com/bitmovin/player/reactnative/DrmModule.kt +80 -99
  26. package/android/src/main/java/com/bitmovin/player/reactnative/EventSubscription.kt +22 -0
  27. package/android/src/main/java/com/bitmovin/player/reactnative/FullscreenHandlerModule.kt +100 -0
  28. package/android/src/main/java/com/bitmovin/player/reactnative/MediaSessionPlaybackManager.kt +5 -5
  29. package/android/src/main/java/com/bitmovin/player/reactnative/NetworkModule.kt +98 -56
  30. package/android/src/main/java/com/bitmovin/player/reactnative/OfflineModule.kt +132 -186
  31. package/android/src/main/java/com/bitmovin/player/reactnative/PlayerAnalyticsModule.kt +37 -36
  32. package/android/src/main/java/com/bitmovin/player/reactnative/PlayerModule.kt +252 -528
  33. package/android/src/main/java/com/bitmovin/player/reactnative/RNPlayerPackage.kt +11 -0
  34. package/android/src/main/java/com/bitmovin/player/reactnative/RNPlayerView.kt +558 -213
  35. package/android/src/main/java/com/bitmovin/player/reactnative/RNPlayerViewManager.kt +99 -286
  36. package/android/src/main/java/com/bitmovin/player/reactnative/ResultWaiter.kt +58 -0
  37. package/android/src/main/java/com/bitmovin/player/reactnative/SourceModule.kt +77 -151
  38. package/android/src/main/java/com/bitmovin/player/reactnative/Types.kt +44 -0
  39. package/android/src/main/java/com/bitmovin/player/reactnative/UuidModule.kt +12 -15
  40. package/android/src/main/java/com/bitmovin/player/reactnative/converter/JsonConverter.kt +296 -456
  41. package/android/src/main/java/com/bitmovin/player/reactnative/extensions/ListExtension.kt +89 -0
  42. package/android/src/main/java/com/bitmovin/player/reactnative/extensions/MapExtension.kt +95 -0
  43. package/android/src/main/java/com/bitmovin/player/reactnative/offline/OfflineContentManagerBridge.kt +20 -52
  44. package/android/src/main/java/com/bitmovin/player/reactnative/ui/CustomMessageHandlerBridge.kt +10 -20
  45. package/android/src/main/java/com/bitmovin/player/reactnative/ui/FullscreenHandlerBridge.kt +4 -9
  46. package/app.plugin.js +21 -0
  47. package/build/BitmovinPlayerReactNative.types.d.ts +18 -0
  48. package/build/BitmovinPlayerReactNative.types.d.ts.map +1 -0
  49. package/build/BitmovinPlayerReactNative.types.js +2 -0
  50. package/build/BitmovinPlayerReactNative.types.js.map +1 -0
  51. package/build/adaptationConfig.d.ts +18 -0
  52. package/build/adaptationConfig.d.ts.map +1 -0
  53. package/build/adaptationConfig.js +2 -0
  54. package/build/adaptationConfig.js.map +1 -0
  55. package/build/advertising.d.ts +175 -0
  56. package/build/advertising.d.ts.map +1 -0
  57. package/build/advertising.js +37 -0
  58. package/build/advertising.js.map +1 -0
  59. package/build/analytics/config.d.ts +194 -0
  60. package/build/analytics/config.d.ts.map +1 -0
  61. package/build/analytics/config.js +2 -0
  62. package/build/analytics/config.js.map +1 -0
  63. package/build/analytics/index.d.ts +3 -0
  64. package/build/analytics/index.d.ts.map +1 -0
  65. package/build/analytics/index.js +3 -0
  66. package/build/analytics/index.js.map +1 -0
  67. package/build/analytics/player.d.ts +24 -0
  68. package/build/analytics/player.d.ts.map +1 -0
  69. package/build/analytics/player.js +30 -0
  70. package/build/analytics/player.js.map +1 -0
  71. package/build/analytics/playerAnalyticsModule.d.ts +13 -0
  72. package/build/analytics/playerAnalyticsModule.d.ts.map +1 -0
  73. package/build/analytics/playerAnalyticsModule.js +3 -0
  74. package/build/analytics/playerAnalyticsModule.js.map +1 -0
  75. package/build/audioSession.d.ts +33 -0
  76. package/build/audioSession.d.ts.map +1 -0
  77. package/build/audioSession.js +21 -0
  78. package/build/audioSession.js.map +1 -0
  79. package/build/audioTrack.d.ts +39 -0
  80. package/build/audioTrack.d.ts.map +1 -0
  81. package/build/audioTrack.js +2 -0
  82. package/build/audioTrack.js.map +1 -0
  83. package/build/bitmovinCastManager.d.ts +58 -0
  84. package/build/bitmovinCastManager.d.ts.map +1 -0
  85. package/build/bitmovinCastManager.js +64 -0
  86. package/build/bitmovinCastManager.js.map +1 -0
  87. package/build/bufferApi.d.ts +85 -0
  88. package/build/bufferApi.d.ts.map +1 -0
  89. package/build/bufferApi.js +60 -0
  90. package/build/bufferApi.js.map +1 -0
  91. package/build/bufferConfig.d.ts +42 -0
  92. package/build/bufferConfig.d.ts.map +1 -0
  93. package/build/bufferConfig.js +2 -0
  94. package/build/bufferConfig.js.map +1 -0
  95. package/build/components/PlayerView/events.d.ts +310 -0
  96. package/build/components/PlayerView/events.d.ts.map +1 -0
  97. package/build/components/PlayerView/events.js +2 -0
  98. package/build/components/PlayerView/events.js.map +1 -0
  99. package/build/components/PlayerView/index.d.ts +10 -0
  100. package/build/components/PlayerView/index.d.ts.map +1 -0
  101. package/build/components/PlayerView/index.js +72 -0
  102. package/build/components/PlayerView/index.js.map +1 -0
  103. package/build/components/PlayerView/native.d.ts +30 -0
  104. package/build/components/PlayerView/native.d.ts.map +1 -0
  105. package/build/components/PlayerView/native.js +6 -0
  106. package/build/components/PlayerView/native.js.map +1 -0
  107. package/build/components/PlayerView/nativeEvents.d.ts +437 -0
  108. package/build/components/PlayerView/nativeEvents.d.ts.map +1 -0
  109. package/build/components/PlayerView/nativeEvents.js +2 -0
  110. package/build/components/PlayerView/nativeEvents.js.map +1 -0
  111. package/build/components/PlayerView/pictureInPictureConfig.d.ts +22 -0
  112. package/build/components/PlayerView/pictureInPictureConfig.d.ts.map +1 -0
  113. package/build/components/PlayerView/pictureInPictureConfig.js +2 -0
  114. package/build/components/PlayerView/pictureInPictureConfig.js.map +1 -0
  115. package/build/components/PlayerView/playerViewConfig.d.ts +111 -0
  116. package/build/components/PlayerView/playerViewConfig.d.ts.map +1 -0
  117. package/build/components/PlayerView/playerViewConfig.js +51 -0
  118. package/build/components/PlayerView/playerViewConfig.js.map +1 -0
  119. package/build/components/PlayerView/properties.d.ts +61 -0
  120. package/build/components/PlayerView/properties.d.ts.map +1 -0
  121. package/build/components/PlayerView/properties.js +2 -0
  122. package/build/components/PlayerView/properties.js.map +1 -0
  123. package/build/components/index.d.ts +5 -0
  124. package/build/components/index.d.ts.map +1 -0
  125. package/build/components/index.js +5 -0
  126. package/build/components/index.js.map +1 -0
  127. package/build/debug.d.ts +46 -0
  128. package/build/debug.d.ts.map +1 -0
  129. package/build/debug.js +52 -0
  130. package/build/debug.js.map +1 -0
  131. package/build/decoder/decoderConfig.d.ts +96 -0
  132. package/build/decoder/decoderConfig.d.ts.map +1 -0
  133. package/build/decoder/decoderConfig.js +6 -0
  134. package/build/decoder/decoderConfig.js.map +1 -0
  135. package/build/decoder/decoderConfigModule.d.ts +14 -0
  136. package/build/decoder/decoderConfigModule.d.ts.map +1 -0
  137. package/build/decoder/decoderConfigModule.js +31 -0
  138. package/build/decoder/decoderConfigModule.js.map +1 -0
  139. package/build/decoder/index.d.ts +26 -0
  140. package/build/decoder/index.d.ts.map +1 -0
  141. package/build/decoder/index.js +50 -0
  142. package/build/decoder/index.js.map +1 -0
  143. package/build/drm/drmModule.d.ts +55 -0
  144. package/build/drm/drmModule.d.ts.map +1 -0
  145. package/build/drm/drmModule.js +3 -0
  146. package/build/drm/drmModule.js.map +1 -0
  147. package/build/drm/fairplayConfig.d.ts +91 -0
  148. package/build/drm/fairplayConfig.d.ts.map +1 -0
  149. package/build/drm/fairplayConfig.js +2 -0
  150. package/build/drm/fairplayConfig.js.map +1 -0
  151. package/build/drm/index.d.ts +112 -0
  152. package/build/drm/index.d.ts.map +1 -0
  153. package/build/drm/index.js +191 -0
  154. package/build/drm/index.js.map +1 -0
  155. package/build/drm/widevineConfig.d.ts +58 -0
  156. package/build/drm/widevineConfig.d.ts.map +1 -0
  157. package/build/drm/widevineConfig.js +2 -0
  158. package/build/drm/widevineConfig.js.map +1 -0
  159. package/build/events.d.ts +692 -0
  160. package/build/events.d.ts.map +1 -0
  161. package/build/events.js +2 -0
  162. package/build/events.js.map +1 -0
  163. package/build/hooks/index.d.ts +2 -0
  164. package/build/hooks/index.d.ts.map +1 -0
  165. package/build/hooks/index.js +2 -0
  166. package/build/hooks/index.js.map +1 -0
  167. package/build/hooks/usePlayer.d.ts +8 -0
  168. package/build/hooks/usePlayer.d.ts.map +1 -0
  169. package/build/hooks/usePlayer.js +10 -0
  170. package/build/hooks/usePlayer.js.map +1 -0
  171. package/build/hooks/useProxy.d.ts +18 -0
  172. package/build/hooks/useProxy.d.ts.map +1 -0
  173. package/build/hooks/useProxy.js +16 -0
  174. package/build/hooks/useProxy.js.map +1 -0
  175. package/build/index.d.ts +32 -0
  176. package/build/index.d.ts.map +1 -0
  177. package/build/index.js +32 -0
  178. package/build/index.js.map +1 -0
  179. package/build/liveConfig.d.ts +13 -0
  180. package/build/liveConfig.d.ts.map +1 -0
  181. package/build/liveConfig.js +2 -0
  182. package/build/liveConfig.js.map +1 -0
  183. package/build/media.d.ts +85 -0
  184. package/build/media.d.ts.map +1 -0
  185. package/build/media.js +2 -0
  186. package/build/media.js.map +1 -0
  187. package/build/mediaControlConfig.d.ts +62 -0
  188. package/build/mediaControlConfig.d.ts.map +1 -0
  189. package/build/mediaControlConfig.js +2 -0
  190. package/build/mediaControlConfig.js.map +1 -0
  191. package/build/mediaTrackRole.d.ts +28 -0
  192. package/build/mediaTrackRole.d.ts.map +1 -0
  193. package/build/mediaTrackRole.js +2 -0
  194. package/build/mediaTrackRole.js.map +1 -0
  195. package/build/modules/AudioSessionModule.d.ts +8 -0
  196. package/build/modules/AudioSessionModule.d.ts.map +1 -0
  197. package/build/modules/AudioSessionModule.js +7 -0
  198. package/build/modules/AudioSessionModule.js.map +1 -0
  199. package/build/modules/BitmovinCastManagerModule.d.ts +11 -0
  200. package/build/modules/BitmovinCastManagerModule.d.ts.map +1 -0
  201. package/build/modules/BitmovinCastManagerModule.js +3 -0
  202. package/build/modules/BitmovinCastManagerModule.js.map +1 -0
  203. package/build/modules/BufferModule.d.ts +16 -0
  204. package/build/modules/BufferModule.d.ts.map +1 -0
  205. package/build/modules/BufferModule.js +3 -0
  206. package/build/modules/BufferModule.js.map +1 -0
  207. package/build/modules/DebugModule.d.ts +8 -0
  208. package/build/modules/DebugModule.d.ts.map +1 -0
  209. package/build/modules/DebugModule.js +3 -0
  210. package/build/modules/DebugModule.js.map +1 -0
  211. package/build/modules/PlayerModule.d.ts +188 -0
  212. package/build/modules/PlayerModule.d.ts.map +1 -0
  213. package/build/modules/PlayerModule.js +3 -0
  214. package/build/modules/PlayerModule.js.map +1 -0
  215. package/build/modules/SourceModule.d.ts +51 -0
  216. package/build/modules/SourceModule.d.ts.map +1 -0
  217. package/build/modules/SourceModule.js +3 -0
  218. package/build/modules/SourceModule.js.map +1 -0
  219. package/build/modules/UuidModule.d.ts +8 -0
  220. package/build/modules/UuidModule.d.ts.map +1 -0
  221. package/build/modules/UuidModule.js +3 -0
  222. package/build/modules/UuidModule.js.map +1 -0
  223. package/build/nativeInstance.d.ts +49 -0
  224. package/build/nativeInstance.d.ts.map +1 -0
  225. package/build/nativeInstance.js +20 -0
  226. package/build/nativeInstance.js.map +1 -0
  227. package/build/network/index.d.ts +50 -0
  228. package/build/network/index.d.ts.map +1 -0
  229. package/build/network/index.js +102 -0
  230. package/build/network/index.js.map +1 -0
  231. package/build/network/networkConfig.d.ts +151 -0
  232. package/build/network/networkConfig.d.ts.map +1 -0
  233. package/build/network/networkConfig.js +21 -0
  234. package/build/network/networkConfig.js.map +1 -0
  235. package/build/network/networkModule.d.ts +29 -0
  236. package/build/network/networkModule.d.ts.map +1 -0
  237. package/build/network/networkModule.js +3 -0
  238. package/build/network/networkModule.js.map +1 -0
  239. package/build/offline/index.d.ts +8 -0
  240. package/build/offline/index.d.ts.map +1 -0
  241. package/build/offline/index.js +8 -0
  242. package/build/offline/index.js.map +1 -0
  243. package/build/offline/offlineContentConfig.d.ts +18 -0
  244. package/build/offline/offlineContentConfig.d.ts.map +1 -0
  245. package/build/offline/offlineContentConfig.js +2 -0
  246. package/build/offline/offlineContentConfig.js.map +1 -0
  247. package/build/offline/offlineContentManager.d.ts +90 -0
  248. package/build/offline/offlineContentManager.d.ts.map +1 -0
  249. package/build/offline/offlineContentManager.js +177 -0
  250. package/build/offline/offlineContentManager.js.map +1 -0
  251. package/build/offline/offlineContentManagerListener.d.ts +174 -0
  252. package/build/offline/offlineContentManagerListener.d.ts.map +1 -0
  253. package/build/offline/offlineContentManagerListener.js +17 -0
  254. package/build/offline/offlineContentManagerListener.js.map +1 -0
  255. package/build/offline/offlineContentOptions.d.ts +29 -0
  256. package/build/offline/offlineContentOptions.d.ts.map +1 -0
  257. package/build/offline/offlineContentOptions.js +2 -0
  258. package/build/offline/offlineContentOptions.js.map +1 -0
  259. package/build/offline/offlineDownloadRequest.d.ts +19 -0
  260. package/build/offline/offlineDownloadRequest.d.ts.map +1 -0
  261. package/build/offline/offlineDownloadRequest.js +2 -0
  262. package/build/offline/offlineDownloadRequest.js.map +1 -0
  263. package/build/offline/offlineModule.d.ts +32 -0
  264. package/build/offline/offlineModule.d.ts.map +1 -0
  265. package/build/offline/offlineModule.js +3 -0
  266. package/build/offline/offlineModule.js.map +1 -0
  267. package/build/offline/offlineSourceOptions.d.ts +12 -0
  268. package/build/offline/offlineSourceOptions.d.ts.map +1 -0
  269. package/build/offline/offlineSourceOptions.js +2 -0
  270. package/build/offline/offlineSourceOptions.js.map +1 -0
  271. package/build/offline/offlineState.d.ts +23 -0
  272. package/build/offline/offlineState.d.ts.map +1 -0
  273. package/build/offline/offlineState.js +24 -0
  274. package/build/offline/offlineState.js.map +1 -0
  275. package/build/playbackConfig.d.ts +88 -0
  276. package/build/playbackConfig.d.ts.map +1 -0
  277. package/build/playbackConfig.js +2 -0
  278. package/build/playbackConfig.js.map +1 -0
  279. package/build/player.d.ts +308 -0
  280. package/build/player.d.ts.map +1 -0
  281. package/build/player.js +445 -0
  282. package/build/player.js.map +1 -0
  283. package/build/playerConfig.d.ts +83 -0
  284. package/build/playerConfig.d.ts.map +1 -0
  285. package/build/playerConfig.js +2 -0
  286. package/build/playerConfig.js.map +1 -0
  287. package/build/remoteControlConfig.d.ts +38 -0
  288. package/build/remoteControlConfig.d.ts.map +1 -0
  289. package/build/remoteControlConfig.js +2 -0
  290. package/build/remoteControlConfig.js.map +1 -0
  291. package/build/source.d.ts +216 -0
  292. package/build/source.d.ts.map +1 -0
  293. package/build/source.js +167 -0
  294. package/build/source.js.map +1 -0
  295. package/build/styleConfig.d.ts +120 -0
  296. package/build/styleConfig.d.ts.map +1 -0
  297. package/build/styleConfig.js +38 -0
  298. package/build/styleConfig.js.map +1 -0
  299. package/build/subtitleFormat.d.ts +27 -0
  300. package/build/subtitleFormat.d.ts.map +1 -0
  301. package/build/subtitleFormat.js +28 -0
  302. package/build/subtitleFormat.js.map +1 -0
  303. package/build/subtitleTrack.d.ts +55 -0
  304. package/build/subtitleTrack.d.ts.map +1 -0
  305. package/build/subtitleTrack.js +2 -0
  306. package/build/subtitleTrack.js.map +1 -0
  307. package/build/thumbnail.d.ts +38 -0
  308. package/build/thumbnail.d.ts.map +1 -0
  309. package/build/thumbnail.js +2 -0
  310. package/build/thumbnail.js.map +1 -0
  311. package/build/tweaksConfig.d.ts +197 -0
  312. package/build/tweaksConfig.d.ts.map +1 -0
  313. package/build/tweaksConfig.js +25 -0
  314. package/build/tweaksConfig.js.map +1 -0
  315. package/build/ui/customMessageHandlerModule.d.ts +27 -0
  316. package/build/ui/customMessageHandlerModule.d.ts.map +1 -0
  317. package/build/ui/customMessageHandlerModule.js +3 -0
  318. package/build/ui/customMessageHandlerModule.js.map +1 -0
  319. package/build/ui/custommessagehandler.d.ts +56 -0
  320. package/build/ui/custommessagehandler.d.ts.map +1 -0
  321. package/build/ui/custommessagehandler.js +54 -0
  322. package/build/ui/custommessagehandler.js.map +1 -0
  323. package/build/ui/custommessagehandlerbridge.d.ts +33 -0
  324. package/build/ui/custommessagehandlerbridge.d.ts.map +1 -0
  325. package/build/ui/custommessagehandlerbridge.js +72 -0
  326. package/build/ui/custommessagehandlerbridge.js.map +1 -0
  327. package/build/ui/custommessagesender.d.ts +5 -0
  328. package/build/ui/custommessagesender.d.ts.map +1 -0
  329. package/build/ui/custommessagesender.js +2 -0
  330. package/build/ui/custommessagesender.js.map +1 -0
  331. package/build/ui/fullscreenHandlerModule.d.ts +20 -0
  332. package/build/ui/fullscreenHandlerModule.d.ts.map +1 -0
  333. package/build/ui/fullscreenHandlerModule.js +3 -0
  334. package/build/ui/fullscreenHandlerModule.js.map +1 -0
  335. package/build/ui/fullscreenhandler.d.ts +18 -0
  336. package/build/ui/fullscreenhandler.d.ts.map +1 -0
  337. package/build/ui/fullscreenhandler.js +2 -0
  338. package/build/ui/fullscreenhandler.js.map +1 -0
  339. package/build/ui/fullscreenhandlerbridge.d.ts +26 -0
  340. package/build/ui/fullscreenhandlerbridge.d.ts.map +1 -0
  341. package/build/ui/fullscreenhandlerbridge.js +67 -0
  342. package/build/ui/fullscreenhandlerbridge.js.map +1 -0
  343. package/build/ui/index.d.ts +3 -0
  344. package/build/ui/index.d.ts.map +1 -0
  345. package/build/ui/index.js +3 -0
  346. package/build/ui/index.js.map +1 -0
  347. package/expo-module.config.json +40 -0
  348. package/ios/AppLifecycleDelegate.swift +25 -0
  349. package/ios/AudioSessionModule.swift +14 -40
  350. package/ios/BitmovinCastManagerModule.swift +30 -69
  351. package/ios/BufferModule.swift +26 -62
  352. package/ios/CustomMessageHandlerBridge.swift +11 -18
  353. package/ios/CustomMessageHandlerModule.swift +61 -63
  354. package/ios/DebugModule.swift +6 -27
  355. package/ios/DrmModule.swift +105 -379
  356. package/ios/Event+JSON.swift +1 -0
  357. package/ios/FullscreenHandlerBridge.swift +12 -5
  358. package/ios/FullscreenHandlerModule.swift +73 -57
  359. package/ios/LockedBox.swift +21 -0
  360. package/ios/ModuleRegistry+Generics.swift +11 -0
  361. package/ios/NetworkModule.swift +78 -82
  362. package/ios/OfflineContentManagerBridge.swift +11 -38
  363. package/ios/OfflineModule.swift +136 -454
  364. package/ios/PlayerAnalyticsModule.swift +24 -52
  365. package/ios/PlayerModule.swift +192 -770
  366. package/ios/RCTConvert+BitmovinPlayer.swift +38 -312
  367. package/ios/RNBitmovinPlayer.h +1 -8
  368. package/ios/RNBitmovinPlayer.podspec +47 -0
  369. package/ios/RNPlayerView.swift +600 -77
  370. package/ios/RNPlayerViewManager.swift +96 -210
  371. package/ios/Registry.swift +2 -2
  372. package/ios/ResultWaiter.swift +66 -0
  373. package/ios/SourceModule.swift +104 -223
  374. package/ios/UuidModule.swift +9 -18
  375. package/package.json +67 -71
  376. package/plugin/build/FeatureFlags.d.ts +24 -0
  377. package/plugin/build/FeatureFlags.js +2 -0
  378. package/plugin/build/index.d.ts +7 -0
  379. package/plugin/build/index.js +10 -0
  380. package/plugin/build/withAppGradleDependencies.d.ts +7 -0
  381. package/plugin/build/withAppGradleDependencies.js +49 -0
  382. package/plugin/build/withBitmovinAndroidConfig.d.ts +7 -0
  383. package/plugin/build/withBitmovinAndroidConfig.js +159 -0
  384. package/plugin/build/withBitmovinConfig.d.ts +7 -0
  385. package/plugin/build/withBitmovinConfig.js +21 -0
  386. package/plugin/build/withBitmovinIosConfig.d.ts +7 -0
  387. package/plugin/build/withBitmovinIosConfig.js +53 -0
  388. package/plugin/src/FeatureFlags.ts +21 -0
  389. package/plugin/src/index.ts +9 -0
  390. package/plugin/src/withAppGradleDependencies.ts +80 -0
  391. package/plugin/src/withBitmovinAndroidConfig.ts +224 -0
  392. package/plugin/src/withBitmovinConfig.ts +24 -0
  393. package/plugin/src/withBitmovinIosConfig.ts +71 -0
  394. package/plugin/tsconfig.json +9 -0
  395. package/plugin/tsconfig.tsbuildinfo +1 -0
  396. package/prettier.config.js +7 -0
  397. package/scripts/format-android.sh +2 -0
  398. package/scripts/format-swift.sh +3 -0
  399. package/scripts/lint-android.sh +2 -0
  400. package/scripts/lint-swift.sh +3 -0
  401. package/scripts/pre-commit.sh +14 -0
  402. package/scripts/setup-hooks.sh +58 -0
  403. package/src/BitmovinPlayerReactNative.types.ts +19 -0
  404. package/src/adaptationConfig.ts +1 -1
  405. package/src/advertising.ts +1 -1
  406. package/src/analytics/config.ts +4 -4
  407. package/src/analytics/player.ts +4 -6
  408. package/src/analytics/playerAnalyticsModule.ts +19 -0
  409. package/src/audioSession.ts +4 -6
  410. package/src/audioTrack.ts +1 -1
  411. package/src/bitmovinCastManager.ts +14 -10
  412. package/src/bufferApi.ts +1 -3
  413. package/src/bufferConfig.ts +2 -2
  414. package/src/components/PlayerView/events.ts +92 -94
  415. package/src/components/PlayerView/index.tsx +109 -159
  416. package/src/components/PlayerView/native.ts +24 -11
  417. package/src/components/PlayerView/nativeEvents.ts +113 -94
  418. package/src/components/PlayerView/pictureInPictureConfig.ts +1 -1
  419. package/src/components/PlayerView/playerViewConfig.ts +4 -8
  420. package/src/components/PlayerView/properties.ts +23 -22
  421. package/src/debug.ts +1 -3
  422. package/src/decoder/decoderConfig.ts +3 -3
  423. package/src/decoder/decoderConfigModule.ts +62 -0
  424. package/src/decoder/index.ts +32 -16
  425. package/src/drm/drmModule.ts +84 -0
  426. package/src/drm/fairplayConfig.ts +1 -1
  427. package/src/drm/index.ts +130 -40
  428. package/src/drm/widevineConfig.ts +5 -5
  429. package/src/events.ts +47 -41
  430. package/src/hooks/useProxy.ts +13 -20
  431. package/src/mediaControlConfig.ts +1 -1
  432. package/src/modules/AudioSessionModule.ts +13 -0
  433. package/src/modules/BitmovinCastManagerModule.ts +14 -0
  434. package/src/modules/BufferModule.ts +18 -0
  435. package/src/modules/DebugModule.ts +9 -0
  436. package/src/modules/PlayerModule.ts +251 -0
  437. package/src/modules/SourceModule.ts +74 -0
  438. package/src/modules/UuidModule.ts +9 -0
  439. package/src/nativeInstance.ts +3 -3
  440. package/src/network/index.ts +42 -15
  441. package/src/network/networkConfig.ts +3 -3
  442. package/src/network/networkModule.ts +51 -0
  443. package/src/offline/offlineContentConfig.ts +1 -1
  444. package/src/offline/offlineContentManager.ts +15 -50
  445. package/src/offline/offlineContentManagerListener.ts +20 -23
  446. package/src/offline/offlineContentOptions.ts +2 -2
  447. package/src/offline/offlineDownloadRequest.ts +1 -1
  448. package/src/offline/offlineModule.ts +46 -0
  449. package/src/offline/offlineSourceOptions.ts +2 -2
  450. package/src/offline/offlineState.ts +1 -1
  451. package/src/playbackConfig.ts +5 -6
  452. package/src/player.ts +53 -48
  453. package/src/source.ts +15 -14
  454. package/src/styleConfig.ts +5 -5
  455. package/src/subtitleFormat.ts +5 -5
  456. package/src/subtitleTrack.ts +1 -1
  457. package/src/tweaksConfig.ts +16 -16
  458. package/src/ui/customMessageHandlerModule.ts +46 -0
  459. package/src/ui/custommessagehandlerbridge.ts +45 -18
  460. package/src/ui/fullscreenHandlerModule.ts +35 -0
  461. package/src/ui/fullscreenhandlerbridge.ts +35 -15
  462. package/tsconfig.json +9 -0
  463. package/typedoc.json +23 -0
  464. package/RNBitmovinPlayer.podspec +0 -26
  465. package/android/src/main/java/com/bitmovin/player/reactnative/BitmovinBaseModule.kt +0 -114
  466. package/android/src/main/java/com/bitmovin/player/reactnative/EventRelay.kt +0 -47
  467. package/android/src/main/java/com/bitmovin/player/reactnative/RNPlayerViewPackage.kt +0 -48
  468. package/android/src/main/java/com/bitmovin/player/reactnative/extensions/ReactContextExtension.kt +0 -24
  469. package/android/src/main/java/com/bitmovin/player/reactnative/extensions/ReadableArray.kt +0 -20
  470. package/android/src/main/java/com/bitmovin/player/reactnative/extensions/ReadableMap.kt +0 -15
  471. package/android/src/main/java/com/bitmovin/player/reactnative/extensions/ReadableMapExtension.kt +0 -57
  472. package/android/src/main/java/com/bitmovin/player/reactnative/extensions/WritableMap.kt +0 -27
  473. package/android/src/main/java/com/bitmovin/player/reactnative/ui/CustomMessageHandlerModule.kt +0 -86
  474. package/android/src/main/java/com/bitmovin/player/reactnative/ui/FullscreenHandlerModule.kt +0 -78
  475. package/ios/AudioSessionModule.m +0 -10
  476. package/ios/BitmovinCastManagerModule.m +0 -14
  477. package/ios/BufferModule.m +0 -8
  478. package/ios/CustomMessageHandlerModule.m +0 -10
  479. package/ios/DebugModule.m +0 -7
  480. package/ios/DrmModule.m +0 -16
  481. package/ios/FullscreenHandlerModule.m +0 -10
  482. package/ios/NetworkModule.m +0 -10
  483. package/ios/OfflineModule.m +0 -19
  484. package/ios/PlayerAnalyticsModule.m +0 -8
  485. package/ios/PlayerModule.m +0 -130
  486. package/ios/PreprocessHttpRequestDelegateBridge.swift +0 -30
  487. package/ios/RCTBridge+Generics.swift +0 -6
  488. package/ios/RNBitmovinPlayer.xcodeproj/project.pbxproj +0 -303
  489. package/ios/RNPlayerView+PlayerListener.swift +0 -229
  490. package/ios/RNPlayerView+UserInterfaceListener.swift +0 -35
  491. package/ios/RNPlayerViewManager.m +0 -79
  492. package/ios/SourceModule.m +0 -42
  493. package/ios/UuidModule.m +0 -9
  494. package/lib/index.d.mts +0 -4303
  495. package/lib/index.d.ts +0 -4303
  496. package/lib/index.js +0 -1895
  497. package/lib/index.mjs +0 -1836
@@ -0,0 +1,74 @@
1
+ import { NativeModule, requireNativeModule } from 'expo-modules-core';
2
+ import { LoadingState, SourceRemoteControlConfig } from '../source';
3
+ import { Thumbnail } from '../thumbnail';
4
+
5
+ export type SourceModuleEvents = Record<string, any>;
6
+
7
+ declare class SourceModule extends NativeModule<SourceModuleEvents> {
8
+ /**
9
+ * Checks if the source is attached to a player.
10
+ */
11
+ isAttachedToPlayer(nativeId: string): Promise<boolean | null>;
12
+
13
+ /**
14
+ * Checks if the source is currently active.
15
+ */
16
+ isActive(nativeId: string): Promise<boolean | null>;
17
+
18
+ /**
19
+ * Initializes a source with the given nativeId, optional DRM nativeId, configuration object,
20
+ * and remote control object.
21
+ */
22
+ initializeWithConfig(
23
+ nativeId: string,
24
+ drmNativeId?: string,
25
+ config?: Record<string, any>,
26
+ remoteControl?: SourceRemoteControlConfig
27
+ ): Promise<void>;
28
+
29
+ /**
30
+ * Initializes a source with the given nativeId, optional DRM nativeId, configuration object,
31
+ * remote control object, and analytics source metadata.
32
+ */
33
+ initializeWithAnalyticsConfig(
34
+ nativeId: string,
35
+ drmNativeId?: string,
36
+ config?: Record<string, any>,
37
+ remoteControl?: SourceRemoteControlConfig,
38
+ analyticsSourceMetadata?: Record<string, any>
39
+ ): Promise<void>;
40
+
41
+ /**
42
+ * Destroys the source with the given nativeId.
43
+ */
44
+ destroy(nativeId: string): Promise<void>;
45
+
46
+ /**
47
+ * Returns the native DRM config reference of the source with the given nativeId.
48
+ */
49
+ duration(nativeId: string): Promise<number | null>;
50
+ /**
51
+ * Returns the current loading state of the source with the given nativeId.
52
+ */
53
+ loadingState(nativeId: string): Promise<LoadingState | null>;
54
+
55
+ /**
56
+ * Returns the metadata of the source with the given nativeId.
57
+ */
58
+ getMetadata(nativeId: string): Promise<Record<string, any> | null>;
59
+
60
+ /**
61
+ * Sets the metadata of the source with the given nativeId.
62
+ */
63
+ setMetadata(
64
+ nativeId: string,
65
+ metadata: Record<string, any> | null
66
+ ): Promise<void>;
67
+
68
+ /**
69
+ * Returns a thumbnail for the specified playback time.
70
+ */
71
+ getThumbnail(nativeId: string, time: number): Promise<Thumbnail | null>;
72
+ }
73
+
74
+ export default requireNativeModule<SourceModule>('SourceModule');
@@ -0,0 +1,9 @@
1
+ import { NativeModule, requireNativeModule } from 'expo-modules-core';
2
+
3
+ export type UuidModuleEvents = Record<string, any>;
4
+
5
+ declare class UuidModule extends NativeModule<UuidModuleEvents> {
6
+ generate(): string;
7
+ }
8
+
9
+ export default requireNativeModule<UuidModule>('UuidModule');
@@ -1,6 +1,6 @@
1
- import { NativeModules } from 'react-native';
1
+ import UuidModule from './modules/UuidModule';
2
2
 
3
- const Uuid = NativeModules.UuidModule;
3
+ const Uuid = UuidModule;
4
4
 
5
5
  export interface NativeInstanceConfig {
6
6
  /**
@@ -20,7 +20,7 @@ export interface NativeInstanceConfig {
20
20
  }
21
21
 
22
22
  export default abstract class NativeInstance<
23
- Config extends NativeInstanceConfig
23
+ Config extends NativeInstanceConfig,
24
24
  > {
25
25
  /**
26
26
  * Optionally user-defined string `id` for the native instance, or UUIDv4.
@@ -1,6 +1,6 @@
1
- import { NativeModules } from 'react-native';
2
- import BatchedBridge from 'react-native/Libraries/BatchedBridge/BatchedBridge';
1
+ import { EventSubscription } from 'expo-modules-core';
3
2
  import NativeInstance from '../nativeInstance';
3
+ import NetworkModule from './networkModule';
4
4
  import {
5
5
  HttpRequestType,
6
6
  HttpRequest,
@@ -8,11 +8,8 @@ import {
8
8
  NetworkConfig,
9
9
  } from './networkConfig';
10
10
 
11
- // Export config types from Network module.
12
11
  export { HttpRequestType, HttpRequest, HttpResponse, NetworkConfig };
13
12
 
14
- const NetworkModule = NativeModules.NetworkModule;
15
-
16
13
  /**
17
14
  * Represents a native Network configuration object.
18
15
  * @internal
@@ -27,16 +24,42 @@ export class Network extends NativeInstance<NetworkConfig> {
27
24
  */
28
25
  isDestroyed = false;
29
26
 
27
+ private onPreprocessHttpRequestSubscription?: EventSubscription;
28
+ private onPreprocessHttpResponseSubscription?: EventSubscription;
29
+
30
30
  /**
31
31
  * Allocates the Network config instance and its resources natively.
32
32
  */
33
- initialize = () => {
33
+ initialize = async () => {
34
34
  if (!this.isInitialized) {
35
- // Register this object as a callable module so it's possible to
36
- // call functions on it from native code, e.g `onPreprocessHttpResponse`.
37
- BatchedBridge.registerCallableModule(`Network-${this.nativeId}`, this);
38
- // Create native configuration object.
39
- NetworkModule.initWithConfig(this.nativeId, this.config);
35
+ console.log('Initializing Network config:', this.nativeId);
36
+ // Set up event listeners for HTTP request/response preprocessing
37
+ this.onPreprocessHttpRequestSubscription = NetworkModule.addListener(
38
+ 'onPreprocessHttpRequest',
39
+ ({ nativeId, requestId, type, request }) => {
40
+ console.log(`Received HTTP Request [${type}]:`, request);
41
+ if (nativeId !== this.nativeId) {
42
+ return;
43
+ }
44
+ this.onPreprocessHttpRequest(requestId, type, request);
45
+ }
46
+ );
47
+
48
+ this.onPreprocessHttpResponseSubscription = NetworkModule.addListener(
49
+ 'onPreprocessHttpResponse',
50
+ ({ nativeId, responseId, type, response }) => {
51
+ console.log(`Received HTTP Response [${type}]:`, response);
52
+ if (nativeId !== this.nativeId) {
53
+ return;
54
+ }
55
+ this.onPreprocessHttpResponse(responseId, type, response);
56
+ }
57
+ );
58
+
59
+ // Create native configuration object using Expo module
60
+ if (this.config) {
61
+ await NetworkModule.initializeWithConfig(this.nativeId, this.config);
62
+ }
40
63
  this.isInitialized = true;
41
64
  }
42
65
  };
@@ -44,9 +67,13 @@ export class Network extends NativeInstance<NetworkConfig> {
44
67
  /**
45
68
  * Destroys the native Network config and releases all of its allocated resources.
46
69
  */
47
- destroy = () => {
70
+ destroy = async () => {
48
71
  if (!this.isDestroyed) {
49
- NetworkModule.destroy(this.nativeId);
72
+ await NetworkModule.destroy(this.nativeId);
73
+ this.onPreprocessHttpRequestSubscription?.remove();
74
+ this.onPreprocessHttpResponseSubscription?.remove();
75
+ this.onPreprocessHttpRequestSubscription = undefined;
76
+ this.onPreprocessHttpResponseSubscription = undefined;
50
77
  this.isDestroyed = true;
51
78
  }
52
79
  };
@@ -61,7 +88,7 @@ export class Network extends NativeInstance<NetworkConfig> {
61
88
  * @param type Type of the request to be made.
62
89
  * @param request The HTTP request to process.
63
90
  */
64
- onPreprocessHttpRequest = (
91
+ private onPreprocessHttpRequest = (
65
92
  requestId: string,
66
93
  type: HttpRequestType,
67
94
  request: HttpRequest
@@ -86,7 +113,7 @@ export class Network extends NativeInstance<NetworkConfig> {
86
113
  * @param type Type of the request to be made.
87
114
  * @param response The HTTP response to process.
88
115
  */
89
- onPreprocessHttpResponse = (
116
+ private onPreprocessHttpResponse = (
90
117
  responseId: string,
91
118
  type: HttpRequestType,
92
119
  response: HttpResponse
@@ -27,7 +27,7 @@ export type HttpRequestBody = string;
27
27
 
28
28
  /** Represents an HTTP request. */
29
29
  export interface HttpRequest {
30
- /** The {@link HttpRequestBody} to send to the server. */
30
+ /** The HTTP request body to send to the server. */
31
31
  body?: HttpRequestBody;
32
32
  /**
33
33
  * The HTTP Headers of the request.
@@ -47,7 +47,7 @@ export type HttpResponseBody = string;
47
47
 
48
48
  /** Represents an HTTP response. */
49
49
  export interface HttpResponse {
50
- /** The {@link HttpRequestBody} of the response. */
50
+ /** The HTTP response body of the response. */
51
51
  body?: HttpResponseBody;
52
52
  /**
53
53
  * The HTTP Headers of the response.
@@ -77,7 +77,7 @@ export interface NetworkConfig extends NativeInstanceConfig {
77
77
  * - If the promise resolves, the player will use the processed request.
78
78
  * - If the promise rejects, the player will fall back to using the original request.
79
79
  *
80
- * @examples
80
+ * @example
81
81
  * ```
82
82
  * const requestCallback = (type: HttpRequestType, request: HttpRequest) => {
83
83
  * // Access current properties
@@ -0,0 +1,51 @@
1
+ import { NativeModule, requireNativeModule } from 'expo-modules-core';
2
+ import {
3
+ HttpRequest,
4
+ HttpResponse,
5
+ NetworkConfig,
6
+ HttpRequestType,
7
+ } from './networkConfig';
8
+
9
+ export type NetworkModuleEvents = {
10
+ onPreprocessHttpRequest: ({
11
+ nativeId,
12
+ requestId,
13
+ type,
14
+ request,
15
+ }: {
16
+ nativeId: string;
17
+ requestId: string;
18
+ type: HttpRequestType;
19
+ request: HttpRequest;
20
+ }) => void;
21
+ onPreprocessHttpResponse: ({
22
+ nativeId,
23
+ responseId,
24
+ type,
25
+ response,
26
+ }: {
27
+ nativeId: string;
28
+ responseId: string;
29
+ type: HttpRequestType;
30
+ response: HttpResponse;
31
+ }) => void;
32
+ };
33
+
34
+ /**
35
+ * Native NetworkModule using Expo modules API.
36
+ * Provides modern async/await interface while maintaining backward compatibility.
37
+ */
38
+ declare class NetworkModule extends NativeModule<NetworkModuleEvents> {
39
+ initializeWithConfig(nativeId: string, config: NetworkConfig): Promise<void>;
40
+ destroy(nativeId: string): Promise<void>;
41
+ setPreprocessedHttpRequest(
42
+ requestId: string,
43
+ request: HttpRequest
44
+ ): Promise<void>;
45
+ setPreprocessedHttpResponse(
46
+ responseId: string,
47
+ response: HttpResponse
48
+ ): Promise<void>;
49
+ }
50
+
51
+ export default requireNativeModule<NetworkModule>('NetworkModule');
@@ -3,7 +3,7 @@ import { SourceConfig } from '../source';
3
3
 
4
4
  /**
5
5
  * Object used to configure a new `OfflineContentManager` instance.
6
- * @platform Android, iOS
6
+ * @remarks Platform: Android, iOS
7
7
  */
8
8
  export interface OfflineContentConfig extends NativeInstanceConfig {
9
9
  /**
@@ -1,11 +1,5 @@
1
- import {
2
- EmitterSubscription,
3
- NativeEventEmitter,
4
- NativeModule,
5
- NativeModules,
6
- } from 'react-native';
1
+ import { EventSubscription } from 'expo-modules-core';
7
2
  import NativeInstance from '../nativeInstance';
8
- import { SourceConfig } from '../source';
9
3
  import {
10
4
  BitmovinNativeOfflineEventData,
11
5
  OfflineContentManagerListener,
@@ -14,30 +8,8 @@ import {
14
8
  import { OfflineContentConfig } from './offlineContentConfig';
15
9
  import { OfflineDownloadRequest } from './offlineDownloadRequest';
16
10
  import { OfflineState } from './offlineState';
17
- import { Drm } from 'bitmovin-player-react-native';
18
-
19
- interface NativeOfflineModule extends NativeModule {
20
- initWithConfig(
21
- nativeId: string,
22
- config: { identifier: string; sourceConfig: SourceConfig },
23
- drmNativeId: string | undefined
24
- ): Promise<void>;
25
- getState(nativeId: string): Promise<OfflineState>;
26
- getOptions(nativeId: string): Promise<void>;
27
- download(nativeId: string, request: OfflineDownloadRequest): Promise<void>;
28
- resume(nativeId: string): Promise<void>;
29
- suspend(nativeId: string): Promise<void>;
30
- cancelDownload(nativeId: string): Promise<void>;
31
- usedStorage(nativeId: string): Promise<number>;
32
- deleteAll(nativeId: string): Promise<void>;
33
- downloadLicense(nativeId: string): Promise<void>;
34
- releaseLicense(nativeId: string): Promise<void>;
35
- renewOfflineLicense(nativeId: string): Promise<void>;
36
- release(nativeId: string): Promise<void>;
37
- }
38
-
39
- const OfflineModule =
40
- NativeModules.BitmovinOfflineModule as NativeOfflineModule;
11
+ import { Drm } from '../drm';
12
+ import OfflineModule from './offlineModule';
41
13
 
42
14
  const handleBitmovinNativeOfflineEvent = (
43
15
  data: BitmovinNativeOfflineEventData,
@@ -73,46 +45,39 @@ const handleBitmovinNativeOfflineEvent = (
73
45
  * without an active network connection. An OfflineContentManager instance can be created via
74
46
  * the constructor and will be idle until initialized.
75
47
  *
76
- * @platform Android, iOS
48
+ * @remarks Platform: Android, iOS
77
49
  */
78
50
  export class OfflineContentManager extends NativeInstance<OfflineContentConfig> {
79
51
  isInitialized = false;
80
52
  isDestroyed = false;
81
- private eventSubscription?: EmitterSubscription = undefined;
53
+ private eventSubscription?: EventSubscription;
82
54
  private listeners: Set<OfflineContentManagerListener> =
83
55
  new Set<OfflineContentManagerListener>();
84
56
  private drm?: Drm;
85
57
 
86
- constructor(config: OfflineContentConfig) {
87
- super(config);
88
- }
89
-
90
58
  /**
91
59
  * Allocates the native `OfflineManager` instance and its resources natively.
92
60
  * Registers the `DeviceEventEmitter` listener to receive data from the native `OfflineContentManagerListener` callbacks
93
61
  */
94
62
  initialize = async (): Promise<void> => {
95
- let initPromise = Promise.resolve();
96
63
  if (!this.isInitialized && this.config) {
97
- this.eventSubscription = new NativeEventEmitter(
98
- OfflineModule
99
- ).addListener(
100
- 'BitmovinOfflineEvent',
101
- (data?: BitmovinNativeOfflineEventData) => {
102
- if (this.nativeId !== data?.nativeId) {
64
+ this.eventSubscription = OfflineModule.addListener(
65
+ 'onBitmovinOfflineEvent',
66
+ (event: BitmovinNativeOfflineEventData) => {
67
+ if (this.nativeId !== event.nativeId) {
103
68
  return;
104
69
  }
105
70
 
106
- handleBitmovinNativeOfflineEvent(data, this.listeners);
71
+ handleBitmovinNativeOfflineEvent(event, this.listeners);
107
72
  }
108
73
  );
109
74
 
110
75
  if (this.config.sourceConfig.drmConfig) {
111
76
  this.drm = new Drm(this.config.sourceConfig.drmConfig);
112
- this.drm.initialize();
77
+ await this.drm.initialize();
113
78
  }
114
79
 
115
- initPromise = OfflineModule.initWithConfig(
80
+ await OfflineModule.initializeWithConfig(
116
81
  this.nativeId,
117
82
  {
118
83
  identifier: this.config.identifier,
@@ -123,7 +88,7 @@ export class OfflineContentManager extends NativeInstance<OfflineContentConfig>
123
88
  }
124
89
 
125
90
  this.isInitialized = true;
126
- return initPromise;
91
+ return Promise.resolve();
127
92
  };
128
93
 
129
94
  /**
@@ -158,7 +123,7 @@ export class OfflineContentManager extends NativeInstance<OfflineContentConfig>
158
123
  * Gets the current state of the `OfflineContentManager`
159
124
  */
160
125
  state = async (): Promise<OfflineState> => {
161
- return OfflineModule.getState(this.nativeId);
126
+ return OfflineModule.getState(this.nativeId) as Promise<OfflineState>;
162
127
  };
163
128
 
164
129
  /**
@@ -228,7 +193,7 @@ export class OfflineContentManager extends NativeInstance<OfflineContentConfig>
228
193
  * When finished successfully data will be passed to the `OfflineContentManagerListener.onDrmLicenseUpdated`.
229
194
  * Errors are transmitted to the `OfflineContentManagerListener.onError`.
230
195
  *
231
- * @platform Android
196
+ * @remarks Platform: Android
232
197
  */
233
198
  releaseLicense = async (): Promise<void> => {
234
199
  return OfflineModule.releaseLicense(this.nativeId);
@@ -3,7 +3,7 @@ import { OfflineState } from './offlineState';
3
3
 
4
4
  /**
5
5
  * Enum to hold the `eventType` on the `BitmovinNativeOfflineEventData`
6
- * @platform Android, iOS
6
+ * @remarks Platform: Android, iOS
7
7
  */
8
8
  export enum OfflineEventType {
9
9
  onCompleted = 'onCompleted',
@@ -19,7 +19,7 @@ export enum OfflineEventType {
19
19
 
20
20
  /**
21
21
  * The base interface for all offline events.
22
- * @platform Android, iOS
22
+ * @remarks Platform: Android, iOS
23
23
  */
24
24
  export interface OfflineEvent<T extends OfflineEventType> {
25
25
  /**
@@ -42,7 +42,7 @@ export interface OfflineEvent<T extends OfflineEventType> {
42
42
 
43
43
  /**
44
44
  * Emitted when the download process has completed.
45
- * @platform Android, iOS
45
+ * @remarks Platform: Android, iOS
46
46
  */
47
47
  export interface OnCompletedEvent
48
48
  extends OfflineEvent<OfflineEventType.onCompleted> {
@@ -54,7 +54,7 @@ export interface OnCompletedEvent
54
54
 
55
55
  /**
56
56
  * Emitted when an error has occurred.
57
- * @platform Android, iOS
57
+ * @remarks Platform: Android, iOS
58
58
  */
59
59
  export interface OnErrorEvent extends OfflineEvent<OfflineEventType.onError> {
60
60
  /**
@@ -69,7 +69,7 @@ export interface OnErrorEvent extends OfflineEvent<OfflineEventType.onError> {
69
69
 
70
70
  /**
71
71
  * Emitted when there is a progress change for the process call.
72
- * @platform Android, iOS
72
+ * @remarks Platform: Android, iOS
73
73
  */
74
74
  export interface OnProgressEvent
75
75
  extends OfflineEvent<OfflineEventType.onProgress> {
@@ -81,7 +81,7 @@ export interface OnProgressEvent
81
81
 
82
82
  /**
83
83
  * Emitted when the `OfflineContentOptions` is available after a `OfflineContentManager.getOptions` call.
84
- * @platform Android, iOS
84
+ * @remarks Platform: Android, iOS
85
85
  */
86
86
  export interface OnOptionsAvailableEvent
87
87
  extends OfflineEvent<OfflineEventType.onOptionsAvailable> {
@@ -93,42 +93,39 @@ export interface OnOptionsAvailableEvent
93
93
 
94
94
  /**
95
95
  * Emitted when the DRM license was updated.
96
- * @platform Android, iOS
96
+ * @remarks Platform: Android, iOS
97
97
  */
98
- export interface OnDrmLicenseUpdatedEvent
99
- extends OfflineEvent<OfflineEventType.onDrmLicenseUpdated> {}
98
+ export type OnDrmLicenseUpdatedEvent =
99
+ OfflineEvent<OfflineEventType.onDrmLicenseUpdated>;
100
100
 
101
101
  /**
102
102
  * Emitted when the DRM license has expired.
103
- * @platform iOS
103
+ * @remarks Platform: iOS
104
104
  */
105
- export interface OnDrmLicenseExpiredEvent
106
- extends OfflineEvent<OfflineEventType.onDrmLicenseExpired> {}
105
+ export type OnDrmLicenseExpiredEvent =
106
+ OfflineEvent<OfflineEventType.onDrmLicenseExpired>;
107
107
 
108
108
  /**
109
109
  * Emitted when all active actions have been suspended.
110
- * @platform Android, iOS
110
+ * @remarks Platform: Android, iOS
111
111
  */
112
- export interface OnSuspendedEvent
113
- extends OfflineEvent<OfflineEventType.onSuspended> {}
112
+ export type OnSuspendedEvent = OfflineEvent<OfflineEventType.onSuspended>;
114
113
 
115
114
  /**
116
115
  * Emitted when all actions have been resumed.
117
- * @platform Android, iOS
116
+ * @remarks Platform: Android, iOS
118
117
  */
119
- export interface OnResumedEvent
120
- extends OfflineEvent<OfflineEventType.onResumed> {}
118
+ export type OnResumedEvent = OfflineEvent<OfflineEventType.onResumed>;
121
119
 
122
120
  /**
123
121
  * Emitted when the download of the media content was canceled by the user and all partially downloaded content has been deleted from disk.
124
- * @platform Android, iOS
122
+ * @remarks Platform: Android, iOS
125
123
  */
126
- export interface OnCanceledEvent
127
- extends OfflineEvent<OfflineEventType.onCanceled> {}
124
+ export type OnCanceledEvent = OfflineEvent<OfflineEventType.onCanceled>;
128
125
 
129
126
  /**
130
127
  * The type aggregation for all possible native offline events received from the `DeviceEventEmitter`
131
- * @platform Android, iOS
128
+ * @remarks Platform: Android, iOS
132
129
  */
133
130
  export type BitmovinNativeOfflineEventData =
134
131
  | OnCompletedEvent
@@ -143,7 +140,7 @@ export type BitmovinNativeOfflineEventData =
143
140
 
144
141
  /**
145
142
  * The listener that can be passed to the `OfflineContentManager` to receive callbacks for different events.
146
- * @platform Android, iOS
143
+ * @remarks Platform: Android, iOS
147
144
  */
148
145
  export interface OfflineContentManagerListener {
149
146
  /**
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * Superclass of entries which can be selected to download for offline playback
3
- * @platform Android, iOS
3
+ * @remarks Platform: Android, iOS
4
4
  */
5
5
  export interface OfflineContentOptionEntry {
6
6
  /**
@@ -15,7 +15,7 @@ export interface OfflineContentOptionEntry {
15
15
 
16
16
  /**
17
17
  * Represents the downloadable options provided via the `onOptionsAvailable` callback on `OfflineContentManagerListener`
18
- * @platform Android, iOS
18
+ * @remarks Platform: Android, iOS
19
19
  */
20
20
  export interface OfflineContentOptions {
21
21
  /**
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * Represents the configuration to start a download.
3
- * @platform Android, iOS
3
+ * @remarks Platform: Android, iOS
4
4
  */
5
5
  export interface OfflineDownloadRequest {
6
6
  /**
@@ -0,0 +1,46 @@
1
+ import { NativeModule, requireNativeModule } from 'expo-modules-core';
2
+ import { SourceConfig } from '../source';
3
+ import { OfflineDownloadRequest } from './offlineDownloadRequest';
4
+ import { BitmovinNativeOfflineEventData } from './offlineContentManagerListener';
5
+
6
+ export type OfflineModuleEvents = {
7
+ onBitmovinOfflineEvent: (event: BitmovinNativeOfflineEventData) => void;
8
+ };
9
+
10
+ /**
11
+ * Native OfflineModule using Expo modules API.
12
+ * Provides modern async/await interface while maintaining backward compatibility.
13
+ */
14
+ declare class OfflineModule extends NativeModule<OfflineModuleEvents> {
15
+ initializeWithConfig(
16
+ nativeId: string,
17
+ config: { identifier: string; sourceConfig: SourceConfig },
18
+ drmNativeId: string | undefined
19
+ ): Promise<void>;
20
+
21
+ getState(nativeId: string): Promise<string>;
22
+
23
+ getOptions(nativeId: string): Promise<void>;
24
+
25
+ download(nativeId: string, request: OfflineDownloadRequest): Promise<void>;
26
+
27
+ resume(nativeId: string): Promise<void>;
28
+
29
+ suspend(nativeId: string): Promise<void>;
30
+
31
+ cancelDownload(nativeId: string): Promise<void>;
32
+
33
+ usedStorage(nativeId: string): Promise<number>;
34
+
35
+ deleteAll(nativeId: string): Promise<void>;
36
+
37
+ downloadLicense(nativeId: string): Promise<void>;
38
+
39
+ releaseLicense(nativeId: string): Promise<void>;
40
+
41
+ renewOfflineLicense(nativeId: string): Promise<void>;
42
+
43
+ release(nativeId: string): Promise<void>;
44
+ }
45
+
46
+ export default requireNativeModule<OfflineModule>('OfflineModule');
@@ -1,11 +1,11 @@
1
1
  /**
2
2
  * Object used configure how the native offline managers create and get offline source configurations
3
- * @platform Android, iOS
3
+ * @remarks Platform: Android, iOS
4
4
  */
5
5
  export interface OfflineSourceOptions {
6
6
  /**
7
7
  * Whether or not the player should restrict playback only to audio, video and subtitle tracks which are stored offline on the device. This has to be set to true if the device has no network access.
8
- * @platform iOS
8
+ * @remarks Platform: iOS
9
9
  */
10
10
  restrictedToAssetCache?: boolean;
11
11
  }
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * Contains the state an OfflineContentManager can have.
3
- * @platform Android, iOS
3
+ * @remarks Platform: Android, iOS
4
4
  */
5
5
  export enum OfflineState {
6
6
  /**
@@ -51,11 +51,10 @@ export interface PlaybackConfig {
51
51
  *
52
52
  * Default is `false`.
53
53
  *
54
- * @note
55
- * On Android, {@link MediaControlConfig.isEnabled} has to be `true` for
56
- * background playback to work.
57
- * @note
58
- * On tvOS, background playback is only supported for audio-only content.
54
+ * @remarks
55
+ * - On Android, {@link MediaControlConfig.isEnabled} has to be `true` for
56
+ * background playback to work.
57
+ * - On tvOS, background playback is only supported for audio-only content.
59
58
  *
60
59
  * @example
61
60
  * ```
@@ -84,7 +83,7 @@ export interface PlaybackConfig {
84
83
  /**
85
84
  * Configures decoder behaviour.
86
85
  *
87
- * @platform Android
86
+ * @remarks Platform: Android
88
87
  */
89
88
  decoderConfig?: DecoderConfig;
90
89
  }