mirror of
https://github.com/facebook/react-native.git
synced 2025-11-01 09:14:26 +00:00
Compare commits
28
Commits
v0.75.3
...
0.75-stable
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
ad399ce80d | ||
|
|
d27ab5fc0d | ||
|
|
f5ecf66695 | ||
|
|
fcf621aba3 | ||
|
|
43bbd476c1 | ||
|
|
25e76a2717 | ||
|
|
b6ed0d351e | ||
|
|
1656394bae | ||
|
|
4475e01570 | ||
|
|
794bf34e60 | ||
|
|
2922af2e7e | ||
|
|
80f67ca03c | ||
|
|
fdb2631b5e | ||
|
|
ea0bc54115 | ||
|
|
dbffbf72d7 | ||
|
|
78ef1e2bc2 | ||
|
|
a2d8cbf9eb | ||
|
|
f5f700fb7d | ||
|
|
1611a5e8a1 | ||
|
|
56a282c44d | ||
|
|
366f1d0df3 | ||
|
|
1e611fd8d9 | ||
|
|
97913a8f60 | ||
|
|
afd74ad89d | ||
|
|
0265ea0577 | ||
|
|
a4ec49cbe6 | ||
|
|
8ec672204d | ||
|
|
893a4b30b1 |
@@ -1028,9 +1028,6 @@ jobs:
|
||||
name: Build HermesC for Windows
|
||||
command: |
|
||||
if (-not(Test-Path -Path $Env:HERMES_WS_DIR\win64-bin\hermesc.exe)) {
|
||||
choco install --no-progress cmake -y
|
||||
if (-not $?) { throw "Failed to install CMake" }
|
||||
|
||||
cd $Env:HERMES_WS_DIR\icu
|
||||
# If Invoke-WebRequest shows a progress bar, it will fail with
|
||||
# Win32 internal error "Access is denied" 0x5 occurred [...]
|
||||
|
||||
@@ -469,9 +469,6 @@ jobs:
|
||||
- name: Build HermesC for Windows
|
||||
run: |
|
||||
if (-not(Test-Path -Path $Env:HERMES_WS_DIR\win64-bin\hermesc.exe)) {
|
||||
choco install --no-progress cmake --version 3.14.7
|
||||
if (-not $?) { throw "Failed to install CMake" }
|
||||
|
||||
cd $Env:HERMES_WS_DIR\icu
|
||||
# If Invoke-WebRequest shows a progress bar, it will fail with
|
||||
# Win32 internal error "Access is denied" 0x5 occurred [...]
|
||||
|
||||
@@ -199,7 +199,7 @@ jobs:
|
||||
- name: Restore Cached Artifacts
|
||||
uses: actions/cache/restore@v4.0.0
|
||||
with:
|
||||
key: v3-hermes-artifacts-${{ matrix.flavor }}-${{ needs.prepare_hermes_workspace.outputs.hermes-version }}-${{ needs.prepare_hermes_workspace.outputs.react-native-version }}
|
||||
key: v3-hermes-artifacts-${{ matrix.flavor }}-${{ needs.prepare_hermes_workspace.outputs.hermes-version }}-${{ needs.prepare_hermes_workspace.outputs.react-native-version }}-${{ hashFiles('./packages/react-native/sdks/hermes/utils/build-apple-frameworks.sh') }}
|
||||
path: |
|
||||
/tmp/hermes/osx-bin/${{ matrix.flavor }}
|
||||
/tmp/hermes/dSYM/${{ matrix.flavor }}
|
||||
@@ -370,7 +370,7 @@ jobs:
|
||||
uses: actions/cache/save@v4.0.0
|
||||
if: ${{ github.ref == 'refs/heads/main' || contains(github.ref, '-stable') }} # To avoid that the cache explode.
|
||||
with:
|
||||
key: v3-hermes-artifacts-${{ matrix.flavor }}-${{ needs.prepare_hermes_workspace.outputs.hermes-version }}-${{ needs.prepare_hermes_workspace.outputs.react-native-version }}
|
||||
key: v3-hermes-artifacts-${{ matrix.flavor }}-${{ needs.prepare_hermes_workspace.outputs.hermes-version }}-${{ needs.prepare_hermes_workspace.outputs.react-native-version }}-${{ hashFiles('./packages/react-native/sdks/hermes/utils/build-apple-frameworks.sh') }}
|
||||
path: |
|
||||
/tmp/hermes/osx-bin/${{ matrix.flavor }}
|
||||
/tmp/hermes/dSYM/${{ matrix.flavor }}
|
||||
@@ -466,9 +466,6 @@ jobs:
|
||||
- name: Build HermesC for Windows
|
||||
run: |
|
||||
if (-not(Test-Path -Path $Env:HERMES_WS_DIR\win64-bin\hermesc.exe)) {
|
||||
choco install --no-progress cmake --version 3.14.7
|
||||
if (-not $?) { throw "Failed to install CMake" }
|
||||
|
||||
cd $Env:HERMES_WS_DIR\icu
|
||||
# If Invoke-WebRequest shows a progress bar, it will fail with
|
||||
# Win32 internal error "Access is denied" 0x5 occurred [...]
|
||||
|
||||
@@ -210,7 +210,7 @@ jobs:
|
||||
- name: Restore Cached Artifacts
|
||||
uses: actions/cache/restore@v4.0.0
|
||||
with:
|
||||
key: v4-hermes-artifacts-${{ matrix.flavor }}-${{ needs.prepare_hermes_workspace.outputs.hermes-version }}-${{ needs.prepare_hermes_workspace.outputs.react-native-version }}
|
||||
key: v4-hermes-artifacts-${{ matrix.flavor }}-${{ needs.prepare_hermes_workspace.outputs.hermes-version }}-${{ needs.prepare_hermes_workspace.outputs.react-native-version }}-${{ hashFiles('./packages/react-native/sdks/hermes/utils/build-apple-frameworks.sh') }}
|
||||
path: |
|
||||
/tmp/hermes/osx-bin/${{ matrix.flavor }}
|
||||
/tmp/hermes/dSYM/${{ matrix.flavor }}
|
||||
@@ -382,7 +382,7 @@ jobs:
|
||||
uses: actions/cache/save@v4.0.0
|
||||
if: ${{ github.ref == 'refs/heads/main' || contains(github.ref, '-stable') }} # To avoid that the cache explode.
|
||||
with:
|
||||
key: v4-hermes-artifacts-${{ matrix.flavor }}-${{ needs.prepare_hermes_workspace.outputs.hermes-version }}-${{ needs.prepare_hermes_workspace.outputs.react-native-version }}
|
||||
key: v4-hermes-artifacts-${{ matrix.flavor }}-${{ needs.prepare_hermes_workspace.outputs.hermes-version }}-${{ needs.prepare_hermes_workspace.outputs.react-native-version }}-${{ hashFiles('./packages/react-native/sdks/hermes/utils/build-apple-frameworks.sh') }}
|
||||
path: |
|
||||
/tmp/hermes/osx-bin/${{ matrix.flavor }}
|
||||
/tmp/hermes/dSYM/${{ matrix.flavor }}
|
||||
@@ -543,9 +543,6 @@ jobs:
|
||||
- name: Build HermesC for Windows
|
||||
run: |
|
||||
if (-not(Test-Path -Path $Env:HERMES_WS_DIR\win64-bin\hermesc.exe)) {
|
||||
choco install --no-progress cmake --version 3.14.7
|
||||
if (-not $?) { throw "Failed to install CMake" }
|
||||
|
||||
cd $Env:HERMES_WS_DIR\icu
|
||||
# If Invoke-WebRequest shows a progress bar, it will fail with
|
||||
# Win32 internal error "Access is denied" 0x5 occurred [...]
|
||||
|
||||
@@ -5,3 +5,5 @@ ruby ">= 2.6.10"
|
||||
|
||||
gem 'cocoapods', '~> 1.13'
|
||||
gem 'activesupport', '>= 6.1.7.5', '< 7.1.0'
|
||||
gem 'xcodeproj', '< 1.26.0'
|
||||
gem 'concurrent-ruby', '< 1.3.4'
|
||||
|
||||
@@ -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
@@ -48,8 +48,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.75.3",
|
||||
"@react-native/metro-config": "0.75.3",
|
||||
"@react-native/metro-babel-transformer": "0.75.5",
|
||||
"@react-native/metro-config": "0.75.5",
|
||||
"@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.75.3",
|
||||
"version": "0.75.5",
|
||||
"description": "Asset support code for React Native.",
|
||||
"license": "MIT",
|
||||
"repository": {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@react-native/babel-plugin-codegen",
|
||||
"version": "0.75.3",
|
||||
"version": "0.75.5",
|
||||
"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.75.3"
|
||||
"@react-native/codegen": "0.75.5"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@babel/core": "^7.20.0"
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@react-native/community-cli-plugin",
|
||||
"version": "0.75.3",
|
||||
"version": "0.75.5",
|
||||
"description": "Core CLI commands for React Native",
|
||||
"keywords": [
|
||||
"react-native",
|
||||
@@ -24,8 +24,8 @@
|
||||
"dependencies": {
|
||||
"@react-native-community/cli-server-api": "14.1.0",
|
||||
"@react-native-community/cli-tools": "14.1.0",
|
||||
"@react-native/dev-middleware": "0.75.3",
|
||||
"@react-native/metro-babel-transformer": "0.75.3",
|
||||
"@react-native/dev-middleware": "0.75.5",
|
||||
"@react-native/metro-babel-transformer": "0.75.5",
|
||||
"chalk": "^4.0.0",
|
||||
"execa": "^5.1.1",
|
||||
"metro": "^0.80.3",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@react-native/core-cli-utils",
|
||||
"version": "0.75.3",
|
||||
"version": "0.75.5",
|
||||
"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.75.3",
|
||||
"version": "0.75.5",
|
||||
"description": "Debugger frontend for React Native based on Chrome DevTools",
|
||||
"keywords": [
|
||||
"react-native",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@react-native/dev-middleware",
|
||||
"version": "0.75.3",
|
||||
"version": "0.75.5",
|
||||
"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.75.3",
|
||||
"@react-native/debugger-frontend": "0.75.5",
|
||||
"chrome-launcher": "^0.15.2",
|
||||
"chromium-edge-launcher": "^0.2.0",
|
||||
"connect": "^3.6.5",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@react-native/eslint-config",
|
||||
"version": "0.75.3",
|
||||
"version": "0.75.5",
|
||||
"description": "ESLint config for React Native",
|
||||
"license": "MIT",
|
||||
"repository": {
|
||||
@@ -22,7 +22,7 @@
|
||||
"dependencies": {
|
||||
"@babel/core": "^7.20.0",
|
||||
"@babel/eslint-parser": "^7.20.0",
|
||||
"@react-native/eslint-plugin": "0.75.3",
|
||||
"@react-native/eslint-plugin": "0.75.5",
|
||||
"@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.75.3",
|
||||
"version": "0.75.5",
|
||||
"description": "ESLint rules for @react-native/eslint-config",
|
||||
"license": "MIT",
|
||||
"repository": {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@react-native/eslint-plugin-specs",
|
||||
"version": "0.75.3",
|
||||
"version": "0.75.5",
|
||||
"description": "ESLint rules to validate NativeModule and Component Specs",
|
||||
"license": "MIT",
|
||||
"repository": {
|
||||
@@ -31,7 +31,7 @@
|
||||
"@babel/eslint-parser": "^7.20.0",
|
||||
"@babel/plugin-transform-flow-strip-types": "^7.20.0",
|
||||
"@babel/preset-flow": "^7.20.0",
|
||||
"@react-native/codegen": "0.75.3",
|
||||
"@react-native/codegen": "0.75.5",
|
||||
"make-dir": "^2.1.0",
|
||||
"pirates": "^4.0.1",
|
||||
"source-map-support": "0.5.0"
|
||||
|
||||
@@ -4,3 +4,5 @@ ruby ">= 2.6.10"
|
||||
|
||||
gem 'cocoapods', '>= 1.13', '< 1.15'
|
||||
gem 'activesupport', '>= 6.1.7.5', '< 7.1.0'
|
||||
gem 'xcodeproj', '< 1.26.0'
|
||||
gem 'concurrent-ruby', '< 1.3.4'
|
||||
|
||||
@@ -12,7 +12,7 @@ buildscript {
|
||||
compileSdkVersion = 34
|
||||
targetSdkVersion = 34
|
||||
ndkVersion = "26.1.10909125"
|
||||
kotlinVersion = "1.9.24"
|
||||
kotlinVersion = "1.9.25"
|
||||
}
|
||||
repositories {
|
||||
google()
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "helloworld",
|
||||
"version": "0.75.3",
|
||||
"version": "0.75.5",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"bootstrap": "node ./cli.js bootstrap",
|
||||
@@ -13,16 +13,16 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"react": "18.3.1",
|
||||
"react-native": "0.75.3"
|
||||
"react-native": "0.75.5"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@babel/core": "^7.20.0",
|
||||
"@babel/preset-env": "^7.20.0",
|
||||
"@babel/runtime": "^7.20.0",
|
||||
"@react-native/babel-preset": "0.75.3",
|
||||
"@react-native/core-cli-utils": "0.75.3",
|
||||
"@react-native/eslint-config": "0.75.3",
|
||||
"@react-native/metro-config": "0.75.3",
|
||||
"@react-native/babel-preset": "0.75.5",
|
||||
"@react-native/core-cli-utils": "0.75.5",
|
||||
"@react-native/eslint-config": "0.75.5",
|
||||
"@react-native/metro-config": "0.75.5",
|
||||
"babel-jest": "^29.6.3",
|
||||
"chalk": "^4.1.2",
|
||||
"commander": "^9.4.1",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@react-native/hermes-inspector-msggen",
|
||||
"version": "0.75.3",
|
||||
"version": "0.75.5",
|
||||
"private": true,
|
||||
"description": "Hermes Inspector Message Generator for React Native",
|
||||
"license": "MIT",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@react-native/metro-config",
|
||||
"version": "0.75.3",
|
||||
"version": "0.75.5",
|
||||
"description": "Metro configuration for React Native.",
|
||||
"license": "MIT",
|
||||
"repository": {
|
||||
@@ -26,8 +26,8 @@
|
||||
"dist"
|
||||
],
|
||||
"dependencies": {
|
||||
"@react-native/js-polyfills": "0.75.3",
|
||||
"@react-native/metro-babel-transformer": "0.75.3",
|
||||
"@react-native/js-polyfills": "0.75.5",
|
||||
"@react-native/metro-babel-transformer": "0.75.5",
|
||||
"metro-config": "^0.80.3",
|
||||
"metro-runtime": "^0.80.3"
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@react-native/normalize-colors",
|
||||
"version": "0.75.3",
|
||||
"version": "0.75.5",
|
||||
"description": "Color normalization for React Native.",
|
||||
"license": "MIT",
|
||||
"repository": {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@react-native/js-polyfills",
|
||||
"version": "0.75.3",
|
||||
"version": "0.75.5",
|
||||
"description": "Polyfills for React Native.",
|
||||
"license": "MIT",
|
||||
"repository": {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@react-native/babel-preset",
|
||||
"version": "0.75.3",
|
||||
"version": "0.75.5",
|
||||
"description": "Babel preset for React Native applications",
|
||||
"main": "src/index.js",
|
||||
"repository": {
|
||||
@@ -56,7 +56,7 @@
|
||||
"@babel/plugin-transform-typescript": "^7.5.0",
|
||||
"@babel/plugin-transform-unicode-regex": "^7.0.0",
|
||||
"@babel/template": "^7.0.0",
|
||||
"@react-native/babel-plugin-codegen": "0.75.3",
|
||||
"@react-native/babel-plugin-codegen": "0.75.5",
|
||||
"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.75.3",
|
||||
"version": "0.75.5",
|
||||
"description": "Babel transformer for React Native applications.",
|
||||
"main": "src/index.js",
|
||||
"repository": {
|
||||
@@ -16,7 +16,7 @@
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@babel/core": "^7.20.0",
|
||||
"@react-native/babel-preset": "0.75.3",
|
||||
"@react-native/babel-preset": "0.75.5",
|
||||
"hermes-parser": "0.22.0",
|
||||
"nullthrows": "^1.1.1"
|
||||
},
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@react-native/bots",
|
||||
"description": "React Native Bots",
|
||||
"version": "0.75.3",
|
||||
"version": "0.75.5",
|
||||
"private": true,
|
||||
"license": "MIT",
|
||||
"repository": {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@react-native/codegen-typescript-test",
|
||||
"version": "0.75.3",
|
||||
"version": "0.75.5",
|
||||
"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.75.3"
|
||||
"@react-native/codegen": "0.75.5"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@babel/core": "^7.20.0",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@react-native/codegen",
|
||||
"version": "0.75.3",
|
||||
"version": "0.75.5",
|
||||
"description": "Code generation tools for React Native",
|
||||
"license": "MIT",
|
||||
"repository": {
|
||||
|
||||
@@ -4,7 +4,7 @@ gson = "2.8.9"
|
||||
guava = "31.0.1-jre"
|
||||
javapoet = "1.13.0"
|
||||
junit = "4.13.2"
|
||||
kotlin = "1.9.24"
|
||||
kotlin = "1.9.25"
|
||||
assertj = "3.25.1"
|
||||
|
||||
[libraries]
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@react-native/gradle-plugin",
|
||||
"version": "0.75.3",
|
||||
"version": "0.75.5",
|
||||
"description": "Gradle Plugin for React Native",
|
||||
"license": "MIT",
|
||||
"repository": {
|
||||
|
||||
@@ -65,7 +65,8 @@ tasks.withType<KotlinCompile>().configureEach {
|
||||
apiVersion = "1.6"
|
||||
// See comment above on JDK 11 support
|
||||
jvmTarget = "11"
|
||||
allWarningsAsErrors = true
|
||||
allWarningsAsErrors =
|
||||
project.properties["enableWarningsAsErrors"]?.toString()?.toBoolean() ?: false
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+11
-2
@@ -30,10 +30,19 @@ abstract class GeneratePackageListTask : DefaultTask() {
|
||||
|
||||
@TaskAction
|
||||
fun taskAction() {
|
||||
val model = JsonUtils.fromAutolinkingConfigJson(autolinkInputFile.get().asFile)
|
||||
val model =
|
||||
JsonUtils.fromAutolinkingConfigJson(autolinkInputFile.get().asFile)
|
||||
?: error(
|
||||
"""
|
||||
RNGP - Autolinking: Could not parse autolinking config file:
|
||||
${autolinkInputFile.get().asFile.absolutePath}
|
||||
|
||||
The file is either missing or not containing valid JSON so the build won't succeed.
|
||||
"""
|
||||
.trimIndent())
|
||||
|
||||
val packageName =
|
||||
model?.project?.android?.packageName
|
||||
model.project?.android?.packageName
|
||||
?: error(
|
||||
"RNGP - Autolinking: Could not find project.android.packageName in react-native config output! Could not autolink packages without this field.")
|
||||
|
||||
|
||||
@@ -54,7 +54,8 @@ tasks.withType<KotlinCompile>().configureEach {
|
||||
apiVersion = "1.6"
|
||||
// See comment above on JDK 11 support
|
||||
jvmTarget = "11"
|
||||
allWarningsAsErrors = true
|
||||
allWarningsAsErrors =
|
||||
project.properties["enableWarningsAsErrors"]?.toString()?.toBoolean() ?: false
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -24,7 +24,8 @@ tasks.withType<KotlinCompile>().configureEach {
|
||||
kotlinOptions {
|
||||
apiVersion = "1.6"
|
||||
jvmTarget = "11"
|
||||
allWarningsAsErrors = true
|
||||
allWarningsAsErrors =
|
||||
project.properties["enableWarningsAsErrors"]?.toString()?.toBoolean() ?: false
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -29,7 +29,8 @@ tasks.withType<KotlinCompile>().configureEach {
|
||||
kotlinOptions {
|
||||
apiVersion = "1.6"
|
||||
jvmTarget = "11"
|
||||
allWarningsAsErrors = true
|
||||
allWarningsAsErrors =
|
||||
project.properties["enableWarningsAsErrors"]?.toString()?.toBoolean() ?: false
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+17
-2
@@ -21,8 +21,23 @@ object JsonUtils {
|
||||
}
|
||||
|
||||
fun fromAutolinkingConfigJson(input: File): ModelAutolinkingConfigJson? =
|
||||
input.bufferedReader().use {
|
||||
runCatching { gsonConverter.fromJson(it, ModelAutolinkingConfigJson::class.java) }
|
||||
input.bufferedReader().use { reader ->
|
||||
runCatching {
|
||||
// We sanitize the output of the `config` command as it could contain debug logs
|
||||
// such as:
|
||||
//
|
||||
// > AwesomeProject@0.0.1 npx
|
||||
// > rnc-cli config
|
||||
//
|
||||
// which will render the JSON invalid.
|
||||
val content =
|
||||
reader
|
||||
.readLines()
|
||||
.filterNot { line -> line.startsWith(">") }
|
||||
.joinToString("\n")
|
||||
.trim()
|
||||
gsonConverter.fromJson(content, ModelAutolinkingConfigJson::class.java)
|
||||
}
|
||||
.getOrNull()
|
||||
}
|
||||
}
|
||||
|
||||
+48
@@ -185,6 +185,54 @@ class JsonUtilsTest {
|
||||
assertEquals("implementation", parsed.project!!.android!!.dependencyConfiguration)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun fromAutolinkingConfigJson_withInfoLogs_sanitizeAndParseIt() {
|
||||
@Suppress("JsonStandardCompliance")
|
||||
val validJson =
|
||||
createJsonFile(
|
||||
"""
|
||||
|
||||
> AwesomeProject@0.0.1 npx
|
||||
> rnc-cli config
|
||||
|
||||
{
|
||||
"reactNativeVersion": "1000.0.0",
|
||||
"project": {
|
||||
"ios": {
|
||||
"sourceDir": "./packages/rn-tester",
|
||||
"xcodeProject": {
|
||||
"name": "RNTesterPods.xcworkspace",
|
||||
"isWorkspace": true
|
||||
},
|
||||
"automaticPodsInstallation": false
|
||||
},
|
||||
"android": {
|
||||
"sourceDir": "./packages/rn-tester",
|
||||
"appName": "RN-Tester",
|
||||
"packageName": "com.facebook.react.uiapp",
|
||||
"applicationId": "com.facebook.react.uiapp",
|
||||
"mainActivity": ".RNTesterActivity",
|
||||
"watchModeCommandParams": [
|
||||
"--mode HermesDebug"
|
||||
],
|
||||
"dependencyConfiguration": "implementation"
|
||||
}
|
||||
}
|
||||
}
|
||||
"""
|
||||
.trimIndent())
|
||||
val parsed = JsonUtils.fromAutolinkingConfigJson(validJson)!!
|
||||
|
||||
assertThat("./packages/rn-tester").isEqualTo(parsed.project!!.android!!.sourceDir)
|
||||
assertThat("RN-Tester").isEqualTo(parsed.project!!.android!!.appName)
|
||||
assertThat("com.facebook.react.uiapp").isEqualTo(parsed.project!!.android!!.packageName)
|
||||
assertThat("com.facebook.react.uiapp").isEqualTo(parsed.project!!.android!!.applicationId)
|
||||
assertThat(".RNTesterActivity").isEqualTo(parsed.project!!.android!!.mainActivity)
|
||||
assertThat("--mode HermesDebug")
|
||||
.isEqualTo(parsed.project!!.android!!.watchModeCommandParams!![0])
|
||||
assertThat("implementation").isEqualTo(parsed.project!!.android!!.dependencyConfiguration)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun fromAutolinkingConfigJson_withDependenciesSpecified_canParseIt() {
|
||||
val validJson =
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "react-native-info",
|
||||
"version": "0.75.3",
|
||||
"version": "0.75.5",
|
||||
"main": "build/index.js",
|
||||
"license": "MIT",
|
||||
"private": true,
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@react-native/popup-menu-android",
|
||||
"version": "0.75.3",
|
||||
"version": "0.75.5",
|
||||
"description": "PopupMenu for the Android platform",
|
||||
"main": "index.js",
|
||||
"files": [
|
||||
@@ -17,7 +17,7 @@
|
||||
],
|
||||
"license": "MIT",
|
||||
"devDependencies": {
|
||||
"@react-native/codegen": "0.75.3"
|
||||
"@react-native/codegen": "0.75.5"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@types/react": "^18.2.6",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@react-native/oss-library-example",
|
||||
"version": "0.75.3",
|
||||
"version": "0.75.5",
|
||||
"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.20.0",
|
||||
"@react-native/babel-preset": "0.75.3",
|
||||
"react-native": "0.75.3"
|
||||
"@react-native/babel-preset": "0.75.5",
|
||||
"react-native": "0.75.5"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"react": "*",
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@react-native/test-renderer",
|
||||
"private": true,
|
||||
"version": "0.75.3",
|
||||
"version": "0.75.5",
|
||||
"description": "A Test rendering library for React Native",
|
||||
"license": "MIT",
|
||||
"devDependencies": {
|
||||
|
||||
@@ -72,9 +72,10 @@ RCT_EXPORT_METHOD(readAsDataURL
|
||||
nil);
|
||||
} else {
|
||||
NSString *type = [RCTConvert NSString:blob[@"type"]];
|
||||
NSString *text = [NSString stringWithFormat:@"data:%@;base64,%@",
|
||||
type != nil && [type length] > 0 ? type : @"application/octet-stream",
|
||||
[data base64EncodedStringWithOptions:0]];
|
||||
NSString *text = [NSString
|
||||
stringWithFormat:@"data:%@;base64,%@",
|
||||
![type isEqual:[NSNull null]] && [type length] > 0 ? type : @"application/octet-stream",
|
||||
[data base64EncodedStringWithOptions:0]];
|
||||
|
||||
resolve(text);
|
||||
}
|
||||
|
||||
@@ -16,7 +16,7 @@ const version: $ReadOnly<{
|
||||
}> = {
|
||||
major: 0,
|
||||
minor: 75,
|
||||
patch: 3,
|
||||
patch: 5,
|
||||
prerelease: null,
|
||||
};
|
||||
|
||||
|
||||
@@ -470,7 +470,15 @@ static UIImage *RCTResizeImageIfNeeded(UIImage *image, CGSize size, CGFloat scal
|
||||
|
||||
// Add missing png extension
|
||||
if (request.URL.fileURL && request.URL.pathExtension.length == 0) {
|
||||
mutableRequest.URL = [request.URL URLByAppendingPathExtension:@"png"];
|
||||
// Check if there exists a file with that url on disk already
|
||||
// This should fix issue https://github.com/facebook/react-native/issues/46870
|
||||
if ([[NSFileManager defaultManager] fileExistsAtPath:request.URL.path]) {
|
||||
mutableRequest.URL = request.URL;
|
||||
} else {
|
||||
// This is the default behavior in case there is no file on disk with no extension.
|
||||
// We assume that the extension is `png`.
|
||||
mutableRequest.URL = [request.URL URLByAppendingPathExtension:@"png"];
|
||||
}
|
||||
}
|
||||
if (_redirectDelegate != nil) {
|
||||
mutableRequest.URL = [_redirectDelegate redirectAssetsURL:mutableRequest.URL];
|
||||
|
||||
+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;
|
||||
|
||||
@@ -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',
|
||||
|
||||
@@ -23,7 +23,7 @@ NSDictionary* RCTGetReactNativeVersion(void)
|
||||
__rnVersion = @{
|
||||
RCTVersionMajor: @(0),
|
||||
RCTVersionMinor: @(75),
|
||||
RCTVersionPatch: @(3),
|
||||
RCTVersionPatch: @(5),
|
||||
RCTVersionPrerelease: [NSNull null],
|
||||
};
|
||||
});
|
||||
|
||||
@@ -119,6 +119,7 @@ RCT_NOT_IMPLEMENTED(-(instancetype)initWithCoder : coder)
|
||||
if (_isPresented) {
|
||||
[_delegate dismissModalHostView:self withViewController:_modalViewController animated:[self hasAnimationType]];
|
||||
_isPresented = NO;
|
||||
[self setVisible:NO];
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -7732,6 +7732,7 @@ public class com/facebook/react/views/textinput/ReactEditText : androidx/appcomp
|
||||
public fun setBorderStyle (Ljava/lang/String;)V
|
||||
public fun setBorderWidth (IF)V
|
||||
public fun setContentSizeWatcher (Lcom/facebook/react/views/textinput/ContentSizeWatcher;)V
|
||||
public fun setContextMenuHidden (Z)V
|
||||
public fun setDisableFullscreenUI (Z)V
|
||||
public fun setFontFamily (Ljava/lang/String;)V
|
||||
public fun setFontFeatureSettings (Ljava/lang/String;)V
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
VERSION_NAME=0.75.3
|
||||
VERSION_NAME=0.75.5
|
||||
react.internal.publishingGroup=com.facebook.react
|
||||
|
||||
android.useAndroidX=true
|
||||
|
||||
+13
-14
@@ -169,26 +169,25 @@ public class HeadlessJsTaskContext {
|
||||
|
||||
/**
|
||||
* Finish a JS task. Doesn't actually stop the task on the JS side, only removes it from the list
|
||||
* of active tasks and notifies listeners. A task can only be finished once.
|
||||
* of active tasks and notifies listeners.
|
||||
*
|
||||
* @param taskId the unique id returned by {@link #startTask}.
|
||||
*/
|
||||
public synchronized void finishTask(final int taskId) {
|
||||
Assertions.assertCondition(
|
||||
mActiveTasks.remove(taskId), "Tried to finish non-existent task with id " + taskId + ".");
|
||||
Assertions.assertCondition(
|
||||
mActiveTaskConfigs.remove(taskId) != null,
|
||||
"Tried to remove non-existent task config with id " + taskId + ".");
|
||||
boolean removed = mActiveTasks.remove(taskId);
|
||||
mActiveTaskConfigs.remove(taskId);
|
||||
removeTimeout(taskId);
|
||||
UiThreadUtil.runOnUiThread(
|
||||
new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
for (HeadlessJsTaskEventListener listener : mHeadlessJsTaskEventListeners) {
|
||||
listener.onHeadlessJsTaskFinish(taskId);
|
||||
if (removed) {
|
||||
UiThreadUtil.runOnUiThread(
|
||||
new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
for (HeadlessJsTaskEventListener listener : mHeadlessJsTaskEventListeners) {
|
||||
listener.onHeadlessJsTaskFinish(taskId);
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
private void removeTimeout(int taskId) {
|
||||
|
||||
+1
-1
@@ -17,6 +17,6 @@ public class ReactNativeVersion {
|
||||
public static final Map<String, Object> VERSION = MapBuilder.<String, Object>of(
|
||||
"major", 0,
|
||||
"minor", 75,
|
||||
"patch", 3,
|
||||
"patch", 5,
|
||||
"prerelease", null);
|
||||
}
|
||||
|
||||
+14
@@ -118,6 +118,7 @@ public class ReactEditText extends AppCompatEditText {
|
||||
private int mFontWeight = ReactConstants.UNSET;
|
||||
private int mFontStyle = ReactConstants.UNSET;
|
||||
private boolean mAutoFocus = false;
|
||||
private boolean mContextMenuHidden = false;
|
||||
private boolean mDidAttachToWindow = false;
|
||||
private @Nullable String mPlaceholder = null;
|
||||
|
||||
@@ -191,6 +192,9 @@ public class ReactEditText extends AppCompatEditText {
|
||||
*/
|
||||
@Override
|
||||
public boolean onCreateActionMode(ActionMode mode, Menu menu) {
|
||||
if (mContextMenuHidden) {
|
||||
return false;
|
||||
}
|
||||
menu.removeItem(android.R.id.pasteAsPlainText);
|
||||
return true;
|
||||
}
|
||||
@@ -1031,12 +1035,18 @@ public class ReactEditText extends AppCompatEditText {
|
||||
public void onAttachedToWindow() {
|
||||
super.onAttachedToWindow();
|
||||
|
||||
int selectionStart = getSelectionStart();
|
||||
int selectionEnd = getSelectionEnd();
|
||||
|
||||
// Used to ensure that text is selectable inside of removeClippedSubviews
|
||||
// See https://github.com/facebook/react-native/issues/6805 for original
|
||||
// fix that was ported to here.
|
||||
|
||||
super.setTextIsSelectable(true);
|
||||
|
||||
// Restore the selection since `setTextIsSelectable` changed it.
|
||||
setSelection(selectionStart, selectionEnd);
|
||||
|
||||
if (mContainsImages) {
|
||||
Spanned text = getText();
|
||||
TextInlineImageSpan[] spans = text.getSpans(0, text.length(), TextInlineImageSpan.class);
|
||||
@@ -1121,6 +1131,10 @@ public class ReactEditText extends AppCompatEditText {
|
||||
mAutoFocus = autoFocus;
|
||||
}
|
||||
|
||||
public void setContextMenuHidden(boolean contextMenuHidden) {
|
||||
mContextMenuHidden = contextMenuHidden;
|
||||
}
|
||||
|
||||
protected void applyTextAttributes() {
|
||||
// In general, the `getEffective*` functions return `Float.NaN` if the
|
||||
// property hasn't been set.
|
||||
|
||||
+1
-8
@@ -651,14 +651,7 @@ public class ReactTextInputManager extends BaseViewManager<ReactEditText, Layout
|
||||
|
||||
@ReactProp(name = "contextMenuHidden", defaultBoolean = false)
|
||||
public void setContextMenuHidden(ReactEditText view, boolean contextMenuHidden) {
|
||||
final boolean _contextMenuHidden = contextMenuHidden;
|
||||
view.setOnLongClickListener(
|
||||
new View.OnLongClickListener() {
|
||||
public boolean onLongClick(View v) {
|
||||
return _contextMenuHidden;
|
||||
}
|
||||
;
|
||||
});
|
||||
view.setContextMenuHidden(contextMenuHidden);
|
||||
}
|
||||
|
||||
@ReactProp(name = "selectTextOnFocus", defaultBoolean = false)
|
||||
|
||||
@@ -17,7 +17,7 @@ namespace facebook::react {
|
||||
constexpr struct {
|
||||
int32_t Major = 0;
|
||||
int32_t Minor = 75;
|
||||
int32_t Patch = 3;
|
||||
int32_t Patch = 5;
|
||||
std::string_view Prerelease = "";
|
||||
} ReactNativeVersion;
|
||||
|
||||
|
||||
@@ -582,6 +582,10 @@ class WithRuntimeDecorator : public RuntimeDecorator<Plain, Base> {
|
||||
Around around{with_};
|
||||
return RD::cloneSymbol(pv);
|
||||
};
|
||||
Runtime::PointerValue* cloneBigInt(const Runtime::PointerValue* pv) override {
|
||||
Around around{with_};
|
||||
return RD::cloneBigInt(pv);
|
||||
};
|
||||
Runtime::PointerValue* cloneString(const Runtime::PointerValue* pv) override {
|
||||
Around around{with_};
|
||||
return RD::cloneString(pv);
|
||||
@@ -610,6 +614,10 @@ class WithRuntimeDecorator : public RuntimeDecorator<Plain, Base> {
|
||||
Around around{with_};
|
||||
return RD::createPropNameIDFromString(str);
|
||||
};
|
||||
PropNameID createPropNameIDFromSymbol(const Symbol& sym) override {
|
||||
Around around{with_};
|
||||
return RD::createPropNameIDFromSymbol(sym);
|
||||
};
|
||||
std::string utf8(const PropNameID& id) override {
|
||||
Around around{with_};
|
||||
return RD::utf8(id);
|
||||
@@ -624,6 +632,31 @@ class WithRuntimeDecorator : public RuntimeDecorator<Plain, Base> {
|
||||
return RD::symbolToString(sym);
|
||||
};
|
||||
|
||||
BigInt createBigIntFromInt64(int64_t i) override {
|
||||
Around around{with_};
|
||||
return RD::createBigIntFromInt64(i);
|
||||
};
|
||||
BigInt createBigIntFromUint64(uint64_t i) override {
|
||||
Around around{with_};
|
||||
return RD::createBigIntFromUint64(i);
|
||||
};
|
||||
bool bigintIsInt64(const BigInt& bi) override {
|
||||
Around around{with_};
|
||||
return RD::bigintIsInt64(bi);
|
||||
};
|
||||
bool bigintIsUint64(const BigInt& bi) override {
|
||||
Around around{with_};
|
||||
return RD::bigintIsUint64(bi);
|
||||
};
|
||||
uint64_t truncate(const BigInt& bi) override {
|
||||
Around around{with_};
|
||||
return RD::truncate(bi);
|
||||
};
|
||||
String bigintToString(const BigInt& bi, int i) override {
|
||||
Around around{with_};
|
||||
return RD::bigintToString(bi, i);
|
||||
};
|
||||
|
||||
String createStringFromAscii(const char* str, size_t length) override {
|
||||
Around around{with_};
|
||||
return RD::createStringFromAscii(str, length);
|
||||
@@ -637,6 +670,11 @@ class WithRuntimeDecorator : public RuntimeDecorator<Plain, Base> {
|
||||
return RD::utf8(s);
|
||||
}
|
||||
|
||||
Value createValueFromJsonUtf8(const uint8_t* json, size_t length) override {
|
||||
Around around{with_};
|
||||
return RD::createValueFromJsonUtf8(json, length);
|
||||
};
|
||||
|
||||
Object createObject() override {
|
||||
Around around{with_};
|
||||
return RD::createObject();
|
||||
@@ -797,6 +835,11 @@ class WithRuntimeDecorator : public RuntimeDecorator<Plain, Base> {
|
||||
Around around{with_};
|
||||
return RD::strictEquals(a, b);
|
||||
};
|
||||
bool strictEquals(const BigInt& a, const BigInt& b) const override {
|
||||
Around around{with_};
|
||||
return RD::strictEquals(a, b);
|
||||
};
|
||||
|
||||
bool strictEquals(const String& a, const String& b) const override {
|
||||
Around around{with_};
|
||||
return RD::strictEquals(a, b);
|
||||
@@ -811,6 +854,12 @@ class WithRuntimeDecorator : public RuntimeDecorator<Plain, Base> {
|
||||
return RD::instanceOf(o, f);
|
||||
};
|
||||
|
||||
void setExternalMemoryPressure(const jsi::Object& obj, size_t amount)
|
||||
override {
|
||||
Around around{with_};
|
||||
RD::setExternalMemoryPressure(obj, amount);
|
||||
};
|
||||
|
||||
private:
|
||||
// Wrap an RAII type around With& to guarantee after always happens.
|
||||
struct Around {
|
||||
|
||||
+1
-4
@@ -794,10 +794,7 @@ LayoutAnimationKeyFrameManager::pullTransaction(
|
||||
finalConflictingMutations.end(),
|
||||
&shouldFirstComeBeforeSecondMutation);
|
||||
|
||||
std::stable_sort(
|
||||
immediateMutations.begin(),
|
||||
immediateMutations.end(),
|
||||
&shouldFirstComeBeforeSecondRemovesOnly);
|
||||
handleShouldFirstComeBeforeSecondRemovesOnly(immediateMutations);
|
||||
|
||||
animation.keyFrames = keyFramesToAnimate;
|
||||
inflightAnimations_.push_back(std::move(animation));
|
||||
|
||||
@@ -24,6 +24,40 @@ static inline bool shouldFirstComeBeforeSecondRemovesOnly(
|
||||
(lhs.index > rhs.index);
|
||||
}
|
||||
|
||||
static inline void handleShouldFirstComeBeforeSecondRemovesOnly(
|
||||
ShadowViewMutation::List& list) noexcept {
|
||||
std::unordered_map<std::string, std::vector<ShadowViewMutation>>
|
||||
removeMutationsByTag;
|
||||
ShadowViewMutation::List finalList;
|
||||
for (auto& mutation : list) {
|
||||
if (mutation.type == ShadowViewMutation::Type::Remove) {
|
||||
auto key = std::to_string(mutation.parentShadowView.tag);
|
||||
removeMutationsByTag[key].push_back(mutation);
|
||||
} else {
|
||||
finalList.push_back(mutation);
|
||||
}
|
||||
}
|
||||
|
||||
if (removeMutationsByTag.size() == 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
for (auto& mutationsPair : removeMutationsByTag) {
|
||||
if (mutationsPair.second.size() > 1) {
|
||||
std::stable_sort(
|
||||
mutationsPair.second.begin(),
|
||||
mutationsPair.second.end(),
|
||||
&shouldFirstComeBeforeSecondRemovesOnly);
|
||||
}
|
||||
finalList.insert(
|
||||
finalList.begin(),
|
||||
mutationsPair.second.begin(),
|
||||
mutationsPair.second.end());
|
||||
}
|
||||
|
||||
list = finalList;
|
||||
}
|
||||
|
||||
static inline bool shouldFirstComeBeforeSecondMutation(
|
||||
const ShadowViewMutation& lhs,
|
||||
const ShadowViewMutation& rhs) noexcept {
|
||||
@@ -55,6 +89,17 @@ static inline bool shouldFirstComeBeforeSecondMutation(
|
||||
lhs.type == ShadowViewMutation::Type::Insert) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// Remove comes before Update
|
||||
if (lhs.type == ShadowViewMutation::Type::Remove &&
|
||||
rhs.type == ShadowViewMutation::Type::Update) {
|
||||
return true;
|
||||
}
|
||||
if (rhs.type == ShadowViewMutation::Type::Remove &&
|
||||
lhs.type == ShadowViewMutation::Type::Update) {
|
||||
return false;
|
||||
}
|
||||
|
||||
} else {
|
||||
// Make sure that removes on the same level are sorted - highest indices
|
||||
// must come first.
|
||||
|
||||
@@ -23,7 +23,7 @@ javax-annotation-api = "1.3.2"
|
||||
javax-inject = "1"
|
||||
jsr305 = "3.0.2"
|
||||
junit = "4.13.2"
|
||||
kotlin = "1.9.24"
|
||||
kotlin = "1.9.25"
|
||||
mockito = "3.12.4"
|
||||
nexus-publish = "1.3.0"
|
||||
okhttp = "4.9.2"
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "react-native",
|
||||
"version": "0.75.3",
|
||||
"version": "0.75.5",
|
||||
"description": "A framework for building native apps using React",
|
||||
"license": "MIT",
|
||||
"repository": {
|
||||
@@ -112,13 +112,13 @@
|
||||
"@react-native-community/cli": "14.1.0",
|
||||
"@react-native-community/cli-platform-android": "14.1.0",
|
||||
"@react-native-community/cli-platform-ios": "14.1.0",
|
||||
"@react-native/assets-registry": "0.75.3",
|
||||
"@react-native/codegen": "0.75.3",
|
||||
"@react-native/community-cli-plugin": "0.75.3",
|
||||
"@react-native/gradle-plugin": "0.75.3",
|
||||
"@react-native/js-polyfills": "0.75.3",
|
||||
"@react-native/normalize-colors": "0.75.3",
|
||||
"@react-native/virtualized-lists": "0.75.3",
|
||||
"@react-native/assets-registry": "0.75.5",
|
||||
"@react-native/codegen": "0.75.5",
|
||||
"@react-native/community-cli-plugin": "0.75.5",
|
||||
"@react-native/gradle-plugin": "0.75.5",
|
||||
"@react-native/js-polyfills": "0.75.5",
|
||||
"@react-native/normalize-colors": "0.75.5",
|
||||
"@react-native/virtualized-lists": "0.75.5",
|
||||
"abort-controller": "^3.0.0",
|
||||
"anser": "^1.4.9",
|
||||
"ansi-regex": "^5.0.0",
|
||||
|
||||
@@ -235,16 +235,9 @@ class ReactNativePodsUtils
|
||||
if !file_manager.exist?("#{file_path}.local")
|
||||
# When installing pods with a yarn alias, yarn creates a fake yarn and node executables
|
||||
# in a temporary folder.
|
||||
# Using `type -a` we are able to retrieve all the paths of an executable and we can
|
||||
# exclude the temporary ones.
|
||||
# Using `node --print "process.argv[0]";` we are able to retrieve the actual path from which node is running.
|
||||
# see https://github.com/facebook/react-native/issues/43285 for more info
|
||||
node_binary = `type -a node`.split("\n").map { |path|
|
||||
path.gsub!("node is ", "")
|
||||
}.select { |b|
|
||||
!b.start_with?("/var")
|
||||
}
|
||||
|
||||
node_binary = node_binary[0]
|
||||
node_binary = `node --print "process.argv[0]";`
|
||||
system("echo 'export NODE_BINARY=#{node_binary}' > #{file_path}.local")
|
||||
end
|
||||
end
|
||||
|
||||
@@ -92,6 +92,8 @@ fi
|
||||
|
||||
[ -z "$CLI_PATH" ] && CLI_PATH="$REACT_NATIVE_DIR/scripts/bundle.js"
|
||||
|
||||
[ -z "$BUNDLE_COMMAND" ] && BUNDLE_COMMAND="bundle"
|
||||
|
||||
[ -z "$COMPOSE_SOURCEMAP_PATH" ] && COMPOSE_SOURCEMAP_PATH="$REACT_NATIVE_DIR/scripts/compose-source-maps.js"
|
||||
|
||||
if [[ -z "$BUNDLE_CONFIG" ]]; then
|
||||
@@ -141,7 +143,7 @@ fi
|
||||
if [[ -n "$CONFIG_JSON" ]]; then
|
||||
EXTRA_ARGS+=("--load-config" "$CONFIG_JSON")
|
||||
elif [[ -n "$CONFIG_CMD" ]]; then
|
||||
EXTRA_ARGS+=("--config-cmd" "$CONFIG_APP")
|
||||
EXTRA_ARGS+=("--config-cmd" "$CONFIG_CMD")
|
||||
else
|
||||
EXTRA_ARGS+=("--config-cmd" "$NODE_BINARY $NODE_ARGS $REACT_NATIVE_DIR/cli.js config")
|
||||
fi
|
||||
@@ -149,7 +151,6 @@ fi
|
||||
# shellcheck disable=SC2086
|
||||
"$NODE_BINARY" $NODE_ARGS "$CLI_PATH" $BUNDLE_COMMAND \
|
||||
$CONFIG_ARG \
|
||||
--config-cmd "$CONFIG" \
|
||||
--entry-file "$ENTRY_FILE" \
|
||||
--platform "$BUNDLE_PLATFORM" \
|
||||
--dev $DEV \
|
||||
|
||||
@@ -1 +1 @@
|
||||
hermes-2024-08-15-RNv0.75.1-4b3bf912cc0f705b51b71ce1a5b8bd79b93a451b
|
||||
hermes-2025-02-06-RNv0.75.5-53ff6df3af18e250c29a74f34273f50dbfa410dc
|
||||
|
||||
@@ -198,19 +198,7 @@ function create_universal_framework {
|
||||
for i in "${!platforms[@]}"; do
|
||||
local platform="${platforms[$i]}"
|
||||
local hermes_framework_path="${platform}/hermes.framework"
|
||||
local dSYM_path="$hermes_framework_path"
|
||||
local dSYM_base_path="$HERMES_PATH/destroot/Library/Frameworks"
|
||||
|
||||
# If the dSYM rename has failed, the dSYM are generated as 0.dSYM
|
||||
# (Apple default name) rather then hermes.framework.dSYM.
|
||||
if [[ -e "$dSYM_base_path/${platform}/0.dSYM" ]]; then
|
||||
dSYM_path="${platform}/0"
|
||||
fi
|
||||
|
||||
args+="-framework $hermes_framework_path "
|
||||
|
||||
# Path to dSYM must be absolute
|
||||
args+="-debug-symbols $dSYM_base_path/$dSYM_path.dSYM "
|
||||
done
|
||||
|
||||
mkdir -p universal
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@react-native/tester-e2e",
|
||||
"private": true,
|
||||
"version": "0.75.3",
|
||||
"version": "0.75.5",
|
||||
"license": "MIT",
|
||||
"description": "React Native E2E tester app.",
|
||||
"homepage": "https://github.com/facebook/react-native/tree/HEAD/packages/rn-tester-e2e",
|
||||
|
||||
@@ -8,3 +8,5 @@ ruby ">= 2.6.10"
|
||||
gem 'cocoapods', '>= 1.13', '< 1.15'
|
||||
gem 'rexml'
|
||||
gem 'activesupport', '>= 6.1.7.5', '< 7.1.0'
|
||||
gem 'xcodeproj', '< 1.26.0'
|
||||
gem 'concurrent-ruby', '< 1.3.4'
|
||||
|
||||
+281
-281
File diff suppressed because it is too large
Load Diff
@@ -863,6 +863,7 @@
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
CC = "";
|
||||
CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "c++20";
|
||||
CLANG_CXX_LIBRARY = "libc++";
|
||||
@@ -893,6 +894,7 @@
|
||||
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
|
||||
COPY_PHASE_STRIP = NO;
|
||||
CXX = "";
|
||||
ENABLE_BITCODE = NO;
|
||||
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
||||
ENABLE_TESTABILITY = YES;
|
||||
@@ -933,6 +935,8 @@
|
||||
"${PODS_CONFIGURATION_BUILD_DIR}/React-graphics/React_graphics.framework/Headers",
|
||||
);
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 13.4;
|
||||
LD = "";
|
||||
LDPLUSPLUS = "";
|
||||
MTL_ENABLE_DEBUG_INFO = YES;
|
||||
ONLY_ACTIVE_ARCH = YES;
|
||||
OTHER_CFLAGS = "$(inherited)";
|
||||
@@ -964,6 +968,7 @@
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
CC = "";
|
||||
CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "c++20";
|
||||
CLANG_CXX_LIBRARY = "libc++";
|
||||
@@ -994,6 +999,7 @@
|
||||
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
|
||||
COPY_PHASE_STRIP = YES;
|
||||
CXX = "";
|
||||
ENABLE_BITCODE = NO;
|
||||
ENABLE_NS_ASSERTIONS = NO;
|
||||
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
||||
@@ -1027,6 +1033,8 @@
|
||||
"${PODS_CONFIGURATION_BUILD_DIR}/React-graphics/React_graphics.framework/Headers",
|
||||
);
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 13.4;
|
||||
LD = "";
|
||||
LDPLUSPLUS = "";
|
||||
MTL_ENABLE_DEBUG_INFO = NO;
|
||||
OTHER_CFLAGS = "$(inherited)";
|
||||
OTHER_CPLUSPLUSFLAGS = (
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@react-native/tester",
|
||||
"version": "0.75.3",
|
||||
"version": "0.75.5",
|
||||
"private": true,
|
||||
"description": "React Native tester app.",
|
||||
"license": "MIT",
|
||||
@@ -26,8 +26,8 @@
|
||||
"flow-enums-runtime": "^0.0.6",
|
||||
"invariant": "^2.2.4",
|
||||
"nullthrows": "^1.1.1",
|
||||
"@react-native/oss-library-example": "0.75.3",
|
||||
"@react-native/popup-menu-android": "0.75.3"
|
||||
"@react-native/oss-library-example": "0.75.5",
|
||||
"@react-native/popup-menu-android": "0.75.5"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"react": "18.3.1",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@react-native/typescript-config",
|
||||
"version": "0.75.3",
|
||||
"version": "0.75.5",
|
||||
"description": "Default TypeScript configuration for React Native apps",
|
||||
"license": "MIT",
|
||||
"repository": {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@react-native/virtualized-lists",
|
||||
"version": "0.75.3",
|
||||
"version": "0.75.5",
|
||||
"description": "Virtualized lists for React Native.",
|
||||
"license": "MIT",
|
||||
"repository": {
|
||||
|
||||
Reference in New Issue
Block a user