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==