diff --git a/.circleci/config.yml b/.circleci/config.yml
index 7f1508213c33..13935eec58a1 100644
--- a/.circleci/config.yml
+++ b/.circleci/config.yml
@@ -60,8 +60,8 @@ references:
gems_cache_key: &gems_cache_key v1-gems-{{ checksum "Gemfile.lock" }}
gradle_cache_key: &gradle_cache_key v1-gradle-{{ checksum "gradle/wrapper/gradle-wrapper.properties" }}-{{ checksum "packages/react-native/ReactAndroid/gradle.properties" }}
hermes_workspace_cache_key: &hermes_workspace_cache_key v4-hermes-{{ .Environment.CIRCLE_JOB }}-{{ checksum "/tmp/hermes/hermesversion" }}
- hermes_workspace_debug_cache_key: &hermes_workspace_debug_cache_key v2-hermes-{{ .Environment.CIRCLE_JOB }}-debug-{{ checksum "/tmp/hermes/hermesversion" }}-{{ checksum "/tmp/react-native-version" }}
- hermes_workspace_release_cache_key: &hermes_workspace_release_cache_key v2-hermes-{{ .Environment.CIRCLE_JOB }}-release-{{ checksum "/tmp/hermes/hermesversion" }}-{{ checksum "/tmp/react-native-version" }}
+ hermes_workspace_debug_cache_key: &hermes_workspace_debug_cache_key v2-hermes-{{ .Environment.CIRCLE_JOB }}-debug-{{ checksum "/tmp/hermes/hermesversion" }}-{{ checksum "/tmp/react-native-version" }}-{{ checksum "packages/react-native/sdks/hermes-engine/utils/build-apple-framework.sh" }}
+ hermes_workspace_release_cache_key: &hermes_workspace_release_cache_key v2-hermes-{{ .Environment.CIRCLE_JOB }}-release-{{ checksum "/tmp/hermes/hermesversion" }}-{{ checksum "/tmp/react-native-version" }}-{{ checksum "packages/react-native/sdks/hermes-engine/utils/build-apple-framework.sh" }}
hermes_linux_cache_key: &hermes_linux_cache_key v1-hermes-{{ .Environment.CIRCLE_JOB }}-linux-{{ checksum "/tmp/hermes/hermesversion" }}-{{ checksum "/tmp/react-native-version" }}
hermes_windows_cache_key: &hermes_windows_cache_key v2-hermes-{{ .Environment.CIRCLE_JOB }}-windows-{{ checksum "/Users/circleci/project/tmp/hermes/hermesversion" }}-{{ checksum "/tmp/react-native-version" }}
hermes_tarball_debug_cache_key: &hermes_tarball_debug_cache_key v4-hermes-tarball-debug-{{ checksum "/tmp/hermes/hermesversion" }}-{{ checksum "/tmp/react-native-version" }}
@@ -202,7 +202,11 @@ commands:
# Set ruby dependencies
rbenv global << parameters.ruby_version >>
- gem install bundler
+ if [[ $(echo << parameters.ruby_version >> | awk -F'.' '{print $1}') == "2" ]]; then
+ gem install bundler -v 2.4.22
+ else
+ gem install bundler
+ fi
bundle check || bundle install --path vendor/bundle --clean
- save_cache:
key: *rbenv_cache_key
@@ -1039,7 +1043,7 @@ jobs:
- run:
name: Install Node JS
# Note: Version set separately for non-Windows builds, see above.
- command: choco install nodejs-lts
+ command: choco install nodejs --version=18.18.0 --allow-downgrade
# Setup Dependencies
- run:
@@ -1149,7 +1153,15 @@ jobs:
command: |
apt update
apt install -y wget git curl
- curl -sL https://deb.nodesource.com/setup_16.x | bash -
+
+ apt-get update
+ apt-get install -y ca-certificates curl gnupg
+ mkdir -p /etc/apt/keyrings
+ curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg
+ NODE_MAJOR=16
+ echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_$NODE_MAJOR.x nodistro main" | tee /etc/apt/sources.list.d/nodesource.list
+ apt-get update
+
apt install -y nodejs
npm install --global yarn
- checkout
@@ -1564,6 +1576,19 @@ jobs:
-d "{\"event_type\": \"publish\", \"client_payload\": { \"version\": \"${CIRCLE_TAG:1}\" }}"
# END: Stable releases
+ poll_maven:
+ docker:
+ - image: cimg/node:current
+ resource_class: small
+ steps:
+ - checkout_code_with_cache
+ - run_yarn
+ - run:
+ name: Poll Maven for Artifacts
+ command: |
+ node scripts/circleci/poll-maven.js
+
+
# -------------------------
# JOBS: Nightly
# -------------------------
@@ -1900,6 +1925,9 @@ workflows:
- build_hermesc_linux
- build_hermes_macos
- build_hermesc_windows
+ - poll_maven:
+ requires:
+ - build_and_publish_npm_package
package_and_publish_release_dryrun:
when:
diff --git a/.gitignore b/.gitignore
index 6acb4ded1775..7adaf008e98d 100644
--- a/.gitignore
+++ b/.gitignore
@@ -107,6 +107,8 @@ package-lock.json
/packages/react-native/template/vendor
.ruby-version
/**/.ruby-version
+./vendor/
+vendor/
# iOS / CocoaPods
/packages/react-native/template/ios/build/
diff --git a/Gemfile b/Gemfile
index 34784a7cd94f..1f6572542434 100644
--- a/Gemfile
+++ b/Gemfile
@@ -4,4 +4,4 @@ source 'https://rubygems.org'
ruby ">= 2.6.10"
gem 'cocoapods', '~> 1.12'
-gem 'activesupport', '>= 6.1.7.1'
+gem 'activesupport', '>= 6.1.7.3', '< 7.1.0'
diff --git a/Gemfile.lock b/Gemfile.lock
index edae63df6d41..1e46da54f366 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -3,24 +3,24 @@ GEM
specs:
CFPropertyList (3.0.6)
rexml
- activesupport (7.0.7)
+ activesupport (7.0.8)
concurrent-ruby (~> 1.0, >= 1.0.2)
i18n (>= 1.6, < 2)
minitest (>= 5.1)
tzinfo (~> 2.0)
- addressable (2.8.5)
+ addressable (2.8.6)
public_suffix (>= 2.0.2, < 6.0)
algoliasearch (1.27.5)
httpclient (~> 2.8, >= 2.8.3)
json (>= 1.5.1)
atomos (0.1.3)
claide (1.1.0)
- cocoapods (1.12.1)
+ cocoapods (1.14.3)
addressable (~> 2.8)
claide (>= 1.0.2, < 2.0)
- cocoapods-core (= 1.12.1)
+ cocoapods-core (= 1.14.3)
cocoapods-deintegrate (>= 1.0.3, < 2.0)
- cocoapods-downloader (>= 1.6.0, < 2.0)
+ cocoapods-downloader (>= 2.1, < 3.0)
cocoapods-plugins (>= 1.0.0, < 2.0)
cocoapods-search (>= 1.0.0, < 2.0)
cocoapods-trunk (>= 1.6.0, < 2.0)
@@ -32,8 +32,8 @@ GEM
molinillo (~> 0.8.0)
nap (~> 1.0)
ruby-macho (>= 2.3.0, < 3.0)
- xcodeproj (>= 1.21.0, < 2.0)
- cocoapods-core (1.12.1)
+ xcodeproj (>= 1.23.0, < 2.0)
+ cocoapods-core (1.14.3)
activesupport (>= 5.0, < 8)
addressable (~> 2.8)
algoliasearch (~> 1.0)
@@ -44,7 +44,7 @@ GEM
public_suffix (~> 4.0)
typhoeus (~> 1.0)
cocoapods-deintegrate (1.0.5)
- cocoapods-downloader (1.6.3)
+ cocoapods-downloader (2.1)
cocoapods-plugins (1.0.0)
nap
cocoapods-search (1.0.1)
@@ -53,19 +53,19 @@ GEM
netrc (~> 0.11)
cocoapods-try (1.2.0)
colored2 (3.1.2)
- concurrent-ruby (1.2.2)
+ concurrent-ruby (1.2.3)
escape (0.0.4)
ethon (0.16.0)
ffi (>= 1.15.0)
- ffi (1.15.5)
+ ffi (1.16.3)
fourflusher (2.3.1)
fuzzy_match (2.0.4)
gh_inspector (1.1.3)
httpclient (2.8.3)
i18n (1.14.1)
concurrent-ruby (~> 1.0)
- json (2.6.3)
- minitest (5.19.0)
+ json (2.7.1)
+ minitest (5.21.2)
molinillo (0.8.0)
nanaimo (0.3.0)
nap (1.1.0)
@@ -73,11 +73,11 @@ GEM
public_suffix (4.0.7)
rexml (3.2.6)
ruby-macho (2.5.1)
- typhoeus (1.4.0)
+ typhoeus (1.4.1)
ethon (>= 0.9.0)
tzinfo (2.0.6)
concurrent-ruby (~> 1.0)
- xcodeproj (1.22.0)
+ xcodeproj (1.23.0)
CFPropertyList (>= 2.3.3, < 4.0)
atomos (~> 0.1.3)
claide (>= 1.0.2, < 2.0)
@@ -89,7 +89,7 @@ PLATFORMS
ruby
DEPENDENCIES
- activesupport (>= 6.1.7.1)
+ activesupport (>= 6.1.7.3, < 7.1.0)
cocoapods (~> 1.12)
RUBY VERSION
diff --git a/package.json b/package.json
index 63c92793607c..4304eb5b9ff4 100644
--- a/package.json
+++ b/package.json
@@ -40,7 +40,8 @@
"test-ios": "./scripts/objc-test.sh test",
"test-typescript": "dtslint packages/react-native/types",
"test-typescript-offline": "dtslint --localTs node_modules/typescript/lib packages/react-native/types",
- "bump-all-updated-packages": "node ./scripts/monorepo/bump-all-updated-packages"
+ "bump-all-updated-packages": "node ./scripts/monorepo/bump-all-updated-packages",
+ "trigger-react-native-release": "node ./scripts/trigger-react-native-release.js"
},
"workspaces": [
"packages/*"
diff --git a/packages/react-native-codegen/package.json b/packages/react-native-codegen/package.json
index b43e2e8f8a17..95c58eccfaa7 100644
--- a/packages/react-native-codegen/package.json
+++ b/packages/react-native-codegen/package.json
@@ -1,6 +1,6 @@
{
"name": "@react-native/codegen",
- "version": "0.72.6",
+ "version": "0.72.8",
"description": "⚛️ Code generation tools for React Native",
"homepage": "https://github.com/facebook/react-native/tree/HEAD/packages/react-native-codegen",
"repository": {
@@ -20,7 +20,10 @@
"dependencies": {
"@babel/parser": "^7.20.0",
"flow-parser": "^0.206.0",
+ "glob": "^7.1.1",
+ "invariant": "^2.2.4",
"jscodeshift": "^0.14.0",
+ "mkdirp": "^0.5.1",
"nullthrows": "^1.1.1"
},
"devDependencies": {
@@ -35,10 +38,7 @@
"@babel/plugin-transform-flow-strip-types": "^7.20.0",
"@babel/preset-env": "^7.20.0",
"chalk": "^4.0.0",
- "glob": "^7.1.1",
- "invariant": "^2.2.4",
"micromatch": "^4.0.4",
- "mkdirp": "^0.5.1",
"prettier": "^2.4.1",
"rimraf": "^3.0.2"
},
diff --git a/packages/react-native-codegen/src/cli/combine/combine-js-to-schema-cli.js b/packages/react-native-codegen/src/cli/combine/combine-js-to-schema-cli.js
index 00fadf3dd661..6aeff3418a2a 100644
--- a/packages/react-native-codegen/src/cli/combine/combine-js-to-schema-cli.js
+++ b/packages/react-native-codegen/src/cli/combine/combine-js-to-schema-cli.js
@@ -14,6 +14,7 @@
const combine = require('./combine-js-to-schema');
const fs = require('fs');
const glob = require('glob');
+const path = require('path');
const {parseArgs, filterJSFile} = require('./combine-utils');
const {platform, outfile, fileList} = parseArgs(process.argv);
@@ -21,9 +22,14 @@ const {platform, outfile, fileList} = parseArgs(process.argv);
const allFiles = [];
fileList.forEach(file => {
if (fs.lstatSync(file).isDirectory()) {
+ const filePattern = path.sep === '\\' ? file.replace(/\\/g, '/') : file;
const dirFiles = glob
- .sync(`${file}/**/*.{js,ts,tsx}`, {
+ .sync(`${filePattern}/**/*.{js,ts,tsx}`, {
nodir: true,
+ // TODO: This will remove the need of slash substitution above for Windows,
+ // but it requires glob@v9+; with the package currenlty relying on
+ // glob@7.1.1; and flow-typed repo not having definitions for glob@9+.
+ // windowsPathsNoEscape: true,
})
.filter(element => filterJSFile(element, platform));
allFiles.push(...dirFiles);
diff --git a/packages/react-native/Libraries/Animated/NativeAnimatedHelper.js b/packages/react-native/Libraries/Animated/NativeAnimatedHelper.js
index 2dd197617641..e96cbd75c16e 100644
--- a/packages/react-native/Libraries/Animated/NativeAnimatedHelper.js
+++ b/packages/react-native/Libraries/Animated/NativeAnimatedHelper.js
@@ -562,10 +562,13 @@ function transformDataType(value: number | string): number | string {
if (typeof value !== 'string') {
return value;
}
- if (/deg$/.test(value)) {
+
+ // Normalize degrees and radians to a number expressed in radians
+ if (value.endsWith('deg')) {
const degrees = parseFloat(value) || 0;
- const radians = (degrees * Math.PI) / 180.0;
- return radians;
+ return (degrees * Math.PI) / 180.0;
+ } else if (value.endsWith('rad')) {
+ return parseFloat(value) || 0;
} else {
return value;
}
diff --git a/packages/react-native/Libraries/Animated/__tests__/Interpolation-test.js b/packages/react-native/Libraries/Animated/__tests__/Interpolation-test.js
index 0e8e342da760..9726b9191218 100644
--- a/packages/react-native/Libraries/Animated/__tests__/Interpolation-test.js
+++ b/packages/react-native/Libraries/Animated/__tests__/Interpolation-test.js
@@ -349,4 +349,20 @@ describe('Interpolation', () => {
expect(interpolation(1e-12)).toBe('rgba(0, 0, 0, 0)');
expect(interpolation(2 / 3)).toBe('rgba(0, 0, 0, 0.667)');
});
+
+ it.each([
+ ['radians', ['1rad', '2rad'], [1, 2]],
+ ['degrees', ['90deg', '180deg'], [Math.PI / 2, Math.PI]],
+ ['numbers', [1024, Math.PI], [1024, Math.PI]],
+ ['unknown', ['5foo', '10foo'], ['5foo', '10foo']],
+ ])(
+ 'should convert %s to numbers in the native config',
+ (_, outputRange, expected) => {
+ const config = new AnimatedInterpolation(
+ {},
+ {inputRange: [0, 1], outputRange},
+ ).__getNativeConfig();
+ expect(config.outputRange).toEqual(expected);
+ },
+ );
});
diff --git a/packages/react-native/Libraries/AppDelegate/React-RCTAppDelegate.podspec b/packages/react-native/Libraries/AppDelegate/React-RCTAppDelegate.podspec
index 1c1ae9b5a4a9..2405e7b374aa 100644
--- a/packages/react-native/Libraries/AppDelegate/React-RCTAppDelegate.podspec
+++ b/packages/react-native/Libraries/AppDelegate/React-RCTAppDelegate.podspec
@@ -96,15 +96,19 @@ Pod::Spec.new do |s|
s.dependency "React-utils"
s.dependency "React-debug"
+ rel_path_from_pods_root_to_app = Pathname.new(ENV['APP_PATH']).relative_path_from(Pod::Config.instance.installation_root)
+ rel_path_from_pods_to_app = Pathname.new(ENV['APP_PATH']).relative_path_from(File.join(Pod::Config.instance.installation_root, 'Pods'))
+
+
s.script_phases = {
:name => "Generate Legacy Components Interop",
:script => "
WITH_ENVIRONMENT=\"$REACT_NATIVE_PATH/scripts/xcode/with-environment.sh\"
source $WITH_ENVIRONMENT
-${NODE_BINARY} ${REACT_NATIVE_PATH}/scripts/codegen/generate-legacy-interop-components.js -p #{ENV['APP_PATH']} -o ${REACT_NATIVE_PATH}/Libraries/AppDelegate
+${NODE_BINARY} ${REACT_NATIVE_PATH}/scripts/codegen/generate-legacy-interop-components.js -p #{rel_path_from_pods_to_app} -o ${REACT_NATIVE_PATH}/Libraries/AppDelegate
",
:execution_position => :before_compile,
- :input_files => ["#{ENV['APP_PATH']}/react-native.config.js"],
+ :input_files => ["#{rel_path_from_pods_root_to_app}/react-native.config.js"],
:output_files => ["${REACT_NATIVE_PATH}/Libraries/AppDelegate/RCTLegacyInteropComponents.mm"],
}
end
diff --git a/packages/react-native/Libraries/Core/ReactNativeVersion.js b/packages/react-native/Libraries/Core/ReactNativeVersion.js
index ce4fe688c0f7..b48a829901f0 100644
--- a/packages/react-native/Libraries/Core/ReactNativeVersion.js
+++ b/packages/react-native/Libraries/Core/ReactNativeVersion.js
@@ -12,6 +12,6 @@
exports.version = {
major: 0,
minor: 72,
- patch: 4,
+ patch: 10,
prerelease: null,
};
diff --git a/packages/react-native/Libraries/LogBox/Data/LogBoxData.js b/packages/react-native/Libraries/LogBox/Data/LogBoxData.js
index d3e06b045130..abc2401ac421 100644
--- a/packages/react-native/Libraries/LogBox/Data/LogBoxData.js
+++ b/packages/react-native/Libraries/LogBox/Data/LogBoxData.js
@@ -30,6 +30,7 @@ export type LogData = $ReadOnly<{|
message: Message,
category: Category,
componentStack: ComponentStack,
+ stack?: string,
|}>;
export type Observer = (
@@ -198,7 +199,7 @@ export function addLog(log: LogData): void {
// otherwise spammy logs would pause rendering.
setImmediate(() => {
try {
- const stack = parseErrorStack(errorForStackTrace?.stack);
+ const stack = parseErrorStack(log.stack ?? errorForStackTrace?.stack);
appendNewLog(
new LogBoxLog({
diff --git a/packages/react-native/Libraries/LogBox/Data/parseLogBoxLog.js b/packages/react-native/Libraries/LogBox/Data/parseLogBoxLog.js
index 7b91d697a880..610f00034634 100644
--- a/packages/react-native/Libraries/LogBox/Data/parseLogBoxLog.js
+++ b/packages/react-native/Libraries/LogBox/Data/parseLogBoxLog.js
@@ -14,12 +14,38 @@ import type {LogBoxLogData} from './LogBoxLog';
import parseErrorStack from '../../Core/Devtools/parseErrorStack';
import UTFSequence from '../../UTFSequence';
import stringifySafe from '../../Utilities/stringifySafe';
+import ansiRegex from 'ansi-regex';
+
+const ANSI_REGEX = ansiRegex().source;
const BABEL_TRANSFORM_ERROR_FORMAT =
/^(?:TransformError )?(?:SyntaxError: |ReferenceError: )(.*): (.*) \((\d+):(\d+)\)\n\n([\s\S]+)/;
+
+// https://github.com/babel/babel/blob/33dbb85e9e9fe36915273080ecc42aee62ed0ade/packages/babel-code-frame/src/index.ts#L183-L184
+const BABEL_CODE_FRAME_MARKER_PATTERN = new RegExp(
+ [
+ // Beginning of a line (per 'm' flag)
+ '^',
+ // Optional ANSI escapes for colors
+ `(?:${ANSI_REGEX})*`,
+ // Marker
+ '>',
+ // Optional ANSI escapes for colors
+ `(?:${ANSI_REGEX})*`,
+ // Left padding for line number
+ ' +',
+ // Line number
+ '[0-9]+',
+ // Gutter
+ ' \\|',
+ ].join(''),
+ 'm',
+);
+
const BABEL_CODE_FRAME_ERROR_FORMAT =
// eslint-disable-next-line no-control-regex
/^(?:TransformError )?(?:.*):? (?:.*?)(\/.*): ([\s\S]+?)\n([ >]{2}[\d\s]+ \|[\s\S]+|\u{001b}[\s\S]+)/u;
+
const METRO_ERROR_FORMAT =
/^(?:InternalError Metro has encountered an error:) (.*): (.*) \((\d+):(\d+)\)\n\n([\s\S]+)/u;
@@ -241,27 +267,31 @@ export function parseLogBoxException(
};
}
- const babelCodeFrameError = message.match(BABEL_CODE_FRAME_ERROR_FORMAT);
+ // Perform a cheap match first before trying to parse the full message, which
+ // can get expensive for arbitrary input.
+ if (BABEL_CODE_FRAME_MARKER_PATTERN.test(message)) {
+ const babelCodeFrameError = message.match(BABEL_CODE_FRAME_ERROR_FORMAT);
- if (babelCodeFrameError) {
- // Codeframe errors are thrown from any use of buildCodeFrameError.
- const [fileName, content, codeFrame] = babelCodeFrameError.slice(1);
- return {
- level: 'syntax',
- stack: [],
- isComponentError: false,
- componentStack: [],
- codeFrame: {
- fileName,
- location: null, // We are not given the location.
- content: codeFrame,
- },
- message: {
- content,
- substitutions: [],
- },
- category: `${fileName}-${1}-${1}`,
- };
+ if (babelCodeFrameError) {
+ // Codeframe errors are thrown from any use of buildCodeFrameError.
+ const [fileName, content, codeFrame] = babelCodeFrameError.slice(1);
+ return {
+ level: 'syntax',
+ stack: [],
+ isComponentError: false,
+ componentStack: [],
+ codeFrame: {
+ fileName,
+ location: null, // We are not given the location.
+ content: codeFrame,
+ },
+ message: {
+ content,
+ substitutions: [],
+ },
+ category: `${fileName}-${1}-${1}`,
+ };
+ }
}
if (message.match(/^TransformError /)) {
diff --git a/packages/react-native/Libraries/promiseRejectionTrackingOptions.js b/packages/react-native/Libraries/promiseRejectionTrackingOptions.js
index a57f3666899d..3973bb494551 100644
--- a/packages/react-native/Libraries/promiseRejectionTrackingOptions.js
+++ b/packages/react-native/Libraries/promiseRejectionTrackingOptions.js
@@ -10,6 +10,8 @@
import typeof {enable} from 'promise/setimmediate/rejection-tracking';
+import LogBox from './LogBox/LogBox';
+
type ExtractOptionsType =
(((options?: ?P) => void)) => P;
let rejectionTrackingOptions: $Call = {
@@ -34,19 +36,36 @@ let rejectionTrackingOptions: $Call = {
? rejection
: JSON.stringify((rejection: $FlowFixMe));
}
+ // It could although this object is not a standard error, it still has stack information to unwind
+ // $FlowFixMe ignore types just check if stack is there
+ if (rejection.stack && typeof rejection.stack === 'string') {
+ stack = rejection.stack;
+ }
}
- const warning =
- `Possible Unhandled Promise Rejection (id: ${id}):\n` +
- `${message ?? ''}\n` +
- (stack == null ? '' : stack);
- console.warn(warning);
+ const warning = `Possible unhandled promise rejection (id: ${id}):\n${
+ message ?? ''
+ }`;
+ if (__DEV__) {
+ LogBox.addLog({
+ level: 'warn',
+ message: {
+ content: warning,
+ substitutions: [],
+ },
+ componentStack: [],
+ stack,
+ category: 'possible_unhandled_promise_rejection',
+ });
+ } else {
+ console.warn(warning);
+ }
},
onHandled: id => {
const warning =
- `Promise Rejection Handled (id: ${id})\n` +
+ `Promise rejection handled (id: ${id})\n` +
'This means you can ignore any previous messages of the form ' +
- `"Possible Unhandled Promise Rejection (id: ${id}):"`;
+ `"Possible unhandled promise rejection (id: ${id}):"`;
console.warn(warning);
},
};
diff --git a/packages/react-native/Libraries/vendor/emitter/EventEmitter.js b/packages/react-native/Libraries/vendor/emitter/EventEmitter.js
index 6bd20257222d..a98ce92939b3 100644
--- a/packages/react-native/Libraries/vendor/emitter/EventEmitter.js
+++ b/packages/react-native/Libraries/vendor/emitter/EventEmitter.js
@@ -109,7 +109,9 @@ export default class EventEmitter
Registration<$ElementType>,
> = this._registry[eventType];
if (registrations != null) {
- for (const registration of [...registrations]) {
+ // Copy `registrations` to take a snapshot when we invoke `emit`, in case
+ // registrations are added or removed when listeners are invoked.
+ for (const registration of Array.from(registrations)) {
registration.listener.apply(registration.context, args);
}
}
diff --git a/packages/react-native/React/Base/RCTBundleURLProvider.h b/packages/react-native/React/Base/RCTBundleURLProvider.h
index cbf8132b1da9..7072e05dd839 100644
--- a/packages/react-native/React/Base/RCTBundleURLProvider.h
+++ b/packages/react-native/React/Base/RCTBundleURLProvider.h
@@ -101,6 +101,7 @@ RCT_EXTERN void RCTBundleURLProviderAllowPackagerServerAccess(BOOL allowed);
@property (nonatomic, assign) BOOL enableMinification;
@property (nonatomic, assign) BOOL enableDev;
+@property (nonatomic, assign) BOOL inlineSourceMap;
/**
* The scheme/protocol used of the packager, the default is the http protocol
@@ -125,13 +126,32 @@ RCT_EXTERN void RCTBundleURLProviderAllowPackagerServerAccess(BOOL allowed);
+ (NSURL *)jsBundleURLForBundleRoot:(NSString *)bundleRoot
packagerHost:(NSString *)packagerHost
enableDev:(BOOL)enableDev
- enableMinification:(BOOL)enableMinification;
+ enableMinification:(BOOL)enableMinification
+ __deprecated_msg(
+ "Use `jsBundleURLForBundleRoot:packagerHost:enableDev:enableMinification:inlineSourceMap:` instead");
+
++ (NSURL *)jsBundleURLForBundleRoot:(NSString *)bundleRoot
+ packagerHost:(NSString *)packagerHost
+ packagerScheme:(NSString *)scheme
+ enableDev:(BOOL)enableDev
+ enableMinification:(BOOL)enableMinification
+ modulesOnly:(BOOL)modulesOnly
+ runModule:(BOOL)runModule
+ __deprecated_msg(
+ "Use jsBundleURLForBundleRoot:packagerHost:enableDev:enableMinification:inlineSourceMap:modulesOnly:runModule:` instead");
+
++ (NSURL *)jsBundleURLForBundleRoot:(NSString *)bundleRoot
+ packagerHost:(NSString *)packagerHost
+ enableDev:(BOOL)enableDev
+ enableMinification:(BOOL)enableMinification
+ inlineSourceMap:(BOOL)inlineSourceMap;
+ (NSURL *)jsBundleURLForBundleRoot:(NSString *)bundleRoot
packagerHost:(NSString *)packagerHost
packagerScheme:(NSString *)scheme
enableDev:(BOOL)enableDev
enableMinification:(BOOL)enableMinification
+ inlineSourceMap:(BOOL)inlineSourceMap
modulesOnly:(BOOL)modulesOnly
runModule:(BOOL)runModule;
/**
@@ -142,6 +162,17 @@ RCT_EXTERN void RCTBundleURLProviderAllowPackagerServerAccess(BOOL allowed);
+ (NSURL *)resourceURLForResourcePath:(NSString *)path
packagerHost:(NSString *)packagerHost
scheme:(NSString *)scheme
- query:(NSString *)query;
+ query:(NSString *)query
+ __deprecated_msg("Use version with queryItems parameter instead");
+
+/**
+ * Given a hostname for the packager and a resource path (including "/"), return the URL to the resource.
+ * In general, please use the instance method to decide if the packager is running and fallback to the pre-packaged
+ * resource if it is not: -resourceURLForResourceRoot:resourceName:resourceExtension:offlineBundle:
+ */
++ (NSURL *)resourceURLForResourcePath:(NSString *)path
+ packagerHost:(NSString *)packagerHost
+ scheme:(NSString *)scheme
+ queryItems:(NSArray *)queryItems;
@end
diff --git a/packages/react-native/React/Base/RCTBundleURLProvider.mm b/packages/react-native/React/Base/RCTBundleURLProvider.mm
index 33a9ae8ae9c9..f27b93c94363 100644
--- a/packages/react-native/React/Base/RCTBundleURLProvider.mm
+++ b/packages/react-native/React/Base/RCTBundleURLProvider.mm
@@ -22,10 +22,12 @@ void RCTBundleURLProviderAllowPackagerServerAccess(BOOL allowed)
kRCTAllowPackagerAccess = allowed;
}
#endif
+static NSString *const kRCTPlatformName = @"ios";
static NSString *const kRCTPackagerSchemeKey = @"RCT_packager_scheme";
static NSString *const kRCTJsLocationKey = @"RCT_jsLocation";
static NSString *const kRCTEnableDevKey = @"RCT_enableDev";
static NSString *const kRCTEnableMinificationKey = @"RCT_enableMinification";
+static NSString *const kRCTInlineSourceMapKey = @"RCT_inlineSourceMap";
@implementation RCTBundleURLProvider
@@ -187,6 +189,7 @@ - (NSURL *)jsBundleURLForBundleRoot:(NSString *)bundleRoot fallbackURLProvider:(
packagerScheme:[self packagerScheme]
enableDev:[self enableDev]
enableMinification:[self enableMinification]
+ inlineSourceMap:[self inlineSourceMap]
modulesOnly:NO
runModule:YES];
}
@@ -199,6 +202,7 @@ - (NSURL *)jsBundleURLForSplitBundleRoot:(NSString *)bundleRoot
packagerScheme:[self packagerScheme]
enableDev:[self enableDev]
enableMinification:[self enableMinification]
+ inlineSourceMap:[self inlineSourceMap]
modulesOnly:YES
runModule:NO];
}
@@ -238,13 +242,29 @@ - (NSURL *)resourceURLForResourceRoot:(NSString *)root
return [[self class] resourceURLForResourcePath:path
packagerHost:packagerServerHostPort
scheme:packagerServerScheme
- query:nil];
+ queryItems:nil];
}
+ (NSURL *)jsBundleURLForBundleRoot:(NSString *)bundleRoot
packagerHost:(NSString *)packagerHost
enableDev:(BOOL)enableDev
enableMinification:(BOOL)enableMinification
+{
+ return [self jsBundleURLForBundleRoot:bundleRoot
+ packagerHost:packagerHost
+ packagerScheme:nil
+ enableDev:enableDev
+ enableMinification:enableMinification
+ inlineSourceMap:NO
+ modulesOnly:NO
+ runModule:YES];
+}
+
++ (NSURL *)jsBundleURLForBundleRoot:(NSString *)bundleRoot
+ packagerHost:(NSString *)packagerHost
+ enableDev:(BOOL)enableDev
+ enableMinification:(BOOL)enableMinification
+ inlineSourceMap:(BOOL)inlineSourceMap
{
return [self jsBundleURLForBundleRoot:bundleRoot
@@ -252,6 +272,7 @@ + (NSURL *)jsBundleURLForBundleRoot:(NSString *)bundleRoot
packagerScheme:nil
enableDev:enableDev
enableMinification:enableMinification
+ inlineSourceMap:inlineSourceMap
modulesOnly:NO
runModule:YES];
}
@@ -263,27 +284,45 @@ + (NSURL *)jsBundleURLForBundleRoot:(NSString *)bundleRoot
enableMinification:(BOOL)enableMinification
modulesOnly:(BOOL)modulesOnly
runModule:(BOOL)runModule
+{
+ return [self jsBundleURLForBundleRoot:bundleRoot
+ packagerHost:packagerHost
+ packagerScheme:nil
+ enableDev:enableDev
+ enableMinification:enableMinification
+ inlineSourceMap:NO
+ modulesOnly:modulesOnly
+ runModule:runModule];
+}
+
++ (NSURL *)jsBundleURLForBundleRoot:(NSString *)bundleRoot
+ packagerHost:(NSString *)packagerHost
+ packagerScheme:(NSString *)scheme
+ enableDev:(BOOL)enableDev
+ enableMinification:(BOOL)enableMinification
+ inlineSourceMap:(BOOL)inlineSourceMap
+ modulesOnly:(BOOL)modulesOnly
+ runModule:(BOOL)runModule
{
NSString *path = [NSString stringWithFormat:@"/%@.bundle", bundleRoot];
+ BOOL lazy = enableDev;
+ NSArray *queryItems = @[
+ [[NSURLQueryItem alloc] initWithName:@"platform" value:kRCTPlatformName],
+ [[NSURLQueryItem alloc] initWithName:@"dev" value:enableDev ? @"true" : @"false"],
+ [[NSURLQueryItem alloc] initWithName:@"minify" value:enableMinification ? @"true" : @"false"],
+ [[NSURLQueryItem alloc] initWithName:@"inlineSourceMap" value:inlineSourceMap ? @"true" : @"false"],
+ [[NSURLQueryItem alloc] initWithName:@"modulesOnly" value:modulesOnly ? @"true" : @"false"],
+ [[NSURLQueryItem alloc] initWithName:@"runModule" value:runModule ? @"true" : @"false"],
#ifdef HERMES_BYTECODE_VERSION
- NSString *runtimeBytecodeVersion = [NSString stringWithFormat:@"&runtimeBytecodeVersion=%u", HERMES_BYTECODE_VERSION];
-#else
- NSString *runtimeBytecodeVersion = @"";
-#endif
-
- // When we support only iOS 8 and above, use queryItems for a better API.
- NSString *query = [NSString stringWithFormat:@"platform=ios&dev=%@&minify=%@&modulesOnly=%@&runModule=%@%@",
- enableDev ? @"true" : @"false",
- enableMinification ? @"true" : @"false",
- modulesOnly ? @"true" : @"false",
- runModule ? @"true" : @"false",
- runtimeBytecodeVersion];
+ [[NSURLQueryItem alloc] initWithName:@"runtimeBytecodeVersion" value:HERMES_BYTECODE_VERSION],
+ #endif
+ ];
NSString *bundleID = [[NSBundle mainBundle] objectForInfoDictionaryKey:(NSString *)kCFBundleIdentifierKey];
if (bundleID) {
- query = [NSString stringWithFormat:@"%@&app=%@", query, bundleID];
+ queryItems = [queryItems arrayByAddingObject:[[NSURLQueryItem alloc] initWithName:@"app" value:bundleID]];
}
- return [[self class] resourceURLForResourcePath:path packagerHost:packagerHost scheme:scheme query:query];
+ return [[self class] resourceURLForResourcePath:path packagerHost:packagerHost scheme:scheme queryItems:queryItems];
}
+ (NSURL *)resourceURLForResourcePath:(NSString *)path
@@ -300,6 +339,20 @@ + (NSURL *)resourceURLForResourcePath:(NSString *)path
return components.URL;
}
++ (NSURL *)resourceURLForResourcePath:(NSString *)path
+ packagerHost:(NSString *)packagerHost
+ scheme:(NSString *)scheme
+ queryItems:(NSArray *)queryItems
+{
+ NSURLComponents *components = [NSURLComponents componentsWithURL:serverRootWithHostPort(packagerHost, scheme)
+ resolvingAgainstBaseURL:NO];
+ components.path = path;
+ if (queryItems != nil) {
+ components.queryItems = queryItems;
+ }
+ return components.URL;
+}
+
- (void)updateValue:(id)object forKey:(NSString *)key
{
[[NSUserDefaults standardUserDefaults] setObject:object forKey:key];
@@ -317,6 +370,11 @@ - (BOOL)enableMinification
return [[NSUserDefaults standardUserDefaults] boolForKey:kRCTEnableMinificationKey];
}
+- (BOOL)inlineSourceMap
+{
+ return [[NSUserDefaults standardUserDefaults] boolForKey:kRCTInlineSourceMapKey];
+}
+
- (NSString *)jsLocation
{
return [[NSUserDefaults standardUserDefaults] stringForKey:kRCTJsLocationKey];
@@ -346,6 +404,11 @@ - (void)setEnableMinification:(BOOL)enableMinification
[self updateValue:@(enableMinification) forKey:kRCTEnableMinificationKey];
}
+- (void)setInlineSourceMap:(BOOL)inlineSourceMap
+{
+ [self updateValue:@(inlineSourceMap) forKey:kRCTInlineSourceMapKey];
+}
+
- (void)setPackagerScheme:(NSString *)packagerScheme
{
[self updateValue:packagerScheme forKey:kRCTPackagerSchemeKey];
diff --git a/packages/react-native/React/Base/RCTVersion.m b/packages/react-native/React/Base/RCTVersion.m
index 25418fe5df2d..5216288c268b 100644
--- a/packages/react-native/React/Base/RCTVersion.m
+++ b/packages/react-native/React/Base/RCTVersion.m
@@ -23,7 +23,7 @@
__rnVersion = @{
RCTVersionMajor: @(0),
RCTVersionMinor: @(72),
- RCTVersionPatch: @(4),
+ RCTVersionPatch: @(10),
RCTVersionPrerelease: [NSNull null],
};
});
diff --git a/packages/react-native/React/CoreModules/RCTTiming.mm b/packages/react-native/React/CoreModules/RCTTiming.mm
index 13d0d57296bb..e4f7e1563a93 100644
--- a/packages/react-native/React/CoreModules/RCTTiming.mm
+++ b/packages/react-native/React/CoreModules/RCTTiming.mm
@@ -128,6 +128,11 @@ - (void)setup
_paused = YES;
_timers = [NSMutableDictionary new];
_inBackground = NO;
+ RCTExecuteOnMainQueue(^{
+ if (!self->_inBackground && [RCTSharedApplication() applicationState] == UIApplicationStateBackground) {
+ [self appDidMoveToBackground];
+ }
+ });
for (NSString *name in @[
UIApplicationWillResignActiveNotification,
diff --git a/packages/react-native/ReactAndroid/build.gradle b/packages/react-native/ReactAndroid/build.gradle
index f44b6e498055..c2b76ed511e0 100644
--- a/packages/react-native/ReactAndroid/build.gradle
+++ b/packages/react-native/ReactAndroid/build.gradle
@@ -243,7 +243,7 @@ task createNativeDepsDirectories {
}
task downloadBoost(dependsOn: createNativeDepsDirectories, type: Download) {
- src("https://boostorg.jfrog.io/artifactory/main/release/${BOOST_VERSION.replace("_", ".")}/source/boost_${BOOST_VERSION}.tar.gz")
+ src("https://archives.boost.io/release/${BOOST_VERSION.replace("_", ".")}/source/boost_${BOOST_VERSION}.tar.gz")
onlyIfModified(true)
overwrite(false)
retries(5)
diff --git a/packages/react-native/ReactAndroid/gradle.properties b/packages/react-native/ReactAndroid/gradle.properties
index c2376443ce4f..ef4acd786e69 100644
--- a/packages/react-native/ReactAndroid/gradle.properties
+++ b/packages/react-native/ReactAndroid/gradle.properties
@@ -1,4 +1,4 @@
-VERSION_NAME=0.72.4
+VERSION_NAME=0.72.10
GROUP=com.facebook.react
# JVM Versions
diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/fabric/FabricUIManager.java b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/fabric/FabricUIManager.java
index c0df88da2c6c..63ecfc75acaf 100644
--- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/fabric/FabricUIManager.java
+++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/fabric/FabricUIManager.java
@@ -429,6 +429,7 @@ public void onCatalystInstanceDestroy() {
mEventDispatcher.unregisterEventEmitter(FABRIC);
mReactApplicationContext.unregisterComponentCallbacks(mViewManagerRegistry);
+ mViewManagerRegistry.invalidate();
// Remove lifecycle listeners (onHostResume, onHostPause) since the FabricUIManager is going
// away. Then stop the mDispatchUIFrameCallback false will cause the choreographer
diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/modules/systeminfo/ReactNativeVersion.java b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/modules/systeminfo/ReactNativeVersion.java
index 222b40bd738c..4012f4065f3b 100644
--- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/modules/systeminfo/ReactNativeVersion.java
+++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/modules/systeminfo/ReactNativeVersion.java
@@ -17,6 +17,6 @@ public class ReactNativeVersion {
public static final Map VERSION = MapBuilder.of(
"major", 0,
"minor", 72,
- "patch", 4,
+ "patch", 10,
"prerelease", null);
}
diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/shell/MainReactPackage.java b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/shell/MainReactPackage.java
index 5fa72a0ffd02..41e4a62c2fc1 100644
--- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/shell/MainReactPackage.java
+++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/shell/MainReactPackage.java
@@ -25,6 +25,7 @@
import com.facebook.react.modules.blob.FileReaderModule;
import com.facebook.react.modules.camera.ImageStoreManager;
import com.facebook.react.modules.clipboard.ClipboardModule;
+import com.facebook.react.modules.devloading.DevLoadingModule;
import com.facebook.react.modules.devtoolssettings.DevToolsSettingsManagerModule;
import com.facebook.react.modules.dialog.DialogModule;
import com.facebook.react.modules.fresco.FrescoModule;
@@ -72,6 +73,7 @@
AppearanceModule.class,
AppStateModule.class,
BlobModule.class,
+ DevLoadingModule.class,
FileReaderModule.class,
ClipboardModule.class,
DialogModule.class,
@@ -113,6 +115,8 @@ public MainReactPackage(MainPackageConfig config) {
return new AppStateModule(context);
case BlobModule.NAME:
return new BlobModule(context);
+ case DevLoadingModule.NAME:
+ return new DevLoadingModule(context);
case FileReaderModule.NAME:
return new FileReaderModule(context);
case ClipboardModule.NAME:
@@ -371,6 +375,7 @@ public ReactModuleInfoProvider getReactModuleInfoProvider() {
AppearanceModule.class,
AppStateModule.class,
BlobModule.class,
+ DevLoadingModule.class,
FileReaderModule.class,
ClipboardModule.class,
DialogModule.class,
diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIImplementation.java b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIImplementation.java
index ed4ec63c05d5..f15004e38e91 100644
--- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIImplementation.java
+++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIImplementation.java
@@ -792,6 +792,7 @@ public void onHostDestroy() {}
public void onCatalystInstanceDestroyed() {
mViewOperationsEnabled = false;
+ mViewManagers.invalidate();
}
public void setViewHierarchyUpdateDebugListener(
diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/uimanager/ViewManagerRegistry.java b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/uimanager/ViewManagerRegistry.java
index 995f6eea7033..1f3c219250a7 100644
--- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/uimanager/ViewManagerRegistry.java
+++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/uimanager/ViewManagerRegistry.java
@@ -103,12 +103,28 @@ public void onSurfaceStopped(final int surfaceId) {
viewManagers = new ArrayList<>(mViewManagers.values());
}
Runnable runnable =
- new Runnable() {
- @Override
- public void run() {
- for (ViewManager viewManager : viewManagers) {
- viewManager.onSurfaceStopped(surfaceId);
- }
+ () -> {
+ for (ViewManager viewManager : viewManagers) {
+ viewManager.onSurfaceStopped(surfaceId);
+ }
+ };
+ if (UiThreadUtil.isOnUiThread()) {
+ runnable.run();
+ } else {
+ UiThreadUtil.runOnUiThread(runnable);
+ }
+ }
+
+ /** Called on instance destroy */
+ public void invalidate() {
+ final List viewManagers;
+ synchronized (this) {
+ viewManagers = new ArrayList<>(mViewManagers.values());
+ }
+ Runnable runnable =
+ () -> {
+ for (ViewManager viewManager : viewManagers) {
+ viewManager.invalidate();
}
};
if (UiThreadUtil.isOnUiThread()) {
diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/uimanager/ViewManagersPropertyCache.java b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/uimanager/ViewManagersPropertyCache.java
index 438ec3fd0b57..9cbb6d11731f 100644
--- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/uimanager/ViewManagersPropertyCache.java
+++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/uimanager/ViewManagersPropertyCache.java
@@ -204,6 +204,11 @@ public ColorPropSetter(ReactProp prop, Method setter, int defaultValue) {
mDefaultValue = defaultValue;
}
+ public ColorPropSetter(ReactPropGroup prop, Method setter, int index, int defaultValue) {
+ super(prop, "mixed", setter, index);
+ mDefaultValue = defaultValue;
+ }
+
@Override
protected Object getValueOrDefault(Object value, Context context) {
if (value == null) {
@@ -331,6 +336,10 @@ public BoxedColorPropSetter(ReactProp prop, Method setter) {
super(prop, "mixed", setter);
}
+ public BoxedColorPropSetter(ReactPropGroup prop, Method setter, int index) {
+ super(prop, "mixed", setter, index);
+ }
+
@Override
protected @Nullable Object getValueOrDefault(Object value, Context context) {
if (value != null) {
@@ -463,7 +472,11 @@ private static void createPropSetters(
}
} else if (propTypeClass == int.class) {
for (int i = 0; i < names.length; i++) {
- props.put(names[i], new IntPropSetter(annotation, method, i, annotation.defaultInt()));
+ if ("Color".equals(annotation.customType())) {
+ props.put(names[i], new ColorPropSetter(annotation, method, i, annotation.defaultInt()));
+ } else {
+ props.put(names[i], new IntPropSetter(annotation, method, i, annotation.defaultInt()));
+ }
}
} else if (propTypeClass == float.class) {
for (int i = 0; i < names.length; i++) {
@@ -476,7 +489,11 @@ private static void createPropSetters(
}
} else if (propTypeClass == Integer.class) {
for (int i = 0; i < names.length; i++) {
- props.put(names[i], new BoxedIntPropSetter(annotation, method, i));
+ if ("Color".equals(annotation.customType())) {
+ props.put(names[i], new BoxedColorPropSetter(annotation, method, i));
+ } else {
+ props.put(names[i], new BoxedIntPropSetter(annotation, method, i));
+ }
}
} else {
throw new RuntimeException(
diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/scroll/MaintainVisibleScrollPositionHelper.java b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/scroll/MaintainVisibleScrollPositionHelper.java
index f76c432b5904..fff761feba26 100644
--- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/scroll/MaintainVisibleScrollPositionHelper.java
+++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/scroll/MaintainVisibleScrollPositionHelper.java
@@ -103,6 +103,10 @@ private void updateScrollPositionInternal() {
}
View firstVisibleView = mFirstVisibleView.get();
+ if (firstVisibleView == null) {
+ return;
+ }
+
Rect newFrame = new Rect();
firstVisibleView.getHitRect(newFrame);
diff --git a/packages/react-native/ReactAndroid/src/main/jni/CMakeLists.txt b/packages/react-native/ReactAndroid/src/main/jni/CMakeLists.txt
index 78f2b949d92e..fc24021817e1 100644
--- a/packages/react-native/ReactAndroid/src/main/jni/CMakeLists.txt
+++ b/packages/react-native/ReactAndroid/src/main/jni/CMakeLists.txt
@@ -8,6 +8,11 @@ set(CMAKE_VERBOSE_MAKEFILE on)
project(ReactAndroid)
+# Convert input paths to CMake format (with forward slashes)
+file(TO_CMAKE_PATH "${REACT_ANDROID_DIR}" REACT_ANDROID_DIR)
+file(TO_CMAKE_PATH "${REACT_BUILD_DIR}" REACT_BUILD_DIR)
+file(TO_CMAKE_PATH "${REACT_COMMON_DIR}" REACT_COMMON_DIR)
+
# If you have ccache installed, we're going to honor it.
find_program(CCACHE_FOUND ccache)
if(CCACHE_FOUND)
diff --git a/packages/react-native/ReactCommon/React-Fabric.podspec b/packages/react-native/ReactCommon/React-Fabric.podspec
index 1a8e4ebfa2ae..0644c97ba22b 100644
--- a/packages/react-native/ReactCommon/React-Fabric.podspec
+++ b/packages/react-native/ReactCommon/React-Fabric.podspec
@@ -36,7 +36,7 @@ Pod::Spec.new do |s|
"CLANG_CXX_LANGUAGE_STANDARD" => "c++17" }
if ENV['USE_FRAMEWORKS']
- s.header_mappings_dir = File.absolute_path('./')
+ s.header_mappings_dir = './'
s.module_name = 'React_Fabric'
end
diff --git a/packages/react-native/ReactCommon/ReactCommon.podspec b/packages/react-native/ReactCommon/ReactCommon.podspec
index 8ae3b996510b..2953f2d46dd0 100644
--- a/packages/react-native/ReactCommon/ReactCommon.podspec
+++ b/packages/react-native/ReactCommon/ReactCommon.podspec
@@ -37,7 +37,7 @@ Pod::Spec.new do |s|
"CLANG_CXX_LANGUAGE_STANDARD" => "c++17",
"GCC_WARN_PEDANTIC" => "YES" }
if ENV['USE_FRAMEWORKS']
- s.header_mappings_dir = File.absolute_path("./")
+ s.header_mappings_dir = './'
end
# TODO (T48588859): Restructure this target to align with dir structure: "react/nativemodule/..."
diff --git a/packages/react-native/ReactCommon/cxxreact/ReactNativeVersion.h b/packages/react-native/ReactCommon/cxxreact/ReactNativeVersion.h
index c2a4e60d2b06..18401864339e 100644
--- a/packages/react-native/ReactCommon/cxxreact/ReactNativeVersion.h
+++ b/packages/react-native/ReactCommon/cxxreact/ReactNativeVersion.h
@@ -17,7 +17,7 @@ namespace facebook::react {
constexpr struct {
int32_t Major = 0;
int32_t Minor = 72;
- int32_t Patch = 4;
+ int32_t Patch = 10;
std::string_view Prerelease = "";
} ReactNativeVersion;
diff --git a/packages/react-native/ReactCommon/jsc/JSCRuntime.cpp b/packages/react-native/ReactCommon/jsc/JSCRuntime.cpp
index 7958519e683f..523b1be36937 100644
--- a/packages/react-native/ReactCommon/jsc/JSCRuntime.cpp
+++ b/packages/react-native/ReactCommon/jsc/JSCRuntime.cpp
@@ -302,6 +302,9 @@ class JSCRuntime : public jsi::Runtime {
#if __IPHONE_OS_VERSION_MIN_REQUIRED < __IPHONE_10_0
#define _JSC_NO_ARRAY_BUFFERS
#endif
+#if __IPHONE_OS_VERSION_MAX_ALLOWED >= 160400
+#define _JSC_HAS_INSPECTABLE
+#endif
#endif
#if defined(__MAC_OS_X_VERSION_MIN_REQUIRED)
#if __MAC_OS_X_VERSION_MIN_REQUIRED >= __MAC_10_11
@@ -398,6 +401,13 @@ JSCRuntime::JSCRuntime(JSGlobalContextRef ctx)
stringCounter_(0)
#endif
{
+#ifndef NDEBUG
+#ifdef _JSC_HAS_INSPECTABLE
+ if (__builtin_available(macOS 13.3, iOS 16.4, tvOS 16.4, *)) {
+ JSGlobalContextSetInspectable(ctx_, true);
+ }
+#endif
+#endif
}
JSCRuntime::~JSCRuntime() {
diff --git a/packages/react-native/ReactCommon/react/debug/React-debug.podspec b/packages/react-native/ReactCommon/react/debug/React-debug.podspec
index 5a273105ce14..dab4a31652ed 100644
--- a/packages/react-native/ReactCommon/react/debug/React-debug.podspec
+++ b/packages/react-native/ReactCommon/react/debug/React-debug.podspec
@@ -31,6 +31,6 @@ Pod::Spec.new do |s|
if ENV['USE_FRAMEWORKS']
s.module_name = "React_debug"
- s.header_mappings_dir = File.absolute_path("../..")
+ s.header_mappings_dir = "../.."
end
end
diff --git a/packages/react-native/ReactCommon/react/debug/flags.h b/packages/react-native/ReactCommon/react/debug/flags.h
index dae3ecc4e51f..a475e9e45bfc 100644
--- a/packages/react-native/ReactCommon/react/debug/flags.h
+++ b/packages/react-native/ReactCommon/react/debug/flags.h
@@ -17,5 +17,7 @@
// control and use as a more reliable xplat flag. For any build that doesn't
// have NDEBUG defined, we enable REACT_NATIVE_DEBUG for convenience.
#ifndef NDEBUG
+#ifndef COCOAPODS
#define REACT_NATIVE_DEBUG 1
#endif
+#endif
diff --git a/packages/react-native/ReactCommon/react/nativemodule/core/platform/ios/React-NativeModulesApple.podspec b/packages/react-native/ReactCommon/react/nativemodule/core/platform/ios/React-NativeModulesApple.podspec
index 7821feca178c..bf36f7347f43 100644
--- a/packages/react-native/ReactCommon/react/nativemodule/core/platform/ios/React-NativeModulesApple.podspec
+++ b/packages/react-native/ReactCommon/react/nativemodule/core/platform/ios/React-NativeModulesApple.podspec
@@ -37,7 +37,7 @@ Pod::Spec.new do |s|
"CLANG_CXX_LANGUAGE_STANDARD" => "c++17",
"GCC_WARN_PEDANTIC" => "YES" }
if ENV['USE_FRAMEWORKS']
- s.header_mappings_dir = File.absolute_path('./')
+ s.header_mappings_dir = './'
end
s.source_files = "ReactCommon/**/*.{mm,cpp,h}"
diff --git a/packages/react-native/ReactCommon/react/nativemodule/samples/ReactCommon-Samples.podspec b/packages/react-native/ReactCommon/react/nativemodule/samples/ReactCommon-Samples.podspec
index c72d72761223..a9a362f0c651 100644
--- a/packages/react-native/ReactCommon/react/nativemodule/samples/ReactCommon-Samples.podspec
+++ b/packages/react-native/ReactCommon/react/nativemodule/samples/ReactCommon-Samples.podspec
@@ -37,7 +37,7 @@ Pod::Spec.new do |s|
"CLANG_CXX_LANGUAGE_STANDARD" => "c++17",
"GCC_WARN_PEDANTIC" => "YES" }
if ENV['USE_FRAMEWORKS']
- s.header_mappings_dir = File.absolute_path('./')
+ s.header_mappings_dir = './'
end
diff --git a/packages/react-native/ReactCommon/react/renderer/components/legacyviewmanagerinterop/LegacyViewManagerInteropComponentDescriptor.mm b/packages/react-native/ReactCommon/react/renderer/components/legacyviewmanagerinterop/LegacyViewManagerInteropComponentDescriptor.mm
index 745154f52086..e6a29f4fbf6d 100644
--- a/packages/react-native/ReactCommon/react/renderer/components/legacyviewmanagerinterop/LegacyViewManagerInteropComponentDescriptor.mm
+++ b/packages/react-native/ReactCommon/react/renderer/components/legacyviewmanagerinterop/LegacyViewManagerInteropComponentDescriptor.mm
@@ -74,19 +74,35 @@ static Class getViewManagerFromComponentName(const std::string &componentName)
return nil;
}
-static std::shared_ptr const constructCoordinator(
- ContextContainer::Shared const &contextContainer,
- ComponentDescriptor::Flavor const &flavor)
+static Class getViewManagerClass(const std::string &componentName, RCTBridge *bridge)
+{
+ Class viewManager = getViewManagerFromComponentName(componentName);
+ if (viewManager != nil) {
+ return viewManager;
+ }
+
+ // If all the heuristics fail, let's try to retrieve the view manager from the bridge/bridgeProxy
+ if (bridge != nil) {
+ return [[bridge moduleForName:RCTNSStringFromString(componentName)] class];
+ }
+
+ return nil;
+}
+
+static const std::shared_ptr constructCoordinator(
+ const ContextContainer::Shared &contextContainer,
+ const ComponentDescriptor::Flavor &flavor)
{
- auto componentName = *std::static_pointer_cast(flavor);
- Class viewManagerClass = getViewManagerFromComponentName(componentName);
- assert(viewManagerClass);
auto optionalBridge = contextContainer->find>("Bridge");
RCTBridge *bridge;
if (optionalBridge) {
bridge = unwrapManagedObjectWeakly(optionalBridge.value());
}
+ auto componentName = *std::static_pointer_cast(flavor);
+ Class viewManagerClass = getViewManagerClass(componentName, bridge);
+ assert(viewManagerClass);
+
auto optionalEventDispatcher = contextContainer->find>("RCTEventDispatcher");
RCTEventDispatcher *eventDispatcher;
if (optionalEventDispatcher) {
diff --git a/packages/react-native/ReactCommon/react/renderer/components/legacyviewmanagerinterop/RCTLegacyViewManagerInteropCoordinator.mm b/packages/react-native/ReactCommon/react/renderer/components/legacyviewmanagerinterop/RCTLegacyViewManagerInteropCoordinator.mm
index d1b0bfff4fcb..73ede6873b44 100644
--- a/packages/react-native/ReactCommon/react/renderer/components/legacyviewmanagerinterop/RCTLegacyViewManagerInteropCoordinator.mm
+++ b/packages/react-native/ReactCommon/react/renderer/components/legacyviewmanagerinterop/RCTLegacyViewManagerInteropCoordinator.mm
@@ -92,6 +92,10 @@ - (void)setProps:(folly::dynamic const &)props forView:(UIView *)view
if (props.isObject()) {
NSDictionary *convertedProps = convertFollyDynamicToId(props);
[_componentData setProps:convertedProps forView:view];
+
+ if ([view respondsToSelector:@selector(didSetProps:)]) {
+ [view performSelector:@selector(didSetProps:) withObject:[convertedProps allKeys]];
+ }
}
}
diff --git a/packages/react-native/ReactCommon/react/renderer/core/PropsParserContext.h b/packages/react-native/ReactCommon/react/renderer/core/PropsParserContext.h
index 7297fbba321e..c589380bd273 100644
--- a/packages/react-native/ReactCommon/react/renderer/core/PropsParserContext.h
+++ b/packages/react-native/ReactCommon/react/renderer/core/PropsParserContext.h
@@ -17,6 +17,11 @@ namespace react {
// It should be used as infrequently as possible - most props can and should
// be parsed without any context.
struct PropsParserContext {
+ PropsParserContext(
+ SurfaceId const surfaceId,
+ ContextContainer const &contextContainer)
+ : surfaceId(surfaceId), contextContainer(contextContainer) {}
+
// Non-copyable
PropsParserContext(const PropsParserContext &) = delete;
PropsParserContext &operator=(const PropsParserContext &) = delete;
diff --git a/packages/react-native/ReactCommon/react/renderer/core/RawPropsKeyMap.cpp b/packages/react-native/ReactCommon/react/renderer/core/RawPropsKeyMap.cpp
index d4a8d78e2288..67ce4f129891 100644
--- a/packages/react-native/ReactCommon/react/renderer/core/RawPropsKeyMap.cpp
+++ b/packages/react-native/ReactCommon/react/renderer/core/RawPropsKeyMap.cpp
@@ -38,6 +38,8 @@ void RawPropsKeyMap::insert(
item.value = value;
key.render(item.name, &item.length);
items_.push_back(item);
+ react_native_assert(
+ items_.size() < std::numeric_limits::max());
}
void RawPropsKeyMap::reindex() noexcept {
diff --git a/packages/react-native/ReactCommon/react/renderer/core/RawPropsParser.cpp b/packages/react-native/ReactCommon/react/renderer/core/RawPropsParser.cpp
index d78f83ce125d..5e6f72f0c786 100644
--- a/packages/react-native/ReactCommon/react/renderer/core/RawPropsParser.cpp
+++ b/packages/react-native/ReactCommon/react/renderer/core/RawPropsParser.cpp
@@ -42,6 +42,7 @@ RawValue const *RawPropsParser::at(
// This is not thread-safe part; this happens only during initialization of
// a `ComponentDescriptor` where it is actually safe.
keys_.push_back(key);
+ react_native_assert(size < std::numeric_limits::max());
nameToIndex_.insert(key, static_cast(size));
return nullptr;
}
diff --git a/packages/react-native/ReactCommon/react/renderer/core/RawPropsPrimitives.h b/packages/react-native/ReactCommon/react/renderer/core/RawPropsPrimitives.h
index 89855f84ee63..ec688aacc6f0 100644
--- a/packages/react-native/ReactCommon/react/renderer/core/RawPropsPrimitives.h
+++ b/packages/react-native/ReactCommon/react/renderer/core/RawPropsPrimitives.h
@@ -16,11 +16,11 @@ namespace react {
/*
* Type used to represent an index of some stored values in small arrays.
*/
-using RawPropsValueIndex = uint8_t;
+using RawPropsValueIndex = uint16_t;
static_assert(
- sizeof(RawPropsValueIndex) == 1,
- "RawPropsValueIndex must be one byte size.");
-using RawPropsPropNameLength = uint8_t;
+ sizeof(RawPropsValueIndex) == 2,
+ "RawPropsValueIndex must be two byte size.");
+using RawPropsPropNameLength = uint16_t;
using RawPropsPropNameHash = uint32_t;
/*
diff --git a/packages/react-native/ReactCommon/react/renderer/graphics/React-graphics.podspec b/packages/react-native/ReactCommon/react/renderer/graphics/React-graphics.podspec
index 433e20d325a5..19cc4ea84a7a 100644
--- a/packages/react-native/ReactCommon/react/renderer/graphics/React-graphics.podspec
+++ b/packages/react-native/ReactCommon/react/renderer/graphics/React-graphics.podspec
@@ -45,7 +45,7 @@ Pod::Spec.new do |s|
if ENV['USE_FRAMEWORKS']
s.module_name = "React_graphics"
- s.header_mappings_dir = File.absolute_path("../../..")
+ s.header_mappings_dir = "../../.."
header_search_paths = header_search_paths + ["\"$(PODS_TARGET_SRCROOT)/platform/ios\""]
end
diff --git a/packages/react-native/ReactCommon/react/renderer/imagemanager/platform/ios/React-ImageManager.podspec b/packages/react-native/ReactCommon/react/renderer/imagemanager/platform/ios/React-ImageManager.podspec
index 1606c5ed23bc..b9c34a94346f 100644
--- a/packages/react-native/ReactCommon/react/renderer/imagemanager/platform/ios/React-ImageManager.podspec
+++ b/packages/react-native/ReactCommon/react/renderer/imagemanager/platform/ios/React-ImageManager.podspec
@@ -42,7 +42,7 @@ Pod::Spec.new do |s|
if ENV['USE_FRAMEWORKS']
s.module_name = "React_ImageManager"
- s.header_mappings_dir = File.absolute_path("./")
+ s.header_mappings_dir = "./"
header_search_paths = header_search_paths + [
"\"${PODS_CONFIGURATION_BUILD_DIR}/React-Fabric/React_Fabric.framework/Headers\"",
"\"$(PODS_ROOT)/DoubleConversion\"",
diff --git a/packages/react-native/ReactCommon/react/renderer/runtimescheduler/React-runtimescheduler.podspec b/packages/react-native/ReactCommon/react/renderer/runtimescheduler/React-runtimescheduler.podspec
index 69012ed6eda9..14c9ed0daa08 100644
--- a/packages/react-native/ReactCommon/react/renderer/runtimescheduler/React-runtimescheduler.podspec
+++ b/packages/react-native/ReactCommon/react/renderer/runtimescheduler/React-runtimescheduler.podspec
@@ -47,7 +47,7 @@ Pod::Spec.new do |s|
if ENV['USE_FRAMEWORKS']
s.module_name = "React_runtimescheduler"
- s.header_mappings_dir = File.absolute_path("../../..")
+ s.header_mappings_dir = "../../.."
end
s.dependency "React-jsi"
diff --git a/packages/react-native/ReactCommon/react/utils/React-utils.podspec b/packages/react-native/ReactCommon/react/utils/React-utils.podspec
index 29da22ad00da..d262c5592410 100644
--- a/packages/react-native/ReactCommon/react/utils/React-utils.podspec
+++ b/packages/react-native/ReactCommon/react/utils/React-utils.podspec
@@ -48,7 +48,7 @@ Pod::Spec.new do |s|
if ENV['USE_FRAMEWORKS']
s.module_name = "React_utils"
- s.header_mappings_dir = File.absolute_path("../..")
+ s.header_mappings_dir = "../.."
end
s.dependency "RCT-Folly", folly_version
diff --git a/packages/react-native/flow-typed/npm/ansi-regex_v5.x.x.js b/packages/react-native/flow-typed/npm/ansi-regex_v5.x.x.js
new file mode 100644
index 000000000000..150902f4a12e
--- /dev/null
+++ b/packages/react-native/flow-typed/npm/ansi-regex_v5.x.x.js
@@ -0,0 +1,14 @@
+/**
+ * @flow strict
+ * @format
+ */
+
+declare module 'ansi-regex' {
+ declare export type Options = {
+ /**
+ * Match only the first ANSI escape.
+ */
+ +onlyFirst?: boolean,
+ };
+ declare export default function ansiRegex(options?: Options): RegExp;
+}
diff --git a/packages/react-native/package.json b/packages/react-native/package.json
index fcb222fd4c53..402dc7329894 100644
--- a/packages/react-native/package.json
+++ b/packages/react-native/package.json
@@ -1,6 +1,6 @@
{
"name": "react-native",
- "version": "0.72.4",
+ "version": "0.72.10",
"bin": "./cli.js",
"description": "A framework for building native apps using React",
"license": "MIT",
@@ -79,11 +79,11 @@
},
"dependencies": {
"@jest/create-cache-key-function": "^29.2.1",
- "@react-native-community/cli": "11.3.6",
- "@react-native-community/cli-platform-android": "11.3.6",
- "@react-native-community/cli-platform-ios": "11.3.6",
+ "@react-native-community/cli": "11.3.10",
+ "@react-native-community/cli-platform-android": "11.3.10",
+ "@react-native-community/cli-platform-ios": "11.3.10",
"@react-native/assets-registry": "^0.72.0",
- "@react-native/codegen": "^0.72.6",
+ "@react-native/codegen": "^0.72.8",
"@react-native/gradle-plugin": "^0.72.11",
"@react-native/js-polyfills": "^0.72.1",
"@react-native/normalize-colors": "^0.72.0",
@@ -91,7 +91,8 @@
"abort-controller": "^3.0.0",
"anser": "^1.4.9",
"base64-js": "^1.1.2",
- "deprecated-react-native-prop-types": "4.1.0",
+ "deprecated-react-native-prop-types": "^4.2.3",
+ "ansi-regex": "^5.0.0",
"event-target-shim": "^5.0.1",
"flow-enums-runtime": "^0.0.5",
"invariant": "^2.2.4",
diff --git a/packages/react-native/scripts/cocoapods/__tests__/codegen-test.rb b/packages/react-native/scripts/cocoapods/__tests__/codegen-test.rb
index 70573b4f3162..17aeded0da2f 100644
--- a/packages/react-native/scripts/cocoapods/__tests__/codegen-test.rb
+++ b/packages/react-native/scripts/cocoapods/__tests__/codegen-test.rb
@@ -68,7 +68,7 @@ def testCheckAndGenerateEmptyThirdPartyProvider_whenFileAlreadyExists_doNothing(
assert_equal(Pod::Executable.executed_commands.length, 0)
end
- def testCheckAndGenerateEmptyThirdPartyProvider_whenHeaderMissingAndCodegenMissing_raiseError()
+ def testCheckAndGenerateEmptyThirdPartyProvider_whenHeaderMissingAndCodegenMissing_dontBuildCodegen()
# Arrange
FileMock.mocked_existing_files([
@@ -76,7 +76,7 @@ def testCheckAndGenerateEmptyThirdPartyProvider_whenHeaderMissingAndCodegenMissi
])
# Act
- assert_raise {
+ assert_nothing_raised {
checkAndGenerateEmptyThirdPartyProvider!(@prefix, false, dir_manager: DirMock, file_manager: FileMock)
}
@@ -84,16 +84,16 @@ def testCheckAndGenerateEmptyThirdPartyProvider_whenHeaderMissingAndCodegenMissi
assert_equal(Pathname.pwd_invocation_count, 1)
assert_equal(Pod::Config.instance.installation_root.relative_path_from_invocation_count, 1)
assert_equal(FileMock.exist_invocation_params, [
- @prefix + "/React/Fabric/" + @third_party_provider_header
+ @prefix + "/React/Fabric/" + @third_party_provider_header,
+ @prefix + "/React/Fabric/tmpSchemaList.txt",
])
assert_equal(DirMock.exist_invocation_params, [
@base_path + "/"+ @prefix + "/../react-native-codegen",
- @base_path + "/"+ @prefix + "/../@react-native/codegen",
])
- assert_equal(Pod::UI.collected_messages, [])
+ assert_equal(Pod::UI.collected_messages, ["[Codegen] generating an empty RCTThirdPartyFabricComponentsProvider"])
assert_equal($collected_commands, [])
- assert_equal(FileMock.open_files.length, 0)
- assert_equal(Pod::Executable.executed_commands.length, 0)
+ assert_equal(FileMock.open_files.length, 1)
+ assert_equal(Pod::Executable.executed_commands.length, 1)
end
def testCheckAndGenerateEmptyThirdPartyProvider_whenImplementationMissingAndCodegenrepoExists_dontBuildCodegen()
@@ -145,7 +145,7 @@ def testCheckAndGenerateEmptyThirdPartyProvider_whenImplementationMissingAndCode
def testCheckAndGenerateEmptyThirdPartyProvider_whenBothMissing_buildCodegen()
# Arrange
- codegen_cli_path = @base_path + "/" + @prefix + "/../@react-native/codegen"
+ codegen_cli_path = @base_path + "/" + @prefix + "/../react-native-codegen"
DirMock.mocked_existing_dirs([
codegen_cli_path,
])
@@ -160,15 +160,14 @@ def testCheckAndGenerateEmptyThirdPartyProvider_whenBothMissing_buildCodegen()
@prefix + "/React/Fabric/" + @tmp_schema_list_file
])
assert_equal(DirMock.exist_invocation_params, [
- @base_path + "/" + @prefix + "/../react-native-codegen",
codegen_cli_path,
codegen_cli_path + "/lib",
])
assert_equal(Pod::UI.collected_messages, [
- "[Codegen] building #{codegen_cli_path}.",
+ "[Codegen] building #{codegen_cli_path}",
"[Codegen] generating an empty RCTThirdPartyFabricComponentsProvider"
])
- assert_equal($collected_commands, ["~/app/ios/../../../@react-native/codegen/scripts/oss/build.sh"])
+ assert_equal($collected_commands, ["~/app/ios/../../../react-native-codegen/scripts/oss/build.sh"])
assert_equal(FileMock.open_files[0].collected_write, ["[]"])
assert_equal(FileMock.open_files[0].fsync_invocation_count, 1)
assert_equal(Pod::Executable.executed_commands[0], {
diff --git a/packages/react-native/scripts/cocoapods/__tests__/jsengine-test.rb b/packages/react-native/scripts/cocoapods/__tests__/jsengine-test.rb
index 84ef4a6c3462..417ebf89c80a 100644
--- a/packages/react-native/scripts/cocoapods/__tests__/jsengine-test.rb
+++ b/packages/react-native/scripts/cocoapods/__tests__/jsengine-test.rb
@@ -107,7 +107,6 @@ def test_setupHermes_whenHermesScriptSucceeds_installsPods
assert_equal($podInvocation["libevent"][:version], "~> 2.1.12")
hermes_engine_pod_invocation = $podInvocation["hermes-engine"]
assert_equal(hermes_engine_pod_invocation[:podspec], "../../sdks/hermes-engine/hermes-engine.podspec")
- assert_equal(hermes_engine_pod_invocation[:tag], "")
end
def test_setupHermes_installsPods_installsFabricSubspecWhenFabricEnabled
@@ -122,7 +121,6 @@ def test_setupHermes_installsPods_installsFabricSubspecWhenFabricEnabled
assert_equal($podInvocation["React-jsi"][:path], "../../ReactCommon/jsi")
hermes_engine_pod_invocation = $podInvocation["hermes-engine"]
assert_equal(hermes_engine_pod_invocation[:podspec], "../../sdks/hermes-engine/hermes-engine.podspec")
- assert_equal(hermes_engine_pod_invocation[:tag], "")
assert_equal($podInvocation["React-hermes"][:path], "../../ReactCommon/hermes")
assert_equal($podInvocation["libevent"][:version], "~> 2.1.12")
end
diff --git a/packages/react-native/scripts/cocoapods/__tests__/test_utils/XcodebuildMock.rb b/packages/react-native/scripts/cocoapods/__tests__/test_utils/XcodebuildMock.rb
new file mode 100644
index 000000000000..4cbef2e811da
--- /dev/null
+++ b/packages/react-native/scripts/cocoapods/__tests__/test_utils/XcodebuildMock.rb
@@ -0,0 +1,26 @@
+# 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.
+
+class XcodebuildMock < Xcodebuild
+ @@version = ""
+ @@version_invocation_count = 0
+
+ def self.set_version=(v)
+ @@version = v
+ end
+
+ def self.version
+ @@version_invocation_count += 1
+ @@version
+ end
+
+ def self.version_invocation_count
+ @@version_invocation_count
+ end
+
+ def self.reset()
+ @@version_invocation_count = 0
+ end
+end
diff --git a/packages/react-native/scripts/cocoapods/__tests__/utils-test.rb b/packages/react-native/scripts/cocoapods/__tests__/utils-test.rb
index 5a1c98e6bc6f..47d6c632dbab 100644
--- a/packages/react-native/scripts/cocoapods/__tests__/utils-test.rb
+++ b/packages/react-native/scripts/cocoapods/__tests__/utils-test.rb
@@ -14,6 +14,7 @@
require_relative "./test_utils/systemUtils.rb"
require_relative "./test_utils/PathnameMock.rb"
require_relative "./test_utils/TargetDefinitionMock.rb"
+require_relative "./test_utils/XcodebuildMock.rb"
class UtilsTests < Test::Unit::TestCase
def setup
@@ -28,6 +29,7 @@ def teardown
Pod::Config.reset()
SysctlChecker.reset()
Environment.reset()
+ XcodebuildMock.reset()
ENV['RCT_NEW_ARCH_ENABLED'] = '0'
ENV['USE_HERMES'] = '1'
ENV['USE_FRAMEWORKS'] = nil
@@ -437,9 +439,9 @@ def test_applyMacCatalystPatches_correctlyAppliesNecessaryPatches
# ================================= #
# Test - Apply Xcode 15 Patch #
# ================================= #
-
- def test_applyXcode15Patch_correctlyAppliesNecessaryPatch
+ def test_applyXcode15Patch_whenXcodebuild14_correctlyAppliesNecessaryPatch
# Arrange
+ XcodebuildMock.set_version = "Xcode 14.3"
first_target = prepare_target("FirstTarget")
second_target = prepare_target("SecondTarget")
third_target = TargetMock.new("ThirdTarget", [
@@ -468,24 +470,117 @@ def test_applyXcode15Patch_correctlyAppliesNecessaryPatch
])
# Act
- ReactNativePodsUtils.apply_xcode_15_patch(installer)
+ user_project_mock.build_configurations.each do |config|
+ assert_nil(config.build_settings["OTHER_LDFLAGS"])
+ end
+
+ ReactNativePodsUtils.apply_xcode_15_patch(installer, :xcodebuild_manager => XcodebuildMock)
# Assert
- first_target.build_configurations.each do |config|
- assert_equal(config.build_settings["GCC_PREPROCESSOR_DEFINITIONS"].strip,
- '$(inherited) "_LIBCPP_ENABLE_CXX17_REMOVED_UNARY_BINARY_FUNCTION"'
- )
+ user_project_mock.build_configurations.each do |config|
+ assert_equal("$(inherited) _LIBCPP_ENABLE_CXX17_REMOVED_UNARY_BINARY_FUNCTION", config.build_settings["GCC_PREPROCESSOR_DEFINITIONS"])
+ assert_equal("$(inherited) ", config.build_settings["OTHER_LDFLAGS"])
end
- second_target.build_configurations.each do |config|
- assert_equal(config.build_settings["GCC_PREPROCESSOR_DEFINITIONS"].strip,
- '$(inherited) "_LIBCPP_ENABLE_CXX17_REMOVED_UNARY_BINARY_FUNCTION"'
- )
+
+ # User project and Pods project
+ assert_equal(2, XcodebuildMock.version_invocation_count)
+ end
+
+ def test_applyXcode15Patch_whenXcodebuild15_correctlyAppliesNecessaryPatch
+ # Arrange
+ XcodebuildMock.set_version = "Xcode 15.0"
+ first_target = prepare_target("FirstTarget")
+ second_target = prepare_target("SecondTarget")
+ third_target = TargetMock.new("ThirdTarget", [
+ BuildConfigurationMock.new("Debug", {
+ "GCC_PREPROCESSOR_DEFINITIONS" => '$(inherited) "SomeFlag=1" '
+ }),
+ BuildConfigurationMock.new("Release", {
+ "GCC_PREPROCESSOR_DEFINITIONS" => '$(inherited) "SomeFlag=1" '
+ }),
+ ], nil)
+
+ user_project_mock = UserProjectMock.new("/a/path", [
+ prepare_config("Debug"),
+ prepare_config("Release"),
+ ],
+ :native_targets => [
+ first_target,
+ second_target
+ ]
+ )
+ pods_projects_mock = PodsProjectMock.new([], {"hermes-engine" => {}}, :native_targets => [
+ third_target
+ ])
+ installer = InstallerMock.new(pods_projects_mock, [
+ AggregatedProjectMock.new(user_project_mock)
+ ])
+
+ # Act
+ user_project_mock.build_configurations.each do |config|
+ assert_nil(config.build_settings["OTHER_LDFLAGS"])
end
- third_target.build_configurations.each do |config|
- assert_equal(config.build_settings["GCC_PREPROCESSOR_DEFINITIONS"].strip,
- '$(inherited) "SomeFlag=1" "_LIBCPP_ENABLE_CXX17_REMOVED_UNARY_BINARY_FUNCTION"'
- )
+
+ ReactNativePodsUtils.apply_xcode_15_patch(installer, :xcodebuild_manager => XcodebuildMock)
+
+ # Assert
+ user_project_mock.build_configurations.each do |config|
+ assert_equal("$(inherited) _LIBCPP_ENABLE_CXX17_REMOVED_UNARY_BINARY_FUNCTION", config.build_settings["GCC_PREPROCESSOR_DEFINITIONS"])
+ assert_equal("$(inherited) -Wl -ld_classic", config.build_settings["OTHER_LDFLAGS"])
end
+
+ # User project and Pods project
+ assert_equal(2, XcodebuildMock.version_invocation_count)
+ end
+
+ def test_applyXcode15Patch_whenXcodebuild14ButProjectHasSettings_correctlyRemovesNecessaryPatch
+ # Arrange
+ XcodebuildMock.set_version = "Xcode 14.3"
+ first_target = prepare_target("FirstTarget")
+ second_target = prepare_target("SecondTarget")
+ third_target = TargetMock.new("ThirdTarget", [
+ BuildConfigurationMock.new("Debug", {
+ "GCC_PREPROCESSOR_DEFINITIONS" => '$(inherited) "SomeFlag=1" '
+ }),
+ BuildConfigurationMock.new("Release", {
+ "GCC_PREPROCESSOR_DEFINITIONS" => '$(inherited) "SomeFlag=1" '
+ }),
+ ], nil)
+
+ debug_config = prepare_config("Debug", {"OTHER_LDFLAGS" => "$(inherited) -Wl -ld_classic "})
+ release_config = prepare_config("Release", {"OTHER_LDFLAGS" => "$(inherited) -Wl -ld_classic "})
+
+ user_project_mock = UserProjectMock.new("/a/path", [
+ debug_config,
+ release_config,
+ ],
+ :native_targets => [
+ first_target,
+ second_target
+ ]
+ )
+ pods_projects_mock = PodsProjectMock.new([debug_config.clone, release_config.clone], {"hermes-engine" => {}}, :native_targets => [
+ third_target
+ ])
+ installer = InstallerMock.new(pods_projects_mock, [
+ AggregatedProjectMock.new(user_project_mock)
+ ])
+
+ # Act
+ user_project_mock.build_configurations.each do |config|
+ assert_equal("$(inherited) -Wl -ld_classic ", config.build_settings["OTHER_LDFLAGS"])
+ end
+
+ ReactNativePodsUtils.apply_xcode_15_patch(installer, :xcodebuild_manager => XcodebuildMock)
+
+ # Assert
+ user_project_mock.build_configurations.each do |config|
+ assert_equal("$(inherited) _LIBCPP_ENABLE_CXX17_REMOVED_UNARY_BINARY_FUNCTION", config.build_settings["GCC_PREPROCESSOR_DEFINITIONS"])
+ assert_equal("$(inherited)", config.build_settings["OTHER_LDFLAGS"])
+ end
+
+ # User project and Pods project
+ assert_equal(2, XcodebuildMock.version_invocation_count)
end
# ==================================== #
@@ -744,12 +839,14 @@ def prepare_empty_user_project_mock
])
end
-def prepare_config(config_name)
- return BuildConfigurationMock.new(config_name, {"LIBRARY_SEARCH_PATHS" => [
+def prepare_config(config_name, extra_config = {})
+ config = {"LIBRARY_SEARCH_PATHS" => [
"$(TOOLCHAIN_DIR)/usr/lib/swift-5.0/$(PLATFORM_NAME)",
"\"$(TOOLCHAIN_DIR)/usr/lib/swift-5.0/$(PLATFORM_NAME)\"",
"another/path",
- ]})
+ ]}.merge(extra_config)
+
+ return BuildConfigurationMock.new(config_name, config)
end
def prepare_target(name, product_type = nil, dependencies = [])
diff --git a/packages/react-native/scripts/cocoapods/codegen.rb b/packages/react-native/scripts/cocoapods/codegen.rb
index 56d120fcceda..e9d0cff52fe3 100644
--- a/packages/react-native/scripts/cocoapods/codegen.rb
+++ b/packages/react-native/scripts/cocoapods/codegen.rb
@@ -11,23 +11,12 @@
# - dir_manager: a class that implements the `Dir` interface. Defaults to `Dir`, the Dependency can be injected for testing purposes.
# @throws an error if it could not find the codegen folder.
def build_codegen!(react_native_path, relative_installation_root, dir_manager: Dir)
- codegen_repo_path = "#{relative_installation_root}/#{react_native_path}/../react-native-codegen";
- codegen_npm_path = "#{relative_installation_root}/#{react_native_path}/../@react-native/codegen";
- codegen_cli_path = ""
+ codegen_repo_path = "#{relative_installation_root}/#{react_native_path}/../react-native-codegen";
+ return unless dir_manager.exist?(codegen_repo_path) && !dir_manager.exist?("#{codegen_repo_path}/lib")
- if dir_manager.exist?(codegen_repo_path)
- codegen_cli_path = codegen_repo_path
- elsif dir_manager.exist?(codegen_npm_path)
- codegen_cli_path = codegen_npm_path
- else
- raise "[codegen] Could not find react-native-codegen."
- end
-
- if !dir_manager.exist?("#{codegen_cli_path}/lib")
- Pod::UI.puts "[Codegen] building #{codegen_cli_path}."
- system("#{codegen_cli_path}/scripts/oss/build.sh")
- end
- end
+ Pod::UI.puts "[Codegen] building #{codegen_repo_path}"
+ system("#{codegen_repo_path}/scripts/oss/build.sh")
+end
# It generates an empty `ThirdPartyProvider`, required by Fabric to load the components
#
diff --git a/packages/react-native/scripts/cocoapods/helpers.rb b/packages/react-native/scripts/cocoapods/helpers.rb
index 03e3a5cbeac6..6d2a58d5973f 100644
--- a/packages/react-native/scripts/cocoapods/helpers.rb
+++ b/packages/react-native/scripts/cocoapods/helpers.rb
@@ -11,6 +11,14 @@ def call_sysctl_arm64
end
end
+# Helper class that is used to easily send commands to Xcodebuild
+# And that can be subclassed for testing purposes.
+class Xcodebuild
+ def self.version
+ `xcodebuild -version`
+ end
+end
+
# Helper object to wrap system properties like RUBY_PLATFORM
# This makes it easier to mock the behaviour in tests
class Environment
@@ -26,3 +34,11 @@ def self.find_codegen_file(path)
return `find #{path} -type f \\( #{js_files} -or #{ts_files} \\)`.split("\n").sort()
end
end
+
+module Helpers
+ class Constants
+ def self.min_ios_version_supported
+ return '12.4'
+ end
+ end
+end
diff --git a/packages/react-native/scripts/cocoapods/jsengine.rb b/packages/react-native/scripts/cocoapods/jsengine.rb
index 062290ac07d6..416a4ddf3bdf 100644
--- a/packages/react-native/scripts/cocoapods/jsengine.rb
+++ b/packages/react-native/scripts/cocoapods/jsengine.rb
@@ -30,12 +30,8 @@ def setup_hermes!(react_native_path: "../node_modules/react-native", fabric_enab
abort unless prep_status == 0
pod 'React-jsi', :path => "#{react_native_path}/ReactCommon/jsi"
- # This `:tag => hermestag` below is only to tell CocoaPods to update hermes-engine when React Native version changes.
- # We have custom logic to compute the source for hermes-engine. See sdks/hermes-engine/*
- hermestag_file = File.join(react_native_dir, "sdks", ".hermesversion")
- hermestag = File.exist?(hermestag_file) ? File.read(hermestag_file).strip : ''
- pod 'hermes-engine', :podspec => "#{react_native_path}/sdks/hermes-engine/hermes-engine.podspec", :tag => hermestag
+ pod 'hermes-engine', :podspec => "#{react_native_path}/sdks/hermes-engine/hermes-engine.podspec"
pod 'React-hermes', :path => "#{react_native_path}/ReactCommon/hermes"
pod 'libevent', '~> 2.1.12'
end
diff --git a/packages/react-native/scripts/cocoapods/utils.rb b/packages/react-native/scripts/cocoapods/utils.rb
index 44b2579e49a4..3f1566d06a53 100644
--- a/packages/react-native/scripts/cocoapods/utils.rb
+++ b/packages/react-native/scripts/cocoapods/utils.rb
@@ -121,16 +121,31 @@ def self.apply_mac_catalyst_patches(installer)
end
end
- def self.apply_xcode_15_patch(installer)
- installer.target_installation_results.pod_target_installation_results
- .each do |pod_name, target_installation_result|
- target_installation_result.native_target.build_configurations.each do |config|
- # unary_function and binary_function are no longer provided in C++17 and newer standard modes as part of Xcode 15. They can be re-enabled with setting _LIBCPP_ENABLE_CXX17_REMOVED_UNARY_BINARY_FUNCTION
- # Ref: https://developer.apple.com/documentation/xcode-release-notes/xcode-15-release-notes#Deprecations
- config.build_settings['GCC_PREPROCESSOR_DEFINITIONS'] ||= '$(inherited) '
- config.build_settings['GCC_PREPROCESSOR_DEFINITIONS'] << '"_LIBCPP_ENABLE_CXX17_REMOVED_UNARY_BINARY_FUNCTION" '
+ def self.apply_xcode_15_patch(installer, xcodebuild_manager: Xcodebuild)
+ projects = self.extract_projects(installer)
+
+ gcc_preprocessor_definition_key = 'GCC_PREPROCESSOR_DEFINITIONS'
+ other_ld_flags_key = 'OTHER_LDFLAGS'
+ libcpp_cxx17_fix = '_LIBCPP_ENABLE_CXX17_REMOVED_UNARY_BINARY_FUNCTION'
+ xcode15_compatibility_flags = '-Wl -ld_classic '
+
+ projects.each do |project|
+ project.build_configurations.each do |config|
+ # fix for unary_function and binary_function
+ self.safe_init(config, gcc_preprocessor_definition_key)
+ self.add_value_to_setting_if_missing(config, gcc_preprocessor_definition_key, libcpp_cxx17_fix)
+
+ # fix for weak linking
+ self.safe_init(config, other_ld_flags_key)
+ if self.is_using_xcode15_0(:xcodebuild_manager => xcodebuild_manager)
+ self.add_value_to_setting_if_missing(config, other_ld_flags_key, xcode15_compatibility_flags)
+ else
+ self.remove_value_from_setting_if_present(config, other_ld_flags_key, xcode15_compatibility_flags)
+ end
end
+ project.save()
end
+
end
def self.apply_flags_for_fabric(installer, fabric_enabled: false)
@@ -232,6 +247,37 @@ def self.update_search_paths(installer)
end
end
+ def self.updateIphoneOSDeploymentTarget(installer)
+ pod_to_update = Set.new([
+ "boost",
+ "CocoaAsyncSocket",
+ "Flipper",
+ "Flipper-DoubleConversion",
+ "Flipper-Fmt",
+ "Flipper-Boost-iOSX",
+ "Flipper-Folly",
+ "Flipper-Glog",
+ "Flipper-PeerTalk",
+ "FlipperKit",
+ "fmt",
+ "libevent",
+ "OpenSSL-Universal",
+ "RCT-Folly",
+ "SocketRocket",
+ "YogaKit"
+ ])
+
+ installer.target_installation_results.pod_target_installation_results
+ .each do |pod_name, target_installation_result|
+ unless pod_to_update.include?(pod_name)
+ next
+ end
+ target_installation_result.native_target.build_configurations.each do |config|
+ config.build_settings["IPHONEOS_DEPLOYMENT_TARGET"] = Helpers::Constants.min_ios_version_supported
+ end
+ end
+ end
+
# ========= #
# Utilities #
# ========= #
@@ -243,6 +289,56 @@ def self.extract_projects(installer)
.push(installer.pods_project)
end
+ def self.safe_init(config, setting_name)
+ old_config = config.build_settings[setting_name]
+ if old_config == nil
+ config.build_settings[setting_name] ||= '$(inherited) '
+ end
+ end
+
+ def self.add_value_to_setting_if_missing(config, setting_name, value)
+ old_config = config.build_settings[setting_name]
+ if old_config.is_a?(Array)
+ old_config = old_config.join(" ")
+ end
+
+ trimmed_value = value.strip()
+ if !old_config.include?(trimmed_value)
+ config.build_settings[setting_name] = "#{old_config.strip()} #{trimmed_value}".strip()
+ end
+ end
+
+ def self.remove_value_from_setting_if_present(config, setting_name, value)
+ old_config = config.build_settings[setting_name]
+ if old_config.is_a?(Array)
+ old_config = old_config.join(" ")
+ end
+
+ trimmed_value = value.strip()
+ if old_config.include?(trimmed_value)
+ new_config = old_config.gsub(trimmed_value, "")
+ config.build_settings[setting_name] = new_config.strip()
+ end
+ end
+
+ def self.is_using_xcode15_0(xcodebuild_manager: Xcodebuild)
+ xcodebuild_version = xcodebuild_manager.version
+
+ # The output of xcodebuild -version is something like
+ # Xcode 15.0
+ # or
+ # Xcode 14.3.1
+ # We want to capture the version digits
+ regex = /(\d+)\.(\d+)(?:\.(\d+))?/
+ if match_data = xcodebuild_version.match(regex)
+ major = match_data[1].to_i
+ minor = match_data[2].to_i
+ return major == 15 && minor == 0
+ end
+
+ return false
+ end
+
def self.add_compiler_flag_to_project(installer, flag, configuration: nil)
projects = self.extract_projects(installer)
diff --git a/packages/react-native/scripts/codegen/generate-legacy-interop-components.js b/packages/react-native/scripts/codegen/generate-legacy-interop-components.js
index 49ac074c9164..fc94a96080cd 100644
--- a/packages/react-native/scripts/codegen/generate-legacy-interop-components.js
+++ b/packages/react-native/scripts/codegen/generate-legacy-interop-components.js
@@ -11,6 +11,7 @@
const yargs = require('yargs');
const fs = require('fs');
+const p = require('path');
const CONFIG_FILE_NAME = 'react-native.config.js';
const PROJECT_FIELD = 'project';
@@ -93,7 +94,11 @@ function extractComponentsNames(reactNativeConfig) {
}
function generateRCTLegacyInteropComponents() {
- const configFilePath = `${appRoot}/${CONFIG_FILE_NAME}`;
+ const cwd = process.cwd();
+ const configFilePath = p.join(cwd, appRoot, CONFIG_FILE_NAME);
+ console.log(
+ `Looking for a react-native.config.js file at ${configFilePath}...`,
+ );
let reactNativeConfig = null;
try {
reactNativeConfig = require(configFilePath);
@@ -107,7 +112,7 @@ function generateRCTLegacyInteropComponents() {
console.log('Skip LegacyInterop generation');
return;
}
-
+ console.log(`Components found: ${componentNames}`);
let componentsArray = componentNames.map(name => `\t\t\t@"${name}",`);
// Remove the last comma
if (componentsArray.length > 0) {
@@ -118,6 +123,7 @@ function generateRCTLegacyInteropComponents() {
const filePath = `${outputPath}/${OUTPUT_FILE_NAME}`;
fs.writeFileSync(filePath, fileBody(componentsArray.join('\n')));
+ console.log(`${filePath} updated!`);
}
generateRCTLegacyInteropComponents();
diff --git a/packages/react-native/scripts/react_native_pods.rb b/packages/react-native/scripts/react_native_pods.rb
index 653385ed12ea..0c28e6818f98 100644
--- a/packages/react-native/scripts/react_native_pods.rb
+++ b/packages/react-native/scripts/react_native_pods.rb
@@ -15,6 +15,7 @@
require_relative './cocoapods/utils.rb'
require_relative './cocoapods/new_architecture.rb'
require_relative './cocoapods/local_podspec_patch.rb'
+require_relative './cocoapods/helpers.rb'
$CODEGEN_OUTPUT_DIR = 'build/generated/ios'
$CODEGEN_COMPONENT_DIR = 'react/renderer/components'
@@ -34,11 +35,12 @@
{paths: [process.argv[1]]},
)', __dir__]).strip
-# This function returns the min iOS version supported by React Native
+
+# This function returns the min supported OS versions supported by React Native
# By using this function, you won't have to manually change your Podfile
# when we change the minimum version supported by the framework.
def min_ios_version_supported
- return '12.4'
+ return Helpers::Constants.min_ios_version_supported
end
# This function prepares the project for React Native, before processing
@@ -245,11 +247,13 @@ def react_native_post_install(
ReactNativePodsUtils.set_node_modules_user_settings(installer, react_native_path)
ReactNativePodsUtils.apply_flags_for_fabric(installer, fabric_enabled: fabric_enabled)
ReactNativePodsUtils.apply_xcode_15_patch(installer)
+ ReactNativePodsUtils.updateIphoneOSDeploymentTarget(installer)
NewArchitectureHelper.set_clang_cxx_language_standard_if_needed(installer)
is_new_arch_enabled = ENV['RCT_NEW_ARCH_ENABLED'] == "1"
NewArchitectureHelper.modify_flags_for_new_architecture(installer, is_new_arch_enabled)
+
Pod::UI.puts "Pod install took #{Time.now.to_i - $START_TIME} [s] to run".green
end
diff --git a/packages/react-native/sdks/hermes-engine/utils/build-apple-framework.sh b/packages/react-native/sdks/hermes-engine/utils/build-apple-framework.sh
index 70e627f8eb4e..274c91943e71 100755
--- a/packages/react-native/sdks/hermes-engine/utils/build-apple-framework.sh
+++ b/packages/react-native/sdks/hermes-engine/utils/build-apple-framework.sh
@@ -52,13 +52,9 @@ function build_host_hermesc {
# Utility function to configure an Apple framework
function configure_apple_framework {
- local build_cli_tools enable_bitcode enable_debugger cmake_build_type
+ local build_cli_tools enable_debugger cmake_build_type xcode_15_flags xcode_major_version
+
- if [[ $1 == iphoneos || $1 == catalyst ]]; then
- enable_bitcode="true"
- else
- enable_bitcode="false"
- fi
if [[ $1 == macosx ]]; then
build_cli_tools="true"
else
@@ -77,8 +73,15 @@ function configure_apple_framework {
cmake_build_type="MinSizeRel"
fi
+ xcode_15_flags=""
+ xcode_major_version=$(xcodebuild -version | grep -oE '[0-9]*' | head -n 1)
+ if [[ $xcode_major_version -ge 15 ]]; then
+ xcode_15_flags="LINKER:-ld_classic"
+ fi
+
pushd "$HERMES_PATH" > /dev/null || exit 1
cmake -S . -B "build_$1" \
+ -DHERMES_EXTRA_LINKER_FLAGS="$xcode_15_flags" \
-DHERMES_APPLE_TARGET_PLATFORM:STRING="$1" \
-DCMAKE_OSX_ARCHITECTURES:STRING="$2" \
-DCMAKE_OSX_DEPLOYMENT_TARGET:STRING="$3" \
@@ -87,7 +90,7 @@ function configure_apple_framework {
-DHERMES_ENABLE_LIBFUZZER:BOOLEAN=false \
-DHERMES_ENABLE_FUZZILLI:BOOLEAN=false \
-DHERMES_ENABLE_TEST_SUITE:BOOLEAN=false \
- -DHERMES_ENABLE_BITCODE:BOOLEAN="$enable_bitcode" \
+ -DHERMES_ENABLE_BITCODE:BOOLEAN=false \
-DHERMES_BUILD_APPLE_FRAMEWORK:BOOLEAN=true \
-DHERMES_BUILD_APPLE_DSYM:BOOLEAN=true \
-DHERMES_ENABLE_TOOLS:BOOLEAN="$build_cli_tools" \
diff --git a/packages/react-native/sdks/hermes-engine/utils/build-hermes-xcode.sh b/packages/react-native/sdks/hermes-engine/utils/build-hermes-xcode.sh
index 5093976b2cc4..137940a496aa 100755
--- a/packages/react-native/sdks/hermes-engine/utils/build-hermes-xcode.sh
+++ b/packages/react-native/sdks/hermes-engine/utils/build-hermes-xcode.sh
@@ -33,6 +33,13 @@ if [ -z "$deployment_target" ]; then
deployment_target=${MACOSX_DEPLOYMENT_TARGET}
fi
+xcode_15_flags=""
+xcode_major_version=$(xcodebuild -version | grep -oE '[0-9]*' | head -n 1)
+if [[ $xcode_major_version -ge 15 ]]; then
+ echo "########### Using LINKER:-ld_classic ###########"
+ xcode_15_flags="LINKER:-ld_classic"
+fi
+
architectures=$( echo "$ARCHS" | tr " " ";" )
echo "Configure Apple framework"
@@ -40,6 +47,7 @@ echo "Configure Apple framework"
"$CMAKE_BINARY" \
-S "${PODS_ROOT}/hermes-engine" \
-B "${PODS_ROOT}/hermes-engine/build/${PLATFORM_NAME}" \
+ -DHERMES_EXTRA_LINKER_FLAGS="$xcode_15_flags" \
-DHERMES_APPLE_TARGET_PLATFORM:STRING="$PLATFORM_NAME" \
-DCMAKE_OSX_ARCHITECTURES:STRING="$architectures" \
-DCMAKE_OSX_DEPLOYMENT_TARGET:STRING="$deployment_target" \
diff --git a/packages/react-native/template/Gemfile b/packages/react-native/template/Gemfile
index 1fa2c2e1abde..6a7d5c7a49c3 100644
--- a/packages/react-native/template/Gemfile
+++ b/packages/react-native/template/Gemfile
@@ -3,4 +3,5 @@ source 'https://rubygems.org'
# You may use http://rbenv.org/ or https://rvm.io/ to install and use this version
ruby ">= 2.6.10"
-gem 'cocoapods', '~> 1.12'
+gem 'cocoapods', '~> 1.13'
+gem 'activesupport', '>= 6.1.7.3', '< 7.1.0'
diff --git a/packages/react-native/template/package.json b/packages/react-native/template/package.json
index 250ea89fa199..98f93df440f8 100644
--- a/packages/react-native/template/package.json
+++ b/packages/react-native/template/package.json
@@ -11,7 +11,7 @@
},
"dependencies": {
"react": "18.2.0",
- "react-native": "0.72.4"
+ "react-native": "0.72.10"
},
"devDependencies": {
"@babel/core": "^7.20.0",
diff --git a/packages/react-native/third-party-podspecs/boost.podspec b/packages/react-native/third-party-podspecs/boost.podspec
index 3d9331c95d12..bbbb7380e51a 100644
--- a/packages/react-native/third-party-podspecs/boost.podspec
+++ b/packages/react-native/third-party-podspecs/boost.podspec
@@ -10,7 +10,7 @@ Pod::Spec.new do |spec|
spec.homepage = 'http://www.boost.org'
spec.summary = 'Boost provides free peer-reviewed portable C++ source libraries.'
spec.authors = 'Rene Rivera'
- spec.source = { :http => 'https://boostorg.jfrog.io/artifactory/main/release/1.76.0/source/boost_1_76_0.tar.bz2',
+ spec.source = { :http => 'https://archives.boost.io/release/1.76.0/source/boost_1_76_0.tar.bz2',
:sha256 => 'f0397ba6e982c4450f27bf32a2a83292aba035b827a5623a14636ea583318c41' }
# Pinning to the same version as React.podspec.
diff --git a/packages/rn-tester/Gemfile b/packages/rn-tester/Gemfile
index a66fd6c04cbc..4de6c10e5d6d 100644
--- a/packages/rn-tester/Gemfile
+++ b/packages/rn-tester/Gemfile
@@ -3,3 +3,4 @@ source 'https://rubygems.org'
gem 'cocoapods', '~> 1.12'
gem 'rexml'
+gem 'activesupport', '>= 6.1.7.3', '< 7.1.0'
diff --git a/packages/rn-tester/Podfile.lock b/packages/rn-tester/Podfile.lock
index 9e2d6d6aa9a8..6759395b21be 100644
--- a/packages/rn-tester/Podfile.lock
+++ b/packages/rn-tester/Podfile.lock
@@ -1,25 +1,81 @@
PODS:
- boost (1.76.0)
+ - CocoaAsyncSocket (7.6.5)
- DoubleConversion (1.1.6)
- - FBLazyVector (0.72.4)
- - FBReactNativeSpec (0.72.4):
+ - FBLazyVector (0.72.9)
+ - FBReactNativeSpec (0.72.9):
- RCT-Folly (= 2021.07.22.00)
- - RCTRequired (= 0.72.4)
- - RCTTypeSafety (= 0.72.4)
- - React-Core (= 0.72.4)
- - React-jsi (= 0.72.4)
- - ReactCommon/turbomodule/core (= 0.72.4)
+ - RCTRequired (= 0.72.9)
+ - RCTTypeSafety (= 0.72.9)
+ - React-Core (= 0.72.9)
+ - React-jsi (= 0.72.9)
+ - ReactCommon/turbomodule/core (= 0.72.9)
+ - Flipper (0.182.0):
+ - Flipper-Folly (~> 2.6)
+ - Flipper-Boost-iOSX (1.76.0.1.11)
+ - Flipper-DoubleConversion (3.2.0.1)
+ - Flipper-Fmt (7.1.7)
+ - Flipper-Folly (2.6.10):
+ - Flipper-Boost-iOSX
+ - Flipper-DoubleConversion
+ - Flipper-Fmt (= 7.1.7)
+ - Flipper-Glog
+ - libevent (~> 2.1.12)
+ - OpenSSL-Universal (= 1.1.1100)
+ - Flipper-Glog (0.5.0.5)
+ - Flipper-PeerTalk (0.0.4)
+ - FlipperKit (0.182.0):
+ - FlipperKit/Core (= 0.182.0)
+ - FlipperKit/Core (0.182.0):
+ - Flipper (~> 0.182.0)
+ - FlipperKit/CppBridge
+ - FlipperKit/FBCxxFollyDynamicConvert
+ - FlipperKit/FBDefines
+ - FlipperKit/FKPortForwarding
+ - SocketRocket (~> 0.6.0)
+ - FlipperKit/CppBridge (0.182.0):
+ - Flipper (~> 0.182.0)
+ - FlipperKit/FBCxxFollyDynamicConvert (0.182.0):
+ - Flipper-Folly (~> 2.6)
+ - FlipperKit/FBDefines (0.182.0)
+ - FlipperKit/FKPortForwarding (0.182.0):
+ - CocoaAsyncSocket (~> 7.6)
+ - Flipper-PeerTalk (~> 0.0.4)
+ - FlipperKit/FlipperKitHighlightOverlay (0.182.0)
+ - FlipperKit/FlipperKitLayoutHelpers (0.182.0):
+ - FlipperKit/Core
+ - FlipperKit/FlipperKitHighlightOverlay
+ - FlipperKit/FlipperKitLayoutTextSearchable
+ - FlipperKit/FlipperKitLayoutIOSDescriptors (0.182.0):
+ - FlipperKit/Core
+ - FlipperKit/FlipperKitHighlightOverlay
+ - FlipperKit/FlipperKitLayoutHelpers
+ - YogaKit (~> 1.18)
+ - FlipperKit/FlipperKitLayoutPlugin (0.182.0):
+ - FlipperKit/Core
+ - FlipperKit/FlipperKitHighlightOverlay
+ - FlipperKit/FlipperKitLayoutHelpers
+ - FlipperKit/FlipperKitLayoutIOSDescriptors
+ - FlipperKit/FlipperKitLayoutTextSearchable
+ - YogaKit (~> 1.18)
+ - FlipperKit/FlipperKitLayoutTextSearchable (0.182.0)
+ - FlipperKit/FlipperKitNetworkPlugin (0.182.0):
+ - FlipperKit/Core
+ - FlipperKit/FlipperKitReactPlugin (0.182.0):
+ - FlipperKit/Core
+ - FlipperKit/FlipperKitUserDefaultsPlugin (0.182.0):
+ - FlipperKit/Core
+ - FlipperKit/SKIOSNetworkPlugin (0.182.0):
+ - FlipperKit/Core
+ - FlipperKit/FlipperKitNetworkPlugin
- fmt (6.2.1)
- glog (0.3.5)
- - hermes-engine (0.72.4):
- - hermes-engine/Hermes (= 0.72.4)
- - hermes-engine/JSI (= 0.72.4)
- - hermes-engine/Public (= 0.72.4)
- - hermes-engine/Hermes (0.72.4)
- - hermes-engine/JSI (0.72.4)
- - hermes-engine/Public (0.72.4)
+ - hermes-engine (0.72.9):
+ - hermes-engine/Pre-built (= 0.72.9)
+ - hermes-engine/Pre-built (0.72.9)
- libevent (2.1.12)
- OCMock (3.9.1)
+ - OpenSSL-Universal (1.1.1100)
- RCT-Folly (2021.07.22.00):
- boost
- DoubleConversion
@@ -42,26 +98,26 @@ PODS:
- fmt (~> 6.2.1)
- glog
- libevent
- - RCTRequired (0.72.4)
- - RCTTypeSafety (0.72.4):
- - FBLazyVector (= 0.72.4)
- - RCTRequired (= 0.72.4)
- - React-Core (= 0.72.4)
- - React (0.72.4):
- - React-Core (= 0.72.4)
- - React-Core/DevSupport (= 0.72.4)
- - React-Core/RCTWebSocket (= 0.72.4)
- - React-RCTActionSheet (= 0.72.4)
- - React-RCTAnimation (= 0.72.4)
- - React-RCTBlob (= 0.72.4)
- - React-RCTImage (= 0.72.4)
- - React-RCTLinking (= 0.72.4)
- - React-RCTNetwork (= 0.72.4)
- - React-RCTSettings (= 0.72.4)
- - React-RCTText (= 0.72.4)
- - React-RCTVibration (= 0.72.4)
- - React-callinvoker (0.72.4)
- - React-Codegen (0.72.4):
+ - RCTRequired (0.72.9)
+ - RCTTypeSafety (0.72.9):
+ - FBLazyVector (= 0.72.9)
+ - RCTRequired (= 0.72.9)
+ - React-Core (= 0.72.9)
+ - React (0.72.9):
+ - React-Core (= 0.72.9)
+ - React-Core/DevSupport (= 0.72.9)
+ - React-Core/RCTWebSocket (= 0.72.9)
+ - React-RCTActionSheet (= 0.72.9)
+ - React-RCTAnimation (= 0.72.9)
+ - React-RCTBlob (= 0.72.9)
+ - React-RCTImage (= 0.72.9)
+ - React-RCTLinking (= 0.72.9)
+ - React-RCTNetwork (= 0.72.9)
+ - React-RCTSettings (= 0.72.9)
+ - React-RCTText (= 0.72.9)
+ - React-RCTVibration (= 0.72.9)
+ - React-callinvoker (0.72.9)
+ - React-Codegen (0.72.9):
- DoubleConversion
- FBReactNativeSpec
- glog
@@ -80,11 +136,11 @@ PODS:
- React-utils
- ReactCommon/turbomodule/bridging
- ReactCommon/turbomodule/core
- - React-Core (0.72.4):
+ - React-Core (0.72.9):
- glog
- hermes-engine
- RCT-Folly (= 2021.07.22.00)
- - React-Core/Default (= 0.72.4)
+ - React-Core/Default (= 0.72.9)
- React-cxxreact
- React-hermes
- React-jsi
@@ -94,7 +150,7 @@ PODS:
- React-utils
- SocketRocket (= 0.6.1)
- Yoga
- - React-Core/CoreModulesHeaders (0.72.4):
+ - React-Core/CoreModulesHeaders (0.72.9):
- glog
- hermes-engine
- RCT-Folly (= 2021.07.22.00)
@@ -108,7 +164,7 @@ PODS:
- React-utils
- SocketRocket (= 0.6.1)
- Yoga
- - React-Core/Default (0.72.4):
+ - React-Core/Default (0.72.9):
- glog
- hermes-engine
- RCT-Folly (= 2021.07.22.00)
@@ -121,23 +177,23 @@ PODS:
- React-utils
- SocketRocket (= 0.6.1)
- Yoga
- - React-Core/DevSupport (0.72.4):
+ - React-Core/DevSupport (0.72.9):
- glog
- hermes-engine
- RCT-Folly (= 2021.07.22.00)
- - React-Core/Default (= 0.72.4)
- - React-Core/RCTWebSocket (= 0.72.4)
+ - React-Core/Default (= 0.72.9)
+ - React-Core/RCTWebSocket (= 0.72.9)
- React-cxxreact
- React-hermes
- React-jsi
- React-jsiexecutor
- - React-jsinspector (= 0.72.4)
+ - React-jsinspector (= 0.72.9)
- React-perflogger
- React-runtimeexecutor
- React-utils
- SocketRocket (= 0.6.1)
- Yoga
- - React-Core/RCTActionSheetHeaders (0.72.4):
+ - React-Core/RCTActionSheetHeaders (0.72.9):
- glog
- hermes-engine
- RCT-Folly (= 2021.07.22.00)
@@ -151,7 +207,7 @@ PODS:
- React-utils
- SocketRocket (= 0.6.1)
- Yoga
- - React-Core/RCTAnimationHeaders (0.72.4):
+ - React-Core/RCTAnimationHeaders (0.72.9):
- glog
- hermes-engine
- RCT-Folly (= 2021.07.22.00)
@@ -165,7 +221,7 @@ PODS:
- React-utils
- SocketRocket (= 0.6.1)
- Yoga
- - React-Core/RCTBlobHeaders (0.72.4):
+ - React-Core/RCTBlobHeaders (0.72.9):
- glog
- hermes-engine
- RCT-Folly (= 2021.07.22.00)
@@ -179,7 +235,7 @@ PODS:
- React-utils
- SocketRocket (= 0.6.1)
- Yoga
- - React-Core/RCTImageHeaders (0.72.4):
+ - React-Core/RCTImageHeaders (0.72.9):
- glog
- hermes-engine
- RCT-Folly (= 2021.07.22.00)
@@ -193,7 +249,7 @@ PODS:
- React-utils
- SocketRocket (= 0.6.1)
- Yoga
- - React-Core/RCTLinkingHeaders (0.72.4):
+ - React-Core/RCTLinkingHeaders (0.72.9):
- glog
- hermes-engine
- RCT-Folly (= 2021.07.22.00)
@@ -207,7 +263,7 @@ PODS:
- React-utils
- SocketRocket (= 0.6.1)
- Yoga
- - React-Core/RCTNetworkHeaders (0.72.4):
+ - React-Core/RCTNetworkHeaders (0.72.9):
- glog
- hermes-engine
- RCT-Folly (= 2021.07.22.00)
@@ -221,7 +277,7 @@ PODS:
- React-utils
- SocketRocket (= 0.6.1)
- Yoga
- - React-Core/RCTPushNotificationHeaders (0.72.4):
+ - React-Core/RCTPushNotificationHeaders (0.72.9):
- glog
- hermes-engine
- RCT-Folly (= 2021.07.22.00)
@@ -235,7 +291,7 @@ PODS:
- React-utils
- SocketRocket (= 0.6.1)
- Yoga
- - React-Core/RCTSettingsHeaders (0.72.4):
+ - React-Core/RCTSettingsHeaders (0.72.9):
- glog
- hermes-engine
- RCT-Folly (= 2021.07.22.00)
@@ -249,7 +305,7 @@ PODS:
- React-utils
- SocketRocket (= 0.6.1)
- Yoga
- - React-Core/RCTTextHeaders (0.72.4):
+ - React-Core/RCTTextHeaders (0.72.9):
- glog
- hermes-engine
- RCT-Folly (= 2021.07.22.00)
@@ -263,7 +319,7 @@ PODS:
- React-utils
- SocketRocket (= 0.6.1)
- Yoga
- - React-Core/RCTVibrationHeaders (0.72.4):
+ - React-Core/RCTVibrationHeaders (0.72.9):
- glog
- hermes-engine
- RCT-Folly (= 2021.07.22.00)
@@ -277,11 +333,11 @@ PODS:
- React-utils
- SocketRocket (= 0.6.1)
- Yoga
- - React-Core/RCTWebSocket (0.72.4):
+ - React-Core/RCTWebSocket (0.72.9):
- glog
- hermes-engine
- RCT-Folly (= 2021.07.22.00)
- - React-Core/Default (= 0.72.4)
+ - React-Core/Default (= 0.72.9)
- React-cxxreact
- React-hermes
- React-jsi
@@ -291,591 +347,591 @@ PODS:
- React-utils
- SocketRocket (= 0.6.1)
- Yoga
- - React-CoreModules (0.72.4):
+ - React-CoreModules (0.72.9):
- RCT-Folly (= 2021.07.22.00)
- - RCTTypeSafety (= 0.72.4)
- - React-Codegen (= 0.72.4)
- - React-Core/CoreModulesHeaders (= 0.72.4)
- - React-jsi (= 0.72.4)
+ - RCTTypeSafety (= 0.72.9)
+ - React-Codegen (= 0.72.9)
+ - React-Core/CoreModulesHeaders (= 0.72.9)
+ - React-jsi (= 0.72.9)
- React-RCTBlob
- - React-RCTImage (= 0.72.4)
- - ReactCommon/turbomodule/core (= 0.72.4)
+ - React-RCTImage (= 0.72.9)
+ - ReactCommon/turbomodule/core (= 0.72.9)
- SocketRocket (= 0.6.1)
- - React-cxxreact (0.72.4):
+ - React-cxxreact (0.72.9):
- boost (= 1.76.0)
- DoubleConversion
- glog
- hermes-engine
- RCT-Folly (= 2021.07.22.00)
- - React-callinvoker (= 0.72.4)
- - React-debug (= 0.72.4)
- - React-jsi (= 0.72.4)
- - React-jsinspector (= 0.72.4)
- - React-logger (= 0.72.4)
- - React-perflogger (= 0.72.4)
- - React-runtimeexecutor (= 0.72.4)
- - React-debug (0.72.4)
- - React-Fabric (0.72.4):
+ - React-callinvoker (= 0.72.9)
+ - React-debug (= 0.72.9)
+ - React-jsi (= 0.72.9)
+ - React-jsinspector (= 0.72.9)
+ - React-logger (= 0.72.9)
+ - React-perflogger (= 0.72.9)
+ - React-runtimeexecutor (= 0.72.9)
+ - React-debug (0.72.9)
+ - React-Fabric (0.72.9):
- DoubleConversion
- glog
- hermes-engine
- RCT-Folly/Fabric (= 2021.07.22.00)
- - RCTRequired (= 0.72.4)
- - RCTTypeSafety (= 0.72.4)
+ - RCTRequired (= 0.72.9)
+ - RCTTypeSafety (= 0.72.9)
- React-Core
- React-debug
- - React-Fabric/animations (= 0.72.4)
- - React-Fabric/attributedstring (= 0.72.4)
- - React-Fabric/butter (= 0.72.4)
- - React-Fabric/componentregistry (= 0.72.4)
- - React-Fabric/componentregistrynative (= 0.72.4)
- - React-Fabric/components (= 0.72.4)
- - React-Fabric/config (= 0.72.4)
- - React-Fabric/core (= 0.72.4)
- - React-Fabric/debug_renderer (= 0.72.4)
- - React-Fabric/imagemanager (= 0.72.4)
- - React-Fabric/leakchecker (= 0.72.4)
- - React-Fabric/mapbuffer (= 0.72.4)
- - React-Fabric/mounting (= 0.72.4)
- - React-Fabric/scheduler (= 0.72.4)
- - React-Fabric/telemetry (= 0.72.4)
- - React-Fabric/templateprocessor (= 0.72.4)
- - React-Fabric/textlayoutmanager (= 0.72.4)
- - React-Fabric/uimanager (= 0.72.4)
- - React-graphics (= 0.72.4)
- - React-jsi (= 0.72.4)
- - React-jsiexecutor (= 0.72.4)
+ - React-Fabric/animations (= 0.72.9)
+ - React-Fabric/attributedstring (= 0.72.9)
+ - React-Fabric/butter (= 0.72.9)
+ - React-Fabric/componentregistry (= 0.72.9)
+ - React-Fabric/componentregistrynative (= 0.72.9)
+ - React-Fabric/components (= 0.72.9)
+ - React-Fabric/config (= 0.72.9)
+ - React-Fabric/core (= 0.72.9)
+ - React-Fabric/debug_renderer (= 0.72.9)
+ - React-Fabric/imagemanager (= 0.72.9)
+ - React-Fabric/leakchecker (= 0.72.9)
+ - React-Fabric/mapbuffer (= 0.72.9)
+ - React-Fabric/mounting (= 0.72.9)
+ - React-Fabric/scheduler (= 0.72.9)
+ - React-Fabric/telemetry (= 0.72.9)
+ - React-Fabric/templateprocessor (= 0.72.9)
+ - React-Fabric/textlayoutmanager (= 0.72.9)
+ - React-Fabric/uimanager (= 0.72.9)
+ - React-graphics (= 0.72.9)
+ - React-jsi (= 0.72.9)
+ - React-jsiexecutor (= 0.72.9)
- React-logger
- React-runtimescheduler
- React-utils
- - ReactCommon/turbomodule/core (= 0.72.4)
- - React-Fabric/animations (0.72.4):
+ - ReactCommon/turbomodule/core (= 0.72.9)
+ - React-Fabric/animations (0.72.9):
- DoubleConversion
- glog
- hermes-engine
- RCT-Folly/Fabric (= 2021.07.22.00)
- - RCTRequired (= 0.72.4)
- - RCTTypeSafety (= 0.72.4)
+ - RCTRequired (= 0.72.9)
+ - RCTTypeSafety (= 0.72.9)
- React-Core
- React-debug
- - React-graphics (= 0.72.4)
- - React-jsi (= 0.72.4)
- - React-jsiexecutor (= 0.72.4)
+ - React-graphics (= 0.72.9)
+ - React-jsi (= 0.72.9)
+ - React-jsiexecutor (= 0.72.9)
- React-logger
- React-runtimescheduler
- React-utils
- - ReactCommon/turbomodule/core (= 0.72.4)
- - React-Fabric/attributedstring (0.72.4):
+ - ReactCommon/turbomodule/core (= 0.72.9)
+ - React-Fabric/attributedstring (0.72.9):
- DoubleConversion
- glog
- hermes-engine
- RCT-Folly/Fabric (= 2021.07.22.00)
- - RCTRequired (= 0.72.4)
- - RCTTypeSafety (= 0.72.4)
+ - RCTRequired (= 0.72.9)
+ - RCTTypeSafety (= 0.72.9)
- React-Core
- React-debug
- - React-graphics (= 0.72.4)
- - React-jsi (= 0.72.4)
- - React-jsiexecutor (= 0.72.4)
+ - React-graphics (= 0.72.9)
+ - React-jsi (= 0.72.9)
+ - React-jsiexecutor (= 0.72.9)
- React-logger
- React-runtimescheduler
- React-utils
- - ReactCommon/turbomodule/core (= 0.72.4)
- - React-Fabric/butter (0.72.4):
+ - ReactCommon/turbomodule/core (= 0.72.9)
+ - React-Fabric/butter (0.72.9):
- DoubleConversion
- glog
- hermes-engine
- RCT-Folly/Fabric (= 2021.07.22.00)
- - RCTRequired (= 0.72.4)
- - RCTTypeSafety (= 0.72.4)
+ - RCTRequired (= 0.72.9)
+ - RCTTypeSafety (= 0.72.9)
- React-Core
- React-debug
- - React-graphics (= 0.72.4)
- - React-jsi (= 0.72.4)
- - React-jsiexecutor (= 0.72.4)
+ - React-graphics (= 0.72.9)
+ - React-jsi (= 0.72.9)
+ - React-jsiexecutor (= 0.72.9)
- React-logger
- React-runtimescheduler
- React-utils
- - ReactCommon/turbomodule/core (= 0.72.4)
- - React-Fabric/componentregistry (0.72.4):
+ - ReactCommon/turbomodule/core (= 0.72.9)
+ - React-Fabric/componentregistry (0.72.9):
- DoubleConversion
- glog
- hermes-engine
- RCT-Folly/Fabric (= 2021.07.22.00)
- - RCTRequired (= 0.72.4)
- - RCTTypeSafety (= 0.72.4)
+ - RCTRequired (= 0.72.9)
+ - RCTTypeSafety (= 0.72.9)
- React-Core
- React-debug
- - React-graphics (= 0.72.4)
- - React-jsi (= 0.72.4)
- - React-jsiexecutor (= 0.72.4)
+ - React-graphics (= 0.72.9)
+ - React-jsi (= 0.72.9)
+ - React-jsiexecutor (= 0.72.9)
- React-logger
- React-runtimescheduler
- React-utils
- - ReactCommon/turbomodule/core (= 0.72.4)
- - React-Fabric/componentregistrynative (0.72.4):
+ - ReactCommon/turbomodule/core (= 0.72.9)
+ - React-Fabric/componentregistrynative (0.72.9):
- DoubleConversion
- glog
- hermes-engine
- RCT-Folly/Fabric (= 2021.07.22.00)
- - RCTRequired (= 0.72.4)
- - RCTTypeSafety (= 0.72.4)
+ - RCTRequired (= 0.72.9)
+ - RCTTypeSafety (= 0.72.9)
- React-Core
- React-debug
- - React-graphics (= 0.72.4)
- - React-jsi (= 0.72.4)
- - React-jsiexecutor (= 0.72.4)
+ - React-graphics (= 0.72.9)
+ - React-jsi (= 0.72.9)
+ - React-jsiexecutor (= 0.72.9)
- React-logger
- React-runtimescheduler
- React-utils
- - ReactCommon/turbomodule/core (= 0.72.4)
- - React-Fabric/components (0.72.4):
+ - ReactCommon/turbomodule/core (= 0.72.9)
+ - React-Fabric/components (0.72.9):
- DoubleConversion
- glog
- hermes-engine
- RCT-Folly/Fabric (= 2021.07.22.00)
- - RCTRequired (= 0.72.4)
- - RCTTypeSafety (= 0.72.4)
+ - RCTRequired (= 0.72.9)
+ - RCTTypeSafety (= 0.72.9)
- React-Core
- React-debug
- - React-Fabric/components/activityindicator (= 0.72.4)
- - React-Fabric/components/image (= 0.72.4)
- - React-Fabric/components/inputaccessory (= 0.72.4)
- - React-Fabric/components/legacyviewmanagerinterop (= 0.72.4)
- - React-Fabric/components/modal (= 0.72.4)
- - React-Fabric/components/rncore (= 0.72.4)
- - React-Fabric/components/root (= 0.72.4)
- - React-Fabric/components/safeareaview (= 0.72.4)
- - React-Fabric/components/scrollview (= 0.72.4)
- - React-Fabric/components/text (= 0.72.4)
- - React-Fabric/components/textinput (= 0.72.4)
- - React-Fabric/components/unimplementedview (= 0.72.4)
- - React-Fabric/components/view (= 0.72.4)
- - React-graphics (= 0.72.4)
- - React-jsi (= 0.72.4)
- - React-jsiexecutor (= 0.72.4)
+ - React-Fabric/components/activityindicator (= 0.72.9)
+ - React-Fabric/components/image (= 0.72.9)
+ - React-Fabric/components/inputaccessory (= 0.72.9)
+ - React-Fabric/components/legacyviewmanagerinterop (= 0.72.9)
+ - React-Fabric/components/modal (= 0.72.9)
+ - React-Fabric/components/rncore (= 0.72.9)
+ - React-Fabric/components/root (= 0.72.9)
+ - React-Fabric/components/safeareaview (= 0.72.9)
+ - React-Fabric/components/scrollview (= 0.72.9)
+ - React-Fabric/components/text (= 0.72.9)
+ - React-Fabric/components/textinput (= 0.72.9)
+ - React-Fabric/components/unimplementedview (= 0.72.9)
+ - React-Fabric/components/view (= 0.72.9)
+ - React-graphics (= 0.72.9)
+ - React-jsi (= 0.72.9)
+ - React-jsiexecutor (= 0.72.9)
- React-logger
- React-runtimescheduler
- React-utils
- - ReactCommon/turbomodule/core (= 0.72.4)
- - React-Fabric/components/activityindicator (0.72.4):
+ - ReactCommon/turbomodule/core (= 0.72.9)
+ - React-Fabric/components/activityindicator (0.72.9):
- DoubleConversion
- glog
- hermes-engine
- RCT-Folly/Fabric (= 2021.07.22.00)
- - RCTRequired (= 0.72.4)
- - RCTTypeSafety (= 0.72.4)
+ - RCTRequired (= 0.72.9)
+ - RCTTypeSafety (= 0.72.9)
- React-Core
- React-debug
- - React-graphics (= 0.72.4)
- - React-jsi (= 0.72.4)
- - React-jsiexecutor (= 0.72.4)
+ - React-graphics (= 0.72.9)
+ - React-jsi (= 0.72.9)
+ - React-jsiexecutor (= 0.72.9)
- React-logger
- React-runtimescheduler
- React-utils
- - ReactCommon/turbomodule/core (= 0.72.4)
- - React-Fabric/components/image (0.72.4):
+ - ReactCommon/turbomodule/core (= 0.72.9)
+ - React-Fabric/components/image (0.72.9):
- DoubleConversion
- glog
- hermes-engine
- RCT-Folly/Fabric (= 2021.07.22.00)
- - RCTRequired (= 0.72.4)
- - RCTTypeSafety (= 0.72.4)
+ - RCTRequired (= 0.72.9)
+ - RCTTypeSafety (= 0.72.9)
- React-Core
- React-debug
- - React-graphics (= 0.72.4)
- - React-jsi (= 0.72.4)
- - React-jsiexecutor (= 0.72.4)
+ - React-graphics (= 0.72.9)
+ - React-jsi (= 0.72.9)
+ - React-jsiexecutor (= 0.72.9)
- React-logger
- React-runtimescheduler
- React-utils
- - ReactCommon/turbomodule/core (= 0.72.4)
- - React-Fabric/components/inputaccessory (0.72.4):
+ - ReactCommon/turbomodule/core (= 0.72.9)
+ - React-Fabric/components/inputaccessory (0.72.9):
- DoubleConversion
- glog
- hermes-engine
- RCT-Folly/Fabric (= 2021.07.22.00)
- - RCTRequired (= 0.72.4)
- - RCTTypeSafety (= 0.72.4)
+ - RCTRequired (= 0.72.9)
+ - RCTTypeSafety (= 0.72.9)
- React-Core
- React-debug
- - React-graphics (= 0.72.4)
- - React-jsi (= 0.72.4)
- - React-jsiexecutor (= 0.72.4)
+ - React-graphics (= 0.72.9)
+ - React-jsi (= 0.72.9)
+ - React-jsiexecutor (= 0.72.9)
- React-logger
- React-runtimescheduler
- React-utils
- - ReactCommon/turbomodule/core (= 0.72.4)
- - React-Fabric/components/legacyviewmanagerinterop (0.72.4):
+ - ReactCommon/turbomodule/core (= 0.72.9)
+ - React-Fabric/components/legacyviewmanagerinterop (0.72.9):
- DoubleConversion
- glog
- hermes-engine
- RCT-Folly/Fabric (= 2021.07.22.00)
- - RCTRequired (= 0.72.4)
- - RCTTypeSafety (= 0.72.4)
+ - RCTRequired (= 0.72.9)
+ - RCTTypeSafety (= 0.72.9)
- React-Core
- React-debug
- - React-graphics (= 0.72.4)
- - React-jsi (= 0.72.4)
- - React-jsiexecutor (= 0.72.4)
+ - React-graphics (= 0.72.9)
+ - React-jsi (= 0.72.9)
+ - React-jsiexecutor (= 0.72.9)
- React-logger
- React-runtimescheduler
- React-utils
- - ReactCommon/turbomodule/core (= 0.72.4)
- - React-Fabric/components/modal (0.72.4):
+ - ReactCommon/turbomodule/core (= 0.72.9)
+ - React-Fabric/components/modal (0.72.9):
- DoubleConversion
- glog
- hermes-engine
- RCT-Folly/Fabric (= 2021.07.22.00)
- - RCTRequired (= 0.72.4)
- - RCTTypeSafety (= 0.72.4)
+ - RCTRequired (= 0.72.9)
+ - RCTTypeSafety (= 0.72.9)
- React-Core
- React-debug
- - React-graphics (= 0.72.4)
- - React-jsi (= 0.72.4)
- - React-jsiexecutor (= 0.72.4)
+ - React-graphics (= 0.72.9)
+ - React-jsi (= 0.72.9)
+ - React-jsiexecutor (= 0.72.9)
- React-logger
- React-runtimescheduler
- React-utils
- - ReactCommon/turbomodule/core (= 0.72.4)
- - React-Fabric/components/rncore (0.72.4):
+ - ReactCommon/turbomodule/core (= 0.72.9)
+ - React-Fabric/components/rncore (0.72.9):
- DoubleConversion
- glog
- hermes-engine
- RCT-Folly/Fabric (= 2021.07.22.00)
- - RCTRequired (= 0.72.4)
- - RCTTypeSafety (= 0.72.4)
+ - RCTRequired (= 0.72.9)
+ - RCTTypeSafety (= 0.72.9)
- React-Core
- React-debug
- - React-graphics (= 0.72.4)
- - React-jsi (= 0.72.4)
- - React-jsiexecutor (= 0.72.4)
+ - React-graphics (= 0.72.9)
+ - React-jsi (= 0.72.9)
+ - React-jsiexecutor (= 0.72.9)
- React-logger
- React-runtimescheduler
- React-utils
- - ReactCommon/turbomodule/core (= 0.72.4)
- - React-Fabric/components/root (0.72.4):
+ - ReactCommon/turbomodule/core (= 0.72.9)
+ - React-Fabric/components/root (0.72.9):
- DoubleConversion
- glog
- hermes-engine
- RCT-Folly/Fabric (= 2021.07.22.00)
- - RCTRequired (= 0.72.4)
- - RCTTypeSafety (= 0.72.4)
+ - RCTRequired (= 0.72.9)
+ - RCTTypeSafety (= 0.72.9)
- React-Core
- React-debug
- - React-graphics (= 0.72.4)
- - React-jsi (= 0.72.4)
- - React-jsiexecutor (= 0.72.4)
+ - React-graphics (= 0.72.9)
+ - React-jsi (= 0.72.9)
+ - React-jsiexecutor (= 0.72.9)
- React-logger
- React-runtimescheduler
- React-utils
- - ReactCommon/turbomodule/core (= 0.72.4)
- - React-Fabric/components/safeareaview (0.72.4):
+ - ReactCommon/turbomodule/core (= 0.72.9)
+ - React-Fabric/components/safeareaview (0.72.9):
- DoubleConversion
- glog
- hermes-engine
- RCT-Folly/Fabric (= 2021.07.22.00)
- - RCTRequired (= 0.72.4)
- - RCTTypeSafety (= 0.72.4)
+ - RCTRequired (= 0.72.9)
+ - RCTTypeSafety (= 0.72.9)
- React-Core
- React-debug
- - React-graphics (= 0.72.4)
- - React-jsi (= 0.72.4)
- - React-jsiexecutor (= 0.72.4)
+ - React-graphics (= 0.72.9)
+ - React-jsi (= 0.72.9)
+ - React-jsiexecutor (= 0.72.9)
- React-logger
- React-runtimescheduler
- React-utils
- - ReactCommon/turbomodule/core (= 0.72.4)
- - React-Fabric/components/scrollview (0.72.4):
+ - ReactCommon/turbomodule/core (= 0.72.9)
+ - React-Fabric/components/scrollview (0.72.9):
- DoubleConversion
- glog
- hermes-engine
- RCT-Folly/Fabric (= 2021.07.22.00)
- - RCTRequired (= 0.72.4)
- - RCTTypeSafety (= 0.72.4)
+ - RCTRequired (= 0.72.9)
+ - RCTTypeSafety (= 0.72.9)
- React-Core
- React-debug
- - React-graphics (= 0.72.4)
- - React-jsi (= 0.72.4)
- - React-jsiexecutor (= 0.72.4)
+ - React-graphics (= 0.72.9)
+ - React-jsi (= 0.72.9)
+ - React-jsiexecutor (= 0.72.9)
- React-logger
- React-runtimescheduler
- React-utils
- - ReactCommon/turbomodule/core (= 0.72.4)
- - React-Fabric/components/text (0.72.4):
+ - ReactCommon/turbomodule/core (= 0.72.9)
+ - React-Fabric/components/text (0.72.9):
- DoubleConversion
- glog
- hermes-engine
- RCT-Folly/Fabric (= 2021.07.22.00)
- - RCTRequired (= 0.72.4)
- - RCTTypeSafety (= 0.72.4)
+ - RCTRequired (= 0.72.9)
+ - RCTTypeSafety (= 0.72.9)
- React-Core
- React-debug
- - React-graphics (= 0.72.4)
- - React-jsi (= 0.72.4)
- - React-jsiexecutor (= 0.72.4)
+ - React-graphics (= 0.72.9)
+ - React-jsi (= 0.72.9)
+ - React-jsiexecutor (= 0.72.9)
- React-logger
- React-runtimescheduler
- React-utils
- - ReactCommon/turbomodule/core (= 0.72.4)
- - React-Fabric/components/textinput (0.72.4):
+ - ReactCommon/turbomodule/core (= 0.72.9)
+ - React-Fabric/components/textinput (0.72.9):
- DoubleConversion
- glog
- hermes-engine
- RCT-Folly/Fabric (= 2021.07.22.00)
- - RCTRequired (= 0.72.4)
- - RCTTypeSafety (= 0.72.4)
+ - RCTRequired (= 0.72.9)
+ - RCTTypeSafety (= 0.72.9)
- React-Core
- React-debug
- - React-graphics (= 0.72.4)
- - React-jsi (= 0.72.4)
- - React-jsiexecutor (= 0.72.4)
+ - React-graphics (= 0.72.9)
+ - React-jsi (= 0.72.9)
+ - React-jsiexecutor (= 0.72.9)
- React-logger
- React-runtimescheduler
- React-utils
- - ReactCommon/turbomodule/core (= 0.72.4)
- - React-Fabric/components/unimplementedview (0.72.4):
+ - ReactCommon/turbomodule/core (= 0.72.9)
+ - React-Fabric/components/unimplementedview (0.72.9):
- DoubleConversion
- glog
- hermes-engine
- RCT-Folly/Fabric (= 2021.07.22.00)
- - RCTRequired (= 0.72.4)
- - RCTTypeSafety (= 0.72.4)
+ - RCTRequired (= 0.72.9)
+ - RCTTypeSafety (= 0.72.9)
- React-Core
- React-debug
- - React-graphics (= 0.72.4)
- - React-jsi (= 0.72.4)
- - React-jsiexecutor (= 0.72.4)
+ - React-graphics (= 0.72.9)
+ - React-jsi (= 0.72.9)
+ - React-jsiexecutor (= 0.72.9)
- React-logger
- React-runtimescheduler
- React-utils
- - ReactCommon/turbomodule/core (= 0.72.4)
- - React-Fabric/components/view (0.72.4):
+ - ReactCommon/turbomodule/core (= 0.72.9)
+ - React-Fabric/components/view (0.72.9):
- DoubleConversion
- glog
- hermes-engine
- RCT-Folly/Fabric (= 2021.07.22.00)
- - RCTRequired (= 0.72.4)
- - RCTTypeSafety (= 0.72.4)
+ - RCTRequired (= 0.72.9)
+ - RCTTypeSafety (= 0.72.9)
- React-Core
- React-debug
- - React-graphics (= 0.72.4)
- - React-jsi (= 0.72.4)
- - React-jsiexecutor (= 0.72.4)
+ - React-graphics (= 0.72.9)
+ - React-jsi (= 0.72.9)
+ - React-jsiexecutor (= 0.72.9)
- React-logger
- React-runtimescheduler
- React-utils
- - ReactCommon/turbomodule/core (= 0.72.4)
+ - ReactCommon/turbomodule/core (= 0.72.9)
- Yoga
- - React-Fabric/config (0.72.4):
+ - React-Fabric/config (0.72.9):
- DoubleConversion
- glog
- hermes-engine
- RCT-Folly/Fabric (= 2021.07.22.00)
- - RCTRequired (= 0.72.4)
- - RCTTypeSafety (= 0.72.4)
+ - RCTRequired (= 0.72.9)
+ - RCTTypeSafety (= 0.72.9)
- React-Core
- React-debug
- - React-graphics (= 0.72.4)
- - React-jsi (= 0.72.4)
- - React-jsiexecutor (= 0.72.4)
+ - React-graphics (= 0.72.9)
+ - React-jsi (= 0.72.9)
+ - React-jsiexecutor (= 0.72.9)
- React-logger
- React-runtimescheduler
- React-utils
- - ReactCommon/turbomodule/core (= 0.72.4)
- - React-Fabric/core (0.72.4):
+ - ReactCommon/turbomodule/core (= 0.72.9)
+ - React-Fabric/core (0.72.9):
- DoubleConversion
- glog
- hermes-engine
- RCT-Folly/Fabric (= 2021.07.22.00)
- - RCTRequired (= 0.72.4)
- - RCTTypeSafety (= 0.72.4)
+ - RCTRequired (= 0.72.9)
+ - RCTTypeSafety (= 0.72.9)
- React-Core
- React-debug
- - React-graphics (= 0.72.4)
- - React-jsi (= 0.72.4)
- - React-jsiexecutor (= 0.72.4)
+ - React-graphics (= 0.72.9)
+ - React-jsi (= 0.72.9)
+ - React-jsiexecutor (= 0.72.9)
- React-logger
- React-runtimescheduler
- React-utils
- - ReactCommon/turbomodule/core (= 0.72.4)
- - React-Fabric/debug_renderer (0.72.4):
+ - ReactCommon/turbomodule/core (= 0.72.9)
+ - React-Fabric/debug_renderer (0.72.9):
- DoubleConversion
- glog
- hermes-engine
- RCT-Folly/Fabric (= 2021.07.22.00)
- - RCTRequired (= 0.72.4)
- - RCTTypeSafety (= 0.72.4)
+ - RCTRequired (= 0.72.9)
+ - RCTTypeSafety (= 0.72.9)
- React-Core
- React-debug
- - React-graphics (= 0.72.4)
- - React-jsi (= 0.72.4)
- - React-jsiexecutor (= 0.72.4)
+ - React-graphics (= 0.72.9)
+ - React-jsi (= 0.72.9)
+ - React-jsiexecutor (= 0.72.9)
- React-logger
- React-runtimescheduler
- React-utils
- - ReactCommon/turbomodule/core (= 0.72.4)
- - React-Fabric/imagemanager (0.72.4):
+ - ReactCommon/turbomodule/core (= 0.72.9)
+ - React-Fabric/imagemanager (0.72.9):
- DoubleConversion
- glog
- hermes-engine
- RCT-Folly/Fabric (= 2021.07.22.00)
- - RCTRequired (= 0.72.4)
- - RCTTypeSafety (= 0.72.4)
+ - RCTRequired (= 0.72.9)
+ - RCTTypeSafety (= 0.72.9)
- React-Core
- React-debug
- - React-graphics (= 0.72.4)
- - React-jsi (= 0.72.4)
- - React-jsiexecutor (= 0.72.4)
+ - React-graphics (= 0.72.9)
+ - React-jsi (= 0.72.9)
+ - React-jsiexecutor (= 0.72.9)
- React-logger
- React-runtimescheduler
- React-utils
- - ReactCommon/turbomodule/core (= 0.72.4)
- - React-Fabric/leakchecker (0.72.4):
+ - ReactCommon/turbomodule/core (= 0.72.9)
+ - React-Fabric/leakchecker (0.72.9):
- DoubleConversion
- glog
- hermes-engine
- RCT-Folly/Fabric (= 2021.07.22.00)
- - RCTRequired (= 0.72.4)
- - RCTTypeSafety (= 0.72.4)
+ - RCTRequired (= 0.72.9)
+ - RCTTypeSafety (= 0.72.9)
- React-Core
- React-debug
- - React-graphics (= 0.72.4)
- - React-jsi (= 0.72.4)
- - React-jsiexecutor (= 0.72.4)
+ - React-graphics (= 0.72.9)
+ - React-jsi (= 0.72.9)
+ - React-jsiexecutor (= 0.72.9)
- React-logger
- React-runtimescheduler
- React-utils
- - ReactCommon/turbomodule/core (= 0.72.4)
- - React-Fabric/mapbuffer (0.72.4):
+ - ReactCommon/turbomodule/core (= 0.72.9)
+ - React-Fabric/mapbuffer (0.72.9):
- DoubleConversion
- glog
- hermes-engine
- RCT-Folly/Fabric (= 2021.07.22.00)
- - RCTRequired (= 0.72.4)
- - RCTTypeSafety (= 0.72.4)
+ - RCTRequired (= 0.72.9)
+ - RCTTypeSafety (= 0.72.9)
- React-Core
- React-debug
- - React-graphics (= 0.72.4)
- - React-jsi (= 0.72.4)
- - React-jsiexecutor (= 0.72.4)
+ - React-graphics (= 0.72.9)
+ - React-jsi (= 0.72.9)
+ - React-jsiexecutor (= 0.72.9)
- React-logger
- React-runtimescheduler
- React-utils
- - ReactCommon/turbomodule/core (= 0.72.4)
- - React-Fabric/mounting (0.72.4):
+ - ReactCommon/turbomodule/core (= 0.72.9)
+ - React-Fabric/mounting (0.72.9):
- DoubleConversion
- glog
- hermes-engine
- RCT-Folly/Fabric (= 2021.07.22.00)
- - RCTRequired (= 0.72.4)
- - RCTTypeSafety (= 0.72.4)
+ - RCTRequired (= 0.72.9)
+ - RCTTypeSafety (= 0.72.9)
- React-Core
- React-debug
- - React-graphics (= 0.72.4)
- - React-jsi (= 0.72.4)
- - React-jsiexecutor (= 0.72.4)
+ - React-graphics (= 0.72.9)
+ - React-jsi (= 0.72.9)
+ - React-jsiexecutor (= 0.72.9)
- React-logger
- React-runtimescheduler
- React-utils
- - ReactCommon/turbomodule/core (= 0.72.4)
- - React-Fabric/scheduler (0.72.4):
+ - ReactCommon/turbomodule/core (= 0.72.9)
+ - React-Fabric/scheduler (0.72.9):
- DoubleConversion
- glog
- hermes-engine
- RCT-Folly/Fabric (= 2021.07.22.00)
- - RCTRequired (= 0.72.4)
- - RCTTypeSafety (= 0.72.4)
+ - RCTRequired (= 0.72.9)
+ - RCTTypeSafety (= 0.72.9)
- React-Core
- React-debug
- - React-graphics (= 0.72.4)
- - React-jsi (= 0.72.4)
- - React-jsiexecutor (= 0.72.4)
+ - React-graphics (= 0.72.9)
+ - React-jsi (= 0.72.9)
+ - React-jsiexecutor (= 0.72.9)
- React-logger
- React-runtimescheduler
- React-utils
- - ReactCommon/turbomodule/core (= 0.72.4)
- - React-Fabric/telemetry (0.72.4):
+ - ReactCommon/turbomodule/core (= 0.72.9)
+ - React-Fabric/telemetry (0.72.9):
- DoubleConversion
- glog
- hermes-engine
- RCT-Folly/Fabric (= 2021.07.22.00)
- - RCTRequired (= 0.72.4)
- - RCTTypeSafety (= 0.72.4)
+ - RCTRequired (= 0.72.9)
+ - RCTTypeSafety (= 0.72.9)
- React-Core
- React-debug
- - React-graphics (= 0.72.4)
- - React-jsi (= 0.72.4)
- - React-jsiexecutor (= 0.72.4)
+ - React-graphics (= 0.72.9)
+ - React-jsi (= 0.72.9)
+ - React-jsiexecutor (= 0.72.9)
- React-logger
- React-runtimescheduler
- React-utils
- - ReactCommon/turbomodule/core (= 0.72.4)
- - React-Fabric/templateprocessor (0.72.4):
+ - ReactCommon/turbomodule/core (= 0.72.9)
+ - React-Fabric/templateprocessor (0.72.9):
- DoubleConversion
- glog
- hermes-engine
- RCT-Folly/Fabric (= 2021.07.22.00)
- - RCTRequired (= 0.72.4)
- - RCTTypeSafety (= 0.72.4)
+ - RCTRequired (= 0.72.9)
+ - RCTTypeSafety (= 0.72.9)
- React-Core
- React-debug
- - React-graphics (= 0.72.4)
- - React-jsi (= 0.72.4)
- - React-jsiexecutor (= 0.72.4)
+ - React-graphics (= 0.72.9)
+ - React-jsi (= 0.72.9)
+ - React-jsiexecutor (= 0.72.9)
- React-logger
- React-runtimescheduler
- React-utils
- - ReactCommon/turbomodule/core (= 0.72.4)
- - React-Fabric/textlayoutmanager (0.72.4):
+ - ReactCommon/turbomodule/core (= 0.72.9)
+ - React-Fabric/textlayoutmanager (0.72.9):
- DoubleConversion
- glog
- hermes-engine
- RCT-Folly/Fabric (= 2021.07.22.00)
- - RCTRequired (= 0.72.4)
- - RCTTypeSafety (= 0.72.4)
+ - RCTRequired (= 0.72.9)
+ - RCTTypeSafety (= 0.72.9)
- React-Core
- React-debug
- React-Fabric/uimanager
- - React-graphics (= 0.72.4)
- - React-jsi (= 0.72.4)
- - React-jsiexecutor (= 0.72.4)
+ - React-graphics (= 0.72.9)
+ - React-jsi (= 0.72.9)
+ - React-jsiexecutor (= 0.72.9)
- React-logger
- React-runtimescheduler
- React-utils
- - ReactCommon/turbomodule/core (= 0.72.4)
- - React-Fabric/uimanager (0.72.4):
+ - ReactCommon/turbomodule/core (= 0.72.9)
+ - React-Fabric/uimanager (0.72.9):
- DoubleConversion
- glog
- hermes-engine
- RCT-Folly/Fabric (= 2021.07.22.00)
- - RCTRequired (= 0.72.4)
- - RCTTypeSafety (= 0.72.4)
+ - RCTRequired (= 0.72.9)
+ - RCTTypeSafety (= 0.72.9)
- React-Core
- React-debug
- - React-graphics (= 0.72.4)
- - React-jsi (= 0.72.4)
- - React-jsiexecutor (= 0.72.4)
+ - React-graphics (= 0.72.9)
+ - React-jsi (= 0.72.9)
+ - React-jsiexecutor (= 0.72.9)
- React-logger
- React-runtimescheduler
- React-utils
- - ReactCommon/turbomodule/core (= 0.72.4)
- - React-graphics (0.72.4):
+ - ReactCommon/turbomodule/core (= 0.72.9)
+ - React-graphics (0.72.9):
- glog
- RCT-Folly/Fabric (= 2021.07.22.00)
- - React-Core/Default (= 0.72.4)
- - React-hermes (0.72.4):
+ - React-Core/Default (= 0.72.9)
+ - React-hermes (0.72.9):
- DoubleConversion
- glog
- hermes-engine
- RCT-Folly (= 2021.07.22.00)
- RCT-Folly/Futures (= 2021.07.22.00)
- - React-cxxreact (= 0.72.4)
+ - React-cxxreact (= 0.72.9)
- React-jsi
- - React-jsiexecutor (= 0.72.4)
- - React-jsinspector (= 0.72.4)
- - React-perflogger (= 0.72.4)
- - React-ImageManager (0.72.4):
+ - React-jsiexecutor (= 0.72.9)
+ - React-jsinspector (= 0.72.9)
+ - React-perflogger (= 0.72.9)
+ - React-ImageManager (0.72.9):
- glog
- RCT-Folly/Fabric
- React-Core/Default
@@ -883,24 +939,24 @@ PODS:
- React-Fabric
- React-RCTImage
- React-utils
- - React-jsi (0.72.4):
+ - React-jsi (0.72.9):
- boost (= 1.76.0)
- DoubleConversion
- glog
- hermes-engine
- RCT-Folly (= 2021.07.22.00)
- - React-jsiexecutor (0.72.4):
+ - React-jsiexecutor (0.72.9):
- DoubleConversion
- glog
- hermes-engine
- RCT-Folly (= 2021.07.22.00)
- - React-cxxreact (= 0.72.4)
- - React-jsi (= 0.72.4)
- - React-perflogger (= 0.72.4)
- - React-jsinspector (0.72.4)
- - React-logger (0.72.4):
+ - React-cxxreact (= 0.72.9)
+ - React-jsi (= 0.72.9)
+ - React-perflogger (= 0.72.9)
+ - React-jsinspector (0.72.9)
+ - React-logger (0.72.9):
- glog
- - React-NativeModulesApple (0.72.4):
+ - React-NativeModulesApple (0.72.9):
- hermes-engine
- React-callinvoker
- React-Core
@@ -909,17 +965,17 @@ PODS:
- React-runtimeexecutor
- ReactCommon/turbomodule/bridging
- ReactCommon/turbomodule/core
- - React-perflogger (0.72.4)
- - React-RCTActionSheet (0.72.4):
- - React-Core/RCTActionSheetHeaders (= 0.72.4)
- - React-RCTAnimation (0.72.4):
+ - React-perflogger (0.72.9)
+ - React-RCTActionSheet (0.72.9):
+ - React-Core/RCTActionSheetHeaders (= 0.72.9)
+ - React-RCTAnimation (0.72.9):
- RCT-Folly (= 2021.07.22.00)
- - RCTTypeSafety (= 0.72.4)
- - React-Codegen (= 0.72.4)
- - React-Core/RCTAnimationHeaders (= 0.72.4)
- - React-jsi (= 0.72.4)
- - ReactCommon/turbomodule/core (= 0.72.4)
- - React-RCTAppDelegate (0.72.4):
+ - RCTTypeSafety (= 0.72.9)
+ - React-Codegen (= 0.72.9)
+ - React-Core/RCTAnimationHeaders (= 0.72.9)
+ - React-jsi (= 0.72.9)
+ - ReactCommon/turbomodule/core (= 0.72.9)
+ - React-RCTAppDelegate (0.72.9):
- RCT-Folly
- RCTRequired
- RCTTypeSafety
@@ -931,78 +987,78 @@ PODS:
- React-RCTNetwork
- React-runtimescheduler
- ReactCommon/turbomodule/core
- - React-RCTBlob (0.72.4):
+ - React-RCTBlob (0.72.9):
- hermes-engine
- RCT-Folly (= 2021.07.22.00)
- - React-Codegen (= 0.72.4)
- - React-Core/RCTBlobHeaders (= 0.72.4)
- - React-Core/RCTWebSocket (= 0.72.4)
- - React-jsi (= 0.72.4)
- - React-RCTNetwork (= 0.72.4)
- - ReactCommon/turbomodule/core (= 0.72.4)
- - React-RCTFabric (0.72.4):
+ - React-Codegen (= 0.72.9)
+ - React-Core/RCTBlobHeaders (= 0.72.9)
+ - React-Core/RCTWebSocket (= 0.72.9)
+ - React-jsi (= 0.72.9)
+ - React-RCTNetwork (= 0.72.9)
+ - ReactCommon/turbomodule/core (= 0.72.9)
+ - React-RCTFabric (0.72.9):
- glog
- hermes-engine
- RCT-Folly/Fabric (= 2021.07.22.00)
- - React-Core (= 0.72.4)
- - React-Fabric (= 0.72.4)
+ - React-Core (= 0.72.9)
+ - React-Fabric (= 0.72.9)
- React-ImageManager
- - React-RCTImage (= 0.72.4)
+ - React-RCTImage (= 0.72.9)
- React-RCTText
- React-runtimescheduler
- React-utils
- Yoga
- - React-RCTImage (0.72.4):
+ - React-RCTImage (0.72.9):
- RCT-Folly (= 2021.07.22.00)
- - RCTTypeSafety (= 0.72.4)
- - React-Codegen (= 0.72.4)
- - React-Core/RCTImageHeaders (= 0.72.4)
- - React-jsi (= 0.72.4)
- - React-RCTNetwork (= 0.72.4)
- - ReactCommon/turbomodule/core (= 0.72.4)
- - React-RCTLinking (0.72.4):
- - React-Codegen (= 0.72.4)
- - React-Core/RCTLinkingHeaders (= 0.72.4)
- - React-jsi (= 0.72.4)
- - ReactCommon/turbomodule/core (= 0.72.4)
- - React-RCTNetwork (0.72.4):
+ - RCTTypeSafety (= 0.72.9)
+ - React-Codegen (= 0.72.9)
+ - React-Core/RCTImageHeaders (= 0.72.9)
+ - React-jsi (= 0.72.9)
+ - React-RCTNetwork (= 0.72.9)
+ - ReactCommon/turbomodule/core (= 0.72.9)
+ - React-RCTLinking (0.72.9):
+ - React-Codegen (= 0.72.9)
+ - React-Core/RCTLinkingHeaders (= 0.72.9)
+ - React-jsi (= 0.72.9)
+ - ReactCommon/turbomodule/core (= 0.72.9)
+ - React-RCTNetwork (0.72.9):
- RCT-Folly (= 2021.07.22.00)
- - RCTTypeSafety (= 0.72.4)
- - React-Codegen (= 0.72.4)
- - React-Core/RCTNetworkHeaders (= 0.72.4)
- - React-jsi (= 0.72.4)
- - ReactCommon/turbomodule/core (= 0.72.4)
- - React-RCTPushNotification (0.72.4):
- - RCTTypeSafety (= 0.72.4)
- - React-Codegen (= 0.72.4)
- - React-Core/RCTPushNotificationHeaders (= 0.72.4)
- - React-jsi (= 0.72.4)
- - ReactCommon/turbomodule/core (= 0.72.4)
- - React-RCTSettings (0.72.4):
+ - RCTTypeSafety (= 0.72.9)
+ - React-Codegen (= 0.72.9)
+ - React-Core/RCTNetworkHeaders (= 0.72.9)
+ - React-jsi (= 0.72.9)
+ - ReactCommon/turbomodule/core (= 0.72.9)
+ - React-RCTPushNotification (0.72.9):
+ - RCTTypeSafety (= 0.72.9)
+ - React-Codegen (= 0.72.9)
+ - React-Core/RCTPushNotificationHeaders (= 0.72.9)
+ - React-jsi (= 0.72.9)
+ - ReactCommon/turbomodule/core (= 0.72.9)
+ - React-RCTSettings (0.72.9):
- RCT-Folly (= 2021.07.22.00)
- - RCTTypeSafety (= 0.72.4)
- - React-Codegen (= 0.72.4)
- - React-Core/RCTSettingsHeaders (= 0.72.4)
- - React-jsi (= 0.72.4)
- - ReactCommon/turbomodule/core (= 0.72.4)
- - React-RCTTest (0.72.4):
+ - RCTTypeSafety (= 0.72.9)
+ - React-Codegen (= 0.72.9)
+ - React-Core/RCTSettingsHeaders (= 0.72.9)
+ - React-jsi (= 0.72.9)
+ - ReactCommon/turbomodule/core (= 0.72.9)
+ - React-RCTTest (0.72.9):
- RCT-Folly (= 2021.07.22.00)
- - React-Core (= 0.72.4)
- - React-CoreModules (= 0.72.4)
- - React-jsi (= 0.72.4)
- - ReactCommon/turbomodule/core (= 0.72.4)
- - React-RCTText (0.72.4):
- - React-Core/RCTTextHeaders (= 0.72.4)
- - React-RCTVibration (0.72.4):
+ - React-Core (= 0.72.9)
+ - React-CoreModules (= 0.72.9)
+ - React-jsi (= 0.72.9)
+ - ReactCommon/turbomodule/core (= 0.72.9)
+ - React-RCTText (0.72.9):
+ - React-Core/RCTTextHeaders (= 0.72.9)
+ - React-RCTVibration (0.72.9):
- RCT-Folly (= 2021.07.22.00)
- - React-Codegen (= 0.72.4)
- - React-Core/RCTVibrationHeaders (= 0.72.4)
- - React-jsi (= 0.72.4)
- - ReactCommon/turbomodule/core (= 0.72.4)
- - React-rncore (0.72.4)
- - React-runtimeexecutor (0.72.4):
- - React-jsi (= 0.72.4)
- - React-runtimescheduler (0.72.4):
+ - React-Codegen (= 0.72.9)
+ - React-Core/RCTVibrationHeaders (= 0.72.9)
+ - React-jsi (= 0.72.9)
+ - ReactCommon/turbomodule/core (= 0.72.9)
+ - React-rncore (0.72.9)
+ - React-runtimeexecutor (0.72.9):
+ - React-jsi (= 0.72.9)
+ - React-runtimescheduler (0.72.9):
- glog
- hermes-engine
- RCT-Folly (= 2021.07.22.00)
@@ -1010,11 +1066,11 @@ PODS:
- React-debug
- React-jsi
- React-runtimeexecutor
- - React-utils (0.72.4):
+ - React-utils (0.72.9):
- glog
- RCT-Folly (= 2021.07.22.00)
- React-debug
- - ReactCommon-Samples (0.72.4):
+ - ReactCommon-Samples (0.72.9):
- DoubleConversion
- hermes-engine
- RCT-Folly
@@ -1023,41 +1079,64 @@ PODS:
- React-cxxreact
- React-NativeModulesApple
- ReactCommon/turbomodule/core
- - ReactCommon/turbomodule/bridging (0.72.4):
+ - ReactCommon/turbomodule/bridging (0.72.9):
- DoubleConversion
- glog
- hermes-engine
- RCT-Folly (= 2021.07.22.00)
- - React-callinvoker (= 0.72.4)
- - React-cxxreact (= 0.72.4)
- - React-jsi (= 0.72.4)
- - React-logger (= 0.72.4)
- - React-perflogger (= 0.72.4)
- - ReactCommon/turbomodule/core (0.72.4):
+ - React-callinvoker (= 0.72.9)
+ - React-cxxreact (= 0.72.9)
+ - React-jsi (= 0.72.9)
+ - React-logger (= 0.72.9)
+ - React-perflogger (= 0.72.9)
+ - ReactCommon/turbomodule/core (0.72.9):
- DoubleConversion
- glog
- hermes-engine
- RCT-Folly (= 2021.07.22.00)
- - React-callinvoker (= 0.72.4)
- - React-cxxreact (= 0.72.4)
- - React-jsi (= 0.72.4)
- - React-logger (= 0.72.4)
- - React-perflogger (= 0.72.4)
+ - React-callinvoker (= 0.72.9)
+ - React-cxxreact (= 0.72.9)
+ - React-jsi (= 0.72.9)
+ - React-logger (= 0.72.9)
+ - React-perflogger (= 0.72.9)
- ScreenshotManager (0.0.1):
- RCT-Folly (= 2021.07.22.00)
- React-Core
- SocketRocket (0.6.1)
- Yoga (1.14.0)
+ - YogaKit (1.18.1):
+ - Yoga (~> 1.14)
DEPENDENCIES:
- boost (from `../react-native/third-party-podspecs/boost.podspec`)
- DoubleConversion (from `../react-native/third-party-podspecs/DoubleConversion.podspec`)
- FBLazyVector (from `../react-native/Libraries/FBLazyVector`)
- FBReactNativeSpec (from `../react-native/React/FBReactNativeSpec`)
+ - Flipper (= 0.182.0)
+ - Flipper-Boost-iOSX (= 1.76.0.1.11)
+ - Flipper-DoubleConversion (= 3.2.0.1)
+ - Flipper-Fmt (= 7.1.7)
+ - Flipper-Folly (= 2.6.10)
+ - Flipper-Glog (= 0.5.0.5)
+ - Flipper-PeerTalk (= 0.0.4)
+ - FlipperKit (= 0.182.0)
+ - FlipperKit/Core (= 0.182.0)
+ - FlipperKit/CppBridge (= 0.182.0)
+ - FlipperKit/FBCxxFollyDynamicConvert (= 0.182.0)
+ - FlipperKit/FBDefines (= 0.182.0)
+ - FlipperKit/FKPortForwarding (= 0.182.0)
+ - FlipperKit/FlipperKitHighlightOverlay (= 0.182.0)
+ - FlipperKit/FlipperKitLayoutPlugin (= 0.182.0)
+ - FlipperKit/FlipperKitLayoutTextSearchable (= 0.182.0)
+ - FlipperKit/FlipperKitNetworkPlugin (= 0.182.0)
+ - FlipperKit/FlipperKitReactPlugin (= 0.182.0)
+ - FlipperKit/FlipperKitUserDefaultsPlugin (= 0.182.0)
+ - FlipperKit/SKIOSNetworkPlugin (= 0.182.0)
- glog (from `../react-native/third-party-podspecs/glog.podspec`)
- hermes-engine (from `../react-native/sdks/hermes-engine/hermes-engine.podspec`)
- libevent (~> 2.1.12)
- OCMock (~> 3.9.1)
+ - OpenSSL-Universal (= 1.1.1100)
- RCT-Folly (from `../react-native/third-party-podspecs/RCT-Folly.podspec`)
- RCT-Folly/Fabric (from `../react-native/third-party-podspecs/RCT-Folly.podspec`)
- RCTRequired (from `../react-native/Libraries/RCTRequired`)
@@ -1066,6 +1145,7 @@ DEPENDENCIES:
- React-callinvoker (from `../react-native/ReactCommon/callinvoker`)
- React-Codegen (from `build/generated/ios`)
- React-Core (from `../react-native/`)
+ - React-Core/DevSupport (from `../react-native/`)
- React-Core/RCTWebSocket (from `../react-native/`)
- React-CoreModules (from `../react-native/React/CoreModules`)
- React-cxxreact (from `../react-native/ReactCommon/cxxreact`)
@@ -1104,10 +1184,21 @@ DEPENDENCIES:
SPEC REPOS:
trunk:
+ - CocoaAsyncSocket
+ - Flipper
+ - Flipper-Boost-iOSX
+ - Flipper-DoubleConversion
+ - Flipper-Fmt
+ - Flipper-Folly
+ - Flipper-Glog
+ - Flipper-PeerTalk
+ - FlipperKit
- fmt
- libevent
- OCMock
+ - OpenSSL-Universal
- SocketRocket
+ - YogaKit
EXTERNAL SOURCES:
boost:
@@ -1122,7 +1213,6 @@ EXTERNAL SOURCES:
:podspec: "../react-native/third-party-podspecs/glog.podspec"
hermes-engine:
:podspec: "../react-native/sdks/hermes-engine/hermes-engine.podspec"
- :tag: hermes-2023-08-07-RNv0.72.4-813b2def12bc9df02654b3e3653ae4a68d0572e0
RCT-Folly:
:podspec: "../react-native/third-party-podspecs/RCT-Folly.podspec"
RCTRequired:
@@ -1207,58 +1297,69 @@ EXTERNAL SOURCES:
:path: "../react-native/ReactCommon/yoga"
SPEC CHECKSUMS:
- boost: 57d2868c099736d80fcd648bf211b4431e51a558
+ boost: 7dcd2de282d72e344012f7d6564d024930a6a440
+ CocoaAsyncSocket: 065fd1e645c7abab64f7a6a2007a48038fdc6a99
DoubleConversion: 5189b271737e1565bdce30deb4a08d647e3f5f54
- FBLazyVector: 5d4a3b7f411219a45a6d952f77d2c0a6c9989da5
- FBReactNativeSpec: be23280a4f9ace91746c88be25b524f97007afa6
+ FBLazyVector: dc178b8748748c036ef9493a5d59d6d1f91a36ce
+ FBReactNativeSpec: e661d6442e3c64baeab8da73e8eed47adf26e08b
+ Flipper: 6edb735e6c3e332975d1b17956bcc584eccf5818
+ Flipper-Boost-iOSX: fd1e2b8cbef7e662a122412d7ac5f5bea715403c
+ Flipper-DoubleConversion: 2dc99b02f658daf147069aad9dbd29d8feb06d30
+ Flipper-Fmt: 60cbdd92fc254826e61d669a5d87ef7015396a9b
+ Flipper-Folly: 584845625005ff068a6ebf41f857f468decd26b3
+ Flipper-Glog: 70c50ce58ddaf67dc35180db05f191692570f446
+ Flipper-PeerTalk: 116d8f857dc6ef55c7a5a75ea3ceaafe878aadc9
+ FlipperKit: 2efad7007d6745a3f95e4034d547be637f89d3f6
fmt: ff9d55029c625d3757ed641535fd4a75fedc7ce9
glog: 04b94705f318337d7ead9e6d17c019bd9b1f6b1b
- hermes-engine: d6b0f7383443a062c1a6155a0a3486e4d18bcc6a
+ hermes-engine: 9b9bb14184a11b8ceb4131b09abf634880f0f46d
libevent: 4049cae6c81cdb3654a443be001fb9bdceff7913
OCMock: 9491e4bec59e0b267d52a9184ff5605995e74be8
+ OpenSSL-Universal: ebc357f1e6bc71fa463ccb2fe676756aff50e88c
RCT-Folly: 424b8c9a7a0b9ab2886ffe9c3b041ef628fd4fb1
- RCTRequired: c0569ecc035894e4a68baecb30fe6a7ea6e399f9
- RCTTypeSafety: e90354072c21236e0bcf1699011e39acd25fea2f
- React: a1be3c6dc0a6e949ccd3e659781aa47bbae1868f
- React-callinvoker: 1020b33f6cb1a1824f9ca2a86609fbce2a73c6ed
- React-Codegen: 9dc9ce39d004aa9a7c481e0c367d6e585e558c62
- React-Core: 52075b80f10c26f62219d7b5d13d7d8089f027b3
- React-CoreModules: 21abab85d7ad9038ce2b1c33d39e3baaf7dc9244
- React-cxxreact: 4ad1cc861e32fb533dad6ff7a4ea25680fa1c994
- React-debug: 17366a3d5c5d2f5fc04f09101a4af38cb42b54ae
- React-Fabric: bd595702c2a473faca32b59c427d927e9d3a4cc1
- React-graphics: 89d631f399096ffb5f93e19ca6908ba93a123797
- React-hermes: 37377d0a56aa0cf55c65248271866ce3268cde3f
- React-ImageManager: e57287a6a9d34b95c5f348a2f8773d9f6007c507
- React-jsi: 6de8b0ccc6b765b58e4eee9ee38049dbeaf5c221
- React-jsiexecutor: c7f826e40fa9cab5d37cab6130b1af237332b594
- React-jsinspector: aaed4cf551c4a1c98092436518c2d267b13a673f
- React-logger: da1ebe05ae06eb6db4b162202faeafac4b435e77
- React-NativeModulesApple: edb5ace14f73f4969df6e7b1f3e41bef0012740f
- React-perflogger: 496a1a3dc6737f964107cb3ddae7f9e265ddda58
- React-RCTActionSheet: 02904b932b50e680f4e26e7a686b33ebf7ef3c00
- React-RCTAnimation: 88feaf0a85648fb8fd497ce749829774910276d6
- React-RCTAppDelegate: 5792ac0f0feccb584765fdd7aa81ea320c4d9b0b
- React-RCTBlob: 0dbc9e2a13d241b37d46b53e54630cbad1f0e141
- React-RCTFabric: 0d443ab3cc3f0af82442ec95747d503cee955f26
- React-RCTImage: b111645ab901f8e59fc68fbe31f5731bdbeef087
- React-RCTLinking: 3d719727b4c098aad3588aa3559361ee0579f5de
- React-RCTNetwork: b44d3580be05d74556ba4efbf53570f17e38f734
- React-RCTPushNotification: e8e403bd93e63051855334eae1851f5a3ef23ede
- React-RCTSettings: c0c54b330442c29874cd4dae6e94190dc11a6f6f
- React-RCTTest: 3dc1bbd75178ca6fe1dddbcdcafd5f02dd6e6935
- React-RCTText: 9b9f5589d9b649d7246c3f336e116496df28cfe6
- React-RCTVibration: 691c67f3beaf1d084ceed5eb5c1dddd9afa8591e
- React-rncore: 24d25af89f365c9537f1d3f99e0175d10e41d227
- React-runtimeexecutor: d465ba0c47ef3ed8281143f59605cacc2244d5c7
- React-runtimescheduler: 4941cc1b3cf08b792fbf666342c9fc95f1969035
- React-utils: b79f2411931f9d3ea5781404dcbb2fa8a837e13a
- ReactCommon: 4b2bdcb50a3543e1c2b2849ad44533686610826d
- ReactCommon-Samples: f5369d4fca506f8bf51155f8512cf26c094b2db9
+ RCTRequired: f30c3213569b1dc43659ecc549a6536e1e11139e
+ RCTTypeSafety: e1ed3137728804fa98bce30b70e3da0b8e23054e
+ React: 54070abee263d5773486987f1cf3a3616710ed52
+ React-callinvoker: 794ea19cc4d8ce25921893141e131b9d6b7d02eb
+ React-Codegen: 56417b3402a3b85386470a72c338224d0b689998
+ React-Core: 7e2a9c4594083ecc68b91fc4a3f4d567e8c8b3b3
+ React-CoreModules: 87cc386c2200862672b76bb02c4574b4b1d11b3c
+ React-cxxreact: 1100498800597e812f0ce4ec365f4ea47ac39719
+ React-debug: 7af2049f3848bde3696276d4858ffea1274d8458
+ React-Fabric: 955c896c324f7112e2da198647ff7d107b4ca63f
+ React-graphics: 34b8df3af86c85fddb2bd1eb28bab4dad9fc6a25
+ React-hermes: b871a77ba1c427ca00f075759dc0cc9670484c94
+ React-ImageManager: 86776b5c7280cce657c94a2621b0e46ab999f581
+ React-jsi: 1f8d073a00264c6a701c4b7b4f4ef9946f9b2455
+ React-jsiexecutor: 5a169b1dd1abad06bed40ab7e1aca883c657d865
+ React-jsinspector: 54205b269da20c51417e0fc02c4cde9f29a4bf1a
+ React-logger: f42d2f2bc4cbb5d19d7c0ce84b8741b1e54e88c8
+ React-NativeModulesApple: 9f72feb8a04020b32417f768a7e1e40eec91fef4
+ React-perflogger: cb433f318c6667060fc1f62e26eb58d6eb30a627
+ React-RCTActionSheet: 0af3f8ac067e8a1dde902810b7ad169d0a0ec31e
+ React-RCTAnimation: 453a88e76ba6cb49819686acd8b21ce4d9ee4232
+ React-RCTAppDelegate: b9fb07959f227ddd2c458c42ed5ceacbd1e1e367
+ React-RCTBlob: fa513d56cdc2b7ad84a7758afc4863c1edd6a8b1
+ React-RCTFabric: 5247c6adba1c3379ecf851a8ebe1559f0ed00086
+ React-RCTImage: 8e059fbdfab18b86127424dc3742532aab960760
+ React-RCTLinking: 05ae2aa525b21a7f1c5069c14330700f470efd97
+ React-RCTNetwork: 7ed9d99d028c53e9a23e318f65937f499ba8a6fd
+ React-RCTPushNotification: c129613896ce15b15e1c566c34747a122d8cb5ad
+ React-RCTSettings: 8b12ebf04d4baa0e259017fcef6cf7abd7d8ac51
+ React-RCTTest: 49839e4d6bd2882086f84709a3d51d33c98dadf6
+ React-RCTText: a062ade9ff1591c46bcb6c5055fd4f96c154b8aa
+ React-RCTVibration: 87c490b6f01746ab8f9b4e555f514cc030c06731
+ React-rncore: c07cdca94018ebd0eb62d2b576c40094dec8bd93
+ React-runtimeexecutor: 226ebef5f625878d3028b196cbecbbdeb6f208e4
+ React-runtimescheduler: 3a5ce2c31eda2f04394aa843cbe2816912ef2ae0
+ React-utils: d3f806d3658bec0360aab46000d251872689340b
+ ReactCommon: 180205f326d59f52e12fa724f5278fcf8fb6afc3
+ ReactCommon-Samples: b8bad7c14a16b074adcf1005d811f9c60b5df44b
ScreenshotManager: 4e5729bfcd19014d277e57eb60e8e75db64b2953
SocketRocket: f32cd54efbe0f095c4d7594881e52619cfe80b17
- Yoga: 3efc43e0d48686ce2e8c60f99d4e6bd349aff981
+ Yoga: eddf2bbe4a896454c248a8f23b4355891eb720a6
+ YogaKit: f782866e155069a2cca2517aafea43200b01fd5a
PODFILE CHECKSUM: 9fa6f105e2187b680e978d57b28e2f700c8bd295
-COCOAPODS: 1.12.1
+COCOAPODS: 1.13.0
diff --git a/packages/rn-tester/RNTesterPods.xcodeproj/project.pbxproj b/packages/rn-tester/RNTesterPods.xcodeproj/project.pbxproj
index f43cd892f012..3164dbfaaab4 100644
--- a/packages/rn-tester/RNTesterPods.xcodeproj/project.pbxproj
+++ b/packages/rn-tester/RNTesterPods.xcodeproj/project.pbxproj
@@ -944,6 +944,7 @@
GCC_PREPROCESSOR_DEFINITIONS = (
"DEBUG=1",
"$(inherited)",
+ _LIBCPP_ENABLE_CXX17_REMOVED_UNARY_BINARY_FUNCTION,
);
GCC_SYMBOLS_PRIVATE_EXTERN = NO;
GCC_TREAT_INCOMPATIBLE_POINTER_TYPE_WARNINGS_AS_ERRORS = YES;
@@ -1029,6 +1030,10 @@
"EXCLUDED_ARCHS[sdk=iphonesimulator*]" = i386;
GCC_C_LANGUAGE_STANDARD = gnu11;
GCC_NO_COMMON_BLOCKS = YES;
+ GCC_PREPROCESSOR_DEFINITIONS = (
+ "$(inherited)",
+ _LIBCPP_ENABLE_CXX17_REMOVED_UNARY_BINARY_FUNCTION,
+ );
GCC_TREAT_INCOMPATIBLE_POINTER_TYPE_WARNINGS_AS_ERRORS = YES;
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_MISSING_NEWLINE = YES;
diff --git a/packages/rn-tester/RNTesterUnitTests/RCTBundleURLProviderTests.m b/packages/rn-tester/RNTesterUnitTests/RCTBundleURLProviderTests.m
index 89164bc0bb4f..2f89a22c3233 100644
--- a/packages/rn-tester/RNTesterUnitTests/RCTBundleURLProviderTests.m
+++ b/packages/rn-tester/RNTesterUnitTests/RCTBundleURLProviderTests.m
@@ -27,7 +27,7 @@
URLWithString:
[NSString
stringWithFormat:
- @"http://localhost:8081/%@.bundle?platform=ios&dev=true&minify=false&modulesOnly=false&runModule=true&runtimeBytecodeVersion=%u&app=com.apple.dt.xctest.tool",
+ @"http://localhost:8081/%@.bundle?platform=ios&dev=true&minify=false&inlineSourceMap=false&modulesOnly=false&runModule=true&runtimeBytecodeVersion=%u&app=com.apple.dt.xctest.tool",
testFile,
HERMES_BYTECODE_VERSION]];
#else
@@ -35,7 +35,7 @@
URLWithString:
[NSString
stringWithFormat:
- @"http://localhost:8081/%@.bundle?platform=ios&dev=true&minify=false&modulesOnly=false&runModule=true&app=com.apple.dt.xctest.tool",
+ @"http://localhost:8081/%@.bundle?platform=ios&dev=true&minify=false&inlineSourceMap=false&modulesOnly=false&runModule=true&app=com.apple.dt.xctest.tool",
testFile]];
#endif
}
@@ -47,7 +47,7 @@
URLWithString:
[NSString
stringWithFormat:
- @"http://192.168.1.1:8081/%@.bundle?platform=ios&dev=true&minify=false&modulesOnly=false&runModule=true&runtimeBytecodeVersion=%u&app=com.apple.dt.xctest.tool",
+ @"http://192.168.1.1:8081/%@.bundle?platform=ios&dev=true&minify=false&inlineSourceMap=false&modulesOnly=false&runModule=true&runtimeBytecodeVersion=%u&app=com.apple.dt.xctest.tool",
testFile,
HERMES_BYTECODE_VERSION]];
#else
@@ -55,7 +55,7 @@
URLWithString:
[NSString
stringWithFormat:
- @"http://192.168.1.1:8081/%@.bundle?platform=ios&dev=true&minify=false&modulesOnly=false&runModule=true&app=com.apple.dt.xctest.tool",
+ @"http://192.168.1.1:8081/%@.bundle?platform=ios&dev=true&minify=false&inlineSourceMap=false&modulesOnly=false&runModule=true&app=com.apple.dt.xctest.tool",
testFile]];
#endif
}
diff --git a/scripts/circle-ci-artifacts-utils.js b/scripts/circle-ci-artifacts-utils.js
index 3a9d9d2a0c83..48d02327b088 100644
--- a/scripts/circle-ci-artifacts-utils.js
+++ b/scripts/circle-ci-artifacts-utils.js
@@ -140,8 +140,11 @@ async function _findUrlForJob(jobName, artifactPath) {
_throwIfJobIsUnsuccessful(job);
const artifacts = await _getJobsArtifacts(job.job_number);
- return artifacts.find(artifact => artifact.path.indexOf(artifactPath) > -1)
- .url;
+ let artifact = artifacts.find(a => a.path.indexOf(artifactPath) > -1);
+ if (!artifact) {
+ throw new Error(`I could not find the artifact with path ${artifactPath}`);
+ }
+ return artifact.url;
}
function _throwIfJobIsNull(job) {
@@ -168,6 +171,17 @@ async function artifactURLForMavenLocal() {
return _findUrlForJob('build_and_publish_npm_package-2', 'maven-local.zip');
}
+async function artifactURLForReactNative() {
+ let shortCommit = exec('git rev-parse HEAD', {silent: true})
+ .toString()
+ .trim()
+ .slice(0, 9);
+ return _findUrlForJob(
+ 'build_npm_package',
+ `react-native-1000.0.0-${shortCommit}.tgz`,
+ );
+}
+
async function artifactURLForHermesRNTesterAPK(emulatorArch) {
return _findUrlForJob(
'test_android',
@@ -194,5 +208,6 @@ module.exports = {
artifactURLForHermesRNTesterAPK,
artifactURLForMavenLocal,
artifactURLHermesDebug,
+ artifactURLForReactNative,
baseTmpPath,
};
diff --git a/scripts/circleci/poll-maven.js b/scripts/circleci/poll-maven.js
new file mode 100644
index 000000000000..298909691e4c
--- /dev/null
+++ b/scripts/circleci/poll-maven.js
@@ -0,0 +1,72 @@
+/**
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ *
+ * @format
+ */
+
+const fetch = require('node-fetch');
+const fs = require('fs');
+
+const baseMavenRepo = 'https://repo1.maven.org/maven2/com/facebook/react';
+const artifacts = ['react-native-artifacts', 'react-android', 'hermes-android'];
+const humanNames = {
+ 'react-native-artifacts': 'Hermes for iOS',
+ 'react-android': 'React Native for Android',
+ 'hermes-android': 'Hermes for Android',
+};
+const ping_minutes = 5;
+const max_hours = 5;
+const ping_interval = ping_minutes * 60 * 1000; // 5 minutes
+const max_wait = max_hours * 60 * 60 * 1000; // 5 hours
+
+const startTime = Date.now();
+
+async function pingMaven(artifact, rnVersion) {
+ const url = `${baseMavenRepo}/${artifact}/${rnVersion}`;
+ const response = await fetch(url, {method: 'HEAD'});
+ if (response.status === 200) {
+ console.log(`Found artifact for ${humanNames[artifact]}\n`);
+ return;
+ } else if (response.status !== 404) {
+ throw new Error(
+ `Unexpected response code ${response.status} for ${humanNames[artifact]}`,
+ );
+ }
+
+ const elapsedTime = Date.now() - startTime;
+ if (elapsedTime > max_wait) {
+ throw new Error(`${max_hours} hours has passed. Exiting.`);
+ }
+ // Wait a bit
+ console.log(
+ `${humanNames[artifact]} not available yet. Waiting ${ping_minutes} minutes.\n`,
+ );
+ await new Promise(resolve => setTimeout(resolve, ping_interval));
+ await pingMaven(url);
+}
+
+async function main() {
+ const package = JSON.parse(
+ fs.readFileSync('packages/react-native/package.json', 'utf8'),
+ );
+ const rnVersion = package.version;
+
+ if (rnVersion === '1000.0.0') {
+ console.log(
+ 'We are not on a release branch when a release has been initiated. Exiting.',
+ );
+ return;
+ }
+
+ console.log(`Checking artifacts for React Native version ${rnVersion}\n`);
+
+ for (const artifact of artifacts) {
+ console.log(`Start pinging for ${humanNames[artifact]}`);
+ await pingMaven(artifact, rnVersion);
+ }
+}
+
+main();
diff --git a/scripts/monorepo/bump-all-updated-packages/bump-utils.js b/scripts/monorepo/bump-all-updated-packages/bump-utils.js
new file mode 100644
index 000000000000..07c57e5313ab
--- /dev/null
+++ b/scripts/monorepo/bump-all-updated-packages/bump-utils.js
@@ -0,0 +1,49 @@
+/**
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ *
+ * @format
+ */
+
+const chalk = require('chalk');
+const {echo, exec} = require('shelljs');
+
+const detectPackageUnreleasedChanges = (
+ packageRelativePathFromRoot,
+ packageName,
+ ROOT_LOCATION,
+) => {
+ const hashOfLastCommitInsidePackage = exec(
+ `git log -n 1 --format=format:%H -- ${packageRelativePathFromRoot}`,
+ {cwd: ROOT_LOCATION, silent: true},
+ ).stdout.trim();
+
+ const hashOfLastCommitThatChangedVersion = exec(
+ `git log -G\\"version\\": --format=format:%H -n 1 -- ${packageRelativePathFromRoot}/package.json`,
+ {cwd: ROOT_LOCATION, silent: true},
+ ).stdout.trim();
+
+ if (hashOfLastCommitInsidePackage === hashOfLastCommitThatChangedVersion) {
+ echo(
+ `\uD83D\uDD0E No changes for package ${chalk.green(
+ packageName,
+ )} since last version bump`,
+ );
+ return false;
+ } else {
+ echo(`\uD83D\uDCA1 Found changes for ${chalk.yellow(packageName)}:`);
+ exec(
+ `git log --pretty=oneline ${hashOfLastCommitThatChangedVersion}..${hashOfLastCommitInsidePackage} ${packageRelativePathFromRoot}`,
+ {
+ cwd: ROOT_LOCATION,
+ },
+ );
+ echo();
+
+ return true;
+ }
+};
+
+module.exports = detectPackageUnreleasedChanges;
diff --git a/scripts/monorepo/bump-all-updated-packages/index.js b/scripts/monorepo/bump-all-updated-packages/index.js
index d32e3ea1b5a7..eef3f493de56 100644
--- a/scripts/monorepo/bump-all-updated-packages/index.js
+++ b/scripts/monorepo/bump-all-updated-packages/index.js
@@ -25,6 +25,7 @@ const {
const forEachPackage = require('../for-each-package');
const checkForGitChanges = require('../check-for-git-changes');
const bumpPackageVersion = require('./bump-package-version');
+const detectPackageUnreleasedChanges = require('./bump-utils');
const ROOT_LOCATION = path.join(__dirname, '..', '..', '..');
@@ -62,35 +63,16 @@ const buildExecutor =
return;
}
- const hashOfLastCommitInsidePackage = exec(
- `git log -n 1 --format=format:%H -- ${packageRelativePathFromRoot}`,
- {cwd: ROOT_LOCATION, silent: true},
- ).stdout.trim();
-
- const hashOfLastCommitThatChangedVersion = exec(
- `git log -G\\"version\\": --format=format:%H -n 1 -- ${packageRelativePathFromRoot}/package.json`,
- {cwd: ROOT_LOCATION, silent: true},
- ).stdout.trim();
-
- if (hashOfLastCommitInsidePackage === hashOfLastCommitThatChangedVersion) {
- echo(
- `\uD83D\uDD0E No changes for package ${chalk.green(
- packageName,
- )} since last version bump`,
- );
-
+ if (
+ !detectPackageUnreleasedChanges(
+ packageRelativePathFromRoot,
+ packageName,
+ ROOT_LOCATION,
+ )
+ ) {
return;
}
- echo(`\uD83D\uDCA1 Found changes for ${chalk.yellow(packageName)}:`);
- exec(
- `git log --pretty=oneline ${hashOfLastCommitThatChangedVersion}..${hashOfLastCommitInsidePackage} ${packageRelativePathFromRoot}`,
- {
- cwd: ROOT_LOCATION,
- },
- );
- echo();
-
await inquirer
.prompt([
{
diff --git a/scripts/publish-npm.js b/scripts/publish-npm.js
index 40cae87f6a0c..61b63b47546b 100755
--- a/scripts/publish-npm.js
+++ b/scripts/publish-npm.js
@@ -90,7 +90,7 @@ const rawVersion =
: // For nightly we continue to use 0.0.0 for clarity for npm
nightlyBuild
? '0.0.0'
- : // For pre-release and stable releases, we use the git tag of the version we're releasing (set in bump-oss-version)
+ : // For pre-release and stable releases, we use the git tag of the version we're releasing (set in trigger-react-native-release)
buildTag;
let version,
diff --git a/scripts/test-e2e-local.js b/scripts/test-e2e-local.js
index 0be3c7bb6a49..75fc970d30ad 100644
--- a/scripts/test-e2e-local.js
+++ b/scripts/test-e2e-local.js
@@ -16,11 +16,10 @@
* and to make it more accessible for other devs to play around with.
*/
-const {exec, pushd, popd, pwd, cd} = require('shelljs');
+const {exec, pushd, popd, pwd, cd, sed} = require('shelljs');
const updateTemplatePackage = require('./update-template-package');
const yargs = require('yargs');
const path = require('path');
-const fs = require('fs');
const {
checkPackagerRunning,
@@ -184,20 +183,16 @@ async function testRNTestProject(circleCIArtifacts) {
// create the local npm package to feed the CLI
// base setup required (specular to publish-npm.js)
- const baseVersion = require('../packages/react-native/package.json').version;
// in local testing, 1000.0.0 mean we are on main, every other case means we are
// working on a release version
- const buildType = baseVersion !== '1000.0.0' ? 'release' : 'dry-run';
+ const shortCommit = exec('git rev-parse HEAD', {silent: true})
+ .toString()
+ .trim()
+ .slice(0, 9);
- // we need to add the unique timestamp to avoid npm/yarn to use some local caches
- const dateIdentifier = new Date()
- .toISOString()
- .slice(0, -8)
- .replace(/[-:]/g, '')
- .replace(/[T]/g, '-');
-
- const releaseVersion = `${baseVersion}-${dateIdentifier}`;
+ const releaseVersion = `1000.0.0-${shortCommit}`;
+ const buildType = 'dry-run';
// Prepare some variables for later use
const repoRoot = pwd();
@@ -206,8 +201,9 @@ async function testRNTestProject(circleCIArtifacts) {
const mavenLocalPath =
circleCIArtifacts != null
- ? path.join(circleCIArtifacts.baseTmpPath(), 'maven-local.zip')
+ ? path.join(circleCIArtifacts.baseTmpPath(), 'maven-local')
: '/private/tmp/maven-local';
+
const hermesPath = await prepareArtifacts(
circleCIArtifacts,
mavenLocalPath,
@@ -218,52 +214,51 @@ async function testRNTestProject(circleCIArtifacts) {
);
updateTemplatePackage({
- 'react-native': `file:${localNodeTGZPath}`,
+ 'react-native': `file://${localNodeTGZPath}`,
});
- // create locally the node module
- exec('npm pack --pack-destination ', {cwd: reactNativePackagePath});
-
- // node pack does not creates a version of React Native with the right name on main.
- // Let's add some defensive programming checks:
- if (!fs.existsSync(localNodeTGZPath)) {
- const tarfile = fs
- .readdirSync(reactNativePackagePath)
- .find(name => name.startsWith('react-native-') && name.endsWith('.tgz'));
- if (!tarfile) {
- throw new Error("Couldn't find a zipped version of react-native");
- }
- exec(
- `cp ${path.join(reactNativePackagePath, tarfile)} ${localNodeTGZPath}`,
- );
- }
-
pushd('/tmp/');
// need to avoid the pod install step - we'll do it later
exec(
- `node ${reactNativePackagePath}/cli.js init RNTestProject --template ${localNodeTGZPath} --skip-install`,
+ `node ${reactNativePackagePath}/cli.js init RNTestProject --template ${reactNativePackagePath} --skip-install`,
);
cd('RNTestProject');
exec('yarn install');
+ // When using CircleCI artifacts, the CI will zip maven local into a
+ // /tmp/maven-local subfolder struct.
+ // When we generate the project manually, there is no such structure.
+ const expandedMavenLocal =
+ circleCIArtifacts == null
+ ? mavenLocalPath
+ : `${mavenLocalPath}/tmp/maven-local`;
// need to do this here so that Android will be properly setup either way
exec(
- `echo "REACT_NATIVE_MAVEN_LOCAL_REPO=${mavenLocalPath}" >> android/gradle.properties`,
+ `echo "REACT_NATIVE_MAVEN_LOCAL_REPO=${expandedMavenLocal}" >> android/gradle.properties`,
);
- // doing the pod install here so that it's easier to play around RNTestProject
- cd('ios');
- exec('bundle install');
- exec(
- `HERMES_ENGINE_TARBALL_PATH=${hermesPath} USE_HERMES=${
- argv.hermes ? 1 : 0
- } bundle exec pod install --ansi`,
- );
-
- cd('..');
+ // Update gradle properties to set Hermes as false
+ if (!argv.hermes) {
+ sed(
+ '-i',
+ 'hermesEnabled=true',
+ 'hermesEnabled=false',
+ 'android/gradle.properties',
+ );
+ }
if (argv.platform === 'iOS') {
+ // doing the pod install here so that it's easier to play around RNTestProject
+ cd('ios');
+ exec('bundle install');
+ exec(
+ `HERMES_ENGINE_TARBALL_PATH=${hermesPath} USE_HERMES=${
+ argv.hermes ? 1 : 0
+ } bundle exec pod install --ansi`,
+ );
+
+ cd('..');
exec('yarn ios');
} else {
// android
diff --git a/scripts/testing-utils.js b/scripts/testing-utils.js
index be4bc78b9c7f..b10a322bc9dc 100644
--- a/scripts/testing-utils.js
+++ b/scripts/testing-utils.js
@@ -170,16 +170,21 @@ async function downloadArtifactsFromCircleCI(
) {
const mavenLocalURL = await circleCIArtifacts.artifactURLForMavenLocal();
const hermesURL = await circleCIArtifacts.artifactURLHermesDebug();
+ const reactNativeURL = await circleCIArtifacts.artifactURLForReactNative();
const hermesPath = path.join(
circleCIArtifacts.baseTmpPath(),
'hermes-ios-debug.tar.gz',
);
- console.info('[Download] Maven Local Artifacts');
- circleCIArtifacts.downloadArtifact(mavenLocalURL, mavenLocalPath);
+ console.info(`[Download] Maven Local Artifacts from ${mavenLocalURL}`);
+ const mavenLocalZipPath = `${mavenLocalPath}.zip`;
+ circleCIArtifacts.downloadArtifact(mavenLocalURL, mavenLocalZipPath);
+ exec(`unzip -oq ${mavenLocalZipPath} -d ${mavenLocalPath}`);
console.info('[Download] Hermes');
circleCIArtifacts.downloadArtifact(hermesURL, hermesPath);
+ console.info(`[Download] React Native from ${reactNativeURL}`);
+ circleCIArtifacts.downloadArtifact(reactNativeURL, localNodeTGZPath);
return hermesPath;
}
@@ -214,7 +219,19 @@ function buildArtifactsLocally(
expandHermesSourceTarball();
}
- // need to move the scripts inside the local hermes cloned folder
+ // need to move the podspec file from hermes-engine to hermes folder
+ // cp sdks/hermes-engine/hermes-engine.podspec /hermes-engine.podspec
+ cp(
+ `${reactNativePackagePath}/sdks/hermes-engine/hermes-engine.podspec`,
+ `${reactNativePackagePath}/sdks/hermes/hermes-engine.podspec`,
+ );
+ // need to move the hermes-utils file from hermes-engine to hermes folder
+ // cp sdks/hermes-engine/hermes-utils.rb /hermes-utils.rb
+ cp(
+ `${reactNativePackagePath}/sdks/hermes-engine/hermes-utils.rb`,
+ `${reactNativePackagePath}/sdks/hermes/hermes-utils.rb`,
+ );
+ // need to move the shell scripts file from hermes-engine to hermes folder
// cp sdks/hermes-engine/utils/*.sh /utils/.
cp(
`${reactNativePackagePath}/sdks/hermes-engine/utils/*.sh`,
diff --git a/scripts/bump-oss-version.js b/scripts/trigger-react-native-release.js
old mode 100755
new mode 100644
similarity index 65%
rename from scripts/bump-oss-version.js
rename to scripts/trigger-react-native-release.js
index 188d562d435b..2986e95fca62
--- a/scripts/bump-oss-version.js
+++ b/scripts/trigger-react-native-release.js
@@ -14,14 +14,21 @@
* This script walks a releaser through bumping the version for a release
* It will commit the appropriate tags to trigger the CircleCI jobs.
*/
-const {exit} = require('shelljs');
+const {exit, echo} = require('shelljs');
+const chalk = require('chalk');
const yargs = require('yargs');
const inquirer = require('inquirer');
const request = require('request');
+const path = require('path');
const {getBranchName, exitIfNotOnGit} = require('./scm-utils');
const {parseVersion, isReleaseBranch} = require('./version-utils');
const {failIfTagExists} = require('./release-utils');
+const checkForGitChanges = require('./monorepo/check-for-git-changes');
+const forEachPackage = require('./monorepo/for-each-package');
+const detectPackageUnreleasedChanges = require('./monorepo/bump-all-updated-packages/bump-utils.js');
+
+const ROOT_LOCATION = path.join(__dirname, '..');
let argv = yargs
.option('r', {
@@ -42,7 +49,7 @@ let argv = yargs
.check(() => {
const branch = exitIfNotOnGit(
() => getBranchName(),
- "Not in git. You can't invoke bump-oss-versions.js from outside a git repo.",
+ "Not in git. You can't invoke trigger-react-native-release from outside a git repo.",
);
exitIfNotOnReleaseBranch(branch);
return true;
@@ -57,6 +64,52 @@ function exitIfNotOnReleaseBranch(branch) {
}
}
+const buildExecutor =
+ (packageAbsolutePath, packageRelativePathFromRoot, packageManifest) =>
+ async () => {
+ const {name: packageName} = packageManifest;
+ if (packageManifest.private) {
+ return;
+ }
+
+ if (
+ detectPackageUnreleasedChanges(
+ packageRelativePathFromRoot,
+ packageName,
+ ROOT_LOCATION,
+ )
+ ) {
+ // if I enter here, I want to throw an error upward
+ throw new Error(
+ `Package ${packageName} has unreleased changes. Please release it first.`,
+ );
+ }
+ };
+
+const buildAllExecutors = () => {
+ const executors = [];
+
+ forEachPackage((...params) => {
+ executors.push(buildExecutor(...params));
+ });
+
+ return executors;
+};
+
+async function exitIfUnreleasedPackages() {
+ // use the other script to verify that there's no packages in the monorepo
+ // that have changes that haven't been released
+
+ const executors = buildAllExecutors();
+ for (const executor of executors) {
+ await executor().catch(error => {
+ echo(chalk.red(error));
+ // need to throw upward
+ throw error;
+ });
+ }
+}
+
function triggerReleaseWorkflow(options) {
return new Promise((resolve, reject) => {
request(options, function (error, response, body) {
@@ -72,8 +125,26 @@ function triggerReleaseWorkflow(options) {
async function main() {
const branch = exitIfNotOnGit(
() => getBranchName(),
- "Not in git. You can't invoke bump-oss-versions.js from outside a git repo.",
+ "Not in git. You can't invoke trigger-react-native-release from outside a git repo.",
);
+
+ // check for uncommitted changes
+ if (checkForGitChanges()) {
+ echo(
+ chalk.red(
+ 'Found uncommitted changes. Please commit or stash them before running this script',
+ ),
+ );
+ exit(1);
+ }
+
+ // now check for unreleased packages
+ try {
+ await exitIfUnreleasedPackages();
+ } catch (error) {
+ exit(1);
+ }
+
const token = argv.token;
const releaseVersion = argv.toVersion;
failIfTagExists(releaseVersion, 'release');
diff --git a/yarn.lock b/yarn.lock
index d8e49f85b984..7e9d3d35bec8 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -2337,44 +2337,44 @@
optionalDependencies:
npmlog "2 || ^3.1.0 || ^4.0.0"
-"@react-native-community/cli-clean@11.3.6":
- version "11.3.6"
- resolved "https://registry.yarnpkg.com/@react-native-community/cli-clean/-/cli-clean-11.3.6.tgz#43a06cbee1a5480da804debc4f94662a197720f2"
- integrity sha512-jOOaeG5ebSXTHweq1NznVJVAFKtTFWL4lWgUXl845bCGX7t1lL8xQNWHKwT8Oh1pGR2CI3cKmRjY4hBg+pEI9g==
+"@react-native-community/cli-clean@11.3.10":
+ version "11.3.10"
+ resolved "https://registry.yarnpkg.com/@react-native-community/cli-clean/-/cli-clean-11.3.10.tgz#70d14dd998ce8ad532266b36a0e5cafe22d300ac"
+ integrity sha512-g6QjW+DSqoWRHzmIQW3AH22k1AnynWuOdy2YPwYEGgPddTeXZtJphIpEVwDOiC0L4mZv2VmiX33/cGNUwO0cIA==
dependencies:
- "@react-native-community/cli-tools" "11.3.6"
+ "@react-native-community/cli-tools" "11.3.10"
chalk "^4.1.2"
execa "^5.0.0"
prompts "^2.4.0"
-"@react-native-community/cli-config@11.3.6":
- version "11.3.6"
- resolved "https://registry.yarnpkg.com/@react-native-community/cli-config/-/cli-config-11.3.6.tgz#6d3636a8a3c4542ebb123eaf61bbbc0c2a1d2a6b"
- integrity sha512-edy7fwllSFLan/6BG6/rznOBCLPrjmJAE10FzkEqNLHowi0bckiAPg1+1jlgQ2qqAxV5kuk+c9eajVfQvPLYDA==
+"@react-native-community/cli-config@11.3.10":
+ version "11.3.10"
+ resolved "https://registry.yarnpkg.com/@react-native-community/cli-config/-/cli-config-11.3.10.tgz#753510a80a98b136fec852e1ea5fa655c13dbd17"
+ integrity sha512-YYu14nm1JYLS6mDRBz78+zDdSFudLBFpPkhkOoj4LuBhNForQBIqFFHzQbd9/gcguJxfW3vlYSnudfaUI7oGLg==
dependencies:
- "@react-native-community/cli-tools" "11.3.6"
+ "@react-native-community/cli-tools" "11.3.10"
chalk "^4.1.2"
cosmiconfig "^5.1.0"
deepmerge "^4.3.0"
glob "^7.1.3"
joi "^17.2.1"
-"@react-native-community/cli-debugger-ui@11.3.6":
- version "11.3.6"
- resolved "https://registry.yarnpkg.com/@react-native-community/cli-debugger-ui/-/cli-debugger-ui-11.3.6.tgz#1eb2276450f270a938686b49881fe232a08c01c4"
- integrity sha512-jhMOSN/iOlid9jn/A2/uf7HbC3u7+lGktpeGSLnHNw21iahFBzcpuO71ekEdlmTZ4zC/WyxBXw9j2ka33T358w==
+"@react-native-community/cli-debugger-ui@11.3.10":
+ version "11.3.10"
+ resolved "https://registry.yarnpkg.com/@react-native-community/cli-debugger-ui/-/cli-debugger-ui-11.3.10.tgz#b16ebf770ba3cc76bf46580f101d00dacf919824"
+ integrity sha512-kyitGV3RsjlXIioq9lsuawha2GUBPCTAyXV6EBlm3qlyF3dMniB3twEvz+fIOid/e1ZeucH3Tzy5G3qcP8yWoA==
dependencies:
serve-static "^1.13.1"
-"@react-native-community/cli-doctor@11.3.6":
- version "11.3.6"
- resolved "https://registry.yarnpkg.com/@react-native-community/cli-doctor/-/cli-doctor-11.3.6.tgz#fa33ee00fe5120af516aa0f17fe3ad50270976e7"
- integrity sha512-UT/Tt6omVPi1j6JEX+CObc85eVFghSZwy4GR9JFMsO7gNg2Tvcu1RGWlUkrbmWMAMHw127LUu6TGK66Ugu1NLA==
+"@react-native-community/cli-doctor@11.3.10":
+ version "11.3.10"
+ resolved "https://registry.yarnpkg.com/@react-native-community/cli-doctor/-/cli-doctor-11.3.10.tgz#161b8fd1b485cd52f7a19b2025696070b9d2b6a1"
+ integrity sha512-DpMsfCWKZ15L9nFK/SyDvpl5v6MjV+arMHMC1i8kR+DOmf2xWmp/pgMywKk0/u50yGB9GwxBHt3i/S/IMK5Ylg==
dependencies:
- "@react-native-community/cli-config" "11.3.6"
- "@react-native-community/cli-platform-android" "11.3.6"
- "@react-native-community/cli-platform-ios" "11.3.6"
- "@react-native-community/cli-tools" "11.3.6"
+ "@react-native-community/cli-config" "11.3.10"
+ "@react-native-community/cli-platform-android" "11.3.10"
+ "@react-native-community/cli-platform-ios" "11.3.10"
+ "@react-native-community/cli-tools" "11.3.10"
chalk "^4.1.2"
command-exists "^1.2.8"
envinfo "^7.7.2"
@@ -2390,64 +2390,64 @@
wcwidth "^1.0.1"
yaml "^2.2.1"
-"@react-native-community/cli-hermes@11.3.6":
- version "11.3.6"
- resolved "https://registry.yarnpkg.com/@react-native-community/cli-hermes/-/cli-hermes-11.3.6.tgz#b1acc7feff66ab0859488e5812b3b3e8b8e9434c"
- integrity sha512-O55YAYGZ3XynpUdePPVvNuUPGPY0IJdctLAOHme73OvS80gNwfntHDXfmY70TGHWIfkK2zBhA0B+2v8s5aTyTA==
+"@react-native-community/cli-hermes@11.3.10":
+ version "11.3.10"
+ resolved "https://registry.yarnpkg.com/@react-native-community/cli-hermes/-/cli-hermes-11.3.10.tgz#f3d4f069ca472b1d8b4e8132cf9c44097a58ca19"
+ integrity sha512-vqINuzAlcHS9ImNwJtT43N7kfBQ7ro9A8O1Gpc5TQ0A8V36yGG8eoCHeauayklVVgMZpZL6f6mcoLLr9IOgBZQ==
dependencies:
- "@react-native-community/cli-platform-android" "11.3.6"
- "@react-native-community/cli-tools" "11.3.6"
+ "@react-native-community/cli-platform-android" "11.3.10"
+ "@react-native-community/cli-tools" "11.3.10"
chalk "^4.1.2"
hermes-profile-transformer "^0.0.6"
ip "^1.1.5"
-"@react-native-community/cli-platform-android@11.3.6":
- version "11.3.6"
- resolved "https://registry.yarnpkg.com/@react-native-community/cli-platform-android/-/cli-platform-android-11.3.6.tgz#6f3581ca4eed3deec7edba83c1bc467098c8167b"
- integrity sha512-ZARrpLv5tn3rmhZc//IuDM1LSAdYnjUmjrp58RynlvjLDI4ZEjBAGCQmgysRgXAsK7ekMrfkZgemUczfn9td2A==
+"@react-native-community/cli-platform-android@11.3.10":
+ version "11.3.10"
+ resolved "https://registry.yarnpkg.com/@react-native-community/cli-platform-android/-/cli-platform-android-11.3.10.tgz#756dd73ad78bf2f20c678683dfc48cb764b1b590"
+ integrity sha512-RGu9KuDIXnrcNkacSHj5ETTQtp/D/835L6veE2jMigO21p//gnKAjw3AVLCysGr8YXYfThF8OSOALrwNc94puQ==
dependencies:
- "@react-native-community/cli-tools" "11.3.6"
+ "@react-native-community/cli-tools" "11.3.10"
chalk "^4.1.2"
execa "^5.0.0"
glob "^7.1.3"
logkitty "^0.7.1"
-"@react-native-community/cli-platform-ios@11.3.6":
- version "11.3.6"
- resolved "https://registry.yarnpkg.com/@react-native-community/cli-platform-ios/-/cli-platform-ios-11.3.6.tgz#0fa58d01f55d85618c4218925509a4be77867dab"
- integrity sha512-tZ9VbXWiRW+F+fbZzpLMZlj93g3Q96HpuMsS6DRhrTiG+vMQ3o6oPWSEEmMGOvJSYU7+y68Dc9ms2liC7VD6cw==
+"@react-native-community/cli-platform-ios@11.3.10":
+ version "11.3.10"
+ resolved "https://registry.yarnpkg.com/@react-native-community/cli-platform-ios/-/cli-platform-ios-11.3.10.tgz#f8a9bca1181802f12ed15714d5a496e60096cbed"
+ integrity sha512-JjduMrBM567/j4Hvjsff77dGSLMA0+p9rr0nShlgnKPcc+0J4TDy0hgWpUceM7OG00AdDjpetAPupz0kkAh4cQ==
dependencies:
- "@react-native-community/cli-tools" "11.3.6"
+ "@react-native-community/cli-tools" "11.3.10"
chalk "^4.1.2"
execa "^5.0.0"
fast-xml-parser "^4.0.12"
glob "^7.1.3"
ora "^5.4.1"
-"@react-native-community/cli-plugin-metro@11.3.6":
- version "11.3.6"
- resolved "https://registry.yarnpkg.com/@react-native-community/cli-plugin-metro/-/cli-plugin-metro-11.3.6.tgz#2d632c304313435c9ea104086901fbbeba0f1882"
- integrity sha512-D97racrPX3069ibyabJNKw9aJpVcaZrkYiEzsEnx50uauQtPDoQ1ELb/5c6CtMhAEGKoZ0B5MS23BbsSZcLs2g==
+"@react-native-community/cli-plugin-metro@11.3.10":
+ version "11.3.10"
+ resolved "https://registry.yarnpkg.com/@react-native-community/cli-plugin-metro/-/cli-plugin-metro-11.3.10.tgz#6ed67dda2518d3dabae20f3b38f66a0a9bd8e962"
+ integrity sha512-ZYAc5Hc+QVqJgj1XFbpKnIPbSJ9xKcBnfQrRhR+jFyt2DWx85u4bbzY1GSVc/USs0UbSUXv4dqPbnmOJz52EYQ==
dependencies:
- "@react-native-community/cli-server-api" "11.3.6"
- "@react-native-community/cli-tools" "11.3.6"
+ "@react-native-community/cli-server-api" "11.3.10"
+ "@react-native-community/cli-tools" "11.3.10"
chalk "^4.1.2"
execa "^5.0.0"
- metro "0.76.7"
- metro-config "0.76.7"
- metro-core "0.76.7"
- metro-react-native-babel-transformer "0.76.7"
- metro-resolver "0.76.7"
- metro-runtime "0.76.7"
+ metro "0.76.8"
+ metro-config "0.76.8"
+ metro-core "0.76.8"
+ metro-react-native-babel-transformer "0.76.8"
+ metro-resolver "0.76.8"
+ metro-runtime "0.76.8"
readline "^1.3.0"
-"@react-native-community/cli-server-api@11.3.6":
- version "11.3.6"
- resolved "https://registry.yarnpkg.com/@react-native-community/cli-server-api/-/cli-server-api-11.3.6.tgz#3a16039518f7f3865f85f8f54b19174448bbcdbb"
- integrity sha512-8GUKodPnURGtJ9JKg8yOHIRtWepPciI3ssXVw5jik7+dZ43yN8P5BqCoDaq8e1H1yRer27iiOfT7XVnwk8Dueg==
+"@react-native-community/cli-server-api@11.3.10":
+ version "11.3.10"
+ resolved "https://registry.yarnpkg.com/@react-native-community/cli-server-api/-/cli-server-api-11.3.10.tgz#2c4940d921711f2c78f0b61f126e8dbbbef6277c"
+ integrity sha512-WEwHWIpqx3gA6Da+lrmq8+z78E1XbxxjBlvHAXevhjJj42N4SO417eZiiUVrFzEFVVJSUee9n9aRa0kUR+0/2w==
dependencies:
- "@react-native-community/cli-debugger-ui" "11.3.6"
- "@react-native-community/cli-tools" "11.3.6"
+ "@react-native-community/cli-debugger-ui" "11.3.10"
+ "@react-native-community/cli-tools" "11.3.10"
compression "^1.7.1"
connect "^3.6.5"
errorhandler "^1.5.1"
@@ -2456,10 +2456,10 @@
serve-static "^1.13.1"
ws "^7.5.1"
-"@react-native-community/cli-tools@11.3.6":
- version "11.3.6"
- resolved "https://registry.yarnpkg.com/@react-native-community/cli-tools/-/cli-tools-11.3.6.tgz#ec213b8409917a56e023595f148c84b9cb3ad871"
- integrity sha512-JpmUTcDwAGiTzLsfMlIAYpCMSJ9w2Qlf7PU7mZIRyEu61UzEawyw83DkqfbzDPBuRwRnaeN44JX2CP/yTO3ThQ==
+"@react-native-community/cli-tools@11.3.10":
+ version "11.3.10"
+ resolved "https://registry.yarnpkg.com/@react-native-community/cli-tools/-/cli-tools-11.3.10.tgz#d7bbe3fd8b338004f996f03f53a5373d9caab91c"
+ integrity sha512-4kCuCwVcGagSrNg9vxMNVhynwpByuC/J5UnKGEet3HuqmoDhQW15m18fJXiehA8J+u9WBvHduefy9nZxO0C06Q==
dependencies:
appdirsjs "^1.2.4"
chalk "^4.1.2"
@@ -2471,27 +2471,27 @@
semver "^7.5.2"
shell-quote "^1.7.3"
-"@react-native-community/cli-types@11.3.6":
- version "11.3.6"
- resolved "https://registry.yarnpkg.com/@react-native-community/cli-types/-/cli-types-11.3.6.tgz#34012f1d0cb1c4039268828abc07c9c69f2e15be"
- integrity sha512-6DxjrMKx5x68N/tCJYVYRKAtlRHbtUVBZrnAvkxbRWFD9v4vhNgsPM0RQm8i2vRugeksnao5mbnRGpS6c0awCw==
+"@react-native-community/cli-types@11.3.10":
+ version "11.3.10"
+ resolved "https://registry.yarnpkg.com/@react-native-community/cli-types/-/cli-types-11.3.10.tgz#cb02186cd247108bcea5ff93c4c97bb3c8dd8f22"
+ integrity sha512-0FHK/JE7bTn0x1y8Lk5m3RISDHIBQqWLltO2Mf7YQ6cAeKs8iNOJOeKaHJEY+ohjsOyCziw+XSC4cY57dQrwNA==
dependencies:
joi "^17.2.1"
-"@react-native-community/cli@11.3.6":
- version "11.3.6"
- resolved "https://registry.yarnpkg.com/@react-native-community/cli/-/cli-11.3.6.tgz#d92618d75229eaf6c0391a6b075684eba5d9819f"
- integrity sha512-bdwOIYTBVQ9VK34dsf6t3u6vOUU5lfdhKaAxiAVArjsr7Je88Bgs4sAbsOYsNK3tkE8G77U6wLpekknXcanlww==
- dependencies:
- "@react-native-community/cli-clean" "11.3.6"
- "@react-native-community/cli-config" "11.3.6"
- "@react-native-community/cli-debugger-ui" "11.3.6"
- "@react-native-community/cli-doctor" "11.3.6"
- "@react-native-community/cli-hermes" "11.3.6"
- "@react-native-community/cli-plugin-metro" "11.3.6"
- "@react-native-community/cli-server-api" "11.3.6"
- "@react-native-community/cli-tools" "11.3.6"
- "@react-native-community/cli-types" "11.3.6"
+"@react-native-community/cli@11.3.10":
+ version "11.3.10"
+ resolved "https://registry.yarnpkg.com/@react-native-community/cli/-/cli-11.3.10.tgz#ea88d20982cfc9ed7a5170d04aeedd2abf092348"
+ integrity sha512-bIx0t5s9ewH1PlcEcuQUD+UnVrCjPGAfjhVR5Gew565X60nE+GTIHRn70nMv9G4he/amBF+Z+vf5t8SNZEWMwg==
+ dependencies:
+ "@react-native-community/cli-clean" "11.3.10"
+ "@react-native-community/cli-config" "11.3.10"
+ "@react-native-community/cli-debugger-ui" "11.3.10"
+ "@react-native-community/cli-doctor" "11.3.10"
+ "@react-native-community/cli-hermes" "11.3.10"
+ "@react-native-community/cli-plugin-metro" "11.3.10"
+ "@react-native-community/cli-server-api" "11.3.10"
+ "@react-native-community/cli-tools" "11.3.10"
+ "@react-native-community/cli-types" "11.3.10"
chalk "^4.1.2"
commander "^9.4.1"
execa "^5.0.0"
@@ -3968,14 +3968,14 @@ depd@~1.1.2:
resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9"
integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=
-deprecated-react-native-prop-types@4.1.0:
- version "4.1.0"
- resolved "https://registry.yarnpkg.com/deprecated-react-native-prop-types/-/deprecated-react-native-prop-types-4.1.0.tgz#8ed03a64c21b7fbdd2d000957b6838d4f38d2c66"
- integrity sha512-WfepZHmRbbdTvhcolb8aOKEvQdcmTMn5tKLbqbXmkBvjFjRVWAYqsXk/DBsV8TZxws8SdGHLuHaJrHSQUPRdfw==
+deprecated-react-native-prop-types@^4.2.3:
+ version "4.2.3"
+ resolved "https://registry.yarnpkg.com/deprecated-react-native-prop-types/-/deprecated-react-native-prop-types-4.2.3.tgz#0ef845c1a80ef1636bd09060e4cdf70f9727e5ad"
+ integrity sha512-2rLTiMKidIFFYpIVM69UnQKngLqQfL6I11Ch8wGSBftS18FUXda+o2we2950X+1dmbgps28niI3qwyH4eX3Z1g==
dependencies:
- "@react-native/normalize-colors" "*"
- invariant "*"
- prop-types "*"
+ "@react-native/normalize-colors" "<0.73.0"
+ invariant "^2.2.4"
+ prop-types "^15.8.1"
deprecation@^2.0.0, deprecation@^2.3.1:
version "2.3.1"
@@ -5287,7 +5287,7 @@ interpret@^1.0.0:
resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.1.0.tgz#7ed1b1410c6a0e0f78cf95d3b8440c63f78b8614"
integrity sha1-ftGxQQxqDg94z5XTuEQMY/eLhhQ=
-invariant@*, invariant@^2.2.4:
+invariant@^2.2.4:
version "2.2.4"
resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6"
integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==
@@ -6420,15 +6420,6 @@ metro-babel-register@0.76.7:
babel-plugin-replace-ts-export-assignment "^0.0.2"
escape-string-regexp "^1.0.5"
-metro-babel-transformer@0.76.7:
- version "0.76.7"
- resolved "https://registry.yarnpkg.com/metro-babel-transformer/-/metro-babel-transformer-0.76.7.tgz#ba620d64cbaf97d1aa14146d654a3e5d7477fc62"
- integrity sha512-bgr2OFn0J4r0qoZcHrwEvccF7g9k3wdgTOgk6gmGHrtlZ1Jn3oCpklW/DfZ9PzHfjY2mQammKTc19g/EFGyOJw==
- dependencies:
- "@babel/core" "^7.20.0"
- hermes-parser "0.12.0"
- nullthrows "^1.1.1"
-
metro-babel-transformer@0.76.8:
version "0.76.8"
resolved "https://registry.yarnpkg.com/metro-babel-transformer/-/metro-babel-transformer-0.76.8.tgz#5efd1027353b36b73706164ef09c290dceac096a"
@@ -6438,24 +6429,11 @@ metro-babel-transformer@0.76.8:
hermes-parser "0.12.0"
nullthrows "^1.1.1"
-metro-cache-key@0.76.7:
- version "0.76.7"
- resolved "https://registry.yarnpkg.com/metro-cache-key/-/metro-cache-key-0.76.7.tgz#70913f43b92b313096673c37532edd07438cb325"
- integrity sha512-0pecoIzwsD/Whn/Qfa+SDMX2YyasV0ndbcgUFx7w1Ct2sLHClujdhQ4ik6mvQmsaOcnGkIyN0zcceMDjC2+BFQ==
-
metro-cache-key@0.76.8:
version "0.76.8"
resolved "https://registry.yarnpkg.com/metro-cache-key/-/metro-cache-key-0.76.8.tgz#8a0a5e991c06f56fcc584acadacb313c312bdc16"
integrity sha512-buKQ5xentPig9G6T37Ww/R/bC+/V1MA5xU/D8zjnhlelsrPG6w6LtHUS61ID3zZcMZqYaELWk5UIadIdDsaaLw==
-metro-cache@0.76.7:
- version "0.76.7"
- resolved "https://registry.yarnpkg.com/metro-cache/-/metro-cache-0.76.7.tgz#e49e51423fa960df4eeff9760d131f03e003a9eb"
- integrity sha512-nWBMztrs5RuSxZRI7hgFgob5PhYDmxICh9FF8anm9/ito0u0vpPvRxt7sRu8fyeD2AHdXqE7kX32rWY0LiXgeg==
- dependencies:
- metro-core "0.76.7"
- rimraf "^3.0.2"
-
metro-cache@0.76.8:
version "0.76.8"
resolved "https://registry.yarnpkg.com/metro-cache/-/metro-cache-0.76.8.tgz#296c1c189db2053b89735a8f33dbe82575f53661"
@@ -6464,19 +6442,6 @@ metro-cache@0.76.8:
metro-core "0.76.8"
rimraf "^3.0.2"
-metro-config@0.76.7:
- version "0.76.7"
- resolved "https://registry.yarnpkg.com/metro-config/-/metro-config-0.76.7.tgz#f0fc171707523aa7d3a9311550872136880558c0"
- integrity sha512-CFDyNb9bqxZemiChC/gNdXZ7OQkIwmXzkrEXivcXGbgzlt/b2juCv555GWJHyZSlorwnwJfY3uzAFu4A9iRVfg==
- dependencies:
- connect "^3.6.5"
- cosmiconfig "^5.0.5"
- jest-validate "^29.2.1"
- metro "0.76.7"
- metro-cache "0.76.7"
- metro-core "0.76.7"
- metro-runtime "0.76.7"
-
metro-config@0.76.8:
version "0.76.8"
resolved "https://registry.yarnpkg.com/metro-config/-/metro-config-0.76.8.tgz#20bd5397fcc6096f98d2a813a7cecb38b8af062d"
@@ -6490,14 +6455,6 @@ metro-config@0.76.8:
metro-core "0.76.8"
metro-runtime "0.76.8"
-metro-core@0.76.7:
- version "0.76.7"
- resolved "https://registry.yarnpkg.com/metro-core/-/metro-core-0.76.7.tgz#5d2b8bac2cde801dc22666ad7be1336d1f021b61"
- integrity sha512-0b8KfrwPmwCMW+1V7ZQPkTy2tsEKZjYG9Pu1PTsu463Z9fxX7WaR0fcHFshv+J1CnQSUTwIGGjbNvj1teKe+pw==
- dependencies:
- lodash.throttle "^4.1.1"
- metro-resolver "0.76.7"
-
metro-core@0.76.8:
version "0.76.8"
resolved "https://registry.yarnpkg.com/metro-core/-/metro-core-0.76.8.tgz#917c8157c63406cb223522835abb8e7c6291dcad"
@@ -6506,26 +6463,6 @@ metro-core@0.76.8:
lodash.throttle "^4.1.1"
metro-resolver "0.76.8"
-metro-file-map@0.76.7:
- version "0.76.7"
- resolved "https://registry.yarnpkg.com/metro-file-map/-/metro-file-map-0.76.7.tgz#0f041a4f186ac672f0188180310609c8483ffe89"
- integrity sha512-s+zEkTcJ4mOJTgEE2ht4jIo1DZfeWreQR3tpT3gDV/Y/0UQ8aJBTv62dE775z0GLsWZApiblAYZsj7ZE8P06nw==
- dependencies:
- anymatch "^3.0.3"
- debug "^2.2.0"
- fb-watchman "^2.0.0"
- graceful-fs "^4.2.4"
- invariant "^2.2.4"
- jest-regex-util "^27.0.6"
- jest-util "^27.2.0"
- jest-worker "^27.2.0"
- micromatch "^4.0.4"
- node-abort-controller "^3.1.1"
- nullthrows "^1.1.1"
- walker "^1.0.7"
- optionalDependencies:
- fsevents "^2.3.2"
-
metro-file-map@0.76.8:
version "0.76.8"
resolved "https://registry.yarnpkg.com/metro-file-map/-/metro-file-map-0.76.8.tgz#a1db1185b6c316904ba6b53d628e5d1323991d79"
@@ -6546,17 +6483,6 @@ metro-file-map@0.76.8:
optionalDependencies:
fsevents "^2.3.2"
-metro-inspector-proxy@0.76.7:
- version "0.76.7"
- resolved "https://registry.yarnpkg.com/metro-inspector-proxy/-/metro-inspector-proxy-0.76.7.tgz#c067df25056e932002a72a4b45cf7b4b749f808e"
- integrity sha512-rNZ/6edTl/1qUekAhAbaFjczMphM50/UjtxiKulo6vqvgn/Mjd9hVqDvVYfAMZXqPvlusD88n38UjVYPkruLSg==
- dependencies:
- connect "^3.6.5"
- debug "^2.2.0"
- node-fetch "^2.2.0"
- ws "^7.5.1"
- yargs "^17.6.2"
-
metro-inspector-proxy@0.76.8:
version "0.76.8"
resolved "https://registry.yarnpkg.com/metro-inspector-proxy/-/metro-inspector-proxy-0.76.8.tgz#6b8678a7461b0b42f913a7881cc9319b4d3cddff"
@@ -6573,13 +6499,6 @@ metro-memory-fs@0.76.7:
resolved "https://registry.yarnpkg.com/metro-memory-fs/-/metro-memory-fs-0.76.7.tgz#e5579a46be8da936f9bded9134e8d8a0268526b9"
integrity sha512-dGfgPtF47F5N6ssQTZWd/TVz0OeZTDCpZMEV5La0nclcKNge4YlvgpOD+HTCklGL0+Onjw+W0+DjqjNH90amKA==
-metro-minify-terser@0.76.7:
- version "0.76.7"
- resolved "https://registry.yarnpkg.com/metro-minify-terser/-/metro-minify-terser-0.76.7.tgz#aefac8bb8b6b3a0fcb5ea0238623cf3e100893ff"
- integrity sha512-FQiZGhIxCzhDwK4LxyPMLlq0Tsmla10X7BfNGlYFK0A5IsaVKNJbETyTzhpIwc+YFRT4GkFFwgo0V2N5vxO5HA==
- dependencies:
- terser "^5.15.0"
-
metro-minify-terser@0.76.8:
version "0.76.8"
resolved "https://registry.yarnpkg.com/metro-minify-terser/-/metro-minify-terser-0.76.8.tgz#915ab4d1419257fc6a0b9fa15827b83fe69814bf"
@@ -6587,13 +6506,6 @@ metro-minify-terser@0.76.8:
dependencies:
terser "^5.15.0"
-metro-minify-uglify@0.76.7:
- version "0.76.7"
- resolved "https://registry.yarnpkg.com/metro-minify-uglify/-/metro-minify-uglify-0.76.7.tgz#3e0143786718dcaea4e28a724698d4f8ac199a43"
- integrity sha512-FuXIU3j2uNcSvQtPrAJjYWHruPiQ+EpE++J9Z+VznQKEHcIxMMoQZAfIF2IpZSrZYfLOjVFyGMvj41jQMxV1Vw==
- dependencies:
- uglify-es "^3.1.9"
-
metro-minify-uglify@0.76.8:
version "0.76.8"
resolved "https://registry.yarnpkg.com/metro-minify-uglify/-/metro-minify-uglify-0.76.8.tgz#74745045ea2dd29f8783db483b2fce58385ba695"
@@ -6713,24 +6625,11 @@ metro-react-native-babel-transformer@0.76.8:
metro-react-native-babel-preset "0.76.8"
nullthrows "^1.1.1"
-metro-resolver@0.76.7:
- version "0.76.7"
- resolved "https://registry.yarnpkg.com/metro-resolver/-/metro-resolver-0.76.7.tgz#f00ebead64e451c060f30926ecbf4f797588df52"
- integrity sha512-pC0Wgq29HHIHrwz23xxiNgylhI8Rq1V01kQaJ9Kz11zWrIdlrH0ZdnJ7GC6qA0ErROG+cXmJ0rJb8/SW1Zp2IA==
-
metro-resolver@0.76.8:
version "0.76.8"
resolved "https://registry.yarnpkg.com/metro-resolver/-/metro-resolver-0.76.8.tgz#0862755b9b84e26853978322464fb37c6fdad76d"
integrity sha512-KccOqc10vrzS7ZhG2NSnL2dh3uVydarB7nOhjreQ7C4zyWuiW9XpLC4h47KtGQv3Rnv/NDLJYeDqaJ4/+140HQ==
-metro-runtime@0.76.7:
- version "0.76.7"
- resolved "https://registry.yarnpkg.com/metro-runtime/-/metro-runtime-0.76.7.tgz#4d75f2dbbcd19a4f01e0d89494e140b0ba8247e4"
- integrity sha512-MuWHubQHymUWBpZLwuKZQgA/qbb35WnDAKPo83rk7JRLIFPvzXSvFaC18voPuzJBt1V98lKQIonh6MiC9gd8Ug==
- dependencies:
- "@babel/runtime" "^7.0.0"
- react-refresh "^0.4.0"
-
metro-runtime@0.76.8:
version "0.76.8"
resolved "https://registry.yarnpkg.com/metro-runtime/-/metro-runtime-0.76.8.tgz#74b2d301a2be5f3bbde91b8f1312106f8ffe50c3"
@@ -6739,20 +6638,6 @@ metro-runtime@0.76.8:
"@babel/runtime" "^7.0.0"
react-refresh "^0.4.0"
-metro-source-map@0.76.7:
- version "0.76.7"
- resolved "https://registry.yarnpkg.com/metro-source-map/-/metro-source-map-0.76.7.tgz#9a4aa3a35e1e8ffde9a74cd7ab5f49d9d4a4da14"
- integrity sha512-Prhx7PeRV1LuogT0Kn5VjCuFu9fVD68eefntdWabrksmNY6mXK8pRqzvNJOhTojh6nek+RxBzZeD6MIOOyXS6w==
- dependencies:
- "@babel/traverse" "^7.20.0"
- "@babel/types" "^7.20.0"
- invariant "^2.2.4"
- metro-symbolicate "0.76.7"
- nullthrows "^1.1.1"
- ob1 "0.76.7"
- source-map "^0.5.6"
- vlq "^1.0.0"
-
metro-source-map@0.76.8:
version "0.76.8"
resolved "https://registry.yarnpkg.com/metro-source-map/-/metro-source-map-0.76.8.tgz#f085800152a6ba0b41ca26833874d31ec36c5a53"
@@ -6767,18 +6652,6 @@ metro-source-map@0.76.8:
source-map "^0.5.6"
vlq "^1.0.0"
-metro-symbolicate@0.76.7:
- version "0.76.7"
- resolved "https://registry.yarnpkg.com/metro-symbolicate/-/metro-symbolicate-0.76.7.tgz#1720e6b4ce5676935d7a8a440f25d3f16638e87a"
- integrity sha512-p0zWEME5qLSL1bJb93iq+zt5fz3sfVn9xFYzca1TJIpY5MommEaS64Va87lp56O0sfEIvh4307Oaf/ZzRjuLiQ==
- dependencies:
- invariant "^2.2.4"
- metro-source-map "0.76.7"
- nullthrows "^1.1.1"
- source-map "^0.5.6"
- through2 "^2.0.1"
- vlq "^1.0.0"
-
metro-symbolicate@0.76.8:
version "0.76.8"
resolved "https://registry.yarnpkg.com/metro-symbolicate/-/metro-symbolicate-0.76.8.tgz#f102ac1a306d51597ecc8fdf961c0a88bddbca03"
@@ -6791,17 +6664,6 @@ metro-symbolicate@0.76.8:
through2 "^2.0.1"
vlq "^1.0.0"
-metro-transform-plugins@0.76.7:
- version "0.76.7"
- resolved "https://registry.yarnpkg.com/metro-transform-plugins/-/metro-transform-plugins-0.76.7.tgz#5d5f75371706fbf5166288e43ffd36b5e5bd05bc"
- integrity sha512-iSmnjVApbdivjuzb88Orb0JHvcEt5veVyFAzxiS5h0QB+zV79w6JCSqZlHCrbNOkOKBED//LqtKbFVakxllnNg==
- dependencies:
- "@babel/core" "^7.20.0"
- "@babel/generator" "^7.20.0"
- "@babel/template" "^7.0.0"
- "@babel/traverse" "^7.20.0"
- nullthrows "^1.1.1"
-
metro-transform-plugins@0.76.8:
version "0.76.8"
resolved "https://registry.yarnpkg.com/metro-transform-plugins/-/metro-transform-plugins-0.76.8.tgz#d77c28a6547a8e3b72250f740fcfbd7f5408f8ba"
@@ -6813,24 +6675,6 @@ metro-transform-plugins@0.76.8:
"@babel/traverse" "^7.20.0"
nullthrows "^1.1.1"
-metro-transform-worker@0.76.7:
- version "0.76.7"
- resolved "https://registry.yarnpkg.com/metro-transform-worker/-/metro-transform-worker-0.76.7.tgz#b842d5a542f1806cca401633fc002559b3e3d668"
- integrity sha512-cGvELqFMVk9XTC15CMVzrCzcO6sO1lURfcbgjuuPdzaWuD11eEyocvkTX0DPiRjsvgAmicz4XYxVzgYl3MykDw==
- dependencies:
- "@babel/core" "^7.20.0"
- "@babel/generator" "^7.20.0"
- "@babel/parser" "^7.20.0"
- "@babel/types" "^7.20.0"
- babel-preset-fbjs "^3.4.0"
- metro "0.76.7"
- metro-babel-transformer "0.76.7"
- metro-cache "0.76.7"
- metro-cache-key "0.76.7"
- metro-source-map "0.76.7"
- metro-transform-plugins "0.76.7"
- nullthrows "^1.1.1"
-
metro-transform-worker@0.76.8:
version "0.76.8"
resolved "https://registry.yarnpkg.com/metro-transform-worker/-/metro-transform-worker-0.76.8.tgz#b9012a196cee205170d0c899b8b175b9305acdea"
@@ -6849,60 +6693,6 @@ metro-transform-worker@0.76.8:
metro-transform-plugins "0.76.8"
nullthrows "^1.1.1"
-metro@0.76.7:
- version "0.76.7"
- resolved "https://registry.yarnpkg.com/metro/-/metro-0.76.7.tgz#4885917ad28738c7d1e556630e0155f687336230"
- integrity sha512-67ZGwDeumEPnrHI+pEDSKH2cx+C81Gx8Mn5qOtmGUPm/Up9Y4I1H2dJZ5n17MWzejNo0XAvPh0QL0CrlJEODVQ==
- dependencies:
- "@babel/code-frame" "^7.0.0"
- "@babel/core" "^7.20.0"
- "@babel/generator" "^7.20.0"
- "@babel/parser" "^7.20.0"
- "@babel/template" "^7.0.0"
- "@babel/traverse" "^7.20.0"
- "@babel/types" "^7.20.0"
- accepts "^1.3.7"
- async "^3.2.2"
- chalk "^4.0.0"
- ci-info "^2.0.0"
- connect "^3.6.5"
- debug "^2.2.0"
- denodeify "^1.2.1"
- error-stack-parser "^2.0.6"
- graceful-fs "^4.2.4"
- hermes-parser "0.12.0"
- image-size "^1.0.2"
- invariant "^2.2.4"
- jest-worker "^27.2.0"
- jsc-safe-url "^0.2.2"
- lodash.throttle "^4.1.1"
- metro-babel-transformer "0.76.7"
- metro-cache "0.76.7"
- metro-cache-key "0.76.7"
- metro-config "0.76.7"
- metro-core "0.76.7"
- metro-file-map "0.76.7"
- metro-inspector-proxy "0.76.7"
- metro-minify-terser "0.76.7"
- metro-minify-uglify "0.76.7"
- metro-react-native-babel-preset "0.76.7"
- metro-resolver "0.76.7"
- metro-runtime "0.76.7"
- metro-source-map "0.76.7"
- metro-symbolicate "0.76.7"
- metro-transform-plugins "0.76.7"
- metro-transform-worker "0.76.7"
- mime-types "^2.1.27"
- node-fetch "^2.2.0"
- nullthrows "^1.1.1"
- rimraf "^3.0.2"
- serialize-error "^2.1.0"
- source-map "^0.5.6"
- strip-ansi "^6.0.0"
- throat "^5.0.0"
- ws "^7.5.1"
- yargs "^17.6.2"
-
metro@0.76.8:
version "0.76.8"
resolved "https://registry.yarnpkg.com/metro/-/metro-0.76.8.tgz#ba526808b99977ca3f9ac5a7432fd02a340d13a6"
@@ -7203,11 +6993,6 @@ oauth-sign@~0.9.0:
resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455"
integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==
-ob1@0.76.7:
- version "0.76.7"
- resolved "https://registry.yarnpkg.com/ob1/-/ob1-0.76.7.tgz#95b68fadafd47e7a6a0ad64cf80f3140dd6d1124"
- integrity sha512-BQdRtxxoUNfSoZxqeBGOyuT9nEYSn18xZHwGMb0mMVpn2NBcYbnyKY4BK2LIHRgw33CBGlUmE+KMaNvyTpLLtQ==
-
ob1@0.76.8:
version "0.76.8"
resolved "https://registry.yarnpkg.com/ob1/-/ob1-0.76.8.tgz#ac4c459465b1c0e2c29aaa527e09fc463d3ffec8"
@@ -7607,7 +7392,7 @@ prompts@^2.0.1, prompts@^2.4.0:
kleur "^3.0.3"
sisteransi "^1.0.5"
-prop-types@*, prop-types@^15.8.1:
+prop-types@^15.8.1:
version "15.8.1"
resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5"
integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==