From 816ddb3ffa3facc7d52bfb783b7abbf1ed541e82 Mon Sep 17 00:00:00 2001 From: Alex Hunt Date: Fri, 11 Aug 2023 11:05:06 -0700 Subject: [PATCH] Sync latest cli-plugin-metro changes (#38944) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Summary: Pull Request resolved: https://github.com/facebook/react-native/pull/38944 - Update `cli-commands` package to reflect latest source `react-native-community/cli-plugin-metro` changes. - https://github.com/react-native-community/cli/pull/2021 - https://github.com/react-native-community/cli/pull/2024 - https://github.com/react-native-community/cli/pull/2043 - https://github.com/react-native-community/cli/pull/2047 - Upgrade to RN CLI `12.0.0-alpha.9`, including Metro bump to `0.78.0`. ### To do WARNING: ~~This PR is non-functional until the next CLI alpha is published and bumped in `package.json` — since it depends on corresponding new APIs in `react-native-community/cli-tools` (https://github.com/react-native-community/cli/pull/2021). This package (and the upcoming work which integrates it) has been tested against locally linked copies of latest CLI.~~ - [x] Bump CLI dependencies when next alpha published. - [x] Ensure Metro bump from `0.77.0` to `0.78.0` is consistently applied with this. Changelog: [Internal] Reviewed By: motiz88 Differential Revision: D48066179 fbshipit-source-id: 77c30bc92df3cc4d84a097e78519e097157293a4 --- .../cli-tools_v12.x.x.js | 28 ++ package.json | 4 +- .../community-cli-plugin/launchPackager.bat | 7 - .../launchPackager.command | 10 - packages/community-cli-plugin/package.json | 18 +- .../src/commands/start/index.js | 2 - .../src/commands/start/runServer.js | 60 ++- .../commands/start/startServerInNewWindow.js | 125 ----- .../src/commands/start/watchMode.js | 73 +-- .../src/utils/KeyPressHandler.js | 89 ++++ .../src/utils/loadMetroConfig.js | 28 +- packages/metro-config/package.json | 4 +- packages/react-native/package.json | 10 +- yarn.lock | 472 +++++++----------- 14 files changed, 409 insertions(+), 521 deletions(-) delete mode 100644 packages/community-cli-plugin/launchPackager.bat delete mode 100755 packages/community-cli-plugin/launchPackager.command delete mode 100644 packages/community-cli-plugin/src/commands/start/startServerInNewWindow.js create mode 100644 packages/community-cli-plugin/src/utils/KeyPressHandler.js diff --git a/flow-typed/npm/@react-native-community/cli-tools_v12.x.x.js b/flow-typed/npm/@react-native-community/cli-tools_v12.x.x.js index 9c78411325744e..a855762f78c9b5 100644 --- a/flow-typed/npm/@react-native-community/cli-tools_v12.x.x.js +++ b/flow-typed/npm/@react-native-community/cli-tools_v12.x.x.js @@ -10,12 +10,38 @@ */ declare module '@react-native-community/cli-tools' { + declare export function addInteractionListener( + callback: (options: {pause: boolean, canEscape?: boolean}) => void, + ): void; + declare export class CLIError extends Error { constructor(msg: string, originalError?: Error | mixed | string): this; } + declare export function getPidFromPort(port: number): number | null; + + declare export function handlePortUnavailable( + initialPort: number, + projectRoot: string, + initialPackager?: boolean, + ): Promise<{ + port: number, + packager: boolean, + }>; + declare export function hookStdout(callback: Function): () => void; + declare export function isPackagerRunning( + packagerPort: string | number | void, + ): Promise< + | { + status: 'running', + root: string, + } + | 'not_running' + | 'unrecognized', + >; + declare export const logger: $ReadOnly<{ success: (...message: Array) => void, info: (...message: Array) => void, @@ -29,6 +55,8 @@ declare module '@react-native-community/cli-tools' { enable: () => void, }>; + declare export function logAlreadyRunningBundler(port: number): void; + declare export function resolveNodeModuleDir( root: string, packageName: string, diff --git a/package.json b/package.json index 983b9f055026f7..7b5c624828696c 100644 --- a/package.json +++ b/package.json @@ -88,8 +88,8 @@ "jest": "^29.2.1", "jest-junit": "^10.0.0", "jscodeshift": "^0.14.0", - "metro-babel-register": "0.77.0", - "metro-memory-fs": "0.77.0", + "metro-babel-register": "0.78.0", + "metro-memory-fs": "0.78.0", "micromatch": "^4.0.4", "mkdirp": "^0.5.1", "mock-fs": "^5.1.4", diff --git a/packages/community-cli-plugin/launchPackager.bat b/packages/community-cli-plugin/launchPackager.bat deleted file mode 100644 index a76f4f06fe353f..00000000000000 --- a/packages/community-cli-plugin/launchPackager.bat +++ /dev/null @@ -1,7 +0,0 @@ -@echo off -title Metro -call .packager.bat -cd "%PROJECT_ROOT%" -node "%REACT_NATIVE_PATH%/cli.js" start -pause -exit diff --git a/packages/community-cli-plugin/launchPackager.command b/packages/community-cli-plugin/launchPackager.command deleted file mode 100755 index 5fb23c56e451ea..00000000000000 --- a/packages/community-cli-plugin/launchPackager.command +++ /dev/null @@ -1,10 +0,0 @@ -THIS_DIR=$(cd -P "$(dirname "$(readlink "${BASH_SOURCE[0]}" || echo "${BASH_SOURCE[0]}")")" && pwd) - -source "$THIS_DIR/.packager.env" -cd $PROJECT_ROOT -$REACT_NATIVE_PATH/cli.js start - -if [[ -z "$CI" ]]; then - echo "Process terminated. Press to close the window" - read -r -fi diff --git a/packages/community-cli-plugin/package.json b/packages/community-cli-plugin/package.json index 48ad246a77963b..027fe1d12be6a8 100644 --- a/packages/community-cli-plugin/package.json +++ b/packages/community-cli-plugin/package.json @@ -19,22 +19,22 @@ "./package.json": "./package.json" }, "files": [ - "dist", - "launchPackager.bat", - "launchPackager.command" + "dist" ], "dependencies": { - "@react-native-community/cli-server-api": "12.0.0-alpha.7", - "@react-native-community/cli-tools": "12.0.0-alpha.7", + "@react-native-community/cli-server-api": "12.0.0-alpha.9", + "@react-native-community/cli-tools": "12.0.0-alpha.9", "@react-native/metro-babel-transformer": "^0.73.11", "chalk": "^4.0.0", "execa": "^5.1.1", - "metro": "0.77.0", - "metro-config": "0.77.0", - "metro-core": "0.77.0", - "metro-resolver": "0.77.0", + "metro": "0.78.0", + "metro-config": "0.78.0", + "metro-core": "0.78.0", "readline": "^1.3.0" }, + "devDependencies": { + "metro-resolver": "0.78.0" + }, "engines": { "node": ">=18" } diff --git a/packages/community-cli-plugin/src/commands/start/index.js b/packages/community-cli-plugin/src/commands/start/index.js index 8bb8da768ed257..abc7ac6431b5c6 100644 --- a/packages/community-cli-plugin/src/commands/start/index.js +++ b/packages/community-cli-plugin/src/commands/start/index.js @@ -93,5 +93,3 @@ export default { }, ], }; - -export {startServerInNewWindow} from './startServerInNewWindow'; diff --git a/packages/community-cli-plugin/src/commands/start/runServer.js b/packages/community-cli-plugin/src/commands/start/runServer.js index 92e47ee5eb825d..daadd410b5e623 100644 --- a/packages/community-cli-plugin/src/commands/start/runServer.js +++ b/packages/community-cli-plugin/src/commands/start/runServer.js @@ -16,6 +16,7 @@ import typeof TerminalReporter from 'metro/src/lib/TerminalReporter'; import type Server from 'metro/src/Server'; import type {Middleware} from 'metro-config'; +import chalk from 'chalk'; import Metro from 'metro'; import {Terminal} from 'metro-core'; import path from 'path'; @@ -23,9 +24,15 @@ import { createDevServerMiddleware, indexPageMiddleware, } from '@react-native-community/cli-server-api'; +import { + isPackagerRunning, + logger, + version, + logAlreadyRunningBundler, + handlePortUnavailable, +} from '@react-native-community/cli-tools'; import loadMetroConfig from '../../utils/loadMetroConfig'; -import {version} from '@react-native-community/cli-tools'; import enableWatchMode from './watchMode'; export type Args = { @@ -48,7 +55,43 @@ export type Args = { }; async function runServer(_argv: Array, ctx: Config, args: Args) { - let reportEvent: (event: any) => void; + let port = args.port ?? 8081; + let packager = true; + const packagerStatus = await isPackagerRunning(port); + + if ( + typeof packagerStatus === 'object' && + packagerStatus.status === 'running' + ) { + if (packagerStatus.root === ctx.root) { + packager = false; + logAlreadyRunningBundler(port); + } else { + const result = await handlePortUnavailable(port, ctx.root, packager); + [port, packager] = [result.port, result.packager]; + } + } else if (packagerStatus === 'unrecognized') { + const result = await handlePortUnavailable(port, ctx.root, packager); + [port, packager] = [result.port, result.packager]; + } + + if (packager === false) { + process.exit(); + } + + logger.info(`Starting dev server on port ${chalk.bold(String(port))}`); + + const metroConfig = await loadMetroConfig(ctx, { + config: args.config, + maxWorkers: args.maxWorkers, + port: port, + resetCache: args.resetCache, + watchFolders: args.watchFolders, + projectRoot: args.projectRoot, + sourceExts: args.sourceExts, + }); + + let reportEvent: (event: TerminalReportableEvent) => void; const terminal = new Terminal(process.stdout); const ReporterImpl = getReporterImpl(args.customLogReporterPath); const terminalReporter = new ReporterImpl(terminal); @@ -60,17 +103,8 @@ async function runServer(_argv: Array, ctx: Config, args: Args) { } }, }; - - const metroConfig = await loadMetroConfig(ctx, { - config: args.config, - maxWorkers: args.maxWorkers, - port: args.port, - resetCache: args.resetCache, - watchFolders: args.watchFolders, - projectRoot: args.projectRoot, - sourceExts: args.sourceExts, - reporter, - }); + // $FlowIgnore[cannot-write] Assigning to readonly property + metroConfig.reporter = reporter; if (args.assetPlugins) { // $FlowIgnore[cannot-write] Assigning to readonly property diff --git a/packages/community-cli-plugin/src/commands/start/startServerInNewWindow.js b/packages/community-cli-plugin/src/commands/start/startServerInNewWindow.js deleted file mode 100644 index 677512ce2148c9..00000000000000 --- a/packages/community-cli-plugin/src/commands/start/startServerInNewWindow.js +++ /dev/null @@ -1,125 +0,0 @@ -/** - * 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. - * - * @flow - * @format - * @oncall react_native - */ - -import type {ExecaPromise, SyncResult} from 'execa'; - -import path from 'path'; -import fs from 'fs'; -import execa from 'execa'; -import { - CLIError, - logger, - resolveNodeModuleDir, -} from '@react-native-community/cli-tools'; - -export function startServerInNewWindow( - port: number, - terminal: string, - projectRoot: string, - reactNativePath: string, -): SyncResult | ExecaPromise | CLIError | void { - /** - * Set up OS-specific filenames and commands - */ - const isWindows = /^win/.test(process.platform); - const scriptFile = isWindows - ? 'launchPackager.bat' - : 'launchPackager.command'; - const packagerEnvFilename = isWindows ? '.packager.bat' : '.packager.env'; - const packagerEnvFileExportContent = isWindows - ? `set RCT_METRO_PORT=${port}\nset PROJECT_ROOT=${projectRoot}\nset REACT_NATIVE_PATH=${reactNativePath}` - : `export RCT_METRO_PORT=${port}\nexport PROJECT_ROOT=${projectRoot}\nexport REACT_NATIVE_PATH=${reactNativePath}`; - const nodeModulesPath = resolveNodeModuleDir(projectRoot, '.bin'); - const cliPluginMetroPath = path.join( - path.dirname( - require.resolve('@react-native/community-cli-plugin/package.json'), - ), - 'build', - ); - - /** - * Set up the `.packager.(env|bat)` file to ensure the packager starts on the right port and in right directory. - */ - const packagerEnvFile = path.join(nodeModulesPath, `${packagerEnvFilename}`); - - /** - * Set up the `launchPackager.(command|bat)` file. - * It lives next to `.packager.(bat|env)` - */ - const launchPackagerScript = path.join(nodeModulesPath, scriptFile); - const procConfig = {cwd: path.dirname(packagerEnvFile)}; - - /** - * Ensure we overwrite file by passing the `w` flag - */ - fs.writeFileSync(packagerEnvFile, packagerEnvFileExportContent, { - encoding: 'utf8', - flag: 'w', - }); - - /** - * Copy files into `node_modules/.bin`. - */ - - try { - if (isWindows) { - fs.copyFileSync( - path.join(cliPluginMetroPath, 'launchPackager.bat'), - path.join(nodeModulesPath, 'launchPackager.bat'), - ); - } else { - fs.copyFileSync( - path.join(cliPluginMetroPath, 'launchPackager.command'), - path.join(nodeModulesPath, 'launchPackager.command'), - ); - } - } catch (error) { - return new CLIError( - `Couldn't copy the script for running bundler. Please check if the "${scriptFile}" file exists in the "node_modules/@react-native/community-cli-plugin" folder and try again.`, - error, - ); - } - - if (process.platform === 'darwin') { - try { - return execa.sync( - 'open', - ['-a', terminal, launchPackagerScript], - procConfig, - ); - } catch (error) { - return execa.sync('open', [launchPackagerScript], procConfig); - } - } - if (process.platform === 'linux') { - try { - return execa.sync(terminal, ['-e', `sh ${launchPackagerScript}`], { - ...procConfig, - detached: true, - }); - } catch (error) { - // By default, the child shell process will be attached to the parent - return execa.sync('sh', [launchPackagerScript], procConfig); - } - } - if (isWindows) { - // Awaiting this causes the CLI to hang indefinitely, so this must execute without await. - return execa('cmd.exe', ['/C', launchPackagerScript], { - ...procConfig, - detached: true, - stdio: 'ignore', - }); - } - logger.error( - `Cannot start the packager. Unknown platform ${process.platform}`, - ); - return; -} diff --git a/packages/community-cli-plugin/src/commands/start/watchMode.js b/packages/community-cli-plugin/src/commands/start/watchMode.js index 42721e4ef1555f..2a2e15fb833488 100644 --- a/packages/community-cli-plugin/src/commands/start/watchMode.js +++ b/packages/community-cli-plugin/src/commands/start/watchMode.js @@ -12,9 +12,17 @@ import type {Config} from '@react-native-community/cli-types'; import readline from 'readline'; -import {logger, hookStdout} from '@react-native-community/cli-tools'; +import { + addInteractionListener, + logger, + hookStdout, +} from '@react-native-community/cli-tools'; import execa from 'execa'; import chalk from 'chalk'; +import {KeyPressHandler} from '../../utils/KeyPressHandler'; + +const CTRL_C = '\u0003'; +const CTRL_Z = '\u0026'; function printWatchModeInstructions() { logger.log( @@ -59,43 +67,44 @@ function enableWatchMode( } }); - process.stdin.on( - 'keypress', - (_key: string, data: {ctrl: boolean, name: string}) => { - const {ctrl, name} = data; - if (ctrl === true) { - switch (name) { - case 'c': - process.exit(); - break; - case 'z': - process.emit('SIGTSTP', 'SIGTSTP'); - break; - } - } else if (name === 'r') { + const onPressAsync = async (key: string) => { + switch (key) { + case 'r': messageSocket.broadcast('reload', null); logger.info('Reloading app...'); - } else if (name === 'd') { + break; + case 'd': messageSocket.broadcast('devMenu', null); - logger.info('Opening developer menu...'); - } else if (name === 'i' || name === 'a') { - logger.info( - `Opening the app on ${name === 'i' ? 'iOS' : 'Android'}...`, - ); - const params = - name === 'i' - ? ctx.project.ios?.watchModeCommandParams - : ctx.project.android?.watchModeCommandParams; + logger.info('Opening Dev Menu...'); + break; + case 'i': + logger.info('Opening app on iOS...'); execa('npx', [ 'react-native', - name === 'i' ? 'run-ios' : 'run-android', - ...(params ?? []), + 'run-ios', + ...(ctx.project.ios?.watchModeCommandParams ?? []), ]).stdout?.pipe(process.stdout); - } else { - console.log(_key); - } - }, - ); + break; + case 'a': + logger.info('Opening app on Android...'); + execa('npx', [ + 'react-native', + 'run-android', + ...(ctx.project.android?.watchModeCommandParams ?? []), + ]).stdout?.pipe(process.stdout); + break; + case CTRL_Z: + process.emit('SIGTSTP', 'SIGTSTP'); + break; + case CTRL_C: + process.exit(); + } + }; + + const keyPressHandler = new KeyPressHandler(onPressAsync); + const listener = keyPressHandler.createInteractionListener(); + addInteractionListener(listener); + keyPressHandler.startInterceptingKeyStrokes(); } export default enableWatchMode; diff --git a/packages/community-cli-plugin/src/utils/KeyPressHandler.js b/packages/community-cli-plugin/src/utils/KeyPressHandler.js new file mode 100644 index 00000000000000..2ae1b5d890ff01 --- /dev/null +++ b/packages/community-cli-plugin/src/utils/KeyPressHandler.js @@ -0,0 +1,89 @@ +/** + * 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. + * + * @flow + * @format + * @oncall react_native + */ + +import {CLIError, logger} from '@react-native-community/cli-tools'; + +const CTRL_C = '\u0003'; + +/** An abstract key stroke interceptor. */ +export class KeyPressHandler { + _isInterceptingKeyStrokes = false; + _isHandlingKeyPress = false; + _onPress: (key: string) => Promise; + + constructor(onPress: (key: string) => Promise) { + this._onPress = onPress; + } + + /** Start observing interaction pause listeners. */ + createInteractionListener(): ({pause: boolean, ...}) => void { + // Support observing prompts. + let wasIntercepting = false; + + const listener = ({pause}: {pause: boolean, ...}) => { + if (pause) { + // Track if we were already intercepting key strokes before pausing, so we can + // resume after pausing. + wasIntercepting = this._isInterceptingKeyStrokes; + this.stopInterceptingKeyStrokes(); + } else if (wasIntercepting) { + // Only start if we were previously intercepting. + this.startInterceptingKeyStrokes(); + } + }; + + return listener; + } + + _handleKeypress = async (key: string): Promise => { + // Prevent sending another event until the previous event has finished. + if (this._isHandlingKeyPress && key !== CTRL_C) { + return; + } + this._isHandlingKeyPress = true; + try { + logger.debug(`Key pressed: ${key}`); + await this._onPress(key); + } catch (error) { + return new CLIError('There was an error with the key press handler.'); + } finally { + this._isHandlingKeyPress = false; + return; + } + }; + + /** Start intercepting all key strokes and passing them to the input `onPress` method. */ + startInterceptingKeyStrokes() { + if (this._isInterceptingKeyStrokes) { + return; + } + this._isInterceptingKeyStrokes = true; + const {stdin} = process; + // $FlowFixMe[prop-missing] + stdin.setRawMode(true); + stdin.resume(); + stdin.setEncoding('utf8'); + stdin.on('data', this._handleKeypress); + } + + /** Stop intercepting all key strokes. */ + stopInterceptingKeyStrokes() { + if (!this._isInterceptingKeyStrokes) { + return; + } + this._isInterceptingKeyStrokes = false; + const {stdin} = process; + stdin.removeListener('data', this._handleKeypress); + // $FlowFixMe[prop-missing] + stdin.setRawMode(false); + stdin.resume(); + } +} diff --git a/packages/community-cli-plugin/src/utils/loadMetroConfig.js b/packages/community-cli-plugin/src/utils/loadMetroConfig.js index fb278955657175..65a327bcbf1d7b 100644 --- a/packages/community-cli-plugin/src/utils/loadMetroConfig.js +++ b/packages/community-cli-plugin/src/utils/loadMetroConfig.js @@ -10,7 +10,7 @@ */ import type {Config} from '@react-native-community/cli-types'; -import type {ConfigT, InputConfigT} from 'metro-config'; +import type {ConfigT, InputConfigT, YargArguments} from 'metro-config'; import path from 'path'; import {loadConfig, mergeConfig, resolveConfig} from 'metro-config'; @@ -69,17 +69,6 @@ function getOverrideConfig(ctx: ConfigLoadingContext): InputConfigT { }; } -export type ConfigOptionsT = $ReadOnly<{ - maxWorkers?: number, - port?: number, - projectRoot?: string, - resetCache?: boolean, - watchFolders?: string[], - sourceExts?: string[], - reporter?: any, - config?: string, -}>; - /** * Load Metro config. * @@ -88,17 +77,15 @@ export type ConfigOptionsT = $ReadOnly<{ */ export default async function loadMetroConfig( ctx: ConfigLoadingContext, - options: ConfigOptionsT = {}, + options: YargArguments = {}, ): Promise { const overrideConfig = getOverrideConfig(ctx); - if (options.reporter) { - overrideConfig.reporter = options.reporter; - } - const projectConfig = await resolveConfig(undefined, ctx.root); + const cwd = ctx.root; + const projectConfig = await resolveConfig(options.config, cwd); if (projectConfig.isEmpty) { - throw new CLIError(`No metro config found in ${ctx.root}`); + throw new CLIError(`No Metro config found in ${cwd}`); } logger.debug(`Reading Metro config from ${projectConfig.filepath}`); @@ -119,7 +106,10 @@ This warning will be removed in future (https://github.com/facebook/metro/issues } return mergeConfig( - await loadConfig({cwd: ctx.root, ...options}), + await loadConfig({ + cwd, + ...options, + }), overrideConfig, ); } diff --git a/packages/metro-config/package.json b/packages/metro-config/package.json index 43010a983d55ad..47fb259db29d52 100644 --- a/packages/metro-config/package.json +++ b/packages/metro-config/package.json @@ -18,7 +18,7 @@ "dependencies": { "@react-native/metro-babel-transformer": "^0.73.11", "@react-native/js-polyfills": "^0.73.0", - "metro-config": "0.77.0", - "metro-runtime": "0.77.0" + "metro-config": "0.78.0", + "metro-runtime": "0.78.0" } } diff --git a/packages/react-native/package.json b/packages/react-native/package.json index 6b922d69818161..b0020399d0866b 100644 --- a/packages/react-native/package.json +++ b/packages/react-native/package.json @@ -92,9 +92,9 @@ }, "dependencies": { "@jest/create-cache-key-function": "^29.2.1", - "@react-native-community/cli": "12.0.0-alpha.7", - "@react-native-community/cli-platform-android": "12.0.0-alpha.7", - "@react-native-community/cli-platform-ios": "12.0.0-alpha.7", + "@react-native-community/cli": "12.0.0-alpha.9", + "@react-native-community/cli-platform-android": "12.0.0-alpha.9", + "@react-native-community/cli-platform-ios": "12.0.0-alpha.9", "@react-native/assets-registry": "^0.73.0", "@react-native/codegen": "^0.73.0", "@react-native/gradle-plugin": "^0.73.0", @@ -112,8 +112,8 @@ "jest-environment-node": "^29.2.1", "jsc-android": "^250231.0.0", "memoize-one": "^5.0.0", - "metro-runtime": "0.76.7", - "metro-source-map": "0.76.7", + "metro-runtime": "0.78.0", + "metro-source-map": "0.78.0", "mkdirp": "^0.5.1", "nullthrows": "^1.1.1", "pretty-format": "^26.5.2", diff --git a/yarn.lock b/yarn.lock index f97611334f0014..5a4d1f9670168b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2566,45 +2566,44 @@ optionalDependencies: npmlog "2 || ^3.1.0 || ^4.0.0" -"@react-native-community/cli-clean@12.0.0-alpha.7": - version "12.0.0-alpha.7" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-clean/-/cli-clean-12.0.0-alpha.7.tgz#9517509af3f4816c7e8767014a1515df2cedd0c5" - integrity sha512-V2ypcIMQ6ONqA2xMCz2LdOpOVLf1vXFbS2JDBWFTSvVKYmwIhigf2MnP7EWt8UtoHdv3gT3VFlgQDRzC6GPQhg== +"@react-native-community/cli-clean@12.0.0-alpha.9": + version "12.0.0-alpha.9" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-clean/-/cli-clean-12.0.0-alpha.9.tgz#f5b9615e65860fec8fdc60d80944bc6f06b76726" + integrity sha512-o0lnATX3GNA4MK7aVBpJj5nulPi9BucWlavnVrGpBRLGsNca2js1KrlIVhYYSZaVlCwf71IZsEMYa/1KN8YiRQ== dependencies: - "@react-native-community/cli-tools" "12.0.0-alpha.7" + "@react-native-community/cli-tools" "12.0.0-alpha.9" chalk "^4.1.2" execa "^5.0.0" - prompts "^2.4.0" + prompts "^2.4.2" -"@react-native-community/cli-config@12.0.0-alpha.7": - version "12.0.0-alpha.7" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-config/-/cli-config-12.0.0-alpha.7.tgz#1f8aa0d108876ca7a95101a13738c0a872e1185f" - integrity sha512-eZxFvt0b/3RbZ4WJ4f5wTJfh2CsnBDUzjbTkHwOM6ooemRdUd6D1Q0ZpyY0/4LoI95TZZxgE3JXftx935honGQ== +"@react-native-community/cli-config@12.0.0-alpha.9": + version "12.0.0-alpha.9" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-config/-/cli-config-12.0.0-alpha.9.tgz#bfe992b8abfb3f5e4ef578a5e984d52ef2cc605a" + integrity sha512-Kq/cAUITcZKGhA5HoN14ZRZrJen3Y+QWU2Zkyi2ho3nmgjUbCW5Y8AYERKL/uuEkWi8JB14+Ky8LJmfNbO1Rnw== dependencies: - "@react-native-community/cli-tools" "12.0.0-alpha.7" + "@react-native-community/cli-tools" "12.0.0-alpha.9" 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@12.0.0-alpha.7": - version "12.0.0-alpha.7" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-debugger-ui/-/cli-debugger-ui-12.0.0-alpha.7.tgz#4bcbde34a7b3677b9c75a174421e0fe0a3301ae3" - integrity sha512-pNDeN+D+sOpURRMFLUiiEPAk/F2U4Mj6zeRuwmDTXTJeBkY3Je0T1jukqmHyNoOXr4d/AduyQJdiy0u7HBZ+mQ== +"@react-native-community/cli-debugger-ui@12.0.0-alpha.9": + version "12.0.0-alpha.9" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-debugger-ui/-/cli-debugger-ui-12.0.0-alpha.9.tgz#5ac44925cd024882c39b056f62ec8712cf751252" + integrity sha512-l7Awe3TlBfnFmMQ2N+JoWSfYMIgHcySk056wI+tskc2OS2JJvnmHkASeHIrl0tnQuFcHluFxpK6nyvgkzcXJ7w== dependencies: serve-static "^1.13.1" -"@react-native-community/cli-doctor@12.0.0-alpha.7": - version "12.0.0-alpha.7" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-doctor/-/cli-doctor-12.0.0-alpha.7.tgz#327733a379480bc9073b434a829d262346dd1a8f" - integrity sha512-XyP3+PTzjWMqNln4MsYW/uCycdm70iq+gi+Ab3QslGvfunLw3oLtlm4zP2QYhshonoRdFJIzdIwVgc8e+YcoPQ== +"@react-native-community/cli-doctor@12.0.0-alpha.9": + version "12.0.0-alpha.9" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-doctor/-/cli-doctor-12.0.0-alpha.9.tgz#d27956902bc81f97e23d5dd15daa2ede668f507a" + integrity sha512-rTuCkcmMBmbFzJ9V8/7sipdM2ggjL2I04W5/Xn9OUwKVsHqydRaO9vyqOag+jwDgHMxHZO6OOr41nMQaa32z3w== dependencies: - "@react-native-community/cli-config" "12.0.0-alpha.7" - "@react-native-community/cli-platform-android" "12.0.0-alpha.7" - "@react-native-community/cli-platform-ios" "12.0.0-alpha.7" - "@react-native-community/cli-plugin-metro" "12.0.0-alpha.7" - "@react-native-community/cli-tools" "12.0.0-alpha.7" + "@react-native-community/cli-config" "12.0.0-alpha.9" + "@react-native-community/cli-platform-android" "12.0.0-alpha.9" + "@react-native-community/cli-platform-ios" "12.0.0-alpha.9" + "@react-native-community/cli-tools" "12.0.0-alpha.9" chalk "^4.1.2" command-exists "^1.2.8" envinfo "^7.7.2" @@ -2613,71 +2612,68 @@ ip "^1.1.5" node-stream-zip "^1.9.1" ora "^5.4.1" - prompts "^2.4.0" + prompts "^2.4.2" semver "^7.5.2" strip-ansi "^5.2.0" sudo-prompt "^9.0.0" wcwidth "^1.0.1" yaml "^2.2.1" -"@react-native-community/cli-hermes@12.0.0-alpha.7": - version "12.0.0-alpha.7" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-hermes/-/cli-hermes-12.0.0-alpha.7.tgz#d96075986bd31fce532d965d0b79d719da0f5b67" - integrity sha512-3cAlcxD0gRhFp2hDDn/AaO5o1kd2sAQDba7HGLwzf9MSkXH6ND8fs3GP93gEZMW9QYX6A/IULFkF5IfGgGZDag== +"@react-native-community/cli-hermes@12.0.0-alpha.9": + version "12.0.0-alpha.9" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-hermes/-/cli-hermes-12.0.0-alpha.9.tgz#a10b0795e3f29f65d055b480af6284981869bb43" + integrity sha512-CSHkkaUsdZpMSFhsCT5Xy6upl3HXB5jk06b8is8XObDHPxQGOt+U7GPuQ8O2O5Doa87mQ9y3uHVhFEmb0ANioQ== dependencies: - "@react-native-community/cli-platform-android" "12.0.0-alpha.7" - "@react-native-community/cli-tools" "12.0.0-alpha.7" + "@react-native-community/cli-platform-android" "12.0.0-alpha.9" + "@react-native-community/cli-tools" "12.0.0-alpha.9" chalk "^4.1.2" hermes-profile-transformer "^0.0.6" ip "^1.1.5" -"@react-native-community/cli-platform-android@12.0.0-alpha.7": - version "12.0.0-alpha.7" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-platform-android/-/cli-platform-android-12.0.0-alpha.7.tgz#4fb1dc41d71153be7b01a4dd64a4c8344f5019d1" - integrity sha512-tdSLwtfSrik5r1PDtK438i4No66506gdiT2+J6SqGbfCYV2InOx0PJhdvACFkRoa9hHmfqNx7JYN2qLMBL1/Fw== +"@react-native-community/cli-platform-android@12.0.0-alpha.9": + version "12.0.0-alpha.9" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-platform-android/-/cli-platform-android-12.0.0-alpha.9.tgz#609ff08357cbee51540c796f4df1bf6bdbd0cbdc" + integrity sha512-Q2eIOQ6iYyVrdjyB4pcSRqKvzp0S9130IIocLjvc/8+YmeU0bMoSLZ/uYAkVAoKD+VFP3Ry6US6CLzNvxFwDzw== dependencies: - "@react-native-community/cli-tools" "12.0.0-alpha.7" + "@react-native-community/cli-tools" "12.0.0-alpha.9" chalk "^4.1.2" execa "^5.0.0" glob "^7.1.3" logkitty "^0.7.1" -"@react-native-community/cli-platform-ios@12.0.0-alpha.7": - version "12.0.0-alpha.7" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-platform-ios/-/cli-platform-ios-12.0.0-alpha.7.tgz#a9ccc46937f57ebfdb0a3bb7a689e470e056213b" - integrity sha512-jBur2CZSxTlzEs0auyUyHXdmLf8+AKlFQzvdIjqWRQ/zSWRbZQ/aeNzOMXNIE+axcO0PU9t49z12vbV3yeOOyQ== +"@react-native-community/cli-platform-ios@12.0.0-alpha.9": + version "12.0.0-alpha.9" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-platform-ios/-/cli-platform-ios-12.0.0-alpha.9.tgz#f0a126c192c1f4188a233e1f51dcf1030bd783ce" + integrity sha512-Nl1+MyCcpGKvkv8kxDlN4jvht4bIR8N2mrQwazgtZeOURd3Mn8spOe8cfLexSNKhBaHHcb0JdqWLWyujlQTlyw== dependencies: - "@react-native-community/cli-tools" "12.0.0-alpha.7" + "@react-native-community/cli-tools" "12.0.0-alpha.9" 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@12.0.0-alpha.7": - version "12.0.0-alpha.7" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-plugin-metro/-/cli-plugin-metro-12.0.0-alpha.7.tgz#f9378384a66cb10d26cea0948c375173b2994a00" - integrity sha512-uTxtdZfgRF7hLuHdZbFX33LB4UulgYWhLiO745Vu2Ne7JRe9OVhqnY98gIWGhVUzriUZhbefc5HIwf1aTE/6sQ== +"@react-native-community/cli-plugin-metro@12.0.0-alpha.9": + version "12.0.0-alpha.9" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-plugin-metro/-/cli-plugin-metro-12.0.0-alpha.9.tgz#83a1906b8e3ad250910896ec450b6215d2dd88fe" + integrity sha512-4oQoKPPKRTLfgVKKaVTtJRVBZpyDZh6CfzMeQ1NuobQbf0IzvpypbDJlrVcDz/vzm2DjiZEvlD0D51XvErKpXg== dependencies: - "@react-native-community/cli-server-api" "12.0.0-alpha.7" - "@react-native-community/cli-tools" "12.0.0-alpha.7" + "@react-native-community/cli-server-api" "12.0.0-alpha.9" + "@react-native-community/cli-tools" "12.0.0-alpha.9" chalk "^4.1.2" execa "^5.0.0" - metro "0.77.0" - metro-config "0.77.0" - metro-core "0.77.0" - metro-react-native-babel-transformer "0.77.0" - metro-resolver "0.77.0" - metro-runtime "0.77.0" + metro "0.78.0" + metro-config "0.78.0" + metro-core "0.78.0" readline "^1.3.0" -"@react-native-community/cli-server-api@12.0.0-alpha.7": - version "12.0.0-alpha.7" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-server-api/-/cli-server-api-12.0.0-alpha.7.tgz#cbff9a5f66a51c9414d636a77a413d299dafb83c" - integrity sha512-oK30eJZEdzqRUMitiMaMFzWYVJOF+Tslsl+i35EToSxqoxmSXr4nGKM7isDQvu6dbLsICTnrv5YGK3AszPFP5A== +"@react-native-community/cli-server-api@12.0.0-alpha.9": + version "12.0.0-alpha.9" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-server-api/-/cli-server-api-12.0.0-alpha.9.tgz#bde13526941e3f82daeecd264ce3dcc23846ec0b" + integrity sha512-z47N3CxYBhv027HN7fBvNAZNORx4VSOE0WHQS78iBc2X9IiJdo/wi6BA3OO3mHA9w9ZCGVE3ejz/89wxx0vbdg== dependencies: - "@react-native-community/cli-debugger-ui" "12.0.0-alpha.7" - "@react-native-community/cli-tools" "12.0.0-alpha.7" + "@react-native-community/cli-debugger-ui" "12.0.0-alpha.9" + "@react-native-community/cli-tools" "12.0.0-alpha.9" compression "^1.7.1" connect "^3.6.5" errorhandler "^1.5.1" @@ -2686,10 +2682,10 @@ serve-static "^1.13.1" ws "^7.5.1" -"@react-native-community/cli-tools@12.0.0-alpha.7": - version "12.0.0-alpha.7" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-tools/-/cli-tools-12.0.0-alpha.7.tgz#1008f90a20a418b012b80d0a883ae5b2f1d0aa8c" - integrity sha512-Uqt8+cb0EXtZB2LamGI2JOQU4YxN1LD8/2ToU+d4BhdmvlNByRXa/6s0/oe5sBJdCZnrg4FeLkEQObikR+dYew== +"@react-native-community/cli-tools@12.0.0-alpha.9": + version "12.0.0-alpha.9" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-tools/-/cli-tools-12.0.0-alpha.9.tgz#a8533a19e98696355826751597b7535cd1e70c3c" + integrity sha512-77XKc240Uc4wswhoF1bJm9EolX8sziGzz8z+vqgFKUob1igXvJ9oEIX+Tci8ScFgD/duY4/8ydKgYFehGf6KjA== dependencies: appdirsjs "^1.2.4" chalk "^4.1.2" @@ -2701,34 +2697,34 @@ semver "^7.5.2" shell-quote "^1.7.3" -"@react-native-community/cli-types@12.0.0-alpha.7": - version "12.0.0-alpha.7" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-types/-/cli-types-12.0.0-alpha.7.tgz#2e5f2ba3bea8aa6f6dd4816dde961c482494313f" - integrity sha512-K1651weeiFkXmau7Y8QMFQtLDlaCGAzOc/3gIm5E4bH8VQx1kvVh5Pf+m9SS+B5BB+BjzoNYiYiQMLk0tyDltw== +"@react-native-community/cli-types@12.0.0-alpha.9": + version "12.0.0-alpha.9" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-types/-/cli-types-12.0.0-alpha.9.tgz#73fc3b709880a60370194e6d0c060e465b945368" + integrity sha512-PGE3H+jM73ZugEe3bTCxA2UjI+IyPbdZetXj+4TDkfLU3WTnW/wqo0TeIZTvfBNpKg4PdyLEtdOcQePeywr8Zw== dependencies: joi "^17.2.1" -"@react-native-community/cli@12.0.0-alpha.7": - version "12.0.0-alpha.7" - resolved "https://registry.yarnpkg.com/@react-native-community/cli/-/cli-12.0.0-alpha.7.tgz#ad5dc1a62fc610c002a6ca8c6aafd0f2806e3070" - integrity sha512-yPkYp89vu25WdNLopx8DDHcRHO7zr4FeI6ropQZ4yzl7LSQWjmAnQbwGKvwxDbum7/b3r3SH7vGkSxdlPbJc0A== - dependencies: - "@react-native-community/cli-clean" "12.0.0-alpha.7" - "@react-native-community/cli-config" "12.0.0-alpha.7" - "@react-native-community/cli-debugger-ui" "12.0.0-alpha.7" - "@react-native-community/cli-doctor" "12.0.0-alpha.7" - "@react-native-community/cli-hermes" "12.0.0-alpha.7" - "@react-native-community/cli-plugin-metro" "12.0.0-alpha.7" - "@react-native-community/cli-server-api" "12.0.0-alpha.7" - "@react-native-community/cli-tools" "12.0.0-alpha.7" - "@react-native-community/cli-types" "12.0.0-alpha.7" +"@react-native-community/cli@12.0.0-alpha.9": + version "12.0.0-alpha.9" + resolved "https://registry.yarnpkg.com/@react-native-community/cli/-/cli-12.0.0-alpha.9.tgz#ff0227bafb135a6c91e162bf299e24db39d15274" + integrity sha512-MxZ+/mXjvQ88ndo0IaiJ7NDr1P7jO5ZOTtpvxB9xl8HdufZde2pL+xeVTqqN/NVWCSkdDEaP7120OZ9kzXRIKw== + dependencies: + "@react-native-community/cli-clean" "12.0.0-alpha.9" + "@react-native-community/cli-config" "12.0.0-alpha.9" + "@react-native-community/cli-debugger-ui" "12.0.0-alpha.9" + "@react-native-community/cli-doctor" "12.0.0-alpha.9" + "@react-native-community/cli-hermes" "12.0.0-alpha.9" + "@react-native-community/cli-plugin-metro" "12.0.0-alpha.9" + "@react-native-community/cli-server-api" "12.0.0-alpha.9" + "@react-native-community/cli-tools" "12.0.0-alpha.9" + "@react-native-community/cli-types" "12.0.0-alpha.9" chalk "^4.1.2" commander "^9.4.1" execa "^5.0.0" find-up "^4.1.0" fs-extra "^8.1.0" graceful-fs "^4.1.3" - prompts "^2.4.0" + prompts "^2.4.2" semver "^7.5.2" "@rnx-kit/rn-changelog-generator@^0.4.0": @@ -7311,11 +7307,6 @@ jest-pnp-resolver@^1.2.2: resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz#b704ac0ae028a89108a4d040b3f919dfddc8e33c" integrity sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w== -jest-regex-util@^27.0.6: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-27.5.1.tgz#4da143f7e9fd1e542d4aa69617b38e4a78365b95" - integrity sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg== - jest-regex-util@^29.2.0: version "29.2.0" resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-29.2.0.tgz#82ef3b587e8c303357728d0322d48bbfd2971f7b" @@ -8163,10 +8154,10 @@ methods@~1.1.2: resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" integrity sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w== -metro-babel-register@0.77.0: - version "0.77.0" - resolved "https://registry.yarnpkg.com/metro-babel-register/-/metro-babel-register-0.77.0.tgz#c0bb14cb168fc7829f01d922be9332e1a3ffc816" - integrity sha512-VxSWJBJWp5yPQJjhBljl9lEygmDmN4vWReY/vXjN6A5MxJDwPAQ9gwR9diuNLAzvRRLhvI0jm5aAxS6vNpuWow== +metro-babel-register@0.78.0: + version "0.78.0" + resolved "https://registry.yarnpkg.com/metro-babel-register/-/metro-babel-register-0.78.0.tgz#148c4b3b520d877c4a05651f592788a0476c118e" + integrity sha512-sw3YIL1GCAqlfyfiFavwPG0pw9dra3Qh4T+INsUFN6SnsA5StOqnM2MQo7VAA/9cjgQh7aONbALnDoyl02Pd4g== dependencies: "@babel/core" "^7.20.0" "@babel/plugin-transform-flow-strip-types" "^7.20.0" @@ -8176,60 +8167,59 @@ metro-babel-register@0.77.0: babel-plugin-replace-ts-export-assignment "^0.0.2" escape-string-regexp "^1.0.5" -metro-babel-transformer@0.77.0: - version "0.77.0" - resolved "https://registry.yarnpkg.com/metro-babel-transformer/-/metro-babel-transformer-0.77.0.tgz#5deefff8ae8f1e37cf3a38ba1198a9811c7713bb" - integrity sha512-DO41MiCIDXY7yGeUlQ/4DE/LAvjgmBQYRYzqgqs863CGOkMLA2NxsX4imW2sjrsG7+QJYXn1q5svC+qbnX0IYg== +metro-babel-transformer@0.78.0: + version "0.78.0" + resolved "https://registry.yarnpkg.com/metro-babel-transformer/-/metro-babel-transformer-0.78.0.tgz#7f22dca1186c27908b281264dd31e5cb140de8d0" + integrity sha512-SwzvGuMXVqtwQjbuR0RKBKRCNwnQsiA7TG1X+VXkeF/UhbWT4V4fqE76SKWWFsNAv1WEJvsMQcUeLggiecehqg== dependencies: "@babel/core" "^7.20.0" - hermes-parser "0.14.0" + hermes-parser "0.15.0" nullthrows "^1.1.1" -metro-cache-key@0.77.0: - version "0.77.0" - resolved "https://registry.yarnpkg.com/metro-cache-key/-/metro-cache-key-0.77.0.tgz#ce82ab46a4df012505e9fbf84075bb817ff9070e" - integrity sha512-bnTn5oLlBtiMjWRANuljwU+N4+HSxvYZ+3o1ZG2eWmTrqgdF+jEpgp4Rswq3XdajMjp5mR1wyoFNVhNuGtco5A== +metro-cache-key@0.78.0: + version "0.78.0" + resolved "https://registry.yarnpkg.com/metro-cache-key/-/metro-cache-key-0.78.0.tgz#493c8c71a188698fcb909dcbc55be4c4603cc3a8" + integrity sha512-2Mp5LQjpZ3yNdUSpIu6kB9cLUHDve4riHZ7i5n/MikHkpqVCOdo0qGsHujU9v8Fc1dWUOdSC0ufS9j03KpLh4Q== -metro-cache@0.77.0: - version "0.77.0" - resolved "https://registry.yarnpkg.com/metro-cache/-/metro-cache-0.77.0.tgz#e126e1708098c704f07e932cc47ae30028a75ec3" - integrity sha512-IZfi9g1/lkyFx5Y7DdDjb5kU+4w2u5rO5qUpcCioVdtZBMfON5D4O1fecHNsGKIHcAr7sWo6hWfahbvZhRM+Wg== +metro-cache@0.78.0: + version "0.78.0" + resolved "https://registry.yarnpkg.com/metro-cache/-/metro-cache-0.78.0.tgz#5abb129e62011ba91e4e3aa8a2ebab2d7c569b4a" + integrity sha512-kVub3O55oG3k875uDxwr53GuHvqrXc+vyHWaX42wa2AJrCETBVb1ybVTu4mfL/WXLMdn13ZusulOpY7lxVcZjQ== dependencies: - metro-core "0.77.0" + metro-core "0.78.0" rimraf "^3.0.2" -metro-config@0.77.0: - version "0.77.0" - resolved "https://registry.yarnpkg.com/metro-config/-/metro-config-0.77.0.tgz#dadcafd6a95b1dc0de2e6029e100e59c53af777d" - integrity sha512-Ac5TjRC2ULLGObuWJYAzpgJFjAx1ytCcV0GyA56BWo0MEaugW/90Rj6DX/eWywIO8NySnEhB0XalPCTcqOEPvw== +metro-config@0.78.0: + version "0.78.0" + resolved "https://registry.yarnpkg.com/metro-config/-/metro-config-0.78.0.tgz#0a83cb9cd2e4913394272ee8a83d04ee14d833d8" + integrity sha512-v8P0WrtR/pe8xTyMEPhe+LBWoPivrJJzPlc+2iU9ZZhadhZH5JsBmmHXOobyZnKu2OWRFku6VpCiU2+Tg55F5g== dependencies: connect "^3.6.5" cosmiconfig "^5.0.5" jest-validate "^29.2.1" - metro "0.77.0" - metro-cache "0.77.0" - metro-core "0.77.0" - metro-runtime "0.77.0" + metro "0.78.0" + metro-cache "0.78.0" + metro-core "0.78.0" + metro-runtime "0.78.0" -metro-core@0.77.0: - version "0.77.0" - resolved "https://registry.yarnpkg.com/metro-core/-/metro-core-0.77.0.tgz#ad496d3ac50332f1c8be16b8c78847bbc61c896c" - integrity sha512-352kpZvPAQUEiUn6nh/bq/eO1jRkZyVoRAy3UtIN+K5B3UQoAFHjZgxvJxXtYRDIgOpC1Nx/oTPI0I/LREq3mQ== +metro-core@0.78.0: + version "0.78.0" + resolved "https://registry.yarnpkg.com/metro-core/-/metro-core-0.78.0.tgz#d14afc68ba270678a304d9f98130466307e5703c" + integrity sha512-pD9yfRdCESHmWs1FPuoEyBmIXNYMaAMV5L51zeR6ugHRRBUYyLjdrJtTEnxL2j7rTidkQ6jzYp3B091kGEptZw== dependencies: lodash.throttle "^4.1.1" - metro-resolver "0.77.0" + metro-resolver "0.78.0" -metro-file-map@0.77.0: - version "0.77.0" - resolved "https://registry.yarnpkg.com/metro-file-map/-/metro-file-map-0.77.0.tgz#f866292a70e9c463d2274cbfc415ef46aad65ef2" - integrity sha512-piBtfx1WBtCjNKAnXsHNlwvn8tKC+lcM+zC0A/x/YHuarA/MTS5fCtmgwLjmZZiCe60KOVYN4+5lkpRToH4drQ== +metro-file-map@0.78.0: + version "0.78.0" + resolved "https://registry.yarnpkg.com/metro-file-map/-/metro-file-map-0.78.0.tgz#d2e84f5bfa7595695c83429088621d5a2fe61919" + integrity sha512-/RBoGID+sBFMEgDqcZg/ppehD+k8T7z83kHQZeIyoYHomiSe+gpWljNl6vLiRNJpeRNKiSk9EPZnhZ+knQsaMQ== 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" @@ -8239,162 +8229,61 @@ metro-file-map@0.77.0: optionalDependencies: fsevents "^2.3.2" -metro-inspector-proxy@0.77.0: - version "0.77.0" - resolved "https://registry.yarnpkg.com/metro-inspector-proxy/-/metro-inspector-proxy-0.77.0.tgz#ff8f8acf690ff6f55acaa0422bae0abfd886f3e0" - integrity sha512-SQ9YzdFewAQODTwdPWgDtXKufCSyHBeHipFHy/ashuXuIvT8wdVF8UiDd4VcFzf7vTk+Xv99G39DydZvTtNv2w== - dependencies: - connect "^3.6.5" - debug "^2.2.0" - node-fetch "^2.2.0" - ws "^7.5.1" - yargs "^17.6.2" - -metro-memory-fs@0.77.0: - version "0.77.0" - resolved "https://registry.yarnpkg.com/metro-memory-fs/-/metro-memory-fs-0.77.0.tgz#ca96e43d8d9dbfe5f8db4998b65baa67956e52f8" - integrity sha512-WU5MGDdCzMru2AbtrWq0T0dShzDyExmQ+RH27/NcQeyTXgfMCkeoKILGtff/7ZQP+5q3jEQAwzgM1HX+I9XXBQ== +metro-memory-fs@0.78.0: + version "0.78.0" + resolved "https://registry.yarnpkg.com/metro-memory-fs/-/metro-memory-fs-0.78.0.tgz#e39f9e7bcf4b23c8287347e3c5c1b581e069c6a8" + integrity sha512-TXaP2wFW6zOZAnc1kTkvlgujdMe9cW0g0S4aC+XyfhkhAeA9+6qGD2KpXf5ngz2m8b0KgCpHpDgMJuYFl24mAQ== -metro-minify-terser@0.77.0: - version "0.77.0" - resolved "https://registry.yarnpkg.com/metro-minify-terser/-/metro-minify-terser-0.77.0.tgz#2e6e7f5540f1d83978da36ba124c803c3cd9547b" - integrity sha512-StiZjb57WYjhLyaW7PJ0xnNAWj9RZFYZWyL3MPUChpXKZXVkjurDDgiAXN9zanM/n5eachKlmAdsSpm5dVqC8w== +metro-minify-terser@0.78.0: + version "0.78.0" + resolved "https://registry.yarnpkg.com/metro-minify-terser/-/metro-minify-terser-0.78.0.tgz#3df1afe87d8033c43f161d46da2a2e03bbe1490a" + integrity sha512-IELdVJFIX0XkoFKXtWq5N02z32mclsbDb1SxJVYQYl1Qybm3fOih83teNvgPl0ezEtTVEAVdHeAwKiOGanjPZQ== dependencies: terser "^5.15.0" -metro-react-native-babel-preset@0.77.0: - version "0.77.0" - resolved "https://registry.yarnpkg.com/metro-react-native-babel-preset/-/metro-react-native-babel-preset-0.77.0.tgz#47457eca8e36b77156afbe790247a70dbb40faaa" - integrity sha512-HPPD+bTxADtoE4y/4t1txgTQ1LVR6imOBy7RMHUsqMVTbekoi8Ph5YI9vKX2VMPtVWeFt0w9YnCSLPa76GcXsA== - dependencies: - "@babel/core" "^7.20.0" - "@babel/plugin-proposal-async-generator-functions" "^7.0.0" - "@babel/plugin-proposal-class-properties" "^7.18.0" - "@babel/plugin-proposal-export-default-from" "^7.0.0" - "@babel/plugin-proposal-nullish-coalescing-operator" "^7.18.0" - "@babel/plugin-proposal-numeric-separator" "^7.0.0" - "@babel/plugin-proposal-object-rest-spread" "^7.20.0" - "@babel/plugin-proposal-optional-catch-binding" "^7.0.0" - "@babel/plugin-proposal-optional-chaining" "^7.20.0" - "@babel/plugin-syntax-dynamic-import" "^7.8.0" - "@babel/plugin-syntax-export-default-from" "^7.0.0" - "@babel/plugin-syntax-flow" "^7.18.0" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.0.0" - "@babel/plugin-syntax-optional-chaining" "^7.0.0" - "@babel/plugin-transform-arrow-functions" "^7.0.0" - "@babel/plugin-transform-async-to-generator" "^7.20.0" - "@babel/plugin-transform-block-scoping" "^7.0.0" - "@babel/plugin-transform-classes" "^7.0.0" - "@babel/plugin-transform-computed-properties" "^7.0.0" - "@babel/plugin-transform-destructuring" "^7.20.0" - "@babel/plugin-transform-flow-strip-types" "^7.20.0" - "@babel/plugin-transform-function-name" "^7.0.0" - "@babel/plugin-transform-literals" "^7.0.0" - "@babel/plugin-transform-modules-commonjs" "^7.0.0" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.0.0" - "@babel/plugin-transform-parameters" "^7.0.0" - "@babel/plugin-transform-react-display-name" "^7.0.0" - "@babel/plugin-transform-react-jsx" "^7.0.0" - "@babel/plugin-transform-react-jsx-self" "^7.0.0" - "@babel/plugin-transform-react-jsx-source" "^7.0.0" - "@babel/plugin-transform-runtime" "^7.0.0" - "@babel/plugin-transform-shorthand-properties" "^7.0.0" - "@babel/plugin-transform-spread" "^7.0.0" - "@babel/plugin-transform-sticky-regex" "^7.0.0" - "@babel/plugin-transform-typescript" "^7.5.0" - "@babel/plugin-transform-unicode-regex" "^7.0.0" - "@babel/template" "^7.0.0" - babel-plugin-transform-flow-enums "^0.0.2" - react-refresh "^0.4.0" - -metro-react-native-babel-transformer@0.77.0: - version "0.77.0" - resolved "https://registry.yarnpkg.com/metro-react-native-babel-transformer/-/metro-react-native-babel-transformer-0.77.0.tgz#34c6f6670a396074e24f9ad152d185551a88a3e6" - integrity sha512-uCV1Kt4ebY9/hT7ayDGMDgIsrbyxiBHNP+q0LGxscOx3D/QODv1z+WhfC4Hy0/1wDCGV3l0EQrfLqM+7qpjsWA== - dependencies: - "@babel/core" "^7.20.0" - babel-preset-fbjs "^3.4.0" - hermes-parser "0.14.0" - metro-react-native-babel-preset "0.77.0" - nullthrows "^1.1.1" - -metro-resolver@0.77.0: - version "0.77.0" - resolved "https://registry.yarnpkg.com/metro-resolver/-/metro-resolver-0.77.0.tgz#765cd6cbffa6fb9589807b30c7922720d0cf7291" - integrity sha512-h3rvDWD25cZ/5Iin6mPjSQQe8KtWPAHZnA6AnAj2yadzltkyytPjmHal6JhTPsVHWMKorkC03MUpEgGusuvTww== - -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-resolver@0.78.0: + version "0.78.0" + resolved "https://registry.yarnpkg.com/metro-resolver/-/metro-resolver-0.78.0.tgz#36edd0ababe1e34dbcecc32ff7da7356676816e9" + integrity sha512-V8ajy9UfP4d2OIsD6vMr4ZWvA1xAORPgDBq1ir06hALUyZGLj/hOsxAUCSSjAN1XL32Nw9OZrLYDMZdw1exaow== -metro-runtime@0.77.0: - version "0.77.0" - resolved "https://registry.yarnpkg.com/metro-runtime/-/metro-runtime-0.77.0.tgz#ccb3bfbce06acd5b8d0b611d0f55972a0ca28039" - integrity sha512-A4MCtMbrB7RoWDaIJSm32d7TcKLBHrjG/3mXx4pDnFgfmIQcKb/GNXcFJtE2tEjQxWJvZHhQYZh1l/49wQMDcA== +metro-runtime@0.78.0: + version "0.78.0" + resolved "https://registry.yarnpkg.com/metro-runtime/-/metro-runtime-0.78.0.tgz#7c8f28724f91498fb9c73447212a8b478b486b7a" + integrity sha512-4AwNpoyiWtQQWL2hyEXpHrcSSK65mcBRk2v25NN30R/8P7P5yHXM2JVrcd6/LefVJOzgDQcQkzNPU7GyBqcm8A== dependencies: "@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.77.0: - version "0.77.0" - resolved "https://registry.yarnpkg.com/metro-source-map/-/metro-source-map-0.77.0.tgz#907df460e914cf3577151797eed998d275f462ec" - integrity sha512-gNrWkgV1zma2/NZVCxCvN/y9+fGwwwdiOzwn3aRrjxR88njJ2KQM0wnY86Q7i+1XEpf0BRzutMGYLLZCX9vTPQ== +metro-source-map@0.78.0: + version "0.78.0" + resolved "https://registry.yarnpkg.com/metro-source-map/-/metro-source-map-0.78.0.tgz#1e96996e15d555180434a96dc28158e1943cd5bd" + integrity sha512-tRF6ASVt2PQy4r5TdGis6/dtyDA0OTavsJ9xgLO0RyqBhLZAdtGj8LMPychEOHX1eXR/x+iKFsF9vXXWBRqfUg== dependencies: "@babel/traverse" "^7.20.0" "@babel/types" "^7.20.0" invariant "^2.2.4" - metro-symbolicate "0.77.0" - nullthrows "^1.1.1" - ob1 "0.77.0" - 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" + metro-symbolicate "0.78.0" nullthrows "^1.1.1" + ob1 "0.78.0" source-map "^0.5.6" - through2 "^2.0.1" vlq "^1.0.0" -metro-symbolicate@0.77.0: - version "0.77.0" - resolved "https://registry.yarnpkg.com/metro-symbolicate/-/metro-symbolicate-0.77.0.tgz#aee584fcd584fbaf301541d257734c08455f3d40" - integrity sha512-L7KmrqADzhSS9PcUwF7KmbXemBb1rBW0ulw8eG2D+dLP5HtHRVf8WMHZswB2V0Xi0GnWCg4HMp8gSyIMs2wMGg== +metro-symbolicate@0.78.0: + version "0.78.0" + resolved "https://registry.yarnpkg.com/metro-symbolicate/-/metro-symbolicate-0.78.0.tgz#0f12a22511ad6de97b7abdfcfda67eadd8504b83" + integrity sha512-OcQpvcpNyDtqKjfANqaJi2hsd3ajfwn+3+wuqY1kYG9/apLFY11lBw+o/rIKOYc3q4zWvclkwDGMkPbAxbXLOA== dependencies: invariant "^2.2.4" - metro-source-map "0.77.0" + metro-source-map "0.78.0" nullthrows "^1.1.1" source-map "^0.5.6" through2 "^2.0.1" vlq "^1.0.0" -metro-transform-plugins@0.77.0: - version "0.77.0" - resolved "https://registry.yarnpkg.com/metro-transform-plugins/-/metro-transform-plugins-0.77.0.tgz#3608de5cb18ae72f66926e4ee092ded0f3e5f5fb" - integrity sha512-QcVpA+YUAqT1vNyMAMDehhTBcPTSvETRfrlhvfefVXpA2Pp90huzKmLxq2uNncm7o0Oy+CeKUq3awtv8ds1KTQ== +metro-transform-plugins@0.78.0: + version "0.78.0" + resolved "https://registry.yarnpkg.com/metro-transform-plugins/-/metro-transform-plugins-0.78.0.tgz#306beaef06689a28123a6f1adc5662860a8ae6a8" + integrity sha512-rZFtHj6zTzHIVURoYDFw20Idf5UDcyv7aFOMBVkLDrBo8EpMb5yFRsFw2I/FEreX78YFkJpUkNdxAV9JrE7PHQ== dependencies: "@babel/core" "^7.20.0" "@babel/generator" "^7.20.0" @@ -8402,28 +8291,27 @@ metro-transform-plugins@0.77.0: "@babel/traverse" "^7.20.0" nullthrows "^1.1.1" -metro-transform-worker@0.77.0: - version "0.77.0" - resolved "https://registry.yarnpkg.com/metro-transform-worker/-/metro-transform-worker-0.77.0.tgz#0c71429661f389985bff29a821be76ce3a15aa5f" - integrity sha512-Ub2FawmG1eyq+MPLYp8sD7/PuWPs7MJxa3/qbI1VWTFR6M3NomGL4Ogin7ffJPb0DAi+GTfevp8azuyZcsYr9A== +metro-transform-worker@0.78.0: + version "0.78.0" + resolved "https://registry.yarnpkg.com/metro-transform-worker/-/metro-transform-worker-0.78.0.tgz#f505b36b94fa67facbbbec0d396a82a7ec1d6a73" + integrity sha512-tooyGrf3g+0c838BeYAkFUgVwSJeumsIcaT65oZ7Om11f8QdPiIyVbgD1iEl369R6rJuw0mEPibpEjMMIZJuNg== 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.77.0" - metro-babel-transformer "0.77.0" - metro-cache "0.77.0" - metro-cache-key "0.77.0" - metro-source-map "0.77.0" - metro-transform-plugins "0.77.0" + metro "0.78.0" + metro-babel-transformer "0.78.0" + metro-cache "0.78.0" + metro-cache-key "0.78.0" + metro-source-map "0.78.0" + metro-transform-plugins "0.78.0" nullthrows "^1.1.1" -metro@0.77.0: - version "0.77.0" - resolved "https://registry.yarnpkg.com/metro/-/metro-0.77.0.tgz#35be9364d5da7a244d430eb12304bdbb6dae7656" - integrity sha512-a/OMhKvVN4cH32mt9pCJw7LRP54bzT/QgqVGJxHX04m8JUnNR+DWLw4scN8p2Q5v0Z7DZIpkExGPlha7TBNcHw== +metro@0.78.0: + version "0.78.0" + resolved "https://registry.yarnpkg.com/metro/-/metro-0.78.0.tgz#e927b9fab79b172f4439239691a6d21f5b1338fe" + integrity sha512-ZNOPyJh4hlYshztAxKFNgeERrlOzXASlyC6unf/Yqt+jRk/GgVcecQQamiEWcejC+aLhP4FVxWP5Z6BiFqkdDA== dependencies: "@babel/code-frame" "^7.0.0" "@babel/core" "^7.20.0" @@ -8441,26 +8329,25 @@ metro@0.77.0: denodeify "^1.2.1" error-stack-parser "^2.0.6" graceful-fs "^4.2.4" - hermes-parser "0.14.0" + hermes-parser "0.15.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.77.0" - metro-cache "0.77.0" - metro-cache-key "0.77.0" - metro-config "0.77.0" - metro-core "0.77.0" - metro-file-map "0.77.0" - metro-inspector-proxy "0.77.0" - metro-minify-terser "0.77.0" - metro-resolver "0.77.0" - metro-runtime "0.77.0" - metro-source-map "0.77.0" - metro-symbolicate "0.77.0" - metro-transform-plugins "0.77.0" - metro-transform-worker "0.77.0" + metro-babel-transformer "0.78.0" + metro-cache "0.78.0" + metro-cache-key "0.78.0" + metro-config "0.78.0" + metro-core "0.78.0" + metro-file-map "0.78.0" + metro-minify-terser "0.78.0" + metro-resolver "0.78.0" + metro-runtime "0.78.0" + metro-source-map "0.78.0" + metro-symbolicate "0.78.0" + metro-transform-plugins "0.78.0" + metro-transform-worker "0.78.0" mime-types "^2.1.27" node-fetch "^2.2.0" nullthrows "^1.1.1" @@ -8840,15 +8727,10 @@ 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.77.0: - version "0.77.0" - resolved "https://registry.yarnpkg.com/ob1/-/ob1-0.77.0.tgz#42883c87af8c3aad499238c6c0c8fb979178107d" - integrity sha512-yWpX6DzWmcZ7DO7SP+uoDkdKXVhSY5wPCkZXln751gOZQCit+BJpMa4Rj1AL5jjByXLqNzieK3jX+mWOzbS23g== +ob1@0.78.0: + version "0.78.0" + resolved "https://registry.yarnpkg.com/ob1/-/ob1-0.78.0.tgz#de39d59417c355e18e7c31fe83a35cb002e02b2e" + integrity sha512-jq+K4K7UVsZJZAC7KgT+CskxuZdXit3+sCbBtRVrTXU/j+6/+TdLiEp9v0V/KujzivxsWm99HlKoylocGlLo/g== object-assign@^4.1.0, object-assign@^4.1.1: version "4.1.1" @@ -9364,7 +9246,7 @@ promise@^8.3.0: dependencies: asap "~2.0.6" -prompts@^2.0.1, prompts@^2.4.0: +prompts@^2.0.1, prompts@^2.4.2: version "2.4.2" resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.2.tgz#7b57e73b3a48029ad10ebd44f74b01722a4cb069" integrity sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==