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
@@ -1,263 +1,144 @@
1
1
  import BitmovinPlayer
2
+ import ExpoModulesCore
2
3
 
3
- @objc(SourceModule)
4
- public class SourceModule: NSObject, RCTBridgeModule {
5
- // swiftlint:disable:next implicitly_unwrapped_optional
6
- @objc public var bridge: RCTBridge!
7
-
4
+ public class SourceModule: Module {
8
5
  /// In-memory mapping from `nativeId`s to `Source` instances.
9
6
  private var sources: Registry<Source> = [:]
10
-
11
7
  /// In-memory mapping from `nativeId`s to `SourceConfig` instances for casting.
12
8
  private var castSourceConfigs: Registry<SourceConfig> = [:]
13
9
 
14
- // swiftlint:disable:next implicitly_unwrapped_optional
15
- public static func moduleName() -> String! {
16
- "SourceModule"
17
- }
18
-
19
- public static func requiresMainQueueSetup() -> Bool {
20
- true
21
- }
22
-
23
- // swiftlint:disable:next implicitly_unwrapped_optional
24
- public var methodQueue: DispatchQueue! {
25
- bridge.uiManager.methodQueue
26
- }
10
+ public func definition() -> ModuleDefinition {
11
+ Name("SourceModule")
12
+ OnCreate {
13
+ // Module initialization
14
+ }
15
+ OnDestroy {
16
+ sources.removeAll()
17
+ castSourceConfigs.removeAll()
18
+ }
27
19
 
28
- /**
29
- Fetches the `Source` instance associated with `nativeId` from internal sources.
30
- - Parameter nativeId: `Source` instance ID.
31
- - Returns: The associated `Source` instance or `nil`.
32
- */
33
- @objc
34
- func retrieve(_ nativeId: NativeId) -> Source? {
20
+ // MARK: - Module methods
21
+ AsyncFunction("initializeWithConfig") { [weak self] (nativeId: NativeId, drmNativeId: NativeId?, config: [String: Any]?, sourceRemoteControlConfig: [String: Any]?) in // swiftlint:disable:this line_length
22
+ self?.createSource(
23
+ nativeId: nativeId,
24
+ drmNativeId: drmNativeId,
25
+ config: config,
26
+ sourceRemoteControlConfig: sourceRemoteControlConfig
27
+ )
28
+ }.runOnQueue(.main)
29
+ AsyncFunction("initializeWithAnalyticsConfig") { [weak self] (nativeId: NativeId, drmNativeId: NativeId?, config: [String: Any]?, sourceRemoteControlConfig: [String: Any]?, analyticsSourceMetadata: [String: Any]?) in // swiftlint:disable:this line_length
30
+ self?.createSource(
31
+ nativeId: nativeId,
32
+ drmNativeId: drmNativeId,
33
+ config: config,
34
+ sourceRemoteControlConfig: sourceRemoteControlConfig,
35
+ analyticsSourceMetadata: analyticsSourceMetadata
36
+ )
37
+ }.runOnQueue(.main)
38
+ AsyncFunction("destroy") { [weak self] (nativeId: NativeId) in
39
+ self?.destroySource(nativeId: nativeId)
40
+ }.runOnQueue(.main)
41
+ AsyncFunction("isAttachedToPlayer") { [weak self] (nativeId: NativeId) -> Bool? in
42
+ self?.sources[nativeId]?.isAttachedToPlayer
43
+ }.runOnQueue(.main)
44
+ AsyncFunction("isActive") { [weak self] (nativeId: NativeId) -> Bool? in
45
+ self?.sources[nativeId]?.isActive
46
+ }.runOnQueue(.main)
47
+ AsyncFunction("duration") { [weak self] (nativeId: NativeId) -> Double? in
48
+ self?.sources[nativeId]?.duration
49
+ }.runOnQueue(.main)
50
+ AsyncFunction("loadingState") { [weak self] (nativeId: NativeId) -> Int? in
51
+ self?.sources[nativeId]?.loadingState.rawValue
52
+ }.runOnQueue(.main)
53
+ AsyncFunction("getMetadata") { [weak self] (nativeId: NativeId) -> [String: Any]? in
54
+ self?.getSourceMetadata(nativeId: nativeId)
55
+ }.runOnQueue(.main)
56
+ AsyncFunction("setMetadata") { [weak self] (nativeId: NativeId, metadata: [String: Any]?) in
57
+ self?.setSourceMetadata(nativeId: nativeId, metadata: metadata)
58
+ }.runOnQueue(.main)
59
+ AsyncFunction("getThumbnail") { [weak self] (nativeId: NativeId, time: Double) -> [String: Any]? in
60
+ self?.getSourceThumbnail(nativeId: nativeId, time: time)
61
+ }.runOnQueue(.main)
62
+ }
63
+
64
+ // MARK: - Public methods
65
+ public func retrieve(_ nativeId: NativeId) -> Source? {
35
66
  sources[nativeId]
36
67
  }
37
68
 
38
69
  // Finds `NativeId` based on predicate ran on `Source` instances
39
- func nativeId(where predicate: (Source) -> Bool) -> NativeId? {
70
+ public func nativeId(where predicate: (Source) -> Bool) -> NativeId? {
40
71
  sources.first { _, value in
41
72
  predicate(value)
42
73
  }?.key
43
74
  }
44
75
 
45
- // Fetches cast-specific `SourceConfig` by `NativeId` if exists
46
- func retrieveCastSourceConfig(_ nativeId: NativeId) -> SourceConfig? {
76
+ public func retrieveCastSourceConfig(_ nativeId: NativeId) -> SourceConfig? {
47
77
  castSourceConfigs[nativeId]
48
78
  }
49
79
 
50
- /**
51
- Creates a new `Source` instance inside the internal sources using the provided `config`
52
- and `analyticsSourceMetadata` object and an optionally initialized DRM configuration ID.
53
- - Parameter nativeId: ID to be associated with the `Source` instance.
54
- - Parameter drmNativeId: ID of the DRM config object to use.
55
- - Parameter config: `SourceConfig` object received from JS.
56
- - Parameter analyticsSourceMetadata: `SourceMetadata` object received from JS.
57
- - Parameter sourceRemoteControlConfig: `SourceRemoteControlConfig` object received from JS.
58
- */
59
- @objc(initWithAnalyticsConfig:drmNativeId:config:sourceRemoteControlConfig:analyticsSourceMetadata:)
60
- func initWithAnalyticsConfig(
61
- _ nativeId: NativeId,
62
- drmNativeId: NativeId?,
63
- config: Any?,
64
- sourceRemoteControlConfig: Any?,
65
- analyticsSourceMetadata: Any?
66
- ) {
67
- bridge.uiManager.addUIBlock { [weak self] _, _ in
68
- let drmConfig: DrmConfig?
69
- if let drmNativeId {
70
- drmConfig = self?.getDrmModule()?.retrieve(drmNativeId)
71
- } else {
72
- drmConfig = nil
73
- }
74
-
75
- guard
76
- self?.sources[nativeId] == nil,
77
- let sourceConfig = RCTConvert.sourceConfig(config, drmConfig: drmConfig),
78
- let sourceMetadata = RCTConvert.analyticsSourceMetadata(analyticsSourceMetadata)
79
- else {
80
- return
81
- }
82
- self?.sources[nativeId] = SourceFactory.create(from: sourceConfig, sourceMetadata: sourceMetadata)
83
- #if os(iOS)
84
- if let remoteConfig = RCTConvert.sourceRemoteControlConfig(sourceRemoteControlConfig) {
85
- self?.castSourceConfigs[nativeId] = remoteConfig.castSourceConfig
86
- }
87
- #endif
88
- }
89
- }
90
-
91
- /**
92
- Creates a new `Source` instance inside the internal sources using
93
- the provided `config` object and an initialized DRM configuration ID.
94
- - Parameter nativeId: ID to be associated with the `Source` instance.
95
- - Parameter drmNativeId: ID of the DRM config object to use.
96
- - Parameter config: `SourceConfig` object received from JS.
97
- - Parameter sourceRemoteControlConfig: `SourceRemoteControlConfig` object received from JS.
98
- */
99
- @objc(initWithConfig:drmNativeId:config:sourceRemoteControlConfig:)
100
- func initWithConfig(
101
- _ nativeId: NativeId,
102
- drmNativeId: NativeId?,
103
- config: Any?,
104
- sourceRemoteControlConfig: Any?
105
- ) {
106
- bridge.uiManager.addUIBlock { [weak self] _, _ in
107
- let drmConfig: DrmConfig?
108
- if let drmNativeId {
109
- drmConfig = self?.getDrmModule()?.retrieve(drmNativeId)
110
- } else {
111
- drmConfig = nil
112
- }
113
-
114
- guard
115
- self?.sources[nativeId] == nil,
116
- let sourceConfig = RCTConvert.sourceConfig(config, drmConfig: drmConfig)
117
- else {
118
- return
119
- }
120
- self?.sources[nativeId] = SourceFactory.create(from: sourceConfig)
121
- #if os(iOS)
122
- if let remoteConfig = RCTConvert.sourceRemoteControlConfig(sourceRemoteControlConfig) {
123
- self?.castSourceConfigs[nativeId] = remoteConfig.castSourceConfig
124
- }
125
- #endif
126
- }
127
- }
128
-
129
- /// Fetches the initialized `DrmModule` instance on RN's bridge object.
130
- private func getDrmModule() -> DrmModule? {
131
- bridge.module(for: DrmModule.self) as? DrmModule
132
- }
133
-
134
- /**
135
- Removes the `Source` instance associated with `nativeId` from `sources`.
136
- - Parameter nativeId: Instance to be disposed.
137
- */
138
- @objc(destroy:)
139
- func destroy(_ nativeId: NativeId) {
140
- sources.removeValue(forKey: nativeId)
141
- castSourceConfigs.removeValue(forKey: nativeId)
80
+ // MARK: - Private methods
81
+ private func getSourceMetadata(nativeId: NativeId) -> [String: Any]? {
82
+ sources[nativeId]?.metadata
142
83
  }
143
84
 
144
- /**
145
- Whether `nativeId` source is currently attached to a player instance.
146
- - Parameter nativeId: Source `nativeId`.
147
- - Parameter resolver: JS promise resolver.
148
- - Parameter rejecter: JS promise rejecter.
149
- */
150
- @objc(isAttachedToPlayer:resolver:rejecter:)
151
- func isAttachedToPlayer(
152
- _ nativeId: NativeId,
153
- resolver resolve: @escaping RCTPromiseResolveBlock,
154
- rejecter reject: @escaping RCTPromiseRejectBlock
155
- ) {
156
- bridge.uiManager.addUIBlock { [weak self] _, _ in
157
- resolve(self?.sources[nativeId]?.isAttachedToPlayer)
85
+ private func setSourceMetadata(nativeId: NativeId, metadata: [String: Any]?) {
86
+ guard let metadata else {
87
+ sources[nativeId]?.metadata = nil
88
+ return
158
89
  }
90
+ let metadataObjects = metadata as [String: AnyObject]
91
+ sources[nativeId]?.metadata = metadataObjects
159
92
  }
160
93
 
161
- /**
162
- Whether `nativeId` source is currently active in a `Player`.
163
- - Parameter nativeId: Source `nativeId`.
164
- - Parameter resolver: JS promise resolver.
165
- - Parameter rejecter: JS promise rejecter.
166
- */
167
- @objc(isActive:resolver:rejecter:)
168
- func isActive(
169
- _ nativeId: NativeId,
170
- resolver resolve: @escaping RCTPromiseResolveBlock,
171
- rejecter reject: @escaping RCTPromiseRejectBlock
172
- ) {
173
- bridge.uiManager.addUIBlock { [weak self] _, _ in
174
- resolve(self?.sources[nativeId]?.isActive)
94
+ private func getSourceThumbnail(nativeId: NativeId, time: Double) -> [String: Any]? {
95
+ guard let thumbnail = sources[nativeId]?.thumbnail(forTime: time) else {
96
+ return nil
175
97
  }
98
+ return RCTConvert.toJson(thumbnail: thumbnail)
176
99
  }
177
100
 
178
- /**
179
- The duration of `nativeId` source in seconds.
180
- - Parameter nativeId: Source `nativeId`.
181
- - Parameter resolver: JS promise resolver.
182
- - Parameter rejecter: JS promise rejecter.
183
- */
184
- @objc(duration:resolver:rejecter:)
185
- func duration(
186
- _ nativeId: NativeId,
187
- resolver resolve: @escaping RCTPromiseResolveBlock,
188
- rejecter reject: @escaping RCTPromiseRejectBlock
101
+ private func createSource(
102
+ nativeId: NativeId,
103
+ drmNativeId: NativeId?,
104
+ config: [String: Any]?,
105
+ sourceRemoteControlConfig: [String: Any]?,
106
+ analyticsSourceMetadata: [String: Any]? = nil
189
107
  ) {
190
- bridge.uiManager.addUIBlock { [weak self] _, _ in
191
- resolve(self?.sources[nativeId]?.duration)
108
+ guard sources[nativeId] == nil else {
109
+ // Source already exists
110
+ return
192
111
  }
193
- }
194
-
195
- /**
196
- The current loading state of `nativeId` source.
197
- - Parameter nativeId: Source `nativeId`.
198
- - Parameter resolver: JS promise resolver.
199
- - Parameter rejecter: JS promise rejecter.
200
- */
201
- @objc(loadingState:resolver:rejecter:)
202
- func loadingState(
203
- _ nativeId: NativeId,
204
- resolver resolve: @escaping RCTPromiseResolveBlock,
205
- rejecter reject: @escaping RCTPromiseRejectBlock
206
- ) {
207
- bridge.uiManager.addUIBlock { [weak self] _, _ in
208
- resolve(self?.sources[nativeId]?.loadingState)
112
+ // Get DRM config if provided
113
+ let drmModule = appContext?.moduleRegistry.get(DrmModule.self)
114
+ let drmConfig = drmNativeId.flatMap { drmModule?.retrieve($0) }
115
+ guard let sourceConfig = RCTConvert.sourceConfig(config, drmConfig: drmConfig) else {
116
+ return
209
117
  }
210
- }
211
-
212
- /**
213
- Metadata for the currently loaded `nativeId` source.
214
- - Parameter nativeId: Source `nativeId`.
215
- - Parameter resolver: JS promise resolver.
216
- - Parameter rejecter: JS promise rejecter.
217
- */
218
- @objc(getMetadata:resolver:rejecter:)
219
- func getMetadata(
220
- _ nativeId: NativeId,
221
- resolver resolve: @escaping RCTPromiseResolveBlock,
222
- rejecter reject: @escaping RCTPromiseRejectBlock
223
- ) {
224
- bridge.uiManager.addUIBlock { [weak self] _, _ in
225
- resolve(self?.sources[nativeId]?.metadata)
118
+ // Add analytics metadata if provided
119
+ let sourceMetadata = RCTConvert.analyticsSourceMetadata(analyticsSourceMetadata)
120
+
121
+ let source: Source
122
+ if let sourceMetadata {
123
+ source = SourceFactory.createSource(from: sourceConfig, sourceMetadata: sourceMetadata)
124
+ } else {
125
+ source = SourceFactory.createSource(from: sourceConfig)
226
126
  }
227
- }
228
-
229
- /**
230
- Set the metadata for a loaded `nativeId` source.
231
- - Parameter nativeId: Source `nativeId`.
232
- - Parameter resolver: JS promise resolver.
233
- - Parameter rejecter: JS promise rejecter.
234
- */
235
- @objc(setMetadata:metadata:)
236
- func setMetadata(_ nativeId: NativeId, metadata: Any?) {
237
- bridge.uiManager.addUIBlock { [weak self] _, _ in
238
- guard let metadata = metadata as? [String: AnyObject] else {
239
- return
240
- }
241
- self?.sources[nativeId]?.metadata = metadata
127
+ sources[nativeId] = source
128
+ // Store cast source config if provided
129
+ #if os(iOS)
130
+ if let remoteConfig = RCTConvert.sourceRemoteControlConfig(sourceRemoteControlConfig) {
131
+ castSourceConfigs[nativeId] = remoteConfig.castSourceConfig
242
132
  }
133
+ #endif
243
134
  }
244
135
 
245
136
  /**
246
- Returns the thumbnail image for the `Source` at a certain time.
247
- - Parameter nativeId: Target player id.
248
- - Parameter resolver: JS promise resolver.
249
- - Parameter rejecter: JS promise rejecter.
137
+ Destroys the source instance with the given `nativeId`.
250
138
  */
251
- @objc(getThumbnail:time:resolver:rejecter:)
252
- func getThumbnail(
253
- _ nativeId: NativeId,
254
- time: NSNumber,
255
- resolver resolve: @escaping RCTPromiseResolveBlock,
256
- rejecter reject: @escaping RCTPromiseRejectBlock
257
- ) {
258
- bridge.uiManager.addUIBlock { [weak self] _, _ in
259
- resolve(RCTConvert.toJson(thumbnail: self?.sources[nativeId]?.thumbnail(forTime: time.doubleValue)))
260
- }
139
+ private func destroySource(nativeId: NativeId) {
140
+ sources.removeValue(forKey: nativeId)
141
+ castSourceConfigs.removeValue(forKey: nativeId)
261
142
  }
262
143
  }
263
144
 
@@ -1,24 +1,15 @@
1
+ import ExpoModulesCore
2
+ import Foundation
3
+
1
4
  /**
2
5
  Native module for easy and fast unique ID generation on JS side. Used to generate native instance IDs.
3
6
  */
4
- @objc(UuidModule)
5
- public class UuidModule: NSObject, RCTBridgeModule {
6
- /// Initialize this module on main thread.
7
- public static func requiresMainQueueSetup() -> Bool {
8
- true
9
- }
10
-
11
- // swiftlint:disable:next implicitly_unwrapped_optional
12
- public static func moduleName() -> String! {
13
- "UuidModule"
14
- }
7
+ public class UuidModule: Module {
8
+ public func definition() -> ModuleDefinition {
9
+ Name("UuidModule")
15
10
 
16
- /**
17
- Synchronously generate a random UUIDv4.
18
- - Returns: Random UUID RFC 4122 version 4.
19
- */
20
- @objc
21
- public func generate() -> String {
22
- UUID().uuidString
11
+ Function("generate") { () -> String in
12
+ UUID().uuidString
13
+ }
23
14
  }
24
15
  }
package/package.json CHANGED
@@ -1,100 +1,96 @@
1
1
  {
2
2
  "name": "bitmovin-player-react-native",
3
- "version": "0.44.1-alpha.0",
3
+ "version": "1.0.0-alpha.0",
4
4
  "description": "Official React Native bindings for Bitmovin's mobile Player SDKs.",
5
- "main": "lib/index.js",
6
- "module": "lib/index.mjs",
7
- "types": "lib/index.d.ts",
8
- "source": "src/index.ts",
9
- "react-native": "src/index.ts",
10
- "author": "Bitmovin GmbH",
11
- "files": [
12
- "src",
13
- "lib",
14
- "android",
15
- "ios",
16
- "cpp",
17
- "*.podspec",
18
- "!android/build",
19
- "!ios/build",
20
- "!android/build",
21
- "!android/gradle",
22
- "!android/gradlew",
23
- "!android/gradlew.bat",
24
- "!android/local.properties",
25
- "!**/__tests__",
26
- "!**/__fixtures__",
27
- "!**/__mocks__",
28
- "!**/.*"
29
- ],
5
+ "main": "build/index.js",
6
+ "types": "build/index.d.ts",
30
7
  "scripts": {
31
- "test": "jest",
32
- "typescript": "tsc --noEmit",
33
- "lint": "eslint --max-warnings=0 -- \"**/*.{ts,tsx}\"",
34
- "format": "prettier --write .",
35
- "build": "tsup ./src/index.ts --dts --target es2020 --format cjs,esm -d lib",
8
+ "build": "yarn build:module && yarn build:plugin",
9
+ "build:module": "EXPO_NONINTERACTIVE=true expo-module build",
10
+ "build:plugin": "EXPO_NONINTERACTIVE=true expo-module build plugin",
11
+ "dev:plugin": "expo-module build plugin",
12
+ "clean": "expo-module clean",
13
+ "lint": "expo-module lint",
14
+ "lint:all": "yarn lint && yarn example lint && yarn lint:ios && yarn lint:android",
15
+ "lint:all-with-tests": "yarn lint && yarn example lint && yarn integration-test lint && yarn lint:ios && yarn lint:android",
16
+ "typecheck": "tsc --noEmit",
17
+ "typecheck:all": "yarn typecheck && yarn example typecheck && yarn integration-test typecheck",
18
+ "format": "prettier --write '**/*.{ts,tsx,js,jsx,md,json,yml,yaml}'",
19
+ "format:ios": "./scripts/format-swift.sh",
20
+ "format:android": "./scripts/format-android.sh",
21
+ "format:all": "yarn format && yarn format:ios && yarn format:android",
22
+ "setup-hooks": "./scripts/setup-hooks.sh",
23
+ "lint:ios": "swiftlint ios --strict --quiet",
24
+ "lint:android": "cd android && ./gradlew -b ktlint.gradle ktlintCheck --quiet --console=plain",
25
+ "prepare": "expo-module prepare",
26
+ "prepublishOnly": "expo-module prepublishOnly",
27
+ "module": "expo-module",
36
28
  "example": "yarn --cwd example",
37
- "integration-test": "yarn --cwd integration_test",
38
- "pods": "yarn example pods && yarn integration-test pods",
39
- "bootstrap": "yarn bootstrap:example && yarn bootstrap:integration-test",
40
- "bootstrap:example": "yarn && yarn example && yarn example pods && yarn brew",
41
- "bootstrap:integration-test": "yarn && yarn integration-test && yarn integration-test pods && yarn brew",
29
+ "open:ios": "yarn example open:ios",
30
+ "open:android": "yarn example open:android",
42
31
  "brew": "[ \"$(uname)\" != Darwin ] || brew bundle install",
43
- "prepare": "husky install",
44
- "docs": "typedoc"
32
+ "docs": "typedoc",
33
+ "pods": "yarn example pods #&& yarn integration-test pods",
34
+ "bootstrap": "yarn brew && yarn build && yarn example bootstrap && yarn integration-test bootstrap && yarn setup-hooks",
35
+ "integration-test": "yarn --cwd integration_test"
45
36
  },
46
37
  "keywords": [
47
38
  "react-native",
39
+ "expo",
40
+ "bitmovin-player-react-native",
48
41
  "ios",
49
42
  "android",
43
+ "tvos",
44
+ "androidtv",
50
45
  "bitmovin",
51
46
  "player",
52
47
  "video",
53
48
  "streaming"
54
49
  ],
55
- "license": "MIT",
56
- "homepage": "https://bitmovin.com/video-player/react-native-sdk",
57
50
  "repository": {
58
51
  "type": "git",
59
52
  "url": "https://github.com/bitmovin/bitmovin-player-react-native"
60
53
  },
54
+ "author": "Bitmovin GmbH <player-sdks@bitmovin.com> (https://github.com/bitmovin)",
55
+ "license": "MIT",
56
+ "homepage": "https://bitmovin.com/video-player/react-native-sdk",
57
+ "dependencies": {
58
+ "@expo/config-plugins": "~10.1.2",
59
+ "expo-keep-awake": "~14.1.4"
60
+ },
61
61
  "devDependencies": {
62
- "@babel/core": "7.22.10",
63
- "@babel/preset-env": "7.22.10",
64
- "@babel/runtime": "7.22.10",
65
- "@react-native-community/eslint-config": "3.1.0",
66
- "@react-native/babel-preset": "0.73.18",
67
- "@types/jest": "^28.1.2",
68
- "@types/lodash.omit": "4.5.0",
69
- "@types/react": "~18.2.26",
70
- "babel-plugin-module-resolver": "5.0.0",
71
- "eslint": "8.24.0",
72
- "eslint-config-prettier": "8.5.0",
73
- "eslint-plugin-prettier": "4.2.1",
74
- "husky": "8.0.1",
75
- "jest": "^29.6.3",
62
+ "@babel/core": "^7.28.0",
63
+ "@types/react": "~19.0.10",
64
+ "eslint": "^8.57.0",
65
+ "eslint-config-expo": "~9.2.0",
66
+ "eslint-config-prettier": "^9.1.0",
67
+ "eslint-plugin-prettier": "^5.5.1",
68
+ "expo": "53.0.20",
69
+ "expo-module-scripts": "^4.1.9",
76
70
  "lint-staged": "13.0.3",
77
- "metro-config": "0.73.4",
78
- "postinstall-postinstall": "^2.1.0",
79
- "prettier": "2.7.1",
80
- "react": "18.2.0",
81
- "react-native": "0.73.4",
82
- "tsup": "7.2.0",
83
- "typedoc": "^0.25.2",
84
- "typescript": "5.0.2"
85
- },
86
- "resolutions": {
87
- "@types/react": "17.0.21"
88
- },
89
- "dependencies": {
90
- "lodash.omit": "4.5.0"
71
+ "prettier": "^3.6.2",
72
+ "react": "19.0.0",
73
+ "react-native": "0.79.5",
74
+ "typedoc": "^0.28.7",
75
+ "typescript": "~5.8.3"
91
76
  },
92
77
  "peerDependencies": {
93
- "react": ">=17",
94
- "react-native": ">=0.65"
78
+ "expo": ">=53.0.0",
79
+ "react": "*",
80
+ "react-native": "*"
95
81
  },
96
82
  "lint-staged": {
97
- "*.(ts|tsx)": "eslint",
83
+ "src/**/*.(ts|tsx)": "eslint --quiet",
84
+ "example/src/**/*.(ts|tsx)": "eslint --quiet --config example/.eslintrc.js",
85
+ "integration_test/{src,playertesting,tests}/**/*.(ts|tsx)": "eslint --quiet --config integration_test/.eslintrc.js",
86
+ "ios/**/*.swift": [
87
+ "./scripts/format-swift.sh",
88
+ "./scripts/lint-swift.sh"
89
+ ],
90
+ "android/**/*.kt": [
91
+ "./scripts/format-android.sh",
92
+ "./scripts/lint-android.sh"
93
+ ],
98
94
  "*.(ts|tsx|js|jsx|md|json|yml|yaml)": "prettier --write"
99
95
  }
100
96
  }
@@ -0,0 +1,24 @@
1
+ export default interface FeatureFlags {
2
+ airPlay?: boolean;
3
+ backgroundPlayback?: boolean;
4
+ googleCastSDK?: {
5
+ android: string | {
6
+ version: string;
7
+ };
8
+ ios: string | {
9
+ version: string;
10
+ appId?: string;
11
+ localNetworkUsageDescription?: string;
12
+ };
13
+ };
14
+ offline?: boolean | {
15
+ android?: {
16
+ isEnabled: boolean;
17
+ externalStoragePermission?: boolean;
18
+ };
19
+ ios?: {
20
+ isEnabled: boolean;
21
+ };
22
+ };
23
+ pictureInPicture?: boolean;
24
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,7 @@
1
+ import FeatureFlags from './FeatureFlags';
2
+ export { FeatureFlags };
3
+ declare const _default: import("expo/config-plugins").ConfigPlugin<{
4
+ playerLicenseKey: string;
5
+ featureFlags: FeatureFlags;
6
+ }>;
7
+ export default _default;
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const config_plugins_1 = require("expo/config-plugins");
7
+ const withBitmovinConfig_1 = __importDefault(require("./withBitmovinConfig"));
8
+ // Keeping the name, and version in sync with it's package.
9
+ const pkg = require('../../package.json');
10
+ exports.default = (0, config_plugins_1.createRunOncePlugin)(withBitmovinConfig_1.default, pkg.name, pkg.version);
@@ -0,0 +1,7 @@
1
+ import { ConfigPlugin } from 'expo/config-plugins';
2
+ export type PluginProps = {
3
+ spacing?: string;
4
+ dependencies?: string[];
5
+ };
6
+ declare const withAppGradleDependencies: ConfigPlugin<PluginProps>;
7
+ export default withAppGradleDependencies;