From 6dcb22d2a736ddb66bd3ded3bb0617dd91f2a8cb Mon Sep 17 00:00:00 2001 From: Jakub Piasecki Date: Sat, 20 Aug 2022 22:01:16 +0200 Subject: [PATCH 01/42] Init `fabricfixture` app --- fabricfixture/android/app/_BUCK | 55 + fabricfixture/android/app/build.gradle | 313 + fabricfixture/android/app/build_defs.bzl | 19 + fabricfixture/android/app/debug.keystore | Bin 0 -> 2257 bytes fabricfixture/android/app/proguard-rules.pro | 10 + .../android/app/src/debug/AndroidManifest.xml | 13 + .../com/flatlistpro/ReactNativeFlipper.java | 72 + .../android/app/src/main/AndroidManifest.xml | 28 + .../main/java/com/flatlistpro/AppPackage.kt | 17 + .../java/com/flatlistpro/MainActivity.java | 51 + .../java/com/flatlistpro/MainApplication.java | 92 + .../MainApplicationReactNativeHost.java | 104 + .../components/MainComponentsRegistry.java | 30 + ...ApplicationTurboModuleManagerDelegate.java | 40 + .../android/app/src/main/jni/CMakeLists.txt | 5 + .../jni/MainApplicationModuleProvider.cpp | 29 + .../main/jni/MainApplicationModuleProvider.h | 11 + ...nApplicationTurboModuleManagerDelegate.cpp | 38 + ...ainApplicationTurboModuleManagerDelegate.h | 30 + .../src/main/jni/MainComponentsRegistry.cpp | 54 + .../app/src/main/jni/MainComponentsRegistry.h | 24 + .../android/app/src/main/jni/OnLoad.cpp | 10 + .../src/main/res/mipmap-hdpi/ic_launcher.png | Bin 0 -> 3056 bytes .../res/mipmap-hdpi/ic_launcher_round.png | Bin 0 -> 5024 bytes .../src/main/res/mipmap-mdpi/ic_launcher.png | Bin 0 -> 2096 bytes .../res/mipmap-mdpi/ic_launcher_round.png | Bin 0 -> 2858 bytes .../src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 0 -> 4569 bytes .../res/mipmap-xhdpi/ic_launcher_round.png | Bin 0 -> 7098 bytes .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin 0 -> 6464 bytes .../res/mipmap-xxhdpi/ic_launcher_round.png | Bin 0 -> 10676 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.png | Bin 0 -> 9250 bytes .../res/mipmap-xxxhdpi/ic_launcher_round.png | Bin 0 -> 15523 bytes .../app/src/main/res/values/strings.xml | 3 + .../app/src/main/res/values/styles.xml | 8 + .../main/res/xml/network_security_config.xml | 7 + fabricfixture/android/build.gradle | 53 + fabricfixture/android/gradle.properties | 39 + .../android/gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 59203 bytes .../gradle/wrapper/gradle-wrapper.properties | 5 + fabricfixture/android/gradlew | 234 + fabricfixture/android/gradlew.bat | 89 + fabricfixture/android/settings.gradle | 12 + fabricfixture/app.json | 4 + fabricfixture/babel.config.js | 16 + fabricfixture/index.js | 10 + fabricfixture/ios/.xcode.env | 10 + .../ios/FlatListPro.xcodeproj/project.pbxproj | 485 ++ .../UserInterfaceState.xcuserstate | Bin 0 -> 11209 bytes .../xcschemes/FlatListPro.xcscheme | 88 + .../contents.xcworkspacedata | 10 + .../xcshareddata/IDEWorkspaceChecks.plist | 8 + fabricfixture/ios/FlatListPro/AppDelegate.h | 8 + fabricfixture/ios/FlatListPro/AppDelegate.mm | 120 + .../AppIcon.appiconset/Contents.json | 38 + .../FlatListPro/Images.xcassets/Contents.json | 6 + fabricfixture/ios/FlatListPro/Info.plist | 55 + .../ios/FlatListPro/LaunchScreen.storyboard | 47 + fabricfixture/ios/FlatListPro/main.m | 9 + fabricfixture/ios/Podfile | 42 + fabricfixture/ios/Podfile.lock | 831 +++ fabricfixture/metro.config.js | 48 + fabricfixture/package.json | 33 + fabricfixture/react-native.config.js | 14 + fabricfixture/src/App.tsx | 13 + fabricfixture/src/PaginatedList.tsx | 70 + fabricfixture/src/assets/adaptive-icon.png | Bin 0 -> 17547 bytes fabricfixture/src/assets/anabelle.jpg | Bin 0 -> 23213 bytes fabricfixture/src/assets/arrow.png | Bin 0 -> 622 bytes fabricfixture/src/assets/arrowOther.png | Bin 0 -> 637 bytes fabricfixture/src/assets/candice.jpg | Bin 0 -> 17594 bytes fabricfixture/src/assets/checkboxOff.png | Bin 0 -> 1871 bytes fabricfixture/src/assets/checkboxOn.png | Bin 0 -> 2082 bytes fabricfixture/src/assets/comment.png | Bin 0 -> 8351 bytes fabricfixture/src/assets/egg.jpg | Bin 0 -> 11050 bytes fabricfixture/src/assets/favicon.png | Bin 0 -> 1466 bytes fabricfixture/src/assets/icon.png | Bin 0 -> 22380 bytes fabricfixture/src/assets/like.png | Bin 0 -> 8933 bytes fabricfixture/src/assets/mohamad.jpg | Bin 0 -> 17199 bytes fabricfixture/src/assets/mubariz.jpg | Bin 0 -> 18408 bytes fabricfixture/src/assets/retweet.pdf | Bin 0 -> 2365 bytes fabricfixture/src/assets/retweet.png | Bin 0 -> 6900 bytes fabricfixture/src/assets/retweet.svg | 4 + fabricfixture/src/assets/send.png | Bin 0 -> 976 bytes fabricfixture/src/assets/share.png | Bin 0 -> 6115 bytes fabricfixture/src/assets/splash.png | Bin 0 -> 48478 bytes fabricfixture/src/assets/tamara.jpg | Bin 0 -> 23548 bytes fabricfixture/src/twitter/TweetCell.tsx | 23 + fabricfixture/src/twitter/TweetContent.tsx | 163 + fabricfixture/src/twitter/Twitter.tsx | 166 + .../src/twitter/TwitterBenchmark.tsx | 17 + fabricfixture/src/twitter/TwitterFlatList.tsx | 38 + fabricfixture/src/twitter/data/tweets.ts | 2020 ++++++ fabricfixture/src/twitter/index.ts | 2 + fabricfixture/src/twitter/models/Author.ts | 5 + fabricfixture/src/twitter/models/Tweet.ts | 10 + fabricfixture/tsconfig.json | 15 + fabricfixture/yarn.lock | 6270 +++++++++++++++++ 97 files changed, 12193 insertions(+) create mode 100644 fabricfixture/android/app/_BUCK create mode 100644 fabricfixture/android/app/build.gradle create mode 100644 fabricfixture/android/app/build_defs.bzl create mode 100644 fabricfixture/android/app/debug.keystore create mode 100644 fabricfixture/android/app/proguard-rules.pro create mode 100644 fabricfixture/android/app/src/debug/AndroidManifest.xml create mode 100644 fabricfixture/android/app/src/debug/java/com/flatlistpro/ReactNativeFlipper.java create mode 100644 fabricfixture/android/app/src/main/AndroidManifest.xml create mode 100644 fabricfixture/android/app/src/main/java/com/flatlistpro/AppPackage.kt create mode 100644 fabricfixture/android/app/src/main/java/com/flatlistpro/MainActivity.java create mode 100644 fabricfixture/android/app/src/main/java/com/flatlistpro/MainApplication.java create mode 100644 fabricfixture/android/app/src/main/java/com/flatlistpro/newarchitecture/MainApplicationReactNativeHost.java create mode 100644 fabricfixture/android/app/src/main/java/com/flatlistpro/newarchitecture/components/MainComponentsRegistry.java create mode 100644 fabricfixture/android/app/src/main/java/com/flatlistpro/newarchitecture/modules/MainApplicationTurboModuleManagerDelegate.java create mode 100644 fabricfixture/android/app/src/main/jni/CMakeLists.txt create mode 100644 fabricfixture/android/app/src/main/jni/MainApplicationModuleProvider.cpp create mode 100644 fabricfixture/android/app/src/main/jni/MainApplicationModuleProvider.h create mode 100644 fabricfixture/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.cpp create mode 100644 fabricfixture/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.h create mode 100644 fabricfixture/android/app/src/main/jni/MainComponentsRegistry.cpp create mode 100644 fabricfixture/android/app/src/main/jni/MainComponentsRegistry.h create mode 100644 fabricfixture/android/app/src/main/jni/OnLoad.cpp create mode 100644 fabricfixture/android/app/src/main/res/mipmap-hdpi/ic_launcher.png create mode 100644 fabricfixture/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png create mode 100644 fabricfixture/android/app/src/main/res/mipmap-mdpi/ic_launcher.png create mode 100644 fabricfixture/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png create mode 100644 fabricfixture/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png create mode 100644 fabricfixture/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png create mode 100644 fabricfixture/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png create mode 100644 fabricfixture/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png create mode 100644 fabricfixture/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png create mode 100644 fabricfixture/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png create mode 100644 fabricfixture/android/app/src/main/res/values/strings.xml create mode 100644 fabricfixture/android/app/src/main/res/values/styles.xml create mode 100644 fabricfixture/android/app/src/main/res/xml/network_security_config.xml create mode 100644 fabricfixture/android/build.gradle create mode 100644 fabricfixture/android/gradle.properties create mode 100644 fabricfixture/android/gradle/wrapper/gradle-wrapper.jar create mode 100644 fabricfixture/android/gradle/wrapper/gradle-wrapper.properties create mode 100755 fabricfixture/android/gradlew create mode 100644 fabricfixture/android/gradlew.bat create mode 100644 fabricfixture/android/settings.gradle create mode 100644 fabricfixture/app.json create mode 100644 fabricfixture/babel.config.js create mode 100644 fabricfixture/index.js create mode 100644 fabricfixture/ios/.xcode.env create mode 100644 fabricfixture/ios/FlatListPro.xcodeproj/project.pbxproj create mode 100644 fabricfixture/ios/FlatListPro.xcodeproj/project.xcworkspace/xcuserdata/markrickert.xcuserdatad/UserInterfaceState.xcuserstate create mode 100644 fabricfixture/ios/FlatListPro.xcodeproj/xcshareddata/xcschemes/FlatListPro.xcscheme create mode 100644 fabricfixture/ios/FlatListPro.xcworkspace/contents.xcworkspacedata create mode 100644 fabricfixture/ios/FlatListPro.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 fabricfixture/ios/FlatListPro/AppDelegate.h create mode 100644 fabricfixture/ios/FlatListPro/AppDelegate.mm create mode 100644 fabricfixture/ios/FlatListPro/Images.xcassets/AppIcon.appiconset/Contents.json create mode 100644 fabricfixture/ios/FlatListPro/Images.xcassets/Contents.json create mode 100644 fabricfixture/ios/FlatListPro/Info.plist create mode 100644 fabricfixture/ios/FlatListPro/LaunchScreen.storyboard create mode 100644 fabricfixture/ios/FlatListPro/main.m create mode 100644 fabricfixture/ios/Podfile create mode 100644 fabricfixture/ios/Podfile.lock create mode 100644 fabricfixture/metro.config.js create mode 100644 fabricfixture/package.json create mode 100644 fabricfixture/react-native.config.js create mode 100644 fabricfixture/src/App.tsx create mode 100644 fabricfixture/src/PaginatedList.tsx create mode 100644 fabricfixture/src/assets/adaptive-icon.png create mode 100644 fabricfixture/src/assets/anabelle.jpg create mode 100644 fabricfixture/src/assets/arrow.png create mode 100644 fabricfixture/src/assets/arrowOther.png create mode 100644 fabricfixture/src/assets/candice.jpg create mode 100644 fabricfixture/src/assets/checkboxOff.png create mode 100644 fabricfixture/src/assets/checkboxOn.png create mode 100644 fabricfixture/src/assets/comment.png create mode 100644 fabricfixture/src/assets/egg.jpg create mode 100644 fabricfixture/src/assets/favicon.png create mode 100644 fabricfixture/src/assets/icon.png create mode 100644 fabricfixture/src/assets/like.png create mode 100644 fabricfixture/src/assets/mohamad.jpg create mode 100644 fabricfixture/src/assets/mubariz.jpg create mode 100644 fabricfixture/src/assets/retweet.pdf create mode 100644 fabricfixture/src/assets/retweet.png create mode 100644 fabricfixture/src/assets/retweet.svg create mode 100644 fabricfixture/src/assets/send.png create mode 100644 fabricfixture/src/assets/share.png create mode 100644 fabricfixture/src/assets/splash.png create mode 100644 fabricfixture/src/assets/tamara.jpg create mode 100644 fabricfixture/src/twitter/TweetCell.tsx create mode 100644 fabricfixture/src/twitter/TweetContent.tsx create mode 100644 fabricfixture/src/twitter/Twitter.tsx create mode 100644 fabricfixture/src/twitter/TwitterBenchmark.tsx create mode 100644 fabricfixture/src/twitter/TwitterFlatList.tsx create mode 100644 fabricfixture/src/twitter/data/tweets.ts create mode 100644 fabricfixture/src/twitter/index.ts create mode 100644 fabricfixture/src/twitter/models/Author.ts create mode 100644 fabricfixture/src/twitter/models/Tweet.ts create mode 100644 fabricfixture/tsconfig.json create mode 100644 fabricfixture/yarn.lock diff --git a/fabricfixture/android/app/_BUCK b/fabricfixture/android/app/_BUCK new file mode 100644 index 000000000..8602bf33b --- /dev/null +++ b/fabricfixture/android/app/_BUCK @@ -0,0 +1,55 @@ +# To learn about Buck see [Docs](https://buckbuild.com/). +# To run your application with Buck: +# - install Buck +# - `npm start` - to start the packager +# - `cd android` +# - `keytool -genkey -v -keystore keystores/debug.keystore -storepass android -alias androiddebugkey -keypass android -dname "CN=Android Debug,O=Android,C=US"` +# - `./gradlew :app:copyDownloadableDepsToLibs` - make all Gradle compile dependencies available to Buck +# - `buck install -r android/app` - compile, install and run application +# + +load(":build_defs.bzl", "create_aar_targets", "create_jar_targets") + +lib_deps = [] + +create_aar_targets(glob(["libs/*.aar"])) + +create_jar_targets(glob(["libs/*.jar"])) + +android_library( + name = "all-libs", + exported_deps = lib_deps, +) + +android_library( + name = "app-code", + srcs = glob([ + "src/main/java/**/*.java", + ]), + deps = [ + ":all-libs", + ":build_config", + ":res", + ], +) + +android_build_config( + name = "build_config", + package = "com.flatlistpro", +) + +android_resource( + name = "res", + package = "com.flatlistpro", + res = "src/main/res", +) + +android_binary( + name = "app", + keystore = "//android/keystores:debug", + manifest = "src/main/AndroidManifest.xml", + package_type = "debug", + deps = [ + ":app-code", + ], +) diff --git a/fabricfixture/android/app/build.gradle b/fabricfixture/android/app/build.gradle new file mode 100644 index 000000000..e4987679c --- /dev/null +++ b/fabricfixture/android/app/build.gradle @@ -0,0 +1,313 @@ +apply plugin: "com.android.application" +apply plugin: 'kotlin-android' + +import com.android.build.OutputFile + +/** + * The react.gradle file registers a task for each build variant (e.g. bundleDebugJsAndAssets + * and bundleReleaseJsAndAssets). + * These basically call `react-native bundle` with the correct arguments during the Android build + * cycle. By default, bundleDebugJsAndAssets is skipped, as in debug/dev mode we prefer to load the + * bundle directly from the development server. Below you can see all the possible configurations + * and their defaults. If you decide to add a configuration block, make sure to add it before the + * `apply from: "../../node_modules/react-native/react.gradle"` line. + * + * project.ext.react = [ + * // the name of the generated asset file containing your JS bundle + * bundleAssetName: "index.android.bundle", + * + * // the entry file for bundle generation. If none specified and + * // "index.android.js" exists, it will be used. Otherwise "index.js" is + * // default. Can be overridden with ENTRY_FILE environment variable. + * entryFile: "index.android.js", + * + * // https://reactnative.dev/docs/performance#enable-the-ram-format + * bundleCommand: "ram-bundle", + * + * // whether to bundle JS and assets in debug mode + * bundleInDebug: false, + * + * // whether to bundle JS and assets in release mode + * bundleInRelease: true, + * + * // whether to bundle JS and assets in another build variant (if configured). + * // See http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Build-Variants + * // The configuration property can be in the following formats + * // 'bundleIn${productFlavor}${buildType}' + * // 'bundleIn${buildType}' + * // bundleInFreeDebug: true, + * // bundleInPaidRelease: true, + * // bundleInBeta: true, + * + * // whether to disable dev mode in custom build variants (by default only disabled in release) + * // for example: to disable dev mode in the staging build type (if configured) + * devDisabledInStaging: true, + * // The configuration property can be in the following formats + * // 'devDisabledIn${productFlavor}${buildType}' + * // 'devDisabledIn${buildType}' + * + * // the root of your project, i.e. where "package.json" lives + * root: "../../", + * + * // where to put the JS bundle asset in debug mode + * jsBundleDirDebug: "$buildDir/intermediates/assets/debug", + * + * // where to put the JS bundle asset in release mode + * jsBundleDirRelease: "$buildDir/intermediates/assets/release", + * + * // where to put drawable resources / React Native assets, e.g. the ones you use via + * // require('./image.png')), in debug mode + * resourcesDirDebug: "$buildDir/intermediates/res/merged/debug", + * + * // where to put drawable resources / React Native assets, e.g. the ones you use via + * // require('./image.png')), in release mode + * resourcesDirRelease: "$buildDir/intermediates/res/merged/release", + * + * // by default the gradle tasks are skipped if none of the JS files or assets change; this means + * // that we don't look at files in android/ or ios/ to determine whether the tasks are up to + * // date; if you have any other folders that you want to ignore for performance reasons (gradle + * // indexes the entire tree), add them here. Alternatively, if you have JS files in android/ + * // for example, you might want to remove it from here. + * inputExcludes: ["android/**", "ios/**"], + * + * // override which node gets called and with what additional arguments + * nodeExecutableAndArgs: ["node"], + * + * // supply additional arguments to the packager + * extraPackagerArgs: [] + * ] + */ + +project.ext.react = [ + enableHermes: true, // clean and rebuild if changing +] + +apply from: "../../node_modules/react-native/react.gradle" + +/** + * Set this to true to create two separate APKs instead of one: + * - An APK that only works on ARM devices + * - An APK that only works on x86 devices + * The advantage is the size of the APK is reduced by about 4MB. + * Upload all the APKs to the Play Store and people will download + * the correct one based on the CPU architecture of their device. + */ +def enableSeparateBuildPerCPUArchitecture = false + +/** + * Run Proguard to shrink the Java bytecode in release builds. + */ +def enableProguardInReleaseBuilds = false + +/** + * The preferred build flavor of JavaScriptCore. + * + * For example, to use the international variant, you can use: + * `def jscFlavor = 'org.webkit:android-jsc-intl:+'` + * + * The international variant includes ICU i18n library and necessary data + * allowing to use e.g. `Date.toLocaleString` and `String.localeCompare` that + * give correct results when using with locales other than en-US. Note that + * this variant is about 6MiB larger per architecture than default. + */ +def jscFlavor = 'org.webkit:android-jsc:+' + +/** + * Whether to enable the Hermes VM. + * + * This should be set on project.ext.react and mirrored here. If it is not set + * on project.ext.react, JavaScript will not be compiled to Hermes Bytecode + * and the benefits of using Hermes will therefore be sharply reduced. + */ +def enableHermes = project.ext.react.get("enableHermes", false); + +/** + * Architectures to build native code for in debug. + */ +def reactNativeArchitectures() { + def value = project.getProperties().get("reactNativeArchitectures") + return value ? value.split(",") : ["armeabi-v7a", "x86", "x86_64", "arm64-v8a"] +} + +android { + ndkVersion rootProject.ext.ndkVersion + + compileSdkVersion rootProject.ext.compileSdkVersion + + defaultConfig { + applicationId "com.flatlistpro" + minSdkVersion rootProject.ext.minSdkVersion + targetSdkVersion rootProject.ext.targetSdkVersion + versionCode 1 + versionName "1.0" + buildConfigField "boolean", "IS_NEW_ARCHITECTURE_ENABLED", isNewArchitectureEnabled().toString() + + if (isNewArchitectureEnabled()) { + // We configure the CMake build only if you decide to opt-in for the New Architecture. + externalNativeBuild { + cmake { + arguments "-DPROJECT_BUILD_DIR=$buildDir", + "-DREACT_ANDROID_DIR=$rootDir/../node_modules/react-native/ReactAndroid", + "-DREACT_ANDROID_BUILD_DIR=$rootDir/../node_modules/react-native/ReactAndroid/build", + "-DNODE_MODULES_DIR=$rootDir/../node_modules", + "-DANDROID_STL=c++_shared" + } + } + if (!enableSeparateBuildPerCPUArchitecture) { + ndk { + abiFilters (*reactNativeArchitectures()) + } + } + } + } + + if (isNewArchitectureEnabled()) { + // We configure the NDK build only if you decide to opt-in for the New Architecture. + externalNativeBuild { + cmake { + path "$projectDir/src/main/jni/CMakeLists.txt" + } + } + def reactAndroidProjectDir = project(':ReactAndroid').projectDir + def packageReactNdkDebugLibs = tasks.register("packageReactNdkDebugLibs", Copy) { + dependsOn(":ReactAndroid:packageReactNdkDebugLibsForBuck") + from("$reactAndroidProjectDir/src/main/jni/prebuilt/lib") + into("$buildDir/react-ndk/exported") + } + def packageReactNdkReleaseLibs = tasks.register("packageReactNdkReleaseLibs", Copy) { + dependsOn(":ReactAndroid:packageReactNdkReleaseLibsForBuck") + from("$reactAndroidProjectDir/src/main/jni/prebuilt/lib") + into("$buildDir/react-ndk/exported") + } + afterEvaluate { + // If you wish to add a custom TurboModule or component locally, + // you should uncomment this line. + // preBuild.dependsOn("generateCodegenArtifactsFromSchema") + preDebugBuild.dependsOn(packageReactNdkDebugLibs) + preReleaseBuild.dependsOn(packageReactNdkReleaseLibs) + + // Due to a bug inside AGP, we have to explicitly set a dependency + // between configureCMakeDebug* tasks and the preBuild tasks. + // This can be removed once this is solved: https://issuetracker.google.com/issues/207403732 + configureCMakeRelWithDebInfo.dependsOn(preReleaseBuild) + configureCMakeDebug.dependsOn(preDebugBuild) + reactNativeArchitectures().each { architecture -> + tasks.findByName("configureCMakeDebug[${architecture}]")?.configure { + dependsOn("preDebugBuild") + } + tasks.findByName("configureCMakeRelWithDebInfo[${architecture}]")?.configure { + dependsOn("preReleaseBuild") + } + } + } + } + + splits { + abi { + reset() + enable enableSeparateBuildPerCPUArchitecture + universalApk false // If true, also generate a universal APK + include (*reactNativeArchitectures()) + } + } + + signingConfigs { + debug { + storeFile file('debug.keystore') + storePassword 'android' + keyAlias 'androiddebugkey' + keyPassword 'android' + } + } + buildTypes { + debug { + signingConfig signingConfigs.debug + } + release { + // Caution! In production, you need to generate your own keystore file. + // see https://reactnative.dev/docs/signed-apk-android. + signingConfig signingConfigs.debug + minifyEnabled enableProguardInReleaseBuilds + proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro" + } + } + + // applicationVariants are e.g. debug, release + applicationVariants.all { variant -> + variant.outputs.each { output -> + // For each separate APK per architecture, set a unique version code as described here: + // https://developer.android.com/studio/build/configure-apk-splits.html + // Example: versionCode 1 will generate 1001 for armeabi-v7a, 1002 for x86, etc. + def versionCodes = ["armeabi-v7a": 1, "x86": 2, "arm64-v8a": 3, "x86_64": 4] + def abi = output.getFilter(OutputFile.ABI) + if (abi != null) { // null for the universal-debug, universal-release variants + output.versionCodeOverride = + defaultConfig.versionCode * 1000 + versionCodes.get(abi) + } + + } + } +} + +dependencies { + implementation fileTree(dir: "libs", include: ["*.jar"]) + //noinspection GradleDynamicVersion + implementation "com.facebook.react:react-native:+" // From node_modules + + implementation "androidx.swiperefreshlayout:swiperefreshlayout:1.0.0" + + debugImplementation("com.facebook.flipper:flipper:${FLIPPER_VERSION}") { + exclude group:'com.facebook.fbjni' + } + + debugImplementation("com.facebook.flipper:flipper-network-plugin:${FLIPPER_VERSION}") { + exclude group:'com.facebook.flipper' + exclude group:'com.squareup.okhttp3', module:'okhttp' + } + + debugImplementation("com.facebook.flipper:flipper-fresco-plugin:${FLIPPER_VERSION}") { + exclude group:'com.facebook.flipper' + } + + if (enableHermes) { + //noinspection GradleDynamicVersion + implementation("com.facebook.react:hermes-engine:+") { // From node_modules + exclude group:'com.facebook.fbjni' + } + } else { + implementation jscFlavor + } +} + +if (isNewArchitectureEnabled()) { + // If new architecture is enabled, we let you build RN from source + // Otherwise we fallback to a prebuilt .aar bundled in the NPM package. + // This will be applied to all the imported transtitive dependency. + configurations.all { + resolutionStrategy.dependencySubstitution { + substitute(module("com.facebook.react:react-native")) + .using(project(":ReactAndroid")) + .because("On New Architecture we're building React Native from source") + substitute(module("com.facebook.react:hermes-engine")) + .using(project(":ReactAndroid:hermes-engine")) + .because("On New Architecture we're building Hermes from source") + } + } +} + +// Run this once to be able to run the application with BUCK +// puts all compile dependencies into folder libs for BUCK to use +task copyDownloadableDepsToLibs(type: Copy) { + from configurations.implementation + into 'libs' +} + +apply from: file("../../node_modules/@react-native-community/cli-platform-android/native_modules.gradle"); applyNativeModulesAppBuildGradle(project) + +def isNewArchitectureEnabled() { + // To opt-in for the New Architecture, you can either: + // - Set `newArchEnabled` to true inside the `gradle.properties` file + // - Invoke gradle with `-newArchEnabled=true` + // - Set an environment variable `ORG_GRADLE_PROJECT_newArchEnabled=true` + return project.hasProperty("newArchEnabled") && project.newArchEnabled == "true" +} diff --git a/fabricfixture/android/app/build_defs.bzl b/fabricfixture/android/app/build_defs.bzl new file mode 100644 index 000000000..fff270f8d --- /dev/null +++ b/fabricfixture/android/app/build_defs.bzl @@ -0,0 +1,19 @@ +"""Helper definitions to glob .aar and .jar targets""" + +def create_aar_targets(aarfiles): + for aarfile in aarfiles: + name = "aars__" + aarfile[aarfile.rindex("/") + 1:aarfile.rindex(".aar")] + lib_deps.append(":" + name) + android_prebuilt_aar( + name = name, + aar = aarfile, + ) + +def create_jar_targets(jarfiles): + for jarfile in jarfiles: + name = "jars__" + jarfile[jarfile.rindex("/") + 1:jarfile.rindex(".jar")] + lib_deps.append(":" + name) + prebuilt_jar( + name = name, + binary_jar = jarfile, + ) diff --git a/fabricfixture/android/app/debug.keystore b/fabricfixture/android/app/debug.keystore new file mode 100644 index 0000000000000000000000000000000000000000..364e105ed39fbfd62001429a68140672b06ec0de GIT binary patch literal 2257 zcmchYXEfYt8;7T1^dLH$VOTZ%2NOdOH5j5LYLtZ0q7x-V8_6gU5)#7dkq{HTmsfNq zB3ZqcAxeY^G10@?efK?Q&)M(qInVv!xjx+IKEL}p*K@LYvIzo#AZG>st5|P)KF1_Z;y){W{<7K{nl!CPuE z_^(!C(Ol0n8 zK13*rzAtW>(wULKPRYLd7G18F8#1P`V*9`(Poj26eOXYyBVZPno~Cvvhx7vPjAuZo zF?VD!zB~QG(!zbw#qsxT8%BSpqMZ4f70ZPn-3y$L8{EVbbN9$H`B&Z1quk9tgp5FM zuxp3pJ0b8u|3+#5bkJ4SRnCF2l7#DyLYXYY8*?OuAwK4E6J{0N=O3QNVzQ$L#FKkR zi-c@&!nDvezOV$i$Lr}iF$XEcwnybQ6WZrMKuw8gCL^U#D;q3t&HpTbqyD%vG=TeDlzCT~MXUPC|Leb-Uk+ z=vnMd(|>ld?Fh>V8poP;q;;nc@en$|rnP0ytzD&fFkCeUE^kG9Kx4wUh!!rpjwKDP zyw_e|a^x_w3E zP}}@$g>*LLJ4i0`Gx)qltL}@;mDv}D*xR^oeWcWdPkW@Uu)B^X&4W1$p6}ze!zudJ zyiLg@uggoMIArBr*27EZV7djDg@W1MaL+rcZ-lrANJQ%%>u8)ZMWU@R2qtnmG(acP z0d_^!t>}5W zpT`*2NR+0+SpTHb+6Js4b;%LJB;B_-ChhnU5py}iJtku*hm5F0!iql8Hrpcy1aYbT z1*dKC5ua6pMX@@iONI?Hpr%h;&YaXp9n!ND7-=a%BD7v&g zOO41M6EbE24mJ#S$Ui0-brR5ML%@|ndz^)YLMMV1atna{Fw<;TF@>d&F|!Z>8eg>>hkFrV)W+uv=`^F9^e zzzM2*oOjT9%gLoub%(R57p-`TXFe#oh1_{&N-YN z<}artH|m=d8TQuKSWE)Z%puU|g|^^NFwC#N=@dPhasyYjoy(fdEVfKR@cXKHZV-`06HsP`|Ftx;8(YD$fFXumLWbGnu$GMqRncXYY9mwz9$ap zQtfZB^_BeNYITh^hA7+(XNFox5WMeG_LtJ%*Q}$8VKDI_p8^pqX)}NMb`0e|wgF7D zuQACY_Ua<1ri{;Jwt@_1sW9zzdgnyh_O#8y+C;LcZq6=4e^cs6KvmK@$vVpKFGbQ= z$)Eux5C|Fx;Gtmv9^#Y-g@7Rt7*eLp5n!gJmn7&B_L$G?NCN`AP>cXQEz}%F%K;vUs{+l4Q{}eWW;ATe2 zqvXzxoIDy(u;F2q1JH7Sf;{jy_j})F+cKlIOmNfjBGHoG^CN zM|Ho&&X|L-36f}Q-obEACz`sI%2f&k>z5c$2TyTSj~vmO)BW~+N^kt`Jt@R|s!){H ze1_eCrlNaPkJQhL$WG&iRvF*YG=gXd1IyYQ9ew|iYn7r~g!wOnw;@n42>enAxBv*A zEmV*N#sxdicyNM=A4|yaOC5MByts}s_Hpfj|y<6G=o=!3S@eIFKDdpR7|FY>L&Wat&oW&cm&X~ z5Bt>Fcq(fgnvlvLSYg&o6>&fY`ODg4`V^lWWD=%oJ#Kbad2u~! zLECFS*??>|vDsNR&pH=Ze0Eo`sC_G`OjoEKVHY|wmwlX&(XBE<@sx3Hd^gtd-fNwUHsylg06p`U2y_={u}Bc + + + + + + + + diff --git a/fabricfixture/android/app/src/debug/java/com/flatlistpro/ReactNativeFlipper.java b/fabricfixture/android/app/src/debug/java/com/flatlistpro/ReactNativeFlipper.java new file mode 100644 index 000000000..f736b6d08 --- /dev/null +++ b/fabricfixture/android/app/src/debug/java/com/flatlistpro/ReactNativeFlipper.java @@ -0,0 +1,72 @@ +/** + * Copyright (c) Facebook, Inc. and its 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.flatlistpro; + +import android.content.Context; +import com.facebook.flipper.android.AndroidFlipperClient; +import com.facebook.flipper.android.utils.FlipperUtils; +import com.facebook.flipper.core.FlipperClient; +import com.facebook.flipper.plugins.crashreporter.CrashReporterPlugin; +import com.facebook.flipper.plugins.databases.DatabasesFlipperPlugin; +import com.facebook.flipper.plugins.fresco.FrescoFlipperPlugin; +import com.facebook.flipper.plugins.inspector.DescriptorMapping; +import com.facebook.flipper.plugins.inspector.InspectorFlipperPlugin; +import com.facebook.flipper.plugins.network.FlipperOkhttpInterceptor; +import com.facebook.flipper.plugins.network.NetworkFlipperPlugin; +import com.facebook.flipper.plugins.react.ReactFlipperPlugin; +import com.facebook.flipper.plugins.sharedpreferences.SharedPreferencesFlipperPlugin; +import com.facebook.react.ReactInstanceManager; +import com.facebook.react.bridge.ReactContext; +import com.facebook.react.modules.network.NetworkingModule; +import okhttp3.OkHttpClient; + +public class ReactNativeFlipper { + public static void initializeFlipper(Context context, ReactInstanceManager reactInstanceManager) { + if (FlipperUtils.shouldEnableFlipper(context)) { + final FlipperClient client = AndroidFlipperClient.getInstance(context); + + client.addPlugin(new InspectorFlipperPlugin(context, DescriptorMapping.withDefaults())); + client.addPlugin(new ReactFlipperPlugin()); + client.addPlugin(new DatabasesFlipperPlugin(context)); + client.addPlugin(new SharedPreferencesFlipperPlugin(context)); + client.addPlugin(CrashReporterPlugin.getInstance()); + + NetworkFlipperPlugin networkFlipperPlugin = new NetworkFlipperPlugin(); + NetworkingModule.setCustomClientBuilder( + new NetworkingModule.CustomClientBuilder() { + @Override + public void apply(OkHttpClient.Builder builder) { + builder.addNetworkInterceptor(new FlipperOkhttpInterceptor(networkFlipperPlugin)); + } + }); + client.addPlugin(networkFlipperPlugin); + client.start(); + + // Fresco Plugin needs to ensure that ImagePipelineFactory is initialized + // Hence we run if after all native modules have been initialized + ReactContext reactContext = reactInstanceManager.getCurrentReactContext(); + if (reactContext == null) { + reactInstanceManager.addReactInstanceEventListener( + new ReactInstanceManager.ReactInstanceEventListener() { + @Override + public void onReactContextInitialized(ReactContext reactContext) { + reactInstanceManager.removeReactInstanceEventListener(this); + reactContext.runOnNativeModulesQueueThread( + new Runnable() { + @Override + public void run() { + client.addPlugin(new FrescoFlipperPlugin()); + } + }); + } + }); + } else { + client.addPlugin(new FrescoFlipperPlugin()); + } + } + } +} diff --git a/fabricfixture/android/app/src/main/AndroidManifest.xml b/fabricfixture/android/app/src/main/AndroidManifest.xml new file mode 100644 index 000000000..f7a65e4e9 --- /dev/null +++ b/fabricfixture/android/app/src/main/AndroidManifest.xml @@ -0,0 +1,28 @@ + + + + + + + + + + + + + diff --git a/fabricfixture/android/app/src/main/java/com/flatlistpro/AppPackage.kt b/fabricfixture/android/app/src/main/java/com/flatlistpro/AppPackage.kt new file mode 100644 index 000000000..e6a00b816 --- /dev/null +++ b/fabricfixture/android/app/src/main/java/com/flatlistpro/AppPackage.kt @@ -0,0 +1,17 @@ +package com.flatlistpro + +import com.facebook.react.ReactPackage +import com.facebook.react.bridge.ReactApplicationContext +import com.facebook.react.bridge.NativeModule +import com.facebook.react.uimanager.ViewManager +import java.util.* + +class AppPackage : ReactPackage { + override fun createNativeModules(reactContext: ReactApplicationContext): List { + return Arrays.asList() + } + + override fun createViewManagers(reactContext: ReactApplicationContext): List> { + return Arrays.asList() + } +} diff --git a/fabricfixture/android/app/src/main/java/com/flatlistpro/MainActivity.java b/fabricfixture/android/app/src/main/java/com/flatlistpro/MainActivity.java new file mode 100644 index 000000000..9f3e1c262 --- /dev/null +++ b/fabricfixture/android/app/src/main/java/com/flatlistpro/MainActivity.java @@ -0,0 +1,51 @@ +package com.flatlistpro; + +import com.facebook.react.ReactActivity; +import com.facebook.react.ReactActivityDelegate; +import com.facebook.react.ReactRootView; + +import android.os.Bundle; + +public class MainActivity extends ReactActivity { + + /** + * Returns the name of the main component registered from JavaScript. This is used to schedule + * rendering of the component. + */ + @Override + protected String getMainComponentName() { + return "FlatListPro"; + } + + /** + * Returns the instance of the {@link ReactActivityDelegate}. There the RootView is created and + * you can specify the rendered you wish to use (Fabric or the older renderer). + */ + @Override + protected ReactActivityDelegate createReactActivityDelegate() { + return new MainActivityDelegate(this, getMainComponentName()); + } + public static class MainActivityDelegate extends ReactActivityDelegate { + public MainActivityDelegate(ReactActivity activity, String mainComponentName) { + super(activity, mainComponentName); + } + @Override + protected ReactRootView createRootView() { + ReactRootView reactRootView = new ReactRootView(getContext()); + // If you opted-in for the New Architecture, we enable the Fabric Renderer. + reactRootView.setIsFabric(BuildConfig.IS_NEW_ARCHITECTURE_ENABLED); + return reactRootView; + } + @Override + protected boolean isConcurrentRootEnabled() { + // If you opted-in for the New Architecture, we enable Concurrent Root (i.e. React 18). + // More on this on https://reactjs.org/blog/2022/03/29/react-v18.html + return BuildConfig.IS_NEW_ARCHITECTURE_ENABLED; + } + } + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(null); + } +} diff --git a/fabricfixture/android/app/src/main/java/com/flatlistpro/MainApplication.java b/fabricfixture/android/app/src/main/java/com/flatlistpro/MainApplication.java new file mode 100644 index 000000000..9da14dac1 --- /dev/null +++ b/fabricfixture/android/app/src/main/java/com/flatlistpro/MainApplication.java @@ -0,0 +1,92 @@ +package com.flatlistpro; + +import android.app.Application; +import android.content.Context; +import com.facebook.react.PackageList; +import com.facebook.react.ReactApplication; +import com.facebook.react.ReactInstanceManager; +import com.facebook.react.ReactNativeHost; +import com.facebook.react.ReactPackage; +import com.facebook.react.config.ReactFeatureFlags; +import com.facebook.soloader.SoLoader; +import java.lang.reflect.InvocationTargetException; +import java.util.List; + +import com.facebook.react.bridge.JSIModulePackage; +import com.flatlistpro.newarchitecture.MainApplicationReactNativeHost; + +public class MainApplication extends Application implements ReactApplication { + + private final ReactNativeHost mReactNativeHost = + new ReactNativeHost(this) { + @Override + public boolean getUseDeveloperSupport() { + return BuildConfig.DEBUG; + } + + @Override + protected List getPackages() { + @SuppressWarnings("UnnecessaryLocalVariable") + List packages = new PackageList(this).getPackages(); + packages.add(new com.flatlistpro.AppPackage()); + // packages.add(new com.shopify.reactnative.flash_list.FlashListPackage()); + return packages; + } + + @Override + protected String getJSMainModuleName() { + return "index"; + } + }; + + private final ReactNativeHost mNewArchitectureNativeHost = new MainApplicationReactNativeHost(this); + + @Override + public ReactNativeHost getReactNativeHost() { + if (BuildConfig.IS_NEW_ARCHITECTURE_ENABLED) { + return mNewArchitectureNativeHost; + } else { + return mReactNativeHost; + } + } + + @Override + public void onCreate() { + super.onCreate(); + // If you opted-in for the New Architecture, we enable the TurboModule system + ReactFeatureFlags.useTurboModules = BuildConfig.IS_NEW_ARCHITECTURE_ENABLED; + SoLoader.init(this, /* native exopackage */ false); + initializeFlipper(this, getReactNativeHost().getReactInstanceManager()); + } + + /** + * Loads Flipper in React Native templates. Call this in the onCreate method with something like + * initializeFlipper(this, getReactNativeHost().getReactInstanceManager()); + * + * @param context + * @param reactInstanceManager + */ + private static void initializeFlipper( + Context context, ReactInstanceManager reactInstanceManager) { + if (BuildConfig.DEBUG) { + try { + /* + We use reflection here to pick up the class that initializes Flipper, + since Flipper library is not available in release mode + */ + Class aClass = Class.forName("com.flatlistpro.ReactNativeFlipper"); + aClass + .getMethod("initializeFlipper", Context.class, ReactInstanceManager.class) + .invoke(null, context, reactInstanceManager); + } catch (ClassNotFoundException e) { + e.printStackTrace(); + } catch (NoSuchMethodException e) { + e.printStackTrace(); + } catch (IllegalAccessException e) { + e.printStackTrace(); + } catch (InvocationTargetException e) { + e.printStackTrace(); + } + } + } +} diff --git a/fabricfixture/android/app/src/main/java/com/flatlistpro/newarchitecture/MainApplicationReactNativeHost.java b/fabricfixture/android/app/src/main/java/com/flatlistpro/newarchitecture/MainApplicationReactNativeHost.java new file mode 100644 index 000000000..226cee596 --- /dev/null +++ b/fabricfixture/android/app/src/main/java/com/flatlistpro/newarchitecture/MainApplicationReactNativeHost.java @@ -0,0 +1,104 @@ +package com.flatlistpro.newarchitecture; +import android.app.Application; +import androidx.annotation.NonNull; +import com.facebook.react.PackageList; +import com.facebook.react.ReactInstanceManager; +import com.facebook.react.ReactNativeHost; +import com.facebook.react.ReactPackage; +import com.facebook.react.ReactPackageTurboModuleManagerDelegate; +import com.facebook.react.bridge.JSIModulePackage; +import com.facebook.react.bridge.JSIModuleProvider; +import com.facebook.react.bridge.JSIModuleSpec; +import com.facebook.react.bridge.JSIModuleType; +import com.facebook.react.bridge.JavaScriptContextHolder; +import com.facebook.react.bridge.ReactApplicationContext; +import com.facebook.react.bridge.UIManager; +import com.facebook.react.fabric.ComponentFactory; +import com.facebook.react.fabric.CoreComponentsRegistry; +import com.facebook.react.fabric.EmptyReactNativeConfig; +import com.facebook.react.fabric.FabricJSIModuleProvider; +import com.facebook.react.fabric.ReactNativeConfig; +import com.facebook.react.uimanager.ViewManagerRegistry; +import com.flatlistpro.BuildConfig; +import com.flatlistpro.newarchitecture.components.MainComponentsRegistry; +import com.flatlistpro.newarchitecture.modules.MainApplicationTurboModuleManagerDelegate; +import java.util.ArrayList; +import java.util.List; +/** + * A {@link ReactNativeHost} that helps you load everything needed for the New Architecture, both + * TurboModule delegates and the Fabric Renderer. + * + *

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

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

Please note that this class is used ONLY if you opt-in for the New Architecture (see the + * `newArchEnabled` property). Is ignored otherwise. + */ +public class MainApplicationTurboModuleManagerDelegate + extends ReactPackageTurboModuleManagerDelegate { + private static volatile boolean sIsSoLibraryLoaded; + protected MainApplicationTurboModuleManagerDelegate( + ReactApplicationContext reactApplicationContext, List packages) { + super(reactApplicationContext, packages); + } + protected native HybridData initHybrid(); + native boolean canCreateTurboModule(String moduleName); + public static class Builder extends ReactPackageTurboModuleManagerDelegate.Builder { + protected MainApplicationTurboModuleManagerDelegate build( + ReactApplicationContext context, List packages) { + return new MainApplicationTurboModuleManagerDelegate(context, packages); + } + } + @Override + protected synchronized void maybeLoadOtherSoLibraries() { + if (!sIsSoLibraryLoaded) { + // If you change the name of your application .so file in the Android.mk file, + // make sure you update the name here as well. + SoLoader.loadLibrary("flatlistpro_appmodules"); + sIsSoLibraryLoaded = true; + } + } +} diff --git a/fabricfixture/android/app/src/main/jni/CMakeLists.txt b/fabricfixture/android/app/src/main/jni/CMakeLists.txt new file mode 100644 index 000000000..1d68281e2 --- /dev/null +++ b/fabricfixture/android/app/src/main/jni/CMakeLists.txt @@ -0,0 +1,5 @@ +cmake_minimum_required(VERSION 3.13) +# Define the library name here. +project(flatlistpro_appmodules) +# This file includes all the necessary to let you build your application with the New Architecture. +include(${REACT_ANDROID_DIR}/cmake-utils/ReactNative-application.cmake) diff --git a/fabricfixture/android/app/src/main/jni/MainApplicationModuleProvider.cpp b/fabricfixture/android/app/src/main/jni/MainApplicationModuleProvider.cpp new file mode 100644 index 000000000..d8aabad71 --- /dev/null +++ b/fabricfixture/android/app/src/main/jni/MainApplicationModuleProvider.cpp @@ -0,0 +1,29 @@ +#include "MainApplicationModuleProvider.h" +#include +#include + +namespace facebook { +namespace react { +std::shared_ptr MainApplicationModuleProvider( + const std::string &moduleName, + const JavaTurboModule::InitParams ¶ms) { + // Here you can provide your own module provider for TurboModules coming from + // either your application or from external libraries. The approach to follow + // is similar to the following (for a library called `samplelibrary`: + // + // auto module = samplelibrary_ModuleProvider(moduleName, params); + // if (module != nullptr) { + // return module; + // } + // return rncore_ModuleProvider(moduleName, params); + + // Module providers autolinked by RN CLI + auto rncli_module = rncli_ModuleProvider(moduleName, params); + if (rncli_module != nullptr) { + return rncli_module; + } + + return rncore_ModuleProvider(moduleName, params); +} +} // namespace react +} // namespace facebook diff --git a/fabricfixture/android/app/src/main/jni/MainApplicationModuleProvider.h b/fabricfixture/android/app/src/main/jni/MainApplicationModuleProvider.h new file mode 100644 index 000000000..b7a37ab5c --- /dev/null +++ b/fabricfixture/android/app/src/main/jni/MainApplicationModuleProvider.h @@ -0,0 +1,11 @@ +#pragma once +#include +#include +#include +namespace facebook { +namespace react { +std::shared_ptr MainApplicationModuleProvider( + const std::string &moduleName, + const JavaTurboModule::InitParams ¶ms); +} // namespace react +} // namespace facebook diff --git a/fabricfixture/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.cpp b/fabricfixture/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.cpp new file mode 100644 index 000000000..cccb6a30f --- /dev/null +++ b/fabricfixture/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.cpp @@ -0,0 +1,38 @@ +#include "MainApplicationTurboModuleManagerDelegate.h" +#include "MainApplicationModuleProvider.h" +namespace facebook { +namespace react { +jni::local_ref +MainApplicationTurboModuleManagerDelegate::initHybrid( + jni::alias_ref) { + return makeCxxInstance(); +} +void MainApplicationTurboModuleManagerDelegate::registerNatives() { + registerHybrid({ + makeNativeMethod( + "initHybrid", MainApplicationTurboModuleManagerDelegate::initHybrid), + makeNativeMethod( + "canCreateTurboModule", + MainApplicationTurboModuleManagerDelegate::canCreateTurboModule), + }); +} +std::shared_ptr +MainApplicationTurboModuleManagerDelegate::getTurboModule( + const std::string &name, + const std::shared_ptr &jsInvoker) { + // Not implemented yet: provide pure-C++ NativeModules here. + return nullptr; +} +std::shared_ptr +MainApplicationTurboModuleManagerDelegate::getTurboModule( + const std::string &name, + const JavaTurboModule::InitParams ¶ms) { + return MainApplicationModuleProvider(name, params); +} +bool MainApplicationTurboModuleManagerDelegate::canCreateTurboModule( + const std::string &name) { + return getTurboModule(name, nullptr) != nullptr || + getTurboModule(name, {.moduleName = name}) != nullptr; +} +} // namespace react +} // namespace facebook diff --git a/fabricfixture/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.h b/fabricfixture/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.h new file mode 100644 index 000000000..ac04ddab9 --- /dev/null +++ b/fabricfixture/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.h @@ -0,0 +1,30 @@ +#include +#include +#include +#include +namespace facebook { +namespace react { +class MainApplicationTurboModuleManagerDelegate + : public jni::HybridClass< + MainApplicationTurboModuleManagerDelegate, + TurboModuleManagerDelegate> { + public: + // Adapt it to the package you used for your Java class. + static constexpr auto kJavaDescriptor = + "Lcom/flatlistpro/newarchitecture/modules/MainApplicationTurboModuleManagerDelegate;"; + static jni::local_ref initHybrid(jni::alias_ref); + static void registerNatives(); + std::shared_ptr getTurboModule( + const std::string &name, + const std::shared_ptr &jsInvoker) override; + std::shared_ptr getTurboModule( + const std::string &name, + const JavaTurboModule::InitParams ¶ms) override; + /** + * Test-only method. Allows user to verify whether a TurboModule can be + * created by instances of this class. + */ + bool canCreateTurboModule(const std::string &name); +}; +} // namespace react +} // namespace facebook diff --git a/fabricfixture/android/app/src/main/jni/MainComponentsRegistry.cpp b/fabricfixture/android/app/src/main/jni/MainComponentsRegistry.cpp new file mode 100644 index 000000000..2bd2e6c3e --- /dev/null +++ b/fabricfixture/android/app/src/main/jni/MainComponentsRegistry.cpp @@ -0,0 +1,54 @@ +#include "MainComponentsRegistry.h" +#include +#include +#include +#include +#include + +namespace facebook { +namespace react { +MainComponentsRegistry::MainComponentsRegistry(ComponentFactory *delegate) {} +std::shared_ptr +MainComponentsRegistry::sharedProviderRegistry() { + auto providerRegistry = CoreComponentsRegistry::sharedProviderRegistry(); + + // Autolinked providers registered by RN CLI + rncli_registerProviders(providerRegistry); + + // Custom Fabric Components go here. You can register custom + // components coming from your App or from 3rd party libraries here. + // + // providerRegistry->add(concreteComponentDescriptorProvider< + // AocViewerComponentDescriptor>()); + return providerRegistry; +} +jni::local_ref +MainComponentsRegistry::initHybrid( + jni::alias_ref, + ComponentFactory *delegate) { + auto instance = makeCxxInstance(delegate); + auto buildRegistryFunction = + [](EventDispatcher::Weak const &eventDispatcher, + ContextContainer::Shared const &contextContainer) + -> ComponentDescriptorRegistry::Shared { + auto registry = MainComponentsRegistry::sharedProviderRegistry() + ->createComponentDescriptorRegistry( + {eventDispatcher, contextContainer}); + auto mutableRegistry = + std::const_pointer_cast(registry); + mutableRegistry->setFallbackComponentDescriptor( + std::make_shared( + ComponentDescriptorParameters{ + eventDispatcher, contextContainer, nullptr})); + return registry; + }; + delegate->buildRegistryFunction = buildRegistryFunction; + return instance; +} +void MainComponentsRegistry::registerNatives() { + registerHybrid({ + makeNativeMethod("initHybrid", MainComponentsRegistry::initHybrid), + }); +} +} // namespace react +} // namespace facebook diff --git a/fabricfixture/android/app/src/main/jni/MainComponentsRegistry.h b/fabricfixture/android/app/src/main/jni/MainComponentsRegistry.h new file mode 100644 index 000000000..14d278450 --- /dev/null +++ b/fabricfixture/android/app/src/main/jni/MainComponentsRegistry.h @@ -0,0 +1,24 @@ +#pragma once +#include +#include +#include +#include +namespace facebook { +namespace react { +class MainComponentsRegistry + : public facebook::jni::HybridClass { + public: + // Adapt it to the package you used for your Java class. + constexpr static auto kJavaDescriptor = + "Lcom/flatlistpro/newarchitecture/components/MainComponentsRegistry;"; + static void registerNatives(); + MainComponentsRegistry(ComponentFactory *delegate); + private: + static std::shared_ptr + sharedProviderRegistry(); + static jni::local_ref initHybrid( + jni::alias_ref, + ComponentFactory *delegate); +}; +} // namespace react +} // namespace facebook diff --git a/fabricfixture/android/app/src/main/jni/OnLoad.cpp b/fabricfixture/android/app/src/main/jni/OnLoad.cpp new file mode 100644 index 000000000..ddd99a4c4 --- /dev/null +++ b/fabricfixture/android/app/src/main/jni/OnLoad.cpp @@ -0,0 +1,10 @@ +#include +#include "MainApplicationTurboModuleManagerDelegate.h" +#include "MainComponentsRegistry.h" +JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *) { + return facebook::jni::initialize(vm, [] { + facebook::react::MainApplicationTurboModuleManagerDelegate:: + registerNatives(); + facebook::react::MainComponentsRegistry::registerNatives(); + }); +} diff --git a/fabricfixture/android/app/src/main/res/mipmap-hdpi/ic_launcher.png b/fabricfixture/android/app/src/main/res/mipmap-hdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..a2f5908281d070150700378b64a84c7db1f97aa1 GIT binary patch literal 3056 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 axPAxe%7rDusX+w*00006jj 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⁣ zwiG+x#%j}{0gU~J8;<|!B1@-XaB@{KORFwrYg_8rOv({b0EO#DbeQRm;B6_9=mXGf z-x|VL{zd`)#@yN}HkCSJbjbNlE|zL3Wm9Q8HY`sV)}3%pgN>cL^67{Z;PPL(*wT8N zUjXU{@|*hvm}({wsAC=x0^ok0%UAz0;sogW{B!nDqk|JJ5x~4NfTDgP49^zeu`csl?5mY@JdQdISc zFs!E{^grmkLnUk9 zny~m)1vws@5BFI<-0Tuo2JWX(0v`W|t(wg;s--L47WTvTMz-8l#TL^=OJNRS2?_Qj z3AKT+gvbyBi#H*-tJ%tWD|>EV3wy|8qxfzS!5RW;Jpl5*zo&^UBU=fG#2}UvRyNkK zA06Dy9;K1ca@r2T>yThYgI!ont$(G{6q#2QT+00r_x0(b)gsE`lBB?2gr55gq^D3Fi&p%E(p9>U%bv zkg1Jco(RbyTX7FDHOnl7-O@ zI$AaIl?9NJKPm(WiBP`1-#CB1QzU>&hKm)fpa5DKE{2$X0hGz-0uZ?cyTk(YC!Y&| zL=1VrNERSA5NA2jq7FACfX4JfPyj5XXl1yv0>~s;eF7L2$>&oMqeTFT2m$y7FlkON z_yurD1yIOvA;5C6016pyxBznGUt0kJ&k5r#;&>Jow`r)sp9R~PmK~lz$3xH%LT*1U zJdOyABZ3!FvNoR*vN$5ykHS8f`jA4zV+|L}i1C4`B2c{R0;UdYxaU|H)2avz@ z=mEYc|2S<+(B2Tj+FkX+2D+yFI!k9lWMA61DJ{)e;lum$(;O87?vGJJe!KtK04+N_ zI*P~t@dUb>9Xh{dbyl{-ZQ(UMgz7$|QfL5XSPkskt^NgctYC#;4WcZB1@%@wy@2t3 z2z0DI7&%b$*Aw~abe?GxE`ez@+6hOh-6*8fHRV{1os$EL@}uUZeG4h1&Be`98q*7j z=3-v+lhIjfWVo12!<>%V^a6lTgW3+_#W6n|p*~==zOH7z$0{LSZk(Tpd7EaD04hnA zL;#fxS0aD{`5^&D`}>0Uq?byDD-l2=!wm_bLcUl4gc(% za1p|itVANvFF>hghAS07Im1;IK;|b*W)}VDyI;BIp2=K*yu2a)j?B|f<44NI$NbmJ z#dE0>jI$fMr&@>4kN8MLFb4&2O9fEKaQg%(QO$4_1rVQywG^CmBLh#}_7gKW3vd?| z2?1^&KWq8}8I^_S0|)MowU_pw$q@nl@Nkn$z>BQq_KA^9yaR`(R3u{{Ig;cwt z@AJ^{ODQCm^neroM9nKNUAXi9RCK`OsP_LuR0PUR(YZCCX5dNF6VzcoK&=b^r`W?ltt|*F zpkoae%ZT{C1h~EcFui~b7fF`vb<<~j_VquuUA$}QqIKYELPp#;{u?q8Dz}WAG-(3; zjrm$i%7UbyZMM(Y{>!uJ#vNB?R~B{6Htp=>e*<{fQQ5W7V(1coCWlOON!MzZxhum| ztZBQpGR z;~#ur^&PockKdV{Q6R>o`Pl{0x!DEbpZ7y9Y;*ZvE!*gU`V1W3znva{f=?WO5I&>B z&hw6}tjECtaghm5z|C#%M;Yf_*pI^};h}Vl=^r9EN=tVDj86D;C$jIJ?K7VP+00000NkvXXu0mjf D5i!M* literal 0 HcmV?d00001 diff --git a/fabricfixture/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png b/fabricfixture/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png new file mode 100644 index 0000000000000000000000000000000000000000..459ca609d3ae0d3943ab44cdc27feef9256dc6d7 GIT binary patch literal 7098 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 literal 0 HcmV?d00001 diff --git a/fabricfixture/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/fabricfixture/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..8ca12fe024be86e868d14e91120a6902f8e88ac6 GIT binary patch literal 6464 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 B0*L?s literal 0 HcmV?d00001 diff --git a/fabricfixture/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png b/fabricfixture/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png new file mode 100644 index 0000000000000000000000000000000000000000..8e19b410a1b15ff180f3dacac19395fe3046cdec GIT binary patch literal 10676 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 literal 0 HcmV?d00001 diff --git a/fabricfixture/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png b/fabricfixture/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png new file mode 100644 index 0000000000000000000000000000000000000000..4c19a13c239cb67b8a2134ddd5f325db1d2d5bee GIT binary patch literal 15523 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 BIP(Ai literal 0 HcmV?d00001 diff --git a/fabricfixture/android/app/src/main/res/values/strings.xml b/fabricfixture/android/app/src/main/res/values/strings.xml new file mode 100644 index 000000000..c11bb45ef --- /dev/null +++ b/fabricfixture/android/app/src/main/res/values/strings.xml @@ -0,0 +1,3 @@ + + FlashList-Sample + diff --git a/fabricfixture/android/app/src/main/res/values/styles.xml b/fabricfixture/android/app/src/main/res/values/styles.xml new file mode 100644 index 000000000..6d862fa88 --- /dev/null +++ b/fabricfixture/android/app/src/main/res/values/styles.xml @@ -0,0 +1,8 @@ + + + + + + diff --git a/fabricfixture/android/app/src/main/res/xml/network_security_config.xml b/fabricfixture/android/app/src/main/res/xml/network_security_config.xml new file mode 100644 index 000000000..c7755e76f --- /dev/null +++ b/fabricfixture/android/app/src/main/res/xml/network_security_config.xml @@ -0,0 +1,7 @@ + + + + 10.0.2.2 + localhost + + \ No newline at end of file diff --git a/fabricfixture/android/build.gradle b/fabricfixture/android/build.gradle new file mode 100644 index 000000000..9ac418c51 --- /dev/null +++ b/fabricfixture/android/build.gradle @@ -0,0 +1,53 @@ +// Top-level build file where you can add configuration options common to all sub-projects/modules. + +buildscript { + ext { + buildToolsVersion = "31.0.0" + minSdkVersion = 21 + compileSdkVersion = 31 + targetSdkVersion = 31 + kotlin_version = "1.6.10" + + if (System.properties['os.arch'] == "aarch64") { + // For M1 Users we need to use the NDK 24 which added support for aarch64 + ndkVersion = "24.0.8215888" + } else { + // Otherwise we default to the side-by-side NDK version from AGP. + ndkVersion = "21.4.7075529" + } + } + repositories { + google() + mavenCentral() + } + dependencies { + classpath("com.android.tools.build:gradle:7.2.1") + classpath("com.facebook.react:react-native-gradle-plugin") + classpath("de.undercouch:gradle-download-task:5.0.1") + // NOTE: Do not place your application dependencies here; they belong + // in the individual module build.gradle files + classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" + classpath "org.jetbrains.kotlin:kotlin-android-extensions:$kotlin_version" + } +} + +allprojects { + repositories { + mavenLocal() + mavenCentral() + google() + maven { + // All of React Native (JS, Obj-C sources, Android binaries) is installed from npm + url("$rootDir/../node_modules/react-native/android") + } + maven { + url("$rootDir/../node_modules/detox/Detox-android") + } + maven { + // Android JSC is installed from npm + url("$rootDir/../node_modules/jsc-android/dist") + } + + maven { url 'https://www.jitpack.io' } + } +} diff --git a/fabricfixture/android/gradle.properties b/fabricfixture/android/gradle.properties new file mode 100644 index 000000000..dd3eb8e43 --- /dev/null +++ b/fabricfixture/android/gradle.properties @@ -0,0 +1,39 @@ +# Project-wide Gradle settings. + +# IDE (e.g. Android Studio) users: +# Gradle settings configured through the IDE *will override* +# any settings specified in this file. + +# For more details on how to configure your build environment visit +# http://www.gradle.org/docs/current/userguide/build_environment.html + +# Specifies the JVM arguments used for the daemon process. +# The setting is particularly useful for tweaking memory settings. +# Default value: -Xmx10248m -XX:MaxPermSize=256m +org.gradle.jvmargs=-Xmx2048m -XX:MaxMetaspaceSize=512m + + +# When configured, Gradle will run in incubating parallel mode. +# This option should only be used with decoupled projects. More details, visit +# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects +# org.gradle.parallel=true + +# AndroidX package structure to make it clearer which packages are bundled with the +# Android operating system, and which are packaged with your app's APK +# https://developer.android.com/topic/libraries/support-library/androidx-rn +android.useAndroidX=true +# Automatically convert third-party libraries to use AndroidX +android.enableJetifier=true + +# Version of flipper SDK to use with React Native +FLIPPER_VERSION=0.125.0 +# Use this property to specify which architecture you want to build. +# You can also override it from the CLI using +# ./gradlew -PreactNativeArchitectures=x86_64 +reactNativeArchitectures=armeabi-v7a,arm64-v8a,x86,x86_64 +# Use this property to enable support to the new architecture. +# This will allow you to use TurboModules and the Fabric render in +# your application. You should enable this flag either if you want +# to write custom TurboModules/Fabric components OR use libraries that +# are providing them. +newArchEnabled=true diff --git a/fabricfixture/android/gradle/wrapper/gradle-wrapper.jar b/fabricfixture/android/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000000000000000000000000000000000000..e708b1c023ec8b20f512888fe07c5bd3ff77bb8f GIT binary patch literal 59203 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

K7UpUK$>l@ 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 E2O(~oYXATM literal 0 HcmV?d00001 diff --git a/fabricfixture/android/gradle/wrapper/gradle-wrapper.properties b/fabricfixture/android/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 000000000..8fad3f5a9 --- /dev/null +++ b/fabricfixture/android/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,5 @@ +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-7.5.1-all.zip +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists diff --git a/fabricfixture/android/gradlew b/fabricfixture/android/gradlew new file mode 100755 index 000000000..1b6c78733 --- /dev/null +++ b/fabricfixture/android/gradlew @@ -0,0 +1,234 @@ +#!/bin/sh + +# +# Copyright © 2015-2021 the original authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +############################################################################## +# +# Gradle start up script for POSIX generated by Gradle. +# +# Important for running: +# +# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is +# noncompliant, but you have some other compliant shell such as ksh or +# bash, then to run this script, type that shell name before the whole +# command line, like: +# +# ksh Gradle +# +# Busybox and similar reduced shells will NOT work, because this script +# requires all of these POSIX shell features: +# * functions; +# * expansions «$var», «${var}», «${var:-default}», «${var+SET}», +# «${var#prefix}», «${var%suffix}», and «$( cmd )»; +# * compound commands having a testable exit status, especially «case»; +# * various built-in commands including «command», «set», and «ulimit». +# +# Important for patching: +# +# (2) This script targets any POSIX shell, so it avoids extensions provided +# by Bash, Ksh, etc; in particular arrays are avoided. +# +# The "traditional" practice of packing multiple parameters into a +# space-separated string is a well documented source of bugs and security +# problems, so this is (mostly) avoided, by progressively accumulating +# options in "$@", and eventually passing that to Java. +# +# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS, +# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly; +# see the in-line comments for details. +# +# There are tweaks for specific operating systems such as AIX, CygWin, +# Darwin, MinGW, and NonStop. +# +# (3) This script is generated from the Groovy template +# https://github.com/gradle/gradle/blob/master/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt +# within the Gradle project. +# +# You can find Gradle at https://github.com/gradle/gradle/. +# +############################################################################## + +# Attempt to set APP_HOME + +# Resolve links: $0 may be a link +app_path=$0 + +# Need this for daisy-chained symlinks. +while + APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path + [ -h "$app_path" ] +do + ls=$( ls -ld "$app_path" ) + link=${ls#*' -> '} + case $link in #( + /*) app_path=$link ;; #( + *) app_path=$APP_HOME$link ;; + esac +done + +APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit + +APP_NAME="Gradle" +APP_BASE_NAME=${0##*/} + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD=maximum + +warn () { + echo "$*" +} >&2 + +die () { + echo + echo "$*" + echo + exit 1 +} >&2 + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "$( uname )" in #( + CYGWIN* ) cygwin=true ;; #( + Darwin* ) darwin=true ;; #( + MSYS* | MINGW* ) msys=true ;; #( + NONSTOP* ) nonstop=true ;; +esac + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD=$JAVA_HOME/jre/sh/java + else + JAVACMD=$JAVA_HOME/bin/java + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD=java + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then + case $MAX_FD in #( + max*) + MAX_FD=$( ulimit -H -n ) || + warn "Could not query maximum file descriptor limit" + esac + case $MAX_FD in #( + '' | soft) :;; #( + *) + ulimit -n "$MAX_FD" || + warn "Could not set maximum file descriptor limit to $MAX_FD" + esac +fi + +# Collect all arguments for the java command, stacking in reverse order: +# * args from the command line +# * the main class name +# * -classpath +# * -D...appname settings +# * --module-path (only if needed) +# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables. + +# For Cygwin or MSYS, switch paths to Windows format before running java +if "$cygwin" || "$msys" ; then + APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) + CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) + + JAVACMD=$( cygpath --unix "$JAVACMD" ) + + # Now convert the arguments - kludge to limit ourselves to /bin/sh + for arg do + if + case $arg in #( + -*) false ;; # don't mess with options #( + /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath + [ -e "$t" ] ;; #( + *) false ;; + esac + then + arg=$( cygpath --path --ignore --mixed "$arg" ) + fi + # Roll the args list around exactly as many times as the number of + # args, so each arg winds up back in the position where it started, but + # possibly modified. + # + # NB: a `for` loop captures its iteration list before it begins, so + # changing the positional parameters here affects neither the number of + # iterations, nor the values presented in `arg`. + shift # remove old arg + set -- "$@" "$arg" # push replacement arg + done +fi + +# Collect all arguments for the java command; +# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of +# shell script including quotes and variable substitutions, so put them in +# double quotes to make sure that they get re-expanded; and +# * put everything else in single quotes, so that it's not re-expanded. + +set -- \ + "-Dorg.gradle.appname=$APP_BASE_NAME" \ + -classpath "$CLASSPATH" \ + org.gradle.wrapper.GradleWrapperMain \ + "$@" + +# Use "xargs" to parse quoted args. +# +# With -n1 it outputs one arg per line, with the quotes and backslashes removed. +# +# In Bash we could simply go: +# +# readarray ARGS < <( xargs -n1 <<<"$var" ) && +# set -- "${ARGS[@]}" "$@" +# +# but POSIX shell has neither arrays nor command substitution, so instead we +# post-process each arg (as a line of input to sed) to backslash-escape any +# character that might be a shell metacharacter, then use eval to reverse +# that process (while maintaining the separation between arguments), and wrap +# the whole thing up as a single "set" statement. +# +# This will of course break if any of these variables contains a newline or +# an unmatched quote. +# + +eval "set -- $( + printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" | + xargs -n1 | + sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' | + tr '\n' ' ' + )" '"$@"' + +exec "$JAVACMD" "$@" diff --git a/fabricfixture/android/gradlew.bat b/fabricfixture/android/gradlew.bat new file mode 100644 index 000000000..107acd32c --- /dev/null +++ b/fabricfixture/android/gradlew.bat @@ -0,0 +1,89 @@ +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem + +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto execute + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto execute + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/fabricfixture/android/settings.gradle b/fabricfixture/android/settings.gradle new file mode 100644 index 000000000..4ba4b2c1d --- /dev/null +++ b/fabricfixture/android/settings.gradle @@ -0,0 +1,12 @@ +rootProject.name = 'FlatListPro' +apply from: file("../node_modules/@react-native-community/cli-platform-android/native_modules.gradle"); applyNativeModulesSettingsGradle(settings) +include ':app' +// include ':flash_list' +// project(':flash_list').projectDir = new File(rootProject.projectDir, '../../android') +includeBuild('../node_modules/react-native-gradle-plugin') +if (settings.hasProperty("newArchEnabled") && settings.newArchEnabled == "true") { + include(":ReactAndroid") + project(":ReactAndroid").projectDir = file('../node_modules/react-native/ReactAndroid') + include(":ReactAndroid:hermes-engine") + project(":ReactAndroid:hermes-engine").projectDir = file('../node_modules/react-native/ReactAndroid/hermes-engine') +} diff --git a/fabricfixture/app.json b/fabricfixture/app.json new file mode 100644 index 000000000..a3fd667df --- /dev/null +++ b/fabricfixture/app.json @@ -0,0 +1,4 @@ +{ + "name": "FlatListPro", + "displayName": "FlatListPro" +} \ No newline at end of file diff --git a/fabricfixture/babel.config.js b/fabricfixture/babel.config.js new file mode 100644 index 000000000..428673ea4 --- /dev/null +++ b/fabricfixture/babel.config.js @@ -0,0 +1,16 @@ +module.exports = { + presets: ["module:metro-react-native-babel-preset"], + plugins: [ + [ + "module-resolver", + { + root: "./src", + cwd: "babelrc", + extensions: [".ts", ".tsx", ".js", ".jsx"], + alias: { + assets: "./src/assets", + }, + }, + ], + ], +}; diff --git a/fabricfixture/index.js b/fabricfixture/index.js new file mode 100644 index 000000000..b5568a818 --- /dev/null +++ b/fabricfixture/index.js @@ -0,0 +1,10 @@ +/** + * @format + */ + +import { AppRegistry } from "react-native"; + +import App from "./src/App"; +import { name as appName } from "./app.json"; + +AppRegistry.registerComponent(appName, () => App); diff --git a/fabricfixture/ios/.xcode.env b/fabricfixture/ios/.xcode.env new file mode 100644 index 000000000..b32032ca1 --- /dev/null +++ b/fabricfixture/ios/.xcode.env @@ -0,0 +1,10 @@ +# This `.xcode.env` file is versioned and is used to source the environment +# used when running script phases inside Xcode. +# To customize your local environment, you can create an `.xcode.env.local` +# file that is not versioned. +# NODE_BINARY variable contains the PATH to the node executable. +# +# Customize the NODE_BINARY variable here. +# For example, to use nvm with brew, add the following line +# . "$(brew --prefix nvm)/nvm.sh" --no-use +export NODE_BINARY=$(command -v node) diff --git a/fabricfixture/ios/FlatListPro.xcodeproj/project.pbxproj b/fabricfixture/ios/FlatListPro.xcodeproj/project.pbxproj new file mode 100644 index 000000000..4cadeac7b --- /dev/null +++ b/fabricfixture/ios/FlatListPro.xcodeproj/project.pbxproj @@ -0,0 +1,485 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 54; + objects = { + +/* Begin PBXBuildFile section */ + 13B07FBC1A68108700A75B9A /* AppDelegate.mm in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB01A68108700A75B9A /* AppDelegate.mm */; }; + 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; }; + 13B07FC11A68108700A75B9A /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; }; + 4C28D4195347110DD7EFF250 /* libPods-FlatListPro.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B5C2CC4776DE30CFFD3D9728 /* libPods-FlatListPro.a */; }; + 81AB9BB82411601600AC10FF /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + 13B07F961A680F5B00A75B9A /* FlatListPro.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = FlatListPro.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 13B07FAF1A68108700A75B9A /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 4; lastKnownFileType = sourcecode.c.h; name = AppDelegate.h; path = FlatListPro/AppDelegate.h; sourceTree = ""; tabWidth = 4; }; + 13B07FB01A68108700A75B9A /* AppDelegate.mm */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = AppDelegate.mm; path = FlatListPro/AppDelegate.mm; sourceTree = ""; tabWidth = 4; }; + 13B07FB51A68108700A75B9A /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = FlatListPro/Images.xcassets; sourceTree = ""; }; + 13B07FB61A68108700A75B9A /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = FlatListPro/Info.plist; sourceTree = ""; }; + 13B07FB71A68108700A75B9A /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = FlatListPro/main.m; sourceTree = ""; tabWidth = 4; }; + 5715F3B3165A79E0A40F6237 /* Pods-FlatListPro.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-FlatListPro.debug.xcconfig"; path = "Target Support Files/Pods-FlatListPro/Pods-FlatListPro.debug.xcconfig"; sourceTree = ""; }; + 81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; name = LaunchScreen.storyboard; path = FlatListPro/LaunchScreen.storyboard; sourceTree = ""; }; + 906B19594009D131502608CA /* Pods-FlatListPro.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-FlatListPro.release.xcconfig"; path = "Target Support Files/Pods-FlatListPro/Pods-FlatListPro.release.xcconfig"; sourceTree = ""; }; + B5C2CC4776DE30CFFD3D9728 /* libPods-FlatListPro.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-FlatListPro.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + ED297162215061F000B7C4FE /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JavaScriptCore.framework; path = System/Library/Frameworks/JavaScriptCore.framework; sourceTree = SDKROOT; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 13B07F8C1A680F5B00A75B9A /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 4C28D4195347110DD7EFF250 /* libPods-FlatListPro.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 13B07FAE1A68108700A75B9A /* FlatListPro */ = { + isa = PBXGroup; + children = ( + 13B07FAF1A68108700A75B9A /* AppDelegate.h */, + 13B07FB01A68108700A75B9A /* AppDelegate.mm */, + 13B07FB51A68108700A75B9A /* Images.xcassets */, + 13B07FB61A68108700A75B9A /* Info.plist */, + 81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */, + 13B07FB71A68108700A75B9A /* main.m */, + ); + name = FlatListPro; + sourceTree = ""; + }; + 2D16E6871FA4F8E400B85C8A /* Frameworks */ = { + isa = PBXGroup; + children = ( + ED297162215061F000B7C4FE /* JavaScriptCore.framework */, + B5C2CC4776DE30CFFD3D9728 /* libPods-FlatListPro.a */, + ); + name = Frameworks; + sourceTree = ""; + }; + 832341AE1AAA6A7D00B99B32 /* Libraries */ = { + isa = PBXGroup; + children = ( + ); + name = Libraries; + sourceTree = ""; + }; + 83CBB9F61A601CBA00E9B192 = { + isa = PBXGroup; + children = ( + 13B07FAE1A68108700A75B9A /* FlatListPro */, + 832341AE1AAA6A7D00B99B32 /* Libraries */, + 83CBBA001A601CBA00E9B192 /* Products */, + 2D16E6871FA4F8E400B85C8A /* Frameworks */, + DFD3D653E70B46F7F3684804 /* Pods */, + ); + indentWidth = 4; + sourceTree = ""; + tabWidth = 4; + usesTabs = 0; + }; + 83CBBA001A601CBA00E9B192 /* Products */ = { + isa = PBXGroup; + children = ( + 13B07F961A680F5B00A75B9A /* FlatListPro.app */, + ); + name = Products; + sourceTree = ""; + }; + DFD3D653E70B46F7F3684804 /* Pods */ = { + isa = PBXGroup; + children = ( + 5715F3B3165A79E0A40F6237 /* Pods-FlatListPro.debug.xcconfig */, + 906B19594009D131502608CA /* Pods-FlatListPro.release.xcconfig */, + ); + path = Pods; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 13B07F861A680F5B00A75B9A /* FlatListPro */ = { + isa = PBXNativeTarget; + buildConfigurationList = 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "FlatListPro" */; + buildPhases = ( + 1AEC62DB56D80A418382B298 /* [CP] Check Pods Manifest.lock */, + FD10A7F022414F080027D42C /* Start Packager */, + 13B07F871A680F5B00A75B9A /* Sources */, + 13B07F8C1A680F5B00A75B9A /* Frameworks */, + 13B07F8E1A680F5B00A75B9A /* Resources */, + 00DD1BFF1BD5951E006B06BC /* Bundle React Native code and images */, + 4E050ED81535E77A7E1F530F /* [CP] Embed Pods Frameworks */, + 75BCD66CAC2B8A8182D08901 /* [CP] Copy Pods Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = FlatListPro; + productName = FlatListPro; + productReference = 13B07F961A680F5B00A75B9A /* FlatListPro.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 83CBB9F71A601CBA00E9B192 /* Project object */ = { + isa = PBXProject; + attributes = { + LastUpgradeCheck = 1210; + TargetAttributes = { + 13B07F861A680F5B00A75B9A = { + LastSwiftMigration = 1310; + }; + }; + }; + buildConfigurationList = 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "FlatListPro" */; + compatibilityVersion = "Xcode 12.0"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 83CBB9F61A601CBA00E9B192; + productRefGroup = 83CBBA001A601CBA00E9B192 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 13B07F861A680F5B00A75B9A /* FlatListPro */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 13B07F8E1A680F5B00A75B9A /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 81AB9BB82411601600AC10FF /* LaunchScreen.storyboard in Resources */, + 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXShellScriptBuildPhase section */ + 00DD1BFF1BD5951E006B06BC /* Bundle React Native code and images */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + "$(SRCROOT)/.xcode.env.local", + "$(SRCROOT)/.xcode.env", + ); + name = "Bundle React Native code and images"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "set -e\n\nWITH_ENVIRONMENT=\"../node_modules/react-native/scripts/xcode/with-environment.sh\"\nREACT_NATIVE_XCODE=\"../node_modules/react-native/scripts/react-native-xcode.sh\"\n\n/bin/sh -c \"$WITH_ENVIRONMENT $REACT_NATIVE_XCODE\"\n"; + }; + 1AEC62DB56D80A418382B298 /* [CP] Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( + ); + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-FlatListPro-checkManifestLockResult.txt", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + showEnvVarsInLog = 0; + }; + 4E050ED81535E77A7E1F530F /* [CP] Embed Pods Frameworks */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-FlatListPro/Pods-FlatListPro-frameworks-${CONFIGURATION}-input-files.xcfilelist", + ); + name = "[CP] Embed Pods Frameworks"; + outputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-FlatListPro/Pods-FlatListPro-frameworks-${CONFIGURATION}-output-files.xcfilelist", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-FlatListPro/Pods-FlatListPro-frameworks.sh\"\n"; + showEnvVarsInLog = 0; + }; + 75BCD66CAC2B8A8182D08901 /* [CP] Copy Pods Resources */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-FlatListPro/Pods-FlatListPro-resources-${CONFIGURATION}-input-files.xcfilelist", + ); + name = "[CP] Copy Pods Resources"; + outputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-FlatListPro/Pods-FlatListPro-resources-${CONFIGURATION}-output-files.xcfilelist", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-FlatListPro/Pods-FlatListPro-resources.sh\"\n"; + showEnvVarsInLog = 0; + }; + FD10A7F022414F080027D42C /* Start Packager */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + ); + name = "Start Packager"; + outputFileListPaths = ( + ); + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "export RCT_METRO_PORT=\"${RCT_METRO_PORT:=8081}\"\necho \"export RCT_METRO_PORT=${RCT_METRO_PORT}\" > \"${SRCROOT}/../node_modules/react-native/scripts/.packager.env\"\nif [ -z \"${RCT_NO_LAUNCH_PACKAGER+xxx}\" ] ; then\n if nc -w 5 -z localhost ${RCT_METRO_PORT} ; then\n if ! curl -s \"http://localhost:${RCT_METRO_PORT}/status\" | grep -q \"packager-status:running\" ; then\n echo \"Port ${RCT_METRO_PORT} already in use, packager is either not running or not running correctly\"\n exit 2\n fi\n else\n open \"$SRCROOT/../node_modules/react-native/scripts/launchPackager.command\" || echo \"Can't start packager automatically\"\n fi\nfi\n"; + showEnvVarsInLog = 0; + }; +/* End PBXShellScriptBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 13B07F871A680F5B00A75B9A /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 13B07FBC1A68108700A75B9A /* AppDelegate.mm in Sources */, + 13B07FC11A68108700A75B9A /* main.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin XCBuildConfiguration section */ + 13B07F941A680F5B00A75B9A /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 5715F3B3165A79E0A40F6237 /* Pods-FlatListPro.debug.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CURRENT_PROJECT_VERSION = 1; + ENABLE_BITCODE = NO; + INFOPLIST_FILE = FlatListPro/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + OTHER_LDFLAGS = ( + "$(inherited)", + "-ObjC", + "-lc++", + ); + PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)"; + PRODUCT_NAME = FlatListPro; + SWIFT_OBJC_BRIDGING_HEADER = "FlatListPro-Bridging-Header.h"; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = Debug; + }; + 13B07F951A680F5B00A75B9A /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 906B19594009D131502608CA /* Pods-FlatListPro.release.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CURRENT_PROJECT_VERSION = 1; + INFOPLIST_FILE = FlatListPro/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + OTHER_LDFLAGS = ( + "$(inherited)", + "-ObjC", + "-lc++", + ); + PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)"; + PRODUCT_NAME = FlatListPro; + SWIFT_OBJC_BRIDGING_HEADER = "FlatListPro-Bridging-Header.h"; + SWIFT_VERSION = 5.0; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = Release; + }; + 83CBBA201A601CBA00E9B192 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; + CLANG_CXX_LANGUAGE_STANDARD = "c++17"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + "EXCLUDED_ARCHS[sdk=iphonesimulator*]" = i386; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; + LD_RUNPATH_SEARCH_PATHS = ( + /usr/lib/swift, + "$(inherited)", + ); + LIBRARY_SEARCH_PATHS = ( + "\"$(SDKROOT)/usr/lib/swift\"", + "\"$(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME)\"", + "\"$(inherited)\"", + ); + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + REACT_NATIVE_PATH = "${PODS_ROOT}/../../node_modules/react-native"; + SDKROOT = iphoneos; + }; + name = Debug; + }; + 83CBBA211A601CBA00E9B192 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; + CLANG_CXX_LANGUAGE_STANDARD = "c++17"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = YES; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + "EXCLUDED_ARCHS[sdk=iphonesimulator*]" = i386; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; + LD_RUNPATH_SEARCH_PATHS = ( + /usr/lib/swift, + "$(inherited)", + ); + LIBRARY_SEARCH_PATHS = ( + "\"$(SDKROOT)/usr/lib/swift\"", + "\"$(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME)\"", + "\"$(inherited)\"", + ); + MTL_ENABLE_DEBUG_INFO = NO; + OTHER_CPLUSPLUSFLAGS = ( + "$(OTHER_CFLAGS)", + "-DFOLLY_NO_CONFIG", + "-DFOLLY_MOBILE=1", + "-DFOLLY_USE_LIBCPP=1", + ); + REACT_NATIVE_PATH = "${PODS_ROOT}/../../node_modules/react-native"; + SDKROOT = iphoneos; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "FlatListPro" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 13B07F941A680F5B00A75B9A /* Debug */, + 13B07F951A680F5B00A75B9A /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "FlatListPro" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 83CBBA201A601CBA00E9B192 /* Debug */, + 83CBBA211A601CBA00E9B192 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 83CBB9F71A601CBA00E9B192 /* Project object */; +} diff --git a/fabricfixture/ios/FlatListPro.xcodeproj/project.xcworkspace/xcuserdata/markrickert.xcuserdatad/UserInterfaceState.xcuserstate b/fabricfixture/ios/FlatListPro.xcodeproj/project.xcworkspace/xcuserdata/markrickert.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000000000000000000000000000000000000..cf78f93e3dccf445b928b934c52616cf4b4b94a1 GIT binary patch literal 11209 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 literal 0 HcmV?d00001 diff --git a/fabricfixture/ios/FlatListPro.xcodeproj/xcshareddata/xcschemes/FlatListPro.xcscheme b/fabricfixture/ios/FlatListPro.xcodeproj/xcshareddata/xcschemes/FlatListPro.xcscheme new file mode 100644 index 000000000..571df8db7 --- /dev/null +++ b/fabricfixture/ios/FlatListPro.xcodeproj/xcshareddata/xcschemes/FlatListPro.xcscheme @@ -0,0 +1,88 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/fabricfixture/ios/FlatListPro.xcworkspace/contents.xcworkspacedata b/fabricfixture/ios/FlatListPro.xcworkspace/contents.xcworkspacedata new file mode 100644 index 000000000..9eeec6e7c --- /dev/null +++ b/fabricfixture/ios/FlatListPro.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,10 @@ + + + + + + + diff --git a/fabricfixture/ios/FlatListPro.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/fabricfixture/ios/FlatListPro.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 000000000..18d981003 --- /dev/null +++ b/fabricfixture/ios/FlatListPro.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/fabricfixture/ios/FlatListPro/AppDelegate.h b/fabricfixture/ios/FlatListPro/AppDelegate.h new file mode 100644 index 000000000..ef1de86a2 --- /dev/null +++ b/fabricfixture/ios/FlatListPro/AppDelegate.h @@ -0,0 +1,8 @@ +#import +#import + +@interface AppDelegate : UIResponder + +@property (nonatomic, strong) UIWindow *window; + +@end diff --git a/fabricfixture/ios/FlatListPro/AppDelegate.mm b/fabricfixture/ios/FlatListPro/AppDelegate.mm new file mode 100644 index 000000000..395c0e9d5 --- /dev/null +++ b/fabricfixture/ios/FlatListPro/AppDelegate.mm @@ -0,0 +1,120 @@ +#import "AppDelegate.h" + +#import +#import +#import + +#import + +#if RCT_NEW_ARCH_ENABLED +#import +#import +#import +#import +#import +#import +#import + +static NSString *const kRNConcurrentRoot = @"concurrentRoot"; + +@interface AppDelegate () { + RCTTurboModuleManager *_turboModuleManager; + RCTSurfacePresenterBridgeAdapter *_bridgeAdapter; + std::shared_ptr _reactNativeConfig; + facebook::react::ContextContainer::Shared _contextContainer; +} +@end +#endif + +@implementation AppDelegate + +- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions +{ + RCTAppSetupPrepareApp(application); + RCTBridge *bridge = [[RCTBridge alloc] initWithDelegate:self launchOptions:launchOptions]; + +#if RCT_NEW_ARCH_ENABLED + _contextContainer = std::make_shared(); + _reactNativeConfig = std::make_shared(); + _contextContainer->insert("ReactNativeConfig", _reactNativeConfig); + _bridgeAdapter = [[RCTSurfacePresenterBridgeAdapter alloc] initWithBridge:bridge contextContainer:_contextContainer]; + bridge.surfacePresenter = _bridgeAdapter.surfacePresenter; +#endif + + NSDictionary *initProps = [self prepareInitialProps]; + UIView *rootView = RCTAppSetupDefaultRootView(bridge, @"FlatListPro", initProps); + + if (@available(iOS 13.0, *)) { + rootView.backgroundColor = [UIColor systemBackgroundColor]; + } else { + rootView.backgroundColor = [UIColor whiteColor]; + } + + self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds]; + UIViewController *rootViewController = [UIViewController new]; + rootViewController.view = rootView; + self.window.rootViewController = rootViewController; + [self.window makeKeyAndVisible]; + return YES; +} + +/// This method controls whether the `concurrentRoot`feature of React18 is turned on or off. +/// +/// @see: https://reactjs.org/blog/2022/03/29/react-v18.html +/// @note: This requires to be rendering on Fabric (i.e. on the New Architecture). +/// @return: `true` if the `concurrentRoot` feture is enabled. Otherwise, it returns `false`. +- (BOOL)concurrentRootEnabled +{ + // Switch this bool to turn on and off the concurrent root + return true; +} +- (NSDictionary *)prepareInitialProps +{ + NSMutableDictionary *initProps = [NSMutableDictionary new]; +#ifdef RCT_NEW_ARCH_ENABLED + initProps[kRNConcurrentRoot] = @([self concurrentRootEnabled]); +#endif + return initProps; +} + +- (NSURL *)sourceURLForBridge:(RCTBridge *)bridge +{ +#if DEBUG + return [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"index"]; +#else + return [[NSBundle mainBundle] URLForResource:@"main" withExtension:@"jsbundle"]; +#endif +} + +#if RCT_NEW_ARCH_ENABLED +#pragma mark - RCTCxxBridgeDelegate +- (std::unique_ptr)jsExecutorFactoryForBridge:(RCTBridge *)bridge +{ + _turboModuleManager = [[RCTTurboModuleManager alloc] initWithBridge:bridge + delegate:self + jsInvoker:bridge.jsCallInvoker]; + return RCTAppSetupDefaultJsExecutorFactory(bridge, _turboModuleManager); +} +#pragma mark RCTTurboModuleManagerDelegate +- (Class)getModuleClassFromName:(const char *)name +{ + return RCTCoreModulesClassProvider(name); +} +- (std::shared_ptr)getTurboModule:(const std::string &)name + jsInvoker:(std::shared_ptr)jsInvoker +{ + return nullptr; +} +- (std::shared_ptr)getTurboModule:(const std::string &)name + initParams: + (const facebook::react::ObjCTurboModule::InitParams &)params +{ + return nullptr; +} +- (id)getModuleInstanceFromClass:(Class)moduleClass +{ + return RCTAppSetupDefaultModuleFromClass(moduleClass); +} +#endif + +@end diff --git a/fabricfixture/ios/FlatListPro/Images.xcassets/AppIcon.appiconset/Contents.json b/fabricfixture/ios/FlatListPro/Images.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 000000000..118c98f74 --- /dev/null +++ b/fabricfixture/ios/FlatListPro/Images.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,38 @@ +{ + "images" : [ + { + "idiom" : "iphone", + "size" : "29x29", + "scale" : "2x" + }, + { + "idiom" : "iphone", + "size" : "29x29", + "scale" : "3x" + }, + { + "idiom" : "iphone", + "size" : "40x40", + "scale" : "2x" + }, + { + "idiom" : "iphone", + "size" : "40x40", + "scale" : "3x" + }, + { + "idiom" : "iphone", + "size" : "60x60", + "scale" : "2x" + }, + { + "idiom" : "iphone", + "size" : "60x60", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/fabricfixture/ios/FlatListPro/Images.xcassets/Contents.json b/fabricfixture/ios/FlatListPro/Images.xcassets/Contents.json new file mode 100644 index 000000000..2d92bd53f --- /dev/null +++ b/fabricfixture/ios/FlatListPro/Images.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "version" : 1, + "author" : "xcode" + } +} diff --git a/fabricfixture/ios/FlatListPro/Info.plist b/fabricfixture/ios/FlatListPro/Info.plist new file mode 100644 index 000000000..24ffbd0ad --- /dev/null +++ b/fabricfixture/ios/FlatListPro/Info.plist @@ -0,0 +1,55 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleDisplayName + FlatListPro + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + APPL + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleVersion + 1 + LSRequiresIPhoneOS + + NSAppTransportSecurity + + NSExceptionDomains + + localhost + + NSExceptionAllowsInsecureHTTPLoads + + + + + NSLocationWhenInUseUsageDescription + + UILaunchStoryboardName + LaunchScreen + UIRequiredDeviceCapabilities + + armv7 + + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UIViewControllerBasedStatusBarAppearance + + + diff --git a/fabricfixture/ios/FlatListPro/LaunchScreen.storyboard b/fabricfixture/ios/FlatListPro/LaunchScreen.storyboard new file mode 100644 index 000000000..30208ecc0 --- /dev/null +++ b/fabricfixture/ios/FlatListPro/LaunchScreen.storyboard @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/fabricfixture/ios/FlatListPro/main.m b/fabricfixture/ios/FlatListPro/main.m new file mode 100644 index 000000000..841c545c5 --- /dev/null +++ b/fabricfixture/ios/FlatListPro/main.m @@ -0,0 +1,9 @@ +#import + +#import "AppDelegate.h" + +int main(int argc, char *argv[]) { + @autoreleasepool { + return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); + } +} diff --git a/fabricfixture/ios/Podfile b/fabricfixture/ios/Podfile new file mode 100644 index 000000000..bb5d6c819 --- /dev/null +++ b/fabricfixture/ios/Podfile @@ -0,0 +1,42 @@ +require_relative '../node_modules/react-native/scripts/react_native_pods' +require_relative '../node_modules/@react-native-community/cli-platform-ios/native_modules' + +platform :ios, '12.4' +install! 'cocoapods', :deterministic_uuids => false + +inhibit_all_warnings! + +target 'FlatListPro' do + config = use_native_modules! + # Flags change depending on the env values. + flags = get_default_flags() + + use_react_native!( + :path => config[:reactNativePath], + # Hermes is now enabled by default. Disable by setting this flag to false. + # Upcoming versions of React Native may rely on get_default_flags(), but + # we make it explicit here to aid in the React Native upgrade process. + :hermes_enabled => true, + :fabric_enabled => flags[:fabric_enabled], + # Enables Flipper. + # + # Note that if you have use_frameworks! enabled, Flipper will not work and + # you should disable the next line. + # :flipper_configuration => FlipperConfiguration.enabled, + :fabric_enabled => flags[:fabric_enabled], + # An absolute path to your application root. + :app_path => "#{Pod::Config.instance.installation_root}/.." + ) + + pod "RNFlashList", path: "../../RNFlashList.podspec", testspecs: ['Tests'], inhibit_warnings: false + + post_install do |installer| + react_native_post_install( + installer, + # Set `mac_catalyst_enabled` to `true` in order to apply patches + # necessary for Mac Catalyst builds + :mac_catalyst_enabled => false + ) + __apply_Xcode_12_5_M1_post_install_workaround(installer) + end +end diff --git a/fabricfixture/ios/Podfile.lock b/fabricfixture/ios/Podfile.lock new file mode 100644 index 000000000..cb142db51 --- /dev/null +++ b/fabricfixture/ios/Podfile.lock @@ -0,0 +1,831 @@ +PODS: + - boost (1.76.0) + - DoubleConversion (1.1.6) + - FBLazyVector (0.70.0-rc.3) + - FBReactNativeSpec (0.70.0-rc.3): + - RCT-Folly (= 2021.07.22.00) + - RCTRequired (= 0.70.0-rc.3) + - RCTTypeSafety (= 0.70.0-rc.3) + - React-Core (= 0.70.0-rc.3) + - React-jsi (= 0.70.0-rc.3) + - ReactCommon/turbomodule/core (= 0.70.0-rc.3) + - fmt (6.2.1) + - glog (0.3.5) + - hermes-engine (0.70.0-rc.3) + - libevent (2.1.12) + - RCT-Folly (2021.07.22.00): + - boost + - DoubleConversion + - fmt (~> 6.2.1) + - glog + - RCT-Folly/Default (= 2021.07.22.00) + - RCT-Folly/Default (2021.07.22.00): + - boost + - DoubleConversion + - fmt (~> 6.2.1) + - glog + - RCT-Folly/Fabric (2021.07.22.00): + - boost + - DoubleConversion + - fmt (~> 6.2.1) + - glog + - RCT-Folly/Futures (2021.07.22.00): + - boost + - DoubleConversion + - fmt (~> 6.2.1) + - glog + - libevent + - RCTRequired (0.70.0-rc.3) + - RCTTypeSafety (0.70.0-rc.3): + - FBLazyVector (= 0.70.0-rc.3) + - RCTRequired (= 0.70.0-rc.3) + - React-Core (= 0.70.0-rc.3) + - React (0.70.0-rc.3): + - React-Core (= 0.70.0-rc.3) + - React-Core/DevSupport (= 0.70.0-rc.3) + - React-Core/RCTWebSocket (= 0.70.0-rc.3) + - React-RCTActionSheet (= 0.70.0-rc.3) + - React-RCTAnimation (= 0.70.0-rc.3) + - React-RCTBlob (= 0.70.0-rc.3) + - React-RCTImage (= 0.70.0-rc.3) + - React-RCTLinking (= 0.70.0-rc.3) + - React-RCTNetwork (= 0.70.0-rc.3) + - React-RCTSettings (= 0.70.0-rc.3) + - React-RCTText (= 0.70.0-rc.3) + - React-RCTVibration (= 0.70.0-rc.3) + - React-bridging (0.70.0-rc.3): + - RCT-Folly (= 2021.07.22.00) + - React-jsi (= 0.70.0-rc.3) + - React-callinvoker (0.70.0-rc.3) + - React-Codegen (0.70.0-rc.3): + - FBReactNativeSpec (= 0.70.0-rc.3) + - RCT-Folly (= 2021.07.22.00) + - RCTRequired (= 0.70.0-rc.3) + - RCTTypeSafety (= 0.70.0-rc.3) + - React-Core (= 0.70.0-rc.3) + - React-graphics (= 0.70.0-rc.3) + - React-jsi (= 0.70.0-rc.3) + - React-jsiexecutor (= 0.70.0-rc.3) + - React-rncore (= 0.70.0-rc.3) + - ReactCommon/turbomodule/core (= 0.70.0-rc.3) + - React-Core (0.70.0-rc.3): + - glog + - RCT-Folly (= 2021.07.22.00) + - React-Core/Default (= 0.70.0-rc.3) + - React-cxxreact (= 0.70.0-rc.3) + - React-jsi (= 0.70.0-rc.3) + - React-jsiexecutor (= 0.70.0-rc.3) + - React-perflogger (= 0.70.0-rc.3) + - Yoga + - React-Core/CoreModulesHeaders (0.70.0-rc.3): + - glog + - RCT-Folly (= 2021.07.22.00) + - React-Core/Default + - React-cxxreact (= 0.70.0-rc.3) + - React-jsi (= 0.70.0-rc.3) + - React-jsiexecutor (= 0.70.0-rc.3) + - React-perflogger (= 0.70.0-rc.3) + - Yoga + - React-Core/Default (0.70.0-rc.3): + - glog + - RCT-Folly (= 2021.07.22.00) + - React-cxxreact (= 0.70.0-rc.3) + - React-jsi (= 0.70.0-rc.3) + - React-jsiexecutor (= 0.70.0-rc.3) + - React-perflogger (= 0.70.0-rc.3) + - Yoga + - React-Core/DevSupport (0.70.0-rc.3): + - glog + - RCT-Folly (= 2021.07.22.00) + - React-Core/Default (= 0.70.0-rc.3) + - React-Core/RCTWebSocket (= 0.70.0-rc.3) + - React-cxxreact (= 0.70.0-rc.3) + - React-jsi (= 0.70.0-rc.3) + - React-jsiexecutor (= 0.70.0-rc.3) + - React-jsinspector (= 0.70.0-rc.3) + - React-perflogger (= 0.70.0-rc.3) + - Yoga + - React-Core/RCTActionSheetHeaders (0.70.0-rc.3): + - glog + - RCT-Folly (= 2021.07.22.00) + - React-Core/Default + - React-cxxreact (= 0.70.0-rc.3) + - React-jsi (= 0.70.0-rc.3) + - React-jsiexecutor (= 0.70.0-rc.3) + - React-perflogger (= 0.70.0-rc.3) + - Yoga + - React-Core/RCTAnimationHeaders (0.70.0-rc.3): + - glog + - RCT-Folly (= 2021.07.22.00) + - React-Core/Default + - React-cxxreact (= 0.70.0-rc.3) + - React-jsi (= 0.70.0-rc.3) + - React-jsiexecutor (= 0.70.0-rc.3) + - React-perflogger (= 0.70.0-rc.3) + - Yoga + - React-Core/RCTBlobHeaders (0.70.0-rc.3): + - glog + - RCT-Folly (= 2021.07.22.00) + - React-Core/Default + - React-cxxreact (= 0.70.0-rc.3) + - React-jsi (= 0.70.0-rc.3) + - React-jsiexecutor (= 0.70.0-rc.3) + - React-perflogger (= 0.70.0-rc.3) + - Yoga + - React-Core/RCTImageHeaders (0.70.0-rc.3): + - glog + - RCT-Folly (= 2021.07.22.00) + - React-Core/Default + - React-cxxreact (= 0.70.0-rc.3) + - React-jsi (= 0.70.0-rc.3) + - React-jsiexecutor (= 0.70.0-rc.3) + - React-perflogger (= 0.70.0-rc.3) + - Yoga + - React-Core/RCTLinkingHeaders (0.70.0-rc.3): + - glog + - RCT-Folly (= 2021.07.22.00) + - React-Core/Default + - React-cxxreact (= 0.70.0-rc.3) + - React-jsi (= 0.70.0-rc.3) + - React-jsiexecutor (= 0.70.0-rc.3) + - React-perflogger (= 0.70.0-rc.3) + - Yoga + - React-Core/RCTNetworkHeaders (0.70.0-rc.3): + - glog + - RCT-Folly (= 2021.07.22.00) + - React-Core/Default + - React-cxxreact (= 0.70.0-rc.3) + - React-jsi (= 0.70.0-rc.3) + - React-jsiexecutor (= 0.70.0-rc.3) + - React-perflogger (= 0.70.0-rc.3) + - Yoga + - React-Core/RCTSettingsHeaders (0.70.0-rc.3): + - glog + - RCT-Folly (= 2021.07.22.00) + - React-Core/Default + - React-cxxreact (= 0.70.0-rc.3) + - React-jsi (= 0.70.0-rc.3) + - React-jsiexecutor (= 0.70.0-rc.3) + - React-perflogger (= 0.70.0-rc.3) + - Yoga + - React-Core/RCTTextHeaders (0.70.0-rc.3): + - glog + - RCT-Folly (= 2021.07.22.00) + - React-Core/Default + - React-cxxreact (= 0.70.0-rc.3) + - React-jsi (= 0.70.0-rc.3) + - React-jsiexecutor (= 0.70.0-rc.3) + - React-perflogger (= 0.70.0-rc.3) + - Yoga + - React-Core/RCTVibrationHeaders (0.70.0-rc.3): + - glog + - RCT-Folly (= 2021.07.22.00) + - React-Core/Default + - React-cxxreact (= 0.70.0-rc.3) + - React-jsi (= 0.70.0-rc.3) + - React-jsiexecutor (= 0.70.0-rc.3) + - React-perflogger (= 0.70.0-rc.3) + - Yoga + - React-Core/RCTWebSocket (0.70.0-rc.3): + - glog + - RCT-Folly (= 2021.07.22.00) + - React-Core/Default (= 0.70.0-rc.3) + - React-cxxreact (= 0.70.0-rc.3) + - React-jsi (= 0.70.0-rc.3) + - React-jsiexecutor (= 0.70.0-rc.3) + - React-perflogger (= 0.70.0-rc.3) + - Yoga + - React-CoreModules (0.70.0-rc.3): + - RCT-Folly (= 2021.07.22.00) + - RCTTypeSafety (= 0.70.0-rc.3) + - React-Codegen (= 0.70.0-rc.3) + - React-Core/CoreModulesHeaders (= 0.70.0-rc.3) + - React-jsi (= 0.70.0-rc.3) + - React-RCTImage (= 0.70.0-rc.3) + - ReactCommon/turbomodule/core (= 0.70.0-rc.3) + - React-cxxreact (0.70.0-rc.3): + - boost (= 1.76.0) + - DoubleConversion + - glog + - RCT-Folly (= 2021.07.22.00) + - React-callinvoker (= 0.70.0-rc.3) + - React-jsi (= 0.70.0-rc.3) + - React-jsinspector (= 0.70.0-rc.3) + - React-logger (= 0.70.0-rc.3) + - React-perflogger (= 0.70.0-rc.3) + - React-runtimeexecutor (= 0.70.0-rc.3) + - React-Fabric (0.70.0-rc.3): + - RCT-Folly/Fabric (= 2021.07.22.00) + - RCTRequired (= 0.70.0-rc.3) + - RCTTypeSafety (= 0.70.0-rc.3) + - React-Fabric/animations (= 0.70.0-rc.3) + - React-Fabric/attributedstring (= 0.70.0-rc.3) + - React-Fabric/butter (= 0.70.0-rc.3) + - React-Fabric/componentregistry (= 0.70.0-rc.3) + - React-Fabric/componentregistrynative (= 0.70.0-rc.3) + - React-Fabric/components (= 0.70.0-rc.3) + - React-Fabric/config (= 0.70.0-rc.3) + - React-Fabric/core (= 0.70.0-rc.3) + - React-Fabric/debug_core (= 0.70.0-rc.3) + - React-Fabric/debug_renderer (= 0.70.0-rc.3) + - React-Fabric/imagemanager (= 0.70.0-rc.3) + - React-Fabric/leakchecker (= 0.70.0-rc.3) + - React-Fabric/mounting (= 0.70.0-rc.3) + - React-Fabric/runtimescheduler (= 0.70.0-rc.3) + - React-Fabric/scheduler (= 0.70.0-rc.3) + - React-Fabric/telemetry (= 0.70.0-rc.3) + - React-Fabric/templateprocessor (= 0.70.0-rc.3) + - React-Fabric/textlayoutmanager (= 0.70.0-rc.3) + - React-Fabric/uimanager (= 0.70.0-rc.3) + - React-Fabric/utils (= 0.70.0-rc.3) + - React-graphics (= 0.70.0-rc.3) + - React-jsi (= 0.70.0-rc.3) + - React-jsiexecutor (= 0.70.0-rc.3) + - ReactCommon/turbomodule/core (= 0.70.0-rc.3) + - React-Fabric/animations (0.70.0-rc.3): + - RCT-Folly/Fabric (= 2021.07.22.00) + - RCTRequired (= 0.70.0-rc.3) + - RCTTypeSafety (= 0.70.0-rc.3) + - React-graphics (= 0.70.0-rc.3) + - React-jsi (= 0.70.0-rc.3) + - React-jsiexecutor (= 0.70.0-rc.3) + - ReactCommon/turbomodule/core (= 0.70.0-rc.3) + - React-Fabric/attributedstring (0.70.0-rc.3): + - RCT-Folly/Fabric (= 2021.07.22.00) + - RCTRequired (= 0.70.0-rc.3) + - RCTTypeSafety (= 0.70.0-rc.3) + - React-graphics (= 0.70.0-rc.3) + - React-jsi (= 0.70.0-rc.3) + - React-jsiexecutor (= 0.70.0-rc.3) + - ReactCommon/turbomodule/core (= 0.70.0-rc.3) + - React-Fabric/butter (0.70.0-rc.3): + - RCT-Folly/Fabric (= 2021.07.22.00) + - RCTRequired (= 0.70.0-rc.3) + - RCTTypeSafety (= 0.70.0-rc.3) + - React-graphics (= 0.70.0-rc.3) + - React-jsi (= 0.70.0-rc.3) + - React-jsiexecutor (= 0.70.0-rc.3) + - ReactCommon/turbomodule/core (= 0.70.0-rc.3) + - React-Fabric/componentregistry (0.70.0-rc.3): + - RCT-Folly/Fabric (= 2021.07.22.00) + - RCTRequired (= 0.70.0-rc.3) + - RCTTypeSafety (= 0.70.0-rc.3) + - React-graphics (= 0.70.0-rc.3) + - React-jsi (= 0.70.0-rc.3) + - React-jsiexecutor (= 0.70.0-rc.3) + - ReactCommon/turbomodule/core (= 0.70.0-rc.3) + - React-Fabric/componentregistrynative (0.70.0-rc.3): + - RCT-Folly/Fabric (= 2021.07.22.00) + - RCTRequired (= 0.70.0-rc.3) + - RCTTypeSafety (= 0.70.0-rc.3) + - React-graphics (= 0.70.0-rc.3) + - React-jsi (= 0.70.0-rc.3) + - React-jsiexecutor (= 0.70.0-rc.3) + - ReactCommon/turbomodule/core (= 0.70.0-rc.3) + - React-Fabric/components (0.70.0-rc.3): + - RCT-Folly/Fabric (= 2021.07.22.00) + - RCTRequired (= 0.70.0-rc.3) + - RCTTypeSafety (= 0.70.0-rc.3) + - React-Fabric/components/activityindicator (= 0.70.0-rc.3) + - React-Fabric/components/image (= 0.70.0-rc.3) + - React-Fabric/components/inputaccessory (= 0.70.0-rc.3) + - React-Fabric/components/legacyviewmanagerinterop (= 0.70.0-rc.3) + - React-Fabric/components/modal (= 0.70.0-rc.3) + - React-Fabric/components/root (= 0.70.0-rc.3) + - React-Fabric/components/safeareaview (= 0.70.0-rc.3) + - React-Fabric/components/scrollview (= 0.70.0-rc.3) + - React-Fabric/components/slider (= 0.70.0-rc.3) + - React-Fabric/components/text (= 0.70.0-rc.3) + - React-Fabric/components/textinput (= 0.70.0-rc.3) + - React-Fabric/components/unimplementedview (= 0.70.0-rc.3) + - React-Fabric/components/view (= 0.70.0-rc.3) + - React-graphics (= 0.70.0-rc.3) + - React-jsi (= 0.70.0-rc.3) + - React-jsiexecutor (= 0.70.0-rc.3) + - ReactCommon/turbomodule/core (= 0.70.0-rc.3) + - React-Fabric/components/activityindicator (0.70.0-rc.3): + - RCT-Folly/Fabric (= 2021.07.22.00) + - RCTRequired (= 0.70.0-rc.3) + - RCTTypeSafety (= 0.70.0-rc.3) + - React-graphics (= 0.70.0-rc.3) + - React-jsi (= 0.70.0-rc.3) + - React-jsiexecutor (= 0.70.0-rc.3) + - ReactCommon/turbomodule/core (= 0.70.0-rc.3) + - React-Fabric/components/image (0.70.0-rc.3): + - RCT-Folly/Fabric (= 2021.07.22.00) + - RCTRequired (= 0.70.0-rc.3) + - RCTTypeSafety (= 0.70.0-rc.3) + - React-graphics (= 0.70.0-rc.3) + - React-jsi (= 0.70.0-rc.3) + - React-jsiexecutor (= 0.70.0-rc.3) + - ReactCommon/turbomodule/core (= 0.70.0-rc.3) + - React-Fabric/components/inputaccessory (0.70.0-rc.3): + - RCT-Folly/Fabric (= 2021.07.22.00) + - RCTRequired (= 0.70.0-rc.3) + - RCTTypeSafety (= 0.70.0-rc.3) + - React-graphics (= 0.70.0-rc.3) + - React-jsi (= 0.70.0-rc.3) + - React-jsiexecutor (= 0.70.0-rc.3) + - ReactCommon/turbomodule/core (= 0.70.0-rc.3) + - React-Fabric/components/legacyviewmanagerinterop (0.70.0-rc.3): + - RCT-Folly/Fabric (= 2021.07.22.00) + - RCTRequired (= 0.70.0-rc.3) + - RCTTypeSafety (= 0.70.0-rc.3) + - React-graphics (= 0.70.0-rc.3) + - React-jsi (= 0.70.0-rc.3) + - React-jsiexecutor (= 0.70.0-rc.3) + - ReactCommon/turbomodule/core (= 0.70.0-rc.3) + - React-Fabric/components/modal (0.70.0-rc.3): + - RCT-Folly/Fabric (= 2021.07.22.00) + - RCTRequired (= 0.70.0-rc.3) + - RCTTypeSafety (= 0.70.0-rc.3) + - React-graphics (= 0.70.0-rc.3) + - React-jsi (= 0.70.0-rc.3) + - React-jsiexecutor (= 0.70.0-rc.3) + - ReactCommon/turbomodule/core (= 0.70.0-rc.3) + - React-Fabric/components/root (0.70.0-rc.3): + - RCT-Folly/Fabric (= 2021.07.22.00) + - RCTRequired (= 0.70.0-rc.3) + - RCTTypeSafety (= 0.70.0-rc.3) + - React-graphics (= 0.70.0-rc.3) + - React-jsi (= 0.70.0-rc.3) + - React-jsiexecutor (= 0.70.0-rc.3) + - ReactCommon/turbomodule/core (= 0.70.0-rc.3) + - React-Fabric/components/safeareaview (0.70.0-rc.3): + - RCT-Folly/Fabric (= 2021.07.22.00) + - RCTRequired (= 0.70.0-rc.3) + - RCTTypeSafety (= 0.70.0-rc.3) + - React-graphics (= 0.70.0-rc.3) + - React-jsi (= 0.70.0-rc.3) + - React-jsiexecutor (= 0.70.0-rc.3) + - ReactCommon/turbomodule/core (= 0.70.0-rc.3) + - React-Fabric/components/scrollview (0.70.0-rc.3): + - RCT-Folly/Fabric (= 2021.07.22.00) + - RCTRequired (= 0.70.0-rc.3) + - RCTTypeSafety (= 0.70.0-rc.3) + - React-graphics (= 0.70.0-rc.3) + - React-jsi (= 0.70.0-rc.3) + - React-jsiexecutor (= 0.70.0-rc.3) + - ReactCommon/turbomodule/core (= 0.70.0-rc.3) + - React-Fabric/components/slider (0.70.0-rc.3): + - RCT-Folly/Fabric (= 2021.07.22.00) + - RCTRequired (= 0.70.0-rc.3) + - RCTTypeSafety (= 0.70.0-rc.3) + - React-graphics (= 0.70.0-rc.3) + - React-jsi (= 0.70.0-rc.3) + - React-jsiexecutor (= 0.70.0-rc.3) + - ReactCommon/turbomodule/core (= 0.70.0-rc.3) + - React-Fabric/components/text (0.70.0-rc.3): + - RCT-Folly/Fabric (= 2021.07.22.00) + - RCTRequired (= 0.70.0-rc.3) + - RCTTypeSafety (= 0.70.0-rc.3) + - React-graphics (= 0.70.0-rc.3) + - React-jsi (= 0.70.0-rc.3) + - React-jsiexecutor (= 0.70.0-rc.3) + - ReactCommon/turbomodule/core (= 0.70.0-rc.3) + - React-Fabric/components/textinput (0.70.0-rc.3): + - RCT-Folly/Fabric (= 2021.07.22.00) + - RCTRequired (= 0.70.0-rc.3) + - RCTTypeSafety (= 0.70.0-rc.3) + - React-graphics (= 0.70.0-rc.3) + - React-jsi (= 0.70.0-rc.3) + - React-jsiexecutor (= 0.70.0-rc.3) + - ReactCommon/turbomodule/core (= 0.70.0-rc.3) + - React-Fabric/components/unimplementedview (0.70.0-rc.3): + - RCT-Folly/Fabric (= 2021.07.22.00) + - RCTRequired (= 0.70.0-rc.3) + - RCTTypeSafety (= 0.70.0-rc.3) + - React-graphics (= 0.70.0-rc.3) + - React-jsi (= 0.70.0-rc.3) + - React-jsiexecutor (= 0.70.0-rc.3) + - ReactCommon/turbomodule/core (= 0.70.0-rc.3) + - React-Fabric/components/view (0.70.0-rc.3): + - RCT-Folly/Fabric (= 2021.07.22.00) + - RCTRequired (= 0.70.0-rc.3) + - RCTTypeSafety (= 0.70.0-rc.3) + - React-graphics (= 0.70.0-rc.3) + - React-jsi (= 0.70.0-rc.3) + - React-jsiexecutor (= 0.70.0-rc.3) + - ReactCommon/turbomodule/core (= 0.70.0-rc.3) + - Yoga + - React-Fabric/config (0.70.0-rc.3): + - RCT-Folly/Fabric (= 2021.07.22.00) + - RCTRequired (= 0.70.0-rc.3) + - RCTTypeSafety (= 0.70.0-rc.3) + - React-graphics (= 0.70.0-rc.3) + - React-jsi (= 0.70.0-rc.3) + - React-jsiexecutor (= 0.70.0-rc.3) + - ReactCommon/turbomodule/core (= 0.70.0-rc.3) + - React-Fabric/core (0.70.0-rc.3): + - RCT-Folly/Fabric (= 2021.07.22.00) + - RCTRequired (= 0.70.0-rc.3) + - RCTTypeSafety (= 0.70.0-rc.3) + - React-graphics (= 0.70.0-rc.3) + - React-jsi (= 0.70.0-rc.3) + - React-jsiexecutor (= 0.70.0-rc.3) + - ReactCommon/turbomodule/core (= 0.70.0-rc.3) + - React-Fabric/debug_core (0.70.0-rc.3): + - RCT-Folly/Fabric (= 2021.07.22.00) + - RCTRequired (= 0.70.0-rc.3) + - RCTTypeSafety (= 0.70.0-rc.3) + - React-graphics (= 0.70.0-rc.3) + - React-jsi (= 0.70.0-rc.3) + - React-jsiexecutor (= 0.70.0-rc.3) + - ReactCommon/turbomodule/core (= 0.70.0-rc.3) + - React-Fabric/debug_renderer (0.70.0-rc.3): + - RCT-Folly/Fabric (= 2021.07.22.00) + - RCTRequired (= 0.70.0-rc.3) + - RCTTypeSafety (= 0.70.0-rc.3) + - React-graphics (= 0.70.0-rc.3) + - React-jsi (= 0.70.0-rc.3) + - React-jsiexecutor (= 0.70.0-rc.3) + - ReactCommon/turbomodule/core (= 0.70.0-rc.3) + - React-Fabric/imagemanager (0.70.0-rc.3): + - RCT-Folly/Fabric (= 2021.07.22.00) + - RCTRequired (= 0.70.0-rc.3) + - RCTTypeSafety (= 0.70.0-rc.3) + - React-graphics (= 0.70.0-rc.3) + - React-jsi (= 0.70.0-rc.3) + - React-jsiexecutor (= 0.70.0-rc.3) + - React-RCTImage (= 0.70.0-rc.3) + - ReactCommon/turbomodule/core (= 0.70.0-rc.3) + - React-Fabric/leakchecker (0.70.0-rc.3): + - RCT-Folly/Fabric (= 2021.07.22.00) + - RCTRequired (= 0.70.0-rc.3) + - RCTTypeSafety (= 0.70.0-rc.3) + - React-graphics (= 0.70.0-rc.3) + - React-jsi (= 0.70.0-rc.3) + - React-jsiexecutor (= 0.70.0-rc.3) + - ReactCommon/turbomodule/core (= 0.70.0-rc.3) + - React-Fabric/mounting (0.70.0-rc.3): + - RCT-Folly/Fabric (= 2021.07.22.00) + - RCTRequired (= 0.70.0-rc.3) + - RCTTypeSafety (= 0.70.0-rc.3) + - React-graphics (= 0.70.0-rc.3) + - React-jsi (= 0.70.0-rc.3) + - React-jsiexecutor (= 0.70.0-rc.3) + - ReactCommon/turbomodule/core (= 0.70.0-rc.3) + - React-Fabric/runtimescheduler (0.70.0-rc.3): + - RCT-Folly/Fabric (= 2021.07.22.00) + - RCTRequired (= 0.70.0-rc.3) + - RCTTypeSafety (= 0.70.0-rc.3) + - React-graphics (= 0.70.0-rc.3) + - React-jsi (= 0.70.0-rc.3) + - React-jsiexecutor (= 0.70.0-rc.3) + - ReactCommon/turbomodule/core (= 0.70.0-rc.3) + - React-Fabric/scheduler (0.70.0-rc.3): + - RCT-Folly/Fabric (= 2021.07.22.00) + - RCTRequired (= 0.70.0-rc.3) + - RCTTypeSafety (= 0.70.0-rc.3) + - React-graphics (= 0.70.0-rc.3) + - React-jsi (= 0.70.0-rc.3) + - React-jsiexecutor (= 0.70.0-rc.3) + - ReactCommon/turbomodule/core (= 0.70.0-rc.3) + - React-Fabric/telemetry (0.70.0-rc.3): + - RCT-Folly/Fabric (= 2021.07.22.00) + - RCTRequired (= 0.70.0-rc.3) + - RCTTypeSafety (= 0.70.0-rc.3) + - React-graphics (= 0.70.0-rc.3) + - React-jsi (= 0.70.0-rc.3) + - React-jsiexecutor (= 0.70.0-rc.3) + - ReactCommon/turbomodule/core (= 0.70.0-rc.3) + - React-Fabric/templateprocessor (0.70.0-rc.3): + - RCT-Folly/Fabric (= 2021.07.22.00) + - RCTRequired (= 0.70.0-rc.3) + - RCTTypeSafety (= 0.70.0-rc.3) + - React-graphics (= 0.70.0-rc.3) + - React-jsi (= 0.70.0-rc.3) + - React-jsiexecutor (= 0.70.0-rc.3) + - ReactCommon/turbomodule/core (= 0.70.0-rc.3) + - React-Fabric/textlayoutmanager (0.70.0-rc.3): + - RCT-Folly/Fabric (= 2021.07.22.00) + - RCTRequired (= 0.70.0-rc.3) + - RCTTypeSafety (= 0.70.0-rc.3) + - React-Fabric/uimanager + - React-graphics (= 0.70.0-rc.3) + - React-jsi (= 0.70.0-rc.3) + - React-jsiexecutor (= 0.70.0-rc.3) + - ReactCommon/turbomodule/core (= 0.70.0-rc.3) + - React-Fabric/uimanager (0.70.0-rc.3): + - RCT-Folly/Fabric (= 2021.07.22.00) + - RCTRequired (= 0.70.0-rc.3) + - RCTTypeSafety (= 0.70.0-rc.3) + - React-graphics (= 0.70.0-rc.3) + - React-jsi (= 0.70.0-rc.3) + - React-jsiexecutor (= 0.70.0-rc.3) + - ReactCommon/turbomodule/core (= 0.70.0-rc.3) + - React-Fabric/utils (0.70.0-rc.3): + - RCT-Folly/Fabric (= 2021.07.22.00) + - RCTRequired (= 0.70.0-rc.3) + - RCTTypeSafety (= 0.70.0-rc.3) + - React-graphics (= 0.70.0-rc.3) + - React-jsi (= 0.70.0-rc.3) + - React-jsiexecutor (= 0.70.0-rc.3) + - ReactCommon/turbomodule/core (= 0.70.0-rc.3) + - React-graphics (0.70.0-rc.3): + - RCT-Folly/Fabric (= 2021.07.22.00) + - React-Core/Default (= 0.70.0-rc.3) + - React-hermes (0.70.0-rc.3): + - DoubleConversion + - glog + - hermes-engine + - RCT-Folly (= 2021.07.22.00) + - RCT-Folly/Futures (= 2021.07.22.00) + - React-cxxreact (= 0.70.0-rc.3) + - React-jsi (= 0.70.0-rc.3) + - React-jsiexecutor (= 0.70.0-rc.3) + - React-jsinspector (= 0.70.0-rc.3) + - React-perflogger (= 0.70.0-rc.3) + - React-jsi (0.70.0-rc.3): + - boost (= 1.76.0) + - DoubleConversion + - glog + - RCT-Folly (= 2021.07.22.00) + - React-jsi/Default (= 0.70.0-rc.3) + - React-jsi/Default (0.70.0-rc.3): + - boost (= 1.76.0) + - DoubleConversion + - glog + - RCT-Folly (= 2021.07.22.00) + - React-jsi/Fabric (0.70.0-rc.3): + - boost (= 1.76.0) + - DoubleConversion + - glog + - RCT-Folly (= 2021.07.22.00) + - React-jsiexecutor (0.70.0-rc.3): + - DoubleConversion + - glog + - RCT-Folly (= 2021.07.22.00) + - React-cxxreact (= 0.70.0-rc.3) + - React-jsi (= 0.70.0-rc.3) + - React-perflogger (= 0.70.0-rc.3) + - React-jsinspector (0.70.0-rc.3) + - React-logger (0.70.0-rc.3): + - glog + - React-perflogger (0.70.0-rc.3) + - React-RCTActionSheet (0.70.0-rc.3): + - React-Core/RCTActionSheetHeaders (= 0.70.0-rc.3) + - React-RCTAnimation (0.70.0-rc.3): + - RCT-Folly (= 2021.07.22.00) + - RCTTypeSafety (= 0.70.0-rc.3) + - React-Codegen (= 0.70.0-rc.3) + - React-Core/RCTAnimationHeaders (= 0.70.0-rc.3) + - React-jsi (= 0.70.0-rc.3) + - ReactCommon/turbomodule/core (= 0.70.0-rc.3) + - React-RCTBlob (0.70.0-rc.3): + - RCT-Folly (= 2021.07.22.00) + - React-Codegen (= 0.70.0-rc.3) + - React-Core/RCTBlobHeaders (= 0.70.0-rc.3) + - React-Core/RCTWebSocket (= 0.70.0-rc.3) + - React-jsi (= 0.70.0-rc.3) + - React-RCTNetwork (= 0.70.0-rc.3) + - ReactCommon/turbomodule/core (= 0.70.0-rc.3) + - React-RCTFabric (0.70.0-rc.3): + - RCT-Folly/Fabric (= 2021.07.22.00) + - React-Core (= 0.70.0-rc.3) + - React-Fabric (= 0.70.0-rc.3) + - React-RCTImage (= 0.70.0-rc.3) + - React-RCTImage (0.70.0-rc.3): + - RCT-Folly (= 2021.07.22.00) + - RCTTypeSafety (= 0.70.0-rc.3) + - React-Codegen (= 0.70.0-rc.3) + - React-Core/RCTImageHeaders (= 0.70.0-rc.3) + - React-jsi (= 0.70.0-rc.3) + - React-RCTNetwork (= 0.70.0-rc.3) + - ReactCommon/turbomodule/core (= 0.70.0-rc.3) + - React-RCTLinking (0.70.0-rc.3): + - React-Codegen (= 0.70.0-rc.3) + - React-Core/RCTLinkingHeaders (= 0.70.0-rc.3) + - React-jsi (= 0.70.0-rc.3) + - ReactCommon/turbomodule/core (= 0.70.0-rc.3) + - React-RCTNetwork (0.70.0-rc.3): + - RCT-Folly (= 2021.07.22.00) + - RCTTypeSafety (= 0.70.0-rc.3) + - React-Codegen (= 0.70.0-rc.3) + - React-Core/RCTNetworkHeaders (= 0.70.0-rc.3) + - React-jsi (= 0.70.0-rc.3) + - ReactCommon/turbomodule/core (= 0.70.0-rc.3) + - React-RCTSettings (0.70.0-rc.3): + - RCT-Folly (= 2021.07.22.00) + - RCTTypeSafety (= 0.70.0-rc.3) + - React-Codegen (= 0.70.0-rc.3) + - React-Core/RCTSettingsHeaders (= 0.70.0-rc.3) + - React-jsi (= 0.70.0-rc.3) + - ReactCommon/turbomodule/core (= 0.70.0-rc.3) + - React-RCTText (0.70.0-rc.3): + - React-Core/RCTTextHeaders (= 0.70.0-rc.3) + - React-RCTVibration (0.70.0-rc.3): + - RCT-Folly (= 2021.07.22.00) + - React-Codegen (= 0.70.0-rc.3) + - React-Core/RCTVibrationHeaders (= 0.70.0-rc.3) + - React-jsi (= 0.70.0-rc.3) + - ReactCommon/turbomodule/core (= 0.70.0-rc.3) + - React-rncore (0.70.0-rc.3) + - React-runtimeexecutor (0.70.0-rc.3): + - React-jsi (= 0.70.0-rc.3) + - ReactCommon/turbomodule/core (0.70.0-rc.3): + - DoubleConversion + - glog + - RCT-Folly (= 2021.07.22.00) + - React-bridging (= 0.70.0-rc.3) + - React-callinvoker (= 0.70.0-rc.3) + - React-Core (= 0.70.0-rc.3) + - React-cxxreact (= 0.70.0-rc.3) + - React-jsi (= 0.70.0-rc.3) + - React-logger (= 0.70.0-rc.3) + - React-perflogger (= 0.70.0-rc.3) + - RNFlashList (1.2.1): + - RCT-Folly + - RCTRequired + - RCTTypeSafety + - React + - React-Codegen + - React-RCTFabric + - ReactCommon/turbomodule/core + - RNFlashList/Tests (1.2.1): + - RCT-Folly + - RCTRequired + - RCTTypeSafety + - React + - React-Codegen + - React-RCTFabric + - ReactCommon/turbomodule/core + - Yoga (1.14.0) + +DEPENDENCIES: + - boost (from `../node_modules/react-native/third-party-podspecs/boost.podspec`) + - DoubleConversion (from `../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec`) + - FBLazyVector (from `../node_modules/react-native/Libraries/FBLazyVector`) + - FBReactNativeSpec (from `../node_modules/react-native/React/FBReactNativeSpec`) + - glog (from `../node_modules/react-native/third-party-podspecs/glog.podspec`) + - hermes-engine (from `../node_modules/react-native/sdks/hermes/hermes-engine.podspec`) + - libevent (~> 2.1.12) + - RCT-Folly (from `../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec`) + - RCT-Folly/Fabric (from `../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec`) + - RCTRequired (from `../node_modules/react-native/Libraries/RCTRequired`) + - RCTTypeSafety (from `../node_modules/react-native/Libraries/TypeSafety`) + - React (from `../node_modules/react-native/`) + - React-bridging (from `../node_modules/react-native/ReactCommon`) + - React-callinvoker (from `../node_modules/react-native/ReactCommon/callinvoker`) + - React-Codegen (from `build/generated/ios`) + - React-Core (from `../node_modules/react-native/`) + - React-Core/RCTWebSocket (from `../node_modules/react-native/`) + - React-CoreModules (from `../node_modules/react-native/React/CoreModules`) + - React-cxxreact (from `../node_modules/react-native/ReactCommon/cxxreact`) + - React-Fabric (from `../node_modules/react-native/ReactCommon`) + - React-graphics (from `../node_modules/react-native/ReactCommon/react/renderer/graphics`) + - React-hermes (from `../node_modules/react-native/ReactCommon/hermes`) + - React-jsi (from `../node_modules/react-native/ReactCommon/jsi`) + - React-jsi/Fabric (from `../node_modules/react-native/ReactCommon/jsi`) + - React-jsiexecutor (from `../node_modules/react-native/ReactCommon/jsiexecutor`) + - React-jsinspector (from `../node_modules/react-native/ReactCommon/jsinspector`) + - React-logger (from `../node_modules/react-native/ReactCommon/logger`) + - React-perflogger (from `../node_modules/react-native/ReactCommon/reactperflogger`) + - React-RCTActionSheet (from `../node_modules/react-native/Libraries/ActionSheetIOS`) + - React-RCTAnimation (from `../node_modules/react-native/Libraries/NativeAnimation`) + - React-RCTBlob (from `../node_modules/react-native/Libraries/Blob`) + - React-RCTFabric (from `../node_modules/react-native/React`) + - React-RCTImage (from `../node_modules/react-native/Libraries/Image`) + - React-RCTLinking (from `../node_modules/react-native/Libraries/LinkingIOS`) + - React-RCTNetwork (from `../node_modules/react-native/Libraries/Network`) + - React-RCTSettings (from `../node_modules/react-native/Libraries/Settings`) + - React-RCTText (from `../node_modules/react-native/Libraries/Text`) + - React-RCTVibration (from `../node_modules/react-native/Libraries/Vibration`) + - React-rncore (from `../node_modules/react-native/ReactCommon`) + - React-runtimeexecutor (from `../node_modules/react-native/ReactCommon/runtimeexecutor`) + - ReactCommon/turbomodule/core (from `../node_modules/react-native/ReactCommon`) + - RNFlashList (from `../../RNFlashList.podspec`) + - RNFlashList/Tests (from `../../RNFlashList.podspec`) + - Yoga (from `../node_modules/react-native/ReactCommon/yoga`) + +SPEC REPOS: + trunk: + - fmt + - libevent + +EXTERNAL SOURCES: + boost: + :podspec: "../node_modules/react-native/third-party-podspecs/boost.podspec" + DoubleConversion: + :podspec: "../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec" + FBLazyVector: + :path: "../node_modules/react-native/Libraries/FBLazyVector" + FBReactNativeSpec: + :path: "../node_modules/react-native/React/FBReactNativeSpec" + glog: + :podspec: "../node_modules/react-native/third-party-podspecs/glog.podspec" + hermes-engine: + :podspec: "../node_modules/react-native/sdks/hermes/hermes-engine.podspec" + RCT-Folly: + :podspec: "../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec" + RCTRequired: + :path: "../node_modules/react-native/Libraries/RCTRequired" + RCTTypeSafety: + :path: "../node_modules/react-native/Libraries/TypeSafety" + React: + :path: "../node_modules/react-native/" + React-bridging: + :path: "../node_modules/react-native/ReactCommon" + React-callinvoker: + :path: "../node_modules/react-native/ReactCommon/callinvoker" + React-Codegen: + :path: build/generated/ios + React-Core: + :path: "../node_modules/react-native/" + React-CoreModules: + :path: "../node_modules/react-native/React/CoreModules" + React-cxxreact: + :path: "../node_modules/react-native/ReactCommon/cxxreact" + React-Fabric: + :path: "../node_modules/react-native/ReactCommon" + React-graphics: + :path: "../node_modules/react-native/ReactCommon/react/renderer/graphics" + React-hermes: + :path: "../node_modules/react-native/ReactCommon/hermes" + React-jsi: + :path: "../node_modules/react-native/ReactCommon/jsi" + React-jsiexecutor: + :path: "../node_modules/react-native/ReactCommon/jsiexecutor" + React-jsinspector: + :path: "../node_modules/react-native/ReactCommon/jsinspector" + React-logger: + :path: "../node_modules/react-native/ReactCommon/logger" + React-perflogger: + :path: "../node_modules/react-native/ReactCommon/reactperflogger" + React-RCTActionSheet: + :path: "../node_modules/react-native/Libraries/ActionSheetIOS" + React-RCTAnimation: + :path: "../node_modules/react-native/Libraries/NativeAnimation" + React-RCTBlob: + :path: "../node_modules/react-native/Libraries/Blob" + React-RCTFabric: + :path: "../node_modules/react-native/React" + React-RCTImage: + :path: "../node_modules/react-native/Libraries/Image" + React-RCTLinking: + :path: "../node_modules/react-native/Libraries/LinkingIOS" + React-RCTNetwork: + :path: "../node_modules/react-native/Libraries/Network" + React-RCTSettings: + :path: "../node_modules/react-native/Libraries/Settings" + React-RCTText: + :path: "../node_modules/react-native/Libraries/Text" + React-RCTVibration: + :path: "../node_modules/react-native/Libraries/Vibration" + React-rncore: + :path: "../node_modules/react-native/ReactCommon" + React-runtimeexecutor: + :path: "../node_modules/react-native/ReactCommon/runtimeexecutor" + ReactCommon: + :path: "../node_modules/react-native/ReactCommon" + RNFlashList: + :path: "../../RNFlashList.podspec" + Yoga: + :path: "../node_modules/react-native/ReactCommon/yoga" + +SPEC CHECKSUMS: + boost: a7c83b31436843459a1961bfd74b96033dc77234 + DoubleConversion: 5189b271737e1565bdce30deb4a08d647e3f5f54 + FBLazyVector: 8b363b47bddb3eb449635a9f9704b79586df75c5 + FBReactNativeSpec: 5c910d671a7471a408e6809251850fd235164fc6 + fmt: ff9d55029c625d3757ed641535fd4a75fedc7ce9 + glog: 04b94705f318337d7ead9e6d17c019bd9b1f6b1b + hermes-engine: 6a7b41f50b095e424e881a244926506b53261acc + libevent: 4049cae6c81cdb3654a443be001fb9bdceff7913 + RCT-Folly: 0080d0a6ebf2577475bda044aa59e2ca1f909cda + RCTRequired: d916f831dc759d6c82f8ed4ba65c7d8560cca08e + RCTTypeSafety: efb890bfc4760619c35c590ad29b7d42595d8ef5 + React: 78b2c44d7d1cb9240ee25b3b753f0b9665158e73 + React-bridging: 66ea8c26b966d092860f1621b4b9fcf9e93dab72 + React-callinvoker: 3ff70ab2192e5f398dc01cbb483a03d7d029ff37 + React-Codegen: e1c3b251cbb761842b7bdbc11da28735b13c8c0f + React-Core: f66b311c3d31f6776d1e6d59a0e3b4982d756343 + React-CoreModules: b1cae76d1f4ad42f8f6054faf34ae63138526c7c + React-cxxreact: ca46f1995a00f8c116479bcfbbea81f769d82831 + React-Fabric: f36bec556ec456416ac0b1f10667a58b9e3ce652 + React-graphics: 16da01ece6dc979667eddaf158fbc8c188050bb8 + React-hermes: e401fe6a2535eb7eac65c19535f78411a06bcdc9 + React-jsi: 3560e4dac3d9bd6aa46e15c53263f752434d9e11 + React-jsiexecutor: 70734501469eb6a14da0d6a995b477ffc650f4e3 + React-jsinspector: a8186de0c2519e08573bfca97642e21448b6e0a7 + React-logger: 8ab3d18d882c00ac6e79bb8d3c050a3adc71f1b7 + React-perflogger: 211ab4691a41379d03e90c844f35d3db7177cced + React-RCTActionSheet: 6b79f36d7667c73fcba4e041fae9eaa70ac6e1e0 + React-RCTAnimation: 7ca23cab72c101cfb58031548a77273fee235bdf + React-RCTBlob: d406b8d5d3e5c53f75a24f1945fd666221c2f648 + React-RCTFabric: 037a821323214ecfd1347eb5a2af8d4b280ea335 + React-RCTImage: 7dcbbc3064d789b8b7f44d7fe46db4a86b5096e6 + React-RCTLinking: 5b4a59072c1446107aa0efc48fc7fe6c2682edc9 + React-RCTNetwork: 93f7d17e4104fd3f2338446c176bc756eeb5831d + React-RCTSettings: 6ec6c46e35297a4ac3f1768f3a9e80b88cf52ff2 + React-RCTText: acbac26cc0828628a7f12a4f2293a6439cda1669 + React-RCTVibration: 9062854de6e380cd74b73fab0bb2bc6379451d0b + React-rncore: 55e35fbadf994c9efa605a78bf9d1fb3f080bc55 + React-runtimeexecutor: 538c4d995c729b5247ac3149774f0a53f98570dd + ReactCommon: f7fc6b8b10e8f16f65a8009be266cfc1478fb20d + RNFlashList: 0b072aeaf0ea9c4e4a65e25c37eb514c2d141a05 + Yoga: 65fe91a246110ebd54e9c7388d98e90d861cb4e7 + +PODFILE CHECKSUM: 108ba1913a4f6c8efcdc73da0517b77737acc798 + +COCOAPODS: 1.11.3 diff --git a/fabricfixture/metro.config.js b/fabricfixture/metro.config.js new file mode 100644 index 000000000..f3f9c9e1f --- /dev/null +++ b/fabricfixture/metro.config.js @@ -0,0 +1,48 @@ +const path = require("path"); + +const exclusionList = require("metro-config/src/defaults/exclusionList"); +const escape = require("escape-string-regexp"); + +const package = require("../package.json"); + +const modules = Object.keys({ + ...package.peerDependencies, +}); + +const root = path.resolve(__dirname, ".."); + +let watchFolders = [root]; +watchFolders = watchFolders.concat([path.join(__dirname, "./node_modules")]); +watchFolders = watchFolders.concat([path.join(__dirname, "../node_modules")]); + +module.exports = (() => { + const config = { + projectRoot: __dirname, + transformer: { + getTransformOptions: () => ({ + transform: { + experimentalImportSupport: false, + inlineRequires: false, + }, + }), + }, + resolver: { + blockList: exclusionList( + modules.map( + (m) => + new RegExp(`^${escape(path.join(root, "node_modules", m))}\\/.*$`) + ) + ), + + extraNodeModules: modules.reduce((acc, name) => { + acc[name] = path.join(__dirname, "node_modules", name); + return acc; + }, {}), + }, + watchFolders, + }; + if (process.env.CI === "true") { + config.maxWorkers = 1; + } + return config; +})(); diff --git a/fabricfixture/package.json b/fabricfixture/package.json new file mode 100644 index 000000000..cff081d59 --- /dev/null +++ b/fabricfixture/package.json @@ -0,0 +1,33 @@ +{ + "name": "fabricfixture", + "version": "0.0.1", + "private": true, + "scripts": { + "android": "react-native run-android", + "ios": "react-native run-ios", + "start": "react-native start", + "lint": "eslint . --ext .js,.jsx,.ts,.tsx", + "build": "tsc -b" + }, + "dependencies": { + "react": "18.1.0", + "react-native": "0.70.0-rc.3", + "@shopify/flash-list": "link:../" + }, + "devDependencies": { + "@types/jest": "^27.5.0", + "@types/pixelmatch": "^5.2.4", + "@types/pngjs": "^6.0.1", + "babel-jest": "^27.5.1", + "babel-plugin-module-resolver": "^4.1.0", + "jest": "^27.5.1", + "metro-config": "^0.71.0", + "metro-react-native-babel-preset": "^0.72.0", + "patch-package": "^6.4.7", + "postinstall-postinstall": "^2.1.0", + "typescript": "^4.7.4" + }, + "jest": { + "preset": "react-native" + } +} diff --git a/fabricfixture/react-native.config.js b/fabricfixture/react-native.config.js new file mode 100644 index 000000000..0cd937978 --- /dev/null +++ b/fabricfixture/react-native.config.js @@ -0,0 +1,14 @@ +const path = require("path"); + +const root = path.resolve(__dirname, "../"); + +module.exports = { + dependencies: { + "@shopify/flash-list": { + root, + platforms: { + ios: null, + }, + }, + }, +}; diff --git a/fabricfixture/src/App.tsx b/fabricfixture/src/App.tsx new file mode 100644 index 000000000..6b3f63597 --- /dev/null +++ b/fabricfixture/src/App.tsx @@ -0,0 +1,13 @@ +/** + * Sample React Native App + * https://github.com/facebook/react-native + * + * @format + * @flow strict-local + */ + +import React from "react"; + +import PaginatedList from "./PaginatedList"; + +export default PaginatedList; diff --git a/fabricfixture/src/PaginatedList.tsx b/fabricfixture/src/PaginatedList.tsx new file mode 100644 index 000000000..3d3ae029d --- /dev/null +++ b/fabricfixture/src/PaginatedList.tsx @@ -0,0 +1,70 @@ +/** * + Use this component inside your React Native Application. + A scrollable list with different item type + */ +import React from "react"; +import { View, Text, StyleSheet } from "react-native"; +import { FlashList } from "@shopify/flash-list"; + +export interface PaginatedListState { + // This property is used but eslint fails to find its usage. + /* eslint-disable react/no-unused-prop-types */ + elems: any[]; +} + +/** * + * To test out just copy this component and render in you root component + */ +export default class PaginatedList extends React.Component { + state: PaginatedListState = this.getInitialState(); + + private getInitialState() { + return { elems: this._generateArray(0, 20) } as PaginatedListState; + } + + private _generateArray(start: number, size: number) { + const arr = new Array(size); + for (let i = 0; i < size; i++) { + arr[i] = start + i; + } + return arr; + } + + render() { + return ( + { + return item.toString(); + }} + renderItem={({ item }: { item: number }) => { + const backgroundColor = item % 2 === 0 ? "#00a1f1" : "#ffbb00"; + return ( + + Cell Id: {item} + + ); + }} + estimatedItemSize={100} + onEndReached={() => { + // Since FlatList is a pure component, data reference should change for a render + const elems = [...this.state.elems]; + elems.push(...this._generateArray(elems.length, 20)); + this.setState(() => { + return { elems }; + }); + }} + onEndReachedThreshold={0.2} + data={this.state.elems} + /> + ); + } +} + +const styles = StyleSheet.create({ + container: { + justifyContent: "space-around", + alignItems: "center", + height: 120, + backgroundColor: "#00a1f1", + }, +}); diff --git a/fabricfixture/src/assets/adaptive-icon.png b/fabricfixture/src/assets/adaptive-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..03d6f6b6c6727954aec1d8206222769afd178d8d GIT binary patch literal 17547 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 literal 0 HcmV?d00001 diff --git a/fabricfixture/src/assets/arrow.png b/fabricfixture/src/assets/arrow.png new file mode 100644 index 0000000000000000000000000000000000000000..2981440d2757a751493de6164f89b8024831d32b GIT binary patch literal 622 zcmV-!0+IcRP)21s(3TK8e1q<+HgeZy2@X&NQGjt%#WgvfG~g?+DA&aO#+R? z3Y=GCa#V1EM$aV9dRpg#Q(SP5sF^du`HWL8FUHu}1a?@taCjc!p(w`M*#rj;&)D5o zp1ao0CWyl|7hQ9%@st-(+S!C-rLVX^o>5{x-N!GXvy$0l52c+=kY$Z?xKr0y*~m$) z%Fd>#Esr_9mWoEZw`)eW*pc)-!?iO5>6#t+*U~p@7n{JM`?1R*$}#2D;X1uKRL!d=Il1&G+%nQ<0cPK>U&7*Cge?Qg5)#{kR3vgm6&a7;)3%o zHcfoq)n@Ux;y8=R+(1%*{=bUdMjA|f_#xLz5wGP1^!g>jKc~K*Onau5d;kCd07*qo IM6N<$g8HKod;kCd literal 0 HcmV?d00001 diff --git a/fabricfixture/src/assets/arrowOther.png b/fabricfixture/src/assets/arrowOther.png new file mode 100644 index 0000000000000000000000000000000000000000..4fb5c0a0dfb5a39e5cfef1f64ade2d2f13a71a73 GIT binary patch literal 637 zcmV-@0)qXCP)4Pb)O2?`^00$_rQ3CajCLDLOj0&_2?sQM*B99Rk zYFW?*4XoEcFU4YUlr&FB=(fo_pcq`?Ep)OkGFM2bZQm$&GmS_hQ7E~ox_71(N!%n& zz@6v~6hR9I8&MraCf4LX9hYA8{m&*Ss!i&XxNsgs7S1Wo3dP7BRVy8TMfMhpc`d00 zUE*x?7WfCMPe<$O(t z3l|h}5dCB_$;*n=B{1edXfAjAiiZOS1fd$l`EC?#PUJ3VWG6HTzS?-vrpTMfJ#5>< z`Fzo@R;x2Gz@|n?BwoIAVV;LK7f(4KVHgffiQ9+miS)KZ*pN9zI>u-{jCGWy|Eb~^ X2{q$f^LXPP00000NkvXXu0mjfq9_RO literal 0 HcmV?d00001 diff --git a/fabricfixture/src/assets/candice.jpg b/fabricfixture/src/assets/candice.jpg new file mode 100644 index 0000000000000000000000000000000000000000..0b61d4f71060e74316bc000b2e1a2300f98d89a0 GIT binary patch literal 17594 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 I{{UP6*|{SIUjP6A literal 0 HcmV?d00001 diff --git a/fabricfixture/src/assets/checkboxOff.png b/fabricfixture/src/assets/checkboxOff.png new file mode 100644 index 0000000000000000000000000000000000000000..1c98e36b5ebecbdb7fbf881e27ed26ddbfa22255 GIT binary patch literal 1871 zcmV-V2e9~wP)96x`Jj_K)ZsH6;M`CSOKttq+I6>vx3R&AoJ1>oYcB9egvL%7D1>^GavMxkn&-2(W4Ya~$hs`;+J#TQby}jLG z3&cXmAqlBiR_U{p-j{KSm@gn%^tjOR9Q;UJq~KMcP%yprY6Ui7VC_@;%&mE7&IABdE&aS&z_So`91H* z+x^-r6!QZ>DQttcjq%SW2WOCyp4pDe1QNsnMv}?1ce!vn<&*Nzo(( zi8L3*5koWI6UQlStpYJXqwx+#cnkJU*H7(DG7Ue{d{?66#Mv0A(e`%jfUPJlFRu?w zYL>wiu^O!q>yIu=oLc|c%>-QhGO!FY4 z&9SV_wvHI6(mD|X;Cb=fnyxY}drnQC(~{%c8P(cT+tDi9m^k3M;XE{5RoEuoXB2Xv zPC5e&cRd)q(tgRhfP!UT{4mEjXl(l!ceGt0hs5lFY2Y~IC0}52H&4(2==tR*O;3BGG*nrK2{7=jJdN-A++ znoXXu900LxP4g~(3Ew)aQGM5SazT!6oYmxGqd6>{?8sX`dWTTZoal~?>GCk7x#5h=_L zS&m>BZx7x|A*WO-<%%5Ih^jae@>s}%V#nINxvbe9%PQ?B zNe!T6lNzK4TNPVK{9$X3pf>EEXuB@6T?uye`y3Z&REVFhyK4{BsjcgaN)4cpgPEbu zb3qJA98Jm2YXOoNLzb*Qt59@vsb{q1WaWLnAgyF-snDKj3JYHA?s36 zFWex=2wxkZOu2pSM0x>g5$ldFI81%iwZ6O!b*PG=G7_9Q8Zry(q_uKelY;;V4SZo=6a5p|B_ z#936%KYz#C^Fz4UcuYDXLf-fLVsF}%;i<_9k)&oC*hJRwEDIr|jYKKr13f1VBw$M# zJFg@e75^-Y;r2<|o!H@N2(uQ>%}fpeDJm9+hHw>v@*OOm=aFDO7ji<3*GrEQFlr2u@>a`XvPE&%ZGN8<6C-&pppQTgx-MOz@9& zkyZb+H~tnGn~MXM`?tgvUmeGj=jllo_002ov JPDHLkV1hq!d4~W1 literal 0 HcmV?d00001 diff --git a/fabricfixture/src/assets/checkboxOn.png b/fabricfixture/src/assets/checkboxOn.png new file mode 100644 index 0000000000000000000000000000000000000000..e4a2502eaee8ab49168dd3370e6a4641b5f36f3f GIT binary patch literal 2082 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

t)gKMHiKdrrE)R-M! zSxTfvo1g0Cx!LK|SAQXu#+5bXnj!HF3lpn4%PV)i2)8qp8F_0JMYS{DABS`@A4S`p zCqN*EHl(i6-G3gxp!Pk@HzS}ds{1zGv(J%2uLwd&mhYdXYhl^d>#_M_;MDXpt}|XX zGdbaPyOj_**B-T^a6)r_LS3(!vuMqiB7va$Za*UWPaOeUKh#e*wNJ?wyX9-=yE~_% ziz3V&x5a+OUYy#VkFG5WqVq9*#kOP2!^X>DcP3@EDasEOqA3`#J0|O6eaq3*WkAcX zh~+T91l{q;r!KhqY(qH9VRfzj?C$)$+F-n2?Nl$z_2#|#`Jf@^UypuK?@S;5aO3hd z4v0+uMZ7aJKZ3Ng8k!*9JJ>~(yDHS1E?#zLH*$donT zotp<4o^~9BnrG%&2K-noq7}(f7`6r6x=wYSo(aA|iC(vx-L!cmi>s}neo}McBAwc| zN%O?q3ihnH*X_sOU+p0U4Du6)s+RrcZO*9I6$$9U0nkpRccm zUsqzdg#A_*FCOQ8)B7I(-8Sti1?z(VH4=eba&~uNZJCPm>-2T*E@PR7ZMb!`+PSU|0|ER>RaEnImqd&IV>vAT~gPRYD{A5=4{W=6)!g0Y2we>$ax-_x+y*uN6c3G7OgHABrq#7N;0n-HNvRXEI=X(2KUA{1+3Knr35B z>Bm0ac;9#*+8gz(C*t%zR8SQCLe;mDx<#gVCjPwDoD}^*nJ7C=OQNr)U#pzYrij~4 zM{}S}oUVX#==F?V)41?wvFCgizSku<9JZ<|0Mb{DpvA& z%PCsDhCy^Q#*K%-imJfb_B@J#N42`{$&!XYWv#TC|25rh8sU*Eo?g^jGdy*ZW13AZ zax1Tb4V{dC`cbx*t5IBtG@#0^eAY4%uI*jGot!Y`VRNX3&PZjcX(Igb3KvMKR?obe z9zNl!rT%E@G6w^TYiq_S>vw>M?X#uoI}VS%Qm^>@e6nGdDSPdyfE zx_|f1SeH(AG+aDfUwz{~|7oB22$&u?--6F-Ia9I+w{ObSpduNk#wj{q4>K9CtNs3X zcg>&5J@=kE`@u5zd+XO39^*4N_E;8AgmAMizn{_Jn($-ZtdDFJ+3fb9Dy9_Oh?h#z zj5pdDz1h}uXwxA>C|5*=cz@DFHRikU&+#iXPf5<`^`~pGN{)}CxMmdZWDlU84SN&3$oz0s zfQ$1{9u1QQ&!sFRmMGM5I6q8_N{v$UMC<68D~XIPA8dQQv*1gA<$=5H#lp=JLb?CI z3uV7sIIGLm6nSsV@|~lp??xNvkg)&2Sna_n4tw5?Y}ULG%?o7FU511c3WLvI>_i1( z!{x7CHN7|$t-w2W-d5ZpZ>6c>fs}d5@3Ti>JKOerHTk)F>1w{Y zBeHf{*q3<2*AtQf4s&-m0MsH$EBv51Nj=s=Appw|nd1Yi(-DKZBN$9bAlWN83A_)0 z$4U=S!XyBuAm(`t#aW=l*tHPgHRE~MrmzGWN*Eidc=$BV2uYe|Rpi@t-me&ht6I?| ze$M(9=%DxSVTwNL7B*O`z`fRE$T)18O{B^J5OHo#W%kD-}gAcJO3n1x6Q{X*TFh-d!yx?Z$G16f%*K?exQ+p ztyb%4*R_Y=)qQBLG-9hc_A|ub$th|8Sk1bi@fFe$DwUpU57nc*-z8<&dM#e3a2hB! z16wLhz7o)!MC8}$7Jv9c-X$w^Xr(M9+`Py)~O3rGmgbvjOzXjGl>h9lp*QEn%coj{`wU^_3U|=B`xxU;X3K1L?JT?0?+@K!|MWVr zmC=;rjX@CoW3kMZA^8ZAy52^R{+-YG!J5q^YP&$t9F`&J8*KzV4t3ZZZJ>~XP7}Bs z<}$a~2r_E?4rlN=(}RBkF~6rBo}Sz7#r{X49&!gODP+TcB*@uq57EII-_>qWEt44B z`5o+tysMLY*Dq^n@4_vzKRu3We5|DI+i%NV=Z|)QAl{di_@%07*qoM6N<$f(5Fv<^TWy literal 0 HcmV?d00001 diff --git a/fabricfixture/src/assets/icon.png b/fabricfixture/src/assets/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..a0b1526fc7b78680fd8d733dbc6113e1af695487 GIT binary patch literal 22380 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 literal 0 HcmV?d00001 diff --git a/fabricfixture/src/assets/like.png b/fabricfixture/src/assets/like.png new file mode 100644 index 0000000000000000000000000000000000000000..25ef332d50620839587e1e8ea28cd5e003dfbd8c GIT binary patch literal 8933 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 EKkekdc=Gz`y_ia&Hyzx($ez_O`VG0F;yfOaK4? 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 literal 0 HcmV?d00001 diff --git a/fabricfixture/src/assets/mubariz.jpg b/fabricfixture/src/assets/mubariz.jpg new file mode 100644 index 0000000000000000000000000000000000000000..5c88e4cf56bb14800fbd97d687f55ca96c4e9055 GIT binary patch literal 18408 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 oos + + + diff --git a/fabricfixture/src/assets/send.png b/fabricfixture/src/assets/send.png new file mode 100644 index 0000000000000000000000000000000000000000..449a22208651ed195c15413f8960e6063ede3cc3 GIT binary patch literal 976 zcmV;>126oEP)K~#7F)tSF< z(?Ar*zvq^uu#mA^&BjE+KY%hJ7NmA#L8JpSM1nbI1RD|^*a?D-p@j)CSxjuCOpMOf z4YO1sNIBl~FOoEl@6KtOe59)W8Gmwles}jypaeCkYNtR`jL?L@4jpPJIxOgq&(n5D z+W~Ecv~#Q+_*Vcwlp=&B0v2pa)!b0%kWeF)Gvr7Kyd6q$1VfC3D^l$Wg;%ucVlf0G z0q?IAUELeBgtw$}mBJg^Y~mcCU#jN_>8MW5xk)%?F~R{X zxUmgN5&;4ZyF@&2^T%!xj*~(6Y4mQPwYN(8lEVyaJ}e4?zxI&^Mrp7;-9`qS_=oRLy5Vt zqj-78PBukH`j(4g6zY_I?Pm`{&x$6S|lK!rJa^Lkiy1U_;RF`aRESaB!{ zy8J&9rdg>Etn|wlq?OKWPDka>HdYjx>Sqy<3G+9g6Fydt-e9a8J6)>UFOxB5O?Ubw z@{fuODSP9`CWN`dvLWnWz!(1HK99h@2C#-hVY+5KvwBG-E2%8%6wKZ0G=3Oou+$95wA4$Dndl_AK^bC5|JXywMQRWa9 z#X>D8os!7D&Z3ObvKNWBk`QsR7&t4nPYu@VtQHod^*Z1I{f@h)_a?cuNB4WlkiZBl y;goFYHvX%txB%@=E!}c#@@TNnWACy{xBmcIaBERM9mb;o0000bVdA literal 0 HcmV?d00001 diff --git a/fabricfixture/src/assets/share.png b/fabricfixture/src/assets/share.png new file mode 100644 index 0000000000000000000000000000000000000000..471e13f3e09abb01dd46b18039db4e6e0ced4963 GIT binary patch literal 6115 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 Iol`;+02ibJL;wH) literal 0 HcmV?d00001 diff --git a/fabricfixture/src/assets/tamara.jpg b/fabricfixture/src/assets/tamara.jpg new file mode 100644 index 0000000000000000000000000000000000000000..53d64d24dcbe55fc0162200e205434cc0a284f2a GIT binary patch literal 23548 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 X`>s*e4EHo}0}w<@)lHpNzw`gu#)ssw literal 0 HcmV?d00001 diff --git a/fabricfixture/src/twitter/TweetCell.tsx b/fabricfixture/src/twitter/TweetCell.tsx new file mode 100644 index 000000000..95e873164 --- /dev/null +++ b/fabricfixture/src/twitter/TweetCell.tsx @@ -0,0 +1,23 @@ +import React from "react"; +import { Pressable } from "react-native"; + +import Tweet from "./models/Tweet"; +import TweetContent from "./TweetContent"; + +export interface TweetCellProps { + tweet: Tweet; +} + +const TweetCell = ({ tweet }: TweetCellProps) => { + return ( + { + console.log("Press on", tweet); + }} + > + + + ); +}; + +export default TweetCell; diff --git a/fabricfixture/src/twitter/TweetContent.tsx b/fabricfixture/src/twitter/TweetContent.tsx new file mode 100644 index 000000000..a2dc5dc5a --- /dev/null +++ b/fabricfixture/src/twitter/TweetContent.tsx @@ -0,0 +1,163 @@ +import React from "react"; +import { StyleSheet, View, Image, Text, ViewStyle } from "react-native"; + +import Author from "./models/Author"; +import Tweet from "./models/Tweet"; + +export interface TweetContentProps { + tweet: Tweet; +} + +const tweetActions = ( + retweets: React.ReactNode, + comments: React.ReactNode, + likes: React.ReactNode +) => { + return ( + + + + {comments} + + + + {retweets} + + + + {likes} + + + + ); +}; + +const avatar = (author: Author) => { + const imageUrl = author.avatar.replace("_normal", ""); + return ; +}; +interface GrayTextProps { + children: React.ReactNode; + numberOfLines?: number; + style?: ViewStyle; +} + +const GrayText = ({ children, numberOfLines, style }: GrayTextProps) => { + return ( + + {children} + + ); +}; + +const TweetContent = ({ tweet }: TweetContentProps) => { + return ( + + + {avatar(tweet.author)} + + + + {tweet.author.name} + + + @{tweet.author.screenName} + + · + 2h + + {tweet.fullText} + + {tweetActions( + tweet.retweetCount, + tweet.replyCount, + tweet.favoriteCount + )} + + + + + ); +}; + +const styles = StyleSheet.create({ + author: { + flexShrink: 1, + }, + actionBar: { + marginTop: 8, + justifyContent: "space-between", + marginRight: 16, + }, + actionButton: { + width: 18, + height: 18, + marginRight: 8, + }, + gray: { + color: "#777", + fontSize: 13, + paddingRight: 2, + }, + avatar: { + height: 44, + width: 44, + borderRadius: 22, + marginRight: 16, + flexShrink: 0, + marginTop: 4, + }, + header: { + fontSize: 14, + fontWeight: "bold", + paddingBottom: 4, + paddingRight: 4, + color: "#000", + }, + description: { + fontSize: 14, + color: "#000", + }, + singleItem: { + paddingHorizontal: 16, + minHeight: 44, + flex: 1, + padding: 16, + backgroundColor: "#FFF", + }, + rowTop: { + flexDirection: "row", + }, + rowActions: { + flexGrow: 1, + justifyContent: "space-between", + flexDirection: "row", + }, + row: { + flexDirection: "row", + }, + elemAction: { + flexDirection: "row", + alignItems: "center", + justifyContent: "flex-start", + }, + actionText: { + fontSize: 12, + color: "#444", + }, + tweetContentContainer: { + flexShrink: 1, + flexGrow: 1, + }, +}); + +export default TweetContent; diff --git a/fabricfixture/src/twitter/Twitter.tsx b/fabricfixture/src/twitter/Twitter.tsx new file mode 100644 index 000000000..76ca432be --- /dev/null +++ b/fabricfixture/src/twitter/Twitter.tsx @@ -0,0 +1,166 @@ +import React, { useRef, useState } from "react"; +import { + View, + Text, + StyleSheet, + ActivityIndicator, + ViewabilityConfig, +} from "react-native"; +import { BlankAreaEventHandler, FlashList } from "@shopify/flash-list"; + +import TweetCell from "./TweetCell"; +import { tweets as tweetsData } from "./data/tweets"; +import Tweet from "./models/Tweet"; + +export interface TwitterProps { + instance?: React.RefObject>; + blankAreaTracker?: BlankAreaEventHandler; + CellRendererComponent?: React.ComponentType; + disableAutoLayout?: boolean; +} + +const Twitter = ({ + instance, + blankAreaTracker, + CellRendererComponent, + disableAutoLayout, +}: TwitterProps) => { + const [refreshing, setRefreshing] = useState(false); + const [tweets, setTweets] = useState(tweetsData); + const viewabilityConfig = useRef({ + waitForInteraction: true, + itemVisiblePercentThreshold: 50, + minimumViewTime: 1000, + }).current; + + return ( + { + return item.id; + }} + renderItem={({ item }) => { + return ; + }} + refreshing={refreshing} + onRefresh={() => { + setRefreshing(true); + setTimeout(() => { + setRefreshing(false); + const reversedTweets = [...tweets]; + reversedTweets.reverse(); + setTweets(reversedTweets); + }, 500); + }} + CellRendererComponent={CellRendererComponent} + ListHeaderComponent={Header} + ListHeaderComponentStyle={{ backgroundColor: "#ccc" }} + ListFooterComponent={ +