From a128b92b19205269db5f1007871aeaa3c6f35f69 Mon Sep 17 00:00:00 2001 From: Yuta Mori Date: Tue, 10 Sep 2019 17:00:00 +0900 Subject: [PATCH 1/5] convert packageManager from flow to TS --- .../{packageManager.js => packageManager.ts} | 23 +++++++++---------- 1 file changed, 11 insertions(+), 12 deletions(-) rename packages/cli/src/tools/{packageManager.js => packageManager.ts} (81%) diff --git a/packages/cli/src/tools/packageManager.js b/packages/cli/src/tools/packageManager.ts similarity index 81% rename from packages/cli/src/tools/packageManager.js rename to packages/cli/src/tools/packageManager.ts index 845cb2ccd..d6e6b790a 100644 --- a/packages/cli/src/tools/packageManager.js +++ b/packages/cli/src/tools/packageManager.ts @@ -1,16 +1,15 @@ // @flow import execa from 'execa'; import {logger} from '@react-native-community/cli-tools'; -// $FlowFixMe - converted to TS import {getYarnVersionIfAvailable, isProjectUsingYarn} from './yarn'; -type Options = {| - preferYarn?: boolean, - silent?: boolean, - cwd?: string, -|}; +type Options = { + preferYarn?: boolean; + silent?: boolean; + cwd?: string; +}; -let projectDir; +let projectDir: string; const packageManagers = { yarn: { @@ -29,8 +28,8 @@ const packageManagers = { function configurePackageManager( packageNames: Array, - options?: Options, action: 'install' | 'installDev' | 'installAll' | 'uninstall', + options?: Options, ) { const pm = shouldUseYarn(options) ? 'yarn' : 'npm'; const [executable, ...flags] = packageManagers[pm][action]; @@ -63,17 +62,17 @@ export function setProjectDir(dir: string) { } export function install(packageNames: Array, options?: Options) { - return configurePackageManager(packageNames, options, 'install'); + return configurePackageManager(packageNames, 'install', options); } export function installDev(packageNames: Array, options?: Options) { - return configurePackageManager(packageNames, options, 'installDev'); + return configurePackageManager(packageNames, 'installDev', options); } export function uninstall(packageNames: Array, options?: Options) { - return configurePackageManager(packageNames, options, 'uninstall'); + return configurePackageManager(packageNames, 'uninstall', options); } export function installAll(options?: Options) { - return configurePackageManager([], options, 'installAll'); + return configurePackageManager([], 'installAll', options); } From 8ccbd0ce1ca7133921c0f2ba036934258358351e Mon Sep 17 00:00:00 2001 From: Yuta Mori Date: Tue, 10 Sep 2019 17:01:07 +0900 Subject: [PATCH 2/5] fix flow-check --- packages/cli/src/cliEntry.js | 1 + packages/cli/src/commands/init/__tests__/template.test.js | 1 + packages/cli/src/commands/init/init.js | 1 + packages/cli/src/commands/init/template.js | 1 + packages/cli/src/commands/install/install.js | 1 + packages/cli/src/commands/install/uninstall.js | 1 + packages/cli/src/tools/__tests__/packageManager-test.js | 1 + packages/cli/src/tools/generator/templates.js | 1 + 8 files changed, 8 insertions(+) diff --git a/packages/cli/src/cliEntry.js b/packages/cli/src/cliEntry.js index 93547041d..d40d0aeb4 100644 --- a/packages/cli/src/cliEntry.js +++ b/packages/cli/src/cliEntry.js @@ -18,6 +18,7 @@ import commands from './commands'; import init from './commands/init/initCompat'; import assertRequiredOptions from './tools/assertRequiredOptions'; import {logger} from '@react-native-community/cli-tools'; +// $FlowFixMe - converted to TS import {setProjectDir} from './tools/packageManager'; import pkgJson from '../package.json'; import loadConfig from './tools/config'; diff --git a/packages/cli/src/commands/init/__tests__/template.test.js b/packages/cli/src/commands/init/__tests__/template.test.js index 2e69e0ccc..afa903838 100644 --- a/packages/cli/src/commands/init/__tests__/template.test.js +++ b/packages/cli/src/commands/init/__tests__/template.test.js @@ -2,6 +2,7 @@ jest.mock('execa', () => jest.fn()); import execa from 'execa'; import path from 'path'; +// $FlowFixMe - converted to TS import * as PackageManger from '../../../tools/packageManager'; import { installTemplatePackage, diff --git a/packages/cli/src/commands/init/init.js b/packages/cli/src/commands/init/init.js index e80611bed..d36bce322 100644 --- a/packages/cli/src/commands/init/init.js +++ b/packages/cli/src/commands/init/init.js @@ -19,6 +19,7 @@ import { executePostInitScript, } from './template'; import {changePlaceholderInTemplate} from './editTemplate'; +// $FlowFixMe - converted to TS import * as PackageManager from '../../tools/packageManager'; // $FlowFixMe - converted to TS import installPods from '../../tools/installPods'; diff --git a/packages/cli/src/commands/init/template.js b/packages/cli/src/commands/init/template.js index 02aa671c5..f01cb86ca 100644 --- a/packages/cli/src/commands/init/template.js +++ b/packages/cli/src/commands/init/template.js @@ -1,6 +1,7 @@ // @flow import execa from 'execa'; import path from 'path'; +// $FlowFixMe - converted to TS import * as PackageManager from '../../tools/packageManager'; import {logger} from '@react-native-community/cli-tools'; // $FlowFixMe - converted to TS diff --git a/packages/cli/src/commands/install/install.js b/packages/cli/src/commands/install/install.js index a15072ed1..3934d0cb2 100644 --- a/packages/cli/src/commands/install/install.js +++ b/packages/cli/src/commands/install/install.js @@ -9,6 +9,7 @@ import type {ConfigT} from 'types'; import {logger} from '@react-native-community/cli-tools'; +// $FlowFixMe - converted to TS import * as PackageManager from '../../tools/packageManager'; import link from '../link/link'; import loadConfig from '../../tools/config'; diff --git a/packages/cli/src/commands/install/uninstall.js b/packages/cli/src/commands/install/uninstall.js index be22269c9..d9b6e3954 100644 --- a/packages/cli/src/commands/install/uninstall.js +++ b/packages/cli/src/commands/install/uninstall.js @@ -9,6 +9,7 @@ import type {ConfigT} from 'types'; import {logger} from '@react-native-community/cli-tools'; +// $FlowFixMe - converted to TS import * as PackageManager from '../../tools/packageManager'; import unlink from '../link/unlink'; diff --git a/packages/cli/src/tools/__tests__/packageManager-test.js b/packages/cli/src/tools/__tests__/packageManager-test.js index 7b5829b0c..d9c9ba4ac 100644 --- a/packages/cli/src/tools/__tests__/packageManager-test.js +++ b/packages/cli/src/tools/__tests__/packageManager-test.js @@ -4,6 +4,7 @@ import execa from 'execa'; // $FlowFixMe - converted to TS import * as yarn from '../yarn'; import {logger} from '@react-native-community/cli-tools'; +// $FlowFixMe - converted to TS import * as PackageManager from '../packageManager'; const PACKAGES = ['react', 'react-native']; diff --git a/packages/cli/src/tools/generator/templates.js b/packages/cli/src/tools/generator/templates.js index 1520c0645..76b43632f 100644 --- a/packages/cli/src/tools/generator/templates.js +++ b/packages/cli/src/tools/generator/templates.js @@ -13,6 +13,7 @@ import fs from 'fs'; import path from 'path'; import copyProjectTemplateAndReplace from './copyProjectTemplateAndReplace'; import {logger} from '@react-native-community/cli-tools'; +// $FlowFixMe - converted to TS import * as PackageManager from '../packageManager'; /** From 20d3b480e1a2893dffc26a174d70251f3186e849 Mon Sep 17 00:00:00 2001 From: Yuta Mori Date: Tue, 10 Sep 2019 17:11:40 +0900 Subject: [PATCH 3/5] fix: remove Flow annotation --- packages/cli/src/tools/packageManager.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/cli/src/tools/packageManager.ts b/packages/cli/src/tools/packageManager.ts index d6e6b790a..15282cef3 100644 --- a/packages/cli/src/tools/packageManager.ts +++ b/packages/cli/src/tools/packageManager.ts @@ -1,4 +1,3 @@ -// @flow import execa from 'execa'; import {logger} from '@react-native-community/cli-tools'; import {getYarnVersionIfAvailable, isProjectUsingYarn} from './yarn'; From 1fca9de764426410ce0335dd5e06b79dd5e06ee2 Mon Sep 17 00:00:00 2001 From: Yuta Mori Date: Tue, 10 Sep 2019 17:33:01 +0900 Subject: [PATCH 4/5] convert packageManager-test from flow to TS --- .../{packageManager-test.js => packageManager-test.ts} | 3 --- 1 file changed, 3 deletions(-) rename packages/cli/src/tools/__tests__/{packageManager-test.js => packageManager-test.ts} (98%) diff --git a/packages/cli/src/tools/__tests__/packageManager-test.js b/packages/cli/src/tools/__tests__/packageManager-test.ts similarity index 98% rename from packages/cli/src/tools/__tests__/packageManager-test.js rename to packages/cli/src/tools/__tests__/packageManager-test.ts index d9c9ba4ac..8bde1bbd2 100644 --- a/packages/cli/src/tools/__tests__/packageManager-test.js +++ b/packages/cli/src/tools/__tests__/packageManager-test.ts @@ -1,10 +1,7 @@ -// @flow jest.mock('execa', () => jest.fn()); import execa from 'execa'; -// $FlowFixMe - converted to TS import * as yarn from '../yarn'; import {logger} from '@react-native-community/cli-tools'; -// $FlowFixMe - converted to TS import * as PackageManager from '../packageManager'; const PACKAGES = ['react', 'react-native']; From b168c8b6d560745a03b1581aad5086050093a6fe Mon Sep 17 00:00:00 2001 From: Yuta Mori Date: Tue, 10 Sep 2019 17:51:30 +0900 Subject: [PATCH 5/5] fix eslint --- packages/cli/src/commands/index.ts | 10 +++++----- .../cli/src/commands/upgrade/__tests__/upgrade.test.ts | 2 +- packages/cli/src/commands/upgrade/upgrade.ts | 4 +--- packages/cli/src/tools/config/__tests__/index-test.js | 1 + .../link/patches/__tests__/makeSettingsPatch.test.ts | 1 + 5 files changed, 9 insertions(+), 9 deletions(-) diff --git a/packages/cli/src/commands/index.ts b/packages/cli/src/commands/index.ts index 18800a4ab..c9b07a6a6 100644 --- a/packages/cli/src/commands/index.ts +++ b/packages/cli/src/commands/index.ts @@ -7,17 +7,17 @@ import bundle from './bundle/bundle'; // @ts-ignore - JS file import ramBundle from './bundle/ramBundle'; // @ts-ignore - JS file -import link from './link/link'; // eslint-disable-line +import link from './link/link'; // eslint-disable-line import/namespace, import/default // @ts-ignore - JS file -import unlink from './link/unlink'; // eslint-disable-line +import unlink from './link/unlink'; // eslint-disable-line import/namespace, import/default // @ts-ignore - JS file -import install from './install/install'; // eslint-disable-line +import install from './install/install'; // eslint-disable-line import/namespace, import/default // @ts-ignore - JS file -import uninstall from './install/uninstall'; // eslint-disable-line +import uninstall from './install/uninstall'; // eslint-disable-line import/namespace, import/default import upgrade from './upgrade/upgrade'; import info from './info/info'; // @ts-ignore - JS file -import config from './config/config'; // eslint-disable-line +import config from './config/config'; // eslint-disable-line import/namespace, import/default // @ts-ignore - JS file import init from './init'; // @ts-ignore - JS file diff --git a/packages/cli/src/commands/upgrade/__tests__/upgrade.test.ts b/packages/cli/src/commands/upgrade/__tests__/upgrade.test.ts index 761a65fc8..ec9a01af8 100644 --- a/packages/cli/src/commands/upgrade/__tests__/upgrade.test.ts +++ b/packages/cli/src/commands/upgrade/__tests__/upgrade.test.ts @@ -5,7 +5,7 @@ import snapshotDiff from 'snapshot-diff'; import stripAnsi from 'strip-ansi'; import upgrade from '../upgrade'; import {fetch, logger} from '@react-native-community/cli-tools'; -import loadConfig from '../../../tools/config'; // eslint-disable-line +import loadConfig from '../../../tools/config'; // eslint-disable-line import/namespace, import/default import merge from '../../../tools/merge'; jest.mock('https'); diff --git a/packages/cli/src/commands/upgrade/upgrade.ts b/packages/cli/src/commands/upgrade/upgrade.ts index 0f46df1e1..1b419e0cb 100644 --- a/packages/cli/src/commands/upgrade/upgrade.ts +++ b/packages/cli/src/commands/upgrade/upgrade.ts @@ -5,9 +5,7 @@ import semver from 'semver'; import execa from 'execa'; import {Config} from '@react-native-community/cli-types'; import {logger, CLIError, fetch} from '@react-native-community/cli-tools'; -// @ts-ignore JS file -import * as PackageManager from '../../tools/packageManager'; // eslint-disable-line import/namespace -// @ts-ignore JS file +import * as PackageManager from '../../tools/packageManager'; import installPods from '../../tools/installPods'; // https://react-native-community.github.io/upgrade-helper/?from=0.59.10&to=0.60.0-rc.3 diff --git a/packages/cli/src/tools/config/__tests__/index-test.js b/packages/cli/src/tools/config/__tests__/index-test.js index f9bc58808..015012c45 100644 --- a/packages/cli/src/tools/config/__tests__/index-test.js +++ b/packages/cli/src/tools/config/__tests__/index-test.js @@ -267,6 +267,7 @@ test('should not add default React Native config when one present', () => { }); // @todo: figure out why this test is so flaky +// eslint-disable-next-line jest/no-disabled-tests test.skip('should skip packages that have invalid configuration', () => { writeFiles(DIR, { 'node_modules/react-native/package.json': '{}', diff --git a/packages/platform-android/src/link/patches/__tests__/makeSettingsPatch.test.ts b/packages/platform-android/src/link/patches/__tests__/makeSettingsPatch.test.ts index ee30481e9..4b80cf7ae 100644 --- a/packages/platform-android/src/link/patches/__tests__/makeSettingsPatch.test.ts +++ b/packages/platform-android/src/link/patches/__tests__/makeSettingsPatch.test.ts @@ -41,6 +41,7 @@ project(':test').projectDir = new File(rootProject.projectDir, '../node_modules/ // Simulate Windows environment on POSIX filesystem // TODO: scope this test to Windows-only once we setup CI on Windows // as changing path to be windows-specific breaks global path mock + // eslint-disable-next-line jest/no-disabled-tests it.skip('includes project with correct path on Windows', () => { jest.resetModules(); jest.doMock('path', () => {