mirror of
https://github.com/facebook/react-native.git
synced 2025-11-01 09:14:26 +00:00
Compare commits
25
Commits
v0.76.7
...
0.76-stable
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
5b051ce4f8 | ||
|
|
f566ba139a | ||
|
|
ee289a21c0 | ||
|
|
b6400aae90 | ||
|
|
187f9c41db | ||
|
|
21919be5ee | ||
|
|
71abbab169 | ||
|
|
2bddb0012e | ||
|
|
73b41b5808 | ||
|
|
63c350826e | ||
|
|
084a723075 | ||
|
|
bb7f479548 | ||
|
|
cea7f4cd0a | ||
|
|
14d0dc5ed9 | ||
|
|
b9c4095e40 | ||
|
|
8eec35f134 | ||
|
|
ffe7bd1471 | ||
|
|
9ba96ad79d | ||
|
|
e2b081e66f | ||
|
|
68055f2d8a | ||
|
|
08c04147ba | ||
|
|
9e846b4d11 | ||
|
|
ac637ff448 | ||
|
|
23b888ff2d | ||
|
|
edea009534 |
@@ -39,6 +39,9 @@ runs:
|
||||
New-Item -ItemType Directory -ErrorAction SilentlyContinue $Env:HERMES_WS_DIR\icu
|
||||
New-Item -ItemType Directory -ErrorAction SilentlyContinue $Env:HERMES_WS_DIR\deps
|
||||
New-Item -ItemType Directory -ErrorAction SilentlyContinue $Env:HERMES_WS_DIR\win64-bin
|
||||
- name: Downgrade CMake
|
||||
shell: powershell
|
||||
run: choco install cmake --version 3.31.6 --force
|
||||
- name: Build HermesC for Windows
|
||||
shell: powershell
|
||||
run: |
|
||||
|
||||
@@ -56,7 +56,7 @@ runs:
|
||||
echo "Stop recording. Saving to screen.mp4"
|
||||
adb pull /sdcard/screen.mp4
|
||||
- name: Store tests result
|
||||
uses: actions/upload-artifact@v3
|
||||
uses: actions/upload-artifact@v4.3.4
|
||||
with:
|
||||
name: e2e_android_${{ inputs.app-id }}_report_${{ inputs.jsengine }}
|
||||
path: |
|
||||
|
||||
@@ -131,26 +131,6 @@ jobs:
|
||||
hermes-version: ${{ needs.prepare_hermes_workspace.outputs.hermes-version }}
|
||||
react-native-version: ${{ needs.prepare_hermes_workspace.outputs.react-native-version }}
|
||||
|
||||
build_android:
|
||||
runs-on: 8-core-ubuntu
|
||||
needs: [set_release_type]
|
||||
container:
|
||||
image: reactnativecommunity/react-native-android:latest
|
||||
env:
|
||||
TERM: "dumb"
|
||||
GRADLE_OPTS: "-Dorg.gradle.daemon=false"
|
||||
ORG_GRADLE_PROJECT_SIGNING_PWD: ${{ secrets.ORG_GRADLE_PROJECT_SIGNING_PWD }}
|
||||
ORG_GRADLE_PROJECT_SIGNING_KEY: ${{ secrets.ORG_GRADLE_PROJECT_SIGNING_KEY }}
|
||||
ORG_GRADLE_PROJECT_SONATYPE_USERNAME: ${{ secrets.ORG_GRADLE_PROJECT_SONATYPE_USERNAME }}
|
||||
ORG_GRADLE_PROJECT_SONATYPE_PASSWORD: ${{ secrets.ORG_GRADLE_PROJECT_SONATYPE_PASSWORD }}
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
- name: Build Android
|
||||
uses: ./.github/actions/build-android
|
||||
with:
|
||||
release-type: ${{ needs.set_release_type.outputs.RELEASE_TYPE }}
|
||||
|
||||
build_npm_package:
|
||||
runs-on: 8-core-ubuntu
|
||||
needs:
|
||||
@@ -160,7 +140,6 @@ jobs:
|
||||
build_hermes_macos,
|
||||
build_hermesc_linux,
|
||||
build_hermesc_windows,
|
||||
build_android,
|
||||
]
|
||||
container:
|
||||
image: reactnativecommunity/react-native-android:latest
|
||||
|
||||
@@ -54,6 +54,8 @@ nexusPublishing {
|
||||
sonatype {
|
||||
username.set(sonatypeUsername)
|
||||
password.set(sonatypePassword)
|
||||
nexusUrl.set(uri("https://ossrh-staging-api.central.sonatype.com/service/local/"))
|
||||
snapshotRepositoryUrl.set(uri("https://central.sonatype.com/repository/maven-snapshots/"))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+2
-2
@@ -49,8 +49,8 @@
|
||||
"@definitelytyped/dtslint": "^0.0.127",
|
||||
"@jest/create-cache-key-function": "^29.6.3",
|
||||
"@pkgjs/parseargs": "^0.11.0",
|
||||
"@react-native/metro-babel-transformer": "0.76.7",
|
||||
"@react-native/metro-config": "0.76.7",
|
||||
"@react-native/metro-babel-transformer": "0.76.9",
|
||||
"@react-native/metro-config": "0.76.9",
|
||||
"@tsconfig/node18": "1.0.1",
|
||||
"@types/react": "^18.2.6",
|
||||
"@typescript-eslint/parser": "^7.1.1",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@react-native/assets-registry",
|
||||
"version": "0.76.7",
|
||||
"version": "0.76.9",
|
||||
"description": "Asset support code for React Native.",
|
||||
"license": "MIT",
|
||||
"repository": {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@react-native/babel-plugin-codegen",
|
||||
"version": "0.76.7",
|
||||
"version": "0.76.9",
|
||||
"description": "Babel plugin to generate native module and view manager code for React Native.",
|
||||
"license": "MIT",
|
||||
"repository": {
|
||||
@@ -25,7 +25,7 @@
|
||||
"index.js"
|
||||
],
|
||||
"dependencies": {
|
||||
"@react-native/codegen": "0.76.7"
|
||||
"@react-native/codegen": "0.76.9"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@babel/core": "^7.25.2"
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@react-native/community-cli-plugin",
|
||||
"version": "0.76.7",
|
||||
"version": "0.76.9",
|
||||
"description": "Core CLI commands for React Native",
|
||||
"keywords": [
|
||||
"react-native",
|
||||
@@ -22,8 +22,8 @@
|
||||
"dist"
|
||||
],
|
||||
"dependencies": {
|
||||
"@react-native/dev-middleware": "0.76.7",
|
||||
"@react-native/metro-babel-transformer": "0.76.7",
|
||||
"@react-native/dev-middleware": "0.76.9",
|
||||
"@react-native/metro-babel-transformer": "0.76.9",
|
||||
"chalk": "^4.0.0",
|
||||
"execa": "^5.1.1",
|
||||
"invariant": "^2.2.4",
|
||||
@@ -38,10 +38,10 @@
|
||||
"metro-resolver": "^0.81.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@react-native-community/cli-server-api": "*"
|
||||
"@react-native-community/cli": "*"
|
||||
},
|
||||
"peerDependenciesMeta": {
|
||||
"@react-native-community/cli-server-api": {
|
||||
"@react-native-community/cli": {
|
||||
"optional": true
|
||||
}
|
||||
},
|
||||
|
||||
@@ -12,6 +12,8 @@
|
||||
import type {NextHandleFunction, Server} from 'connect';
|
||||
import type {TerminalReportableEvent} from 'metro/src/lib/TerminalReporter';
|
||||
|
||||
import typeof * as CLIServerAPI from '@react-native-community/cli-server-api';
|
||||
|
||||
import {logger} from '../../utils/logger';
|
||||
|
||||
type MiddlewareReturn = {
|
||||
@@ -65,11 +67,26 @@ const communityMiddlewareFallback = {
|
||||
// Attempt to use the community middleware if it exists, but fallback to
|
||||
// the stubs if it doesn't.
|
||||
try {
|
||||
const community = require('@react-native-community/cli-server-api');
|
||||
communityMiddlewareFallback.indexPageMiddleware =
|
||||
community.indexPageMiddleware;
|
||||
// `@react-native-community/cli` is an optional peer dependency of this
|
||||
// package, and should be a dev dependency of the host project (via the
|
||||
// community template's package.json).
|
||||
const communityCliPath = require.resolve('@react-native-community/cli');
|
||||
|
||||
// `@react-native-community/cli-server-api` is a dependency of
|
||||
// `@react-native-community/cli`, but is not re-exported by it, so we need
|
||||
// to resolve the former through the latter.
|
||||
const communityCliServerApiPath = require.resolve(
|
||||
'@react-native-community/cli-server-api',
|
||||
{paths: [communityCliPath]},
|
||||
);
|
||||
// $FlowIgnore[unsupported-syntax] dynamic import
|
||||
const communityCliServerApi: CLIServerAPI = require(
|
||||
communityCliServerApiPath,
|
||||
);
|
||||
communityMiddlewareFallback.createDevServerMiddleware =
|
||||
community.createDevServerMiddleware;
|
||||
communityCliServerApi.createDevServerMiddleware;
|
||||
communityMiddlewareFallback.indexPageMiddleware =
|
||||
communityCliServerApi.indexPageMiddleware;
|
||||
} catch {
|
||||
logger.debug(`⚠️ Unable to find @react-native-community/cli-server-api
|
||||
Starting the server without the community middleware.`);
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@react-native/core-cli-utils",
|
||||
"version": "0.76.7",
|
||||
"version": "0.76.9",
|
||||
"description": "React Native CLI library for Frameworks to build on",
|
||||
"license": "MIT",
|
||||
"main": "./src/index.flow.js",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@react-native/debugger-frontend",
|
||||
"version": "0.76.7",
|
||||
"version": "0.76.9",
|
||||
"description": "Debugger frontend for React Native based on Chrome DevTools",
|
||||
"keywords": [
|
||||
"react-native",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@react-native/dev-middleware",
|
||||
"version": "0.76.7",
|
||||
"version": "0.76.9",
|
||||
"description": "Dev server middleware for React Native",
|
||||
"keywords": [
|
||||
"react-native",
|
||||
@@ -23,7 +23,7 @@
|
||||
],
|
||||
"dependencies": {
|
||||
"@isaacs/ttlcache": "^1.4.1",
|
||||
"@react-native/debugger-frontend": "0.76.7",
|
||||
"@react-native/debugger-frontend": "0.76.9",
|
||||
"chrome-launcher": "^0.15.2",
|
||||
"chromium-edge-launcher": "^0.2.0",
|
||||
"connect": "^3.6.5",
|
||||
|
||||
@@ -37,7 +37,7 @@ const WS_DEBUGGER_URL = '/inspector/debug';
|
||||
const PAGES_LIST_JSON_URL = '/json';
|
||||
const PAGES_LIST_JSON_URL_2 = '/json/list';
|
||||
const PAGES_LIST_JSON_VERSION_URL = '/json/version';
|
||||
const MAX_PONG_LATENCY_MS = 5000;
|
||||
const MAX_PONG_LATENCY_MS = 60000;
|
||||
const DEBUGGER_HEARTBEAT_INTERVAL_MS = 10000;
|
||||
|
||||
const INTERNAL_ERROR_CODE = 1011;
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@react-native/eslint-config",
|
||||
"version": "0.76.7",
|
||||
"version": "0.76.9",
|
||||
"description": "ESLint config for React Native",
|
||||
"license": "MIT",
|
||||
"repository": {
|
||||
@@ -22,7 +22,7 @@
|
||||
"dependencies": {
|
||||
"@babel/core": "^7.25.2",
|
||||
"@babel/eslint-parser": "^7.25.1",
|
||||
"@react-native/eslint-plugin": "0.76.7",
|
||||
"@react-native/eslint-plugin": "0.76.9",
|
||||
"@typescript-eslint/eslint-plugin": "^7.1.1",
|
||||
"@typescript-eslint/parser": "^7.1.1",
|
||||
"eslint-config-prettier": "^8.5.0",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@react-native/eslint-plugin",
|
||||
"version": "0.76.7",
|
||||
"version": "0.76.9",
|
||||
"description": "ESLint rules for @react-native/eslint-config",
|
||||
"license": "MIT",
|
||||
"repository": {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@react-native/eslint-plugin-specs",
|
||||
"version": "0.76.7",
|
||||
"version": "0.76.9",
|
||||
"description": "ESLint rules to validate NativeModule and Component Specs",
|
||||
"license": "MIT",
|
||||
"repository": {
|
||||
@@ -27,7 +27,7 @@
|
||||
"@babel/core": "^7.25.2",
|
||||
"@babel/plugin-transform-flow-strip-types": "^7.25.2",
|
||||
"@babel/preset-flow": "^7.24.7",
|
||||
"@react-native/codegen": "0.76.7",
|
||||
"@react-native/codegen": "0.76.9",
|
||||
"make-dir": "^2.1.0",
|
||||
"pirates": "^4.0.1",
|
||||
"source-map-support": "0.5.0"
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@react-native/gradle-plugin",
|
||||
"version": "0.76.7",
|
||||
"version": "0.76.9",
|
||||
"description": "Gradle Plugin for React Native",
|
||||
"license": "MIT",
|
||||
"repository": {
|
||||
|
||||
+1
-1
@@ -34,7 +34,7 @@ internal object DependencyUtils {
|
||||
}
|
||||
}
|
||||
// We add the snapshot for users on nightlies.
|
||||
mavenRepoFromUrl("https://oss.sonatype.org/content/repositories/snapshots/") { repo ->
|
||||
mavenRepoFromUrl("https://central.sonatype.com/repository/maven-snapshots/") { repo ->
|
||||
repo.content { it.excludeGroup("org.webkit") }
|
||||
}
|
||||
repositories.mavenCentral { repo ->
|
||||
|
||||
+2
-2
@@ -44,7 +44,7 @@ class DependencyUtilsTest {
|
||||
|
||||
@Test
|
||||
fun configureRepositories_containsSnapshotRepo() {
|
||||
val repositoryURI = URI.create("https://oss.sonatype.org/content/repositories/snapshots/")
|
||||
val repositoryURI = URI.create("https://central.sonatype.com/repository/maven-snapshots/")
|
||||
val project = createProject()
|
||||
|
||||
configureRepositories(project, tempFolder.root)
|
||||
@@ -138,7 +138,7 @@ class DependencyUtilsTest {
|
||||
|
||||
@Test
|
||||
fun configureRepositories_snapshotRepoHasHigherPriorityThanMavenCentral() {
|
||||
val repositoryURI = URI.create("https://oss.sonatype.org/content/repositories/snapshots/")
|
||||
val repositoryURI = URI.create("https://central.sonatype.com/repository/maven-snapshots/")
|
||||
val mavenCentralURI = URI.create("https://repo.maven.apache.org/maven2/")
|
||||
val project = createProject()
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "helloworld",
|
||||
"version": "0.76.7",
|
||||
"version": "0.76.9",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"bootstrap": "node ./cli.js bootstrap",
|
||||
@@ -13,16 +13,16 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"react": "18.3.1",
|
||||
"react-native": "0.76.7"
|
||||
"react-native": "0.76.9"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@babel/core": "^7.25.2",
|
||||
"@babel/preset-env": "^7.25.3",
|
||||
"@babel/runtime": "^7.25.0",
|
||||
"@react-native/babel-preset": "0.76.7",
|
||||
"@react-native/core-cli-utils": "0.76.7",
|
||||
"@react-native/eslint-config": "0.76.7",
|
||||
"@react-native/metro-config": "0.76.7",
|
||||
"@react-native/babel-preset": "0.76.9",
|
||||
"@react-native/core-cli-utils": "0.76.9",
|
||||
"@react-native/eslint-config": "0.76.9",
|
||||
"@react-native/metro-config": "0.76.9",
|
||||
"babel-jest": "^29.6.3",
|
||||
"chalk": "^4.1.2",
|
||||
"commander": "^12.0.0",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@react-native/hermes-inspector-msggen",
|
||||
"version": "0.76.7",
|
||||
"version": "0.76.9",
|
||||
"private": true,
|
||||
"description": "Hermes Inspector Message Generator for React Native",
|
||||
"license": "MIT",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@react-native/metro-config",
|
||||
"version": "0.76.7",
|
||||
"version": "0.76.9",
|
||||
"description": "Metro configuration for React Native.",
|
||||
"license": "MIT",
|
||||
"repository": {
|
||||
@@ -26,8 +26,8 @@
|
||||
"dist"
|
||||
],
|
||||
"dependencies": {
|
||||
"@react-native/js-polyfills": "0.76.7",
|
||||
"@react-native/metro-babel-transformer": "0.76.7",
|
||||
"@react-native/js-polyfills": "0.76.9",
|
||||
"@react-native/metro-babel-transformer": "0.76.9",
|
||||
"metro-config": "^0.81.0",
|
||||
"metro-runtime": "^0.81.0"
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@react-native/normalize-colors",
|
||||
"version": "0.76.7",
|
||||
"version": "0.76.9",
|
||||
"description": "Color normalization for React Native.",
|
||||
"license": "MIT",
|
||||
"repository": {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@react-native/js-polyfills",
|
||||
"version": "0.76.7",
|
||||
"version": "0.76.9",
|
||||
"description": "Polyfills for React Native.",
|
||||
"license": "MIT",
|
||||
"repository": {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@react-native/babel-preset",
|
||||
"version": "0.76.7",
|
||||
"version": "0.76.9",
|
||||
"description": "Babel preset for React Native applications",
|
||||
"main": "src/index.js",
|
||||
"repository": {
|
||||
@@ -55,7 +55,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.76.7",
|
||||
"@react-native/babel-plugin-codegen": "0.76.9",
|
||||
"babel-plugin-syntax-hermes-parser": "^0.25.1",
|
||||
"babel-plugin-transform-flow-enums": "^0.0.2",
|
||||
"react-refresh": "^0.14.0"
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@react-native/metro-babel-transformer",
|
||||
"version": "0.76.7",
|
||||
"version": "0.76.9",
|
||||
"description": "Babel transformer for React Native applications.",
|
||||
"main": "src/index.js",
|
||||
"repository": {
|
||||
@@ -16,7 +16,7 @@
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@babel/core": "^7.25.2",
|
||||
"@react-native/babel-preset": "0.76.7",
|
||||
"@react-native/babel-preset": "0.76.9",
|
||||
"hermes-parser": "0.23.1",
|
||||
"nullthrows": "^1.1.1"
|
||||
},
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@react-native/bots",
|
||||
"description": "React Native Bots",
|
||||
"version": "0.76.7",
|
||||
"version": "0.76.9",
|
||||
"private": true,
|
||||
"license": "MIT",
|
||||
"repository": {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@react-native/codegen-typescript-test",
|
||||
"version": "0.76.7",
|
||||
"version": "0.76.9",
|
||||
"private": true,
|
||||
"description": "TypeScript related unit test for @react-native/codegen",
|
||||
"license": "MIT",
|
||||
@@ -19,7 +19,7 @@
|
||||
"prepare": "yarn run build"
|
||||
},
|
||||
"dependencies": {
|
||||
"@react-native/codegen": "0.76.7"
|
||||
"@react-native/codegen": "0.76.9"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@babel/core": "^7.25.2",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@react-native/codegen",
|
||||
"version": "0.76.7",
|
||||
"version": "0.76.9",
|
||||
"description": "Code generation tools for React Native",
|
||||
"license": "MIT",
|
||||
"repository": {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "react-native-info",
|
||||
"version": "0.76.7",
|
||||
"version": "0.76.9",
|
||||
"main": "build/index.js",
|
||||
"license": "MIT",
|
||||
"private": true,
|
||||
|
||||
@@ -7,8 +7,8 @@
|
||||
|
||||
plugins {
|
||||
id("com.facebook.react")
|
||||
alias(libs.plugins.android.library)
|
||||
alias(libs.plugins.kotlin.android)
|
||||
id("com.android.library")
|
||||
id("org.jetbrains.kotlin.android")
|
||||
}
|
||||
|
||||
android {
|
||||
|
||||
@@ -1,11 +1,12 @@
|
||||
{
|
||||
"name": "@react-native/popup-menu-android",
|
||||
"version": "0.76.7",
|
||||
"version": "0.76.9",
|
||||
"description": "PopupMenu for the Android platform",
|
||||
"main": "index.js",
|
||||
"files": [
|
||||
"js",
|
||||
"android",
|
||||
"react-native.config.js",
|
||||
"!android/build",
|
||||
"!**/__tests__",
|
||||
"!**/__fixtures__",
|
||||
@@ -15,9 +16,12 @@
|
||||
"react-native",
|
||||
"android"
|
||||
],
|
||||
"scripts": {
|
||||
"prepublishOnly": "node ./scripts/prepublish-popup-menu-android.js"
|
||||
},
|
||||
"license": "MIT",
|
||||
"devDependencies": {
|
||||
"@react-native/codegen": "0.76.7"
|
||||
"@react-native/codegen": "0.76.9"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@types/react": "^18.2.6",
|
||||
|
||||
+46
@@ -0,0 +1,46 @@
|
||||
/**
|
||||
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||
*
|
||||
* This source code is licensed under the MIT license found in the
|
||||
* LICENSE file in the root directory of this source tree.
|
||||
*/
|
||||
|
||||
/*
|
||||
* This script is used to update the android/build.gradle.kts file
|
||||
* with the versions from the libs.versions.toml file.
|
||||
*
|
||||
* This is needed because this package is consumed from source from
|
||||
* external users and we don't want to have several SDK version around to
|
||||
* maintain.
|
||||
*
|
||||
* It's invoked as a prepublish script for this package.
|
||||
*/
|
||||
|
||||
function extractVersion(tomlContent, regex) {
|
||||
const match = tomlContent.match(regex);
|
||||
return match && match[1] ? match[1] : null;
|
||||
}
|
||||
|
||||
const fs = require('fs');
|
||||
|
||||
const buildGradleKtsPath = 'android/build.gradle.kts';
|
||||
const libsVersionsTomlPath = '../react-native/gradle/libs.versions.toml';
|
||||
|
||||
console.log(`Updating ${buildGradleKtsPath} with versions from ${libsVersionsTomlPath}...`);
|
||||
|
||||
let gradleContent = fs.readFileSync(buildGradleKtsPath, 'utf8');
|
||||
const tomlContent = fs.readFileSync(libsVersionsTomlPath, 'utf8');
|
||||
|
||||
const compileSdk = extractVersion(tomlContent, /compileSdk\s*=\s*"(\d+)"/);
|
||||
const minSdk = extractVersion(tomlContent, /minSdk\s*=\s*"(\d+)"/);
|
||||
const buildTools = extractVersion(tomlContent, /buildTools\s*=\s*"([\d.]+)"/);
|
||||
|
||||
gradleContent = gradleContent
|
||||
.replace('libs.versions.compileSdk.get().toInt()', compileSdk)
|
||||
.replace('libs.versions.minSdk.get().toInt()', minSdk)
|
||||
.replace('libs.versions.buildTools.get()', `"${buildTools}"`)
|
||||
.replace('project(":packages:react-native:ReactAndroid")', '"com.facebook.react:react-android"');
|
||||
|
||||
fs.writeFileSync(buildGradleKtsPath, gradleContent);
|
||||
|
||||
console.log('Done!');
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@react-native/oss-library-example",
|
||||
"version": "0.76.7",
|
||||
"version": "0.76.9",
|
||||
"private": true,
|
||||
"description": "Package that includes native module exapmle, native component example, targets both the old and the new architecture. It should serve as an example of a real-world OSS library.",
|
||||
"license": "MIT",
|
||||
@@ -26,8 +26,8 @@
|
||||
],
|
||||
"devDependencies": {
|
||||
"@babel/core": "^7.25.2",
|
||||
"@react-native/babel-preset": "0.76.7",
|
||||
"react-native": "0.76.7"
|
||||
"@react-native/babel-preset": "0.76.9",
|
||||
"react-native": "0.76.9"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"react": "*",
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@react-native/test-renderer",
|
||||
"private": true,
|
||||
"version": "0.76.7",
|
||||
"version": "0.76.9",
|
||||
"description": "A Test rendering library for React Native",
|
||||
"license": "MIT",
|
||||
"devDependencies": {
|
||||
|
||||
@@ -32,6 +32,7 @@ header_search_paths = [
|
||||
"$(PODS_ROOT)/Headers/Private/React-Core",
|
||||
"$(PODS_ROOT)/boost",
|
||||
"$(PODS_ROOT)/DoubleConversion",
|
||||
"$(PODS_ROOT)/fast_float/include",
|
||||
"$(PODS_ROOT)/fmt/include",
|
||||
"$(PODS_ROOT)/RCT-Folly",
|
||||
"${PODS_ROOT}/Headers/Public/FlipperKit",
|
||||
|
||||
@@ -24,6 +24,7 @@ header_search_paths = [
|
||||
"\"$(PODS_ROOT)/RCT-Folly\"",
|
||||
"\"$(PODS_ROOT)/boost\"",
|
||||
"\"$(PODS_ROOT)/DoubleConversion\"",
|
||||
"\"$(PODS_ROOT)/fast_float/include\"",
|
||||
"\"$(PODS_ROOT)/fmt/include\"",
|
||||
"\"${PODS_ROOT}/Headers/Public/ReactCodegen/react/renderer/components\"",
|
||||
]
|
||||
@@ -48,7 +49,8 @@ Pod::Spec.new do |s|
|
||||
}
|
||||
|
||||
s.dependency "DoubleConversion"
|
||||
s.dependency "fmt", "9.1.0"
|
||||
s.dependency "fast_float"
|
||||
s.dependency "fmt"
|
||||
s.dependency "RCT-Folly", folly_version
|
||||
s.dependency "React-jsi"
|
||||
s.dependency "React-Core/RCTBlobHeaders"
|
||||
|
||||
@@ -16,7 +16,7 @@ const version: $ReadOnly<{
|
||||
}> = {
|
||||
major: 0,
|
||||
minor: 76,
|
||||
patch: 7,
|
||||
patch: 9,
|
||||
prerelease: null,
|
||||
};
|
||||
|
||||
|
||||
+11
-3
@@ -28,6 +28,15 @@ type FormDataPart =
|
||||
...
|
||||
};
|
||||
|
||||
/**
|
||||
* Encode a FormData filename compliant with RFC 2183
|
||||
*
|
||||
* https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Disposition#directives
|
||||
*/
|
||||
function encodeFilename(filename: string): string {
|
||||
return encodeURIComponent(filename.replace(/\//g, '_'));
|
||||
}
|
||||
|
||||
/**
|
||||
* Polyfill for XMLHttpRequest2 FormData API, allowing multipart POST requests
|
||||
* with mixed data (string, native files) to be submitted via XMLHttpRequest.
|
||||
@@ -82,9 +91,8 @@ class FormData {
|
||||
// content type (cf. web Blob interface.)
|
||||
if (typeof value === 'object' && !Array.isArray(value) && value) {
|
||||
if (typeof value.name === 'string') {
|
||||
headers['content-disposition'] += `; filename="${
|
||||
value.name
|
||||
}"; filename*=utf-8''${encodeURI(value.name)}`;
|
||||
headers['content-disposition'] +=
|
||||
`; filename="${encodeFilename(value.name)}"`;
|
||||
}
|
||||
if (typeof value.type === 'string') {
|
||||
headers['content-type'] = value.type;
|
||||
|
||||
@@ -8,6 +8,8 @@
|
||||
#import <React/RCTDataRequestHandler.h>
|
||||
#import <ReactCommon/RCTTurboModule.h>
|
||||
|
||||
#import <mutex>
|
||||
|
||||
#import "RCTNetworkPlugins.h"
|
||||
|
||||
@interface RCTDataRequestHandler () <RCTTurboModule>
|
||||
@@ -15,14 +17,22 @@
|
||||
|
||||
@implementation RCTDataRequestHandler {
|
||||
NSOperationQueue *_queue;
|
||||
std::mutex _operationHandlerMutexLock;
|
||||
}
|
||||
|
||||
RCT_EXPORT_MODULE()
|
||||
|
||||
- (void)invalidate
|
||||
{
|
||||
[_queue cancelAllOperations];
|
||||
_queue = nil;
|
||||
std::lock_guard<std::mutex> lock(_operationHandlerMutexLock);
|
||||
if (_queue) {
|
||||
for (NSOperation *operation in _queue.operations) {
|
||||
if (!operation.isCancelled && !operation.isFinished) {
|
||||
[operation cancel];
|
||||
}
|
||||
}
|
||||
_queue = nil;
|
||||
}
|
||||
}
|
||||
|
||||
- (BOOL)canHandleRequest:(NSURLRequest *)request
|
||||
@@ -32,6 +42,7 @@ RCT_EXPORT_MODULE()
|
||||
|
||||
- (NSOperation *)sendRequest:(NSURLRequest *)request withDelegate:(id<RCTURLRequestDelegate>)delegate
|
||||
{
|
||||
std::lock_guard<std::mutex> lock(_operationHandlerMutexLock);
|
||||
// Lazy setup
|
||||
if (!_queue) {
|
||||
_queue = [NSOperationQueue new];
|
||||
@@ -69,7 +80,10 @@ RCT_EXPORT_MODULE()
|
||||
|
||||
- (void)cancelRequest:(NSOperation *)op
|
||||
{
|
||||
[op cancel];
|
||||
std::lock_guard<std::mutex> lock(_operationHandlerMutexLock);
|
||||
if (!op.isCancelled && !op.isFinished) {
|
||||
[op cancel];
|
||||
}
|
||||
}
|
||||
|
||||
- (std::shared_ptr<facebook::react::TurboModule>)getTurboModule:
|
||||
|
||||
@@ -7,6 +7,8 @@
|
||||
|
||||
#import <React/RCTFileRequestHandler.h>
|
||||
|
||||
#import <mutex>
|
||||
|
||||
#import <MobileCoreServices/MobileCoreServices.h>
|
||||
|
||||
#import <React/RCTUtils.h>
|
||||
@@ -19,14 +21,22 @@
|
||||
|
||||
@implementation RCTFileRequestHandler {
|
||||
NSOperationQueue *_fileQueue;
|
||||
std::mutex _operationHandlerMutexLock;
|
||||
}
|
||||
|
||||
RCT_EXPORT_MODULE()
|
||||
|
||||
- (void)invalidate
|
||||
{
|
||||
[_fileQueue cancelAllOperations];
|
||||
_fileQueue = nil;
|
||||
std::lock_guard<std::mutex> lock(_operationHandlerMutexLock);
|
||||
if (_fileQueue) {
|
||||
for (NSOperation *operation in _fileQueue.operations) {
|
||||
if (!operation.isCancelled && !operation.isFinished) {
|
||||
[operation cancel];
|
||||
}
|
||||
}
|
||||
_fileQueue = nil;
|
||||
}
|
||||
}
|
||||
|
||||
- (BOOL)canHandleRequest:(NSURLRequest *)request
|
||||
@@ -36,6 +46,7 @@ RCT_EXPORT_MODULE()
|
||||
|
||||
- (NSOperation *)sendRequest:(NSURLRequest *)request withDelegate:(id<RCTURLRequestDelegate>)delegate
|
||||
{
|
||||
std::lock_guard<std::mutex> lock(_operationHandlerMutexLock);
|
||||
// Lazy setup
|
||||
if (!_fileQueue) {
|
||||
_fileQueue = [NSOperationQueue new];
|
||||
@@ -83,7 +94,10 @@ RCT_EXPORT_MODULE()
|
||||
|
||||
- (void)cancelRequest:(NSOperation *)op
|
||||
{
|
||||
[op cancel];
|
||||
std::lock_guard<std::mutex> lock(_operationHandlerMutexLock);
|
||||
if (!op.isCancelled && !op.isFinished) {
|
||||
[op cancel];
|
||||
}
|
||||
}
|
||||
|
||||
- (std::shared_ptr<facebook::react::TurboModule>)getTurboModule:
|
||||
|
||||
@@ -48,8 +48,7 @@ describe('FormData', function () {
|
||||
type: 'image/jpeg',
|
||||
name: 'photo.jpg',
|
||||
headers: {
|
||||
'content-disposition':
|
||||
'form-data; name="photo"; filename="photo.jpg"; filename*=utf-8\'\'photo.jpg',
|
||||
'content-disposition': 'form-data; name="photo"; filename="photo.jpg"',
|
||||
'content-type': 'image/jpeg',
|
||||
},
|
||||
fieldName: 'photo',
|
||||
@@ -70,7 +69,7 @@ describe('FormData', function () {
|
||||
name: '测试photo.jpg',
|
||||
headers: {
|
||||
'content-disposition':
|
||||
'form-data; name="photo"; filename="测试photo.jpg"; filename*=utf-8\'\'%E6%B5%8B%E8%AF%95photo.jpg',
|
||||
'form-data; name="photo"; filename="%E6%B5%8B%E8%AF%95photo.jpg"',
|
||||
'content-type': 'image/jpeg',
|
||||
},
|
||||
fieldName: 'photo',
|
||||
|
||||
@@ -21,7 +21,7 @@ folly_compiler_flags = folly_config[:compiler_flags]
|
||||
folly_version = folly_config[:version]
|
||||
|
||||
socket_rocket_config = get_socket_rocket_config()
|
||||
socket_rocket_version = socket_rocket_config[:version]
|
||||
socket_rocket_version = socket_rocket_config[:version]
|
||||
|
||||
boost_compiler_flags = '-Wno-documentation'
|
||||
|
||||
@@ -49,6 +49,7 @@ header_search_paths = [
|
||||
"$(PODS_TARGET_SRCROOT)/ReactCommon",
|
||||
"$(PODS_ROOT)/boost",
|
||||
"$(PODS_ROOT)/DoubleConversion",
|
||||
"$(PODS_ROOT)/fast_float/include",
|
||||
"$(PODS_ROOT)/fmt/include",
|
||||
"$(PODS_ROOT)/RCT-Folly",
|
||||
"${PODS_ROOT}/Headers/Public/FlipperKit",
|
||||
|
||||
@@ -23,7 +23,7 @@ NSDictionary* RCTGetReactNativeVersion(void)
|
||||
__rnVersion = @{
|
||||
RCTVersionMajor: @(0),
|
||||
RCTVersionMinor: @(76),
|
||||
RCTVersionPatch: @(7),
|
||||
RCTVersionPatch: @(9),
|
||||
RCTVersionPrerelease: [NSNull null],
|
||||
};
|
||||
});
|
||||
|
||||
@@ -20,14 +20,12 @@ folly_config = get_folly_config()
|
||||
folly_compiler_flags = folly_config[:compiler_flags]
|
||||
folly_version = folly_config[:version]
|
||||
|
||||
socket_rocket_config = get_socket_rocket_config()
|
||||
socket_rocket_version = socket_rocket_config[:version]
|
||||
|
||||
header_search_paths = [
|
||||
"\"$(PODS_ROOT)/boost\"",
|
||||
"\"$(PODS_TARGET_SRCROOT)/React/CoreModules\"",
|
||||
"\"$(PODS_ROOT)/RCT-Folly\"",
|
||||
"\"$(PODS_ROOT)/DoubleConversion\"",
|
||||
"\"$(PODS_ROOT)/fast_float/include\"",
|
||||
"\"$(PODS_ROOT)/fmt/include\"",
|
||||
"\"${PODS_ROOT}/Headers/Public/ReactCodegen/react/renderer/components\"",
|
||||
]
|
||||
@@ -51,14 +49,15 @@ Pod::Spec.new do |s|
|
||||
}
|
||||
s.framework = "UIKit"
|
||||
s.dependency "DoubleConversion"
|
||||
s.dependency "fmt", "9.1.0"
|
||||
s.dependency "RCT-Folly", folly_version
|
||||
s.dependency "RCTTypeSafety", version
|
||||
s.dependency "React-Core/CoreModulesHeaders", version
|
||||
s.dependency "React-RCTImage", version
|
||||
s.dependency "React-jsi", version
|
||||
s.dependency "fast_float"
|
||||
s.dependency "fmt"
|
||||
s.dependency "RCT-Folly"
|
||||
s.dependency "RCTTypeSafety"
|
||||
s.dependency "React-Core/CoreModulesHeaders"
|
||||
s.dependency "React-RCTImage"
|
||||
s.dependency "React-jsi"
|
||||
s.dependency 'React-RCTBlob'
|
||||
s.dependency "SocketRocket", socket_rocket_version
|
||||
s.dependency "SocketRocket"
|
||||
add_dependency(s, "React-jsinspector", :framework_name => 'jsinspector_modern')
|
||||
|
||||
add_dependency(s, "ReactCodegen")
|
||||
|
||||
@@ -98,14 +98,22 @@ using namespace facebook::react;
|
||||
NSNumber *id2 = arguments[arguments.count - 1];
|
||||
|
||||
second = ^(std::vector<folly::dynamic> args) {
|
||||
[bridge enqueueCallback:id2 args:convertFollyDynamicToId(folly::dynamic(args.begin(), args.end()))];
|
||||
folly::dynamic obj = folly::dynamic::array;
|
||||
for (auto &arg : args) {
|
||||
obj.push_back(std::move(arg));
|
||||
}
|
||||
[bridge enqueueCallback:id2 args:convertFollyDynamicToId(std::move(obj))];
|
||||
};
|
||||
} else {
|
||||
id1 = arguments[arguments.count - 1];
|
||||
}
|
||||
|
||||
first = ^(std::vector<folly::dynamic> args) {
|
||||
[bridge enqueueCallback:id1 args:convertFollyDynamicToId(folly::dynamic(args.begin(), args.end()))];
|
||||
folly::dynamic obj = folly::dynamic::array;
|
||||
for (auto &arg : args) {
|
||||
obj.push_back(std::move(arg));
|
||||
}
|
||||
[bridge enqueueCallback:id1 args:convertFollyDynamicToId(std::move(obj))];
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
+1
-7
@@ -99,11 +99,7 @@ static NSSet<NSNumber *> *returnKeyTypesSet;
|
||||
NSMutableDictionary<NSAttributedStringKey, id> *defaultAttributes =
|
||||
[_backedTextInputView.defaultTextAttributes mutableCopy];
|
||||
|
||||
#if !TARGET_OS_MACCATALYST
|
||||
RCTWeakEventEmitterWrapper *eventEmitterWrapper = [RCTWeakEventEmitterWrapper new];
|
||||
eventEmitterWrapper.eventEmitter = _eventEmitter;
|
||||
defaultAttributes[RCTAttributedStringEventEmitterKey] = eventEmitterWrapper;
|
||||
#endif
|
||||
defaultAttributes[RCTAttributedStringEventEmitterKey] = RCTWrapEventEmitter(_eventEmitter);
|
||||
|
||||
_backedTextInputView.defaultTextAttributes = defaultAttributes;
|
||||
}
|
||||
@@ -263,10 +259,8 @@ static NSSet<NSNumber *> *returnKeyTypesSet;
|
||||
if (newTextInputProps.textAttributes != oldTextInputProps.textAttributes) {
|
||||
NSMutableDictionary<NSAttributedStringKey, id> *defaultAttributes =
|
||||
RCTNSTextAttributesFromTextAttributes(newTextInputProps.getEffectiveTextAttributes(RCTFontSizeMultiplier()));
|
||||
#if !TARGET_OS_MACCATALYST
|
||||
defaultAttributes[RCTAttributedStringEventEmitterKey] =
|
||||
_backedTextInputView.defaultTextAttributes[RCTAttributedStringEventEmitterKey];
|
||||
#endif
|
||||
_backedTextInputView.defaultTextAttributes = defaultAttributes;
|
||||
}
|
||||
|
||||
|
||||
@@ -142,6 +142,7 @@ using namespace facebook::react;
|
||||
|
||||
if (!_view) {
|
||||
_view = [[RCTSurfaceView alloc] initWithSurface:(RCTSurface *)self];
|
||||
[self _updateLayoutContext];
|
||||
_touchHandler = [RCTSurfaceTouchHandler new];
|
||||
[_touchHandler attachToView:_view];
|
||||
}
|
||||
|
||||
@@ -26,6 +26,7 @@ header_search_paths = [
|
||||
"\"$(PODS_TARGET_SRCROOT)/ReactCommon\"",
|
||||
"\"$(PODS_ROOT)/boost\"",
|
||||
"\"$(PODS_ROOT)/DoubleConversion\"",
|
||||
"\"$(PODS_ROOT)/fast_float/include\"",
|
||||
"\"$(PODS_ROOT)/fmt/include\"",
|
||||
"\"$(PODS_ROOT)/RCT-Folly\"",
|
||||
"\"$(PODS_ROOT)/Headers/Private/React-Core\"",
|
||||
|
||||
@@ -8,5 +8,5 @@
|
||||
// LICENSE file in the root directory of this source tree.
|
||||
//
|
||||
|
||||
HEADER_SEARCH_PATHS = $(SRCROOT)/../third-party/boost_1_83_0 $(SRCROOT)/../third-party/folly-2024.01.01.00 $(SRCROOT)/../third-party/glog-0.3.5/src
|
||||
HEADER_SEARCH_PATHS = $(SRCROOT)/../third-party/boost_1_83_0 $(SRCROOT)/../third-party/folly-2024.10.14.00 $(SRCROOT)/../third-party/glog-0.3.5/src
|
||||
OTHER_CFLAGS = -DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1
|
||||
|
||||
@@ -2248,7 +2248,7 @@ public abstract interface class com/facebook/react/devsupport/HMRClient : com/fa
|
||||
public abstract fun disable ()V
|
||||
public abstract fun enable ()V
|
||||
public abstract fun registerBundle (Ljava/lang/String;)V
|
||||
public abstract fun setup (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;IZ)V
|
||||
public abstract fun setup (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;IZLjava/lang/String;)V
|
||||
}
|
||||
|
||||
public final class com/facebook/react/devsupport/InspectorFlags {
|
||||
|
||||
@@ -66,6 +66,7 @@ val prefabHeadersDir = project.file("$buildDir/prefab-headers")
|
||||
// Native versions which are defined inside the version catalog (libs.versions.toml)
|
||||
val BOOST_VERSION = libs.versions.boost.get()
|
||||
val DOUBLE_CONVERSION_VERSION = libs.versions.doubleconversion.get()
|
||||
val FAST_FLOAT_VERSION = libs.versions.fastFloat.get()
|
||||
val FMT_VERSION = libs.versions.fmt.get()
|
||||
val FOLLY_VERSION = libs.versions.folly.get()
|
||||
val GLOG_VERSION = libs.versions.glog.get()
|
||||
@@ -179,6 +180,7 @@ val preparePrefab by
|
||||
// react_nativemodule_core
|
||||
Pair(File(buildDir, "third-party-ndk/boost/boost_1_83_0/").absolutePath, ""),
|
||||
Pair(File(buildDir, "third-party-ndk/double-conversion/").absolutePath, ""),
|
||||
Pair(File(buildDir, "third-party-ndk/fast_float/include/").absolutePath, ""),
|
||||
Pair(File(buildDir, "third-party-ndk/fmt/include/").absolutePath, ""),
|
||||
Pair(File(buildDir, "third-party-ndk/folly/").absolutePath, ""),
|
||||
Pair(File(buildDir, "third-party-ndk/glog/exported/").absolutePath, ""),
|
||||
@@ -304,6 +306,27 @@ val prepareFolly by
|
||||
includeEmptyDirs = false
|
||||
into("$thirdPartyNdkDir/folly")
|
||||
}
|
||||
val downloadFastFloat by
|
||||
tasks.creating(Download::class) {
|
||||
dependsOn(createNativeDepsDirectories)
|
||||
src("https://github.com/fastfloat/fast_float/archive/v${FAST_FLOAT_VERSION}.tar.gz")
|
||||
onlyIfModified(true)
|
||||
overwrite(false)
|
||||
retries(5)
|
||||
quiet(true)
|
||||
dest(File(downloadsDir, "fast_float-${FAST_FLOAT_VERSION}.tar.gz"))
|
||||
}
|
||||
|
||||
val prepareFastFloat by
|
||||
tasks.registering(Copy::class) {
|
||||
dependsOn(if (dependenciesPath != null) emptyList() else listOf(downloadFastFloat))
|
||||
from(dependenciesPath ?: tarTree(downloadFastFloat.dest))
|
||||
from("src/main/jni/third-party/fast_float/")
|
||||
include("fast_float-${FAST_FLOAT_VERSION}/include/**/*", "CMakeLists.txt")
|
||||
eachFile { this.path = this.path.removePrefix("fast_float-${FAST_FLOAT_VERSION}/") }
|
||||
includeEmptyDirs = false
|
||||
into("$thirdPartyNdkDir/fast_float")
|
||||
}
|
||||
|
||||
val downloadFmt by
|
||||
tasks.creating(Download::class) {
|
||||
@@ -541,6 +564,7 @@ android {
|
||||
"generateCodegenArtifactsFromSchema",
|
||||
prepareBoost,
|
||||
prepareDoubleConversion,
|
||||
prepareFastFloat,
|
||||
prepareFmt,
|
||||
prepareFolly,
|
||||
prepareGlog,
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
VERSION_NAME=0.76.7
|
||||
VERSION_NAME=0.76.9
|
||||
react.internal.publishingGroup=com.facebook.react
|
||||
|
||||
android.useAndroidX=true
|
||||
|
||||
+3
-1
@@ -696,10 +696,12 @@ public abstract class DevSupportManagerBase implements DevSupportManager {
|
||||
URL sourceUrl = new URL(getSourceUrl());
|
||||
String path = sourceUrl.getPath().substring(1); // strip initial slash in path
|
||||
String host = sourceUrl.getHost();
|
||||
String scheme = sourceUrl.getProtocol();
|
||||
int port = sourceUrl.getPort() != -1 ? sourceUrl.getPort() : sourceUrl.getDefaultPort();
|
||||
mCurrentContext
|
||||
.getJSModule(HMRClient.class)
|
||||
.setup("android", path, host, port, mDevSettings.isHotModuleReplacementEnabled());
|
||||
.setup(
|
||||
"android", path, host, port, mDevSettings.isHotModuleReplacementEnabled(), scheme);
|
||||
} catch (MalformedURLException e) {
|
||||
showNewJavaError(e.getMessage(), e);
|
||||
}
|
||||
|
||||
+4
-1
@@ -26,8 +26,11 @@ public interface HMRClient extends JavaScriptModule {
|
||||
* @param host The host that the HMRClient should communicate with.
|
||||
* @param port The port that the HMRClient should communicate with on the host.
|
||||
* @param isEnabled Whether HMR is enabled initially.
|
||||
* @param scheme The protocol that the HMRClient should communicate with on the host (defaults to
|
||||
* http).
|
||||
*/
|
||||
void setup(String platform, String bundleEntry, String host, int port, boolean isEnabled);
|
||||
void setup(
|
||||
String platform, String bundleEntry, String host, int port, boolean isEnabled, String scheme);
|
||||
|
||||
/** Registers an additional JS bundle with HMRClient. */
|
||||
void registerBundle(String bundleUrl);
|
||||
|
||||
+13
-8
@@ -172,7 +172,7 @@ public class FabricUIManager
|
||||
private final CopyOnWriteArrayList<UIManagerListener> mListeners = new CopyOnWriteArrayList<>();
|
||||
|
||||
private boolean mMountNotificationScheduled = false;
|
||||
private final List<Integer> mMountedSurfaceIds = new ArrayList<>();
|
||||
private List<Integer> mSurfaceIdsWithPendingMountNotification = new ArrayList<>();
|
||||
|
||||
@ThreadConfined(UI)
|
||||
@NonNull
|
||||
@@ -1257,12 +1257,15 @@ public class FabricUIManager
|
||||
|
||||
// Collect surface IDs for all the mount items
|
||||
for (MountItem mountItem : mountItems) {
|
||||
if (mountItem != null && !mMountedSurfaceIds.contains(mountItem.getSurfaceId())) {
|
||||
mMountedSurfaceIds.add(mountItem.getSurfaceId());
|
||||
if (mountItem != null
|
||||
&& !mSurfaceIdsWithPendingMountNotification.contains(mountItem.getSurfaceId())) {
|
||||
mSurfaceIdsWithPendingMountNotification.add(mountItem.getSurfaceId());
|
||||
}
|
||||
}
|
||||
|
||||
if (!mMountNotificationScheduled && !mMountedSurfaceIds.isEmpty()) {
|
||||
if (!mMountNotificationScheduled && !mSurfaceIdsWithPendingMountNotification.isEmpty()) {
|
||||
mMountNotificationScheduled = true;
|
||||
|
||||
// Notify mount when the effects are visible and prevent mount hooks to
|
||||
// delay paint.
|
||||
UiThreadUtil.getUiThreadHandler()
|
||||
@@ -1272,17 +1275,19 @@ public class FabricUIManager
|
||||
public void run() {
|
||||
mMountNotificationScheduled = false;
|
||||
|
||||
// Create a copy in case mount hooks trigger more mutations
|
||||
final List<Integer> surfaceIdsToReportMount =
|
||||
mSurfaceIdsWithPendingMountNotification;
|
||||
mSurfaceIdsWithPendingMountNotification = new ArrayList<>();
|
||||
|
||||
final @Nullable Binding binding = mBinding;
|
||||
if (binding == null || mDestroyed) {
|
||||
mMountedSurfaceIds.clear();
|
||||
return;
|
||||
}
|
||||
|
||||
for (int surfaceId : mMountedSurfaceIds) {
|
||||
for (int surfaceId : surfaceIdsToReportMount) {
|
||||
binding.reportMount(surfaceId);
|
||||
}
|
||||
|
||||
mMountedSurfaceIds.clear();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
+1
-1
@@ -17,6 +17,6 @@ public class ReactNativeVersion {
|
||||
public static final Map<String, Object> VERSION = MapBuilder.<String, Object>of(
|
||||
"major", 0,
|
||||
"minor", 76,
|
||||
"patch", 7,
|
||||
"patch", 9,
|
||||
"prerelease", null);
|
||||
}
|
||||
|
||||
@@ -49,6 +49,7 @@ add_library(fbjni ALIAS fbjni::fbjni)
|
||||
add_react_third_party_ndk_subdir(glog)
|
||||
add_react_third_party_ndk_subdir(boost)
|
||||
add_react_third_party_ndk_subdir(double-conversion)
|
||||
add_react_third_party_ndk_subdir(fast_float)
|
||||
add_react_third_party_ndk_subdir(fmt)
|
||||
add_react_third_party_ndk_subdir(folly)
|
||||
add_react_third_party_ndk_subdir(jsc)
|
||||
|
||||
+13
@@ -0,0 +1,13 @@
|
||||
# Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||
#
|
||||
# This source code is licensed under the MIT license found in the
|
||||
# LICENSE file in the root directory of this source tree.
|
||||
|
||||
cmake_minimum_required(VERSION 3.13)
|
||||
set(CMAKE_VERBOSE_MAKEFILE on)
|
||||
|
||||
add_compile_options(-std=c++20 -fexceptions)
|
||||
|
||||
add_library(fast_float INTERFACE)
|
||||
|
||||
target_include_directories(fast_float INTERFACE include)
|
||||
+5
-6
@@ -26,11 +26,8 @@ SET(folly_FLAGS
|
||||
SET(folly_runtime_SRC
|
||||
folly/Conv.cpp
|
||||
folly/Demangle.cpp
|
||||
folly/dynamic.cpp
|
||||
folly/FileUtil.cpp
|
||||
folly/Format.cpp
|
||||
folly/json_pointer.cpp
|
||||
folly/json.cpp
|
||||
folly/ScopeGuard.cpp
|
||||
folly/SharedMutex.cpp
|
||||
folly/String.cpp
|
||||
@@ -42,6 +39,9 @@ SET(folly_runtime_SRC
|
||||
folly/detail/SplitStringSimd.cpp
|
||||
folly/detail/UniqueInstance.cpp
|
||||
folly/hash/SpookyHashV2.cpp
|
||||
folly/json/dynamic.cpp
|
||||
folly/json/json_pointer.cpp
|
||||
folly/json/json.cpp
|
||||
folly/lang/CString.cpp
|
||||
folly/lang/SafeAssert.cpp
|
||||
folly/lang/ToAscii.cpp
|
||||
@@ -51,8 +51,7 @@ SET(folly_runtime_SRC
|
||||
folly/synchronization/SanitizeThread.cpp
|
||||
folly/synchronization/ParkingLot.cpp
|
||||
folly/system/AtFork.cpp
|
||||
folly/system/ThreadId.cpp
|
||||
folly/system/ThreadName.cpp)
|
||||
folly/system/ThreadId.cpp)
|
||||
|
||||
add_library(folly_runtime STATIC ${folly_runtime_SRC})
|
||||
|
||||
@@ -67,4 +66,4 @@ target_compile_options(folly_runtime
|
||||
target_compile_options(folly_runtime PUBLIC ${folly_FLAGS})
|
||||
|
||||
target_include_directories(folly_runtime PUBLIC .)
|
||||
target_link_libraries(folly_runtime glog double-conversion boost fmt)
|
||||
target_link_libraries(folly_runtime glog double-conversion boost fmt fast_float)
|
||||
|
||||
@@ -53,7 +53,8 @@ Pod::Spec.new do |s|
|
||||
s.dependency "React-logger"
|
||||
s.dependency "glog"
|
||||
s.dependency "DoubleConversion"
|
||||
s.dependency "fmt", "9.1.0"
|
||||
s.dependency "fast_float"
|
||||
s.dependency "fmt"
|
||||
s.dependency "React-Core"
|
||||
s.dependency "React-debug"
|
||||
s.dependency "React-featureflags"
|
||||
|
||||
@@ -33,6 +33,7 @@ Pod::Spec.new do |s|
|
||||
"\"$(PODS_ROOT)/Headers/Private/Yoga\"",
|
||||
"\"$(PODS_TARGET_SRCROOT)\"",
|
||||
"\"$(PODS_ROOT)/DoubleConversion\"",
|
||||
"\"$(PODS_ROOT)/fast_float/include\"",
|
||||
"\"$(PODS_ROOT)/fmt/include\"",
|
||||
]
|
||||
|
||||
@@ -74,7 +75,8 @@ Pod::Spec.new do |s|
|
||||
s.dependency "React-logger"
|
||||
s.dependency "glog"
|
||||
s.dependency "DoubleConversion"
|
||||
s.dependency "fmt", "9.1.0"
|
||||
s.dependency "fast_float"
|
||||
s.dependency "fmt"
|
||||
s.dependency "React-Core"
|
||||
s.dependency "React-debug"
|
||||
s.dependency "React-featureflags"
|
||||
|
||||
@@ -30,6 +30,7 @@ header_search_path = [
|
||||
"\"$(PODS_ROOT)/RCT-Folly\"",
|
||||
"\"$(PODS_ROOT)/Headers/Private/Yoga\"",
|
||||
"\"$(PODS_ROOT)/DoubleConversion\"",
|
||||
"\"$(PODS_ROOT)/fast_float/include\"",
|
||||
"\"$(PODS_ROOT)/fmt/include\"",
|
||||
]
|
||||
|
||||
@@ -65,16 +66,17 @@ Pod::Spec.new do |s|
|
||||
s.module_name = 'React_FabricImage'
|
||||
end
|
||||
|
||||
s.dependency folly_dep_name, folly_version
|
||||
s.dependency folly_dep_name
|
||||
|
||||
s.dependency "React-jsiexecutor", version
|
||||
s.dependency "RCTRequired", version
|
||||
s.dependency "RCTTypeSafety", version
|
||||
s.dependency "React-jsiexecutor"
|
||||
s.dependency "RCTRequired"
|
||||
s.dependency "RCTTypeSafety"
|
||||
s.dependency "React-jsi"
|
||||
s.dependency "React-logger"
|
||||
s.dependency "glog"
|
||||
s.dependency "DoubleConversion"
|
||||
s.dependency "fmt", "9.1.0"
|
||||
s.dependency "fast_float"
|
||||
s.dependency "fmt"
|
||||
s.dependency "React-ImageManager"
|
||||
s.dependency "React-utils"
|
||||
s.dependency "Yoga"
|
||||
|
||||
@@ -34,7 +34,7 @@ Pod::Spec.new do |s|
|
||||
s.source = source
|
||||
s.header_dir = "ReactCommon" # Use global header_dir for all subspecs for use_frameworks! compatibility
|
||||
s.compiler_flags = folly_compiler_flags + ' ' + boost_compiler_flags
|
||||
s.pod_target_xcconfig = { "HEADER_SEARCH_PATHS" => "\"$(PODS_ROOT)/boost\" \"$(PODS_ROOT)/RCT-Folly\" \"$(PODS_ROOT)/DoubleConversion\" \"$(PODS_ROOT)/fmt/include\" \"$(PODS_ROOT)/Headers/Private/React-Core\"",
|
||||
s.pod_target_xcconfig = { "HEADER_SEARCH_PATHS" => "\"$(PODS_ROOT)/boost\" \"$(PODS_ROOT)/RCT-Folly\" \"$(PODS_ROOT)/DoubleConversion\" \"$(PODS_ROOT)/fast_float/include\" \"$(PODS_ROOT)/fmt/include\" \"$(PODS_ROOT)/Headers/Private/React-Core\"",
|
||||
"USE_HEADERMAP" => "YES",
|
||||
"DEFINES_MODULE" => "YES",
|
||||
"CLANG_CXX_LANGUAGE_STANDARD" => rct_cxx_language_standard(),
|
||||
@@ -46,14 +46,15 @@ Pod::Spec.new do |s|
|
||||
# TODO (T48588859): Restructure this target to align with dir structure: "react/nativemodule/..."
|
||||
# Note: Update this only when ready to minimize breaking changes.
|
||||
s.subspec "turbomodule" do |ss|
|
||||
ss.dependency "React-callinvoker", version
|
||||
ss.dependency "React-perflogger", version
|
||||
ss.dependency "React-cxxreact", version
|
||||
ss.dependency "React-jsi", version
|
||||
ss.dependency "RCT-Folly", folly_version
|
||||
ss.dependency "React-logger", version
|
||||
ss.dependency "React-callinvoker"
|
||||
ss.dependency "React-perflogger"
|
||||
ss.dependency "React-cxxreact"
|
||||
ss.dependency "React-jsi"
|
||||
ss.dependency "RCT-Folly"
|
||||
ss.dependency "React-logger"
|
||||
ss.dependency "DoubleConversion"
|
||||
ss.dependency "fmt", "9.1.0"
|
||||
ss.dependency "fast_float"
|
||||
ss.dependency "fmt"
|
||||
ss.dependency "glog"
|
||||
if using_hermes
|
||||
ss.dependency "hermes-engine"
|
||||
|
||||
@@ -47,9 +47,12 @@ namespace {
|
||||
CxxModule::Callback convertCallback(
|
||||
std::function<void(folly::dynamic)> callback) {
|
||||
return [callback = std::move(callback)](std::vector<folly::dynamic> args) {
|
||||
callback(folly::dynamic(
|
||||
std::make_move_iterator(args.begin()),
|
||||
std::make_move_iterator(args.end())));
|
||||
// after unpinning folly, can use folly::dynamic::array_range
|
||||
folly::dynamic obj = folly::dynamic::array;
|
||||
for (auto& arg : args) {
|
||||
obj.push_back(std::move(arg));
|
||||
}
|
||||
callback(std::move(obj));
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
@@ -35,24 +35,25 @@ Pod::Spec.new do |s|
|
||||
s.exclude_files = "SampleCxxModule.*"
|
||||
s.compiler_flags = folly_compiler_flags + ' ' + boost_compiler_flags
|
||||
s.pod_target_xcconfig = {
|
||||
"HEADER_SEARCH_PATHS" => "\"$(PODS_ROOT)/boost\" \"$(PODS_ROOT)/RCT-Folly\" \"$(PODS_ROOT)/DoubleConversion\" \"$(PODS_ROOT)/fmt/include\" \"$(PODS_CONFIGURATION_BUILD_DIR)/React-debug/React_debug.framework/Headers\" \"${PODS_CONFIGURATION_BUILD_DIR}/React-runtimeexecutor/React_runtimeexecutor.framework/Headers\"",
|
||||
"HEADER_SEARCH_PATHS" => "\"$(PODS_ROOT)/boost\" \"$(PODS_ROOT)/RCT-Folly\" \"$(PODS_ROOT)/DoubleConversion\" \"$(PODS_ROOT)/fast_float/include\" \"$(PODS_ROOT)/fmt/include\" \"$(PODS_CONFIGURATION_BUILD_DIR)/React-debug/React_debug.framework/Headers\" \"${PODS_CONFIGURATION_BUILD_DIR}/React-runtimeexecutor/React_runtimeexecutor.framework/Headers\"",
|
||||
"CLANG_CXX_LANGUAGE_STANDARD" => rct_cxx_language_standard()
|
||||
}
|
||||
s.header_dir = "cxxreact"
|
||||
|
||||
s.dependency "boost"
|
||||
s.dependency "DoubleConversion"
|
||||
s.dependency "fmt", "9.1.0"
|
||||
s.dependency "RCT-Folly", folly_version
|
||||
s.dependency "fast_float"
|
||||
s.dependency "fmt"
|
||||
s.dependency "RCT-Folly"
|
||||
s.dependency "glog"
|
||||
add_dependency(s, "React-jsinspector", :framework_name => 'jsinspector_modern')
|
||||
s.dependency "React-callinvoker", version
|
||||
s.dependency "React-runtimeexecutor", version
|
||||
s.dependency "React-perflogger", version
|
||||
s.dependency "React-jsi", version
|
||||
s.dependency "React-logger", version
|
||||
s.dependency "React-debug", version
|
||||
s.dependency "React-timing", version
|
||||
s.dependency "React-callinvoker"
|
||||
s.dependency "React-runtimeexecutor"
|
||||
s.dependency "React-perflogger"
|
||||
s.dependency "React-jsi"
|
||||
s.dependency "React-logger"
|
||||
s.dependency "React-debug"
|
||||
s.dependency "React-timing"
|
||||
|
||||
s.resource_bundles = {'React-cxxreact_privacy' => 'PrivacyInfo.xcprivacy'}
|
||||
|
||||
|
||||
@@ -17,7 +17,7 @@ namespace facebook::react {
|
||||
constexpr struct {
|
||||
int32_t Major = 0;
|
||||
int32_t Minor = 76;
|
||||
int32_t Patch = 7;
|
||||
int32_t Patch = 9;
|
||||
std::string_view Prerelease = "";
|
||||
} ReactNativeVersion;
|
||||
|
||||
|
||||
@@ -36,17 +36,18 @@ Pod::Spec.new do |s|
|
||||
s.public_header_files = "executor/HermesExecutorFactory.h"
|
||||
s.compiler_flags = folly_compiler_flags + ' ' + boost_compiler_flags
|
||||
s.pod_target_xcconfig = {
|
||||
"HEADER_SEARCH_PATHS" => "\"${PODS_ROOT}/hermes-engine/destroot/include\" \"$(PODS_TARGET_SRCROOT)/..\" \"$(PODS_ROOT)/boost\" \"$(PODS_ROOT)/RCT-Folly\" \"$(PODS_ROOT)/DoubleConversion\" \"$(PODS_ROOT)/fmt/include\"",
|
||||
"HEADER_SEARCH_PATHS" => "\"${PODS_ROOT}/hermes-engine/destroot/include\" \"$(PODS_TARGET_SRCROOT)/..\" \"$(PODS_ROOT)/boost\" \"$(PODS_ROOT)/RCT-Folly\" \"$(PODS_ROOT)/DoubleConversion\" \"$(PODS_ROOT)/fast_float/include\" \"$(PODS_ROOT)/fmt/include\"",
|
||||
"CLANG_CXX_LANGUAGE_STANDARD" => rct_cxx_language_standard()
|
||||
}
|
||||
s.header_dir = "reacthermes"
|
||||
s.dependency "React-cxxreact", version
|
||||
s.dependency "React-jsiexecutor", version
|
||||
s.dependency "React-cxxreact"
|
||||
s.dependency "React-jsiexecutor"
|
||||
add_dependency(s, "React-jsinspector", :framework_name => 'jsinspector_modern')
|
||||
s.dependency "React-perflogger", version
|
||||
s.dependency "RCT-Folly", folly_version
|
||||
s.dependency "React-perflogger"
|
||||
s.dependency "RCT-Folly"
|
||||
s.dependency "DoubleConversion"
|
||||
s.dependency "fmt", "9.1.0"
|
||||
s.dependency "fast_float"
|
||||
s.dependency "fmt"
|
||||
s.dependency "glog"
|
||||
s.dependency "hermes-engine"
|
||||
s.dependency "React-jsi"
|
||||
|
||||
@@ -37,13 +37,14 @@ Pod::Spec.new do |s|
|
||||
|
||||
s.header_dir = "jsi"
|
||||
s.compiler_flags = folly_compiler_flags + ' ' + boost_compiler_flags
|
||||
s.pod_target_xcconfig = { "HEADER_SEARCH_PATHS" => "\"$(PODS_ROOT)/boost\" \"$(PODS_ROOT)/RCT-Folly\" \"$(PODS_ROOT)/DoubleConversion\" \"$(PODS_ROOT)/fmt/include\"",
|
||||
s.pod_target_xcconfig = { "HEADER_SEARCH_PATHS" => "\"$(PODS_ROOT)/boost\" \"$(PODS_ROOT)/RCT-Folly\" \"$(PODS_ROOT)/DoubleConversion\" \"$(PODS_ROOT)/fast_float/include\" \"$(PODS_ROOT)/fmt/include\"",
|
||||
"DEFINES_MODULE" => "YES" }
|
||||
|
||||
s.dependency "boost"
|
||||
s.dependency "DoubleConversion"
|
||||
s.dependency "fmt", "9.1.0"
|
||||
s.dependency "RCT-Folly", folly_version
|
||||
s.dependency "fast_float"
|
||||
s.dependency "fmt"
|
||||
s.dependency "RCT-Folly"
|
||||
s.dependency "glog"
|
||||
|
||||
s.source_files = "**/*.{cpp,h}"
|
||||
|
||||
@@ -32,16 +32,17 @@ Pod::Spec.new do |s|
|
||||
s.source = source
|
||||
s.source_files = "jsireact/*.{cpp,h}"
|
||||
s.compiler_flags = folly_compiler_flags + ' ' + boost_compiler_flags
|
||||
s.pod_target_xcconfig = { "HEADER_SEARCH_PATHS" => "\"$(PODS_ROOT)/boost\" \"$(PODS_ROOT)/RCT-Folly\" \"$(PODS_ROOT)/DoubleConversion\" \"$(PODS_ROOT)/fmt/include\"",
|
||||
s.pod_target_xcconfig = { "HEADER_SEARCH_PATHS" => "\"$(PODS_ROOT)/boost\" \"$(PODS_ROOT)/RCT-Folly\" \"$(PODS_ROOT)/DoubleConversion\" \"$(PODS_ROOT)/fast_float/include\" \"$(PODS_ROOT)/fmt/include\"",
|
||||
"CLANG_CXX_LANGUAGE_STANDARD" => rct_cxx_language_standard() }
|
||||
s.header_dir = "jsireact"
|
||||
|
||||
s.dependency "React-cxxreact", version
|
||||
s.dependency "React-jsi", version
|
||||
s.dependency "React-perflogger", version
|
||||
s.dependency "RCT-Folly", folly_version
|
||||
s.dependency "React-cxxreact"
|
||||
s.dependency "React-jsi"
|
||||
s.dependency "React-perflogger"
|
||||
s.dependency "RCT-Folly"
|
||||
s.dependency "DoubleConversion"
|
||||
s.dependency "fmt", "9.1.0"
|
||||
s.dependency "fast_float"
|
||||
s.dependency "fmt"
|
||||
s.dependency "glog"
|
||||
add_dependency(s, "React-jsinspector", :framework_name => 'jsinspector_modern')
|
||||
|
||||
|
||||
@@ -37,7 +37,7 @@ Pod::Spec.new do |s|
|
||||
s.header_dir = 'jsinspector-modern'
|
||||
s.compiler_flags = folly_compiler_flags
|
||||
s.pod_target_xcconfig = {
|
||||
"HEADER_SEARCH_PATHS" => "\"$(PODS_TARGET_SRCROOT)/..\" \"$(PODS_ROOT)/boost\" \"$(PODS_ROOT)/RCT-Folly\" \"$(PODS_ROOT)/DoubleConversion\" \"$(PODS_ROOT)/fmt/include\"",
|
||||
"HEADER_SEARCH_PATHS" => "\"$(PODS_TARGET_SRCROOT)/..\" \"$(PODS_ROOT)/boost\" \"$(PODS_ROOT)/RCT-Folly\" \"$(PODS_ROOT)/DoubleConversion\" \"$(PODS_ROOT)/fast_float/include\" \"$(PODS_ROOT)/fmt/include\"",
|
||||
"CLANG_CXX_LANGUAGE_STANDARD" => rct_cxx_language_standard(),
|
||||
"DEFINES_MODULE" => "YES"
|
||||
}.merge!(use_frameworks ? {
|
||||
@@ -49,12 +49,12 @@ Pod::Spec.new do |s|
|
||||
end
|
||||
|
||||
s.dependency "glog"
|
||||
s.dependency "RCT-Folly", folly_version
|
||||
s.dependency "RCT-Folly"
|
||||
s.dependency "React-featureflags"
|
||||
s.dependency "DoubleConversion"
|
||||
s.dependency "React-runtimeexecutor", version
|
||||
s.dependency "React-runtimeexecutor"
|
||||
s.dependency "React-jsi"
|
||||
s.dependency "React-perflogger", version
|
||||
s.dependency "React-perflogger"
|
||||
if ENV["USE_HERMES"] == nil || ENV["USE_HERMES"] == "1"
|
||||
s.dependency "hermes-engine"
|
||||
end
|
||||
|
||||
+1
-1
@@ -34,7 +34,7 @@ Pod::Spec.new do |s|
|
||||
s.platforms = min_supported_versions
|
||||
s.source = source
|
||||
s.compiler_flags = folly_compiler_flags + ' ' + boost_compiler_flags
|
||||
s.pod_target_xcconfig = { "HEADER_SEARCH_PATHS" => "\"$(PODS_ROOT)/boost\" \"$(PODS_ROOT)/RCT-Folly\" \"$(PODS_ROOT)/DoubleConversion\" \"$(PODS_ROOT)/fmt/include\" \"$(PODS_ROOT)/Headers/Private/React-Core\"",
|
||||
s.pod_target_xcconfig = { "HEADER_SEARCH_PATHS" => "\"$(PODS_ROOT)/boost\" \"$(PODS_ROOT)/RCT-Folly\" \"$(PODS_ROOT)/DoubleConversion\" \"$(PODS_ROOT)/fast_float/include\" \"$(PODS_ROOT)/fmt/include\" \"$(PODS_ROOT)/Headers/Private/React-Core\"",
|
||||
"USE_HEADERMAP" => "YES",
|
||||
"CLANG_CXX_LANGUAGE_STANDARD" => rct_cxx_language_standard(),
|
||||
"GCC_WARN_PEDANTIC" => "YES" }
|
||||
|
||||
+24
-13
@@ -57,7 +57,7 @@ static jsi::Value convertNSNumberToJSINumber(jsi::Runtime &runtime, NSNumber *va
|
||||
|
||||
static jsi::String convertNSStringToJSIString(jsi::Runtime &runtime, NSString *value)
|
||||
{
|
||||
return jsi::String::createFromUtf8(runtime, [value UTF8String] ?: "");
|
||||
return jsi::String::createFromUtf8(runtime, [value UTF8String] ? [value UTF8String] : "");
|
||||
}
|
||||
|
||||
static jsi::Object convertNSDictionaryToJSIObject(jsi::Runtime &runtime, NSDictionary *value)
|
||||
@@ -195,7 +195,11 @@ static jsi::Value createJSRuntimeError(jsi::Runtime &runtime, const std::string
|
||||
/**
|
||||
* Creates JSError with current JS runtime and NSException stack trace.
|
||||
*/
|
||||
static jsi::JSError convertNSExceptionToJSError(jsi::Runtime &runtime, NSException *exception)
|
||||
static jsi::JSError convertNSExceptionToJSError(
|
||||
jsi::Runtime &runtime,
|
||||
NSException *exception,
|
||||
const std::string &moduleName,
|
||||
const std::string &methodName)
|
||||
{
|
||||
std::string reason = [exception.reason UTF8String];
|
||||
|
||||
@@ -206,7 +210,8 @@ static jsi::JSError convertNSExceptionToJSError(jsi::Runtime &runtime, NSExcepti
|
||||
cause.setProperty(
|
||||
runtime, "stackReturnAddresses", convertNSArrayToJSIArray(runtime, exception.callStackReturnAddresses));
|
||||
|
||||
jsi::Value error = createJSRuntimeError(runtime, "Exception in HostFunction: " + reason);
|
||||
std::string message = moduleName + "." + methodName + " raised an exception: " + reason;
|
||||
jsi::Value error = createJSRuntimeError(runtime, message);
|
||||
error.asObject(runtime).setProperty(runtime, "cause", std::move(cause));
|
||||
return {runtime, std::move(error)};
|
||||
}
|
||||
@@ -338,28 +343,34 @@ id ObjCTurboModule::performMethodInvocation(
|
||||
}
|
||||
|
||||
if (isSync) {
|
||||
TurboModulePerfLogger::syncMethodCallExecutionStart(moduleName, methodNameStr.c_str());
|
||||
TurboModulePerfLogger::syncMethodCallExecutionStart(moduleName, methodName);
|
||||
} else {
|
||||
TurboModulePerfLogger::asyncMethodCallExecutionStart(moduleName, methodNameStr.c_str(), asyncCallCounter);
|
||||
TurboModulePerfLogger::asyncMethodCallExecutionStart(moduleName, methodName, asyncCallCounter);
|
||||
}
|
||||
|
||||
@try {
|
||||
[inv invokeWithTarget:strongModule];
|
||||
} @catch (NSException *exception) {
|
||||
throw convertNSExceptionToJSError(runtime, exception);
|
||||
if (isSync) {
|
||||
// We can only convert NSException to JSError in sync method calls.
|
||||
// See https://github.com/reactwg/react-native-new-architecture/discussions/276#discussioncomment-12567155
|
||||
throw convertNSExceptionToJSError(runtime, exception, std::string{moduleName}, methodNameStr);
|
||||
} else {
|
||||
@throw exception;
|
||||
}
|
||||
} @finally {
|
||||
[retainedObjectsForInvocation removeAllObjects];
|
||||
}
|
||||
|
||||
if (!isSync) {
|
||||
TurboModulePerfLogger::asyncMethodCallExecutionEnd(moduleName, methodNameStr.c_str(), asyncCallCounter);
|
||||
TurboModulePerfLogger::asyncMethodCallExecutionEnd(moduleName, methodName, asyncCallCounter);
|
||||
return;
|
||||
}
|
||||
|
||||
void *rawResult;
|
||||
[inv getReturnValue:&rawResult];
|
||||
result = (__bridge id)rawResult;
|
||||
TurboModulePerfLogger::syncMethodCallExecutionEnd(moduleName, methodNameStr.c_str());
|
||||
TurboModulePerfLogger::syncMethodCallExecutionEnd(moduleName, methodName);
|
||||
};
|
||||
|
||||
if (isSync) {
|
||||
@@ -401,23 +412,23 @@ void ObjCTurboModule::performVoidMethodInvocation(
|
||||
}
|
||||
|
||||
if (shouldVoidMethodsExecuteSync_) {
|
||||
TurboModulePerfLogger::syncMethodCallExecutionStart(moduleName, methodNameStr.c_str());
|
||||
TurboModulePerfLogger::syncMethodCallExecutionStart(moduleName, methodName);
|
||||
} else {
|
||||
TurboModulePerfLogger::asyncMethodCallExecutionStart(moduleName, methodNameStr.c_str(), asyncCallCounter);
|
||||
TurboModulePerfLogger::asyncMethodCallExecutionStart(moduleName, methodName, asyncCallCounter);
|
||||
}
|
||||
|
||||
@try {
|
||||
[inv invokeWithTarget:strongModule];
|
||||
} @catch (NSException *exception) {
|
||||
throw convertNSExceptionToJSError(runtime, exception);
|
||||
throw convertNSExceptionToJSError(runtime, exception, std::string{moduleName}, methodNameStr);
|
||||
} @finally {
|
||||
[retainedObjectsForInvocation removeAllObjects];
|
||||
}
|
||||
|
||||
if (shouldVoidMethodsExecuteSync_) {
|
||||
TurboModulePerfLogger::syncMethodCallExecutionEnd(moduleName, methodNameStr.c_str());
|
||||
TurboModulePerfLogger::syncMethodCallExecutionEnd(moduleName, methodName);
|
||||
} else {
|
||||
TurboModulePerfLogger::asyncMethodCallExecutionEnd(moduleName, methodNameStr.c_str(), asyncCallCounter);
|
||||
TurboModulePerfLogger::asyncMethodCallExecutionEnd(moduleName, methodName, asyncCallCounter);
|
||||
}
|
||||
|
||||
return;
|
||||
|
||||
+3
-1
@@ -27,6 +27,7 @@ header_search_paths = [
|
||||
"\"$(PODS_ROOT)/boost\"",
|
||||
"\"$(PODS_ROOT)/RCT-Folly\"",
|
||||
"\"$(PODS_ROOT)/DoubleConversion\"",
|
||||
"\"$(PODS_ROOT)/fast_float/include\"",
|
||||
"\"$(PODS_ROOT)/fmt/include\"",
|
||||
"\"$(PODS_ROOT)/Headers/Private/React-Core\"",
|
||||
]
|
||||
@@ -62,7 +63,8 @@ Pod::Spec.new do |s|
|
||||
|
||||
s.dependency "RCT-Folly"
|
||||
s.dependency "DoubleConversion"
|
||||
s.dependency "fmt", "9.1.0"
|
||||
s.dependency "fast_float"
|
||||
s.dependency "fmt"
|
||||
s.dependency "React-Core"
|
||||
s.dependency "React-cxxreact"
|
||||
s.dependency "React-jsi"
|
||||
|
||||
@@ -24,6 +24,7 @@ header_search_paths = [
|
||||
"\"$(PODS_ROOT)/RCT-Folly\"",
|
||||
"\"$(PODS_ROOT)/boost\" \"$(PODS_ROOT)/RCT-Folly\"",
|
||||
"\"$(PODS_ROOT)/DoubleConversion\"",
|
||||
"\"$(PODS_ROOT)/fast_float/include\"",
|
||||
"\"$(PODS_ROOT)/fmt/include\""
|
||||
]
|
||||
|
||||
@@ -55,8 +56,9 @@ Pod::Spec.new do |s|
|
||||
s.header_mappings_dir = "../../.."
|
||||
end
|
||||
|
||||
s.dependency "RCT-Folly", folly_version
|
||||
s.dependency "RCT-Folly"
|
||||
s.dependency "DoubleConversion"
|
||||
s.dependency "fmt", "9.1.0"
|
||||
s.dependency "fast_float"
|
||||
s.dependency "fmt"
|
||||
add_dependency(s, "React-debug")
|
||||
end
|
||||
|
||||
@@ -29,6 +29,7 @@ Pod::Spec.new do |s|
|
||||
"\"$(PODS_TARGET_SRCROOT)/../../../\"",
|
||||
"\"$(PODS_ROOT)/RCT-Folly\"",
|
||||
"\"$(PODS_ROOT)/DoubleConversion\"",
|
||||
"\"$(PODS_ROOT)/fast_float/include\"",
|
||||
"\"$(PODS_ROOT)/fmt/include\""
|
||||
]
|
||||
|
||||
@@ -61,10 +62,11 @@ Pod::Spec.new do |s|
|
||||
"CLANG_CXX_LANGUAGE_STANDARD" => rct_cxx_language_standard() }
|
||||
|
||||
s.dependency "glog"
|
||||
s.dependency "RCT-Folly/Fabric", folly_version
|
||||
s.dependency "RCT-Folly/Fabric"
|
||||
s.dependency "React-jsi"
|
||||
s.dependency "React-jsiexecutor"
|
||||
s.dependency "React-utils"
|
||||
s.dependency "DoubleConversion"
|
||||
s.dependency "fmt", "9.1.0"
|
||||
s.dependency "fast_float"
|
||||
s.dependency "fmt"
|
||||
end
|
||||
|
||||
+1
@@ -27,6 +27,7 @@ Pod::Spec.new do |s|
|
||||
"\"$(PODS_TARGET_SRCROOT)\"",
|
||||
"\"$(PODS_ROOT)/RCT-Folly\"",
|
||||
"\"$(PODS_ROOT)/DoubleConversion\"",
|
||||
"\"$(PODS_ROOT)/fast_float/include\"",
|
||||
"\"$(PODS_ROOT)/fmt/include\"",
|
||||
].join(" ")
|
||||
|
||||
|
||||
+24
-3
@@ -52,8 +52,29 @@ BOOL RCTIsAttributedStringEffectivelySame(
|
||||
NSDictionary<NSAttributedStringKey, id> *insensitiveAttributes,
|
||||
const facebook::react::TextAttributes &baseTextAttributes);
|
||||
|
||||
@interface RCTWeakEventEmitterWrapper : NSObject
|
||||
@property (nonatomic, assign) facebook::react::SharedEventEmitter eventEmitter;
|
||||
@end
|
||||
static inline NSData *RCTWrapEventEmitter(const facebook::react::SharedEventEmitter &eventEmitter)
|
||||
{
|
||||
auto eventEmitterPtr = new std::weak_ptr<const facebook::react::EventEmitter>(eventEmitter);
|
||||
return [[NSData alloc] initWithBytesNoCopy:eventEmitterPtr
|
||||
length:sizeof(eventEmitterPtr)
|
||||
deallocator:^(void *ptrToDelete, NSUInteger) {
|
||||
delete (std::weak_ptr<facebook::react::EventEmitter> *)ptrToDelete;
|
||||
}];
|
||||
}
|
||||
|
||||
static inline facebook::react::SharedEventEmitter RCTUnwrapEventEmitter(NSData *data)
|
||||
{
|
||||
if (data.length == 0) {
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
auto weakPtr = dynamic_cast<std::weak_ptr<const facebook::react::EventEmitter> *>(
|
||||
(std::weak_ptr<const facebook::react::EventEmitter> *)data.bytes);
|
||||
if (weakPtr) {
|
||||
return weakPtr->lock();
|
||||
}
|
||||
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
|
||||
+1
-43
@@ -16,45 +16,6 @@
|
||||
|
||||
using namespace facebook::react;
|
||||
|
||||
@implementation RCTWeakEventEmitterWrapper {
|
||||
std::weak_ptr<const EventEmitter> _weakEventEmitter;
|
||||
}
|
||||
|
||||
- (void)setEventEmitter:(SharedEventEmitter)eventEmitter
|
||||
{
|
||||
_weakEventEmitter = eventEmitter;
|
||||
}
|
||||
|
||||
- (SharedEventEmitter)eventEmitter
|
||||
{
|
||||
return _weakEventEmitter.lock();
|
||||
}
|
||||
|
||||
- (void)dealloc
|
||||
{
|
||||
_weakEventEmitter.reset();
|
||||
}
|
||||
|
||||
- (BOOL)isEqual:(id)object
|
||||
{
|
||||
// We consider the underlying EventEmitter as the identity
|
||||
if (![object isKindOfClass:[self class]]) {
|
||||
return NO;
|
||||
}
|
||||
|
||||
auto thisEventEmitter = [self eventEmitter];
|
||||
auto otherEventEmitter = [((RCTWeakEventEmitterWrapper *)object) eventEmitter];
|
||||
return thisEventEmitter == otherEventEmitter;
|
||||
}
|
||||
|
||||
- (NSUInteger)hash
|
||||
{
|
||||
// We consider the underlying EventEmitter as the identity
|
||||
return (NSUInteger)_weakEventEmitter.lock().get();
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
inline static UIFontWeight RCTUIFontWeightFromInteger(NSInteger fontWeight)
|
||||
{
|
||||
assert(fontWeight > 50);
|
||||
@@ -405,10 +366,8 @@ static NSMutableAttributedString *RCTNSAttributedStringFragmentWithAttributesFro
|
||||
{
|
||||
auto nsAttributedStringFragment = RCTNSAttributedStringFragmentFromFragment(fragment, placeholderImage);
|
||||
|
||||
#if !TARGET_OS_MACCATALYST
|
||||
if (fragment.parentShadowView.componentHandle) {
|
||||
RCTWeakEventEmitterWrapper *eventEmitterWrapper = [RCTWeakEventEmitterWrapper new];
|
||||
eventEmitterWrapper.eventEmitter = fragment.parentShadowView.eventEmitter;
|
||||
auto eventEmitterWrapper = RCTWrapEventEmitter(fragment.parentShadowView.eventEmitter);
|
||||
|
||||
NSDictionary<NSAttributedStringKey, id> *additionalTextAttributes =
|
||||
@{RCTAttributedStringEventEmitterKey : eventEmitterWrapper};
|
||||
@@ -416,7 +375,6 @@ static NSMutableAttributedString *RCTNSAttributedStringFragmentWithAttributesFro
|
||||
[nsAttributedStringFragment addAttributes:additionalTextAttributes
|
||||
range:NSMakeRange(0, nsAttributedStringFragment.length)];
|
||||
}
|
||||
#endif
|
||||
|
||||
return nsAttributedStringFragment;
|
||||
}
|
||||
|
||||
+4
-5
@@ -280,11 +280,10 @@ static NSLineBreakMode RCTNSLineBreakModeFromEllipsizeMode(EllipsizeMode ellipsi
|
||||
// after (fraction == 1.0) the last character, then the attribute is valid.
|
||||
if (textStorage.length > 0 && (fraction > 0 || characterIndex > 0) &&
|
||||
(fraction < 1 || characterIndex < textStorage.length - 1)) {
|
||||
RCTWeakEventEmitterWrapper *eventEmitterWrapper =
|
||||
(RCTWeakEventEmitterWrapper *)[textStorage attribute:RCTAttributedStringEventEmitterKey
|
||||
atIndex:characterIndex
|
||||
effectiveRange:NULL];
|
||||
return eventEmitterWrapper.eventEmitter;
|
||||
NSData *eventEmitterWrapper = (NSData *)[textStorage attribute:RCTAttributedStringEventEmitterKey
|
||||
atIndex:characterIndex
|
||||
effectiveRange:NULL];
|
||||
return RCTUnwrapEventEmitter(eventEmitterWrapper);
|
||||
}
|
||||
|
||||
return nil;
|
||||
|
||||
@@ -24,6 +24,7 @@ header_search_paths = [
|
||||
"\"$(PODS_TARGET_SRCROOT)/..\"",
|
||||
"\"$(PODS_ROOT)/RCT-Folly\"",
|
||||
"\"$(PODS_ROOT)/DoubleConversion\"",
|
||||
"\"$(PODS_ROOT)/fast_float/include\"",
|
||||
"\"$(PODS_ROOT)/fmt/include\""
|
||||
]
|
||||
|
||||
|
||||
Vendored
+11
-2
@@ -23,6 +23,15 @@ const deprecated = () => {
|
||||
);
|
||||
};
|
||||
|
||||
function findCommunityCli(startDir = process.cwd()) {
|
||||
// With isolated node_modules (eg pnpm), we won't be able to find
|
||||
// `@react-native-community/cli` starting from the `react-native` directory.
|
||||
// Instead, we should use the project root, which we assume to be the cwd.
|
||||
const options = {paths: [startDir]};
|
||||
const rncli = require.resolve('@react-native-community/cli', options);
|
||||
return require(rncli);
|
||||
}
|
||||
|
||||
function isMissingCliDependency(error) {
|
||||
return (
|
||||
error.code === 'MODULE_NOT_FOUND' &&
|
||||
@@ -217,7 +226,7 @@ async function main() {
|
||||
}
|
||||
|
||||
try {
|
||||
return require('@react-native-community/cli').run(name);
|
||||
return findCommunityCli().run(name);
|
||||
} catch (e) {
|
||||
if (isMissingCliDependency(e)) {
|
||||
warnWithExplicitDependency();
|
||||
@@ -231,7 +240,7 @@ if (require.main === module) {
|
||||
main();
|
||||
} else {
|
||||
try {
|
||||
cli = require('@react-native-community/cli');
|
||||
cli = findCommunityCli();
|
||||
} catch (e) {
|
||||
// We silence @react-native-community/cli missing as it is no
|
||||
// longer a dependency
|
||||
|
||||
@@ -35,8 +35,9 @@ yoga-proguard-annotations = "1.19.0"
|
||||
# Native Dependencies
|
||||
boost="1_83_0"
|
||||
doubleconversion="1.1.6"
|
||||
fmt="9.1.0"
|
||||
folly="2024.01.01.00"
|
||||
fastFloat="6.1.4"
|
||||
fmt="11.0.2"
|
||||
folly="2024.10.14.00"
|
||||
glog="0.3.5"
|
||||
gtest="1.12.1"
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "react-native",
|
||||
"version": "0.76.7",
|
||||
"version": "0.76.9",
|
||||
"description": "A framework for building native apps using React",
|
||||
"license": "MIT",
|
||||
"repository": {
|
||||
@@ -109,13 +109,13 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"@jest/create-cache-key-function": "^29.6.3",
|
||||
"@react-native/assets-registry": "0.76.7",
|
||||
"@react-native/codegen": "0.76.7",
|
||||
"@react-native/community-cli-plugin": "0.76.7",
|
||||
"@react-native/gradle-plugin": "0.76.7",
|
||||
"@react-native/js-polyfills": "0.76.7",
|
||||
"@react-native/normalize-colors": "0.76.7",
|
||||
"@react-native/virtualized-lists": "0.76.7",
|
||||
"@react-native/assets-registry": "0.76.9",
|
||||
"@react-native/codegen": "0.76.9",
|
||||
"@react-native/community-cli-plugin": "0.76.9",
|
||||
"@react-native/gradle-plugin": "0.76.9",
|
||||
"@react-native/js-polyfills": "0.76.9",
|
||||
"@react-native/normalize-colors": "0.76.9",
|
||||
"@react-native/virtualized-lists": "0.76.9",
|
||||
"abort-controller": "^3.0.0",
|
||||
"anser": "^1.4.9",
|
||||
"ansi-regex": "^5.0.0",
|
||||
|
||||
@@ -20,9 +20,24 @@
|
||||
|
||||
const verbose = process.env.DEBUG && process.env.DEBUG.includes('react-native');
|
||||
|
||||
function findCommunityPlatformPackage(spec, startDir = process.cwd()) {
|
||||
// In monorepos, we cannot make any assumptions on where
|
||||
// `@react-native-community/*` gets installed. The safest way to find it
|
||||
// (barring adding an optional peer dependency) is to start from the project
|
||||
// root.
|
||||
//
|
||||
// Note that we're assuming that the current working directory is the project
|
||||
// root. This is also what `@react-native-community/cli` assumes (see
|
||||
// https://github.com/react-native-community/cli/blob/14.x/packages/cli-tools/src/findProjectRoot.ts).
|
||||
const main = require.resolve(spec, {paths: [startDir]});
|
||||
return require(main);
|
||||
}
|
||||
|
||||
let android;
|
||||
try {
|
||||
android = require('@react-native-community/cli-platform-android');
|
||||
android = findCommunityPlatformPackage(
|
||||
'@react-native-community/cli-platform-android',
|
||||
);
|
||||
} catch {
|
||||
if (verbose) {
|
||||
console.warn(
|
||||
@@ -33,7 +48,9 @@ try {
|
||||
|
||||
let ios;
|
||||
try {
|
||||
ios = require('@react-native-community/cli-platform-ios');
|
||||
ios = findCommunityPlatformPackage(
|
||||
'@react-native-community/cli-platform-ios',
|
||||
);
|
||||
} catch {
|
||||
if (verbose) {
|
||||
console.warn(
|
||||
@@ -44,27 +61,11 @@ try {
|
||||
|
||||
const commands = [];
|
||||
|
||||
try {
|
||||
const {
|
||||
bundleCommand,
|
||||
startCommand,
|
||||
} = require('@react-native/community-cli-plugin');
|
||||
commands.push(bundleCommand, startCommand);
|
||||
} catch (e) {
|
||||
const known =
|
||||
e.code === 'MODULE_NOT_FOUND' &&
|
||||
e.message.includes('@react-native-community/cli-server-api');
|
||||
|
||||
if (!known) {
|
||||
throw e;
|
||||
}
|
||||
|
||||
if (verbose) {
|
||||
console.warn(
|
||||
'@react-native-community/cli-server-api not found, the react-native.config.js may be unusable.',
|
||||
);
|
||||
}
|
||||
}
|
||||
const {
|
||||
bundleCommand,
|
||||
startCommand,
|
||||
} = require('@react-native/community-cli-plugin');
|
||||
commands.push(bundleCommand, startCommand);
|
||||
|
||||
const codegenCommand = {
|
||||
name: 'codegen',
|
||||
|
||||
@@ -521,13 +521,12 @@ class CodegenUtilsTests < Test::Unit::TestCase
|
||||
"\"$(PODS_ROOT)/boost\"",
|
||||
"\"$(PODS_ROOT)/RCT-Folly\"",
|
||||
"\"$(PODS_ROOT)/DoubleConversion\"",
|
||||
"\"$(PODS_ROOT)/fast_float/include\"",
|
||||
"\"$(PODS_ROOT)/fmt/include\"",
|
||||
"\"${PODS_ROOT}/Headers/Public/ReactCodegen/react/renderer/components\"",
|
||||
"\"$(PODS_ROOT)/Headers/Private/React-Fabric\"",
|
||||
"\"$(PODS_ROOT)/Headers/Private/React-RCTFabric\"",
|
||||
"\"$(PODS_ROOT)/Headers/Private/Yoga\"",
|
||||
"\"$(PODS_ROOT)/DoubleConversion\"",
|
||||
"\"$(PODS_ROOT)/fmt/include\"",
|
||||
"\"$(PODS_TARGET_SRCROOT)\"",
|
||||
].join(' ')
|
||||
},
|
||||
|
||||
@@ -132,21 +132,21 @@ class NewArchitectureTests < Test::Unit::TestCase
|
||||
spec = SpecMock.new
|
||||
|
||||
# Act
|
||||
NewArchitectureHelper.install_modules_dependencies(spec, true, '2024.01.01.00')
|
||||
NewArchitectureHelper.install_modules_dependencies(spec, true, '2024.10.14.00')
|
||||
|
||||
# Assert
|
||||
folly_config = Helpers::Constants.folly_config
|
||||
folly_compiler_flags = folly_config[:compiler_flags]
|
||||
|
||||
assert_equal(spec.compiler_flags, "-DRCT_NEW_ARCH_ENABLED=1 #{NewArchitectureHelper.folly_compiler_flags}")
|
||||
assert_equal(spec.pod_target_xcconfig["HEADER_SEARCH_PATHS"], "\"$(PODS_ROOT)/boost\" \"$(PODS_ROOT)/Headers/Private/Yoga\" \"$(PODS_ROOT)/DoubleConversion\" \"$(PODS_ROOT)/fmt/include\" \"${PODS_CONFIGURATION_BUILD_DIR}/React-graphics/React_graphics.framework/Headers\" \"${PODS_CONFIGURATION_BUILD_DIR}/React-graphics/React_graphics.framework/Headers/react/renderer/graphics/platform/ios\" \"${PODS_CONFIGURATION_BUILD_DIR}/React-Fabric/React_Fabric.framework/Headers\" \"${PODS_CONFIGURATION_BUILD_DIR}/React-Fabric/React_Fabric.framework/Headers/react/renderer/components/view/platform/cxx\" \"${PODS_CONFIGURATION_BUILD_DIR}/React-FabricImage/React_FabricImage.framework/Headers\" \"${PODS_CONFIGURATION_BUILD_DIR}/ReactCommon/ReactCommon.framework/Headers\" \"${PODS_CONFIGURATION_BUILD_DIR}/ReactCommon/ReactCommon.framework/Headers/react/nativemodule/core\" \"${PODS_CONFIGURATION_BUILD_DIR}/React-NativeModulesApple/React_NativeModulesApple.framework/Headers\" \"${PODS_CONFIGURATION_BUILD_DIR}/React-RCTFabric/RCTFabric.framework/Headers\" \"${PODS_CONFIGURATION_BUILD_DIR}/React-utils/React_utils.framework/Headers\" \"${PODS_CONFIGURATION_BUILD_DIR}/React-featureflags/React_featureflags.framework/Headers\" \"${PODS_CONFIGURATION_BUILD_DIR}/React-debug/React_debug.framework/Headers\" \"${PODS_CONFIGURATION_BUILD_DIR}/React-ImageManager/React_ImageManager.framework/Headers\" \"${PODS_CONFIGURATION_BUILD_DIR}/React-rendererdebug/React_rendererdebug.framework/Headers\"")
|
||||
assert_equal(spec.pod_target_xcconfig["HEADER_SEARCH_PATHS"], "\"$(PODS_ROOT)/boost\" \"$(PODS_ROOT)/Headers/Private/Yoga\" \"$(PODS_ROOT)/DoubleConversion\" \"$(PODS_ROOT)/fast_float/include\" \"$(PODS_ROOT)/fmt/include\" \"${PODS_CONFIGURATION_BUILD_DIR}/React-graphics/React_graphics.framework/Headers\" \"${PODS_CONFIGURATION_BUILD_DIR}/React-graphics/React_graphics.framework/Headers/react/renderer/graphics/platform/ios\" \"${PODS_CONFIGURATION_BUILD_DIR}/React-Fabric/React_Fabric.framework/Headers\" \"${PODS_CONFIGURATION_BUILD_DIR}/React-Fabric/React_Fabric.framework/Headers/react/renderer/components/view/platform/cxx\" \"${PODS_CONFIGURATION_BUILD_DIR}/React-FabricImage/React_FabricImage.framework/Headers\" \"${PODS_CONFIGURATION_BUILD_DIR}/ReactCommon/ReactCommon.framework/Headers\" \"${PODS_CONFIGURATION_BUILD_DIR}/ReactCommon/ReactCommon.framework/Headers/react/nativemodule/core\" \"${PODS_CONFIGURATION_BUILD_DIR}/React-NativeModulesApple/React_NativeModulesApple.framework/Headers\" \"${PODS_CONFIGURATION_BUILD_DIR}/React-RCTFabric/RCTFabric.framework/Headers\" \"${PODS_CONFIGURATION_BUILD_DIR}/React-utils/React_utils.framework/Headers\" \"${PODS_CONFIGURATION_BUILD_DIR}/React-featureflags/React_featureflags.framework/Headers\" \"${PODS_CONFIGURATION_BUILD_DIR}/React-debug/React_debug.framework/Headers\" \"${PODS_CONFIGURATION_BUILD_DIR}/React-ImageManager/React_ImageManager.framework/Headers\" \"${PODS_CONFIGURATION_BUILD_DIR}/React-rendererdebug/React_rendererdebug.framework/Headers\"")
|
||||
assert_equal(spec.pod_target_xcconfig["CLANG_CXX_LANGUAGE_STANDARD"], "c++20")
|
||||
assert_equal(spec.pod_target_xcconfig["OTHER_CPLUSPLUSFLAGS"], "$(inherited) -DRCT_NEW_ARCH_ENABLED=1 "+ folly_compiler_flags)
|
||||
assert_equal(
|
||||
spec.dependencies,
|
||||
[
|
||||
{ :dependency_name => "React-Core" },
|
||||
{ :dependency_name => "RCT-Folly", "version"=>"2024.01.01.00" },
|
||||
{ :dependency_name => "RCT-Folly", "version"=>"2024.10.14.00" },
|
||||
{ :dependency_name => "glog" },
|
||||
{ :dependency_name => "React-RCTFabric" },
|
||||
{ :dependency_name => "ReactCodegen" },
|
||||
@@ -178,17 +178,17 @@ class NewArchitectureTests < Test::Unit::TestCase
|
||||
}
|
||||
|
||||
# Act
|
||||
NewArchitectureHelper.install_modules_dependencies(spec, false, '2024.01.01.00')
|
||||
NewArchitectureHelper.install_modules_dependencies(spec, false, '2024.10.14.00')
|
||||
|
||||
# Assert
|
||||
assert_equal(Helpers::Constants.folly_config[:compiler_flags], "#{NewArchitectureHelper.folly_compiler_flags}")
|
||||
assert_equal(spec.pod_target_xcconfig["HEADER_SEARCH_PATHS"], "#{other_flags} \"$(PODS_ROOT)/boost\" \"$(PODS_ROOT)/Headers/Private/Yoga\" \"$(PODS_ROOT)/DoubleConversion\" \"$(PODS_ROOT)/fmt/include\" \"${PODS_CONFIGURATION_BUILD_DIR}/React-graphics/React_graphics.framework/Headers\" \"${PODS_CONFIGURATION_BUILD_DIR}/React-graphics/React_graphics.framework/Headers/react/renderer/graphics/platform/ios\" \"${PODS_CONFIGURATION_BUILD_DIR}/React-Fabric/React_Fabric.framework/Headers\" \"${PODS_CONFIGURATION_BUILD_DIR}/React-Fabric/React_Fabric.framework/Headers/react/renderer/components/view/platform/cxx\" \"${PODS_CONFIGURATION_BUILD_DIR}/React-FabricImage/React_FabricImage.framework/Headers\" \"${PODS_CONFIGURATION_BUILD_DIR}/ReactCommon/ReactCommon.framework/Headers\" \"${PODS_CONFIGURATION_BUILD_DIR}/ReactCommon/ReactCommon.framework/Headers/react/nativemodule/core\" \"${PODS_CONFIGURATION_BUILD_DIR}/React-NativeModulesApple/React_NativeModulesApple.framework/Headers\" \"${PODS_CONFIGURATION_BUILD_DIR}/React-RCTFabric/RCTFabric.framework/Headers\" \"${PODS_CONFIGURATION_BUILD_DIR}/React-utils/React_utils.framework/Headers\" \"${PODS_CONFIGURATION_BUILD_DIR}/React-featureflags/React_featureflags.framework/Headers\" \"${PODS_CONFIGURATION_BUILD_DIR}/React-debug/React_debug.framework/Headers\" \"${PODS_CONFIGURATION_BUILD_DIR}/React-ImageManager/React_ImageManager.framework/Headers\" \"${PODS_CONFIGURATION_BUILD_DIR}/React-rendererdebug/React_rendererdebug.framework/Headers\"")
|
||||
assert_equal(spec.pod_target_xcconfig["HEADER_SEARCH_PATHS"], "#{other_flags} \"$(PODS_ROOT)/boost\" \"$(PODS_ROOT)/Headers/Private/Yoga\" \"$(PODS_ROOT)/DoubleConversion\" \"$(PODS_ROOT)/fast_float/include\" \"$(PODS_ROOT)/fmt/include\" \"${PODS_CONFIGURATION_BUILD_DIR}/React-graphics/React_graphics.framework/Headers\" \"${PODS_CONFIGURATION_BUILD_DIR}/React-graphics/React_graphics.framework/Headers/react/renderer/graphics/platform/ios\" \"${PODS_CONFIGURATION_BUILD_DIR}/React-Fabric/React_Fabric.framework/Headers\" \"${PODS_CONFIGURATION_BUILD_DIR}/React-Fabric/React_Fabric.framework/Headers/react/renderer/components/view/platform/cxx\" \"${PODS_CONFIGURATION_BUILD_DIR}/React-FabricImage/React_FabricImage.framework/Headers\" \"${PODS_CONFIGURATION_BUILD_DIR}/ReactCommon/ReactCommon.framework/Headers\" \"${PODS_CONFIGURATION_BUILD_DIR}/ReactCommon/ReactCommon.framework/Headers/react/nativemodule/core\" \"${PODS_CONFIGURATION_BUILD_DIR}/React-NativeModulesApple/React_NativeModulesApple.framework/Headers\" \"${PODS_CONFIGURATION_BUILD_DIR}/React-RCTFabric/RCTFabric.framework/Headers\" \"${PODS_CONFIGURATION_BUILD_DIR}/React-utils/React_utils.framework/Headers\" \"${PODS_CONFIGURATION_BUILD_DIR}/React-featureflags/React_featureflags.framework/Headers\" \"${PODS_CONFIGURATION_BUILD_DIR}/React-debug/React_debug.framework/Headers\" \"${PODS_CONFIGURATION_BUILD_DIR}/React-ImageManager/React_ImageManager.framework/Headers\" \"${PODS_CONFIGURATION_BUILD_DIR}/React-rendererdebug/React_rendererdebug.framework/Headers\"")
|
||||
assert_equal(spec.pod_target_xcconfig["CLANG_CXX_LANGUAGE_STANDARD"], "c++20")
|
||||
assert_equal(
|
||||
spec.dependencies,
|
||||
[
|
||||
{ :dependency_name => "React-Core" },
|
||||
{ :dependency_name => "RCT-Folly", "version"=>"2024.01.01.00" },
|
||||
{ :dependency_name => "RCT-Folly", "version"=>"2024.10.14.00" },
|
||||
{ :dependency_name => "glog" },
|
||||
{ :dependency_name => "React-RCTFabric" },
|
||||
{ :dependency_name => "ReactCodegen" },
|
||||
|
||||
@@ -814,7 +814,7 @@ class UtilsTests < Test::Unit::TestCase
|
||||
if pod_name == "SecondTarget"
|
||||
target_installation_result.native_target.build_configurations.each do |config|
|
||||
received_search_path = config.build_settings["HEADER_SEARCH_PATHS"]
|
||||
expected_Search_path = "$(inherited) \"$(PODS_ROOT)/RCT-Folly\" \"$(PODS_ROOT)/DoubleConversion\" \"$(PODS_ROOT)/fmt/include\" \"$(PODS_ROOT)/boost\" \"${PODS_CONFIGURATION_BUILD_DIR}/ReactCodegen/ReactCodegen.framework/Headers\" \"${PODS_CONFIGURATION_BUILD_DIR}/ReactCommon/ReactCommon.framework/Headers\" \"${PODS_CONFIGURATION_BUILD_DIR}/ReactCommon/ReactCommon.framework/Headers/react/nativemodule/core\" \"${PODS_CONFIGURATION_BUILD_DIR}/React-RCTFabric/RCTFabric.framework/Headers\" \"${PODS_CONFIGURATION_BUILD_DIR}/React-Fabric/React_Fabric.framework/Headers\" \"${PODS_CONFIGURATION_BUILD_DIR}/React-Fabric/React_Fabric.framework/Headers/react/renderer/components/view/platform/cxx\" \"${PODS_CONFIGURATION_BUILD_DIR}/React-FabricImage/React_FabricImage.framework/Headers\" \"${PODS_CONFIGURATION_BUILD_DIR}/React-Graphics/React_graphics.framework/Headers\" \"${PODS_CONFIGURATION_BUILD_DIR}/React-Graphics/React_graphics.framework/Headers/react/renderer/graphics/platform/ios\" \"${PODS_CONFIGURATION_BUILD_DIR}/React-Fabric/React_Fabric.framework/Headers/react/renderer/imagemanager/platform/ios\""
|
||||
expected_Search_path = "$(inherited) \"$(PODS_ROOT)/RCT-Folly\" \"$(PODS_ROOT)/DoubleConversion\" \"$(PODS_ROOT)/fast_float/include\" \"$(PODS_ROOT)/fmt/include\" \"$(PODS_ROOT)/boost\" \"${PODS_CONFIGURATION_BUILD_DIR}/ReactCodegen/ReactCodegen.framework/Headers\" \"${PODS_CONFIGURATION_BUILD_DIR}/ReactCommon/ReactCommon.framework/Headers\" \"${PODS_CONFIGURATION_BUILD_DIR}/ReactCommon/ReactCommon.framework/Headers/react/nativemodule/core\" \"${PODS_CONFIGURATION_BUILD_DIR}/React-RCTFabric/RCTFabric.framework/Headers\" \"${PODS_CONFIGURATION_BUILD_DIR}/React-Fabric/React_Fabric.framework/Headers\" \"${PODS_CONFIGURATION_BUILD_DIR}/React-Fabric/React_Fabric.framework/Headers/react/renderer/components/view/platform/cxx\" \"${PODS_CONFIGURATION_BUILD_DIR}/React-FabricImage/React_FabricImage.framework/Headers\" \"${PODS_CONFIGURATION_BUILD_DIR}/React-Graphics/React_graphics.framework/Headers\" \"${PODS_CONFIGURATION_BUILD_DIR}/React-Graphics/React_graphics.framework/Headers/react/renderer/graphics/platform/ios\" \"${PODS_CONFIGURATION_BUILD_DIR}/React-Fabric/React_Fabric.framework/Headers/react/renderer/imagemanager/platform/ios\""
|
||||
assert_equal(received_search_path, expected_Search_path)
|
||||
end
|
||||
else
|
||||
|
||||
@@ -80,13 +80,12 @@ class CodegenUtils
|
||||
"\"$(PODS_ROOT)/boost\"",
|
||||
"\"$(PODS_ROOT)/RCT-Folly\"",
|
||||
"\"$(PODS_ROOT)/DoubleConversion\"",
|
||||
"\"$(PODS_ROOT)/fast_float/include\"",
|
||||
"\"$(PODS_ROOT)/fmt/include\"",
|
||||
"\"${PODS_ROOT}/Headers/Public/ReactCodegen/react/renderer/components\"",
|
||||
"\"$(PODS_ROOT)/Headers/Private/React-Fabric\"",
|
||||
"\"$(PODS_ROOT)/Headers/Private/React-RCTFabric\"",
|
||||
"\"$(PODS_ROOT)/Headers/Private/Yoga\"",
|
||||
"\"$(PODS_ROOT)/DoubleConversion\"",
|
||||
"\"$(PODS_ROOT)/fmt/include\"",
|
||||
"\"$(PODS_TARGET_SRCROOT)\"",
|
||||
]
|
||||
framework_search_paths = []
|
||||
|
||||
@@ -46,11 +46,15 @@ module Helpers
|
||||
}
|
||||
|
||||
@@folly_config = {
|
||||
:version => '2024.01.01.00',
|
||||
:version => '2024.10.14.00',
|
||||
:git => 'https://github.com/facebook/folly.git',
|
||||
:compiler_flags => '-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_CFG_NO_COROUTINES=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 -Wno-comma -Wno-shorten-64-to-32'
|
||||
}
|
||||
|
||||
@@fast_float_config = {
|
||||
:git => "https://github.com/fastfloat/fast_float.git",
|
||||
}
|
||||
|
||||
@@fmt_config = {
|
||||
:git => "https://github.com/fmtlib/fmt.git",
|
||||
}
|
||||
@@ -79,6 +83,14 @@ module Helpers
|
||||
@@folly_config.update(new_folly_config)
|
||||
end
|
||||
|
||||
def self.fast_float_config
|
||||
return @@fast_float_config
|
||||
end
|
||||
|
||||
def self.set_fast_float_config(new_fast_float_config)
|
||||
@@fast_float_config.update(new_fast_float_config)
|
||||
end
|
||||
|
||||
def self.boost_config
|
||||
return @@boost_config
|
||||
end
|
||||
|
||||
@@ -83,6 +83,7 @@ class NewArchitectureHelper
|
||||
header_search_paths = ["\"$(PODS_ROOT)/boost\" \"$(PODS_ROOT)/Headers/Private/Yoga\""]
|
||||
if ENV['USE_FRAMEWORKS']
|
||||
header_search_paths << "\"$(PODS_ROOT)/DoubleConversion\""
|
||||
header_search_paths << "\"$(PODS_ROOT)/fast_float/include\""
|
||||
header_search_paths << "\"$(PODS_ROOT)/fmt/include\""
|
||||
ReactNativePodsUtils.create_header_search_path_for_frameworks("PODS_CONFIGURATION_BUILD_DIR", "React-graphics", "React_graphics", ["react/renderer/graphics/platform/ios"])
|
||||
.concat(ReactNativePodsUtils.create_header_search_path_for_frameworks("PODS_CONFIGURATION_BUILD_DIR", "React-Fabric", "React_Fabric", ["react/renderer/components/view/platform/cxx"]))
|
||||
|
||||
@@ -564,6 +564,7 @@ class ReactNativePodsUtils
|
||||
ReactNativePodsUtils.update_header_paths_if_depends_on(target_installation_result, "RCT-Folly", [
|
||||
"\"$(PODS_ROOT)/RCT-Folly\"",
|
||||
"\"$(PODS_ROOT)/DoubleConversion\"",
|
||||
"\"$(PODS_ROOT)/fast_float/include\"",
|
||||
"\"$(PODS_ROOT)/fmt/include\"",
|
||||
"\"$(PODS_ROOT)/boost\""
|
||||
])
|
||||
@@ -639,6 +640,7 @@ class ReactNativePodsUtils
|
||||
"ReactCommon",
|
||||
"Yoga",
|
||||
"boost",
|
||||
"fast_float",
|
||||
"fmt",
|
||||
"glog",
|
||||
"hermes-engine",
|
||||
|
||||
@@ -156,6 +156,7 @@ def use_react_native! (
|
||||
pod 'DoubleConversion', :podspec => "#{prefix}/third-party-podspecs/DoubleConversion.podspec"
|
||||
pod 'glog', :podspec => "#{prefix}/third-party-podspecs/glog.podspec"
|
||||
pod 'boost', :podspec => "#{prefix}/third-party-podspecs/boost.podspec"
|
||||
pod 'fast_float', :podspec => "#{prefix}/third-party-podspecs/fast_float.podspec"
|
||||
pod 'fmt', :podspec => "#{prefix}/third-party-podspecs/fmt.podspec"
|
||||
pod 'RCT-Folly', :podspec => "#{prefix}/third-party-podspecs/RCT-Folly.podspec", :modular_headers => true
|
||||
|
||||
@@ -280,6 +281,13 @@ def get_glog_config()
|
||||
return Helpers::Constants.glog_config
|
||||
end
|
||||
|
||||
# This method returns an hash with the fast_float git url
|
||||
# that can be used to configure libraries.
|
||||
# @return an hash with the `:git` field.
|
||||
def get_fast_float_config()
|
||||
return Helpers::Constants.fast_float_config
|
||||
end
|
||||
|
||||
# This method returns an hash with the fmt git url
|
||||
# that can be used to configure libraries.
|
||||
# @return an hash with the `:git` field.
|
||||
@@ -319,6 +327,12 @@ def set_glog_config(glog_config)
|
||||
Helpers::Constants.set_glog_config(glog_config)
|
||||
end
|
||||
|
||||
# This method can be used to set the fast_float config
|
||||
# that can be used to configure libraries.
|
||||
def set_fast_float_config(fmt_config)
|
||||
Helpers::Constants.set_fast_float_config(fast_float_config)
|
||||
end
|
||||
|
||||
# This method can be used to set the fmt config
|
||||
# that can be used to configure libraries.
|
||||
def set_fmt_config(fmt_config)
|
||||
|
||||
@@ -23,7 +23,8 @@ Pod::Spec.new do |spec|
|
||||
spec.dependency 'boost'
|
||||
spec.dependency 'DoubleConversion'
|
||||
spec.dependency 'glog'
|
||||
spec.dependency "fmt", "9.1.0"
|
||||
spec.dependency "fast_float"
|
||||
spec.dependency "fmt"
|
||||
spec.compiler_flags = folly_compiler_flags + ' -DFOLLY_HAVE_PTHREAD=1 -Wno-documentation -faligned-new'
|
||||
spec.source_files = 'folly/String.cpp',
|
||||
'folly/Conv.cpp',
|
||||
@@ -34,18 +35,19 @@ Pod::Spec.new do |spec|
|
||||
'folly/lang/ToAscii.cpp',
|
||||
'folly/ScopeGuard.cpp',
|
||||
'folly/Unicode.cpp',
|
||||
'folly/dynamic.cpp',
|
||||
'folly/json.cpp',
|
||||
'folly/json_pointer.cpp',
|
||||
'folly/json/dynamic.cpp',
|
||||
'folly/json/json.cpp',
|
||||
'folly/json/json_pointer.cpp',
|
||||
'folly/container/detail/F14Table.cpp',
|
||||
'folly/detail/Demangle.cpp',
|
||||
'folly/detail/FileUtilDetail.cpp',
|
||||
'folly/detail/SplitStringSimd.cpp',
|
||||
'folly/detail/StaticSingletonManager.cpp',
|
||||
'folly/detail/UniqueInstance.cpp',
|
||||
'folly/hash/SpookyHashV2.cpp',
|
||||
'folly/lang/Assume.cpp',
|
||||
'folly/lang/CString.cpp',
|
||||
'folly/lang/Exception.cpp',
|
||||
'folly/memory/ReentrantAllocator.cpp',
|
||||
'folly/memory/detail/MallocImpl.cpp',
|
||||
'folly/net/NetOps.cpp',
|
||||
'folly/portability/SysUio.cpp',
|
||||
@@ -53,11 +55,15 @@ Pod::Spec.new do |spec|
|
||||
'folly/system/AtFork.cpp',
|
||||
'folly/system/ThreadId.cpp',
|
||||
'folly/*.h',
|
||||
'folly/algorithm/simd/*.h',
|
||||
'folly/algorithm/simd/detail/*.h',
|
||||
'folly/chrono/*.h',
|
||||
'folly/container/*.h',
|
||||
'folly/container/detail/*.h',
|
||||
'folly/detail/*.h',
|
||||
'folly/functional/*.h',
|
||||
'folly/hash/*.h',
|
||||
'folly/json/*.h',
|
||||
'folly/lang/*.h',
|
||||
'folly/memory/*.h',
|
||||
'folly/memory/detail/*.h',
|
||||
@@ -68,11 +74,15 @@ Pod::Spec.new do |spec|
|
||||
|
||||
# workaround for https://github.com/facebook/react-native/issues/14326
|
||||
spec.preserve_paths = 'folly/*.h',
|
||||
'folly/algorithm/simd/*.h',
|
||||
'folly/algorithm/simd/detail/*.h',
|
||||
'folly/chrono/*.h',
|
||||
'folly/container/*.h',
|
||||
'folly/container/detail/*.h',
|
||||
'folly/detail/*.h',
|
||||
'folly/functional/*.h',
|
||||
'folly/hash/*.h',
|
||||
'folly/json/*.h',
|
||||
'folly/lang/*.h',
|
||||
'folly/memory/*.h',
|
||||
'folly/memory/detail/*.h',
|
||||
@@ -84,7 +94,7 @@ Pod::Spec.new do |spec|
|
||||
spec.pod_target_xcconfig = { "USE_HEADERMAP" => "NO",
|
||||
"DEFINES_MODULE" => "YES",
|
||||
"CLANG_CXX_LANGUAGE_STANDARD" => rct_cxx_language_standard(),
|
||||
"HEADER_SEARCH_PATHS" => "\"$(PODS_TARGET_SRCROOT)\" \"$(PODS_ROOT)/boost\" \"$(PODS_ROOT)/DoubleConversion\" \"$(PODS_ROOT)/fmt/include\"",
|
||||
"HEADER_SEARCH_PATHS" => "\"$(PODS_TARGET_SRCROOT)\" \"$(PODS_ROOT)/boost\" \"$(PODS_ROOT)/DoubleConversion\" \"$(PODS_ROOT)/fast_float/include\" \"$(PODS_ROOT)/fmt/include\"",
|
||||
# In dynamic framework (use_frameworks!) mode, ignore the unused and undefined boost symbols when generating the library.
|
||||
"OTHER_LDFLAGS" => "\"-Wl,-U,_jump_fcontext\" \"-Wl,-U,_make_fcontext\""
|
||||
}
|
||||
@@ -105,7 +115,6 @@ Pod::Spec.new do |spec|
|
||||
'folly/concurrency/CacheLocality.cpp',
|
||||
'folly/detail/Futex.cpp',
|
||||
'folly/synchronization/ParkingLot.cpp',
|
||||
'folly/portability/Malloc.cpp',
|
||||
'folly/concurrency/CacheLocality.h',
|
||||
'folly/synchronization/*.h',
|
||||
'folly/system/ThreadId.h'
|
||||
|
||||
@@ -0,0 +1,29 @@
|
||||
# Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||
#
|
||||
# This source code is licensed under the MIT license found in the
|
||||
# LICENSE file in the root directory of this source tree.
|
||||
|
||||
fast_float_config = get_fast_float_config()
|
||||
fast_float_git_url = fast_float_config[:git]
|
||||
|
||||
Pod::Spec.new do |spec|
|
||||
spec.name = "fast_float"
|
||||
spec.version = "6.1.4"
|
||||
spec.license = { :type => "MIT" }
|
||||
spec.homepage = "https://github.com/fastfloat/fast_float"
|
||||
spec.summary = "{fast_float} is an open-source number parsing library for C++. The library provides fast header-only implementations."
|
||||
spec.authors = "The fast_float contributors"
|
||||
spec.source = {
|
||||
:git => fast_float_git_url,
|
||||
:tag => "v6.1.4"
|
||||
}
|
||||
spec.pod_target_xcconfig = {
|
||||
"CLANG_CXX_LANGUAGE_STANDARD" => rct_cxx_language_standard(),
|
||||
"GCC_WARN_INHIBIT_ALL_WARNINGS" => "YES" # Disable warnings because we don't control this library
|
||||
}
|
||||
spec.platforms = min_supported_versions
|
||||
spec.libraries = "c++"
|
||||
spec.public_header_files = "include/fast_float/*.h"
|
||||
spec.header_mappings_dir = "include"
|
||||
spec.source_files = ["include/fast_float/*.h"]
|
||||
end
|
||||
@@ -8,14 +8,14 @@ fmt_git_url = fmt_config[:git]
|
||||
|
||||
Pod::Spec.new do |spec|
|
||||
spec.name = "fmt"
|
||||
spec.version = "9.1.0"
|
||||
spec.version = "11.0.2"
|
||||
spec.license = { :type => "MIT" }
|
||||
spec.homepage = "https://github.com/fmtlib/fmt"
|
||||
spec.summary = "{fmt} is an open-source formatting library for C++. It can be used as a safe and fast alternative to (s)printf and iostreams."
|
||||
spec.authors = "The fmt contributors"
|
||||
spec.source = {
|
||||
:git => fmt_git_url,
|
||||
:tag => "9.1.0"
|
||||
:tag => "11.0.2"
|
||||
}
|
||||
spec.pod_target_xcconfig = {
|
||||
"CLANG_CXX_LANGUAGE_STANDARD" => rct_cxx_language_standard(),
|
||||
|
||||
@@ -10,3 +10,6 @@ gem 'rexml'
|
||||
gem 'activesupport', '>= 6.1.7.5', '< 7.1.0'
|
||||
gem 'xcodeproj', '< 1.26.0'
|
||||
gem 'concurrent-ruby', '< 1.3.4'
|
||||
gem 'logger'
|
||||
gem 'benchmark'
|
||||
gem 'bigdecimal'
|
||||
|
||||
+480
-426
File diff suppressed because it is too large
Load Diff
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@react-native/tester",
|
||||
"version": "0.76.7",
|
||||
"version": "0.76.9",
|
||||
"private": true,
|
||||
"description": "React Native tester app.",
|
||||
"license": "MIT",
|
||||
@@ -23,8 +23,8 @@
|
||||
"clean-ios": "rm -rf build/generated/ios Pods Podfile.lock"
|
||||
},
|
||||
"dependencies": {
|
||||
"@react-native/oss-library-example": "0.76.7",
|
||||
"@react-native/popup-menu-android": "0.76.7",
|
||||
"@react-native/oss-library-example": "0.76.9",
|
||||
"@react-native/popup-menu-android": "0.76.9",
|
||||
"flow-enums-runtime": "^0.0.6",
|
||||
"invariant": "^2.2.4",
|
||||
"nullthrows": "^1.1.1"
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@react-native/typescript-config",
|
||||
"version": "0.76.7",
|
||||
"version": "0.76.9",
|
||||
"description": "Default TypeScript configuration for React Native apps",
|
||||
"license": "MIT",
|
||||
"repository": {
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user