diff --git a/.eslintignore b/.eslintignore
index 75da15ae8..c0b6b5c6a 100644
--- a/.eslintignore
+++ b/.eslintignore
@@ -1,6 +1,7 @@
node_modules
example
example-new-architecture
+benchmarks
dist
lib
packages/core/android/build/reports/tests
diff --git a/benchmarks/.bundle/config b/benchmarks/.bundle/config
new file mode 100644
index 000000000..848943bb5
--- /dev/null
+++ b/benchmarks/.bundle/config
@@ -0,0 +1,2 @@
+BUNDLE_PATH: "vendor/bundle"
+BUNDLE_FORCE_RUBY_PLATFORM: 1
diff --git a/benchmarks/.env.alternate b/benchmarks/.env.alternate
new file mode 100644
index 000000000..2eefe9616
--- /dev/null
+++ b/benchmarks/.env.alternate
@@ -0,0 +1,7 @@
+DD_CLIENT_TOKEN="ALT_CLIENT_TOKEN"
+DD_API_KEY="ALT_API_KEY"
+DD_APP_ID="ALT_APP_ID"
+DD_SITE="ALT_SITE"
+DD_ENV="ALT_ENV"
+BENCH_SCENARIO=
+BENCH_RUN_TYPE=
\ No newline at end of file
diff --git a/benchmarks/.eslintrc.js b/benchmarks/.eslintrc.js
new file mode 100644
index 000000000..187894b6a
--- /dev/null
+++ b/benchmarks/.eslintrc.js
@@ -0,0 +1,4 @@
+module.exports = {
+ root: true,
+ extends: '@react-native',
+};
diff --git a/benchmarks/.gitignore b/benchmarks/.gitignore
new file mode 100644
index 000000000..de9995595
--- /dev/null
+++ b/benchmarks/.gitignore
@@ -0,0 +1,75 @@
+# OSX
+#
+.DS_Store
+
+# Xcode
+#
+build/
+*.pbxuser
+!default.pbxuser
+*.mode1v3
+!default.mode1v3
+*.mode2v3
+!default.mode2v3
+*.perspectivev3
+!default.perspectivev3
+xcuserdata
+*.xccheckout
+*.moved-aside
+DerivedData
+*.hmap
+*.ipa
+*.xcuserstate
+**/.xcode.env.local
+
+# Android/IntelliJ
+#
+build/
+.idea
+.gradle
+local.properties
+*.iml
+*.hprof
+.cxx/
+*.keystore
+!debug.keystore
+.kotlin/
+
+# node.js
+#
+node_modules/
+npm-debug.log
+yarn-error.log
+
+# fastlane
+#
+# It is recommended to not store the screenshots in the git repo. Instead, use fastlane to re-generate the
+# screenshots whenever they are needed.
+# For more information about the recommended setup visit:
+# https://docs.fastlane.tools/best-practices/source-control/
+
+**/fastlane/report.xml
+**/fastlane/Preview.html
+**/fastlane/screenshots
+**/fastlane/test_output
+
+# Bundle artifact
+*.jsbundle
+
+# Ruby / CocoaPods
+**/Pods/
+/vendor/bundle/
+
+# Temporary files created by Metro to check the health of the file watcher
+.metro-health-check*
+
+# testing
+/coverage
+
+# Yarn
+.yarn/*
+!.yarn/patches
+!.yarn/plugins
+!.yarn/releases
+!.yarn/sdks
+!.yarn/versions
diff --git a/benchmarks/.prettierrc.js b/benchmarks/.prettierrc.js
new file mode 100644
index 000000000..2b540746a
--- /dev/null
+++ b/benchmarks/.prettierrc.js
@@ -0,0 +1,7 @@
+module.exports = {
+ arrowParens: 'avoid',
+ bracketSameLine: true,
+ bracketSpacing: false,
+ singleQuote: true,
+ trailingComma: 'all',
+};
diff --git a/benchmarks/.watchmanconfig b/benchmarks/.watchmanconfig
new file mode 100644
index 000000000..0967ef424
--- /dev/null
+++ b/benchmarks/.watchmanconfig
@@ -0,0 +1 @@
+{}
diff --git a/benchmarks/Gemfile b/benchmarks/Gemfile
new file mode 100644
index 000000000..03278dd5e
--- /dev/null
+++ b/benchmarks/Gemfile
@@ -0,0 +1,10 @@
+source 'https://rubygems.org'
+
+# You may use http://rbenv.org/ or https://rvm.io/ to install and use this version
+ruby ">= 2.6.10"
+
+# Exclude problematic versions of cocoapods and activesupport that causes build failures.
+gem 'cocoapods', '>= 1.13', '!= 1.15.0', '!= 1.15.1'
+gem 'activesupport', '>= 6.1.7.5', '!= 7.1.0'
+gem 'xcodeproj', '< 1.26.0'
+gem 'concurrent-ruby', '< 1.3.4'
diff --git a/benchmarks/README.md b/benchmarks/README.md
new file mode 100644
index 000000000..f96855363
--- /dev/null
+++ b/benchmarks/README.md
@@ -0,0 +1,96 @@
+# Benchmark runner app for Datadog React Native SDK
+
+## Build and run
+
+1. From the root benchmark folder, run `yarn install`.
+2. From the iOS folder, run `pod install`.
+3. From the root folder, run `yarn ios` or `yarn android`.
+
+## Enable new architcture
+
+### iOS
+
+```
+RCT_NEW_ARCH_ENABLED=1 pod install
+```
+
+### Android
+
+Set `newArchEnabled=true` in `benchmarks/android/gradle.properties`.
+
+## ENV config
+
+The .env config file contains configuration for the Datadog API, as well as a test scenario that you can launch when the app boots up. If it doesn't contain a test scenario, the app waits for a deeplink to trigger a test scenario instead.
+
+ DD_CLIENT_TOKEN="CLIENT_TOKEN"
+ DD_API_KEY="API_KEY"
+ DD_APP_ID="APP_ID"
+ DD_SITE="SITE"
+ DD_ENV="ENV"
+ BENCH_SCENARIO=""
+ BENCH_RUN_TYPE=""
+
+## Changing ENV settings
+
+### Debug
+```
+ $ ENVFILE=.env.alternate yarn ios
+```
+or:
+
+```
+ $ ENVFILE=.env.alternate yarn android
+```
+
+### Release
+On Android:
+```
+ $ ENVFILE=.env.alternate ./gradlew assembleRelease
+```
+
+On iOS:
+```
+ xcodebuild -scheme alternate
+```
+
+## Set test scenarios using deeplinks
+
+You can trigger test scenarios by running a deeplink with a specific set of parameters to the benchmark app.
+
+## Run a test scenario
+
+Launch a specific test scenario with a particular configuration:
+- **Method**: `start`
+- **Parameters**:
+ - **scenario**: name of the test as defined on Scenario enum in `types/testConfig.ts`
+ - **runType**: `instrumented|baseline|profiling`
+
+### iOS
+
+```
+xcrun simctl openurl booted "benchmark://start?scenario=navigation&runType=instrumented"
+```
+
+### Android
+
+```
+adb shell am start -W -a android.intent.action.VIEW -d 'benchmark://start?scenario=navigation\&runType=instrumented' com.benchmarkrunner
+```
+
+## Stop a test scenario
+
+Stops the scenario currently running.
+
+- **Method**: `stop`
+
+### iOS
+
+```
+xcrun simctl openurl booted "benchmark://stop"
+```
+
+### Android
+
+```
+adb shell am start -W -a android.intent.action.VIEW -d 'benchmark://stop' com.benchmarkrunner
+```
\ No newline at end of file
diff --git a/benchmarks/android/app/build.gradle b/benchmarks/android/app/build.gradle
new file mode 100644
index 000000000..5ca2e62f6
--- /dev/null
+++ b/benchmarks/android/app/build.gradle
@@ -0,0 +1,133 @@
+apply plugin: "com.android.application"
+apply from: project(':react-native-config').projectDir.getPath() + "/dotenv.gradle"
+apply plugin: "org.jetbrains.kotlin.android"
+apply plugin: 'com.facebook.react'
+
+def isNewArchitectureEnabled() {
+ return project.hasProperty("newArchEnabled") && project.newArchEnabled == "true"
+}
+
+/**
+ * This is the configuration block to customize your React Native Android app.
+ * By default you don't need to apply any configuration, just uncomment the lines you need.
+ */
+react {
+ /* Folders */
+ // The root of your project, i.e. where "package.json" lives. Default is '../..'
+ // root = file("../../")
+ // The folder where the react-native NPM package is. Default is ../../node_modules/react-native
+ // reactNativeDir = file("../../node_modules/react-native")
+ // The folder where the react-native Codegen package is. Default is ../../node_modules/@react-native/codegen
+ // codegenDir = file("../../node_modules/@react-native/codegen")
+ // The cli.js file which is the React Native CLI entrypoint. Default is ../../node_modules/react-native/cli.js
+ // cliFile = file("../../node_modules/react-native/cli.js")
+
+ /* Variants */
+ // The list of variants to that are debuggable. For those we're going to
+ // skip the bundling of the JS bundle and the assets. By default is just 'debug'.
+ // If you add flavors like lite, prod, etc. you'll have to list your debuggableVariants.
+ // debuggableVariants = ["liteDebug", "prodDebug"]
+
+ /* Bundling */
+ // A list containing the node command and its flags. Default is just 'node'.
+ // nodeExecutableAndArgs = ["node"]
+ //
+ // The command to run when bundling. By default is 'bundle'
+ // bundleCommand = "ram-bundle"
+ //
+ // The path to the CLI configuration file. Default is empty.
+ // bundleConfig = file(../rn-cli.config.js)
+ //
+ // The name of the generated asset file containing your JS bundle
+ // bundleAssetName = "MyApplication.android.bundle"
+ //
+ // The entry file for bundle generation. Default is 'index.android.js' or 'index.js'
+ // entryFile = file("../js/MyApplication.android.js")
+ //
+ // A list of extra flags to pass to the 'bundle' commands.
+ // See https://github.com/react-native-community/cli/blob/main/docs/commands.md#bundle
+ // extraPackagerArgs = []
+
+ /* Hermes Commands */
+ // The hermes compiler command to run. By default it is 'hermesc'
+ // hermesCommand = "$rootDir/my-custom-hermesc/bin/hermesc"
+ //
+ // The list of flags to pass to the Hermes compiler. By default is "-O", "-output-source-map"
+ // hermesFlags = ["-O", "-output-source-map"]
+
+ /* Autolinking */
+ autolinkLibrariesWithApp()
+}
+
+/**
+ * Set this to true to Run Proguard on Release builds to minify the Java bytecode.
+ */
+def enableProguardInReleaseBuilds = false
+
+/**
+ * The preferred build flavor of JavaScriptCore (JSC)
+ *
+ * For example, to use the international variant, you can use:
+ * `def jscFlavor = io.github.react-native-community:jsc-android-intl:2026004.+`
+ *
+ * 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 = 'io.github.react-native-community:jsc-android:2026004.+'
+
+android {
+ ndkVersion rootProject.ext.ndkVersion
+ buildToolsVersion rootProject.ext.buildToolsVersion
+ compileSdk rootProject.ext.compileSdkVersion
+
+ namespace "com.benchmarkrunner"
+ defaultConfig {
+ applicationId "com.benchmarkrunner"
+ minSdkVersion rootProject.ext.minSdkVersion
+ targetSdkVersion rootProject.ext.targetSdkVersion
+ versionCode 1
+ versionName "1.0"
+ buildConfigField("boolean", "IS_NEW_ARCHITECTURE_ENABLED", isNewArchitectureEnabled().toString())
+ }
+ 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"
+ }
+ }
+}
+
+repositories {
+
+}
+
+dependencies {
+ // The version of react-native is set by the React Native Gradle Plugin
+ implementation("com.facebook.react:react-android")
+
+ if (hermesEnabled.toBoolean()) {
+ implementation("com.facebook.react:hermes-android")
+ } else {
+ implementation jscFlavor
+ }
+
+ // Benchmark tools from dd-sdk-android are used for vitals recording
+ // Remember to bump thid alongside the main dd-sdk-android dependencies
+ implementation("com.datadoghq:benchmark:2.21.0")
+}
diff --git a/benchmarks/android/app/debug.keystore b/benchmarks/android/app/debug.keystore
new file mode 100644
index 000000000..364e105ed
Binary files /dev/null and b/benchmarks/android/app/debug.keystore differ
diff --git a/benchmarks/android/app/proguard-rules.pro b/benchmarks/android/app/proguard-rules.pro
new file mode 100644
index 000000000..0d1bfd1c2
--- /dev/null
+++ b/benchmarks/android/app/proguard-rules.pro
@@ -0,0 +1,15 @@
+# Add project specific ProGuard rules here.
+# By default, the flags in this file are appended to flags specified
+# in /usr/local/Cellar/android-sdk/24.3.3/tools/proguard/proguard-android.txt
+# You can edit the include path and order by changing the proguardFiles
+# directive in build.gradle.
+#
+# For more details, see
+# http://developer.android.com/guide/developing/tools/proguard.html
+
+# Add any project specific keep options here:
+
+# From react-native-config:
+# Proguard may rename the BuildConfig Java class in the minification process
+# and prevent React Native Config from referencing it
+-keep class com.benchmarkrunner.BuildConfig { *; }
\ No newline at end of file
diff --git a/benchmarks/android/app/src/debug/AndroidManifest.xml b/benchmarks/android/app/src/debug/AndroidManifest.xml
new file mode 100644
index 000000000..eb98c01af
--- /dev/null
+++ b/benchmarks/android/app/src/debug/AndroidManifest.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
diff --git a/benchmarks/android/app/src/main/AndroidManifest.xml b/benchmarks/android/app/src/main/AndroidManifest.xml
new file mode 100644
index 000000000..eaa5b4df0
--- /dev/null
+++ b/benchmarks/android/app/src/main/AndroidManifest.xml
@@ -0,0 +1,32 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/benchmarks/android/app/src/main/java/com/benchmarkrunner/MainActivity.kt b/benchmarks/android/app/src/main/java/com/benchmarkrunner/MainActivity.kt
new file mode 100644
index 000000000..ea53f9039
--- /dev/null
+++ b/benchmarks/android/app/src/main/java/com/benchmarkrunner/MainActivity.kt
@@ -0,0 +1,27 @@
+/*
+ * Unless explicitly stated otherwise all files in this repository are licensed under the Apache License Version 2.0.
+ * This product includes software developed at Datadog (https://www.datadoghq.com/).
+ * Copyright 2016-Present Datadog, Inc.
+ */
+
+package com.benchmarkrunner
+
+import com.facebook.react.ReactActivity
+import com.facebook.react.ReactActivityDelegate
+import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint.fabricEnabled
+import com.facebook.react.defaults.DefaultReactActivityDelegate
+
+class MainActivity : ReactActivity() {
+ /**
+ * Returns the name of the main component registered from JavaScript. This is used to schedule
+ * rendering of the component.
+ */
+ override fun getMainComponentName(): String = "BenchmarkRunner"
+
+ /**
+ * Returns the instance of the [ReactActivityDelegate]. We use [DefaultReactActivityDelegate]
+ * which allows you to enable New Architecture with a single boolean flags [fabricEnabled]
+ */
+ override fun createReactActivityDelegate(): ReactActivityDelegate =
+ DefaultReactActivityDelegate(this, mainComponentName, fabricEnabled)
+}
diff --git a/benchmarks/android/app/src/main/java/com/benchmarkrunner/MainApplication.kt b/benchmarks/android/app/src/main/java/com/benchmarkrunner/MainApplication.kt
new file mode 100644
index 000000000..84563b3d8
--- /dev/null
+++ b/benchmarks/android/app/src/main/java/com/benchmarkrunner/MainApplication.kt
@@ -0,0 +1,51 @@
+/*
+ * Unless explicitly stated otherwise all files in this repository are licensed under the Apache License Version 2.0.
+ * This product includes software developed at Datadog (https://www.datadoghq.com/).
+ * Copyright 2016-Present Datadog, Inc.
+ */
+
+package com.benchmarkrunner
+
+import android.app.Application
+import com.facebook.react.PackageList
+import com.facebook.react.ReactApplication
+import com.facebook.react.ReactHost
+import com.facebook.react.ReactNativeHost
+import com.facebook.react.ReactPackage
+import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint.load
+import com.facebook.react.defaults.DefaultReactHost.getDefaultReactHost
+import com.facebook.react.defaults.DefaultReactNativeHost
+import com.facebook.react.soloader.OpenSourceMergedSoMapping
+import com.facebook.soloader.SoLoader
+import com.benchmarkvitals.BenchmarkVitalsPackage
+
+class MainApplication : Application(), ReactApplication {
+ override val reactNativeHost: ReactNativeHost =
+ object : DefaultReactNativeHost(this) {
+ override fun getPackages(): List =
+ PackageList(this).packages.apply {
+ // Packages that cannot be autolinked yet can be added manually here, for example:
+ // add(MyReactNativePackage())
+ add(BenchmarkVitalsPackage())
+ }
+
+ override fun getJSMainModuleName(): String = "index"
+
+ override fun getUseDeveloperSupport(): Boolean = BuildConfig.DEBUG
+
+ override val isNewArchEnabled: Boolean = BuildConfig.IS_NEW_ARCHITECTURE_ENABLED
+ override val isHermesEnabled: Boolean = BuildConfig.IS_HERMES_ENABLED
+ }
+
+ override val reactHost: ReactHost
+ get() = getDefaultReactHost(applicationContext, reactNativeHost)
+
+ override fun onCreate() {
+ super.onCreate()
+ SoLoader.init(this, OpenSourceMergedSoMapping)
+ if (BuildConfig.IS_NEW_ARCHITECTURE_ENABLED) {
+ // If you opted-in for the New Architecture, we load the native entry point for this app.
+ load()
+ }
+ }
+}
diff --git a/benchmarks/android/app/src/main/java/com/benchmarkvitals/BenchmarkVitalsModule.kt b/benchmarks/android/app/src/main/java/com/benchmarkvitals/BenchmarkVitalsModule.kt
new file mode 100644
index 000000000..1ccd2ad55
--- /dev/null
+++ b/benchmarks/android/app/src/main/java/com/benchmarkvitals/BenchmarkVitalsModule.kt
@@ -0,0 +1,38 @@
+/*
+ * Unless explicitly stated otherwise all files in this repository are licensed under the Apache License Version 2.0.
+ * This product includes software developed at Datadog (https://www.datadoghq.com/).
+ * Copyright 2016-Present Datadog, Inc.
+ */
+
+package com.benchmarkvitals
+
+import com.facebook.react.bridge.ReactApplicationContext
+import com.facebook.react.bridge.Promise
+import com.facebook.react.bridge.ReactMethod
+import com.facebook.react.module.annotations.ReactModule
+import com.facebook.react.turbomodule.core.interfaces.TurboModule
+import com.facebook.react.bridge.ReactContextBaseJavaModule
+import com.facebook.react.bridge.ReadableMap
+
+@ReactModule(name = BenchmarkVitalsModule.NAME)
+class BenchmarkVitalsModule(
+ reactContext: ReactApplicationContext
+) : ReactContextBaseJavaModule(reactContext), TurboModule {
+ companion object {
+ const val NAME = "BenchmarkVitals"
+ }
+
+ private val impl = BenchmarkVitalsModuleImpl(reactContext)
+
+ override fun getName(): String = NAME
+
+ @ReactMethod
+ fun startCollectingVitals(config: ReadableMap, promise: Promise) {
+ impl.startCollectingVitals(config, promise)
+ }
+
+ @ReactMethod
+ fun stopCollectingVitals(promise: Promise) {
+ impl.stopCollectingVitals(promise)
+ }
+}
diff --git a/benchmarks/android/app/src/main/java/com/benchmarkvitals/BenchmarkVitalsModuleImpl.kt b/benchmarks/android/app/src/main/java/com/benchmarkvitals/BenchmarkVitalsModuleImpl.kt
new file mode 100644
index 000000000..81ff632e2
--- /dev/null
+++ b/benchmarks/android/app/src/main/java/com/benchmarkvitals/BenchmarkVitalsModuleImpl.kt
@@ -0,0 +1,46 @@
+/*
+ * Unless explicitly stated otherwise all files in this repository are licensed under the Apache License Version 2.0.
+ * This product includes software developed at Datadog (https://www.datadoghq.com/).
+ * Copyright 2016-Present Datadog, Inc.
+ */
+
+package com.benchmarkvitals
+
+import android.content.Context
+import com.benchmarkrunner.BuildConfig
+import com.facebook.react.bridge.Promise
+import com.facebook.react.bridge.ReadableMap
+import com.datadog.benchmark.DatadogVitalsMeter
+import com.datadog.benchmark.DatadogExporterConfiguration
+
+private const val METER_INTERVAL_IN_SECONDS = 10L
+private const val BENCHMARK_APPLICATION_NAME = "Benchmark RN - Android Application"
+
+class BenchmarkVitalsModuleImpl(private val context: Context) {
+ internal lateinit var vitalsMeter: DatadogVitalsMeter
+
+ fun startCollectingVitals(config: ReadableMap, promise: Promise) {
+ val runType = config.getString("runType") ?: ""
+ val scenario = config.getString("scenario") ?: ""
+ val apiKey = config.getString("apiKey") ?: ""
+
+ val exporterConfig = DatadogExporterConfiguration.Builder(apiKey)
+ .setApplicationId(BuildConfig.APPLICATION_ID)
+ .setApplicationName(BENCHMARK_APPLICATION_NAME)
+ .setRun(runType)
+ .setScenario(scenario)
+ .setApplicationVersion(BuildConfig.VERSION_NAME)
+ .setIntervalInSeconds(METER_INTERVAL_IN_SECONDS)
+ .build()
+
+ vitalsMeter = DatadogVitalsMeter.create(exporterConfig)
+ vitalsMeter.startMeasuring()
+
+ promise.resolve(true)
+ }
+
+ fun stopCollectingVitals(promise: Promise) {
+ vitalsMeter.stopMeasuring()
+ promise.resolve(true)
+ }
+}
diff --git a/benchmarks/android/app/src/main/java/com/benchmarkvitals/BenchmarkVitalsPackage.kt b/benchmarks/android/app/src/main/java/com/benchmarkvitals/BenchmarkVitalsPackage.kt
new file mode 100644
index 000000000..53631cbf3
--- /dev/null
+++ b/benchmarks/android/app/src/main/java/com/benchmarkvitals/BenchmarkVitalsPackage.kt
@@ -0,0 +1,24 @@
+/*
+ * Unless explicitly stated otherwise all files in this repository are licensed under the Apache License Version 2.0.
+ * This product includes software developed at Datadog (https://www.datadoghq.com/).
+ * Copyright 2016-Present Datadog, Inc.
+ */
+
+package com.benchmarkvitals
+
+import com.facebook.react.ReactPackage
+import com.facebook.react.bridge.NativeModule
+import com.facebook.react.bridge.ReactApplicationContext
+import com.facebook.react.uimanager.ViewManager
+
+class BenchmarkVitalsPackage : ReactPackage {
+ override fun createNativeModules(
+ reactContext: ReactApplicationContext
+ ): List {
+ return listOf(BenchmarkVitalsModule(reactContext))
+ }
+
+ override fun createViewManagers(
+ reactContext: ReactApplicationContext
+ ): List> = emptyList()
+}
diff --git a/benchmarks/android/app/src/main/res/drawable/rn_edit_text_material.xml b/benchmarks/android/app/src/main/res/drawable/rn_edit_text_material.xml
new file mode 100644
index 000000000..5c25e728e
--- /dev/null
+++ b/benchmarks/android/app/src/main/res/drawable/rn_edit_text_material.xml
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/benchmarks/android/app/src/main/res/mipmap-hdpi/ic_launcher.png b/benchmarks/android/app/src/main/res/mipmap-hdpi/ic_launcher.png
new file mode 100644
index 000000000..a2f590828
Binary files /dev/null and b/benchmarks/android/app/src/main/res/mipmap-hdpi/ic_launcher.png differ
diff --git a/benchmarks/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png b/benchmarks/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png
new file mode 100644
index 000000000..1b5239980
Binary files /dev/null and b/benchmarks/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png differ
diff --git a/benchmarks/android/app/src/main/res/mipmap-mdpi/ic_launcher.png b/benchmarks/android/app/src/main/res/mipmap-mdpi/ic_launcher.png
new file mode 100644
index 000000000..ff10afd6e
Binary files /dev/null and b/benchmarks/android/app/src/main/res/mipmap-mdpi/ic_launcher.png differ
diff --git a/benchmarks/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png b/benchmarks/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png
new file mode 100644
index 000000000..115a4c768
Binary files /dev/null and b/benchmarks/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png differ
diff --git a/benchmarks/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/benchmarks/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png
new file mode 100644
index 000000000..dcd3cd808
Binary files /dev/null and b/benchmarks/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png differ
diff --git a/benchmarks/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png b/benchmarks/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png
new file mode 100644
index 000000000..459ca609d
Binary files /dev/null and b/benchmarks/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png differ
diff --git a/benchmarks/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/benchmarks/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
new file mode 100644
index 000000000..8ca12fe02
Binary files /dev/null and b/benchmarks/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png differ
diff --git a/benchmarks/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png b/benchmarks/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png
new file mode 100644
index 000000000..8e19b410a
Binary files /dev/null and b/benchmarks/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png differ
diff --git a/benchmarks/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/benchmarks/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
new file mode 100644
index 000000000..b824ebdd4
Binary files /dev/null and b/benchmarks/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png differ
diff --git a/benchmarks/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png b/benchmarks/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png
new file mode 100644
index 000000000..4c19a13c2
Binary files /dev/null and b/benchmarks/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png differ
diff --git a/benchmarks/android/app/src/main/res/values/strings.xml b/benchmarks/android/app/src/main/res/values/strings.xml
new file mode 100644
index 000000000..8aa7b5f60
--- /dev/null
+++ b/benchmarks/android/app/src/main/res/values/strings.xml
@@ -0,0 +1,3 @@
+
+ BenchmarkRunner
+
diff --git a/benchmarks/android/app/src/main/res/values/styles.xml b/benchmarks/android/app/src/main/res/values/styles.xml
new file mode 100644
index 000000000..7ba83a2ad
--- /dev/null
+++ b/benchmarks/android/app/src/main/res/values/styles.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
diff --git a/benchmarks/android/build.gradle b/benchmarks/android/build.gradle
new file mode 100644
index 000000000..976694691
--- /dev/null
+++ b/benchmarks/android/build.gradle
@@ -0,0 +1,21 @@
+buildscript {
+ ext {
+ buildToolsVersion = "35.0.0"
+ minSdkVersion = 24
+ compileSdkVersion = 35
+ targetSdkVersion = 35
+ ndkVersion = "27.1.12297006"
+ kotlinVersion = "2.0.21"
+ }
+ repositories {
+ google()
+ mavenCentral()
+ }
+ dependencies {
+ classpath("com.android.tools.build:gradle")
+ classpath("com.facebook.react:react-native-gradle-plugin")
+ classpath("org.jetbrains.kotlin:kotlin-gradle-plugin")
+ }
+}
+
+apply plugin: "com.facebook.react.rootproject"
diff --git a/benchmarks/android/gradle.properties b/benchmarks/android/gradle.properties
new file mode 100644
index 000000000..9fb15664b
--- /dev/null
+++ b/benchmarks/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: -Xmx512m -XX:MaxMetaspaceSize=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
+
+# 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=false
+
+# Use this property to enable or disable the Hermes JS engine.
+# If set to false, you will be using JSC instead.
+hermesEnabled=true
diff --git a/benchmarks/android/gradle/wrapper/gradle-wrapper.jar b/benchmarks/android/gradle/wrapper/gradle-wrapper.jar
new file mode 100644
index 000000000..a4b76b953
Binary files /dev/null and b/benchmarks/android/gradle/wrapper/gradle-wrapper.jar differ
diff --git a/benchmarks/android/gradle/wrapper/gradle-wrapper.properties b/benchmarks/android/gradle/wrapper/gradle-wrapper.properties
new file mode 100644
index 000000000..e0fd02028
--- /dev/null
+++ b/benchmarks/android/gradle/wrapper/gradle-wrapper.properties
@@ -0,0 +1,7 @@
+distributionBase=GRADLE_USER_HOME
+distributionPath=wrapper/dists
+distributionUrl=https\://services.gradle.org/distributions/gradle-8.12-all.zip
+networkTimeout=10000
+validateDistributionUrl=true
+zipStoreBase=GRADLE_USER_HOME
+zipStorePath=wrapper/dists
diff --git a/benchmarks/android/gradlew b/benchmarks/android/gradlew
new file mode 100755
index 000000000..f3b75f3b0
--- /dev/null
+++ b/benchmarks/android/gradlew
@@ -0,0 +1,251 @@
+#!/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.
+#
+# SPDX-License-Identifier: Apache-2.0
+#
+
+##############################################################################
+#
+# 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/HEAD/platforms/jvm/plugins-application/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
+
+# This is normally unused
+# shellcheck disable=SC2034
+APP_BASE_NAME=${0##*/}
+# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036)
+APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s\n' "$PWD" ) || exit
+
+# 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
+ if ! command -v java >/dev/null 2>&1
+ then
+ 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
+fi
+
+# Increase the maximum file descriptors if we can.
+if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then
+ case $MAX_FD in #(
+ max*)
+ # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked.
+ # shellcheck disable=SC2039,SC3045
+ MAX_FD=$( ulimit -H -n ) ||
+ warn "Could not query maximum file descriptor limit"
+ esac
+ case $MAX_FD in #(
+ '' | soft) :;; #(
+ *)
+ # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked.
+ # shellcheck disable=SC2039,SC3045
+ 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
+
+
+# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
+
+# Collect all arguments for the java command:
+# * DEFAULT_JVM_OPTS, JAVA_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments,
+# and any embedded shellness will be escaped.
+# * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be
+# treated as '${Hostname}' itself on the command line.
+
+set -- \
+ "-Dorg.gradle.appname=$APP_BASE_NAME" \
+ -classpath "$CLASSPATH" \
+ org.gradle.wrapper.GradleWrapperMain \
+ "$@"
+
+# Stop when "xargs" is not available.
+if ! command -v xargs >/dev/null 2>&1
+then
+ die "xargs is not available"
+fi
+
+# 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/benchmarks/android/gradlew.bat b/benchmarks/android/gradlew.bat
new file mode 100644
index 000000000..9b42019c7
--- /dev/null
+++ b/benchmarks/android/gradlew.bat
@@ -0,0 +1,94 @@
+@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
+@rem SPDX-License-Identifier: Apache-2.0
+@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=.
+@rem This is normally unused
+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% equ 0 goto execute
+
+echo. 1>&2
+echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2
+echo. 1>&2
+echo Please set the JAVA_HOME variable in your environment to match the 1>&2
+echo location of your Java installation. 1>&2
+
+goto fail
+
+:findJavaFromJavaHome
+set JAVA_HOME=%JAVA_HOME:"=%
+set JAVA_EXE=%JAVA_HOME%/bin/java.exe
+
+if exist "%JAVA_EXE%" goto execute
+
+echo. 1>&2
+echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2
+echo. 1>&2
+echo Please set the JAVA_HOME variable in your environment to match the 1>&2
+echo location of your Java installation. 1>&2
+
+goto fail
+
+: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% equ 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!
+set EXIT_CODE=%ERRORLEVEL%
+if %EXIT_CODE% equ 0 set EXIT_CODE=1
+if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE%
+exit /b %EXIT_CODE%
+
+:mainEnd
+if "%OS%"=="Windows_NT" endlocal
+
+:omega
diff --git a/benchmarks/android/settings.gradle b/benchmarks/android/settings.gradle
new file mode 100644
index 000000000..aa89e3f77
--- /dev/null
+++ b/benchmarks/android/settings.gradle
@@ -0,0 +1,6 @@
+pluginManagement { includeBuild("../node_modules/@react-native/gradle-plugin") }
+plugins { id("com.facebook.react.settings") }
+extensions.configure(com.facebook.react.ReactSettingsExtension){ ex -> ex.autolinkLibrariesFromCommand() }
+rootProject.name = 'BenchmarkRunner'
+include ':app'
+includeBuild('../node_modules/@react-native/gradle-plugin')
diff --git a/benchmarks/app.json b/benchmarks/app.json
new file mode 100644
index 000000000..0c24f2271
--- /dev/null
+++ b/benchmarks/app.json
@@ -0,0 +1,4 @@
+{
+ "name": "BenchmarkRunner",
+ "displayName": "BenchmarkRunner"
+}
diff --git a/benchmarks/babel.config.js b/benchmarks/babel.config.js
new file mode 100644
index 000000000..f7b3da3b3
--- /dev/null
+++ b/benchmarks/babel.config.js
@@ -0,0 +1,3 @@
+module.exports = {
+ presets: ['module:@react-native/babel-preset'],
+};
diff --git a/benchmarks/index.js b/benchmarks/index.js
new file mode 100644
index 000000000..69303b34d
--- /dev/null
+++ b/benchmarks/index.js
@@ -0,0 +1,9 @@
+/**
+ * @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/benchmarks/ios/.xcode.env b/benchmarks/ios/.xcode.env
new file mode 100644
index 000000000..3d5782c71
--- /dev/null
+++ b/benchmarks/ios/.xcode.env
@@ -0,0 +1,11 @@
+# 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/benchmarks/ios/BenchmarkRunner.xcodeproj/project.pbxproj b/benchmarks/ios/BenchmarkRunner.xcodeproj/project.pbxproj
new file mode 100644
index 000000000..7303f927a
--- /dev/null
+++ b/benchmarks/ios/BenchmarkRunner.xcodeproj/project.pbxproj
@@ -0,0 +1,717 @@
+// !$*UTF8*$!
+{
+ archiveVersion = 1;
+ classes = {
+ };
+ objectVersion = 60;
+ objects = {
+
+/* Begin PBXBuildFile section */
+ 04066FD52DCCB9D200A9E317 /* DatadogBenchmarks in Frameworks */ = {isa = PBXBuildFile; productRef = 04066FD42DCCB9D200A9E317 /* DatadogBenchmarks */; };
+ 041FA8A82DCCB7FA00BABC32 /* MetricExporter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 041FA8A62DCCB7FA00BABC32 /* MetricExporter.swift */; };
+ 041FA8A92DCCB7FA00BABC32 /* BenchmarkVitals.swift in Sources */ = {isa = PBXBuildFile; fileRef = 041FA8A52DCCB7FA00BABC32 /* BenchmarkVitals.swift */; };
+ 041FA8AA2DCCB7FA00BABC32 /* Metrics.swift in Sources */ = {isa = PBXBuildFile; fileRef = 041FA8A72DCCB7FA00BABC32 /* Metrics.swift */; };
+ 041FA8AB2DCCB7FA00BABC32 /* BenchmarkMeter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 041FA8A22DCCB7FA00BABC32 /* BenchmarkMeter.swift */; };
+ 041FA8AD2DCCB7FA00BABC32 /* BenchmarkProfiler.swift in Sources */ = {isa = PBXBuildFile; fileRef = 041FA8A32DCCB7FA00BABC32 /* BenchmarkProfiler.swift */; };
+ 041FA8AE2DCCB7FA00BABC32 /* Benchmarks.swift in Sources */ = {isa = PBXBuildFile; fileRef = 041FA8A42DCCB7FA00BABC32 /* Benchmarks.swift */; };
+ 043403232DCB9CB200803AF8 /* BenchMarkVitalsImplementation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 043403222DCB9CB200803AF8 /* BenchMarkVitalsImplementation.swift */; };
+ 043403262DCB9CD700803AF8 /* BenchmarkVitals.mm in Sources */ = {isa = PBXBuildFile; fileRef = 043403242DCB9CD700803AF8 /* BenchmarkVitals.mm */; };
+ 04576C962DCBAF900078DCAB /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 04576C952DCBAF900078DCAB /* main.m */; };
+ 0C80B921A6F3F58F76C31292 /* libPods-BenchmarkRunner.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5DCACB8F33CDC322A6C60F78 /* libPods-BenchmarkRunner.a */; };
+ 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; };
+ 20A397FC280595A8A9851556 /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB81A68108700A75B9A /* PrivacyInfo.xcprivacy */; };
+ 761780ED2CA45674006654EE /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 761780EC2CA45674006654EE /* AppDelegate.swift */; };
+ 81AB9BB82411601600AC10FF /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */; };
+/* End PBXBuildFile section */
+
+/* Begin PBXFileReference section */
+ 041FA8A12DCCB7FA00BABC32 /* Package.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Package.swift; sourceTree = ""; };
+ 041FA8A22DCCB7FA00BABC32 /* BenchmarkMeter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BenchmarkMeter.swift; sourceTree = ""; };
+ 041FA8A32DCCB7FA00BABC32 /* BenchmarkProfiler.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BenchmarkProfiler.swift; sourceTree = ""; };
+ 041FA8A42DCCB7FA00BABC32 /* Benchmarks.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Benchmarks.swift; sourceTree = ""; };
+ 041FA8A52DCCB7FA00BABC32 /* BenchmarkVitals.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BenchmarkVitals.swift; sourceTree = ""; };
+ 041FA8A62DCCB7FA00BABC32 /* MetricExporter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MetricExporter.swift; sourceTree = ""; };
+ 041FA8A72DCCB7FA00BABC32 /* Metrics.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Metrics.swift; sourceTree = ""; };
+ 043403222DCB9CB200803AF8 /* BenchMarkVitalsImplementation.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BenchMarkVitalsImplementation.swift; sourceTree = ""; };
+ 043403242DCB9CD700803AF8 /* BenchmarkVitals.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = BenchmarkVitals.mm; sourceTree = ""; };
+ 043403282DCBA1D100803AF8 /* BenchmarkVitals.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = BenchmarkVitals.h; sourceTree = ""; };
+ 04576C952DCBAF900078DCAB /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; };
+ 13B07F961A680F5B00A75B9A /* BenchmarkRunner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = BenchmarkRunner.app; sourceTree = BUILT_PRODUCTS_DIR; };
+ 13B07FB51A68108700A75B9A /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = BenchmarkRunner/Images.xcassets; sourceTree = ""; };
+ 13B07FB61A68108700A75B9A /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = BenchmarkRunner/Info.plist; sourceTree = ""; };
+ 13B07FB81A68108700A75B9A /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = PrivacyInfo.xcprivacy; path = BenchmarkRunner/PrivacyInfo.xcprivacy; sourceTree = ""; };
+ 3B4392A12AC88292D35C810B /* Pods-BenchmarkRunner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-BenchmarkRunner.debug.xcconfig"; path = "Target Support Files/Pods-BenchmarkRunner/Pods-BenchmarkRunner.debug.xcconfig"; sourceTree = ""; };
+ 5709B34CF0A7D63546082F79 /* Pods-BenchmarkRunner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-BenchmarkRunner.release.xcconfig"; path = "Target Support Files/Pods-BenchmarkRunner/Pods-BenchmarkRunner.release.xcconfig"; sourceTree = ""; };
+ 5DCACB8F33CDC322A6C60F78 /* libPods-BenchmarkRunner.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-BenchmarkRunner.a"; sourceTree = BUILT_PRODUCTS_DIR; };
+ 761780EC2CA45674006654EE /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = AppDelegate.swift; path = BenchmarkRunner/AppDelegate.swift; sourceTree = ""; };
+ 81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; name = LaunchScreen.storyboard; path = BenchmarkRunner/LaunchScreen.storyboard; sourceTree = ""; };
+ 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 = (
+ 0C80B921A6F3F58F76C31292 /* libPods-BenchmarkRunner.a in Frameworks */,
+ 04066FD52DCCB9D200A9E317 /* DatadogBenchmarks in Frameworks */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXFrameworksBuildPhase section */
+
+/* Begin PBXGroup section */
+ 04066FD22DCCB97400A9E317 /* Sources */ = {
+ isa = PBXGroup;
+ children = (
+ 041FA8A42DCCB7FA00BABC32 /* Benchmarks.swift */,
+ 041FA8A62DCCB7FA00BABC32 /* MetricExporter.swift */,
+ 041FA8A72DCCB7FA00BABC32 /* Metrics.swift */,
+ );
+ path = Sources;
+ sourceTree = "";
+ };
+ 041FA8A02DCCB7EA00BABC32 /* Vitals */ = {
+ isa = PBXGroup;
+ children = (
+ 041FA8A12DCCB7FA00BABC32 /* Package.swift */,
+ 041FA8A52DCCB7FA00BABC32 /* BenchmarkVitals.swift */,
+ 041FA8A22DCCB7FA00BABC32 /* BenchmarkMeter.swift */,
+ 041FA8A32DCCB7FA00BABC32 /* BenchmarkProfiler.swift */,
+ 04066FD22DCCB97400A9E317 /* Sources */,
+ );
+ path = Vitals;
+ sourceTree = "";
+ };
+ 0434031E2DCB70D200803AF8 /* BenchmarkVitals */ = {
+ isa = PBXGroup;
+ children = (
+ 043403282DCBA1D100803AF8 /* BenchmarkVitals.h */,
+ 043403242DCB9CD700803AF8 /* BenchmarkVitals.mm */,
+ 043403222DCB9CB200803AF8 /* BenchMarkVitalsImplementation.swift */,
+ 041FA8A02DCCB7EA00BABC32 /* Vitals */,
+ );
+ path = BenchmarkVitals;
+ sourceTree = "";
+ };
+ 13B07FAE1A68108700A75B9A /* BenchmarkRunner */ = {
+ isa = PBXGroup;
+ children = (
+ 04576C952DCBAF900078DCAB /* main.m */,
+ 761780EC2CA45674006654EE /* AppDelegate.swift */,
+ 13B07FB61A68108700A75B9A /* Info.plist */,
+ 13B07FB51A68108700A75B9A /* Images.xcassets */,
+ 81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */,
+ 13B07FB81A68108700A75B9A /* PrivacyInfo.xcprivacy */,
+ );
+ name = BenchmarkRunner;
+ sourceTree = "";
+ };
+ 2D16E6871FA4F8E400B85C8A /* Frameworks */ = {
+ isa = PBXGroup;
+ children = (
+ ED297162215061F000B7C4FE /* JavaScriptCore.framework */,
+ 5DCACB8F33CDC322A6C60F78 /* libPods-BenchmarkRunner.a */,
+ );
+ name = Frameworks;
+ sourceTree = "";
+ };
+ 832341AE1AAA6A7D00B99B32 /* Libraries */ = {
+ isa = PBXGroup;
+ children = (
+ );
+ name = Libraries;
+ sourceTree = "";
+ };
+ 83CBB9F61A601CBA00E9B192 = {
+ isa = PBXGroup;
+ children = (
+ 0434031E2DCB70D200803AF8 /* BenchmarkVitals */,
+ 13B07FAE1A68108700A75B9A /* BenchmarkRunner */,
+ 832341AE1AAA6A7D00B99B32 /* Libraries */,
+ 83CBBA001A601CBA00E9B192 /* Products */,
+ 2D16E6871FA4F8E400B85C8A /* Frameworks */,
+ BBD78D7AC51CEA395F1C20DB /* Pods */,
+ );
+ indentWidth = 2;
+ sourceTree = "";
+ tabWidth = 2;
+ usesTabs = 0;
+ };
+ 83CBBA001A601CBA00E9B192 /* Products */ = {
+ isa = PBXGroup;
+ children = (
+ 13B07F961A680F5B00A75B9A /* BenchmarkRunner.app */,
+ );
+ name = Products;
+ sourceTree = "";
+ };
+ BBD78D7AC51CEA395F1C20DB /* Pods */ = {
+ isa = PBXGroup;
+ children = (
+ 3B4392A12AC88292D35C810B /* Pods-BenchmarkRunner.debug.xcconfig */,
+ 5709B34CF0A7D63546082F79 /* Pods-BenchmarkRunner.release.xcconfig */,
+ );
+ path = Pods;
+ sourceTree = "";
+ };
+/* End PBXGroup section */
+
+/* Begin PBXNativeTarget section */
+ 13B07F861A680F5B00A75B9A /* BenchmarkRunner */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "BenchmarkRunner" */;
+ buildPhases = (
+ C38B50BA6285516D6DCD4F65 /* [CP] Check Pods Manifest.lock */,
+ 13B07F871A680F5B00A75B9A /* Sources */,
+ 13B07F8C1A680F5B00A75B9A /* Frameworks */,
+ 13B07F8E1A680F5B00A75B9A /* Resources */,
+ 00DD1BFF1BD5951E006B06BC /* Bundle React Native code and images */,
+ 00EEFC60759A1932668264C0 /* [CP] Embed Pods Frameworks */,
+ E235C05ADACE081382539298 /* [CP] Copy Pods Resources */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ );
+ name = BenchmarkRunner;
+ productName = BenchmarkRunner;
+ productReference = 13B07F961A680F5B00A75B9A /* BenchmarkRunner.app */;
+ productType = "com.apple.product-type.application";
+ };
+/* End PBXNativeTarget section */
+
+/* Begin PBXProject section */
+ 83CBB9F71A601CBA00E9B192 /* Project object */ = {
+ isa = PBXProject;
+ attributes = {
+ LastUpgradeCheck = 1210;
+ TargetAttributes = {
+ 13B07F861A680F5B00A75B9A = {
+ LastSwiftMigration = 1620;
+ };
+ };
+ };
+ buildConfigurationList = 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "BenchmarkRunner" */;
+ compatibilityVersion = "Xcode 12.0";
+ developmentRegion = en;
+ hasScannedForEncodings = 0;
+ knownRegions = (
+ en,
+ Base,
+ );
+ mainGroup = 83CBB9F61A601CBA00E9B192;
+ packageReferences = (
+ 04066FD32DCCB9D200A9E317 /* XCLocalSwiftPackageReference "Vitals" */,
+ );
+ productRefGroup = 83CBBA001A601CBA00E9B192 /* Products */;
+ projectDirPath = "";
+ projectRoot = "";
+ targets = (
+ 13B07F861A680F5B00A75B9A /* BenchmarkRunner */,
+ );
+ };
+/* End PBXProject section */
+
+/* Begin PBXResourcesBuildPhase section */
+ 13B07F8E1A680F5B00A75B9A /* Resources */ = {
+ isa = PBXResourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 81AB9BB82411601600AC10FF /* LaunchScreen.storyboard in Resources */,
+ 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */,
+ 20A397FC280595A8A9851556 /* PrivacyInfo.xcprivacy 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=\"$REACT_NATIVE_PATH/scripts/xcode/with-environment.sh\"\nREACT_NATIVE_XCODE=\"$REACT_NATIVE_PATH/scripts/react-native-xcode.sh\"\n\n/bin/sh -c \"$WITH_ENVIRONMENT $REACT_NATIVE_XCODE\"\n";
+ };
+ 00EEFC60759A1932668264C0 /* [CP] Embed Pods Frameworks */ = {
+ isa = PBXShellScriptBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ inputFileListPaths = (
+ "${PODS_ROOT}/Target Support Files/Pods-BenchmarkRunner/Pods-BenchmarkRunner-frameworks-${CONFIGURATION}-input-files.xcfilelist",
+ );
+ name = "[CP] Embed Pods Frameworks";
+ outputFileListPaths = (
+ "${PODS_ROOT}/Target Support Files/Pods-BenchmarkRunner/Pods-BenchmarkRunner-frameworks-${CONFIGURATION}-output-files.xcfilelist",
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ shellPath = /bin/sh;
+ shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-BenchmarkRunner/Pods-BenchmarkRunner-frameworks.sh\"\n";
+ showEnvVarsInLog = 0;
+ };
+ C38B50BA6285516D6DCD4F65 /* [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-BenchmarkRunner-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;
+ };
+ E235C05ADACE081382539298 /* [CP] Copy Pods Resources */ = {
+ isa = PBXShellScriptBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ inputFileListPaths = (
+ "${PODS_ROOT}/Target Support Files/Pods-BenchmarkRunner/Pods-BenchmarkRunner-resources-${CONFIGURATION}-input-files.xcfilelist",
+ );
+ name = "[CP] Copy Pods Resources";
+ outputFileListPaths = (
+ "${PODS_ROOT}/Target Support Files/Pods-BenchmarkRunner/Pods-BenchmarkRunner-resources-${CONFIGURATION}-output-files.xcfilelist",
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ shellPath = /bin/sh;
+ shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-BenchmarkRunner/Pods-BenchmarkRunner-resources.sh\"\n";
+ showEnvVarsInLog = 0;
+ };
+/* End PBXShellScriptBuildPhase section */
+
+/* Begin PBXSourcesBuildPhase section */
+ 13B07F871A680F5B00A75B9A /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 041FA8A82DCCB7FA00BABC32 /* MetricExporter.swift in Sources */,
+ 041FA8A92DCCB7FA00BABC32 /* BenchmarkVitals.swift in Sources */,
+ 041FA8AA2DCCB7FA00BABC32 /* Metrics.swift in Sources */,
+ 041FA8AB2DCCB7FA00BABC32 /* BenchmarkMeter.swift in Sources */,
+ 041FA8AD2DCCB7FA00BABC32 /* BenchmarkProfiler.swift in Sources */,
+ 041FA8AE2DCCB7FA00BABC32 /* Benchmarks.swift in Sources */,
+ 043403262DCB9CD700803AF8 /* BenchmarkVitals.mm in Sources */,
+ 043403232DCB9CB200803AF8 /* BenchMarkVitalsImplementation.swift in Sources */,
+ 04576C962DCBAF900078DCAB /* main.m in Sources */,
+ 761780ED2CA45674006654EE /* AppDelegate.swift in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXSourcesBuildPhase section */
+
+/* Begin XCBuildConfiguration section */
+ 13B07F941A680F5B00A75B9A /* Debug */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = 3B4392A12AC88292D35C810B /* Pods-BenchmarkRunner.debug.xcconfig */;
+ buildSettings = {
+ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+ CLANG_ENABLE_MODULES = YES;
+ CURRENT_PROJECT_VERSION = 1;
+ DEFINES_MODULE = YES;
+ ENABLE_BITCODE = NO;
+ HEADER_SEARCH_PATHS = (
+ "$(inherited)",
+ "\"${PODS_ROOT}/Headers/Public\"",
+ "\"${PODS_ROOT}/Headers/Public/DatadogCore\"",
+ "\"${PODS_ROOT}/Headers/Public/DatadogSDKReactNative\"",
+ "\"${PODS_ROOT}/Headers/Public/DoubleConversion\"",
+ "\"${PODS_ROOT}/Headers/Public/FBLazyVector\"",
+ "\"${PODS_ROOT}/Headers/Public/RCT-Folly\"",
+ "\"${PODS_ROOT}/Headers/Public/RCTDeprecation\"",
+ "\"${PODS_ROOT}/Headers/Public/RCTRequired\"",
+ "\"${PODS_ROOT}/Headers/Public/RCTTypeSafety\"",
+ "\"${PODS_ROOT}/Headers/Public/RNScreens\"",
+ "\"${PODS_ROOT}/Headers/Public/React-Core\"",
+ "\"${PODS_ROOT}/Headers/Public/React-Fabric\"",
+ "\"${PODS_ROOT}/Headers/Public/React-FabricComponents\"",
+ "\"${PODS_ROOT}/Headers/Public/React-FabricImage\"",
+ "\"${PODS_ROOT}/Headers/Public/React-ImageManager\"",
+ "\"${PODS_ROOT}/Headers/Public/React-Mapbuffer\"",
+ "\"${PODS_ROOT}/Headers/Public/React-NativeModulesApple\"",
+ "\"${PODS_ROOT}/Headers/Public/React-RCTAnimation\"",
+ "\"${PODS_ROOT}/Headers/Public/React-RCTAppDelegate\"",
+ "\"${PODS_ROOT}/Headers/Public/React-RCTBlob\"",
+ "\"${PODS_ROOT}/Headers/Public/React-RCTFBReactNativeSpec\"",
+ "\"${PODS_ROOT}/Headers/Public/React-RCTFabric\"",
+ "\"${PODS_ROOT}/Headers/Public/React-RCTText\"",
+ "\"${PODS_ROOT}/Headers/Public/React-RuntimeApple\"",
+ "\"${PODS_ROOT}/Headers/Public/React-RuntimeCore\"",
+ "\"${PODS_ROOT}/Headers/Public/React-RuntimeHermes\"",
+ "\"${PODS_ROOT}/Headers/Public/React-callinvoker\"",
+ "\"${PODS_ROOT}/Headers/Public/React-cxxreact\"",
+ "\"${PODS_ROOT}/Headers/Public/React-debug\"",
+ "\"${PODS_ROOT}/Headers/Public/React-defaultsnativemodule\"",
+ "\"${PODS_ROOT}/Headers/Public/React-domnativemodule\"",
+ "\"${PODS_ROOT}/Headers/Public/React-featureflags\"",
+ "\"${PODS_ROOT}/Headers/Public/React-featureflagsnativemodule\"",
+ "\"${PODS_ROOT}/Headers/Public/React-graphics\"",
+ "\"${PODS_ROOT}/Headers/Public/React-hermes\"",
+ "\"${PODS_ROOT}/Headers/Public/React-idlecallbacksnativemodule\"",
+ "\"${PODS_ROOT}/Headers/Public/React-jserrorhandler\"",
+ "\"${PODS_ROOT}/Headers/Public/React-jsi\"",
+ "\"${PODS_ROOT}/Headers/Public/React-jsiexecutor\"",
+ "\"${PODS_ROOT}/Headers/Public/React-jsinspector\"",
+ "\"${PODS_ROOT}/Headers/Public/React-jsinspectortracing\"",
+ "\"${PODS_ROOT}/Headers/Public/React-logger\"",
+ "\"${PODS_ROOT}/Headers/Public/React-microtasksnativemodule\"",
+ "\"${PODS_ROOT}/Headers/Public/React-perflogger\"",
+ "\"${PODS_ROOT}/Headers/Public/React-performancetimeline\"",
+ "\"${PODS_ROOT}/Headers/Public/React-rendererconsistency\"",
+ "\"${PODS_ROOT}/Headers/Public/React-rendererdebug\"",
+ "\"${PODS_ROOT}/Headers/Public/React-runtimeexecutor\"",
+ "\"${PODS_ROOT}/Headers/Public/React-runtimescheduler\"",
+ "\"${PODS_ROOT}/Headers/Public/React-timing\"",
+ "\"${PODS_ROOT}/Headers/Public/React-utils\"",
+ "\"${PODS_ROOT}/Headers/Public/ReactAppDependencyProvider\"",
+ "\"${PODS_ROOT}/Headers/Public/ReactCodegen\"",
+ "\"${PODS_ROOT}/Headers/Public/ReactCommon\"",
+ "\"${PODS_ROOT}/Headers/Public/SocketRocket\"",
+ "\"${PODS_ROOT}/Headers/Public/Yoga\"",
+ "\"${PODS_ROOT}/Headers/Public/boost\"",
+ "\"${PODS_ROOT}/Headers/Public/fast_float\"",
+ "\"${PODS_ROOT}/Headers/Public/fmt\"",
+ "\"${PODS_ROOT}/Headers/Public/glog\"",
+ "\"${PODS_ROOT}/Headers/Public/hermes-engine\"",
+ "\"${PODS_ROOT}/Headers/Public/react-native-config\"",
+ "\"${PODS_ROOT}/Headers/Public/react-native-safe-area-context\"",
+ "\"$(PODS_ROOT)/DoubleConversion\"",
+ "\"$(PODS_ROOT)/boost\"",
+ "\"$(PODS_ROOT)/Headers/Private/React-Core\"",
+ "\"$(PODS_ROOT)/Headers/Private/React-Core\"",
+ "\"$(PODS_ROOT)/Headers/Private/Yoga\"",
+ "$(PROJECT_DIR)/build/generated/ios/**",
+ );
+ INFOPLIST_FILE = BenchmarkRunner/Info.plist;
+ IPHONEOS_DEPLOYMENT_TARGET = 15.1;
+ LD_RUNPATH_SEARCH_PATHS = (
+ "$(inherited)",
+ "@executable_path/Frameworks",
+ );
+ MARKETING_VERSION = 1.0;
+ OTHER_LDFLAGS = (
+ "$(inherited)",
+ "-ObjC",
+ "-lc++",
+ );
+ PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)";
+ PRODUCT_NAME = BenchmarkRunner;
+ SWIFT_OBJC_BRIDGING_HEADER = "";
+ SWIFT_OPTIMIZATION_LEVEL = "-Onone";
+ SWIFT_VERSION = 5.0;
+ VERSIONING_SYSTEM = "apple-generic";
+ };
+ name = Debug;
+ };
+ 13B07F951A680F5B00A75B9A /* Release */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = 5709B34CF0A7D63546082F79 /* Pods-BenchmarkRunner.release.xcconfig */;
+ buildSettings = {
+ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+ CLANG_ENABLE_MODULES = YES;
+ CURRENT_PROJECT_VERSION = 1;
+ DEFINES_MODULE = YES;
+ HEADER_SEARCH_PATHS = (
+ "$(inherited)",
+ "\"${PODS_ROOT}/Headers/Public\"",
+ "\"${PODS_ROOT}/Headers/Public/DatadogCore\"",
+ "\"${PODS_ROOT}/Headers/Public/DatadogSDKReactNative\"",
+ "\"${PODS_ROOT}/Headers/Public/DoubleConversion\"",
+ "\"${PODS_ROOT}/Headers/Public/FBLazyVector\"",
+ "\"${PODS_ROOT}/Headers/Public/RCT-Folly\"",
+ "\"${PODS_ROOT}/Headers/Public/RCTDeprecation\"",
+ "\"${PODS_ROOT}/Headers/Public/RCTRequired\"",
+ "\"${PODS_ROOT}/Headers/Public/RCTTypeSafety\"",
+ "\"${PODS_ROOT}/Headers/Public/RNScreens\"",
+ "\"${PODS_ROOT}/Headers/Public/React-Core\"",
+ "\"${PODS_ROOT}/Headers/Public/React-Fabric\"",
+ "\"${PODS_ROOT}/Headers/Public/React-FabricComponents\"",
+ "\"${PODS_ROOT}/Headers/Public/React-FabricImage\"",
+ "\"${PODS_ROOT}/Headers/Public/React-ImageManager\"",
+ "\"${PODS_ROOT}/Headers/Public/React-Mapbuffer\"",
+ "\"${PODS_ROOT}/Headers/Public/React-NativeModulesApple\"",
+ "\"${PODS_ROOT}/Headers/Public/React-RCTAnimation\"",
+ "\"${PODS_ROOT}/Headers/Public/React-RCTAppDelegate\"",
+ "\"${PODS_ROOT}/Headers/Public/React-RCTBlob\"",
+ "\"${PODS_ROOT}/Headers/Public/React-RCTFBReactNativeSpec\"",
+ "\"${PODS_ROOT}/Headers/Public/React-RCTFabric\"",
+ "\"${PODS_ROOT}/Headers/Public/React-RCTText\"",
+ "\"${PODS_ROOT}/Headers/Public/React-RuntimeApple\"",
+ "\"${PODS_ROOT}/Headers/Public/React-RuntimeCore\"",
+ "\"${PODS_ROOT}/Headers/Public/React-RuntimeHermes\"",
+ "\"${PODS_ROOT}/Headers/Public/React-callinvoker\"",
+ "\"${PODS_ROOT}/Headers/Public/React-cxxreact\"",
+ "\"${PODS_ROOT}/Headers/Public/React-debug\"",
+ "\"${PODS_ROOT}/Headers/Public/React-defaultsnativemodule\"",
+ "\"${PODS_ROOT}/Headers/Public/React-domnativemodule\"",
+ "\"${PODS_ROOT}/Headers/Public/React-featureflags\"",
+ "\"${PODS_ROOT}/Headers/Public/React-featureflagsnativemodule\"",
+ "\"${PODS_ROOT}/Headers/Public/React-graphics\"",
+ "\"${PODS_ROOT}/Headers/Public/React-hermes\"",
+ "\"${PODS_ROOT}/Headers/Public/React-idlecallbacksnativemodule\"",
+ "\"${PODS_ROOT}/Headers/Public/React-jserrorhandler\"",
+ "\"${PODS_ROOT}/Headers/Public/React-jsi\"",
+ "\"${PODS_ROOT}/Headers/Public/React-jsiexecutor\"",
+ "\"${PODS_ROOT}/Headers/Public/React-jsinspector\"",
+ "\"${PODS_ROOT}/Headers/Public/React-jsinspectortracing\"",
+ "\"${PODS_ROOT}/Headers/Public/React-logger\"",
+ "\"${PODS_ROOT}/Headers/Public/React-microtasksnativemodule\"",
+ "\"${PODS_ROOT}/Headers/Public/React-perflogger\"",
+ "\"${PODS_ROOT}/Headers/Public/React-performancetimeline\"",
+ "\"${PODS_ROOT}/Headers/Public/React-rendererconsistency\"",
+ "\"${PODS_ROOT}/Headers/Public/React-rendererdebug\"",
+ "\"${PODS_ROOT}/Headers/Public/React-runtimeexecutor\"",
+ "\"${PODS_ROOT}/Headers/Public/React-runtimescheduler\"",
+ "\"${PODS_ROOT}/Headers/Public/React-timing\"",
+ "\"${PODS_ROOT}/Headers/Public/React-utils\"",
+ "\"${PODS_ROOT}/Headers/Public/ReactAppDependencyProvider\"",
+ "\"${PODS_ROOT}/Headers/Public/ReactCodegen\"",
+ "\"${PODS_ROOT}/Headers/Public/ReactCommon\"",
+ "\"${PODS_ROOT}/Headers/Public/SocketRocket\"",
+ "\"${PODS_ROOT}/Headers/Public/Yoga\"",
+ "\"${PODS_ROOT}/Headers/Public/boost\"",
+ "\"${PODS_ROOT}/Headers/Public/fast_float\"",
+ "\"${PODS_ROOT}/Headers/Public/fmt\"",
+ "\"${PODS_ROOT}/Headers/Public/glog\"",
+ "\"${PODS_ROOT}/Headers/Public/hermes-engine\"",
+ "\"${PODS_ROOT}/Headers/Public/react-native-config\"",
+ "\"${PODS_ROOT}/Headers/Public/react-native-safe-area-context\"",
+ "\"$(PODS_ROOT)/DoubleConversion\"",
+ "\"$(PODS_ROOT)/boost\"",
+ "\"$(PODS_ROOT)/Headers/Private/React-Core\"",
+ "\"$(PODS_ROOT)/Headers/Private/React-Core\"",
+ "\"$(PODS_ROOT)/Headers/Private/Yoga\"",
+ "$(PROJECT_DIR)/build/generated/ios/**",
+ );
+ INFOPLIST_FILE = BenchmarkRunner/Info.plist;
+ IPHONEOS_DEPLOYMENT_TARGET = 15.1;
+ LD_RUNPATH_SEARCH_PATHS = (
+ "$(inherited)",
+ "@executable_path/Frameworks",
+ );
+ MARKETING_VERSION = 1.0;
+ OTHER_LDFLAGS = (
+ "$(inherited)",
+ "-ObjC",
+ "-lc++",
+ );
+ PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)";
+ PRODUCT_NAME = BenchmarkRunner;
+ SWIFT_OBJC_BRIDGING_HEADER = "";
+ 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++20";
+ 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*]" = "";
+ 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 = 15.1;
+ 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;
+ OTHER_CPLUSPLUSFLAGS = (
+ "$(OTHER_CFLAGS)",
+ "-DFOLLY_NO_CONFIG",
+ "-DFOLLY_MOBILE=1",
+ "-DFOLLY_USE_LIBCPP=1",
+ "-DFOLLY_CFG_NO_COROUTINES=1",
+ "-DFOLLY_HAVE_CLOCK_GETTIME=1",
+ );
+ OTHER_LDFLAGS = (
+ "$(inherited)",
+ " ",
+ );
+ REACT_NATIVE_PATH = "${PODS_ROOT}/../../node_modules/react-native";
+ SDKROOT = iphoneos;
+ SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) DEBUG";
+ USE_HERMES = true;
+ };
+ name = Debug;
+ };
+ 83CBBA211A601CBA00E9B192 /* Release */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ALWAYS_SEARCH_USER_PATHS = NO;
+ CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
+ CLANG_CXX_LANGUAGE_STANDARD = "c++20";
+ 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*]" = "";
+ 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 = 15.1;
+ 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",
+ "-DFOLLY_CFG_NO_COROUTINES=1",
+ "-DFOLLY_HAVE_CLOCK_GETTIME=1",
+ );
+ OTHER_LDFLAGS = (
+ "$(inherited)",
+ " ",
+ );
+ REACT_NATIVE_PATH = "${PODS_ROOT}/../../node_modules/react-native";
+ SDKROOT = iphoneos;
+ USE_HERMES = true;
+ VALIDATE_PRODUCT = YES;
+ };
+ name = Release;
+ };
+/* End XCBuildConfiguration section */
+
+/* Begin XCConfigurationList section */
+ 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "BenchmarkRunner" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ 13B07F941A680F5B00A75B9A /* Debug */,
+ 13B07F951A680F5B00A75B9A /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+ 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "BenchmarkRunner" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ 83CBBA201A601CBA00E9B192 /* Debug */,
+ 83CBBA211A601CBA00E9B192 /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+/* End XCConfigurationList section */
+
+/* Begin XCLocalSwiftPackageReference section */
+ 04066FD32DCCB9D200A9E317 /* XCLocalSwiftPackageReference "Vitals" */ = {
+ isa = XCLocalSwiftPackageReference;
+ relativePath = BenchmarkVitals/Vitals;
+ };
+/* End XCLocalSwiftPackageReference section */
+
+/* Begin XCSwiftPackageProductDependency section */
+ 04066FD42DCCB9D200A9E317 /* DatadogBenchmarks */ = {
+ isa = XCSwiftPackageProductDependency;
+ productName = DatadogBenchmarks;
+ };
+/* End XCSwiftPackageProductDependency section */
+ };
+ rootObject = 83CBB9F71A601CBA00E9B192 /* Project object */;
+}
diff --git a/benchmarks/ios/BenchmarkRunner.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved b/benchmarks/ios/BenchmarkRunner.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved
new file mode 100644
index 000000000..fefebe144
--- /dev/null
+++ b/benchmarks/ios/BenchmarkRunner.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved
@@ -0,0 +1,177 @@
+{
+ "originHash" : "6080434f841a87c8e7ac3b20dc830d9b44f71d3a779bd2cd618583a99aad2fc9",
+ "pins" : [
+ {
+ "identity" : "grpc-swift",
+ "kind" : "remoteSourceControl",
+ "location" : "https://github.com/grpc/grpc-swift.git",
+ "state" : {
+ "revision" : "8c5e99d0255c373e0330730d191a3423c57373fb",
+ "version" : "1.24.2"
+ }
+ },
+ {
+ "identity" : "opentelemetry-swift",
+ "kind" : "remoteSourceControl",
+ "location" : "https://github.com/open-telemetry/opentelemetry-swift",
+ "state" : {
+ "revision" : "2ffffae2a027e2159dbf3fd53de1f25ba6d2d11d",
+ "version" : "1.13.0"
+ }
+ },
+ {
+ "identity" : "opentracing-objc",
+ "kind" : "remoteSourceControl",
+ "location" : "https://github.com/undefinedlabs/opentracing-objc",
+ "state" : {
+ "revision" : "18c1a35ca966236cee0c5a714a51a73ff33384c1",
+ "version" : "0.5.2"
+ }
+ },
+ {
+ "identity" : "swift-algorithms",
+ "kind" : "remoteSourceControl",
+ "location" : "https://github.com/apple/swift-algorithms.git",
+ "state" : {
+ "revision" : "87e50f483c54e6efd60e885f7f5aa946cee68023",
+ "version" : "1.2.1"
+ }
+ },
+ {
+ "identity" : "swift-atomics",
+ "kind" : "remoteSourceControl",
+ "location" : "https://github.com/apple/swift-atomics.git",
+ "state" : {
+ "revision" : "cd142fd2f64be2100422d658e7411e39489da985",
+ "version" : "1.2.0"
+ }
+ },
+ {
+ "identity" : "swift-collections",
+ "kind" : "remoteSourceControl",
+ "location" : "https://github.com/apple/swift-collections.git",
+ "state" : {
+ "revision" : "671108c96644956dddcd89dd59c203dcdb36cec7",
+ "version" : "1.1.4"
+ }
+ },
+ {
+ "identity" : "swift-http-structured-headers",
+ "kind" : "remoteSourceControl",
+ "location" : "https://github.com/apple/swift-http-structured-headers.git",
+ "state" : {
+ "revision" : "f280fc7676b9940ff2c6598642751ea333c6544f",
+ "version" : "1.2.2"
+ }
+ },
+ {
+ "identity" : "swift-http-types",
+ "kind" : "remoteSourceControl",
+ "location" : "https://github.com/apple/swift-http-types.git",
+ "state" : {
+ "revision" : "a0a57e949a8903563aba4615869310c0ebf14c03",
+ "version" : "1.4.0"
+ }
+ },
+ {
+ "identity" : "swift-log",
+ "kind" : "remoteSourceControl",
+ "location" : "https://github.com/apple/swift-log.git",
+ "state" : {
+ "revision" : "3d8596ed08bd13520157f0355e35caed215ffbfa",
+ "version" : "1.6.3"
+ }
+ },
+ {
+ "identity" : "swift-metrics",
+ "kind" : "remoteSourceControl",
+ "location" : "https://github.com/apple/swift-metrics.git",
+ "state" : {
+ "revision" : "4c83e1cdf4ba538ef6e43a9bbd0bcc33a0ca46e3",
+ "version" : "2.7.0"
+ }
+ },
+ {
+ "identity" : "swift-nio",
+ "kind" : "remoteSourceControl",
+ "location" : "https://github.com/apple/swift-nio.git",
+ "state" : {
+ "revision" : "0f54d58bb5db9e064f332e8524150de379d1e51c",
+ "version" : "2.82.1"
+ }
+ },
+ {
+ "identity" : "swift-nio-extras",
+ "kind" : "remoteSourceControl",
+ "location" : "https://github.com/apple/swift-nio-extras.git",
+ "state" : {
+ "revision" : "f1f6f772198bee35d99dd145f1513d8581a54f2c",
+ "version" : "1.26.0"
+ }
+ },
+ {
+ "identity" : "swift-nio-http2",
+ "kind" : "remoteSourceControl",
+ "location" : "https://github.com/apple/swift-nio-http2.git",
+ "state" : {
+ "revision" : "4281466512f63d1bd530e33f4aa6993ee7864be0",
+ "version" : "1.36.0"
+ }
+ },
+ {
+ "identity" : "swift-nio-ssl",
+ "kind" : "remoteSourceControl",
+ "location" : "https://github.com/apple/swift-nio-ssl.git",
+ "state" : {
+ "revision" : "6df102a39c8da5fdc2eae29a0f63546d660866fc",
+ "version" : "2.30.0"
+ }
+ },
+ {
+ "identity" : "swift-nio-transport-services",
+ "kind" : "remoteSourceControl",
+ "location" : "https://github.com/apple/swift-nio-transport-services.git",
+ "state" : {
+ "revision" : "cd1e89816d345d2523b11c55654570acd5cd4c56",
+ "version" : "1.24.0"
+ }
+ },
+ {
+ "identity" : "swift-numerics",
+ "kind" : "remoteSourceControl",
+ "location" : "https://github.com/apple/swift-numerics.git",
+ "state" : {
+ "revision" : "e0ec0f5f3af6f3e4d5e7a19d2af26b481acb6ba8",
+ "version" : "1.0.3"
+ }
+ },
+ {
+ "identity" : "swift-protobuf",
+ "kind" : "remoteSourceControl",
+ "location" : "https://github.com/apple/swift-protobuf.git",
+ "state" : {
+ "revision" : "d72aed98f8253ec1aa9ea1141e28150f408cf17f",
+ "version" : "1.29.0"
+ }
+ },
+ {
+ "identity" : "swift-system",
+ "kind" : "remoteSourceControl",
+ "location" : "https://github.com/apple/swift-system.git",
+ "state" : {
+ "revision" : "a34201439c74b53f0fd71ef11741af7e7caf01e1",
+ "version" : "1.4.2"
+ }
+ },
+ {
+ "identity" : "thrift-swift",
+ "kind" : "remoteSourceControl",
+ "location" : "https://github.com/undefinedlabs/Thrift-Swift",
+ "state" : {
+ "revision" : "18ff09e6b30e589ed38f90a1af23e193b8ecef8e",
+ "version" : "1.1.2"
+ }
+ }
+ ],
+ "version" : 3
+}
diff --git a/benchmarks/ios/BenchmarkRunner.xcodeproj/xcshareddata/xcschemes/BenchmarkRunner.xcscheme b/benchmarks/ios/BenchmarkRunner.xcodeproj/xcshareddata/xcschemes/BenchmarkRunner.xcscheme
new file mode 100644
index 000000000..ae3025f76
--- /dev/null
+++ b/benchmarks/ios/BenchmarkRunner.xcodeproj/xcshareddata/xcschemes/BenchmarkRunner.xcscheme
@@ -0,0 +1,88 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/benchmarks/ios/BenchmarkRunner.xcworkspace/contents.xcworkspacedata b/benchmarks/ios/BenchmarkRunner.xcworkspace/contents.xcworkspacedata
new file mode 100644
index 000000000..1411fce3d
--- /dev/null
+++ b/benchmarks/ios/BenchmarkRunner.xcworkspace/contents.xcworkspacedata
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
diff --git a/benchmarks/ios/BenchmarkRunner.xcworkspace/xcshareddata/swiftpm/Package.resolved b/benchmarks/ios/BenchmarkRunner.xcworkspace/xcshareddata/swiftpm/Package.resolved
new file mode 100644
index 000000000..fefebe144
--- /dev/null
+++ b/benchmarks/ios/BenchmarkRunner.xcworkspace/xcshareddata/swiftpm/Package.resolved
@@ -0,0 +1,177 @@
+{
+ "originHash" : "6080434f841a87c8e7ac3b20dc830d9b44f71d3a779bd2cd618583a99aad2fc9",
+ "pins" : [
+ {
+ "identity" : "grpc-swift",
+ "kind" : "remoteSourceControl",
+ "location" : "https://github.com/grpc/grpc-swift.git",
+ "state" : {
+ "revision" : "8c5e99d0255c373e0330730d191a3423c57373fb",
+ "version" : "1.24.2"
+ }
+ },
+ {
+ "identity" : "opentelemetry-swift",
+ "kind" : "remoteSourceControl",
+ "location" : "https://github.com/open-telemetry/opentelemetry-swift",
+ "state" : {
+ "revision" : "2ffffae2a027e2159dbf3fd53de1f25ba6d2d11d",
+ "version" : "1.13.0"
+ }
+ },
+ {
+ "identity" : "opentracing-objc",
+ "kind" : "remoteSourceControl",
+ "location" : "https://github.com/undefinedlabs/opentracing-objc",
+ "state" : {
+ "revision" : "18c1a35ca966236cee0c5a714a51a73ff33384c1",
+ "version" : "0.5.2"
+ }
+ },
+ {
+ "identity" : "swift-algorithms",
+ "kind" : "remoteSourceControl",
+ "location" : "https://github.com/apple/swift-algorithms.git",
+ "state" : {
+ "revision" : "87e50f483c54e6efd60e885f7f5aa946cee68023",
+ "version" : "1.2.1"
+ }
+ },
+ {
+ "identity" : "swift-atomics",
+ "kind" : "remoteSourceControl",
+ "location" : "https://github.com/apple/swift-atomics.git",
+ "state" : {
+ "revision" : "cd142fd2f64be2100422d658e7411e39489da985",
+ "version" : "1.2.0"
+ }
+ },
+ {
+ "identity" : "swift-collections",
+ "kind" : "remoteSourceControl",
+ "location" : "https://github.com/apple/swift-collections.git",
+ "state" : {
+ "revision" : "671108c96644956dddcd89dd59c203dcdb36cec7",
+ "version" : "1.1.4"
+ }
+ },
+ {
+ "identity" : "swift-http-structured-headers",
+ "kind" : "remoteSourceControl",
+ "location" : "https://github.com/apple/swift-http-structured-headers.git",
+ "state" : {
+ "revision" : "f280fc7676b9940ff2c6598642751ea333c6544f",
+ "version" : "1.2.2"
+ }
+ },
+ {
+ "identity" : "swift-http-types",
+ "kind" : "remoteSourceControl",
+ "location" : "https://github.com/apple/swift-http-types.git",
+ "state" : {
+ "revision" : "a0a57e949a8903563aba4615869310c0ebf14c03",
+ "version" : "1.4.0"
+ }
+ },
+ {
+ "identity" : "swift-log",
+ "kind" : "remoteSourceControl",
+ "location" : "https://github.com/apple/swift-log.git",
+ "state" : {
+ "revision" : "3d8596ed08bd13520157f0355e35caed215ffbfa",
+ "version" : "1.6.3"
+ }
+ },
+ {
+ "identity" : "swift-metrics",
+ "kind" : "remoteSourceControl",
+ "location" : "https://github.com/apple/swift-metrics.git",
+ "state" : {
+ "revision" : "4c83e1cdf4ba538ef6e43a9bbd0bcc33a0ca46e3",
+ "version" : "2.7.0"
+ }
+ },
+ {
+ "identity" : "swift-nio",
+ "kind" : "remoteSourceControl",
+ "location" : "https://github.com/apple/swift-nio.git",
+ "state" : {
+ "revision" : "0f54d58bb5db9e064f332e8524150de379d1e51c",
+ "version" : "2.82.1"
+ }
+ },
+ {
+ "identity" : "swift-nio-extras",
+ "kind" : "remoteSourceControl",
+ "location" : "https://github.com/apple/swift-nio-extras.git",
+ "state" : {
+ "revision" : "f1f6f772198bee35d99dd145f1513d8581a54f2c",
+ "version" : "1.26.0"
+ }
+ },
+ {
+ "identity" : "swift-nio-http2",
+ "kind" : "remoteSourceControl",
+ "location" : "https://github.com/apple/swift-nio-http2.git",
+ "state" : {
+ "revision" : "4281466512f63d1bd530e33f4aa6993ee7864be0",
+ "version" : "1.36.0"
+ }
+ },
+ {
+ "identity" : "swift-nio-ssl",
+ "kind" : "remoteSourceControl",
+ "location" : "https://github.com/apple/swift-nio-ssl.git",
+ "state" : {
+ "revision" : "6df102a39c8da5fdc2eae29a0f63546d660866fc",
+ "version" : "2.30.0"
+ }
+ },
+ {
+ "identity" : "swift-nio-transport-services",
+ "kind" : "remoteSourceControl",
+ "location" : "https://github.com/apple/swift-nio-transport-services.git",
+ "state" : {
+ "revision" : "cd1e89816d345d2523b11c55654570acd5cd4c56",
+ "version" : "1.24.0"
+ }
+ },
+ {
+ "identity" : "swift-numerics",
+ "kind" : "remoteSourceControl",
+ "location" : "https://github.com/apple/swift-numerics.git",
+ "state" : {
+ "revision" : "e0ec0f5f3af6f3e4d5e7a19d2af26b481acb6ba8",
+ "version" : "1.0.3"
+ }
+ },
+ {
+ "identity" : "swift-protobuf",
+ "kind" : "remoteSourceControl",
+ "location" : "https://github.com/apple/swift-protobuf.git",
+ "state" : {
+ "revision" : "d72aed98f8253ec1aa9ea1141e28150f408cf17f",
+ "version" : "1.29.0"
+ }
+ },
+ {
+ "identity" : "swift-system",
+ "kind" : "remoteSourceControl",
+ "location" : "https://github.com/apple/swift-system.git",
+ "state" : {
+ "revision" : "a34201439c74b53f0fd71ef11741af7e7caf01e1",
+ "version" : "1.4.2"
+ }
+ },
+ {
+ "identity" : "thrift-swift",
+ "kind" : "remoteSourceControl",
+ "location" : "https://github.com/undefinedlabs/Thrift-Swift",
+ "state" : {
+ "revision" : "18ff09e6b30e589ed38f90a1af23e193b8ecef8e",
+ "version" : "1.1.2"
+ }
+ }
+ ],
+ "version" : 3
+}
diff --git a/benchmarks/ios/BenchmarkRunner/AppDelegate.swift b/benchmarks/ios/BenchmarkRunner/AppDelegate.swift
new file mode 100644
index 000000000..8ca5d31fd
--- /dev/null
+++ b/benchmarks/ios/BenchmarkRunner/AppDelegate.swift
@@ -0,0 +1,45 @@
+/*
+ * Unless explicitly stated otherwise all files in this repository are licensed under the Apache License Version 2.0.
+ * This product includes software developed at Datadog (https://www.datadoghq.com/).
+ * Copyright 2016-Present Datadog, Inc.
+ */
+
+import React
+import ReactAppDependencyProvider
+import React_RCTAppDelegate
+import UIKit
+
+@objc(AppDelegate)
+class AppDelegate: RCTAppDelegate {
+ override func application(
+ _ application: UIApplication,
+ didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? = nil
+ ) -> Bool {
+ self.moduleName = "BenchmarkRunner"
+ self.dependencyProvider = RCTAppDependencyProvider()
+
+ // You can add your custom initial props in the dictionary below.
+ // They will be passed down to the ViewController used by React Native.
+ self.initialProps = [:]
+
+ return super.application(application, didFinishLaunchingWithOptions: launchOptions)
+ }
+
+ override func sourceURL(for bridge: RCTBridge) -> URL? {
+ self.bundleURL()
+ }
+
+ override func bundleURL() -> URL? {
+ #if DEBUG
+ RCTBundleURLProvider.sharedSettings().jsBundleURL(forBundleRoot: "index")
+ #else
+ Bundle.main.url(forResource: "main", withExtension: "jsbundle")
+ #endif
+ }
+
+ override func application(
+ _ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey: Any] = [:]
+ ) -> Bool {
+ return RCTLinkingManager.application(app, open: url, options: options)
+ }
+}
diff --git a/benchmarks/ios/BenchmarkRunner/BenchmarkVitalsModule.m b/benchmarks/ios/BenchmarkRunner/BenchmarkVitalsModule.m
new file mode 100644
index 000000000..89fbb0ca1
--- /dev/null
+++ b/benchmarks/ios/BenchmarkRunner/BenchmarkVitalsModule.m
@@ -0,0 +1,12 @@
+/*
+ * Unless explicitly stated otherwise all files in this repository are licensed under the Apache License Version 2.0.
+ * This product includes software developed at Datadog (https://www.datadoghq.com/).
+ * Copyright 2016-Present Datadog, Inc.
+ */
+
+#import
+
+@interface RCT_EXTERN_MODULE(BenchmarkVitalsModule, NSObject)
+RCT_EXTERN_METHOD(startCollectingVitals:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject)
+RCT_EXTERN_METHOD(stopCollectingVitals:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject)
+@end
diff --git a/benchmarks/ios/BenchmarkRunner/BenchmarkVitalsModule.swift b/benchmarks/ios/BenchmarkRunner/BenchmarkVitalsModule.swift
new file mode 100644
index 000000000..5848fe310
--- /dev/null
+++ b/benchmarks/ios/BenchmarkRunner/BenchmarkVitalsModule.swift
@@ -0,0 +1,22 @@
+/*
+ * Unless explicitly stated otherwise all files in this repository are licensed under the Apache License Version 2.0.
+ * This product includes software developed at Datadog (https://www.datadoghq.com/).
+ * Copyright 2016-Present Datadog, Inc.
+ */
+
+import Foundation
+import React
+
+@objc(BenchmarkVitals)
+class BenchmarkVitalsModule: NSObject {
+// var vitals: Vitals?
+
+ @objc
+ func startCollectingVitals(resolve: RCTPromiseResolveBlock, reject: RCTPromiseRejectBlock) {
+ resolve(true)
+ }
+
+ @objc func stopCollectingVitals(resolve: RCTPromiseResolveBlock, reject: RCTPromiseRejectBlock) {
+ resolve(true)
+ }
+}
diff --git a/benchmarks/ios/BenchmarkRunner/Images.xcassets/AppIcon.appiconset/Contents.json b/benchmarks/ios/BenchmarkRunner/Images.xcassets/AppIcon.appiconset/Contents.json
new file mode 100644
index 000000000..81213230d
--- /dev/null
+++ b/benchmarks/ios/BenchmarkRunner/Images.xcassets/AppIcon.appiconset/Contents.json
@@ -0,0 +1,53 @@
+{
+ "images" : [
+ {
+ "idiom" : "iphone",
+ "scale" : "2x",
+ "size" : "20x20"
+ },
+ {
+ "idiom" : "iphone",
+ "scale" : "3x",
+ "size" : "20x20"
+ },
+ {
+ "idiom" : "iphone",
+ "scale" : "2x",
+ "size" : "29x29"
+ },
+ {
+ "idiom" : "iphone",
+ "scale" : "3x",
+ "size" : "29x29"
+ },
+ {
+ "idiom" : "iphone",
+ "scale" : "2x",
+ "size" : "40x40"
+ },
+ {
+ "idiom" : "iphone",
+ "scale" : "3x",
+ "size" : "40x40"
+ },
+ {
+ "idiom" : "iphone",
+ "scale" : "2x",
+ "size" : "60x60"
+ },
+ {
+ "idiom" : "iphone",
+ "scale" : "3x",
+ "size" : "60x60"
+ },
+ {
+ "idiom" : "ios-marketing",
+ "scale" : "1x",
+ "size" : "1024x1024"
+ }
+ ],
+ "info" : {
+ "author" : "xcode",
+ "version" : 1
+ }
+}
diff --git a/benchmarks/ios/BenchmarkRunner/Images.xcassets/Contents.json b/benchmarks/ios/BenchmarkRunner/Images.xcassets/Contents.json
new file mode 100644
index 000000000..2d92bd53f
--- /dev/null
+++ b/benchmarks/ios/BenchmarkRunner/Images.xcassets/Contents.json
@@ -0,0 +1,6 @@
+{
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ }
+}
diff --git a/benchmarks/ios/BenchmarkRunner/Info.plist b/benchmarks/ios/BenchmarkRunner/Info.plist
new file mode 100644
index 000000000..112ea814a
--- /dev/null
+++ b/benchmarks/ios/BenchmarkRunner/Info.plist
@@ -0,0 +1,61 @@
+
+
+
+
+ CFBundleDevelopmentRegion
+ en
+ CFBundleDisplayName
+ BenchmarkRunner
+ CFBundleExecutable
+ $(EXECUTABLE_NAME)
+ CFBundleIdentifier
+ $(PRODUCT_BUNDLE_IDENTIFIER)
+ CFBundleInfoDictionaryVersion
+ 6.0
+ CFBundleName
+ $(PRODUCT_NAME)
+ CFBundlePackageType
+ APPL
+ CFBundleShortVersionString
+ $(MARKETING_VERSION)
+ CFBundleSignature
+ ????
+ CFBundleVersion
+ $(CURRENT_PROJECT_VERSION)
+ CFBundleURLTypes
+
+
+ CFBundleURLSchemes
+
+ benchmark
+
+
+
+ LSRequiresIPhoneOS
+
+ NSAppTransportSecurity
+
+
+ NSAllowsArbitraryLoads
+
+ NSAllowsLocalNetworking
+
+
+ NSLocationWhenInUseUsageDescription
+
+ UILaunchStoryboardName
+ LaunchScreen
+ UIRequiredDeviceCapabilities
+
+ arm64
+
+ UISupportedInterfaceOrientations
+
+ UIInterfaceOrientationPortrait
+ UIInterfaceOrientationLandscapeLeft
+ UIInterfaceOrientationLandscapeRight
+
+ UIViewControllerBasedStatusBarAppearance
+
+
+
diff --git a/benchmarks/ios/BenchmarkRunner/LaunchScreen.storyboard b/benchmarks/ios/BenchmarkRunner/LaunchScreen.storyboard
new file mode 100644
index 000000000..a3c16a42c
--- /dev/null
+++ b/benchmarks/ios/BenchmarkRunner/LaunchScreen.storyboard
@@ -0,0 +1,47 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/benchmarks/ios/BenchmarkRunner/PrivacyInfo.xcprivacy b/benchmarks/ios/BenchmarkRunner/PrivacyInfo.xcprivacy
new file mode 100644
index 000000000..bad327615
--- /dev/null
+++ b/benchmarks/ios/BenchmarkRunner/PrivacyInfo.xcprivacy
@@ -0,0 +1,37 @@
+
+
+
+
+ NSPrivacyAccessedAPITypes
+
+
+ NSPrivacyAccessedAPIType
+ NSPrivacyAccessedAPICategoryUserDefaults
+ NSPrivacyAccessedAPITypeReasons
+
+ CA92.1
+
+
+
+ NSPrivacyAccessedAPIType
+ NSPrivacyAccessedAPICategoryFileTimestamp
+ NSPrivacyAccessedAPITypeReasons
+
+ C617.1
+
+
+
+ NSPrivacyAccessedAPIType
+ NSPrivacyAccessedAPICategorySystemBootTime
+ NSPrivacyAccessedAPITypeReasons
+
+ 35F9.1
+
+
+
+ NSPrivacyCollectedDataTypes
+
+ NSPrivacyTracking
+
+
+
diff --git a/benchmarks/ios/BenchmarkRunner/main.m b/benchmarks/ios/BenchmarkRunner/main.m
new file mode 100644
index 000000000..f3348bc1f
--- /dev/null
+++ b/benchmarks/ios/BenchmarkRunner/main.m
@@ -0,0 +1,8 @@
+#import
+#import "BenchmarkRunner-Swift.h"
+
+int main(int argc, char * argv[]) {
+ @autoreleasepool {
+ return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
+ }
+}
diff --git a/benchmarks/ios/BenchmarkVitals/BenchMarkVitalsImplementation.swift b/benchmarks/ios/BenchmarkVitals/BenchMarkVitalsImplementation.swift
new file mode 100644
index 000000000..546973eac
--- /dev/null
+++ b/benchmarks/ios/BenchmarkVitals/BenchMarkVitalsImplementation.swift
@@ -0,0 +1,75 @@
+/*
+ * Unless explicitly stated otherwise all files in this repository are licensed under the Apache License Version 2.0.
+ * This product includes software developed at Datadog (https://www.datadoghq.com/).
+ * Copyright 2016-Present Datadog, Inc.
+ */
+
+import Foundation
+import React
+import DatadogBenchmarks
+
+struct NativeTestConfig {
+ let scenario: String
+ let runType: String
+ let clientToken: String
+ let applicationID: String
+ let apiKey: String
+
+ init(from dict: NSDictionary) {
+ self.scenario = dict["scenario"] as? String ?? ""
+ self.runType = dict["runType"] as? String ?? ""
+ self.clientToken = dict["clientToken"] as? String ?? ""
+ self.applicationID = dict["applicationID"] as? String ?? ""
+ self.apiKey = dict["apiKey"] as? String ?? ""
+ }
+}
+
+@objc
+public class BenchmarkVitalsImplementation: NSObject {
+
+ var vitals: Vitals?
+
+ @objc
+ public func startCollectingVitals(config: NSDictionary, resolve: RCTPromiseResolveBlock, reject: RCTPromiseRejectBlock) -> Void {
+ let nativeConfig = NativeTestConfig(from: config)
+
+ let appId = Bundle.main.bundleIdentifier ?? "unknown.bundle.id"
+ let appName = Bundle.main.object(forInfoDictionaryKey: "CFBundleExecutable") as! String
+ let appVersion = Bundle.main.object(forInfoDictionaryKey: "CFBundleVersion") as! String
+ let osName = UIDevice.current.systemName
+ let osVersion = UIDevice.current.systemVersion
+ let deviceModel = UIDevice.current.model
+
+ let context = Benchmarks.Configuration.Context(
+ applicationIdentifier: appId,
+ applicationName: appName,
+ applicationVersion: appVersion,
+ sdkVersion: "",
+ deviceModel: deviceModel,
+ osName: osName,
+ osVersion: osVersion,
+ run: nativeConfig.runType,
+ scenario: nativeConfig.scenario,
+ branch: "")
+ let configuration = Benchmarks.Configuration(clientToken: nativeConfig.clientToken, apiKey: nativeConfig.apiKey, context: context)
+ let vitals = Vitals(
+ provider: Benchmarks.meterProvider(
+ with: configuration
+ )
+ )
+
+ vitals.observeCPU()
+ vitals.observeMemory()
+ vitals.observeFPS()
+
+
+ self.vitals = vitals
+ resolve(true)
+ }
+
+ @objc
+ public func stopCollectingVitals(resolve: RCTPromiseResolveBlock, reject: RCTPromiseRejectBlock) -> Void {
+ vitals = nil
+ resolve(true)
+ }
+}
diff --git a/benchmarks/ios/BenchmarkVitals/BenchmarkVitals.h b/benchmarks/ios/BenchmarkVitals/BenchmarkVitals.h
new file mode 100644
index 000000000..0df654a46
--- /dev/null
+++ b/benchmarks/ios/BenchmarkVitals/BenchmarkVitals.h
@@ -0,0 +1,23 @@
+/*
+ * Unless explicitly stated otherwise all files in this repository are licensed under the Apache License Version 2.0.
+ * This product includes software developed at Datadog (https://www.datadoghq.com/).
+ * Copyright 2016-Present Datadog, Inc.
+ */
+
+#import
+@class BenchmarkVitalsImplementation;
+
+#ifdef RCT_NEW_ARCH_ENABLED
+#import "BenchmarkVitalsSpec.h"
+@interface BenchmarkVitals: NSObject
+
+#else
+
+#import
+@interface BenchmarkVitals : NSObject
+
+#endif
+
+@property (nonatomic, strong) BenchmarkVitalsImplementation* benchmarkVitalsImplementation;
+
+@end
diff --git a/benchmarks/ios/BenchmarkVitals/BenchmarkVitals.mm b/benchmarks/ios/BenchmarkVitals/BenchmarkVitals.mm
new file mode 100644
index 000000000..c2a011ff1
--- /dev/null
+++ b/benchmarks/ios/BenchmarkVitals/BenchmarkVitals.mm
@@ -0,0 +1,56 @@
+/*
+ * Unless explicitly stated otherwise all files in this repository are licensed under the Apache License Version 2.0.
+ * This product includes software developed at Datadog (https://www.datadoghq.com/).
+ * Copyright 2016-Present Datadog, Inc.
+ */
+
+#if __has_include("BenchmarkRunner-Swift.h")
+#import "BenchmarkRunner-Swift.h"
+#else
+#import
+#endif
+#import "BenchmarkVitals.h"
+
+@implementation BenchmarkVitals
+
+RCT_EXPORT_MODULE()
+
+RCT_REMAP_METHOD(startCollectingVitals, startCollectingVitalswithConfig:(NSDictionary *)config
+ withResolve: (RCTPromiseResolveBlock)resolve
+ withRejecter: (RCTPromiseRejectBlock)reject)
+{
+ [self startCollectingVitals:config resolve:resolve reject:reject];
+}
+
+RCT_REMAP_METHOD(stopCollectingVitals, stopCollectingVitalswithResolve: (RCTPromiseResolveBlock)resolve
+ withRejecter: (RCTPromiseRejectBlock)reject)
+{
+ [self stopCollectingVitals:resolve reject:reject];
+}
+
+#ifdef RCT_NEW_ARCH_ENABLED
+- (std::shared_ptr)getTurboModule:
+ (const facebook::react::ObjCTurboModule::InitParams &)params
+{
+ return std::make_shared(params);
+}
+#endif
+
+- (BenchmarkVitalsImplementation*)benchmarkVitalsImplementation
+{
+ if (_benchmarkVitalsImplementation == nil) {
+ _benchmarkVitalsImplementation = [[BenchmarkVitalsImplementation alloc] init];
+ }
+ return _benchmarkVitalsImplementation;
+}
+
+
+- (void)startCollectingVitals:(NSDictionary *)config resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject {
+ [self.benchmarkVitalsImplementation startCollectingVitalsWithConfig:config resolve:resolve reject:reject];
+}
+
+- (void)stopCollectingVitals:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject {
+ [self.benchmarkVitalsImplementation stopCollectingVitalsWithResolve:resolve reject:reject];
+}
+
+@end
diff --git a/benchmarks/ios/BenchmarkVitals/Vitals/BenchmarkMeter.swift b/benchmarks/ios/BenchmarkVitals/Vitals/BenchmarkMeter.swift
new file mode 100644
index 000000000..694b6ae07
--- /dev/null
+++ b/benchmarks/ios/BenchmarkVitals/Vitals/BenchmarkMeter.swift
@@ -0,0 +1,53 @@
+/*
+ * Unless explicitly stated otherwise all files in this repository are licensed under the Apache License Version 2.0.
+ * This product includes software developed at Datadog (https://www.datadoghq.com/).
+ * Copyright 2019-Present Datadog, Inc.
+ */
+
+import Foundation
+import DatadogInternal
+import DatadogBenchmarks
+import OpenTelemetryApi
+
+internal final class Meter: DatadogInternal.BenchmarkMeter {
+ let meter: OpenTelemetryApi.Meter
+
+ init(provider: MeterProvider) {
+ self.meter = provider.get(
+ instrumentationName: "benchmarks",
+ instrumentationVersion: nil
+ )
+ }
+
+ func counter(metric: @autoclosure () -> String) -> DatadogInternal.BenchmarkCounter {
+ meter.createDoubleCounter(name: metric())
+ }
+
+ func gauge(metric: @autoclosure () -> String) -> DatadogInternal.BenchmarkGauge {
+ meter.createDoubleMeasure(name: metric())
+ }
+
+ func observe(metric: @autoclosure () -> String, callback: @escaping (any DatadogInternal.BenchmarkGauge) -> Void) {
+ _ = meter.createDoubleObserver(name: metric()) { callback(DoubleObserverWrapper(observer: $0)) }
+ }
+}
+
+extension AnyCounterMetric: DatadogInternal.BenchmarkCounter {
+ public func add(value: Double, attributes: @autoclosure () -> [String: String]) {
+ add(value: value, labelset: LabelSet(labels: attributes()))
+ }
+}
+
+extension AnyMeasureMetric: DatadogInternal.BenchmarkGauge {
+ public func record(value: Double, attributes: @autoclosure () -> [String: String]) {
+ record(value: value, labelset: LabelSet(labels: attributes()))
+ }
+}
+
+private struct DoubleObserverWrapper: DatadogInternal.BenchmarkGauge {
+ let observer: DoubleObserverMetric
+
+ func record(value: Double, attributes: @autoclosure () -> [String: String]) {
+ observer.observe(value: value, labelset: LabelSet(labels: attributes()))
+ }
+}
diff --git a/benchmarks/ios/BenchmarkVitals/Vitals/BenchmarkProfiler.swift b/benchmarks/ios/BenchmarkVitals/Vitals/BenchmarkProfiler.swift
new file mode 100644
index 000000000..e19b6759b
--- /dev/null
+++ b/benchmarks/ios/BenchmarkVitals/Vitals/BenchmarkProfiler.swift
@@ -0,0 +1,56 @@
+/*
+ * Unless explicitly stated otherwise all files in this repository are licensed under the Apache License Version 2.0.
+ * This product includes software developed at Datadog (https://www.datadoghq.com/).
+ * Copyright 2019-Present Datadog, Inc.
+ */
+
+import Foundation
+import DatadogInternal
+import DatadogBenchmarks
+import OpenTelemetryApi
+
+internal final class Profiler: DatadogInternal.BenchmarkProfiler {
+ let provider: TracerProvider
+
+ init(provider: TracerProvider) {
+ self.provider = provider
+ }
+
+ func tracer(operation: @autoclosure () -> String) -> any DatadogInternal.BenchmarkTracer {
+ TracerWrapper(
+ tracer: provider.get(
+ instrumentationName: operation(),
+ instrumentationVersion: nil
+ )
+ )
+ }
+}
+
+private final class TracerWrapper: DatadogInternal.BenchmarkTracer {
+ let tracer: OpenTelemetryApi.Tracer
+
+ init(tracer: OpenTelemetryApi.Tracer) {
+ self.tracer = tracer
+ }
+
+ func startSpan(named: @autoclosure () -> String) -> any DatadogInternal.BenchmarkSpan {
+ SpanWrapper(
+ span: tracer
+ .spanBuilder(spanName: named())
+ .setActive(true)
+ .startSpan()
+ )
+ }
+}
+
+private final class SpanWrapper: DatadogInternal.BenchmarkSpan {
+ let span: OpenTelemetryApi.Span
+
+ init(span: OpenTelemetryApi.Span) {
+ self.span = span
+ }
+
+ func stop() {
+ span.end()
+ }
+}
diff --git a/benchmarks/ios/BenchmarkVitals/Vitals/BenchmarkVitals.swift b/benchmarks/ios/BenchmarkVitals/Vitals/BenchmarkVitals.swift
new file mode 100644
index 000000000..772c6b76e
--- /dev/null
+++ b/benchmarks/ios/BenchmarkVitals/Vitals/BenchmarkVitals.swift
@@ -0,0 +1,63 @@
+/*
+ * Unless explicitly stated otherwise all files in this repository are licensed under the Apache License Version 2.0.
+ * This product includes software developed at Datadog (https://www.datadoghq.com/).
+ * Copyright 2019-Present Datadog, Inc.
+ */
+
+import Foundation
+import DatadogBenchmarks
+import OpenTelemetryApi
+
+/// Collect Vital Metrics such CPU, Memory, and FPS.
+///
+/// The metrics are reported via opentelemetry.
+internal final class Vitals {
+ let provider: OpenTelemetryApi.MeterProvider
+
+ private lazy var meter: OpenTelemetryApi.Meter = provider.get(instrumentationName: "vitals", instrumentationVersion: nil)
+
+ let queue = DispatchQueue(label: "com.datadoghq.benchmarks.rn.ios.vitals", target: .global(qos: .utility))
+
+ init(provider: MeterProvider) {
+ self.provider = provider
+ }
+
+ @discardableResult
+ func observeMemory() -> OpenTelemetryApi.DoubleObserverMetric {
+ let memory = Memory(queue: queue)
+ return meter.createDoubleObservableGauge(name: "rn.ios.benchmark.memory") { metric in
+ // report the maximum memory footprint that was recorded during push interval
+ if let value = memory.aggregation?.max {
+ metric.observe(value: value, labelset: .empty)
+ }
+
+ memory.reset()
+ }
+ }
+
+ @discardableResult
+ func observeCPU() -> OpenTelemetryApi.DoubleObserverMetric {
+ let cpu = CPU(queue: queue)
+ return meter.createDoubleObservableGauge(name: "rn.ios.benchmark.cpu") { metric in
+ // report the average cpu usage that was recorded during push interval
+ if let value = cpu.aggregation?.avg {
+ metric.observe(value: value, labelset: .empty)
+ }
+
+ cpu.reset()
+ }
+ }
+
+ @discardableResult
+ func observeFPS() -> OpenTelemetryApi.IntObserverMetric {
+ let fps = FPS()
+ return meter.createIntObservableGauge(name: "rn.ios.benchmark.fps.min") { metric in
+ // report the minimum frame rate that was recorded during push interval
+ if let value = fps.aggregation?.min {
+ metric.observe(value: value, labelset: .empty)
+ }
+
+ fps.reset()
+ }
+ }
+}
diff --git a/benchmarks/ios/BenchmarkVitals/Vitals/Package.swift b/benchmarks/ios/BenchmarkVitals/Vitals/Package.swift
new file mode 100644
index 000000000..ff099cb82
--- /dev/null
+++ b/benchmarks/ios/BenchmarkVitals/Vitals/Package.swift
@@ -0,0 +1,38 @@
+// swift-tools-version: 5.9
+// The swift-tools-version declares the minimum version of Swift required to build this package.
+
+import PackageDescription
+import Foundation
+
+let package = Package(
+ name: "DatadogBenchmarks",
+ products: [
+ .library(
+ name: "DatadogBenchmarks",
+ targets: ["DatadogBenchmarks"]
+ )
+ ]
+)
+
+func addOpenTelemetryDependency(_ version: Version) {
+ package.platforms = [.iOS(.v13), .tvOS(.v13)]
+
+ package.dependencies = [
+ .package(url: "https://github.com/open-telemetry/opentelemetry-swift", exact: version)
+ ]
+
+ package.targets = [
+ .target(
+ name: "DatadogBenchmarks",
+ dependencies: [
+ .product(name: "OpenTelemetryApi", package: "opentelemetry-swift"),
+ .product(name: "OpenTelemetrySdk", package: "opentelemetry-swift"),
+ .product(name: "DatadogExporter", package: "opentelemetry-swift")
+ ],
+ swiftSettings: [.define("OTEL_SWIFT")]
+ )
+ ]
+}
+
+addOpenTelemetryDependency("1.13.0")
+
diff --git a/benchmarks/ios/BenchmarkVitals/Vitals/Sources/Benchmarks.swift b/benchmarks/ios/BenchmarkVitals/Vitals/Sources/Benchmarks.swift
new file mode 100644
index 000000000..020c14af6
--- /dev/null
+++ b/benchmarks/ios/BenchmarkVitals/Vitals/Sources/Benchmarks.swift
@@ -0,0 +1,125 @@
+/*
+ * Unless explicitly stated otherwise all files in this repository are licensed under the Apache License Version 2.0.
+ * This product includes software developed at Datadog (https://www.datadoghq.com/).
+ * Copyright 2019-Present Datadog, Inc.
+ */
+
+#if OTEL_API
+#error("Benchmarks depends on opentelemetry-swift. Please open the project with 'make benchmark-tests-open'.")
+#endif
+
+import Foundation
+import OpenTelemetryApi
+import OpenTelemetrySdk
+import DatadogExporter
+
+/// Benchmark entrypoint to configure opentelemetry with metrics meters
+/// and tracer.
+public enum Benchmarks {
+ /// Configuration of the Benchmarks library.
+ public struct Configuration {
+ /// Context of Benchmarks measures.
+ /// The context properties will be added to metrics as tags.
+ public struct Context {
+ var applicationIdentifier: String
+ var applicationName: String
+ var applicationVersion: String
+ var sdkVersion: String
+ var deviceModel: String
+ var osName: String
+ var osVersion: String
+ var run: String
+ var scenario: String
+ var branch: String
+
+ public init(
+ applicationIdentifier: String,
+ applicationName: String,
+ applicationVersion: String,
+ sdkVersion: String,
+ deviceModel: String,
+ osName: String,
+ osVersion: String,
+ run: String,
+ scenario: String,
+ branch: String
+ ) {
+ self.applicationIdentifier = applicationIdentifier
+ self.applicationName = applicationName
+ self.applicationVersion = applicationVersion
+ self.sdkVersion = sdkVersion
+ self.deviceModel = deviceModel
+ self.osName = osName
+ self.osVersion = osVersion
+ self.run = run
+ self.scenario = scenario
+ self.branch = branch
+ }
+ }
+
+ var clientToken: String
+ var apiKey: String
+ var context: Context
+
+ public init(
+ clientToken: String,
+ apiKey: String,
+ context: Context
+ ) {
+ self.clientToken = clientToken
+ self.apiKey = apiKey
+ self.context = context
+ }
+ }
+
+ /// Configure an OpenTelemetry meter provider.
+ ///
+ /// - Parameter configuration: The Benchmark configuration.
+ public static func meterProvider(with configuration: Configuration) -> MeterProvider {
+ let metricExporter = MetricExporter(
+ configuration: MetricExporter.Configuration(
+ apiKey: configuration.apiKey,
+ version: configuration.context.applicationVersion
+ )
+ )
+
+ return MeterProviderBuilder()
+ .with(pushInterval: 10)
+ .with(processor: MetricProcessorSdk())
+ .with(exporter: metricExporter)
+ .with(resource: Resource(attributes: [
+ "device_model": .string(configuration.context.deviceModel),
+ "os": .string(configuration.context.osName),
+ "os_version": .string(configuration.context.osVersion),
+ "run": .string(configuration.context.run),
+ "scenario": .string(configuration.context.scenario),
+ "application_id": .string(configuration.context.applicationIdentifier),
+ "sdk_version": .string(configuration.context.sdkVersion),
+ "branch": .string(configuration.context.branch),
+ ]))
+ .build()
+ }
+
+ /// Configure an OpenTelemetry tracer provider.
+ ///
+ /// - Parameter configuration: The Benchmark configuration.
+ public static func tracerProvider(with configuration: Configuration) -> TracerProvider {
+ let exporterConfiguration = ExporterConfiguration(
+ serviceName: configuration.context.applicationIdentifier,
+ resource: "Benchmark Tracer",
+ applicationName: configuration.context.applicationName,
+ applicationVersion: configuration.context.applicationVersion,
+ environment: "benchmarks",
+ apiKey: configuration.apiKey,
+ endpoint: .us1,
+ uploadCondition: { true }
+ )
+
+ let exporter = try! DatadogExporter(config: exporterConfiguration)
+ let processor = SimpleSpanProcessor(spanExporter: exporter)
+
+ return TracerProviderBuilder()
+ .add(spanProcessor: processor)
+ .build()
+ }
+}
diff --git a/benchmarks/ios/BenchmarkVitals/Vitals/Sources/MetricExporter.swift b/benchmarks/ios/BenchmarkVitals/Vitals/Sources/MetricExporter.swift
new file mode 100644
index 000000000..5109a455c
--- /dev/null
+++ b/benchmarks/ios/BenchmarkVitals/Vitals/Sources/MetricExporter.swift
@@ -0,0 +1,162 @@
+/*
+ * Unless explicitly stated otherwise all files in this repository are licensed under the Apache License Version 2.0.
+ * This product includes software developed at Datadog (https://www.datadoghq.com/).
+ * Copyright 2019-Present Datadog, Inc.
+ */
+
+import Foundation
+import OpenTelemetrySdk
+
+enum MetricExporterError: Error {
+ case unsupportedMetric(aggregation: AggregationType, dataType: Any.Type)
+}
+
+/// Replacement of otel `DatadogExporter` for metrics.
+///
+/// This version does not store data to disk, it uploads to the intake directly.
+/// Additionally, it does not crash.
+final class MetricExporter: OpenTelemetrySdk.MetricExporter {
+ struct Configuration {
+ let apiKey: String
+ let version: String
+ }
+
+ /// The type of metric. The available types are 0 (unspecified), 1 (count), 2 (rate), and 3 (gauge). Allowed enum values: 0,1,2,3
+ enum MetricType: Int, Codable {
+ case unspecified = 0
+ case count = 1
+ case rate = 2
+ case gauge = 3
+ }
+
+ /// https://docs.datadoghq.com/api/latest/metrics/#submit-metrics
+ internal struct Serie: Codable {
+ struct Point: Codable {
+ let timestamp: Int64
+ let value: Double
+ }
+
+ struct Resource: Codable {
+ let name: String
+ let type: String
+ }
+
+ let type: MetricType
+ let interval: Int64?
+ let metric: String
+ let unit: String?
+ let points: [Point]
+ let resources: [Resource]
+ let tags: [String]
+ }
+
+ let session: URLSession
+ let encoder = JSONEncoder()
+ let configuration: Configuration
+
+ // swiftlint:disable force_unwrapping
+ let intake = URL(string: "https://api.datadoghq.com/api/v2/series")!
+ let prefix = "{ \"series\": [".data(using: .utf8)!
+ let separator = ",".data(using: .utf8)!
+ let suffix = "]}".data(using: .utf8)!
+ // swiftlint:enable force_unwrapping
+
+ required init(configuration: Configuration) {
+ let sessionConfiguration: URLSessionConfiguration = .ephemeral
+ sessionConfiguration.urlCache = nil
+ self.session = URLSession(configuration: sessionConfiguration)
+ self.configuration = configuration
+ }
+
+ func export(metrics: [Metric], shouldCancel: (() -> Bool)?) -> MetricExporterResultCode {
+ do {
+ let series = try metrics.map(transform)
+ try submit(series: series)
+ return.success
+ } catch {
+ return .failureNotRetryable
+ }
+ }
+
+ /// Transforms otel `Metric` to Datadog `serie`.
+ ///
+ /// - Parameter metric: The otel metric
+ /// - Returns: The timeserie.
+ func transform(_ metric: Metric) throws -> Serie {
+ var tags = Set(metric.resource.attributes.map { "\($0):\($1)" })
+
+ let points: [Serie.Point] = try metric.data.map { data in
+ let timestamp = Int64(data.timestamp.timeIntervalSince1970)
+
+ data.labels.forEach { tags.insert("\($0):\($1)") }
+
+ switch data {
+ case let data as SumData:
+ return Serie.Point(timestamp: timestamp, value: data.sum)
+ case let data as SumData:
+ return Serie.Point(timestamp: timestamp, value: Double(data.sum))
+ case let data as SummaryData:
+ return Serie.Point(timestamp: timestamp, value: data.sum)
+ case let data as SummaryData:
+ return Serie.Point(timestamp: timestamp, value: Double(data.sum))
+// case let data as HistogramData:
+// return Serie.Point(timestamp: timestamp, value: Double(data.sum))
+// case let data as HistogramData:
+// return Serie.Point(timestamp: timestamp, value: data.sum)
+ default:
+ throw MetricExporterError.unsupportedMetric(
+ aggregation: metric.aggregationType,
+ dataType: type(of: data)
+ )
+ }
+ }
+
+ return Serie(
+ type: MetricType(metric.aggregationType),
+ interval: nil,
+ metric: metric.name,
+ unit: nil,
+ points: points,
+ resources: [],
+ tags: Array(tags)
+ )
+ }
+
+ /// Submit timeseries to the Metrics intake.
+ ///
+ /// - Parameter series: The timeseries.
+ func submit(series: [Serie]) throws {
+ var data = try series.reduce(Data()) { data, serie in
+ try data + encoder.encode(serie) + separator
+ }
+
+ // remove last separator
+ data.removeLast(separator.count)
+
+ var request = URLRequest(url: intake)
+ request.httpMethod = "POST"
+ request.allHTTPHeaderFields = [
+ "Content-Type": "application/json",
+ "DD-API-KEY": configuration.apiKey,
+ "DD-EVP-ORIGIN": "ios",
+ "DD-EVP-ORIGIN-VERSION": configuration.version,
+ "DD-REQUEST-ID": UUID().uuidString,
+ ]
+
+ request.httpBody = prefix + data + suffix
+ session.dataTask(with: request).resume()
+ }
+}
+
+private extension MetricExporter.MetricType {
+ init(_ type: OpenTelemetrySdk.AggregationType) {
+ switch type {
+ case .doubleSum, .intSum:
+ self = .count
+ case .intGauge, .doubleGauge:
+ self = .gauge
+ case .doubleSummary, .intSummary, .doubleHistogram, .intHistogram:
+ self = .unspecified
+ }
+ }
+}
diff --git a/benchmarks/ios/BenchmarkVitals/Vitals/Sources/Metrics.swift b/benchmarks/ios/BenchmarkVitals/Vitals/Sources/Metrics.swift
new file mode 100644
index 000000000..184c54f46
--- /dev/null
+++ b/benchmarks/ios/BenchmarkVitals/Vitals/Sources/Metrics.swift
@@ -0,0 +1,275 @@
+/*
+ * Unless explicitly stated otherwise all files in this repository are licensed under the Apache License Version 2.0.
+ * This product includes software developed at Datadog (https://www.datadoghq.com/).
+ * Copyright 2019-Present Datadog, Inc.
+ */
+
+import Foundation
+import QuartzCore
+
+// The `TASK_VM_INFO_COUNT` and `TASK_VM_INFO_REV1_COUNT` macros are too
+// complex for the Swift C importer, so we have to define them ourselves.
+let TASK_VM_INFO_COUNT = mach_msg_type_number_t(MemoryLayout.size / MemoryLayout.size)
+let TASK_VM_INFO_REV1_COUNT = mach_msg_type_number_t(MemoryLayout.offset(of: \task_vm_info_data_t.min_address)! / MemoryLayout.size)
+
+public enum MachError: Error {
+ case task_info(return: kern_return_t)
+ case task_threads(return: kern_return_t)
+ case thread_info(return: kern_return_t)
+}
+
+/// Aggregate metric values and compute `min`, `max`, `sum`, `avg`, and `count`.
+public class MetricAggregator where T: Numeric {
+ public struct Aggregation {
+ public let min: T
+ public let max: T
+ public let sum: T
+ public let count: Int
+ public let avg: Double
+ }
+
+ private var mutex = pthread_mutex_t()
+ private var _aggregation: Aggregation?
+
+ public var aggregation: Aggregation? {
+ pthread_mutex_lock(&mutex)
+ defer { pthread_mutex_unlock(&mutex) }
+ return _aggregation
+ }
+
+ /// Resets the minimum frame rate to `nil`.
+ public func reset() {
+ pthread_mutex_lock(&mutex)
+ _aggregation = nil
+ pthread_mutex_unlock(&mutex)
+ }
+
+ deinit {
+ pthread_mutex_destroy(&mutex)
+ }
+}
+
+extension MetricAggregator where T: BinaryInteger {
+ /// Records a `BinaryInteger` value.
+ ///
+ /// - Parameter value: The value to record.
+ public func record(value: T) {
+ pthread_mutex_lock(&mutex)
+ _aggregation = _aggregation.map {
+ let sum = $0.sum + value
+ let count = $0.count + 1
+ return Aggregation(
+ min: Swift.min($0.min, value),
+ max: Swift.max($0.max, value),
+ sum: sum,
+ count: count,
+ avg: Double(sum) / Double(count)
+ )
+ } ?? Aggregation(min: value, max: value, sum: value, count: 1, avg: Double(value))
+ pthread_mutex_unlock(&mutex)
+ }
+}
+
+extension MetricAggregator where T: BinaryFloatingPoint {
+ /// Records a `BinaryFloatingPoint` value.
+ ///
+ /// - Parameter value: The value to record.
+ internal func record(value: T) {
+ pthread_mutex_lock(&mutex)
+ _aggregation = _aggregation.map {
+ let sum = $0.sum + value
+ let count = $0.count + 1
+ return Aggregation(
+ min: Swift.min($0.min, value),
+ max: Swift.max($0.max, value),
+ sum: sum,
+ count: count,
+ avg: Double(sum) / Double(count)
+ )
+ } ?? Aggregation(min: value, max: value, sum: value, count: 1, avg: Double(value))
+ pthread_mutex_unlock(&mutex)
+ }
+}
+
+/// Collect Memory footprint metric.
+///
+/// Based on a timer, the `Memory` aggregator will periodically record the memory footprint.
+public final class Memory: MetricAggregator {
+ /// Dispatch source object for monitoring timer events.
+ private let timer: DispatchSourceTimer
+
+ /// Create a `Memory` aggregator to periodically record the memory footprint on the
+ /// provided queue.
+ ///
+ /// By default, the timer is scheduled with 100 ms interval with 10 ms leeway.
+ ///
+ /// - Parameters:
+ /// - queue: The queue on which to execute the timer handler.
+ /// - interval: The timer interval, default to 100 ms.
+ /// - leeway: The timer leeway, default to 10 ms.
+ public required init(
+ queue: DispatchQueue,
+ every interval: DispatchTimeInterval = .milliseconds(100),
+ leeway: DispatchTimeInterval = .milliseconds(10)
+ ) {
+ timer = DispatchSource.makeTimerSource(queue: queue)
+ super.init()
+
+ timer.setEventHandler { [weak self] in
+ guard let self, let footprint = try? self.footprint() else {
+ return
+ }
+
+ self.record(value: footprint)
+ }
+
+ timer.schedule(deadline: .now(), repeating: interval, leeway: leeway)
+ timer.activate()
+ }
+
+ deinit {
+ timer.cancel()
+ }
+
+ /// Collects single sample of current memory footprint.
+ ///
+ /// The computation is based on https://developer.apple.com/forums/thread/105088
+ /// It leverages recommended `phys_footprint` value, which returns values that are close to Xcode's _Memory Use_
+ /// gauge and _Allocations Instrument_.
+ ///
+ /// - Returns: Current memory footprint in bytes, `throws` if failed to read.
+ private func footprint() throws -> Double {
+ var info = task_vm_info_data_t()
+ var count = TASK_VM_INFO_COUNT
+ let kr = withUnsafeMutablePointer(to: &info) {
+ $0.withMemoryRebound(to: integer_t.self, capacity: Int(count)) {
+ task_info(mach_task_self_, task_flavor_t(TASK_VM_INFO), $0, &count)
+ }
+ }
+
+ guard kr == KERN_SUCCESS, count >= TASK_VM_INFO_REV1_COUNT else {
+ throw MachError.task_info(return: kr)
+ }
+
+ return Double(info.phys_footprint)
+ }
+}
+
+/// Collect CPU usage metric.
+///
+/// Based on a timer, the `CPU` aggregator will periodically record the CPU usage.
+public final class CPU: MetricAggregator {
+ /// Dispatch source object for monitoring timer events.
+ private let timer: DispatchSourceTimer
+
+ /// Create a `CPU` aggregator to periodically record the CPU usage on the
+ /// provided queue.
+ ///
+ /// By default, the timer is scheduled with 100 ms interval with 10 ms leeway.
+ ///
+ /// - Parameters:
+ /// - queue: The queue on which to execute the timer handler.
+ /// - interval: The timer interval, default to 100 ms.
+ /// - leeway: The timer leeway, default to 10 ms.
+ public required init(
+ queue: DispatchQueue,
+ every interval: DispatchTimeInterval = .milliseconds(100),
+ leeway: DispatchTimeInterval = .milliseconds(10)
+ ) {
+ self.timer = DispatchSource.makeTimerSource(queue: queue)
+ super.init()
+
+ timer.setEventHandler { [weak self] in
+ guard let self, let usage = try? self.usage() else {
+ return
+ }
+
+ self.record(value: usage)
+ }
+
+ timer.schedule(deadline: .now(), repeating: interval, leeway: leeway)
+ timer.activate()
+ }
+
+ deinit {
+ timer.cancel()
+ }
+
+ /// Collect single sample of current cpu usage.
+ ///
+ /// The computation is based on https://gist.github.com/hisui/10004131#file-cpu-usage-cpp
+ /// It reads the `cpu_usage` from all thread to compute the application usage percentage.
+ ///
+ /// - Returns: The cpu usage of all threads.
+ private func usage() throws -> Double {
+ var threads_list: thread_act_array_t?
+ var threads_count = mach_msg_type_number_t()
+ let kr = withUnsafeMutablePointer(to: &threads_list) {
+ $0.withMemoryRebound(to: thread_act_array_t?.self, capacity: 1) {
+ task_threads(mach_task_self_, $0, &threads_count)
+ }
+ }
+
+ guard kr == KERN_SUCCESS, let threads_list = threads_list else {
+ throw MachError.task_threads(return: kr)
+ }
+
+ defer {
+ vm_deallocate(mach_task_self_, vm_address_t(bitPattern: threads_list), vm_size_t(Int(threads_count) * MemoryLayout.stride))
+ }
+
+ return try (0.. {
+ private class CADisplayLinker {
+ weak var fps: FPS?
+
+ init() { }
+
+ @objc
+ func tick(link: CADisplayLink) {
+ guard let fps else {
+ return
+ }
+
+ let rate = 1 / (link.targetTimestamp - link.timestamp)
+ fps.record(value: lround(rate))
+ }
+ }
+
+ private var displayLink: CADisplayLink
+
+ override public init() {
+ let linker = CADisplayLinker()
+ displayLink = CADisplayLink(target: linker, selector: #selector(CADisplayLinker.tick(link:)))
+ super.init()
+
+ linker.fps = self
+ displayLink.add(to: RunLoop.main, forMode: .common)
+ }
+
+ deinit {
+ displayLink.invalidate()
+ }
+}
diff --git a/benchmarks/ios/Podfile b/benchmarks/ios/Podfile
new file mode 100644
index 000000000..059b1eae4
--- /dev/null
+++ b/benchmarks/ios/Podfile
@@ -0,0 +1,35 @@
+# Resolve react_native_pods.rb with node to allow for hoisting
+require Pod::Executable.execute_command('node', ['-p',
+ 'require.resolve(
+ "react-native/scripts/react_native_pods.rb",
+ {paths: [process.argv[1]]},
+ )', __dir__]).strip
+
+platform :ios, min_ios_version_supported
+prepare_react_native_project!
+
+linkage = ENV['USE_FRAMEWORKS']
+if linkage != nil
+ Pod::UI.puts "Configuring Pod with #{linkage}ally linked Frameworks".green
+ use_frameworks! :linkage => linkage.to_sym
+end
+
+target 'BenchmarkRunner' do
+ config = use_native_modules!
+
+ use_react_native!(
+ :path => config[:reactNativePath],
+ # An absolute path to your application root.
+ :app_path => "#{Pod::Config.instance.installation_root}/.."
+ )
+
+ post_install do |installer|
+ # https://github.com/facebook/react-native/blob/main/packages/react-native/scripts/react_native_pods.rb#L197-L202
+ react_native_post_install(
+ installer,
+ config[:reactNativePath],
+ :mac_catalyst_enabled => false,
+ # :ccache_enabled => true
+ )
+ end
+end
diff --git a/benchmarks/ios/Podfile.lock b/benchmarks/ios/Podfile.lock
new file mode 100644
index 000000000..948c531df
--- /dev/null
+++ b/benchmarks/ios/Podfile.lock
@@ -0,0 +1,2004 @@
+PODS:
+ - boost (1.84.0)
+ - DatadogCore (2.27.0):
+ - DatadogInternal (= 2.27.0)
+ - DatadogCrashReporting (2.27.0):
+ - DatadogInternal (= 2.27.0)
+ - PLCrashReporter (~> 1.12.0)
+ - DatadogInternal (2.27.0)
+ - DatadogLogs (2.27.0):
+ - DatadogInternal (= 2.27.0)
+ - DatadogRUM (2.27.0):
+ - DatadogInternal (= 2.27.0)
+ - DatadogSDKReactNative (2.8.0):
+ - DatadogCore (~> 2.27.0)
+ - DatadogCrashReporting (~> 2.27.0)
+ - DatadogLogs (~> 2.27.0)
+ - DatadogRUM (~> 2.27.0)
+ - DatadogTrace (~> 2.27.0)
+ - DatadogWebViewTracking (~> 2.27.0)
+ - DoubleConversion
+ - glog
+ - hermes-engine
+ - RCT-Folly (= 2024.11.18.00)
+ - RCTRequired
+ - RCTTypeSafety
+ - React-Core
+ - React-debug
+ - React-Fabric
+ - React-featureflags
+ - React-graphics
+ - React-ImageManager
+ - React-NativeModulesApple
+ - React-RCTFabric
+ - React-rendererdebug
+ - React-utils
+ - ReactCodegen
+ - ReactCommon/turbomodule/bridging
+ - ReactCommon/turbomodule/core
+ - Yoga
+ - DatadogTrace (2.27.0):
+ - DatadogInternal (= 2.27.0)
+ - OpenTelemetrySwiftApi (= 1.13.1)
+ - DatadogWebViewTracking (2.27.0):
+ - DatadogInternal (= 2.27.0)
+ - DoubleConversion (1.1.6)
+ - fast_float (6.1.4)
+ - FBLazyVector (0.78.2)
+ - fmt (11.0.2)
+ - glog (0.3.5)
+ - hermes-engine (0.78.2):
+ - hermes-engine/Pre-built (= 0.78.2)
+ - hermes-engine/Pre-built (0.78.2)
+ - OpenTelemetrySwiftApi (1.13.1)
+ - PLCrashReporter (1.12.0)
+ - RCT-Folly (2024.11.18.00):
+ - boost
+ - DoubleConversion
+ - fast_float (= 6.1.4)
+ - fmt (= 11.0.2)
+ - glog
+ - RCT-Folly/Default (= 2024.11.18.00)
+ - RCT-Folly/Default (2024.11.18.00):
+ - boost
+ - DoubleConversion
+ - fast_float (= 6.1.4)
+ - fmt (= 11.0.2)
+ - glog
+ - RCT-Folly/Fabric (2024.11.18.00):
+ - boost
+ - DoubleConversion
+ - fast_float (= 6.1.4)
+ - fmt (= 11.0.2)
+ - glog
+ - RCTDeprecation (0.78.2)
+ - RCTRequired (0.78.2)
+ - RCTTypeSafety (0.78.2):
+ - FBLazyVector (= 0.78.2)
+ - RCTRequired (= 0.78.2)
+ - React-Core (= 0.78.2)
+ - React (0.78.2):
+ - React-Core (= 0.78.2)
+ - React-Core/DevSupport (= 0.78.2)
+ - React-Core/RCTWebSocket (= 0.78.2)
+ - React-RCTActionSheet (= 0.78.2)
+ - React-RCTAnimation (= 0.78.2)
+ - React-RCTBlob (= 0.78.2)
+ - React-RCTImage (= 0.78.2)
+ - React-RCTLinking (= 0.78.2)
+ - React-RCTNetwork (= 0.78.2)
+ - React-RCTSettings (= 0.78.2)
+ - React-RCTText (= 0.78.2)
+ - React-RCTVibration (= 0.78.2)
+ - React-callinvoker (0.78.2)
+ - React-Core (0.78.2):
+ - glog
+ - hermes-engine
+ - RCT-Folly (= 2024.11.18.00)
+ - RCTDeprecation
+ - React-Core/Default (= 0.78.2)
+ - React-cxxreact
+ - React-featureflags
+ - React-hermes
+ - React-jsi
+ - React-jsiexecutor
+ - React-jsinspector
+ - React-perflogger
+ - React-runtimescheduler
+ - React-utils
+ - SocketRocket (= 0.7.1)
+ - Yoga
+ - React-Core/CoreModulesHeaders (0.78.2):
+ - glog
+ - hermes-engine
+ - RCT-Folly (= 2024.11.18.00)
+ - RCTDeprecation
+ - React-Core/Default
+ - React-cxxreact
+ - React-featureflags
+ - React-hermes
+ - React-jsi
+ - React-jsiexecutor
+ - React-jsinspector
+ - React-perflogger
+ - React-runtimescheduler
+ - React-utils
+ - SocketRocket (= 0.7.1)
+ - Yoga
+ - React-Core/Default (0.78.2):
+ - glog
+ - hermes-engine
+ - RCT-Folly (= 2024.11.18.00)
+ - RCTDeprecation
+ - React-cxxreact
+ - React-featureflags
+ - React-hermes
+ - React-jsi
+ - React-jsiexecutor
+ - React-jsinspector
+ - React-perflogger
+ - React-runtimescheduler
+ - React-utils
+ - SocketRocket (= 0.7.1)
+ - Yoga
+ - React-Core/DevSupport (0.78.2):
+ - glog
+ - hermes-engine
+ - RCT-Folly (= 2024.11.18.00)
+ - RCTDeprecation
+ - React-Core/Default (= 0.78.2)
+ - React-Core/RCTWebSocket (= 0.78.2)
+ - React-cxxreact
+ - React-featureflags
+ - React-hermes
+ - React-jsi
+ - React-jsiexecutor
+ - React-jsinspector
+ - React-perflogger
+ - React-runtimescheduler
+ - React-utils
+ - SocketRocket (= 0.7.1)
+ - Yoga
+ - React-Core/RCTActionSheetHeaders (0.78.2):
+ - glog
+ - hermes-engine
+ - RCT-Folly (= 2024.11.18.00)
+ - RCTDeprecation
+ - React-Core/Default
+ - React-cxxreact
+ - React-featureflags
+ - React-hermes
+ - React-jsi
+ - React-jsiexecutor
+ - React-jsinspector
+ - React-perflogger
+ - React-runtimescheduler
+ - React-utils
+ - SocketRocket (= 0.7.1)
+ - Yoga
+ - React-Core/RCTAnimationHeaders (0.78.2):
+ - glog
+ - hermes-engine
+ - RCT-Folly (= 2024.11.18.00)
+ - RCTDeprecation
+ - React-Core/Default
+ - React-cxxreact
+ - React-featureflags
+ - React-hermes
+ - React-jsi
+ - React-jsiexecutor
+ - React-jsinspector
+ - React-perflogger
+ - React-runtimescheduler
+ - React-utils
+ - SocketRocket (= 0.7.1)
+ - Yoga
+ - React-Core/RCTBlobHeaders (0.78.2):
+ - glog
+ - hermes-engine
+ - RCT-Folly (= 2024.11.18.00)
+ - RCTDeprecation
+ - React-Core/Default
+ - React-cxxreact
+ - React-featureflags
+ - React-hermes
+ - React-jsi
+ - React-jsiexecutor
+ - React-jsinspector
+ - React-perflogger
+ - React-runtimescheduler
+ - React-utils
+ - SocketRocket (= 0.7.1)
+ - Yoga
+ - React-Core/RCTImageHeaders (0.78.2):
+ - glog
+ - hermes-engine
+ - RCT-Folly (= 2024.11.18.00)
+ - RCTDeprecation
+ - React-Core/Default
+ - React-cxxreact
+ - React-featureflags
+ - React-hermes
+ - React-jsi
+ - React-jsiexecutor
+ - React-jsinspector
+ - React-perflogger
+ - React-runtimescheduler
+ - React-utils
+ - SocketRocket (= 0.7.1)
+ - Yoga
+ - React-Core/RCTLinkingHeaders (0.78.2):
+ - glog
+ - hermes-engine
+ - RCT-Folly (= 2024.11.18.00)
+ - RCTDeprecation
+ - React-Core/Default
+ - React-cxxreact
+ - React-featureflags
+ - React-hermes
+ - React-jsi
+ - React-jsiexecutor
+ - React-jsinspector
+ - React-perflogger
+ - React-runtimescheduler
+ - React-utils
+ - SocketRocket (= 0.7.1)
+ - Yoga
+ - React-Core/RCTNetworkHeaders (0.78.2):
+ - glog
+ - hermes-engine
+ - RCT-Folly (= 2024.11.18.00)
+ - RCTDeprecation
+ - React-Core/Default
+ - React-cxxreact
+ - React-featureflags
+ - React-hermes
+ - React-jsi
+ - React-jsiexecutor
+ - React-jsinspector
+ - React-perflogger
+ - React-runtimescheduler
+ - React-utils
+ - SocketRocket (= 0.7.1)
+ - Yoga
+ - React-Core/RCTSettingsHeaders (0.78.2):
+ - glog
+ - hermes-engine
+ - RCT-Folly (= 2024.11.18.00)
+ - RCTDeprecation
+ - React-Core/Default
+ - React-cxxreact
+ - React-featureflags
+ - React-hermes
+ - React-jsi
+ - React-jsiexecutor
+ - React-jsinspector
+ - React-perflogger
+ - React-runtimescheduler
+ - React-utils
+ - SocketRocket (= 0.7.1)
+ - Yoga
+ - React-Core/RCTTextHeaders (0.78.2):
+ - glog
+ - hermes-engine
+ - RCT-Folly (= 2024.11.18.00)
+ - RCTDeprecation
+ - React-Core/Default
+ - React-cxxreact
+ - React-featureflags
+ - React-hermes
+ - React-jsi
+ - React-jsiexecutor
+ - React-jsinspector
+ - React-perflogger
+ - React-runtimescheduler
+ - React-utils
+ - SocketRocket (= 0.7.1)
+ - Yoga
+ - React-Core/RCTVibrationHeaders (0.78.2):
+ - glog
+ - hermes-engine
+ - RCT-Folly (= 2024.11.18.00)
+ - RCTDeprecation
+ - React-Core/Default
+ - React-cxxreact
+ - React-featureflags
+ - React-hermes
+ - React-jsi
+ - React-jsiexecutor
+ - React-jsinspector
+ - React-perflogger
+ - React-runtimescheduler
+ - React-utils
+ - SocketRocket (= 0.7.1)
+ - Yoga
+ - React-Core/RCTWebSocket (0.78.2):
+ - glog
+ - hermes-engine
+ - RCT-Folly (= 2024.11.18.00)
+ - RCTDeprecation
+ - React-Core/Default (= 0.78.2)
+ - React-cxxreact
+ - React-featureflags
+ - React-hermes
+ - React-jsi
+ - React-jsiexecutor
+ - React-jsinspector
+ - React-perflogger
+ - React-runtimescheduler
+ - React-utils
+ - SocketRocket (= 0.7.1)
+ - Yoga
+ - React-CoreModules (0.78.2):
+ - DoubleConversion
+ - fast_float (= 6.1.4)
+ - fmt (= 11.0.2)
+ - RCT-Folly (= 2024.11.18.00)
+ - RCTTypeSafety (= 0.78.2)
+ - React-Core/CoreModulesHeaders (= 0.78.2)
+ - React-jsi (= 0.78.2)
+ - React-jsinspector
+ - React-NativeModulesApple
+ - React-RCTBlob
+ - React-RCTFBReactNativeSpec
+ - React-RCTImage (= 0.78.2)
+ - ReactCommon
+ - SocketRocket (= 0.7.1)
+ - React-cxxreact (0.78.2):
+ - boost
+ - DoubleConversion
+ - fast_float (= 6.1.4)
+ - fmt (= 11.0.2)
+ - glog
+ - hermes-engine
+ - RCT-Folly (= 2024.11.18.00)
+ - React-callinvoker (= 0.78.2)
+ - React-debug (= 0.78.2)
+ - React-jsi (= 0.78.2)
+ - React-jsinspector
+ - React-logger (= 0.78.2)
+ - React-perflogger (= 0.78.2)
+ - React-runtimeexecutor (= 0.78.2)
+ - React-timing (= 0.78.2)
+ - React-debug (0.78.2)
+ - React-defaultsnativemodule (0.78.2):
+ - hermes-engine
+ - RCT-Folly
+ - React-domnativemodule
+ - React-featureflagsnativemodule
+ - React-idlecallbacksnativemodule
+ - React-jsi
+ - React-jsiexecutor
+ - React-microtasksnativemodule
+ - React-RCTFBReactNativeSpec
+ - React-domnativemodule (0.78.2):
+ - hermes-engine
+ - RCT-Folly
+ - React-Fabric
+ - React-FabricComponents
+ - React-graphics
+ - React-jsi
+ - React-jsiexecutor
+ - React-RCTFBReactNativeSpec
+ - ReactCommon/turbomodule/core
+ - Yoga
+ - React-Fabric (0.78.2):
+ - DoubleConversion
+ - fast_float (= 6.1.4)
+ - fmt (= 11.0.2)
+ - glog
+ - hermes-engine
+ - RCT-Folly/Fabric (= 2024.11.18.00)
+ - RCTRequired
+ - RCTTypeSafety
+ - React-Core
+ - React-cxxreact
+ - React-debug
+ - React-Fabric/animations (= 0.78.2)
+ - React-Fabric/attributedstring (= 0.78.2)
+ - React-Fabric/componentregistry (= 0.78.2)
+ - React-Fabric/componentregistrynative (= 0.78.2)
+ - React-Fabric/components (= 0.78.2)
+ - React-Fabric/consistency (= 0.78.2)
+ - React-Fabric/core (= 0.78.2)
+ - React-Fabric/dom (= 0.78.2)
+ - React-Fabric/imagemanager (= 0.78.2)
+ - React-Fabric/leakchecker (= 0.78.2)
+ - React-Fabric/mounting (= 0.78.2)
+ - React-Fabric/observers (= 0.78.2)
+ - React-Fabric/scheduler (= 0.78.2)
+ - React-Fabric/telemetry (= 0.78.2)
+ - React-Fabric/templateprocessor (= 0.78.2)
+ - React-Fabric/uimanager (= 0.78.2)
+ - React-featureflags
+ - React-graphics
+ - React-jsi
+ - React-jsiexecutor
+ - React-logger
+ - React-rendererdebug
+ - React-runtimescheduler
+ - React-utils
+ - ReactCommon/turbomodule/core
+ - React-Fabric/animations (0.78.2):
+ - DoubleConversion
+ - fast_float (= 6.1.4)
+ - fmt (= 11.0.2)
+ - glog
+ - hermes-engine
+ - RCT-Folly/Fabric (= 2024.11.18.00)
+ - RCTRequired
+ - RCTTypeSafety
+ - React-Core
+ - React-cxxreact
+ - React-debug
+ - React-featureflags
+ - React-graphics
+ - React-jsi
+ - React-jsiexecutor
+ - React-logger
+ - React-rendererdebug
+ - React-runtimescheduler
+ - React-utils
+ - ReactCommon/turbomodule/core
+ - React-Fabric/attributedstring (0.78.2):
+ - DoubleConversion
+ - fast_float (= 6.1.4)
+ - fmt (= 11.0.2)
+ - glog
+ - hermes-engine
+ - RCT-Folly/Fabric (= 2024.11.18.00)
+ - RCTRequired
+ - RCTTypeSafety
+ - React-Core
+ - React-cxxreact
+ - React-debug
+ - React-featureflags
+ - React-graphics
+ - React-jsi
+ - React-jsiexecutor
+ - React-logger
+ - React-rendererdebug
+ - React-runtimescheduler
+ - React-utils
+ - ReactCommon/turbomodule/core
+ - React-Fabric/componentregistry (0.78.2):
+ - DoubleConversion
+ - fast_float (= 6.1.4)
+ - fmt (= 11.0.2)
+ - glog
+ - hermes-engine
+ - RCT-Folly/Fabric (= 2024.11.18.00)
+ - RCTRequired
+ - RCTTypeSafety
+ - React-Core
+ - React-cxxreact
+ - React-debug
+ - React-featureflags
+ - React-graphics
+ - React-jsi
+ - React-jsiexecutor
+ - React-logger
+ - React-rendererdebug
+ - React-runtimescheduler
+ - React-utils
+ - ReactCommon/turbomodule/core
+ - React-Fabric/componentregistrynative (0.78.2):
+ - DoubleConversion
+ - fast_float (= 6.1.4)
+ - fmt (= 11.0.2)
+ - glog
+ - hermes-engine
+ - RCT-Folly/Fabric (= 2024.11.18.00)
+ - RCTRequired
+ - RCTTypeSafety
+ - React-Core
+ - React-cxxreact
+ - React-debug
+ - React-featureflags
+ - React-graphics
+ - React-jsi
+ - React-jsiexecutor
+ - React-logger
+ - React-rendererdebug
+ - React-runtimescheduler
+ - React-utils
+ - ReactCommon/turbomodule/core
+ - React-Fabric/components (0.78.2):
+ - DoubleConversion
+ - fast_float (= 6.1.4)
+ - fmt (= 11.0.2)
+ - glog
+ - hermes-engine
+ - RCT-Folly/Fabric (= 2024.11.18.00)
+ - RCTRequired
+ - RCTTypeSafety
+ - React-Core
+ - React-cxxreact
+ - React-debug
+ - React-Fabric/components/legacyviewmanagerinterop (= 0.78.2)
+ - React-Fabric/components/root (= 0.78.2)
+ - React-Fabric/components/view (= 0.78.2)
+ - React-featureflags
+ - React-graphics
+ - React-jsi
+ - React-jsiexecutor
+ - React-logger
+ - React-rendererdebug
+ - React-runtimescheduler
+ - React-utils
+ - ReactCommon/turbomodule/core
+ - React-Fabric/components/legacyviewmanagerinterop (0.78.2):
+ - DoubleConversion
+ - fast_float (= 6.1.4)
+ - fmt (= 11.0.2)
+ - glog
+ - hermes-engine
+ - RCT-Folly/Fabric (= 2024.11.18.00)
+ - RCTRequired
+ - RCTTypeSafety
+ - React-Core
+ - React-cxxreact
+ - React-debug
+ - React-featureflags
+ - React-graphics
+ - React-jsi
+ - React-jsiexecutor
+ - React-logger
+ - React-rendererdebug
+ - React-runtimescheduler
+ - React-utils
+ - ReactCommon/turbomodule/core
+ - React-Fabric/components/root (0.78.2):
+ - DoubleConversion
+ - fast_float (= 6.1.4)
+ - fmt (= 11.0.2)
+ - glog
+ - hermes-engine
+ - RCT-Folly/Fabric (= 2024.11.18.00)
+ - RCTRequired
+ - RCTTypeSafety
+ - React-Core
+ - React-cxxreact
+ - React-debug
+ - React-featureflags
+ - React-graphics
+ - React-jsi
+ - React-jsiexecutor
+ - React-logger
+ - React-rendererdebug
+ - React-runtimescheduler
+ - React-utils
+ - ReactCommon/turbomodule/core
+ - React-Fabric/components/view (0.78.2):
+ - DoubleConversion
+ - fast_float (= 6.1.4)
+ - fmt (= 11.0.2)
+ - glog
+ - hermes-engine
+ - RCT-Folly/Fabric (= 2024.11.18.00)
+ - RCTRequired
+ - RCTTypeSafety
+ - React-Core
+ - React-cxxreact
+ - React-debug
+ - React-featureflags
+ - React-graphics
+ - React-jsi
+ - React-jsiexecutor
+ - React-logger
+ - React-rendererdebug
+ - React-runtimescheduler
+ - React-utils
+ - ReactCommon/turbomodule/core
+ - Yoga
+ - React-Fabric/consistency (0.78.2):
+ - DoubleConversion
+ - fast_float (= 6.1.4)
+ - fmt (= 11.0.2)
+ - glog
+ - hermes-engine
+ - RCT-Folly/Fabric (= 2024.11.18.00)
+ - RCTRequired
+ - RCTTypeSafety
+ - React-Core
+ - React-cxxreact
+ - React-debug
+ - React-featureflags
+ - React-graphics
+ - React-jsi
+ - React-jsiexecutor
+ - React-logger
+ - React-rendererdebug
+ - React-runtimescheduler
+ - React-utils
+ - ReactCommon/turbomodule/core
+ - React-Fabric/core (0.78.2):
+ - DoubleConversion
+ - fast_float (= 6.1.4)
+ - fmt (= 11.0.2)
+ - glog
+ - hermes-engine
+ - RCT-Folly/Fabric (= 2024.11.18.00)
+ - RCTRequired
+ - RCTTypeSafety
+ - React-Core
+ - React-cxxreact
+ - React-debug
+ - React-featureflags
+ - React-graphics
+ - React-jsi
+ - React-jsiexecutor
+ - React-logger
+ - React-rendererdebug
+ - React-runtimescheduler
+ - React-utils
+ - ReactCommon/turbomodule/core
+ - React-Fabric/dom (0.78.2):
+ - DoubleConversion
+ - fast_float (= 6.1.4)
+ - fmt (= 11.0.2)
+ - glog
+ - hermes-engine
+ - RCT-Folly/Fabric (= 2024.11.18.00)
+ - RCTRequired
+ - RCTTypeSafety
+ - React-Core
+ - React-cxxreact
+ - React-debug
+ - React-featureflags
+ - React-graphics
+ - React-jsi
+ - React-jsiexecutor
+ - React-logger
+ - React-rendererdebug
+ - React-runtimescheduler
+ - React-utils
+ - ReactCommon/turbomodule/core
+ - React-Fabric/imagemanager (0.78.2):
+ - DoubleConversion
+ - fast_float (= 6.1.4)
+ - fmt (= 11.0.2)
+ - glog
+ - hermes-engine
+ - RCT-Folly/Fabric (= 2024.11.18.00)
+ - RCTRequired
+ - RCTTypeSafety
+ - React-Core
+ - React-cxxreact
+ - React-debug
+ - React-featureflags
+ - React-graphics
+ - React-jsi
+ - React-jsiexecutor
+ - React-logger
+ - React-rendererdebug
+ - React-runtimescheduler
+ - React-utils
+ - ReactCommon/turbomodule/core
+ - React-Fabric/leakchecker (0.78.2):
+ - DoubleConversion
+ - fast_float (= 6.1.4)
+ - fmt (= 11.0.2)
+ - glog
+ - hermes-engine
+ - RCT-Folly/Fabric (= 2024.11.18.00)
+ - RCTRequired
+ - RCTTypeSafety
+ - React-Core
+ - React-cxxreact
+ - React-debug
+ - React-featureflags
+ - React-graphics
+ - React-jsi
+ - React-jsiexecutor
+ - React-logger
+ - React-rendererdebug
+ - React-runtimescheduler
+ - React-utils
+ - ReactCommon/turbomodule/core
+ - React-Fabric/mounting (0.78.2):
+ - DoubleConversion
+ - fast_float (= 6.1.4)
+ - fmt (= 11.0.2)
+ - glog
+ - hermes-engine
+ - RCT-Folly/Fabric (= 2024.11.18.00)
+ - RCTRequired
+ - RCTTypeSafety
+ - React-Core
+ - React-cxxreact
+ - React-debug
+ - React-featureflags
+ - React-graphics
+ - React-jsi
+ - React-jsiexecutor
+ - React-logger
+ - React-rendererdebug
+ - React-runtimescheduler
+ - React-utils
+ - ReactCommon/turbomodule/core
+ - React-Fabric/observers (0.78.2):
+ - DoubleConversion
+ - fast_float (= 6.1.4)
+ - fmt (= 11.0.2)
+ - glog
+ - hermes-engine
+ - RCT-Folly/Fabric (= 2024.11.18.00)
+ - RCTRequired
+ - RCTTypeSafety
+ - React-Core
+ - React-cxxreact
+ - React-debug
+ - React-Fabric/observers/events (= 0.78.2)
+ - React-featureflags
+ - React-graphics
+ - React-jsi
+ - React-jsiexecutor
+ - React-logger
+ - React-rendererdebug
+ - React-runtimescheduler
+ - React-utils
+ - ReactCommon/turbomodule/core
+ - React-Fabric/observers/events (0.78.2):
+ - DoubleConversion
+ - fast_float (= 6.1.4)
+ - fmt (= 11.0.2)
+ - glog
+ - hermes-engine
+ - RCT-Folly/Fabric (= 2024.11.18.00)
+ - RCTRequired
+ - RCTTypeSafety
+ - React-Core
+ - React-cxxreact
+ - React-debug
+ - React-featureflags
+ - React-graphics
+ - React-jsi
+ - React-jsiexecutor
+ - React-logger
+ - React-rendererdebug
+ - React-runtimescheduler
+ - React-utils
+ - ReactCommon/turbomodule/core
+ - React-Fabric/scheduler (0.78.2):
+ - DoubleConversion
+ - fast_float (= 6.1.4)
+ - fmt (= 11.0.2)
+ - glog
+ - hermes-engine
+ - RCT-Folly/Fabric (= 2024.11.18.00)
+ - RCTRequired
+ - RCTTypeSafety
+ - React-Core
+ - React-cxxreact
+ - React-debug
+ - React-Fabric/observers/events
+ - React-featureflags
+ - React-graphics
+ - React-jsi
+ - React-jsiexecutor
+ - React-logger
+ - React-performancetimeline
+ - React-rendererdebug
+ - React-runtimescheduler
+ - React-utils
+ - ReactCommon/turbomodule/core
+ - React-Fabric/telemetry (0.78.2):
+ - DoubleConversion
+ - fast_float (= 6.1.4)
+ - fmt (= 11.0.2)
+ - glog
+ - hermes-engine
+ - RCT-Folly/Fabric (= 2024.11.18.00)
+ - RCTRequired
+ - RCTTypeSafety
+ - React-Core
+ - React-cxxreact
+ - React-debug
+ - React-featureflags
+ - React-graphics
+ - React-jsi
+ - React-jsiexecutor
+ - React-logger
+ - React-rendererdebug
+ - React-runtimescheduler
+ - React-utils
+ - ReactCommon/turbomodule/core
+ - React-Fabric/templateprocessor (0.78.2):
+ - DoubleConversion
+ - fast_float (= 6.1.4)
+ - fmt (= 11.0.2)
+ - glog
+ - hermes-engine
+ - RCT-Folly/Fabric (= 2024.11.18.00)
+ - RCTRequired
+ - RCTTypeSafety
+ - React-Core
+ - React-cxxreact
+ - React-debug
+ - React-featureflags
+ - React-graphics
+ - React-jsi
+ - React-jsiexecutor
+ - React-logger
+ - React-rendererdebug
+ - React-runtimescheduler
+ - React-utils
+ - ReactCommon/turbomodule/core
+ - React-Fabric/uimanager (0.78.2):
+ - DoubleConversion
+ - fast_float (= 6.1.4)
+ - fmt (= 11.0.2)
+ - glog
+ - hermes-engine
+ - RCT-Folly/Fabric (= 2024.11.18.00)
+ - RCTRequired
+ - RCTTypeSafety
+ - React-Core
+ - React-cxxreact
+ - React-debug
+ - React-Fabric/uimanager/consistency (= 0.78.2)
+ - React-featureflags
+ - React-graphics
+ - React-jsi
+ - React-jsiexecutor
+ - React-logger
+ - React-rendererconsistency
+ - React-rendererdebug
+ - React-runtimescheduler
+ - React-utils
+ - ReactCommon/turbomodule/core
+ - React-Fabric/uimanager/consistency (0.78.2):
+ - DoubleConversion
+ - fast_float (= 6.1.4)
+ - fmt (= 11.0.2)
+ - glog
+ - hermes-engine
+ - RCT-Folly/Fabric (= 2024.11.18.00)
+ - RCTRequired
+ - RCTTypeSafety
+ - React-Core
+ - React-cxxreact
+ - React-debug
+ - React-featureflags
+ - React-graphics
+ - React-jsi
+ - React-jsiexecutor
+ - React-logger
+ - React-rendererconsistency
+ - React-rendererdebug
+ - React-runtimescheduler
+ - React-utils
+ - ReactCommon/turbomodule/core
+ - React-FabricComponents (0.78.2):
+ - DoubleConversion
+ - fast_float (= 6.1.4)
+ - fmt (= 11.0.2)
+ - glog
+ - hermes-engine
+ - RCT-Folly/Fabric (= 2024.11.18.00)
+ - RCTRequired
+ - RCTTypeSafety
+ - React-Core
+ - React-cxxreact
+ - React-debug
+ - React-Fabric
+ - React-FabricComponents/components (= 0.78.2)
+ - React-FabricComponents/textlayoutmanager (= 0.78.2)
+ - React-featureflags
+ - React-graphics
+ - React-jsi
+ - React-jsiexecutor
+ - React-logger
+ - React-rendererdebug
+ - React-runtimescheduler
+ - React-utils
+ - ReactCommon/turbomodule/core
+ - Yoga
+ - React-FabricComponents/components (0.78.2):
+ - DoubleConversion
+ - fast_float (= 6.1.4)
+ - fmt (= 11.0.2)
+ - glog
+ - hermes-engine
+ - RCT-Folly/Fabric (= 2024.11.18.00)
+ - RCTRequired
+ - RCTTypeSafety
+ - React-Core
+ - React-cxxreact
+ - React-debug
+ - React-Fabric
+ - React-FabricComponents/components/inputaccessory (= 0.78.2)
+ - React-FabricComponents/components/iostextinput (= 0.78.2)
+ - React-FabricComponents/components/modal (= 0.78.2)
+ - React-FabricComponents/components/rncore (= 0.78.2)
+ - React-FabricComponents/components/safeareaview (= 0.78.2)
+ - React-FabricComponents/components/scrollview (= 0.78.2)
+ - React-FabricComponents/components/text (= 0.78.2)
+ - React-FabricComponents/components/textinput (= 0.78.2)
+ - React-FabricComponents/components/unimplementedview (= 0.78.2)
+ - React-featureflags
+ - React-graphics
+ - React-jsi
+ - React-jsiexecutor
+ - React-logger
+ - React-rendererdebug
+ - React-runtimescheduler
+ - React-utils
+ - ReactCommon/turbomodule/core
+ - Yoga
+ - React-FabricComponents/components/inputaccessory (0.78.2):
+ - DoubleConversion
+ - fast_float (= 6.1.4)
+ - fmt (= 11.0.2)
+ - glog
+ - hermes-engine
+ - RCT-Folly/Fabric (= 2024.11.18.00)
+ - RCTRequired
+ - RCTTypeSafety
+ - React-Core
+ - React-cxxreact
+ - React-debug
+ - React-Fabric
+ - React-featureflags
+ - React-graphics
+ - React-jsi
+ - React-jsiexecutor
+ - React-logger
+ - React-rendererdebug
+ - React-runtimescheduler
+ - React-utils
+ - ReactCommon/turbomodule/core
+ - Yoga
+ - React-FabricComponents/components/iostextinput (0.78.2):
+ - DoubleConversion
+ - fast_float (= 6.1.4)
+ - fmt (= 11.0.2)
+ - glog
+ - hermes-engine
+ - RCT-Folly/Fabric (= 2024.11.18.00)
+ - RCTRequired
+ - RCTTypeSafety
+ - React-Core
+ - React-cxxreact
+ - React-debug
+ - React-Fabric
+ - React-featureflags
+ - React-graphics
+ - React-jsi
+ - React-jsiexecutor
+ - React-logger
+ - React-rendererdebug
+ - React-runtimescheduler
+ - React-utils
+ - ReactCommon/turbomodule/core
+ - Yoga
+ - React-FabricComponents/components/modal (0.78.2):
+ - DoubleConversion
+ - fast_float (= 6.1.4)
+ - fmt (= 11.0.2)
+ - glog
+ - hermes-engine
+ - RCT-Folly/Fabric (= 2024.11.18.00)
+ - RCTRequired
+ - RCTTypeSafety
+ - React-Core
+ - React-cxxreact
+ - React-debug
+ - React-Fabric
+ - React-featureflags
+ - React-graphics
+ - React-jsi
+ - React-jsiexecutor
+ - React-logger
+ - React-rendererdebug
+ - React-runtimescheduler
+ - React-utils
+ - ReactCommon/turbomodule/core
+ - Yoga
+ - React-FabricComponents/components/rncore (0.78.2):
+ - DoubleConversion
+ - fast_float (= 6.1.4)
+ - fmt (= 11.0.2)
+ - glog
+ - hermes-engine
+ - RCT-Folly/Fabric (= 2024.11.18.00)
+ - RCTRequired
+ - RCTTypeSafety
+ - React-Core
+ - React-cxxreact
+ - React-debug
+ - React-Fabric
+ - React-featureflags
+ - React-graphics
+ - React-jsi
+ - React-jsiexecutor
+ - React-logger
+ - React-rendererdebug
+ - React-runtimescheduler
+ - React-utils
+ - ReactCommon/turbomodule/core
+ - Yoga
+ - React-FabricComponents/components/safeareaview (0.78.2):
+ - DoubleConversion
+ - fast_float (= 6.1.4)
+ - fmt (= 11.0.2)
+ - glog
+ - hermes-engine
+ - RCT-Folly/Fabric (= 2024.11.18.00)
+ - RCTRequired
+ - RCTTypeSafety
+ - React-Core
+ - React-cxxreact
+ - React-debug
+ - React-Fabric
+ - React-featureflags
+ - React-graphics
+ - React-jsi
+ - React-jsiexecutor
+ - React-logger
+ - React-rendererdebug
+ - React-runtimescheduler
+ - React-utils
+ - ReactCommon/turbomodule/core
+ - Yoga
+ - React-FabricComponents/components/scrollview (0.78.2):
+ - DoubleConversion
+ - fast_float (= 6.1.4)
+ - fmt (= 11.0.2)
+ - glog
+ - hermes-engine
+ - RCT-Folly/Fabric (= 2024.11.18.00)
+ - RCTRequired
+ - RCTTypeSafety
+ - React-Core
+ - React-cxxreact
+ - React-debug
+ - React-Fabric
+ - React-featureflags
+ - React-graphics
+ - React-jsi
+ - React-jsiexecutor
+ - React-logger
+ - React-rendererdebug
+ - React-runtimescheduler
+ - React-utils
+ - ReactCommon/turbomodule/core
+ - Yoga
+ - React-FabricComponents/components/text (0.78.2):
+ - DoubleConversion
+ - fast_float (= 6.1.4)
+ - fmt (= 11.0.2)
+ - glog
+ - hermes-engine
+ - RCT-Folly/Fabric (= 2024.11.18.00)
+ - RCTRequired
+ - RCTTypeSafety
+ - React-Core
+ - React-cxxreact
+ - React-debug
+ - React-Fabric
+ - React-featureflags
+ - React-graphics
+ - React-jsi
+ - React-jsiexecutor
+ - React-logger
+ - React-rendererdebug
+ - React-runtimescheduler
+ - React-utils
+ - ReactCommon/turbomodule/core
+ - Yoga
+ - React-FabricComponents/components/textinput (0.78.2):
+ - DoubleConversion
+ - fast_float (= 6.1.4)
+ - fmt (= 11.0.2)
+ - glog
+ - hermes-engine
+ - RCT-Folly/Fabric (= 2024.11.18.00)
+ - RCTRequired
+ - RCTTypeSafety
+ - React-Core
+ - React-cxxreact
+ - React-debug
+ - React-Fabric
+ - React-featureflags
+ - React-graphics
+ - React-jsi
+ - React-jsiexecutor
+ - React-logger
+ - React-rendererdebug
+ - React-runtimescheduler
+ - React-utils
+ - ReactCommon/turbomodule/core
+ - Yoga
+ - React-FabricComponents/components/unimplementedview (0.78.2):
+ - DoubleConversion
+ - fast_float (= 6.1.4)
+ - fmt (= 11.0.2)
+ - glog
+ - hermes-engine
+ - RCT-Folly/Fabric (= 2024.11.18.00)
+ - RCTRequired
+ - RCTTypeSafety
+ - React-Core
+ - React-cxxreact
+ - React-debug
+ - React-Fabric
+ - React-featureflags
+ - React-graphics
+ - React-jsi
+ - React-jsiexecutor
+ - React-logger
+ - React-rendererdebug
+ - React-runtimescheduler
+ - React-utils
+ - ReactCommon/turbomodule/core
+ - Yoga
+ - React-FabricComponents/textlayoutmanager (0.78.2):
+ - DoubleConversion
+ - fast_float (= 6.1.4)
+ - fmt (= 11.0.2)
+ - glog
+ - hermes-engine
+ - RCT-Folly/Fabric (= 2024.11.18.00)
+ - RCTRequired
+ - RCTTypeSafety
+ - React-Core
+ - React-cxxreact
+ - React-debug
+ - React-Fabric
+ - React-featureflags
+ - React-graphics
+ - React-jsi
+ - React-jsiexecutor
+ - React-logger
+ - React-rendererdebug
+ - React-runtimescheduler
+ - React-utils
+ - ReactCommon/turbomodule/core
+ - Yoga
+ - React-FabricImage (0.78.2):
+ - DoubleConversion
+ - fast_float (= 6.1.4)
+ - fmt (= 11.0.2)
+ - glog
+ - hermes-engine
+ - RCT-Folly/Fabric (= 2024.11.18.00)
+ - RCTRequired (= 0.78.2)
+ - RCTTypeSafety (= 0.78.2)
+ - React-Fabric
+ - React-featureflags
+ - React-graphics
+ - React-ImageManager
+ - React-jsi
+ - React-jsiexecutor (= 0.78.2)
+ - React-logger
+ - React-rendererdebug
+ - React-utils
+ - ReactCommon
+ - Yoga
+ - React-featureflags (0.78.2):
+ - RCT-Folly (= 2024.11.18.00)
+ - React-featureflagsnativemodule (0.78.2):
+ - hermes-engine
+ - RCT-Folly
+ - React-featureflags
+ - React-jsi
+ - React-jsiexecutor
+ - React-RCTFBReactNativeSpec
+ - ReactCommon/turbomodule/core
+ - React-graphics (0.78.2):
+ - DoubleConversion
+ - fast_float (= 6.1.4)
+ - fmt (= 11.0.2)
+ - glog
+ - hermes-engine
+ - RCT-Folly/Fabric (= 2024.11.18.00)
+ - React-jsi
+ - React-jsiexecutor
+ - React-utils
+ - React-hermes (0.78.2):
+ - DoubleConversion
+ - fast_float (= 6.1.4)
+ - fmt (= 11.0.2)
+ - glog
+ - hermes-engine
+ - RCT-Folly (= 2024.11.18.00)
+ - React-cxxreact (= 0.78.2)
+ - React-jsi
+ - React-jsiexecutor (= 0.78.2)
+ - React-jsinspector
+ - React-perflogger (= 0.78.2)
+ - React-runtimeexecutor
+ - React-idlecallbacksnativemodule (0.78.2):
+ - glog
+ - hermes-engine
+ - RCT-Folly
+ - React-jsi
+ - React-jsiexecutor
+ - React-RCTFBReactNativeSpec
+ - React-runtimescheduler
+ - ReactCommon/turbomodule/core
+ - React-ImageManager (0.78.2):
+ - glog
+ - RCT-Folly/Fabric
+ - React-Core/Default
+ - React-debug
+ - React-Fabric
+ - React-graphics
+ - React-rendererdebug
+ - React-utils
+ - React-jserrorhandler (0.78.2):
+ - glog
+ - hermes-engine
+ - RCT-Folly/Fabric (= 2024.11.18.00)
+ - React-cxxreact
+ - React-debug
+ - React-featureflags
+ - React-jsi
+ - ReactCommon/turbomodule/bridging
+ - React-jsi (0.78.2):
+ - boost
+ - DoubleConversion
+ - fast_float (= 6.1.4)
+ - fmt (= 11.0.2)
+ - glog
+ - hermes-engine
+ - RCT-Folly (= 2024.11.18.00)
+ - React-jsiexecutor (0.78.2):
+ - DoubleConversion
+ - fast_float (= 6.1.4)
+ - fmt (= 11.0.2)
+ - glog
+ - hermes-engine
+ - RCT-Folly (= 2024.11.18.00)
+ - React-cxxreact (= 0.78.2)
+ - React-jsi (= 0.78.2)
+ - React-jsinspector
+ - React-perflogger (= 0.78.2)
+ - React-jsinspector (0.78.2):
+ - DoubleConversion
+ - glog
+ - hermes-engine
+ - RCT-Folly
+ - React-featureflags
+ - React-jsi
+ - React-jsinspectortracing
+ - React-perflogger (= 0.78.2)
+ - React-runtimeexecutor (= 0.78.2)
+ - React-jsinspectortracing (0.78.2):
+ - RCT-Folly
+ - React-jsitracing (0.78.2):
+ - React-jsi
+ - React-logger (0.78.2):
+ - glog
+ - React-Mapbuffer (0.78.2):
+ - glog
+ - React-debug
+ - React-microtasksnativemodule (0.78.2):
+ - hermes-engine
+ - RCT-Folly
+ - React-jsi
+ - React-jsiexecutor
+ - React-RCTFBReactNativeSpec
+ - ReactCommon/turbomodule/core
+ - react-native-config (1.5.5):
+ - react-native-config/App (= 1.5.5)
+ - react-native-config/App (1.5.5):
+ - React-Core
+ - react-native-safe-area-context (5.4.1):
+ - DoubleConversion
+ - glog
+ - hermes-engine
+ - RCT-Folly (= 2024.11.18.00)
+ - RCTRequired
+ - RCTTypeSafety
+ - React-Core
+ - React-debug
+ - React-Fabric
+ - React-featureflags
+ - React-graphics
+ - React-ImageManager
+ - react-native-safe-area-context/common (= 5.4.1)
+ - react-native-safe-area-context/fabric (= 5.4.1)
+ - React-NativeModulesApple
+ - React-RCTFabric
+ - React-rendererdebug
+ - React-utils
+ - ReactCodegen
+ - ReactCommon/turbomodule/bridging
+ - ReactCommon/turbomodule/core
+ - Yoga
+ - react-native-safe-area-context/common (5.4.1):
+ - DoubleConversion
+ - glog
+ - hermes-engine
+ - RCT-Folly (= 2024.11.18.00)
+ - RCTRequired
+ - RCTTypeSafety
+ - React-Core
+ - React-debug
+ - React-Fabric
+ - React-featureflags
+ - React-graphics
+ - React-ImageManager
+ - React-NativeModulesApple
+ - React-RCTFabric
+ - React-rendererdebug
+ - React-utils
+ - ReactCodegen
+ - ReactCommon/turbomodule/bridging
+ - ReactCommon/turbomodule/core
+ - Yoga
+ - react-native-safe-area-context/fabric (5.4.1):
+ - DoubleConversion
+ - glog
+ - hermes-engine
+ - RCT-Folly (= 2024.11.18.00)
+ - RCTRequired
+ - RCTTypeSafety
+ - React-Core
+ - React-debug
+ - React-Fabric
+ - React-featureflags
+ - React-graphics
+ - React-ImageManager
+ - react-native-safe-area-context/common
+ - React-NativeModulesApple
+ - React-RCTFabric
+ - React-rendererdebug
+ - React-utils
+ - ReactCodegen
+ - ReactCommon/turbomodule/bridging
+ - ReactCommon/turbomodule/core
+ - Yoga
+ - React-NativeModulesApple (0.78.2):
+ - glog
+ - hermes-engine
+ - React-callinvoker
+ - React-Core
+ - React-cxxreact
+ - React-jsi
+ - React-jsinspector
+ - React-runtimeexecutor
+ - ReactCommon/turbomodule/bridging
+ - ReactCommon/turbomodule/core
+ - React-perflogger (0.78.2):
+ - DoubleConversion
+ - RCT-Folly (= 2024.11.18.00)
+ - React-performancetimeline (0.78.2):
+ - RCT-Folly (= 2024.11.18.00)
+ - React-cxxreact
+ - React-featureflags
+ - React-jsinspectortracing
+ - React-timing
+ - React-RCTActionSheet (0.78.2):
+ - React-Core/RCTActionSheetHeaders (= 0.78.2)
+ - React-RCTAnimation (0.78.2):
+ - RCT-Folly (= 2024.11.18.00)
+ - RCTTypeSafety
+ - React-Core/RCTAnimationHeaders
+ - React-jsi
+ - React-NativeModulesApple
+ - React-RCTFBReactNativeSpec
+ - ReactCommon
+ - React-RCTAppDelegate (0.78.2):
+ - RCT-Folly (= 2024.11.18.00)
+ - RCTRequired
+ - RCTTypeSafety
+ - React-Core
+ - React-CoreModules
+ - React-debug
+ - React-defaultsnativemodule
+ - React-Fabric
+ - React-featureflags
+ - React-graphics
+ - React-hermes
+ - React-NativeModulesApple
+ - React-RCTFabric
+ - React-RCTFBReactNativeSpec
+ - React-RCTImage
+ - React-RCTNetwork
+ - React-rendererdebug
+ - React-RuntimeApple
+ - React-RuntimeCore
+ - React-RuntimeHermes
+ - React-runtimescheduler
+ - React-utils
+ - ReactCommon
+ - React-RCTBlob (0.78.2):
+ - DoubleConversion
+ - fast_float (= 6.1.4)
+ - fmt (= 11.0.2)
+ - hermes-engine
+ - RCT-Folly (= 2024.11.18.00)
+ - React-Core/RCTBlobHeaders
+ - React-Core/RCTWebSocket
+ - React-jsi
+ - React-jsinspector
+ - React-NativeModulesApple
+ - React-RCTFBReactNativeSpec
+ - React-RCTNetwork
+ - ReactCommon
+ - React-RCTFabric (0.78.2):
+ - glog
+ - hermes-engine
+ - RCT-Folly/Fabric (= 2024.11.18.00)
+ - React-Core
+ - React-debug
+ - React-Fabric
+ - React-FabricComponents
+ - React-FabricImage
+ - React-featureflags
+ - React-graphics
+ - React-ImageManager
+ - React-jsi
+ - React-jsinspector
+ - React-jsinspectortracing
+ - React-performancetimeline
+ - React-RCTImage
+ - React-RCTText
+ - React-rendererconsistency
+ - React-rendererdebug
+ - React-runtimescheduler
+ - React-utils
+ - Yoga
+ - React-RCTFBReactNativeSpec (0.78.2):
+ - hermes-engine
+ - RCT-Folly
+ - RCTRequired
+ - RCTTypeSafety
+ - React-Core
+ - React-jsi
+ - React-jsiexecutor
+ - React-NativeModulesApple
+ - ReactCommon
+ - React-RCTImage (0.78.2):
+ - RCT-Folly (= 2024.11.18.00)
+ - RCTTypeSafety
+ - React-Core/RCTImageHeaders
+ - React-jsi
+ - React-NativeModulesApple
+ - React-RCTFBReactNativeSpec
+ - React-RCTNetwork
+ - ReactCommon
+ - React-RCTLinking (0.78.2):
+ - React-Core/RCTLinkingHeaders (= 0.78.2)
+ - React-jsi (= 0.78.2)
+ - React-NativeModulesApple
+ - React-RCTFBReactNativeSpec
+ - ReactCommon
+ - ReactCommon/turbomodule/core (= 0.78.2)
+ - React-RCTNetwork (0.78.2):
+ - RCT-Folly (= 2024.11.18.00)
+ - RCTTypeSafety
+ - React-Core/RCTNetworkHeaders
+ - React-jsi
+ - React-NativeModulesApple
+ - React-RCTFBReactNativeSpec
+ - ReactCommon
+ - React-RCTSettings (0.78.2):
+ - RCT-Folly (= 2024.11.18.00)
+ - RCTTypeSafety
+ - React-Core/RCTSettingsHeaders
+ - React-jsi
+ - React-NativeModulesApple
+ - React-RCTFBReactNativeSpec
+ - ReactCommon
+ - React-RCTText (0.78.2):
+ - React-Core/RCTTextHeaders (= 0.78.2)
+ - Yoga
+ - React-RCTVibration (0.78.2):
+ - RCT-Folly (= 2024.11.18.00)
+ - React-Core/RCTVibrationHeaders
+ - React-jsi
+ - React-NativeModulesApple
+ - React-RCTFBReactNativeSpec
+ - ReactCommon
+ - React-rendererconsistency (0.78.2)
+ - React-rendererdebug (0.78.2):
+ - DoubleConversion
+ - fast_float (= 6.1.4)
+ - fmt (= 11.0.2)
+ - RCT-Folly (= 2024.11.18.00)
+ - React-debug
+ - React-rncore (0.78.2)
+ - React-RuntimeApple (0.78.2):
+ - hermes-engine
+ - RCT-Folly/Fabric (= 2024.11.18.00)
+ - React-callinvoker
+ - React-Core/Default
+ - React-CoreModules
+ - React-cxxreact
+ - React-featureflags
+ - React-jserrorhandler
+ - React-jsi
+ - React-jsiexecutor
+ - React-jsinspector
+ - React-Mapbuffer
+ - React-NativeModulesApple
+ - React-RCTFabric
+ - React-RCTFBReactNativeSpec
+ - React-RuntimeCore
+ - React-runtimeexecutor
+ - React-RuntimeHermes
+ - React-runtimescheduler
+ - React-utils
+ - React-RuntimeCore (0.78.2):
+ - glog
+ - hermes-engine
+ - RCT-Folly/Fabric (= 2024.11.18.00)
+ - React-cxxreact
+ - React-Fabric
+ - React-featureflags
+ - React-jserrorhandler
+ - React-jsi
+ - React-jsiexecutor
+ - React-jsinspector
+ - React-performancetimeline
+ - React-runtimeexecutor
+ - React-runtimescheduler
+ - React-utils
+ - React-runtimeexecutor (0.78.2):
+ - React-jsi (= 0.78.2)
+ - React-RuntimeHermes (0.78.2):
+ - hermes-engine
+ - RCT-Folly/Fabric (= 2024.11.18.00)
+ - React-featureflags
+ - React-hermes
+ - React-jsi
+ - React-jsinspector
+ - React-jsitracing
+ - React-RuntimeCore
+ - React-utils
+ - React-runtimescheduler (0.78.2):
+ - glog
+ - hermes-engine
+ - RCT-Folly (= 2024.11.18.00)
+ - React-callinvoker
+ - React-cxxreact
+ - React-debug
+ - React-featureflags
+ - React-jsi
+ - React-performancetimeline
+ - React-rendererconsistency
+ - React-rendererdebug
+ - React-runtimeexecutor
+ - React-timing
+ - React-utils
+ - React-timing (0.78.2)
+ - React-utils (0.78.2):
+ - glog
+ - hermes-engine
+ - RCT-Folly (= 2024.11.18.00)
+ - React-debug
+ - React-jsi (= 0.78.2)
+ - ReactAppDependencyProvider (0.78.2):
+ - ReactCodegen
+ - ReactCodegen (0.78.2):
+ - DoubleConversion
+ - glog
+ - hermes-engine
+ - RCT-Folly
+ - RCTRequired
+ - RCTTypeSafety
+ - React-Core
+ - React-debug
+ - React-Fabric
+ - React-FabricImage
+ - React-featureflags
+ - React-graphics
+ - React-jsi
+ - React-jsiexecutor
+ - React-NativeModulesApple
+ - React-RCTAppDelegate
+ - React-rendererdebug
+ - React-utils
+ - ReactCommon/turbomodule/bridging
+ - ReactCommon/turbomodule/core
+ - ReactCommon (0.78.2):
+ - ReactCommon/turbomodule (= 0.78.2)
+ - ReactCommon/turbomodule (0.78.2):
+ - DoubleConversion
+ - fast_float (= 6.1.4)
+ - fmt (= 11.0.2)
+ - glog
+ - hermes-engine
+ - RCT-Folly (= 2024.11.18.00)
+ - React-callinvoker (= 0.78.2)
+ - React-cxxreact (= 0.78.2)
+ - React-jsi (= 0.78.2)
+ - React-logger (= 0.78.2)
+ - React-perflogger (= 0.78.2)
+ - ReactCommon/turbomodule/bridging (= 0.78.2)
+ - ReactCommon/turbomodule/core (= 0.78.2)
+ - ReactCommon/turbomodule/bridging (0.78.2):
+ - DoubleConversion
+ - fast_float (= 6.1.4)
+ - fmt (= 11.0.2)
+ - glog
+ - hermes-engine
+ - RCT-Folly (= 2024.11.18.00)
+ - React-callinvoker (= 0.78.2)
+ - React-cxxreact (= 0.78.2)
+ - React-jsi (= 0.78.2)
+ - React-logger (= 0.78.2)
+ - React-perflogger (= 0.78.2)
+ - ReactCommon/turbomodule/core (0.78.2):
+ - DoubleConversion
+ - fast_float (= 6.1.4)
+ - fmt (= 11.0.2)
+ - glog
+ - hermes-engine
+ - RCT-Folly (= 2024.11.18.00)
+ - React-callinvoker (= 0.78.2)
+ - React-cxxreact (= 0.78.2)
+ - React-debug (= 0.78.2)
+ - React-featureflags (= 0.78.2)
+ - React-jsi (= 0.78.2)
+ - React-logger (= 0.78.2)
+ - React-perflogger (= 0.78.2)
+ - React-utils (= 0.78.2)
+ - RNScreens (4.11.0):
+ - DoubleConversion
+ - glog
+ - hermes-engine
+ - RCT-Folly (= 2024.11.18.00)
+ - RCTRequired
+ - RCTTypeSafety
+ - React-Core
+ - React-debug
+ - React-Fabric
+ - React-featureflags
+ - React-graphics
+ - React-ImageManager
+ - React-NativeModulesApple
+ - React-RCTFabric
+ - React-RCTImage
+ - React-rendererdebug
+ - React-utils
+ - ReactCodegen
+ - ReactCommon/turbomodule/bridging
+ - ReactCommon/turbomodule/core
+ - RNScreens/common (= 4.11.0)
+ - Yoga
+ - RNScreens/common (4.11.0):
+ - DoubleConversion
+ - glog
+ - hermes-engine
+ - RCT-Folly (= 2024.11.18.00)
+ - RCTRequired
+ - RCTTypeSafety
+ - React-Core
+ - React-debug
+ - React-Fabric
+ - React-featureflags
+ - React-graphics
+ - React-ImageManager
+ - React-NativeModulesApple
+ - React-RCTFabric
+ - React-RCTImage
+ - React-rendererdebug
+ - React-utils
+ - ReactCodegen
+ - ReactCommon/turbomodule/bridging
+ - ReactCommon/turbomodule/core
+ - Yoga
+ - SocketRocket (0.7.1)
+ - Yoga (0.0.0)
+
+DEPENDENCIES:
+ - boost (from `../node_modules/react-native/third-party-podspecs/boost.podspec`)
+ - "DatadogSDKReactNative (from `../node_modules/@datadog/mobile-react-native`)"
+ - DoubleConversion (from `../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec`)
+ - fast_float (from `../node_modules/react-native/third-party-podspecs/fast_float.podspec`)
+ - FBLazyVector (from `../node_modules/react-native/Libraries/FBLazyVector`)
+ - fmt (from `../node_modules/react-native/third-party-podspecs/fmt.podspec`)
+ - glog (from `../node_modules/react-native/third-party-podspecs/glog.podspec`)
+ - hermes-engine (from `../node_modules/react-native/sdks/hermes-engine/hermes-engine.podspec`)
+ - 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`)
+ - RCTDeprecation (from `../node_modules/react-native/ReactApple/Libraries/RCTFoundation/RCTDeprecation`)
+ - RCTRequired (from `../node_modules/react-native/Libraries/Required`)
+ - RCTTypeSafety (from `../node_modules/react-native/Libraries/TypeSafety`)
+ - React (from `../node_modules/react-native/`)
+ - React-callinvoker (from `../node_modules/react-native/ReactCommon/callinvoker`)
+ - 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-debug (from `../node_modules/react-native/ReactCommon/react/debug`)
+ - React-defaultsnativemodule (from `../node_modules/react-native/ReactCommon/react/nativemodule/defaults`)
+ - React-domnativemodule (from `../node_modules/react-native/ReactCommon/react/nativemodule/dom`)
+ - React-Fabric (from `../node_modules/react-native/ReactCommon`)
+ - React-FabricComponents (from `../node_modules/react-native/ReactCommon`)
+ - React-FabricImage (from `../node_modules/react-native/ReactCommon`)
+ - React-featureflags (from `../node_modules/react-native/ReactCommon/react/featureflags`)
+ - React-featureflagsnativemodule (from `../node_modules/react-native/ReactCommon/react/nativemodule/featureflags`)
+ - React-graphics (from `../node_modules/react-native/ReactCommon/react/renderer/graphics`)
+ - React-hermes (from `../node_modules/react-native/ReactCommon/hermes`)
+ - React-idlecallbacksnativemodule (from `../node_modules/react-native/ReactCommon/react/nativemodule/idlecallbacks`)
+ - React-ImageManager (from `../node_modules/react-native/ReactCommon/react/renderer/imagemanager/platform/ios`)
+ - React-jserrorhandler (from `../node_modules/react-native/ReactCommon/jserrorhandler`)
+ - React-jsi (from `../node_modules/react-native/ReactCommon/jsi`)
+ - React-jsiexecutor (from `../node_modules/react-native/ReactCommon/jsiexecutor`)
+ - React-jsinspector (from `../node_modules/react-native/ReactCommon/jsinspector-modern`)
+ - React-jsinspectortracing (from `../node_modules/react-native/ReactCommon/jsinspector-modern/tracing`)
+ - React-jsitracing (from `../node_modules/react-native/ReactCommon/hermes/executor/`)
+ - React-logger (from `../node_modules/react-native/ReactCommon/logger`)
+ - React-Mapbuffer (from `../node_modules/react-native/ReactCommon`)
+ - React-microtasksnativemodule (from `../node_modules/react-native/ReactCommon/react/nativemodule/microtasks`)
+ - react-native-config (from `../../node_modules/react-native-config`)
+ - react-native-safe-area-context (from `../node_modules/react-native-safe-area-context`)
+ - React-NativeModulesApple (from `../node_modules/react-native/ReactCommon/react/nativemodule/core/platform/ios`)
+ - React-perflogger (from `../node_modules/react-native/ReactCommon/reactperflogger`)
+ - React-performancetimeline (from `../node_modules/react-native/ReactCommon/react/performance/timeline`)
+ - React-RCTActionSheet (from `../node_modules/react-native/Libraries/ActionSheetIOS`)
+ - React-RCTAnimation (from `../node_modules/react-native/Libraries/NativeAnimation`)
+ - React-RCTAppDelegate (from `../node_modules/react-native/Libraries/AppDelegate`)
+ - React-RCTBlob (from `../node_modules/react-native/Libraries/Blob`)
+ - React-RCTFabric (from `../node_modules/react-native/React`)
+ - React-RCTFBReactNativeSpec (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-rendererconsistency (from `../node_modules/react-native/ReactCommon/react/renderer/consistency`)
+ - React-rendererdebug (from `../node_modules/react-native/ReactCommon/react/renderer/debug`)
+ - React-rncore (from `../node_modules/react-native/ReactCommon`)
+ - React-RuntimeApple (from `../node_modules/react-native/ReactCommon/react/runtime/platform/ios`)
+ - React-RuntimeCore (from `../node_modules/react-native/ReactCommon/react/runtime`)
+ - React-runtimeexecutor (from `../node_modules/react-native/ReactCommon/runtimeexecutor`)
+ - React-RuntimeHermes (from `../node_modules/react-native/ReactCommon/react/runtime`)
+ - React-runtimescheduler (from `../node_modules/react-native/ReactCommon/react/renderer/runtimescheduler`)
+ - React-timing (from `../node_modules/react-native/ReactCommon/react/timing`)
+ - React-utils (from `../node_modules/react-native/ReactCommon/react/utils`)
+ - ReactAppDependencyProvider (from `build/generated/ios`)
+ - ReactCodegen (from `build/generated/ios`)
+ - ReactCommon/turbomodule/core (from `../node_modules/react-native/ReactCommon`)
+ - RNScreens (from `../node_modules/react-native-screens`)
+ - Yoga (from `../node_modules/react-native/ReactCommon/yoga`)
+
+SPEC REPOS:
+ trunk:
+ - DatadogCore
+ - DatadogCrashReporting
+ - DatadogInternal
+ - DatadogLogs
+ - DatadogRUM
+ - DatadogTrace
+ - DatadogWebViewTracking
+ - OpenTelemetrySwiftApi
+ - PLCrashReporter
+ - SocketRocket
+
+EXTERNAL SOURCES:
+ boost:
+ :podspec: "../node_modules/react-native/third-party-podspecs/boost.podspec"
+ DatadogSDKReactNative:
+ :path: "../node_modules/@datadog/mobile-react-native"
+ DoubleConversion:
+ :podspec: "../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec"
+ fast_float:
+ :podspec: "../node_modules/react-native/third-party-podspecs/fast_float.podspec"
+ FBLazyVector:
+ :path: "../node_modules/react-native/Libraries/FBLazyVector"
+ fmt:
+ :podspec: "../node_modules/react-native/third-party-podspecs/fmt.podspec"
+ glog:
+ :podspec: "../node_modules/react-native/third-party-podspecs/glog.podspec"
+ hermes-engine:
+ :podspec: "../node_modules/react-native/sdks/hermes-engine/hermes-engine.podspec"
+ :tag: hermes-2025-01-13-RNv0.78.0-a942ef374897d85da38e9c8904574f8376555388
+ RCT-Folly:
+ :podspec: "../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec"
+ RCTDeprecation:
+ :path: "../node_modules/react-native/ReactApple/Libraries/RCTFoundation/RCTDeprecation"
+ RCTRequired:
+ :path: "../node_modules/react-native/Libraries/Required"
+ RCTTypeSafety:
+ :path: "../node_modules/react-native/Libraries/TypeSafety"
+ React:
+ :path: "../node_modules/react-native/"
+ React-callinvoker:
+ :path: "../node_modules/react-native/ReactCommon/callinvoker"
+ 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-debug:
+ :path: "../node_modules/react-native/ReactCommon/react/debug"
+ React-defaultsnativemodule:
+ :path: "../node_modules/react-native/ReactCommon/react/nativemodule/defaults"
+ React-domnativemodule:
+ :path: "../node_modules/react-native/ReactCommon/react/nativemodule/dom"
+ React-Fabric:
+ :path: "../node_modules/react-native/ReactCommon"
+ React-FabricComponents:
+ :path: "../node_modules/react-native/ReactCommon"
+ React-FabricImage:
+ :path: "../node_modules/react-native/ReactCommon"
+ React-featureflags:
+ :path: "../node_modules/react-native/ReactCommon/react/featureflags"
+ React-featureflagsnativemodule:
+ :path: "../node_modules/react-native/ReactCommon/react/nativemodule/featureflags"
+ React-graphics:
+ :path: "../node_modules/react-native/ReactCommon/react/renderer/graphics"
+ React-hermes:
+ :path: "../node_modules/react-native/ReactCommon/hermes"
+ React-idlecallbacksnativemodule:
+ :path: "../node_modules/react-native/ReactCommon/react/nativemodule/idlecallbacks"
+ React-ImageManager:
+ :path: "../node_modules/react-native/ReactCommon/react/renderer/imagemanager/platform/ios"
+ React-jserrorhandler:
+ :path: "../node_modules/react-native/ReactCommon/jserrorhandler"
+ 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-modern"
+ React-jsinspectortracing:
+ :path: "../node_modules/react-native/ReactCommon/jsinspector-modern/tracing"
+ React-jsitracing:
+ :path: "../node_modules/react-native/ReactCommon/hermes/executor/"
+ React-logger:
+ :path: "../node_modules/react-native/ReactCommon/logger"
+ React-Mapbuffer:
+ :path: "../node_modules/react-native/ReactCommon"
+ React-microtasksnativemodule:
+ :path: "../node_modules/react-native/ReactCommon/react/nativemodule/microtasks"
+ react-native-config:
+ :path: "../../node_modules/react-native-config"
+ react-native-safe-area-context:
+ :path: "../node_modules/react-native-safe-area-context"
+ React-NativeModulesApple:
+ :path: "../node_modules/react-native/ReactCommon/react/nativemodule/core/platform/ios"
+ React-perflogger:
+ :path: "../node_modules/react-native/ReactCommon/reactperflogger"
+ React-performancetimeline:
+ :path: "../node_modules/react-native/ReactCommon/react/performance/timeline"
+ React-RCTActionSheet:
+ :path: "../node_modules/react-native/Libraries/ActionSheetIOS"
+ React-RCTAnimation:
+ :path: "../node_modules/react-native/Libraries/NativeAnimation"
+ React-RCTAppDelegate:
+ :path: "../node_modules/react-native/Libraries/AppDelegate"
+ React-RCTBlob:
+ :path: "../node_modules/react-native/Libraries/Blob"
+ React-RCTFabric:
+ :path: "../node_modules/react-native/React"
+ React-RCTFBReactNativeSpec:
+ :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-rendererconsistency:
+ :path: "../node_modules/react-native/ReactCommon/react/renderer/consistency"
+ React-rendererdebug:
+ :path: "../node_modules/react-native/ReactCommon/react/renderer/debug"
+ React-rncore:
+ :path: "../node_modules/react-native/ReactCommon"
+ React-RuntimeApple:
+ :path: "../node_modules/react-native/ReactCommon/react/runtime/platform/ios"
+ React-RuntimeCore:
+ :path: "../node_modules/react-native/ReactCommon/react/runtime"
+ React-runtimeexecutor:
+ :path: "../node_modules/react-native/ReactCommon/runtimeexecutor"
+ React-RuntimeHermes:
+ :path: "../node_modules/react-native/ReactCommon/react/runtime"
+ React-runtimescheduler:
+ :path: "../node_modules/react-native/ReactCommon/react/renderer/runtimescheduler"
+ React-timing:
+ :path: "../node_modules/react-native/ReactCommon/react/timing"
+ React-utils:
+ :path: "../node_modules/react-native/ReactCommon/react/utils"
+ ReactAppDependencyProvider:
+ :path: build/generated/ios
+ ReactCodegen:
+ :path: build/generated/ios
+ ReactCommon:
+ :path: "../node_modules/react-native/ReactCommon"
+ RNScreens:
+ :path: "../node_modules/react-native-screens"
+ Yoga:
+ :path: "../node_modules/react-native/ReactCommon/yoga"
+
+SPEC CHECKSUMS:
+ boost: 7e761d76ca2ce687f7cc98e698152abd03a18f90
+ DatadogCore: 68aee4ffcc3ea17a3b0aa527907757883fc72c84
+ DatadogCrashReporting: e6a83b143394e28c9c1cb48c5cfb18eff507b3be
+ DatadogInternal: 3c5cae6772295fd175a9de11e4747a9322aaa4e7
+ DatadogLogs: 09d6358dc7682f9d3eaea85dd418f82d2db3560c
+ DatadogRUM: 0f267df8c9c8579a291870c2bce4549587391a07
+ DatadogSDKReactNative: 41500432b5a826ba95715dccd3f2fb4fa32f37e6
+ DatadogTrace: f46c8220c73463d09741013f385a6e27cd39185b
+ DatadogWebViewTracking: dc8376420c8686efd09d00752bc1034b639d180b
+ DoubleConversion: cb417026b2400c8f53ae97020b2be961b59470cb
+ fast_float: 06eeec4fe712a76acc9376682e4808b05ce978b6
+ FBLazyVector: e32d34492c519a2194ec9d7f5e7a79d11b73f91c
+ fmt: a40bb5bd0294ea969aaaba240a927bd33d878cdd
+ glog: eb93e2f488219332457c3c4eafd2738ddc7e80b8
+ hermes-engine: 2771b98fb813fdc6f92edd7c9c0035ecabf9fee7
+ OpenTelemetrySwiftApi: aaee576ed961e0c348af78df58b61300e95bd104
+ PLCrashReporter: db59ef96fa3d25f3650040d02ec2798cffee75f2
+ RCT-Folly: e78785aa9ba2ed998ea4151e314036f6c49e6d82
+ RCTDeprecation: be794de7dc6ed8f9f7fbf525f86e7651b8b68746
+ RCTRequired: a83787b092ec554c2eb6019ff3f5b8d125472b3b
+ RCTTypeSafety: 48ad3c858926b1c46f46a81a58822b476e178e2c
+ React: 3b5754191f1b65f1dbc52fbea7959c3d2d9e39c9
+ React-callinvoker: 6beeaf4c7db11b6cc953fac45f2c76e3fb125013
+ React-Core: 8a10ac9de53373a3ecb5dfcbcf56df1d3dad0861
+ React-CoreModules: af6999b35c7c01b0e12b59d27f3e054e13da43b1
+ React-cxxreact: 833f00155ce8c2fda17f6d286f8eaeff2ececc69
+ React-debug: 440175830c448e7e53e61ebb8d8468c3256b645e
+ React-defaultsnativemodule: a970effe18fe50bdbbb7115c3297f873b666d0d4
+ React-domnativemodule: 45f886342a724e61531b18fba1859bb6782e5d62
+ React-Fabric: 69f1881f2177a8512304a64157943548ab6df0cf
+ React-FabricComponents: f54111c8e2439fc273ab07483e3a7054ca1e75af
+ React-FabricImage: 9ad2619dfe8c386d79e8aaa87da6e8f018ab9592
+ React-featureflags: b9cf9b35baca1c7f20c06a104ffc325a02752faa
+ React-featureflagsnativemodule: 7f1bc76d1d2c5bede5e753b8d188dbde7c59b12f
+ React-graphics: 069e0d0b31ed1e80feb023ad4f7e97f00e84f7b9
+ React-hermes: 63df5ac5a944889c8758a6213b39ed825863adb7
+ React-idlecallbacksnativemodule: 4c700bd7c0012adf904929075a79418b828b5ffc
+ React-ImageManager: 5d1ba8a7bae44ebba43fc93da64937c713d42941
+ React-jserrorhandler: 0defd58f8bb797cdd0a820f733bf42d8bee708ce
+ React-jsi: 99d6207ec802ad73473a0dad3c9ad48cd98463f6
+ React-jsiexecutor: 8c8097b4ba7e7f480582d6e6238b01be5dcc01c0
+ React-jsinspector: ea148ec45bc7ff830e443383ea715f9780c15934
+ React-jsinspectortracing: 46bb2841982f01e7b63eaab98140fa1de5b2a1db
+ React-jsitracing: c1063fc2233960d1c8322291e74bca51d25c10d7
+ React-logger: 763728cf4eebc9c5dc9bfc3649e22295784f69f3
+ React-Mapbuffer: 63278529b5cf531a7eaf8fc71244fabb062ca90c
+ React-microtasksnativemodule: 6a39463c32ce831c4c2aa8469273114d894b6be9
+ react-native-config: 644074ab88db883fcfaa584f03520ec29589d7df
+ react-native-safe-area-context: 9d7528d2e8fce82d20cb0b643c8be34a4ad57464
+ React-NativeModulesApple: fd0545efbb7f936f78edd15a6564a72d2c34bb32
+ React-perflogger: 5f8fa36a8e168fb355efe72099efe77213bc2ac6
+ React-performancetimeline: 8c0ecfa1ae459cc5678a65f95ac3bf85644d6feb
+ React-RCTActionSheet: 2ef95837e89b9b154f13cd8401f9054fc3076aff
+ React-RCTAnimation: 46abefd5acfda7e6629f9e153646deecc70babd2
+ React-RCTAppDelegate: 7e58e0299e304cceee3f7019fa77bc6990f66b22
+ React-RCTBlob: f68c63a801ef1d27e83c4011e3b083cc86a200d7
+ React-RCTFabric: c59f41d0c4edbaac8baa232731ca09925ae4dda7
+ React-RCTFBReactNativeSpec: 3240b9b8d792aa4be0fb85c9898fc183125ba8de
+ React-RCTImage: 34e0bba1507e55f1c614bd759eb91d9be48c8c5b
+ React-RCTLinking: a0b6c9f4871c18b0b81ea952f43e752718bd5f1d
+ React-RCTNetwork: bdafd661ac2b20d23b779e45bf7ac3e4c8bd1b60
+ React-RCTSettings: 98aa5163796f43789314787b584a84eba47787a9
+ React-RCTText: 424a274fc9015b29de89cf3cbcdf4dd85dd69f83
+ React-RCTVibration: 92d9875a955b0adb34b4b773528fdbbbc5addd6c
+ React-rendererconsistency: 5ac4164ec18cfdd76ed5f864dbfdc56a5a948bc9
+ React-rendererdebug: 710dbd7990e355852c786aa6bc7753f6028f357a
+ React-rncore: 0bace3b991d8843bb5b57c5f2301ec6e9c94718b
+ React-RuntimeApple: 701ec44a8b5d863ee9b6a2b2447b6a26bb6805a1
+ React-RuntimeCore: a82767065b9a936b05e209dc6987bc1ea9eb5d2d
+ React-runtimeexecutor: 876dfc1d8daa819dfd039c40f78f277c5a3e66a6
+ React-RuntimeHermes: e7a051fd91cab8849df56ac917022ef6064ad621
+ React-runtimescheduler: c544141f2124ee3d5f3d5bf0d69f4029a61a68b0
+ React-timing: 1ee3572c398f5579c9df5bf76aacddf5683ff74e
+ React-utils: 18703928768cb37e70cf2efff09def12d74a399e
+ ReactAppDependencyProvider: 4893bde33952f997a323eb1a1ee87a72764018ff
+ ReactCodegen: da30aff1cea9b5993dcbc33bf1ef47a463c55194
+ ReactCommon: 865ebe76504a95e115b6229dd00a31e56d2d4bfe
+ RNScreens: e0fb5d61ce1fd33f4988ec643a05da33a04fda25
+ SocketRocket: d4aabe649be1e368d1318fdf28a022d714d65748
+ Yoga: e14bad835e12b6c7e2260fc320bd00e0f4b45add
+
+PODFILE CHECKSUM: 4410ec48cbe9f00cc7dce5aa595affed6a14ea0d
+
+COCOAPODS: 1.16.2
diff --git a/benchmarks/ios/main.m b/benchmarks/ios/main.m
new file mode 100644
index 000000000..51ae013f8
--- /dev/null
+++ b/benchmarks/ios/main.m
@@ -0,0 +1,11 @@
+#import
+#import "BenchmarkRunner-Swift.h"
+
+@interface AppDelegate : UIResponder
+@end
+
+int main(int argc, char * argv[]) {
+ @autoreleasepool {
+ return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
+ }
+}
diff --git a/benchmarks/jest.config.js b/benchmarks/jest.config.js
new file mode 100644
index 000000000..8eb675e9b
--- /dev/null
+++ b/benchmarks/jest.config.js
@@ -0,0 +1,3 @@
+module.exports = {
+ preset: 'react-native',
+};
diff --git a/benchmarks/metro.config.js b/benchmarks/metro.config.js
new file mode 100644
index 000000000..84b107529
--- /dev/null
+++ b/benchmarks/metro.config.js
@@ -0,0 +1,45 @@
+const path = require('path');
+const pakCore = require('../packages/core/package.json');
+const exclusionList = require('metro-config/src/defaults/exclusionList');
+const escape = require('escape-string-regexp');
+const { getDefaultConfig, mergeConfig } = require('@react-native/metro-config');
+
+const root = path.resolve(__dirname, '..');
+const modules = Object.keys({
+ ...pakCore.peerDependencies
+});
+
+/**
+ * Metro configuration
+ * https://facebook.github.io/metro/docs/configuration
+ *
+ * @type {import('metro-config').MetroConfig}
+ */
+const config = {
+ projectRoot: __dirname,
+ watchFolders: [
+ root
+ ],
+ resetCache: true,
+ // We need to make sure that only one version is loaded for peerDependencies
+ // So we denylist them at the root, and alias them to the versions in example's node_modules
+ // This block is very important, because otherwise things like React can be packed multiple times
+ // while it should be only one React instance in the runtime. exclusionList relies on the modules which are
+ // declared as peer dependencies in the core package.
+ resolver: {
+ blacklistRE: 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;
+ }, {})
+ },
+};
+
+module.exports = mergeConfig(getDefaultConfig(__dirname), config);
diff --git a/benchmarks/package.json b/benchmarks/package.json
new file mode 100644
index 000000000..3b429bf8e
--- /dev/null
+++ b/benchmarks/package.json
@@ -0,0 +1,56 @@
+{
+ "name": "benchmark-runner",
+ "version": "0.0.1",
+ "private": true,
+ "scripts": {
+ "android": "react-native run-android",
+ "ios": "react-native run-ios",
+ "lint": "eslint .",
+ "start": "react-native start",
+ "test": "jest"
+ },
+ "codegenConfig": {
+ "name": "BenchmarkVitalsSpec",
+ "type": "modules",
+ "jsSrcsDir": "src/specs",
+ "android": {
+ "javaPackageName": "com.benchmarkvitals"
+ },
+ "library": "BenchmarkRunner"
+ },
+ "dependencies": {
+ "@datadog/mobile-react-native": "workspace:packages/core",
+ "@react-navigation/bottom-tabs": "^7.3.12",
+ "@react-navigation/native": "^7.1.8",
+ "@react-navigation/native-stack": "^7.3.12",
+ "query-string": "9.1.1",
+ "react": "19.0.0",
+ "react-native": "0.78.2",
+ "react-native-config": "1.5.5",
+ "react-native-safe-area-context": "^5.4.0",
+ "react-native-screens": "^4.10.0"
+ },
+ "devDependencies": {
+ "@babel/core": "7.25.2",
+ "@babel/preset-env": "7.25.3",
+ "@babel/runtime": "7.25.0",
+ "@react-native-community/cli": "15.0.1",
+ "@react-native-community/cli-platform-android": "15.0.1",
+ "@react-native-community/cli-platform-ios": "15.0.1",
+ "@react-native/babel-preset": "0.78.2",
+ "@react-native/eslint-config": "0.78.2",
+ "@react-native/metro-config": "0.78.2",
+ "@react-native/typescript-config": "0.78.2",
+ "@types/jest": "29.5.13",
+ "@types/react": "19.0.0",
+ "@types/react-test-renderer": "19.0.0",
+ "eslint": "8.19.0",
+ "jest": "29.6.3",
+ "prettier": "2.8.8",
+ "react-test-renderer": "19.0.0",
+ "typescript": "5.0.4"
+ },
+ "engines": {
+ "node": ">=18"
+ }
+}
diff --git a/benchmarks/react-native-config.d.ts b/benchmarks/react-native-config.d.ts
new file mode 100644
index 000000000..0de73ed3d
--- /dev/null
+++ b/benchmarks/react-native-config.d.ts
@@ -0,0 +1,16 @@
+import { RunType, Scenario } from "./src/testSetup/types/testConfig";
+
+declare module 'react-native-config' {
+ export interface NativeConfig {
+ DD_CLIENT_TOKEN?: string;
+ DD_API_KEY?: string;
+ DD_APP_ID?: string;
+ DD_SITE?: string;
+ DD_ENV?: string;
+ BENCH_SCENARIO?: Scenario;
+ BENCH_RUN_TYPE?: RunType;
+ }
+
+ export const Config: NativeConfig;
+ export default Config;
+ }
diff --git a/benchmarks/src/App.tsx b/benchmarks/src/App.tsx
new file mode 100644
index 000000000..678800981
--- /dev/null
+++ b/benchmarks/src/App.tsx
@@ -0,0 +1,80 @@
+/*
+ * Unless explicitly stated otherwise all files in this repository are licensed under the Apache License Version 2.0.
+ * This product includes software developed at Datadog (https://www.datadoghq.com/).
+ * Copyright 2016-Present Datadog, Inc.
+ */
+
+import React, { useEffect, useState } from 'react';
+import {
+ Linking,
+ Text,
+ View,
+} from 'react-native';
+import { DEFAULT_ENV_TEST_CONFIG, getDatadogConfig, getTestConfigFromDeeplink, isValidScenario, startCollectingVitals, stopCollectingVitals } from './testSetup/testUtils';
+import { Command, Scenario } from './testSetup/types/testConfig';
+import type { TestConfig } from './testSetup/types/testConfig';
+import DefaultScenario from './scenario/Default/defaultScenario';
+import NavigationExampleScenario from './scenario/NavigationExample/navigationExampleScenario';
+
+function App(): React.JSX.Element {
+ const [testConfig, setTestConfig] = useState();
+
+ useEffect(() => {
+ setupFromTestConfig(DEFAULT_ENV_TEST_CONFIG);
+
+ Linking.getInitialURL().then(url => {
+ setupFromUrl(url);
+ });
+
+ const deeplinkListener = Linking.addEventListener('url', ({ url }) => {
+ setupFromUrl(url);
+ })
+
+ return () => {
+ deeplinkListener.remove();
+ }
+ }, []);
+
+ const setupFromTestConfig = async (testConfig: TestConfig | undefined) => {
+ switch (testConfig?.command) {
+ case Command.Start:
+ if (isValidScenario(testConfig?.scenario)) {
+ const datadogConfig = getDatadogConfig();
+ testConfig.datadogConfig = datadogConfig;
+
+ await startCollectingVitals(testConfig, datadogConfig);
+
+ // Starts running the Scenario
+ setTestConfig(testConfig);
+ }
+ break;
+ case Command.Stop:
+ setTestConfig(undefined);
+ await stopCollectingVitals();
+ break;
+ }
+ }
+
+ const setupFromUrl = (url: string | null | undefined) => {
+ if (url) {
+ const newTestConfig = getTestConfigFromDeeplink(url);
+ setupFromTestConfig(newTestConfig);
+ }
+ }
+
+ switch(testConfig?.scenario) {
+ case Scenario.Default:
+ return ;
+ case Scenario.NavigationExample:
+ return ;
+ // Add new scenarios here
+ default:
+ return (
+
+ No scenario loaded
+
+ );
+ }
+}
+
+export default App;
diff --git a/benchmarks/src/scenario/Default/defaultScenario.tsx b/benchmarks/src/scenario/Default/defaultScenario.tsx
new file mode 100644
index 000000000..c1d85a27b
--- /dev/null
+++ b/benchmarks/src/scenario/Default/defaultScenario.tsx
@@ -0,0 +1,30 @@
+/*
+ * Unless explicitly stated otherwise all files in this repository are licensed under the Apache License Version 2.0.
+ * This product includes software developed at Datadog (https://www.datadoghq.com/).
+ * Copyright 2016-Present Datadog, Inc.
+ */
+
+import React, { useEffect } from 'react';
+import {
+ Text,
+ View,
+} from 'react-native';
+import type { DefaultScenarioProps } from './types';
+import { RunType } from '../../testSetup/types/testConfig';
+import { instrument } from '../../testSetup/testUtils';
+
+function DefaultScenario(props: DefaultScenarioProps): React.JSX.Element {
+ useEffect(() => {
+ if (props.testConfig?.runType !== RunType.BASELINE) {
+ instrument();
+ }
+ }, []);
+
+ return (
+
+ {'Default Scenario'}
+
+ );
+}
+
+export default DefaultScenario;
diff --git a/benchmarks/src/scenario/Default/types.ts b/benchmarks/src/scenario/Default/types.ts
new file mode 100644
index 000000000..d74aa5935
--- /dev/null
+++ b/benchmarks/src/scenario/Default/types.ts
@@ -0,0 +1,11 @@
+/*
+ * Unless explicitly stated otherwise all files in this repository are licensed under the Apache License Version 2.0.
+ * This product includes software developed at Datadog (https://www.datadoghq.com/).
+ * Copyright 2016-Present Datadog, Inc.
+ */
+
+import type { TestConfig } from "../../testSetup/types/testConfig"
+
+export type DefaultScenarioProps = {
+ testConfig?: TestConfig,
+}
\ No newline at end of file
diff --git a/benchmarks/src/scenario/NavigationExample/navigationExampleScenario.tsx b/benchmarks/src/scenario/NavigationExample/navigationExampleScenario.tsx
new file mode 100644
index 000000000..d7cb2e239
--- /dev/null
+++ b/benchmarks/src/scenario/NavigationExample/navigationExampleScenario.tsx
@@ -0,0 +1,53 @@
+/*
+ * Unless explicitly stated otherwise all files in this repository are licensed under the Apache License Version 2.0.
+ * This product includes software developed at Datadog (https://www.datadoghq.com/).
+ * Copyright 2016-Present Datadog, Inc.
+ */
+
+import React, { useEffect } from 'react';
+import {
+ Text,
+ View,
+} from 'react-native';
+import { NavigationContainer } from '@react-navigation/native';
+import { createBottomTabNavigator } from '@react-navigation/bottom-tabs';
+import type { NavigationExampleScenarioProps } from './types';
+import { RunType } from '../../testSetup/types/testConfig';
+import { instrument } from '../../testSetup/testUtils';
+
+function NavigationExampleScenario(props: NavigationExampleScenarioProps): React.JSX.Element {
+ useEffect(() => {
+ if (props.testConfig?.runType !== RunType.BASELINE) {
+ instrument();
+ }
+ }, []);
+
+ function FirstTabScreen() {
+ return (
+
+ {'Navigation Example Scenario - First Tab'}
+
+ );
+ }
+
+ function SecondTabScreen() {
+ return (
+
+ {'Navigation Example Scenario - Second Tab'}
+
+ );
+ }
+
+ const Tabs = createBottomTabNavigator();
+
+ return (
+
+
+
+
+
+
+ )
+}
+
+export default NavigationExampleScenario;
diff --git a/benchmarks/src/scenario/NavigationExample/types.ts b/benchmarks/src/scenario/NavigationExample/types.ts
new file mode 100644
index 000000000..02c9cd336
--- /dev/null
+++ b/benchmarks/src/scenario/NavigationExample/types.ts
@@ -0,0 +1,11 @@
+/*
+ * Unless explicitly stated otherwise all files in this repository are licensed under the Apache License Version 2.0.
+ * This product includes software developed at Datadog (https://www.datadoghq.com/).
+ * Copyright 2016-Present Datadog, Inc.
+ */
+
+import type { TestConfig } from "../../testSetup/types/testConfig"
+
+export type NavigationExampleScenarioProps = {
+ testConfig?: TestConfig,
+}
\ No newline at end of file
diff --git a/benchmarks/src/specs/NativeBenchmarkVitals.ts b/benchmarks/src/specs/NativeBenchmarkVitals.ts
new file mode 100644
index 000000000..55fb248f5
--- /dev/null
+++ b/benchmarks/src/specs/NativeBenchmarkVitals.ts
@@ -0,0 +1,15 @@
+/*
+ * Unless explicitly stated otherwise all files in this repository are licensed under the Apache License Version 2.0.
+ * This product includes software developed at Datadog (https://www.datadoghq.com/).
+ * Copyright 2016-Present Datadog, Inc.
+ */
+
+import type { TurboModule } from "react-native";
+import { TurboModuleRegistry } from "react-native";
+
+export interface Spec extends TurboModule {
+ startCollectingVitals(config: Object): Promise;
+ stopCollectingVitals(): Promise;
+}
+
+export default TurboModuleRegistry.getEnforcing('BenchmarkVitals');
\ No newline at end of file
diff --git a/benchmarks/src/testSetup/testUtils.ts b/benchmarks/src/testSetup/testUtils.ts
new file mode 100644
index 000000000..9321b31d8
--- /dev/null
+++ b/benchmarks/src/testSetup/testUtils.ts
@@ -0,0 +1,100 @@
+/*
+ * Unless explicitly stated otherwise all files in this repository are licensed under the Apache License Version 2.0.
+ * This product includes software developed at Datadog (https://www.datadoghq.com/).
+ * Copyright 2016-Present Datadog, Inc.
+ */
+
+import queryString from 'query-string';
+import {
+ DdLogs,
+ DdSdkReactNative,
+ DdSdkReactNativeConfiguration,
+ SdkVerbosity,
+ TrackingConsent
+} from '@datadog/mobile-react-native';
+import Config from 'react-native-config';
+import BenchmarkVitals from '../specs/NativeBenchmarkVitals';
+import { Command, RunType, Scenario } from './types/testConfig';
+import type { DatadogConfig, NativeTestConfig, TestConfig } from './types/testConfig';
+import { Platform } from 'react-native';
+
+export const DEFAULT_ENV_TEST_CONFIG: TestConfig = {
+ command: Command.Start,
+ scenario: Config.BENCH_SCENARIO,
+ runType: Config.BENCH_RUN_TYPE,
+};
+
+export const getDatadogConfig =(): DatadogConfig => {
+ return {
+ clientToken: Config.DD_CLIENT_TOKEN,
+ applicationID: Config.DD_APP_ID,
+ apiKey: Config.DD_API_KEY,
+ site: Config.DD_SITE,
+ env: Config.DD_ENV,
+ }
+};
+
+export const getTestConfigFromDeeplink = (url: string): TestConfig | undefined => {
+ try {
+ const parsed = queryString.parseUrl(url);
+ const command = parsed.url.split('://')[1];
+ const scenario = parsed.query.scenario;
+ const runType = parsed.query.runType;
+
+ const testConfig: TestConfig = {
+ command: command ? command as Command : undefined,
+ scenario: scenario ? scenario as Scenario : Scenario.Default,
+ runType: runType ? runType as RunType : RunType.BASELINE,
+ }
+
+ return testConfig;
+ } catch( _error) {
+ return undefined;
+ }
+};
+
+export const startCollectingVitals = async (testConfig: TestConfig, datadogConfig: DatadogConfig) => {
+ const nativeTestConfig: NativeTestConfig = {
+ scenario: testConfig.scenario,
+ runType: testConfig.runType,
+ clientToken: datadogConfig.clientToken,
+ applicationID: datadogConfig.applicationID,
+ apiKey: datadogConfig.apiKey,
+ };
+
+ await BenchmarkVitals?.startCollectingVitals(nativeTestConfig);
+};
+
+export const stopCollectingVitals = async () => {
+ await BenchmarkVitals?.stopCollectingVitals();
+};
+
+export const instrument = () => {
+ const datadogConfig = getDatadogConfig();
+ initializeDatadog(datadogConfig.clientToken, datadogConfig.env, datadogConfig.applicationID);
+};
+
+export const isValidScenario = (scenario?: string): boolean => {
+ return Object.values(Scenario).includes(scenario as Scenario);
+};
+
+export const initializeDatadog = (clientToken?: string, environment?: string, appId?: string) => {
+ const platform = Platform.OS;
+ const config = new DdSdkReactNativeConfiguration(
+ clientToken ?? '',
+ environment ?? '',
+ appId ?? '',
+ true,
+ true,
+ true,
+ TrackingConsent.GRANTED
+ );
+ config.nativeCrashReportEnabled = true
+ config.sampleRate = 100
+ config.serviceName = `com.rn.${platform}.benchmark`
+ config.verbosity = SdkVerbosity.DEBUG;
+
+ DdSdkReactNative.initialize(config).then(() => {
+ DdLogs.info('Datadog RN SDK initialized')
+ });
+};
\ No newline at end of file
diff --git a/benchmarks/src/testSetup/types/testConfig.ts b/benchmarks/src/testSetup/types/testConfig.ts
new file mode 100644
index 000000000..a625a7f0d
--- /dev/null
+++ b/benchmarks/src/testSetup/types/testConfig.ts
@@ -0,0 +1,45 @@
+/*
+ * Unless explicitly stated otherwise all files in this repository are licensed under the Apache License Version 2.0.
+ * This product includes software developed at Datadog (https://www.datadoghq.com/).
+ * Copyright 2016-Present Datadog, Inc.
+ */
+
+export enum Command {
+ Start = 'start',
+ Stop = 'stop',
+}
+
+export enum Scenario {
+ Default = 'default',
+ NavigationExample = 'navigation'
+ // Add new scenarios here
+}
+
+export enum RunType {
+ BASELINE = 'baseline',
+ INSTRUMENTED = 'instrumented',
+ PROFILING ='profiling'
+};
+
+export interface TestConfig {
+ command?: Command;
+ scenario?: Scenario;
+ runType?: RunType;
+ datadogConfig?: DatadogConfig;
+}
+
+export interface DatadogConfig {
+ clientToken?: string;
+ applicationID?: string;
+ apiKey?: string;
+ site?: string;
+ env?: string;
+}
+
+export interface NativeTestConfig {
+ scenario?: Scenario;
+ runType?: RunType;
+ clientToken?: string;
+ applicationID?: string;
+ apiKey?: string;
+}
\ No newline at end of file
diff --git a/benchmarks/tsconfig.json b/benchmarks/tsconfig.json
new file mode 100644
index 000000000..243b9849b
--- /dev/null
+++ b/benchmarks/tsconfig.json
@@ -0,0 +1,6 @@
+{
+ "compilerOptions": {
+ "jsx": "react-native"
+ },
+ "extends": "@react-native/typescript-config/tsconfig.json"
+}
diff --git a/package.json b/package.json
index 97c91fe44..da3db0610 100644
--- a/package.json
+++ b/package.json
@@ -19,7 +19,8 @@
"packages": [
"packages/*",
"example",
- "example-new-architecture"
+ "example-new-architecture",
+ "benchmarks"
]
},
"scripts": {
diff --git a/packages/core/android/build.gradle b/packages/core/android/build.gradle
index 96f0e1bb4..8a28a11f8 100644
--- a/packages/core/android/build.gradle
+++ b/packages/core/android/build.gradle
@@ -192,10 +192,10 @@ dependencies {
implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
compileOnly "com.squareup.okhttp3:okhttp:3.12.13"
- implementation "com.datadoghq:dd-sdk-android-rum:2.19.2"
- implementation "com.datadoghq:dd-sdk-android-logs:2.19.2"
- implementation "com.datadoghq:dd-sdk-android-trace:2.19.2"
- implementation "com.datadoghq:dd-sdk-android-webview:2.19.2"
+ implementation "com.datadoghq:dd-sdk-android-rum:2.21.0"
+ implementation "com.datadoghq:dd-sdk-android-logs:2.21.0"
+ implementation "com.datadoghq:dd-sdk-android-trace:2.21.0"
+ implementation "com.datadoghq:dd-sdk-android-webview:2.21.0"
implementation "com.google.code.gson:gson:2.10.0"
testImplementation "org.junit.platform:junit-platform-launcher:1.6.2"
testImplementation "org.junit.jupiter:junit-jupiter-api:5.6.2"
diff --git a/packages/react-native-session-replay/android/build.gradle b/packages/react-native-session-replay/android/build.gradle
index a7e019b1e..f55d1ac04 100644
--- a/packages/react-native-session-replay/android/build.gradle
+++ b/packages/react-native-session-replay/android/build.gradle
@@ -209,8 +209,8 @@ dependencies {
api "com.facebook.react:react-android:$reactNativeVersion"
}
implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
- implementation "com.datadoghq:dd-sdk-android-session-replay:2.19.2"
- implementation "com.datadoghq:dd-sdk-android-internal:2.19.2"
+ implementation "com.datadoghq:dd-sdk-android-session-replay:2.21.0"
+ implementation "com.datadoghq:dd-sdk-android-internal:2.21.0"
implementation project(path: ':datadog_mobile-react-native')
testImplementation "org.junit.platform:junit-platform-launcher:1.6.2"
diff --git a/yarn.lock b/yarn.lock
index 379b5bb42..dcbfb5ca4 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -774,33 +774,56 @@ __metadata:
languageName: node
linkType: hard
-"@babel/compat-data@npm:^7.22.6, @babel/compat-data@npm:^7.27.2":
- version: 7.27.2
- resolution: "@babel/compat-data@npm:7.27.2"
- checksum: 8d4066324e5f1275adc43f2e22110cac29ee09fe926260c43f0eaa432c148859367df4152574a28ee02dbb3e3d11dd57145eed345d49cc07f9b6e11fee06535f
+"@babel/compat-data@npm:^7.22.6, @babel/compat-data@npm:^7.25.2, @babel/compat-data@npm:^7.27.2":
+ version: 7.27.3
+ resolution: "@babel/compat-data@npm:7.27.3"
+ checksum: c6087989612312de697b21e6855d087c8b7376e5cf47e05a2a990fc67318e439e117ae2d977d317e5912e0323a3da13d6aca88348ef3c1218b0c74cc58b0a0cf
languageName: node
linkType: hard
-"@babel/core@npm:^7.11.6, @babel/core@npm:^7.12.3, @babel/core@npm:^7.13.16, @babel/core@npm:^7.18.5, @babel/core@npm:^7.23.9, @babel/core@npm:^7.25.2":
- version: 7.27.1
- resolution: "@babel/core@npm:7.27.1"
+"@babel/core@npm:7.25.2":
+ version: 7.25.2
+ resolution: "@babel/core@npm:7.25.2"
+ dependencies:
+ "@ampproject/remapping": ^2.2.0
+ "@babel/code-frame": ^7.24.7
+ "@babel/generator": ^7.25.0
+ "@babel/helper-compilation-targets": ^7.25.2
+ "@babel/helper-module-transforms": ^7.25.2
+ "@babel/helpers": ^7.25.0
+ "@babel/parser": ^7.25.0
+ "@babel/template": ^7.25.0
+ "@babel/traverse": ^7.25.2
+ "@babel/types": ^7.25.2
+ convert-source-map: ^2.0.0
+ debug: ^4.1.0
+ gensync: ^1.0.0-beta.2
+ json5: ^2.2.3
+ semver: ^6.3.1
+ checksum: 9a1ef604a7eb62195f70f9370cec45472a08114e3934e3eaaedee8fd754edf0730e62347c7b4b5e67d743ce57b5bb8cf3b92459482ca94d06e06246ef021390a
+ languageName: node
+ linkType: hard
+
+"@babel/core@npm:^7.11.6, @babel/core@npm:^7.12.3, @babel/core@npm:^7.13.16, @babel/core@npm:^7.18.5, @babel/core@npm:^7.23.9, @babel/core@npm:^7.24.7, @babel/core@npm:^7.25.2":
+ version: 7.27.3
+ resolution: "@babel/core@npm:7.27.3"
dependencies:
"@ampproject/remapping": ^2.2.0
"@babel/code-frame": ^7.27.1
- "@babel/generator": ^7.27.1
- "@babel/helper-compilation-targets": ^7.27.1
- "@babel/helper-module-transforms": ^7.27.1
- "@babel/helpers": ^7.27.1
- "@babel/parser": ^7.27.1
- "@babel/template": ^7.27.1
- "@babel/traverse": ^7.27.1
- "@babel/types": ^7.27.1
+ "@babel/generator": ^7.27.3
+ "@babel/helper-compilation-targets": ^7.27.2
+ "@babel/helper-module-transforms": ^7.27.3
+ "@babel/helpers": ^7.27.3
+ "@babel/parser": ^7.27.3
+ "@babel/template": ^7.27.2
+ "@babel/traverse": ^7.27.3
+ "@babel/types": ^7.27.3
convert-source-map: ^2.0.0
debug: ^4.1.0
gensync: ^1.0.0-beta.2
json5: ^2.2.3
semver: ^6.3.1
- checksum: fce205f9eea387ed8a9c6de64e5a8f50256359bfc8f1352c576c843b4c148a6c2ef187cfe8d729453e520fdcc997f65920aca6cb8911fb25dfd2286966b9b914
+ checksum: d70d5e4e99d87d07e9dd51ef20f6558e2145562c6bab9db4b26a9d1ca3fe96db87f3b0385d85df6e6582faf623e4bec4150a417095fdb598956dbd8608cd6270
languageName: node
linkType: hard
@@ -818,29 +841,29 @@ __metadata:
languageName: node
linkType: hard
-"@babel/generator@npm:^7.25.0, @babel/generator@npm:^7.27.1, @babel/generator@npm:^7.7.2":
- version: 7.27.1
- resolution: "@babel/generator@npm:7.27.1"
+"@babel/generator@npm:^7.25.0, @babel/generator@npm:^7.27.3, @babel/generator@npm:^7.7.2":
+ version: 7.27.3
+ resolution: "@babel/generator@npm:7.27.3"
dependencies:
- "@babel/parser": ^7.27.1
- "@babel/types": ^7.27.1
+ "@babel/parser": ^7.27.3
+ "@babel/types": ^7.27.3
"@jridgewell/gen-mapping": ^0.3.5
"@jridgewell/trace-mapping": ^0.3.25
jsesc: ^3.0.2
- checksum: d5e220eb20aca1d93aef85c4c716237f84c5aab7d3ed8dfeb7060dcd73d20c593a687fe74cfb6d3dc1604ef9faff2ca24e6cfdb1af18e03e3a5f9f63a04c0bdc
+ checksum: c0b1b399ff62fa0f1903679ab2b088fd4312c33154c0ae78228094c196ecf53ce8e525b8f5e537ac3117ff9a49cdf7b3640f129114908dfadc6541853f3747a2
languageName: node
linkType: hard
"@babel/helper-annotate-as-pure@npm:^7.27.1":
- version: 7.27.1
- resolution: "@babel/helper-annotate-as-pure@npm:7.27.1"
+ version: 7.27.3
+ resolution: "@babel/helper-annotate-as-pure@npm:7.27.3"
dependencies:
- "@babel/types": ^7.27.1
- checksum: 3f8e4d591458d6c0621a3d670f8798b8895580214287390126e3e621ddf3df0bd07cbcc9500c2671b9ec10162c2f9feb1194da5cf039d40df8cb69d181fc0cd8
+ "@babel/types": ^7.27.3
+ checksum: 63863a5c936ef82b546ca289c9d1b18fabfc24da5c4ee382830b124e2e79b68d626207febc8d4bffc720f50b2ee65691d7d12cc0308679dee2cd6bdc926b7190
languageName: node
linkType: hard
-"@babel/helper-compilation-targets@npm:^7.22.6, @babel/helper-compilation-targets@npm:^7.27.1, @babel/helper-compilation-targets@npm:^7.27.2":
+"@babel/helper-compilation-targets@npm:^7.22.6, @babel/helper-compilation-targets@npm:^7.25.2, @babel/helper-compilation-targets@npm:^7.27.1, @babel/helper-compilation-targets@npm:^7.27.2":
version: 7.27.2
resolution: "@babel/helper-compilation-targets@npm:7.27.2"
dependencies:
@@ -883,7 +906,7 @@ __metadata:
languageName: node
linkType: hard
-"@babel/helper-define-polyfill-provider@npm:^0.6.3, @babel/helper-define-polyfill-provider@npm:^0.6.4":
+"@babel/helper-define-polyfill-provider@npm:^0.6.2, @babel/helper-define-polyfill-provider@npm:^0.6.3, @babel/helper-define-polyfill-provider@npm:^0.6.4":
version: 0.6.4
resolution: "@babel/helper-define-polyfill-provider@npm:0.6.4"
dependencies:
@@ -918,16 +941,16 @@ __metadata:
languageName: node
linkType: hard
-"@babel/helper-module-transforms@npm:^7.27.1":
- version: 7.27.1
- resolution: "@babel/helper-module-transforms@npm:7.27.1"
+"@babel/helper-module-transforms@npm:^7.25.2, @babel/helper-module-transforms@npm:^7.27.1, @babel/helper-module-transforms@npm:^7.27.3":
+ version: 7.27.3
+ resolution: "@babel/helper-module-transforms@npm:7.27.3"
dependencies:
"@babel/helper-module-imports": ^7.27.1
"@babel/helper-validator-identifier": ^7.27.1
- "@babel/traverse": ^7.27.1
+ "@babel/traverse": ^7.27.3
peerDependencies:
"@babel/core": ^7.0.0
- checksum: 816dd166f0a850616d01ca198715d78fef052a834dc155dd57e4405d702f288071077be3ed58e13c86ac9e63ca560e876cc6d70cf5ef0f1f62bd9321084d4c06
+ checksum: c611d42d3cb7ba23b1a864fcf8d6cde0dc99e876ca1c9a67e4d7919a70706ded4aaa45420de2bf7f7ea171e078e59f0edcfa15a56d74b9485e151b95b93b946e
languageName: node
linkType: hard
@@ -940,7 +963,7 @@ __metadata:
languageName: node
linkType: hard
-"@babel/helper-plugin-utils@npm:^7.0.0, @babel/helper-plugin-utils@npm:^7.10.4, @babel/helper-plugin-utils@npm:^7.12.13, @babel/helper-plugin-utils@npm:^7.14.5, @babel/helper-plugin-utils@npm:^7.18.6, @babel/helper-plugin-utils@npm:^7.20.2, @babel/helper-plugin-utils@npm:^7.22.5, @babel/helper-plugin-utils@npm:^7.27.1, @babel/helper-plugin-utils@npm:^7.8.0":
+"@babel/helper-plugin-utils@npm:^7.0.0, @babel/helper-plugin-utils@npm:^7.10.4, @babel/helper-plugin-utils@npm:^7.12.13, @babel/helper-plugin-utils@npm:^7.14.5, @babel/helper-plugin-utils@npm:^7.18.6, @babel/helper-plugin-utils@npm:^7.20.2, @babel/helper-plugin-utils@npm:^7.22.5, @babel/helper-plugin-utils@npm:^7.24.8, @babel/helper-plugin-utils@npm:^7.27.1, @babel/helper-plugin-utils@npm:^7.8.0, @babel/helper-plugin-utils@npm:^7.8.3":
version: 7.27.1
resolution: "@babel/helper-plugin-utils@npm:7.27.1"
checksum: 5d715055301badab62bdb2336075a77f8dc8bd290cad2bc1b37ea3bf1b3efc40594d308082229f239deb4d6b5b80b0a73bce000e595ea74416e0339c11037047
@@ -997,7 +1020,7 @@ __metadata:
languageName: node
linkType: hard
-"@babel/helper-validator-option@npm:^7.27.1":
+"@babel/helper-validator-option@npm:^7.24.8, @babel/helper-validator-option@npm:^7.27.1":
version: 7.27.1
resolution: "@babel/helper-validator-option@npm:7.27.1"
checksum: db73e6a308092531c629ee5de7f0d04390835b21a263be2644276cb27da2384b64676cab9f22cd8d8dbd854c92b1d7d56fc8517cf0070c35d1c14a8c828b0903
@@ -1015,28 +1038,28 @@ __metadata:
languageName: node
linkType: hard
-"@babel/helpers@npm:^7.27.1":
- version: 7.27.1
- resolution: "@babel/helpers@npm:7.27.1"
+"@babel/helpers@npm:^7.25.0, @babel/helpers@npm:^7.27.3":
+ version: 7.27.3
+ resolution: "@babel/helpers@npm:7.27.3"
dependencies:
- "@babel/template": ^7.27.1
- "@babel/types": ^7.27.1
- checksum: 19ede1e996cbd295fb3a881ff70bc0f91c5133ebac256441e9ecd69dfba89456e75cf7ecf06cd276c638a4de7bd6eff21151961c78038d0b23d94b4d23415ee4
+ "@babel/template": ^7.27.2
+ "@babel/types": ^7.27.3
+ checksum: c572acf07cb4248a67eca76c9bfa6d4f120594e0c73ae6b014159509583981a519935f8997f611896272a1d38dc46dbb8e81f645ab52ad82da78a930b2dd4e8c
languageName: node
linkType: hard
-"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.13.16, @babel/parser@npm:^7.14.7, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.23.9, @babel/parser@npm:^7.25.3, @babel/parser@npm:^7.27.1, @babel/parser@npm:^7.27.2":
- version: 7.27.2
- resolution: "@babel/parser@npm:7.27.2"
+"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.13.16, @babel/parser@npm:^7.14.7, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.23.9, @babel/parser@npm:^7.24.7, @babel/parser@npm:^7.25.0, @babel/parser@npm:^7.25.3, @babel/parser@npm:^7.27.2, @babel/parser@npm:^7.27.3":
+ version: 7.27.3
+ resolution: "@babel/parser@npm:7.27.3"
dependencies:
- "@babel/types": ^7.27.1
+ "@babel/types": ^7.27.3
bin:
parser: ./bin/babel-parser.js
- checksum: 1ac70a75028f1cc10eefb10ed2d83cf700ca3e1ddb4cf556a003fc5c4ca53ae83350bbb8065020fcc70d476fcf7bf1c17191b72384f719614ae18397142289cf
+ checksum: aef2cfd154e47a639615d173d3f05a8ce8007fcc5a0ade013c953adee71a8bc19465a147e060cc67388fd748b62a3b42bf3b5cc3e83d4f8add526b3b722e2231
languageName: node
linkType: hard
-"@babel/plugin-bugfix-firefox-class-in-computed-class-key@npm:^7.27.1":
+"@babel/plugin-bugfix-firefox-class-in-computed-class-key@npm:^7.25.3, @babel/plugin-bugfix-firefox-class-in-computed-class-key@npm:^7.27.1":
version: 7.27.1
resolution: "@babel/plugin-bugfix-firefox-class-in-computed-class-key@npm:7.27.1"
dependencies:
@@ -1048,7 +1071,7 @@ __metadata:
languageName: node
linkType: hard
-"@babel/plugin-bugfix-safari-class-field-initializer-scope@npm:^7.27.1":
+"@babel/plugin-bugfix-safari-class-field-initializer-scope@npm:^7.25.0, @babel/plugin-bugfix-safari-class-field-initializer-scope@npm:^7.27.1":
version: 7.27.1
resolution: "@babel/plugin-bugfix-safari-class-field-initializer-scope@npm:7.27.1"
dependencies:
@@ -1059,7 +1082,7 @@ __metadata:
languageName: node
linkType: hard
-"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@npm:^7.27.1":
+"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@npm:^7.25.0, @babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@npm:^7.27.1":
version: 7.27.1
resolution: "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@npm:7.27.1"
dependencies:
@@ -1070,7 +1093,7 @@ __metadata:
languageName: node
linkType: hard
-"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@npm:^7.27.1":
+"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@npm:^7.24.7, @babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@npm:^7.27.1":
version: 7.27.1
resolution: "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@npm:7.27.1"
dependencies:
@@ -1083,7 +1106,7 @@ __metadata:
languageName: node
linkType: hard
-"@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@npm:^7.27.1":
+"@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@npm:^7.25.0, @babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@npm:^7.27.1":
version: 7.27.1
resolution: "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@npm:7.27.1"
dependencies:
@@ -1218,6 +1241,17 @@ __metadata:
languageName: node
linkType: hard
+"@babel/plugin-syntax-export-namespace-from@npm:^7.8.3":
+ version: 7.8.3
+ resolution: "@babel/plugin-syntax-export-namespace-from@npm:7.8.3"
+ dependencies:
+ "@babel/helper-plugin-utils": ^7.8.3
+ peerDependencies:
+ "@babel/core": ^7.0.0-0
+ checksum: 85740478be5b0de185228e7814451d74ab8ce0a26fcca7613955262a26e99e8e15e9da58f60c754b84515d4c679b590dbd3f2148f0f58025f4ae706f1c5a5d4a
+ languageName: node
+ linkType: hard
+
"@babel/plugin-syntax-flow@npm:^7.12.1, @babel/plugin-syntax-flow@npm:^7.27.1":
version: 7.27.1
resolution: "@babel/plugin-syntax-flow@npm:7.27.1"
@@ -1229,7 +1263,7 @@ __metadata:
languageName: node
linkType: hard
-"@babel/plugin-syntax-import-assertions@npm:^7.27.1":
+"@babel/plugin-syntax-import-assertions@npm:^7.24.7, @babel/plugin-syntax-import-assertions@npm:^7.27.1":
version: 7.27.1
resolution: "@babel/plugin-syntax-import-assertions@npm:7.27.1"
dependencies:
@@ -1406,7 +1440,7 @@ __metadata:
languageName: node
linkType: hard
-"@babel/plugin-transform-async-generator-functions@npm:^7.25.4, @babel/plugin-transform-async-generator-functions@npm:^7.27.1":
+"@babel/plugin-transform-async-generator-functions@npm:^7.25.0, @babel/plugin-transform-async-generator-functions@npm:^7.25.4, @babel/plugin-transform-async-generator-functions@npm:^7.27.1":
version: 7.27.1
resolution: "@babel/plugin-transform-async-generator-functions@npm:7.27.1"
dependencies:
@@ -1432,7 +1466,7 @@ __metadata:
languageName: node
linkType: hard
-"@babel/plugin-transform-block-scoped-functions@npm:^7.27.1":
+"@babel/plugin-transform-block-scoped-functions@npm:^7.24.7, @babel/plugin-transform-block-scoped-functions@npm:^7.27.1":
version: 7.27.1
resolution: "@babel/plugin-transform-block-scoped-functions@npm:7.27.1"
dependencies:
@@ -1444,17 +1478,17 @@ __metadata:
linkType: hard
"@babel/plugin-transform-block-scoping@npm:^7.25.0, @babel/plugin-transform-block-scoping@npm:^7.27.1":
- version: 7.27.1
- resolution: "@babel/plugin-transform-block-scoping@npm:7.27.1"
+ version: 7.27.3
+ resolution: "@babel/plugin-transform-block-scoping@npm:7.27.3"
dependencies:
"@babel/helper-plugin-utils": ^7.27.1
peerDependencies:
"@babel/core": ^7.0.0-0
- checksum: 490773ee111fd298d74bd0ba454c941ae23a39db5cd08bf4258997f44f7584399fc4214a7c3816ee70f0273c263fe2ea4e11bb07939e57845702ba05258a9cb0
+ checksum: 03e85d9a5578e4a22618ae9b010cdbb883b8fea100007f81e919cbd37704d6b237ce657ab9320d216c84a8212239662252d5eb60f2d45520346c8722050e1624
languageName: node
linkType: hard
-"@babel/plugin-transform-class-properties@npm:^7.25.4, @babel/plugin-transform-class-properties@npm:^7.27.1":
+"@babel/plugin-transform-class-properties@npm:^7.24.7, @babel/plugin-transform-class-properties@npm:^7.25.4, @babel/plugin-transform-class-properties@npm:^7.27.1":
version: 7.27.1
resolution: "@babel/plugin-transform-class-properties@npm:7.27.1"
dependencies:
@@ -1466,7 +1500,7 @@ __metadata:
languageName: node
linkType: hard
-"@babel/plugin-transform-class-static-block@npm:^7.27.1":
+"@babel/plugin-transform-class-static-block@npm:^7.24.7, @babel/plugin-transform-class-static-block@npm:^7.27.1":
version: 7.27.1
resolution: "@babel/plugin-transform-class-static-block@npm:7.27.1"
dependencies:
@@ -1478,7 +1512,7 @@ __metadata:
languageName: node
linkType: hard
-"@babel/plugin-transform-classes@npm:^7.25.4, @babel/plugin-transform-classes@npm:^7.27.1":
+"@babel/plugin-transform-classes@npm:^7.25.0, @babel/plugin-transform-classes@npm:^7.25.4, @babel/plugin-transform-classes@npm:^7.27.1":
version: 7.27.1
resolution: "@babel/plugin-transform-classes@npm:7.27.1"
dependencies:
@@ -1506,18 +1540,18 @@ __metadata:
languageName: node
linkType: hard
-"@babel/plugin-transform-destructuring@npm:^7.24.8, @babel/plugin-transform-destructuring@npm:^7.27.1":
- version: 7.27.1
- resolution: "@babel/plugin-transform-destructuring@npm:7.27.1"
+"@babel/plugin-transform-destructuring@npm:^7.24.8, @babel/plugin-transform-destructuring@npm:^7.27.1, @babel/plugin-transform-destructuring@npm:^7.27.3":
+ version: 7.27.3
+ resolution: "@babel/plugin-transform-destructuring@npm:7.27.3"
dependencies:
"@babel/helper-plugin-utils": ^7.27.1
peerDependencies:
"@babel/core": ^7.0.0-0
- checksum: 492013fc4befd5f3554853f983b82cfa748dd2004a525f1f16a37f841ac402a51e891cac2084b03e2b89553f0e1e685cf5bf8bf9df8fed82114c580b3c567bb6
+ checksum: 1b00a609e6292a1e48104d63dd479a688e773dcf42c715f7b342ba1725ae9335d75c8569aa0518388ed359f98f0b7155fd7bb0453fbc36445e986b17e5ccaa98
languageName: node
linkType: hard
-"@babel/plugin-transform-dotall-regex@npm:^7.27.1":
+"@babel/plugin-transform-dotall-regex@npm:^7.24.7, @babel/plugin-transform-dotall-regex@npm:^7.27.1":
version: 7.27.1
resolution: "@babel/plugin-transform-dotall-regex@npm:7.27.1"
dependencies:
@@ -1529,7 +1563,7 @@ __metadata:
languageName: node
linkType: hard
-"@babel/plugin-transform-duplicate-keys@npm:^7.27.1":
+"@babel/plugin-transform-duplicate-keys@npm:^7.24.7, @babel/plugin-transform-duplicate-keys@npm:^7.27.1":
version: 7.27.1
resolution: "@babel/plugin-transform-duplicate-keys@npm:7.27.1"
dependencies:
@@ -1540,7 +1574,7 @@ __metadata:
languageName: node
linkType: hard
-"@babel/plugin-transform-duplicate-named-capturing-groups-regex@npm:^7.27.1":
+"@babel/plugin-transform-duplicate-named-capturing-groups-regex@npm:^7.25.0, @babel/plugin-transform-duplicate-named-capturing-groups-regex@npm:^7.27.1":
version: 7.27.1
resolution: "@babel/plugin-transform-duplicate-named-capturing-groups-regex@npm:7.27.1"
dependencies:
@@ -1552,7 +1586,7 @@ __metadata:
languageName: node
linkType: hard
-"@babel/plugin-transform-dynamic-import@npm:^7.27.1":
+"@babel/plugin-transform-dynamic-import@npm:^7.24.7, @babel/plugin-transform-dynamic-import@npm:^7.27.1":
version: 7.27.1
resolution: "@babel/plugin-transform-dynamic-import@npm:7.27.1"
dependencies:
@@ -1563,7 +1597,7 @@ __metadata:
languageName: node
linkType: hard
-"@babel/plugin-transform-exponentiation-operator@npm:^7.27.1":
+"@babel/plugin-transform-exponentiation-operator@npm:^7.24.7, @babel/plugin-transform-exponentiation-operator@npm:^7.27.1":
version: 7.27.1
resolution: "@babel/plugin-transform-exponentiation-operator@npm:7.27.1"
dependencies:
@@ -1574,7 +1608,7 @@ __metadata:
languageName: node
linkType: hard
-"@babel/plugin-transform-export-namespace-from@npm:^7.27.1":
+"@babel/plugin-transform-export-namespace-from@npm:^7.24.7, @babel/plugin-transform-export-namespace-from@npm:^7.27.1":
version: 7.27.1
resolution: "@babel/plugin-transform-export-namespace-from@npm:7.27.1"
dependencies:
@@ -1622,7 +1656,7 @@ __metadata:
languageName: node
linkType: hard
-"@babel/plugin-transform-json-strings@npm:^7.27.1":
+"@babel/plugin-transform-json-strings@npm:^7.24.7, @babel/plugin-transform-json-strings@npm:^7.27.1":
version: 7.27.1
resolution: "@babel/plugin-transform-json-strings@npm:7.27.1"
dependencies:
@@ -1655,7 +1689,7 @@ __metadata:
languageName: node
linkType: hard
-"@babel/plugin-transform-member-expression-literals@npm:^7.27.1":
+"@babel/plugin-transform-member-expression-literals@npm:^7.24.7, @babel/plugin-transform-member-expression-literals@npm:^7.27.1":
version: 7.27.1
resolution: "@babel/plugin-transform-member-expression-literals@npm:7.27.1"
dependencies:
@@ -1666,7 +1700,7 @@ __metadata:
languageName: node
linkType: hard
-"@babel/plugin-transform-modules-amd@npm:^7.27.1":
+"@babel/plugin-transform-modules-amd@npm:^7.24.7, @babel/plugin-transform-modules-amd@npm:^7.27.1":
version: 7.27.1
resolution: "@babel/plugin-transform-modules-amd@npm:7.27.1"
dependencies:
@@ -1678,7 +1712,7 @@ __metadata:
languageName: node
linkType: hard
-"@babel/plugin-transform-modules-commonjs@npm:^7.13.8, @babel/plugin-transform-modules-commonjs@npm:^7.24.8, @babel/plugin-transform-modules-commonjs@npm:^7.27.1":
+"@babel/plugin-transform-modules-commonjs@npm:^7.13.8, @babel/plugin-transform-modules-commonjs@npm:^7.24.7, @babel/plugin-transform-modules-commonjs@npm:^7.24.8, @babel/plugin-transform-modules-commonjs@npm:^7.27.1":
version: 7.27.1
resolution: "@babel/plugin-transform-modules-commonjs@npm:7.27.1"
dependencies:
@@ -1690,7 +1724,7 @@ __metadata:
languageName: node
linkType: hard
-"@babel/plugin-transform-modules-systemjs@npm:^7.27.1":
+"@babel/plugin-transform-modules-systemjs@npm:^7.25.0, @babel/plugin-transform-modules-systemjs@npm:^7.27.1":
version: 7.27.1
resolution: "@babel/plugin-transform-modules-systemjs@npm:7.27.1"
dependencies:
@@ -1704,7 +1738,7 @@ __metadata:
languageName: node
linkType: hard
-"@babel/plugin-transform-modules-umd@npm:^7.27.1":
+"@babel/plugin-transform-modules-umd@npm:^7.24.7, @babel/plugin-transform-modules-umd@npm:^7.27.1":
version: 7.27.1
resolution: "@babel/plugin-transform-modules-umd@npm:7.27.1"
dependencies:
@@ -1728,7 +1762,7 @@ __metadata:
languageName: node
linkType: hard
-"@babel/plugin-transform-new-target@npm:^7.27.1":
+"@babel/plugin-transform-new-target@npm:^7.24.7, @babel/plugin-transform-new-target@npm:^7.27.1":
version: 7.27.1
resolution: "@babel/plugin-transform-new-target@npm:7.27.1"
dependencies:
@@ -1762,20 +1796,20 @@ __metadata:
linkType: hard
"@babel/plugin-transform-object-rest-spread@npm:^7.24.7, @babel/plugin-transform-object-rest-spread@npm:^7.27.2":
- version: 7.27.2
- resolution: "@babel/plugin-transform-object-rest-spread@npm:7.27.2"
+ version: 7.27.3
+ resolution: "@babel/plugin-transform-object-rest-spread@npm:7.27.3"
dependencies:
"@babel/helper-compilation-targets": ^7.27.2
"@babel/helper-plugin-utils": ^7.27.1
- "@babel/plugin-transform-destructuring": ^7.27.1
+ "@babel/plugin-transform-destructuring": ^7.27.3
"@babel/plugin-transform-parameters": ^7.27.1
peerDependencies:
"@babel/core": ^7.0.0-0
- checksum: 6d518c21cddfa436029d72409aac8f680d3ba3a10eb94477112869132226498474a61218893ac9958f8bc079109af0f684d1347d5036fee8e9b477daecf2d8f3
+ checksum: 624db8badc844d3256ce9b5d062f1716f01c15ab3ed023dc971eb8083bba55e83be8dc25971b4570d2cd8979eb2c61a3b08d332bd0ec1816ee8afbf1659472bf
languageName: node
linkType: hard
-"@babel/plugin-transform-object-super@npm:^7.27.1":
+"@babel/plugin-transform-object-super@npm:^7.24.7, @babel/plugin-transform-object-super@npm:^7.27.1":
version: 7.27.1
resolution: "@babel/plugin-transform-object-super@npm:7.27.1"
dependencies:
@@ -1798,7 +1832,7 @@ __metadata:
languageName: node
linkType: hard
-"@babel/plugin-transform-optional-chaining@npm:^7.24.8, @babel/plugin-transform-optional-chaining@npm:^7.27.1":
+"@babel/plugin-transform-optional-chaining@npm:^7.24.7, @babel/plugin-transform-optional-chaining@npm:^7.24.8, @babel/plugin-transform-optional-chaining@npm:^7.27.1":
version: 7.27.1
resolution: "@babel/plugin-transform-optional-chaining@npm:7.27.1"
dependencies:
@@ -1846,7 +1880,7 @@ __metadata:
languageName: node
linkType: hard
-"@babel/plugin-transform-property-literals@npm:^7.27.1":
+"@babel/plugin-transform-property-literals@npm:^7.24.7, @babel/plugin-transform-property-literals@npm:^7.27.1":
version: 7.27.1
resolution: "@babel/plugin-transform-property-literals@npm:7.27.1"
dependencies:
@@ -1951,7 +1985,7 @@ __metadata:
languageName: node
linkType: hard
-"@babel/plugin-transform-reserved-words@npm:^7.27.1":
+"@babel/plugin-transform-reserved-words@npm:^7.24.7, @babel/plugin-transform-reserved-words@npm:^7.27.1":
version: 7.27.1
resolution: "@babel/plugin-transform-reserved-words@npm:7.27.1"
dependencies:
@@ -1963,8 +1997,8 @@ __metadata:
linkType: hard
"@babel/plugin-transform-runtime@npm:^7.24.7, @babel/plugin-transform-runtime@npm:^7.25.0":
- version: 7.27.1
- resolution: "@babel/plugin-transform-runtime@npm:7.27.1"
+ version: 7.27.3
+ resolution: "@babel/plugin-transform-runtime@npm:7.27.3"
dependencies:
"@babel/helper-module-imports": ^7.27.1
"@babel/helper-plugin-utils": ^7.27.1
@@ -1974,7 +2008,7 @@ __metadata:
semver: ^6.3.1
peerDependencies:
"@babel/core": ^7.0.0-0
- checksum: 9328060b54e430732883cac672cfd4c952c2bf2d9fb5268c675ae01f74ccb224ecdf105f5ad52b6277ad8b34b6df1e7cec6d1c02a0d17be54414265414e8ac88
+ checksum: 61b5a64e8206193b6ee30281e5e8949d9772504fb680b9fea628f4df7a80d08b1211cc1c3c2cb5d878d141af6fb1a4bb8ee8859ca7199fe8ea3999013eb17290
languageName: node
linkType: hard
@@ -2012,7 +2046,7 @@ __metadata:
languageName: node
linkType: hard
-"@babel/plugin-transform-template-literals@npm:^7.27.1":
+"@babel/plugin-transform-template-literals@npm:^7.24.7, @babel/plugin-transform-template-literals@npm:^7.27.1":
version: 7.27.1
resolution: "@babel/plugin-transform-template-literals@npm:7.27.1"
dependencies:
@@ -2023,7 +2057,7 @@ __metadata:
languageName: node
linkType: hard
-"@babel/plugin-transform-typeof-symbol@npm:^7.27.1":
+"@babel/plugin-transform-typeof-symbol@npm:^7.24.8, @babel/plugin-transform-typeof-symbol@npm:^7.27.1":
version: 7.27.1
resolution: "@babel/plugin-transform-typeof-symbol@npm:7.27.1"
dependencies:
@@ -2049,7 +2083,7 @@ __metadata:
languageName: node
linkType: hard
-"@babel/plugin-transform-unicode-escapes@npm:^7.27.1":
+"@babel/plugin-transform-unicode-escapes@npm:^7.24.7, @babel/plugin-transform-unicode-escapes@npm:^7.27.1":
version: 7.27.1
resolution: "@babel/plugin-transform-unicode-escapes@npm:7.27.1"
dependencies:
@@ -2060,7 +2094,7 @@ __metadata:
languageName: node
linkType: hard
-"@babel/plugin-transform-unicode-property-regex@npm:^7.27.1":
+"@babel/plugin-transform-unicode-property-regex@npm:^7.24.7, @babel/plugin-transform-unicode-property-regex@npm:^7.27.1":
version: 7.27.1
resolution: "@babel/plugin-transform-unicode-property-regex@npm:7.27.1"
dependencies:
@@ -2084,7 +2118,7 @@ __metadata:
languageName: node
linkType: hard
-"@babel/plugin-transform-unicode-sets-regex@npm:^7.27.1":
+"@babel/plugin-transform-unicode-sets-regex@npm:^7.24.7, @babel/plugin-transform-unicode-sets-regex@npm:^7.27.1":
version: 7.27.1
resolution: "@babel/plugin-transform-unicode-sets-regex@npm:7.27.1"
dependencies:
@@ -2096,6 +2130,99 @@ __metadata:
languageName: node
linkType: hard
+"@babel/preset-env@npm:7.25.3":
+ version: 7.25.3
+ resolution: "@babel/preset-env@npm:7.25.3"
+ dependencies:
+ "@babel/compat-data": ^7.25.2
+ "@babel/helper-compilation-targets": ^7.25.2
+ "@babel/helper-plugin-utils": ^7.24.8
+ "@babel/helper-validator-option": ^7.24.8
+ "@babel/plugin-bugfix-firefox-class-in-computed-class-key": ^7.25.3
+ "@babel/plugin-bugfix-safari-class-field-initializer-scope": ^7.25.0
+ "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": ^7.25.0
+ "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": ^7.24.7
+ "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": ^7.25.0
+ "@babel/plugin-proposal-private-property-in-object": 7.21.0-placeholder-for-preset-env.2
+ "@babel/plugin-syntax-async-generators": ^7.8.4
+ "@babel/plugin-syntax-class-properties": ^7.12.13
+ "@babel/plugin-syntax-class-static-block": ^7.14.5
+ "@babel/plugin-syntax-dynamic-import": ^7.8.3
+ "@babel/plugin-syntax-export-namespace-from": ^7.8.3
+ "@babel/plugin-syntax-import-assertions": ^7.24.7
+ "@babel/plugin-syntax-import-attributes": ^7.24.7
+ "@babel/plugin-syntax-import-meta": ^7.10.4
+ "@babel/plugin-syntax-json-strings": ^7.8.3
+ "@babel/plugin-syntax-logical-assignment-operators": ^7.10.4
+ "@babel/plugin-syntax-nullish-coalescing-operator": ^7.8.3
+ "@babel/plugin-syntax-numeric-separator": ^7.10.4
+ "@babel/plugin-syntax-object-rest-spread": ^7.8.3
+ "@babel/plugin-syntax-optional-catch-binding": ^7.8.3
+ "@babel/plugin-syntax-optional-chaining": ^7.8.3
+ "@babel/plugin-syntax-private-property-in-object": ^7.14.5
+ "@babel/plugin-syntax-top-level-await": ^7.14.5
+ "@babel/plugin-syntax-unicode-sets-regex": ^7.18.6
+ "@babel/plugin-transform-arrow-functions": ^7.24.7
+ "@babel/plugin-transform-async-generator-functions": ^7.25.0
+ "@babel/plugin-transform-async-to-generator": ^7.24.7
+ "@babel/plugin-transform-block-scoped-functions": ^7.24.7
+ "@babel/plugin-transform-block-scoping": ^7.25.0
+ "@babel/plugin-transform-class-properties": ^7.24.7
+ "@babel/plugin-transform-class-static-block": ^7.24.7
+ "@babel/plugin-transform-classes": ^7.25.0
+ "@babel/plugin-transform-computed-properties": ^7.24.7
+ "@babel/plugin-transform-destructuring": ^7.24.8
+ "@babel/plugin-transform-dotall-regex": ^7.24.7
+ "@babel/plugin-transform-duplicate-keys": ^7.24.7
+ "@babel/plugin-transform-duplicate-named-capturing-groups-regex": ^7.25.0
+ "@babel/plugin-transform-dynamic-import": ^7.24.7
+ "@babel/plugin-transform-exponentiation-operator": ^7.24.7
+ "@babel/plugin-transform-export-namespace-from": ^7.24.7
+ "@babel/plugin-transform-for-of": ^7.24.7
+ "@babel/plugin-transform-function-name": ^7.25.1
+ "@babel/plugin-transform-json-strings": ^7.24.7
+ "@babel/plugin-transform-literals": ^7.25.2
+ "@babel/plugin-transform-logical-assignment-operators": ^7.24.7
+ "@babel/plugin-transform-member-expression-literals": ^7.24.7
+ "@babel/plugin-transform-modules-amd": ^7.24.7
+ "@babel/plugin-transform-modules-commonjs": ^7.24.8
+ "@babel/plugin-transform-modules-systemjs": ^7.25.0
+ "@babel/plugin-transform-modules-umd": ^7.24.7
+ "@babel/plugin-transform-named-capturing-groups-regex": ^7.24.7
+ "@babel/plugin-transform-new-target": ^7.24.7
+ "@babel/plugin-transform-nullish-coalescing-operator": ^7.24.7
+ "@babel/plugin-transform-numeric-separator": ^7.24.7
+ "@babel/plugin-transform-object-rest-spread": ^7.24.7
+ "@babel/plugin-transform-object-super": ^7.24.7
+ "@babel/plugin-transform-optional-catch-binding": ^7.24.7
+ "@babel/plugin-transform-optional-chaining": ^7.24.8
+ "@babel/plugin-transform-parameters": ^7.24.7
+ "@babel/plugin-transform-private-methods": ^7.24.7
+ "@babel/plugin-transform-private-property-in-object": ^7.24.7
+ "@babel/plugin-transform-property-literals": ^7.24.7
+ "@babel/plugin-transform-regenerator": ^7.24.7
+ "@babel/plugin-transform-reserved-words": ^7.24.7
+ "@babel/plugin-transform-shorthand-properties": ^7.24.7
+ "@babel/plugin-transform-spread": ^7.24.7
+ "@babel/plugin-transform-sticky-regex": ^7.24.7
+ "@babel/plugin-transform-template-literals": ^7.24.7
+ "@babel/plugin-transform-typeof-symbol": ^7.24.8
+ "@babel/plugin-transform-unicode-escapes": ^7.24.7
+ "@babel/plugin-transform-unicode-property-regex": ^7.24.7
+ "@babel/plugin-transform-unicode-regex": ^7.24.7
+ "@babel/plugin-transform-unicode-sets-regex": ^7.24.7
+ "@babel/preset-modules": 0.1.6-no-external-plugins
+ babel-plugin-polyfill-corejs2: ^0.4.10
+ babel-plugin-polyfill-corejs3: ^0.10.4
+ babel-plugin-polyfill-regenerator: ^0.6.1
+ core-js-compat: ^3.37.1
+ semver: ^6.3.1
+ peerDependencies:
+ "@babel/core": ^7.0.0-0
+ checksum: 9735a44e557f7ef4ade87f59c0d69e4af3383432a23ae7a3cba33e3741bd7812f2d6403a0d94ebfda5f4bd9fdc6250a52c4a156407029f590fde511a792e64e2
+ languageName: node
+ linkType: hard
+
"@babel/preset-env@npm:^7.18.2, @babel/preset-env@npm:^7.25.3":
version: 7.27.2
resolution: "@babel/preset-env@npm:7.27.2"
@@ -2175,7 +2302,7 @@ __metadata:
languageName: node
linkType: hard
-"@babel/preset-flow@npm:^7.13.13, @babel/preset-flow@npm:^7.17.12":
+"@babel/preset-flow@npm:^7.13.13, @babel/preset-flow@npm:^7.17.12, @babel/preset-flow@npm:^7.24.7":
version: 7.27.1
resolution: "@babel/preset-flow@npm:7.27.1"
dependencies:
@@ -2217,7 +2344,7 @@ __metadata:
languageName: node
linkType: hard
-"@babel/preset-typescript@npm:^7.13.0, @babel/preset-typescript@npm:^7.17.12":
+"@babel/preset-typescript@npm:^7.13.0, @babel/preset-typescript@npm:^7.17.12, @babel/preset-typescript@npm:^7.24.7":
version: 7.27.1
resolution: "@babel/preset-typescript@npm:7.27.1"
dependencies:
@@ -2232,7 +2359,7 @@ __metadata:
languageName: node
linkType: hard
-"@babel/register@npm:^7.13.16":
+"@babel/register@npm:^7.13.16, @babel/register@npm:^7.24.6":
version: 7.27.1
resolution: "@babel/register@npm:7.27.1"
dependencies:
@@ -2247,14 +2374,23 @@ __metadata:
languageName: node
linkType: hard
+"@babel/runtime@npm:7.25.0":
+ version: 7.25.0
+ resolution: "@babel/runtime@npm:7.25.0"
+ dependencies:
+ regenerator-runtime: ^0.14.0
+ checksum: 4a2a374a58eb01aaa65c5762606e90b3a1f448e0c637d42278b6cc0b42a9f5399b5f381ba9f237ee087da2860d14dd2d1de7bddcbe18be6a3cafba97e44bed64
+ languageName: node
+ linkType: hard
+
"@babel/runtime@npm:^7.25.0":
- version: 7.27.1
- resolution: "@babel/runtime@npm:7.27.1"
- checksum: 11339838a54783e5b14e04d94d7a4d032e9965c5823f3f687e41556fa40344ae7aeb57c535720b7a74ab3e8217def7834a6f1a665ee55bbb3befede141419913
+ version: 7.27.3
+ resolution: "@babel/runtime@npm:7.27.3"
+ checksum: 4eadd745756c9de7a9bba1b2b138b8b99f34aa544cf69c7e6fd1d2a120ba6d31580e93f00657145add7a8945db8ffea5ef7fdbe18f0f0f8e82f2929cb56a0d61
languageName: node
linkType: hard
-"@babel/template@npm:^7.25.0, @babel/template@npm:^7.27.1, @babel/template@npm:^7.3.3":
+"@babel/template@npm:^7.25.0, @babel/template@npm:^7.27.1, @babel/template@npm:^7.27.2, @babel/template@npm:^7.3.3":
version: 7.27.2
resolution: "@babel/template@npm:7.27.2"
dependencies:
@@ -2265,28 +2401,28 @@ __metadata:
languageName: node
linkType: hard
-"@babel/traverse--for-generate-function-map@npm:@babel/traverse@^7.25.3, @babel/traverse@npm:^7.25.3, @babel/traverse@npm:^7.27.1, @babel/traverse@npm:^7.7.4":
- version: 7.27.1
- resolution: "@babel/traverse@npm:7.27.1"
+"@babel/traverse--for-generate-function-map@npm:@babel/traverse@^7.25.3, @babel/traverse@npm:^7.25.2, @babel/traverse@npm:^7.25.3, @babel/traverse@npm:^7.27.1, @babel/traverse@npm:^7.27.3, @babel/traverse@npm:^7.7.4":
+ version: 7.27.3
+ resolution: "@babel/traverse@npm:7.27.3"
dependencies:
"@babel/code-frame": ^7.27.1
- "@babel/generator": ^7.27.1
- "@babel/parser": ^7.27.1
- "@babel/template": ^7.27.1
- "@babel/types": ^7.27.1
+ "@babel/generator": ^7.27.3
+ "@babel/parser": ^7.27.3
+ "@babel/template": ^7.27.2
+ "@babel/types": ^7.27.3
debug: ^4.3.1
globals: ^11.1.0
- checksum: 7ea3ec36a65e734f2921f5dba6f417f5dd0c90eb44a60f6addbacbbedb44e8c82eba415a74feb7d6df58e351519b81b11b6ca3c0c7c41a3f73ebeaf6895a826c
+ checksum: 914402382921b796b740f7c90d56ba130ffd5eeda8d18dc82f1243a1a510ff21a26d5b713df08c8e8aad2ffc969ce4624cee309406d69bcee8efa350483688c9
languageName: node
linkType: hard
-"@babel/types@npm:^7.0.0, @babel/types@npm:^7.20.7, @babel/types@npm:^7.25.2, @babel/types@npm:^7.27.1, @babel/types@npm:^7.3.3, @babel/types@npm:^7.4.4":
- version: 7.27.1
- resolution: "@babel/types@npm:7.27.1"
+"@babel/types@npm:^7.0.0, @babel/types@npm:^7.20.7, @babel/types@npm:^7.25.2, @babel/types@npm:^7.27.1, @babel/types@npm:^7.27.3, @babel/types@npm:^7.3.3, @babel/types@npm:^7.4.4":
+ version: 7.27.3
+ resolution: "@babel/types@npm:7.27.3"
dependencies:
"@babel/helper-string-parser": ^7.27.1
"@babel/helper-validator-identifier": ^7.27.1
- checksum: 357c13f37aaa2f2e2cfcdb63f986d5f7abc9f38df20182b620ace34387d2460620415770fe5856eb54d70c9f0ba2f71230d29465e789188635a948476b830ae4
+ checksum: f0d43c0231f3ebc118480e149292dcd92ea128e2650285ced99ff2e5610db2171305f59aa07406ba0cb36af8e4331a53a69576d6b0c3f3176144dd3ad514b9ae
languageName: node
linkType: hard
@@ -2605,6 +2741,23 @@ __metadata:
languageName: node
linkType: hard
+"@eslint/eslintrc@npm:^1.3.0":
+ version: 1.4.1
+ resolution: "@eslint/eslintrc@npm:1.4.1"
+ dependencies:
+ ajv: ^6.12.4
+ debug: ^4.3.2
+ espree: ^9.4.0
+ globals: ^13.19.0
+ ignore: ^5.2.0
+ import-fresh: ^3.2.1
+ js-yaml: ^4.1.0
+ minimatch: ^3.1.2
+ strip-json-comments: ^3.1.1
+ checksum: cd3e5a8683db604739938b1c1c8b77927dc04fce3e28e0c88e7f2cd4900b89466baf83dfbad76b2b9e4d2746abdd00dd3f9da544d3e311633d8693f327d04cd7
+ languageName: node
+ linkType: hard
+
"@eslint/eslintrc@npm:^2.1.4":
version: 2.1.4
resolution: "@eslint/eslintrc@npm:2.1.4"
@@ -2763,6 +2916,17 @@ __metadata:
languageName: node
linkType: hard
+"@humanwhocodes/config-array@npm:^0.9.2":
+ version: 0.9.5
+ resolution: "@humanwhocodes/config-array@npm:0.9.5"
+ dependencies:
+ "@humanwhocodes/object-schema": ^1.2.1
+ debug: ^4.1.1
+ minimatch: ^3.0.4
+ checksum: 8ba6281bc0590f6c6eadeefc14244b5a3e3f5903445aadd1a32099ed80e753037674026ce1b3c945ab93561bea5eb29e3c5bff67060e230c295595ba517a3492
+ languageName: node
+ linkType: hard
+
"@humanwhocodes/module-importer@npm:^1.0.1":
version: 1.0.1
resolution: "@humanwhocodes/module-importer@npm:1.0.1"
@@ -2770,6 +2934,13 @@ __metadata:
languageName: node
linkType: hard
+"@humanwhocodes/object-schema@npm:^1.2.1":
+ version: 1.2.1
+ resolution: "@humanwhocodes/object-schema@npm:1.2.1"
+ checksum: a824a1ec31591231e4bad5787641f59e9633827d0a2eaae131a288d33c9ef0290bd16fda8da6f7c0fcb014147865d12118df10db57f27f41e20da92369fcb3f1
+ languageName: node
+ linkType: hard
+
"@humanwhocodes/object-schema@npm:^2.0.3":
version: 2.0.3
resolution: "@humanwhocodes/object-schema@npm:2.0.3"
@@ -2855,7 +3026,7 @@ __metadata:
languageName: node
linkType: hard
-"@jest/core@npm:^29.7.0":
+"@jest/core@npm:^29.6.3, @jest/core@npm:^29.7.0":
version: 29.7.0
resolution: "@jest/core@npm:29.7.0"
dependencies:
@@ -4105,6 +4276,13 @@ __metadata:
languageName: node
linkType: hard
+"@react-native/assets-registry@npm:0.78.2":
+ version: 0.78.2
+ resolution: "@react-native/assets-registry@npm:0.78.2"
+ checksum: 097b367ecd22dc03bf2724ce9c52ab5b2848c76bca42d3c5f0a7345124554ff315a2f83b5f8f1ad8d3ee53009289cf7ca0961eab82f0f07b849424406247027c
+ languageName: node
+ linkType: hard
+
"@react-native/babel-plugin-codegen@npm:0.76.9":
version: 0.76.9
resolution: "@react-native/babel-plugin-codegen@npm:0.76.9"
@@ -4114,6 +4292,16 @@ __metadata:
languageName: node
linkType: hard
+"@react-native/babel-plugin-codegen@npm:0.78.2":
+ version: 0.78.2
+ resolution: "@react-native/babel-plugin-codegen@npm:0.78.2"
+ dependencies:
+ "@babel/traverse": ^7.25.3
+ "@react-native/codegen": 0.78.2
+ checksum: d00b246793b8019b3e831a28a9c3a3529c221284351137847080d58bf4aa7fb202eef5b8c2085b0516ad5579dd7bfe904752e943f2126f6c1fb7f0590c00f7ce
+ languageName: node
+ linkType: hard
+
"@react-native/babel-preset@npm:0.76.9":
version: 0.76.9
resolution: "@react-native/babel-preset@npm:0.76.9"
@@ -4169,6 +4357,61 @@ __metadata:
languageName: node
linkType: hard
+"@react-native/babel-preset@npm:0.78.2":
+ version: 0.78.2
+ resolution: "@react-native/babel-preset@npm:0.78.2"
+ dependencies:
+ "@babel/core": ^7.25.2
+ "@babel/plugin-proposal-export-default-from": ^7.24.7
+ "@babel/plugin-syntax-dynamic-import": ^7.8.3
+ "@babel/plugin-syntax-export-default-from": ^7.24.7
+ "@babel/plugin-syntax-nullish-coalescing-operator": ^7.8.3
+ "@babel/plugin-syntax-optional-chaining": ^7.8.3
+ "@babel/plugin-transform-arrow-functions": ^7.24.7
+ "@babel/plugin-transform-async-generator-functions": ^7.25.4
+ "@babel/plugin-transform-async-to-generator": ^7.24.7
+ "@babel/plugin-transform-block-scoping": ^7.25.0
+ "@babel/plugin-transform-class-properties": ^7.25.4
+ "@babel/plugin-transform-classes": ^7.25.4
+ "@babel/plugin-transform-computed-properties": ^7.24.7
+ "@babel/plugin-transform-destructuring": ^7.24.8
+ "@babel/plugin-transform-flow-strip-types": ^7.25.2
+ "@babel/plugin-transform-for-of": ^7.24.7
+ "@babel/plugin-transform-function-name": ^7.25.1
+ "@babel/plugin-transform-literals": ^7.25.2
+ "@babel/plugin-transform-logical-assignment-operators": ^7.24.7
+ "@babel/plugin-transform-modules-commonjs": ^7.24.8
+ "@babel/plugin-transform-named-capturing-groups-regex": ^7.24.7
+ "@babel/plugin-transform-nullish-coalescing-operator": ^7.24.7
+ "@babel/plugin-transform-numeric-separator": ^7.24.7
+ "@babel/plugin-transform-object-rest-spread": ^7.24.7
+ "@babel/plugin-transform-optional-catch-binding": ^7.24.7
+ "@babel/plugin-transform-optional-chaining": ^7.24.8
+ "@babel/plugin-transform-parameters": ^7.24.7
+ "@babel/plugin-transform-private-methods": ^7.24.7
+ "@babel/plugin-transform-private-property-in-object": ^7.24.7
+ "@babel/plugin-transform-react-display-name": ^7.24.7
+ "@babel/plugin-transform-react-jsx": ^7.25.2
+ "@babel/plugin-transform-react-jsx-self": ^7.24.7
+ "@babel/plugin-transform-react-jsx-source": ^7.24.7
+ "@babel/plugin-transform-regenerator": ^7.24.7
+ "@babel/plugin-transform-runtime": ^7.24.7
+ "@babel/plugin-transform-shorthand-properties": ^7.24.7
+ "@babel/plugin-transform-spread": ^7.24.7
+ "@babel/plugin-transform-sticky-regex": ^7.24.7
+ "@babel/plugin-transform-typescript": ^7.25.2
+ "@babel/plugin-transform-unicode-regex": ^7.24.7
+ "@babel/template": ^7.25.0
+ "@react-native/babel-plugin-codegen": 0.78.2
+ babel-plugin-syntax-hermes-parser: 0.25.1
+ babel-plugin-transform-flow-enums: ^0.0.2
+ react-refresh: ^0.14.0
+ peerDependencies:
+ "@babel/core": "*"
+ checksum: 5ac8b00124a960de84305436be2fd285328508e63796dd4e584adb661b3665f7d3a1f71f48ee0a545eba938a88351a7bd557ab96a56fdd1c9d2f09c4d0339583
+ languageName: node
+ linkType: hard
+
"@react-native/codegen@npm:0.76.9":
version: 0.76.9
resolution: "@react-native/codegen@npm:0.76.9"
@@ -4187,6 +4430,23 @@ __metadata:
languageName: node
linkType: hard
+"@react-native/codegen@npm:0.78.2":
+ version: 0.78.2
+ resolution: "@react-native/codegen@npm:0.78.2"
+ dependencies:
+ "@babel/parser": ^7.25.3
+ glob: ^7.1.1
+ hermes-parser: 0.25.1
+ invariant: ^2.2.4
+ jscodeshift: ^17.0.0
+ nullthrows: ^1.1.1
+ yargs: ^17.6.2
+ peerDependencies:
+ "@babel/preset-env": ^7.1.6
+ checksum: e0e6e53d458d177fb9a767e5c8c3d28965575ab799beaf78111a43424270251e6a4a9dd420297eea90bf838b3f5cbf23a6e4dbebb5670b1fa501d012fcadee79
+ languageName: node
+ linkType: hard
+
"@react-native/community-cli-plugin@npm:0.76.9":
version: 0.76.9
resolution: "@react-native/community-cli-plugin@npm:0.76.9"
@@ -4211,6 +4471,29 @@ __metadata:
languageName: node
linkType: hard
+"@react-native/community-cli-plugin@npm:0.78.2":
+ version: 0.78.2
+ resolution: "@react-native/community-cli-plugin@npm:0.78.2"
+ dependencies:
+ "@react-native/dev-middleware": 0.78.2
+ "@react-native/metro-babel-transformer": 0.78.2
+ chalk: ^4.0.0
+ debug: ^2.2.0
+ invariant: ^2.2.4
+ metro: ^0.81.3
+ metro-config: ^0.81.3
+ metro-core: ^0.81.3
+ readline: ^1.3.0
+ semver: ^7.1.3
+ peerDependencies:
+ "@react-native-community/cli": "*"
+ peerDependenciesMeta:
+ "@react-native-community/cli":
+ optional: true
+ checksum: 306db9ae03fc629b8cacde9f93cfb573e4c8bdcb94b0fa28cafb5ec65f839894bd7a23b44d64f45eea602d83cae93bebfa0e9650c4504cbc54aca190435102d5
+ languageName: node
+ linkType: hard
+
"@react-native/debugger-frontend@npm:0.76.9":
version: 0.76.9
resolution: "@react-native/debugger-frontend@npm:0.76.9"
@@ -4218,6 +4501,13 @@ __metadata:
languageName: node
linkType: hard
+"@react-native/debugger-frontend@npm:0.78.2":
+ version: 0.78.2
+ resolution: "@react-native/debugger-frontend@npm:0.78.2"
+ checksum: 7f8a905589c03af301f4e262d4c8f5f78d3f47a2655d7c31ea92431afd980abf04197a078be6e57c87584edc94c9cd1a918df91a637ec9f7dd5b122577013d24
+ languageName: node
+ linkType: hard
+
"@react-native/dev-middleware@npm:0.76.9":
version: 0.76.9
resolution: "@react-native/dev-middleware@npm:0.76.9"
@@ -4238,6 +4528,26 @@ __metadata:
languageName: node
linkType: hard
+"@react-native/dev-middleware@npm:0.78.2":
+ version: 0.78.2
+ resolution: "@react-native/dev-middleware@npm:0.78.2"
+ dependencies:
+ "@isaacs/ttlcache": ^1.4.1
+ "@react-native/debugger-frontend": 0.78.2
+ chrome-launcher: ^0.15.2
+ chromium-edge-launcher: ^0.2.0
+ connect: ^3.6.5
+ debug: ^2.2.0
+ invariant: ^2.2.4
+ nullthrows: ^1.1.1
+ open: ^7.0.3
+ selfsigned: ^2.4.1
+ serve-static: ^1.16.2
+ ws: ^6.2.3
+ checksum: 92836695737a4ab6d0fe52b77dfdf78778e5ceb10a8f575f4aae582850bc1704fcad78312c3c4b1e2384bf9fbdb86083ca23fd28d40d914c9a6b8419492fe8f8
+ languageName: node
+ linkType: hard
+
"@react-native/eslint-config@npm:0.76.9":
version: 0.76.9
resolution: "@react-native/eslint-config@npm:0.76.9"
@@ -4261,6 +4571,29 @@ __metadata:
languageName: node
linkType: hard
+"@react-native/eslint-config@npm:0.78.2":
+ version: 0.78.2
+ resolution: "@react-native/eslint-config@npm:0.78.2"
+ dependencies:
+ "@babel/core": ^7.25.2
+ "@babel/eslint-parser": ^7.25.1
+ "@react-native/eslint-plugin": 0.78.2
+ "@typescript-eslint/eslint-plugin": ^7.1.1
+ "@typescript-eslint/parser": ^7.1.1
+ eslint-config-prettier: ^8.5.0
+ eslint-plugin-eslint-comments: ^3.2.0
+ eslint-plugin-ft-flow: ^2.0.1
+ eslint-plugin-jest: ^27.9.0
+ eslint-plugin-react: ^7.30.1
+ eslint-plugin-react-hooks: ^4.6.0
+ eslint-plugin-react-native: ^4.0.0
+ peerDependencies:
+ eslint: ">=8"
+ prettier: ">=2"
+ checksum: 4cbdf40717a3f51432f685364ad81a2fd8bf7746d9dcb1e285900ddafdea777b058c931daf2a23916f909498ae756f0f1baab4636596a90653cd9a0e59ac9b84
+ languageName: node
+ linkType: hard
+
"@react-native/eslint-plugin@npm:0.76.9":
version: 0.76.9
resolution: "@react-native/eslint-plugin@npm:0.76.9"
@@ -4268,6 +4601,13 @@ __metadata:
languageName: node
linkType: hard
+"@react-native/eslint-plugin@npm:0.78.2":
+ version: 0.78.2
+ resolution: "@react-native/eslint-plugin@npm:0.78.2"
+ checksum: d79285f702e25e467525cb55ae824c50c7333138cce1295b4a1c046f11c68e7bd43ffa0c78fb0e5b1a59be92a5cf44e59c2bfc16e6c2e5b2550ea251f3cb65c6
+ languageName: node
+ linkType: hard
+
"@react-native/gradle-plugin@npm:0.76.9":
version: 0.76.9
resolution: "@react-native/gradle-plugin@npm:0.76.9"
@@ -4275,6 +4615,13 @@ __metadata:
languageName: node
linkType: hard
+"@react-native/gradle-plugin@npm:0.78.2":
+ version: 0.78.2
+ resolution: "@react-native/gradle-plugin@npm:0.78.2"
+ checksum: 537b8e739ff174937b8a505cc89a1566d2bbf93eca96ca8754cb495152eb36d8aca0e8ca0535411c8510cac2289aeb7e18c06d5c6ea71ce9ad6d24b43a452776
+ languageName: node
+ linkType: hard
+
"@react-native/js-polyfills@npm:0.76.9":
version: 0.76.9
resolution: "@react-native/js-polyfills@npm:0.76.9"
@@ -4282,6 +4629,13 @@ __metadata:
languageName: node
linkType: hard
+"@react-native/js-polyfills@npm:0.78.2":
+ version: 0.78.2
+ resolution: "@react-native/js-polyfills@npm:0.78.2"
+ checksum: 2ee7bf50b0eee67456b2b340592723d19c0b4b0d2c29a8dd3f65a796870e581ccd8185e03ec6e8f674541ebf471890afd432784944b8d1673d2ac02484754a7f
+ languageName: node
+ linkType: hard
+
"@react-native/metro-babel-transformer@npm:0.76.9":
version: 0.76.9
resolution: "@react-native/metro-babel-transformer@npm:0.76.9"
@@ -4296,6 +4650,20 @@ __metadata:
languageName: node
linkType: hard
+"@react-native/metro-babel-transformer@npm:0.78.2":
+ version: 0.78.2
+ resolution: "@react-native/metro-babel-transformer@npm:0.78.2"
+ dependencies:
+ "@babel/core": ^7.25.2
+ "@react-native/babel-preset": 0.78.2
+ hermes-parser: 0.25.1
+ nullthrows: ^1.1.1
+ peerDependencies:
+ "@babel/core": "*"
+ checksum: d15c994dd4747c6f01def8081a2861eff696ea1c6272fb8c701fd8cc7beec3e2a3661132761810eb4676d163952f23187fe9bf94611096bef79dd59103e61b90
+ languageName: node
+ linkType: hard
+
"@react-native/metro-config@npm:0.76.9":
version: 0.76.9
resolution: "@react-native/metro-config@npm:0.76.9"
@@ -4308,6 +4676,18 @@ __metadata:
languageName: node
linkType: hard
+"@react-native/metro-config@npm:0.78.2":
+ version: 0.78.2
+ resolution: "@react-native/metro-config@npm:0.78.2"
+ dependencies:
+ "@react-native/js-polyfills": 0.78.2
+ "@react-native/metro-babel-transformer": 0.78.2
+ metro-config: ^0.81.3
+ metro-runtime: ^0.81.3
+ checksum: a62603160f4bcbb8d7a0f6b070538837e6c2542f9a34f38a01cf5fe06012ebf2da55a62006481b756c446640a97685867e8c7d89db339562a4bff7ad6b114922
+ languageName: node
+ linkType: hard
+
"@react-native/normalize-colors@npm:0.76.9":
version: 0.76.9
resolution: "@react-native/normalize-colors@npm:0.76.9"
@@ -4315,6 +4695,13 @@ __metadata:
languageName: node
linkType: hard
+"@react-native/normalize-colors@npm:0.78.2":
+ version: 0.78.2
+ resolution: "@react-native/normalize-colors@npm:0.78.2"
+ checksum: b7e9e10f13ac5b1c9de942a8db56076f51022d07f9b9913e4976172e2e0d01c7b4cc69a9e0d83ac12830a6c9d6882f610c13e252ade1bb4fa7f1b2ddd7167dd6
+ languageName: node
+ linkType: hard
+
"@react-native/typescript-config@npm:0.76.9":
version: 0.76.9
resolution: "@react-native/typescript-config@npm:0.76.9"
@@ -4322,6 +4709,13 @@ __metadata:
languageName: node
linkType: hard
+"@react-native/typescript-config@npm:0.78.2":
+ version: 0.78.2
+ resolution: "@react-native/typescript-config@npm:0.78.2"
+ checksum: 0cec653b5ece8ec4f91eca16a19770401b3bf421c29510f2990fbad489afd93372183fa17a4c6e84771325560b0098247866ce14e2b57060cc91ab26a1189c5d
+ languageName: node
+ linkType: hard
+
"@react-native/virtualized-lists@npm:0.76.9":
version: 0.76.9
resolution: "@react-native/virtualized-lists@npm:0.76.9"
@@ -4339,6 +4733,23 @@ __metadata:
languageName: node
linkType: hard
+"@react-native/virtualized-lists@npm:0.78.2":
+ version: 0.78.2
+ resolution: "@react-native/virtualized-lists@npm:0.78.2"
+ dependencies:
+ invariant: ^2.2.4
+ nullthrows: ^1.1.1
+ peerDependencies:
+ "@types/react": ^19.0.0
+ react: "*"
+ react-native: "*"
+ peerDependenciesMeta:
+ "@types/react":
+ optional: true
+ checksum: 87759ad5c822d3cb9ad209bbbb4309b151d76adfeebf2cbf61ece5cfe3cb335f690620fcbd427a2b0e9f7cf68e98dbe1925db4dd3a41b37c58136e75e452d7ff
+ languageName: node
+ linkType: hard
+
"@react-navigation/bottom-tabs@npm:^6.3.1":
version: 6.6.1
resolution: "@react-navigation/bottom-tabs@npm:6.6.1"
@@ -4356,6 +4767,22 @@ __metadata:
languageName: node
linkType: hard
+"@react-navigation/bottom-tabs@npm:^7.3.12":
+ version: 7.3.13
+ resolution: "@react-navigation/bottom-tabs@npm:7.3.13"
+ dependencies:
+ "@react-navigation/elements": ^2.4.2
+ color: ^4.2.3
+ peerDependencies:
+ "@react-navigation/native": ^7.1.9
+ react: ">= 18.2.0"
+ react-native: "*"
+ react-native-safe-area-context: ">= 4.0.0"
+ react-native-screens: ">= 4.0.0"
+ checksum: 2387205f6f8689bcfc7f6b50cc66e1b6108fee02eb18ae6a801586f8499d3e9f589e98110a6a4128d4c5be2072ccafdd8590ac2d3081fa5393f72bdc4cf039bb
+ languageName: node
+ linkType: hard
+
"@react-navigation/core@npm:^5.16.1":
version: 5.16.1
resolution: "@react-navigation/core@npm:5.16.1"
@@ -4387,6 +4814,23 @@ __metadata:
languageName: node
linkType: hard
+"@react-navigation/core@npm:^7.9.2":
+ version: 7.9.2
+ resolution: "@react-navigation/core@npm:7.9.2"
+ dependencies:
+ "@react-navigation/routers": ^7.3.7
+ escape-string-regexp: ^4.0.0
+ nanoid: ^3.3.11
+ query-string: ^7.1.3
+ react-is: ^19.1.0
+ use-latest-callback: ^0.2.3
+ use-sync-external-store: ^1.5.0
+ peerDependencies:
+ react: ">= 18.2.0"
+ checksum: 346040b232b8e9dae6930cc8dd306020d3c6779d0aaf704947ca7279b7862aa0fc2e91abdcd8cc25b373d98435d787149539ca86e314317e7a5465df1e640239
+ languageName: node
+ linkType: hard
+
"@react-navigation/elements@npm:^1.3.3, @react-navigation/elements@npm:^1.3.31":
version: 1.3.31
resolution: "@react-navigation/elements@npm:1.3.31"
@@ -4399,6 +4843,40 @@ __metadata:
languageName: node
linkType: hard
+"@react-navigation/elements@npm:^2.4.2":
+ version: 2.4.2
+ resolution: "@react-navigation/elements@npm:2.4.2"
+ dependencies:
+ color: ^4.2.3
+ peerDependencies:
+ "@react-native-masked-view/masked-view": ">= 0.2.0"
+ "@react-navigation/native": ^7.1.9
+ react: ">= 18.2.0"
+ react-native: "*"
+ react-native-safe-area-context: ">= 4.0.0"
+ peerDependenciesMeta:
+ "@react-native-masked-view/masked-view":
+ optional: true
+ checksum: 5fee0e6601d50512256028c5de9da924ab17e5edbdfbf84963c1e95b0a3da05eb09aa753111453f3a9701b7d123dbb14c2ce2bff888ec9488fcc893872e2e079
+ languageName: node
+ linkType: hard
+
+"@react-navigation/native-stack@npm:^7.3.12":
+ version: 7.3.13
+ resolution: "@react-navigation/native-stack@npm:7.3.13"
+ dependencies:
+ "@react-navigation/elements": ^2.4.2
+ warn-once: ^0.1.1
+ peerDependencies:
+ "@react-navigation/native": ^7.1.9
+ react: ">= 18.2.0"
+ react-native: "*"
+ react-native-safe-area-context: ">= 4.0.0"
+ react-native-screens: ">= 4.0.0"
+ checksum: 141d208b35a84875226cea53125e47925ce21c828a69fffe7e44439cff1b5d7ae16dc41db3d0e48a84a349ec44d636294d3fde58e5dde4d1415c3b3aeeef670c
+ languageName: node
+ linkType: hard
+
"@react-navigation/native-v5@npm:@react-navigation/native@5.9.8":
version: 5.9.8
resolution: "@react-navigation/native@npm:5.9.8"
@@ -4443,6 +4921,22 @@ __metadata:
languageName: node
linkType: hard
+"@react-navigation/native@npm:^7.1.8":
+ version: 7.1.9
+ resolution: "@react-navigation/native@npm:7.1.9"
+ dependencies:
+ "@react-navigation/core": ^7.9.2
+ escape-string-regexp: ^4.0.0
+ fast-deep-equal: ^3.1.3
+ nanoid: ^3.3.11
+ use-latest-callback: ^0.2.3
+ peerDependencies:
+ react: ">= 18.2.0"
+ react-native: "*"
+ checksum: 3dd504d6d7c4482612c48909754d051a68b36d5d7cdf1ae610333da99c1309e194b65cd4e79ed343dd12cbbb55a3fb856453830d6cb45b54f6f3fe88464667cd
+ languageName: node
+ linkType: hard
+
"@react-navigation/routers@npm:^5.7.4":
version: 5.7.4
resolution: "@react-navigation/routers@npm:5.7.4"
@@ -4461,6 +4955,15 @@ __metadata:
languageName: node
linkType: hard
+"@react-navigation/routers@npm:^7.3.7":
+ version: 7.3.7
+ resolution: "@react-navigation/routers@npm:7.3.7"
+ dependencies:
+ nanoid: ^3.3.11
+ checksum: cc3fb52957220adb8486c5546c78e4a9a92863f44368e5aeec74e6d3a31a9930d24e0cf022d91a7074a8e7d779690e11994f8f1254aaf0035d0d55b1656d8a3f
+ languageName: node
+ linkType: hard
+
"@react-navigation/stack-v5@npm:@react-navigation/stack@5.14.2":
version: 5.14.2
resolution: "@react-navigation/stack@npm:5.14.2"
@@ -5449,6 +5952,16 @@ __metadata:
languageName: node
linkType: hard
+"@types/jest@npm:29.5.13":
+ version: 29.5.13
+ resolution: "@types/jest@npm:29.5.13"
+ dependencies:
+ expect: ^29.0.0
+ pretty-format: ^29.0.0
+ checksum: 875ac23c2398cdcf22aa56c6ba24560f11d2afda226d4fa23936322dde6202f9fdbd2b91602af51c27ecba223d9fc3c1e33c9df7e47b3bf0e2aefc6baf13ce53
+ languageName: node
+ linkType: hard
+
"@types/jest@npm:^29.5.0":
version: 29.5.14
resolution: "@types/jest@npm:29.5.14"
@@ -5520,11 +6033,11 @@ __metadata:
linkType: hard
"@types/node@npm:*, @types/node@npm:>=13.7.0":
- version: 22.15.21
- resolution: "@types/node@npm:22.15.21"
+ version: 22.15.23
+ resolution: "@types/node@npm:22.15.23"
dependencies:
undici-types: ~6.21.0
- checksum: 989f1ce3a99916a7298ae885210385fbcb339b07f8ef420b015d69dd68863aca68aeae07833736b300720d9394b8e1875600ce74166c24957d9907d29de0b788
+ checksum: 24d204beedcf96d5c9068da2553e01b8e90edecab8498055d1abc24d454211a7757fa858fabebbe0aec86988012c33d0025e31bab63ab2c6307807c84931930e
languageName: node
linkType: hard
@@ -5560,6 +6073,15 @@ __metadata:
languageName: node
linkType: hard
+"@types/react-test-renderer@npm:19.0.0":
+ version: 19.0.0
+ resolution: "@types/react-test-renderer@npm:19.0.0"
+ dependencies:
+ "@types/react": "*"
+ checksum: a22c4401e3af216a8c2cded22702bb6f928e22af7fbcaca7e0cc28447ec34bea5a94c6d6de7ed5734c527a1b53868393e67b7b4815623802e29abb1d8d378d61
+ languageName: node
+ linkType: hard
+
"@types/react-test-renderer@npm:^18.0.0":
version: 18.3.1
resolution: "@types/react-test-renderer@npm:18.3.1"
@@ -5570,21 +6092,30 @@ __metadata:
linkType: hard
"@types/react@npm:*":
- version: 19.1.5
- resolution: "@types/react@npm:19.1.5"
+ version: 19.1.6
+ resolution: "@types/react@npm:19.1.6"
dependencies:
csstype: ^3.0.2
- checksum: 49c01b9d1874e11c02c26f08623474d86093ae02c76cf2b9c952093d855fab505ab8d8aaa162200270bd7b1fc03033859db24f6599affa1d05c5fe46374ecafc
+ checksum: 7f4d2e5fd0c1afa6aef956e551c982a59c3ccf37cf30b877300306dcae87e0c4bf7b28b54676b1783f4ca92e730af6fb7a4c1b7f6df27ba14579aa1617a58b09
+ languageName: node
+ linkType: hard
+
+"@types/react@npm:19.0.0":
+ version: 19.0.0
+ resolution: "@types/react@npm:19.0.0"
+ dependencies:
+ csstype: ^3.0.2
+ checksum: dd7d7388b28fdf78cdf28c88490fe99413a0e1fab33e92afdf862620edc77dfe605ffe48dd3aeffb1de29107ea958a12f6d667236b2ead1affdf609db7152fad
languageName: node
linkType: hard
"@types/react@npm:^18, @types/react@npm:^18.2.6":
- version: 18.3.22
- resolution: "@types/react@npm:18.3.22"
+ version: 18.3.23
+ resolution: "@types/react@npm:18.3.23"
dependencies:
"@types/prop-types": "*"
csstype: ^3.0.2
- checksum: e69bdec2df18397e0ecc48e0e858ba331e56130b0b2cd1561098dcdddf04a8aa1ae0b51a294d60d0ade13bfabe5670131a3bd82bedca3b323d51de2b9cd0debd
+ checksum: d781257d42bf3c66f4bcd21e76a86cd9b6e21fbaf377fe0f840f1ff35049efa59491aa6a4dcf2b3db42af4ab085acebe185f0ae28b7c36d60be5e9094c707bdd
languageName: node
linkType: hard
@@ -6180,7 +6711,7 @@ __metadata:
languageName: node
linkType: hard
-"ajv@npm:^6.12.4":
+"ajv@npm:^6.10.0, ajv@npm:^6.12.4":
version: 6.12.6
resolution: "ajv@npm:6.12.6"
dependencies:
@@ -6523,6 +7054,15 @@ __metadata:
languageName: node
linkType: hard
+"ast-types@npm:^0.16.1":
+ version: 0.16.1
+ resolution: "ast-types@npm:0.16.1"
+ dependencies:
+ tslib: ^2.0.1
+ checksum: 21c186da9fdb1d8087b1b7dabbc4059f91aa5a1e593a9776b4393cc1eaa857e741b2dda678d20e34b16727b78fef3ab59cf8f0c75ed1ba649c78fe194e5c114b
+ languageName: node
+ linkType: hard
+
"astral-regex@npm:^1.0.0":
version: 1.0.0
resolution: "astral-regex@npm:1.0.0"
@@ -6671,6 +7211,18 @@ __metadata:
languageName: node
linkType: hard
+"babel-plugin-polyfill-corejs3@npm:^0.10.4":
+ version: 0.10.6
+ resolution: "babel-plugin-polyfill-corejs3@npm:0.10.6"
+ dependencies:
+ "@babel/helper-define-polyfill-provider": ^0.6.2
+ core-js-compat: ^3.38.0
+ peerDependencies:
+ "@babel/core": ^7.4.0 || ^8.0.0-0 <8.0.0
+ checksum: f762f29f7acca576897c63149c850f0a72babd3fb9ea436a2e36f0c339161c4b912a77828541d8188ce8a91e50965c6687120cf36071eabb1b7aa92f279e2164
+ languageName: node
+ linkType: hard
+
"babel-plugin-polyfill-corejs3@npm:^0.11.0":
version: 0.11.1
resolution: "babel-plugin-polyfill-corejs3@npm:0.11.1"
@@ -6694,6 +7246,15 @@ __metadata:
languageName: node
linkType: hard
+"babel-plugin-syntax-hermes-parser@npm:0.25.1, babel-plugin-syntax-hermes-parser@npm:^0.25.1":
+ version: 0.25.1
+ resolution: "babel-plugin-syntax-hermes-parser@npm:0.25.1"
+ dependencies:
+ hermes-parser: 0.25.1
+ checksum: dc80fafde1aed8e60cf86ecd2e9920e7f35ffe02b33bd4e772daaa786167bcf508aac3fc1aea425ff4c7a0be94d82528f3fe8619b7f41dac853264272d640c04
+ languageName: node
+ linkType: hard
+
"babel-plugin-syntax-hermes-parser@npm:^0.23.1":
version: 0.23.1
resolution: "babel-plugin-syntax-hermes-parser@npm:0.23.1"
@@ -6703,15 +7264,6 @@ __metadata:
languageName: node
linkType: hard
-"babel-plugin-syntax-hermes-parser@npm:^0.25.1":
- version: 0.25.1
- resolution: "babel-plugin-syntax-hermes-parser@npm:0.25.1"
- dependencies:
- hermes-parser: 0.25.1
- checksum: dc80fafde1aed8e60cf86ecd2e9920e7f35ffe02b33bd4e772daaa786167bcf508aac3fc1aea425ff4c7a0be94d82528f3fe8619b7f41dac853264272d640c04
- languageName: node
- linkType: hard
-
"babel-plugin-transform-flow-enums@npm:^0.0.2":
version: 0.0.2
resolution: "babel-plugin-transform-flow-enums@npm:0.0.2"
@@ -6795,6 +7347,41 @@ __metadata:
languageName: node
linkType: hard
+"benchmark-runner@workspace:benchmarks":
+ version: 0.0.0-use.local
+ resolution: "benchmark-runner@workspace:benchmarks"
+ dependencies:
+ "@babel/core": 7.25.2
+ "@babel/preset-env": 7.25.3
+ "@babel/runtime": 7.25.0
+ "@datadog/mobile-react-native": "workspace:packages/core"
+ "@react-native-community/cli": 15.0.1
+ "@react-native-community/cli-platform-android": 15.0.1
+ "@react-native-community/cli-platform-ios": 15.0.1
+ "@react-native/babel-preset": 0.78.2
+ "@react-native/eslint-config": 0.78.2
+ "@react-native/metro-config": 0.78.2
+ "@react-native/typescript-config": 0.78.2
+ "@react-navigation/bottom-tabs": ^7.3.12
+ "@react-navigation/native": ^7.1.8
+ "@react-navigation/native-stack": ^7.3.12
+ "@types/jest": 29.5.13
+ "@types/react": 19.0.0
+ "@types/react-test-renderer": 19.0.0
+ eslint: 8.19.0
+ jest: 29.6.3
+ prettier: 2.8.8
+ query-string: 9.1.1
+ react: 19.0.0
+ react-native: 0.78.2
+ react-native-config: 1.5.5
+ react-native-safe-area-context: ^5.4.0
+ react-native-screens: ^4.10.0
+ react-test-renderer: 19.0.0
+ typescript: 5.0.4
+ languageName: unknown
+ linkType: soft
+
"big-integer@npm:1.6.x, big-integer@npm:^1.6.52":
version: 1.6.52
resolution: "big-integer@npm:1.6.52"
@@ -7683,7 +8270,7 @@ __metadata:
languageName: node
linkType: hard
-"core-js-compat@npm:^3.40.0":
+"core-js-compat@npm:^3.37.1, core-js-compat@npm:^3.38.0, core-js-compat@npm:^3.40.0":
version: 3.42.0
resolution: "core-js-compat@npm:3.42.0"
dependencies:
@@ -8096,6 +8683,13 @@ __metadata:
languageName: node
linkType: hard
+"decode-uri-component@npm:^0.4.1":
+ version: 0.4.1
+ resolution: "decode-uri-component@npm:0.4.1"
+ checksum: 0473924860986fb6ca19ee65a2af13e08801b4f3660475b058500ea8479ed715c919884a026b6bf4296dbb640d3cea74fadf45490b2439152fc548271d0201ec
+ languageName: node
+ linkType: hard
+
"dedent@npm:1.5.3":
version: 1.5.3
resolution: "dedent@npm:1.5.3"
@@ -8451,9 +9045,9 @@ __metadata:
linkType: hard
"electron-to-chromium@npm:^1.5.149":
- version: 1.5.157
- resolution: "electron-to-chromium@npm:1.5.157"
- checksum: 479d1bb9458f0e19d0853a7f423b8a2468ca0f4a36772bfe115460183bc94662d63d4a4cde98c4aaf3c06e1840646e85dd48ef854ddf634fd169c6504540ea44
+ version: 1.5.159
+ resolution: "electron-to-chromium@npm:1.5.159"
+ checksum: 8d432d17b514e77f18f195aa52b88112fc943a5a86d1994afa504024e2895c59c9151d37952eb7e3477eda58f4bf63199a3a164680f700fe8f1e1723036f4cc4
languageName: node
linkType: hard
@@ -9026,7 +9620,7 @@ __metadata:
languageName: node
linkType: hard
-"eslint-scope@npm:^7.2.2":
+"eslint-scope@npm:^7.1.1, eslint-scope@npm:^7.2.2":
version: 7.2.2
resolution: "eslint-scope@npm:7.2.2"
dependencies:
@@ -9036,7 +9630,18 @@ __metadata:
languageName: node
linkType: hard
-"eslint-visitor-keys@npm:^2.1.0":
+"eslint-utils@npm:^3.0.0":
+ version: 3.0.0
+ resolution: "eslint-utils@npm:3.0.0"
+ dependencies:
+ eslint-visitor-keys: ^2.0.0
+ peerDependencies:
+ eslint: ">=5"
+ checksum: 0668fe02f5adab2e5a367eee5089f4c39033af20499df88fe4e6aba2015c20720404d8c3d6349b6f716b08fdf91b9da4e5d5481f265049278099c4c836ccb619
+ languageName: node
+ linkType: hard
+
+"eslint-visitor-keys@npm:^2.0.0, eslint-visitor-keys@npm:^2.1.0":
version: 2.1.0
resolution: "eslint-visitor-keys@npm:2.1.0"
checksum: e3081d7dd2611a35f0388bbdc2f5da60b3a3c5b8b6e928daffff7391146b434d691577aa95064c8b7faad0b8a680266bcda0a42439c18c717b80e6718d7e267d
@@ -9050,6 +9655,51 @@ __metadata:
languageName: node
linkType: hard
+"eslint@npm:8.19.0":
+ version: 8.19.0
+ resolution: "eslint@npm:8.19.0"
+ dependencies:
+ "@eslint/eslintrc": ^1.3.0
+ "@humanwhocodes/config-array": ^0.9.2
+ ajv: ^6.10.0
+ chalk: ^4.0.0
+ cross-spawn: ^7.0.2
+ debug: ^4.3.2
+ doctrine: ^3.0.0
+ escape-string-regexp: ^4.0.0
+ eslint-scope: ^7.1.1
+ eslint-utils: ^3.0.0
+ eslint-visitor-keys: ^3.3.0
+ espree: ^9.3.2
+ esquery: ^1.4.0
+ esutils: ^2.0.2
+ fast-deep-equal: ^3.1.3
+ file-entry-cache: ^6.0.1
+ functional-red-black-tree: ^1.0.1
+ glob-parent: ^6.0.1
+ globals: ^13.15.0
+ ignore: ^5.2.0
+ import-fresh: ^3.0.0
+ imurmurhash: ^0.1.4
+ is-glob: ^4.0.0
+ js-yaml: ^4.1.0
+ json-stable-stringify-without-jsonify: ^1.0.1
+ levn: ^0.4.1
+ lodash.merge: ^4.6.2
+ minimatch: ^3.1.2
+ natural-compare: ^1.4.0
+ optionator: ^0.9.1
+ regexpp: ^3.2.0
+ strip-ansi: ^6.0.1
+ strip-json-comments: ^3.1.0
+ text-table: ^0.2.0
+ v8-compile-cache: ^2.0.3
+ bin:
+ eslint: bin/eslint.js
+ checksum: 0bc9df1a3a09dcd5a781ec728f280aa8af3ab19c2d1f14e2668b5ee5b8b1fb0e72dde5c3acf738e7f4281685fb24ec149b6154255470b06cf41de76350bca7a4
+ languageName: node
+ linkType: hard
+
"eslint@npm:^8.19.0":
version: 8.57.1
resolution: "eslint@npm:8.57.1"
@@ -9098,7 +9748,7 @@ __metadata:
languageName: node
linkType: hard
-"espree@npm:^9.6.0, espree@npm:^9.6.1":
+"espree@npm:^9.3.2, espree@npm:^9.4.0, espree@npm:^9.6.0, espree@npm:^9.6.1":
version: 9.6.1
resolution: "espree@npm:9.6.1"
dependencies:
@@ -9119,7 +9769,7 @@ __metadata:
languageName: node
linkType: hard
-"esquery@npm:^1.4.2":
+"esquery@npm:^1.4.0, esquery@npm:^1.4.2":
version: 1.6.0
resolution: "esquery@npm:1.6.0"
dependencies:
@@ -9425,14 +10075,14 @@ __metadata:
linkType: hard
"fdir@npm:^6.4.4":
- version: 6.4.4
- resolution: "fdir@npm:6.4.4"
+ version: 6.4.5
+ resolution: "fdir@npm:6.4.5"
peerDependencies:
picomatch: ^3 || ^4
peerDependenciesMeta:
picomatch:
optional: true
- checksum: 79043610236579ffbd0647c508b43bd030a2d034a17c43cf96813a00e8e92e51acdb115c6ddecef3b5812cc2692b976155b4f6413e51e3761f1e772fa019a321
+ checksum: 14efd2d6617a6f9fb314916ccff64e00bdb96216f26542ec9dfa532ed60a7ebb45463f7009aa215c14071566bf43caeb8ba268ccb52a11e6b51e4aaa8cb58d81
languageName: node
linkType: hard
@@ -9479,6 +10129,13 @@ __metadata:
languageName: node
linkType: hard
+"filter-obj@npm:^5.1.0":
+ version: 5.1.0
+ resolution: "filter-obj@npm:5.1.0"
+ checksum: ba7c24d9b2c0552ee87d268e07eca74483af61fb740545ffa809f7e9e5294de38cf163ecc55af0e8a40020af9a49512c32f4022de2a858b110420fc8bffa7c9c
+ languageName: node
+ linkType: hard
+
"finalhandler@npm:1.1.2":
version: 1.1.2
resolution: "finalhandler@npm:1.1.2"
@@ -9821,6 +10478,13 @@ __metadata:
languageName: node
linkType: hard
+"functional-red-black-tree@npm:^1.0.1":
+ version: 1.0.1
+ resolution: "functional-red-black-tree@npm:1.0.1"
+ checksum: ca6c170f37640e2d94297da8bb4bf27a1d12bea3e00e6a3e007fd7aa32e37e000f5772acf941b4e4f3cf1c95c3752033d0c509af157ad8f526e7f00723b9eb9f
+ languageName: node
+ linkType: hard
+
"functions-have-names@npm:^1.2.3":
version: 1.2.3
resolution: "functions-have-names@npm:1.2.3"
@@ -10065,7 +10729,7 @@ __metadata:
languageName: node
linkType: hard
-"glob-parent@npm:6.0.2, glob-parent@npm:^6.0.2":
+"glob-parent@npm:6.0.2, glob-parent@npm:^6.0.1, glob-parent@npm:^6.0.2":
version: 6.0.2
resolution: "glob-parent@npm:6.0.2"
dependencies:
@@ -10159,7 +10823,7 @@ __metadata:
languageName: node
linkType: hard
-"globals@npm:^13.19.0":
+"globals@npm:^13.15.0, globals@npm:^13.19.0":
version: 13.24.0
resolution: "globals@npm:13.24.0"
dependencies:
@@ -10609,7 +11273,7 @@ __metadata:
languageName: node
linkType: hard
-"import-fresh@npm:^3.2.1, import-fresh@npm:^3.3.0":
+"import-fresh@npm:^3.0.0, import-fresh@npm:^3.2.1, import-fresh@npm:^3.3.0":
version: 3.3.1
resolution: "import-fresh@npm:3.3.1"
dependencies:
@@ -11432,7 +12096,7 @@ __metadata:
languageName: node
linkType: hard
-"jest-cli@npm:^29.7.0":
+"jest-cli@npm:^29.6.3, jest-cli@npm:^29.7.0":
version: 29.7.0
resolution: "jest-cli@npm:29.7.0"
dependencies:
@@ -11813,6 +12477,25 @@ __metadata:
languageName: node
linkType: hard
+"jest@npm:29.6.3":
+ version: 29.6.3
+ resolution: "jest@npm:29.6.3"
+ dependencies:
+ "@jest/core": ^29.6.3
+ "@jest/types": ^29.6.3
+ import-local: ^3.0.2
+ jest-cli: ^29.6.3
+ peerDependencies:
+ node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0
+ peerDependenciesMeta:
+ node-notifier:
+ optional: true
+ bin:
+ jest: bin/jest.js
+ checksum: dd4f53fb84f28b665b47c628222e5d3b624e9e0afa79b22afceef4f2a53dc0d8f0edd7ca254917ace5c94c3a7bf58c108563234c4fe34e86c679ce99633cfbe6
+ languageName: node
+ linkType: hard
+
"jest@npm:^29.6.3, jest@npm:^29.7.0":
version: 29.7.0
resolution: "jest@npm:29.7.0"
@@ -11946,6 +12629,39 @@ __metadata:
languageName: node
linkType: hard
+"jscodeshift@npm:^17.0.0":
+ version: 17.3.0
+ resolution: "jscodeshift@npm:17.3.0"
+ dependencies:
+ "@babel/core": ^7.24.7
+ "@babel/parser": ^7.24.7
+ "@babel/plugin-transform-class-properties": ^7.24.7
+ "@babel/plugin-transform-modules-commonjs": ^7.24.7
+ "@babel/plugin-transform-nullish-coalescing-operator": ^7.24.7
+ "@babel/plugin-transform-optional-chaining": ^7.24.7
+ "@babel/plugin-transform-private-methods": ^7.24.7
+ "@babel/preset-flow": ^7.24.7
+ "@babel/preset-typescript": ^7.24.7
+ "@babel/register": ^7.24.6
+ flow-parser: 0.*
+ graceful-fs: ^4.2.4
+ micromatch: ^4.0.7
+ neo-async: ^2.5.0
+ picocolors: ^1.0.1
+ recast: ^0.23.11
+ tmp: ^0.2.3
+ write-file-atomic: ^5.0.1
+ peerDependencies:
+ "@babel/preset-env": ^7.1.6
+ peerDependenciesMeta:
+ "@babel/preset-env":
+ optional: true
+ bin:
+ jscodeshift: bin/jscodeshift.js
+ checksum: 6a529c8dcab8eef48381425c706d58a0a9205397cad367925872845ff1c35924f8f838bbd1397b28a065061032047c9fd843877000a3743240db4ba6ded2546b
+ languageName: node
+ linkType: hard
+
"jsesc@npm:^3.0.2":
version: 3.1.0
resolution: "jsesc@npm:3.1.0"
@@ -12808,7 +13524,7 @@ __metadata:
languageName: node
linkType: hard
-"metro-config@npm:0.81.5, metro-config@npm:^0.81.0":
+"metro-config@npm:0.81.5, metro-config@npm:^0.81.0, metro-config@npm:^0.81.3":
version: 0.81.5
resolution: "metro-config@npm:0.81.5"
dependencies:
@@ -12824,7 +13540,7 @@ __metadata:
languageName: node
linkType: hard
-"metro-core@npm:0.81.5, metro-core@npm:^0.81.0":
+"metro-core@npm:0.81.5, metro-core@npm:^0.81.0, metro-core@npm:^0.81.3":
version: 0.81.5
resolution: "metro-core@npm:0.81.5"
dependencies:
@@ -12871,7 +13587,7 @@ __metadata:
languageName: node
linkType: hard
-"metro-runtime@npm:0.81.5, metro-runtime@npm:^0.81.0":
+"metro-runtime@npm:0.81.5, metro-runtime@npm:^0.81.0, metro-runtime@npm:^0.81.3":
version: 0.81.5
resolution: "metro-runtime@npm:0.81.5"
dependencies:
@@ -12881,7 +13597,7 @@ __metadata:
languageName: node
linkType: hard
-"metro-source-map@npm:0.81.5, metro-source-map@npm:^0.81.0":
+"metro-source-map@npm:0.81.5, metro-source-map@npm:^0.81.0, metro-source-map@npm:^0.81.3":
version: 0.81.5
resolution: "metro-source-map@npm:0.81.5"
dependencies:
@@ -12950,7 +13666,7 @@ __metadata:
languageName: node
linkType: hard
-"metro@npm:0.81.5, metro@npm:^0.81.0":
+"metro@npm:0.81.5, metro@npm:^0.81.0, metro@npm:^0.81.3":
version: 0.81.5
resolution: "metro@npm:0.81.5"
dependencies:
@@ -13000,7 +13716,7 @@ __metadata:
languageName: node
linkType: hard
-"micromatch@npm:^4.0.2, micromatch@npm:^4.0.4, micromatch@npm:^4.0.8":
+"micromatch@npm:^4.0.2, micromatch@npm:^4.0.4, micromatch@npm:^4.0.7, micromatch@npm:^4.0.8":
version: 4.0.8
resolution: "micromatch@npm:4.0.8"
dependencies:
@@ -14022,7 +14738,7 @@ __metadata:
languageName: node
linkType: hard
-"optionator@npm:^0.9.3":
+"optionator@npm:^0.9.1, optionator@npm:^0.9.3":
version: 0.9.4
resolution: "optionator@npm:0.9.4"
dependencies:
@@ -14486,7 +15202,7 @@ __metadata:
languageName: node
linkType: hard
-"picocolors@npm:^1.1.1":
+"picocolors@npm:^1.0.1, picocolors@npm:^1.1.1":
version: 1.1.1
resolution: "picocolors@npm:1.1.1"
checksum: e1cf46bf84886c79055fdfa9dcb3e4711ad259949e3565154b004b260cd356c5d54b31a1437ce9782624bf766272fe6b0154f5f0c744fb7af5d454d2b60db045
@@ -14645,7 +15361,7 @@ __metadata:
languageName: node
linkType: hard
-"prettier@npm:^2.8.8":
+"prettier@npm:2.8.8, prettier@npm:^2.8.8":
version: 2.8.8
resolution: "prettier@npm:2.8.8"
bin:
@@ -14887,6 +15603,17 @@ __metadata:
languageName: node
linkType: hard
+"query-string@npm:9.1.1":
+ version: 9.1.1
+ resolution: "query-string@npm:9.1.1"
+ dependencies:
+ decode-uri-component: ^0.4.1
+ filter-obj: ^5.1.0
+ split-on-first: ^3.0.0
+ checksum: cc9c89c61f41eca2eccc67d85667708a29e517ccc93ae62753c4a1207c64ea04bf9cdb3c4006dc6c9693407aacdefad7a6e54e47158914f4efcf1c4c88371a6c
+ languageName: node
+ linkType: hard
+
"query-string@npm:^6.13.6":
version: 6.14.1
resolution: "query-string@npm:6.14.1"
@@ -14979,6 +15706,16 @@ __metadata:
languageName: node
linkType: hard
+"react-devtools-core@npm:^6.0.1":
+ version: 6.1.2
+ resolution: "react-devtools-core@npm:6.1.2"
+ dependencies:
+ shell-quote: ^1.6.1
+ ws: ^7
+ checksum: aa72d4ad993af861088ead93bcce789dbf084a530a7723d94d3a040dad6cdb3fa46e14ff0d6e1c1c8f22713f30cf52505c6083f3c91b5114c1d90f7a3c2c1e43
+ languageName: node
+ linkType: hard
+
"react-freeze@npm:^1.0.0":
version: 1.0.4
resolution: "react-freeze@npm:1.0.4"
@@ -15009,6 +15746,13 @@ __metadata:
languageName: node
linkType: hard
+"react-is@npm:^19.0.0, react-is@npm:^19.1.0":
+ version: 19.1.0
+ resolution: "react-is@npm:19.1.0"
+ checksum: 3eb4eac7f09bf178bdc6fa98d384f5f243b85de7c99679a88b0154ead4d818ad94386ccb00ea31ec52409ffd13299057f5ec6ca2eaec06f9f7eddc1ad4832332
+ languageName: node
+ linkType: hard
+
"react-lifecycles-compat@npm:2.0.0":
version: 2.0.0
resolution: "react-lifecycles-compat@npm:2.0.0"
@@ -15067,6 +15811,18 @@ __metadata:
languageName: node
linkType: hard
+"react-native-config@npm:1.5.5":
+ version: 1.5.5
+ resolution: "react-native-config@npm:1.5.5"
+ peerDependencies:
+ react-native-windows: ">=0.61"
+ peerDependenciesMeta:
+ react-native-windows:
+ optional: true
+ checksum: 96b83f6eaed4d4dd3095c18abdebb6231a9d5206203dbef65070414fb8f0582f30872dbc5120b47bb9e2e019ea842a9678838f7056d0f5e7b9c68de9ff5f971a
+ languageName: node
+ linkType: hard
+
"react-native-crash-tester@npm:0.2.3":
version: 0.2.3
resolution: "react-native-crash-tester@npm:0.2.3"
@@ -15120,6 +15876,16 @@ __metadata:
languageName: node
linkType: hard
+"react-native-is-edge-to-edge@npm:^1.1.7":
+ version: 1.1.7
+ resolution: "react-native-is-edge-to-edge@npm:1.1.7"
+ peerDependencies:
+ react: "*"
+ react-native: "*"
+ checksum: 4cdf2b2fb5b131f2015c26d2cb7688b4a0c5f3c8474b1bf0ddfa9eabb0263df440c87262ae8f812a6ecab0d5310df0373bddad4b51f53dabb2ffee01e9ef0f44
+ languageName: node
+ linkType: hard
+
"react-native-navigation@npm:7.31.1":
version: 7.31.1
resolution: "react-native-navigation@npm:7.31.1"
@@ -15184,6 +15950,16 @@ __metadata:
languageName: node
linkType: hard
+"react-native-safe-area-context@npm:^5.4.0":
+ version: 5.4.1
+ resolution: "react-native-safe-area-context@npm:5.4.1"
+ peerDependencies:
+ react: "*"
+ react-native: "*"
+ checksum: 695e2a46a988725ac7a948e2a0f52fa91dbf6cfd29e7fd8c4b9e511022279cc7530fcec5dc6430415dcb5d137c593c53dd88249d41d1e049a254c32421a12d44
+ languageName: node
+ linkType: hard
+
"react-native-screens@npm:4.5.0":
version: 4.5.0
resolution: "react-native-screens@npm:4.5.0"
@@ -15197,6 +15973,20 @@ __metadata:
languageName: node
linkType: hard
+"react-native-screens@npm:^4.10.0":
+ version: 4.11.0
+ resolution: "react-native-screens@npm:4.11.0"
+ dependencies:
+ react-freeze: ^1.0.0
+ react-native-is-edge-to-edge: ^1.1.7
+ warn-once: ^0.1.0
+ peerDependencies:
+ react: "*"
+ react-native: "*"
+ checksum: 29ab15641e96c11c5035475e80b14ba0018d8e96f6f1320aa5eea83fa82b34604ad57242a59728e1b2a465a1cf33f716740bd943fd8473daf4bb2c11449b9ee8
+ languageName: node
+ linkType: hard
+
"react-native-webview@npm:13.12.2":
version: 13.12.2
resolution: "react-native-webview@npm:13.12.2"
@@ -15277,6 +16067,58 @@ __metadata:
languageName: node
linkType: hard
+"react-native@npm:0.78.2":
+ version: 0.78.2
+ resolution: "react-native@npm:0.78.2"
+ dependencies:
+ "@jest/create-cache-key-function": ^29.6.3
+ "@react-native/assets-registry": 0.78.2
+ "@react-native/codegen": 0.78.2
+ "@react-native/community-cli-plugin": 0.78.2
+ "@react-native/gradle-plugin": 0.78.2
+ "@react-native/js-polyfills": 0.78.2
+ "@react-native/normalize-colors": 0.78.2
+ "@react-native/virtualized-lists": 0.78.2
+ abort-controller: ^3.0.0
+ anser: ^1.4.9
+ ansi-regex: ^5.0.0
+ babel-jest: ^29.7.0
+ babel-plugin-syntax-hermes-parser: 0.25.1
+ base64-js: ^1.5.1
+ chalk: ^4.0.0
+ commander: ^12.0.0
+ event-target-shim: ^5.0.1
+ flow-enums-runtime: ^0.0.6
+ glob: ^7.1.1
+ invariant: ^2.2.4
+ jest-environment-node: ^29.6.3
+ memoize-one: ^5.0.0
+ metro-runtime: ^0.81.3
+ metro-source-map: ^0.81.3
+ nullthrows: ^1.1.1
+ pretty-format: ^29.7.0
+ promise: ^8.3.0
+ react-devtools-core: ^6.0.1
+ react-refresh: ^0.14.0
+ regenerator-runtime: ^0.13.2
+ scheduler: 0.25.0
+ semver: ^7.1.3
+ stacktrace-parser: ^0.1.10
+ whatwg-fetch: ^3.0.0
+ ws: ^6.2.3
+ yargs: ^17.6.2
+ peerDependencies:
+ "@types/react": ^19.0.0
+ react: ^19.0.0
+ peerDependenciesMeta:
+ "@types/react":
+ optional: true
+ bin:
+ react-native: cli.js
+ checksum: 22e33f6717c60ab3942fe5ecd3461d3563302e28d6ef0b3627ac469da0349ec3f4f29f844bbd617fccbebc9180b18df37f2e6625d1b2ca6578dcad6cc1203fbf
+ languageName: node
+ linkType: hard
+
"react-refresh@npm:^0.14.0":
version: 0.14.2
resolution: "react-refresh@npm:0.14.2"
@@ -15309,6 +16151,18 @@ __metadata:
languageName: node
linkType: hard
+"react-test-renderer@npm:19.0.0":
+ version: 19.0.0
+ resolution: "react-test-renderer@npm:19.0.0"
+ dependencies:
+ react-is: ^19.0.0
+ scheduler: ^0.25.0
+ peerDependencies:
+ react: ^19.0.0
+ checksum: 2e1e527588c69e822b7aa25262c9f4a48161ede9cee5109b88228ecafbd91ce82f7afed176645efcba903ba5a43d05842a8229cdde220049e42a0cf679715dbc
+ languageName: node
+ linkType: hard
+
"react@npm:18.3.1":
version: 18.3.1
resolution: "react@npm:18.3.1"
@@ -15318,6 +16172,13 @@ __metadata:
languageName: node
linkType: hard
+"react@npm:19.0.0":
+ version: 19.0.0
+ resolution: "react@npm:19.0.0"
+ checksum: 86de15d85b2465feb40297a90319c325cb07cf27191a361d47bcfe8c6126c973d660125aa67b8f4cbbe39f15a2f32efd0c814e98196d8e5b68c567ba40a399c6
+ languageName: node
+ linkType: hard
+
"read-cmd-shim@npm:4.0.0, read-cmd-shim@npm:^4.0.0":
version: 4.0.0
resolution: "read-cmd-shim@npm:4.0.0"
@@ -15433,6 +16294,19 @@ __metadata:
languageName: node
linkType: hard
+"recast@npm:^0.23.11":
+ version: 0.23.11
+ resolution: "recast@npm:0.23.11"
+ dependencies:
+ ast-types: ^0.16.1
+ esprima: ~4.0.0
+ source-map: ~0.6.1
+ tiny-invariant: ^1.3.3
+ tslib: ^2.0.1
+ checksum: 1807159b1c33bc4a2d146e4ffea13b658e54bdcfab04fc4f9c9d7f1b4626c931e2ce41323e214516ec1e02a119037d686d825fc62f28072db27962b85e5b481d
+ languageName: node
+ linkType: hard
+
"recursive-fs@npm:^2.1.0":
version: 2.1.0
resolution: "recursive-fs@npm:2.1.0"
@@ -15492,6 +16366,13 @@ __metadata:
languageName: node
linkType: hard
+"regenerator-runtime@npm:^0.14.0":
+ version: 0.14.1
+ resolution: "regenerator-runtime@npm:0.14.1"
+ checksum: 9f57c93277b5585d3c83b0cf76be47b473ae8c6d9142a46ce8b0291a04bb2cf902059f0f8445dcabb3fb7378e5fe4bb4ea1e008876343d42e46d3b484534ce38
+ languageName: node
+ linkType: hard
+
"regexp.prototype.flags@npm:^1.5.3, regexp.prototype.flags@npm:^1.5.4":
version: 1.5.4
resolution: "regexp.prototype.flags@npm:1.5.4"
@@ -15506,6 +16387,13 @@ __metadata:
languageName: node
linkType: hard
+"regexpp@npm:^3.2.0":
+ version: 3.2.0
+ resolution: "regexpp@npm:3.2.0"
+ checksum: a78dc5c7158ad9ddcfe01aa9144f46e192ddbfa7b263895a70a5c6c73edd9ce85faf7c0430e59ac38839e1734e275b9c3de5c57ee3ab6edc0e0b1bdebefccef8
+ languageName: node
+ linkType: hard
+
"regexpu-core@npm:^6.2.0":
version: 6.2.0
resolution: "regexpu-core@npm:6.2.0"
@@ -15912,6 +16800,13 @@ __metadata:
languageName: node
linkType: hard
+"scheduler@npm:0.25.0, scheduler@npm:^0.25.0":
+ version: 0.25.0
+ resolution: "scheduler@npm:0.25.0"
+ checksum: b7bb9fddbf743e521e9aaa5198a03ae823f5e104ebee0cb9ec625392bb7da0baa1c28ab29cee4b1e407a94e76acc6eee91eeb749614f91f853efda2613531566
+ languageName: node
+ linkType: hard
+
"scheduler@npm:^0.23.2":
version: 0.23.2
resolution: "scheduler@npm:0.23.2"
@@ -16381,6 +17276,13 @@ __metadata:
languageName: node
linkType: hard
+"split-on-first@npm:^3.0.0":
+ version: 3.0.0
+ resolution: "split-on-first@npm:3.0.0"
+ checksum: 75dc27ecbac65cfbeab9a3b90cf046307220192d3d7a30e46aa0f19571cc9b4802aac813f3de2cc9b16f2e46aae72f275659b5d2614bb5369c77724d739e5f73
+ languageName: node
+ linkType: hard
+
"split2@npm:^3.2.2":
version: 3.2.2
resolution: "split2@npm:3.2.2"
@@ -16739,7 +17641,7 @@ __metadata:
languageName: node
linkType: hard
-"strip-json-comments@npm:^3.1.1":
+"strip-json-comments@npm:^3.1.0, strip-json-comments@npm:^3.1.1":
version: 3.1.1
resolution: "strip-json-comments@npm:3.1.1"
checksum: 492f73e27268f9b1c122733f28ecb0e7e8d8a531a6662efbd08e22cccb3f9475e90a1b82cab06a392f6afae6d2de636f977e231296400d0ec5304ba70f166443
@@ -16954,8 +17856,8 @@ __metadata:
linkType: hard
"terser@npm:^5.15.0":
- version: 5.39.2
- resolution: "terser@npm:5.39.2"
+ version: 5.40.0
+ resolution: "terser@npm:5.40.0"
dependencies:
"@jridgewell/source-map": ^0.3.3
acorn: ^8.14.0
@@ -16963,7 +17865,7 @@ __metadata:
source-map-support: ~0.5.20
bin:
terser: bin/terser
- checksum: 986a47896503c5bc6475c751d9445d4326de2e6f8b0be2c943b7726426ad0fe2385aacb9dce1dbc3aee13171595a0234411479bc855e6c730a51f23175132c84
+ checksum: 2c84b1a06a8417a3443f63b447b276f724221a2b0d5cdbdd642c4753e72c3711f232a87b25b1ecb8a7282a07effe4eba0c1c3d2461c5c92243f0384579a56d11
languageName: node
linkType: hard
@@ -17023,6 +17925,13 @@ __metadata:
languageName: node
linkType: hard
+"tiny-invariant@npm:^1.3.3":
+ version: 1.3.3
+ resolution: "tiny-invariant@npm:1.3.3"
+ checksum: 5e185c8cc2266967984ce3b352a4e57cb89dad5a8abb0dea21468a6ecaa67cd5bb47a3b7a85d08041008644af4f667fb8b6575ba38ba5fb00b3b5068306e59fe
+ languageName: node
+ linkType: hard
+
"tinyglobby@npm:^0.2.12":
version: 0.2.14
resolution: "tinyglobby@npm:0.2.14"
@@ -17049,7 +17958,7 @@ __metadata:
languageName: node
linkType: hard
-"tmp@npm:~0.2.1":
+"tmp@npm:^0.2.3, tmp@npm:~0.2.1":
version: 0.2.3
resolution: "tmp@npm:0.2.3"
checksum: 73b5c96b6e52da7e104d9d44afb5d106bb1e16d9fa7d00dbeb9e6522e61b571fbdb165c756c62164be9a3bbe192b9b268c236d370a2a0955c7689cd2ae377b95
@@ -17558,7 +18467,7 @@ __metadata:
languageName: node
linkType: hard
-"use-latest-callback@npm:^0.2.1":
+"use-latest-callback@npm:^0.2.1, use-latest-callback@npm:^0.2.3":
version: 0.2.3
resolution: "use-latest-callback@npm:0.2.3"
peerDependencies:
@@ -17567,6 +18476,15 @@ __metadata:
languageName: node
linkType: hard
+"use-sync-external-store@npm:^1.5.0":
+ version: 1.5.0
+ resolution: "use-sync-external-store@npm:1.5.0"
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
+ checksum: 5e639c9273200adb6985b512c96a3a02c458bc8ca1a72e91da9cdc6426144fc6538dca434b0f99b28fb1baabc82e1c383ba7900b25ccdcb43758fb058dc66c34
+ languageName: node
+ linkType: hard
+
"util-deprecate@npm:^1.0.1, util-deprecate@npm:^1.0.2, util-deprecate@npm:~1.0.1":
version: 1.0.2
resolution: "util-deprecate@npm:1.0.2"
@@ -17617,6 +18535,13 @@ __metadata:
languageName: node
linkType: hard
+"v8-compile-cache@npm:^2.0.3":
+ version: 2.4.0
+ resolution: "v8-compile-cache@npm:2.4.0"
+ checksum: 8eb6ddb59d86f24566503f1e6ca98f3e6f43599f05359bd3ab737eaaf1585b338091478a4d3d5c2646632cf8030288d7888684ea62238cdce15a65ae2416718f
+ languageName: node
+ linkType: hard
+
"v8-to-istanbul@npm:^9.0.1":
version: 9.3.0
resolution: "v8-to-istanbul@npm:9.3.0"
@@ -17675,7 +18600,7 @@ __metadata:
languageName: node
linkType: hard
-"warn-once@npm:^0.1.0":
+"warn-once@npm:^0.1.0, warn-once@npm:^0.1.1":
version: 0.1.1
resolution: "warn-once@npm:0.1.1"
checksum: e6a5a1f5a8dba7744399743d3cfb571db4c3947897875d4962a7c5b1bf2195ab4518c838cb4cea652e71729f21bba2e98dc75686f5fccde0fabbd894e2ed0c0d
@@ -17879,7 +18804,7 @@ __metadata:
languageName: node
linkType: hard
-"write-file-atomic@npm:5.0.1, write-file-atomic@npm:^5.0.0":
+"write-file-atomic@npm:5.0.1, write-file-atomic@npm:^5.0.0, write-file-atomic@npm:^5.0.1":
version: 5.0.1
resolution: "write-file-atomic@npm:5.0.1"
dependencies: