diff --git a/packages/cli-clean/package.json b/packages/cli-clean/package.json index c6dd50548..b233030e5 100644 --- a/packages/cli-clean/package.json +++ b/packages/cli-clean/package.json @@ -11,7 +11,7 @@ "@react-native-community/cli-tools": "12.0.0-alpha.8", "chalk": "^4.1.2", "execa": "^5.0.0", - "prompts": "^2.4.0" + "prompts": "^2.4.2" }, "files": [ "build", @@ -20,7 +20,7 @@ ], "devDependencies": { "@react-native-community/cli-types": "12.0.0-alpha.8", - "@types/prompts": "^2.0.9" + "@types/prompts": "^2.4.4" }, "homepage": "https://github.com/react-native-community/cli/tree/main/packages/cli-clean", "repository": { diff --git a/packages/cli-doctor/package.json b/packages/cli-doctor/package.json index 9ad488709..41f89dc25 100644 --- a/packages/cli-doctor/package.json +++ b/packages/cli-doctor/package.json @@ -11,7 +11,6 @@ "@react-native-community/cli-config": "12.0.0-alpha.8", "@react-native-community/cli-platform-android": "12.0.0-alpha.8", "@react-native-community/cli-platform-ios": "12.0.0-alpha.8", - "@react-native-community/cli-plugin-metro": "12.0.0-alpha.8", "@react-native-community/cli-tools": "12.0.0-alpha.8", "chalk": "^4.1.2", "command-exists": "^1.2.8", @@ -21,7 +20,7 @@ "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", @@ -38,7 +37,7 @@ "@types/command-exists": "^1.2.0", "@types/envinfo": "^7.8.1", "@types/ip": "^1.1.0", - "@types/prompts": "^2.0.9", + "@types/prompts": "^2.4.4", "@types/semver": "^6.0.2", "@types/wcwidth": "^1.0.0" }, diff --git a/packages/cli-doctor/src/tools/healthchecks/packager.ts b/packages/cli-doctor/src/tools/healthchecks/packager.ts index 7dbecfe2c..1b48b5d11 100644 --- a/packages/cli-doctor/src/tools/healthchecks/packager.ts +++ b/packages/cli-doctor/src/tools/healthchecks/packager.ts @@ -4,7 +4,8 @@ import { } from '@react-native-community/cli-tools'; import {HealthCheckInterface} from '../../types'; import {logManualInstallation} from './common'; -import {startServerInNewWindow} from '@react-native-community/cli-plugin-metro'; +import execa from 'execa'; +import path from 'path'; export default { label: 'Metro', @@ -29,12 +30,14 @@ export default { const terminal = getDefaultUserTerminal(); const port = Number(process.env.RCT_METRO_PORT) || 8081; if (terminal && config) { - startServerInNewWindow( - port, + await execa('node', [ + path.join(config.reactNativePath, 'cli.js'), + 'start', + '--port', + port.toString(), + '--terminal', terminal, - config.root, - config.reactNativePath, - ); + ]); return loader.succeed(); } return logManualInstallation({ diff --git a/packages/cli-platform-android/package.json b/packages/cli-platform-android/package.json index 0cbab9a87..1b1e07fa8 100644 --- a/packages/cli-platform-android/package.json +++ b/packages/cli-platform-android/package.json @@ -20,7 +20,6 @@ "native_modules.gradle" ], "devDependencies": { - "@react-native-community/cli-plugin-metro": "12.0.0-alpha.8", "@react-native-community/cli-types": "12.0.0-alpha.8", "@types/fs-extra": "^8.1.0", "@types/glob": "^7.1.1" diff --git a/packages/cli-platform-android/src/commands/buildAndroid/index.ts b/packages/cli-platform-android/src/commands/buildAndroid/index.ts index 1b7b6101b..0f6674e67 100644 --- a/packages/cli-platform-android/src/commands/buildAndroid/index.ts +++ b/packages/cli-platform-android/src/commands/buildAndroid/index.ts @@ -1,7 +1,5 @@ import { CLIError, - getDefaultUserTerminal, - isPackagerRunning, logger, printRunDoctorTip, } from '@react-native-community/cli-tools'; @@ -10,51 +8,17 @@ import execa from 'execa'; import {getAndroidProject} from '../../config/getAndroidProject'; import adb from '../runAndroid/adb'; import getAdbPath from '../runAndroid/getAdbPath'; -import {startServerInNewWindow} from '@react-native-community/cli-plugin-metro'; import {getTaskNames} from '../runAndroid/getTaskNames'; import {promptForTaskSelection} from '../runAndroid/listAndroidTasks'; export interface BuildFlags { mode?: string; activeArchOnly?: boolean; - packager?: boolean; - port: number; - terminal: string; tasks?: Array; extraParams?: Array; interactive?: boolean; } -export async function runPackager(args: BuildFlags, config: Config) { - if (!args.packager) { - return; - } - const result = await isPackagerRunning(args.port); - if (result === 'running') { - logger.info('JS server already running.'); - } else if (result === 'unrecognized') { - logger.warn('JS server not recognized, continuing with build...'); - } else { - // result == 'not_running' - logger.info('Starting JS server...'); - - try { - startServerInNewWindow( - args.port, - args.terminal, - config.root, - config.reactNativePath, - ); - } catch (error) { - if (error instanceof Error) { - logger.warn( - `Failed to automatically start the packager server. Please run "react-native start" manually. Error details: ${error.message}`, - ); - } - } - } -} - async function buildAndroid( _argv: Array, config: Config, @@ -112,7 +76,7 @@ async function buildAndroid( gradleArgs.push('-PreactNativeArchitectures=' + architectures.join(',')); } } - await runPackager(args, config); + return build(gradleArgs, androidProject.sourceDir); } @@ -137,21 +101,6 @@ export const options = [ name: '--mode ', description: "Specify your app's build variant", }, - { - name: '--no-packager', - description: 'Do not launch packager while building', - }, - { - name: '--port ', - default: process.env.RCT_METRO_PORT || 8081, - parse: Number, - }, - { - name: '--terminal ', - description: - 'Launches the Metro Bundler in a new window using the specified terminal path.', - default: getDefaultUserTerminal(), - }, { name: '--tasks ', description: diff --git a/packages/cli-platform-android/src/commands/runAndroid/index.ts b/packages/cli-platform-android/src/commands/runAndroid/index.ts index 2299f5b2e..f3b06109b 100644 --- a/packages/cli-platform-android/src/commands/runAndroid/index.ts +++ b/packages/cli-platform-android/src/commands/runAndroid/index.ts @@ -13,13 +13,22 @@ import tryRunAdbReverse from './tryRunAdbReverse'; import tryLaunchAppOnDevice from './tryLaunchAppOnDevice'; import tryInstallAppOnDevice from './tryInstallAppOnDevice'; import getAdbPath from './getAdbPath'; -import {logger, CLIError, link} from '@react-native-community/cli-tools'; +import { + logger, + CLIError, + link, + getDefaultUserTerminal, + isPackagerRunning, + logAlreadyRunningBundler, + startServerInNewWindow, + handlePortUnavailable, +} from '@react-native-community/cli-tools'; import {getAndroidProject} from '../../config/getAndroidProject'; import listAndroidDevices from './listAndroidDevices'; import tryLaunchEmulator from './tryLaunchEmulator'; import chalk from 'chalk'; import path from 'path'; -import {build, runPackager, BuildFlags, options} from '../buildAndroid'; +import {build, BuildFlags, options} from '../buildAndroid'; import {promptForTaskSelection} from './listAndroidTasks'; import {getTaskNames} from './getTaskNames'; import {checkUsers, promptForUser} from './listAndroidUsers'; @@ -28,6 +37,9 @@ export interface Flags extends BuildFlags { appId: string; appIdSuffix: string; mainActivity: string; + port: number; + terminal?: string; + packager?: boolean; deviceId?: string; listDevices?: boolean; binaryPath?: string; @@ -42,6 +54,35 @@ export type AndroidProject = NonNullable; async function runAndroid(_argv: Array, config: Config, args: Flags) { link.setPlatform('android'); + let {packager, port} = args; + + const packagerStatus = await isPackagerRunning(port); + + if ( + typeof packagerStatus === 'object' && + packagerStatus.status === 'running' + ) { + if (packagerStatus.root === config.root) { + packager = false; + logAlreadyRunningBundler(port); + } else { + const result = await handlePortUnavailable(port, config.root, packager); + [port, packager] = [result.port, result.packager]; + } + } else if (packagerStatus === 'unrecognized') { + const result = await handlePortUnavailable(port, config.root, packager); + [port, packager] = [result.port, result.packager]; + } + + if (packager) { + await startServerInNewWindow( + port, + config.root, + config.reactNativePath, + args.terminal, + ); + } + if (config.reactNativeVersion !== 'unknown') { link.setVersion(config.reactNativeVersion); } @@ -66,7 +107,6 @@ async function runAndroid(_argv: Array, config: Config, args: Flags) { const androidProject = getAndroidProject(config); - await runPackager(args, config); return buildAndRun(args, androidProject); } @@ -269,6 +309,21 @@ export default { func: runAndroid, options: [ ...options, + { + name: '--no-packager', + description: 'Do not launch packager while running the app', + }, + { + name: '--port ', + default: process.env.RCT_METRO_PORT || 8081, + parse: Number, + }, + { + name: '--terminal ', + description: + 'Launches the Metro Bundler in a new window using the specified terminal path.', + default: getDefaultUserTerminal(), + }, { name: '--appId ', description: diff --git a/packages/cli-platform-ios/src/commands/buildIOS/buildProject.ts b/packages/cli-platform-ios/src/commands/buildIOS/buildProject.ts index 11977fc84..d3b781fd1 100644 --- a/packages/cli-platform-ios/src/commands/buildIOS/buildProject.ts +++ b/packages/cli-platform-ios/src/commands/buildIOS/buildProject.ts @@ -14,12 +14,9 @@ import { export type BuildFlags = { mode: string; target: string; - packager: boolean; verbose: boolean; xcconfig?: string; buildFolder?: string; - port: number; - terminal: string | undefined; interactive?: boolean; destination?: string; extraParams?: string[]; @@ -72,6 +69,7 @@ export function buildProject( }); } } + const buildProcess = child_process.spawn( 'xcodebuild', xcodebuildArgs, @@ -150,30 +148,32 @@ function xcprettyAvailable() { return true; } -function getProcessOptions({ - packager, - terminal, - port, -}: { - packager: boolean; - terminal: string | undefined; - port: number; -}): SpawnOptionsWithoutStdio { - if (packager) { +function getProcessOptions( + args: T, +): SpawnOptionsWithoutStdio { + if ( + 'packager' in args && + typeof args.packager === 'boolean' && + args.packager + ) { + const terminal = + 'terminal' in args && typeof args.terminal === 'string' + ? args.terminal + : ''; + + const port = + 'port' in args && typeof args.port === 'string' ? args.port : ''; + return { env: { ...process.env, RCT_TERMINAL: terminal, - RCT_METRO_PORT: port.toString(), + RCT_METRO_PORT: port, }, }; } return { - env: { - ...process.env, - RCT_TERMINAL: terminal, - RCT_NO_LAUNCH_PACKAGER: 'true', - }, + env: process.env, }; } diff --git a/packages/cli-platform-ios/src/commands/buildIOS/index.ts b/packages/cli-platform-ios/src/commands/buildIOS/index.ts index 03ee13ce6..b4b832f40 100644 --- a/packages/cli-platform-ios/src/commands/buildIOS/index.ts +++ b/packages/cli-platform-ios/src/commands/buildIOS/index.ts @@ -9,11 +9,7 @@ import path from 'path'; import chalk from 'chalk'; import {Config} from '@react-native-community/cli-types'; -import { - logger, - CLIError, - getDefaultUserTerminal, -} from '@react-native-community/cli-tools'; +import {logger, CLIError} from '@react-native-community/cli-tools'; import {Device} from '../../types'; import {BuildFlags, buildProject} from './buildProject'; import {getDestinationSimulator} from '../../tools/getDestinationSimulator'; @@ -86,15 +82,10 @@ async function buildIOS(_: Array, ctx: Config, args: FlagsT) { } "${chalk.bold(xcodeProject.name)}"`, ); - const extendedArgs = { - ...modifiedArgs, - packager: false, - }; - // // No need to load all available devices if (!args.device && !args.udid) { if (!args.simulator) { - return buildProject(xcodeProject, undefined, scheme, extendedArgs); + return buildProject(xcodeProject, undefined, scheme, modifiedArgs); } /** @@ -117,7 +108,7 @@ async function buildIOS(_: Array, ctx: Config, args: FlagsT) { xcodeProject, selectedSimulator.udid, scheme, - extendedArgs, + modifiedArgs, ); } @@ -139,12 +130,12 @@ async function buildIOS(_: Array, ctx: Config, args: FlagsT) { ); } - return buildProject(xcodeProject, device.udid, scheme, extendedArgs); + return buildProject(xcodeProject, device.udid, scheme, modifiedArgs); } else { const physicalDevices = devices.filter((d) => d.type !== 'simulator'); const device = matchingDevice(physicalDevices, args.device); if (device) { - return buildProject(xcodeProject, device.udid, scheme, extendedArgs); + return buildProject(xcodeProject, device.udid, scheme, modifiedArgs); } } } @@ -227,17 +218,6 @@ export const iosBuildOptions = [ name: '--verbose', description: 'Do not use xcbeautify or xcpretty even if installed', }, - { - name: '--port ', - default: process.env.RCT_METRO_PORT || 8081, - parse: Number, - }, - { - name: '--terminal ', - description: - 'Launches the Metro Bundler in a new window using the specified terminal path.', - default: getDefaultUserTerminal(), - }, { name: '--xcconfig [string]', description: 'Explicitly set xcconfig to use', diff --git a/packages/cli-platform-ios/src/commands/runIOS/index.ts b/packages/cli-platform-ios/src/commands/runIOS/index.ts index d3b50c902..ad3f192b1 100644 --- a/packages/cli-platform-ios/src/commands/runIOS/index.ts +++ b/packages/cli-platform-ios/src/commands/runIOS/index.ts @@ -12,7 +12,16 @@ import fs from 'fs'; import chalk from 'chalk'; import {Config, IOSProjectInfo} from '@react-native-community/cli-types'; import {getDestinationSimulator} from '../../tools/getDestinationSimulator'; -import {logger, CLIError, link} from '@react-native-community/cli-tools'; +import { + logger, + CLIError, + link, + getDefaultUserTerminal, + startServerInNewWindow, + isPackagerRunning, + logAlreadyRunningBundler, + handlePortUnavailable, +} from '@react-native-community/cli-tools'; import {BuildFlags, buildProject} from '../buildIOS/buildProject'; import {iosBuildOptions} from '../buildIOS'; import {Device} from '../../types'; @@ -32,11 +41,43 @@ export interface FlagsT extends BuildFlags { udid?: string; binaryPath?: string; listDevices?: boolean; + packager?: boolean; + port: number; + terminal?: string; } async function runIOS(_: Array, ctx: Config, args: FlagsT) { link.setPlatform('ios'); + let {packager, port} = args; + + 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) { + await startServerInNewWindow( + port, + ctx.root, + ctx.reactNativePath, + args.terminal, + ); + } + if (ctx.reactNativeVersion !== 'unknown') { link.setVersion(ctx.reactNativeVersion); } @@ -599,7 +640,18 @@ export default { ...iosBuildOptions, { name: '--no-packager', - description: 'Do not launch packager while building', + description: 'Do not launch packager while running the app', + }, + { + name: '--port ', + default: process.env.RCT_METRO_PORT || 8081, + parse: Number, + }, + { + name: '--terminal ', + description: + 'Launches the Metro Bundler in a new window using the specified terminal path.', + default: getDefaultUserTerminal(), }, { name: '--binary-path ', diff --git a/packages/cli-plugin-metro/src/commands/index.ts b/packages/cli-plugin-metro/src/commands/index.ts index eb9237091..0b9ffd88f 100644 --- a/packages/cli-plugin-metro/src/commands/index.ts +++ b/packages/cli-plugin-metro/src/commands/index.ts @@ -4,4 +4,3 @@ import startCommand from './start'; export default [bundleCommand, ramBundleCommand, startCommand]; export {buildBundleWithConfig} from './bundle'; export type {CommandLineArgs} from './bundle'; -export {startServerInNewWindow} from './start'; diff --git a/packages/cli-plugin-metro/src/commands/start/index.ts b/packages/cli-plugin-metro/src/commands/start/index.ts index 517c5811a..accfa96eb 100644 --- a/packages/cli-plugin-metro/src/commands/start/index.ts +++ b/packages/cli-plugin-metro/src/commands/start/index.ts @@ -90,5 +90,3 @@ export default { }, ], }; - -export {startServerInNewWindow} from './startServerInNewWindow'; diff --git a/packages/cli-plugin-metro/src/commands/start/runServer.ts b/packages/cli-plugin-metro/src/commands/start/runServer.ts index 642da78f0..bc93adc48 100644 --- a/packages/cli-plugin-metro/src/commands/start/runServer.ts +++ b/packages/cli-plugin-metro/src/commands/start/runServer.ts @@ -18,8 +18,15 @@ import { import {Config} from '@react-native-community/cli-types'; import loadMetroConfig from '../../tools/loadMetroConfig'; -import {version} from '@react-native-community/cli-tools'; +import { + isPackagerRunning, + logger, + version, + logAlreadyRunningBundler, + handlePortUnavailable, +} from '@react-native-community/cli-tools'; import enableWatchMode from './watchMode'; +import chalk from 'chalk'; export type Args = { assetPlugins?: string[]; @@ -41,10 +48,35 @@ export type Args = { }; async function runServer(_argv: Array, ctx: Config, args: Args) { + 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(); + } + const metroConfig = await loadMetroConfig(ctx, { config: args.config, maxWorkers: args.maxWorkers, - port: args.port, + port, resetCache: args.resetCache, watchFolders: args.watchFolders, projectRoot: args.projectRoot, @@ -127,6 +159,7 @@ async function runServer(_argv: Array, ctx: Config, args: Args) { serverInstance.keepAliveTimeout = 30000; await version.logIfUpdateAvailable(ctx.root); + logger.info(`Started dev server at ${chalk.bold(port)}`); } function getReporterImpl(customLogReporterPath: string) { diff --git a/packages/cli-plugin-metro/src/index.ts b/packages/cli-plugin-metro/src/index.ts index 4d86e9d1a..790f67dfa 100644 --- a/packages/cli-plugin-metro/src/index.ts +++ b/packages/cli-plugin-metro/src/index.ts @@ -8,5 +8,4 @@ export { default as commands, buildBundleWithConfig, CommandLineArgs, - startServerInNewWindow, } from './commands'; diff --git a/packages/cli-server-api/src/statusPageMiddleware.ts b/packages/cli-server-api/src/statusPageMiddleware.ts index edd692ce2..28dcbffff 100644 --- a/packages/cli-server-api/src/statusPageMiddleware.ts +++ b/packages/cli-server-api/src/statusPageMiddleware.ts @@ -14,5 +14,10 @@ export default function statusPageMiddleware( _req: http.IncomingMessage, res: http.ServerResponse, ) { - res.end('packager-status:running'); + res.end( + JSON.stringify({ + status: 'running', + root: process.cwd(), + }), + ); } diff --git a/packages/cli-tools/src/getNextPort.ts b/packages/cli-tools/src/getNextPort.ts new file mode 100644 index 000000000..374fe13c7 --- /dev/null +++ b/packages/cli-tools/src/getNextPort.ts @@ -0,0 +1,35 @@ +import isPackagerRunning from './isPackagerRunning'; + +type Result = { + start: boolean; + nextPort: number; +}; + +/** + * Increases by one the port number until it finds an available port. + * @param port Port number to start with. + * @param root Root of the project. + */ + +const getNextPort = async (port: number, root: string): Promise => { + let nextPort = port + 1; + let start = true; + + const result = await isPackagerRunning(nextPort); + + const isRunning = typeof result === 'object' && result.status === 'running'; + + if (isRunning && result.root === root) { + // Found running bundler for this project, so we do not need to start packager! + start = false; + } else if (isRunning || result === 'unrecognized') { + return getNextPort(nextPort, root); + } + + return { + start, + nextPort, + }; +}; + +export default getNextPort; diff --git a/packages/cli-tools/src/getPidFromPort.ts b/packages/cli-tools/src/getPidFromPort.ts new file mode 100644 index 000000000..98774d17d --- /dev/null +++ b/packages/cli-tools/src/getPidFromPort.ts @@ -0,0 +1,22 @@ +import {execFileSync} from 'child_process'; +import logger from './logger'; + +const getPID = (port: number): number | null => { + try { + const results = execFileSync( + 'lsof', + [`-i:${port}`, '-P', '-t', '-sTCP:LISTEN'], + {encoding: 'utf8', stdio: ['pipe', 'pipe', 'ignore']}, + ) + .split('\n')[0] + .trim(); + const pid = Number(results); + logger.debug(`Pid: ${pid} for port: ${port}`); + return pid; + } catch (error) { + logger.debug(`No pid found for port: ${port}. Error: ${error}`); + return null; + } +}; + +export default getPID; diff --git a/packages/cli-tools/src/handlePortUnavailable.ts b/packages/cli-tools/src/handlePortUnavailable.ts new file mode 100644 index 000000000..f6635a1fc --- /dev/null +++ b/packages/cli-tools/src/handlePortUnavailable.ts @@ -0,0 +1,40 @@ +import getNextPort from './getNextPort'; +import { + askForPortChange, + logAlreadyRunningBundler, + logChangePortInstructions, +} from './port'; + +const handlePortUnavailable = async ( + initialPort: number, + projectRoot: string, + initialPackager?: boolean, +): Promise<{ + port: number; + packager: boolean; +}> => { + const {nextPort, start} = await getNextPort(initialPort, projectRoot); + let packager = initialPackager === true; + let port = initialPort; + + if (!start) { + packager = false; + logAlreadyRunningBundler(nextPort); + } else { + const {change} = await askForPortChange(port, nextPort); + + if (change) { + port = nextPort; + } else { + packager = false; + logChangePortInstructions(port); + } + } + + return { + port, + packager, + }; +}; + +export default handlePortUnavailable; diff --git a/packages/cli-tools/src/index.ts b/packages/cli-tools/src/index.ts index 8a0dd7f53..b23b5e8e9 100644 --- a/packages/cli-tools/src/index.ts +++ b/packages/cli-tools/src/index.ts @@ -11,7 +11,11 @@ export {default as hookStdout} from './hookStdout'; export {getLoader, NoopLoader, Loader} from './loader'; export {default as findProjectRoot} from './findProjectRoot'; export {default as printRunDoctorTip} from './printRunDoctorTip'; -export * as link from './doclink'; +export {default as getPidFromPort} from './getPidFromPort'; export * from './prompt'; +export * as link from './doclink'; +export {default as startServerInNewWindow} from './startServerInNewWindow'; +export {default as handlePortUnavailable} from './handlePortUnavailable'; +export * from './port'; export * from './errors'; diff --git a/packages/cli-tools/src/isPackagerRunning.ts b/packages/cli-tools/src/isPackagerRunning.ts index bc27f07e2..9d93fcad9 100644 --- a/packages/cli-tools/src/isPackagerRunning.ts +++ b/packages/cli-tools/src/isPackagerRunning.ts @@ -17,11 +17,26 @@ import {fetch} from './fetch'; */ async function isPackagerRunning( packagerPort: string | number = process.env.RCT_METRO_PORT || '8081', -): Promise<'running' | 'not_running' | 'unrecognized'> { +): Promise< + | { + status: 'running'; + root: string; + } + | 'not_running' + | 'unrecognized' +> { try { const {data} = await fetch(`http://localhost:${packagerPort}/status`); - return data === 'packager-status:running' ? 'running' : 'unrecognized'; + try { + if (data.status === 'running') { + return data; + } + } catch (_error) { + return 'unrecognized'; + } + + return 'unrecognized'; } catch (_error) { return 'not_running'; } diff --git a/packages/cli-plugin-metro/src/launchPackager.bat b/packages/cli-tools/src/launchPackager.bat similarity index 100% rename from packages/cli-plugin-metro/src/launchPackager.bat rename to packages/cli-tools/src/launchPackager.bat diff --git a/packages/cli-plugin-metro/src/launchPackager.command b/packages/cli-tools/src/launchPackager.command similarity index 82% rename from packages/cli-plugin-metro/src/launchPackager.command rename to packages/cli-tools/src/launchPackager.command index 5fb23c56e..419fd910f 100755 --- a/packages/cli-plugin-metro/src/launchPackager.command +++ b/packages/cli-tools/src/launchPackager.command @@ -2,7 +2,7 @@ THIS_DIR=$(cd -P "$(dirname "$(readlink "${BASH_SOURCE[0]}" || echo "${BASH_SOUR source "$THIS_DIR/.packager.env" cd $PROJECT_ROOT -$REACT_NATIVE_PATH/cli.js start +$REACT_NATIVE_PATH/cli.js start --port $RCT_METRO_PORT if [[ -z "$CI" ]]; then echo "Process terminated. Press to close the window" diff --git a/packages/cli-tools/src/port.ts b/packages/cli-tools/src/port.ts new file mode 100644 index 000000000..4b4d123c1 --- /dev/null +++ b/packages/cli-tools/src/port.ts @@ -0,0 +1,28 @@ +import {prompt} from './prompt'; +import logger from './logger'; +import chalk from 'chalk'; + +export const askForPortChange = async (port: number, nextPort: number) => { + logger.info( + `Metro is already running on port ${chalk.bold(port)} in another project.`, + ); + return await prompt({ + name: 'change', + type: 'select', + message: `Use port ${nextPort} instead?`, + choices: [ + {title: 'Yes', value: true}, + {title: 'No', value: false}, + ], + }); +}; + +export const logAlreadyRunningBundler = (port: number) => { + logger.info(`Metro Bundler is already for this project on port ${port}.`); +}; + +export const logChangePortInstructions = (port: number) => { + logger.info( + `Please close the other packager running on port ${port}, or select another port with "--port".`, + ); +}; diff --git a/packages/cli-plugin-metro/src/commands/start/startServerInNewWindow.ts b/packages/cli-tools/src/startServerInNewWindow.ts similarity index 86% rename from packages/cli-plugin-metro/src/commands/start/startServerInNewWindow.ts rename to packages/cli-tools/src/startServerInNewWindow.ts index c7d1eda80..dee278827 100644 --- a/packages/cli-plugin-metro/src/commands/start/startServerInNewWindow.ts +++ b/packages/cli-tools/src/startServerInNewWindow.ts @@ -1,18 +1,22 @@ import path from 'path'; import fs from 'fs'; import execa from 'execa'; -import { - CLIError, - logger, - resolveNodeModuleDir, -} from '@react-native-community/cli-tools'; +import {CLIError} from './errors'; +import resolveNodeModuleDir from './resolveNodeModuleDir'; +import logger from './logger'; -export function startServerInNewWindow( +function startServerInNewWindow( port: number, - terminal: string, projectRoot: string, reactNativePath: string, + terminal?: string, ) { + if (!terminal) { + throw new CLIError( + 'Cannot start server in new window because no terminal app was specified.', + ); + } + /** * Set up OS-specific filenames and commands */ @@ -27,7 +31,7 @@ export function startServerInNewWindow( const nodeModulesPath = resolveNodeModuleDir(projectRoot, '.bin'); const cliPluginMetroPath = path.join( path.dirname( - require.resolve('@react-native-community/cli-plugin-metro/package.json'), + require.resolve('@react-native-community/cli-tools/package.json'), ), 'build', ); @@ -70,7 +74,7 @@ export function startServerInNewWindow( } } 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-metro" folder and try again.`, + `Couldn't copy the script for running bundler. Please check if the "${scriptFile}" file exists in the "node_modules/@react-native-community/cli-tools" folder and try again.`, error as any, ); } @@ -110,3 +114,5 @@ export function startServerInNewWindow( ); return; } + +export default startServerInNewWindow; diff --git a/packages/cli/package.json b/packages/cli/package.json index 0187e3bcb..019a514c2 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -39,14 +39,14 @@ "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" }, "devDependencies": { "@types/fs-extra": "^8.1.0", "@types/graceful-fs": "^4.1.3", "@types/hapi__joi": "^17.1.6", - "@types/prompts": "^2.0.9", + "@types/prompts": "^2.4.4", "@types/semver": "^6.0.2", "deepmerge": "^4.3.0", "slash": "^3.0.0", diff --git a/yarn.lock b/yarn.lock index b827605f6..83b16bafd 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1617,32 +1617,83 @@ "@jridgewell/resolve-uri" "3.1.0" "@jridgewell/sourcemap-codec" "1.4.14" -"@lerna/child-process@7.1.3": - version "7.1.3" - resolved "https://registry.yarnpkg.com/@lerna/child-process/-/child-process-7.1.3.tgz#8037449080e0d2fdbff957e15bf1877a5d9872c3" - integrity sha512-ZXHo30G5Ia/RCWKVyBm+3kAe/liWy7KaRF+CPWZpxYo+ysFPBIJ/7XZlGMzmq8fQaMsPj1z61q4wyqeAlUwuvQ== +"@lerna/child-process@7.1.5": + version "7.1.5" + resolved "https://registry.yarnpkg.com/@lerna/child-process/-/child-process-7.1.5.tgz#a01e8821fb7b17a68d1c1527127543af6cf27f1b" + integrity sha512-YXmxzxXTP3u9HQpSXvK8qqoAm7VWQIFria3FVMQKkOSkWkph1TNnvt3Q1JvKT7/Jgd1HfTc3QrK09a2FND9+8A== dependencies: chalk "^4.1.0" execa "^5.0.0" strong-log-transformer "^2.1.0" -"@lerna/create@7.1.3": - version "7.1.3" - resolved "https://registry.yarnpkg.com/@lerna/create/-/create-7.1.3.tgz#497b50cee176083f7457a7ac1cd5e8f180761e73" - integrity sha512-i/xUmT7sMNTUhGpSUuQJ8N776YiT/fJaKPrzMSAoxqDBhyDryi4o4JUR+rrN9oELOEsO+SOXQEusBdkmUdVTMg== +"@lerna/create@7.1.5": + version "7.1.5" + resolved "https://registry.yarnpkg.com/@lerna/create/-/create-7.1.5.tgz#180b26f028be25b541a327429168da6c10bdb265" + integrity sha512-/CDI/cvXJbycgSDzWXzP7DBuJ10qL/uYEouFt3/mxi9+hSfM885fu6lbVPV7QOf8A0otXcTs7PN2dVyMrnWQeg== dependencies: - "@lerna/child-process" "7.1.3" + "@lerna/child-process" "7.1.5" + "@npmcli/run-script" "6.0.2" + "@nx/devkit" ">=16.5.1 < 17" + "@octokit/plugin-enterprise-rest" "6.0.1" + "@octokit/rest" "19.0.11" + byte-size "8.1.1" + chalk "4.1.0" + clone-deep "4.0.1" + cmd-shim "6.0.1" + columnify "1.6.0" + conventional-changelog-core "5.0.1" + conventional-recommended-bump "7.0.1" + cosmiconfig "^8.2.0" dedent "0.7.0" + execa "5.0.0" fs-extra "^11.1.1" + get-stream "6.0.0" + git-url-parse "13.1.0" + glob-parent "5.1.2" + globby "11.1.0" + graceful-fs "4.2.11" + has-unicode "2.0.1" + ini "^1.3.8" init-package-json "5.0.0" + inquirer "^8.2.4" + is-stream "2.0.0" + js-yaml "4.1.0" + libnpmpublish "7.3.0" + load-json-file "6.2.0" + lodash "^4.17.21" + make-dir "3.1.0" + minimatch "3.0.5" + multimatch "5.0.0" + node-fetch "2.6.7" npm-package-arg "8.1.1" + npm-packlist "5.1.1" + npm-registry-fetch "^14.0.5" + npmlog "^6.0.2" + nx ">=16.5.1 < 17" + p-map "4.0.0" + p-map-series "2.1.0" + p-queue "6.6.2" p-reduce "^2.1.0" pacote "^15.2.0" pify "5.0.0" + read-cmd-shim "4.0.0" + read-package-json "6.0.4" + resolve-from "5.0.0" + rimraf "^4.4.1" semver "^7.3.4" + signal-exit "3.0.7" slash "^3.0.0" + ssri "^9.0.1" + strong-log-transformer "2.1.0" + tar "6.1.11" + temp-dir "1.0.0" + upath "2.0.1" + uuid "^9.0.0" validate-npm-package-license "^3.0.4" validate-npm-package-name "5.0.0" + write-file-atomic "5.0.1" + write-pkg "4.0.0" + yargs "16.2.0" yargs-parser "20.2.4" "@mrmlnc/readdir-enhanced@^2.2.1": @@ -1736,81 +1787,82 @@ read-package-json-fast "^3.0.0" which "^3.0.0" -"@nrwl/devkit@16.5.1": - version "16.5.1" - resolved "https://registry.yarnpkg.com/@nrwl/devkit/-/devkit-16.5.1.tgz#43985cc1105e85afd8323586477c4a0d1b2eeee3" - integrity sha512-NB+DE/+AFJ7lKH/WBFyatJEhcZGj25F24ncDkwjZ6MzEiSOGOJS0LaV/R+VUsmS5EHTPXYOpn3zHWWAcJhyOmA== +"@nrwl/devkit@16.6.0": + version "16.6.0" + resolved "https://registry.yarnpkg.com/@nrwl/devkit/-/devkit-16.6.0.tgz#f44afd175743fc293606f90f8d67f93f149326df" + integrity sha512-xZEN6wfA1uJwv+FVRQFOHsCcpvGvIYGx2zutbzungDodWkfzlJ3tzIGqYjIpPCBVT83erM6Gscnka2W46AuKfA== dependencies: - "@nx/devkit" "16.5.1" + "@nx/devkit" "16.6.0" -"@nrwl/tao@16.5.1": - version "16.5.1" - resolved "https://registry.yarnpkg.com/@nrwl/tao/-/tao-16.5.1.tgz#e6e6b1ab73238497d4d9f014b30af18722e73503" - integrity sha512-x+gi/fKdM6uQNIti9exFlm3V5LBP3Y8vOEziO42HdOigyrXa0S0HD2WMpccmp6PclYKhwEDUjKJ39xh5sdh4Ig== +"@nrwl/tao@16.6.0": + version "16.6.0" + resolved "https://registry.yarnpkg.com/@nrwl/tao/-/tao-16.6.0.tgz#7920111d53b02cbb41b71deaf887745c1b0df61d" + integrity sha512-NQkDhmzlR1wMuYzzpl4XrKTYgyIzELdJ+dVrNKf4+p4z5WwKGucgRBj60xMQ3kdV25IX95/fmMDB8qVp/pNQ0Q== dependencies: - nx "16.5.1" + nx "16.6.0" + tslib "^2.3.0" -"@nx/devkit@16.5.1", "@nx/devkit@>=16.1.3 < 17": - version "16.5.1" - resolved "https://registry.yarnpkg.com/@nx/devkit/-/devkit-16.5.1.tgz#1d6a27895a7c85edebe0ba31e0a394839ad5fdd2" - integrity sha512-T1acZrVVmJw/sJ4PIGidCBYBiBqlg/jT9e8nIGXLSDS20xcLvfo4zBQf8UZLrmHglnwwpDpOWuVJCp2rYA5aDg== +"@nx/devkit@16.6.0", "@nx/devkit@>=16.5.1 < 17": + version "16.6.0" + resolved "https://registry.yarnpkg.com/@nx/devkit/-/devkit-16.6.0.tgz#965668467ffb790e1c84c6853f377e7cc56f52be" + integrity sha512-rhJ0y+MSPHDuoZPxsOYdj/n5ks+gK74TIMgTb8eZgPT/uR86a4oxf62wUQXgECedR5HzLE2HunbnoLhhJXmpJw== dependencies: - "@nrwl/devkit" "16.5.1" + "@nrwl/devkit" "16.6.0" ejs "^3.1.7" ignore "^5.0.4" semver "7.5.3" tmp "~0.2.1" tslib "^2.3.0" -"@nx/nx-darwin-arm64@16.5.1": - version "16.5.1" - resolved "https://registry.yarnpkg.com/@nx/nx-darwin-arm64/-/nx-darwin-arm64-16.5.1.tgz#87111664de492e5ae270ef2adc74553e03d77341" - integrity sha512-q98TFI4B/9N9PmKUr1jcbtD4yAFs1HfYd9jUXXTQOlfO9SbDjnrYJgZ4Fp9rMNfrBhgIQ4x1qx0AukZccKmH9Q== - -"@nx/nx-darwin-x64@16.5.1": - version "16.5.1" - resolved "https://registry.yarnpkg.com/@nx/nx-darwin-x64/-/nx-darwin-x64-16.5.1.tgz#05c34ce8f8f23eeae0529d3c1022ee3e95a608a1" - integrity sha512-j9HmL1l8k7EVJ3eOM5y8COF93gqrydpxCDoz23ZEtsY+JHY77VAiRQsmqBgEx9GGA2dXi9VEdS67B0+1vKariw== - -"@nx/nx-freebsd-x64@16.5.1": - version "16.5.1" - resolved "https://registry.yarnpkg.com/@nx/nx-freebsd-x64/-/nx-freebsd-x64-16.5.1.tgz#b4303ac5066f5c8ced7768097d6c85e8055c7d3a" - integrity sha512-CXSPT01aVS869tvCCF2tZ7LnCa8l41wJ3mTVtWBkjmRde68E5Up093hklRMyXb3kfiDYlfIKWGwrV4r0eH6x1A== - -"@nx/nx-linux-arm-gnueabihf@16.5.1": - version "16.5.1" - resolved "https://registry.yarnpkg.com/@nx/nx-linux-arm-gnueabihf/-/nx-linux-arm-gnueabihf-16.5.1.tgz#4dde9e8c79da9c5a213b6938dff74f65dd79c157" - integrity sha512-BhrumqJSZCWFfLFUKl4CAUwR0Y0G2H5EfFVGKivVecEQbb+INAek1aa6c89evg2/OvetQYsJ+51QknskwqvLsA== - -"@nx/nx-linux-arm64-gnu@16.5.1": - version "16.5.1" - resolved "https://registry.yarnpkg.com/@nx/nx-linux-arm64-gnu/-/nx-linux-arm64-gnu-16.5.1.tgz#43dcdbd9b39fa91923ab949d161aa25c650f56d9" - integrity sha512-x7MsSG0W+X43WVv7JhiSq2eKvH2suNKdlUHEG09Yt0vm3z0bhtym1UCMUg3IUAK7jy9hhLeDaFVFkC6zo+H/XQ== - -"@nx/nx-linux-arm64-musl@16.5.1": - version "16.5.1" - resolved "https://registry.yarnpkg.com/@nx/nx-linux-arm64-musl/-/nx-linux-arm64-musl-16.5.1.tgz#fc33960cecb0064c3dd3330f393e3a38be8a71b7" - integrity sha512-J+/v/mFjOm74I0PNtH5Ka+fDd+/dWbKhpcZ2R1/6b9agzZk+Ff/SrwJcSYFXXWKbPX+uQ4RcJoytT06Zs3s0ow== - -"@nx/nx-linux-x64-gnu@16.5.1": - version "16.5.1" - resolved "https://registry.yarnpkg.com/@nx/nx-linux-x64-gnu/-/nx-linux-x64-gnu-16.5.1.tgz#2b2ffbb80e29455b6900ec20d4249055590dc58f" - integrity sha512-igooWJ5YxQ94Zft7IqgL+Lw0qHaY15Btw4gfK756g/YTYLZEt4tTvR1y6RnK/wdpE3sa68bFTLVBNCGTyiTiDQ== - -"@nx/nx-linux-x64-musl@16.5.1": - version "16.5.1" - resolved "https://registry.yarnpkg.com/@nx/nx-linux-x64-musl/-/nx-linux-x64-musl-16.5.1.tgz#955b2eae615ee6cf1954e24d42c205b1de8772bf" - integrity sha512-zF/exnPqFYbrLAduGhTmZ7zNEyADid2bzNQiIjJkh8Y6NpDwrQIwVIyvIxqynsjMrIs51kBH+8TUjKjj2Jgf5A== - -"@nx/nx-win32-arm64-msvc@16.5.1": - version "16.5.1" - resolved "https://registry.yarnpkg.com/@nx/nx-win32-arm64-msvc/-/nx-win32-arm64-msvc-16.5.1.tgz#1dc4a7e3662eb757214c46d8db432f61e43a3dd9" - integrity sha512-qtqiLS9Y9TYyAbbpq58kRoOroko4ZXg5oWVqIWFHoxc5bGPweQSJCROEqd1AOl2ZDC6BxfuVHfhDDop1kK05WA== - -"@nx/nx-win32-x64-msvc@16.5.1": - version "16.5.1" - resolved "https://registry.yarnpkg.com/@nx/nx-win32-x64-msvc/-/nx-win32-x64-msvc-16.5.1.tgz#d2f4a1b2bf675bceb6fb16174b836438293f9dca" - integrity sha512-kUJBLakK7iyA9WfsGGQBVennA4jwf5XIgm0lu35oMOphtZIluvzItMt0EYBmylEROpmpEIhHq0P6J9FA+WH0Rg== +"@nx/nx-darwin-arm64@16.6.0": + version "16.6.0" + resolved "https://registry.yarnpkg.com/@nx/nx-darwin-arm64/-/nx-darwin-arm64-16.6.0.tgz#5d64345403cf7806ce47e6c46ee97345a19933cf" + integrity sha512-8nJuqcWG/Ob39rebgPLpv2h/V46b9Rqqm/AGH+bYV9fNJpxgMXclyincbMIWvfYN2tW+Vb9DusiTxV6RPrLapA== + +"@nx/nx-darwin-x64@16.6.0": + version "16.6.0" + resolved "https://registry.yarnpkg.com/@nx/nx-darwin-x64/-/nx-darwin-x64-16.6.0.tgz#fc04680ed659bd73d7025cc6ca95bcff30878c2c" + integrity sha512-T4DV0/2PkPZjzjmsmQEyjPDNBEKc4Rhf7mbIZlsHXj27BPoeNjEcbjtXKuOZHZDIpGFYECGT/sAF6C2NVYgmxw== + +"@nx/nx-freebsd-x64@16.6.0": + version "16.6.0" + resolved "https://registry.yarnpkg.com/@nx/nx-freebsd-x64/-/nx-freebsd-x64-16.6.0.tgz#e85cf634c94269738d69df514baf42d13b21aac7" + integrity sha512-Ck/yejYgp65dH9pbExKN/X0m22+xS3rWF1DBr2LkP6j1zJaweRc3dT83BWgt5mCjmcmZVk3J8N01AxULAzUAqA== + +"@nx/nx-linux-arm-gnueabihf@16.6.0": + version "16.6.0" + resolved "https://registry.yarnpkg.com/@nx/nx-linux-arm-gnueabihf/-/nx-linux-arm-gnueabihf-16.6.0.tgz#6f8c76c1125d88a937a518ff0295230a84362f57" + integrity sha512-eyk/R1mBQ3X0PCSS+Cck3onvr3wmZVmM/+x0x9Ai02Vm6q9Eq6oZ1YtZGQsklNIyw1vk2WV9rJCStfu9mLecEw== + +"@nx/nx-linux-arm64-gnu@16.6.0": + version "16.6.0" + resolved "https://registry.yarnpkg.com/@nx/nx-linux-arm64-gnu/-/nx-linux-arm64-gnu-16.6.0.tgz#21ab044c9277133cb26dd73c4edc536965e0d15f" + integrity sha512-S0qFFdQFDmBIEZqBAJl4K47V3YuMvDvthbYE0enXrXApWgDApmhtxINXSOjSus7DNq9kMrgtSDGkBmoBot61iw== + +"@nx/nx-linux-arm64-musl@16.6.0": + version "16.6.0" + resolved "https://registry.yarnpkg.com/@nx/nx-linux-arm64-musl/-/nx-linux-arm64-musl-16.6.0.tgz#d4220c9deacf89753e720cec95198b812e703941" + integrity sha512-TXWY5VYtg2wX/LWxyrUkDVpqCyJHF7fWoVMUSlFe+XQnk9wp/yIbq2s0k3h8I4biYb6AgtcVqbR4ID86lSNuMA== + +"@nx/nx-linux-x64-gnu@16.6.0": + version "16.6.0" + resolved "https://registry.yarnpkg.com/@nx/nx-linux-x64-gnu/-/nx-linux-x64-gnu-16.6.0.tgz#8acdb3b18836c90d26ba127bd8cecb8efee97176" + integrity sha512-qQIpSVN8Ij4oOJ5v+U+YztWJ3YQkeCIevr4RdCE9rDilfq9RmBD94L4VDm7NRzYBuQL8uQxqWzGqb7ZW4mfHpw== + +"@nx/nx-linux-x64-musl@16.6.0": + version "16.6.0" + resolved "https://registry.yarnpkg.com/@nx/nx-linux-x64-musl/-/nx-linux-x64-musl-16.6.0.tgz#d7f1798ed74b4416f531d569dc42479a415b7022" + integrity sha512-EYOHe11lfVfEfZqSAIa1c39mx2Obr4mqd36dBZx+0UKhjrcmWiOdsIVYMQSb3n0TqB33BprjI4p9ZcFSDuoNbA== + +"@nx/nx-win32-arm64-msvc@16.6.0": + version "16.6.0" + resolved "https://registry.yarnpkg.com/@nx/nx-win32-arm64-msvc/-/nx-win32-arm64-msvc-16.6.0.tgz#90368c7a08609c07d25fa7004983b6821de6c65a" + integrity sha512-f1BmuirOrsAGh5+h/utkAWNuqgohvBoekQgMxYcyJxSkFN+pxNG1U68P59Cidn0h9mkyonxGVCBvWwJa3svVFA== + +"@nx/nx-win32-x64-msvc@16.6.0": + version "16.6.0" + resolved "https://registry.yarnpkg.com/@nx/nx-win32-x64-msvc/-/nx-win32-x64-msvc-16.6.0.tgz#9a6b74f923bb7113c41f078ec86994162b97df8b" + integrity sha512-UmTTjFLpv4poVZE3RdUHianU8/O9zZYBiAnTRq5spwSDwxJHnLTZBUxFFf3ztCxeHOUIfSyW9utpGfCMCptzvQ== "@octokit/auth-token@^3.0.0": version "3.0.4" @@ -2006,17 +2058,24 @@ resolved "https://registry.yarnpkg.com/@react-native-community/eslint-plugin/-/eslint-plugin-1.1.0.tgz#e42b1bef12d2415411519fd528e64b593b1363dc" integrity sha512-W/J0fNYVO01tioHjvYWQ9m6RgndVtbElzYozBq1ZPrHO/iCzlqoySHl4gO/fpCl9QEFjvJfjPgtPMTMlsoq5DQ== -"@sigstore/protobuf-specs@^0.1.0": - version "0.1.0" - resolved "https://registry.yarnpkg.com/@sigstore/protobuf-specs/-/protobuf-specs-0.1.0.tgz#957cb64ea2f5ce527cc9cf02a096baeb0d2b99b4" - integrity sha512-a31EnjuIDSX8IXBUib3cYLDRlPMU36AWX4xS8ysLaNu4ZzUesDiPt83pgrW2X1YLMe5L2HbDyaKK5BrL4cNKaQ== +"@sigstore/bundle@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@sigstore/bundle/-/bundle-1.0.0.tgz#2f2f4867f434760f4bc6f4b4bbccbaecd4143bc3" + integrity sha512-yLvrWDOh6uMOUlFCTJIZEnwOT9Xte7NPXUqVexEKGSF5XtBAuSg5du0kn3dRR0p47a4ah10Y0mNt8+uyeQXrBQ== + dependencies: + "@sigstore/protobuf-specs" "^0.2.0" -"@sigstore/tuf@^1.0.1": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@sigstore/tuf/-/tuf-1.0.2.tgz#acbb2c8399fb03aca0c90fa1dc1934bda4160623" - integrity sha512-vjwcYePJzM01Ha6oWWZ9gNcdIgnzyFxfqfWzph483DPJTH8Tb7f7bQRRll3CYVkyH56j0AgcPAcl6Vg95DPF+Q== +"@sigstore/protobuf-specs@^0.2.0": + version "0.2.0" + resolved "https://registry.yarnpkg.com/@sigstore/protobuf-specs/-/protobuf-specs-0.2.0.tgz#5801b2a4d10afe1577be6133be6b132b5677c18c" + integrity sha512-8ZhZKAVfXjIspDWwm3D3Kvj0ddbJ0HqDZ/pOs5cx88HpT8mVsotFrg7H1UMnXOuDHz6Zykwxn4mxG3QLuN+RUg== + +"@sigstore/tuf@^1.0.3": + version "1.0.3" + resolved "https://registry.yarnpkg.com/@sigstore/tuf/-/tuf-1.0.3.tgz#2a65986772ede996485728f027b0514c0b70b160" + integrity sha512-2bRovzs0nJZFlCN3rXirE4gwxCn97JNjMmwpecqlbgV9WcxX7WRuIrgzx/X7Ib7MYRbyUTpBYE0s2x6AmZXnlg== dependencies: - "@sigstore/protobuf-specs" "^0.1.0" + "@sigstore/protobuf-specs" "^0.2.0" tuf-js "^1.1.7" "@sinclair/typebox@^0.27.8": @@ -2286,9 +2345,9 @@ form-data "^3.0.0" "@types/node@*", "@types/node@^18.0.0": - version "18.16.19" - resolved "https://registry.yarnpkg.com/@types/node/-/node-18.16.19.tgz#cb03fca8910fdeb7595b755126a8a78144714eea" - integrity sha512-IXl7o+R9iti9eBW4Wg2hx1xQDig183jj7YLn8F7udNceyfkbn1ZxmzZXuak20gR40D7pIkIY1kYGx5VIGbaHKA== + version "18.17.4" + resolved "https://registry.yarnpkg.com/@types/node/-/node-18.17.4.tgz#bf8ae9875528929cc9930dc3f066cd0481fe1231" + integrity sha512-ATL4WLgr7/W40+Sp1WnNTSKbgVn6Pvhc/2RHAdt8fl6NsQyp4oPCi2eKcGOvA494bwf1K/W6nGgZ9TwDqvpjdw== "@types/normalize-package-data@^2.4.0": version "2.4.0" @@ -2305,12 +2364,13 @@ resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.0.0.tgz#dc85454b953178cc6043df5208b9e949b54a3bc4" integrity sha512-/rM+sWiuOZ5dvuVzV37sUuklsbg+JPOP8d+nNFlo2ZtfpzPiPvh1/gc8liWOLBqe+sR+ZM7guPaIcTt6UZTo7Q== -"@types/prompts@^2.0.9": - version "2.0.9" - resolved "https://registry.yarnpkg.com/@types/prompts/-/prompts-2.0.9.tgz#19f419310eaa224a520476b19d4183f6a2b3bd8f" - integrity sha512-TORZP+FSjTYMWwKadftmqEn6bziN5RnfygehByGsjxoK5ydnClddtv6GikGWPvCm24oI+YBwck5WDxIIyNxUrA== +"@types/prompts@^2.4.4": + version "2.4.4" + resolved "https://registry.yarnpkg.com/@types/prompts/-/prompts-2.4.4.tgz#dd5a1d41cb1bcd0fc4464bf44a0c8354f36ea735" + integrity sha512-p5N9uoTH76lLvSAaYSZtBCdEXzpOOufsRjnhjVSrZGXikVGHX9+cc9ERtHRV4hvBKHyZb1bg4K+56Bd2TqUn4A== dependencies: "@types/node" "*" + kleur "^3.0.3" "@types/q@^1.5.1": version "1.5.2" @@ -2587,12 +2647,10 @@ agent-base@6, agent-base@^6.0.2: debug "4" agentkeepalive@^4.2.1: - version "4.3.0" - resolved "https://registry.yarnpkg.com/agentkeepalive/-/agentkeepalive-4.3.0.tgz#bb999ff07412653c1803b3ced35e50729830a255" - integrity sha512-7Epl1Blf4Sy37j4v9f9FjICCh4+KAQOyXgHEwlyBiAQLbhKdq/i2QQU3amQalS/wPhdPzDXPL5DMR5bkn+YeWg== + version "4.5.0" + resolved "https://registry.yarnpkg.com/agentkeepalive/-/agentkeepalive-4.5.0.tgz#2673ad1389b3c418c5a20c5d7364f93ca04be923" + integrity sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew== dependencies: - debug "^4.1.0" - depd "^2.0.0" humanize-ms "^1.2.1" aggregate-error@^3.0.0: @@ -4457,11 +4515,6 @@ denodeify@^1.2.1: resolved "https://registry.yarnpkg.com/denodeify/-/denodeify-1.2.1.tgz#3a36287f5034e699e7577901052c2e6c94251631" integrity sha512-KNTihKNmQENUZeKu5fzfpzRqR5S2VMp4gl9RFHiWzj9DfvYQPMJ6XHKNaQxaGCXwPk6y9yme3aUoaiAe+KX+vg== -depd@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" - integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== - depd@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" @@ -5335,9 +5388,9 @@ fast-glob@^2.2.2: micromatch "^3.1.10" fast-glob@^3.2.9: - version "3.3.0" - resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.0.tgz#7c40cb491e1e2ed5664749e87bfb516dbe8727c0" - integrity sha512-ChDuvbOypPuNjO8yIDf36x7BlZX1smcUMTTcyoIjycexOxd6DFsKsg21qVBzEmr3G7fUKIRy2/psii+CIUt7FA== + version "3.3.1" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.1.tgz#784b4e897340f3dbbef17413b3f11acf03c874c4" + integrity sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg== dependencies: "@nodelib/fs.stat" "^2.0.2" "@nodelib/fs.walk" "^1.2.3" @@ -5917,12 +5970,12 @@ growly@^1.3.0: integrity sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE= handlebars@^4.7.7: - version "4.7.7" - resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.7.7.tgz#9ce33416aad02dbd6c8fafa8240d5d98004945a1" - integrity sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA== + version "4.7.8" + resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.7.8.tgz#41c42c18b1be2365439188c77c6afae71c0cd9e9" + integrity sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ== dependencies: minimist "^1.2.5" - neo-async "^2.6.0" + neo-async "^2.6.2" source-map "^0.6.1" wordwrap "^1.0.0" optionalDependencies: @@ -6410,9 +6463,9 @@ init-package-json@5.0.0: validate-npm-package-name "^5.0.0" inquirer@^8.2.4: - version "8.2.5" - resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-8.2.5.tgz#d8654a7542c35a9b9e069d27e2df4858784d54f8" - integrity sha512-QAgPDQMEgrDssk1XiwwHoOGYF9BAbUcc1+j+FhEvaOt8/cKRqyLn0U5qA6F74fGhTMGxf92pOvPBeh29jQJDTQ== + version "8.2.6" + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-8.2.6.tgz#733b74888195d8d400a67ac332011b5fae5ea562" + integrity sha512-M1WuAmb7pn9zdFRtQYk26ZBoY043Sse0wVDdk4Bppr+JOXyQYybdtvK+l9wUibhtjdjvtoiNy8tk+EgsYIUqKg== dependencies: ansi-escapes "^4.2.1" chalk "^4.1.1" @@ -6428,7 +6481,7 @@ inquirer@^8.2.4: string-width "^4.1.0" strip-ansi "^6.0.0" through "^2.3.6" - wrap-ansi "^7.0.0" + wrap-ansi "^6.0.1" internal-slot@^1.0.2, internal-slot@^1.0.3: version "1.0.3" @@ -6933,9 +6986,9 @@ istanbul-reports@^3.0.2: istanbul-lib-report "^3.0.0" jackspeak@^2.0.3: - version "2.2.1" - resolved "https://registry.yarnpkg.com/jackspeak/-/jackspeak-2.2.1.tgz#655e8cf025d872c9c03d3eb63e8f0c024fef16a6" - integrity sha512-MXbxovZ/Pm42f6cDIDkl3xpwv1AGwObKwfmjs2nQePiy85tP3fatofl3FC1aBsOtP/6fq5SbtgHwWcMsLP+bDw== + version "2.2.3" + resolved "https://registry.yarnpkg.com/jackspeak/-/jackspeak-2.2.3.tgz#ac63c57c18d254dc78a1f4ecd1cdeb4daeb6e616" + integrity sha512-pF0kfjmg8DJLxDrizHoCZGUFz4P4czQ3HyfW4BU0ffebYkzAVlBywp5zaxW/TM+r0sGbmrQdi8EQQVTJFxnGsQ== dependencies: "@isaacs/cliui" "^8.0.2" optionalDependencies: @@ -7031,14 +7084,14 @@ jest-config@^26.6.2: pretty-format "^26.6.2" "jest-diff@>=29.4.3 < 30": - version "29.6.1" - resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-29.6.1.tgz#13df6db0a89ee6ad93c747c75c85c70ba941e545" - integrity sha512-FsNCvinvl8oVxpNLttNQX7FAq7vR+gMDGj90tiP7siWw1UdakWUGqrylpsYrpvj908IYckm5Y0Q7azNAozU1Kg== + version "29.6.2" + resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-29.6.2.tgz#c36001e5543e82a0805051d3ceac32e6825c1c46" + integrity sha512-t+ST7CB9GX5F2xKwhwCf0TAR17uNDiaPTZnVymP9lw0lssa9vG+AFyDZoeIHStU3WowFFwT+ky+er0WVl2yGhA== dependencies: chalk "^4.0.0" diff-sequences "^29.4.3" jest-get-type "^29.4.3" - pretty-format "^29.6.1" + pretty-format "^29.6.2" jest-diff@^25.1.0, jest-diff@^25.2.3: version "25.2.3" @@ -7776,14 +7829,14 @@ kleur@^3.0.3: integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== lerna@^7.1.3: - version "7.1.3" - resolved "https://registry.yarnpkg.com/lerna/-/lerna-7.1.3.tgz#9aef15620b54038b1e4c5ea620c6b9b7590f26a4" - integrity sha512-LMs9HU0z5fNFMNOyDVinJcf04QaScReJ8Q2pqxO+nPOmbvNsBwykBgMTWLboL1rI1CCR0/WLdMnvObvR52MtTw== + version "7.1.5" + resolved "https://registry.yarnpkg.com/lerna/-/lerna-7.1.5.tgz#f65bde23d477382a221f9373f82d027825fa8622" + integrity sha512-5bvfmoIH4Czk5mdoLaRPYkM3M63Ei6+TOuXs3MgXmvqD8vs+vQpHuBVmiYFp5Mwsck3FkidJ+eTxfucltA2Lmw== dependencies: - "@lerna/child-process" "7.1.3" - "@lerna/create" "7.1.3" + "@lerna/child-process" "7.1.5" + "@lerna/create" "7.1.5" "@npmcli/run-script" "6.0.2" - "@nx/devkit" ">=16.1.3 < 17" + "@nx/devkit" ">=16.5.1 < 17" "@octokit/plugin-enterprise-rest" "6.0.1" "@octokit/rest" "19.0.11" byte-size "8.1.1" @@ -7817,6 +7870,7 @@ lerna@^7.1.3: libnpmaccess "7.0.2" libnpmpublish "7.3.0" load-json-file "6.2.0" + lodash "^4.17.21" make-dir "3.1.0" minimatch "3.0.5" multimatch "5.0.0" @@ -7825,7 +7879,7 @@ lerna@^7.1.3: npm-packlist "5.1.1" npm-registry-fetch "^14.0.5" npmlog "^6.0.2" - nx ">=16.1.3 < 17" + nx ">=16.5.1 < 17" p-map "4.0.0" p-map-series "2.1.0" p-pipe "3.1.0" @@ -8763,7 +8817,7 @@ negotiator@0.6.3, negotiator@^0.6.3: resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== -neo-async@^2.6.0: +neo-async@^2.6.2: version "2.6.2" resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== @@ -8868,6 +8922,11 @@ node-libs-browser@^2.0.0: util "^0.11.0" vm-browserify "^1.0.1" +node-machine-id@1.1.12: + version "1.1.12" + resolved "https://registry.yarnpkg.com/node-machine-id/-/node-machine-id-1.1.12.tgz#37904eee1e59b320bb9c5d6c0a59f3b469cb6267" + integrity sha512-QNABxbrPa3qEIfrE6GOJ7BYIuignnJw7iQ2YPbc3Nla1HzRJjXzZOiikfF8m7eAMfichLt3M4VgLOetqgDmgGQ== + node-modules-regexp@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz#8d9dbe28964a4ac5712e9131642107c71e90ec40" @@ -9022,9 +9081,9 @@ npm-packlist@^7.0.0: ignore-walk "^6.0.0" npm-pick-manifest@^8.0.0: - version "8.0.1" - resolved "https://registry.yarnpkg.com/npm-pick-manifest/-/npm-pick-manifest-8.0.1.tgz#c6acd97d1ad4c5dbb80eac7b386b03ffeb289e5f" - integrity sha512-mRtvlBjTsJvfCCdmPtiu2bdlx8d/KXtF7yNXNWe7G0Z36qWA9Ny5zXsI2PfBZEv7SXgoxTmNaTzGSbbzDZChoA== + version "8.0.2" + resolved "https://registry.yarnpkg.com/npm-pick-manifest/-/npm-pick-manifest-8.0.2.tgz#2159778d9c7360420c925c1a2287b5a884c713aa" + integrity sha512-1dKY+86/AIiq1tkKVD3l0WI+Gd3vkknVGAggsFeBkTvbhMQ1OND/LKkYv4JtXPKUJ8bOTCyLiqEg2P6QNdK+Gg== dependencies: npm-install-checks "^6.0.0" npm-normalize-package-bin "^3.0.0" @@ -9092,12 +9151,12 @@ nwsapi@^2.1.3, nwsapi@^2.2.0: resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.0.tgz#204879a9e3d068ff2a55139c2c772780681a38b7" integrity sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ== -nx@16.5.1, "nx@>=16.1.3 < 17": - version "16.5.1" - resolved "https://registry.yarnpkg.com/nx/-/nx-16.5.1.tgz#fc0d19090d8faae5f431f9fec199adf95881150c" - integrity sha512-I3hJRE4hG7JWAtncWwDEO3GVeGPpN0TtM8xH5ArZXyDuVeTth/i3TtJzdDzqXO1HHtIoAQN0xeq4n9cLuMil5g== +nx@16.6.0, "nx@>=16.5.1 < 17": + version "16.6.0" + resolved "https://registry.yarnpkg.com/nx/-/nx-16.6.0.tgz#58bfc887a65782faaa6298461b6a7ea0fc02695f" + integrity sha512-4UaS9nRakpZs45VOossA7hzSQY2dsr035EoPRGOc81yoMFW6Sqn1Rgq4hiLbHZOY8MnWNsLMkgolNMz1jC8YUQ== dependencies: - "@nrwl/tao" "16.5.1" + "@nrwl/tao" "16.6.0" "@parcel/watcher" "2.0.4" "@yarnpkg/lockfile" "^1.1.0" "@yarnpkg/parsers" "3.0.0-rc.46" @@ -9119,6 +9178,7 @@ nx@16.5.1, "nx@>=16.1.3 < 17": jsonc-parser "3.2.0" lines-and-columns "~2.0.3" minimatch "3.0.5" + node-machine-id "1.1.12" npm-run-path "^4.0.1" open "^8.4.0" semver "7.5.3" @@ -9132,16 +9192,16 @@ nx@16.5.1, "nx@>=16.1.3 < 17": yargs "^17.6.2" yargs-parser "21.1.1" optionalDependencies: - "@nx/nx-darwin-arm64" "16.5.1" - "@nx/nx-darwin-x64" "16.5.1" - "@nx/nx-freebsd-x64" "16.5.1" - "@nx/nx-linux-arm-gnueabihf" "16.5.1" - "@nx/nx-linux-arm64-gnu" "16.5.1" - "@nx/nx-linux-arm64-musl" "16.5.1" - "@nx/nx-linux-x64-gnu" "16.5.1" - "@nx/nx-linux-x64-musl" "16.5.1" - "@nx/nx-win32-arm64-msvc" "16.5.1" - "@nx/nx-win32-x64-msvc" "16.5.1" + "@nx/nx-darwin-arm64" "16.6.0" + "@nx/nx-darwin-x64" "16.6.0" + "@nx/nx-freebsd-x64" "16.6.0" + "@nx/nx-linux-arm-gnueabihf" "16.6.0" + "@nx/nx-linux-arm64-gnu" "16.6.0" + "@nx/nx-linux-arm64-musl" "16.6.0" + "@nx/nx-linux-x64-gnu" "16.6.0" + "@nx/nx-linux-x64-musl" "16.6.0" + "@nx/nx-win32-arm64-msvc" "16.6.0" + "@nx/nx-win32-x64-msvc" "16.6.0" oauth-sign@~0.9.0: version "0.9.0" @@ -10233,6 +10293,15 @@ pretty-format@^29.6.1: ansi-styles "^5.0.0" react-is "^18.0.0" +pretty-format@^29.6.2: + version "29.6.2" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-29.6.2.tgz#3d5829261a8a4d89d8b9769064b29c50ed486a47" + integrity sha512-1q0oC8eRveTg5nnBEWMXAU2qpv65Gnuf2eCQzSjxpWFkPaPARwqZZDGuNE0zPAZfTCHzIk3A8dIjwlQKKLphyg== + dependencies: + "@jest/schemas" "^29.6.0" + ansi-styles "^5.0.0" + react-is "^18.0.0" + private@^0.1.8: version "0.1.8" resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff" @@ -10271,7 +10340,7 @@ promise-retry@^2.0.1: err-code "^2.0.2" retry "^0.12.0" -prompts@^2.0.1, prompts@^2.4.0: +prompts@^2.0.1: version "2.4.0" resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.0.tgz#4aa5de0723a231d1ee9121c40fdf663df73f61d7" integrity sha512-awZAKrk3vN6CroQukBL+R9051a4R3zCZBlJm/HBfrSZ8iTpYix3VX1vU4mveiLpiwmOJT4wokTF9m6HUk4KqWQ== @@ -10279,6 +10348,14 @@ prompts@^2.0.1, prompts@^2.4.0: kleur "^3.0.3" sisteransi "^1.0.5" +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== + dependencies: + kleur "^3.0.3" + sisteransi "^1.0.5" + promzard@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/promzard/-/promzard-1.0.0.tgz#3246f8e6c9895a77c0549cefb65828ac0f6c006b" @@ -11175,17 +11252,18 @@ signal-exit@^3.0.0, signal-exit@^3.0.2, signal-exit@^3.0.3: integrity sha512-sDl4qMFpijcGw22U5w63KmD3cZJfBuFlVNbVMKje2keoKML7X2UzWbc4XrmEbDwg0NXJc3yv4/ox7b+JWb57kQ== signal-exit@^4.0.1: - version "4.0.2" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-4.0.2.tgz#ff55bb1d9ff2114c13b400688fa544ac63c36967" - integrity sha512-MY2/qGx4enyjprQnFaZsHib3Yadh3IXyV2C321GY0pjGfVBu4un0uDJkwgdxqO+Rdx8JMT8IfJIRwbYVz3Ob3Q== + version "4.1.0" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-4.1.0.tgz#952188c1cbd546070e2dd20d0f41c0ae0530cb04" + integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw== sigstore@^1.3.0, sigstore@^1.4.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/sigstore/-/sigstore-1.7.0.tgz#9186e6c8ce1ab0cba5d97b414212d40f0a01564e" - integrity sha512-KP7QULhWdlu3hlp+jw2EvgWKlOGOY9McLj/jrchLjHNlNPK0KWIwF919cbmOp6QiKXLmPijR2qH/5KYWlbtG9Q== + version "1.8.0" + resolved "https://registry.yarnpkg.com/sigstore/-/sigstore-1.8.0.tgz#f790120697fa7c89f4418598ce59e638ff680aa5" + integrity sha512-ogU8qtQ3VFBawRJ8wjsBEX/vIFeHuGs1fm4jZtjWQwjo8pfAt7T/rh+udlAN4+QUe0IzA8qRSc/YZ7dHP6kh+w== dependencies: - "@sigstore/protobuf-specs" "^0.1.0" - "@sigstore/tuf" "^1.0.1" + "@sigstore/bundle" "^1.0.0" + "@sigstore/protobuf-specs" "^0.2.0" + "@sigstore/tuf" "^1.0.3" make-fetch-happen "^11.0.1" simple-swizzle@^0.2.2: @@ -12080,9 +12158,9 @@ tslib@^2.1.0: integrity sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA== tslib@^2.3.0, tslib@^2.4.0: - version "2.6.0" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.0.tgz#b295854684dbda164e181d259a22cd779dcd7bc3" - integrity sha512-7At1WUettjcSRHXCyYtTselblcHl9PJFFVKiCAy/bY97+BPZXSQ2wbq0P9s8tK2G7dFQfNnlJnPAiArVBVBsfA== + version "2.6.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.1.tgz#fd8c9a0ff42590b25703c0acb3de3d3f4ede0410" + integrity sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig== tsutils@^3.17.1: version "3.17.1" @@ -12643,9 +12721,9 @@ wide-align@^1.1.5: string-width "^1.0.2 || 2 || 3 || 4" word-wrap@^1.2.3, word-wrap@~1.2.3: - version "1.2.4" - resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.4.tgz#cb4b50ec9aca570abd1f52f33cd45b6c61739a9f" - integrity sha512-2V81OA4ugVo5pRo46hAoD2ivUJx8jXmWXfUkY4KFNw0hEptvN0QfH3K4nHiwzGeKl5rFKedV48QVoqYavy4YpA== + version "1.2.3" + resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" + integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== wordwrap@^1.0.0: version "1.0.0" @@ -12670,7 +12748,7 @@ wrap-ansi@^5.1.0: string-width "^3.0.0" strip-ansi "^5.0.0" -wrap-ansi@^6.2.0: +wrap-ansi@^6.0.1, wrap-ansi@^6.2.0: version "6.2.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==