From c0aa3d6453d484c862de3ad55a1dc6fc64f132bf Mon Sep 17 00:00:00 2001 From: Krzysztof Moch Date: Mon, 4 Mar 2024 09:48:20 +0100 Subject: [PATCH 01/10] docs: add new architecture docs section (#3558) --- docs/pages/other/_meta.json | 3 ++- docs/pages/other/new-arch.md | 25 +++++++++++++++++++++++++ 2 files changed, 27 insertions(+), 1 deletion(-) create mode 100644 docs/pages/other/new-arch.md diff --git a/docs/pages/other/_meta.json b/docs/pages/other/_meta.json index ca7f665829..2280f45834 100644 --- a/docs/pages/other/_meta.json +++ b/docs/pages/other/_meta.json @@ -1,5 +1,6 @@ { "caching": "Caching", "misc": "Misc", - "debug": "Debugging" + "debug": "Debugging", + "new-arch": "New Architecture" } \ No newline at end of file diff --git a/docs/pages/other/new-arch.md b/docs/pages/other/new-arch.md new file mode 100644 index 0000000000..fb761663d0 --- /dev/null +++ b/docs/pages/other/new-arch.md @@ -0,0 +1,25 @@ +# New Architecture + +## Fabric +Library currently does not support Fabric. We are working on it. In the meantime, you can use Interop Layer. + +## Interop Layer +You can use this library on New Architecture by using Interop Layer.
To use Interop Layer you need to have `react-native` >= `0.72.0` & `react-native-video` >= `6.0.0-beta.5`. + +For `react-native` < `0.74` you need to add config in `react-native.config.js` file. + +```javascript +module.exports = { + project: { + android: { + unstable_reactLegacyComponentNames: ['Video'], + }, + ios: { + unstable_reactLegacyComponentNames: ['Video'], + }, + }, +}; +``` + +## Bridgeless Mode +Library currently does not support Bridgeless Mode. We are working on it. From b73baad2c2c0c6ea701d865eee32d4e94ae58178 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ga=C3=ABtan=20Kueny?= Date: Mon, 4 Mar 2024 10:43:33 +0100 Subject: [PATCH 02/10] fix(ios): add text tracks only if we successfully insertTimeRage (#3557) insertTimeRage can fail & if we add failed textTrack to our validTextTracks array, video can crash later on selectTextTrack we also add en empty textTrack only we we have validTextTrack related to https://github.com/react-native-video/react-native-video/issues/3480 --- ios/Video/Features/RCTVideoUtils.swift | 27 +++++++++++++++++--------- 1 file changed, 18 insertions(+), 9 deletions(-) diff --git a/ios/Video/Features/RCTVideoUtils.swift b/ios/Video/Features/RCTVideoUtils.swift index 3a1011e67b..9fd6bec82d 100644 --- a/ios/Video/Features/RCTVideoUtils.swift +++ b/ios/Video/Features/RCTVideoUtils.swift @@ -299,23 +299,32 @@ enum RCTVideoUtils { if let textTracks { for i in 0 ..< tracks.count { guard let track = tracks[i]?.first else { continue } // fix when there's no textTrackAsset - validTextTracks.append(textTracks[i]) let textCompTrack: AVMutableCompositionTrack! = mixComposition.addMutableTrack(withMediaType: AVMediaType.text, preferredTrackID: kCMPersistentTrackID_Invalid) - try? textCompTrack.insertTimeRange( - CMTimeRangeMake(start: .zero, duration: videoAsset.timeRange.duration), - of: track, - at: .zero - ) + + do { + try textCompTrack.insertTimeRange( + CMTimeRangeMake(start: .zero, duration: videoAsset.timeRange.duration), + of: track, + at: .zero + ) + validTextTracks.append(textTracks[i]) + } catch { + // TODO: upgrade error by call some props callback to better inform user + print("Error occurred on textTrack insert attempt: \(error.localizedDescription)") + continue + } } } return }.then { - let emptyVttFile: TextTrack? = self.createEmptyVttFile() - if emptyVttFile != nil { - validTextTracks.append(emptyVttFile!) + if !validTextTracks.isEmpty { + let emptyVttFile: TextTrack? = self.createEmptyVttFile() + if emptyVttFile != nil { + validTextTracks.append(emptyVttFile!) + } } fulfill(validTextTracks) From ba00881ddcd53c2f5a4e1fc6e30cb5eb7ef674a3 Mon Sep 17 00:00:00 2001 From: Tarun Chauhan Date: Tue, 5 Mar 2024 23:27:58 +0530 Subject: [PATCH 03/10] fix: add missing shutterColor type (#3561) --- docs/pages/component/props.md | 2 +- src/VideoNativeComponent.ts | 1 + src/types/video.ts | 1 + 3 files changed, 3 insertions(+), 1 deletion(-) diff --git a/docs/pages/component/props.md b/docs/pages/component/props.md index e4ecb97473..6ad99bae1a 100644 --- a/docs/pages/component/props.md +++ b/docs/pages/component/props.md @@ -47,7 +47,7 @@ This page shows the list of available properties to configure player | [selectedAudioTrack](#selectedaudiotrack) | Android, iOS, visionOS | | [selectedTextTrack](#selectedtexttrack) | Android, iOS visionOS | | [selectedVideoTrack](#selectedvideotrack) | Android | -| [shutterColor](#shutterColor) | Android | +| [shutterColor](#shuttercolor) | Android | | [source](#source) | All | | [subtitleStyle](#subtitlestyle) | Android | | [textTracks](#texttracks) | Android, iOS, visionOS | diff --git a/src/VideoNativeComponent.ts b/src/VideoNativeComponent.ts index f173a761e6..b5c9b98223 100644 --- a/src/VideoNativeComponent.ts +++ b/src/VideoNativeComponent.ts @@ -314,6 +314,7 @@ export interface VideoNativeProps extends ViewProps { reportBandwidth?: boolean; //Android selectedVideoTrack?: SelectedVideoTrack; // android subtitleStyle?: SubtitleStyle; // android + shutterColor?: string; // Android trackId?: string; // Android useTextureView?: boolean; // Android useSecureView?: boolean; // Android diff --git a/src/types/video.ts b/src/types/video.ts index 415c69c530..c23954593b 100644 --- a/src/types/video.ts +++ b/src/types/video.ts @@ -221,6 +221,7 @@ export interface ReactVideoProps extends ReactVideoEvents, ViewProps { selectedTextTrack?: SelectedTrack; selectedVideoTrack?: SelectedVideoTrack; // android subtitleStyle?: SubtitleStyle; // android + shutterColor?: string; // Android textTracks?: TextTracks; testID?: string; trackId?: string; // Android From 16f3cdbd9a7864206feaeef29344c09792d66d56 Mon Sep 17 00:00:00 2001 From: jerrylc <99468319+jerrylcliu@users.noreply.github.com> Date: Thu, 7 Mar 2024 06:55:44 +0800 Subject: [PATCH 04/10] fix(ios): current release volume change observer (#3565) Co-authored-by: jerrylc.liu --- ios/Video/Features/RCTPlayerObserver.swift | 1 + 1 file changed, 1 insertion(+) diff --git a/ios/Video/Features/RCTPlayerObserver.swift b/ios/Video/Features/RCTPlayerObserver.swift index a11dcfec2c..c1c93262f2 100644 --- a/ios/Video/Features/RCTPlayerObserver.swift +++ b/ios/Video/Features/RCTPlayerObserver.swift @@ -140,6 +140,7 @@ class RCTPlayerObserver: NSObject, AVPlayerItemMetadataOutputPushDelegate, AVPla func removePlayerObservers() { _playerRateChangeObserver?.invalidate() _playerExternalPlaybackActiveObserver?.invalidate() + _playerVolumeChangeObserver?.invalidate() } func addPlayerItemObservers() { From b33e6df496265270211bf59eca27155810b98069 Mon Sep 17 00:00:00 2001 From: yungblud Date: Thu, 7 Mar 2024 19:35:17 +0900 Subject: [PATCH 05/10] Fabric (New Architecture) codegen support (#3487) * feat: implemented codegenConfig on package.json * chore: moved directory location of Fabric component * fix: typefix FabricExample * chore: pod instaslled FabricExample iOS app * feat: implemented codegen config on package.json * feat: implemented codegen of specs/VideoNativeComponent * chore: removed not using type Filter * feat: removed unnecessary export on codegen tyepes * Revert "feat: removed unnecessary export on codegen tyepes" This reverts commit fc243b0ac5c565eda4886cd865c32ba4e812d7ff. * refactor: fixed types on Video component and modified types with codegen types * feat: modified codegenNativeComponent naming (RCTVideo) * feat: pod installed example basic app * feat: bump up react-native dev dependency version to 0.73.2 for supporting codegen array event params * feat: support array param types on event callback function codegen types * chore: pod installed ios basic example * feat: modified source prop as optional type * feat: add original src/VideoComponent.ts again * Revert "feat: add original src/VideoComponent.ts again" This reverts commit d63ac94e5330f7c7fb50374f65f8f3f4e0a225d7. * feat: add original src/VideoComponent.ts again with original file name * feat: git rm src/specs/VideoNativeComponent.ts * feat: git mv VideoNativeComponent.ts * feat: git mv src/specs/VideoNativeComponent.ts * feat: git mv src/VideoNativeComponent.ts src/specs/VideoNativeComponent.ts * feat: implemented array type handling on android JAVA * feat: updated iOS requestHeaders parsing native * feat: use safeGetArray on android, removed not using import too * feat: temporary commit - reusing enum types for remaining docs types * feat: implemented mixed type of SelectedTrack.value for JS layer --- .../exoplayer/ReactExoplayerViewManager.java | 29 +- .../FabricExample.xcodeproj/project.pbxproj | 13 + examples/FabricExample/ios/Podfile.lock | 1116 ++++++++--------- examples/FabricExample/src/VideoPlayer.tsx | 67 +- examples/FabricExample/tsconfig.json | 5 +- examples/basic/ios/Podfile.lock | 12 +- .../ios/videoplayer.xcodeproj/project.pbxproj | 30 +- ios/Video/DataStructures/VideoSource.swift | 12 +- package.json | 12 +- src/Video.tsx | 70 +- src/VideoNativeComponent.ts | 418 ------ src/index.ts | 2 +- src/specs/VideoNativeComponent.ts | 567 +++++++++ src/types/events.ts | 182 +-- src/types/index.ts | 1 + src/utils.ts | 8 + 16 files changed, 1325 insertions(+), 1219 deletions(-) delete mode 100644 src/VideoNativeComponent.ts create mode 100644 src/specs/VideoNativeComponent.ts diff --git a/android/src/main/java/com/brentvatne/exoplayer/ReactExoplayerViewManager.java b/android/src/main/java/com/brentvatne/exoplayer/ReactExoplayerViewManager.java index 8536bc2b5c..ee69b28d45 100644 --- a/android/src/main/java/com/brentvatne/exoplayer/ReactExoplayerViewManager.java +++ b/android/src/main/java/com/brentvatne/exoplayer/ReactExoplayerViewManager.java @@ -18,7 +18,6 @@ import com.facebook.react.bridge.Dynamic; import com.facebook.react.bridge.ReadableArray; import com.facebook.react.bridge.ReadableMap; -import com.facebook.react.bridge.ReadableMapKeySetIterator; import com.facebook.react.common.MapBuilder; import com.facebook.react.uimanager.ThemedReactContext; import com.facebook.react.uimanager.ViewGroupManager; @@ -128,18 +127,19 @@ public void setDRM(final ReactExoplayerView videoView, @Nullable ReadableMap drm if (drm != null && drm.hasKey(PROP_DRM_TYPE)) { String drmType = ReactBridgeUtils.safeGetString(drm, PROP_DRM_TYPE); String drmLicenseServer = ReactBridgeUtils.safeGetString(drm, PROP_DRM_LICENSESERVER); - ReadableMap drmHeaders = ReactBridgeUtils.safeGetMap(drm, PROP_DRM_HEADERS); + ReadableArray drmHeadersArray = ReactBridgeUtils.safeGetArray(drm, PROP_DRM_HEADERS); if (drmType != null && drmLicenseServer != null && Util.getDrmUuid(drmType) != null) { UUID drmUUID = Util.getDrmUuid(drmType); videoView.setDrmType(drmUUID); videoView.setDrmLicenseUrl(drmLicenseServer); - if (drmHeaders != null) { + if (drmHeadersArray != null) { ArrayList drmKeyRequestPropertiesList = new ArrayList<>(); - ReadableMapKeySetIterator itr = drmHeaders.keySetIterator(); - while (itr.hasNextKey()) { - String key = itr.nextKey(); + for (int i = 0; i < drmHeadersArray.size(); i++) { + ReadableMap current = drmHeadersArray.getMap(i); + String key = current.hasKey("key") ? current.getString("key") : null; + String value = current.hasKey("value") ? current.getString("value") : null; drmKeyRequestPropertiesList.add(key); - drmKeyRequestPropertiesList.add(drmHeaders.getString(key)); + drmKeyRequestPropertiesList.add(value); } videoView.setDrmLicenseHeader(drmKeyRequestPropertiesList.toArray(new String[0])); } @@ -157,7 +157,20 @@ public void setSrc(final ReactExoplayerView videoView, @Nullable ReadableMap src int cropEndMs = ReactBridgeUtils.safeGetInt(src, PROP_SRC_CROP_END, -1); String extension = ReactBridgeUtils.safeGetString(src, PROP_SRC_TYPE, null); - Map headers = src.hasKey(PROP_SRC_HEADERS) ? ReactBridgeUtils.toStringMap(src.getMap(PROP_SRC_HEADERS)) : new HashMap<>(); + Map headers = new HashMap<>(); + ReadableArray propSrcHeadersArray = ReactBridgeUtils.safeGetArray(src, PROP_SRC_HEADERS); + if (propSrcHeadersArray != null) { + if (propSrcHeadersArray.size() > 0) { + for (int i = 0; i < propSrcHeadersArray.size(); i++) { + ReadableMap current = propSrcHeadersArray.getMap(i); + String key = current.hasKey("key") ? current.getString("key") : null; + String value = current.hasKey("value") ? current.getString("value") : null; + if (key != null && value != null) { + headers.put(key, value); + } + } + } + } if (TextUtils.isEmpty(uriString)) { videoView.clearSrc(); diff --git a/examples/FabricExample/ios/FabricExample.xcodeproj/project.pbxproj b/examples/FabricExample/ios/FabricExample.xcodeproj/project.pbxproj index 7a06998065..8ef48fc2d8 100644 --- a/examples/FabricExample/ios/FabricExample.xcodeproj/project.pbxproj +++ b/examples/FabricExample/ios/FabricExample.xcodeproj/project.pbxproj @@ -571,6 +571,7 @@ GCC_PREPROCESSOR_DEFINITIONS = ( "DEBUG=1", "$(inherited)", + _LIBCPP_ENABLE_CXX17_REMOVED_UNARY_BINARY_FUNCTION, ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; GCC_WARN_64_TO_32_BIT_CONVERSION = YES; @@ -597,6 +598,10 @@ "-DFOLLY_MOBILE=1", "-DFOLLY_USE_LIBCPP=1", ); + OTHER_LDFLAGS = ( + "$(inherited)", + " ", + ); REACT_NATIVE_PATH = "${PODS_ROOT}/../../node_modules/react-native"; SDKROOT = iphoneos; }; @@ -638,6 +643,10 @@ "EXCLUDED_ARCHS[sdk=iphonesimulator*]" = i386; GCC_C_LANGUAGE_STANDARD = gnu99; GCC_NO_COMMON_BLOCKS = YES; + GCC_PREPROCESSOR_DEFINITIONS = ( + "$(inherited)", + _LIBCPP_ENABLE_CXX17_REMOVED_UNARY_BINARY_FUNCTION, + ); GCC_WARN_64_TO_32_BIT_CONVERSION = YES; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNDECLARED_SELECTOR = YES; @@ -661,6 +670,10 @@ "-DFOLLY_MOBILE=1", "-DFOLLY_USE_LIBCPP=1", ); + OTHER_LDFLAGS = ( + "$(inherited)", + " ", + ); REACT_NATIVE_PATH = "${PODS_ROOT}/../../node_modules/react-native"; SDKROOT = iphoneos; VALIDATE_PRODUCT = YES; diff --git a/examples/FabricExample/ios/Podfile.lock b/examples/FabricExample/ios/Podfile.lock index 2fc3f61321..cd35a33b95 100644 --- a/examples/FabricExample/ios/Podfile.lock +++ b/examples/FabricExample/ios/Podfile.lock @@ -2,14 +2,14 @@ PODS: - boost (1.76.0) - CocoaAsyncSocket (7.6.5) - DoubleConversion (1.1.6) - - FBLazyVector (0.71.12) - - FBReactNativeSpec (0.71.12): + - FBLazyVector (0.71.15) + - FBReactNativeSpec (0.71.15): - RCT-Folly (= 2021.07.22.00) - - RCTRequired (= 0.71.12) - - RCTTypeSafety (= 0.71.12) - - React-Core (= 0.71.12) - - React-jsi (= 0.71.12) - - ReactCommon/turbomodule/core (= 0.71.12) + - RCTRequired (= 0.71.15) + - RCTTypeSafety (= 0.71.15) + - React-Core (= 0.71.15) + - React-jsi (= 0.71.15) + - ReactCommon/turbomodule/core (= 0.71.15) - Flipper (0.125.0): - Flipper-Folly (~> 2.6) - Flipper-RSocket (~> 1.4) @@ -73,9 +73,9 @@ PODS: - FlipperKit/FlipperKitNetworkPlugin - fmt (6.2.1) - glog (0.3.5) - - hermes-engine (0.71.12): - - hermes-engine/Pre-built (= 0.71.12) - - hermes-engine/Pre-built (0.71.12) + - hermes-engine (0.71.15): + - hermes-engine/Pre-built (= 0.71.15) + - hermes-engine/Pre-built (0.71.15) - libevent (2.1.12) - OpenSSL-Universal (1.1.1100) - PromisesObjC (2.2.0) @@ -103,26 +103,26 @@ PODS: - fmt (~> 6.2.1) - glog - libevent - - RCTRequired (0.71.12) - - RCTTypeSafety (0.71.12): - - FBLazyVector (= 0.71.12) - - RCTRequired (= 0.71.12) - - React-Core (= 0.71.12) - - React (0.71.12): - - React-Core (= 0.71.12) - - React-Core/DevSupport (= 0.71.12) - - React-Core/RCTWebSocket (= 0.71.12) - - React-RCTActionSheet (= 0.71.12) - - React-RCTAnimation (= 0.71.12) - - React-RCTBlob (= 0.71.12) - - React-RCTImage (= 0.71.12) - - React-RCTLinking (= 0.71.12) - - React-RCTNetwork (= 0.71.12) - - React-RCTSettings (= 0.71.12) - - React-RCTText (= 0.71.12) - - React-RCTVibration (= 0.71.12) - - React-callinvoker (0.71.12) - - React-Codegen (0.71.12): + - RCTRequired (0.71.15) + - RCTTypeSafety (0.71.15): + - FBLazyVector (= 0.71.15) + - RCTRequired (= 0.71.15) + - React-Core (= 0.71.15) + - React (0.71.15): + - React-Core (= 0.71.15) + - React-Core/DevSupport (= 0.71.15) + - React-Core/RCTWebSocket (= 0.71.15) + - React-RCTActionSheet (= 0.71.15) + - React-RCTAnimation (= 0.71.15) + - React-RCTBlob (= 0.71.15) + - React-RCTImage (= 0.71.15) + - React-RCTLinking (= 0.71.15) + - React-RCTNetwork (= 0.71.15) + - React-RCTSettings (= 0.71.15) + - React-RCTText (= 0.71.15) + - React-RCTVibration (= 0.71.15) + - React-callinvoker (0.71.15) + - React-Codegen (0.71.15): - FBReactNativeSpec - hermes-engine - RCT-Folly @@ -135,547 +135,547 @@ PODS: - React-rncore - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core - - React-Core (0.71.12): + - React-Core (0.71.15): - glog - hermes-engine - RCT-Folly (= 2021.07.22.00) - - React-Core/Default (= 0.71.12) - - React-cxxreact (= 0.71.12) + - React-Core/Default (= 0.71.15) + - React-cxxreact (= 0.71.15) - React-hermes - - React-jsi (= 0.71.12) - - React-jsiexecutor (= 0.71.12) - - React-perflogger (= 0.71.12) + - React-jsi (= 0.71.15) + - React-jsiexecutor (= 0.71.15) + - React-perflogger (= 0.71.15) - Yoga - - React-Core/CoreModulesHeaders (0.71.12): + - React-Core/CoreModulesHeaders (0.71.15): - glog - hermes-engine - RCT-Folly (= 2021.07.22.00) - React-Core/Default - - React-cxxreact (= 0.71.12) + - React-cxxreact (= 0.71.15) - React-hermes - - React-jsi (= 0.71.12) - - React-jsiexecutor (= 0.71.12) - - React-perflogger (= 0.71.12) + - React-jsi (= 0.71.15) + - React-jsiexecutor (= 0.71.15) + - React-perflogger (= 0.71.15) - Yoga - - React-Core/Default (0.71.12): + - React-Core/Default (0.71.15): - glog - hermes-engine - RCT-Folly (= 2021.07.22.00) - - React-cxxreact (= 0.71.12) + - React-cxxreact (= 0.71.15) - React-hermes - - React-jsi (= 0.71.12) - - React-jsiexecutor (= 0.71.12) - - React-perflogger (= 0.71.12) + - React-jsi (= 0.71.15) + - React-jsiexecutor (= 0.71.15) + - React-perflogger (= 0.71.15) - Yoga - - React-Core/DevSupport (0.71.12): + - React-Core/DevSupport (0.71.15): - glog - hermes-engine - RCT-Folly (= 2021.07.22.00) - - React-Core/Default (= 0.71.12) - - React-Core/RCTWebSocket (= 0.71.12) - - React-cxxreact (= 0.71.12) + - React-Core/Default (= 0.71.15) + - React-Core/RCTWebSocket (= 0.71.15) + - React-cxxreact (= 0.71.15) - React-hermes - - React-jsi (= 0.71.12) - - React-jsiexecutor (= 0.71.12) - - React-jsinspector (= 0.71.12) - - React-perflogger (= 0.71.12) + - React-jsi (= 0.71.15) + - React-jsiexecutor (= 0.71.15) + - React-jsinspector (= 0.71.15) + - React-perflogger (= 0.71.15) - Yoga - - React-Core/RCTActionSheetHeaders (0.71.12): + - React-Core/RCTActionSheetHeaders (0.71.15): - glog - hermes-engine - RCT-Folly (= 2021.07.22.00) - React-Core/Default - - React-cxxreact (= 0.71.12) + - React-cxxreact (= 0.71.15) - React-hermes - - React-jsi (= 0.71.12) - - React-jsiexecutor (= 0.71.12) - - React-perflogger (= 0.71.12) + - React-jsi (= 0.71.15) + - React-jsiexecutor (= 0.71.15) + - React-perflogger (= 0.71.15) - Yoga - - React-Core/RCTAnimationHeaders (0.71.12): + - React-Core/RCTAnimationHeaders (0.71.15): - glog - hermes-engine - RCT-Folly (= 2021.07.22.00) - React-Core/Default - - React-cxxreact (= 0.71.12) + - React-cxxreact (= 0.71.15) - React-hermes - - React-jsi (= 0.71.12) - - React-jsiexecutor (= 0.71.12) - - React-perflogger (= 0.71.12) + - React-jsi (= 0.71.15) + - React-jsiexecutor (= 0.71.15) + - React-perflogger (= 0.71.15) - Yoga - - React-Core/RCTBlobHeaders (0.71.12): + - React-Core/RCTBlobHeaders (0.71.15): - glog - hermes-engine - RCT-Folly (= 2021.07.22.00) - React-Core/Default - - React-cxxreact (= 0.71.12) + - React-cxxreact (= 0.71.15) - React-hermes - - React-jsi (= 0.71.12) - - React-jsiexecutor (= 0.71.12) - - React-perflogger (= 0.71.12) + - React-jsi (= 0.71.15) + - React-jsiexecutor (= 0.71.15) + - React-perflogger (= 0.71.15) - Yoga - - React-Core/RCTImageHeaders (0.71.12): + - React-Core/RCTImageHeaders (0.71.15): - glog - hermes-engine - RCT-Folly (= 2021.07.22.00) - React-Core/Default - - React-cxxreact (= 0.71.12) + - React-cxxreact (= 0.71.15) - React-hermes - - React-jsi (= 0.71.12) - - React-jsiexecutor (= 0.71.12) - - React-perflogger (= 0.71.12) + - React-jsi (= 0.71.15) + - React-jsiexecutor (= 0.71.15) + - React-perflogger (= 0.71.15) - Yoga - - React-Core/RCTLinkingHeaders (0.71.12): + - React-Core/RCTLinkingHeaders (0.71.15): - glog - hermes-engine - RCT-Folly (= 2021.07.22.00) - React-Core/Default - - React-cxxreact (= 0.71.12) + - React-cxxreact (= 0.71.15) - React-hermes - - React-jsi (= 0.71.12) - - React-jsiexecutor (= 0.71.12) - - React-perflogger (= 0.71.12) + - React-jsi (= 0.71.15) + - React-jsiexecutor (= 0.71.15) + - React-perflogger (= 0.71.15) - Yoga - - React-Core/RCTNetworkHeaders (0.71.12): + - React-Core/RCTNetworkHeaders (0.71.15): - glog - hermes-engine - RCT-Folly (= 2021.07.22.00) - React-Core/Default - - React-cxxreact (= 0.71.12) + - React-cxxreact (= 0.71.15) - React-hermes - - React-jsi (= 0.71.12) - - React-jsiexecutor (= 0.71.12) - - React-perflogger (= 0.71.12) + - React-jsi (= 0.71.15) + - React-jsiexecutor (= 0.71.15) + - React-perflogger (= 0.71.15) - Yoga - - React-Core/RCTSettingsHeaders (0.71.12): + - React-Core/RCTSettingsHeaders (0.71.15): - glog - hermes-engine - RCT-Folly (= 2021.07.22.00) - React-Core/Default - - React-cxxreact (= 0.71.12) + - React-cxxreact (= 0.71.15) - React-hermes - - React-jsi (= 0.71.12) - - React-jsiexecutor (= 0.71.12) - - React-perflogger (= 0.71.12) + - React-jsi (= 0.71.15) + - React-jsiexecutor (= 0.71.15) + - React-perflogger (= 0.71.15) - Yoga - - React-Core/RCTTextHeaders (0.71.12): + - React-Core/RCTTextHeaders (0.71.15): - glog - hermes-engine - RCT-Folly (= 2021.07.22.00) - React-Core/Default - - React-cxxreact (= 0.71.12) + - React-cxxreact (= 0.71.15) - React-hermes - - React-jsi (= 0.71.12) - - React-jsiexecutor (= 0.71.12) - - React-perflogger (= 0.71.12) + - React-jsi (= 0.71.15) + - React-jsiexecutor (= 0.71.15) + - React-perflogger (= 0.71.15) - Yoga - - React-Core/RCTVibrationHeaders (0.71.12): + - React-Core/RCTVibrationHeaders (0.71.15): - glog - hermes-engine - RCT-Folly (= 2021.07.22.00) - React-Core/Default - - React-cxxreact (= 0.71.12) + - React-cxxreact (= 0.71.15) - React-hermes - - React-jsi (= 0.71.12) - - React-jsiexecutor (= 0.71.12) - - React-perflogger (= 0.71.12) + - React-jsi (= 0.71.15) + - React-jsiexecutor (= 0.71.15) + - React-perflogger (= 0.71.15) - Yoga - - React-Core/RCTWebSocket (0.71.12): + - React-Core/RCTWebSocket (0.71.15): - glog - hermes-engine - RCT-Folly (= 2021.07.22.00) - - React-Core/Default (= 0.71.12) - - React-cxxreact (= 0.71.12) + - React-Core/Default (= 0.71.15) + - React-cxxreact (= 0.71.15) - React-hermes - - React-jsi (= 0.71.12) - - React-jsiexecutor (= 0.71.12) - - React-perflogger (= 0.71.12) + - React-jsi (= 0.71.15) + - React-jsiexecutor (= 0.71.15) + - React-perflogger (= 0.71.15) - Yoga - - React-CoreModules (0.71.12): + - React-CoreModules (0.71.15): - RCT-Folly (= 2021.07.22.00) - - RCTTypeSafety (= 0.71.12) - - React-Codegen (= 0.71.12) - - React-Core/CoreModulesHeaders (= 0.71.12) - - React-jsi (= 0.71.12) + - RCTTypeSafety (= 0.71.15) + - React-Codegen (= 0.71.15) + - React-Core/CoreModulesHeaders (= 0.71.15) + - React-jsi (= 0.71.15) - React-RCTBlob - - React-RCTImage (= 0.71.12) - - ReactCommon/turbomodule/core (= 0.71.12) - - React-cxxreact (0.71.12): + - React-RCTImage (= 0.71.15) + - ReactCommon/turbomodule/core (= 0.71.15) + - React-cxxreact (0.71.15): - boost (= 1.76.0) - DoubleConversion - glog - hermes-engine - RCT-Folly (= 2021.07.22.00) - - React-callinvoker (= 0.71.12) - - React-jsi (= 0.71.12) - - React-jsinspector (= 0.71.12) - - React-logger (= 0.71.12) - - React-perflogger (= 0.71.12) - - React-runtimeexecutor (= 0.71.12) - - React-Fabric (0.71.12): - - RCT-Folly/Fabric (= 2021.07.22.00) - - RCTRequired (= 0.71.12) - - RCTTypeSafety (= 0.71.12) - - React-Fabric/animations (= 0.71.12) - - React-Fabric/attributedstring (= 0.71.12) - - React-Fabric/butter (= 0.71.12) - - React-Fabric/componentregistry (= 0.71.12) - - React-Fabric/componentregistrynative (= 0.71.12) - - React-Fabric/components (= 0.71.12) - - React-Fabric/config (= 0.71.12) - - React-Fabric/core (= 0.71.12) - - React-Fabric/debug_core (= 0.71.12) - - React-Fabric/debug_renderer (= 0.71.12) - - React-Fabric/imagemanager (= 0.71.12) - - React-Fabric/leakchecker (= 0.71.12) - - React-Fabric/mapbuffer (= 0.71.12) - - React-Fabric/mounting (= 0.71.12) - - React-Fabric/runtimescheduler (= 0.71.12) - - React-Fabric/scheduler (= 0.71.12) - - React-Fabric/telemetry (= 0.71.12) - - React-Fabric/templateprocessor (= 0.71.12) - - React-Fabric/textlayoutmanager (= 0.71.12) - - React-Fabric/uimanager (= 0.71.12) - - React-Fabric/utils (= 0.71.12) - - React-graphics (= 0.71.12) - - React-jsi (= 0.71.12) - - React-jsiexecutor (= 0.71.12) - - ReactCommon/turbomodule/core (= 0.71.12) - - React-Fabric/animations (0.71.12): - - RCT-Folly/Fabric (= 2021.07.22.00) - - RCTRequired (= 0.71.12) - - RCTTypeSafety (= 0.71.12) - - React-graphics (= 0.71.12) - - React-jsi (= 0.71.12) - - React-jsiexecutor (= 0.71.12) - - ReactCommon/turbomodule/core (= 0.71.12) - - React-Fabric/attributedstring (0.71.12): - - RCT-Folly/Fabric (= 2021.07.22.00) - - RCTRequired (= 0.71.12) - - RCTTypeSafety (= 0.71.12) - - React-graphics (= 0.71.12) - - React-jsi (= 0.71.12) - - React-jsiexecutor (= 0.71.12) - - ReactCommon/turbomodule/core (= 0.71.12) - - React-Fabric/butter (0.71.12): - - RCT-Folly/Fabric (= 2021.07.22.00) - - RCTRequired (= 0.71.12) - - RCTTypeSafety (= 0.71.12) - - React-graphics (= 0.71.12) - - React-jsi (= 0.71.12) - - React-jsiexecutor (= 0.71.12) - - ReactCommon/turbomodule/core (= 0.71.12) - - React-Fabric/componentregistry (0.71.12): - - RCT-Folly/Fabric (= 2021.07.22.00) - - RCTRequired (= 0.71.12) - - RCTTypeSafety (= 0.71.12) - - React-graphics (= 0.71.12) - - React-jsi (= 0.71.12) - - React-jsiexecutor (= 0.71.12) - - ReactCommon/turbomodule/core (= 0.71.12) - - React-Fabric/componentregistrynative (0.71.12): - - RCT-Folly/Fabric (= 2021.07.22.00) - - RCTRequired (= 0.71.12) - - RCTTypeSafety (= 0.71.12) - - React-graphics (= 0.71.12) - - React-jsi (= 0.71.12) - - React-jsiexecutor (= 0.71.12) - - ReactCommon/turbomodule/core (= 0.71.12) - - React-Fabric/components (0.71.12): - - RCT-Folly/Fabric (= 2021.07.22.00) - - RCTRequired (= 0.71.12) - - RCTTypeSafety (= 0.71.12) - - React-Fabric/components/activityindicator (= 0.71.12) - - React-Fabric/components/image (= 0.71.12) - - React-Fabric/components/inputaccessory (= 0.71.12) - - React-Fabric/components/legacyviewmanagerinterop (= 0.71.12) - - React-Fabric/components/modal (= 0.71.12) - - React-Fabric/components/root (= 0.71.12) - - React-Fabric/components/safeareaview (= 0.71.12) - - React-Fabric/components/scrollview (= 0.71.12) - - React-Fabric/components/slider (= 0.71.12) - - React-Fabric/components/text (= 0.71.12) - - React-Fabric/components/textinput (= 0.71.12) - - React-Fabric/components/unimplementedview (= 0.71.12) - - React-Fabric/components/view (= 0.71.12) - - React-graphics (= 0.71.12) - - React-jsi (= 0.71.12) - - React-jsiexecutor (= 0.71.12) - - ReactCommon/turbomodule/core (= 0.71.12) - - React-Fabric/components/activityindicator (0.71.12): - - RCT-Folly/Fabric (= 2021.07.22.00) - - RCTRequired (= 0.71.12) - - RCTTypeSafety (= 0.71.12) - - React-graphics (= 0.71.12) - - React-jsi (= 0.71.12) - - React-jsiexecutor (= 0.71.12) - - ReactCommon/turbomodule/core (= 0.71.12) - - React-Fabric/components/image (0.71.12): - - RCT-Folly/Fabric (= 2021.07.22.00) - - RCTRequired (= 0.71.12) - - RCTTypeSafety (= 0.71.12) - - React-graphics (= 0.71.12) - - React-jsi (= 0.71.12) - - React-jsiexecutor (= 0.71.12) - - ReactCommon/turbomodule/core (= 0.71.12) - - React-Fabric/components/inputaccessory (0.71.12): - - RCT-Folly/Fabric (= 2021.07.22.00) - - RCTRequired (= 0.71.12) - - RCTTypeSafety (= 0.71.12) - - React-graphics (= 0.71.12) - - React-jsi (= 0.71.12) - - React-jsiexecutor (= 0.71.12) - - ReactCommon/turbomodule/core (= 0.71.12) - - React-Fabric/components/legacyviewmanagerinterop (0.71.12): - - RCT-Folly/Fabric (= 2021.07.22.00) - - RCTRequired (= 0.71.12) - - RCTTypeSafety (= 0.71.12) - - React-graphics (= 0.71.12) - - React-jsi (= 0.71.12) - - React-jsiexecutor (= 0.71.12) - - ReactCommon/turbomodule/core (= 0.71.12) - - React-Fabric/components/modal (0.71.12): - - RCT-Folly/Fabric (= 2021.07.22.00) - - RCTRequired (= 0.71.12) - - RCTTypeSafety (= 0.71.12) - - React-graphics (= 0.71.12) - - React-jsi (= 0.71.12) - - React-jsiexecutor (= 0.71.12) - - ReactCommon/turbomodule/core (= 0.71.12) - - React-Fabric/components/root (0.71.12): - - RCT-Folly/Fabric (= 2021.07.22.00) - - RCTRequired (= 0.71.12) - - RCTTypeSafety (= 0.71.12) - - React-graphics (= 0.71.12) - - React-jsi (= 0.71.12) - - React-jsiexecutor (= 0.71.12) - - ReactCommon/turbomodule/core (= 0.71.12) - - React-Fabric/components/safeareaview (0.71.12): - - RCT-Folly/Fabric (= 2021.07.22.00) - - RCTRequired (= 0.71.12) - - RCTTypeSafety (= 0.71.12) - - React-graphics (= 0.71.12) - - React-jsi (= 0.71.12) - - React-jsiexecutor (= 0.71.12) - - ReactCommon/turbomodule/core (= 0.71.12) - - React-Fabric/components/scrollview (0.71.12): - - RCT-Folly/Fabric (= 2021.07.22.00) - - RCTRequired (= 0.71.12) - - RCTTypeSafety (= 0.71.12) - - React-graphics (= 0.71.12) - - React-jsi (= 0.71.12) - - React-jsiexecutor (= 0.71.12) - - ReactCommon/turbomodule/core (= 0.71.12) - - React-Fabric/components/slider (0.71.12): - - RCT-Folly/Fabric (= 2021.07.22.00) - - RCTRequired (= 0.71.12) - - RCTTypeSafety (= 0.71.12) - - React-graphics (= 0.71.12) - - React-jsi (= 0.71.12) - - React-jsiexecutor (= 0.71.12) - - ReactCommon/turbomodule/core (= 0.71.12) - - React-Fabric/components/text (0.71.12): - - RCT-Folly/Fabric (= 2021.07.22.00) - - RCTRequired (= 0.71.12) - - RCTTypeSafety (= 0.71.12) - - React-graphics (= 0.71.12) - - React-jsi (= 0.71.12) - - React-jsiexecutor (= 0.71.12) - - ReactCommon/turbomodule/core (= 0.71.12) - - React-Fabric/components/textinput (0.71.12): - - RCT-Folly/Fabric (= 2021.07.22.00) - - RCTRequired (= 0.71.12) - - RCTTypeSafety (= 0.71.12) - - React-graphics (= 0.71.12) - - React-jsi (= 0.71.12) - - React-jsiexecutor (= 0.71.12) - - ReactCommon/turbomodule/core (= 0.71.12) - - React-Fabric/components/unimplementedview (0.71.12): - - RCT-Folly/Fabric (= 2021.07.22.00) - - RCTRequired (= 0.71.12) - - RCTTypeSafety (= 0.71.12) - - React-graphics (= 0.71.12) - - React-jsi (= 0.71.12) - - React-jsiexecutor (= 0.71.12) - - ReactCommon/turbomodule/core (= 0.71.12) - - React-Fabric/components/view (0.71.12): - - RCT-Folly/Fabric (= 2021.07.22.00) - - RCTRequired (= 0.71.12) - - RCTTypeSafety (= 0.71.12) - - React-graphics (= 0.71.12) - - React-jsi (= 0.71.12) - - React-jsiexecutor (= 0.71.12) - - ReactCommon/turbomodule/core (= 0.71.12) + - React-callinvoker (= 0.71.15) + - React-jsi (= 0.71.15) + - React-jsinspector (= 0.71.15) + - React-logger (= 0.71.15) + - React-perflogger (= 0.71.15) + - React-runtimeexecutor (= 0.71.15) + - React-Fabric (0.71.15): + - RCT-Folly/Fabric (= 2021.07.22.00) + - RCTRequired (= 0.71.15) + - RCTTypeSafety (= 0.71.15) + - React-Fabric/animations (= 0.71.15) + - React-Fabric/attributedstring (= 0.71.15) + - React-Fabric/butter (= 0.71.15) + - React-Fabric/componentregistry (= 0.71.15) + - React-Fabric/componentregistrynative (= 0.71.15) + - React-Fabric/components (= 0.71.15) + - React-Fabric/config (= 0.71.15) + - React-Fabric/core (= 0.71.15) + - React-Fabric/debug_core (= 0.71.15) + - React-Fabric/debug_renderer (= 0.71.15) + - React-Fabric/imagemanager (= 0.71.15) + - React-Fabric/leakchecker (= 0.71.15) + - React-Fabric/mapbuffer (= 0.71.15) + - React-Fabric/mounting (= 0.71.15) + - React-Fabric/runtimescheduler (= 0.71.15) + - React-Fabric/scheduler (= 0.71.15) + - React-Fabric/telemetry (= 0.71.15) + - React-Fabric/templateprocessor (= 0.71.15) + - React-Fabric/textlayoutmanager (= 0.71.15) + - React-Fabric/uimanager (= 0.71.15) + - React-Fabric/utils (= 0.71.15) + - React-graphics (= 0.71.15) + - React-jsi (= 0.71.15) + - React-jsiexecutor (= 0.71.15) + - ReactCommon/turbomodule/core (= 0.71.15) + - React-Fabric/animations (0.71.15): + - RCT-Folly/Fabric (= 2021.07.22.00) + - RCTRequired (= 0.71.15) + - RCTTypeSafety (= 0.71.15) + - React-graphics (= 0.71.15) + - React-jsi (= 0.71.15) + - React-jsiexecutor (= 0.71.15) + - ReactCommon/turbomodule/core (= 0.71.15) + - React-Fabric/attributedstring (0.71.15): + - RCT-Folly/Fabric (= 2021.07.22.00) + - RCTRequired (= 0.71.15) + - RCTTypeSafety (= 0.71.15) + - React-graphics (= 0.71.15) + - React-jsi (= 0.71.15) + - React-jsiexecutor (= 0.71.15) + - ReactCommon/turbomodule/core (= 0.71.15) + - React-Fabric/butter (0.71.15): + - RCT-Folly/Fabric (= 2021.07.22.00) + - RCTRequired (= 0.71.15) + - RCTTypeSafety (= 0.71.15) + - React-graphics (= 0.71.15) + - React-jsi (= 0.71.15) + - React-jsiexecutor (= 0.71.15) + - ReactCommon/turbomodule/core (= 0.71.15) + - React-Fabric/componentregistry (0.71.15): + - RCT-Folly/Fabric (= 2021.07.22.00) + - RCTRequired (= 0.71.15) + - RCTTypeSafety (= 0.71.15) + - React-graphics (= 0.71.15) + - React-jsi (= 0.71.15) + - React-jsiexecutor (= 0.71.15) + - ReactCommon/turbomodule/core (= 0.71.15) + - React-Fabric/componentregistrynative (0.71.15): + - RCT-Folly/Fabric (= 2021.07.22.00) + - RCTRequired (= 0.71.15) + - RCTTypeSafety (= 0.71.15) + - React-graphics (= 0.71.15) + - React-jsi (= 0.71.15) + - React-jsiexecutor (= 0.71.15) + - ReactCommon/turbomodule/core (= 0.71.15) + - React-Fabric/components (0.71.15): + - RCT-Folly/Fabric (= 2021.07.22.00) + - RCTRequired (= 0.71.15) + - RCTTypeSafety (= 0.71.15) + - React-Fabric/components/activityindicator (= 0.71.15) + - React-Fabric/components/image (= 0.71.15) + - React-Fabric/components/inputaccessory (= 0.71.15) + - React-Fabric/components/legacyviewmanagerinterop (= 0.71.15) + - React-Fabric/components/modal (= 0.71.15) + - React-Fabric/components/root (= 0.71.15) + - React-Fabric/components/safeareaview (= 0.71.15) + - React-Fabric/components/scrollview (= 0.71.15) + - React-Fabric/components/slider (= 0.71.15) + - React-Fabric/components/text (= 0.71.15) + - React-Fabric/components/textinput (= 0.71.15) + - React-Fabric/components/unimplementedview (= 0.71.15) + - React-Fabric/components/view (= 0.71.15) + - React-graphics (= 0.71.15) + - React-jsi (= 0.71.15) + - React-jsiexecutor (= 0.71.15) + - ReactCommon/turbomodule/core (= 0.71.15) + - React-Fabric/components/activityindicator (0.71.15): + - RCT-Folly/Fabric (= 2021.07.22.00) + - RCTRequired (= 0.71.15) + - RCTTypeSafety (= 0.71.15) + - React-graphics (= 0.71.15) + - React-jsi (= 0.71.15) + - React-jsiexecutor (= 0.71.15) + - ReactCommon/turbomodule/core (= 0.71.15) + - React-Fabric/components/image (0.71.15): + - RCT-Folly/Fabric (= 2021.07.22.00) + - RCTRequired (= 0.71.15) + - RCTTypeSafety (= 0.71.15) + - React-graphics (= 0.71.15) + - React-jsi (= 0.71.15) + - React-jsiexecutor (= 0.71.15) + - ReactCommon/turbomodule/core (= 0.71.15) + - React-Fabric/components/inputaccessory (0.71.15): + - RCT-Folly/Fabric (= 2021.07.22.00) + - RCTRequired (= 0.71.15) + - RCTTypeSafety (= 0.71.15) + - React-graphics (= 0.71.15) + - React-jsi (= 0.71.15) + - React-jsiexecutor (= 0.71.15) + - ReactCommon/turbomodule/core (= 0.71.15) + - React-Fabric/components/legacyviewmanagerinterop (0.71.15): + - RCT-Folly/Fabric (= 2021.07.22.00) + - RCTRequired (= 0.71.15) + - RCTTypeSafety (= 0.71.15) + - React-graphics (= 0.71.15) + - React-jsi (= 0.71.15) + - React-jsiexecutor (= 0.71.15) + - ReactCommon/turbomodule/core (= 0.71.15) + - React-Fabric/components/modal (0.71.15): + - RCT-Folly/Fabric (= 2021.07.22.00) + - RCTRequired (= 0.71.15) + - RCTTypeSafety (= 0.71.15) + - React-graphics (= 0.71.15) + - React-jsi (= 0.71.15) + - React-jsiexecutor (= 0.71.15) + - ReactCommon/turbomodule/core (= 0.71.15) + - React-Fabric/components/root (0.71.15): + - RCT-Folly/Fabric (= 2021.07.22.00) + - RCTRequired (= 0.71.15) + - RCTTypeSafety (= 0.71.15) + - React-graphics (= 0.71.15) + - React-jsi (= 0.71.15) + - React-jsiexecutor (= 0.71.15) + - ReactCommon/turbomodule/core (= 0.71.15) + - React-Fabric/components/safeareaview (0.71.15): + - RCT-Folly/Fabric (= 2021.07.22.00) + - RCTRequired (= 0.71.15) + - RCTTypeSafety (= 0.71.15) + - React-graphics (= 0.71.15) + - React-jsi (= 0.71.15) + - React-jsiexecutor (= 0.71.15) + - ReactCommon/turbomodule/core (= 0.71.15) + - React-Fabric/components/scrollview (0.71.15): + - RCT-Folly/Fabric (= 2021.07.22.00) + - RCTRequired (= 0.71.15) + - RCTTypeSafety (= 0.71.15) + - React-graphics (= 0.71.15) + - React-jsi (= 0.71.15) + - React-jsiexecutor (= 0.71.15) + - ReactCommon/turbomodule/core (= 0.71.15) + - React-Fabric/components/slider (0.71.15): + - RCT-Folly/Fabric (= 2021.07.22.00) + - RCTRequired (= 0.71.15) + - RCTTypeSafety (= 0.71.15) + - React-graphics (= 0.71.15) + - React-jsi (= 0.71.15) + - React-jsiexecutor (= 0.71.15) + - ReactCommon/turbomodule/core (= 0.71.15) + - React-Fabric/components/text (0.71.15): + - RCT-Folly/Fabric (= 2021.07.22.00) + - RCTRequired (= 0.71.15) + - RCTTypeSafety (= 0.71.15) + - React-graphics (= 0.71.15) + - React-jsi (= 0.71.15) + - React-jsiexecutor (= 0.71.15) + - ReactCommon/turbomodule/core (= 0.71.15) + - React-Fabric/components/textinput (0.71.15): + - RCT-Folly/Fabric (= 2021.07.22.00) + - RCTRequired (= 0.71.15) + - RCTTypeSafety (= 0.71.15) + - React-graphics (= 0.71.15) + - React-jsi (= 0.71.15) + - React-jsiexecutor (= 0.71.15) + - ReactCommon/turbomodule/core (= 0.71.15) + - React-Fabric/components/unimplementedview (0.71.15): + - RCT-Folly/Fabric (= 2021.07.22.00) + - RCTRequired (= 0.71.15) + - RCTTypeSafety (= 0.71.15) + - React-graphics (= 0.71.15) + - React-jsi (= 0.71.15) + - React-jsiexecutor (= 0.71.15) + - ReactCommon/turbomodule/core (= 0.71.15) + - React-Fabric/components/view (0.71.15): + - RCT-Folly/Fabric (= 2021.07.22.00) + - RCTRequired (= 0.71.15) + - RCTTypeSafety (= 0.71.15) + - React-graphics (= 0.71.15) + - React-jsi (= 0.71.15) + - React-jsiexecutor (= 0.71.15) + - ReactCommon/turbomodule/core (= 0.71.15) - Yoga - - React-Fabric/config (0.71.12): - - RCT-Folly/Fabric (= 2021.07.22.00) - - RCTRequired (= 0.71.12) - - RCTTypeSafety (= 0.71.12) - - React-graphics (= 0.71.12) - - React-jsi (= 0.71.12) - - React-jsiexecutor (= 0.71.12) - - ReactCommon/turbomodule/core (= 0.71.12) - - React-Fabric/core (0.71.12): - - RCT-Folly/Fabric (= 2021.07.22.00) - - RCTRequired (= 0.71.12) - - RCTTypeSafety (= 0.71.12) - - React-graphics (= 0.71.12) - - React-jsi (= 0.71.12) - - React-jsiexecutor (= 0.71.12) - - ReactCommon/turbomodule/core (= 0.71.12) - - React-Fabric/debug_core (0.71.12): - - RCT-Folly/Fabric (= 2021.07.22.00) - - RCTRequired (= 0.71.12) - - RCTTypeSafety (= 0.71.12) - - React-graphics (= 0.71.12) - - React-jsi (= 0.71.12) - - React-jsiexecutor (= 0.71.12) - - ReactCommon/turbomodule/core (= 0.71.12) - - React-Fabric/debug_renderer (0.71.12): - - RCT-Folly/Fabric (= 2021.07.22.00) - - RCTRequired (= 0.71.12) - - RCTTypeSafety (= 0.71.12) - - React-graphics (= 0.71.12) - - React-jsi (= 0.71.12) - - React-jsiexecutor (= 0.71.12) - - ReactCommon/turbomodule/core (= 0.71.12) - - React-Fabric/imagemanager (0.71.12): - - RCT-Folly/Fabric (= 2021.07.22.00) - - RCTRequired (= 0.71.12) - - RCTTypeSafety (= 0.71.12) - - React-graphics (= 0.71.12) - - React-jsi (= 0.71.12) - - React-jsiexecutor (= 0.71.12) - - React-RCTImage (= 0.71.12) - - ReactCommon/turbomodule/core (= 0.71.12) - - React-Fabric/leakchecker (0.71.12): - - RCT-Folly/Fabric (= 2021.07.22.00) - - RCTRequired (= 0.71.12) - - RCTTypeSafety (= 0.71.12) - - React-graphics (= 0.71.12) - - React-jsi (= 0.71.12) - - React-jsiexecutor (= 0.71.12) - - ReactCommon/turbomodule/core (= 0.71.12) - - React-Fabric/mapbuffer (0.71.12): - - RCT-Folly/Fabric (= 2021.07.22.00) - - RCTRequired (= 0.71.12) - - RCTTypeSafety (= 0.71.12) - - React-graphics (= 0.71.12) - - React-jsi (= 0.71.12) - - React-jsiexecutor (= 0.71.12) - - ReactCommon/turbomodule/core (= 0.71.12) - - React-Fabric/mounting (0.71.12): - - RCT-Folly/Fabric (= 2021.07.22.00) - - RCTRequired (= 0.71.12) - - RCTTypeSafety (= 0.71.12) - - React-graphics (= 0.71.12) - - React-jsi (= 0.71.12) - - React-jsiexecutor (= 0.71.12) - - ReactCommon/turbomodule/core (= 0.71.12) - - React-Fabric/runtimescheduler (0.71.12): - - RCT-Folly/Fabric (= 2021.07.22.00) - - RCTRequired (= 0.71.12) - - RCTTypeSafety (= 0.71.12) - - React-graphics (= 0.71.12) - - React-jsi (= 0.71.12) - - React-jsiexecutor (= 0.71.12) - - ReactCommon/turbomodule/core (= 0.71.12) - - React-Fabric/scheduler (0.71.12): - - RCT-Folly/Fabric (= 2021.07.22.00) - - RCTRequired (= 0.71.12) - - RCTTypeSafety (= 0.71.12) - - React-graphics (= 0.71.12) - - React-jsi (= 0.71.12) - - React-jsiexecutor (= 0.71.12) - - ReactCommon/turbomodule/core (= 0.71.12) - - React-Fabric/telemetry (0.71.12): - - RCT-Folly/Fabric (= 2021.07.22.00) - - RCTRequired (= 0.71.12) - - RCTTypeSafety (= 0.71.12) - - React-graphics (= 0.71.12) - - React-jsi (= 0.71.12) - - React-jsiexecutor (= 0.71.12) - - ReactCommon/turbomodule/core (= 0.71.12) - - React-Fabric/templateprocessor (0.71.12): - - RCT-Folly/Fabric (= 2021.07.22.00) - - RCTRequired (= 0.71.12) - - RCTTypeSafety (= 0.71.12) - - React-graphics (= 0.71.12) - - React-jsi (= 0.71.12) - - React-jsiexecutor (= 0.71.12) - - ReactCommon/turbomodule/core (= 0.71.12) - - React-Fabric/textlayoutmanager (0.71.12): - - RCT-Folly/Fabric (= 2021.07.22.00) - - RCTRequired (= 0.71.12) - - RCTTypeSafety (= 0.71.12) + - React-Fabric/config (0.71.15): + - RCT-Folly/Fabric (= 2021.07.22.00) + - RCTRequired (= 0.71.15) + - RCTTypeSafety (= 0.71.15) + - React-graphics (= 0.71.15) + - React-jsi (= 0.71.15) + - React-jsiexecutor (= 0.71.15) + - ReactCommon/turbomodule/core (= 0.71.15) + - React-Fabric/core (0.71.15): + - RCT-Folly/Fabric (= 2021.07.22.00) + - RCTRequired (= 0.71.15) + - RCTTypeSafety (= 0.71.15) + - React-graphics (= 0.71.15) + - React-jsi (= 0.71.15) + - React-jsiexecutor (= 0.71.15) + - ReactCommon/turbomodule/core (= 0.71.15) + - React-Fabric/debug_core (0.71.15): + - RCT-Folly/Fabric (= 2021.07.22.00) + - RCTRequired (= 0.71.15) + - RCTTypeSafety (= 0.71.15) + - React-graphics (= 0.71.15) + - React-jsi (= 0.71.15) + - React-jsiexecutor (= 0.71.15) + - ReactCommon/turbomodule/core (= 0.71.15) + - React-Fabric/debug_renderer (0.71.15): + - RCT-Folly/Fabric (= 2021.07.22.00) + - RCTRequired (= 0.71.15) + - RCTTypeSafety (= 0.71.15) + - React-graphics (= 0.71.15) + - React-jsi (= 0.71.15) + - React-jsiexecutor (= 0.71.15) + - ReactCommon/turbomodule/core (= 0.71.15) + - React-Fabric/imagemanager (0.71.15): + - RCT-Folly/Fabric (= 2021.07.22.00) + - RCTRequired (= 0.71.15) + - RCTTypeSafety (= 0.71.15) + - React-graphics (= 0.71.15) + - React-jsi (= 0.71.15) + - React-jsiexecutor (= 0.71.15) + - React-RCTImage (= 0.71.15) + - ReactCommon/turbomodule/core (= 0.71.15) + - React-Fabric/leakchecker (0.71.15): + - RCT-Folly/Fabric (= 2021.07.22.00) + - RCTRequired (= 0.71.15) + - RCTTypeSafety (= 0.71.15) + - React-graphics (= 0.71.15) + - React-jsi (= 0.71.15) + - React-jsiexecutor (= 0.71.15) + - ReactCommon/turbomodule/core (= 0.71.15) + - React-Fabric/mapbuffer (0.71.15): + - RCT-Folly/Fabric (= 2021.07.22.00) + - RCTRequired (= 0.71.15) + - RCTTypeSafety (= 0.71.15) + - React-graphics (= 0.71.15) + - React-jsi (= 0.71.15) + - React-jsiexecutor (= 0.71.15) + - ReactCommon/turbomodule/core (= 0.71.15) + - React-Fabric/mounting (0.71.15): + - RCT-Folly/Fabric (= 2021.07.22.00) + - RCTRequired (= 0.71.15) + - RCTTypeSafety (= 0.71.15) + - React-graphics (= 0.71.15) + - React-jsi (= 0.71.15) + - React-jsiexecutor (= 0.71.15) + - ReactCommon/turbomodule/core (= 0.71.15) + - React-Fabric/runtimescheduler (0.71.15): + - RCT-Folly/Fabric (= 2021.07.22.00) + - RCTRequired (= 0.71.15) + - RCTTypeSafety (= 0.71.15) + - React-graphics (= 0.71.15) + - React-jsi (= 0.71.15) + - React-jsiexecutor (= 0.71.15) + - ReactCommon/turbomodule/core (= 0.71.15) + - React-Fabric/scheduler (0.71.15): + - RCT-Folly/Fabric (= 2021.07.22.00) + - RCTRequired (= 0.71.15) + - RCTTypeSafety (= 0.71.15) + - React-graphics (= 0.71.15) + - React-jsi (= 0.71.15) + - React-jsiexecutor (= 0.71.15) + - ReactCommon/turbomodule/core (= 0.71.15) + - React-Fabric/telemetry (0.71.15): + - RCT-Folly/Fabric (= 2021.07.22.00) + - RCTRequired (= 0.71.15) + - RCTTypeSafety (= 0.71.15) + - React-graphics (= 0.71.15) + - React-jsi (= 0.71.15) + - React-jsiexecutor (= 0.71.15) + - ReactCommon/turbomodule/core (= 0.71.15) + - React-Fabric/templateprocessor (0.71.15): + - RCT-Folly/Fabric (= 2021.07.22.00) + - RCTRequired (= 0.71.15) + - RCTTypeSafety (= 0.71.15) + - React-graphics (= 0.71.15) + - React-jsi (= 0.71.15) + - React-jsiexecutor (= 0.71.15) + - ReactCommon/turbomodule/core (= 0.71.15) + - React-Fabric/textlayoutmanager (0.71.15): + - RCT-Folly/Fabric (= 2021.07.22.00) + - RCTRequired (= 0.71.15) + - RCTTypeSafety (= 0.71.15) - React-Fabric/uimanager - - React-graphics (= 0.71.12) - - React-jsi (= 0.71.12) - - React-jsiexecutor (= 0.71.12) - - ReactCommon/turbomodule/core (= 0.71.12) - - React-Fabric/uimanager (0.71.12): - - RCT-Folly/Fabric (= 2021.07.22.00) - - RCTRequired (= 0.71.12) - - RCTTypeSafety (= 0.71.12) - - React-graphics (= 0.71.12) - - React-jsi (= 0.71.12) - - React-jsiexecutor (= 0.71.12) - - ReactCommon/turbomodule/core (= 0.71.12) - - React-Fabric/utils (0.71.12): - - RCT-Folly/Fabric (= 2021.07.22.00) - - RCTRequired (= 0.71.12) - - RCTTypeSafety (= 0.71.12) - - React-graphics (= 0.71.12) - - React-jsi (= 0.71.12) - - React-jsiexecutor (= 0.71.12) - - ReactCommon/turbomodule/core (= 0.71.12) - - React-graphics (0.71.12): - - RCT-Folly/Fabric (= 2021.07.22.00) - - React-Core/Default (= 0.71.12) - - React-hermes (0.71.12): + - React-graphics (= 0.71.15) + - React-jsi (= 0.71.15) + - React-jsiexecutor (= 0.71.15) + - ReactCommon/turbomodule/core (= 0.71.15) + - React-Fabric/uimanager (0.71.15): + - RCT-Folly/Fabric (= 2021.07.22.00) + - RCTRequired (= 0.71.15) + - RCTTypeSafety (= 0.71.15) + - React-graphics (= 0.71.15) + - React-jsi (= 0.71.15) + - React-jsiexecutor (= 0.71.15) + - ReactCommon/turbomodule/core (= 0.71.15) + - React-Fabric/utils (0.71.15): + - RCT-Folly/Fabric (= 2021.07.22.00) + - RCTRequired (= 0.71.15) + - RCTTypeSafety (= 0.71.15) + - React-graphics (= 0.71.15) + - React-jsi (= 0.71.15) + - React-jsiexecutor (= 0.71.15) + - ReactCommon/turbomodule/core (= 0.71.15) + - React-graphics (0.71.15): + - RCT-Folly/Fabric (= 2021.07.22.00) + - React-Core/Default (= 0.71.15) + - React-hermes (0.71.15): - DoubleConversion - glog - hermes-engine - RCT-Folly (= 2021.07.22.00) - RCT-Folly/Futures (= 2021.07.22.00) - - React-cxxreact (= 0.71.12) + - React-cxxreact (= 0.71.15) - React-jsi - - React-jsiexecutor (= 0.71.12) - - React-jsinspector (= 0.71.12) - - React-perflogger (= 0.71.12) - - React-jsi (0.71.12): + - React-jsiexecutor (= 0.71.15) + - React-jsinspector (= 0.71.15) + - React-perflogger (= 0.71.15) + - React-jsi (0.71.15): - boost (= 1.76.0) - DoubleConversion - glog - hermes-engine - RCT-Folly (= 2021.07.22.00) - - React-jsiexecutor (0.71.12): + - React-jsiexecutor (0.71.15): - DoubleConversion - glog - hermes-engine - RCT-Folly (= 2021.07.22.00) - - React-cxxreact (= 0.71.12) - - React-jsi (= 0.71.12) - - React-perflogger (= 0.71.12) - - React-jsinspector (0.71.12) - - React-logger (0.71.12): + - React-cxxreact (= 0.71.15) + - React-jsi (= 0.71.15) + - React-perflogger (= 0.71.15) + - React-jsinspector (0.71.15) + - React-logger (0.71.15): - glog - - react-native-video (6.0.0-alpha.6): + - react-native-video (6.0.0-beta.4): - React-Core - - react-native-video/Video (= 6.0.0-alpha.6) - - react-native-video/Video (6.0.0-alpha.6): + - react-native-video/Video (= 6.0.0-beta.4) + - react-native-video/Video (6.0.0-beta.4): - PromisesSwift - React-Core - - React-perflogger (0.71.12) - - React-RCTActionSheet (0.71.12): - - React-Core/RCTActionSheetHeaders (= 0.71.12) - - React-RCTAnimation (0.71.12): + - React-perflogger (0.71.15) + - React-RCTActionSheet (0.71.15): + - React-Core/RCTActionSheetHeaders (= 0.71.15) + - React-RCTAnimation (0.71.15): - RCT-Folly (= 2021.07.22.00) - - RCTTypeSafety (= 0.71.12) - - React-Codegen (= 0.71.12) - - React-Core/RCTAnimationHeaders (= 0.71.12) - - React-jsi (= 0.71.12) - - ReactCommon/turbomodule/core (= 0.71.12) - - React-RCTAppDelegate (0.71.12): + - RCTTypeSafety (= 0.71.15) + - React-Codegen (= 0.71.15) + - React-Core/RCTAnimationHeaders (= 0.71.15) + - React-jsi (= 0.71.15) + - ReactCommon/turbomodule/core (= 0.71.15) + - React-RCTAppDelegate (0.71.15): - RCT-Folly - RCTRequired - RCTTypeSafety @@ -683,80 +683,80 @@ PODS: - React-graphics - React-RCTFabric - ReactCommon/turbomodule/core - - React-RCTBlob (0.71.12): + - React-RCTBlob (0.71.15): - hermes-engine - RCT-Folly (= 2021.07.22.00) - - React-Codegen (= 0.71.12) - - React-Core/RCTBlobHeaders (= 0.71.12) - - React-Core/RCTWebSocket (= 0.71.12) - - React-jsi (= 0.71.12) - - React-RCTNetwork (= 0.71.12) - - ReactCommon/turbomodule/core (= 0.71.12) - - React-RCTFabric (0.71.12): - - RCT-Folly/Fabric (= 2021.07.22.00) - - React-Core (= 0.71.12) - - React-Fabric (= 0.71.12) - - React-RCTImage (= 0.71.12) - - React-RCTImage (0.71.12): + - React-Codegen (= 0.71.15) + - React-Core/RCTBlobHeaders (= 0.71.15) + - React-Core/RCTWebSocket (= 0.71.15) + - React-jsi (= 0.71.15) + - React-RCTNetwork (= 0.71.15) + - ReactCommon/turbomodule/core (= 0.71.15) + - React-RCTFabric (0.71.15): + - RCT-Folly/Fabric (= 2021.07.22.00) + - React-Core (= 0.71.15) + - React-Fabric (= 0.71.15) + - React-RCTImage (= 0.71.15) + - React-RCTImage (0.71.15): - RCT-Folly (= 2021.07.22.00) - - RCTTypeSafety (= 0.71.12) - - React-Codegen (= 0.71.12) - - React-Core/RCTImageHeaders (= 0.71.12) - - React-jsi (= 0.71.12) - - React-RCTNetwork (= 0.71.12) - - ReactCommon/turbomodule/core (= 0.71.12) - - React-RCTLinking (0.71.12): - - React-Codegen (= 0.71.12) - - React-Core/RCTLinkingHeaders (= 0.71.12) - - React-jsi (= 0.71.12) - - ReactCommon/turbomodule/core (= 0.71.12) - - React-RCTNetwork (0.71.12): + - RCTTypeSafety (= 0.71.15) + - React-Codegen (= 0.71.15) + - React-Core/RCTImageHeaders (= 0.71.15) + - React-jsi (= 0.71.15) + - React-RCTNetwork (= 0.71.15) + - ReactCommon/turbomodule/core (= 0.71.15) + - React-RCTLinking (0.71.15): + - React-Codegen (= 0.71.15) + - React-Core/RCTLinkingHeaders (= 0.71.15) + - React-jsi (= 0.71.15) + - ReactCommon/turbomodule/core (= 0.71.15) + - React-RCTNetwork (0.71.15): - RCT-Folly (= 2021.07.22.00) - - RCTTypeSafety (= 0.71.12) - - React-Codegen (= 0.71.12) - - React-Core/RCTNetworkHeaders (= 0.71.12) - - React-jsi (= 0.71.12) - - ReactCommon/turbomodule/core (= 0.71.12) - - React-RCTSettings (0.71.12): + - RCTTypeSafety (= 0.71.15) + - React-Codegen (= 0.71.15) + - React-Core/RCTNetworkHeaders (= 0.71.15) + - React-jsi (= 0.71.15) + - ReactCommon/turbomodule/core (= 0.71.15) + - React-RCTSettings (0.71.15): - RCT-Folly (= 2021.07.22.00) - - RCTTypeSafety (= 0.71.12) - - React-Codegen (= 0.71.12) - - React-Core/RCTSettingsHeaders (= 0.71.12) - - React-jsi (= 0.71.12) - - ReactCommon/turbomodule/core (= 0.71.12) - - React-RCTText (0.71.12): - - React-Core/RCTTextHeaders (= 0.71.12) - - React-RCTVibration (0.71.12): + - RCTTypeSafety (= 0.71.15) + - React-Codegen (= 0.71.15) + - React-Core/RCTSettingsHeaders (= 0.71.15) + - React-jsi (= 0.71.15) + - ReactCommon/turbomodule/core (= 0.71.15) + - React-RCTText (0.71.15): + - React-Core/RCTTextHeaders (= 0.71.15) + - React-RCTVibration (0.71.15): - RCT-Folly (= 2021.07.22.00) - - React-Codegen (= 0.71.12) - - React-Core/RCTVibrationHeaders (= 0.71.12) - - React-jsi (= 0.71.12) - - ReactCommon/turbomodule/core (= 0.71.12) - - React-rncore (0.71.12) - - React-runtimeexecutor (0.71.12): - - React-jsi (= 0.71.12) - - ReactCommon/turbomodule/bridging (0.71.12): + - React-Codegen (= 0.71.15) + - React-Core/RCTVibrationHeaders (= 0.71.15) + - React-jsi (= 0.71.15) + - ReactCommon/turbomodule/core (= 0.71.15) + - React-rncore (0.71.15) + - React-runtimeexecutor (0.71.15): + - React-jsi (= 0.71.15) + - ReactCommon/turbomodule/bridging (0.71.15): - DoubleConversion - glog - hermes-engine - RCT-Folly (= 2021.07.22.00) - - React-callinvoker (= 0.71.12) - - React-Core (= 0.71.12) - - React-cxxreact (= 0.71.12) - - React-jsi (= 0.71.12) - - React-logger (= 0.71.12) - - React-perflogger (= 0.71.12) - - ReactCommon/turbomodule/core (0.71.12): + - React-callinvoker (= 0.71.15) + - React-Core (= 0.71.15) + - React-cxxreact (= 0.71.15) + - React-jsi (= 0.71.15) + - React-logger (= 0.71.15) + - React-perflogger (= 0.71.15) + - ReactCommon/turbomodule/core (0.71.15): - DoubleConversion - glog - hermes-engine - RCT-Folly (= 2021.07.22.00) - - React-callinvoker (= 0.71.12) - - React-Core (= 0.71.12) - - React-cxxreact (= 0.71.12) - - React-jsi (= 0.71.12) - - React-logger (= 0.71.12) - - React-perflogger (= 0.71.12) + - React-callinvoker (= 0.71.15) + - React-Core (= 0.71.15) + - React-cxxreact (= 0.71.15) + - React-jsi (= 0.71.15) + - React-logger (= 0.71.15) + - React-perflogger (= 0.71.15) - SocketRocket (0.6.0) - Yoga (1.14.0) - YogaKit (1.18.1): @@ -930,11 +930,11 @@ EXTERNAL SOURCES: :path: "../node_modules/react-native/ReactCommon/yoga" SPEC CHECKSUMS: - boost: 57d2868c099736d80fcd648bf211b4431e51a558 + boost: 7dcd2de282d72e344012f7d6564d024930a6a440 CocoaAsyncSocket: 065fd1e645c7abab64f7a6a2007a48038fdc6a99 DoubleConversion: 5189b271737e1565bdce30deb4a08d647e3f5f54 - FBLazyVector: 4eb7ee83e8d0ad7e20a829485295ff48823c4e4c - FBReactNativeSpec: be2df14ea53a93ca2cfcee55312669505eb90c5f + FBLazyVector: d06bbe89e3a89ee90c4deab1c84bf306ffa5ed37 + FBReactNativeSpec: 6fecc43741c2aed59c2bc6ba2c2f486014e03521 Flipper: 26fc4b7382499f1281eb8cb921e5c3ad6de91fe0 Flipper-Boost-iOSX: fd1e2b8cbef7e662a122412d7ac5f5bea715403c Flipper-DoubleConversion: 2dc99b02f658daf147069aad9dbd29d8feb06d30 @@ -946,45 +946,45 @@ SPEC CHECKSUMS: FlipperKit: cbdee19bdd4e7f05472a66ce290f1b729ba3cb86 fmt: ff9d55029c625d3757ed641535fd4a75fedc7ce9 glog: 04b94705f318337d7ead9e6d17c019bd9b1f6b1b - hermes-engine: b60ebc812e0179a612d8146ac54730d533c804a2 + hermes-engine: 04437e4291ede4af0c76c25e7efd0eacb8fd25e5 libevent: 4049cae6c81cdb3654a443be001fb9bdceff7913 OpenSSL-Universal: ebc357f1e6bc71fa463ccb2fe676756aff50e88c PromisesObjC: 09985d6d70fbe7878040aa746d78236e6946d2ef PromisesSwift: cf9eb58666a43bbe007302226e510b16c1e10959 RCT-Folly: 424b8c9a7a0b9ab2886ffe9c3b041ef628fd4fb1 - RCTRequired: 4db5e3e18b906377a502da5b358ff159ba4783ed - RCTTypeSafety: 6c1a8aed043050de0d537336c95cd1be7b66c272 - React: 214e77358d860a3ed707fede9088e7c00663a087 - React-callinvoker: 8fc1c79c26fbcadce2a5d4a3cb4b2ced2dec3436 - React-Codegen: d88c22066f9d685c3f67399aa595f7aa7e8ffc6b - React-Core: ea541085ca5be10b2be289c7d82eba368b5c4900 - React-CoreModules: d9680e1d551eef1dd764df736a473cf25f701070 - React-cxxreact: 0792e80e291d086b2cf588410f6bc6e752bc1d83 - React-Fabric: 223723f622a7cb4f77741a3a01fa91f66963aa18 - React-graphics: fa303eb6c3b52de9a8a9e38c7aab022b1ce6d3d4 - React-hermes: 0b1bba58112cb7421f1166d527a1a05489f48dbc - React-jsi: 1e41088515c4273ef5b118575337df4671851430 - React-jsiexecutor: 509cd947c28834614808ce056ee8eb700a0662aa - React-jsinspector: ec4dcbfb1f4e72f04f826a0301eceee5fa7ca540 - React-logger: 35538accacf2583693fbc3ee8b53e69a1776fcee - react-native-video: fee89269ad07556d960721f3b62e39be6ace3c90 - React-perflogger: 75b0e25075c67565a830985f3c373e2eae5389e0 - React-RCTActionSheet: a0c3e916b327e297d124d9ebe8b0c721840ee04d - React-RCTAnimation: 3da7025801d7bf0f8cfd94574d6278d5b82a8b88 - React-RCTAppDelegate: 2ef2a2b0f14b0b8e2ed91f88084801fadee5dee6 - React-RCTBlob: 53252ebabe7777fd1c440a34546c64e16b162908 - React-RCTFabric: 7667a890d204af8a42683133250251e698c67e5c - React-RCTImage: e230761bd34d71362dd8b3d51b5cd72674935aa0 - React-RCTLinking: 3294b1b540005628168e5a341963b0eddc3932e8 - React-RCTNetwork: 00c6b2215e54a9fb015c53a5e02b0a852dbb8568 - React-RCTSettings: 2e7e4964f45e9b24c6c32ad30b6ab2ef4a7e2ffc - React-RCTText: a9c712b13cab90e1432e0ad113edc8bdbc691248 - React-RCTVibration: a283fefb8cc29d9740a7ff2e87f72ad10f25a433 - React-rncore: 1809ecfc14066404da300c0d950876bf95852f87 - React-runtimeexecutor: 7902246857a4ead4166869e6c42d4df329ff721d - ReactCommon: a6d1c76b9e10b439e41db225263341240e1cda9f + RCTRequired: 4ce9da4fa2f8a134f62c70e4ab9d971b9d640f41 + RCTTypeSafety: decfec2884f0c523f799600d2b6105cdc15e13db + React: ca22a0b3f199b6acac95416ef7eb96cc84a55103 + React-callinvoker: 366d4449bc2901e89da3f30c6d203c491d060350 + React-Codegen: 6fe71a7e025aa51e73b66ebb092d59a2a7701bae + React-Core: 169395096d2c22872e22cd74e3694a4b041cce76 + React-CoreModules: 8c2a970d9fd778e6016b9297f2c2dddbe78b04ec + React-cxxreact: e61b3e92887bb8fc241326b83d667953ff732923 + React-Fabric: f4ddd27dc414581018db9cbdd362c80e77b08eca + React-graphics: 516c3bb35198e4a2531fd52ab6cfc681dad71874 + React-hermes: 476b93736605b457d1bc390336656c94460205b7 + React-jsi: 9fe8766963aa3aea90bbd477ea63255eb847d404 + React-jsiexecutor: e0cde8d57cee18097b3d2b1bf6404ad25dd8d33b + React-jsinspector: 4ade58a6a355d97a53f847543b14f4cb5033cb70 + React-logger: 56699550750c013096a11dce3bc996e7dd583835 + react-native-video: 6078b448c21630b0a2937436527ad54fd2a1fdd8 + React-perflogger: 0cc42978a483a47f3696171dac2e7033936fc82d + React-RCTActionSheet: ea922b476d24f6d40b8e02ac3228412bd3637468 + React-RCTAnimation: 7be2c148398eaa5beac950b2b5ec7102389ec3ad + React-RCTAppDelegate: dc57448e65541509565b59518e8a81e30ae69bd7 + React-RCTBlob: c1e1e53b334f36b3311c3206036c99f4e5406cdf + React-RCTFabric: 42e8e9067f73fdb2e9d12f0b09003cd49d3da139 + React-RCTImage: 4a2cd71dd8c1954cfab50e244b269d47bdcc76da + React-RCTLinking: c8ff9fe7f5741afc05894c7da4a0d2bd1458f247 + React-RCTNetwork: 93c329744baa8c04057a5a29b790618e0c2a6a68 + React-RCTSettings: bcd09cd3ee26967bdfbc8af174404b8ffabfbc3c + React-RCTText: c525eb78cfe9489f130fa69004ff081a5ae33e06 + React-RCTVibration: a97783e3645ddf852e34da2e015656e309f3a083 + React-rncore: 0fc98082b749bad91dbb7a4bca9cb53386477c81 + React-runtimeexecutor: 8f2ddd9db7874ec7de84f5c55d73aeaaf82908e2 + ReactCommon: 309d965cb51f058d07dea65bc04dcf462911f0a4 SocketRocket: fccef3f9c5cedea1353a9ef6ada904fde10d6608 - Yoga: 39310a10944fc864a7550700de349183450f8aaa + Yoga: 68c9c592c3e80ec37ff28db20eedb13d84aae5df YogaKit: f782866e155069a2cca2517aafea43200b01fd5a PODFILE CHECKSUM: 780eb8fa466e7a1ad2e9200598bc65585b637433 diff --git a/examples/FabricExample/src/VideoPlayer.tsx b/examples/FabricExample/src/VideoPlayer.tsx index 5ec1bc304f..34a4776b94 100644 --- a/examples/FabricExample/src/VideoPlayer.tsx +++ b/examples/FabricExample/src/VideoPlayer.tsx @@ -11,7 +11,7 @@ import { View, } from 'react-native'; -import Video, {FilterType, VideoRef} from 'react-native-video'; +import Video, {FilterType, VideoRef, ResizeMode, IgnoreSilentSwitchType, MixWithOthersType} from 'react-native-video'; const filterTypes = [ FilterType.NONE, @@ -32,7 +32,26 @@ const filterTypes = [ FilterType.SEPIA, ]; -class VideoPlayer extends Component { +type SkinType = 'custom' | 'native' | 'embed' + +type State = { + rate: number, + volume: number, + muted: boolean, + resizeMode: ResizeMode, + duration: number, + currentTime: number, + controls: boolean, + paused: boolean, + skin: SkinType, + ignoreSilentSwitch: IgnoreSilentSwitchType, + mixWithOthers: MixWithOthersType, + isBuffering: boolean, + filter: FilterType, + filterEnabled: boolean, +} + +class VideoPlayer extends Component<{}, State> { controlRef: React.RefObject; videoRef: React.RefObject; constructor(props: any) { @@ -44,18 +63,18 @@ class VideoPlayer extends Component { this.controlRef = createRef(); this.videoRef = createRef(); } - state = { + state: State = { rate: 1, volume: 1, muted: false, - resizeMode: 'contain', + resizeMode: ResizeMode.CONTAIN, duration: 0.0, currentTime: 0.0, controls: false, paused: true, skin: 'custom', - ignoreSilentSwitch: null, - mixWithOthers: null, + ignoreSilentSwitch: IgnoreSilentSwitchType.IGNORE, + mixWithOthers: MixWithOthersType.DUCK, isBuffering: false, filter: FilterType.NONE, filterEnabled: true, @@ -110,7 +129,7 @@ class VideoPlayer extends Component { }); } - renderSkinControl(skin) { + renderSkinControl(skin: 'custom' | 'native' | 'embed') { const isSelected = this.state.skin == skin; const selectControls = skin == 'native' || skin == 'embed'; return ( @@ -151,7 +170,7 @@ class VideoPlayer extends Component { ); } - renderResizeModeControl(resizeMode: string) { + renderResizeModeControl(resizeMode: ResizeMode) { const isSelected = this.state.resizeMode == resizeMode; return ( @@ -189,7 +208,7 @@ class VideoPlayer extends Component { ); } - renderIgnoreSilentSwitchControl(ignoreSilentSwitch: string) { + renderIgnoreSilentSwitchControl(ignoreSilentSwitch: IgnoreSilentSwitchType) { const isSelected = this.state.ignoreSilentSwitch == ignoreSilentSwitch; return ( @@ -208,7 +227,7 @@ class VideoPlayer extends Component { ); } - renderMixWithOthersControl(mixWithOthers: string) { + renderMixWithOthersControl(mixWithOthers: MixWithOthersType) { const isSelected = this.state.mixWithOthers == mixWithOthers; return ( @@ -302,21 +321,21 @@ class VideoPlayer extends Component { - {this.renderResizeModeControl('cover')} - {this.renderResizeModeControl('contain')} - {this.renderResizeModeControl('stretch')} + {this.renderResizeModeControl(ResizeMode.COVER)} + {this.renderResizeModeControl(ResizeMode.CONTAIN)} + {this.renderResizeModeControl(ResizeMode.STRETCH)} {Platform.OS === 'ios' ? ( <> - {this.renderIgnoreSilentSwitchControl('ignore')} - {this.renderIgnoreSilentSwitchControl('obey')} + {this.renderIgnoreSilentSwitchControl(IgnoreSilentSwitchType.IGNORE)} + {this.renderIgnoreSilentSwitchControl(IgnoreSilentSwitchType.OBEY)} - {this.renderMixWithOthersControl('mix')} - {this.renderMixWithOthersControl('duck')} + {this.renderMixWithOthersControl(MixWithOthersType.MIX)} + {this.renderMixWithOthersControl(MixWithOthersType.DUCK)} ) : null} @@ -410,21 +429,21 @@ class VideoPlayer extends Component { - {this.renderResizeModeControl('cover')} - {this.renderResizeModeControl('contain')} - {this.renderResizeModeControl('stretch')} + {this.renderResizeModeControl(ResizeMode.COVER)} + {this.renderResizeModeControl(ResizeMode.CONTAIN)} + {this.renderResizeModeControl(ResizeMode.STRETCH)} {Platform.OS === 'ios' ? ( <> - {this.renderIgnoreSilentSwitchControl('ignore')} - {this.renderIgnoreSilentSwitchControl('obey')} + {this.renderIgnoreSilentSwitchControl(IgnoreSilentSwitchType.IGNORE)} + {this.renderIgnoreSilentSwitchControl(IgnoreSilentSwitchType.OBEY)} - {this.renderMixWithOthersControl('mix')} - {this.renderMixWithOthersControl('duck')} + {this.renderMixWithOthersControl(MixWithOthersType.MIX)} + {this.renderMixWithOthersControl(MixWithOthersType.DUCK)} ) : null} diff --git a/examples/FabricExample/tsconfig.json b/examples/FabricExample/tsconfig.json index 6c939fc72a..4ab8fc695b 100644 --- a/examples/FabricExample/tsconfig.json +++ b/examples/FabricExample/tsconfig.json @@ -4,9 +4,10 @@ "compilerOptions": { /* Visit https://aka.ms/tsconfig.json to read more about this file */ "paths": { - "react-native-video": ["../../Video.js"] + "react-native-video": ["../../src/index.ts"], + "react": [ "./node_modules/@types/react" ] }, /* Completeness */ - "skipLibCheck": true /* Skip type checking all .d.ts files. */ + "skipLibCheck": true, /* Skip type checking all .d.ts files. */ } } diff --git a/examples/basic/ios/Podfile.lock b/examples/basic/ios/Podfile.lock index 7c88cc2f82..eb2298c057 100644 --- a/examples/basic/ios/Podfile.lock +++ b/examples/basic/ios/Podfile.lock @@ -889,10 +889,10 @@ PODS: - React-Mapbuffer (0.73.2): - glog - React-debug - - react-native-video (6.0.0-beta.3): + - react-native-video (6.0.0-beta.4): - React-Core - - react-native-video/Video (= 6.0.0-beta.3) - - react-native-video/Video (6.0.0-beta.3): + - react-native-video/Video (= 6.0.0-beta.4) + - react-native-video/Video (6.0.0-beta.4): - PromisesSwift - React-Core - React-nativeconfig (0.73.2) @@ -1235,11 +1235,11 @@ EXTERNAL SOURCES: SPEC CHECKSUMS: boost: d3f49c53809116a5d38da093a8aa78bf551aed09 - DoubleConversion: 5189b271737e1565bdce30deb4a08d647e3f5f54 + DoubleConversion: fea03f2699887d960129cc54bba7e52542b6f953 FBLazyVector: fbc4957d9aa695250b55d879c1d86f79d7e69ab4 FBReactNativeSpec: 86de768f89901ef6ed3207cd686362189d64ac88 fmt: ff9d55029c625d3757ed641535fd4a75fedc7ce9 - glog: 04b94705f318337d7ead9e6d17c019bd9b1f6b1b + glog: c5d68082e772fa1c511173d6b30a9de2c05a69a2 hermes-engine: b361c9ef5ef3cda53f66e195599b47e1f84ffa35 libevent: 4049cae6c81cdb3654a443be001fb9bdceff7913 PromisesObjC: c50d2056b5253dadbd6c2bea79b0674bd5a52fa4 @@ -1265,7 +1265,7 @@ SPEC CHECKSUMS: React-jsinspector: 03644c063fc3621c9a4e8bf263a8150909129618 React-logger: 66b168e2b2bee57bd8ce9e69f739d805732a5570 React-Mapbuffer: f40e0ea0df8161075390332dfcb0496442c09371 - react-native-video: 60ecad11b7179ec0e2012dea643775b4fca9b224 + react-native-video: 6078b448c21630b0a2937436527ad54fd2a1fdd8 React-nativeconfig: 4dda3cbbdd1c4ce38450bb10b34b3e54120e4a91 React-NativeModulesApple: d25a530c61e94fb317a0124b1cde1c459e4a47d3 React-perflogger: 29efe63b7ef5fbaaa50ef6eaa92482f98a24b97e diff --git a/examples/basic/ios/videoplayer.xcodeproj/project.pbxproj b/examples/basic/ios/videoplayer.xcodeproj/project.pbxproj index a59261a291..a86577c6b4 100644 --- a/examples/basic/ios/videoplayer.xcodeproj/project.pbxproj +++ b/examples/basic/ios/videoplayer.xcodeproj/project.pbxproj @@ -591,6 +591,15 @@ " ${PODS_CONFIGURATION_BUILD_DIR}/ReactCommon/ReactCommon.framework/Headers", " ${PODS_CONFIGURATION_BUILD_DIR}/React-Fabric/React_Fabric.framework/Headers/react/renderer/components/view/platform/cxx", " ${PODS_CONFIGURATION_BUILD_DIR}/React-graphics/React_graphics.framework/Headers", + " ${PODS_CONFIGURATION_BUILD_DIR}/ReactCommon/ReactCommon.framework/Headers", + " ${PODS_CONFIGURATION_BUILD_DIR}/React-Fabric/React_Fabric.framework/Headers/react/renderer/components/view/platform/cxx", + " ${PODS_CONFIGURATION_BUILD_DIR}/React-graphics/React_graphics.framework/Headers", + " ${PODS_CONFIGURATION_BUILD_DIR}/ReactCommon/ReactCommon.framework/Headers", + " ${PODS_CONFIGURATION_BUILD_DIR}/React-Fabric/React_Fabric.framework/Headers/react/renderer/components/view/platform/cxx", + " ${PODS_CONFIGURATION_BUILD_DIR}/React-graphics/React_graphics.framework/Headers", + " ${PODS_CONFIGURATION_BUILD_DIR}/ReactCommon/ReactCommon.framework/Headers", + " ${PODS_CONFIGURATION_BUILD_DIR}/React-Fabric/React_Fabric.framework/Headers/react/renderer/components/view/platform/cxx", + " ${PODS_CONFIGURATION_BUILD_DIR}/React-graphics/React_graphics.framework/Headers", ); IPHONEOS_DEPLOYMENT_TARGET = 12.4; LD_RUNPATH_SEARCH_PATHS = ( @@ -611,11 +620,7 @@ "-DFOLLY_MOBILE=1", "-DFOLLY_USE_LIBCPP=1", ); - OTHER_LDFLAGS = ( - "$(inherited)", - " ", - "-Wl -ld_classic ", - ); + OTHER_LDFLAGS = "$(inherited)"; REACT_NATIVE_PATH = "${PODS_ROOT}/../../node_modules/react-native"; SDKROOT = iphoneos; USE_HERMES = true; @@ -678,6 +683,15 @@ " ${PODS_CONFIGURATION_BUILD_DIR}/ReactCommon/ReactCommon.framework/Headers", " ${PODS_CONFIGURATION_BUILD_DIR}/React-Fabric/React_Fabric.framework/Headers/react/renderer/components/view/platform/cxx", " ${PODS_CONFIGURATION_BUILD_DIR}/React-graphics/React_graphics.framework/Headers", + " ${PODS_CONFIGURATION_BUILD_DIR}/ReactCommon/ReactCommon.framework/Headers", + " ${PODS_CONFIGURATION_BUILD_DIR}/React-Fabric/React_Fabric.framework/Headers/react/renderer/components/view/platform/cxx", + " ${PODS_CONFIGURATION_BUILD_DIR}/React-graphics/React_graphics.framework/Headers", + " ${PODS_CONFIGURATION_BUILD_DIR}/ReactCommon/ReactCommon.framework/Headers", + " ${PODS_CONFIGURATION_BUILD_DIR}/React-Fabric/React_Fabric.framework/Headers/react/renderer/components/view/platform/cxx", + " ${PODS_CONFIGURATION_BUILD_DIR}/React-graphics/React_graphics.framework/Headers", + " ${PODS_CONFIGURATION_BUILD_DIR}/ReactCommon/ReactCommon.framework/Headers", + " ${PODS_CONFIGURATION_BUILD_DIR}/React-Fabric/React_Fabric.framework/Headers/react/renderer/components/view/platform/cxx", + " ${PODS_CONFIGURATION_BUILD_DIR}/React-graphics/React_graphics.framework/Headers", ); IPHONEOS_DEPLOYMENT_TARGET = 12.4; LD_RUNPATH_SEARCH_PATHS = ( @@ -697,11 +711,7 @@ "-DFOLLY_MOBILE=1", "-DFOLLY_USE_LIBCPP=1", ); - OTHER_LDFLAGS = ( - "$(inherited)", - " ", - "-Wl -ld_classic ", - ); + OTHER_LDFLAGS = "$(inherited)"; REACT_NATIVE_PATH = "${PODS_ROOT}/../../node_modules/react-native"; SDKROOT = iphoneos; USE_HERMES = true; diff --git a/ios/Video/DataStructures/VideoSource.swift b/ios/Video/DataStructures/VideoSource.swift index e9495a3325..e2b83bb8e6 100644 --- a/ios/Video/DataStructures/VideoSource.swift +++ b/ios/Video/DataStructures/VideoSource.swift @@ -40,7 +40,17 @@ struct VideoSource { self.isNetwork = json["isNetwork"] as? Bool ?? false self.isAsset = json["isAsset"] as? Bool ?? false self.shouldCache = json["shouldCache"] as? Bool ?? false - self.requestHeaders = json["requestHeaders"] as? [String: Any] + if let requestHeaders = json["requestHeaders"] as? [[String: Any]] { + var _requestHeaders: [String: Any] = [:] + for requestHeader in requestHeaders { + if let key = requestHeader["key"] as? String, let value = requestHeader["value"] { + _requestHeaders[key] = value + } + } + self.requestHeaders = _requestHeaders + } else { + self.requestHeaders = nil + } self.startPosition = json["startPosition"] as? Int64 self.cropStart = json["cropStart"] as? Int64 self.cropEnd = json["cropEnd"] as? Int64 diff --git a/package.json b/package.json index 196b9b433d..f15c017e62 100644 --- a/package.json +++ b/package.json @@ -28,7 +28,7 @@ "jest": "^29.7.0", "prettier": "^2.4.1", "react": "18.2.0", - "react-native": "0.72.5", + "react-native": "0.73.2", "react-native-windows": "^0.61.0-0", "release-it": "^16.2.1", "typescript": "5.1.6" @@ -47,7 +47,8 @@ "release": "release-it", "test": "echo no test available", "check-ios": "scripts/swift-format.sh && scripts/swift-lint.sh && scripts/clang-format.sh", - "check-android": "scripts/kotlin-lint.sh" + "check-android": "scripts/kotlin-lint.sh", + "codegen": "node ./node_modules/react-native/scripts/generate-codegen-artifacts.js --path ./ ./output" }, "files": [ "android", @@ -63,5 +64,10 @@ "!**/*.tsbuildinfo", "!docs", "!examples" - ] + ], + "codegenConfig": { + "name": "RNCVideo", + "type": "components", + "jsSrcsDir": "./src/specs" + } } diff --git a/src/Video.tsx b/src/Video.tsx index e0abfbbb8e..0917481fdb 100644 --- a/src/Video.tsx +++ b/src/Video.tsx @@ -9,34 +9,37 @@ import React, { } from 'react'; import {View, StyleSheet, Image, Platform} from 'react-native'; import NativeVideoComponent, { + type OnAudioFocusChangedData, + type OnAudioTracksData, + type OnBandwidthUpdateData, + type OnBufferData, + type OnExternalPlaybackChangeData, + type OnGetLicenseData, + type OnLoadData, + type OnLoadStartData, + type OnPictureInPictureStatusChangedData, + type OnPlaybackStateChangedData, + type OnProgressData, + type OnReceiveAdEventData, + type OnSeekData, + type OnTextTrackDataChangedData, + type OnTextTracksData, + type OnTimedMetadataData, + type OnVideoAspectRatioData, + type OnVideoErrorData, + type OnVideoTracksData, type VideoComponentType, -} from './VideoNativeComponent'; + type VideoSrc, +} from './specs/VideoNativeComponent'; import type {StyleProp, ImageStyle, NativeSyntheticEvent} from 'react-native'; -import {getReactTag, resolveAssetSourceForVideo} from './utils'; -import {VideoManager} from './VideoNativeComponent'; -import type { - OnAudioFocusChangedData, - OnAudioTracksData, - OnBandwidthUpdateData, - OnBufferData, - OnExternalPlaybackChangeData, - OnGetLicenseData, - OnLoadData, - OnLoadStartData, - OnPictureInPictureStatusChangedData, - OnPlaybackStateChangedData, - OnProgressData, - OnReceiveAdEventData, - OnSeekData, - OnTextTrackDataChangedData, - OnTextTracksData, - OnTimedMetadataData, - OnVideoAspectRatioData, - OnVideoErrorData, - OnVideoTracksData, - ReactVideoProps, -} from './types'; +import { + generateHeaderForNative, + getReactTag, + resolveAssetSourceForVideo, +} from './utils'; +import {VideoManager} from './specs/VideoNativeComponent'; +import type {ReactVideoProps} from './types/video'; export type VideoSaveData = { uri: string; @@ -120,11 +123,10 @@ const Video = forwardRef( [posterResizeMode], ); - const src = useMemo(() => { + const src = useMemo(() => { if (!source) { return undefined; } - const resolvedSource = resolveAssetSourceForVideo(source); let uri = resolvedSource.uri || ''; if (uri && uri.match(/^\//)) { @@ -149,7 +151,7 @@ const Video = forwardRef( type: resolvedSource.type || '', mainVer: resolvedSource.mainVer || 0, patchVer: resolvedSource.patchVer || 0, - requestHeaders: resolvedSource.headers || {}, + requestHeaders: generateHeaderForNative(resolvedSource.headers), startPosition: resolvedSource.startPosition ?? -1, cropStart: resolvedSource.cropStart || 0, cropEnd: resolvedSource.cropEnd, @@ -168,7 +170,7 @@ const Video = forwardRef( return { type: drm.type, licenseServer: drm.licenseServer, - headers: drm.headers, + headers: generateHeaderForNative(drm.headers), contentId: drm.contentId, certificateUrl: drm.certificateUrl, base64Certificate: drm.base64Certificate, @@ -180,10 +182,13 @@ const Video = forwardRef( if (!selectedTextTrack) { return; } + const value = selectedTextTrack.value + ? `${selectedTextTrack.value}` + : undefined; return { type: selectedTextTrack?.type, - value: selectedTextTrack?.value, + value, }; }, [selectedTextTrack]); @@ -191,10 +196,13 @@ const Video = forwardRef( if (!selectedAudioTrack) { return; } + const value = selectedAudioTrack.value + ? `${selectedAudioTrack.value}` + : undefined; return { type: selectedAudioTrack?.type, - value: selectedAudioTrack?.value, + value, }; }, [selectedAudioTrack]); diff --git a/src/VideoNativeComponent.ts b/src/VideoNativeComponent.ts deleted file mode 100644 index b5c9b98223..0000000000 --- a/src/VideoNativeComponent.ts +++ /dev/null @@ -1,418 +0,0 @@ -import type { - HostComponent, - NativeSyntheticEvent, - ViewProps, -} from 'react-native'; -import {NativeModules, requireNativeComponent} from 'react-native'; -import type ResizeMode from './types/ResizeMode'; -import type FilterType from './types/FilterType'; -import type Orientation from './types/Orientation'; -import type { - AdEvent, - EnumValues, - OnTextTrackDataChangedData, - OnTextTracksTypeData, -} from './types'; - -// -------- There are types for native component (future codegen) -------- -// if you are looking for types for react component, see src/types/video.ts - -type Headers = Record; - -type VideoSrc = Readonly<{ - uri?: string; - isNetwork?: boolean; - isAsset?: boolean; - shouldCache?: boolean; - type?: string; - mainVer?: number; - patchVer?: number; - requestHeaders?: Headers; - startPosition?: number; - cropStart?: number; - cropEnd?: number; - title?: string; - subtitle?: string; - description?: string; - customImageUri?: string; -}>; - -export type Filter = - | 'None' - | 'CIColorInvert' - | 'CIColorMonochrome' - | 'CIColorPosterize' - | 'CIFalseColor' - | 'CIMaximumComponent' - | 'CIMinimumComponent' - | 'CIPhotoEffectChrome' - | 'CIPhotoEffectFade' - | 'CIPhotoEffectInstant' - | 'CIPhotoEffectMono' - | 'CIPhotoEffectNoir' - | 'CIPhotoEffectProcess' - | 'CIPhotoEffectTonal' - | 'CIPhotoEffectTransfer' - | 'CISepiaTone'; - -export type DRMType = 'widevine' | 'playready' | 'clearkey' | 'fairplay'; - -type DebugConfig = Readonly<{ - enable?: boolean; - thread?: boolean; -}>; - -type Drm = Readonly<{ - type?: DRMType; - licenseServer?: string; - headers?: Headers; - contentId?: string; // ios - certificateUrl?: string; // ios - base64Certificate?: boolean; // ios default: false - useExternalGetLicense?: boolean; // ios -}>; - -type TextTracks = ReadonlyArray< - Readonly<{ - title: string; - language: string; - type: string; - uri: string; - }> ->; - -type TextTrackType = 'system' | 'disabled' | 'title' | 'language' | 'index'; - -type SelectedTextTrack = Readonly<{ - type: TextTrackType; - value?: string | number; -}>; - -type AudioTrackType = 'system' | 'disabled' | 'title' | 'language' | 'index'; - -type SelectedAudioTrack = Readonly<{ - type: AudioTrackType; - value?: string | number; -}>; - -export type Seek = Readonly<{ - time: number; - tolerance?: number; -}>; - -type BufferConfig = Readonly<{ - minBufferMs?: number; - maxBufferMs?: number; - bufferForPlaybackMs?: number; - bufferForPlaybackAfterRebufferMs?: number; - maxHeapAllocationPercent?: number; - minBackBufferMemoryReservePercent?: number; - minBufferMemoryReservePercent?: number; -}>; - -type SelectedVideoTrack = Readonly<{ - type: 'auto' | 'disabled' | 'resolution' | 'index'; - value?: number; -}>; - -type SubtitleStyle = Readonly<{ - fontSize?: number; - paddingTop?: number; - paddingBottom?: number; - paddingLeft?: number; - paddingRight?: number; -}>; - -export type OnLoadData = Readonly<{ - currentTime: number; - duration: number; - naturalSize: Readonly<{ - width: number; - height: number; - orientation: Orientation; - }>; -}> & - OnAudioTracksData & - OnTextTracksData; - -export type OnLoadStartData = Readonly<{ - isNetwork: boolean; - type: string; - uri: string; -}>; - -export type OnVideoAspectRatioData = Readonly<{ - width: number; - height: number; -}>; - -export type OnBufferData = Readonly<{isBuffering: boolean}>; - -export type OnProgressData = Readonly<{ - currentTime: number; - playableDuration: number; - seekableDuration: number; -}>; - -export type OnBandwidthUpdateData = Readonly<{ - bitrate: number; - width?: number; - height?: number; - trackId?: number; -}>; - -export type OnSeekData = Readonly<{ - currentTime: number; - seekTime: number; -}>; - -export type OnPlaybackStateChangedData = Readonly<{ - isPlaying: boolean; -}>; - -export type OnTimedMetadataData = Readonly<{ - metadata: ReadonlyArray< - Readonly<{ - value?: string; - identifier: string; - }> - >; -}>; - -export type OnAudioTracksData = Readonly<{ - audioTracks: ReadonlyArray< - Readonly<{ - index: number; - title?: string; - language?: string; - bitrate?: number; - type?: string; - selected?: boolean; - }> - >; -}>; - -export type OnTextTracksData = Readonly<{ - textTracks: ReadonlyArray< - Readonly<{ - index: number; - title?: string; - language?: string; - /** - * iOS only supports VTT, Android supports all 3 - */ - type?: OnTextTracksTypeData; - selected?: boolean; - }> - >; -}>; - -export type OnVideoTracksData = Readonly<{ - videoTracks: ReadonlyArray< - Readonly<{ - trackId: number; - codecs?: string; - width?: number; - height?: number; - bitrate?: number; - selected?: boolean; - }> - >; -}>; - -export type OnPlaybackData = Readonly<{ - playbackRate: number; -}>; - -export type onVolumeChangeData = Readonly<{ - volume: number; -}>; - -export type OnExternalPlaybackChangeData = Readonly<{ - isExternalPlaybackActive: boolean; -}>; - -export type OnGetLicenseData = Readonly<{ - licenseUrl: string; - contentId: string; - spcBase64: string; -}>; - -export type OnPictureInPictureStatusChangedData = Readonly<{ - isActive: boolean; -}>; - -export type OnReceiveAdEventData = Readonly<{ - data?: Record; - event: AdEvent; -}>; - -export type OnVideoErrorData = Readonly<{ - error: OnVideoErrorDataDetails; - target?: number; // ios -}>; - -export type OnVideoErrorDataDetails = Readonly<{ - errorString?: string; // android - errorException?: string; // android - errorStackTrace?: string; // android - errorCode?: string; // android - error?: string; // ios - code?: number; // ios - localizedDescription?: string; // ios - localizedFailureReason?: string; // ios - localizedRecoverySuggestion?: string; // ios - domain?: string; // ios -}>; - -export type OnAudioFocusChangedData = Readonly<{ - hasAudioFocus: boolean; -}>; - -export interface VideoNativeProps extends ViewProps { - src?: VideoSrc; - drm?: Drm; - adTagUrl?: string; - allowsExternalPlayback?: boolean; // ios, true - maxBitRate?: number; - resizeMode?: EnumValues; - repeat?: boolean; - automaticallyWaitsToMinimizeStalling?: boolean; - textTracks?: TextTracks; - selectedTextTrack?: SelectedTextTrack; - selectedAudioTrack?: SelectedAudioTrack; - paused?: boolean; - muted?: boolean; - controls?: boolean; - filter?: EnumValues; - filterEnabled?: boolean; - volume?: number; // default 1.0 - playInBackground?: boolean; - preventsDisplaySleepDuringVideoPlayback?: boolean; - preferredForwardBufferDuration?: number; //ios, 0 - playWhenInactive?: boolean; // ios, false - pictureInPicture?: boolean; // ios, false - ignoreSilentSwitch?: 'inherit' | 'ignore' | 'obey'; // ios, 'inherit' - mixWithOthers?: 'inherit' | 'mix' | 'duck'; // ios, 'inherit' - rate?: number; - fullscreen?: boolean; // ios, false - fullscreenAutorotate?: boolean; - fullscreenOrientation?: 'all' | 'landscape' | 'portrait'; - progressUpdateInterval?: number; - restoreUserInterfaceForPIPStopCompletionHandler?: boolean; - localSourceEncryptionKeyScheme?: string; - debug?: DebugConfig; - - backBufferDurationMs?: number; // Android - bufferConfig?: BufferConfig; // Android - contentStartTime?: number; // Android - currentPlaybackTime?: number; // Android - disableDisconnectError?: boolean; // Android - focusable?: boolean; // Android - hideShutterView?: boolean; // Android - minLoadRetryCount?: number; // Android - reportBandwidth?: boolean; //Android - selectedVideoTrack?: SelectedVideoTrack; // android - subtitleStyle?: SubtitleStyle; // android - shutterColor?: string; // Android - trackId?: string; // Android - useTextureView?: boolean; // Android - useSecureView?: boolean; // Android - onVideoLoad?: (event: NativeSyntheticEvent) => void; - onVideoLoadStart?: (event: NativeSyntheticEvent) => void; - onVideoAspectRatio?: ( - event: NativeSyntheticEvent, - ) => void; - onVideoBuffer?: (event: NativeSyntheticEvent) => void; - onVideoError?: (event: NativeSyntheticEvent) => void; - onVideoProgress?: (event: NativeSyntheticEvent) => void; - onVideoBandwidthUpdate?: ( - event: NativeSyntheticEvent, - ) => void; - onVideoSeek?: (event: NativeSyntheticEvent) => void; - onVideoEnd?: (event: NativeSyntheticEvent>) => void; // all - onVideoAudioBecomingNoisy?: ( - event: NativeSyntheticEvent>, - ) => void; - onVideoFullscreenPlayerWillPresent?: ( - event: NativeSyntheticEvent>, - ) => void; // ios, android - onVideoFullscreenPlayerDidPresent?: ( - event: NativeSyntheticEvent>, - ) => void; // ios, android - onVideoFullscreenPlayerWillDismiss?: ( - event: NativeSyntheticEvent>, - ) => void; // ios, android - onVideoFullscreenPlayerDidDismiss?: ( - event: NativeSyntheticEvent>, - ) => void; // ios, android - onReadyForDisplay?: (event: NativeSyntheticEvent>) => void; - onPlaybackRateChange?: (event: NativeSyntheticEvent) => void; // all - onVolumeChange?: (event: NativeSyntheticEvent) => void; // android, ios - onVideoExternalPlaybackChange?: ( - event: NativeSyntheticEvent, - ) => void; - onGetLicense?: (event: NativeSyntheticEvent) => void; - onPictureInPictureStatusChanged?: ( - event: NativeSyntheticEvent, - ) => void; - onRestoreUserInterfaceForPictureInPictureStop?: ( - event: NativeSyntheticEvent>, - ) => void; - onReceiveAdEvent?: ( - event: NativeSyntheticEvent, - ) => void; - onVideoPlaybackStateChanged?: ( - event: NativeSyntheticEvent, - ) => void; // android only - onVideoIdle?: (event: NativeSyntheticEvent) => void; // android only (nowhere in document, so do not use as props. just type declaration) - onAudioFocusChanged?: ( - event: NativeSyntheticEvent, - ) => void; // android only (nowhere in document, so do not use as props. just type declaration) - onTimedMetadata?: (event: NativeSyntheticEvent) => void; // ios, android - onAudioTracks?: (event: NativeSyntheticEvent) => void; // android - onTextTracks?: (event: NativeSyntheticEvent) => void; // android - onTextTrackDataChanged?: ( - event: NativeSyntheticEvent, - ) => void; // iOS - onVideoTracks?: (event: NativeSyntheticEvent) => void; // android -} - -export type VideoComponentType = HostComponent; - -export type VideoSaveData = { - uri: string; -}; - -export interface VideoManagerType { - save: (option: object, reactTag: number) => Promise; - setPlayerPauseState: (paused: boolean, reactTag: number) => Promise; - setLicenseResult: ( - result: string, - licenseUrl: string, - reactTag: number, - ) => Promise; - setLicenseResultError: ( - error: string, - licenseUrl: string, - reactTag: number, - ) => Promise; -} - -export interface VideoDecoderPropertiesType { - getWidevineLevel: () => Promise; - isCodecSupported: ( - mimeType: string, - width: number, - height: number, - ) => Promise<'unsupported' | 'hardware' | 'software'>; - isHEVCSupported: () => Promise<'unsupported' | 'hardware' | 'software'>; -} - -export const VideoManager = NativeModules.VideoManager as VideoManagerType; -export const VideoDecoderProperties = - NativeModules.VideoDecoderProperties as VideoDecoderPropertiesType; - -export default requireNativeComponent( - 'RCTVideo', -) as VideoComponentType; diff --git a/src/index.ts b/src/index.ts index 331d806509..56fd87d241 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,5 +1,5 @@ import Video from './Video'; -export {VideoDecoderProperties} from './VideoNativeComponent'; +export {VideoDecoderProperties} from './specs/VideoNativeComponent'; export * from './types'; export type {VideoRef} from './Video'; export default Video; diff --git a/src/specs/VideoNativeComponent.ts b/src/specs/VideoNativeComponent.ts new file mode 100644 index 0000000000..dcebc63aef --- /dev/null +++ b/src/specs/VideoNativeComponent.ts @@ -0,0 +1,567 @@ +/* eslint-disable @typescript-eslint/ban-types */ +import type {HostComponent, ViewProps} from 'react-native'; +import {NativeModules} from 'react-native'; +import codegenNativeComponent from 'react-native/Libraries/Utilities/codegenNativeComponent'; +import type { + DirectEventHandler, + Double, + Float, + Int32, + WithDefault, +} from 'react-native/Libraries/Types/CodegenTypes'; + +// -------- There are types for native component (future codegen) -------- +// if you are looking for types for react component, see src/types/video.ts + +type Headers = ReadonlyArray< + Readonly<{ + key: string; + value: string; + }> +>; + +export type VideoSrc = Readonly<{ + uri?: string; + isNetwork?: boolean; + isAsset?: boolean; + shouldCache?: boolean; + type?: string; + mainVer?: Int32; + patchVer?: Int32; + requestHeaders?: Headers; + startPosition?: Float; + cropStart?: Float; + cropEnd?: Float; + title?: string; + subtitle?: string; + description?: string; + customImageUri?: string; +}>; + +type DRMType = WithDefault< + 'widevine' | 'playready' | 'clearkey' | 'fairplay', + 'widevine' +>; + +type DebugConfig = Readonly<{ + enable?: boolean; + thread?: boolean; +}>; + +type Drm = Readonly<{ + type?: DRMType; + licenseServer?: string; + headers?: Headers; + contentId?: string; // ios + certificateUrl?: string; // ios + base64Certificate?: boolean; // ios default: false + useExternalGetLicense?: boolean; // ios +}>; + +type TextTracks = ReadonlyArray< + Readonly<{ + title: string; + language: string; + type: string; + uri: string; + }> +>; + +type SelectedTextTrackType = WithDefault< + 'system' | 'disabled' | 'title' | 'language' | 'index', + 'system' +>; + +type SelectedAudioTrackType = WithDefault< + 'system' | 'disabled' | 'title' | 'language' | 'index', + 'system' +>; + +type SelectedTextTrack = Readonly<{ + type?: SelectedTextTrackType; + value?: string; +}>; + +type SelectedAudioTrack = Readonly<{ + type?: SelectedAudioTrackType; + value?: string; +}>; + +type SelectedVideoTrackType = WithDefault< + 'auto' | 'disabled' | 'resolution' | 'index', + 'auto' +>; + +type SelectedVideoTrack = Readonly<{ + type?: SelectedVideoTrackType; + value?: Int32; +}>; + +export type Seek = Readonly<{ + time: Float; + tolerance?: Float; +}>; + +type BufferConfig = Readonly<{ + minBufferMs?: Float; + maxBufferMs?: Float; + bufferForPlaybackMs?: Float; + bufferForPlaybackAfterRebufferMs?: Float; + maxHeapAllocationPercent?: Float; + minBackBufferMemoryReservePercent?: Float; + minBufferMemoryReservePercent?: Float; +}>; + +type SubtitleStyle = Readonly<{ + fontSize?: Float; + paddingTop?: WithDefault; + paddingBottom?: WithDefault; + paddingLeft?: WithDefault; + paddingRight?: WithDefault; +}>; + +export type OnLoadData = Readonly<{ + currentTime: Float; + duration: Float; + naturalSize: Readonly<{ + width: Float; + height: Float; + orientation: WithDefault<'landscape' | 'portrait', 'landscape'>; + }>; + audioTracks: { + index: Int32; + title?: string; + language?: string; + bitrate?: Float; + type?: string; + selected?: boolean; + }[]; + textTracks: { + index: Int32; + title?: string; + language?: string; + /** + * iOS only supports VTT, Android supports all 3 + */ + type?: WithDefault<'srt' | 'ttml' | 'vtt', 'srt'>; + selected?: boolean; + }[]; +}>; + +export type OnLoadStartData = Readonly<{ + isNetwork: boolean; + type: string; + uri: string; +}>; + +export type OnVideoAspectRatioData = Readonly<{ + width: Float; + height: Float; +}>; + +export type OnBufferData = Readonly<{isBuffering: boolean}>; + +export type OnProgressData = Readonly<{ + currentTime: Float; + playableDuration: Float; + seekableDuration: Float; +}>; + +export type OnBandwidthUpdateData = Readonly<{ + bitrate: Int32; + width?: Float; + height?: Float; + trackId?: Int32; +}>; + +export type OnSeekData = Readonly<{ + currentTime: Float; + seekTime: Float; +}>; + +export type OnPlaybackStateChangedData = Readonly<{ + isPlaying: boolean; +}>; + +export type OnTimedMetadataData = Readonly<{ + metadata: { + value?: string; + identifier: string; + }[]; +}>; + +export type OnAudioTracksData = Readonly<{ + audioTracks: { + index: Int32; + title?: string; + language?: string; + bitrate?: Float; + type?: string; + selected?: boolean; + }[]; +}>; + +export type OnTextTracksData = Readonly<{ + textTracks: { + index: Int32; + title?: string; + language?: string; + /** + * iOS only supports VTT, Android supports all 3 + */ + type?: WithDefault<'srt' | 'ttml' | 'vtt', 'srt'>; + selected?: boolean; + }[]; +}>; + +export type OnTextTrackDataChangedData = Readonly<{ + subtitleTracks: string; +}>; + +export type OnVideoTracksData = Readonly<{ + videoTracks: { + trackId: Int32; + codecs?: string; + width?: Float; + height?: Float; + bitrate?: Float; + selected?: boolean; + }[]; +}>; + +export type OnPlaybackData = Readonly<{ + playbackRate: Float; +}>; + +export type OnVolumeChangeData = Readonly<{ + volume: Float; +}>; + +export type OnExternalPlaybackChangeData = Readonly<{ + isExternalPlaybackActive: boolean; +}>; + +export type OnGetLicenseData = Readonly<{ + licenseUrl: string; + contentId: string; + spcBase64: string; +}>; + +export type OnPictureInPictureStatusChangedData = Readonly<{ + isActive: boolean; +}>; + +export type OnReceiveAdEventData = Readonly<{ + data?: {}; + event: WithDefault< + /** + * iOS only: Fired the first time each ad break ends. Applications must reenable seeking when this occurs (only used for dynamic ad insertion). + */ | 'AD_BREAK_ENDED' + /** + * Fires when an ad rule or a VMAP ad break would have played if autoPlayAdBreaks is false. + */ + | 'AD_BREAK_READY' + /** + * iOS only: Fired first time each ad break begins playback. If an ad break is watched subsequent times this will not be fired. Applications must disable seeking when this occurs (only used for dynamic ad insertion). + */ + | 'AD_BREAK_STARTED' + /** + * Android only: Fires when the ad has stalled playback to buffer. + */ + | 'AD_BUFFERING' + /** + * Android only: Fires when the ad is ready to play without buffering, either at the beginning of the ad or after buffering completes. + */ + | 'AD_CAN_PLAY' + /** + * Android only: Fires when an ads list is loaded. + */ + | 'AD_METADATA' + /** + * iOS only: Fired every time the stream switches from advertising or slate to content. This will be fired even when an ad is played a second time or when seeking into an ad (only used for dynamic ad insertion). + */ + | 'AD_PERIOD_ENDED' + /** + * iOS only: Fired every time the stream switches from content to advertising or slate. This will be fired even when an ad is played a second time or when seeking into an ad (only used for dynamic ad insertion). + */ + | 'AD_PERIOD_STARTED' + /** + * Android only: Fires when the ad's current time value changes. The event `data` will be populated with an AdProgressData object. + */ + | 'AD_PROGRESS' + /** + * Fires when the ads manager is done playing all the valid ads in the ads response, or when the response doesn't return any valid ads. + */ + | 'ALL_ADS_COMPLETED' + /** + * Fires when the ad is clicked. + */ + | 'CLICK' + /** + * Fires when the ad completes playing. + */ + | 'COMPLETED' + /** + * Android only: Fires when content should be paused. This usually happens right before an ad is about to cover the content. + */ + | 'CONTENT_PAUSE_REQUESTED' + /** + * Android only: Fires when content should be resumed. This usually happens when an ad finishes or collapses. + */ + | 'CONTENT_RESUME_REQUESTED' + /** + * iOS only: Cuepoints changed for VOD stream (only used for dynamic ad insertion). + */ + | 'CUEPOINTS_CHANGED' + /** + * Android only: Fires when the ad's duration changes. + */ + | 'DURATION_CHANGE' + /** + * Fires when an error is encountered and the ad can't be played. + */ + | 'ERROR' + /** + * Fires when the ad playhead crosses first quartile. + */ + | 'FIRST_QUARTILE' + /** + * Android only: Fires when the impression URL has been pinged. + */ + | 'IMPRESSION' + /** + * Android only: Fires when an ad triggers the interaction callback. Ad interactions contain an interaction ID string in the ad data. + */ + | 'INTERACTION' + /** + * Android only: Fires when the displayed ad changes from linear to nonlinear, or the reverse. + */ + | 'LINEAR_CHANGED' + /** + * Fires when ad data is available. + */ + | 'LOADED' + /** + * Fires when a non-fatal error is encountered. The user need not take any action since the SDK will continue with the same or next ad playback depending on the error situation. + */ + | 'LOG' + /** + * Fires when the ad playhead crosses midpoint. + */ + | 'MIDPOINT' + /** + * Fires when the ad is paused. + */ + | 'PAUSED' + /** + * Fires when the ad is resumed. + */ + | 'RESUMED' + /** + * Android only: Fires when the displayed ads skippable state is changed. + */ + | 'SKIPPABLE_STATE_CHANGED' + /** + * Fires when the ad is skipped by the user. + */ + | 'SKIPPED' + /** + * Fires when the ad starts playing. + */ + | 'STARTED' + /** + * iOS only: Stream request has loaded (only used for dynamic ad insertion). + */ + | 'STREAM_LOADED' + /** + * iOS only: Fires when the ad is tapped. + */ + | 'TAPPED' + /** + * Fires when the ad playhead crosses third quartile. + */ + | 'THIRD_QUARTILE' + /** + * iOS only: An unknown event has fired + */ + | 'UNKNOWN' + /** + * Android only: Fires when the ad is closed by the user. + */ + | 'USER_CLOSE' + /** + * Android only: Fires when the non-clickthrough portion of a video ad is clicked. + */ + | 'VIDEO_CLICKED' + /** + * Android only: Fires when a user clicks a video icon. + */ + | 'VIDEO_ICON_CLICKED' + /** + * Android only: Fires when the ad volume has changed. + */ + | 'VOLUME_CHANGED' + /** + * Android only: Fires when the ad volume has been muted. + */ + | 'VOLUME_MUTED', + 'AD_BREAK_ENDED' + >; +}>; + +export type OnVideoErrorData = Readonly<{ + error: Readonly<{ + errorString?: string; // android + errorException?: string; // android + errorStackTrace?: string; // android + errorCode?: string; // android + error?: string; // ios + code?: Int32; // ios + localizedDescription?: string; // ios + localizedFailureReason?: string; // ios + localizedRecoverySuggestion?: string; // ios + domain?: string; // ios + }>; + target?: Int32; // ios +}>; + +export type OnAudioFocusChangedData = Readonly<{ + hasAudioFocus: boolean; +}>; + +export interface VideoNativeProps extends ViewProps { + src?: VideoSrc; + drm?: Drm; + adTagUrl?: string; + allowsExternalPlayback?: boolean; // ios, true + maxBitRate?: Float; + resizeMode?: WithDefault<'none' | 'contain' | 'cover' | 'stretch', 'none'>; + repeat?: boolean; + automaticallyWaitsToMinimizeStalling?: boolean; + textTracks?: TextTracks; + selectedTextTrack?: SelectedTextTrack; + selectedAudioTrack?: SelectedAudioTrack; + selectedVideoTrack?: SelectedVideoTrack; // android + paused?: boolean; + muted?: boolean; + controls?: boolean; + filter?: WithDefault< + | '' + | 'CIColorInvert' + | 'CIColorMonochrome' + | 'CIColorPosterize' + | 'CIFalseColor' + | 'CIMaximumComponent' + | 'CIMinimumComponent' + | 'CIPhotoEffectChrome' + | 'CIPhotoEffectFade' + | 'CIPhotoEffectInstant' + | 'CIPhotoEffectMono' + | 'CIPhotoEffectNoir' + | 'CIPhotoEffectProcess' + | 'CIPhotoEffectTonal' + | 'CIPhotoEffectTransfer' + | 'CISepiaTone', + '' + >; + filterEnabled?: boolean; + volume?: Float; // default 1.0 + playInBackground?: boolean; + preventsDisplaySleepDuringVideoPlayback?: boolean; + preferredForwardBufferDuration?: Float; //ios, 0 + playWhenInactive?: boolean; // ios, false + pictureInPicture?: boolean; // ios, false + ignoreSilentSwitch?: WithDefault<'inherit' | 'ignore' | 'obey', 'inherit'>; // ios, 'inherit' + mixWithOthers?: WithDefault<'inherit' | 'mix' | 'duck', 'inherit'>; // ios, 'inherit' + rate?: Float; + fullscreen?: boolean; // ios, false + fullscreenAutorotate?: boolean; + fullscreenOrientation?: WithDefault<'all' | 'landscape' | 'portrait', 'all'>; + progressUpdateInterval?: Float; + restoreUserInterfaceForPIPStopCompletionHandler?: boolean; + localSourceEncryptionKeyScheme?: string; + debug?: DebugConfig; + + backBufferDurationMs?: Int32; // Android + bufferConfig?: BufferConfig; // Android + contentStartTime?: Int32; // Android + currentPlaybackTime?: Double; // Android + disableDisconnectError?: boolean; // Android + focusable?: boolean; // Android + hideShutterView?: boolean; // Android + minLoadRetryCount?: Int32; // Android + reportBandwidth?: boolean; //Android + subtitleStyle?: SubtitleStyle; // android + trackId?: string; // Android + useTextureView?: boolean; // Android + useSecureView?: boolean; // Android + onVideoLoad?: DirectEventHandler; + onVideoLoadStart?: DirectEventHandler; + onVideoAspectRatio?: DirectEventHandler; + onVideoBuffer?: DirectEventHandler; + onVideoError?: DirectEventHandler; + onVideoProgress?: DirectEventHandler; + onVideoBandwidthUpdate?: DirectEventHandler; + onVideoSeek?: DirectEventHandler; + onVideoEnd?: DirectEventHandler<{}>; // all + onVideoAudioBecomingNoisy?: DirectEventHandler<{}>; + onVideoFullscreenPlayerWillPresent?: DirectEventHandler<{}>; // ios, android + onVideoFullscreenPlayerDidPresent?: DirectEventHandler<{}>; // ios, android + onVideoFullscreenPlayerWillDismiss?: DirectEventHandler<{}>; // ios, android + onVideoFullscreenPlayerDidDismiss?: DirectEventHandler<{}>; // ios, android + onReadyForDisplay?: DirectEventHandler<{}>; + onPlaybackRateChange?: DirectEventHandler; // all + onVolumeChange?: DirectEventHandler; // android, ios + onVideoExternalPlaybackChange?: DirectEventHandler; + onGetLicense?: DirectEventHandler; + onPictureInPictureStatusChanged?: DirectEventHandler; + onRestoreUserInterfaceForPictureInPictureStop?: DirectEventHandler<{}>; + onReceiveAdEvent?: DirectEventHandler; + onVideoPlaybackStateChanged?: DirectEventHandler; // android only + onVideoIdle?: DirectEventHandler<{}>; // android only (nowhere in document, so do not use as props. just type declaration) + onAudioFocusChanged?: DirectEventHandler; // android only (nowhere in document, so do not use as props. just type declaration) + onTimedMetadata?: DirectEventHandler; // ios, android + onAudioTracks?: DirectEventHandler; // android + onTextTracks?: DirectEventHandler; // android + onTextTrackDataChanged?: DirectEventHandler; // iOS + onVideoTracks?: DirectEventHandler; // android +} + +export type VideoComponentType = HostComponent; + +export type VideoSaveData = { + uri: string; +}; + +export interface VideoManagerType { + save: (option: object, reactTag: number) => Promise; + setPlayerPauseState: (paused: boolean, reactTag: number) => Promise; + setLicenseResult: ( + result: string, + licenseUrl: string, + reactTag: number, + ) => Promise; + setLicenseResultError: ( + error: string, + licenseUrl: string, + reactTag: number, + ) => Promise; +} + +export interface VideoDecoderPropertiesType { + getWidevineLevel: () => Promise; + isCodecSupported: ( + mimeType: string, + width: number, + height: number, + ) => Promise<'unsupported' | 'hardware' | 'software'>; + isHEVCSupported: () => Promise<'unsupported' | 'hardware' | 'software'>; +} + +export const VideoManager = NativeModules.VideoManager as VideoManagerType; +export const VideoDecoderProperties = + NativeModules.VideoDecoderProperties as VideoDecoderPropertiesType; + +export default codegenNativeComponent( + 'RCTVideo', +) as VideoComponentType; diff --git a/src/types/events.ts b/src/types/events.ts index 9982eda535..291ee0bc42 100644 --- a/src/types/events.ts +++ b/src/types/events.ts @@ -1,160 +1,28 @@ -import type Orientation from './Orientation'; -import type {AdEvent} from './Ads'; - -export type OnLoadData = Readonly<{ - currentTime: number; - duration: number; - naturalSize: Readonly<{ - width: number; - height: number; - orientation: Orientation; - }>; -}> & - OnAudioTracksData & - OnTextTracksData; - -export type OnVideoAspectRatioData = Readonly<{ - width: number; - height: number; -}>; - -export type OnLoadStartData = Readonly<{ - isNetwork: boolean; - type: string; - uri: string; -}>; - -export type OnProgressData = Readonly<{ - currentTime: number; - playableDuration: number; - seekableDuration: number; -}>; - -export type OnSeekData = Readonly<{ - currentTime: number; - seekTime: number; -}>; - -export type OnPlaybackStateChangedData = Readonly<{ - isPlaying: boolean; -}>; - -export type OnTimedMetadataData = Readonly<{ - metadata: ReadonlyArray< - Readonly<{ - value?: string; - identifier: string; - }> - >; -}>; - -export type AudioTrack = Readonly<{ - index: number; - title?: string; - language?: string; - bitrate?: number; - type?: string; - selected?: boolean; -}>; - -export type OnAudioTracksData = Readonly<{ - audioTracks: ReadonlyArray; -}>; - -export enum OnTextTracksTypeData { - SRT = 'srt', - TTML = 'ttml', - VTT = 'vtt', -} - -export type TextTrack = Readonly<{ - index: number; - title?: string; - language?: string; - type?: OnTextTracksTypeData; - selected?: boolean; -}>; - -export type OnTextTracksData = Readonly<{ - textTracks: ReadonlyArray; -}>; - -export type OnTextTrackDataChangedData = Readonly<{ - subtitleTracks: string; -}>; - -export type OnVideoTracksData = Readonly<{ - videoTracks: ReadonlyArray< - Readonly<{ - trackId: number; - codecs?: string; - width?: number; - height?: number; - bitrate?: number; - selected?: boolean; - }> - >; -}>; - -export type OnPlaybackData = Readonly<{ - playbackRate: number; -}>; - -export type OnVolumeChangeData = Readonly<{ - volume: number; -}>; - -export type OnExternalPlaybackChangeData = Readonly<{ - isExternalPlaybackActive: boolean; -}>; - -export type OnGetLicenseData = Readonly<{ - licenseUrl: string; - contentId: string; - spcBase64: string; -}>; - -export type OnPictureInPictureStatusChangedData = Readonly<{ - isActive: boolean; -}>; - -export type OnReceiveAdEventData = Readonly<{ - data?: Record; - event: AdEvent; -}>; - -export type OnVideoErrorData = Readonly<{ - error: OnVideoErrorDataDetails; - target?: number; // ios -}>; - -export type OnVideoErrorDataDetails = Readonly<{ - errorString?: string; // android - errorException?: string; // android - errorStackTrace?: string; // android - errorCode?: string; // android - error?: string; // ios - code?: number; // ios - localizedDescription?: string; // ios - localizedFailureReason?: string; // ios - localizedRecoverySuggestion?: string; // ios - domain?: string; // ios -}>; -export type OnAudioFocusChangedData = Readonly<{ - hasAudioFocus: boolean; -}>; - -export type OnBufferData = Readonly<{isBuffering: boolean}>; - -export type OnBandwidthUpdateData = Readonly< - | { - bitrate: number; - width: number; - height: number; - trackId: number; - } - | {bitrate: number} ->; +import type { + OnAudioFocusChangedData, + OnAudioTracksData, + OnBandwidthUpdateData, + OnBufferData, + OnExternalPlaybackChangeData, + OnLoadData, + OnLoadStartData, + OnPictureInPictureStatusChangedData, + OnPlaybackData, + OnPlaybackStateChangedData, + OnProgressData, + OnReceiveAdEventData, + OnSeekData, + OnTextTrackDataChangedData, + OnTextTracksData, + OnTimedMetadataData, + OnVideoAspectRatioData, + OnVideoErrorData, + OnVideoTracksData, + OnVolumeChangeData, +} from '../specs/VideoNativeComponent'; + +export type AudioTrack = OnAudioTracksData['audioTracks'][number]; +export type TextTrack = OnTextTracksData['textTracks'][number]; export interface ReactVideoEvents { onAudioBecomingNoisy?: () => void; //Android, iOS diff --git a/src/types/index.ts b/src/types/index.ts index e530a5069f..5742eac029 100644 --- a/src/types/index.ts +++ b/src/types/index.ts @@ -6,3 +6,4 @@ export {default as Orientation} from './Orientation'; export {default as ResizeMode} from './ResizeMode'; export {default as TextTrackType} from './TextTrackType'; export * from './video'; +export * from '../specs/VideoNativeComponent'; diff --git a/src/utils.ts b/src/utils.ts index 9af9c67b62..fe64820ee4 100644 --- a/src/utils.ts +++ b/src/utils.ts @@ -5,6 +5,14 @@ import type {ReactVideoSource, ReactVideoSourceProperties} from './types/video'; type Source = ImageSourcePropType | ReactVideoSource; +// eslint-disable-next-line @typescript-eslint/no-explicit-any +export function generateHeaderForNative(obj?: Record) { + if (!obj) { + return []; + } + return Object.entries(obj).map(([key, value]) => ({key, value})); +} + export function resolveAssetSourceForVideo( source: Source, ): ReactVideoSourceProperties { From 75c5c1cd93c2c93e6ba57dd0ed0bb87c98c45719 Mon Sep 17 00:00:00 2001 From: Krzysztof Moch Date: Thu, 7 Mar 2024 16:00:00 +0100 Subject: [PATCH 06/10] chore(example): bump `react-native` version (#3569) --- examples/basic/.gitignore | 12 +- examples/basic/Gemfile | 6 +- examples/basic/Gemfile.lock | 4 +- examples/basic/android/app/build.gradle | 1 - .../java/com/videoplayer/MainApplication.kt | 4 +- .../MainApplicationReactNativeHost.java | 116 --- .../components/MainComponentsRegistry.java | 36 - ...ApplicationTurboModuleManagerDelegate.java | 48 - examples/basic/android/build.gradle | 6 +- .../gradle/wrapper/gradle-wrapper.properties | 2 +- examples/basic/android/gradlew | 16 +- examples/basic/android/gradlew.bat | 22 +- examples/basic/ios/Podfile | 21 +- examples/basic/ios/Podfile.lock | 897 ++++++++++-------- .../ios/videoplayer.xcodeproj/project.pbxproj | 146 +-- .../contents.xcworkspacedata | 3 + examples/basic/ios/videoplayer/AppDelegate.mm | 4 +- examples/basic/ios/videoplayer/Info.plist | 2 +- examples/basic/metro.config.js | 4 +- examples/basic/package.json | 14 +- examples/basic/yarn.lock | 603 +++++++----- 21 files changed, 1009 insertions(+), 958 deletions(-) delete mode 100644 examples/basic/android/app/src/main/java/com/videoplayer/newarchitecture/MainApplicationReactNativeHost.java delete mode 100644 examples/basic/android/app/src/main/java/com/videoplayer/newarchitecture/components/MainComponentsRegistry.java delete mode 100644 examples/basic/android/app/src/main/java/com/videoplayer/newarchitecture/modules/MainApplicationTurboModuleManagerDelegate.java diff --git a/examples/basic/.gitignore b/examples/basic/.gitignore index 2423126f72..2de5345275 100644 --- a/examples/basic/.gitignore +++ b/examples/basic/.gitignore @@ -20,7 +20,7 @@ DerivedData *.hmap *.ipa *.xcuserstate -ios/.xcode.env.local +**/.xcode.env.local # Android/IntelliJ # @@ -60,5 +60,13 @@ buck-out/ *.jsbundle # Ruby / CocoaPods -/ios/Pods/ +**/Pods/ /vendor/bundle/ + +# Yarn +.yarn/* +!.yarn/patches +!.yarn/plugins +!.yarn/releases +!.yarn/sdks +!.yarn/versions diff --git a/examples/basic/Gemfile b/examples/basic/Gemfile index 6a7d5c7a49..8d72c37a80 100644 --- a/examples/basic/Gemfile +++ b/examples/basic/Gemfile @@ -3,5 +3,7 @@ source 'https://rubygems.org' # You may use http://rbenv.org/ or https://rvm.io/ to install and use this version ruby ">= 2.6.10" -gem 'cocoapods', '~> 1.13' -gem 'activesupport', '>= 6.1.7.3', '< 7.1.0' +# Cocoapods 1.15 introduced a bug which break the build. We will remove the upper +# bound in the template on Cocoapods with next React Native release. +gem 'cocoapods', '>= 1.13', '< 1.15' +gem 'activesupport', '>= 6.1.7.5', '< 7.1.0' diff --git a/examples/basic/Gemfile.lock b/examples/basic/Gemfile.lock index c4bc05a1bb..3f37065fb5 100644 --- a/examples/basic/Gemfile.lock +++ b/examples/basic/Gemfile.lock @@ -90,8 +90,8 @@ PLATFORMS ruby DEPENDENCIES - activesupport (>= 6.1.7.3, < 7.1.0) - cocoapods (~> 1.13) + activesupport (>= 6.1.7.5, < 7.1.0) + cocoapods (>= 1.13, < 1.15) RUBY VERSION ruby 2.7.5p203 diff --git a/examples/basic/android/app/build.gradle b/examples/basic/android/app/build.gradle index 456b316fe9..9966ecc948 100644 --- a/examples/basic/android/app/build.gradle +++ b/examples/basic/android/app/build.gradle @@ -112,7 +112,6 @@ android { dependencies { // The version of react-native is set by the React Native Gradle Plugin implementation("com.facebook.react:react-android") - implementation("com.facebook.react:flipper-integration") if (hermesEnabled.toBoolean()) { implementation("com.facebook.react:hermes-android") diff --git a/examples/basic/android/app/src/main/java/com/videoplayer/MainApplication.kt b/examples/basic/android/app/src/main/java/com/videoplayer/MainApplication.kt index 1cc61f2392..a1c5496d56 100644 --- a/examples/basic/android/app/src/main/java/com/videoplayer/MainApplication.kt +++ b/examples/basic/android/app/src/main/java/com/videoplayer/MainApplication.kt @@ -9,7 +9,6 @@ import com.facebook.react.ReactPackage import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint.load import com.facebook.react.defaults.DefaultReactHost.getDefaultReactHost import com.facebook.react.defaults.DefaultReactNativeHost -import com.facebook.react.flipper.ReactNativeFlipper import com.facebook.soloader.SoLoader import com.brentvatne.react.ReactVideoPackage @@ -33,7 +32,7 @@ class MainApplication : Application(), ReactApplication { } override val reactHost: ReactHost - get() = getDefaultReactHost(this.applicationContext, reactNativeHost) + get() = getDefaultReactHost(applicationContext, reactNativeHost) override fun onCreate() { super.onCreate() @@ -42,6 +41,5 @@ class MainApplication : Application(), ReactApplication { // If you opted-in for the New Architecture, we load the native entry point for this app. load() } - ReactNativeFlipper.initializeFlipper(this, reactNativeHost.reactInstanceManager) } } diff --git a/examples/basic/android/app/src/main/java/com/videoplayer/newarchitecture/MainApplicationReactNativeHost.java b/examples/basic/android/app/src/main/java/com/videoplayer/newarchitecture/MainApplicationReactNativeHost.java deleted file mode 100644 index 0271102180..0000000000 --- a/examples/basic/android/app/src/main/java/com/videoplayer/newarchitecture/MainApplicationReactNativeHost.java +++ /dev/null @@ -1,116 +0,0 @@ -package com.videoplayer.newarchitecture; - -import android.app.Application; -import androidx.annotation.NonNull; -import com.facebook.react.PackageList; -import com.facebook.react.ReactInstanceManager; -import com.facebook.react.ReactNativeHost; -import com.facebook.react.ReactPackage; -import com.facebook.react.ReactPackageTurboModuleManagerDelegate; -import com.facebook.react.bridge.JSIModulePackage; -import com.facebook.react.bridge.JSIModuleProvider; -import com.facebook.react.bridge.JSIModuleSpec; -import com.facebook.react.bridge.JSIModuleType; -import com.facebook.react.bridge.JavaScriptContextHolder; -import com.facebook.react.bridge.ReactApplicationContext; -import com.facebook.react.bridge.UIManager; -import com.facebook.react.fabric.ComponentFactory; -import com.facebook.react.fabric.CoreComponentsRegistry; -import com.facebook.react.fabric.FabricJSIModuleProvider; -import com.facebook.react.fabric.ReactNativeConfig; -import com.facebook.react.uimanager.ViewManagerRegistry; -import com.videoplayer.BuildConfig; -import com.videoplayer.newarchitecture.components.MainComponentsRegistry; -import com.videoplayer.newarchitecture.modules.MainApplicationTurboModuleManagerDelegate; -import java.util.ArrayList; -import java.util.List; - -/** - * A {@link ReactNativeHost} that helps you load everything needed for the New Architecture, both - * TurboModule delegates and the Fabric Renderer. - * - *

Please note that this class is used ONLY if you opt-in for the New Architecture (see the - * `newArchEnabled` property). Is ignored otherwise. - */ -public class MainApplicationReactNativeHost extends ReactNativeHost { - public MainApplicationReactNativeHost(Application application) { - super(application); - } - - @Override - public boolean getUseDeveloperSupport() { - return BuildConfig.DEBUG; - } - - @Override - protected List getPackages() { - List packages = new PackageList(this).getPackages(); - // Packages that cannot be autolinked yet can be added manually here, for example: - // packages.add(new MyReactNativePackage()); - // TurboModules must also be loaded here providing a valid TurboReactPackage implementation: - // packages.add(new TurboReactPackage() { ... }); - // If you have custom Fabric Components, their ViewManagers should also be loaded here - // inside a ReactPackage. - return packages; - } - - @Override - protected String getJSMainModuleName() { - return "src/index"; - } - - @NonNull - @Override - protected ReactPackageTurboModuleManagerDelegate.Builder - getReactPackageTurboModuleManagerDelegateBuilder() { - // Here we provide the ReactPackageTurboModuleManagerDelegate Builder. This is necessary - // for the new architecture and to use TurboModules correctly. - return new MainApplicationTurboModuleManagerDelegate.Builder(); - } - - @Override - protected JSIModulePackage getJSIModulePackage() { - return new JSIModulePackage() { - @Override - public List getJSIModules( - final ReactApplicationContext reactApplicationContext, - final JavaScriptContextHolder jsContext) { - final List specs = new ArrayList<>(); - - // Here we provide a new JSIModuleSpec that will be responsible of providing the - // custom Fabric Components. - specs.add( - new JSIModuleSpec() { - @Override - public JSIModuleType getJSIModuleType() { - return JSIModuleType.UIManager; - } - - @Override - public JSIModuleProvider getJSIModuleProvider() { - final ComponentFactory componentFactory = new ComponentFactory(); - CoreComponentsRegistry.register(componentFactory); - - // Here we register a Components Registry. - // The one that is generated with the template contains no components - // and just provides you the one from React Native core. - MainComponentsRegistry.register(componentFactory); - - final ReactInstanceManager reactInstanceManager = getReactInstanceManager(); - - ViewManagerRegistry viewManagerRegistry = - new ViewManagerRegistry( - reactInstanceManager.getOrCreateViewManagers(reactApplicationContext)); - - return new FabricJSIModuleProvider( - reactApplicationContext, - componentFactory, - ReactNativeConfig.DEFAULT_CONFIG, - viewManagerRegistry); - } - }); - return specs; - } - }; - } -} diff --git a/examples/basic/android/app/src/main/java/com/videoplayer/newarchitecture/components/MainComponentsRegistry.java b/examples/basic/android/app/src/main/java/com/videoplayer/newarchitecture/components/MainComponentsRegistry.java deleted file mode 100644 index 78e765fe7c..0000000000 --- a/examples/basic/android/app/src/main/java/com/videoplayer/newarchitecture/components/MainComponentsRegistry.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.videoplayer.newarchitecture.components; - -import com.facebook.jni.HybridData; -import com.facebook.proguard.annotations.DoNotStrip; -import com.facebook.react.fabric.ComponentFactory; -import com.facebook.soloader.SoLoader; - -/** - * Class responsible to load the custom Fabric Components. This class has native methods and needs a - * corresponding C++ implementation/header file to work correctly (already placed inside the jni/ - * folder for you). - * - *

Please note that this class is used ONLY if you opt-in for the New Architecture (see the - * `newArchEnabled` property). Is ignored otherwise. - */ -@DoNotStrip -public class MainComponentsRegistry { - static { - SoLoader.loadLibrary("fabricjni"); - } - - @DoNotStrip private final HybridData mHybridData; - - @DoNotStrip - private native HybridData initHybrid(ComponentFactory componentFactory); - - @DoNotStrip - private MainComponentsRegistry(ComponentFactory componentFactory) { - mHybridData = initHybrid(componentFactory); - } - - @DoNotStrip - public static MainComponentsRegistry register(ComponentFactory componentFactory) { - return new MainComponentsRegistry(componentFactory); - } -} diff --git a/examples/basic/android/app/src/main/java/com/videoplayer/newarchitecture/modules/MainApplicationTurboModuleManagerDelegate.java b/examples/basic/android/app/src/main/java/com/videoplayer/newarchitecture/modules/MainApplicationTurboModuleManagerDelegate.java deleted file mode 100644 index a86686222e..0000000000 --- a/examples/basic/android/app/src/main/java/com/videoplayer/newarchitecture/modules/MainApplicationTurboModuleManagerDelegate.java +++ /dev/null @@ -1,48 +0,0 @@ -package com.videoplayer.newarchitecture.modules; - -import com.facebook.jni.HybridData; -import com.facebook.react.ReactPackage; -import com.facebook.react.ReactPackageTurboModuleManagerDelegate; -import com.facebook.react.bridge.ReactApplicationContext; -import com.facebook.soloader.SoLoader; -import java.util.List; - -/** - * Class responsible to load the TurboModules. This class has native methods and needs a - * corresponding C++ implementation/header file to work correctly (already placed inside the jni/ - * folder for you). - * - *

Please note that this class is used ONLY if you opt-in for the New Architecture (see the - * `newArchEnabled` property). Is ignored otherwise. - */ -public class MainApplicationTurboModuleManagerDelegate - extends ReactPackageTurboModuleManagerDelegate { - - private static volatile boolean sIsSoLibraryLoaded; - - protected MainApplicationTurboModuleManagerDelegate( - ReactApplicationContext reactApplicationContext, List packages) { - super(reactApplicationContext, packages); - } - - protected native HybridData initHybrid(); - - native boolean canCreateTurboModule(String moduleName); - - public static class Builder extends ReactPackageTurboModuleManagerDelegate.Builder { - protected MainApplicationTurboModuleManagerDelegate build( - ReactApplicationContext context, List packages) { - return new MainApplicationTurboModuleManagerDelegate(context, packages); - } - } - - @Override - protected synchronized void maybeLoadOtherSoLibraries() { - if (!sIsSoLibraryLoaded) { - // If you change the name of your application .so file in the Android.mk file, - // make sure you update the name here as well. - SoLoader.loadLibrary("videoplayer_appmodules"); - sIsSoLibraryLoaded = true; - } - } -} diff --git a/examples/basic/android/build.gradle b/examples/basic/android/build.gradle index 777def8fcf..6278ed2390 100644 --- a/examples/basic/android/build.gradle +++ b/examples/basic/android/build.gradle @@ -3,11 +3,11 @@ buildscript { ext { buildToolsVersion = "34.0.0" - minSdkVersion = 21 + minSdkVersion = 23 compileSdkVersion = 34 targetSdkVersion = 34 - ndkVersion = "25.1.8937393" - kotlinVersion = "1.8.0" + ndkVersion = "26.1.10909125" + kotlinVersion = "1.9.22" RNVUseExoplayerIMA = System.getenv("RNV_SAMPLE_ENABLE_ADS") ?: true } diff --git a/examples/basic/android/gradle/wrapper/gradle-wrapper.properties b/examples/basic/android/gradle/wrapper/gradle-wrapper.properties index d11cdd907d..2ea3535dc0 100644 --- a/examples/basic/android/gradle/wrapper/gradle-wrapper.properties +++ b/examples/basic/android/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.3-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.6-all.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME diff --git a/examples/basic/android/gradlew b/examples/basic/android/gradlew index 0adc8e1a53..31042a6773 100755 --- a/examples/basic/android/gradlew +++ b/examples/basic/android/gradlew @@ -145,7 +145,7 @@ if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then case $MAX_FD in #( max*) # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked. - # shellcheck disable=SC3045 + # shellcheck disable=SC2039,SC3045 MAX_FD=$( ulimit -H -n ) || warn "Could not query maximum file descriptor limit" esac @@ -153,7 +153,7 @@ if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then '' | soft) :;; #( *) # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked. - # shellcheck disable=SC3045 + # shellcheck disable=SC2039,SC3045 ulimit -n "$MAX_FD" || warn "Could not set maximum file descriptor limit to $MAX_FD" esac @@ -202,11 +202,11 @@ fi # Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' -# Collect all arguments for the java command; -# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of -# shell script including quotes and variable substitutions, so put them in -# double quotes to make sure that they get re-expanded; and -# * put everything else in single quotes, so that it's not re-expanded. +# Collect all arguments for the java command: +# * DEFAULT_JVM_OPTS, JAVA_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments, +# and any embedded shellness will be escaped. +# * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be +# treated as '${Hostname}' itself on the command line. set -- \ "-Dorg.gradle.appname=$APP_BASE_NAME" \ @@ -246,4 +246,4 @@ eval "set -- $( tr '\n' ' ' )" '"$@"' -exec "$JAVACMD" "$@" +exec "$JAVACMD" "$@" \ No newline at end of file diff --git a/examples/basic/android/gradlew.bat b/examples/basic/android/gradlew.bat index 6689b85bee..13ba5d3cb8 100644 --- a/examples/basic/android/gradlew.bat +++ b/examples/basic/android/gradlew.bat @@ -43,11 +43,11 @@ set JAVA_EXE=java.exe %JAVA_EXE% -version >NUL 2>&1 if %ERRORLEVEL% equ 0 goto execute -echo. -echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. +echo. 1>&2 +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2 +echo. 1>&2 +echo Please set the JAVA_HOME variable in your environment to match the 1>&2 +echo location of your Java installation. 1>&2 goto fail @@ -57,11 +57,11 @@ set JAVA_EXE=%JAVA_HOME%/bin/java.exe if exist "%JAVA_EXE%" goto execute -echo. -echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. +echo. 1>&2 +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2 +echo. 1>&2 +echo Please set the JAVA_HOME variable in your environment to match the 1>&2 +echo location of your Java installation. 1>&2 goto fail @@ -89,4 +89,4 @@ exit /b %EXIT_CODE% :mainEnd if "%OS%"=="Windows_NT" endlocal -:omega +:omega \ No newline at end of file diff --git a/examples/basic/ios/Podfile b/examples/basic/ios/Podfile index 22697dbabc..ab00f0854d 100644 --- a/examples/basic/ios/Podfile +++ b/examples/basic/ios/Podfile @@ -8,16 +8,6 @@ require Pod::Executable.execute_command('node', ['-p', platform :ios, min_ios_version_supported prepare_react_native_project! -# If you are using a `react-native-flipper` your iOS build will fail when `NO_FLIPPER=1` is set. -# because `react-native-flipper` depends on (FlipperKit,...) that will be excluded -# -# To fix this you can also exclude `react-native-flipper` using a `react-native.config.js` -# ```js -# module.exports = { -# dependencies: { -# ...(process.env.NO_FLIPPER ? { 'react-native-flipper': { platforms: { ios: null } } } : {}), -# ``` -flipper_config = ENV['NO_FLIPPER'] == "1" ? FlipperConfiguration.disabled : FlipperConfiguration.enabled linkage = ENV['USE_FRAMEWORKS'] if linkage != nil @@ -42,14 +32,6 @@ target 'videoplayer' do use_react_native!( :path => config[:reactNativePath], - # Hermes is now enabled by default. Disable by setting this flag to false. - :hermes_enabled => flags[:hermes_enabled], - :fabric_enabled => flags[:fabric_enabled], - # Enables Flipper. - # - # Note that if you have use_frameworks! enabled, Flipper will not work and - # you should disable the next line. - # :flipper_configuration => flipper_config, # An absolute path to your application root. :app_path => "#{Pod::Config.instance.installation_root}/.." ) @@ -66,7 +48,8 @@ target 'videoplayer' do react_native_post_install( installer, config[:reactNativePath], - :mac_catalyst_enabled => false + :mac_catalyst_enabled => false, + # :ccache_enabled => true ) end end diff --git a/examples/basic/ios/Podfile.lock b/examples/basic/ios/Podfile.lock index eb2298c057..df02ef57ed 100644 --- a/examples/basic/ios/Podfile.lock +++ b/examples/basic/ios/Podfile.lock @@ -1,327 +1,363 @@ PODS: - boost (1.83.0) - DoubleConversion (1.1.6) - - FBLazyVector (0.73.2) - - FBReactNativeSpec (0.73.2): - - RCT-Folly (= 2022.05.16.00) - - RCTRequired (= 0.73.2) - - RCTTypeSafety (= 0.73.2) - - React-Core (= 0.73.2) - - React-jsi (= 0.73.2) - - ReactCommon/turbomodule/core (= 0.73.2) - - fmt (6.2.1) + - FBLazyVector (0.74.0-rc.2) + - fmt (9.1.0) - glog (0.3.5) - - hermes-engine (0.73.2): - - hermes-engine/Pre-built (= 0.73.2) - - hermes-engine/Pre-built (0.73.2) - - libevent (2.1.12) - - PromisesObjC (2.3.1) - - PromisesSwift (2.3.1): - - PromisesObjC (= 2.3.1) - - RCT-Folly (2022.05.16.00): + - hermes-engine (0.74.0-rc.2): + - hermes-engine/Pre-built (= 0.74.0-rc.2) + - hermes-engine/Pre-built (0.74.0-rc.2) + - PromisesObjC (2.4.0) + - PromisesSwift (2.4.0): + - PromisesObjC (= 2.4.0) + - RCT-Folly (2024.01.01.00): - boost - DoubleConversion - - fmt (~> 6.2.1) + - fmt (= 9.1.0) - glog - - RCT-Folly/Default (= 2022.05.16.00) - - RCT-Folly/Default (2022.05.16.00): + - RCT-Folly/Default (= 2024.01.01.00) + - RCT-Folly/Default (2024.01.01.00): - boost - DoubleConversion - - fmt (~> 6.2.1) + - fmt (= 9.1.0) - glog - - RCT-Folly/Fabric (2022.05.16.00): + - RCT-Folly/Fabric (2024.01.01.00): - boost - DoubleConversion - - fmt (~> 6.2.1) + - fmt (= 9.1.0) - glog - - RCT-Folly/Futures (2022.05.16.00): - - boost - - DoubleConversion - - fmt (~> 6.2.1) - - glog - - libevent - - RCTRequired (0.73.2) - - RCTTypeSafety (0.73.2): - - FBLazyVector (= 0.73.2) - - RCTRequired (= 0.73.2) - - React-Core (= 0.73.2) - - React (0.73.2): - - React-Core (= 0.73.2) - - React-Core/DevSupport (= 0.73.2) - - React-Core/RCTWebSocket (= 0.73.2) - - React-RCTActionSheet (= 0.73.2) - - React-RCTAnimation (= 0.73.2) - - React-RCTBlob (= 0.73.2) - - React-RCTImage (= 0.73.2) - - React-RCTLinking (= 0.73.2) - - React-RCTNetwork (= 0.73.2) - - React-RCTSettings (= 0.73.2) - - React-RCTText (= 0.73.2) - - React-RCTVibration (= 0.73.2) - - React-callinvoker (0.73.2) - - React-Codegen (0.73.2): + - RCTDeprecation (0.74.0-rc.2) + - RCTRequired (0.74.0-rc.2) + - RCTTypeSafety (0.74.0-rc.2): + - FBLazyVector (= 0.74.0-rc.2) + - RCTRequired (= 0.74.0-rc.2) + - React-Core (= 0.74.0-rc.2) + - React (0.74.0-rc.2): + - React-Core (= 0.74.0-rc.2) + - React-Core/DevSupport (= 0.74.0-rc.2) + - React-Core/RCTWebSocket (= 0.74.0-rc.2) + - React-RCTActionSheet (= 0.74.0-rc.2) + - React-RCTAnimation (= 0.74.0-rc.2) + - React-RCTBlob (= 0.74.0-rc.2) + - React-RCTImage (= 0.74.0-rc.2) + - React-RCTLinking (= 0.74.0-rc.2) + - React-RCTNetwork (= 0.74.0-rc.2) + - React-RCTSettings (= 0.74.0-rc.2) + - React-RCTText (= 0.74.0-rc.2) + - React-RCTVibration (= 0.74.0-rc.2) + - React-callinvoker (0.74.0-rc.2) + - React-Codegen (0.74.0-rc.2): - DoubleConversion - - FBReactNativeSpec - glog - hermes-engine - RCT-Folly - RCTRequired - RCTTypeSafety - React-Core + - React-debug + - React-Fabric + - React-FabricImage + - React-featureflags + - React-graphics - React-jsi - React-jsiexecutor - React-NativeModulesApple - - React-rncore + - React-rendererdebug + - React-utils - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core - - React-Core (0.73.2): + - React-Core (0.74.0-rc.2): - glog - hermes-engine - - RCT-Folly (= 2022.05.16.00) - - React-Core/Default (= 0.73.2) + - RCT-Folly (= 2024.01.01.00) + - RCTDeprecation + - React-Core/Default (= 0.74.0-rc.2) - React-cxxreact + - React-featureflags - React-hermes - React-jsi - React-jsiexecutor + - React-jsinspector - React-perflogger - React-runtimescheduler - React-utils - - SocketRocket (= 0.6.1) + - SocketRocket (= 0.7.0) - Yoga - - React-Core/CoreModulesHeaders (0.73.2): + - React-Core/CoreModulesHeaders (0.74.0-rc.2): - glog - hermes-engine - - RCT-Folly (= 2022.05.16.00) + - RCT-Folly (= 2024.01.01.00) + - RCTDeprecation - React-Core/Default - React-cxxreact + - React-featureflags - React-hermes - React-jsi - React-jsiexecutor + - React-jsinspector - React-perflogger - React-runtimescheduler - React-utils - - SocketRocket (= 0.6.1) + - SocketRocket (= 0.7.0) - Yoga - - React-Core/Default (0.73.2): + - React-Core/Default (0.74.0-rc.2): - glog - hermes-engine - - RCT-Folly (= 2022.05.16.00) + - RCT-Folly (= 2024.01.01.00) + - RCTDeprecation - React-cxxreact + - React-featureflags - React-hermes - React-jsi - React-jsiexecutor + - React-jsinspector - React-perflogger - React-runtimescheduler - React-utils - - SocketRocket (= 0.6.1) + - SocketRocket (= 0.7.0) - Yoga - - React-Core/DevSupport (0.73.2): + - React-Core/DevSupport (0.74.0-rc.2): - glog - hermes-engine - - RCT-Folly (= 2022.05.16.00) - - React-Core/Default (= 0.73.2) - - React-Core/RCTWebSocket (= 0.73.2) + - RCT-Folly (= 2024.01.01.00) + - RCTDeprecation + - React-Core/Default (= 0.74.0-rc.2) + - React-Core/RCTWebSocket (= 0.74.0-rc.2) - React-cxxreact + - React-featureflags - React-hermes - React-jsi - React-jsiexecutor - - React-jsinspector (= 0.73.2) + - React-jsinspector - React-perflogger - React-runtimescheduler - React-utils - - SocketRocket (= 0.6.1) + - SocketRocket (= 0.7.0) - Yoga - - React-Core/RCTActionSheetHeaders (0.73.2): + - React-Core/RCTActionSheetHeaders (0.74.0-rc.2): - glog - hermes-engine - - RCT-Folly (= 2022.05.16.00) + - RCT-Folly (= 2024.01.01.00) + - RCTDeprecation - React-Core/Default - React-cxxreact + - React-featureflags - React-hermes - React-jsi - React-jsiexecutor + - React-jsinspector - React-perflogger - React-runtimescheduler - React-utils - - SocketRocket (= 0.6.1) + - SocketRocket (= 0.7.0) - Yoga - - React-Core/RCTAnimationHeaders (0.73.2): + - React-Core/RCTAnimationHeaders (0.74.0-rc.2): - glog - hermes-engine - - RCT-Folly (= 2022.05.16.00) + - RCT-Folly (= 2024.01.01.00) + - RCTDeprecation - React-Core/Default - React-cxxreact + - React-featureflags - React-hermes - React-jsi - React-jsiexecutor + - React-jsinspector - React-perflogger - React-runtimescheduler - React-utils - - SocketRocket (= 0.6.1) + - SocketRocket (= 0.7.0) - Yoga - - React-Core/RCTBlobHeaders (0.73.2): + - React-Core/RCTBlobHeaders (0.74.0-rc.2): - glog - hermes-engine - - RCT-Folly (= 2022.05.16.00) + - RCT-Folly (= 2024.01.01.00) + - RCTDeprecation - React-Core/Default - React-cxxreact + - React-featureflags - React-hermes - React-jsi - React-jsiexecutor + - React-jsinspector - React-perflogger - React-runtimescheduler - React-utils - - SocketRocket (= 0.6.1) + - SocketRocket (= 0.7.0) - Yoga - - React-Core/RCTImageHeaders (0.73.2): + - React-Core/RCTImageHeaders (0.74.0-rc.2): - glog - hermes-engine - - RCT-Folly (= 2022.05.16.00) + - RCT-Folly (= 2024.01.01.00) + - RCTDeprecation - React-Core/Default - React-cxxreact + - React-featureflags - React-hermes - React-jsi - React-jsiexecutor + - React-jsinspector - React-perflogger - React-runtimescheduler - React-utils - - SocketRocket (= 0.6.1) + - SocketRocket (= 0.7.0) - Yoga - - React-Core/RCTLinkingHeaders (0.73.2): + - React-Core/RCTLinkingHeaders (0.74.0-rc.2): - glog - hermes-engine - - RCT-Folly (= 2022.05.16.00) + - RCT-Folly (= 2024.01.01.00) + - RCTDeprecation - React-Core/Default - React-cxxreact + - React-featureflags - React-hermes - React-jsi - React-jsiexecutor + - React-jsinspector - React-perflogger - React-runtimescheduler - React-utils - - SocketRocket (= 0.6.1) + - SocketRocket (= 0.7.0) - Yoga - - React-Core/RCTNetworkHeaders (0.73.2): + - React-Core/RCTNetworkHeaders (0.74.0-rc.2): - glog - hermes-engine - - RCT-Folly (= 2022.05.16.00) + - RCT-Folly (= 2024.01.01.00) + - RCTDeprecation - React-Core/Default - React-cxxreact + - React-featureflags - React-hermes - React-jsi - React-jsiexecutor + - React-jsinspector - React-perflogger - React-runtimescheduler - React-utils - - SocketRocket (= 0.6.1) + - SocketRocket (= 0.7.0) - Yoga - - React-Core/RCTSettingsHeaders (0.73.2): + - React-Core/RCTSettingsHeaders (0.74.0-rc.2): - glog - hermes-engine - - RCT-Folly (= 2022.05.16.00) + - RCT-Folly (= 2024.01.01.00) + - RCTDeprecation - React-Core/Default - React-cxxreact + - React-featureflags - React-hermes - React-jsi - React-jsiexecutor + - React-jsinspector - React-perflogger - React-runtimescheduler - React-utils - - SocketRocket (= 0.6.1) + - SocketRocket (= 0.7.0) - Yoga - - React-Core/RCTTextHeaders (0.73.2): + - React-Core/RCTTextHeaders (0.74.0-rc.2): - glog - hermes-engine - - RCT-Folly (= 2022.05.16.00) + - RCT-Folly (= 2024.01.01.00) + - RCTDeprecation - React-Core/Default - React-cxxreact + - React-featureflags - React-hermes - React-jsi - React-jsiexecutor + - React-jsinspector - React-perflogger - React-runtimescheduler - React-utils - - SocketRocket (= 0.6.1) + - SocketRocket (= 0.7.0) - Yoga - - React-Core/RCTVibrationHeaders (0.73.2): + - React-Core/RCTVibrationHeaders (0.74.0-rc.2): - glog - hermes-engine - - RCT-Folly (= 2022.05.16.00) + - RCT-Folly (= 2024.01.01.00) + - RCTDeprecation - React-Core/Default - React-cxxreact + - React-featureflags - React-hermes - React-jsi - React-jsiexecutor + - React-jsinspector - React-perflogger - React-runtimescheduler - React-utils - - SocketRocket (= 0.6.1) + - SocketRocket (= 0.7.0) - Yoga - - React-Core/RCTWebSocket (0.73.2): + - React-Core/RCTWebSocket (0.74.0-rc.2): - glog - hermes-engine - - RCT-Folly (= 2022.05.16.00) - - React-Core/Default (= 0.73.2) + - RCT-Folly (= 2024.01.01.00) + - RCTDeprecation + - React-Core/Default (= 0.74.0-rc.2) - React-cxxreact + - React-featureflags - React-hermes - React-jsi - React-jsiexecutor + - React-jsinspector - React-perflogger - React-runtimescheduler - React-utils - - SocketRocket (= 0.6.1) + - SocketRocket (= 0.7.0) - Yoga - - React-CoreModules (0.73.2): - - RCT-Folly (= 2022.05.16.00) - - RCTTypeSafety (= 0.73.2) + - React-CoreModules (0.74.0-rc.2): + - DoubleConversion + - fmt (= 9.1.0) + - RCT-Folly (= 2024.01.01.00) + - RCTTypeSafety (= 0.74.0-rc.2) - React-Codegen - - React-Core/CoreModulesHeaders (= 0.73.2) - - React-jsi (= 0.73.2) + - React-Core/CoreModulesHeaders (= 0.74.0-rc.2) + - React-jsi (= 0.74.0-rc.2) + - React-jsinspector - React-NativeModulesApple - React-RCTBlob - - React-RCTImage (= 0.73.2) + - React-RCTImage (= 0.74.0-rc.2) - ReactCommon - - SocketRocket (= 0.6.1) - - React-cxxreact (0.73.2): + - SocketRocket (= 0.7.0) + - React-cxxreact (0.74.0-rc.2): - boost (= 1.83.0) - DoubleConversion - - fmt (~> 6.2.1) + - fmt (= 9.1.0) - glog - hermes-engine - - RCT-Folly (= 2022.05.16.00) - - React-callinvoker (= 0.73.2) - - React-debug (= 0.73.2) - - React-jsi (= 0.73.2) - - React-jsinspector (= 0.73.2) - - React-logger (= 0.73.2) - - React-perflogger (= 0.73.2) - - React-runtimeexecutor (= 0.73.2) - - React-debug (0.73.2) - - React-Fabric (0.73.2): + - RCT-Folly (= 2024.01.01.00) + - React-callinvoker (= 0.74.0-rc.2) + - React-debug (= 0.74.0-rc.2) + - React-jsi (= 0.74.0-rc.2) + - React-jsinspector + - React-logger (= 0.74.0-rc.2) + - React-perflogger (= 0.74.0-rc.2) + - React-runtimeexecutor (= 0.74.0-rc.2) + - React-debug (0.74.0-rc.2) + - React-Fabric (0.74.0-rc.2): - DoubleConversion - - fmt (~> 6.2.1) + - fmt (= 9.1.0) - glog - hermes-engine - - RCT-Folly/Fabric (= 2022.05.16.00) + - RCT-Folly/Fabric (= 2024.01.01.00) - RCTRequired - RCTTypeSafety - React-Core - React-cxxreact - React-debug - - React-Fabric/animations (= 0.73.2) - - React-Fabric/attributedstring (= 0.73.2) - - React-Fabric/componentregistry (= 0.73.2) - - React-Fabric/componentregistrynative (= 0.73.2) - - React-Fabric/components (= 0.73.2) - - React-Fabric/core (= 0.73.2) - - React-Fabric/imagemanager (= 0.73.2) - - React-Fabric/leakchecker (= 0.73.2) - - React-Fabric/mounting (= 0.73.2) - - React-Fabric/scheduler (= 0.73.2) - - React-Fabric/telemetry (= 0.73.2) - - React-Fabric/templateprocessor (= 0.73.2) - - React-Fabric/textlayoutmanager (= 0.73.2) - - React-Fabric/uimanager (= 0.73.2) + - React-Fabric/animations (= 0.74.0-rc.2) + - React-Fabric/attributedstring (= 0.74.0-rc.2) + - React-Fabric/componentregistry (= 0.74.0-rc.2) + - React-Fabric/componentregistrynative (= 0.74.0-rc.2) + - React-Fabric/components (= 0.74.0-rc.2) + - React-Fabric/core (= 0.74.0-rc.2) + - React-Fabric/imagemanager (= 0.74.0-rc.2) + - React-Fabric/leakchecker (= 0.74.0-rc.2) + - React-Fabric/mounting (= 0.74.0-rc.2) + - React-Fabric/scheduler (= 0.74.0-rc.2) + - React-Fabric/telemetry (= 0.74.0-rc.2) + - React-Fabric/templateprocessor (= 0.74.0-rc.2) + - React-Fabric/textlayoutmanager (= 0.74.0-rc.2) + - React-Fabric/uimanager (= 0.74.0-rc.2) - React-graphics - React-jsi - React-jsiexecutor @@ -330,12 +366,12 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-Fabric/animations (0.73.2): + - React-Fabric/animations (0.74.0-rc.2): - DoubleConversion - - fmt (~> 6.2.1) + - fmt (= 9.1.0) - glog - hermes-engine - - RCT-Folly/Fabric (= 2022.05.16.00) + - RCT-Folly/Fabric (= 2024.01.01.00) - RCTRequired - RCTTypeSafety - React-Core @@ -349,12 +385,12 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-Fabric/attributedstring (0.73.2): + - React-Fabric/attributedstring (0.74.0-rc.2): - DoubleConversion - - fmt (~> 6.2.1) + - fmt (= 9.1.0) - glog - hermes-engine - - RCT-Folly/Fabric (= 2022.05.16.00) + - RCT-Folly/Fabric (= 2024.01.01.00) - RCTRequired - RCTTypeSafety - React-Core @@ -368,12 +404,12 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-Fabric/componentregistry (0.73.2): + - React-Fabric/componentregistry (0.74.0-rc.2): - DoubleConversion - - fmt (~> 6.2.1) + - fmt (= 9.1.0) - glog - hermes-engine - - RCT-Folly/Fabric (= 2022.05.16.00) + - RCT-Folly/Fabric (= 2024.01.01.00) - RCTRequired - RCTTypeSafety - React-Core @@ -387,12 +423,12 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-Fabric/componentregistrynative (0.73.2): + - React-Fabric/componentregistrynative (0.74.0-rc.2): - DoubleConversion - - fmt (~> 6.2.1) + - fmt (= 9.1.0) - glog - hermes-engine - - RCT-Folly/Fabric (= 2022.05.16.00) + - RCT-Folly/Fabric (= 2024.01.01.00) - RCTRequired - RCTTypeSafety - React-Core @@ -406,28 +442,28 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-Fabric/components (0.73.2): + - React-Fabric/components (0.74.0-rc.2): - DoubleConversion - - fmt (~> 6.2.1) + - fmt (= 9.1.0) - glog - hermes-engine - - RCT-Folly/Fabric (= 2022.05.16.00) + - RCT-Folly/Fabric (= 2024.01.01.00) - RCTRequired - RCTTypeSafety - React-Core - React-cxxreact - React-debug - - React-Fabric/components/inputaccessory (= 0.73.2) - - React-Fabric/components/legacyviewmanagerinterop (= 0.73.2) - - React-Fabric/components/modal (= 0.73.2) - - React-Fabric/components/rncore (= 0.73.2) - - React-Fabric/components/root (= 0.73.2) - - React-Fabric/components/safeareaview (= 0.73.2) - - React-Fabric/components/scrollview (= 0.73.2) - - React-Fabric/components/text (= 0.73.2) - - React-Fabric/components/textinput (= 0.73.2) - - React-Fabric/components/unimplementedview (= 0.73.2) - - React-Fabric/components/view (= 0.73.2) + - React-Fabric/components/inputaccessory (= 0.74.0-rc.2) + - React-Fabric/components/legacyviewmanagerinterop (= 0.74.0-rc.2) + - React-Fabric/components/modal (= 0.74.0-rc.2) + - React-Fabric/components/rncore (= 0.74.0-rc.2) + - React-Fabric/components/root (= 0.74.0-rc.2) + - React-Fabric/components/safeareaview (= 0.74.0-rc.2) + - React-Fabric/components/scrollview (= 0.74.0-rc.2) + - React-Fabric/components/text (= 0.74.0-rc.2) + - React-Fabric/components/textinput (= 0.74.0-rc.2) + - React-Fabric/components/unimplementedview (= 0.74.0-rc.2) + - React-Fabric/components/view (= 0.74.0-rc.2) - React-graphics - React-jsi - React-jsiexecutor @@ -436,12 +472,12 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-Fabric/components/inputaccessory (0.73.2): + - React-Fabric/components/inputaccessory (0.74.0-rc.2): - DoubleConversion - - fmt (~> 6.2.1) + - fmt (= 9.1.0) - glog - hermes-engine - - RCT-Folly/Fabric (= 2022.05.16.00) + - RCT-Folly/Fabric (= 2024.01.01.00) - RCTRequired - RCTTypeSafety - React-Core @@ -455,12 +491,12 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-Fabric/components/legacyviewmanagerinterop (0.73.2): + - React-Fabric/components/legacyviewmanagerinterop (0.74.0-rc.2): - DoubleConversion - - fmt (~> 6.2.1) + - fmt (= 9.1.0) - glog - hermes-engine - - RCT-Folly/Fabric (= 2022.05.16.00) + - RCT-Folly/Fabric (= 2024.01.01.00) - RCTRequired - RCTTypeSafety - React-Core @@ -474,12 +510,12 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-Fabric/components/modal (0.73.2): + - React-Fabric/components/modal (0.74.0-rc.2): - DoubleConversion - - fmt (~> 6.2.1) + - fmt (= 9.1.0) - glog - hermes-engine - - RCT-Folly/Fabric (= 2022.05.16.00) + - RCT-Folly/Fabric (= 2024.01.01.00) - RCTRequired - RCTTypeSafety - React-Core @@ -493,12 +529,12 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-Fabric/components/rncore (0.73.2): + - React-Fabric/components/rncore (0.74.0-rc.2): - DoubleConversion - - fmt (~> 6.2.1) + - fmt (= 9.1.0) - glog - hermes-engine - - RCT-Folly/Fabric (= 2022.05.16.00) + - RCT-Folly/Fabric (= 2024.01.01.00) - RCTRequired - RCTTypeSafety - React-Core @@ -512,12 +548,12 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-Fabric/components/root (0.73.2): + - React-Fabric/components/root (0.74.0-rc.2): - DoubleConversion - - fmt (~> 6.2.1) + - fmt (= 9.1.0) - glog - hermes-engine - - RCT-Folly/Fabric (= 2022.05.16.00) + - RCT-Folly/Fabric (= 2024.01.01.00) - RCTRequired - RCTTypeSafety - React-Core @@ -531,12 +567,12 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-Fabric/components/safeareaview (0.73.2): + - React-Fabric/components/safeareaview (0.74.0-rc.2): - DoubleConversion - - fmt (~> 6.2.1) + - fmt (= 9.1.0) - glog - hermes-engine - - RCT-Folly/Fabric (= 2022.05.16.00) + - RCT-Folly/Fabric (= 2024.01.01.00) - RCTRequired - RCTTypeSafety - React-Core @@ -550,12 +586,12 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-Fabric/components/scrollview (0.73.2): + - React-Fabric/components/scrollview (0.74.0-rc.2): - DoubleConversion - - fmt (~> 6.2.1) + - fmt (= 9.1.0) - glog - hermes-engine - - RCT-Folly/Fabric (= 2022.05.16.00) + - RCT-Folly/Fabric (= 2024.01.01.00) - RCTRequired - RCTTypeSafety - React-Core @@ -569,12 +605,12 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-Fabric/components/text (0.73.2): + - React-Fabric/components/text (0.74.0-rc.2): - DoubleConversion - - fmt (~> 6.2.1) + - fmt (= 9.1.0) - glog - hermes-engine - - RCT-Folly/Fabric (= 2022.05.16.00) + - RCT-Folly/Fabric (= 2024.01.01.00) - RCTRequired - RCTTypeSafety - React-Core @@ -588,12 +624,12 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-Fabric/components/textinput (0.73.2): + - React-Fabric/components/textinput (0.74.0-rc.2): - DoubleConversion - - fmt (~> 6.2.1) + - fmt (= 9.1.0) - glog - hermes-engine - - RCT-Folly/Fabric (= 2022.05.16.00) + - RCT-Folly/Fabric (= 2024.01.01.00) - RCTRequired - RCTTypeSafety - React-Core @@ -607,12 +643,12 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-Fabric/components/unimplementedview (0.73.2): + - React-Fabric/components/unimplementedview (0.74.0-rc.2): - DoubleConversion - - fmt (~> 6.2.1) + - fmt (= 9.1.0) - glog - hermes-engine - - RCT-Folly/Fabric (= 2022.05.16.00) + - RCT-Folly/Fabric (= 2024.01.01.00) - RCTRequired - RCTTypeSafety - React-Core @@ -626,12 +662,12 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-Fabric/components/view (0.73.2): + - React-Fabric/components/view (0.74.0-rc.2): - DoubleConversion - - fmt (~> 6.2.1) + - fmt (= 9.1.0) - glog - hermes-engine - - RCT-Folly/Fabric (= 2022.05.16.00) + - RCT-Folly/Fabric (= 2024.01.01.00) - RCTRequired - RCTTypeSafety - React-Core @@ -646,12 +682,12 @@ PODS: - React-utils - ReactCommon/turbomodule/core - Yoga - - React-Fabric/core (0.73.2): + - React-Fabric/core (0.74.0-rc.2): - DoubleConversion - - fmt (~> 6.2.1) + - fmt (= 9.1.0) - glog - hermes-engine - - RCT-Folly/Fabric (= 2022.05.16.00) + - RCT-Folly/Fabric (= 2024.01.01.00) - RCTRequired - RCTTypeSafety - React-Core @@ -665,12 +701,12 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-Fabric/imagemanager (0.73.2): + - React-Fabric/imagemanager (0.74.0-rc.2): - DoubleConversion - - fmt (~> 6.2.1) + - fmt (= 9.1.0) - glog - hermes-engine - - RCT-Folly/Fabric (= 2022.05.16.00) + - RCT-Folly/Fabric (= 2024.01.01.00) - RCTRequired - RCTTypeSafety - React-Core @@ -684,12 +720,12 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-Fabric/leakchecker (0.73.2): + - React-Fabric/leakchecker (0.74.0-rc.2): - DoubleConversion - - fmt (~> 6.2.1) + - fmt (= 9.1.0) - glog - hermes-engine - - RCT-Folly/Fabric (= 2022.05.16.00) + - RCT-Folly/Fabric (= 2024.01.01.00) - RCTRequired - RCTTypeSafety - React-Core @@ -703,12 +739,12 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-Fabric/mounting (0.73.2): + - React-Fabric/mounting (0.74.0-rc.2): - DoubleConversion - - fmt (~> 6.2.1) + - fmt (= 9.1.0) - glog - hermes-engine - - RCT-Folly/Fabric (= 2022.05.16.00) + - RCT-Folly/Fabric (= 2024.01.01.00) - RCTRequired - RCTTypeSafety - React-Core @@ -722,12 +758,12 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-Fabric/scheduler (0.73.2): + - React-Fabric/scheduler (0.74.0-rc.2): - DoubleConversion - - fmt (~> 6.2.1) + - fmt (= 9.1.0) - glog - hermes-engine - - RCT-Folly/Fabric (= 2022.05.16.00) + - RCT-Folly/Fabric (= 2024.01.01.00) - RCTRequired - RCTTypeSafety - React-Core @@ -741,12 +777,12 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-Fabric/telemetry (0.73.2): + - React-Fabric/telemetry (0.74.0-rc.2): - DoubleConversion - - fmt (~> 6.2.1) + - fmt (= 9.1.0) - glog - hermes-engine - - RCT-Folly/Fabric (= 2022.05.16.00) + - RCT-Folly/Fabric (= 2024.01.01.00) - RCTRequired - RCTTypeSafety - React-Core @@ -760,12 +796,12 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-Fabric/templateprocessor (0.73.2): + - React-Fabric/templateprocessor (0.74.0-rc.2): - DoubleConversion - - fmt (~> 6.2.1) + - fmt (= 9.1.0) - glog - hermes-engine - - RCT-Folly/Fabric (= 2022.05.16.00) + - RCT-Folly/Fabric (= 2024.01.01.00) - RCTRequired - RCTTypeSafety - React-Core @@ -779,12 +815,12 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-Fabric/textlayoutmanager (0.73.2): + - React-Fabric/textlayoutmanager (0.74.0-rc.2): - DoubleConversion - - fmt (~> 6.2.1) + - fmt (= 9.1.0) - glog - hermes-engine - - RCT-Folly/Fabric (= 2022.05.16.00) + - RCT-Folly/Fabric (= 2024.01.01.00) - RCTRequired - RCTTypeSafety - React-Core @@ -799,12 +835,12 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-Fabric/uimanager (0.73.2): + - React-Fabric/uimanager (0.74.0-rc.2): - DoubleConversion - - fmt (~> 6.2.1) + - fmt (= 9.1.0) - glog - hermes-engine - - RCT-Folly/Fabric (= 2022.05.16.00) + - RCT-Folly/Fabric (= 2024.01.01.00) - RCTRequired - RCTTypeSafety - React-Core @@ -818,42 +854,45 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-FabricImage (0.73.2): + - React-FabricImage (0.74.0-rc.2): - DoubleConversion - - fmt (~> 6.2.1) + - fmt (= 9.1.0) - glog - hermes-engine - - RCT-Folly/Fabric (= 2022.05.16.00) - - RCTRequired (= 0.73.2) - - RCTTypeSafety (= 0.73.2) + - RCT-Folly/Fabric (= 2024.01.01.00) + - RCTRequired (= 0.74.0-rc.2) + - RCTTypeSafety (= 0.74.0-rc.2) - React-Fabric - React-graphics - React-ImageManager - React-jsi - - React-jsiexecutor (= 0.73.2) + - React-jsiexecutor (= 0.74.0-rc.2) - React-logger - React-rendererdebug - React-utils - ReactCommon - Yoga - - React-graphics (0.73.2): + - React-featureflags (0.74.0-rc.2) + - React-graphics (0.74.0-rc.2): + - DoubleConversion + - fmt (= 9.1.0) - glog - - RCT-Folly/Fabric (= 2022.05.16.00) - - React-Core/Default (= 0.73.2) + - RCT-Folly/Fabric (= 2024.01.01.00) + - React-Core/Default (= 0.74.0-rc.2) - React-utils - - React-hermes (0.73.2): + - React-hermes (0.74.0-rc.2): - DoubleConversion - - fmt (~> 6.2.1) + - fmt (= 9.1.0) - glog - hermes-engine - - RCT-Folly (= 2022.05.16.00) - - RCT-Folly/Futures (= 2022.05.16.00) - - React-cxxreact (= 0.73.2) + - RCT-Folly (= 2024.01.01.00) + - React-cxxreact (= 0.74.0-rc.2) - React-jsi - - React-jsiexecutor (= 0.73.2) - - React-jsinspector (= 0.73.2) - - React-perflogger (= 0.73.2) - - React-ImageManager (0.73.2): + - React-jsiexecutor (= 0.74.0-rc.2) + - React-jsinspector + - React-perflogger (= 0.74.0-rc.2) + - React-runtimeexecutor + - React-ImageManager (0.74.0-rc.2): - glog - RCT-Folly/Fabric - React-Core/Default @@ -862,96 +901,121 @@ PODS: - React-graphics - React-rendererdebug - React-utils - - React-jserrorhandler (0.73.2): - - RCT-Folly/Fabric (= 2022.05.16.00) + - React-jserrorhandler (0.74.0-rc.2): + - RCT-Folly/Fabric (= 2024.01.01.00) - React-debug - React-jsi - React-Mapbuffer - - React-jsi (0.73.2): + - React-jsi (0.74.0-rc.2): - boost (= 1.83.0) - DoubleConversion - - fmt (~> 6.2.1) + - fmt (= 9.1.0) + - glog + - hermes-engine + - RCT-Folly (= 2024.01.01.00) + - React-jsiexecutor (0.74.0-rc.2): + - DoubleConversion + - fmt (= 9.1.0) - glog - hermes-engine - - RCT-Folly (= 2022.05.16.00) - - React-jsiexecutor (0.73.2): + - RCT-Folly (= 2024.01.01.00) + - React-cxxreact (= 0.74.0-rc.2) + - React-jsi (= 0.74.0-rc.2) + - React-jsinspector + - React-perflogger (= 0.74.0-rc.2) + - React-jsinspector (0.74.0-rc.2): - DoubleConversion - - fmt (~> 6.2.1) - glog - hermes-engine - - RCT-Folly (= 2022.05.16.00) - - React-cxxreact (= 0.73.2) - - React-jsi (= 0.73.2) - - React-perflogger (= 0.73.2) - - React-jsinspector (0.73.2) - - React-logger (0.73.2): + - RCT-Folly (= 2024.01.01.00) + - React-featureflags + - React-jsi + - React-runtimeexecutor (= 0.74.0-rc.2) + - React-jsitracing (0.74.0-rc.2): + - React-jsi + - React-logger (0.74.0-rc.2): - glog - - React-Mapbuffer (0.73.2): + - React-Mapbuffer (0.74.0-rc.2): - glog - React-debug - - react-native-video (6.0.0-beta.4): + - react-native-video (6.0.0-beta.5): - React-Core - - react-native-video/Video (= 6.0.0-beta.4) - - react-native-video/Video (6.0.0-beta.4): + - react-native-video/Video (= 6.0.0-beta.5) + - react-native-video/Video (6.0.0-beta.5): - PromisesSwift - React-Core - - React-nativeconfig (0.73.2) - - React-NativeModulesApple (0.73.2): + - React-nativeconfig (0.74.0-rc.2) + - React-NativeModulesApple (0.74.0-rc.2): - glog - hermes-engine - React-callinvoker - React-Core - React-cxxreact - React-jsi + - React-jsinspector - React-runtimeexecutor - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core - - React-perflogger (0.73.2) - - React-RCTActionSheet (0.73.2): - - React-Core/RCTActionSheetHeaders (= 0.73.2) - - React-RCTAnimation (0.73.2): - - RCT-Folly (= 2022.05.16.00) + - React-perflogger (0.74.0-rc.2) + - React-RCTActionSheet (0.74.0-rc.2): + - React-Core/RCTActionSheetHeaders (= 0.74.0-rc.2) + - React-RCTAnimation (0.74.0-rc.2): + - RCT-Folly (= 2024.01.01.00) - RCTTypeSafety - React-Codegen - React-Core/RCTAnimationHeaders - React-jsi - React-NativeModulesApple - ReactCommon - - React-RCTAppDelegate (0.73.2): - - RCT-Folly + - React-RCTAppDelegate (0.74.0-rc.2): + - RCT-Folly (= 2024.01.01.00) - RCTRequired - RCTTypeSafety + - React-Codegen - React-Core - React-CoreModules + - React-debug + - React-Fabric + - React-graphics - React-hermes - React-nativeconfig - React-NativeModulesApple - React-RCTFabric - React-RCTImage - React-RCTNetwork + - React-rendererdebug + - React-RuntimeApple + - React-RuntimeCore + - React-RuntimeHermes - React-runtimescheduler + - React-utils - ReactCommon - - React-RCTBlob (0.73.2): + - React-RCTBlob (0.74.0-rc.2): + - DoubleConversion + - fmt (= 9.1.0) - hermes-engine - - RCT-Folly (= 2022.05.16.00) + - RCT-Folly (= 2024.01.01.00) - React-Codegen - React-Core/RCTBlobHeaders - React-Core/RCTWebSocket - React-jsi + - React-jsinspector - React-NativeModulesApple - React-RCTNetwork - ReactCommon - - React-RCTFabric (0.73.2): + - React-RCTFabric (0.74.0-rc.2): - glog - hermes-engine - - RCT-Folly/Fabric (= 2022.05.16.00) + - RCT-Folly/Fabric (= 2024.01.01.00) - React-Core - React-debug - React-Fabric - React-FabricImage + - React-featureflags - React-graphics - React-ImageManager - React-jsi + - React-jsinspector - React-nativeconfig - React-RCTImage - React-RCTText @@ -959,8 +1023,8 @@ PODS: - React-runtimescheduler - React-utils - Yoga - - React-RCTImage (0.73.2): - - RCT-Folly (= 2022.05.16.00) + - React-RCTImage (0.74.0-rc.2): + - RCT-Folly (= 2024.01.01.00) - RCTTypeSafety - React-Codegen - React-Core/RCTImageHeaders @@ -968,116 +1032,162 @@ PODS: - React-NativeModulesApple - React-RCTNetwork - ReactCommon - - React-RCTLinking (0.73.2): + - React-RCTLinking (0.74.0-rc.2): - React-Codegen - - React-Core/RCTLinkingHeaders (= 0.73.2) - - React-jsi (= 0.73.2) + - React-Core/RCTLinkingHeaders (= 0.74.0-rc.2) + - React-jsi (= 0.74.0-rc.2) - React-NativeModulesApple - ReactCommon - - ReactCommon/turbomodule/core (= 0.73.2) - - React-RCTNetwork (0.73.2): - - RCT-Folly (= 2022.05.16.00) + - ReactCommon/turbomodule/core (= 0.74.0-rc.2) + - React-RCTNetwork (0.74.0-rc.2): + - RCT-Folly (= 2024.01.01.00) - RCTTypeSafety - React-Codegen - React-Core/RCTNetworkHeaders - React-jsi - React-NativeModulesApple - ReactCommon - - React-RCTSettings (0.73.2): - - RCT-Folly (= 2022.05.16.00) + - React-RCTSettings (0.74.0-rc.2): + - RCT-Folly (= 2024.01.01.00) - RCTTypeSafety - React-Codegen - React-Core/RCTSettingsHeaders - React-jsi - React-NativeModulesApple - ReactCommon - - React-RCTText (0.73.2): - - React-Core/RCTTextHeaders (= 0.73.2) + - React-RCTText (0.74.0-rc.2): + - React-Core/RCTTextHeaders (= 0.74.0-rc.2) - Yoga - - React-RCTVibration (0.73.2): - - RCT-Folly (= 2022.05.16.00) + - React-RCTVibration (0.74.0-rc.2): + - RCT-Folly (= 2024.01.01.00) - React-Codegen - React-Core/RCTVibrationHeaders - React-jsi - React-NativeModulesApple - ReactCommon - - React-rendererdebug (0.73.2): + - React-rendererdebug (0.74.0-rc.2): - DoubleConversion - - fmt (~> 6.2.1) - - RCT-Folly (= 2022.05.16.00) + - fmt (= 9.1.0) + - RCT-Folly (= 2024.01.01.00) - React-debug - - React-rncore (0.73.2) - - React-runtimeexecutor (0.73.2): - - React-jsi (= 0.73.2) - - React-runtimescheduler (0.73.2): + - React-rncore (0.74.0-rc.2) + - React-RuntimeApple (0.74.0-rc.2): + - hermes-engine + - RCT-Folly/Fabric (= 2024.01.01.00) + - React-callinvoker + - React-Core/Default + - React-CoreModules + - React-cxxreact + - React-jserrorhandler + - React-jsi + - React-jsiexecutor + - React-jsinspector + - React-Mapbuffer + - React-NativeModulesApple + - React-RCTFabric + - React-RuntimeCore + - React-runtimeexecutor + - React-RuntimeHermes + - React-utils + - React-RuntimeCore (0.74.0-rc.2): - glog - hermes-engine - - RCT-Folly (= 2022.05.16.00) + - RCT-Folly/Fabric (= 2024.01.01.00) + - React-cxxreact + - React-featureflags + - React-jserrorhandler + - React-jsi + - React-jsiexecutor + - React-jsinspector + - React-runtimeexecutor + - React-runtimescheduler + - React-utils + - React-runtimeexecutor (0.74.0-rc.2): + - React-jsi (= 0.74.0-rc.2) + - React-RuntimeHermes (0.74.0-rc.2): + - hermes-engine + - RCT-Folly/Fabric (= 2024.01.01.00) + - React-featureflags + - React-hermes + - React-jsi + - React-jsinspector + - React-jsitracing + - React-nativeconfig + - React-RuntimeCore + - React-utils + - React-runtimescheduler (0.74.0-rc.2): + - glog + - hermes-engine + - RCT-Folly (= 2024.01.01.00) - React-callinvoker - React-cxxreact - React-debug + - React-featureflags - React-jsi - React-rendererdebug - React-runtimeexecutor - React-utils - - React-utils (0.73.2): + - React-utils (0.74.0-rc.2): - glog - - RCT-Folly (= 2022.05.16.00) + - hermes-engine + - RCT-Folly (= 2024.01.01.00) - React-debug - - ReactCommon (0.73.2): - - React-logger (= 0.73.2) - - ReactCommon/turbomodule (= 0.73.2) - - ReactCommon/turbomodule (0.73.2): + - React-jsi (= 0.74.0-rc.2) + - ReactCommon (0.74.0-rc.2): + - ReactCommon/turbomodule (= 0.74.0-rc.2) + - ReactCommon/turbomodule (0.74.0-rc.2): - DoubleConversion - - fmt (~> 6.2.1) + - fmt (= 9.1.0) - glog - hermes-engine - - RCT-Folly (= 2022.05.16.00) - - React-callinvoker (= 0.73.2) - - React-cxxreact (= 0.73.2) - - React-jsi (= 0.73.2) - - React-logger (= 0.73.2) - - React-perflogger (= 0.73.2) - - ReactCommon/turbomodule/bridging (= 0.73.2) - - ReactCommon/turbomodule/core (= 0.73.2) - - ReactCommon/turbomodule/bridging (0.73.2): + - RCT-Folly (= 2024.01.01.00) + - React-callinvoker (= 0.74.0-rc.2) + - React-cxxreact (= 0.74.0-rc.2) + - React-jsi (= 0.74.0-rc.2) + - React-logger (= 0.74.0-rc.2) + - React-perflogger (= 0.74.0-rc.2) + - ReactCommon/turbomodule/bridging (= 0.74.0-rc.2) + - ReactCommon/turbomodule/core (= 0.74.0-rc.2) + - ReactCommon/turbomodule/bridging (0.74.0-rc.2): - DoubleConversion - - fmt (~> 6.2.1) + - fmt (= 9.1.0) - glog - hermes-engine - - RCT-Folly (= 2022.05.16.00) - - React-callinvoker (= 0.73.2) - - React-cxxreact (= 0.73.2) - - React-jsi (= 0.73.2) - - React-logger (= 0.73.2) - - React-perflogger (= 0.73.2) - - ReactCommon/turbomodule/core (0.73.2): + - RCT-Folly (= 2024.01.01.00) + - React-callinvoker (= 0.74.0-rc.2) + - React-cxxreact (= 0.74.0-rc.2) + - React-jsi (= 0.74.0-rc.2) + - React-logger (= 0.74.0-rc.2) + - React-perflogger (= 0.74.0-rc.2) + - ReactCommon/turbomodule/core (0.74.0-rc.2): - DoubleConversion - - fmt (~> 6.2.1) + - fmt (= 9.1.0) - glog - hermes-engine - - RCT-Folly (= 2022.05.16.00) - - React-callinvoker (= 0.73.2) - - React-cxxreact (= 0.73.2) - - React-jsi (= 0.73.2) - - React-logger (= 0.73.2) - - React-perflogger (= 0.73.2) + - RCT-Folly (= 2024.01.01.00) + - React-callinvoker (= 0.74.0-rc.2) + - React-cxxreact (= 0.74.0-rc.2) + - React-debug (= 0.74.0-rc.2) + - React-jsi (= 0.74.0-rc.2) + - React-logger (= 0.74.0-rc.2) + - React-perflogger (= 0.74.0-rc.2) + - React-utils (= 0.74.0-rc.2) - RNCPicker (1.16.8): - React-Core - - SocketRocket (0.6.1) - - Yoga (1.14.0) + - SocketRocket (0.7.0) + - Yoga (0.0.0) DEPENDENCIES: - boost (from `../node_modules/react-native/third-party-podspecs/boost.podspec`) - DoubleConversion (from `../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec`) - FBLazyVector (from `../node_modules/react-native/Libraries/FBLazyVector`) - - FBReactNativeSpec (from `../node_modules/react-native/React/FBReactNativeSpec`) + - fmt (from `../node_modules/react-native/third-party-podspecs/fmt.podspec`) - glog (from `../node_modules/react-native/third-party-podspecs/glog.podspec`) - hermes-engine (from `../node_modules/react-native/sdks/hermes-engine/hermes-engine.podspec`) - - libevent (~> 2.1.12) - RCT-Folly (from `../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec`) - RCT-Folly/Fabric (from `../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec`) - - RCTRequired (from `../node_modules/react-native/Libraries/RCTRequired`) + - RCTDeprecation (from `../node_modules/react-native/ReactApple/Libraries/RCTFoundation/RCTDeprecation`) + - RCTRequired (from `../node_modules/react-native/Libraries/Required`) - RCTTypeSafety (from `../node_modules/react-native/Libraries/TypeSafety`) - React (from `../node_modules/react-native/`) - React-callinvoker (from `../node_modules/react-native/ReactCommon/callinvoker`) @@ -1089,6 +1199,7 @@ DEPENDENCIES: - React-debug (from `../node_modules/react-native/ReactCommon/react/debug`) - React-Fabric (from `../node_modules/react-native/ReactCommon`) - React-FabricImage (from `../node_modules/react-native/ReactCommon`) + - React-featureflags (from `../node_modules/react-native/ReactCommon/react/featureflags`) - React-graphics (from `../node_modules/react-native/ReactCommon/react/renderer/graphics`) - React-hermes (from `../node_modules/react-native/ReactCommon/hermes`) - React-ImageManager (from `../node_modules/react-native/ReactCommon/react/renderer/imagemanager/platform/ios`) @@ -1096,6 +1207,7 @@ DEPENDENCIES: - React-jsi (from `../node_modules/react-native/ReactCommon/jsi`) - React-jsiexecutor (from `../node_modules/react-native/ReactCommon/jsiexecutor`) - React-jsinspector (from `../node_modules/react-native/ReactCommon/jsinspector-modern`) + - React-jsitracing (from `../node_modules/react-native/ReactCommon/hermes/executor/`) - React-logger (from `../node_modules/react-native/ReactCommon/logger`) - React-Mapbuffer (from `../node_modules/react-native/ReactCommon`) - react-native-video (from `../../..`) @@ -1115,7 +1227,10 @@ DEPENDENCIES: - React-RCTVibration (from `../node_modules/react-native/Libraries/Vibration`) - React-rendererdebug (from `../node_modules/react-native/ReactCommon/react/renderer/debug`) - React-rncore (from `../node_modules/react-native/ReactCommon`) + - React-RuntimeApple (from `../node_modules/react-native/ReactCommon/react/runtime/platform/ios`) + - React-RuntimeCore (from `../node_modules/react-native/ReactCommon/react/runtime`) - React-runtimeexecutor (from `../node_modules/react-native/ReactCommon/runtimeexecutor`) + - React-RuntimeHermes (from `../node_modules/react-native/ReactCommon/react/runtime`) - React-runtimescheduler (from `../node_modules/react-native/ReactCommon/react/renderer/runtimescheduler`) - React-utils (from `../node_modules/react-native/ReactCommon/react/utils`) - ReactCommon/turbomodule/core (from `../node_modules/react-native/ReactCommon`) @@ -1124,8 +1239,6 @@ DEPENDENCIES: SPEC REPOS: trunk: - - fmt - - libevent - PromisesObjC - PromisesSwift - SocketRocket @@ -1137,17 +1250,19 @@ EXTERNAL SOURCES: :podspec: "../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec" FBLazyVector: :path: "../node_modules/react-native/Libraries/FBLazyVector" - FBReactNativeSpec: - :path: "../node_modules/react-native/React/FBReactNativeSpec" + fmt: + :podspec: "../node_modules/react-native/third-party-podspecs/fmt.podspec" glog: :podspec: "../node_modules/react-native/third-party-podspecs/glog.podspec" hermes-engine: :podspec: "../node_modules/react-native/sdks/hermes-engine/hermes-engine.podspec" - :tag: hermes-2023-11-17-RNv0.73.0-21043a3fc062be445e56a2c10ecd8be028dd9cc5 + :tag: hermes-2024-02-20-RNv0.74.0-999cfd9979b5f57b1269119679ab8cdf60897de9 RCT-Folly: :podspec: "../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec" + RCTDeprecation: + :path: "../node_modules/react-native/ReactApple/Libraries/RCTFoundation/RCTDeprecation" RCTRequired: - :path: "../node_modules/react-native/Libraries/RCTRequired" + :path: "../node_modules/react-native/Libraries/Required" RCTTypeSafety: :path: "../node_modules/react-native/Libraries/TypeSafety" React: @@ -1168,6 +1283,8 @@ EXTERNAL SOURCES: :path: "../node_modules/react-native/ReactCommon" React-FabricImage: :path: "../node_modules/react-native/ReactCommon" + React-featureflags: + :path: "../node_modules/react-native/ReactCommon/react/featureflags" React-graphics: :path: "../node_modules/react-native/ReactCommon/react/renderer/graphics" React-hermes: @@ -1182,6 +1299,8 @@ EXTERNAL SOURCES: :path: "../node_modules/react-native/ReactCommon/jsiexecutor" React-jsinspector: :path: "../node_modules/react-native/ReactCommon/jsinspector-modern" + React-jsitracing: + :path: "../node_modules/react-native/ReactCommon/hermes/executor/" React-logger: :path: "../node_modules/react-native/ReactCommon/logger" React-Mapbuffer: @@ -1220,8 +1339,14 @@ EXTERNAL SOURCES: :path: "../node_modules/react-native/ReactCommon/react/renderer/debug" React-rncore: :path: "../node_modules/react-native/ReactCommon" + React-RuntimeApple: + :path: "../node_modules/react-native/ReactCommon/react/runtime/platform/ios" + React-RuntimeCore: + :path: "../node_modules/react-native/ReactCommon/react/runtime" React-runtimeexecutor: :path: "../node_modules/react-native/ReactCommon/runtimeexecutor" + React-RuntimeHermes: + :path: "../node_modules/react-native/ReactCommon/react/runtime" React-runtimescheduler: :path: "../node_modules/react-native/ReactCommon/react/renderer/runtimescheduler" React-utils: @@ -1235,61 +1360,65 @@ EXTERNAL SOURCES: SPEC CHECKSUMS: boost: d3f49c53809116a5d38da093a8aa78bf551aed09 - DoubleConversion: fea03f2699887d960129cc54bba7e52542b6f953 - FBLazyVector: fbc4957d9aa695250b55d879c1d86f79d7e69ab4 - FBReactNativeSpec: 86de768f89901ef6ed3207cd686362189d64ac88 - fmt: ff9d55029c625d3757ed641535fd4a75fedc7ce9 + DoubleConversion: 76ab83afb40bddeeee456813d9c04f67f78771b5 + FBLazyVector: fa59cfcc9893760f58a0af6f5c25d5736c6d0b14 + fmt: 4c2741a687cc09f0634a2e2c72a838b99f1ff120 glog: c5d68082e772fa1c511173d6b30a9de2c05a69a2 - hermes-engine: b361c9ef5ef3cda53f66e195599b47e1f84ffa35 - libevent: 4049cae6c81cdb3654a443be001fb9bdceff7913 - PromisesObjC: c50d2056b5253dadbd6c2bea79b0674bd5a52fa4 - PromisesSwift: 28dca69a9c40779916ac2d6985a0192a5cb4a265 - RCT-Folly: 7169b2b1c44399c76a47b5deaaba715eeeb476c0 - RCTRequired: 9b1e7e262745fb671e33c51c1078d093bd30e322 - RCTTypeSafety: a759e3b086eccf3e2cbf2493d22f28e082f958e6 - React: 805f5dd55bbdb92c36b4914c64aaae4c97d358dc - React-callinvoker: 6a697867607c990c2c2c085296ee32cfb5e47c01 - React-Codegen: 7eed36e42d17744ae4c325984bf9bbbafe6836d9 - React-Core: 49f66fecc7695464e9b7bc7dc7cd9473d2c60584 - React-CoreModules: 710e7c557a1a8180bd1645f5b4bf79f4bd3f5417 - React-cxxreact: 345857b5e4be000c0527df78be3b41a0677a20ce - React-debug: 4559ee61556fb824f5b9b1be7fe3c59442fa5732 - React-Fabric: aa5a24c2cbfb2d7c947e2236e8d39a36f3cb4206 - React-FabricImage: cb46e936af6527a693f17b2ec394a2c6adcf91a7 - React-graphics: 84901e8d4df8ed0aebc4e8b7fee26edad74db9db - React-hermes: a52d183a5cf8ccb7020ce3df4275b89d01e6b53e - React-ImageManager: 9b7b01546571aa1d85b0b11e60d6bf6fb567d45e - React-jserrorhandler: 94c56c5d61da9f233d3d041df8721bb80bef5424 - React-jsi: a182068133f80918cd0eec77875abaf943a0b6be - React-jsiexecutor: dacd00ce8a18fc00a0ae6c25e3015a6437e5d2e8 - React-jsinspector: 03644c063fc3621c9a4e8bf263a8150909129618 - React-logger: 66b168e2b2bee57bd8ce9e69f739d805732a5570 - React-Mapbuffer: f40e0ea0df8161075390332dfcb0496442c09371 - react-native-video: 6078b448c21630b0a2937436527ad54fd2a1fdd8 - React-nativeconfig: 4dda3cbbdd1c4ce38450bb10b34b3e54120e4a91 - React-NativeModulesApple: d25a530c61e94fb317a0124b1cde1c459e4a47d3 - React-perflogger: 29efe63b7ef5fbaaa50ef6eaa92482f98a24b97e - React-RCTActionSheet: 69134c62aefd362027b20da01cd5d14ffd39db3f - React-RCTAnimation: 3b5a57087c7a5e727855b803d643ac1d445488f5 - React-RCTAppDelegate: a3ce9b69c0620a1717d08e826d4dc7ad8a3a3cae - React-RCTBlob: 26ea660f2be1e6de62f2d2ad9a9c7b9bfabb786f - React-RCTFabric: 18fc323de0240471be712101a159e68a8d09273b - React-RCTImage: 27b27f4663df9e776d0549ed2f3536213e793f1b - React-RCTLinking: 962880ce9d0e2ea83fd182953538fc4ed757d4da - React-RCTNetwork: 73a756b44d4ad584bae13a5f1484e3ce12accac8 - React-RCTSettings: 6d7f8d807f05de3d01cfb182d14e5f400716faac - React-RCTText: 73006e95ca359595c2510c1c0114027c85a6ddd3 - React-RCTVibration: 599f427f9cbdd9c4bf38959ca020e8fef0717211 - React-rendererdebug: 3853cc5def41d61465651d0944727362fc66e349 - React-rncore: 408a3b39ac86ff93cb58136633f34fc01309e15a - React-runtimeexecutor: 2d1f64f58193f00a3ad71d3f89c2bfbfe11cf5a5 - React-runtimescheduler: da2da338dcdb483a94bc60d85cd7ef9fb83cc9ae - React-utils: 414787344613940abeb72cc95fba338e300ba3ac - ReactCommon: d4860bcbe85d89bb261ba28948f027325bb577dc + hermes-engine: 563fc2ee6a71d0768170d4b72176ebe13f7477eb + PromisesObjC: f5707f49cb48b9636751c5b2e7d227e43fba9f47 + PromisesSwift: 9d77319bbe72ebf6d872900551f7eeba9bce2851 + RCT-Folly: 045d6ecaa59d826c5736dfba0b2f4083ff8d79df + RCTDeprecation: 6cc9677aab2e9af79e75f2eeea9be22adbc657d9 + RCTRequired: 1c308285f5125d3e65fd864d1ffbd51c84f19be0 + RCTTypeSafety: c66cf0ffe89d4c3a6f74c38a8b1396d9a06bd5f2 + React: 525ec60174ace50c7cc60fe92982e580b0b26cfb + React-callinvoker: 38f05fc7eb5c7871c1492a738c3c5030dccb5ab5 + React-Codegen: f0beb440c19074de241f9df066badb2209723df1 + React-Core: a86958b70355c2fa2b959ceb6a9e68feb1dabe60 + React-CoreModules: 158d38fb11abd70117c61567815ab1e9718966f0 + React-cxxreact: 6d319bcf5f41f7b5330fbe8c27049793a08dba6f + React-debug: 5a5ebf724f516c1c8a18890b79aa9c6f0d561df5 + React-Fabric: 5fce69ebc857d2e4a504ca0ba6c835841eaa3d05 + React-FabricImage: a9fc43fdf54953551db0ee3be1c9e9c7361e95eb + React-featureflags: d03e0e1d8a24e5a964e3719aeeba151f92429a45 + React-graphics: a12c50bed55919e35f2b5e0e9eccdbbf45257b9c + React-hermes: 077ba60b78db135eebcac68939ed8ec9a1edfba8 + React-ImageManager: 099b1a0650725df9e724dddf15d4bc6bec088008 + React-jserrorhandler: 7cc44924f78046b20d4e2c909779705467217768 + React-jsi: 2f418a12887ba5de80f89fbf5630cfc67f81660e + React-jsiexecutor: 88ba7d9919658a39601312298b09a557226971f3 + React-jsinspector: 7b69f0543369e5fba5d08f1bb1d875f9a00c5f72 + React-jsitracing: 448ac078345e37621216585708e63c2e0e36e572 + React-logger: 216e56f4326f6c48202d62a7f5b44e4c360ce1a2 + React-Mapbuffer: baefb3e335d9754eee3d3c4447b238f909c6dd0a + react-native-video: df7d8a4c8568ed4a31b28e6cd2bfa4a98b186e36 + React-nativeconfig: e5f55ffb15706df191142002a0a9e039f28d3056 + React-NativeModulesApple: 3ee6c709bdef19265b6c68aa47b194e2f980231f + React-perflogger: bc4cdc9440a5ba3b462813447a5a6633010b1cc8 + React-RCTActionSheet: 8b27811da488f196167ca1756453cc1feacbed8f + React-RCTAnimation: aba9dcc5c6c0213cd1e747076300261aa8d23845 + React-RCTAppDelegate: bf765fc52328ba350794f1ca16d48e757278d2aa + React-RCTBlob: 843bb240adc3bc28cf8893a5fad4b4d41c0b89ad + React-RCTFabric: e79eaae738addada21b4b728fd77f95a3255c2af + React-RCTImage: 67ea59e43e222cde321675e49416e21b5adc52e6 + React-RCTLinking: 73f14ccf9ce161d5f7b61c4d18eb01876897fe17 + React-RCTNetwork: 157786ee39743278756977b8161631646bcf9770 + React-RCTSettings: e3b41387f9b00dd2c27633516d3910c9b599dd20 + React-RCTText: 03f0530b5c16d420458295121cf47ecaad63dad6 + React-RCTVibration: 7c3592b2a785e6c2538376c21224d30da099e06e + React-rendererdebug: c36a5b6a9e49802cf8a6c2f73d4b4039bff72389 + React-rncore: 37ff98195821724edaad58d020de8acb91f22895 + React-RuntimeApple: c5f07140064ad13da4a15011d054d6c01925c2bb + React-RuntimeCore: 1156e435c15b8da61be24e85602fffe53b75d4e1 + React-runtimeexecutor: 9ea6854962deb2841e4ea6706ee77155c0d0e986 + React-RuntimeHermes: a44aae96fd3a01a09b3d9af171edbaf32fe18816 + React-runtimescheduler: dc5302fa9d8213a30a8bbc11ce49515bf94d2bd3 + React-utils: 38b4c9d90c345bdb9599d905fdacca363e83ce60 + ReactCommon: 084645bd2b69ca23243cc184d9f5bc926d9b1a44 RNCPicker: 0991c56da7815c0cf946d6f63cf920b25296e5f6 - SocketRocket: f32cd54efbe0f095c4d7594881e52619cfe80b17 - Yoga: e64aa65de36c0832d04e8c7bd614396c77a80047 + SocketRocket: abac6f5de4d4d62d24e11868d7a2f427e0ef940d + Yoga: f78d50661f1d9906929cddb3641febd14068f090 -PODFILE CHECKSUM: 12e7dd03f91f4dfee38d290cca63a3d823ad977a +PODFILE CHECKSUM: bbe1bd5f521b6b9366288dbaf8af1cec85c0a95a COCOAPODS: 1.13.0 diff --git a/examples/basic/ios/videoplayer.xcodeproj/project.pbxproj b/examples/basic/ios/videoplayer.xcodeproj/project.pbxproj index a86577c6b4..08a7b9b128 100644 --- a/examples/basic/ios/videoplayer.xcodeproj/project.pbxproj +++ b/examples/basic/ios/videoplayer.xcodeproj/project.pbxproj @@ -11,9 +11,9 @@ 13B07FBC1A68108700A75B9A /* AppDelegate.mm in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB01A68108700A75B9A /* AppDelegate.mm */; }; 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; }; 13B07FC11A68108700A75B9A /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; }; + 2395E922397FC6A6C2EF111E /* Pods_videoplayer_videoplayerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B635AA1A8380D1027D65879C /* Pods_videoplayer_videoplayerTests.framework */; }; + 786F172127660DA79AA1A40E /* Pods_videoplayer.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 73BD19CF9308E0D19FBB9651 /* Pods_videoplayer.framework */; }; 81AB9BB82411601600AC10FF /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */; }; - C15A4F7B64E9CD24D5B10736 /* Pods_videoplayer_videoplayerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 670C02ACE9A69C6F10242143 /* Pods_videoplayer_videoplayerTests.framework */; }; - C8C234DE3A403BEC64ED48E8 /* Pods_videoplayer.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4531F6446986B3172CDD4B12 /* Pods_videoplayer.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -36,14 +36,14 @@ 13B07FB51A68108700A75B9A /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = videoplayer/Images.xcassets; sourceTree = ""; }; 13B07FB61A68108700A75B9A /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = videoplayer/Info.plist; sourceTree = ""; }; 13B07FB71A68108700A75B9A /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = videoplayer/main.m; sourceTree = ""; }; - 4531F6446986B3172CDD4B12 /* Pods_videoplayer.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_videoplayer.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 629F50F90229D57E81E2E955 /* Pods-videoplayer-videoplayerTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-videoplayer-videoplayerTests.release.xcconfig"; path = "Target Support Files/Pods-videoplayer-videoplayerTests/Pods-videoplayer-videoplayerTests.release.xcconfig"; sourceTree = ""; }; - 670C02ACE9A69C6F10242143 /* Pods_videoplayer_videoplayerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_videoplayer_videoplayerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 791F8A1DC27114B0A0E20C32 /* Pods-videoplayer.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-videoplayer.debug.xcconfig"; path = "Target Support Files/Pods-videoplayer/Pods-videoplayer.debug.xcconfig"; sourceTree = ""; }; + 683CFCFD33A7C6BFFC446604 /* Pods-videoplayer-videoplayerTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-videoplayer-videoplayerTests.debug.xcconfig"; path = "Target Support Files/Pods-videoplayer-videoplayerTests/Pods-videoplayer-videoplayerTests.debug.xcconfig"; sourceTree = ""; }; + 70576FE834C7A5574E4E1C55 /* Pods-videoplayer.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-videoplayer.release.xcconfig"; path = "Target Support Files/Pods-videoplayer/Pods-videoplayer.release.xcconfig"; sourceTree = ""; }; + 73BD19CF9308E0D19FBB9651 /* Pods_videoplayer.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_videoplayer.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; name = LaunchScreen.storyboard; path = videoplayer/LaunchScreen.storyboard; sourceTree = ""; }; - A50377CE4C634F8448FD98E9 /* Pods-videoplayer-videoplayerTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-videoplayer-videoplayerTests.debug.xcconfig"; path = "Target Support Files/Pods-videoplayer-videoplayerTests/Pods-videoplayer-videoplayerTests.debug.xcconfig"; sourceTree = ""; }; + 898A15A5BC01E9AED05EA40A /* Pods-videoplayer-videoplayerTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-videoplayer-videoplayerTests.release.xcconfig"; path = "Target Support Files/Pods-videoplayer-videoplayerTests/Pods-videoplayer-videoplayerTests.release.xcconfig"; sourceTree = ""; }; + B635AA1A8380D1027D65879C /* Pods_videoplayer_videoplayerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_videoplayer_videoplayerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + C2294C9F98CE00118BC70E0C /* Pods-videoplayer.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-videoplayer.debug.xcconfig"; path = "Target Support Files/Pods-videoplayer/Pods-videoplayer.debug.xcconfig"; sourceTree = ""; }; ED297162215061F000B7C4FE /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JavaScriptCore.framework; path = System/Library/Frameworks/JavaScriptCore.framework; sourceTree = SDKROOT; }; - F375F6630DAB98824A2C1319 /* Pods-videoplayer.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-videoplayer.release.xcconfig"; path = "Target Support Files/Pods-videoplayer/Pods-videoplayer.release.xcconfig"; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -51,7 +51,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - C15A4F7B64E9CD24D5B10736 /* Pods_videoplayer_videoplayerTests.framework in Frameworks */, + 2395E922397FC6A6C2EF111E /* Pods_videoplayer_videoplayerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -59,7 +59,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - C8C234DE3A403BEC64ED48E8 /* Pods_videoplayer.framework in Frameworks */, + 786F172127660DA79AA1A40E /* Pods_videoplayer.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -100,8 +100,8 @@ isa = PBXGroup; children = ( ED297162215061F000B7C4FE /* JavaScriptCore.framework */, - 4531F6446986B3172CDD4B12 /* Pods_videoplayer.framework */, - 670C02ACE9A69C6F10242143 /* Pods_videoplayer_videoplayerTests.framework */, + 73BD19CF9308E0D19FBB9651 /* Pods_videoplayer.framework */, + B635AA1A8380D1027D65879C /* Pods_videoplayer_videoplayerTests.framework */, ); name = Frameworks; sourceTree = ""; @@ -140,10 +140,10 @@ BBD78D7AC51CEA395F1C20DB /* Pods */ = { isa = PBXGroup; children = ( - 791F8A1DC27114B0A0E20C32 /* Pods-videoplayer.debug.xcconfig */, - F375F6630DAB98824A2C1319 /* Pods-videoplayer.release.xcconfig */, - A50377CE4C634F8448FD98E9 /* Pods-videoplayer-videoplayerTests.debug.xcconfig */, - 629F50F90229D57E81E2E955 /* Pods-videoplayer-videoplayerTests.release.xcconfig */, + C2294C9F98CE00118BC70E0C /* Pods-videoplayer.debug.xcconfig */, + 70576FE834C7A5574E4E1C55 /* Pods-videoplayer.release.xcconfig */, + 683CFCFD33A7C6BFFC446604 /* Pods-videoplayer-videoplayerTests.debug.xcconfig */, + 898A15A5BC01E9AED05EA40A /* Pods-videoplayer-videoplayerTests.release.xcconfig */, ); path = Pods; sourceTree = ""; @@ -155,12 +155,12 @@ isa = PBXNativeTarget; buildConfigurationList = 00E357021AD99517003FC87E /* Build configuration list for PBXNativeTarget "videoplayerTests" */; buildPhases = ( - 40EEB335EC737D150F0E284A /* [CP] Check Pods Manifest.lock */, + F102B4F37B9B875C963CC540 /* [CP] Check Pods Manifest.lock */, 00E356EA1AD99517003FC87E /* Sources */, 00E356EB1AD99517003FC87E /* Frameworks */, 00E356EC1AD99517003FC87E /* Resources */, - DECFB8EA7A8B6EBF1BFF6108 /* [CP] Embed Pods Frameworks */, - 5CCC99BAE0E10D5B9274A27A /* [CP] Copy Pods Resources */, + 8DD7997A551817281D5EF9FE /* [CP] Embed Pods Frameworks */, + DB2182CF036650761ADDB488 /* [CP] Copy Pods Resources */, ); buildRules = ( ); @@ -176,14 +176,14 @@ isa = PBXNativeTarget; buildConfigurationList = 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "videoplayer" */; buildPhases = ( - 70B0A2A74C33A2D11C1BDC65 /* [CP] Check Pods Manifest.lock */, + 71542B065A5C697B0C5F4B62 /* [CP] Check Pods Manifest.lock */, FD10A7F022414F080027D42C /* Start Packager */, 13B07F871A680F5B00A75B9A /* Sources */, 13B07F8C1A680F5B00A75B9A /* Frameworks */, 13B07F8E1A680F5B00A75B9A /* Resources */, 00DD1BFF1BD5951E006B06BC /* Bundle React Native code and images */, - 1DC6170199CB8D531E9B12F9 /* [CP] Embed Pods Frameworks */, - BE7AC7E22FCA3E0ACEB52BA6 /* [CP] Copy Pods Resources */, + 89F9A997AA9C0BD33946880C /* [CP] Embed Pods Frameworks */, + F63B411E9BE4F0BD28A10E5E /* [CP] Copy Pods Resources */, ); buildRules = ( ); @@ -211,7 +211,7 @@ }; }; }; - buildConfigurationList = 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "videoplayer" */; + buildConfigurationList = 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "VideoPlayer" */; compatibilityVersion = "Xcode 12.0"; developmentRegion = en; hasScannedForEncodings = 0; @@ -264,9 +264,31 @@ ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "set -e\n\nWITH_ENVIRONMENT=\"../node_modules/react-native/scripts/xcode/with-environment.sh\"\nREACT_NATIVE_XCODE=\"../node_modules/react-native/scripts/react-native-xcode.sh\"\n\n/bin/sh -c \"$WITH_ENVIRONMENT $REACT_NATIVE_XCODE\"\n"; + shellScript = "set -e\n\nWITH_ENVIRONMENT=\"$REACT_NATIVE_PATH/scripts/xcode/with-environment.sh\"\nREACT_NATIVE_XCODE=\"$REACT_NATIVE_PATH/scripts/react-native-xcode.sh\"\n\n/bin/sh -c \"$WITH_ENVIRONMENT $REACT_NATIVE_XCODE\"\n"; }; - 1DC6170199CB8D531E9B12F9 /* [CP] Embed Pods Frameworks */ = { + 71542B065A5C697B0C5F4B62 /* [CP] Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( + ); + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-videoplayer-checkManifestLockResult.txt", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + showEnvVarsInLog = 0; + }; + 89F9A997AA9C0BD33946880C /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -283,29 +305,24 @@ shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-videoplayer/Pods-videoplayer-frameworks.sh\"\n"; showEnvVarsInLog = 0; }; - 40EEB335EC737D150F0E284A /* [CP] Check Pods Manifest.lock */ = { + 8DD7997A551817281D5EF9FE /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-videoplayer-videoplayerTests/Pods-videoplayer-videoplayerTests-frameworks-${CONFIGURATION}-input-files.xcfilelist", ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; + name = "[CP] Embed Pods Frameworks"; outputFileListPaths = ( - ); - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-videoplayer-videoplayerTests-checkManifestLockResult.txt", + "${PODS_ROOT}/Target Support Files/Pods-videoplayer-videoplayerTests/Pods-videoplayer-videoplayerTests-frameworks-${CONFIGURATION}-output-files.xcfilelist", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-videoplayer-videoplayerTests/Pods-videoplayer-videoplayerTests-frameworks.sh\"\n"; showEnvVarsInLog = 0; }; - 5CCC99BAE0E10D5B9274A27A /* [CP] Copy Pods Resources */ = { + DB2182CF036650761ADDB488 /* [CP] Copy Pods Resources */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -322,7 +339,7 @@ shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-videoplayer-videoplayerTests/Pods-videoplayer-videoplayerTests-resources.sh\"\n"; showEnvVarsInLog = 0; }; - 70B0A2A74C33A2D11C1BDC65 /* [CP] Check Pods Manifest.lock */ = { + F102B4F37B9B875C963CC540 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -337,14 +354,14 @@ outputFileListPaths = ( ); outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-videoplayer-checkManifestLockResult.txt", + "$(DERIVED_FILE_DIR)/Pods-videoplayer-videoplayerTests-checkManifestLockResult.txt", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; showEnvVarsInLog = 0; }; - BE7AC7E22FCA3E0ACEB52BA6 /* [CP] Copy Pods Resources */ = { + F63B411E9BE4F0BD28A10E5E /* [CP] Copy Pods Resources */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -361,23 +378,6 @@ shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-videoplayer/Pods-videoplayer-resources.sh\"\n"; showEnvVarsInLog = 0; }; - DECFB8EA7A8B6EBF1BFF6108 /* [CP] Embed Pods Frameworks */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-videoplayer-videoplayerTests/Pods-videoplayer-videoplayerTests-frameworks-${CONFIGURATION}-input-files.xcfilelist", - ); - name = "[CP] Embed Pods Frameworks"; - outputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-videoplayer-videoplayerTests/Pods-videoplayer-videoplayerTests-frameworks-${CONFIGURATION}-output-files.xcfilelist", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-videoplayer-videoplayerTests/Pods-videoplayer-videoplayerTests-frameworks.sh\"\n"; - showEnvVarsInLog = 0; - }; FD10A7F022414F080027D42C /* Start Packager */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; @@ -430,7 +430,7 @@ /* Begin XCBuildConfiguration section */ 00E356F61AD99517003FC87E /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = A50377CE4C634F8448FD98E9 /* Pods-videoplayer-videoplayerTests.debug.xcconfig */; + baseConfigurationReference = 683CFCFD33A7C6BFFC446604 /* Pods-videoplayer-videoplayerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; GCC_PREPROCESSOR_DEFINITIONS = ( @@ -457,7 +457,7 @@ }; 00E356F71AD99517003FC87E /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 629F50F90229D57E81E2E955 /* Pods-videoplayer-videoplayerTests.release.xcconfig */; + baseConfigurationReference = 898A15A5BC01E9AED05EA40A /* Pods-videoplayer-videoplayerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; COPY_PHASE_STRIP = NO; @@ -481,7 +481,7 @@ }; 13B07F941A680F5B00A75B9A /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 791F8A1DC27114B0A0E20C32 /* Pods-videoplayer.debug.xcconfig */; + baseConfigurationReference = C2294C9F98CE00118BC70E0C /* Pods-videoplayer.debug.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; @@ -508,7 +508,7 @@ }; 13B07F951A680F5B00A75B9A /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = F375F6630DAB98824A2C1319 /* Pods-videoplayer.release.xcconfig */; + baseConfigurationReference = 70576FE834C7A5574E4E1C55 /* Pods-videoplayer.release.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; @@ -600,6 +600,18 @@ " ${PODS_CONFIGURATION_BUILD_DIR}/ReactCommon/ReactCommon.framework/Headers", " ${PODS_CONFIGURATION_BUILD_DIR}/React-Fabric/React_Fabric.framework/Headers/react/renderer/components/view/platform/cxx", " ${PODS_CONFIGURATION_BUILD_DIR}/React-graphics/React_graphics.framework/Headers", + " ${PODS_CONFIGURATION_BUILD_DIR}/ReactCommon/ReactCommon.framework/Headers", + " ${PODS_CONFIGURATION_BUILD_DIR}/React-Fabric/React_Fabric.framework/Headers/react/renderer/components/view/platform/cxx", + " ${PODS_CONFIGURATION_BUILD_DIR}/React-graphics/React_graphics.framework/Headers", + " ${PODS_CONFIGURATION_BUILD_DIR}/ReactCommon/ReactCommon.framework/Headers", + " ${PODS_CONFIGURATION_BUILD_DIR}/React-Fabric/React_Fabric.framework/Headers/react/renderer/components/view/platform/cxx", + " ${PODS_CONFIGURATION_BUILD_DIR}/React-graphics/React_graphics.framework/Headers", + " ${PODS_CONFIGURATION_BUILD_DIR}/ReactCommon/ReactCommon.framework/Headers", + " ${PODS_CONFIGURATION_BUILD_DIR}/React-Fabric/React_Fabric.framework/Headers/react/renderer/components/view/platform/cxx", + " ${PODS_CONFIGURATION_BUILD_DIR}/React-graphics/React_graphics.framework/Headers", + " ${PODS_CONFIGURATION_BUILD_DIR}/ReactCommon/ReactCommon.framework/Headers", + " ${PODS_CONFIGURATION_BUILD_DIR}/React-Fabric/React_Fabric.framework/Headers/react/renderer/components/view/platform/cxx", + " ${PODS_CONFIGURATION_BUILD_DIR}/React-graphics/React_graphics.framework/Headers", ); IPHONEOS_DEPLOYMENT_TARGET = 12.4; LD_RUNPATH_SEARCH_PATHS = ( @@ -692,6 +704,18 @@ " ${PODS_CONFIGURATION_BUILD_DIR}/ReactCommon/ReactCommon.framework/Headers", " ${PODS_CONFIGURATION_BUILD_DIR}/React-Fabric/React_Fabric.framework/Headers/react/renderer/components/view/platform/cxx", " ${PODS_CONFIGURATION_BUILD_DIR}/React-graphics/React_graphics.framework/Headers", + " ${PODS_CONFIGURATION_BUILD_DIR}/ReactCommon/ReactCommon.framework/Headers", + " ${PODS_CONFIGURATION_BUILD_DIR}/React-Fabric/React_Fabric.framework/Headers/react/renderer/components/view/platform/cxx", + " ${PODS_CONFIGURATION_BUILD_DIR}/React-graphics/React_graphics.framework/Headers", + " ${PODS_CONFIGURATION_BUILD_DIR}/ReactCommon/ReactCommon.framework/Headers", + " ${PODS_CONFIGURATION_BUILD_DIR}/React-Fabric/React_Fabric.framework/Headers/react/renderer/components/view/platform/cxx", + " ${PODS_CONFIGURATION_BUILD_DIR}/React-graphics/React_graphics.framework/Headers", + " ${PODS_CONFIGURATION_BUILD_DIR}/ReactCommon/ReactCommon.framework/Headers", + " ${PODS_CONFIGURATION_BUILD_DIR}/React-Fabric/React_Fabric.framework/Headers/react/renderer/components/view/platform/cxx", + " ${PODS_CONFIGURATION_BUILD_DIR}/React-graphics/React_graphics.framework/Headers", + " ${PODS_CONFIGURATION_BUILD_DIR}/ReactCommon/ReactCommon.framework/Headers", + " ${PODS_CONFIGURATION_BUILD_DIR}/React-Fabric/React_Fabric.framework/Headers/react/renderer/components/view/platform/cxx", + " ${PODS_CONFIGURATION_BUILD_DIR}/React-graphics/React_graphics.framework/Headers", ); IPHONEOS_DEPLOYMENT_TARGET = 12.4; LD_RUNPATH_SEARCH_PATHS = ( @@ -740,7 +764,7 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "videoplayer" */ = { + 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "VideoPlayer" */ = { isa = XCConfigurationList; buildConfigurations = ( 83CBBA201A601CBA00E9B192 /* Debug */, diff --git a/examples/basic/ios/videoplayer.xcworkspace/contents.xcworkspacedata b/examples/basic/ios/videoplayer.xcworkspace/contents.xcworkspacedata index 9da8ab0de8..7c56e26ef4 100644 --- a/examples/basic/ios/videoplayer.xcworkspace/contents.xcworkspacedata +++ b/examples/basic/ios/videoplayer.xcworkspace/contents.xcworkspacedata @@ -7,4 +7,7 @@ + + diff --git a/examples/basic/ios/videoplayer/AppDelegate.mm b/examples/basic/ios/videoplayer/AppDelegate.mm index a304d5763c..4d5d9ee2ff 100644 --- a/examples/basic/ios/videoplayer/AppDelegate.mm +++ b/examples/basic/ios/videoplayer/AppDelegate.mm @@ -16,10 +16,10 @@ - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:( - (NSURL *)sourceURLForBridge:(RCTBridge *)bridge { - return [self getBundleURL]; + return [self bundleURL]; } -- (NSURL *)getBundleURL +- (NSURL *)bundleURL { #if DEBUG return [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"src/index"]; diff --git a/examples/basic/ios/videoplayer/Info.plist b/examples/basic/ios/videoplayer/Info.plist index 973eddcd2e..ee2703ea4b 100644 --- a/examples/basic/ios/videoplayer/Info.plist +++ b/examples/basic/ios/videoplayer/Info.plist @@ -37,7 +37,7 @@ LaunchScreen UIRequiredDeviceCapabilities - armv7 + arm64 UISupportedInterfaceOrientations diff --git a/examples/basic/metro.config.js b/examples/basic/metro.config.js index 2572eb22ce..05e12ddabc 100644 --- a/examples/basic/metro.config.js +++ b/examples/basic/metro.config.js @@ -1,6 +1,6 @@ /** * Metro configuration for React Native - * https://github.com/facebook/react-native + * https://reactnative.dev/docs/metro * * @format */ @@ -45,7 +45,7 @@ const config = { }, {}), nodeModulesPaths: [ path.resolve(path.join(__dirname, './node_modules')), - path.resolve(path.join(__dirname, '../../node_modules')) + path.resolve(path.join(__dirname, '../../node_modules')), ], transformer: { getTransformOptions: async () => ({ diff --git a/examples/basic/package.json b/examples/basic/package.json index 459634c4ea..dc850cd1e8 100644 --- a/examples/basic/package.json +++ b/examples/basic/package.json @@ -8,28 +8,30 @@ "windows": "react-native run-windows", "start": "react-native start", "test": "jest", - "lint": "eslint ." + "lint": "eslint .", + "pod-install": "cd ios && pod install && cd ..", + "pod-install:newarch": "cd ios && RCT_NEW_ARCH_ENABLED=1 bundle exec pod install && cd .." }, "dependencies": { "@react-native-picker/picker": "^1.9.11", "react": "18.2.0", - "react-native": "0.73.2", + "react-native": "0.74.0-rc.2", "react-native-windows": "0.63.41" }, "devDependencies": { "@babel/core": "^7.22.10", "@babel/preset-env": "^7.22.10", "@babel/runtime": "^7.22.10", - "@react-native/eslint-config": "^0.73.2", - "@react-native/metro-config": "^0.73.3", - "@react-native/typescript-config": "^0.73.1", + "@react-native/eslint-config": "^0.74.1", + "@react-native/metro-config": "^0.74.2", + "@react-native/typescript-config": "^0.74.1", "@types/react": "^18.2.6", "@types/react-test-renderer": "^18.0.0", "babel-jest": "^29.6.3", "babel-plugin-module-resolver": "5.0.0", "eslint": "^8.19.0", "jest": "^29.6.3", - "@react-native/babel-preset": "0.73.19", + "@react-native/babel-preset": "0.74.2", "prettier": "^2.8.8", "typescript": "5.0.4" }, diff --git a/examples/basic/yarn.lock b/examples/basic/yarn.lock index e62daff74a..37d20824fe 100644 --- a/examples/basic/yarn.lock +++ b/examples/basic/yarn.lock @@ -321,6 +321,14 @@ "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-syntax-export-default-from" "^7.23.3" +"@babel/plugin-proposal-logical-assignment-operators@^7.18.0": + version "7.20.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.20.7.tgz#dfbcaa8f7b4d37b51e8bfb46d94a5aea2bb89d83" + integrity sha512-y7C7cZgpMIjWlKE5T7eJwp+tnRYM89HmRvWM5EQuB5BoHEONjmQ8lSNmBUwOyy/GFRsohJED51YBF79hE1djug== + dependencies: + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" + "@babel/plugin-proposal-nullish-coalescing-operator@^7.13.8", "@babel/plugin-proposal-nullish-coalescing-operator@^7.18.0": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz#fdd940a99a740e577d6c753ab6fbb43fdb9467e1" @@ -1169,14 +1177,14 @@ resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== -"@eslint-community/eslint-utils@^4.2.0": +"@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.4.0": version "4.4.0" resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz#a23514e8fb9af1269d5f7788aa556798d61c6b59" integrity sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA== dependencies: eslint-visitor-keys "^3.3.0" -"@eslint-community/regexpp@^4.4.0", "@eslint-community/regexpp@^4.6.1": +"@eslint-community/regexpp@^4.5.1", "@eslint-community/regexpp@^4.6.1": version "4.10.0" resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.10.0.tgz#548f6de556857c8bb73bbee70c35dc82a2e74d63" integrity sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA== @@ -1540,50 +1548,51 @@ "@nodelib/fs.scandir" "2.1.5" fastq "^1.6.0" -"@react-native-community/cli-clean@12.3.0": - version "12.3.0" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-clean/-/cli-clean-12.3.0.tgz#667b32daa58b4d11d5b5ab9eb0a2e216d500c90b" - integrity sha512-iAgLCOWYRGh9ukr+eVQnhkV/OqN3V2EGd/in33Ggn/Mj4uO6+oUncXFwB+yjlyaUNz6FfjudhIz09yYGSF+9sg== +"@react-native-community/cli-clean@13.6.1": + version "13.6.1" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-clean/-/cli-clean-13.6.1.tgz#e4dce2aa8ea5a2fbdbfe8074e0c285bf4796d7be" + integrity sha512-HV0kTegCMbq9INOLUVzPFl/FDjZ2uX6kOa7cFYezkRhgApJo0a/KYTvqwQVlmdHXAjDiWLARGTUPqYQGwIef0A== dependencies: - "@react-native-community/cli-tools" "12.3.0" + "@react-native-community/cli-tools" "13.6.1" chalk "^4.1.2" execa "^5.0.0" + fast-glob "^3.3.2" -"@react-native-community/cli-config@12.3.0": - version "12.3.0" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-config/-/cli-config-12.3.0.tgz#255b4e5391878937a25888f452f50a968d053e3e" - integrity sha512-BrTn5ndFD9uOxO8kxBQ32EpbtOvAsQExGPI7SokdI4Zlve70FziLtTq91LTlTUgMq1InVZn/jJb3VIDk6BTInQ== +"@react-native-community/cli-config@13.6.1": + version "13.6.1" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-config/-/cli-config-13.6.1.tgz#b1f83fc1572d2500fb9e8d5b1a38ba417acb6eec" + integrity sha512-ljqwH04RNkwv8Y67TjmJ60qgvAdS2aCCUszaD7ZPXmfqBBxkvLg5QFtja9y+1QuTGPmBuTtC55JqmCHg/UDAsg== dependencies: - "@react-native-community/cli-tools" "12.3.0" + "@react-native-community/cli-tools" "13.6.1" chalk "^4.1.2" cosmiconfig "^5.1.0" deepmerge "^4.3.0" - glob "^7.1.3" + fast-glob "^3.3.2" joi "^17.2.1" -"@react-native-community/cli-debugger-ui@12.3.0": - version "12.3.0" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-debugger-ui/-/cli-debugger-ui-12.3.0.tgz#75bbb2082a369b3559e0dffa8bfeebf2a9107e3e" - integrity sha512-w3b0iwjQlk47GhZWHaeTG8kKH09NCMUJO729xSdMBXE8rlbm4kHpKbxQY9qKb6NlfWSJN4noGY+FkNZS2rRwnQ== +"@react-native-community/cli-debugger-ui@13.6.1": + version "13.6.1" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-debugger-ui/-/cli-debugger-ui-13.6.1.tgz#7bb56be33d3ee2289bfbab7efa59a16a7554cd1a" + integrity sha512-3z1io3AsT1NqlJZOlqNFcrzlavBb7R+Vy5Orzruc3m/OIjc4TrGNtyzQmOfCC3peF8J3So3d6dH1a11YYUDfFw== dependencies: serve-static "^1.13.1" -"@react-native-community/cli-doctor@12.3.0": - version "12.3.0" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-doctor/-/cli-doctor-12.3.0.tgz#420eb4e80d482f16d431c4df33fbc203862508af" - integrity sha512-BPCwNNesoQMkKsxB08Ayy6URgGQ8Kndv6mMhIvJSNdST3J1+x3ehBHXzG9B9Vfi+DrTKRb8lmEl/b/7VkDlPkA== +"@react-native-community/cli-doctor@13.6.1": + version "13.6.1" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-doctor/-/cli-doctor-13.6.1.tgz#64b6e64c13cf8d318fe631ebc84834fa5650adf1" + integrity sha512-jP5otBbvcItuIy8WJT8UAA0lLB+0kKtCmcfQFmcs0/NlBy04cpTtGp7w2N3F1r2Qy9sdQWGRa20IFZn8eenieQ== dependencies: - "@react-native-community/cli-config" "12.3.0" - "@react-native-community/cli-platform-android" "12.3.0" - "@react-native-community/cli-platform-ios" "12.3.0" - "@react-native-community/cli-tools" "12.3.0" + "@react-native-community/cli-config" "13.6.1" + "@react-native-community/cli-platform-android" "13.6.1" + "@react-native-community/cli-platform-apple" "13.6.1" + "@react-native-community/cli-platform-ios" "13.6.1" + "@react-native-community/cli-tools" "13.6.1" chalk "^4.1.2" command-exists "^1.2.8" deepmerge "^4.3.0" envinfo "^7.10.0" execa "^5.0.0" hermes-profile-transformer "^0.0.6" - ip "^1.1.5" node-stream-zip "^1.9.1" ora "^5.4.1" semver "^7.5.2" @@ -1591,53 +1600,54 @@ wcwidth "^1.0.1" yaml "^2.2.1" -"@react-native-community/cli-hermes@12.3.0": - version "12.3.0" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-hermes/-/cli-hermes-12.3.0.tgz#c302acbfb07e1f4e73e76e3150c32f0e4f54e9ed" - integrity sha512-G6FxpeZBO4AimKZwtWR3dpXRqTvsmEqlIkkxgwthdzn3LbVjDVIXKpVYU9PkR5cnT+KuAUxO0WwthrJ6Nmrrlg== +"@react-native-community/cli-hermes@13.6.1": + version "13.6.1" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-hermes/-/cli-hermes-13.6.1.tgz#2d4de930ffbe30e02150031d33108059d51e7e17" + integrity sha512-uGzmpg3DCqXiVLArTw6LMCGoGPkdMBKUllnlvgl1Yjne6LL7NPnQ971lMVGqTX9/p3CaW5TcqYYJjnI7sxlVcA== dependencies: - "@react-native-community/cli-platform-android" "12.3.0" - "@react-native-community/cli-tools" "12.3.0" + "@react-native-community/cli-platform-android" "13.6.1" + "@react-native-community/cli-tools" "13.6.1" chalk "^4.1.2" hermes-profile-transformer "^0.0.6" - ip "^1.1.5" -"@react-native-community/cli-platform-android@12.3.0": - version "12.3.0" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-platform-android/-/cli-platform-android-12.3.0.tgz#eafa5fb12ebc25f716aea18cd55039c19fbedca6" - integrity sha512-VU1NZw63+GLU2TnyQ919bEMThpHQ/oMFju9MCfrd3pyPJz4Sn+vc3NfnTDUVA5Z5yfLijFOkHIHr4vo/C9bjnw== +"@react-native-community/cli-platform-android@13.6.1": + version "13.6.1" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-platform-android/-/cli-platform-android-13.6.1.tgz#7ddac2b257425de54ea62b6e215c06a9bfc77e53" + integrity sha512-HkrV8kCbHUdWH2LMEeSsuvl0ULI+JLmBZ2eQNEyyYOT8h+tM90OwaPLRpBFtD+yvp2/DpIKo97yCVJT5cLjBzA== dependencies: - "@react-native-community/cli-tools" "12.3.0" + "@react-native-community/cli-tools" "13.6.1" chalk "^4.1.2" execa "^5.0.0" + fast-glob "^3.3.2" fast-xml-parser "^4.2.4" - glob "^7.1.3" logkitty "^0.7.1" -"@react-native-community/cli-platform-ios@12.3.0": - version "12.3.0" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-platform-ios/-/cli-platform-ios-12.3.0.tgz#42a9185bb51f35a7eb9c5818b2f0072846945ef5" - integrity sha512-H95Sgt3wT7L8V75V0syFJDtv4YgqK5zbu69ko4yrXGv8dv2EBi6qZP0VMmkqXDamoPm9/U7tDTdbcf26ctnLfg== +"@react-native-community/cli-platform-apple@13.6.1": + version "13.6.1" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-platform-apple/-/cli-platform-apple-13.6.1.tgz#cd0d393e8328f439f453bf90fcfec48b350e2f3a" + integrity sha512-yv4iPewUwhy3uGg4uJwA03wSV/1bnEnAJNs7CQ0zl7DQZhqrhfJLhzPURtu34sMUN+Wt6S3KaBmny5kHRKTuwA== dependencies: - "@react-native-community/cli-tools" "12.3.0" + "@react-native-community/cli-tools" "13.6.1" chalk "^4.1.2" execa "^5.0.0" + fast-glob "^3.3.2" fast-xml-parser "^4.0.12" - glob "^7.1.3" ora "^5.4.1" -"@react-native-community/cli-plugin-metro@12.3.0": - version "12.3.0" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-plugin-metro/-/cli-plugin-metro-12.3.0.tgz#b4ea8da691d294aee98ccfcd1162bcd958cae834" - integrity sha512-tYNHIYnNmxrBcsqbE2dAnLMzlKI3Cp1p1xUgTrNaOMsGPDN1epzNfa34n6Nps3iwKElSL7Js91CzYNqgTalucA== +"@react-native-community/cli-platform-ios@13.6.1": + version "13.6.1" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-platform-ios/-/cli-platform-ios-13.6.1.tgz#fa3e3a6494a09538f369709a376f7d6d5c7f5ae5" + integrity sha512-JwXV9qMpqJWduoEcK3pbAjkOaTqg+o0IzZz/LP7EkFCfJyg5hnDRAUZhP5ffs5/zukZIGHHPY1ZEW8jl5T2j6Q== + dependencies: + "@react-native-community/cli-platform-apple" "13.6.1" -"@react-native-community/cli-server-api@12.3.0": - version "12.3.0" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-server-api/-/cli-server-api-12.3.0.tgz#0460472d44c121d1db8a98ad1df811200c074fb3" - integrity sha512-Rode8NrdyByC+lBKHHn+/W8Zu0c+DajJvLmOWbe2WY/ECvnwcd9MHHbu92hlT2EQaJ9LbLhGrSbQE3cQy9EOCw== +"@react-native-community/cli-server-api@13.6.1": + version "13.6.1" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-server-api/-/cli-server-api-13.6.1.tgz#6be357c07339856620b0881f000bfcf72f3af68c" + integrity sha512-64eC7NuCLenYr237LyJ1H6jf+6L4NA2eXuy+634q0CeIZsAqOe7B5VCJyy2CsWWaeeUbAsC0Oy9/2o2y8/muIw== dependencies: - "@react-native-community/cli-debugger-ui" "12.3.0" - "@react-native-community/cli-tools" "12.3.0" + "@react-native-community/cli-debugger-ui" "13.6.1" + "@react-native-community/cli-tools" "13.6.1" compression "^1.7.1" connect "^3.6.5" errorhandler "^1.5.1" @@ -1646,13 +1656,14 @@ serve-static "^1.13.1" ws "^7.5.1" -"@react-native-community/cli-tools@12.3.0": - version "12.3.0" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-tools/-/cli-tools-12.3.0.tgz#d459a116e1a95034d3c9a6385069c9e2049fb2a6" - integrity sha512-2GafnCr8D88VdClwnm9KZfkEb+lzVoFdr/7ybqhdeYM0Vnt/tr2N+fM1EQzwI1DpzXiBzTYemw8GjRq+Utcz2Q== +"@react-native-community/cli-tools@13.6.1": + version "13.6.1" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-tools/-/cli-tools-13.6.1.tgz#f453a3e8ef13d114c05d77dafe411bc2a82f0279" + integrity sha512-mRJmI5c/Mfi/pESUPjqElv8+t81qfi0pUr1UrIX38nS1o5Ki1D8vC9vAMkPbLaIu2RuhUuzSCfs6zW8AwakUoA== dependencies: appdirsjs "^1.2.4" chalk "^4.1.2" + execa "^5.0.0" find-up "^5.0.0" mime "^2.4.1" node-fetch "^2.6.0" @@ -1662,27 +1673,26 @@ shell-quote "^1.7.3" sudo-prompt "^9.0.0" -"@react-native-community/cli-types@12.3.0": - version "12.3.0" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-types/-/cli-types-12.3.0.tgz#2d21a1f93aefbdb34a04311d68097aef0388704f" - integrity sha512-MgOkmrXH4zsGxhte4YqKL7d+N8ZNEd3w1wo56MZlhu5WabwCJh87wYpU5T8vyfujFLYOFuFK5jjlcbs8F4/WDw== +"@react-native-community/cli-types@13.6.1": + version "13.6.1" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-types/-/cli-types-13.6.1.tgz#565e3dec401c86e5abb436f70b3f491d0e8cb919" + integrity sha512-+ue0eaEnGTKsTpX7F/DVspGDVZz7OgN7uaanaGKJuG9+pJiIgVIXnVu546Ycq8XbWAbZuWR1PL4+SNbf6Ebqqw== dependencies: joi "^17.2.1" -"@react-native-community/cli@12.3.0": - version "12.3.0" - resolved "https://registry.yarnpkg.com/@react-native-community/cli/-/cli-12.3.0.tgz#c89aacc3973943bf24002255d7d0859b511d88a1" - integrity sha512-XeQohi2E+S2+MMSz97QcEZ/bWpi8sfKiQg35XuYeJkc32Til2g0b97jRpn0/+fV0BInHoG1CQYWwHA7opMsrHg== - dependencies: - "@react-native-community/cli-clean" "12.3.0" - "@react-native-community/cli-config" "12.3.0" - "@react-native-community/cli-debugger-ui" "12.3.0" - "@react-native-community/cli-doctor" "12.3.0" - "@react-native-community/cli-hermes" "12.3.0" - "@react-native-community/cli-plugin-metro" "12.3.0" - "@react-native-community/cli-server-api" "12.3.0" - "@react-native-community/cli-tools" "12.3.0" - "@react-native-community/cli-types" "12.3.0" +"@react-native-community/cli@13.6.1": + version "13.6.1" + resolved "https://registry.yarnpkg.com/@react-native-community/cli/-/cli-13.6.1.tgz#38a250422f172559bdbaa8f6f70a75a1cb9a14d2" + integrity sha512-Q3eA7xw42o8NAkztJvjVZT9WWxtRDnYYoRkv8IEIi9m2ya3p/4ZJBNlsQO6kDjasQTERkAoGQc1CveEHEv2QsA== + dependencies: + "@react-native-community/cli-clean" "13.6.1" + "@react-native-community/cli-config" "13.6.1" + "@react-native-community/cli-debugger-ui" "13.6.1" + "@react-native-community/cli-doctor" "13.6.1" + "@react-native-community/cli-hermes" "13.6.1" + "@react-native-community/cli-server-api" "13.6.1" + "@react-native-community/cli-tools" "13.6.1" + "@react-native-community/cli-types" "13.6.1" chalk "^4.1.2" commander "^9.4.1" deepmerge "^4.3.0" @@ -1728,27 +1738,28 @@ dependencies: applicationinsights "^1.8.8" -"@react-native/assets-registry@0.73.1": - version "0.73.1" - resolved "https://registry.yarnpkg.com/@react-native/assets-registry/-/assets-registry-0.73.1.tgz#e2a6b73b16c183a270f338dc69c36039b3946e85" - integrity sha512-2FgAbU7uKM5SbbW9QptPPZx8N9Ke2L7bsHb+EhAanZjFZunA9PaYtyjUQ1s7HD+zDVqOQIvjkpXSv7Kejd2tqg== +"@react-native/assets-registry@0.74.0": + version "0.74.0" + resolved "https://registry.yarnpkg.com/@react-native/assets-registry/-/assets-registry-0.74.0.tgz#560bec29b2699c4d4cbfecfb4c2c5025397aac23" + integrity sha512-I8Yy6bCKU5R4qZX4jfXsAPsHyuGHlulbnbG3NqO9JgZ3T2DJxJiZE39rHORP0trLnRh0rIeRcs4Mc14fAE6hrw== -"@react-native/babel-plugin-codegen@0.73.2": - version "0.73.2" - resolved "https://registry.yarnpkg.com/@react-native/babel-plugin-codegen/-/babel-plugin-codegen-0.73.2.tgz#447656cde437b71dc3ef0af3f8a5b215653d5d07" - integrity sha512-PadyFZWVaWXIBP7Q5dgEL7eAd7tnsgsLjoHJB1hIRZZuVUg1Zqe3nULwC7RFAqOtr5Qx7KXChkFFcKQ3WnZzGw== +"@react-native/babel-plugin-codegen@0.74.2": + version "0.74.2" + resolved "https://registry.yarnpkg.com/@react-native/babel-plugin-codegen/-/babel-plugin-codegen-0.74.2.tgz#ed00979923c14bba847271a690641cce67588caf" + integrity sha512-hIdPub4hOFvIRORRlKtt5FCzdl7Avl4KJ4M5sr2Iq8oOJhMl+4Gh4Kjr7t6DO5ctvFXI4IzB0Wz7FcgDOTFIbA== dependencies: - "@react-native/codegen" "0.73.2" + "@react-native/codegen" "0.74.2" -"@react-native/babel-preset@0.73.19": - version "0.73.19" - resolved "https://registry.yarnpkg.com/@react-native/babel-preset/-/babel-preset-0.73.19.tgz#a6c0587651804f8f01d6f3b7729f1d4a2d469691" - integrity sha512-ujon01uMOREZecIltQxPDmJ6xlVqAUFGI/JCSpeVYdxyXBoBH5dBb0ihj7h6LKH1q1jsnO9z4MxfddtypKkIbg== +"@react-native/babel-preset@0.74.2": + version "0.74.2" + resolved "https://registry.yarnpkg.com/@react-native/babel-preset/-/babel-preset-0.74.2.tgz#25c377ed4f747baea5adeaeba3be3110c6a43093" + integrity sha512-xux1qblfc/XuJib0k5jV5Ro+XGkvwfNYrsvAD7FY+WKn8CBpovwxOvHuqk3HDYpjnIVw7zy5VgyIx+ArlBi6Wg== dependencies: "@babel/core" "^7.20.0" "@babel/plugin-proposal-async-generator-functions" "^7.0.0" "@babel/plugin-proposal-class-properties" "^7.18.0" "@babel/plugin-proposal-export-default-from" "^7.0.0" + "@babel/plugin-proposal-logical-assignment-operators" "^7.18.0" "@babel/plugin-proposal-nullish-coalescing-operator" "^7.18.0" "@babel/plugin-proposal-numeric-separator" "^7.0.0" "@babel/plugin-proposal-object-rest-spread" "^7.20.0" @@ -1784,71 +1795,75 @@ "@babel/plugin-transform-typescript" "^7.5.0" "@babel/plugin-transform-unicode-regex" "^7.0.0" "@babel/template" "^7.0.0" - "@react-native/babel-plugin-codegen" "0.73.2" + "@react-native/babel-plugin-codegen" "0.74.2" babel-plugin-transform-flow-enums "^0.0.2" react-refresh "^0.14.0" -"@react-native/codegen@0.73.2": - version "0.73.2" - resolved "https://registry.yarnpkg.com/@react-native/codegen/-/codegen-0.73.2.tgz#58af4e4c3098f0e6338e88ec64412c014dd51519" - integrity sha512-lfy8S7umhE3QLQG5ViC4wg5N1Z+E6RnaeIw8w1voroQsXXGPB72IBozh8dAHR3+ceTxIU0KX3A8OpJI8e1+HpQ== +"@react-native/codegen@0.74.2": + version "0.74.2" + resolved "https://registry.yarnpkg.com/@react-native/codegen/-/codegen-0.74.2.tgz#70036e7a4f4fb83a72f74c5e25d8caaba12d8445" + integrity sha512-Es4pZtU7fHuYq9cfBhbBOCoyikga3tYKFJ++cZRJmLzt6u4zgRiKIG11WBJYT3v2F3CC/DPtOzB8XaHqLkQMBw== dependencies: "@babel/parser" "^7.20.0" - flow-parser "^0.206.0" glob "^7.1.1" + hermes-parser "0.19.1" invariant "^2.2.4" jscodeshift "^0.14.0" mkdirp "^0.5.1" nullthrows "^1.1.1" -"@react-native/community-cli-plugin@0.73.12": - version "0.73.12" - resolved "https://registry.yarnpkg.com/@react-native/community-cli-plugin/-/community-cli-plugin-0.73.12.tgz#3a72a8cbae839a0382d1a194a7067d4ffa0da04c" - integrity sha512-xWU06OkC1cX++Duh/cD/Wv+oZ0oSY3yqbtxAqQA2H3Q+MQltNNJM6MqIHt1VOZSabRf/LVlR1JL6U9TXJirkaw== +"@react-native/community-cli-plugin@0.74.4": + version "0.74.4" + resolved "https://registry.yarnpkg.com/@react-native/community-cli-plugin/-/community-cli-plugin-0.74.4.tgz#ddc397fd14691e8cc4c10612aadd77f852169af3" + integrity sha512-7soEv3NFD4BW8p10nrJdM09EUhhtM9Y17JLk8VD0NvhkysRvIjtI2XLq2KvSqTvIq+jYzjpmCK9FsV3nOlHvNQ== dependencies: - "@react-native-community/cli-server-api" "12.3.0" - "@react-native-community/cli-tools" "12.3.0" - "@react-native/dev-middleware" "0.73.7" - "@react-native/metro-babel-transformer" "0.73.13" + "@react-native-community/cli-server-api" "13.6.1" + "@react-native-community/cli-tools" "13.6.1" + "@react-native/dev-middleware" "0.74.2" + "@react-native/metro-babel-transformer" "0.74.2" chalk "^4.0.0" execa "^5.1.1" metro "^0.80.3" metro-config "^0.80.3" metro-core "^0.80.3" node-fetch "^2.2.0" + querystring "^0.2.1" readline "^1.3.0" -"@react-native/debugger-frontend@0.73.3": - version "0.73.3" - resolved "https://registry.yarnpkg.com/@react-native/debugger-frontend/-/debugger-frontend-0.73.3.tgz#033757614d2ada994c68a1deae78c1dd2ad33c2b" - integrity sha512-RgEKnWuoo54dh7gQhV7kvzKhXZEhpF9LlMdZolyhGxHsBqZ2gXdibfDlfcARFFifPIiaZ3lXuOVVa4ei+uPgTw== +"@react-native/debugger-frontend@0.74.1": + version "0.74.1" + resolved "https://registry.yarnpkg.com/@react-native/debugger-frontend/-/debugger-frontend-0.74.1.tgz#fc512b916830cfeffb0413f0d343282dddd66720" + integrity sha512-XgJmnnCkuifquEGqGhYSwM7jqXfU7oaP/k7YZBMyknj1QI8sW4pXKHjWW9bM0wKeAC/CptN+0+r4v8C4Qdp36g== -"@react-native/dev-middleware@0.73.7": - version "0.73.7" - resolved "https://registry.yarnpkg.com/@react-native/dev-middleware/-/dev-middleware-0.73.7.tgz#61d2bf08973d9a537fa3f2a42deeb13530d721ae" - integrity sha512-BZXpn+qKp/dNdr4+TkZxXDttfx8YobDh8MFHsMk9usouLm22pKgFIPkGBV0X8Do4LBkFNPGtrnsKkWk/yuUXKg== +"@react-native/dev-middleware@0.74.2": + version "0.74.2" + resolved "https://registry.yarnpkg.com/@react-native/dev-middleware/-/dev-middleware-0.74.2.tgz#c03bfdffe91afb725e7a80ae21622be7addc1c79" + integrity sha512-r0NsyHpb4K/andsF6t3FABvO/6Q5QvPxrPXZP+xfcvicftUS9jOrAHBkBo9xr/D0hy/k1A8KcoibrPcM4l/2zw== dependencies: "@isaacs/ttlcache" "^1.4.1" - "@react-native/debugger-frontend" "0.73.3" + "@react-native/debugger-frontend" "0.74.1" + "@rnx-kit/chromium-edge-launcher" "^1.0.0" chrome-launcher "^0.15.2" - chromium-edge-launcher "^1.0.0" connect "^3.6.5" debug "^2.2.0" node-fetch "^2.2.0" + nullthrows "^1.1.1" open "^7.0.3" + selfsigned "^2.4.1" serve-static "^1.13.1" temp-dir "^2.0.0" + ws "^6.2.2" -"@react-native/eslint-config@^0.73.2": - version "0.73.2" - resolved "https://registry.yarnpkg.com/@react-native/eslint-config/-/eslint-config-0.73.2.tgz#40b2cd8ce245e90c885b8ab15fae1219a946bfac" - integrity sha512-YzMfes19loTfbrkbYNAfHBDXX4oRBzc5wnvHs4h2GIHUj6YKs5ZK5lldqSrBJCdZAI3nuaO9Qj+t5JRwou571w== +"@react-native/eslint-config@^0.74.1": + version "0.74.1" + resolved "https://registry.yarnpkg.com/@react-native/eslint-config/-/eslint-config-0.74.1.tgz#4b2c2ba933b1a007f0359e807a85ccf7eae649de" + integrity sha512-l3+nodpdPh6JdilxZa0fje6+wOeI3eCbWoZ/gduJk2+FYNT93GbG39s66ui8YHhA43NbCYxp0+Xd+HVDB9HmVQ== dependencies: "@babel/core" "^7.20.0" "@babel/eslint-parser" "^7.20.0" - "@react-native/eslint-plugin" "0.73.1" - "@typescript-eslint/eslint-plugin" "^5.57.1" - "@typescript-eslint/parser" "^5.57.1" + "@react-native/eslint-plugin" "0.74.1" + "@typescript-eslint/eslint-plugin" "^6.7.4" + "@typescript-eslint/parser" "^6.7.4" eslint-config-prettier "^8.5.0" eslint-plugin-eslint-comments "^3.2.0" eslint-plugin-ft-flow "^2.0.1" @@ -1858,59 +1873,71 @@ eslint-plugin-react-hooks "^4.6.0" eslint-plugin-react-native "^4.0.0" -"@react-native/eslint-plugin@0.73.1": - version "0.73.1" - resolved "https://registry.yarnpkg.com/@react-native/eslint-plugin/-/eslint-plugin-0.73.1.tgz#79d2c4d90c80bfad8900db335bfbaf1ca599abdc" - integrity sha512-8BNMFE8CAI7JLWLOs3u33wcwcJ821LYs5g53Xyx9GhSg0h8AygTwDrwmYb/pp04FkCNCPjKPBoaYRthQZmxgwA== +"@react-native/eslint-plugin@0.74.1": + version "0.74.1" + resolved "https://registry.yarnpkg.com/@react-native/eslint-plugin/-/eslint-plugin-0.74.1.tgz#b7f419d42999641e681924cb1c03164433675ec3" + integrity sha512-+9RWKyyVmDY4neXx6Z5OtxxYco4OGXpkzNDayAJtYi7A0zcKjb1VZC25+SVRkRt+/39lYMT7WtWA4dsHEPsdng== -"@react-native/gradle-plugin@0.73.4": - version "0.73.4" - resolved "https://registry.yarnpkg.com/@react-native/gradle-plugin/-/gradle-plugin-0.73.4.tgz#aa55784a8c2b471aa89934db38c090d331baf23b" - integrity sha512-PMDnbsZa+tD55Ug+W8CfqXiGoGneSSyrBZCMb5JfiB3AFST3Uj5e6lw8SgI/B6SKZF7lG0BhZ6YHZsRZ5MlXmg== +"@react-native/gradle-plugin@0.74.1": + version "0.74.1" + resolved "https://registry.yarnpkg.com/@react-native/gradle-plugin/-/gradle-plugin-0.74.1.tgz#b4479b16e75e1798b6acbc035f352a0ab940804e" + integrity sha512-RJCuq9bSmWv0MUWsLhtanZzyZ/asntThfq9qbYjQilN4B6oVWG0K/n+iLRfPmFuuZUineBGMG/NUkQeFDmmmYw== -"@react-native/js-polyfills@0.73.1": - version "0.73.1" - resolved "https://registry.yarnpkg.com/@react-native/js-polyfills/-/js-polyfills-0.73.1.tgz#730b0a7aaab947ae6f8e5aa9d995e788977191ed" - integrity sha512-ewMwGcumrilnF87H4jjrnvGZEaPFCAC4ebraEK+CurDDmwST/bIicI4hrOAv+0Z0F7DEK4O4H7r8q9vH7IbN4g== +"@react-native/js-polyfills@0.74.0": + version "0.74.0" + resolved "https://registry.yarnpkg.com/@react-native/js-polyfills/-/js-polyfills-0.74.0.tgz#54f7d728b6c8ea52d29993d86d2a9d4be08072d2" + integrity sha512-DMpn5l1TVkIBFe9kE54pwOI2fQYbQNZ6cto0IuCUxQVUFJBcFMJ6Gbk8jhz8tvcWuDW3xVK9AWq9DJTkuchWsQ== -"@react-native/metro-babel-transformer@0.73.13": - version "0.73.13" - resolved "https://registry.yarnpkg.com/@react-native/metro-babel-transformer/-/metro-babel-transformer-0.73.13.tgz#81cb6dd8d5140c57f5595183fd6857feb8b7f5d7" - integrity sha512-k9AQifogQfgUXPlqQSoMtX2KUhniw4XvJl+nZ4hphCH7qiMDAwuP8OmkJbz5E/N+Ro9OFuLE7ax4GlwxaTsAWg== +"@react-native/metro-babel-transformer@0.74.2": + version "0.74.2" + resolved "https://registry.yarnpkg.com/@react-native/metro-babel-transformer/-/metro-babel-transformer-0.74.2.tgz#8a412cc8e964b1262a5098038dbb0a98cef770f2" + integrity sha512-lxYYz/FkPR0ByDgzAhVpMWRvwaRTSohKZll9+dgYEy5MeRP0RkzJto4Y2ISL60R6DmP2daC/xmKktIx9RoLdKw== dependencies: "@babel/core" "^7.20.0" - "@react-native/babel-preset" "0.73.19" - hermes-parser "0.15.0" + "@react-native/babel-preset" "0.74.2" + hermes-parser "0.19.1" nullthrows "^1.1.1" -"@react-native/metro-config@^0.73.3": - version "0.73.3" - resolved "https://registry.yarnpkg.com/@react-native/metro-config/-/metro-config-0.73.3.tgz#15f5e1393258148fadb285821dd9b037ea411459" - integrity sha512-aIVh+lM52n7/RFDXLDiIp1vI21jc9thm2VxdkP7KwxMut7VvW+2tO38zKt74/2ker2ca0205tbf3pyCYBvV6Ww== +"@react-native/metro-config@^0.74.2": + version "0.74.2" + resolved "https://registry.yarnpkg.com/@react-native/metro-config/-/metro-config-0.74.2.tgz#234053da15de5da51f31a596970ab17ec34a4519" + integrity sha512-Ix0Q3dakJl3TKpOrxIYshvEBpFjhY05zNyyNAsRMSm7TKy0aEECTgic5VOK0CdhgY0vmOlVuyFazWHiNj8imIw== dependencies: - "@react-native/js-polyfills" "0.73.1" - "@react-native/metro-babel-transformer" "0.73.13" + "@react-native/js-polyfills" "0.74.0" + "@react-native/metro-babel-transformer" "0.74.2" metro-config "^0.80.3" metro-runtime "^0.80.3" -"@react-native/normalize-colors@0.73.2", "@react-native/normalize-colors@^0.73.0": - version "0.73.2" - resolved "https://registry.yarnpkg.com/@react-native/normalize-colors/-/normalize-colors-0.73.2.tgz#cc8e48fbae2bbfff53e12f209369e8d2e4cf34ec" - integrity sha512-bRBcb2T+I88aG74LMVHaKms2p/T8aQd8+BZ7LuuzXlRfog1bMWWn/C5i0HVuvW4RPtXQYgIlGiXVDy9Ir1So/w== +"@react-native/normalize-colors@0.74.1": + version "0.74.1" + resolved "https://registry.yarnpkg.com/@react-native/normalize-colors/-/normalize-colors-0.74.1.tgz#6e8ccf99954728dcd3cfe0d56e758ee5050a7bea" + integrity sha512-r+bTRs6pImqE3fx4h7bPzH2sOWSrnSHF/RJ7d00pNUj2P6ws3DdhS7WV+/7YosZkloYQfkiIkK3pIHvcYn665w== -"@react-native/typescript-config@^0.73.1": - version "0.73.1" - resolved "https://registry.yarnpkg.com/@react-native/typescript-config/-/typescript-config-0.73.1.tgz#c97a42f5cd264069bfe86b737c531ed2f042ae6d" - integrity sha512-7Wrmdp972ZO7xvDid+xRGtvX6xz47cpGj7Y7VKlUhSVFFqbOGfB5WCpY1vMr6R/fjl+Og2fRw+TETN2+JnJi0w== +"@react-native/typescript-config@^0.74.1": + version "0.74.1" + resolved "https://registry.yarnpkg.com/@react-native/typescript-config/-/typescript-config-0.74.1.tgz#bf7c0c31743dc24ed4dbedf0d3b7c4664aa80cfb" + integrity sha512-CMHWXa7363T78MiKsszhbovctFy2SzSrSuG0Ejol8QcGbSpt7WWR/FzK43036wK2eOagzCGHNNqyhzOml/ZutA== -"@react-native/virtualized-lists@0.73.4": - version "0.73.4" - resolved "https://registry.yarnpkg.com/@react-native/virtualized-lists/-/virtualized-lists-0.73.4.tgz#640e594775806f63685435b5d9c3d05c378ccd8c" - integrity sha512-HpmLg1FrEiDtrtAbXiwCgXFYyloK/dOIPIuWW3fsqukwJEWAiTzm1nXGJ7xPU5XTHiWZ4sKup5Ebaj8z7iyWog== +"@react-native/virtualized-lists@0.74.1": + version "0.74.1" + resolved "https://registry.yarnpkg.com/@react-native/virtualized-lists/-/virtualized-lists-0.74.1.tgz#ef9263be8885223b39dc6b03c6488a761ff60372" + integrity sha512-ZZCZ/F1g6vcTIoqfgYxxMvITV6Jg5GMLg5D0wrJoPLkF/+tEM4sXbHqlquqhGHdbmZRW6C4u4AvB4NvpQpR3mQ== dependencies: invariant "^2.2.4" nullthrows "^1.1.1" +"@rnx-kit/chromium-edge-launcher@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@rnx-kit/chromium-edge-launcher/-/chromium-edge-launcher-1.0.0.tgz#c0df8ea00a902c7a417cd9655aab06de398b939c" + integrity sha512-lzD84av1ZQhYUS+jsGqJiCMaJO2dn9u+RTT9n9q6D3SaKVwWqv+7AoRKqBu19bkwyE+iFRl1ymr40QS90jVFYg== + dependencies: + "@types/node" "^18.0.0" + escape-string-regexp "^4.0.0" + is-wsl "^2.2.0" + lighthouse-logger "^1.0.0" + mkdirp "^1.0.4" + rimraf "^3.0.2" + "@sideway/address@^4.1.3": version "4.1.4" resolved "https://registry.yarnpkg.com/@sideway/address/-/address-4.1.4.tgz#03dccebc6ea47fdc226f7d3d1ad512955d4783f0" @@ -2014,11 +2041,18 @@ dependencies: "@types/istanbul-lib-report" "*" -"@types/json-schema@^7.0.9": +"@types/json-schema@^7.0.12", "@types/json-schema@^7.0.9": version "7.0.15" resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.15.tgz#596a1747233694d50f6ad8a7869fcb6f56cf5841" integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA== +"@types/node-forge@^1.3.0": + version "1.3.11" + resolved "https://registry.yarnpkg.com/@types/node-forge/-/node-forge-1.3.11.tgz#0972ea538ddb0f4d9c2fa0ec5db5724773a604da" + integrity sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ== + dependencies: + "@types/node" "*" + "@types/node@*": version "20.9.2" resolved "https://registry.yarnpkg.com/@types/node/-/node-20.9.2.tgz#002815c8e87fe0c9369121c78b52e800fadc0ac6" @@ -2026,6 +2060,13 @@ dependencies: undici-types "~5.26.4" +"@types/node@^18.0.0": + version "18.19.22" + resolved "https://registry.yarnpkg.com/@types/node/-/node-18.19.22.tgz#f622f92514b897e6b09903e97c16a0db8e94689f" + integrity sha512-p3pDIfuMg/aXBmhkyanPshdfJuX5c5+bQjYLIikPLXAUycEogij/c50n/C+8XOA5L93cU4ZRXtn+dNQGi0IZqQ== + dependencies: + undici-types "~5.26.4" + "@types/prop-types@*": version "15.7.10" resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.10.tgz#892afc9332c4d62a5ea7e897fe48ed2085bbb08a" @@ -2066,6 +2107,11 @@ resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.5.5.tgz#deed5ab7019756c9c90ea86139106b0346223f35" integrity sha512-+d+WYC1BxJ6yVOgUgzK8gWvp5qF8ssV5r4nsDcZWKRWcDQLQ619tvWAxJQYGgBrO1MnLJC7a5GtiYsAoQ47dJg== +"@types/semver@^7.5.0": + version "7.5.8" + resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.5.8.tgz#8268a8c57a3e4abd25c165ecd36237db7948a55e" + integrity sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ== + "@types/stack-utils@^2.0.0": version "2.0.3" resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.3.tgz#6209321eb2c1712a7e7466422b8cb1fc0d9dd5d8" @@ -2097,30 +2143,32 @@ dependencies: "@types/yargs-parser" "*" -"@typescript-eslint/eslint-plugin@^5.57.1": - version "5.62.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.62.0.tgz#aeef0328d172b9e37d9bab6dbc13b87ed88977db" - integrity sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag== +"@typescript-eslint/eslint-plugin@^6.7.4": + version "6.21.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.21.0.tgz#30830c1ca81fd5f3c2714e524c4303e0194f9cd3" + integrity sha512-oy9+hTPCUFpngkEZUSzbf9MxI65wbKFoQYsgPdILTfbUldp5ovUuphZVe4i30emU9M/kP+T64Di0mxl7dSw3MA== dependencies: - "@eslint-community/regexpp" "^4.4.0" - "@typescript-eslint/scope-manager" "5.62.0" - "@typescript-eslint/type-utils" "5.62.0" - "@typescript-eslint/utils" "5.62.0" + "@eslint-community/regexpp" "^4.5.1" + "@typescript-eslint/scope-manager" "6.21.0" + "@typescript-eslint/type-utils" "6.21.0" + "@typescript-eslint/utils" "6.21.0" + "@typescript-eslint/visitor-keys" "6.21.0" debug "^4.3.4" graphemer "^1.4.0" - ignore "^5.2.0" - natural-compare-lite "^1.4.0" - semver "^7.3.7" - tsutils "^3.21.0" + ignore "^5.2.4" + natural-compare "^1.4.0" + semver "^7.5.4" + ts-api-utils "^1.0.1" -"@typescript-eslint/parser@^5.57.1": - version "5.62.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.62.0.tgz#1b63d082d849a2fcae8a569248fbe2ee1b8a56c7" - integrity sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA== +"@typescript-eslint/parser@^6.7.4": + version "6.21.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-6.21.0.tgz#af8fcf66feee2edc86bc5d1cf45e33b0630bf35b" + integrity sha512-tbsV1jPne5CkFQCgPBcDOt30ItF7aJoZL997JSF7MhGQqOeT3svWRYxiqlfA5RUdlHN6Fi+EI9bxqbdyAUZjYQ== dependencies: - "@typescript-eslint/scope-manager" "5.62.0" - "@typescript-eslint/types" "5.62.0" - "@typescript-eslint/typescript-estree" "5.62.0" + "@typescript-eslint/scope-manager" "6.21.0" + "@typescript-eslint/types" "6.21.0" + "@typescript-eslint/typescript-estree" "6.21.0" + "@typescript-eslint/visitor-keys" "6.21.0" debug "^4.3.4" "@typescript-eslint/scope-manager@5.62.0": @@ -2131,21 +2179,34 @@ "@typescript-eslint/types" "5.62.0" "@typescript-eslint/visitor-keys" "5.62.0" -"@typescript-eslint/type-utils@5.62.0": - version "5.62.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.62.0.tgz#286f0389c41681376cdad96b309cedd17d70346a" - integrity sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew== +"@typescript-eslint/scope-manager@6.21.0": + version "6.21.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-6.21.0.tgz#ea8a9bfc8f1504a6ac5d59a6df308d3a0630a2b1" + integrity sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg== dependencies: - "@typescript-eslint/typescript-estree" "5.62.0" - "@typescript-eslint/utils" "5.62.0" + "@typescript-eslint/types" "6.21.0" + "@typescript-eslint/visitor-keys" "6.21.0" + +"@typescript-eslint/type-utils@6.21.0": + version "6.21.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-6.21.0.tgz#6473281cfed4dacabe8004e8521cee0bd9d4c01e" + integrity sha512-rZQI7wHfao8qMX3Rd3xqeYSMCL3SoiSQLBATSiVKARdFGCYSRvmViieZjqc58jKgs8Y8i9YvVVhRbHSTA4VBag== + dependencies: + "@typescript-eslint/typescript-estree" "6.21.0" + "@typescript-eslint/utils" "6.21.0" debug "^4.3.4" - tsutils "^3.21.0" + ts-api-utils "^1.0.1" "@typescript-eslint/types@5.62.0": version "5.62.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.62.0.tgz#258607e60effa309f067608931c3df6fed41fd2f" integrity sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ== +"@typescript-eslint/types@6.21.0": + version "6.21.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-6.21.0.tgz#205724c5123a8fef7ecd195075fa6e85bac3436d" + integrity sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg== + "@typescript-eslint/typescript-estree@5.62.0": version "5.62.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz#7d17794b77fabcac615d6a48fb143330d962eb9b" @@ -2159,7 +2220,34 @@ semver "^7.3.7" tsutils "^3.21.0" -"@typescript-eslint/utils@5.62.0", "@typescript-eslint/utils@^5.10.0": +"@typescript-eslint/typescript-estree@6.21.0": + version "6.21.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-6.21.0.tgz#c47ae7901db3b8bddc3ecd73daff2d0895688c46" + integrity sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ== + dependencies: + "@typescript-eslint/types" "6.21.0" + "@typescript-eslint/visitor-keys" "6.21.0" + debug "^4.3.4" + globby "^11.1.0" + is-glob "^4.0.3" + minimatch "9.0.3" + semver "^7.5.4" + ts-api-utils "^1.0.1" + +"@typescript-eslint/utils@6.21.0": + version "6.21.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-6.21.0.tgz#4714e7a6b39e773c1c8e97ec587f520840cd8134" + integrity sha512-NfWVaC8HP9T8cbKQxHcsJBY5YE1O33+jpMwN45qzWWaPDZgLIbo12toGMWnmhvCpd3sIxkpDw3Wv1B3dYrbDQQ== + dependencies: + "@eslint-community/eslint-utils" "^4.4.0" + "@types/json-schema" "^7.0.12" + "@types/semver" "^7.5.0" + "@typescript-eslint/scope-manager" "6.21.0" + "@typescript-eslint/types" "6.21.0" + "@typescript-eslint/typescript-estree" "6.21.0" + semver "^7.5.4" + +"@typescript-eslint/utils@^5.10.0": version "5.62.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.62.0.tgz#141e809c71636e4a75daa39faed2fb5f4b10df86" integrity sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ== @@ -2181,6 +2269,14 @@ "@typescript-eslint/types" "5.62.0" eslint-visitor-keys "^3.3.0" +"@typescript-eslint/visitor-keys@6.21.0": + version "6.21.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-6.21.0.tgz#87a99d077aa507e20e238b11d56cc26ade45fe47" + integrity sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A== + dependencies: + "@typescript-eslint/types" "6.21.0" + eslint-visitor-keys "^3.4.1" + "@ungap/structured-clone@^1.2.0": version "1.2.0" resolved "https://registry.yarnpkg.com/@ungap/structured-clone/-/structured-clone-1.2.0.tgz#756641adb587851b5ccb3e095daf27ae581c8406" @@ -2808,18 +2904,6 @@ chrome-launcher@^0.15.2: is-wsl "^2.2.0" lighthouse-logger "^1.0.0" -chromium-edge-launcher@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/chromium-edge-launcher/-/chromium-edge-launcher-1.0.0.tgz#0443083074715a13c669530b35df7bfea33b1509" - integrity sha512-pgtgjNKZ7i5U++1g1PWv75umkHvhVTDOQIZ+sjeUX9483S7Y6MUvO0lrd7ShGlQlFHMN4SwKTCq/X8hWrbv2KA== - dependencies: - "@types/node" "*" - escape-string-regexp "^4.0.0" - is-wsl "^2.2.0" - lighthouse-logger "^1.0.0" - mkdirp "^1.0.4" - rimraf "^3.0.2" - ci-info@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" @@ -3160,15 +3244,6 @@ depd@2.0.0: resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== -deprecated-react-native-prop-types@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/deprecated-react-native-prop-types/-/deprecated-react-native-prop-types-5.0.0.tgz#02a12f090da7bd9e8c3ac53c31cf786a1315d302" - integrity sha512-cIK8KYiiGVOFsKdPMmm1L3tA/Gl+JopXL6F5+C7x39MyPsQYnP57Im/D6bNUzcborD7fcMwiwZqcBdBXXZucYQ== - dependencies: - "@react-native/normalize-colors" "^0.73.0" - invariant "^2.2.4" - prop-types "^15.8.1" - destroy@1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015" @@ -3682,7 +3757,7 @@ fast-diff@^1.1.2: resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.3.0.tgz#ece407fa550a64d638536cd727e129c61616e0f0" integrity sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw== -fast-glob@^3.2.9: +fast-glob@^3.2.9, fast-glob@^3.3.2: version "3.3.2" resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.2.tgz#a904501e57cfdd2ffcded45e99a54fef55e46129" integrity sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow== @@ -3857,11 +3932,6 @@ flow-parser@0.*: resolved "https://registry.yarnpkg.com/flow-parser/-/flow-parser-0.222.0.tgz#88decc0e35bc11c011af66dbc2f669589d69a6b2" integrity sha512-Fq5OkFlFRSMV2EOZW+4qUYMTE0uj8pcLsYJMxXYriSBDpHAF7Ofx3PibCTy3cs5P6vbsry7eYj7Z7xFD49GIOQ== -flow-parser@^0.206.0: - version "0.206.0" - resolved "https://registry.yarnpkg.com/flow-parser/-/flow-parser-0.206.0.tgz#f4f794f8026535278393308e01ea72f31000bfef" - integrity sha512-HVzoK3r6Vsg+lKvlIZzaWNBVai+FXTX1wdYhz/wVlH13tb/gOdLXmlTqy6odmTBhT5UoWUbq0k8263Qhr9d88w== - for-each@^0.3.3: version "0.3.3" resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.3.tgz#69b447e88a0a5d32c3e7084f3f1710034b21376e" @@ -4089,22 +4159,15 @@ hasown@^2.0.0: dependencies: function-bind "^1.1.2" -hermes-estree@0.15.0: - version "0.15.0" - resolved "https://registry.yarnpkg.com/hermes-estree/-/hermes-estree-0.15.0.tgz#e32f6210ab18c7b705bdcb375f7700f2db15d6ba" - integrity sha512-lLYvAd+6BnOqWdnNbP/Q8xfl8LOGw4wVjfrNd9Gt8eoFzhNBRVD95n4l2ksfMVOoxuVyegs85g83KS9QOsxbVQ== - hermes-estree@0.18.2: version "0.18.2" resolved "https://registry.yarnpkg.com/hermes-estree/-/hermes-estree-0.18.2.tgz#fd450fa1659cf074ceaa2ddeeb21674f3b2342f3" integrity sha512-KoLsoWXJ5o81nit1wSyEZnWUGy9cBna9iYMZBR7skKh7okYAYKqQ9/OczwpMHn/cH0hKDyblulGsJ7FknlfVxQ== -hermes-parser@0.15.0: - version "0.15.0" - resolved "https://registry.yarnpkg.com/hermes-parser/-/hermes-parser-0.15.0.tgz#f611a297c2a2dbbfbce8af8543242254f604c382" - integrity sha512-Q1uks5rjZlE9RjMMjSUCkGrEIPI5pKJILeCtK1VmTj7U4pf3wVPoo+cxfu+s4cBAPy2JzikIIdCZgBoR6x7U1Q== - dependencies: - hermes-estree "0.15.0" +hermes-estree@0.19.1: + version "0.19.1" + resolved "https://registry.yarnpkg.com/hermes-estree/-/hermes-estree-0.19.1.tgz#d5924f5fac2bf0532547ae9f506d6db8f3c96392" + integrity sha512-daLGV3Q2MKk8w4evNMKwS8zBE/rcpA800nu1Q5kM08IKijoSnPe9Uo1iIxzPKRkn95IxxsgBMPeYHt3VG4ej2g== hermes-parser@0.18.2: version "0.18.2" @@ -4113,6 +4176,13 @@ hermes-parser@0.18.2: dependencies: hermes-estree "0.18.2" +hermes-parser@0.19.1: + version "0.19.1" + resolved "https://registry.yarnpkg.com/hermes-parser/-/hermes-parser-0.19.1.tgz#1044348097165b7c93dc198a80b04ed5130d6b1a" + integrity sha512-Vp+bXzxYJWrpEuJ/vXxUsLnt0+y4q9zyi4zUlkLqD8FKv4LjIfOvP69R/9Lty3dCyKh0E2BU7Eypqr63/rKT/A== + dependencies: + hermes-estree "0.19.1" + hermes-profile-transformer@^0.0.6: version "0.0.6" resolved "https://registry.yarnpkg.com/hermes-profile-transformer/-/hermes-profile-transformer-0.0.6.tgz#bd0f5ecceda80dd0ddaae443469ab26fb38fc27b" @@ -4165,6 +4235,11 @@ ignore@^5.0.5, ignore@^5.2.0: resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.0.tgz#67418ae40d34d6999c95ff56016759c718c82f78" integrity sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg== +ignore@^5.2.4: + version "5.3.1" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.1.tgz#5073e554cd42c5b33b394375f538b8593e34d4ef" + integrity sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw== + image-size@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/image-size/-/image-size-1.0.2.tgz#d778b6d0ab75b2737c1556dd631652eb963bc486" @@ -4255,11 +4330,6 @@ invariant@^2.2.4: dependencies: loose-envify "^1.0.0" -ip@^1.1.5: - version "1.1.8" - resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.8.tgz#ae05948f6b075435ed3307acce04629da8cdbf48" - integrity sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg== - is-array-buffer@^3.0.1, is-array-buffer@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/is-array-buffer/-/is-array-buffer-3.0.2.tgz#f2653ced8412081638ecb0ebbd0c41c6e0aecbbe" @@ -5491,6 +5561,13 @@ mimic-fn@^2.0.0, mimic-fn@^2.1.0: resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== +minimatch@9.0.3: + version "9.0.3" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.3.tgz#a6e00c3de44c3a542bfaae70abfc22420a6da825" + integrity sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg== + dependencies: + brace-expansion "^2.0.1" + minimatch@^3.0.2, minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" @@ -5547,11 +5624,6 @@ mute-stream@0.0.7: resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" integrity sha512-r65nCZhrbXXb6dXOACihYApHw2Q6pV0M3V0PSxd74N0+D8nzAdEAITq2oAjA1jVnKI+tGvEBUpqiMh0+rW6zDQ== -natural-compare-lite@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz#17b09581988979fddafe0201e931ba933c96cbb4" - integrity sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g== - natural-compare@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" @@ -5604,6 +5676,11 @@ node-fetch@^2.2.0, node-fetch@^2.6.0: dependencies: whatwg-url "^5.0.0" +node-forge@^1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-1.3.1.tgz#be8da2af243b2417d5f646a770663a92b7e9ded3" + integrity sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA== + node-int64@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" @@ -6094,6 +6171,11 @@ pure-rand@^6.0.0: resolved "https://registry.yarnpkg.com/pure-rand/-/pure-rand-6.0.4.tgz#50b737f6a925468679bff00ad20eade53f37d5c7" integrity sha512-LA0Y9kxMYv47GIPJy6MI84fqTd2HmYZI83W/kM/SkKfDlajnZYfmXFTxkbY+xSBPkLJxltMa9hIkmdc29eguMA== +querystring@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.1.tgz#40d77615bb09d16902a85c3e38aa8b5ed761c2dd" + integrity sha512-wkvS7mL/JMugcup3/rMitHmd9ecIGd2lhFhK9N3UUQ450h66d1r3Y9nvXzQAW1Lq+wyx61k/1pfKS5KuKiyEbg== + queue-microtask@^1.2.2: version "1.2.3" resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" @@ -6111,7 +6193,7 @@ range-parser@~1.2.1: resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== -react-devtools-core@^4.27.7, react-devtools-core@^4.6.0: +react-devtools-core@^4.6.0: version "4.28.5" resolved "https://registry.yarnpkg.com/react-devtools-core/-/react-devtools-core-4.28.5.tgz#c8442b91f068cdf0c899c543907f7f27d79c2508" integrity sha512-cq/o30z9W2Wb4rzBefjv5fBalHU0rJGZCHAkf/RHSBWSSYwh8PlQTqqOJmgIIbBtpj27T6FIPXeomIjZtCNVqA== @@ -6119,6 +6201,14 @@ react-devtools-core@^4.27.7, react-devtools-core@^4.6.0: shell-quote "^1.6.1" ws "^7" +react-devtools-core@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/react-devtools-core/-/react-devtools-core-5.0.0.tgz#50b04a4dbfa62badbe4d86529e9478c396988b31" + integrity sha512-SAAMLacNDfFjMJjmbXURNWtrTyARi9xTqGkY48Btw5cIWlr1wgxfWYZKxoUZav1qqmhbpgTzSmmF+cpMHGHY3A== + dependencies: + shell-quote "^1.6.1" + ws "^7" + "react-is@^16.12.0 || ^17.0.0 || ^18.0.0", react-is@^18.0.0: version "18.2.0" resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.2.0.tgz#199431eeaaa2e09f86427efbb4f1473edb47609b" @@ -6159,27 +6249,27 @@ react-native-windows@0.63.41: use-subscription "^1.0.0" whatwg-fetch "^3.0.0" -react-native@0.73.2: - version "0.73.2" - resolved "https://registry.yarnpkg.com/react-native/-/react-native-0.73.2.tgz#74ee163c8189660d41d1da6560411da7ce41a608" - integrity sha512-7zj9tcUYpJUBdOdXY6cM8RcXYWkyql4kMyGZflW99E5EuFPoC7Ti+ZQSl7LP9ZPzGD0vMfslwyDW0I4tPWUCFw== +react-native@0.74.0-rc.2: + version "0.74.0-rc.2" + resolved "https://registry.yarnpkg.com/react-native/-/react-native-0.74.0-rc.2.tgz#cac4400d0842ab2061cfa37fd364249eb24706ca" + integrity sha512-0fo2/JFMyZY/rgfy/Ld1W+71zd0qKRD6d+hQVNSnmknkMNlKreWns+XTFO8qcUJrPox8dcUKH+lTCad+rd4uUA== dependencies: "@jest/create-cache-key-function" "^29.6.3" - "@react-native-community/cli" "12.3.0" - "@react-native-community/cli-platform-android" "12.3.0" - "@react-native-community/cli-platform-ios" "12.3.0" - "@react-native/assets-registry" "0.73.1" - "@react-native/codegen" "0.73.2" - "@react-native/community-cli-plugin" "0.73.12" - "@react-native/gradle-plugin" "0.73.4" - "@react-native/js-polyfills" "0.73.1" - "@react-native/normalize-colors" "0.73.2" - "@react-native/virtualized-lists" "0.73.4" + "@react-native-community/cli" "13.6.1" + "@react-native-community/cli-platform-android" "13.6.1" + "@react-native-community/cli-platform-ios" "13.6.1" + "@react-native/assets-registry" "0.74.0" + "@react-native/codegen" "0.74.2" + "@react-native/community-cli-plugin" "0.74.4" + "@react-native/gradle-plugin" "0.74.1" + "@react-native/js-polyfills" "0.74.0" + "@react-native/normalize-colors" "0.74.1" + "@react-native/virtualized-lists" "0.74.1" abort-controller "^3.0.0" anser "^1.4.9" ansi-regex "^5.0.0" base64-js "^1.5.1" - deprecated-react-native-prop-types "^5.0.0" + chalk "^4.0.0" event-target-shim "^5.0.1" flow-enums-runtime "^0.0.6" invariant "^2.2.4" @@ -6192,7 +6282,7 @@ react-native@0.73.2: nullthrows "^1.1.1" pretty-format "^26.5.2" promise "^8.3.0" - react-devtools-core "^4.27.7" + react-devtools-core "^5.0.0" react-refresh "^0.14.0" react-shallow-renderer "^16.15.0" regenerator-runtime "^0.13.2" @@ -6503,6 +6593,14 @@ scheduler@0.24.0-canary-efb381bbf-20230505: dependencies: loose-envify "^1.1.0" +selfsigned@^2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-2.4.1.tgz#560d90565442a3ed35b674034cec4e95dceb4ae0" + integrity sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q== + dependencies: + "@types/node-forge" "^1.3.0" + node-forge "^1" + semver@^5.1.0, semver@^5.3.0, semver@^5.4.1, semver@^5.5.0, semver@^5.6.0: version "5.7.2" resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.2.tgz#48d55db737c3287cd4835e17fa13feace1c41ef8" @@ -6997,6 +7095,11 @@ tr46@~0.0.3: resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== +ts-api-utils@^1.0.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-1.2.1.tgz#f716c7e027494629485b21c0df6180f4d08f5e8b" + integrity sha512-RIYA36cJn2WiH9Hy77hdF9r7oEwxAtB/TS9/S4Qd90Ap4z5FSiin5zEiTL44OII1Y3IIlEvxwxFUVgrHSZ/UpA== + tslib@^1.8.1: version "1.14.1" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" From 46c8c498c474600a0b35ebaf744306aefa42905f Mon Sep 17 00:00:00 2001 From: Krzysztof Moch Date: Thu, 7 Mar 2024 20:16:11 +0100 Subject: [PATCH 07/10] fix(ios): fix missing bridge in bridgeless mode (#3570) --- ios/Video/RCTVideoManager.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ios/Video/RCTVideoManager.swift b/ios/Video/RCTVideoManager.swift index bfc398d7b4..e2055c022d 100644 --- a/ios/Video/RCTVideoManager.swift +++ b/ios/Video/RCTVideoManager.swift @@ -4,7 +4,7 @@ import React @objc(RCTVideoManager) class RCTVideoManager: RCTViewManager { override func view() -> UIView { - return RCTVideo(eventDispatcher: bridge.eventDispatcher() as! RCTEventDispatcher) + return RCTVideo(eventDispatcher: (RCTBridge.current().eventDispatcher() as! RCTEventDispatcher)) } func methodQueue() -> DispatchQueue { From 962ca2d195652f5e382bbc98d64f774d3204d29f Mon Sep 17 00:00:00 2001 From: Dominik Danielewicz Date: Fri, 8 Mar 2024 12:48:01 +0100 Subject: [PATCH 08/10] docs: update platforms in properties tab (#3562) * docs: update platforms in properties tab * docs: update platforms in drm, events and methods tab --- .../PlatformsList/PlatformsList.module.css | 8 + .../component/PlatformsList/PlatformsList.tsx | 28 + docs/pages/component/{drm.md => drm.mdx} | 93 ++- docs/pages/component/events.md | 565 --------------- docs/pages/component/events.mdx | 591 ++++++++++++++++ .../component/{methods.md => methods.mdx} | 103 +-- docs/pages/component/{props.md => props.mdx} | 662 +++++++++--------- docs/theme.config.jsx | 6 + docs/tsconfig.json | 28 + 9 files changed, 1124 insertions(+), 960 deletions(-) create mode 100644 docs/pages/component/PlatformsList/PlatformsList.module.css create mode 100644 docs/pages/component/PlatformsList/PlatformsList.tsx rename docs/pages/component/{drm.md => drm.mdx} (65%) delete mode 100644 docs/pages/component/events.md create mode 100644 docs/pages/component/events.mdx rename docs/pages/component/{methods.md => methods.mdx} (58%) rename docs/pages/component/{props.md => props.mdx} (52%) create mode 100644 docs/tsconfig.json diff --git a/docs/pages/component/PlatformsList/PlatformsList.module.css b/docs/pages/component/PlatformsList/PlatformsList.module.css new file mode 100644 index 0000000000..4c5915aca9 --- /dev/null +++ b/docs/pages/component/PlatformsList/PlatformsList.module.css @@ -0,0 +1,8 @@ +.paragraphStyle { + margin-top: 10; +} + +.spanStyle { + font-family: 'Orbitron'; + font-weight: 800; +} diff --git a/docs/pages/component/PlatformsList/PlatformsList.tsx b/docs/pages/component/PlatformsList/PlatformsList.tsx new file mode 100644 index 0000000000..9570f23e38 --- /dev/null +++ b/docs/pages/component/PlatformsList/PlatformsList.tsx @@ -0,0 +1,28 @@ +import React from 'react'; +import styles from './PlatformsList.module.css'; + +type Platform = + | 'Android' + | 'iOS' + | 'visionOS' + | 'tvOS' + | 'Windows UWP' + | 'Web' + | 'All'; + +interface Platforms { + types: Platform[]; +} + +function PlatformsList({types}: Platforms) { + return ( +

+ {types.length === 1 && !types.includes('All') + ? 'Platform:' + : 'Platforms:'} + {' ' + types.join(' | ')} +

+ ); +} + +export default PlatformsList; diff --git a/docs/pages/component/drm.md b/docs/pages/component/drm.mdx similarity index 65% rename from docs/pages/component/drm.md rename to docs/pages/component/drm.mdx index f01b48d15b..7032ecdd2b 100644 --- a/docs/pages/component/drm.md +++ b/docs/pages/component/drm.mdx @@ -1,3 +1,5 @@ +import PlatformsList from './PlatformsList/PlatformsList.tsx'; + # DRM > **Note:** DRM is not supported on visionOS yet. @@ -9,37 +11,40 @@ This feature will disable the use of `TextureView` on Android. DRM object allows this members: -| Property | Type | Default | Platform | Description | -| --- | --- | --- | --- | --- | -| [`type`](#type) | DRMType | undefined | iOS/Android | Specifies which type of DRM you are going to use, DRMType is an enum exposed on the JS module ('fairplay', 'playready', ...) | -| [`licenseServer`](#licenseserver) | string | undefined | iOS/Android | Specifies the license server URL | -| [`headers`](#headers) | Object | undefined | iOS/Android | Specifies the headers send to the license server URL on license acquisition | -| [`contentId`](#contentid) | string | undefined | iOS | Specify the content id of the stream, otherwise it will take the host value from `loadingRequest.request.URL.host` (f.e: `skd://testAsset` -> will take `testAsset`) | -| [`certificateUrl`](#certificateurl) | string | undefined | iOS | Specifies the url to obtain your ios certificate for fairplay, Url to the .cer file | -| [`base64Certificate`](#base64certificate) | bool | false | iOS | Specifies whether or not the certificate returned by the `certificateUrl` is on base64 | -| [`getLicense`](#getlicense)| function | undefined | iOS | Rather than setting the `licenseServer` url to get the license, you can manually get the license on the JS part, and send the result to the native part to configure FairplayDRM for the stream | - ### `base64Certificate` -Whether or not the certificate url returns it on base64. + + +Type: bool\ +Default: false -Platforms: iOS +Whether or not the certificate url returns it on base64. ### `certificateUrl` -URL to fetch a valid certificate for FairPlay. + -Platforms: iOS +Type: string\ +Default: undefined + +URL to fetch a valid certificate for FairPlay. ### `getLicense` -`licenseServer` and `headers` will be ignored. You will obtain as argument the `SPC` (as ASCII string, you will probably need to convert it to base 64) obtained from your `contentId` + the provided certificate via -```objc -[loadingRequest streamingContentKeyRequestDataForApp:certificateData contentIdentifier:contentIdData options:nil error:&spcError]; -``` + + +Type: function\ +Default: undefined + +Rather than setting the `licenseServer` url to get the license, you can manually get the license on the JS part, and send the result to the native part to configure FairplayDRM for the stream + +`licenseServer` and `headers` will be ignored. You will obtain as argument the `SPC` +(as ASCII string, you will probably need to convert it to base 64) obtained from +your `contentId` + the provided certificate via `objc [loadingRequest streamingContentKeyRequestDataForApp:certificateData +contentIdentifier:contentIdData options:nil error:&spcError]; ` Also, you will receive the `contentId` and a `licenseUrl` URL defined as `loadingRequest.request.URL.absoluteString ` or as the `licenseServer` prop if it's passed. - + You should return on this method a `CKC` in Base64, either by just returning it or returning a `Promise` that resolves with the `CKC`. With this prop you can override the license acquisition flow, as an example: @@ -50,24 +55,31 @@ getLicense: (spcString, contentId, licenseUrl) => { const formData = new FormData(); formData.append('spc', base64spc); return fetch(`https://license.pallycon.com/ri/licenseManager.do`, { - method: 'POST', - headers: { - 'pallycon-customdata-v2': 'd2VpcmRiYXNlNjRzdHJpbmcgOlAgRGFuaWVsIE1hcmnxbyB3YXMgaGVyZQ==', - 'Content-Type': 'application/x-www-form-urlencoded', - }, - body: formData - }).then(response => response.text()).then((response) => { + method: 'POST', + headers: { + 'pallycon-customdata-v2': + 'd2VpcmRiYXNlNjRzdHJpbmcgOlAgRGFuaWVsIE1hcmnxbyB3YXMgaGVyZQ==', + 'Content-Type': 'application/x-www-form-urlencoded', + }, + body: formData, + }) + .then((response) => response.text()) + .then((response) => { return response; - }).catch((error) => { + }) + .catch((error) => { console.error('Error', error); - }); -} + }); +}; ``` -Platforms: iOS - ### `headers` + + +Type: Object\ +Default: undefined + You can customize headers send to the licenseServer. Example: @@ -87,14 +99,33 @@ drm={{ ### `licenseServer` + + +Type: string\ +Default: false + The URL pointing to the licenseServer that will provide the authorization to play the protected stream. ### `type` + + +Type: DRMType\ +Default: undefined + You can specify the DRM type, either by string or using the exported DRMType enum. Valid values are, for Android: DRMType.WIDEVINE / DRMType.PLAYREADY / DRMType.CLEARKEY. for iOS: DRMType.FAIRPLAY +### `contentId` + + + +Type: string\ +Default: undefined + +Specify the content id of the stream, otherwise it will take the host value from `loadingRequest.request.URL.host` (f.e: `skd://testAsset` -> will take `testAsset`) + ## Common Usage Scenarios ### Send cookies to license server diff --git a/docs/pages/component/events.md b/docs/pages/component/events.md deleted file mode 100644 index aa7aa0c2a7..0000000000 --- a/docs/pages/component/events.md +++ /dev/null @@ -1,565 +0,0 @@ -# Events -This page shows the list of available callbacks to handle player notifications - -## List -| Name | Platforms Support | -|-------------------------------------------------------------------------------------------------|---------------------------| -| [onAudioBecomingNoisy](#onaudiobecomingnoisy) | Android, iOS | -| [onAudioFocusChanged](#onaudiofocuschanged) | Android | -| [onAudioTracks](#onaudiotracks) | Android, iOS | -| [onBandwidthUpdate](#onbandwidthupdate) | Android | -| [onBuffer](#onbuffer) | Android, iOS | -| [onEnd](#onend) | All | -| [onError](#onerror) | All | -| [onExternalPlaybackChange](#onexternalplaybackchange) | iOS | -| [onFullscreenPlayerWillPresent](#onfullscreenplayerwillpresent) | Android, iOS, visionOS | -| [onFullscreenPlayerDidPresent](#onfullscreenplayerdidpresent) | Android, iOS, visionOS | -| [onFullscreenPlayerWillDismiss](#onfullscreenplayerwilldismiss) | Android, iOS, visionOS | -| [onFullscreenPlayerDidDismiss](#onfullscreenplayerdiddismiss) | Android, iOS, visionOS | -| [onLoad](#onload) | All | -| [onLoadStart](#onloadstart) | All | -| [onPictureInPictureStatusChanged](#onpictureinpicturestatuschanged) | iOS | -| [onPlaybackRateChange](#onplaybackratechange) | All | -| [onPlaybackStateChanged](#onplaybackstatechanged) | Android, iOS, visionOS | -| [onProgress](#onprogress) | All | -| [onReadyForDisplay](#onreadyfordisplay) | Android, iOS | -| [onReceiveAdEvent](#onreceiveadevent) | Android, iOS | -| [onRestoreUserInterfaceForPictureInPictureStop](#onrestoreuserinterfaceforpictureinpicturestop) | iOS, visionOS | -| [onSeek](#onseek) | All | -| [onTimedMetadata](#ontimedmetadata) | Android, iOS, visionOS | -| [onTextTracks](#ontexttracks) | Android, iOS | -| [onVideoTracks](#onvideotracks) | Android | -| [onVolumeChange](#onvolumechange) | Android, iOS, visionOS | - - -## Details -### `onAudioBecomingNoisy` -Callback function that is called when the audio is about to become 'noisy' due to a change in audio outputs. Typically this is called when audio output is being switched from an external source like headphones back to the internal speaker. It's a good idea to pause the media when this happens so the speaker doesn't start blasting sound. - -Payload: none - -Platforms: Android, iOS - -### `onAudioFocusChanged` -Callback function that is called when the audio focus changes. This is called when the audio focus is gained or lost. This is useful for determining if the media should be paused or not. - -Payload: -Property | Type | Description ---- | --- | --- -hasAudioFocus | boolean | Boolean indicating whether the media has audio focus - -Example: -```javascript -{ - hasAudioFocus: true -} -``` - -### `onAudioTracks` -Callback function that is called when audio tracks change - -Payload: - -An **array** of -Property | Type | Description ---- | --- | --- -index | number | Index number of the track -title | string | Description of the track -language | string | 2 letter [ISO 639-1](https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes) or 3 letter [ISO 639-2](https://en.wikipedia.org/wiki/List_of_ISO_639-2_codes) language code -type | string | Mime type of track - -Example: -```javascript -{ - audioTracks: [ - { language: 'es', title: 'Spanish', type: 'audio/mpeg', index: 0 }, - { language: 'en', title: 'English', type: 'audio/mpeg', index: 1 } - ] -} -``` - -### `onBandwidthUpdate` -Callback function that is called when the available bandwidth changes. - -Payload: - -Property | Type | Description ---- | --- | --- -bitrate | number | The estimated bitrate in bits/sec -width | number | The width of the video (android only) -height | number | The height of the video (android only) -trackId | string | The track ID of the video track (android only) - -Example on iOS: -```javascript -{ - bitrate: 1000000 -} -``` - -Example on Android: -```javascript -{ - bitrate: 1000000 - width: 1920 - height: 1080 - trackId: 'some-track-id' -} -``` - -Note: On Android, you must set the [reportBandwidth](#reportbandwidth) prop to enable this event. This is due to the high volume of events generated. - -Platforms: Android - -### `onBuffer` -Callback function that is called when the player buffers. - -Payload: - -Property | Type | Description ---- | --- | --- -isBuffering | boolean | Boolean indicating whether buffering is active - -Example: -```javascript -{ - isBuffering: true -} -``` - -Platforms: Android, iOS - -### `onEnd` -Callback function that is called when the player reaches the end of the media. - -Payload: none - -Platforms: all - -### `onError` -Callback function that is called when the player experiences a playback error. - -Payload: - -Property | Type | Description ---- | --- | --- -error | object | Object containing properties with information about the error - -Platforms: all - -### `onExternalPlaybackChange` -Callback function that is called when external playback mode for current playing video has changed. Mostly useful when connecting/disconnecting to Apple TV – it's called on connection/disconnection. - -Payload: - -Property | Type | Description ---- | --- | --- -isExternalPlaybackActive | boolean | Boolean indicating whether external playback mode is active - -Example: -```javascript -{ - isExternalPlaybackActive: true -} -``` - -Platforms: iOS - -### `onFullscreenPlayerWillPresent` -Callback function that is called when the player is about to enter fullscreen mode. - -Payload: none - -Platforms: Android, iOS - -### `onFullscreenPlayerDidPresent` -Callback function that is called when the player has entered fullscreen mode. - -Payload: none - -Platforms: Android, iOS - -### `onFullscreenPlayerWillDismiss` -Callback function that is called when the player is about to exit fullscreen mode. - -Payload: none - -Platforms: Android, iOS - -### `onFullscreenPlayerDidDismiss` -Callback function that is called when the player has exited fullscreen mode. - -Payload: none - -Platforms: Android, iOS - -### `onLoad` -Callback function that is called when the media is loaded and ready to play. - -Payload: - -Property | Type | Description ---- | --- | --- -currentTime | number | Time in seconds where the media will start -duration | number | Length of the media in seconds -naturalSize | object | Properties:
* width - Width in pixels that the video was encoded at
* height - Height in pixels that the video was encoded at
* orientation - "portrait" or "landscape" -audioTracks | array | An array of audio track info objects with the following properties:
* index - Index number
* title - Description of the track
* language - 2 letter [ISO 639-1](https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes) or 3 letter [ISO639-2](https://en.wikipedia.org/wiki/List_of_ISO_639-2_codes) language code
* type - Mime type of track -textTracks | array | An array of text track info objects with the following properties:
* index - Index number
* title - Description of the track
* language - 2 letter [ISO 639-1](https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes) or 3 letter [ISO 639-2](https://en.wikipedia.org/wiki/List_of_ISO_639-2_codes) language code
* type - Mime type of track -videoTracks | array | An array of video track info objects with the following properties:
* trackId - ID for the track
* bitrate - Bit rate in bits per second
* codecs - Comma separated list of codecs
* height - Height of the video
* width - Width of the video - -Example: -```javascript -{ - canPlaySlowForward: true, - canPlayReverse: false, - canPlaySlowReverse: false, - canPlayFastForward: false, - canStepForward: false, - canStepBackward: false, - currentTime: 0, - duration: 5910.208984375, - naturalSize: { - height: 1080 - orientation: 'landscape' - width: '1920' - }, - audioTracks: [ - { language: 'es', title: 'Spanish', type: 'audio/mpeg', index: 0 }, - { language: 'en', title: 'English', type: 'audio/mpeg', index: 1 } - ], - textTracks: [ - { title: '#1 French', language: 'fr', index: 0, type: 'text/vtt' }, - { title: '#2 English CC', language: 'en', index: 1, type: 'text/vtt' }, - { title: '#3 English Director Commentary', language: 'en', index: 2, type: 'text/vtt' } - ], - videoTracks: [ - { bitrate: 3987904, codecs: "avc1.640028", height: 720, trackId: "f1-v1-x3", width: 1280 }, - { bitrate: 7981888, codecs: "avc1.640028", height: 1080, trackId: "f2-v1-x3", width: 1920 }, - { bitrate: 1994979, codecs: "avc1.4d401f", height: 480, trackId: "f3-v1-x3", width: 848 } - ] -} -``` - -Platforms: all - -### `onLoadStart` -Callback function that is called when the media starts loading. - -Payload: - -Property | Description ---- | --- -isNetwork | boolean | Boolean indicating if the media is being loaded from the network -type | string | Type of the media. Not available on Windows -uri | string | URI for the media source. Not available on Windows - -Example: -```javascript -{ - isNetwork: true, - type: '', - uri: 'https://bitdash-a.akamaihd.net/content/sintel/hls/playlist.m3u8' -} -``` - -Platforms: all - -### `onPlaybackStateChanged` -Callback function that is called when the playback state changes. - -Payload: - -Property | Description ---- | --- -isPlaying | boolean | Boolean indicating if the media is playing or not - -Example: -```javascript -{ - isPlaying: true, -} -``` - -Platforms: Android, iOS - -### `onPictureInPictureStatusChanged` -Callback function that is called when picture in picture becomes active or inactive. - -Property | Type | Description ---- | --- | --- -isActive | boolean | Boolean indicating whether picture in picture is active - -Example: -```javascript -{ -isActive: true -} -``` - -Platforms: iOS - -### `onPlaybackRateChange` -Callback function that is called when the rate of playback changes - either paused or starts/resumes. - -Property | Type | Description ---- | --- | --- -playbackRate | number | 0 when playback is paused, 1 when playing at normal speed. Other values when playback is slowed down or sped up - -Example: -```javascript -{ - playbackRate: 0, // indicates paused -} -``` - -Platforms: all - -### `onProgress` -Callback function that is called every progressUpdateInterval milliseconds with info about which position the media is currently playing. - -Property | Type | Description ---- | --- | --- -currentTime | number | Current position in seconds -playableDuration | number | Position to where the media can be played to using just the buffer in seconds -seekableDuration | number | Position to where the media can be seeked to in seconds. Typically, the total length of the media - -Example: -```javascript -{ - currentTime: 5.2, - playableDuration: 34.6, - seekableDuration: 888 -} -``` - -Platforms: all - -### `onReadyForDisplay` -Callback function that is called when the first video frame is ready for display. This is when the poster is removed. - -Payload: none - -* iOS: [readyForDisplay](https://developer.apple.com/documentation/avkit/avplayerviewcontroller/1615830-readyfordisplay?language=objc) -* Android [STATE_READY](https://exoplayer.dev/doc/reference/com/google/android/exoplayer2/Player.html#STATE_READY) - -Platforms: Android, iOS, Web - -### `onReceiveAdEvent` -Callback function that is called when an AdEvent is received from the IMA's SDK. - -Enum `AdEvent` possible values for [Android](https://developers.google.com/interactive-media-ads/docs/sdks/html5/client-side/reference/js/google.ima.AdEvent) and [iOS](https://developers.google.com/interactive-media-ads/docs/sdks/ios/client-side/reference/Enums/IMAAdEventType): - -
-Events - -| Event | Platform | Description | -|----------------------------|---------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| `AD_BREAK_ENDED` | iOS | Fired the first time each ad break ends. Applications must reenable seeking when this occurs (only used for dynamic ad insertion). | -| `AD_BREAK_READY` | Android, iOS | Fires when an ad rule or a VMAP ad break would have played if autoPlayAdBreaks is false. | -| `AD_BREAK_STARTED` | iOS | Fired first time each ad break begins playback. If an ad break is watched subsequent times this will not be fired. Applications must disable seeking when this occurs (only used for dynamic ad insertion). | -| `AD_BUFFERING` | Android | Fires when the ad has stalled playback to buffer. | -| `AD_CAN_PLAY` | Android | Fires when the ad is ready to play without buffering, either at the beginning of the ad or after buffering completes. | -| `AD_METADATA` | Android | Fires when an ads list is loaded. | -| `AD_PERIOD_ENDED` | iOS | Fired every time the stream switches from advertising or slate to content. This will be fired even when an ad is played a second time or when seeking into an ad (only used for dynamic ad insertion). | -| `AD_PERIOD_STARTED` | iOS | Fired every time the stream switches from content to advertising or slate. This will be fired even when an ad is played a second time or when seeking into an ad (only used for dynamic ad insertion). | -| `AD_PROGRESS` | Android | Fires when the ad's current time value changes. The event `data` will be populated with an AdProgressData object. | -| `ALL_ADS_COMPLETED` | Android, iOS | Fires when the ads manager is done playing all the valid ads in the ads response, or when the response doesn't return any valid ads. | -| `CLICK` | Android, iOS | Fires when the ad is clicked. | -| `COMPLETED` | Android, iOS | Fires when the ad completes playing. | -| `CONTENT_PAUSE_REQUESTED` | Android | Fires when content should be paused. This usually happens right before an ad is about to cover the content. | -| `CONTENT_RESUME_REQUESTED` | Android | Fires when content should be resumed. This usually happens when an ad finishes or collapses. | -| `CUEPOINTS_CHANGED` | iOS | Cuepoints changed for VOD stream (only used for dynamic ad insertion). | -| `DURATION_CHANGE` | Android | Fires when the ad's duration changes. | -| `ERROR` | Android, iOS | Fires when an error occurred while loading the ad and prevent it from playing. | -| `FIRST_QUARTILE` | Android, iOS | Fires when the ad playhead crosses first quartile. | -| `IMPRESSION` | Android | Fires when the impression URL has been pinged. | -| `INTERACTION` | Android | Fires when an ad triggers the interaction callback. Ad interactions contain an interaction ID string in the ad data. | -| `LINEAR_CHANGED` | Android | Fires when the displayed ad changes from linear to nonlinear, or the reverse. | -| `LOADED` | Android, iOS | Fires when ad data is available. | -| `LOG` | Android, iOS | Fires when a non-fatal error is encountered. The user need not take any action since the SDK will continue with the same or next ad playback depending on the error situation. | -| `MIDPOINT` | Android, iOS | Fires when the ad playhead crosses midpoint. | -| `PAUSED` | Android, iOS | Fires when the ad is paused. | -| `RESUMED` | Android, iOS | Fires when the ad is resumed. | -| `SKIPPABLE_STATE_CHANGED` | Android | Fires when the displayed ads skippable state is changed. | -| `SKIPPED` | Android, iOS | Fires when the ad is skipped by the user. | -| `STARTED` | Android, iOS | Fires when the ad starts playing. | -| `STREAM_LOADED` | iOS | Stream request has loaded (only used for dynamic ad insertion). | -| `TAPPED` | iOS | Fires when the ad is tapped. | -| `THIRD_QUARTILE` | Android, iOS | Fires when the ad playhead crosses third quartile. | -| `UNKNOWN` | iOS | An unknown event has fired | -| `USER_CLOSE` | Android | Fires when the ad is closed by the user. | -| `VIDEO_CLICKED` | Android | Fires when the non-clickthrough portion of a video ad is clicked. | -| `VIDEO_ICON_CLICKED` | Android | Fires when a user clicks a video icon. | -| `VOLUME_CHANGED` | Android | Fires when the ad volume has changed. | -| `VOLUME_MUTED` | Android | Fires when the ad volume has been muted. | -
- -Payload: - -| Property | Type | Description | -|----------|-------------------------------------|-----------------------| -| event | AdEvent | The ad event received | -| data | Record \| undefined | The ad event data | - -Example: -```json -{ - "data": { - "key": "value" - }, - "event": "LOG" -} -``` - -Platforms: Android, iOS - -### `onRestoreUserInterfaceForPictureInPictureStop` -Callback function that corresponds to Apple's [`restoreUserInterfaceForPictureInPictureStopWithCompletionHandler`](https://developer.apple.com/documentation/avkit/avpictureinpicturecontrollerdelegate/1614703-pictureinpicturecontroller?language=objc). Call `restoreUserInterfaceForPictureInPictureStopCompleted` inside of this function when done restoring the user interface. - -Payload: none - -Platforms: iOS - -### `onSeek` -Callback function that is called when a seek completes. - -Payload: - -Property | Type | Description ---- | --- | --- -currentTime | number | The current time after the seek -seekTime | number | The requested time - -Example: -```javascript -{ - currentTime: 100.5 - seekTime: 100 -} -``` - -Both the currentTime & seekTime are reported because the video player may not seek to the exact requested position in order to improve seek performance. - - -Platforms: Android, iOS, Windows UWP - -### `onTimedMetadata` -Callback function that is called when timed metadata becomes available - -Payload: - -Property | Type | Description ---- | --- | --- -metadata | array | Array of metadata objects - -Example: -```javascript -{ - metadata: [ - { value: 'Streaming Encoder', identifier: 'TRSN' }, - { value: 'Internet Stream', identifier: 'TRSO' }, - { value: 'Any Time You Like', identifier: 'TIT2' } - ] -} -``` - -Platforms: Android, iOS - -### `onTextTracks` -Callback function that is called when text tracks change - -Payload: - -Property | Type | Description ---- | --- | --- -index | number | Internal track ID -title | string | Descriptive name for the track -language | string | 2 letter [ISO 639-1 code](https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes) representing the language -type | string | Mime type of the track
* TextTrackType.SRT - SubRip (.srt)
* TextTrackType.TTML - TTML (.ttml)
* TextTrackType.VTT - WebVTT (.vtt)
iOS only supports VTT, Android supports all 3 -selected | boolean | true if track is playing - - -Example: -```javascript -{ - textTracks: [ - { - index: 0, - title: 'Any Time You Like', - type: 'srt', - selected: true - } - ] -} -``` - -### `onTextTrackDataChanged` -Callback function that is called when new subtitle data is available. It provides the actual subtitle content for the current selected text track, if available (mainly WebVTT). - -Payload: - -Property | Type | Description ---- | --- | --- -`subtitleTracks` | `string` | The subtitles text content in a compatible format. - - -Example: -```javascript -{ - subtitleTracks: "This blade has a dark past.", -} -``` - -Platforms: iOS - -### `onVideoTracks` -Callback function that is called when video tracks change - -Payload: - -Property | Type | Description ---- | --- | --- -trackId | number | Internal track ID -codecs | string | MimeType of codec used for this track -width | number | Track width -height | number | Track height -bitrate | number | Bitrate in bps -selected | boolean | true if track is selected for playing - - -Example: -```javascript -{ - videoTracks: [ - { - trackId: 0, - codecs: 'video/mp4', - width: 1920, - height: 1080, - bitrate: 10000, - selected: true - } - ] -} -``` - -Platforms: Android - -### `onVolumeChange` -Callback function that is called when the volume of player changes. -> Note: This event applies to the volume of the player, not the volume of the device. - -Payload: - -Property | Type | Description ---- | --- | --- -volume | number | The volume of the player (between 0 and 1) - -Example: -```javascript -{ - volume: 0.5 -} -``` - -Platforms: Android, iOS diff --git a/docs/pages/component/events.mdx b/docs/pages/component/events.mdx new file mode 100644 index 0000000000..131c628ded --- /dev/null +++ b/docs/pages/component/events.mdx @@ -0,0 +1,591 @@ +import PlatformsList from './PlatformsList/PlatformsList.tsx'; + +# Events + +This page shows the list of available callbacks to handle player notifications + +## Details + +### `onAudioBecomingNoisy` + + + +Callback function that is called when the audio is about to become 'noisy' due to +a change in audio outputs. Typically this is called when audio output is being switched +from an external source like headphones back to the internal speaker. It's a good +idea to pause the media when this happens so the speaker doesn't start blasting sound. + +Payload: none + +### `onAudioFocusChanged` + + + +Callback function that is called when the audio focus changes. This is called when the audio focus is gained or lost. This is useful for determining if the media should be paused or not. + +Payload: +Property | Type | Description +--- | --- | --- +hasAudioFocus | boolean | Boolean indicating whether the media has audio focus + +Example: + +```javascript +{ + hasAudioFocus: true; +} +``` + +### `onAudioTracks` + + + +Callback function that is called when audio tracks change + +Payload: + +An **array** of +Property | Type | Description +--- | --- | --- +index | number | Index number of the track +title | string | Description of the track +language | string | 2 letter [ISO 639-1](https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes) or 3 letter [ISO 639-2](https://en.wikipedia.org/wiki/List_of_ISO_639-2_codes) language code +type | string | Mime type of track + +Example: + +```javascript +{ + audioTracks: [ + {language: 'es', title: 'Spanish', type: 'audio/mpeg', index: 0}, + {language: 'en', title: 'English', type: 'audio/mpeg', index: 1}, + ]; +} +``` + +### `onBandwidthUpdate` + + + +Callback function that is called when the available bandwidth changes. + +Payload: + +| Property | Type | Description | +| -------- | ------ | ---------------------------------------------- | +| bitrate | number | The estimated bitrate in bits/sec | +| width | number | The width of the video (android only) | +| height | number | The height of the video (android only) | +| trackId | string | The track ID of the video track (android only) | + +Example on iOS: + +```javascript +{ + bitrate: 1000000; +} +``` + +Example on Android: + +```javascript +{ + bitrate: 1000000; + width: 1920; + height: 1080; + trackId: 'some-track-id'; +} +``` + +Note: On Android, you must set the [reportBandwidth](#reportbandwidth) prop to enable this event. This is due to the high volume of events generated. + +### `onBuffer` + + + +Callback function that is called when the player buffers. + +Payload: + +| Property | Type | Description | +| ----------- | ------- | ---------------------------------------------- | +| isBuffering | boolean | Boolean indicating whether buffering is active | + +Example: + +```javascript +{ + isBuffering: true; +} +``` + +### `onEnd` + + + +Callback function that is called when the player reaches the end of the media. + +Payload: none + +### `onError` + + + +Callback function that is called when the player experiences a playback error. + +Payload: + +| Property | Type | Description | +| -------- | ------ | ------------------------------------------------------------- | +| error | object | Object containing properties with information about the error | + +### `onExternalPlaybackChange` + + + +Callback function that is called when external playback mode for current playing video has changed. Mostly useful when connecting/disconnecting to Apple TV – it's called on connection/disconnection. + +Payload: + +| Property | Type | Description | +| ------------------------ | ------- | ----------------------------------------------------------- | +| isExternalPlaybackActive | boolean | Boolean indicating whether external playback mode is active | + +Example: + +```javascript +{ + isExternalPlaybackActive: true; +} +``` + +### `onFullscreenPlayerWillPresent` + + + +Callback function that is called when the player is about to enter fullscreen mode. + +Payload: none + +### `onFullscreenPlayerDidPresent` + + + +Callback function that is called when the player has entered fullscreen mode. + +Payload: none + +### `onFullscreenPlayerWillDismiss` + + + +Callback function that is called when the player is about to exit fullscreen mode. + +Payload: none + +### `onFullscreenPlayerDidDismiss` + + + +Callback function that is called when the player has exited fullscreen mode. + +Payload: none + +### `onLoad` + + + +Callback function that is called when the media is loaded and ready to play. + +Payload: + +| Property | Type | Description | +| ----------- | ------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| currentTime | number | Time in seconds where the media will start | +| duration | number | Length of the media in seconds | +| naturalSize | object | Properties:
_ width - Width in pixels that the video was encoded at
_ height - Height in pixels that the video was encoded at
\* orientation - "portrait" or "landscape" | +| audioTracks | array | An array of audio track info objects with the following properties:
_ index - Index number
_ title - Description of the track
_ language - 2 letter [ISO 639-1](https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes) or 3 letter [ISO639-2](https://en.wikipedia.org/wiki/List_of_ISO_639-2_codes) language code
_ type - Mime type of track | +| textTracks | array | An array of text track info objects with the following properties:
_ index - Index number
_ title - Description of the track
_ language - 2 letter [ISO 639-1](https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes) or 3 letter [ISO 639-2](https://en.wikipedia.org/wiki/List_of_ISO_639-2_codes) language code
_ type - Mime type of track | +| videoTracks | array | An array of video track info objects with the following properties:
_ trackId - ID for the track
_ bitrate - Bit rate in bits per second
_ codecs - Comma separated list of codecs
_ height - Height of the video
\* width - Width of the video | + +Example: + +```javascript +{ + canPlaySlowForward: true, + canPlayReverse: false, + canPlaySlowReverse: false, + canPlayFastForward: false, + canStepForward: false, + canStepBackward: false, + currentTime: 0, + duration: 5910.208984375, + naturalSize: { + height: 1080 + orientation: 'landscape' + width: '1920' + }, + audioTracks: [ + { language: 'es', title: 'Spanish', type: 'audio/mpeg', index: 0 }, + { language: 'en', title: 'English', type: 'audio/mpeg', index: 1 } + ], + textTracks: [ + { title: '#1 French', language: 'fr', index: 0, type: 'text/vtt' }, + { title: '#2 English CC', language: 'en', index: 1, type: 'text/vtt' }, + { title: '#3 English Director Commentary', language: 'en', index: 2, type: 'text/vtt' } + ], + videoTracks: [ + { bitrate: 3987904, codecs: "avc1.640028", height: 720, trackId: "f1-v1-x3", width: 1280 }, + { bitrate: 7981888, codecs: "avc1.640028", height: 1080, trackId: "f2-v1-x3", width: 1920 }, + { bitrate: 1994979, codecs: "avc1.4d401f", height: 480, trackId: "f3-v1-x3", width: 848 } + ] +} +``` + +### `onLoadStart` + + + +Callback function that is called when the media starts loading. + +Payload: + +| Property | Description | +| --------- | ----------- | ---------------------------------------------------------------- | +| isNetwork | boolean | Boolean indicating if the media is being loaded from the network | +| type | string | Type of the media. Not available on Windows | +| uri | string | URI for the media source. Not available on Windows | + +Example: + +```javascript +{ + isNetwork: true, + type: '', + uri: 'https://bitdash-a.akamaihd.net/content/sintel/hls/playlist.m3u8' +} +``` + +### `onPlaybackStateChanged` + + + +Callback function that is called when the playback state changes. + +Payload: + +| Property | Description | +| --------- | ----------- | ------------------------------------------------- | +| isPlaying | boolean | Boolean indicating if the media is playing or not | + +Example: + +```javascript +{ + isPlaying: true, +} +``` + +### `onPictureInPictureStatusChanged` + + + +Callback function that is called when picture in picture becomes active or inactive. + +| Property | Type | Description | +| -------- | ------- | ------------------------------------------------------- | +| isActive | boolean | Boolean indicating whether picture in picture is active | + +Example: + +```javascript +{ + isActive: true; +} +``` + +### `onPlaybackRateChange` + + + +Callback function that is called when the rate of playback changes - either paused or starts/resumes. + +| Property | Type | Description | +| ------------ | ------ | --------------------------------------------------------------------------------------------------------------- | +| playbackRate | number | 0 when playback is paused, 1 when playing at normal speed. Other values when playback is slowed down or sped up | + +Example: + +```javascript +{ + playbackRate: 0, // indicates paused +} +``` + +### `onProgress` + + + +Callback function that is called every progressUpdateInterval milliseconds with info about which position the media is currently playing. + +| Property | Type | Description | +| ---------------- | ------ | ------------------------------------------------------------------------------------------------- | +| currentTime | number | Current position in seconds | +| playableDuration | number | Position to where the media can be played to using just the buffer in seconds | +| seekableDuration | number | Position to where the media can be seeked to in seconds. Typically, the total length of the media | + +Example: + +```javascript +{ + currentTime: 5.2, + playableDuration: 34.6, + seekableDuration: 888 +} +``` + +### `onReadyForDisplay` + + + +Callback function that is called when the first video frame is ready for display. This is when the poster is removed. + +Payload: none + +- iOS: [readyForDisplay](https://developer.apple.com/documentation/avkit/avplayerviewcontroller/1615830-readyfordisplay?language=objc) +- Android [STATE_READY](https://exoplayer.dev/doc/reference/com/google/android/exoplayer2/Player.html#STATE_READY) + +### `onReceiveAdEvent` + + + +Callback function that is called when an AdEvent is received from the IMA's SDK. + +Enum `AdEvent` possible values for [Android](https://developers.google.com/interactive-media-ads/docs/sdks/html5/client-side/reference/js/google.ima.AdEvent) and [iOS](https://developers.google.com/interactive-media-ads/docs/sdks/ios/client-side/reference/Enums/IMAAdEventType): + +
+Events + +| Event | Platform | Description | +| -------------------------- | ------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `AD_BREAK_ENDED` | iOS | Fired the first time each ad break ends. Applications must reenable seeking when this occurs (only used for dynamic ad insertion). | +| `AD_BREAK_READY` | Android, iOS | Fires when an ad rule or a VMAP ad break would have played if autoPlayAdBreaks is false. | +| `AD_BREAK_STARTED` | iOS | Fired first time each ad break begins playback. If an ad break is watched subsequent times this will not be fired. Applications must disable seeking when this occurs (only used for dynamic ad insertion). | +| `AD_BUFFERING` | Android | Fires when the ad has stalled playback to buffer. | +| `AD_CAN_PLAY` | Android | Fires when the ad is ready to play without buffering, either at the beginning of the ad or after buffering completes. | +| `AD_METADATA` | Android | Fires when an ads list is loaded. | +| `AD_PERIOD_ENDED` | iOS | Fired every time the stream switches from advertising or slate to content. This will be fired even when an ad is played a second time or when seeking into an ad (only used for dynamic ad insertion). | +| `AD_PERIOD_STARTED` | iOS | Fired every time the stream switches from content to advertising or slate. This will be fired even when an ad is played a second time or when seeking into an ad (only used for dynamic ad insertion). | +| `AD_PROGRESS` | Android | Fires when the ad's current time value changes. The event `data` will be populated with an AdProgressData object. | +| `ALL_ADS_COMPLETED` | Android, iOS | Fires when the ads manager is done playing all the valid ads in the ads response, or when the response doesn't return any valid ads. | +| `CLICK` | Android, iOS | Fires when the ad is clicked. | +| `COMPLETED` | Android, iOS | Fires when the ad completes playing. | +| `CONTENT_PAUSE_REQUESTED` | Android | Fires when content should be paused. This usually happens right before an ad is about to cover the content. | +| `CONTENT_RESUME_REQUESTED` | Android | Fires when content should be resumed. This usually happens when an ad finishes or collapses. | +| `CUEPOINTS_CHANGED` | iOS | Cuepoints changed for VOD stream (only used for dynamic ad insertion). | +| `DURATION_CHANGE` | Android | Fires when the ad's duration changes. | +| `ERROR` | Android, iOS | Fires when an error occurred while loading the ad and prevent it from playing. | +| `FIRST_QUARTILE` | Android, iOS | Fires when the ad playhead crosses first quartile. | +| `IMPRESSION` | Android | Fires when the impression URL has been pinged. | +| `INTERACTION` | Android | Fires when an ad triggers the interaction callback. Ad interactions contain an interaction ID string in the ad data. | +| `LINEAR_CHANGED` | Android | Fires when the displayed ad changes from linear to nonlinear, or the reverse. | +| `LOADED` | Android, iOS | Fires when ad data is available. | +| `LOG` | Android, iOS | Fires when a non-fatal error is encountered. The user need not take any action since the SDK will continue with the same or next ad playback depending on the error situation. | +| `MIDPOINT` | Android, iOS | Fires when the ad playhead crosses midpoint. | +| `PAUSED` | Android, iOS | Fires when the ad is paused. | +| `RESUMED` | Android, iOS | Fires when the ad is resumed. | +| `SKIPPABLE_STATE_CHANGED` | Android | Fires when the displayed ads skippable state is changed. | +| `SKIPPED` | Android, iOS | Fires when the ad is skipped by the user. | +| `STARTED` | Android, iOS | Fires when the ad starts playing. | +| `STREAM_LOADED` | iOS | Stream request has loaded (only used for dynamic ad insertion). | +| `TAPPED` | iOS | Fires when the ad is tapped. | +| `THIRD_QUARTILE` | Android, iOS | Fires when the ad playhead crosses third quartile. | +| `UNKNOWN` | iOS | An unknown event has fired | +| `USER_CLOSE` | Android | Fires when the ad is closed by the user. | +| `VIDEO_CLICKED` | Android | Fires when the non-clickthrough portion of a video ad is clicked. | +| `VIDEO_ICON_CLICKED` | Android | Fires when a user clicks a video icon. | +| `VOLUME_CHANGED` | Android | Fires when the ad volume has changed. | +| `VOLUME_MUTED` | Android | Fires when the ad volume has been muted. | + +
+ +Payload: + +| Property | Type | Description | +| -------- | ----------------------------------------- | --------------------- | +| event | AdEvent | The ad event received | +| data | Record<string, string> \| undefined | The ad event data | + +Example: + +```json +{ + "data": { + "key": "value" + }, + "event": "LOG" +} +``` + +### `onRestoreUserInterfaceForPictureInPictureStop` + + + +Callback function that corresponds to Apple's [`restoreUserInterfaceForPictureInPictureStopWithCompletionHandler`](https://developer.apple.com/documentation/avkit/avpictureinpicturecontrollerdelegate/1614703-pictureinpicturecontroller?language=objc). Call `restoreUserInterfaceForPictureInPictureStopCompleted` inside of this function when done restoring the user interface. + +Payload: none + +### `onSeek` + + + +Callback function that is called when a seek completes. + +Payload: + +| Property | Type | Description | +| ----------- | ------ | ------------------------------- | +| currentTime | number | The current time after the seek | +| seekTime | number | The requested time | + +Example: + +```javascript +{ + currentTime: 100.5; + seekTime: 100; +} +``` + +Both the currentTime & seekTime are reported because the video player may not seek to the exact requested position in order to improve seek performance. + +### `onTimedMetadata` + + + +Callback function that is called when timed metadata becomes available + +Payload: + +| Property | Type | Description | +| -------- | ----- | ------------------------- | +| metadata | array | Array of metadata objects | + +Example: + +```javascript +{ + metadata: [ + {value: 'Streaming Encoder', identifier: 'TRSN'}, + {value: 'Internet Stream', identifier: 'TRSO'}, + {value: 'Any Time You Like', identifier: 'TIT2'}, + ]; +} +``` + +### `onTextTracks` + + + +Callback function that is called when text tracks change + +Payload: + +| Property | Type | Description | +| -------- | ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| index | number | Internal track ID | +| title | string | Descriptive name for the track | +| language | string | 2 letter [ISO 639-1 code](https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes) representing the language | +| type | string | Mime type of the track
_ TextTrackType.SRT - SubRip (.srt)
_ TextTrackType.TTML - TTML (.ttml)
\* TextTrackType.VTT - WebVTT (.vtt)
iOS only supports VTT, Android supports all 3 | +| selected | boolean | true if track is playing | + +Example: + +```javascript +{ + textTracks: [ + { + index: 0, + title: 'Any Time You Like', + type: 'srt', + selected: true, + }, + ]; +} +``` + +### `onTextTrackDataChanged` + + + +Callback function that is called when new subtitle data is available. It provides the actual subtitle content for the current selected text track, if available (mainly WebVTT). + +Payload: + +| Property | Type | Description | +| ---------------- | -------- | -------------------------------------------------- | +| `subtitleTracks` | `string` | The subtitles text content in a compatible format. | + +Example: + +```javascript +{ + subtitleTracks: "This blade has a dark past.", +} +``` + +### `onVideoTracks` + + + +Callback function that is called when video tracks change + +Payload: + +| Property | Type | Description | +| -------- | ------- | ------------------------------------- | +| trackId | number | Internal track ID | +| codecs | string | MimeType of codec used for this track | +| width | number | Track width | +| height | number | Track height | +| bitrate | number | Bitrate in bps | +| selected | boolean | true if track is selected for playing | + +Example: + +```javascript +{ + videoTracks: [ + { + trackId: 0, + codecs: 'video/mp4', + width: 1920, + height: 1080, + bitrate: 10000, + selected: true, + }, + ]; +} +``` + +### `onVolumeChange` + + + +Callback function that is called when the volume of player changes. + +> Note: This event applies to the volume of the player, not the volume of the device. + +Payload: + +| Property | Type | Description | +| -------- | ------ | ------------------------------------------ | +| volume | number | The volume of the player (between 0 and 1) | + +Example: + +```javascript +{ + volume: 0.5; +} +``` diff --git a/docs/pages/component/methods.md b/docs/pages/component/methods.mdx similarity index 58% rename from docs/pages/component/methods.md rename to docs/pages/component/methods.mdx index 6d5aedc3b4..aea3179e57 100644 --- a/docs/pages/component/methods.md +++ b/docs/pages/component/methods.mdx @@ -1,26 +1,21 @@ +import PlatformsList from './PlatformsList/PlatformsList.tsx'; + # Methods + This page shows the list of available methods -## Component methods +### `dismissFullscreenPlayer` -| Name |Platforms Support | -|-------------------------------------------------------------------------------------------|-----------------------| -|[dismissFullscreenPlayer](#dismissfullscreenplayer) |Android, iOS | -|[presentFullscreenPlayer](#presentfullscreenplayer) |Android, iOS | -|[pause](#pause) |Android, iOS | -|[resume](#resume) |Android, iOS | -|[save](#save) |iOS | -|[restoreUserInterfaceForPictureInPictureStop](#restoreuserinterfaceforpictureinpicturestop)|iOS | -|[seek](#seek) |All | + -### `dismissFullscreenPlayer` `dismissFullscreenPlayer(): Promise` Take the player out of fullscreen mode. -Platforms: Android, iOS - ### `presentFullscreenPlayer` + + + `presentFullscreenPlayer(): Promise` Put the player in fullscreen mode. @@ -29,82 +24,81 @@ On iOS, this displays the video in a fullscreen view controller with controls. On Android, this puts the navigation controls in fullscreen mode. It is not a complete fullscreen implementation, so you will still need to apply a style that makes the width and height match your screen dimensions to get a fullscreen video. -Platforms: Android, iOS - ### `pause` + + + `pause(): Promise` Pause the video. +### `resume` -Platforms: Android, iOS + -### `resume` `resume(): Promise` Resume the video. +### `save` -Platforms: Android, iOS + -### `save` `save(): Promise<{ uri: string }>` Save video to your Photos with current filter prop. Returns promise. - Notes: - - Currently only supports highest quality export - - Currently only supports MP4 export - - Currently only supports exporting to user's cache directory with a generated UUID filename. - - User will need to remove the saved video through their Photos app - - Works with cached videos as well. (Checkout video-caching example) - - If the video is has not began buffering (e.g. there is no internet connection) then the save function will throw an error. - - If the video is buffering then the save function promise will return after the video has finished buffering and processing. -Future: - - Will support multiple qualities through options - - Will support more formats in the future through options - - Will support custom directory and file name through options +- Currently only supports highest quality export +- Currently only supports MP4 export +- Currently only supports exporting to user's cache directory with a generated UUID filename. +- User will need to remove the saved video through their Photos app +- Works with cached videos as well. (Checkout video-caching example) +- If the video is has not began buffering (e.g. there is no internet connection) then the save function will throw an error. +- If the video is buffering then the save function promise will return after the video has finished buffering and processing. + +Future: -Platforms: iOS +- Will support multiple qualities through options +- Will support more formats in the future through options +- Will support custom directory and file name through options ### `restoreUserInterfaceForPictureInPictureStopCompleted` -`restoreUserInterfaceForPictureInPictureStopCompleted(restored)` -This function corresponds to the completion handler in Apple's [restoreUserInterfaceForPictureInPictureStop](https://developer.apple.com/documentation/avkit/avpictureinpicturecontrollerdelegate/1614703-pictureinpicturecontroller?language=objc). IMPORTANT: This function must be called after `onRestoreUserInterfaceForPictureInPictureStop` is called. + +`restoreUserInterfaceForPictureInPictureStopCompleted(restored)` -Platforms: iOS +This function corresponds to the completion handler in Apple's [restoreUserInterfaceForPictureInPictureStop](https://developer.apple.com/documentation/avkit/avpictureinpicturecontrollerdelegate/1614703-pictureinpicturecontroller?language=objc). IMPORTANT: This function must be called after `onRestoreUserInterfaceForPictureInPictureStop` is called. ### `seek` + + + `seek(seconds)` Seek to the specified position represented by seconds. seconds is a float value. `seek()` can only be called after the `onLoad` event has fired. Once completed, the [onSeek](#onseek) event will be called. - -Platforms: all - #### Exact seek + + By default iOS seeks within 100 milliseconds of the target position. If you need more accuracy, you can use the seek with tolerance method: `seek(seconds, tolerance)` tolerance is the max distance in milliseconds from the seconds position that's allowed. Using a more exact tolerance can cause seeks to take longer. If you want to seek exactly, set tolerance to 0. -Platforms: iOS - - - ### Example Usage + ```tsx const videoRef = useRef(null); const someCoolFunctions = async () => { - if(!videoRef.current) { + if (!videoRef.current) { return; } @@ -129,7 +123,7 @@ const someCoolFunctions = async () => { return (