From e5469c48e35193f6ef45cf9c528bb4f68a3e4671 Mon Sep 17 00:00:00 2001 From: Christoph Purrer Date: Thu, 5 May 2022 16:29:19 -0700 Subject: [PATCH 01/17] Back out > Add CompositeReactPackageTurboModuleManagerDelegate Summary: This change caused some internal regression in release builds, hence reverting it Changelog: [Internal] [Changed] - Back out > Add CompositeReactPackageTurboModuleManagerDelegate Reviewed By: alsun2001 Differential Revision: D36182014 fbshipit-source-id: e49fc897f3b1a2e9d33fcb7687244be74020c5be --- ...eactPackageTurboModuleManagerDelegate.java | 65 ------------------- .../react/turbomodule/core/jni/Android.mk | 2 +- .../facebook/react/turbomodule/core/jni/BUCK | 2 - .../react/turbomodule/core/jni/CMakeLists.txt | 3 +- .../CompositeTurboModuleManagerDelegate.cpp | 59 ----------------- .../CompositeTurboModuleManagerDelegate.h | 49 -------------- .../core/jni/ReactCommon/OnLoad.cpp | 3 - 7 files changed, 2 insertions(+), 181 deletions(-) delete mode 100644 ReactAndroid/src/main/java/com/facebook/react/CompositeReactPackageTurboModuleManagerDelegate.java delete mode 100644 ReactAndroid/src/main/java/com/facebook/react/turbomodule/core/jni/ReactCommon/CompositeTurboModuleManagerDelegate.cpp delete mode 100644 ReactAndroid/src/main/java/com/facebook/react/turbomodule/core/jni/ReactCommon/CompositeTurboModuleManagerDelegate.h diff --git a/ReactAndroid/src/main/java/com/facebook/react/CompositeReactPackageTurboModuleManagerDelegate.java b/ReactAndroid/src/main/java/com/facebook/react/CompositeReactPackageTurboModuleManagerDelegate.java deleted file mode 100644 index 42337bf3511898..00000000000000 --- a/ReactAndroid/src/main/java/com/facebook/react/CompositeReactPackageTurboModuleManagerDelegate.java +++ /dev/null @@ -1,65 +0,0 @@ -/* - * Copyright (c) Meta Platforms, Inc. and affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */ - -package com.facebook.react; - -import androidx.annotation.NonNull; -import com.facebook.jni.HybridData; -import com.facebook.react.bridge.ReactApplicationContext; -import com.facebook.react.turbomodule.core.TurboModuleManagerDelegate; -import com.facebook.soloader.SoLoader; -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; - -public class CompositeReactPackageTurboModuleManagerDelegate - extends ReactPackageTurboModuleManagerDelegate { - - private static volatile boolean sIsSoLibraryLoaded; - - protected native HybridData initHybrid(); - - private final List mDelegates; - - private CompositeReactPackageTurboModuleManagerDelegate( - ReactApplicationContext context, - List packages, - List delegates) { - super(context, packages); - mDelegates = delegates; - for (TurboModuleManagerDelegate delegate : delegates) { - addTurboModuleManagerDelegate(delegate); - } - } - - private native void addTurboModuleManagerDelegate(TurboModuleManagerDelegate delegates); - - public static class Builder extends ReactPackageTurboModuleManagerDelegate.Builder { - private final List mDelegatesBuilder; - - public Builder(@NonNull List delegatesBuilder) { - mDelegatesBuilder = delegatesBuilder; - } - - protected ReactPackageTurboModuleManagerDelegate build( - ReactApplicationContext context, List packages) { - List delegates = new ArrayList<>(); - for (ReactPackageTurboModuleManagerDelegate.Builder delegatesBuilder : mDelegatesBuilder) { - delegates.add(delegatesBuilder.build(context, Collections.emptyList())); - } - return new CompositeReactPackageTurboModuleManagerDelegate(context, packages, delegates); - } - } - - protected synchronized void maybeLoadOtherSoLibraries() { - // Prevents issues with initializer interruptions. See T38996825 and D13793825 for more context. - if (!sIsSoLibraryLoaded) { - SoLoader.loadLibrary("turbomodulejsijni"); - sIsSoLibraryLoaded = true; - } - } -} diff --git a/ReactAndroid/src/main/java/com/facebook/react/turbomodule/core/jni/Android.mk b/ReactAndroid/src/main/java/com/facebook/react/turbomodule/core/jni/Android.mk index 0ec7e419c9335a..f590cb77f322b4 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/turbomodule/core/jni/Android.mk +++ b/ReactAndroid/src/main/java/com/facebook/react/turbomodule/core/jni/Android.mk @@ -55,7 +55,7 @@ LOCAL_SHARED_LIBRARIES = libfb libfbjni libreact_nativemodule_core libjsi LOCAL_STATIC_LIBRARIES = libcallinvokerholder libreactperfloggerjni # Compile all local c++ files -LOCAL_SRC_FILES := $(LOCAL_PATH)/ReactCommon/CompositeTurboModuleManagerDelegate.cpp $(LOCAL_PATH)/ReactCommon/OnLoad.cpp $(LOCAL_PATH)/ReactCommon/TurboModuleManager.cpp +LOCAL_SRC_FILES := $(LOCAL_PATH)/ReactCommon/TurboModuleManager.cpp $(LOCAL_PATH)/ReactCommon/OnLoad.cpp # Build the files in this directory as a shared library include $(BUILD_SHARED_LIBRARY) diff --git a/ReactAndroid/src/main/java/com/facebook/react/turbomodule/core/jni/BUCK b/ReactAndroid/src/main/java/com/facebook/react/turbomodule/core/jni/BUCK index 06ed578353b43b..741c05949a77d3 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/turbomodule/core/jni/BUCK +++ b/ReactAndroid/src/main/java/com/facebook/react/turbomodule/core/jni/BUCK @@ -3,13 +3,11 @@ load("//tools/build_defs/oss:rn_defs.bzl", "ANDROID", "FBJNI_TARGET", "react_nat rn_xplat_cxx_library( name = "jni", srcs = [ - "ReactCommon/CompositeTurboModuleManagerDelegate.cpp", "ReactCommon/OnLoad.cpp", "ReactCommon/TurboModuleManager.cpp", ], header_namespace = "", exported_headers = { - "ReactCommon/CompositeTurboModuleManagerDelegate.h": "ReactCommon/CompositeTurboModuleManagerDelegate.h", "ReactCommon/TurboModuleManager.h": "ReactCommon/TurboModuleManager.h", "ReactCommon/TurboModuleManagerDelegate.h": "ReactCommon/TurboModuleManagerDelegate.h", }, diff --git a/ReactAndroid/src/main/java/com/facebook/react/turbomodule/core/jni/CMakeLists.txt b/ReactAndroid/src/main/java/com/facebook/react/turbomodule/core/jni/CMakeLists.txt index b5a9449bb9e1b1..02cfe42beeaea6 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/turbomodule/core/jni/CMakeLists.txt +++ b/ReactAndroid/src/main/java/com/facebook/react/turbomodule/core/jni/CMakeLists.txt @@ -43,9 +43,8 @@ target_link_libraries(callinvokerholder add_library( turbomodulejsijni SHARED - ReactCommon/CompositeTurboModuleManagerDelegate.cpp - ReactCommon/OnLoad.cpp ReactCommon/TurboModuleManager.cpp + ReactCommon/OnLoad.cpp ) target_include_directories( diff --git a/ReactAndroid/src/main/java/com/facebook/react/turbomodule/core/jni/ReactCommon/CompositeTurboModuleManagerDelegate.cpp b/ReactAndroid/src/main/java/com/facebook/react/turbomodule/core/jni/ReactCommon/CompositeTurboModuleManagerDelegate.cpp deleted file mode 100644 index a84c819e429435..00000000000000 --- a/ReactAndroid/src/main/java/com/facebook/react/turbomodule/core/jni/ReactCommon/CompositeTurboModuleManagerDelegate.cpp +++ /dev/null @@ -1,59 +0,0 @@ -/* - * Copyright (c) Meta Platforms, Inc. and affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */ - -#include "CompositeTurboModuleManagerDelegate.h" - -namespace facebook { -namespace react { - -jni::local_ref -CompositeTurboModuleManagerDelegate::initHybrid(jni::alias_ref) { - return makeCxxInstance(); -} - -void CompositeTurboModuleManagerDelegate::registerNatives() { - registerHybrid({ - makeNativeMethod( - "initHybrid", CompositeTurboModuleManagerDelegate::initHybrid), - makeNativeMethod( - "addTurboModuleManagerDelegate", - CompositeTurboModuleManagerDelegate::addTurboModuleManagerDelegate), - }); -} - -std::shared_ptr -CompositeTurboModuleManagerDelegate::getTurboModule( - const std::string moduleName, - const std::shared_ptr jsInvoker) { - for (auto delegate : mDelegates_) { - if (auto turboModule = delegate->getTurboModule(moduleName, jsInvoker)) { - return turboModule; - } - } - return nullptr; -} - -std::shared_ptr -CompositeTurboModuleManagerDelegate::getTurboModule( - const std::string moduleName, - const JavaTurboModule::InitParams ¶ms) { - for (auto delegate : mDelegates_) { - if (auto turboModule = delegate->getTurboModule(moduleName, params)) { - return turboModule; - } - } - return nullptr; -} - -void CompositeTurboModuleManagerDelegate::addTurboModuleManagerDelegate( - jni::alias_ref - turboModuleManagerDelegate) { - mDelegates_.insert(turboModuleManagerDelegate->cthis()); -} - -} // namespace react -} // namespace facebook diff --git a/ReactAndroid/src/main/java/com/facebook/react/turbomodule/core/jni/ReactCommon/CompositeTurboModuleManagerDelegate.h b/ReactAndroid/src/main/java/com/facebook/react/turbomodule/core/jni/ReactCommon/CompositeTurboModuleManagerDelegate.h deleted file mode 100644 index 12b370d66c6c83..00000000000000 --- a/ReactAndroid/src/main/java/com/facebook/react/turbomodule/core/jni/ReactCommon/CompositeTurboModuleManagerDelegate.h +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Copyright (c) Meta Platforms, Inc. and affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */ - -#pragma once - -#include -#include -#include -#include -#include - -namespace facebook { -namespace react { - -class CompositeTurboModuleManagerDelegate - : public jni::HybridClass< - CompositeTurboModuleManagerDelegate, - TurboModuleManagerDelegate> { - public: - static auto constexpr kJavaDescriptor = - "Lcom/facebook/react/CompositeReactPackageTurboModuleManagerDelegate;"; - - static jni::local_ref initHybrid(jni::alias_ref); - - static void registerNatives(); - - std::shared_ptr getTurboModule( - const std::string moduleName, - const std::shared_ptr jsInvoker) override; - std::shared_ptr getTurboModule( - const std::string moduleName, - const JavaTurboModule::InitParams ¶ms) override; - - private: - friend HybridBase; - using HybridBase::HybridBase; - std::unordered_set mDelegates_; - - void addTurboModuleManagerDelegate( - jni::alias_ref - turboModuleManagerDelegate); -}; - -} // namespace react -} // namespace facebook diff --git a/ReactAndroid/src/main/java/com/facebook/react/turbomodule/core/jni/ReactCommon/OnLoad.cpp b/ReactAndroid/src/main/java/com/facebook/react/turbomodule/core/jni/ReactCommon/OnLoad.cpp index f4c388428f20e2..ac7f63afe6cdd2 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/turbomodule/core/jni/ReactCommon/OnLoad.cpp +++ b/ReactAndroid/src/main/java/com/facebook/react/turbomodule/core/jni/ReactCommon/OnLoad.cpp @@ -9,7 +9,6 @@ #include #include -#include "CompositeTurboModuleManagerDelegate.h" #include "TurboModuleManager.h" void jniEnableCppLogging( @@ -26,8 +25,6 @@ JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *) { // "ComponentDescriptorFactory" is defined in Fabric facebook::react::TurboModuleManager::registerNatives(); - facebook::react::CompositeTurboModuleManagerDelegate::registerNatives(); - facebook::jni::registerNatives( "com/facebook/react/turbomodule/core/TurboModulePerfLogger", {makeNativeMethod("jniEnableCppLogging", jniEnableCppLogging)}); From 93b50be8c2341a0daf41f6fdc656896c4907c4dc Mon Sep 17 00:00:00 2001 From: Rick Hanlon Date: Thu, 5 May 2022 19:58:19 -0700 Subject: [PATCH 02/17] Replace use-subscripton with use-sync-external-store (#33770) Summary: Pull Request resolved: https://github.com/facebook/react-native/pull/33770 React has replaced use-subscription with the React 18 compatible use-sync-external-store. Changelog: [General][Changed] - Replace use-subscripton with use-sync-external-store Reviewed By: ryancat Differential Revision: D35592432 fbshipit-source-id: cc2016f66940e53f3614e110bafb02240bae1ae4 --- BUCK | 2 +- Libraries/Utilities/useColorScheme.js | 24 +++++++------------ ...cription.js => use-sync-external-store.js} | 8 +++---- package.json | 2 +- yarn.lock | 10 ++++---- 5 files changed, 19 insertions(+), 27 deletions(-) rename flow/{use-subscription.js => use-sync-external-store.js} (74%) diff --git a/BUCK b/BUCK index 9cfb3086b0eecf..40e85997e24de6 100644 --- a/BUCK +++ b/BUCK @@ -759,7 +759,7 @@ rn_library( "//xplat/js:node_modules__react_19shallow_19renderer", "//xplat/js:node_modules__regenerator_19runtime", "//xplat/js:node_modules__stacktrace_19parser", - "//xplat/js:node_modules__use_19subscription", + "//xplat/js:node_modules__use_19sync_19external_19store", "//xplat/js:node_modules__whatwg_19fetch", "//xplat/js/RKJSModules/Libraries/Polyfills:Polyfills", "//xplat/js/RKJSModules/Libraries/React:React", diff --git a/Libraries/Utilities/useColorScheme.js b/Libraries/Utilities/useColorScheme.js index b79dd71c554945..b0d6eaeb22099f 100644 --- a/Libraries/Utilities/useColorScheme.js +++ b/Libraries/Utilities/useColorScheme.js @@ -8,24 +8,18 @@ * @flow strict-local */ -import {useMemo} from 'react'; -import {useSubscription} from 'use-subscription'; +'use strict'; + +import {useSyncExternalStore} from 'use-sync-external-store/shim'; import Appearance from './Appearance'; import type {ColorSchemeName} from './NativeAppearance'; export default function useColorScheme(): ?ColorSchemeName { - const subscription = useMemo( - () => ({ - getCurrentValue: () => Appearance.getColorScheme(), - subscribe: callback => { - const appearanceSubscription = Appearance.addChangeListener(callback); - return () => { - appearanceSubscription.remove(); - }; - }, - }), - [], + return useSyncExternalStore( + callback => { + const appearanceSubscription = Appearance.addChangeListener(callback); + return () => appearanceSubscription.remove(); + }, + () => Appearance.getColorScheme(), ); - - return useSubscription(subscription); } diff --git a/flow/use-subscription.js b/flow/use-sync-external-store.js similarity index 74% rename from flow/use-subscription.js rename to flow/use-sync-external-store.js index fa7ef61ed118fd..4edac0dbfa6d47 100644 --- a/flow/use-subscription.js +++ b/flow/use-sync-external-store.js @@ -11,9 +11,9 @@ 'use strict'; -declare module 'use-subscription' { - declare export function useSubscription(subscription: {| - getCurrentValue: () => Value, +declare module 'use-sync-external-store/shim' { + declare export function useSyncExternalStore( subscribe: (callback: Function) => () => void, - |}): Value; + getCurrentValue: () => Value, + ): Value; } diff --git a/package.json b/package.json index 532735d3c48022..fb1d692c70d21b 100644 --- a/package.json +++ b/package.json @@ -125,7 +125,7 @@ "regenerator-runtime": "^0.13.2", "scheduler": "^0.21.0", "stacktrace-parser": "^0.1.3", - "use-subscription": ">=1.0.0 <1.6.0", + "use-sync-external-store": "^1.0.0", "whatwg-fetch": "^3.0.0", "ws": "^6.1.4" }, diff --git a/yarn.lock b/yarn.lock index 85a9f802499aab..fd466c541a33fa 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7239,12 +7239,10 @@ urix@^0.1.0: resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= -"use-subscription@>=1.0.0 <1.6.0": - version "1.5.1" - resolved "https://registry.yarnpkg.com/use-subscription/-/use-subscription-1.5.1.tgz#73501107f02fad84c6dd57965beb0b75c68c42d1" - integrity sha512-Xv2a1P/yReAjAbhylMfFplFKj9GssgTwN7RlcTxBujFQcloStWNDQdc4g4NRWH9xS4i/FDk04vQBptAXoF3VcA== - dependencies: - object-assign "^4.1.1" +use-sync-external-store@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/use-sync-external-store/-/use-sync-external-store-1.0.0.tgz#d98f4a9c2e73d0f958e7e2d2c2bfb5f618cbd8fd" + integrity sha512-AFVsxg5GkFg8GDcxnl+Z0lMAz9rE8DGJCc28qnBuQF7lac57B5smLcT37aXpXIIPz75rW4g3eXHPjhHwdGskOw== use@^3.1.0: version "3.1.1" From 6ab7a99518f8ba0d53e62e35d230ebec78e50217 Mon Sep 17 00:00:00 2001 From: Janic Duplessis Date: Fri, 6 May 2022 01:56:33 -0700 Subject: [PATCH 03/17] Pass react build dir to cmake (#33736) Summary: The ReactAndroid cmake build assumes that the build directory is ReactAndroid/build, but this is not always the case if gradle is configured with a different build location. Instead of assuming the build location in cmake, pass it from gradle. ## Changelog [Android] [Fixed] - Pass react build dir to cmake Pull Request resolved: https://github.com/facebook/react-native/pull/33736 Test Plan: Tested in an app with a custom build dir that RN now builds properly after this change. In build.gradle add: ```groovy allprojects { buildDir = "${System.getProperty("user.home")}/.gradle/builds/${rootProject.name}/${project.name}" } ``` Reviewed By: christophpurrer Differential Revision: D36128556 Pulled By: cortinico fbshipit-source-id: cdb8283c93ea7c384ec94cd3e24012220965b6dc --- ReactAndroid/build.gradle | 1 + ReactAndroid/src/main/jni/CMakeLists.txt | 8 ++++++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/ReactAndroid/build.gradle b/ReactAndroid/build.gradle index b2d44d10d8cd38..01f712422b1619 100644 --- a/ReactAndroid/build.gradle +++ b/ReactAndroid/build.gradle @@ -283,6 +283,7 @@ android { cmake { arguments "-DREACT_COMMON_DIR=${reactNativeRootDir}/ReactCommon", "-DREACT_ANDROID_DIR=$projectDir", + "-DREACT_BUILD_DIR=$buildDir", "-DANDROID_STL=c++_shared", "-DANDROID_TOOLCHAIN=clang", "-DANDROID_PLATFORM=android-21" diff --git a/ReactAndroid/src/main/jni/CMakeLists.txt b/ReactAndroid/src/main/jni/CMakeLists.txt index 9629ebf5408d0c..eb4150fa006864 100644 --- a/ReactAndroid/src/main/jni/CMakeLists.txt +++ b/ReactAndroid/src/main/jni/CMakeLists.txt @@ -16,8 +16,12 @@ function(add_react_android_subdir relative_path) add_subdirectory(${REACT_ANDROID_DIR}/${relative_path} ReactAndroid/${relative_path}) endfunction() +function(add_react_build_subdir relative_path) + add_subdirectory(${REACT_BUILD_DIR}/${relative_path} build/${relative_path}) +endfunction() + function(add_react_third_party_ndk_subdir relative_path) - add_react_android_subdir(build/third-party-ndk/${relative_path}) + add_react_build_subdir(third-party-ndk/${relative_path}) endfunction() function(add_react_common_subdir relative_path) @@ -84,7 +88,7 @@ add_react_common_subdir(react/renderer/mapbuffer) add_react_common_subdir(react/nativemodule/core) # ReactAndroid JNI targets -add_react_android_subdir(build/generated/source/codegen/jni) +add_react_build_subdir(generated/source/codegen/jni) add_react_android_subdir(src/main/java/com/facebook/hermes/reactexecutor) add_react_android_subdir(src/main/jni/first-party/fbjni) add_react_android_subdir(src/main/jni/first-party/fb) From 8b8d7324a6333fa738125a3ebb020e8c49346be9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?H=C3=A9ctor=20Ramos?= Date: Fri, 6 May 2022 02:17:35 -0700 Subject: [PATCH 04/17] Hermes: Warn user about longer pod install times when Hermes is enabled Summary: Adjust logs during `pod install` to warn user about longer install times due to Hermes compilation. Changelog: [Internal] Reviewed By: cortinico Differential Revision: D36143766 fbshipit-source-id: 0facb2e295543438dfbc46d11db1c4dc163acff9 --- scripts/react_native_pods.rb | 13 ++----------- sdks/hermes-engine.podspec | 2 ++ 2 files changed, 4 insertions(+), 11 deletions(-) diff --git a/scripts/react_native_pods.rb b/scripts/react_native_pods.rb index a630e9bfbfd668..d95ff4ab625936 100644 --- a/scripts/react_native_pods.rb +++ b/scripts/react_native_pods.rb @@ -110,7 +110,6 @@ def use_react_native! (options={}) if hermes_enabled pod 'React-hermes', :path => "#{prefix}/ReactCommon/hermes" - Pod::UI.puts "[Hermes] Building Hermes from source" hermes_source_path = downloadAndConfigureHermesSource(prefix) pod 'hermes-engine', :path => "#{hermes_source_path}/hermes-engine.podspec" pod 'libevent', '~> 2.1.12' @@ -684,20 +683,12 @@ def downloadAndConfigureHermesSource(react_native_path) hermes_tarball_path = "#{download_dir}/hermes-#{hermes_tag_sha}.tar.gz" if (!File.exist?(hermes_tarball_path)) - Pod::UI.puts "[Hermes] Downloading Hermes source code (#{hermes_tarball_url})" + Pod::UI.puts "[Hermes] Downloading Hermes source code..." system("curl #{hermes_tarball_url} -Lo #{hermes_tarball_path}") end - Pod::UI.puts "[Hermes] Extracting Hermes (#{hermes_tag_sha})" + Pod::UI.puts "[Hermes] Extracting Hermes tarball (#{hermes_tag_sha.slice(0,6)})" system("tar -zxf #{hermes_tarball_path} --strip-components=1 --directory #{hermes_dir}") - hermesc_macos_path = "#{sdks_dir}/hermesc/macos/build_host_hermesc" - hermesc_macos_link = "#{hermes_dir}/utils/build_host_hermesc" - if (File.exist?(hermesc_macos_path)) - # If hermesc is present, create a symbolic link in the hermes source directory to avoid re-building hermesc - Pod::UI.puts "[Hermes] Using pre-compiled Hermes Compiler from #{hermesc_macos_path}" - system("ln -s #{hermesc_macos_path} #{hermesc_macos_link}") - end - # TODO: Integrate this temporary hermes-engine.podspec into the actual one located in facebook/hermes system("cp #{sdks_dir}/hermes-engine.podspec #{hermes_dir}/hermes-engine.podspec") diff --git a/sdks/hermes-engine.podspec b/sdks/hermes-engine.podspec index 32ea54764bfd70..04f497ba3f86f9 100644 --- a/sdks/hermes-engine.podspec +++ b/sdks/hermes-engine.podspec @@ -16,6 +16,8 @@ module HermesHelper BUILD_TYPE = :release end +Pod::UI.puts '[Hermes] Hermes needs to be compiled, installing hermes-engine may take a while...'.yellow + Pod::Spec.new do |spec| spec.name = "hermes-engine" spec.version = '1000.0.0' From bf405d70837e1319cfa83e4c5cbb7c9a69abd820 Mon Sep 17 00:00:00 2001 From: Pieter De Baets Date: Fri, 6 May 2022 02:45:47 -0700 Subject: [PATCH 05/17] Fix definition of NativeAnimated.isEmpty Summary: Noticed in D36098912 (https://github.com/facebook/react-native/commit/5de0f145eca36d3263cb8a9928add278cdfffa2b) that the definition of NativeAnimatedModule's OperationQueue.isEmpty was incorrect as it didn't account for `mPeekedOperation`, while `drainQueueIntoList` did. Changelog: [Internal] Reviewed By: mdvacca Differential Revision: D36109810 fbshipit-source-id: afd7059975ce6e5c65d1975d168a03f0881bd7c1 --- .../com/facebook/react/animated/NativeAnimatedModule.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ReactAndroid/src/main/java/com/facebook/react/animated/NativeAnimatedModule.java b/ReactAndroid/src/main/java/com/facebook/react/animated/NativeAnimatedModule.java index 7d9c6421171dc5..a951694427ed1c 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/animated/NativeAnimatedModule.java +++ b/ReactAndroid/src/main/java/com/facebook/react/animated/NativeAnimatedModule.java @@ -113,7 +113,7 @@ private class ConcurrentOperationQueue { @AnyThread boolean isEmpty() { - return mQueue.isEmpty(); + return mQueue.isEmpty() && mPeekedOperation != null; } void setSynchronizedAccess(boolean isSynchronizedAccess) { @@ -150,7 +150,7 @@ void executeBatch(long maxBatchNumber, NativeAnimatedNodesManager nodesManager) @UiThread private @Nullable List drainQueueIntoList(long maxBatchNumber) { - if (mQueue.isEmpty() && mPeekedOperation == null) { + if (isEmpty()) { return null; } From 1e0226f933814bf9ada87eaa14348bfff863ead1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Pierzcha=C5=82a?= Date: Fri, 6 May 2022 03:50:15 -0700 Subject: [PATCH 06/17] Upgrade RN CLI to v8 alpha.5 (#33755) Summary: Upgrades the React Native CLI to v8 alpha.5. Includes Metro bump to 0.70.2 cc fortmarek kelset cortinico ## Changelog [General] [Changed] - Upgrade RN CLI to v8 alpha.5 Pull Request resolved: https://github.com/facebook/react-native/pull/33755 Test Plan: CI Reviewed By: motiz88, cipolleschi Differential Revision: D36128899 Pulled By: cortinico fbshipit-source-id: b9ce0b4f9fef356141a79be9ccdcabd841d6d1ea --- package.json | 8 +- repo-config/package.json | 2 +- template/package.json | 2 +- yarn.lock | 389 +++++++++++++++++++-------------------- 4 files changed, 195 insertions(+), 206 deletions(-) diff --git a/package.json b/package.json index fb1d692c70d21b..1245a7b359cd64 100644 --- a/package.json +++ b/package.json @@ -98,7 +98,7 @@ }, "dependencies": { "@jest/create-cache-key-function": "^27.0.1", - "@react-native-community/cli": "^8.0.0-alpha.4", + "@react-native-community/cli": "^8.0.0-alpha.5", "@react-native-community/cli-platform-android": "^8.0.0-alpha.3", "@react-native-community/cli-platform-ios": "^8.0.0-alpha.3", "@react-native/assets": "1.0.0", @@ -112,9 +112,9 @@ "invariant": "^2.2.4", "jsc-android": "^250230.2.1", "memoize-one": "^5.0.0", - "metro-react-native-babel-transformer": "0.70.1", - "metro-runtime": "0.70.1", - "metro-source-map": "0.70.1", + "metro-react-native-babel-transformer": "0.70.3", + "metro-runtime": "0.70.3", + "metro-source-map": "0.70.3", "nullthrows": "^1.1.1", "pretty-format": "^26.5.2", "promise": "^8.0.3", diff --git a/repo-config/package.json b/repo-config/package.json index 6d277e3bec6e64..c1f3daa8076f80 100644 --- a/repo-config/package.json +++ b/repo-config/package.json @@ -39,7 +39,7 @@ "jest": "^26.6.3", "jest-junit": "^10.0.0", "jscodeshift": "^0.13.1", - "metro-babel-register": "0.70.1", + "metro-babel-register": "0.70.3", "mkdirp": "^0.5.1", "prettier": "^2.4.1", "react": "17.0.2", diff --git a/template/package.json b/template/package.json index 33e9084df8d317..e7cafd5a1434e1 100644 --- a/template/package.json +++ b/template/package.json @@ -20,7 +20,7 @@ "babel-jest": "^26.6.3", "eslint": "^7.32.0", "jest": "^26.6.3", - "metro-react-native-babel-preset": "^0.70.1", + "metro-react-native-babel-preset": "^0.70.3", "react-test-renderer": "18.0.0" }, "jest": { diff --git a/yarn.lock b/yarn.lock index fd466c541a33fa..7361002bc75c2c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -588,13 +588,6 @@ dependencies: "@babel/helper-create-regexp-features-plugin" "^7.16.7" -"@babel/plugin-transform-object-assign@^7.0.0": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-assign/-/plugin-transform-object-assign-7.12.13.tgz#d9b9200a69e03403a813e44a933ad9f4bddfd050" - integrity sha512-4QxDMc0lAOkIBSfCrnSGbAJ+4epDBF2XXwcLXuBcG1xl9u7LrktNVD4+LwhL47XuKVPQ7R25e/WdcV+h97HyZA== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - "@babel/plugin-transform-object-super@^7.0.0": version "7.12.13" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.12.13.tgz#b4416a2d63b8f7be314f3d349bd55a9c1b5171f7" @@ -751,6 +744,13 @@ core-js-pure "^3.19.0" regenerator-runtime "^0.13.4" +"@babel/runtime@^7.0.0": + version "7.17.9" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.17.9.tgz#d19fbf802d01a8cb6cf053a64e472d42c434ba72" + integrity sha512-lSiBBvodq29uShpWGNbgFdKYNiFDo5/HIYsaCEY9ff4sb10x9jizo2+pRrSyF4jKZCXqgzuqBOQKbUm90gQwJg== + dependencies: + regenerator-runtime "^0.13.4" + "@babel/runtime@^7.10.2", "@babel/runtime@^7.11.2", "@babel/runtime@^7.8.4": version "7.16.0" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.16.0.tgz#e27b977f2e2088ba24748bf99b5e1dece64e4f0b" @@ -1183,20 +1183,20 @@ ora "^5.4.1" plist "^3.0.2" -"@react-native-community/cli-plugin-metro@^8.0.0-alpha.4": - version "8.0.0-alpha.4" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-plugin-metro/-/cli-plugin-metro-8.0.0-alpha.4.tgz#3cfb468a184e4ca8e9d9d746f8334204520ece6d" - integrity sha512-PHQjR/nc/e4K1PQAsHb9P/nXgup5HjehmuGXBOKZ12POKQpVesDvLg7SJ9MrEap2FrZyrQdB60RVvv00edQFtA== +"@react-native-community/cli-plugin-metro@^8.0.0-alpha.5": + version "8.0.0-alpha.5" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-plugin-metro/-/cli-plugin-metro-8.0.0-alpha.5.tgz#c3539cda24ece8bc3e7576196dc89161994787f8" + integrity sha512-G2ZqdX2HAokIzNpfT+hK8XNXYb1NSCzqe/ke5FobhrsRsU8S1d0/+MV+g59w34VHG5MdJXXSLl3Cq3ddDOd25w== dependencies: "@react-native-community/cli-server-api" "^8.0.0-alpha.3" "@react-native-community/cli-tools" "^8.0.0-alpha.3" chalk "^4.1.2" - metro "^0.67.0" - metro-config "^0.67.0" - metro-core "^0.67.0" - metro-react-native-babel-transformer "^0.67.0" - metro-resolver "^0.67.0" - metro-runtime "^0.67.0" + metro "^0.70.1" + metro-config "^0.70.1" + metro-core "^0.70.1" + metro-react-native-babel-transformer "^0.70.1" + metro-resolver "^0.70.1" + metro-runtime "^0.70.1" readline "^1.3.0" "@react-native-community/cli-server-api@^8.0.0-alpha.3": @@ -1236,17 +1236,17 @@ dependencies: joi "^17.2.1" -"@react-native-community/cli@^8.0.0-alpha.4": - version "8.0.0-alpha.4" - resolved "https://registry.yarnpkg.com/@react-native-community/cli/-/cli-8.0.0-alpha.4.tgz#f367aa47c12c11606961f4e38edb1e71c3c5cfb9" - integrity sha512-5QAo1M5ffW9rJbMMOJPbhNPWckHGBA2P03+2kgqg5PrQLOOqKCBp6JuJIn/cQf6oyW/uscoy6nAQjrW2YfLE4w== +"@react-native-community/cli@^8.0.0-alpha.5": + version "8.0.0-alpha.5" + resolved "https://registry.yarnpkg.com/@react-native-community/cli/-/cli-8.0.0-alpha.5.tgz#f727f459d1d64b44535b4250b30fbd082de297bf" + integrity sha512-9BrOcUDoob0Mp5Ml69QmBfx4SOu4Ud/ee34LxUjHwTUy22VMFvHf8sQCdJWzA7DN9rY0qL8yrjDelh8i2QRUPQ== dependencies: "@react-native-community/cli-clean" "^8.0.0-alpha.3" "@react-native-community/cli-config" "^8.0.0-alpha.3" "@react-native-community/cli-debugger-ui" "^8.0.0-alpha.3" "@react-native-community/cli-doctor" "^8.0.0-alpha.3" "@react-native-community/cli-hermes" "^8.0.0-alpha.3" - "@react-native-community/cli-plugin-metro" "^8.0.0-alpha.4" + "@react-native-community/cli-plugin-metro" "^8.0.0-alpha.5" "@react-native-community/cli-server-api" "^8.0.0-alpha.3" "@react-native-community/cli-tools" "^8.0.0-alpha.3" "@react-native-community/cli-types" "^8.0.0-alpha.3" @@ -1737,13 +1737,6 @@ async@^1.5.2: resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" integrity sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo= -async@^2.4.0: - version "2.6.1" - resolved "https://registry.yarnpkg.com/async/-/async-2.6.1.tgz#b245a23ca71930044ec53fa46aa00a3e87c6a610" - integrity sha512-fNEiL2+AZt6AlAw/29Cr0UDe4sRAHCpEHh54WMz+Bb7QfNcFw4h3loofyJpLeQs4Yx7yuqu/2dLgM5hKOs6HlQ== - dependencies: - lodash "^4.17.10" - async@^3.2.2: version "3.2.3" resolved "https://registry.yarnpkg.com/async/-/async-3.2.3.tgz#ac53dafd3f4720ee9e8a160628f18ea91df196c9" @@ -3525,23 +3518,11 @@ hermes-engine@~0.11.0: resolved "https://registry.yarnpkg.com/hermes-engine/-/hermes-engine-0.11.0.tgz#bb224730d230a02a5af02c4e090d1f52d57dd3db" integrity sha512-7aMUlZja2IyLYAcZ69NBnwJAR5ZOYlSllj0oMpx08a8HzxHOys0eKCzfphrf6D0vX1JGO1QQvVsQKe6TkYherw== -hermes-estree@0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/hermes-estree/-/hermes-estree-0.5.0.tgz#36432a2b12f01b217244da098924efdfdfc12327" - integrity sha512-1h8rvG23HhIR5K6Kt0e5C7BC72J1Ath/8MmSta49vxXp/j6wl7IMHvIRFYBQr35tWnQY97dSGR2uoAJ5pHUQkg== - hermes-estree@0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/hermes-estree/-/hermes-estree-0.6.0.tgz#e866fddae1b80aec65fe2ae450a5f2070ad54033" integrity sha512-2YTGzJCkhdmT6VuNprWjXnvTvw/3iPNw804oc7yknvQpNKo+vJGZmtvLLCghOZf0OwzKaNAzeIMp71zQbNl09w== -hermes-parser@0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/hermes-parser/-/hermes-parser-0.5.0.tgz#8b678dd8b29a08b57cbaf60adba4896494c59a53" - integrity sha512-ARnJBScKAkkq8j3BHrNGBUv/4cSpZNbKDsVizEtzmsFeqC67Dopa5s4XRe+e3wN52Dh5Mj2kDB5wJvhcxwDkPg== - dependencies: - hermes-estree "0.5.0" - hermes-parser@0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/hermes-parser/-/hermes-parser-0.6.0.tgz#00d14e91bca830b3c1457050fa4187400cb96328" @@ -4496,7 +4477,7 @@ jest-watcher@^26.6.2: jest-util "^26.6.2" string-length "^4.0.1" -jest-worker@^26.0.0, jest-worker@^26.6.2: +jest-worker@^26.6.2: version "26.6.2" resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-26.6.2.tgz#7f72cbc4d643c365e27b9fd775f9d0eaa9c7a8ed" integrity sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ== @@ -4505,6 +4486,15 @@ jest-worker@^26.0.0, jest-worker@^26.6.2: merge-stream "^2.0.0" supports-color "^7.0.0" +jest-worker@^27.2.0: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-27.5.1.tgz#8d146f0900e8973b106b6f73cc1e9a8cb86f8db0" + integrity sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg== + dependencies: + "@types/node" "*" + merge-stream "^2.0.0" + supports-color "^8.0.0" + jest-worker@^27.4.6: version "27.4.6" resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-27.4.6.tgz#5d2d93db419566cb680752ca0792780e71b3273e" @@ -4818,7 +4808,7 @@ lodash.truncate@^4.4.2: resolved "https://registry.yarnpkg.com/lodash.truncate/-/lodash.truncate-4.4.2.tgz#5a350da0b1113b837ecfffd5812cbe58d6eae193" integrity sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM= -lodash@^4.17.10, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.21, lodash@^4.7.0: +lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.21, lodash@^4.7.0: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== @@ -4908,10 +4898,10 @@ merge2@^1.3.0: resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== -metro-babel-register@0.70.1: - version "0.70.1" - resolved "https://registry.yarnpkg.com/metro-babel-register/-/metro-babel-register-0.70.1.tgz#2adf5a239a7aee3f502ef323720c74120d362893" - integrity sha512-9hfTAmdTu8cKqL1Xbl/y3kz09fse0TzAqwE7SyNSo5j42U7C6ba0JdeRIy0MSpeLFAttC7E6/ctVE3fqHpzoVA== +metro-babel-register@0.70.3: + version "0.70.3" + resolved "https://registry.yarnpkg.com/metro-babel-register/-/metro-babel-register-0.70.3.tgz#b51e881c7633f38decc9be2e25a46478af579047" + integrity sha512-ZrADEuqshCPxjPv6olM/5Hx5cOI7vnJ7DEvAIUaWRwdlonYt5lRA9hgXw8hYwwBYrclgPWW7waPdyICm70szzA== dependencies: "@babel/core" "^7.14.0" "@babel/plugin-proposal-nullish-coalescing-operator" "^7.0.0" @@ -4924,89 +4914,89 @@ metro-babel-register@0.70.1: babel-plugin-replace-ts-export-assignment "^0.0.2" escape-string-regexp "^1.0.5" -metro-babel-transformer@0.67.0: - version "0.67.0" - resolved "https://registry.yarnpkg.com/metro-babel-transformer/-/metro-babel-transformer-0.67.0.tgz#42fe82af9953e5c62d9a8d7d544eb7be9020dd18" - integrity sha512-SBqc4nq/dgsPNFm+mpWcQQzJaXnh0nrfz2pSnZC4i6zMtIakrTWb8SQ78jOU1FZVEZ3nu9xCYVHS9Tbr/LoEuw== +metro-babel-transformer@0.70.2: + version "0.70.2" + resolved "https://registry.yarnpkg.com/metro-babel-transformer/-/metro-babel-transformer-0.70.2.tgz#70b5d4a821e3e8441a547803ca0e89a15b42f31d" + integrity sha512-va5fn0Y40DzgtJsK2jSTtm+RYRJcxy5JNz1OiJjAuCvIkd3KvWPuFY/76+SKbS+/CZhFJpF4AFj/0Sojsrfc1A== dependencies: "@babel/core" "^7.14.0" - hermes-parser "0.5.0" - metro-source-map "0.67.0" + hermes-parser "0.6.0" + metro-source-map "0.70.2" nullthrows "^1.1.1" -metro-babel-transformer@0.70.1: - version "0.70.1" - resolved "https://registry.yarnpkg.com/metro-babel-transformer/-/metro-babel-transformer-0.70.1.tgz#532c766fc3200acdd11259c62f993ee483eab8e7" - integrity sha512-KjQt1zbjXSw40lN98YY1+MNcZzhyEobjpGKKlDo7JWEEYan4dKlRnujymdJNG8v/fXLY4WdB3vcLR/qIWHRZhQ== +metro-babel-transformer@0.70.3: + version "0.70.3" + resolved "https://registry.yarnpkg.com/metro-babel-transformer/-/metro-babel-transformer-0.70.3.tgz#dca61852be273824a4b641bd1ecafff07ff3ad1f" + integrity sha512-bWhZRMn+mIOR/s3BDpFevWScz9sV8FGktVfMlF1eJBLoX24itHDbXvTktKBYi38PWIKcHedh6THSFpJogfuwNA== dependencies: "@babel/core" "^7.14.0" hermes-parser "0.6.0" - metro-source-map "0.70.1" + metro-source-map "0.70.3" nullthrows "^1.1.1" -metro-cache-key@0.67.0: - version "0.67.0" - resolved "https://registry.yarnpkg.com/metro-cache-key/-/metro-cache-key-0.67.0.tgz#4df6a73cced199e1bddd0f3454bb931a27141eeb" - integrity sha512-FNJe5Rcb2uzY6G6tsqCf0RV4t2rCeX6vSHBxmP7k+4aI4NqX4evtPI0K82r221nBzm5DqNWCURZ0RYUT6jZMGA== +metro-cache-key@0.70.2: + version "0.70.2" + resolved "https://registry.yarnpkg.com/metro-cache-key/-/metro-cache-key-0.70.2.tgz#f70afa27c8e9ba25391ad6f5013fb769d7d3acd8" + integrity sha512-xNdV5w04aKuE/2FDAhYaId4tR4N77cB3pKHs0vDXCKDVj5fSH/RMzt5JuNtU1SB7Hu+4d0Z6jOVtUErfDIlk3Q== -metro-cache@0.67.0: - version "0.67.0" - resolved "https://registry.yarnpkg.com/metro-cache/-/metro-cache-0.67.0.tgz#928db5742542719677468c4d22ea29b71c7ec8fc" - integrity sha512-IY5dXiR76L75b2ue/mv+9vW8g5hdQJU6YEe81lj6gTSoUrhcONT0rzY+Gh5QOS2Kk6z9utZQMvd9PRKL9/635A== +metro-cache@0.70.2: + version "0.70.2" + resolved "https://registry.yarnpkg.com/metro-cache/-/metro-cache-0.70.2.tgz#918940f0ceb8200eb9b586c3e50b1a9877a16c27" + integrity sha512-gvyD7XbjmZDE/iZYb+Rqgu0yaNLjp61QqVwD+kIwwj/DxHpQCJFFKrPxXUswDfqFR5vt352erCgZsWxMVNDI0g== dependencies: - metro-core "0.67.0" - mkdirp "^0.5.1" + metro-core "0.70.2" rimraf "^2.5.4" -metro-config@0.67.0, metro-config@^0.67.0: - version "0.67.0" - resolved "https://registry.yarnpkg.com/metro-config/-/metro-config-0.67.0.tgz#5507d3b295bd10c87bd13dbe5a3033a357418786" - integrity sha512-ThAwUmzZwTbKyyrIn2bKIcJDPDBS0LKAbqJZQioflvBGfcgA21h3fdL3IxRmvCEl6OnkEWI0Tn1Z9w2GLAjf2g== +metro-config@0.70.2, metro-config@^0.70.1: + version "0.70.2" + resolved "https://registry.yarnpkg.com/metro-config/-/metro-config-0.70.2.tgz#4c74fe829b63cdff2e5ae9add942f1a55341be16" + integrity sha512-9jBrHwGrvVjFTsCGSjK+PG/xy9T6TvVpZhPgEeBGKYWUjYFYuJ/AhnF4QxhUGYB5Uo95u7ViHcuqcv2X3qo2+A== dependencies: cosmiconfig "^5.0.5" jest-validate "^26.5.2" - metro "0.67.0" - metro-cache "0.67.0" - metro-core "0.67.0" - metro-runtime "0.67.0" + metro "0.70.2" + metro-cache "0.70.2" + metro-core "0.70.2" + metro-runtime "0.70.2" -metro-core@0.67.0, metro-core@^0.67.0: - version "0.67.0" - resolved "https://registry.yarnpkg.com/metro-core/-/metro-core-0.67.0.tgz#75066e11b4df220992abf9cd6200279dd87876c8" - integrity sha512-TOa/ShE1bUq83fGNfV6rFwyfZ288M8ydmWN3g9C2OW8emOHLhJslYD/SIU4DhDkP/99yaJluIALdZ2g0+pCrvQ== +metro-core@0.70.2, metro-core@^0.70.1: + version "0.70.2" + resolved "https://registry.yarnpkg.com/metro-core/-/metro-core-0.70.2.tgz#e76ce4881112b5bc68f04fe3ef5ef289b8b62f10" + integrity sha512-QBWed81KJhOT1vF1+scaqCdlUE5YxUIzYT7vVP9nt0KpYx46TD6n0PkxvV8cHu+LbIcFIxThhR1UoeTCUBnxdQ== dependencies: jest-haste-map "^27.3.1" lodash.throttle "^4.1.1" - metro-resolver "0.67.0" + metro-resolver "0.70.2" -metro-hermes-compiler@0.67.0: - version "0.67.0" - resolved "https://registry.yarnpkg.com/metro-hermes-compiler/-/metro-hermes-compiler-0.67.0.tgz#9c1340f1882fbf535145868d0d28211ca15b0477" - integrity sha512-X5Pr1jC8/kO6d1EBDJ6yhtuc5euHX89UDNv8qdPJHAET03xfFnlojRPwOw6il2udAH20WLBv+F5M9VY+58zspQ== +metro-hermes-compiler@0.70.2: + version "0.70.2" + resolved "https://registry.yarnpkg.com/metro-hermes-compiler/-/metro-hermes-compiler-0.70.2.tgz#2aa014f39e3911574a1b796d50b10e308976e9b3" + integrity sha512-/d1yGpkktU1GlBB3T+X0FoSl4bwdilbbl59e97bPHxJA1xGkjZaOtZWcPHG0v1RNrPJ3EpOBw5jfnFK6DNZ4iQ== -metro-inspector-proxy@0.67.0: - version "0.67.0" - resolved "https://registry.yarnpkg.com/metro-inspector-proxy/-/metro-inspector-proxy-0.67.0.tgz#22b360a837b07e9e2bc87a71af6154dd8fcc02a5" - integrity sha512-5Ubjk94qpNaU3OT2IZa4/dec09bauic1hzWms4czorBzDenkp4kYXG9/aWTmgQLtCk92H3Q8jKl1PQRxUSkrOQ== +metro-inspector-proxy@0.70.2: + version "0.70.2" + resolved "https://registry.yarnpkg.com/metro-inspector-proxy/-/metro-inspector-proxy-0.70.2.tgz#a9cc91f3e29435716fab83fe9fd7ff125291a833" + integrity sha512-tIM4BVDR6Df3hScyjWpI5EQ4NNDmlheZZNsg+NSm8EnI3E6b4r3ebYePK62b5otOUNlafgFj8Z6VeMiFfALbQw== dependencies: connect "^3.6.5" debug "^2.2.0" ws "^7.5.1" yargs "^15.3.1" -metro-minify-uglify@0.67.0: - version "0.67.0" - resolved "https://registry.yarnpkg.com/metro-minify-uglify/-/metro-minify-uglify-0.67.0.tgz#28a77dbd78d9e558dba8c2f31c2b9c6f939df966" - integrity sha512-4CmM5b3MTAmQ/yFEfsHOhD2SuBObB2YF6PKzXZc4agUsQVVtkrrNElaiWa8w26vrTzA9emwcyurxMf4Nl3lYPQ== +metro-minify-uglify@0.70.2: + version "0.70.2" + resolved "https://registry.yarnpkg.com/metro-minify-uglify/-/metro-minify-uglify-0.70.2.tgz#0dbf8814fd79fef081d9e34cb561ac1f2a8dddb8" + integrity sha512-wsoQx6b6gdh46OVVEqwuPOKS/bMea02K+ROd8F8elHqaC85OuMazCYB/A2kLLYAfd73fwsaf2AXHFL+eyyQ97Q== dependencies: uglify-es "^3.1.9" -metro-react-native-babel-preset@0.67.0: - version "0.67.0" - resolved "https://registry.yarnpkg.com/metro-react-native-babel-preset/-/metro-react-native-babel-preset-0.67.0.tgz#53aec093f53a09b56236a9bb534d76658efcbec7" - integrity sha512-tgTG4j0SKwLHbLRELMmgkgkjV1biYkWlGGKOmM484/fJC6bpDikdaFhfjsyE+W+qt7I5szbCPCickMTNQ+zwig== +metro-react-native-babel-preset@0.70.2: + version "0.70.2" + resolved "https://registry.yarnpkg.com/metro-react-native-babel-preset/-/metro-react-native-babel-preset-0.70.2.tgz#462e7370b4d36c4c5f6335c0fa06bebec1007543" + integrity sha512-8NNrzeD6mzivWn/G3Vu8XZ1pAMof3BkcJeBmcySkB/E3XdbLrT4FIy/cUmL3gNmSp+Fz7xc62WKP5sPF1KL3QQ== dependencies: "@babel/core" "^7.14.0" + "@babel/plugin-proposal-async-generator-functions" "^7.0.0" "@babel/plugin-proposal-class-properties" "^7.0.0" "@babel/plugin-proposal-export-default-from" "^7.0.0" "@babel/plugin-proposal-nullish-coalescing-operator" "^7.0.0" @@ -5026,17 +5016,15 @@ metro-react-native-babel-preset@0.67.0: "@babel/plugin-transform-destructuring" "^7.0.0" "@babel/plugin-transform-exponentiation-operator" "^7.0.0" "@babel/plugin-transform-flow-strip-types" "^7.0.0" - "@babel/plugin-transform-for-of" "^7.0.0" "@babel/plugin-transform-function-name" "^7.0.0" "@babel/plugin-transform-literals" "^7.0.0" "@babel/plugin-transform-modules-commonjs" "^7.0.0" - "@babel/plugin-transform-object-assign" "^7.0.0" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.0.0" "@babel/plugin-transform-parameters" "^7.0.0" "@babel/plugin-transform-react-display-name" "^7.0.0" "@babel/plugin-transform-react-jsx" "^7.0.0" "@babel/plugin-transform-react-jsx-self" "^7.0.0" "@babel/plugin-transform-react-jsx-source" "^7.0.0" - "@babel/plugin-transform-regenerator" "^7.0.0" "@babel/plugin-transform-runtime" "^7.0.0" "@babel/plugin-transform-shorthand-properties" "^7.0.0" "@babel/plugin-transform-spread" "^7.0.0" @@ -5047,10 +5035,10 @@ metro-react-native-babel-preset@0.67.0: "@babel/template" "^7.0.0" react-refresh "^0.4.0" -metro-react-native-babel-preset@0.70.1: - version "0.70.1" - resolved "https://registry.yarnpkg.com/metro-react-native-babel-preset/-/metro-react-native-babel-preset-0.70.1.tgz#d71c3630645014c7095fe94655f4c003a6a457ff" - integrity sha512-E7jCbHyb+HTA00AqO/XxURCNFc68KU9nJo7zMDGt4EjwcUP80RaBzK1O4/GborQzkWM4wjIuQMnYX6xWYuV5ag== +metro-react-native-babel-preset@0.70.3: + version "0.70.3" + resolved "https://registry.yarnpkg.com/metro-react-native-babel-preset/-/metro-react-native-babel-preset-0.70.3.tgz#1c77ec4544ecd5fb6c803e70b21284d7483e4842" + integrity sha512-4Nxc1zEiHEu+GTdEMEsHnRgfaBkg8f/Td3+FcQ8NTSvs+xL3LBrQy6N07idWSQZHIdGFf+tTHvRfSIWLD8u8Tg== dependencies: "@babel/core" "^7.14.0" "@babel/plugin-proposal-async-generator-functions" "^7.0.0" @@ -5092,105 +5080,107 @@ metro-react-native-babel-preset@0.70.1: "@babel/template" "^7.0.0" react-refresh "^0.4.0" -metro-react-native-babel-transformer@0.70.1: - version "0.70.1" - resolved "https://registry.yarnpkg.com/metro-react-native-babel-transformer/-/metro-react-native-babel-transformer-0.70.1.tgz#db41af492d3857128f8297334d2752c2efa61827" - integrity sha512-0484t7uASQX9JAIhvTfKiheaTM3hjPvPwFMP+8JpTGd/GNY0r0dPxC0XSFah5fJBA7WM6UTuaqChik3wU0JsCA== +metro-react-native-babel-transformer@0.70.3: + version "0.70.3" + resolved "https://registry.yarnpkg.com/metro-react-native-babel-transformer/-/metro-react-native-babel-transformer-0.70.3.tgz#195597c32488f820aa9e441bbca7c04fe7de7a2d" + integrity sha512-WKBU6S/G50j9cfmFM4k4oRYprd8u3qjleD4so1E2zbTNILg+gYla7ZFGCAvi2G0ZcqS2XuGCR375c2hF6VVvwg== dependencies: "@babel/core" "^7.14.0" babel-preset-fbjs "^3.4.0" hermes-parser "0.6.0" - metro-babel-transformer "0.70.1" - metro-react-native-babel-preset "0.70.1" - metro-source-map "0.70.1" + metro-babel-transformer "0.70.3" + metro-react-native-babel-preset "0.70.3" + metro-source-map "0.70.3" nullthrows "^1.1.1" -metro-react-native-babel-transformer@^0.67.0: - version "0.67.0" - resolved "https://registry.yarnpkg.com/metro-react-native-babel-transformer/-/metro-react-native-babel-transformer-0.67.0.tgz#756d32eb3c05cab3d72fcb1700f8fd09322bb07f" - integrity sha512-P0JT09n7T01epUtgL9mH6BPat3xn4JjBakl4lWHdL61cvEGcrxuIom1eoFFKkgU/K5AVLU4aCAttHS7nSFCcEQ== +metro-react-native-babel-transformer@^0.70.1: + version "0.70.2" + resolved "https://registry.yarnpkg.com/metro-react-native-babel-transformer/-/metro-react-native-babel-transformer-0.70.2.tgz#f4ec018e1d468e9706ef0df4339de722697d7ec0" + integrity sha512-Jx3bBfYl4Wi7M/Qdmp+facTD+FV4K+TYb6Xd4Up05dKC57l1vnjLipIT4WgXoWEUJ4ynSt6JmmHLGmRc674Pyw== dependencies: "@babel/core" "^7.14.0" babel-preset-fbjs "^3.4.0" - hermes-parser "0.5.0" - metro-babel-transformer "0.67.0" - metro-react-native-babel-preset "0.67.0" - metro-source-map "0.67.0" + hermes-parser "0.6.0" + metro-babel-transformer "0.70.2" + metro-react-native-babel-preset "0.70.2" + metro-source-map "0.70.2" nullthrows "^1.1.1" -metro-resolver@0.67.0, metro-resolver@^0.67.0: - version "0.67.0" - resolved "https://registry.yarnpkg.com/metro-resolver/-/metro-resolver-0.67.0.tgz#8143c716f77e468d1d42eca805243706eb349959" - integrity sha512-d2KS/zAyOA/z/q4/ff41rAp+1txF4H6qItwpsls/RHStV2j6PqgRHUzq/3ga+VIeoUJntYJ8nGW3+3qSrhFlig== +metro-resolver@0.70.2, metro-resolver@^0.70.1: + version "0.70.2" + resolved "https://registry.yarnpkg.com/metro-resolver/-/metro-resolver-0.70.2.tgz#fb7f70634e3832ee2dde37e28df8901a8ae0fec2" + integrity sha512-fYuEOTSB+ri0y2kOLL8PuqblD1/3h3tZ8G02wNFeB5oCbEqZ1jhSAG/f6hj/qy7xUA18oyG5qJqiHtiRDFO6yg== dependencies: absolute-path "^0.0.0" -metro-runtime@0.67.0, metro-runtime@^0.67.0: - version "0.67.0" - resolved "https://registry.yarnpkg.com/metro-runtime/-/metro-runtime-0.67.0.tgz#a8888dfd06bcebbac3c99dcac7cd622510dd8ee0" - integrity sha512-IFtSL0JUt1xK3t9IoLflTDft82bjieSzdIJWLzrRzBMlesz8ox5bVmnpQbVQEwfYUpEOxbM3VOZauVbdCmXA7g== +metro-runtime@0.70.2, metro-runtime@^0.70.1: + version "0.70.2" + resolved "https://registry.yarnpkg.com/metro-runtime/-/metro-runtime-0.70.2.tgz#dfdd086e4a1af2549debb0fa2e676ce99e62f5b7" + integrity sha512-36k6Ye8IBKjL0ZTquVLKLbZWYsc7LQ3fWggxYPekgA5gAY0Bfvt2tbImdH1QCBo7hGyqiyf/I+ejgcxPDg/fOQ== -metro-runtime@0.70.1: - version "0.70.1" - resolved "https://registry.yarnpkg.com/metro-runtime/-/metro-runtime-0.70.1.tgz#3f592a76f46b4441dc724e7e0523b531a2ac9a3e" - integrity sha512-E3aY2rGckJDgtpr2Uvlkhoadl5AF5q0OUkxgPilztj5uzK0PAqQtNn1U3kluZ4obfQGv7nBCp+CBadpsbGuO3g== +metro-runtime@0.70.3: + version "0.70.3" + resolved "https://registry.yarnpkg.com/metro-runtime/-/metro-runtime-0.70.3.tgz#09231b9d05dcbdfb5a13df0a45307273e6fe1168" + integrity sha512-22xU7UdXZacniTIDZgN2EYtmfau2pPyh97Dcs+cWrLcJYgfMKjWBtesnDcUAQy3PHekDYvBdJZkoQUeskYTM+w== + dependencies: + "@babel/runtime" "^7.0.0" -metro-source-map@0.67.0: - version "0.67.0" - resolved "https://registry.yarnpkg.com/metro-source-map/-/metro-source-map-0.67.0.tgz#e28db7253b9ca688e60d5710ebdccba60b45b2df" - integrity sha512-yxypInsRo3SfS00IgTuL6a2W2tfwLY//vA2E+GeqGBF5zTbJZAhwNGIEl8S87XXZhwzJcxf5/8LjJC1YDzabww== +metro-source-map@0.70.2: + version "0.70.2" + resolved "https://registry.yarnpkg.com/metro-source-map/-/metro-source-map-0.70.2.tgz#14c3a014dcd5bb73c78ea897eb789cc34011c97b" + integrity sha512-FCukgawH7jPtI7Vrisdhe7BFjAAmjgt0FNWLTHqGZ9t8UOSGNntImy6f1g/NLUkNeCjqbhkHenqHGngW/J1V6w== dependencies: "@babel/traverse" "^7.14.0" "@babel/types" "^7.0.0" invariant "^2.2.4" - metro-symbolicate "0.67.0" + metro-symbolicate "0.70.2" nullthrows "^1.1.1" - ob1 "0.67.0" + ob1 "0.70.2" source-map "^0.5.6" vlq "^1.0.0" -metro-source-map@0.70.1: - version "0.70.1" - resolved "https://registry.yarnpkg.com/metro-source-map/-/metro-source-map-0.70.1.tgz#f72a21065ace07e19a3696314360d0dc65a00528" - integrity sha512-3VO6yLU0OKa7GM/FCyStT9/n+lDRIuomXbZdoE82NO2RTJfptKg1UphLcJ/wbs5GqBRT8zXyd3eRTwW7AAfeZg== +metro-source-map@0.70.3: + version "0.70.3" + resolved "https://registry.yarnpkg.com/metro-source-map/-/metro-source-map-0.70.3.tgz#f5976108c18d4661eaa4d188c96713e5d67a903b" + integrity sha512-zsYtZGrwRbbGEFHtmMqqeCH9K9aTGNVPsurMOWCUeQA3VGyVGXPGtLMC+CdAM9jLpUyg6jw2xh0esxi+tYH7Uw== dependencies: "@babel/traverse" "^7.14.0" "@babel/types" "^7.0.0" invariant "^2.2.4" - metro-symbolicate "0.70.1" + metro-symbolicate "0.70.3" nullthrows "^1.1.1" - ob1 "0.70.1" + ob1 "0.70.3" source-map "^0.5.6" vlq "^1.0.0" -metro-symbolicate@0.67.0: - version "0.67.0" - resolved "https://registry.yarnpkg.com/metro-symbolicate/-/metro-symbolicate-0.67.0.tgz#16729d05663d28176895244b3d932a898fca2b45" - integrity sha512-ZqVVcfa0xSz40eFzA5P8pCF3V6Tna9RU1prFzAJTa3j9dCGqwh0HTXC8AIkMtgX7hNdZrCJI1YipzUBlwkT0/A== +metro-symbolicate@0.70.2: + version "0.70.2" + resolved "https://registry.yarnpkg.com/metro-symbolicate/-/metro-symbolicate-0.70.2.tgz#66a077b0dead952a75ca22ed5b7d77c3cff020f0" + integrity sha512-QcFUGChvCeMyHkKRT5OwioiQ3hrBdqndUjhFCjm4Ou0PDlYmoMs2Qb/H390AQyQsCBIqkrc1qavTmTWQdUGIYA== dependencies: invariant "^2.2.4" - metro-source-map "0.67.0" + metro-source-map "0.70.2" nullthrows "^1.1.1" source-map "^0.5.6" through2 "^2.0.1" vlq "^1.0.0" -metro-symbolicate@0.70.1: - version "0.70.1" - resolved "https://registry.yarnpkg.com/metro-symbolicate/-/metro-symbolicate-0.70.1.tgz#fe2098447662dd70396a33482c0961c5ab020ecb" - integrity sha512-PQDlvjLDGv9r1wa8Ykmykr0ob6bkBdcOE3oxjAGw2umi7zjINZ8mMVfmHIRDK0vEh7DNHWp/aYTX9o4BN3Fmbg== +metro-symbolicate@0.70.3: + version "0.70.3" + resolved "https://registry.yarnpkg.com/metro-symbolicate/-/metro-symbolicate-0.70.3.tgz#b039e5629c4ed0c999ea0496d580e1c98260f5cb" + integrity sha512-JTYkF1dpeDUssQ84juE1ycnhHki2ylJBBdJE1JHtfu5oC+z1ElDbBdPHq90Uvt8HbRov/ZAnxvv7Zy6asS+WCA== dependencies: invariant "^2.2.4" - metro-source-map "0.70.1" + metro-source-map "0.70.3" nullthrows "^1.1.1" source-map "^0.5.6" through2 "^2.0.1" vlq "^1.0.0" -metro-transform-plugins@0.67.0: - version "0.67.0" - resolved "https://registry.yarnpkg.com/metro-transform-plugins/-/metro-transform-plugins-0.67.0.tgz#6122aa4e5e5f9a767cebcc5af6fd1695666683ce" - integrity sha512-DQFoSDIJdTMPDTUlKaCNJjEXiHGwFNneAF9wDSJ3luO5gigM7t7MuSaPzF4hpjmfmcfPnRhP6AEn9jcza2Sh8Q== +metro-transform-plugins@0.70.2: + version "0.70.2" + resolved "https://registry.yarnpkg.com/metro-transform-plugins/-/metro-transform-plugins-0.70.2.tgz#1cc235d2a18a2374dfedb082f55b2305a90ad85a" + integrity sha512-lJturLSXt+JER8Nmoo2h77LM66iN4ON4L6eIJFq7oAo4lx/XcVcPANZlpE1QaRBAvhKALPIWTQ8+7UigApwdMw== dependencies: "@babel/core" "^7.14.0" "@babel/generator" "^7.14.0" @@ -5198,29 +5188,29 @@ metro-transform-plugins@0.67.0: "@babel/traverse" "^7.14.0" nullthrows "^1.1.1" -metro-transform-worker@0.67.0: - version "0.67.0" - resolved "https://registry.yarnpkg.com/metro-transform-worker/-/metro-transform-worker-0.67.0.tgz#5689553c25b0657aadefdf4ea2cd8dd06e18882a" - integrity sha512-29n+JdTb80ROiv/wDiBVlY/xRAF/nrjhp/Udv/XJl1DZb+x7JEiPxpbpthPhwwl+AYxVrostGB0W06WJ61hfiw== +metro-transform-worker@0.70.2: + version "0.70.2" + resolved "https://registry.yarnpkg.com/metro-transform-worker/-/metro-transform-worker-0.70.2.tgz#5c275abe9cb51fa7551fa561b9bfa51ed29df5f5" + integrity sha512-nF8Erl0UytKDK+HmGADcP3OntyNsDZr63iKieXME4DW1JSDuIeo0tTcz0TH2pTpY87aZU9iXeayJ581YHU9/yA== dependencies: "@babel/core" "^7.14.0" "@babel/generator" "^7.14.0" "@babel/parser" "^7.14.0" "@babel/types" "^7.0.0" babel-preset-fbjs "^3.4.0" - metro "0.67.0" - metro-babel-transformer "0.67.0" - metro-cache "0.67.0" - metro-cache-key "0.67.0" - metro-hermes-compiler "0.67.0" - metro-source-map "0.67.0" - metro-transform-plugins "0.67.0" + metro "0.70.2" + metro-babel-transformer "0.70.2" + metro-cache "0.70.2" + metro-cache-key "0.70.2" + metro-hermes-compiler "0.70.2" + metro-source-map "0.70.2" + metro-transform-plugins "0.70.2" nullthrows "^1.1.1" -metro@0.67.0, metro@^0.67.0: - version "0.67.0" - resolved "https://registry.yarnpkg.com/metro/-/metro-0.67.0.tgz#8007a041d22de1cdb05184431c67eb7989eef6e0" - integrity sha512-DwuBGAFcAivoac/swz8Lp7Y5Bcge1tzT7T6K0nf1ubqJP8YzBUtyR4pkjEYVUzVu/NZf7O54kHSPVu1ibYzOBQ== +metro@0.70.2, metro@^0.70.1: + version "0.70.2" + resolved "https://registry.yarnpkg.com/metro/-/metro-0.70.2.tgz#b1903e81c269caf92ad4b6f877d3d89b0aca6f59" + integrity sha512-tDIjicttCCGiBrUgHfKB0XH8cg3DynCPQQqOlf1iGzonvn9GGw14VYrMeNUOq1JF44oXgQUJGLgz5AgFOCB2yg== dependencies: "@babel/code-frame" "^7.0.0" "@babel/core" "^7.14.0" @@ -5231,7 +5221,7 @@ metro@0.67.0, metro@^0.67.0: "@babel/types" "^7.0.0" absolute-path "^0.0.0" accepts "^1.3.7" - async "^2.4.0" + async "^3.2.2" chalk "^4.0.0" ci-info "^2.0.0" connect "^3.6.5" @@ -5239,30 +5229,29 @@ metro@0.67.0, metro@^0.67.0: denodeify "^1.2.1" error-stack-parser "^2.0.6" fs-extra "^1.0.0" - graceful-fs "^4.1.3" - hermes-parser "0.5.0" + graceful-fs "^4.2.4" + hermes-parser "0.6.0" image-size "^0.6.0" invariant "^2.2.4" jest-haste-map "^27.3.1" - jest-worker "^26.0.0" + jest-worker "^27.2.0" lodash.throttle "^4.1.1" - metro-babel-transformer "0.67.0" - metro-cache "0.67.0" - metro-cache-key "0.67.0" - metro-config "0.67.0" - metro-core "0.67.0" - metro-hermes-compiler "0.67.0" - metro-inspector-proxy "0.67.0" - metro-minify-uglify "0.67.0" - metro-react-native-babel-preset "0.67.0" - metro-resolver "0.67.0" - metro-runtime "0.67.0" - metro-source-map "0.67.0" - metro-symbolicate "0.67.0" - metro-transform-plugins "0.67.0" - metro-transform-worker "0.67.0" + metro-babel-transformer "0.70.2" + metro-cache "0.70.2" + metro-cache-key "0.70.2" + metro-config "0.70.2" + metro-core "0.70.2" + metro-hermes-compiler "0.70.2" + metro-inspector-proxy "0.70.2" + metro-minify-uglify "0.70.2" + metro-react-native-babel-preset "0.70.2" + metro-resolver "0.70.2" + metro-runtime "0.70.2" + metro-source-map "0.70.2" + metro-symbolicate "0.70.2" + metro-transform-plugins "0.70.2" + metro-transform-worker "0.70.2" mime-types "^2.1.27" - mkdirp "^0.5.1" node-fetch "^2.2.0" nullthrows "^1.1.1" rimraf "^2.5.4" @@ -5512,15 +5501,15 @@ oauth-sign@~0.9.0: resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== -ob1@0.67.0: - version "0.67.0" - resolved "https://registry.yarnpkg.com/ob1/-/ob1-0.67.0.tgz#91f104c90641b1af8c364fc82a4b2c7d0801072d" - integrity sha512-YvZtX8HKYackQ5PwdFIuuNFVsMChRPHvnARRRT0Vk59xsBvL5t9U1Ock3M1sYrKj+Gp73+0q9xcHLAxI+xLi5g== +ob1@0.70.2: + version "0.70.2" + resolved "https://registry.yarnpkg.com/ob1/-/ob1-0.70.2.tgz#d4bcdeddd338ebaeab27ac7ef728770f4b7b85cd" + integrity sha512-0gZ+El3a0dI3jq8yic2stXJ3bHWWCvEQ7EZNn8n4vj4+F4nDkjtohCqYiuHADEDrxtLCPiUrZfj7hj050v5g+g== -ob1@0.70.1: - version "0.70.1" - resolved "https://registry.yarnpkg.com/ob1/-/ob1-0.70.1.tgz#852d8907b45e86841c81b422115312642f69883f" - integrity sha512-YRqBTXhelJAke5+avvEHki7qSrjTW/FgTrOnTJMpytXnnaaJZ6EnjSFOJQwSbMktE18nVaCAvI6kbOv2K6ZqFQ== +ob1@0.70.3: + version "0.70.3" + resolved "https://registry.yarnpkg.com/ob1/-/ob1-0.70.3.tgz#f48cd5a5abf54b0c423b1b06b6d4ff4d049816cb" + integrity sha512-Vy9GGhuXgDRY01QA6kdhToPd8AkLdLpX9GjH5kpqluVqTu70mgOm7tpGoJDZGaNbr9nJlJgnipqHJQRPORixIQ== object-assign@^4.1.1: version "4.1.1" From 9d3d5e13f0865548f210c1c16a9009155248ed97 Mon Sep 17 00:00:00 2001 From: Pieter De Baets Date: Fri, 6 May 2022 04:31:37 -0700 Subject: [PATCH 07/17] Switch buck schema codegen to yarn_workspace_binary (#33773) Summary: Pull Request resolved: https://github.com/facebook/react-native/pull/33773 I noticed this was a very slow part of my build because each instance of the binary would run its own yarn install. Instead use the yarn_workspace approach to share a single yarn setup. Changelog: [Internal] Reviewed By: d16r Differential Revision: D36164350 fbshipit-source-id: 5290587010fe6021b758bda98bf01995fdf14acd --- packages/react-native-codegen/DEFS.bzl | 13 ++++------ .../src/cli/combine/combine_js_to_schema.sh | 26 ------------------- tools/build_defs/third_party/yarn_defs.bzl | 18 +++++++++++++ 3 files changed, 23 insertions(+), 34 deletions(-) delete mode 100755 packages/react-native-codegen/src/cli/combine/combine_js_to_schema.sh diff --git a/packages/react-native-codegen/DEFS.bzl b/packages/react-native-codegen/DEFS.bzl index 6f36f86d87a4c3..6ef982c20edb74 100644 --- a/packages/react-native-codegen/DEFS.bzl +++ b/packages/react-native-codegen/DEFS.bzl @@ -28,24 +28,21 @@ load( "rn_apple_library", "rn_xplat_cxx_library", ) +load("//tools/build_defs/third_party:yarn_defs.bzl", "yarn_workspace_binary") # Call this in the react-native-codegen/BUCK file def rn_codegen_cli(): if not IS_OSS_BUILD: # FB Internal Setup - fb_native.sh_binary( + yarn_workspace_binary( name = "write_to_json", - main = "src/cli/combine/combine_js_to_schema.sh", - resources = [ - "src/cli/combine/combine-js-to-schema.js", - "src/cli/combine/combine_js_to_schema.sh", + main = "src/cli/combine/combine-js-to-schema-cli.js", + root = "//xplat/js:workspace", + deps = [ ":yarn-workspace", - "//xplat/js:setup_env", - "//xplat/js:setup_env_vars", ], visibility = ["PUBLIC"], ) - fb_native.sh_binary( name = "generate_all_from_schema", main = "src/cli/generators/generate-all.sh", diff --git a/packages/react-native-codegen/src/cli/combine/combine_js_to_schema.sh b/packages/react-native-codegen/src/cli/combine/combine_js_to_schema.sh deleted file mode 100755 index 12ecedc779c020..00000000000000 --- a/packages/react-native-codegen/src/cli/combine/combine_js_to_schema.sh +++ /dev/null @@ -1,26 +0,0 @@ -#!/bin/bash -# Copyright (c) Meta Platforms, Inc. and affiliates. -# -# This source code is licensed under the MIT license found in the -# LICENSE file in the root directory of this source tree. - -set -e -set -u - -THIS_DIR=$(cd -P "$(dirname "$(realpath "${BASH_SOURCE[0]}" || echo "${BASH_SOURCE[0]}")")" && pwd) - -SETUP_ENV_VARS_PATH="$BUCK_PROJECT_ROOT/env-utils/setup_env_vars.sh" - -# Somehow this path this doesn't work in BUCK1, so falling back to the exisiting path that we use in BUCK1. -if [ ! -f "${SETUP_ENV_VARS_PATH}" ]; then - SETUP_ENV_VARS_PATH="$BUCK_PROJECT_ROOT/xplat/js/env-utils/setup_env_vars.sh" -fi - -# shellcheck source=xplat/js/env-utils/setup_env_vars.sh -source "${SETUP_ENV_VARS_PATH}" - -pushd "$JS_DIR" >/dev/null - "$INSTALL_NODE_MODULES" -popd >/dev/null - -exec "$FLOW_NODE_BINARY" "$THIS_DIR/combine-js-to-schema-cli.js" "$@" diff --git a/tools/build_defs/third_party/yarn_defs.bzl b/tools/build_defs/third_party/yarn_defs.bzl index b68f9e42d12968..27a67102b36550 100644 --- a/tools/build_defs/third_party/yarn_defs.bzl +++ b/tools/build_defs/third_party/yarn_defs.bzl @@ -11,3 +11,21 @@ def yarn_workspace(name, srcs = [], transform_ignore = None, visibility = None): out = "{}.txt".format(name), visibility = visibility, ) + +def yarn_workspace_binary( + name, + main, + deps = None, + root = None, + reuse = None, + args = None, + env = None, + node_args = None, + visibility = None): + # Noop for OSS vs FB build compatibility for now + native.genrule( + name = name, + cmd = "echo {} > $OUT".format(name), + out = "{}.txt".format(name), + visibility = visibility, + ) From 0301cb285b2e85b48a397fe58d565196654d9754 Mon Sep 17 00:00:00 2001 From: Moti Zilberman Date: Fri, 6 May 2022 04:43:09 -0700 Subject: [PATCH 08/17] Stop publishing jest/preprocessor.js to npm Summary: Changelog: [Breaking][General] Remove jest/preprocessor from the react-native package Using `react-native/jest/preprocessor` outside of the React Native repo has been deprecated since D34820086 (https://github.com/facebook/react-native/commit/c1e9aa9a272aed3cba60c4aeff783eeb8bffce68). Here, we make this file private and stop publishing it to npm. The supported method of using Jest in React Native projects is using the [Jest preset](https://jestjs.io/docs/tutorial-react-native) shipped as part of the `react-native` package. NOTE: We could probably make some of the other files under `jest/` private as well, but we should go through a separate deprecation cycle with those, in case they are also being used externally by some projects. I'm leaving that for future followup at the moment. Reviewed By: GijsWeterings Differential Revision: D36132939 fbshipit-source-id: 300ffa6cf16232573cd3a79a34c14daaafd7aa43 --- jest.config.js | 2 +- jest/preprocessor.js | 40 ------------------- .../preprocessor.js} | 0 package.json | 7 ++-- 4 files changed, 5 insertions(+), 44 deletions(-) delete mode 100644 jest/preprocessor.js rename jest/{preprocessor_DO_NOT_USE.js => private/preprocessor.js} (100%) diff --git a/jest.config.js b/jest.config.js index 2561d8e2571f86..512bd1b538ef76 100644 --- a/jest.config.js +++ b/jest.config.js @@ -13,7 +13,7 @@ module.exports = { transform: { '^.+\\.(bmp|gif|jpg|jpeg|mp4|png|psd|svg|webp)$': '/jest/assetFileTransformer.js', - '.*': './jest/preprocessor_DO_NOT_USE.js', + '.*': './jest/private/preprocessor.js', }, setupFiles: ['./jest/setup.js'], timers: 'fake', diff --git a/jest/preprocessor.js b/jest/preprocessor.js deleted file mode 100644 index b63c603a940df9..00000000000000 --- a/jest/preprocessor.js +++ /dev/null @@ -1,40 +0,0 @@ -/** - * Copyright (c) Meta Platforms, Inc. and affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - * - * @format - * @flow - */ - -/* eslint-env node */ - -'use strict'; - -// NOTE: Avoiding using a package like 'chalk' here, for simplicity -const YELLOW = process.stderr.isTTY ? '\u001b[33m' : ''; -const BOLD = process.stderr.isTTY ? '\u001b[1m' : ''; -const RESET = process.stderr.isTTY ? '\u001b[0m' : ''; -const UNDERLINE = process.stderr.isTTY ? '\u001b[4m' : ''; - -console.warn( - '\n' + - YELLOW + - BOLD + - 'react-native/jest/preprocessor.js' + - RESET + - YELLOW + - ' is deprecated and will be removed.\n' + - 'Use "preset": "react-native" in your Jest config instead.\n' + - 'See ' + - UNDERLINE + - 'https://jestjs.io/docs/tutorial-react-native' + - RESET + - YELLOW + - ' for more setup instructions.' + - RESET + - '\n', -); - -module.exports = require('./preprocessor_DO_NOT_USE'); diff --git a/jest/preprocessor_DO_NOT_USE.js b/jest/private/preprocessor.js similarity index 100% rename from jest/preprocessor_DO_NOT_USE.js rename to jest/private/preprocessor.js diff --git a/package.json b/package.json index 1245a7b359cd64..471be965906009 100644 --- a/package.json +++ b/package.json @@ -14,9 +14,6 @@ "outputName": "js-test-results.xml" }, "files": [ - "!template/node_modules", - "!template/package-lock.json", - "!template/yarn.lock", "android", "cli.js", "flow", @@ -25,6 +22,7 @@ "interface.js", "jest-preset.js", "jest", + "!jest/private", "Libraries", "LICENSE", "local-cli", @@ -60,6 +58,9 @@ "sdks/hermes-engine.podspec", "template.config.js", "template", + "!template/node_modules", + "!template/package-lock.json", + "!template/yarn.lock", "third-party-podspecs" ], "scripts": { From ed46ea2058b909a2dd401347d68956324961ec2c Mon Sep 17 00:00:00 2001 From: Rob Hogan Date: Fri, 6 May 2022 07:28:59 -0700 Subject: [PATCH 09/17] Clean up `yarn.lock` Metro dependencies -> 0.70.3 Summary: Updates `yarn.lock` to resolve mixed/mismatched Metro versions between direct dependencies on `0.70.3` and indirect dependencies on `^0.70.1`, so that everything resolves to `0.70.3`. Changelog: [Internal] Reviewed By: jacdebug, cortinico Differential Revision: D36131458 fbshipit-source-id: d1ad72432b664b7191b2431d3c3b95b70f3a81d7 --- yarn.lock | 252 ++++++++++++++++-------------------------------------- 1 file changed, 74 insertions(+), 178 deletions(-) diff --git a/yarn.lock b/yarn.lock index 7361002bc75c2c..81168c1c37a0d4 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4914,16 +4914,6 @@ metro-babel-register@0.70.3: babel-plugin-replace-ts-export-assignment "^0.0.2" escape-string-regexp "^1.0.5" -metro-babel-transformer@0.70.2: - version "0.70.2" - resolved "https://registry.yarnpkg.com/metro-babel-transformer/-/metro-babel-transformer-0.70.2.tgz#70b5d4a821e3e8441a547803ca0e89a15b42f31d" - integrity sha512-va5fn0Y40DzgtJsK2jSTtm+RYRJcxy5JNz1OiJjAuCvIkd3KvWPuFY/76+SKbS+/CZhFJpF4AFj/0Sojsrfc1A== - dependencies: - "@babel/core" "^7.14.0" - hermes-parser "0.6.0" - metro-source-map "0.70.2" - nullthrows "^1.1.1" - metro-babel-transformer@0.70.3: version "0.70.3" resolved "https://registry.yarnpkg.com/metro-babel-transformer/-/metro-babel-transformer-0.70.3.tgz#dca61852be273824a4b641bd1ecafff07ff3ad1f" @@ -4934,107 +4924,62 @@ metro-babel-transformer@0.70.3: metro-source-map "0.70.3" nullthrows "^1.1.1" -metro-cache-key@0.70.2: - version "0.70.2" - resolved "https://registry.yarnpkg.com/metro-cache-key/-/metro-cache-key-0.70.2.tgz#f70afa27c8e9ba25391ad6f5013fb769d7d3acd8" - integrity sha512-xNdV5w04aKuE/2FDAhYaId4tR4N77cB3pKHs0vDXCKDVj5fSH/RMzt5JuNtU1SB7Hu+4d0Z6jOVtUErfDIlk3Q== +metro-cache-key@0.70.3: + version "0.70.3" + resolved "https://registry.yarnpkg.com/metro-cache-key/-/metro-cache-key-0.70.3.tgz#898803db04178a8f440598afba7d82a9cf35abf7" + integrity sha512-0zpw+IcpM3hmGd5sKMdxNv3sbOIUYnMUvx1/yaM6vNRReSPmOLX0bP8fYf3CGgk8NEreZ1OHbVsuw7bdKt40Mw== -metro-cache@0.70.2: - version "0.70.2" - resolved "https://registry.yarnpkg.com/metro-cache/-/metro-cache-0.70.2.tgz#918940f0ceb8200eb9b586c3e50b1a9877a16c27" - integrity sha512-gvyD7XbjmZDE/iZYb+Rqgu0yaNLjp61QqVwD+kIwwj/DxHpQCJFFKrPxXUswDfqFR5vt352erCgZsWxMVNDI0g== +metro-cache@0.70.3: + version "0.70.3" + resolved "https://registry.yarnpkg.com/metro-cache/-/metro-cache-0.70.3.tgz#42cf3cdf8a7b3691f3bef9a86bed38d4c5f6201f" + integrity sha512-iCix/+z812fUqa6KlOxaTkY6LQQDoXIe/VljXkGIvpygSCmYyhjQpfQVZEVVPezFmUBYXNdabdQ6cYx6JX3yMg== dependencies: - metro-core "0.70.2" + metro-core "0.70.3" rimraf "^2.5.4" -metro-config@0.70.2, metro-config@^0.70.1: - version "0.70.2" - resolved "https://registry.yarnpkg.com/metro-config/-/metro-config-0.70.2.tgz#4c74fe829b63cdff2e5ae9add942f1a55341be16" - integrity sha512-9jBrHwGrvVjFTsCGSjK+PG/xy9T6TvVpZhPgEeBGKYWUjYFYuJ/AhnF4QxhUGYB5Uo95u7ViHcuqcv2X3qo2+A== +metro-config@0.70.3, metro-config@^0.70.1: + version "0.70.3" + resolved "https://registry.yarnpkg.com/metro-config/-/metro-config-0.70.3.tgz#fe6f7330f679d5594e5724af7a69d4dbe1bb5bc3" + integrity sha512-SSCDjSTygoCgzoj61DdrBeJzZDRwQxUEfcgc6t6coxWSExXNR4mOngz0q4SAam49Bmjq9J2Jft6qUKnUTPrRgA== dependencies: cosmiconfig "^5.0.5" jest-validate "^26.5.2" - metro "0.70.2" - metro-cache "0.70.2" - metro-core "0.70.2" - metro-runtime "0.70.2" + metro "0.70.3" + metro-cache "0.70.3" + metro-core "0.70.3" + metro-runtime "0.70.3" -metro-core@0.70.2, metro-core@^0.70.1: - version "0.70.2" - resolved "https://registry.yarnpkg.com/metro-core/-/metro-core-0.70.2.tgz#e76ce4881112b5bc68f04fe3ef5ef289b8b62f10" - integrity sha512-QBWed81KJhOT1vF1+scaqCdlUE5YxUIzYT7vVP9nt0KpYx46TD6n0PkxvV8cHu+LbIcFIxThhR1UoeTCUBnxdQ== +metro-core@0.70.3, metro-core@^0.70.1: + version "0.70.3" + resolved "https://registry.yarnpkg.com/metro-core/-/metro-core-0.70.3.tgz#bf4dda15a5185f5a7931de463a1b97ac9ef680a0" + integrity sha512-NzfHB/w5R7yLaOeU1tzPTbBzCRsYSvpKJkLMP0yudszKZzIAZqNdjoEJ9GZ688Wi0ynZxcU0BxukXh4my80ZBw== dependencies: jest-haste-map "^27.3.1" lodash.throttle "^4.1.1" - metro-resolver "0.70.2" + metro-resolver "0.70.3" -metro-hermes-compiler@0.70.2: - version "0.70.2" - resolved "https://registry.yarnpkg.com/metro-hermes-compiler/-/metro-hermes-compiler-0.70.2.tgz#2aa014f39e3911574a1b796d50b10e308976e9b3" - integrity sha512-/d1yGpkktU1GlBB3T+X0FoSl4bwdilbbl59e97bPHxJA1xGkjZaOtZWcPHG0v1RNrPJ3EpOBw5jfnFK6DNZ4iQ== +metro-hermes-compiler@0.70.3: + version "0.70.3" + resolved "https://registry.yarnpkg.com/metro-hermes-compiler/-/metro-hermes-compiler-0.70.3.tgz#ac7ed656fbcf0a59adcd010d3639e4cfdbc76b4f" + integrity sha512-W6WttLi4E72JL/NyteQ84uxYOFMibe0PUr9aBKuJxxfCq6QRnJKOVcNY0NLW0He2tneXGk+8ZsNz8c0flEvYqg== -metro-inspector-proxy@0.70.2: - version "0.70.2" - resolved "https://registry.yarnpkg.com/metro-inspector-proxy/-/metro-inspector-proxy-0.70.2.tgz#a9cc91f3e29435716fab83fe9fd7ff125291a833" - integrity sha512-tIM4BVDR6Df3hScyjWpI5EQ4NNDmlheZZNsg+NSm8EnI3E6b4r3ebYePK62b5otOUNlafgFj8Z6VeMiFfALbQw== +metro-inspector-proxy@0.70.3: + version "0.70.3" + resolved "https://registry.yarnpkg.com/metro-inspector-proxy/-/metro-inspector-proxy-0.70.3.tgz#321c25b2261e76d8c4bcc39e092714adfcb50a14" + integrity sha512-qQoNdPGrmyoJSWYkxSDpTaAI8xyqVdNDVVj9KRm1PG8niSuYmrCCFGLLFsMvkVYwsCWUGHoGBx0UoAzVp14ejw== dependencies: connect "^3.6.5" debug "^2.2.0" ws "^7.5.1" yargs "^15.3.1" -metro-minify-uglify@0.70.2: - version "0.70.2" - resolved "https://registry.yarnpkg.com/metro-minify-uglify/-/metro-minify-uglify-0.70.2.tgz#0dbf8814fd79fef081d9e34cb561ac1f2a8dddb8" - integrity sha512-wsoQx6b6gdh46OVVEqwuPOKS/bMea02K+ROd8F8elHqaC85OuMazCYB/A2kLLYAfd73fwsaf2AXHFL+eyyQ97Q== +metro-minify-uglify@0.70.3: + version "0.70.3" + resolved "https://registry.yarnpkg.com/metro-minify-uglify/-/metro-minify-uglify-0.70.3.tgz#2f28129ca5b8ef958f3e3fcf004c3707c7732e1e" + integrity sha512-oHyjV9WDqOlDE1FPtvs6tIjjeY/oP1PNUPYL1wqyYtqvjN+zzAOrcbsAAL1sv+WARaeiMsWkF2bwtNo+Hghoog== dependencies: uglify-es "^3.1.9" -metro-react-native-babel-preset@0.70.2: - version "0.70.2" - resolved "https://registry.yarnpkg.com/metro-react-native-babel-preset/-/metro-react-native-babel-preset-0.70.2.tgz#462e7370b4d36c4c5f6335c0fa06bebec1007543" - integrity sha512-8NNrzeD6mzivWn/G3Vu8XZ1pAMof3BkcJeBmcySkB/E3XdbLrT4FIy/cUmL3gNmSp+Fz7xc62WKP5sPF1KL3QQ== - dependencies: - "@babel/core" "^7.14.0" - "@babel/plugin-proposal-async-generator-functions" "^7.0.0" - "@babel/plugin-proposal-class-properties" "^7.0.0" - "@babel/plugin-proposal-export-default-from" "^7.0.0" - "@babel/plugin-proposal-nullish-coalescing-operator" "^7.0.0" - "@babel/plugin-proposal-object-rest-spread" "^7.0.0" - "@babel/plugin-proposal-optional-catch-binding" "^7.0.0" - "@babel/plugin-proposal-optional-chaining" "^7.0.0" - "@babel/plugin-syntax-dynamic-import" "^7.0.0" - "@babel/plugin-syntax-export-default-from" "^7.0.0" - "@babel/plugin-syntax-flow" "^7.2.0" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.0.0" - "@babel/plugin-syntax-optional-chaining" "^7.0.0" - "@babel/plugin-transform-arrow-functions" "^7.0.0" - "@babel/plugin-transform-async-to-generator" "^7.0.0" - "@babel/plugin-transform-block-scoping" "^7.0.0" - "@babel/plugin-transform-classes" "^7.0.0" - "@babel/plugin-transform-computed-properties" "^7.0.0" - "@babel/plugin-transform-destructuring" "^7.0.0" - "@babel/plugin-transform-exponentiation-operator" "^7.0.0" - "@babel/plugin-transform-flow-strip-types" "^7.0.0" - "@babel/plugin-transform-function-name" "^7.0.0" - "@babel/plugin-transform-literals" "^7.0.0" - "@babel/plugin-transform-modules-commonjs" "^7.0.0" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.0.0" - "@babel/plugin-transform-parameters" "^7.0.0" - "@babel/plugin-transform-react-display-name" "^7.0.0" - "@babel/plugin-transform-react-jsx" "^7.0.0" - "@babel/plugin-transform-react-jsx-self" "^7.0.0" - "@babel/plugin-transform-react-jsx-source" "^7.0.0" - "@babel/plugin-transform-runtime" "^7.0.0" - "@babel/plugin-transform-shorthand-properties" "^7.0.0" - "@babel/plugin-transform-spread" "^7.0.0" - "@babel/plugin-transform-sticky-regex" "^7.0.0" - "@babel/plugin-transform-template-literals" "^7.0.0" - "@babel/plugin-transform-typescript" "^7.5.0" - "@babel/plugin-transform-unicode-regex" "^7.0.0" - "@babel/template" "^7.0.0" - react-refresh "^0.4.0" - metro-react-native-babel-preset@0.70.3: version "0.70.3" resolved "https://registry.yarnpkg.com/metro-react-native-babel-preset/-/metro-react-native-babel-preset-0.70.3.tgz#1c77ec4544ecd5fb6c803e70b21284d7483e4842" @@ -5080,7 +5025,7 @@ metro-react-native-babel-preset@0.70.3: "@babel/template" "^7.0.0" react-refresh "^0.4.0" -metro-react-native-babel-transformer@0.70.3: +metro-react-native-babel-transformer@0.70.3, metro-react-native-babel-transformer@^0.70.1: version "0.70.3" resolved "https://registry.yarnpkg.com/metro-react-native-babel-transformer/-/metro-react-native-babel-transformer-0.70.3.tgz#195597c32488f820aa9e441bbca7c04fe7de7a2d" integrity sha512-WKBU6S/G50j9cfmFM4k4oRYprd8u3qjleD4so1E2zbTNILg+gYla7ZFGCAvi2G0ZcqS2XuGCR375c2hF6VVvwg== @@ -5093,52 +5038,20 @@ metro-react-native-babel-transformer@0.70.3: metro-source-map "0.70.3" nullthrows "^1.1.1" -metro-react-native-babel-transformer@^0.70.1: - version "0.70.2" - resolved "https://registry.yarnpkg.com/metro-react-native-babel-transformer/-/metro-react-native-babel-transformer-0.70.2.tgz#f4ec018e1d468e9706ef0df4339de722697d7ec0" - integrity sha512-Jx3bBfYl4Wi7M/Qdmp+facTD+FV4K+TYb6Xd4Up05dKC57l1vnjLipIT4WgXoWEUJ4ynSt6JmmHLGmRc674Pyw== - dependencies: - "@babel/core" "^7.14.0" - babel-preset-fbjs "^3.4.0" - hermes-parser "0.6.0" - metro-babel-transformer "0.70.2" - metro-react-native-babel-preset "0.70.2" - metro-source-map "0.70.2" - nullthrows "^1.1.1" - -metro-resolver@0.70.2, metro-resolver@^0.70.1: - version "0.70.2" - resolved "https://registry.yarnpkg.com/metro-resolver/-/metro-resolver-0.70.2.tgz#fb7f70634e3832ee2dde37e28df8901a8ae0fec2" - integrity sha512-fYuEOTSB+ri0y2kOLL8PuqblD1/3h3tZ8G02wNFeB5oCbEqZ1jhSAG/f6hj/qy7xUA18oyG5qJqiHtiRDFO6yg== +metro-resolver@0.70.3, metro-resolver@^0.70.1: + version "0.70.3" + resolved "https://registry.yarnpkg.com/metro-resolver/-/metro-resolver-0.70.3.tgz#c64fdd6d0a88fa62f3f99f87e539b5f603bd47bf" + integrity sha512-5Pc5S/Gs4RlLbziuIWtvtFd9GRoILlaRC8RZDVq5JZWcWHywKy/PjNmOBNhpyvtRlzpJfy/ssIfLhu8zINt1Mw== dependencies: absolute-path "^0.0.0" -metro-runtime@0.70.2, metro-runtime@^0.70.1: - version "0.70.2" - resolved "https://registry.yarnpkg.com/metro-runtime/-/metro-runtime-0.70.2.tgz#dfdd086e4a1af2549debb0fa2e676ce99e62f5b7" - integrity sha512-36k6Ye8IBKjL0ZTquVLKLbZWYsc7LQ3fWggxYPekgA5gAY0Bfvt2tbImdH1QCBo7hGyqiyf/I+ejgcxPDg/fOQ== - -metro-runtime@0.70.3: +metro-runtime@0.70.3, metro-runtime@^0.70.1: version "0.70.3" resolved "https://registry.yarnpkg.com/metro-runtime/-/metro-runtime-0.70.3.tgz#09231b9d05dcbdfb5a13df0a45307273e6fe1168" integrity sha512-22xU7UdXZacniTIDZgN2EYtmfau2pPyh97Dcs+cWrLcJYgfMKjWBtesnDcUAQy3PHekDYvBdJZkoQUeskYTM+w== dependencies: "@babel/runtime" "^7.0.0" -metro-source-map@0.70.2: - version "0.70.2" - resolved "https://registry.yarnpkg.com/metro-source-map/-/metro-source-map-0.70.2.tgz#14c3a014dcd5bb73c78ea897eb789cc34011c97b" - integrity sha512-FCukgawH7jPtI7Vrisdhe7BFjAAmjgt0FNWLTHqGZ9t8UOSGNntImy6f1g/NLUkNeCjqbhkHenqHGngW/J1V6w== - dependencies: - "@babel/traverse" "^7.14.0" - "@babel/types" "^7.0.0" - invariant "^2.2.4" - metro-symbolicate "0.70.2" - nullthrows "^1.1.1" - ob1 "0.70.2" - source-map "^0.5.6" - vlq "^1.0.0" - metro-source-map@0.70.3: version "0.70.3" resolved "https://registry.yarnpkg.com/metro-source-map/-/metro-source-map-0.70.3.tgz#f5976108c18d4661eaa4d188c96713e5d67a903b" @@ -5153,18 +5066,6 @@ metro-source-map@0.70.3: source-map "^0.5.6" vlq "^1.0.0" -metro-symbolicate@0.70.2: - version "0.70.2" - resolved "https://registry.yarnpkg.com/metro-symbolicate/-/metro-symbolicate-0.70.2.tgz#66a077b0dead952a75ca22ed5b7d77c3cff020f0" - integrity sha512-QcFUGChvCeMyHkKRT5OwioiQ3hrBdqndUjhFCjm4Ou0PDlYmoMs2Qb/H390AQyQsCBIqkrc1qavTmTWQdUGIYA== - dependencies: - invariant "^2.2.4" - metro-source-map "0.70.2" - nullthrows "^1.1.1" - source-map "^0.5.6" - through2 "^2.0.1" - vlq "^1.0.0" - metro-symbolicate@0.70.3: version "0.70.3" resolved "https://registry.yarnpkg.com/metro-symbolicate/-/metro-symbolicate-0.70.3.tgz#b039e5629c4ed0c999ea0496d580e1c98260f5cb" @@ -5177,10 +5078,10 @@ metro-symbolicate@0.70.3: through2 "^2.0.1" vlq "^1.0.0" -metro-transform-plugins@0.70.2: - version "0.70.2" - resolved "https://registry.yarnpkg.com/metro-transform-plugins/-/metro-transform-plugins-0.70.2.tgz#1cc235d2a18a2374dfedb082f55b2305a90ad85a" - integrity sha512-lJturLSXt+JER8Nmoo2h77LM66iN4ON4L6eIJFq7oAo4lx/XcVcPANZlpE1QaRBAvhKALPIWTQ8+7UigApwdMw== +metro-transform-plugins@0.70.3: + version "0.70.3" + resolved "https://registry.yarnpkg.com/metro-transform-plugins/-/metro-transform-plugins-0.70.3.tgz#7fe87cd0d8979b4d5d6e375751d86188fff38fd9" + integrity sha512-dQRIJoTkWZN2IVS2KzgS1hs7ZdHDX3fS3esfifPkqFAEwHiLctCf0EsPgIknp0AjMLvmGWfSLJigdRB/dc0ASw== dependencies: "@babel/core" "^7.14.0" "@babel/generator" "^7.14.0" @@ -5188,29 +5089,29 @@ metro-transform-plugins@0.70.2: "@babel/traverse" "^7.14.0" nullthrows "^1.1.1" -metro-transform-worker@0.70.2: - version "0.70.2" - resolved "https://registry.yarnpkg.com/metro-transform-worker/-/metro-transform-worker-0.70.2.tgz#5c275abe9cb51fa7551fa561b9bfa51ed29df5f5" - integrity sha512-nF8Erl0UytKDK+HmGADcP3OntyNsDZr63iKieXME4DW1JSDuIeo0tTcz0TH2pTpY87aZU9iXeayJ581YHU9/yA== +metro-transform-worker@0.70.3: + version "0.70.3" + resolved "https://registry.yarnpkg.com/metro-transform-worker/-/metro-transform-worker-0.70.3.tgz#62bfa28ebef98803531c4bcb558de5fc804c94ef" + integrity sha512-MtVVsnHhhBOp9GRLCdAb2mD1dTCsIzT4+m34KMRdBDCEbDIb90YafT5prpU8qbj5uKd0o2FOQdrJ5iy5zQilHw== dependencies: "@babel/core" "^7.14.0" "@babel/generator" "^7.14.0" "@babel/parser" "^7.14.0" "@babel/types" "^7.0.0" babel-preset-fbjs "^3.4.0" - metro "0.70.2" - metro-babel-transformer "0.70.2" - metro-cache "0.70.2" - metro-cache-key "0.70.2" - metro-hermes-compiler "0.70.2" - metro-source-map "0.70.2" - metro-transform-plugins "0.70.2" + metro "0.70.3" + metro-babel-transformer "0.70.3" + metro-cache "0.70.3" + metro-cache-key "0.70.3" + metro-hermes-compiler "0.70.3" + metro-source-map "0.70.3" + metro-transform-plugins "0.70.3" nullthrows "^1.1.1" -metro@0.70.2, metro@^0.70.1: - version "0.70.2" - resolved "https://registry.yarnpkg.com/metro/-/metro-0.70.2.tgz#b1903e81c269caf92ad4b6f877d3d89b0aca6f59" - integrity sha512-tDIjicttCCGiBrUgHfKB0XH8cg3DynCPQQqOlf1iGzonvn9GGw14VYrMeNUOq1JF44oXgQUJGLgz5AgFOCB2yg== +metro@0.70.3, metro@^0.70.1: + version "0.70.3" + resolved "https://registry.yarnpkg.com/metro/-/metro-0.70.3.tgz#4290f538ab5446c7050e718b5c5823eea292c5c2" + integrity sha512-uEWS7xg8oTetQDABYNtsyeUjdLhH3KAvLFpaFFoJqUpOk2A3iygszdqmjobFl6W4zrvKDJS+XxdMR1roYvUhTw== dependencies: "@babel/code-frame" "^7.0.0" "@babel/core" "^7.14.0" @@ -5236,21 +5137,21 @@ metro@0.70.2, metro@^0.70.1: jest-haste-map "^27.3.1" jest-worker "^27.2.0" lodash.throttle "^4.1.1" - metro-babel-transformer "0.70.2" - metro-cache "0.70.2" - metro-cache-key "0.70.2" - metro-config "0.70.2" - metro-core "0.70.2" - metro-hermes-compiler "0.70.2" - metro-inspector-proxy "0.70.2" - metro-minify-uglify "0.70.2" - metro-react-native-babel-preset "0.70.2" - metro-resolver "0.70.2" - metro-runtime "0.70.2" - metro-source-map "0.70.2" - metro-symbolicate "0.70.2" - metro-transform-plugins "0.70.2" - metro-transform-worker "0.70.2" + metro-babel-transformer "0.70.3" + metro-cache "0.70.3" + metro-cache-key "0.70.3" + metro-config "0.70.3" + metro-core "0.70.3" + metro-hermes-compiler "0.70.3" + metro-inspector-proxy "0.70.3" + metro-minify-uglify "0.70.3" + metro-react-native-babel-preset "0.70.3" + metro-resolver "0.70.3" + metro-runtime "0.70.3" + metro-source-map "0.70.3" + metro-symbolicate "0.70.3" + metro-transform-plugins "0.70.3" + metro-transform-worker "0.70.3" mime-types "^2.1.27" node-fetch "^2.2.0" nullthrows "^1.1.1" @@ -5501,11 +5402,6 @@ oauth-sign@~0.9.0: resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== -ob1@0.70.2: - version "0.70.2" - resolved "https://registry.yarnpkg.com/ob1/-/ob1-0.70.2.tgz#d4bcdeddd338ebaeab27ac7ef728770f4b7b85cd" - integrity sha512-0gZ+El3a0dI3jq8yic2stXJ3bHWWCvEQ7EZNn8n4vj4+F4nDkjtohCqYiuHADEDrxtLCPiUrZfj7hj050v5g+g== - ob1@0.70.3: version "0.70.3" resolved "https://registry.yarnpkg.com/ob1/-/ob1-0.70.3.tgz#f48cd5a5abf54b0c423b1b06b6d4ff4d049816cb" From 09878c8acd86c93aa5a531c00eecb669b81b1338 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?H=C3=A9ctor=20Ramos?= Date: Fri, 6 May 2022 08:02:33 -0700 Subject: [PATCH 10/17] Circle CI: Cache Hermes builds Summary: Use Circle CI caching to avoid re-building Hermes. The cache key will be determined by the Hermes tag specified in sdks/.hermesversion; if the file does not exist (as is the case in builds from main), the commit sha for the latest Hermes commit from facebook/hermes will be used. This should significantly speed up builds across all workflows: builds from main (commitlies), nightlies, and release builds. Changelog: [Internal] Reviewed By: cortinico, cipolleschi Differential Revision: D36158296 fbshipit-source-id: b80457fdefad0d63e62feeb4d509265e2762f253 --- .circleci/config.yml | 178 +++++++++++++++++++++++++++---------------- 1 file changed, 112 insertions(+), 66 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 093c8c399c0439..f5185db6bc2880 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -881,24 +881,36 @@ jobs: # ------------------------- prepare_hermes_workspace: docker: - - image: debian:buster + - image: debian:bullseye environment: - HERMES_WS_DIR: *hermes_workspace_root + - HERMES_VERSION_FILE: "sdks/.hermesversion" steps: - - checkout - run: name: Install dependencies command: | - apt-get update - apt-get install -y wget git + apt update + apt install -y wget git + - checkout - run: - name: Set up Hermes workspace - command: mkdir -p "$HERMES_WS_DIR/hermes" "$HERMES_WS_DIR/download" + name: Set up Hermes workspace and caching + command: | + mkdir -p "/tmp/hermes" "/tmp/hermes/download" "/tmp/hermes/hermes" + + if [ -f "$HERMES_VERSION_FILE" ]; then + cat $HERMES_VERSION_FILE > /tmp/hermes/hermesversion + else + HERMES_TAG_SHA=$(git ls-remote https://github.com/facebook/hermes main | cut -f 1 | tr -d '[:space:]') + echo $HERMES_TAG_SHA > /tmp/hermes/hermesversion + fi + - restore_cache: + key: v1-hermes-{{ .Environment.CIRCLE_JOB }}-{{ checksum "/tmp/hermes/hermesversion" }} - run: name: Download Hermes tarball command: | - HERMES_VERSION_FILE="sdks/.hermesversion" HERMES_TARBALL_URL="https://github.com/facebook/hermes/archive/refs/heads/main.tar.gz" + HERMES_TARBALL_PATH="$HERMES_WS_DIR/download/hermes.tar.gz" + if [ -f "$HERMES_VERSION_FILE" ]; then HERMES_TAG=$(cat $HERMES_VERSION_FILE | tr -d '[:space:]') HERMES_TARBALL_URL="https://github.com/facebook/hermes/archive/refs/tags/$HERMES_TAG.tar.gz" @@ -906,8 +918,19 @@ jobs: else echo "Using Hermes latest version from trunk" fi - wget --timestamping -O "$HERMES_WS_DIR/download/hermes.tar.gz" "$HERMES_TARBALL_URL" + + if [ -f "$HERMES_TARBALL_PATH" ]; then + echo "Skipping download; $HERMES_TARBALL_PATH already present." + else + echo "Downloading Hermes tarball from $HERMES_TARBALL_URL" + wget -O "$HERMES_TARBALL_PATH" "$HERMES_TARBALL_URL" + fi tar -xzf "$HERMES_WS_DIR/download/hermes.tar.gz" --strip-components=1 -C "$HERMES_WS_DIR/hermes" + - save_cache: + key: v1-hermes-{{ .Environment.CIRCLE_JOB }}-{{ checksum "/tmp/hermes/hermesversion" }} + paths: + - /tmp/hermes/download/ + - /tmp/hermes/hermes/ - persist_to_workspace: root: *hermes_workspace_root paths: @@ -928,6 +951,8 @@ jobs: apt install -y git openssh-client cmake build-essential \ libreadline-dev libicu-dev zip python3 - *attach_hermes_workspace + - restore_cache: + key: v1-hermes-{{ .Environment.CIRCLE_JOB }}-{{ checksum "/tmp/hermes/hermesversion" }} - run: name: Set up workspace command: | @@ -935,15 +960,21 @@ jobs: - run: name: Build HermesC for Linux command: | - cd /tmp/hermes - cmake -S hermes -B build -DHERMES_STATIC_LINK=ON -DCMAKE_BUILD_TYPE=Release \ - -DCMAKE_INTERPROCEDURAL_OPTIMIZATION=True -DCMAKE_CXX_FLAGS=-s -DCMAKE_C_FLAGS=-s \ - -DCMAKE_EXE_LINKER_FLAGS="-Wl,--whole-archive -lpthread -Wl,--no-whole-archive" - cmake --build build --target check-hermes -j 4 - - run: - name: Package HermesC for Linux - command: | - cp /tmp/hermes/build/bin/hermesc /tmp/hermes/linux64-bin/. + if [ -f /tmp/hermes/linux64-bin/hermesc ]; then + echo 'Skipping; Clean "/tmp/hermes/linux64-bin" to rebuild.' + else + cd /tmp/hermes + cmake -S hermes -B build -DHERMES_STATIC_LINK=ON -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_INTERPROCEDURAL_OPTIMIZATION=True -DCMAKE_CXX_FLAGS=-s -DCMAKE_C_FLAGS=-s \ + -DCMAKE_EXE_LINKER_FLAGS="-Wl,--whole-archive -lpthread -Wl,--no-whole-archive" + cmake --build build --target check-hermes -j 4 + cp /tmp/hermes/build/bin/hermesc /tmp/hermes/linux64-bin/. + fi + - save_cache: + key: v1-hermes-{{ .Environment.CIRCLE_JOB }}-{{ checksum "/tmp/hermes/hermesversion" }} + paths: + - /tmp/hermes/linux64-bin/ + - /tmp/hermes/hermes/destroot/ - store_artifacts: path: /tmp/hermes/linux64-bin/ - persist_to_workspace: @@ -957,6 +988,8 @@ jobs: - HERMES_WS_DIR: *hermes_workspace_root steps: - *attach_hermes_workspace + - restore_cache: + key: v1-hermes-{{ .Environment.CIRCLE_JOB }}-{{ checksum "/tmp/hermes/hermesversion" }} - run: name: Set up workspace command: | @@ -968,13 +1001,20 @@ jobs: - run: name: Build HermesC for macOS command: | - cd "$HERMES_WS_DIR/hermes" - ./utils/build-mac-framework.sh - - run: - name: Package HermesC for macOS - command: | - cd "$HERMES_WS_DIR/hermes" - cp build_macosx/bin/hermesc /tmp/hermes/osx-bin/. + if [ -f /tmp/hermes/osx-bin/hermesc ]; then + echo 'Skipping; Clean "/tmp/hermes/osx-bin" to rebuild.' + else + cd "$HERMES_WS_DIR/hermes" + ./utils/build-mac-framework.sh + cp build_macosx/bin/hermesc /tmp/hermes/osx-bin/. + fi + - save_cache: + key: v1-hermes-{{ .Environment.CIRCLE_JOB }}-{{ checksum "/tmp/hermes/hermesversion" }} + paths: + - /tmp/hermes/osx-bin/ + - /tmp/hermes/hermes/destroot/ + - /tmp/hermes/hermes/build_host_hermesc/ + - /tmp/hermes/hermes/build_macosx/ - store_artifacts: path: /tmp/hermes/osx-bin/ - persist_to_workspace: @@ -993,6 +1033,8 @@ jobs: - CMAKE_DIR: 'C:\Program Files\CMake\bin' steps: - *attach_hermes_workspace + - restore_cache: + key: v1-hermes-{{ .Environment.CIRCLE_JOB }}-{{ checksum "tmp/hermes/hermesversion" }} - run: name: Set up workspace command: | @@ -1001,53 +1043,57 @@ jobs: New-Item -ItemType Directory $Env:HERMES_WS_DIR\deps New-Item -ItemType Directory $Env:HERMES_WS_DIR\win64-bin New-Item -ItemType SymbolicLink -Target tmp\hermes\hermes -Path $Env:HERMES_WS_DIR -Name hermes - - run: - name: Download ICU - command: | - cd $Env:HERMES_WS_DIR\icu - # If Invoke-WebRequest shows a progress bar, it will fail with - # Win32 internal error "Access is denied" 0x5 occurred [...] - $progressPreference = 'silentlyContinue' - Invoke-WebRequest -Uri "$Env:ICU_URL" -OutFile "icu.zip" - Expand-Archive -Path "icu.zip" -DestinationPath "." - - run: - name: Install dependencies - command: | - choco install --no-progress cmake --version 3.14.7 - if (-not $?) { throw "Failed to install CMake" } - choco install --no-progress python3 - if (-not $?) { throw "Failed to install Python" } - - run: - name: Assemble Windows runtime dependencies - command: | - cd $Env:HERMES_WS_DIR - Copy-Item -Path "icu\bin64\icu*.dll" -Destination "deps" - # Include MSVC++ 2015 redistributables - Copy-Item -Path "c:\windows\system32\msvcp140.dll" -Destination "deps" - Copy-Item -Path "c:\windows\system32\vcruntime140.dll" -Destination "deps" - Copy-Item -Path "c:\windows\system32\vcruntime140_1.dll" -Destination "deps" - run: name: Build HermesC for Windows command: | - $Env:PATH += ";$Env:CMAKE_DIR;$Env:MSBUILD_DIR" - $Env:ICU_ROOT = "$Env:HERMES_WS_DIR\icu" - cd $Env:HERMES_WS_DIR - cmake -S hermes -B build_release -G 'Visual Studio 16 2019' -Ax64 -DCMAKE_BUILD_TYPE=Release -DCMAKE_INTERPROCEDURAL_OPTIMIZATION=True -DHERMES_ENABLE_WIN10_ICU_FALLBACK=OFF - if (-not $?) { throw "Failed to configure Hermes" } - cd build_release - cmake --build . --target hermesc --config Release - if (-not $?) { throw "Failed to build Hermes" } - - run: - name: Package HermesC for Windows - command: | - cd $Env:HERMES_WS_DIR - Copy-Item -Path "build_release\bin\Release\hermesc.exe" -Destination "win64-bin" - # Include Windows runtime dependencies - Copy-Item -Path "deps\*" -Destination "win64-bin" + if (-not(Test-Path -Path $Env:HERMES_WS_DIR\win64-bin\hermesc.exe)) { + choco install --no-progress cmake --version 3.14.7 + if (-not $?) { throw "Failed to install CMake" } + choco install --no-progress python3 + if (-not $?) { throw "Failed to install Python" } + + cd $Env:HERMES_WS_DIR\icu + # If Invoke-WebRequest shows a progress bar, it will fail with + # Win32 internal error "Access is denied" 0x5 occurred [...] + $progressPreference = 'silentlyContinue' + Invoke-WebRequest -Uri "$Env:ICU_URL" -OutFile "icu.zip" + Expand-Archive -Path "icu.zip" -DestinationPath "." + + cd $Env:HERMES_WS_DIR + Copy-Item -Path "icu\bin64\icu*.dll" -Destination "deps" + # Include MSVC++ 2015 redistributables + Copy-Item -Path "c:\windows\system32\msvcp140.dll" -Destination "deps" + Copy-Item -Path "c:\windows\system32\vcruntime140.dll" -Destination "deps" + Copy-Item -Path "c:\windows\system32\vcruntime140_1.dll" -Destination "deps" + + $Env:PATH += ";$Env:CMAKE_DIR;$Env:MSBUILD_DIR" + $Env:ICU_ROOT = "$Env:HERMES_WS_DIR\icu" + + cmake -S hermes -B build_release -G 'Visual Studio 16 2019' -Ax64 -DCMAKE_BUILD_TYPE=Release -DCMAKE_INTERPROCEDURAL_OPTIMIZATION=True -DHERMES_ENABLE_WIN10_ICU_FALLBACK=OFF + if (-not $?) { throw "Failed to configure Hermes" } + cd build_release + cmake --build . --target hermesc --config Release + if (-not $?) { throw "Failed to build Hermes" } + + cd $Env:HERMES_WS_DIR + Copy-Item -Path "build_release\bin\Release\hermesc.exe" -Destination "win64-bin" + # Include Windows runtime dependencies + Copy-Item -Path "deps\*" -Destination "win64-bin" + } + else { + Write-Host "Skipping; Clean c:\tmp\hermes\win64-bin to rebuild." + } + - save_cache: + key: v1-hermes-{{ .Environment.CIRCLE_JOB }}-{{ checksum "tmp/hermes/hermesversion" }} + paths: + - C:\tmp\hermes\win64-bin\ + - C:\tmp\hermes\hermes\icu\ + - C:\tmp\hermes\hermes\deps\ + - C:\tmp\hermes\hermes\build_release\ - store_artifacts: - path: c:\tmp\hermes\win64-bin\ + path: C:\tmp\hermes\win64-bin\ - persist_to_workspace: - root: c:\tmp\hermes\ + root: C:\tmp\hermes\ paths: - win64-bin From 9328115b41ba278cad3b543de763898bc739eda3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?H=C3=A9ctor=20Ramos?= Date: Fri, 6 May 2022 08:33:07 -0700 Subject: [PATCH 11/17] Hermes: Use Hermes commit sha as part of pod version Summary: Customize the Hermes version exposed to CocoaPods with one that refers to the facebook/hermes commit sha from which Hermes was built. Changelog: [Internal] Reviewed By: cortinico Differential Revision: D36145140 fbshipit-source-id: 4ff7546d2335ea6642dd9b10f4b7a9aba260d550 --- sdks/hermes-engine.podspec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sdks/hermes-engine.podspec b/sdks/hermes-engine.podspec index 04f497ba3f86f9..c4b28c6071ffe8 100644 --- a/sdks/hermes-engine.podspec +++ b/sdks/hermes-engine.podspec @@ -20,7 +20,7 @@ Pod::UI.puts '[Hermes] Hermes needs to be compiled, installing hermes-engine may Pod::Spec.new do |spec| spec.name = "hermes-engine" - spec.version = '1000.0.0' + spec.version = "1000.0.0-#{hermes_tag_sha.slice(0,6)}" spec.summary = "Hermes is a small and lightweight JavaScript engine optimized for running React Native." spec.description = "Hermes is a JavaScript engine optimized for fast start-up of React Native apps. It features ahead-of-time static optimization and compact bytecode." spec.homepage = "https://hermesengine.dev" From 13a72e0ccceb2db6aeacd03b4f429d200392c17b Mon Sep 17 00:00:00 2001 From: islandryu Date: Fri, 6 May 2022 09:30:15 -0700 Subject: [PATCH 12/17] Fix items disappear when zooming VirtualizedList (#33765) Summary: fix https://github.com/facebook/react-native/issues/33705 Fixed the disappearance of items when scrolling after zooming VirtualizedList. example https://github.com/islandryu/zoomVirtualizedList Before modification https://user-images.githubusercontent.com/65934663/166849127-9fc3ba84-5172-4ae1-bd44-dd6312f283ec.mov After modification https://user-images.githubusercontent.com/65934663/166868632-2f78e118-f705-442d-b94e-ff165bed26c7.mov ## Changelog [General] [Fixed] - Fixed the disappearance of items when scrolling after zooming VirtualizedList. Pull Request resolved: https://github.com/facebook/react-native/pull/33765 Test Plan: Make the VirtualizedList zoomable with a prop such as maximumZoomScale. Apply the patch and make sure that items in the VirtualizedList do not disappear when you scroll after zooming the VirtualizedList. Or apply the patch from this repository and check it. https://github.com/islandryu/zoomVirtualizedList Reviewed By: javache Differential Revision: D36169686 Pulled By: yungsters fbshipit-source-id: 0f86255c2864be13f6d2dc5a58af1d11c9eedac3 --- Libraries/Lists/VirtualizeUtils.js | 10 +++++++--- Libraries/Lists/VirtualizedList.js | 5 +++++ Libraries/Lists/VirtualizedListContext.js | 1 + Libraries/Lists/__tests__/VirtualizeUtils-test.js | 12 ++++++------ Libraries/Lists/__tests__/VirtualizedList-test.js | 11 +++++++---- 5 files changed, 26 insertions(+), 13 deletions(-) diff --git a/Libraries/Lists/VirtualizeUtils.js b/Libraries/Lists/VirtualizeUtils.js index 6e50e62b9cabc9..85d50539db6200 100644 --- a/Libraries/Lists/VirtualizeUtils.js +++ b/Libraries/Lists/VirtualizeUtils.js @@ -25,12 +25,13 @@ export function elementsThatOverlapOffsets( offset: number, ... }, + zoomScale: number, ): Array { const out = []; let outLength = 0; for (let ii = 0; ii < itemCount; ii++) { const frame = getFrameMetrics(ii); - const trailingOffset = frame.offset + frame.length; + const trailingOffset = (frame.offset + frame.length) * zoomScale; for (let kk = 0; kk < offsets.length; kk++) { if (out[kk] == null && trailingOffset >= offsets[kk]) { out[kk] = ii; @@ -104,6 +105,7 @@ export function computeWindowedRenderLimits( offset: number, velocity: number, visibleLength: number, + zoomScale: number, ... }, ): { @@ -115,7 +117,7 @@ export function computeWindowedRenderLimits( if (itemCount === 0) { return prev; } - const {offset, velocity, visibleLength} = scrollMetrics; + const {offset, velocity, visibleLength, zoomScale} = scrollMetrics; // Start with visible area, then compute maximum overscan region by expanding from there, biased // in the direction of scroll. Total overscan area is capped, which should cap memory consumption @@ -136,7 +138,8 @@ export function computeWindowedRenderLimits( ); const overscanEnd = Math.max(0, visibleEnd + leadFactor * overscanLength); - const lastItemOffset = getFrameMetricsApprox(itemCount - 1).offset; + const lastItemOffset = + getFrameMetricsApprox(itemCount - 1).offset * zoomScale; if (lastItemOffset < overscanBegin) { // Entire list is before our overscan window return { @@ -150,6 +153,7 @@ export function computeWindowedRenderLimits( [overscanBegin, visibleBegin, visibleEnd, overscanEnd], itemCount, getFrameMetricsApprox, + zoomScale, ); overscanFirst = overscanFirst == null ? 0 : overscanFirst; first = first == null ? Math.max(0, overscanFirst) : first; diff --git a/Libraries/Lists/VirtualizedList.js b/Libraries/Lists/VirtualizedList.js index 86f45354e36e20..fdf63b3198d962 100644 --- a/Libraries/Lists/VirtualizedList.js +++ b/Libraries/Lists/VirtualizedList.js @@ -1228,6 +1228,7 @@ class VirtualizedList extends React.PureComponent { timestamp: 0, velocity: 0, visibleLength: 0, + zoomScale: 1, }; _scrollRef: ?React.ElementRef = null; _sentEndForContentLength = 0; @@ -1624,6 +1625,9 @@ class VirtualizedList extends React.PureComponent { ); this._hasWarned.perf = true; } + + const zoomScale = e.nativeEvent.zoomScale; + this._scrollMetrics = { contentLength, dt, @@ -1632,6 +1636,7 @@ class VirtualizedList extends React.PureComponent { timestamp, velocity, visibleLength, + zoomScale, }; this._updateViewableItems(this.props.data); if (!this.props) { diff --git a/Libraries/Lists/VirtualizedListContext.js b/Libraries/Lists/VirtualizedListContext.js index d51a79244a0330..308f6a20d19a54 100644 --- a/Libraries/Lists/VirtualizedListContext.js +++ b/Libraries/Lists/VirtualizedListContext.js @@ -47,6 +47,7 @@ type Context = $ReadOnly<{ timestamp: number, velocity: number, visibleLength: number, + zoomScale: number, }, horizontal: ?boolean, getOutermostParentListRef: () => VirtualizedList, diff --git a/Libraries/Lists/__tests__/VirtualizeUtils-test.js b/Libraries/Lists/__tests__/VirtualizeUtils-test.js index 88eb4f068c46a8..c700d599100e93 100644 --- a/Libraries/Lists/__tests__/VirtualizeUtils-test.js +++ b/Libraries/Lists/__tests__/VirtualizeUtils-test.js @@ -48,9 +48,9 @@ describe('elementsThatOverlapOffsets', function () { offset: 100 * index, }; } - expect(elementsThatOverlapOffsets(offsets, 100, getFrameMetrics)).toEqual([ - 0, 2, 3, 4, - ]); + expect( + elementsThatOverlapOffsets(offsets, 100, getFrameMetrics, 1), + ).toEqual([0, 2, 3, 4]); }); it('handles variable length', function () { const offsets = [150, 250, 900]; @@ -62,7 +62,7 @@ describe('elementsThatOverlapOffsets', function () { {offset: 950, length: 150}, ]; expect( - elementsThatOverlapOffsets(offsets, frames.length, ii => frames[ii]), + elementsThatOverlapOffsets(offsets, frames.length, ii => frames[ii], 1), ).toEqual([1, 1, 3]); }); it('handles out of bounds', function () { @@ -73,7 +73,7 @@ describe('elementsThatOverlapOffsets', function () { {offset: 250, length: 100}, ]; expect( - elementsThatOverlapOffsets(offsets, frames.length, ii => frames[ii]), + elementsThatOverlapOffsets(offsets, frames.length, ii => frames[ii], 1), ).toEqual([1]); }); it('errors on non-increasing offsets', function () { @@ -84,7 +84,7 @@ describe('elementsThatOverlapOffsets', function () { {offset: 250, length: 100}, ]; expect(() => { - elementsThatOverlapOffsets(offsets, frames.length, ii => frames[ii]); + elementsThatOverlapOffsets(offsets, frames.length, ii => frames[ii], 1); }).toThrowErrorMatchingSnapshot(); }); }); diff --git a/Libraries/Lists/__tests__/VirtualizedList-test.js b/Libraries/Lists/__tests__/VirtualizedList-test.js index 9f902f180c7fbc..5354df93f7f7b5 100644 --- a/Libraries/Lists/__tests__/VirtualizedList-test.js +++ b/Libraries/Lists/__tests__/VirtualizedList-test.js @@ -384,7 +384,7 @@ describe('VirtualizedList', () => { const instance = component.getInstance(); - instance._onLayout({nativeEvent: {layout}}); + instance._onLayout({nativeEvent: {layout, zoomScale: 1}}); const initialContentHeight = props.initialNumToRender * ITEM_HEIGHT; @@ -1490,7 +1490,7 @@ it('calls _onCellLayout properly', () => { ); const cell = virtualList._cellRefs.i4; const event = { - nativeEvent: {layout: {x: 0, y: 0, width: 50, height: 50}}, + nativeEvent: {layout: {x: 0, y: 0, width: 50, height: 50}, zoomScale: 1}, }; cell._onLayout(event); expect(mock).toHaveBeenCalledWith(event, 'i4', 3); @@ -1544,7 +1544,9 @@ function simulateLayout(component, args) { function simulateViewportLayout(component, dimensions) { lastViewportLayout = dimensions; - component.getInstance()._onLayout({nativeEvent: {layout: dimensions}}); + component + .getInstance() + ._onLayout({nativeEvent: {layout: dimensions}, zoomScale: 1}); } function simulateContentLayout(component, dimensions) { @@ -1558,7 +1560,7 @@ function simulateCellLayout(component, items, itemIndex, dimensions) { const instance = component.getInstance(); const cellKey = instance._keyExtractor(items[itemIndex], itemIndex); instance._onCellLayout( - {nativeEvent: {layout: dimensions}}, + {nativeEvent: {layout: dimensions, zoomScale: 1}}, cellKey, itemIndex, ); @@ -1570,6 +1572,7 @@ function simulateScroll(component, position) { contentOffset: position, contentSize: lastContentLayout, layoutMeasurement: lastViewportLayout, + zoomScale: 1, }, }); } From 11601279b3e01987ecb92acf80f63ba94494fe17 Mon Sep 17 00:00:00 2001 From: Nicola Corti Date: Fri, 6 May 2022 10:17:25 -0700 Subject: [PATCH 13/17] Fix comments on how to enable/disable Hermes on iOS Summary: This comment on how to enable/disable Hermes went out of sync with the release of the New Architecture. Got reported on the website here: https://github.com/facebook/react-native-website/issues/3105 I'm fixing it. Changelog: [Internal] [Changed] - Fix comments on how to enable/disable Hermes on iOS Reviewed By: cipolleschi Differential Revision: D36204189 fbshipit-source-id: 5831a9500477115ebe5fa5cb62176ceefc722839 --- template/ios/Podfile | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/template/ios/Podfile b/template/ios/Podfile index 06a02f936c61a0..c814edb8d9d019 100644 --- a/template/ios/Podfile +++ b/template/ios/Podfile @@ -12,7 +12,8 @@ target 'HelloWorld' do use_react_native!( :path => config[:reactNativePath], - # to enable hermes on iOS, change `false` to `true` and then install pods + # By default, Hermes is disabled on Old Architecture, and enabled on New Architecture. + # You can enabled/disable it manually by replacing `flags[:hermes_enabled]` with `true` or `false`. :hermes_enabled => flags[:hermes_enabled], :fabric_enabled => flags[:fabric_enabled], # An absolute path to your application root. From 6e2fea81279ab89a0ca411816acc54dc27452555 Mon Sep 17 00:00:00 2001 From: Nicola Corti Date: Fri, 6 May 2022 10:50:10 -0700 Subject: [PATCH 14/17] Store Hermes Debug Symbols inside CircleCI (#33779) Summary: Pull Request resolved: https://github.com/facebook/react-native/pull/33779 This diff adds a `store_artifacts` to CircleCI so the Hermes debug symbols are retained and can be used to symbolicate native crashes for Hermes. Changelog: [Internal] [Changed] - Store Hermes Debug Symbols inside CircleCI Reviewed By: cipolleschi Differential Revision: D36201978 fbshipit-source-id: ef9a71e2953180aef5caea9f5eb0047190ed6198 --- .circleci/config.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.circleci/config.yml b/.circleci/config.yml index f5185db6bc2880..fc72d4ef87b166 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -1166,6 +1166,11 @@ jobs: # END: Stables and nightlies - run: node ./scripts/publish-npm.js << parameters.publish_npm_args >> + - run: + name: Zip Hermes Native Symbols + command: zip -r /tmp/hermes-native-symbols.zip ~/react-native/ReactAndroid/hermes-engine/build/intermediates/cmake/ + - store_artifacts: + path: /tmp/hermes-native-symbols.zip # START: Commitlies # Provide a react-native package for this commit as a Circle CI release artifact. From 73a43901b424e82cf8a74fef43371ea6d6a3863a Mon Sep 17 00:00:00 2001 From: Evan Yeung Date: Fri, 6 May 2022 10:51:36 -0700 Subject: [PATCH 15/17] Deploy 0.177.0 to xplat Summary: Changelog: [Internal] Reviewed By: SamChou19815 Differential Revision: D36141544 fbshipit-source-id: 7e322faa6f902547bb68997d02a50352c525d543 --- .flowconfig | 2 +- .flowconfig.android | 2 +- Libraries/Components/ScrollView/ScrollView.js | 1 + Libraries/Lists/VirtualizedSectionList.js | 1 + package.json | 2 +- packages/rn-tester/js/utils/RNTesterStatePersister.js | 1 + repo-config/package.json | 2 +- template/_flowconfig | 2 +- yarn.lock | 8 ++++---- 9 files changed, 12 insertions(+), 9 deletions(-) diff --git a/.flowconfig b/.flowconfig index 185349ad4ecef2..b89c9f5a9b9da6 100644 --- a/.flowconfig +++ b/.flowconfig @@ -71,4 +71,4 @@ untyped-import untyped-type-import [version] -^0.176.3 +^0.177.0 diff --git a/.flowconfig.android b/.flowconfig.android index 28405c2f5966d7..ed1a28111b4bd8 100644 --- a/.flowconfig.android +++ b/.flowconfig.android @@ -71,4 +71,4 @@ untyped-import untyped-type-import [version] -^0.176.3 +^0.177.0 diff --git a/Libraries/Components/ScrollView/ScrollView.js b/Libraries/Components/ScrollView/ScrollView.js index c3eccd2049eded..b0de7dd98b9df7 100644 --- a/Libraries/Components/ScrollView/ScrollView.js +++ b/Libraries/Components/ScrollView/ScrollView.js @@ -1519,6 +1519,7 @@ class ScrollView extends React.Component { keyboardNeverPersistTaps && this._keyboardIsDismissible() && e.target != null && + // $FlowFixMe[incompatible-call] !TextInputState.isTextInput(e.target) ) { return true; diff --git a/Libraries/Lists/VirtualizedSectionList.js b/Libraries/Lists/VirtualizedSectionList.js index 20586c16b493c9..396ad7b58ca2de 100644 --- a/Libraries/Lists/VirtualizedSectionList.js +++ b/Libraries/Lists/VirtualizedSectionList.js @@ -148,6 +148,7 @@ class VirtualizedSectionList< viewOffset, index, }; + // $FlowFixMe[incompatible-use] this._listRef.scrollToIndex(toIndexParams); } diff --git a/package.json b/package.json index 471be965906009..5b818cea7f810e 100644 --- a/package.json +++ b/package.json @@ -131,7 +131,7 @@ "ws": "^6.1.4" }, "devDependencies": { - "flow-bin": "^0.176.3", + "flow-bin": "^0.177.0", "react": "18.0.0", "react-test-renderer": "^18.0.0" }, diff --git a/packages/rn-tester/js/utils/RNTesterStatePersister.js b/packages/rn-tester/js/utils/RNTesterStatePersister.js index 495de54a5c0507..4839327bbe8472 100644 --- a/packages/rn-tester/js/utils/RNTesterStatePersister.js +++ b/packages/rn-tester/js/utils/RNTesterStatePersister.js @@ -57,6 +57,7 @@ function createContainer( _passSetState = (stateLamda: (state: State) => State): void => { this.setState(state => { const value = stateLamda(state.value); + // $FlowFixMe[incompatible-call] AsyncStorage.setItem(this._cacheKey, JSON.stringify(value)); return {value}; }); diff --git a/repo-config/package.json b/repo-config/package.json index c1f3daa8076f80..adfd6c8ce966bd 100644 --- a/repo-config/package.json +++ b/repo-config/package.json @@ -34,7 +34,7 @@ "eslint-plugin-react-hooks": "^4.2.0", "eslint-plugin-react-native": "^3.11.0", "eslint-plugin-relay": "^1.8.2", - "flow-bin": "^0.176.3", + "flow-bin": "^0.177.0", "inquirer": "^7.1.0", "jest": "^26.6.3", "jest-junit": "^10.0.0", diff --git a/template/_flowconfig b/template/_flowconfig index 74f3a75e7b2526..be9800d3542009 100644 --- a/template/_flowconfig +++ b/template/_flowconfig @@ -63,4 +63,4 @@ untyped-import untyped-type-import [version] -^0.176.3 +^0.177.0 diff --git a/yarn.lock b/yarn.lock index 81168c1c37a0d4..a5e5112905103d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3226,10 +3226,10 @@ flatted@^3.1.0: resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.2.tgz#64bfed5cb68fe3ca78b3eb214ad97b63bedce561" integrity sha512-JaTY/wtrcSyvXJl4IMFHPKyFur1sE9AUqc0QnhOaJ0CxHtAoIV8pYDzeEfAaNEtGkOfq4gr3LBFmdXW5mOQFnA== -flow-bin@^0.176.3: - version "0.176.3" - resolved "https://registry.yarnpkg.com/flow-bin/-/flow-bin-0.176.3.tgz#d32de04e044ab474afe543b9fd245608bb6a6ac8" - integrity sha512-lbNqgjr2GlGLAEVp5+dhG4LdnFE7ekbvVNifAdlvTx58/nE8GrCOMiUwEQy4dLnfL2NIRMk2dbEVTrugeQJ3mA== +flow-bin@^0.177.0: + version "0.177.0" + resolved "https://registry.yarnpkg.com/flow-bin/-/flow-bin-0.177.0.tgz#dd537424dcbdd56f3cc85fd72330840a590e4711" + integrity sha512-hEm9VDf07iGcfjiCaxZAbpp/bRcgPf/Q3f7UucWpMotrM0MmyZ2hCBvhw53XCd3M7+fP8eyZKRvUWtrMqEC/Sg== flow-parser@0.*: version "0.163.0" From 6b6adcc111123bec2c4c110070b2506385e74664 Mon Sep 17 00:00:00 2001 From: Kudo Chien Date: Fri, 6 May 2022 11:38:00 -0700 Subject: [PATCH 16/17] add back hermes inspector support (#33778) Summary: the `WITH_INSPECTOR` build flag is missing from cmake migration. original we had it in [Application.mk](https://github.com/facebook/react-native/blob/ed46ea2058b909a2dd401347d68956324961ec2c/ReactAndroid/src/main/jni/Application.mk#L29) this pr adds back the build flag and make hermes inspector (or debugging hermes in flipper) work again. ## Changelog [Android] [Fixed] - add back hermes inspector support Pull Request resolved: https://github.com/facebook/react-native/pull/33778 Test Plan: test on rn-tester hermes variant Reviewed By: cipolleschi Differential Revision: D36204525 Pulled By: cortinico fbshipit-source-id: 417874a7d0e05b5ee886f3160d526ff9c2df44ee --- ReactAndroid/src/main/jni/react/jni/CMakeLists.txt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/ReactAndroid/src/main/jni/react/jni/CMakeLists.txt b/ReactAndroid/src/main/jni/react/jni/CMakeLists.txt index e1a8f58857a598..e001b79550d3b8 100644 --- a/ReactAndroid/src/main/jni/react/jni/CMakeLists.txt +++ b/ReactAndroid/src/main/jni/react/jni/CMakeLists.txt @@ -14,7 +14,8 @@ add_compile_options( -fexceptions -frtti -Wno-unused-lambda-capture - -std=c++17) + -std=c++17 + -DWITH_INSPECTOR=1) ########################## ### React Native Utils ### From 23a160ebf66f6aac306f8db90ff79b945fe76ce2 Mon Sep 17 00:00:00 2001 From: Sam Zhou Date: Fri, 6 May 2022 15:53:13 -0700 Subject: [PATCH 17/17] Lock down constrain writes in some directories Summary: Changelog: [internal] Reviewed By: gkz Differential Revision: D36214426 fbshipit-source-id: 8498ef0f646d8a38e5d523f4fd2deacf1b649fd2 --- IntegrationTests/AsyncStorageTest.js | 2 +- Libraries/Image/Image.android.js | 6 +++--- Libraries/Image/Image.ios.js | 7 ++++--- Libraries/Lists/VirtualizedList.js | 10 +++++----- Libraries/LogBox/Data/parseLogBoxLog.js | 2 +- Libraries/LogBox/LogBox.js | 2 +- .../Utilities/__tests__/setAndForwardRef-test.js | 4 ++-- .../js/components/RNTesterSettingSwitchRow.js | 15 +++++---------- 8 files changed, 22 insertions(+), 26 deletions(-) diff --git a/IntegrationTests/AsyncStorageTest.js b/IntegrationTests/AsyncStorageTest.js index 63697aedfece91..f3aa7ce8052fe3 100644 --- a/IntegrationTests/AsyncStorageTest.js +++ b/IntegrationTests/AsyncStorageTest.js @@ -207,7 +207,7 @@ class AsyncStorageTest extends React.Component<{...}, $FlowFixMeState> { this.setState({done: true}, () => { TestModule.markTestCompleted(); }); - updateMessage = msg => { + updateMessage = (msg: string) => { this.setState({messages: this.state.messages.concat('\n' + msg)}); DEBUG && console.log(msg); }; diff --git a/Libraries/Image/Image.android.js b/Libraries/Image/Image.android.js index bce71527175924..64c5fd30c81555 100644 --- a/Libraries/Image/Image.android.js +++ b/Libraries/Image/Image.android.js @@ -123,7 +123,7 @@ export type ImageComponentStatics = $ReadOnly<{| * * See https://reactnative.dev/docs/image */ -let Image = (props: ImagePropsType, forwardedRef) => { +const BaseImage = (props: ImagePropsType, forwardedRef) => { let source = resolveAssetSource(props.source); const defaultSource = resolveAssetSource(props.defaultSource); const loadingIndicatorSource = resolveAssetSource( @@ -221,11 +221,11 @@ let Image = (props: ImagePropsType, forwardedRef) => { ); }; -Image = React.forwardRef< +let Image = React.forwardRef< ImagePropsType, | React.ElementRef | React.ElementRef, ->(Image); +>(BaseImage); if (ImageInjection.unstable_createImageComponent != null) { Image = ImageInjection.unstable_createImageComponent(Image); diff --git a/Libraries/Image/Image.ios.js b/Libraries/Image/Image.ios.js index deb54281ef21bf..b350a0f9414bc6 100644 --- a/Libraries/Image/Image.ios.js +++ b/Libraries/Image/Image.ios.js @@ -102,7 +102,7 @@ export type ImageComponentStatics = $ReadOnly<{| * * See https://reactnative.dev/docs/image */ -let Image = (props: ImagePropsType, forwardedRef) => { +const BaseImage = (props: ImagePropsType, forwardedRef) => { const source = resolveAssetSource(props.source) || { uri: undefined, width: undefined, @@ -158,11 +158,12 @@ let Image = (props: ImagePropsType, forwardedRef) => { ); }; -Image = React.forwardRef< +const ImageForwardRef = React.forwardRef< ImagePropsType, React.ElementRef, ->(Image); +>(BaseImage); +let Image = ImageForwardRef; if (ImageInjection.unstable_createImageComponent != null) { Image = ImageInjection.unstable_createImageComponent(Image); } diff --git a/Libraries/Lists/VirtualizedList.js b/Libraries/Lists/VirtualizedList.js index fdf63b3198d962..2043a18ba37862 100644 --- a/Libraries/Lists/VirtualizedList.js +++ b/Libraries/Lists/VirtualizedList.js @@ -1875,15 +1875,15 @@ class VirtualizedList extends React.PureComponent { 'Tried to get frame for out of range index ' + index, ); const item = getItem(data, index); - let frame = item && this._frames[this._keyExtractor(item, index)]; + const frame = item && this._frames[this._keyExtractor(item, index)]; if (!frame || frame.index !== index) { if (getItemLayout) { - frame = getItemLayout(data, index); + /* $FlowFixMe[prop-missing] (>=0.63.0 site=react_native_fb) This comment + * suppresses an error found when Flow v0.63 was deployed. To see the error + * delete this comment and run Flow. */ + return getItemLayout(data, index); } } - /* $FlowFixMe[prop-missing] (>=0.63.0 site=react_native_fb) This comment - * suppresses an error found when Flow v0.63 was deployed. To see the error - * delete this comment and run Flow. */ return frame; }; diff --git a/Libraries/LogBox/Data/parseLogBoxLog.js b/Libraries/LogBox/Data/parseLogBoxLog.js index bf7ea56aa8197b..9771595cde4a62 100644 --- a/Libraries/LogBox/Data/parseLogBoxLog.js +++ b/Libraries/LogBox/Data/parseLogBoxLog.js @@ -316,7 +316,7 @@ export function parseLogBoxLog(args: $ReadOnlyArray): {| |} { const message = args[0]; let argsWithoutComponentStack = []; - let componentStack = []; + let componentStack: ComponentStack = []; // Extract component stack from warnings like "Some warning%s". if ( diff --git a/Libraries/LogBox/LogBox.js b/Libraries/LogBox/LogBox.js index 8a10f810694c1a..e2af653bf319bf 100644 --- a/Libraries/LogBox/LogBox.js +++ b/Libraries/LogBox/LogBox.js @@ -39,7 +39,7 @@ if (__DEV__) { let originalConsoleError; let originalConsoleWarn; let consoleErrorImpl; - let consoleWarnImpl; + let consoleWarnImpl: (...args: Array) => void; let isLogBoxInstalled: boolean = false; diff --git a/Libraries/Utilities/__tests__/setAndForwardRef-test.js b/Libraries/Utilities/__tests__/setAndForwardRef-test.js index 882b06889b5802..51c493dad3c44d 100644 --- a/Libraries/Utilities/__tests__/setAndForwardRef-test.js +++ b/Libraries/Utilities/__tests__/setAndForwardRef-test.js @@ -17,8 +17,8 @@ const ReactTestRenderer = require('react-test-renderer'); const setAndForwardRef = require('../setAndForwardRef'); describe('setAndForwardRef', () => { - let innerFuncCalled = false; - let outerFuncCalled = false; + let innerFuncCalled: ?boolean = false; + let outerFuncCalled: ?boolean = false; class ForwardedComponent extends React.Component<{||}> { testFunc() { diff --git a/packages/rn-tester/js/components/RNTesterSettingSwitchRow.js b/packages/rn-tester/js/components/RNTesterSettingSwitchRow.js index 5b84fe71acb2f2..22341cfbf28f02 100644 --- a/packages/rn-tester/js/components/RNTesterSettingSwitchRow.js +++ b/packages/rn-tester/js/components/RNTesterSettingSwitchRow.js @@ -47,15 +47,10 @@ const styles = StyleSheet.create({ justifyContent: 'space-between', }, }); -/* $FlowFixMe[cannot-reassign-export] (>=0.85.0 site=react_native_fb) This - * comment suppresses an error found when Flow v0.85 was deployed. To see the - * error, delete this comment and run Flow. */ -// $FlowFixMe[cannot-reassign] -RNTesterSettingSwitchRow = RNTesterStatePersister.createContainer( - RNTesterSettingSwitchRow, - { + +const RNTesterSettingSwitchRowContainer: React.ComponentType<$FlowFixMeProps> = + RNTesterStatePersister.createContainer(RNTesterSettingSwitchRow, { cacheKeySuffix: ({label}) => 'Switch:' + label, getInitialState: ({initialValue}) => initialValue, - }, -); -module.exports = RNTesterSettingSwitchRow; + }); +module.exports = RNTesterSettingSwitchRowContainer;