From 022d642d20ad39c6973ade4be3d9f2cd2176f299 Mon Sep 17 00:00:00 2001 From: Radek Czemerys Date: Wed, 11 Sep 2019 11:21:01 +0200 Subject: [PATCH 1/4] chore: assign TS migration --- packages/cli/src/tools/{assign.js => assign.ts} | 13 ++++++++----- ...{isValidPackageName.js => isValidPackageName.ts} | 2 +- 2 files changed, 9 insertions(+), 6 deletions(-) rename packages/cli/src/tools/{assign.js => assign.ts} (78%) rename packages/cli/src/tools/{isValidPackageName.js => isValidPackageName.ts} (86%) diff --git a/packages/cli/src/tools/assign.js b/packages/cli/src/tools/assign.ts similarity index 78% rename from packages/cli/src/tools/assign.js rename to packages/cli/src/tools/assign.ts index 18f061712..cd23bdf3d 100644 --- a/packages/cli/src/tools/assign.js +++ b/packages/cli/src/tools/assign.ts @@ -4,14 +4,17 @@ * Similar to Object.assign(), but it doesn't execute getters. This allows us to have * lazy properties on an object and still be able to merge them together * - * @flow */ + export default function assign(target: Object, ...sources: Object[]) { sources.forEach(source => { - let descriptors = Object.keys(source).reduce((acc, key) => { - acc[key] = Object.getOwnPropertyDescriptor(source, key); - return acc; - }, {}); + let descriptors = Object.keys(source).reduce( + (acc: {[k: string]: any}, key) => { + acc[key] = Object.getOwnPropertyDescriptor(source, key); + return acc; + }, + {}, + ); // by default, Object.assign copies enumerable Symbols too Object.getOwnPropertySymbols(source).forEach(sym => { let descriptor = Object.getOwnPropertyDescriptor(source, sym); diff --git a/packages/cli/src/tools/isValidPackageName.js b/packages/cli/src/tools/isValidPackageName.ts similarity index 86% rename from packages/cli/src/tools/isValidPackageName.js rename to packages/cli/src/tools/isValidPackageName.ts index fcdf02334..59d17ca15 100644 --- a/packages/cli/src/tools/isValidPackageName.js +++ b/packages/cli/src/tools/isValidPackageName.ts @@ -7,7 +7,7 @@ * @format */ -function isValidPackageName(name) { +function isValidPackageName(name: string) { return name.match(/^[$A-Z_][0-9A-Z_$]*$/i); } From 92fc5494718b08d761327b60213cb651d9ce6461 Mon Sep 17 00:00:00 2001 From: Radek Czemerys Date: Wed, 11 Sep 2019 11:23:00 +0200 Subject: [PATCH 2/4] Remove empty line --- packages/cli/src/tools/assign.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/cli/src/tools/assign.ts b/packages/cli/src/tools/assign.ts index cd23bdf3d..ff31427d2 100644 --- a/packages/cli/src/tools/assign.ts +++ b/packages/cli/src/tools/assign.ts @@ -5,7 +5,6 @@ * lazy properties on an object and still be able to merge them together * */ - export default function assign(target: Object, ...sources: Object[]) { sources.forEach(source => { let descriptors = Object.keys(source).reduce( From 36f54b90b7395dcb506a694c2d98d26bbac4e29d Mon Sep 17 00:00:00 2001 From: Radek Czemerys Date: Wed, 11 Sep 2019 12:05:29 +0200 Subject: [PATCH 3/4] Use correct types --- packages/cli/src/tools/assign.ts | 9 ++++++--- packages/cli/src/tools/isValidPackageName.ts | 14 -------------- 2 files changed, 6 insertions(+), 17 deletions(-) delete mode 100644 packages/cli/src/tools/isValidPackageName.ts diff --git a/packages/cli/src/tools/assign.ts b/packages/cli/src/tools/assign.ts index ff31427d2..621065bf7 100644 --- a/packages/cli/src/tools/assign.ts +++ b/packages/cli/src/tools/assign.ts @@ -8,11 +8,14 @@ export default function assign(target: Object, ...sources: Object[]) { sources.forEach(source => { let descriptors = Object.keys(source).reduce( - (acc: {[k: string]: any}, key) => { - acc[key] = Object.getOwnPropertyDescriptor(source, key); + (acc, key) => { + const propertyDescriptor = Object.getOwnPropertyDescriptor(source, key); + if (propertyDescriptor !== undefined) { + acc[key] = propertyDescriptor; + } return acc; }, - {}, + {} as PropertyDescriptorMap, ); // by default, Object.assign copies enumerable Symbols too Object.getOwnPropertySymbols(source).forEach(sym => { diff --git a/packages/cli/src/tools/isValidPackageName.ts b/packages/cli/src/tools/isValidPackageName.ts deleted file mode 100644 index 59d17ca15..000000000 --- a/packages/cli/src/tools/isValidPackageName.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - * - * @format - */ - -function isValidPackageName(name: string) { - return name.match(/^[$A-Z_][0-9A-Z_$]*$/i); -} - -export default isValidPackageName; From 578d02a622c817d69191e6f555b8587147abea19 Mon Sep 17 00:00:00 2001 From: Radek Czemerys Date: Wed, 11 Sep 2019 12:24:38 +0200 Subject: [PATCH 4/4] Add FlowFixMe comment --- packages/cli/src/tools/config/index.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/cli/src/tools/config/index.js b/packages/cli/src/tools/config/index.js index eda09c404..1037c0a70 100644 --- a/packages/cli/src/tools/config/index.js +++ b/packages/cli/src/tools/config/index.js @@ -19,6 +19,7 @@ import type { UserConfigT, DependencyConfigT, } from 'types'; +// $FlowFixMe - converted to TS import assign from '../assign'; // $FlowFixMe - converted to TS import merge from '../merge'; @@ -46,7 +47,7 @@ function getDependencyConfig( : platformConfig.dependencyConfig( root, /* $FlowFixMe - can't figure out which platform's dependency - config to choose */ + config to choose */ config.dependency.platforms[platform], ); return dependency;