From 0e1ac87e0e15c2694c547fb8ff34e0302512e10b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Pierzcha=C5=82a?= Date: Mon, 20 Feb 2023 18:15:05 +0100 Subject: [PATCH 1/2] breaking: node 16; typescript 4 --- .github/workflows/test.yml | 2 +- babel.config.js | 2 +- package.json | 6 +- packages/cli-config/package.json | 2 +- packages/cli-config/src/merge.ts | 13 ++-- packages/cli-doctor/src/tools/brewInstall.ts | 2 +- .../src/tools/healthchecks/cocoaPods.ts | 2 +- .../src/tools/healthchecks/iosDeploy.ts | 2 +- .../cli-doctor/src/tools/healthchecks/jdk.ts | 2 +- .../src/tools/healthchecks/xcodeEnv.ts | 2 +- packages/cli-doctor/src/tools/installPods.ts | 6 +- .../cli-doctor/src/tools/runBundleInstall.ts | 2 +- packages/cli-doctor/src/tools/unzip.ts | 2 +- .../src/tools/windows/androidWinHelpers.ts | 6 +- .../src/profileHermes/downloadProfile.ts | 2 +- .../src/profileHermes/sourcemapUtils.ts | 4 +- .../src/commands/buildAndroid/index.ts | 10 +-- .../commands/runAndroid/runOnAllDevices.ts | 2 +- .../runAndroid/tryInstallAppOnDevice.ts | 5 +- .../runAndroid/tryLaunchAppOnDevice.ts | 2 +- .../commands/runAndroid/tryLaunchEmulator.ts | 2 +- .../commands/runAndroid/tryRunAdbReverse.ts | 4 +- .../src/commands/runIOS/index.ts | 2 +- .../src/tools/getDestinationSimulator.ts | 2 +- .../src/tools/getProjectInfo.ts | 2 +- packages/cli-server-api/package.json | 6 +- packages/cli-server-api/src/index.ts | 2 + .../websocket/createDebuggerProxyEndpoint.ts | 2 +- .../websocket/createEventsSocketEndpoint.ts | 4 +- .../websocket/createMessageSocketEndpoint.ts | 6 +- packages/cli-tools/package.json | 2 +- packages/cli-tools/src/fetch.ts | 2 +- .../cli-tools/src/launchDefaultBrowser.ts | 4 +- .../src/releaseChecker/getLatestRelease.ts | 2 +- .../cli-tools/src/releaseChecker/index.ts | 2 +- .../src/releaseChecker/releaseCacheManager.ts | 2 +- packages/cli/package.json | 2 +- .../cli/src/commands/init/editTemplate.ts | 2 +- packages/cli/src/commands/init/init.ts | 4 +- packages/cli/src/index.ts | 10 +-- yarn.lock | 70 +++++++++++-------- 41 files changed, 118 insertions(+), 92 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 0e71e4208..77f36c473 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -27,7 +27,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - node-version: [14, 16, 18] + node-version: [16, 18] steps: - uses: actions/checkout@v2 - name: Use Node.js ${{ matrix.node-version }} diff --git a/babel.config.js b/babel.config.js index 7872d53e0..04db10e3b 100644 --- a/babel.config.js +++ b/babel.config.js @@ -10,7 +10,7 @@ module.exports = { [ require.resolve('@babel/preset-env'), { - targets: {node: '14'}, + targets: {node: '16'}, useBuiltIns: 'entry', corejs: '2.x', }, diff --git a/package.json b/package.json index 5addd5447..fc60fcece 100644 --- a/package.json +++ b/package.json @@ -30,7 +30,7 @@ "@react-native-community/eslint-config": "^2.0.0", "@types/glob": "^7.1.1", "@types/jest": "^26.0.15", - "@types/node": "^14.0.0", + "@types/node": "^16.0.0", "@types/node-fetch": "^2.3.7", "@types/rimraf": "^3.0.2", "@types/readable-stream": "^2.3.0", @@ -55,10 +55,10 @@ "rimraf": "^3.0.2", "slash": "^3.0.0", "string-length": "^2.0.0", - "typescript": "^3.8.0" + "typescript": "^4.9.5" }, "resolutions": { - "@types/node": "^14.0.0" + "@types/node": "^16.0.0" }, "lint-staged": { "./packages/**/*.{ts}": [ diff --git a/packages/cli-config/package.json b/packages/cli-config/package.json index 6547c296c..a81bc25b0 100644 --- a/packages/cli-config/package.json +++ b/packages/cli-config/package.json @@ -11,7 +11,7 @@ "@react-native-community/cli-tools": "^10.1.1", "chalk": "^4.1.2", "cosmiconfig": "^5.1.0", - "deepmerge": "^3.2.0", + "deepmerge": "^4.3.0", "glob": "^7.1.3", "joi": "^17.2.1" }, diff --git a/packages/cli-config/src/merge.ts b/packages/cli-config/src/merge.ts index e4305529c..ff076d3b2 100644 --- a/packages/cli-config/src/merge.ts +++ b/packages/cli-config/src/merge.ts @@ -5,8 +5,13 @@ import deepmerge from 'deepmerge'; * We define custom merging function for arrays to change that behaviour */ export default function merge(x: X, y: Y) { - return deepmerge(x, y, { - arrayMerge: (_destinationArray: any[], sourceArray: any[]): any[] => - sourceArray, - }); + return deepmerge( + // @ts-ignore todo + x, + y, + { + arrayMerge: (_destinationArray: any[], sourceArray: any[]): any[] => + sourceArray, + }, + ); } diff --git a/packages/cli-doctor/src/tools/brewInstall.ts b/packages/cli-doctor/src/tools/brewInstall.ts index 7cc471d33..3c08ebf51 100644 --- a/packages/cli-doctor/src/tools/brewInstall.ts +++ b/packages/cli-doctor/src/tools/brewInstall.ts @@ -35,7 +35,7 @@ async function brewInstall({ logError({ healthcheck: label || pkg, loader, - error, + error: error as any, command: `brew install ${pkg}`, }); } diff --git a/packages/cli-doctor/src/tools/healthchecks/cocoaPods.ts b/packages/cli-doctor/src/tools/healthchecks/cocoaPods.ts index 32f02dcf3..84c2a4bff 100644 --- a/packages/cli-doctor/src/tools/healthchecks/cocoaPods.ts +++ b/packages/cli-doctor/src/tools/healthchecks/cocoaPods.ts @@ -58,7 +58,7 @@ export default { logError({ healthcheck: label, loader, - error, + error: error as any, command: 'sudo gem install cocoapods', }); } diff --git a/packages/cli-doctor/src/tools/healthchecks/iosDeploy.ts b/packages/cli-doctor/src/tools/healthchecks/iosDeploy.ts index 8c095b46b..ff52bd7f3 100644 --- a/packages/cli-doctor/src/tools/healthchecks/iosDeploy.ts +++ b/packages/cli-doctor/src/tools/healthchecks/iosDeploy.ts @@ -44,7 +44,7 @@ const installLibrary = async ({ logError({ healthcheck: label, loader, - error, + error: error as Error, command: installationCommand, }); } diff --git a/packages/cli-doctor/src/tools/healthchecks/jdk.ts b/packages/cli-doctor/src/tools/healthchecks/jdk.ts index a7d037e4b..5b3fda5ba 100644 --- a/packages/cli-doctor/src/tools/healthchecks/jdk.ts +++ b/packages/cli-doctor/src/tools/healthchecks/jdk.ts @@ -51,7 +51,7 @@ export default { 'JDK installed successfully. Please restart your shell to see the changes', ); } catch (e) { - loader.fail(e); + loader.fail(e as any); } }, runAutomaticFix: async ({logManualInstallation, loader}) => { diff --git a/packages/cli-doctor/src/tools/healthchecks/xcodeEnv.ts b/packages/cli-doctor/src/tools/healthchecks/xcodeEnv.ts index 59ffae522..abc055b70 100644 --- a/packages/cli-doctor/src/tools/healthchecks/xcodeEnv.ts +++ b/packages/cli-doctor/src/tools/healthchecks/xcodeEnv.ts @@ -65,7 +65,7 @@ export default { }); loader.succeed('.xcode.env file have been created!'); } catch (e) { - loader.fail(e); + loader.fail(e as any); } }, } as HealthCheckInterface; diff --git a/packages/cli-doctor/src/tools/installPods.ts b/packages/cli-doctor/src/tools/installPods.ts index e2a112208..51ecdd5f7 100644 --- a/packages/cli-doctor/src/tools/installPods.ts +++ b/packages/cli-doctor/src/tools/installPods.ts @@ -28,7 +28,7 @@ async function runPodInstall( await execa('bundle', ['exec', 'pod', 'install']); } catch (error) { // "pod" command outputs errors to stdout (at least some of them) - const stderr = error.stderr || error.stdout; + const stderr = (error as any).stderr || (error as any).stdout; /** * If CocoaPods failed due to repo being out of date, it will @@ -61,7 +61,7 @@ async function runPodUpdate(loader: Loader) { await execa('pod', ['repo', 'update']); } catch (error) { // "pod" command outputs errors to stdout (at least some of them) - logger.log(error.stderr || error.stdout); + logger.log((error as any).stderr || (error as any).stdout); loader.fail(); throw new Error( @@ -142,7 +142,7 @@ async function installCocoaPods(loader: Loader) { return loader.succeed(); } catch (error) { loader.fail(); - logger.error(error.stderr); + logger.error((error as any).stderr); throw new Error( `An error occured while trying to install CocoaPods, which is required by this template.\nPlease try again manually: sudo gem install cocoapods.\nCocoaPods documentation: ${chalk.dim.underline( diff --git a/packages/cli-doctor/src/tools/runBundleInstall.ts b/packages/cli-doctor/src/tools/runBundleInstall.ts index c129b8819..e2fdea6d0 100644 --- a/packages/cli-doctor/src/tools/runBundleInstall.ts +++ b/packages/cli-doctor/src/tools/runBundleInstall.ts @@ -10,7 +10,7 @@ async function runBundleInstall(loader: Loader) { await execa('bundle', ['install']); } catch (error) { loader.fail(); - logger.error(error.stderr || error.stdout); + logger.error((error as any).stderr || (error as any).stdout); throw new Error( 'Looks like your iOS environment is not properly set. Please go to https://reactnative.dev/docs/next/environment-setup and follow the React Native CLI QuickStart guide for macOS and iOS.', diff --git a/packages/cli-doctor/src/tools/unzip.ts b/packages/cli-doctor/src/tools/unzip.ts index 5bf52f955..1b30235f1 100644 --- a/packages/cli-doctor/src/tools/unzip.ts +++ b/packages/cli-doctor/src/tools/unzip.ts @@ -18,7 +18,7 @@ const unzip = async (source: string, destination: string) => { return reject(err); } - resolve(); + resolve(undefined); }); }); }); diff --git a/packages/cli-doctor/src/tools/windows/androidWinHelpers.ts b/packages/cli-doctor/src/tools/windows/androidWinHelpers.ts index 0a3c3f2fd..968c7a8e8 100644 --- a/packages/cli-doctor/src/tools/windows/androidWinHelpers.ts +++ b/packages/cli-doctor/src/tools/windows/androidWinHelpers.ts @@ -59,7 +59,7 @@ export const installComponent = (component: string, androidSdkRoot: string) => { child.on('close', (exitStatus) => { if (exitStatus === 0) { - done(); + done(undefined); } else { error({stderr}); } @@ -161,7 +161,7 @@ const getEmulatorAccelOutputInformation = async (androidSDKRoot: string) => { return stdout; } catch (e) { - const {stdout} = e; + const {stdout} = e as any; return stdout; } @@ -205,7 +205,7 @@ export const createAVD = async ( return stdout; } catch (e) { - const {stderr} = e; + const {stderr} = e as any; return stderr; } diff --git a/packages/cli-hermes/src/profileHermes/downloadProfile.ts b/packages/cli-hermes/src/profileHermes/downloadProfile.ts index 2a2ca5e31..7dbd0fdfb 100644 --- a/packages/cli-hermes/src/profileHermes/downloadProfile.ts +++ b/packages/cli-hermes/src/profileHermes/downloadProfile.ts @@ -17,7 +17,7 @@ function getLatestFile(packageNameWithSuffix: string): string { `); return file.toString().trim(); } catch (e) { - throw new Error(e); + throw e; } } diff --git a/packages/cli-hermes/src/profileHermes/sourcemapUtils.ts b/packages/cli-hermes/src/profileHermes/sourcemapUtils.ts index 484f3913b..dedec71b6 100644 --- a/packages/cli-hermes/src/profileHermes/sourcemapUtils.ts +++ b/packages/cli-hermes/src/profileHermes/sourcemapUtils.ts @@ -17,14 +17,14 @@ function writeJsonSync(targetPath: string, data: any) { } catch (e) { throw new CLIError( `Failed to serialize data to json before writing to ${targetPath}`, - e, + e as Error, ); } try { fs.writeFileSync(targetPath, json, 'utf-8'); } catch (e) { - throw new CLIError(`Failed to write json to ${targetPath}`, e); + throw new CLIError(`Failed to write json to ${targetPath}`, e as Error); } } diff --git a/packages/cli-platform-android/src/commands/buildAndroid/index.ts b/packages/cli-platform-android/src/commands/buildAndroid/index.ts index dae41287d..1fd287327 100644 --- a/packages/cli-platform-android/src/commands/buildAndroid/index.ts +++ b/packages/cli-platform-android/src/commands/buildAndroid/index.ts @@ -41,9 +41,11 @@ export async function runPackager(args: BuildFlags, config: Config) { try { startServerInNewWindow(args.port, args.terminal, config.reactNativePath); } catch (error) { - logger.warn( - `Failed to automatically start the packager server. Please run "react-native start" manually. Error details: ${error.message}`, - ); + if (error instanceof Error) { + logger.warn( + `Failed to automatically start the packager server. Please run "react-native start" manually. Error details: ${error.message}`, + ); + } } } } @@ -126,7 +128,7 @@ export function build(gradleArgs: string[], sourceDir: string) { }); } catch (error) { printRunDoctorTip(); - throw new CLIError('Failed to build the app.', error); + throw new CLIError('Failed to build the app.', error as Error); } } diff --git a/packages/cli-platform-android/src/commands/runAndroid/runOnAllDevices.ts b/packages/cli-platform-android/src/commands/runAndroid/runOnAllDevices.ts index 7ce7b5f22..b0e8c0116 100644 --- a/packages/cli-platform-android/src/commands/runAndroid/runOnAllDevices.ts +++ b/packages/cli-platform-android/src/commands/runAndroid/runOnAllDevices.ts @@ -104,7 +104,7 @@ async function runOnAllDevices( } } catch (error) { printRunDoctorTip(); - throw createInstallError(error); + throw createInstallError(error as any); } (devices.length > 0 ? devices : [undefined]).forEach( diff --git a/packages/cli-platform-android/src/commands/runAndroid/tryInstallAppOnDevice.ts b/packages/cli-platform-android/src/commands/runAndroid/tryInstallAppOnDevice.ts index 05d00d589..64b1698fd 100644 --- a/packages/cli-platform-android/src/commands/runAndroid/tryInstallAppOnDevice.ts +++ b/packages/cli-platform-android/src/commands/runAndroid/tryInstallAppOnDevice.ts @@ -38,7 +38,10 @@ function tryInstallAppOnDevice( ); execa.sync(adbPath, adbArgs, {stdio: 'inherit'}); } catch (error) { - throw new CLIError('Failed to install the app on the device.', error); + throw new CLIError( + 'Failed to install the app on the device.', + error as any, + ); } } diff --git a/packages/cli-platform-android/src/commands/runAndroid/tryLaunchAppOnDevice.ts b/packages/cli-platform-android/src/commands/runAndroid/tryLaunchAppOnDevice.ts index 2980b40ad..031fe44ef 100644 --- a/packages/cli-platform-android/src/commands/runAndroid/tryLaunchAppOnDevice.ts +++ b/packages/cli-platform-android/src/commands/runAndroid/tryLaunchAppOnDevice.ts @@ -42,7 +42,7 @@ function tryLaunchAppOnDevice( logger.debug(`Running command "${adbPath} ${adbArgs.join(' ')}"`); execa.sync(adbPath, adbArgs, {stdio: 'inherit'}); } catch (error) { - throw new CLIError('Failed to start the app.', error); + throw new CLIError('Failed to start the app.', error as any); } } diff --git a/packages/cli-platform-android/src/commands/runAndroid/tryLaunchEmulator.ts b/packages/cli-platform-android/src/commands/runAndroid/tryLaunchEmulator.ts index 3c96f468a..89e764ed5 100644 --- a/packages/cli-platform-android/src/commands/runAndroid/tryLaunchEmulator.ts +++ b/packages/cli-platform-android/src/commands/runAndroid/tryLaunchEmulator.ts @@ -83,7 +83,7 @@ export default async function tryLaunchEmulator( await launchEmulator(emulatorName ?? emulators[0], adbPath, port); return {success: true}; } catch (error) { - return {success: false, error: error?.message}; + return {success: false, error: (error as any)?.message}; } } return { diff --git a/packages/cli-platform-android/src/commands/runAndroid/tryRunAdbReverse.ts b/packages/cli-platform-android/src/commands/runAndroid/tryRunAdbReverse.ts index 7a3b31ec0..efb33d02c 100644 --- a/packages/cli-platform-android/src/commands/runAndroid/tryRunAdbReverse.ts +++ b/packages/cli-platform-android/src/commands/runAndroid/tryRunAdbReverse.ts @@ -30,7 +30,9 @@ function tryRunAdbReverse( execFileSync(adbPath, adbArgs, {stdio: 'inherit'}); } catch (e) { logger.warn( - `Failed to connect to development server using "adb reverse": ${e.message}`, + `Failed to connect to development server using "adb reverse": ${ + (e as any).message + }`, ); } } diff --git a/packages/cli-platform-ios/src/commands/runIOS/index.ts b/packages/cli-platform-ios/src/commands/runIOS/index.ts index 2cc142d4b..fd97a62a7 100644 --- a/packages/cli-platform-ios/src/commands/runIOS/index.ts +++ b/packages/cli-platform-ios/src/commands/runIOS/index.ts @@ -209,7 +209,7 @@ const getSimulators = () => { } catch (error) { throw new CLIError( 'Could not get the simulator list from Xcode. Please open Xcode and try running project directly from there to resolve the remaining issues.', - error, + error as Error, ); } return simulators; diff --git a/packages/cli-platform-ios/src/tools/getDestinationSimulator.ts b/packages/cli-platform-ios/src/tools/getDestinationSimulator.ts index 214b90634..9aaa945ff 100644 --- a/packages/cli-platform-ios/src/tools/getDestinationSimulator.ts +++ b/packages/cli-platform-ios/src/tools/getDestinationSimulator.ts @@ -24,7 +24,7 @@ export function getDestinationSimulator( } catch (error) { throw new CLIError( 'Could not get the simulator list from Xcode. Please open Xcode and try running project directly from there to resolve the remaining issues.', - error, + error as Error, ); } diff --git a/packages/cli-platform-ios/src/tools/getProjectInfo.ts b/packages/cli-platform-ios/src/tools/getProjectInfo.ts index f074fb47b..0eb5eb532 100644 --- a/packages/cli-platform-ios/src/tools/getProjectInfo.ts +++ b/packages/cli-platform-ios/src/tools/getProjectInfo.ts @@ -10,6 +10,6 @@ export function getProjectInfo(): IosProjectInfo { return project; } catch (error) { - throw new CLIError(error); + throw new CLIError(error as any); } } diff --git a/packages/cli-server-api/package.json b/packages/cli-server-api/package.json index 3b1db2997..5c3dda428 100644 --- a/packages/cli-server-api/package.json +++ b/packages/cli-server-api/package.json @@ -11,16 +11,16 @@ "@react-native-community/cli-tools": "^10.1.1", "compression": "^1.7.1", "connect": "^3.6.5", - "errorhandler": "^1.5.0", + "errorhandler": "^1.5.1", "nocache": "^3.0.1", "pretty-format": "^26.6.2", "serve-static": "^1.13.1", "ws": "^7.5.1" }, "devDependencies": { - "@types/compression": "^1.0.1", + "@types/compression": "^1.7.2", "@types/connect": "^3.4.33", - "@types/errorhandler": "^0.0.32", + "@types/errorhandler": "^1.5.0", "@types/ws": "^7.4.7" }, "files": [ diff --git a/packages/cli-server-api/src/index.ts b/packages/cli-server-api/src/index.ts index fc100faa5..a284ea432 100644 --- a/packages/cli-server-api/src/index.ts +++ b/packages/cli-server-api/src/index.ts @@ -58,11 +58,13 @@ export function createDevServerMiddleware(options: MiddlewareOptions) { .use('/open-url', openURLMiddleware) .use('/status', statusPageMiddleware) .use('/symbolicate', rawBodyMiddleware) + // @ts-ignore mismatch .use('/systrace', systraceProfileMiddleware) .use('/reload', (_req: http.IncomingMessage, res: http.ServerResponse) => { broadcast('reload'); res.end('OK'); }) + // @ts-ignore mismatch .use(errorhandler()); options.watchFolders.forEach((folder) => { diff --git a/packages/cli-server-api/src/websocket/createDebuggerProxyEndpoint.ts b/packages/cli-server-api/src/websocket/createDebuggerProxyEndpoint.ts index 0b9db16f7..9171e3df5 100644 --- a/packages/cli-server-api/src/websocket/createDebuggerProxyEndpoint.ts +++ b/packages/cli-server-api/src/websocket/createDebuggerProxyEndpoint.ts @@ -30,7 +30,7 @@ export default function createDebuggerProxyEndpoint(): { try { dest.send(message); } catch (e) { - logger.warn(e); + logger.warn(e as any); // Sometimes this call throws 'not opened' } } diff --git a/packages/cli-server-api/src/websocket/createEventsSocketEndpoint.ts b/packages/cli-server-api/src/websocket/createEventsSocketEndpoint.ts index 950a113b9..5ed02d5c4 100644 --- a/packages/cli-server-api/src/websocket/createEventsSocketEndpoint.ts +++ b/packages/cli-server-api/src/websocket/createEventsSocketEndpoint.ts @@ -150,7 +150,7 @@ export default function createEventsSocketEndpoint( ws.send(serialized); } catch (e) { logger.error( - `Failed to send broadcast to client due to:\n ${e.toString()}`, + `Failed to send broadcast to client due to:\n ${(e as any).toString()}`, ); } } @@ -178,7 +178,7 @@ export default function createEventsSocketEndpoint( */ broadcast(message.command, message.params); } catch (e) { - logger.error('Failed to forward message to clients: ', e); + logger.error('Failed to forward message to clients: ', e as any); } } else { logger.error('Unknown message type: ', message.type); diff --git a/packages/cli-server-api/src/websocket/createMessageSocketEndpoint.ts b/packages/cli-server-api/src/websocket/createMessageSocketEndpoint.ts index 7430d5a55..b4da72780 100644 --- a/packages/cli-server-api/src/websocket/createMessageSocketEndpoint.ts +++ b/packages/cli-server-api/src/websocket/createMessageSocketEndpoint.ts @@ -109,7 +109,7 @@ export default function createMessageSocketEndpoint(): { } catch (e) { logger.error( `Failed to send broadcast to client: '${otherId}' ` + - `due to:\n ${e.toString()}`, + `due to:\n ${(e as any).toString()}`, ); } } @@ -147,7 +147,7 @@ export default function createMessageSocketEndpoint(): { logger.error( `Failed to reply to ${clientId} with error:\n${error}` + `\nmessage:\n${JSON.stringify(errorMessage)}` + - `\ndue to error: ${e.toString()}`, + `\ndue to error: ${(e as any).toString()}`, ); } } @@ -237,7 +237,7 @@ export default function createMessageSocketEndpoint(): { throw new Error('Invalid message, did not match the protocol'); } } catch (e) { - handleCaughtError(message, e.toString()); + handleCaughtError(message, (e as any).toString()); } }; }); diff --git a/packages/cli-tools/package.json b/packages/cli-tools/package.json index b731eb28f..b89c5ffee 100644 --- a/packages/cli-tools/package.json +++ b/packages/cli-tools/package.json @@ -21,7 +21,7 @@ "@react-native-community/cli-types": "^10.0.0", "@types/lodash": "^4.14.149", "@types/mime": "^2.0.1", - "@types/node": "^14.0.0", + "@types/node": "^16.0.0", "@types/node-fetch": "^2.5.5", "@types/shell-quote": "^1.7.1" }, diff --git a/packages/cli-tools/src/fetch.ts b/packages/cli-tools/src/fetch.ts index f57fadecf..62b471c67 100644 --- a/packages/cli-tools/src/fetch.ts +++ b/packages/cli-tools/src/fetch.ts @@ -47,7 +47,7 @@ const fetchToTemp = (url: string): Promise => { }); }); } catch (e) { - logger.error(e); + logger.error(e as any); throw e; } }; diff --git a/packages/cli-tools/src/launchDefaultBrowser.ts b/packages/cli-tools/src/launchDefaultBrowser.ts index 224407502..fcf671c96 100644 --- a/packages/cli-tools/src/launchDefaultBrowser.ts +++ b/packages/cli-tools/src/launchDefaultBrowser.ts @@ -17,8 +17,8 @@ async function launchDefaultBrowser(url: string) { await open(url); } catch (err) { - if (err) { - logger.error('Browser exited with error:', err); + if (err instanceof Error) { + logger.error('Browser exited with error:', err.message); } } } diff --git a/packages/cli-tools/src/releaseChecker/getLatestRelease.ts b/packages/cli-tools/src/releaseChecker/getLatestRelease.ts index 53b12a027..6937d5391 100644 --- a/packages/cli-tools/src/releaseChecker/getLatestRelease.ts +++ b/packages/cli-tools/src/releaseChecker/getLatestRelease.ts @@ -66,7 +66,7 @@ export default async function getLatestRelease( logger.debug( 'Something went wrong with remote version checking, moving on', ); - logger.debug(e); + logger.debug(e as any); } } diff --git a/packages/cli-tools/src/releaseChecker/index.ts b/packages/cli-tools/src/releaseChecker/index.ts index 31ab752d1..326c5f683 100644 --- a/packages/cli-tools/src/releaseChecker/index.ts +++ b/packages/cli-tools/src/releaseChecker/index.ts @@ -24,6 +24,6 @@ export default async function releaseChecker(root: string) { 'Cannot detect current version of React Native, ' + 'skipping check for a newer release', ); - logger.debug(e); + logger.debug(e as any); } } diff --git a/packages/cli-tools/src/releaseChecker/releaseCacheManager.ts b/packages/cli-tools/src/releaseChecker/releaseCacheManager.ts index 94019640a..08cae4161 100644 --- a/packages/cli-tools/src/releaseChecker/releaseCacheManager.ts +++ b/packages/cli-tools/src/releaseChecker/releaseCacheManager.ts @@ -16,7 +16,7 @@ function loadCache(name: string): Cache | undefined { const cache = JSON.parse(cacheRaw); return cache; } catch (e) { - if (e.code === 'ENOENT') { + if ((e as any).code === 'ENOENT') { // Create cache file since it doesn't exist. saveCache(name, {}); } diff --git a/packages/cli/package.json b/packages/cli/package.json index 6b8e9abae..b05e3bd43 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -18,7 +18,7 @@ ], "engineStrict": true, "engines": { - "node": ">=14" + "node": ">=16" }, "jest": { "testEnvironment": "node" diff --git a/packages/cli/src/commands/init/editTemplate.ts b/packages/cli/src/commands/init/editTemplate.ts index b6948b9c2..b36cee319 100644 --- a/packages/cli/src/commands/init/editTemplate.ts +++ b/packages/cli/src/commands/init/editTemplate.ts @@ -260,7 +260,7 @@ export async function changePlaceholderInTemplate({ packageName, }); } catch (error) { - throw new CLIError(error); + throw new CLIError((error as Error).message); } } else { for (const filePath of walk(process.cwd()).reverse()) { diff --git a/packages/cli/src/commands/init/init.ts b/packages/cli/src/commands/init/init.ts index b53de7a05..cdc60c3d4 100644 --- a/packages/cli/src/commands/init/init.ts +++ b/packages/cli/src/commands/init/init.ts @@ -60,7 +60,7 @@ async function setProjectDirectory(directory: string) { } catch (error) { throw new CLIError( 'Error occurred while trying to create project directory.', - error, + error as Error, ); } @@ -147,7 +147,7 @@ async function createFromTemplate({ } } catch (e) { loader.fail(); - throw new Error(e); + throw e; } finally { fs.removeSync(templateSourceDir); } diff --git a/packages/cli/src/index.ts b/packages/cli/src/index.ts index d78953c27..9755a00c1 100644 --- a/packages/cli/src/index.ts +++ b/packages/cli/src/index.ts @@ -87,7 +87,7 @@ function attachCommand( await command.func(argv, rest[0] as Config, passedOptions); } } catch (error) { - handleError(error); + handleError(error as Error); } }); @@ -113,7 +113,7 @@ async function run() { try { await setupAndRun(); } catch (e) { - handleError(e); + handleError(e as Error); } } @@ -164,15 +164,15 @@ async function setupAndRun() { * When there is no `package.json` found, the CLI will enter `detached` mode and a subset * of commands will be available. That's why we don't throw on such kind of error. */ - if (error.message.includes("We couldn't find a package.json")) { - logger.debug(error.message); + if ((error as Error).message.includes("We couldn't find a package.json")) { + logger.debug((error as Error).message); logger.debug( 'Failed to load configuration of your project. Only a subset of commands will be available.', ); } else { throw new CLIError( 'Failed to load configuration of your project.', - error, + error as any, ); } } diff --git a/yarn.lock b/yarn.lock index 23f1f22ea..f39529c3c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2708,10 +2708,10 @@ resolved "https://registry.yarnpkg.com/@types/command-exists/-/command-exists-1.2.0.tgz#d97e0ed10097090e4ab0367ed425b0312fad86f3" integrity sha512-ugsxEJfsCuqMLSuCD4PIJkp5Uk2z6TCMRCgYVuhRo5cYQY3+1xXTQkSlPtkpGHuvWMjS2KTeVQXxkXRACMbM6A== -"@types/compression@^1.0.1": - version "1.7.0" - resolved "https://registry.yarnpkg.com/@types/compression/-/compression-1.7.0.tgz#8dc2a56604873cf0dd4e746d9ae4d31ae77b2390" - integrity sha512-3LzWUM+3k3XdWOUk/RO+uSjv7YWOatYq2QADJntK1pjkk4DfVP0KrIEPDnXRJxAAGKe0VpIPRmlINLDuCedZWw== +"@types/compression@^1.7.2": + version "1.7.2" + resolved "https://registry.yarnpkg.com/@types/compression/-/compression-1.7.2.tgz#7cc1cdb01b4730eea284615a68fc70a2cdfd5e71" + integrity sha512-lwEL4M/uAGWngWFLSG87ZDr2kLrbuR8p7X+QZB1OQlT+qkHsCPDVFnHPyXf4Vyl4yDDorNY+mAhosxkCvppatg== dependencies: "@types/express" "*" @@ -2734,10 +2734,10 @@ resolved "https://registry.yarnpkg.com/@types/envinfo/-/envinfo-7.8.1.tgz#1915df82c16d637e92146645c70db9360eb099c6" integrity sha512-pTyshpmGxqB9lRwG75v2YR0oqKYpCrklOYlZWQ88z/JB0fimT8EVmYekuIwpU3IxPZDHSXCqXKzkCrtAcKY25g== -"@types/errorhandler@^0.0.32": - version "0.0.32" - resolved "https://registry.yarnpkg.com/@types/errorhandler/-/errorhandler-0.0.32.tgz#387eca73957b481254baddc15d1d40f7fe7153c6" - integrity sha512-wC9CfwPMIzklPd5lEYC8HnQdlMC1PswlohWmEDMWlw+E/rMYuz5eSqKBc72Earb29KptKJrRl77qVRJzrZndww== +"@types/errorhandler@^1.5.0": + version "1.5.0" + resolved "https://registry.yarnpkg.com/@types/errorhandler/-/errorhandler-1.5.0.tgz#2e6be2e419e505130c6342d11b3981867db6de2b" + integrity sha512-g5jrn2aofEn7O2OW/T+PlmGUUD/AtrX7DI87zrxz6rK5XIyvQf3FbPJrwgYaVjVOaCyvEkx9yxLd/XlEA43OcA== dependencies: "@types/express" "*" @@ -2758,21 +2758,23 @@ dependencies: "@types/node" "*" -"@types/express-serve-static-core@*": - version "4.17.2" - resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.2.tgz#f6f41fa35d42e79dbf6610eccbb2637e6008a0cf" - integrity sha512-El9yMpctM6tORDAiBwZVLMcxoTMcqqRO9dVyYcn7ycLWbvR8klrDn8CAOwRfZujZtWD7yS/mshTdz43jMOejbg== +"@types/express-serve-static-core@^4.17.33": + version "4.17.33" + resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.33.tgz#de35d30a9d637dc1450ad18dd583d75d5733d543" + integrity sha512-TPBqmR/HRYI3eC2E5hmiivIzv+bidAfXofM+sbonAGvyDhySGw9/PQZFt2BLOrjUUR++4eJVpx6KnLQK1Fk9tA== dependencies: "@types/node" "*" + "@types/qs" "*" "@types/range-parser" "*" "@types/express@*": - version "4.17.2" - resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.2.tgz#a0fb7a23d8855bac31bc01d5a58cadd9b2173e6c" - integrity sha512-5mHFNyavtLoJmnusB8OKJ5bshSzw+qkMIBAobLrIM48HJvunFva9mOa6aBwh64lBFyNwBbs0xiEFuj4eU/NjCA== + version "4.17.17" + resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.17.tgz#01d5437f6ef9cfa8668e616e13c2f2ac9a491ae4" + integrity sha512-Q4FmmuLGBG58btUnfS1c1r/NQdlp3DMfGDGig8WhfpA2YRUtEkxAjkZb0yvplJGYdF1fsQ81iMDcH24sSCNC/Q== dependencies: "@types/body-parser" "*" - "@types/express-serve-static-core" "*" + "@types/express-serve-static-core" "^4.17.33" + "@types/qs" "*" "@types/serve-static" "*" "@types/fs-extra@^8.1.0": @@ -2896,10 +2898,10 @@ "@types/node" "*" form-data "^3.0.0" -"@types/node@*", "@types/node@^14.0.0": - version "14.18.22" - resolved "https://registry.yarnpkg.com/@types/node/-/node-14.18.22.tgz#fd2a15dca290fc9ad565b672fde746191cd0c6e6" - integrity sha512-qzaYbXVzin6EPjghf/hTdIbnVW1ErMx8rPzwRNJhlbyJhu2SyqlvjGOY/tbUt6VFyzg56lROcOeSQRInpt63Yw== +"@types/node@*", "@types/node@^16.0.0": + version "16.18.12" + resolved "https://registry.yarnpkg.com/@types/node/-/node-16.18.12.tgz#e3bfea80e31523fde4292a6118f19ffa24fd6f65" + integrity sha512-vzLe5NaNMjIE3mcddFVGlAXN1LEWueUsMsOJWaT6wWMJGyljHAWHznqfnKUQWGzu7TLPrGvWdNAsvQYW+C0xtw== "@types/normalize-package-data@^2.4.0": version "2.4.0" @@ -2933,6 +2935,11 @@ resolved "https://registry.yarnpkg.com/@types/q/-/q-1.5.2.tgz#690a1475b84f2a884fd07cd797c00f5f31356ea8" integrity sha512-ce5d3q03Ex0sy4R14722Rmt6MT07Ua+k4FwDfdcToYJcMKNtRVQvJ6JCAPdAmAnbRb6CsX6aYb9m96NGod9uTw== +"@types/qs@*": + version "6.9.7" + resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.7.tgz#63bb7d067db107cc1e457c303bc25d511febf6cb" + integrity sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw== + "@types/range-parser@*": version "1.2.3" resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.3.tgz#7ee330ba7caafb98090bece86a5ee44115904c2c" @@ -2960,12 +2967,12 @@ integrity sha512-+beqKQOh9PYxuHvijhVl+tIHvT6tuwOrE9m14zd+MT2A38KoKZhh7pYJ0SNleLtwDsiIxHDsIk9bv01oOxvSvA== "@types/serve-static@*": - version "1.13.3" - resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.13.3.tgz#eb7e1c41c4468272557e897e9171ded5e2ded9d1" - integrity sha512-oprSwp094zOglVrXdlo/4bAHtKTAxX6VT8FOZlBKrmyLbNvE1zxZyJ6yikMVtHIvwP45+ZQGJn+FdXGKTozq0g== + version "1.15.0" + resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.15.0.tgz#c7930ff61afb334e121a9da780aac0d9b8f34155" + integrity sha512-z5xyF6uh8CbjAu9760KDKsH2FcDxZ2tFCsA4HIMWE6IkiYMXfVoa+4f9KX+FN0ZLsaMw1WNG2ETLA6N+/YA+cg== dependencies: - "@types/express-serve-static-core" "*" "@types/mime" "*" + "@types/node" "*" "@types/shell-quote@^1.7.1": version "1.7.1" @@ -5070,6 +5077,11 @@ deepmerge@^4.2.2: resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955" integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg== +deepmerge@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.3.0.tgz#65491893ec47756d44719ae520e0e2609233b59b" + integrity sha512-z2wJZXrmeHdvYJp/Ux55wIjqo81G5Bp4c+oELTW+7ar6SogWHajt5a9gO3s3IDaGSAXjDk0vlQKN3rms8ab3og== + defaults@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.3.tgz#c656051e9817d9ff08ed881477f3fe4019f3ef7d" @@ -5417,7 +5429,7 @@ error-stack-parser@^2.0.6: dependencies: stackframe "^1.3.4" -errorhandler@^1.5.0: +errorhandler@^1.5.1: version "1.5.1" resolved "https://registry.yarnpkg.com/errorhandler/-/errorhandler-1.5.1.tgz#b9ba5d17cf90744cd1e851357a6e75bf806a9a91" integrity sha512-rcOwbfvP1WTViVoUjcfZicVzjhjTuhSMntHh6mW3IrEiyE6mJyXvsToJUJGlGlw/2xU9P5whlWNGlIDVeCiT4A== @@ -12592,10 +12604,10 @@ typedarray@^0.0.6: resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= -typescript@^3.8.0: - version "3.8.2" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.8.2.tgz#91d6868aaead7da74f493c553aeff76c0c0b1d5a" - integrity sha512-EgOVgL/4xfVrCMbhYKUQTdF37SQn4Iw73H5BgCrF1Abdun7Kwy/QZsE/ssAy0y4LxBbvua3PIbFsbRczWWnDdQ== +typescript@^4.9.5: + version "4.9.5" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.9.5.tgz#095979f9bcc0d09da324d58d03ce8f8374cbe65a" + integrity sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g== uglify-es@^3.1.9: version "3.3.9" From a510b91972cb1a9b10fe64e35ce46c7bf2f082a3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Pierzcha=C5=82a?= Date: Mon, 20 Feb 2023 18:20:45 +0100 Subject: [PATCH 2/2] fixup deepmerge --- packages/cli-config/src/merge.ts | 15 +++++---------- packages/cli/package.json | 2 +- yarn.lock | 5 ----- 3 files changed, 6 insertions(+), 16 deletions(-) diff --git a/packages/cli-config/src/merge.ts b/packages/cli-config/src/merge.ts index ff076d3b2..da3a7dd9a 100644 --- a/packages/cli-config/src/merge.ts +++ b/packages/cli-config/src/merge.ts @@ -4,14 +4,9 @@ import deepmerge from 'deepmerge'; * `deepmerge` concatenates arrays by default instead of overwriting them. * We define custom merging function for arrays to change that behaviour */ -export default function merge(x: X, y: Y) { - return deepmerge( - // @ts-ignore todo - x, - y, - { - arrayMerge: (_destinationArray: any[], sourceArray: any[]): any[] => - sourceArray, - }, - ); +export default function merge(x: Partial, y: Partial) { + return deepmerge(x, y, { + arrayMerge: (_destinationArray: any[], sourceArray: any[]): any[] => + sourceArray, + }); } diff --git a/packages/cli/package.json b/packages/cli/package.json index b05e3bd43..d11831a58 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -48,7 +48,7 @@ "@types/hapi__joi": "^17.1.6", "@types/prompts": "^2.0.9", "@types/semver": "^6.0.2", - "deepmerge": "^3.2.0", + "deepmerge": "^4.3.0", "slash": "^3.0.0", "snapshot-diff": "^0.7.0" }, diff --git a/yarn.lock b/yarn.lock index f39529c3c..0064ae7bc 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5067,11 +5067,6 @@ deep-is@^0.1.3, deep-is@~0.1.3: resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= -deepmerge@^3.2.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-3.3.0.tgz#d3c47fd6f3a93d517b14426b0628a17b0125f5f7" - integrity sha512-GRQOafGHwMHpjPx9iCvTgpu9NojZ49q794EEL94JVEw6VaeA8XTUyBKvAkOOjBX9oJNiV6G3P+T+tihFjo2TqA== - deepmerge@^4.2.2: version "4.2.2" resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955"