From 4d0ead4c8d35766f60042311d19e78231a18fb82 Mon Sep 17 00:00:00 2001 From: VincentBel Date: Sat, 20 Jan 2018 14:42:18 +0800 Subject: [PATCH] use lodash.find directly --- src/helpers/index.ts | 4 ---- .../collapse-intersection-interfaces-transform.ts | 4 +++- src/transforms/react-hoist-generics-transform.ts | 5 +++-- .../react-js-make-props-and-state-transform.ts | 12 ++++++------ .../react-move-prop-types-to-class-transform.ts | 3 ++- 5 files changed, 14 insertions(+), 14 deletions(-) diff --git a/src/helpers/index.ts b/src/helpers/index.ts index 028e3cf..18bfbf0 100644 --- a/src/helpers/index.ts +++ b/src/helpers/index.ts @@ -97,10 +97,6 @@ export function isPropTypesMember(classMember: ts.ClassElement, sourceFile: ts.S } } - -export { find }; - -// export const has = some /** * Insert an item in middle of an array after a specific item * @param collection diff --git a/src/transforms/collapse-intersection-interfaces-transform.ts b/src/transforms/collapse-intersection-interfaces-transform.ts index b72ee53..30395f9 100644 --- a/src/transforms/collapse-intersection-interfaces-transform.ts +++ b/src/transforms/collapse-intersection-interfaces-transform.ts @@ -33,8 +33,10 @@ export function collapseIntersectionInterfacesTransformFactoryFactory( function visitTypeAliasDeclaration(node: ts.TypeAliasDeclaration) { if ( ts.isIntersectionTypeNode(node.type) - && node.type.types.every((type) => ts.isTypeLiteralNode(type)) + && node.type.types.every(ts.isTypeLiteralNode) ) { + // We need cast `node.type.types` to `ts.NodeArray` + // because TypeScript can't figure out `node.type.types.every(ts.isTypeLiteralNode)` const allMembers = (node.type.types as ts.NodeArray) .map((type) => type.members) .reduce((all, members) => ts.createNodeArray(all.concat(members)), ts.createNodeArray([])); diff --git a/src/transforms/react-hoist-generics-transform.ts b/src/transforms/react-hoist-generics-transform.ts index ad8808a..43fd0f0 100644 --- a/src/transforms/react-hoist-generics-transform.ts +++ b/src/transforms/react-hoist-generics-transform.ts @@ -1,4 +1,5 @@ import * as ts from 'typescript'; +import { find } from 'lodash'; import * as helpers from '../helpers'; @@ -45,7 +46,7 @@ function hoist(reactClass: ts.ClassDeclaration, sourceFile: ts.SourceFile) { return sourceFile; } const className = reactClass && reactClass.name && reactClass.name.getText(sourceFile); - const reactHeritageClauses = helpers.find(reactClass.heritageClauses, helpers.isReactHeritageClause); + const reactHeritageClauses = find(reactClass.heritageClauses, helpers.isReactHeritageClause); if (reactHeritageClauses === undefined || !reactHeritageClauses.types == undefined) { return sourceFile; @@ -97,7 +98,7 @@ function insertTypeRefs( if (reactClassDeclaration.heritageClauses === undefined) { return reactClassDeclaration; } - const reactHeritageClause = helpers.find(reactClassDeclaration.heritageClauses, helpers.isReactHeritageClause); + const reactHeritageClause = find(reactClassDeclaration.heritageClauses, helpers.isReactHeritageClause); if (reactHeritageClause === undefined) { return reactClassDeclaration; diff --git a/src/transforms/react-js-make-props-and-state-transform.ts b/src/transforms/react-js-make-props-and-state-transform.ts index 33daa71..c94b056 100644 --- a/src/transforms/react-js-make-props-and-state-transform.ts +++ b/src/transforms/react-js-make-props-and-state-transform.ts @@ -1,5 +1,5 @@ import * as ts from 'typescript'; - +import { find } from 'lodash'; import * as helpers from '../helpers'; export type Factory = ts.TransformerFactory; @@ -77,7 +77,7 @@ function getPropsTypeOfReactComponentClass( classDeclaration: ts.ClassDeclaration, sourceFile: ts.SourceFile, ): ts.TypeNode { - const staticPropTypesMember = helpers.find(classDeclaration.members, (member) => { + const staticPropTypesMember = find(classDeclaration.members, (member) => { return ts.isPropertyDeclaration(member) && helpers.hasStaticModifier(member) && helpers.isPropTypesMember(member, sourceFile); @@ -92,7 +92,7 @@ function getPropsTypeOfReactComponentClass( return buildInterfaceFromPropTypeObjectLiteral(staticPropTypesMember.initializer) } - const staticPropTypesGetterMember = helpers.find(classDeclaration.members, (member) => { + const staticPropTypesGetterMember = find(classDeclaration.members, (member) => { return ts.isGetAccessorDeclaration(member) && helpers.hasStaticModifier(member) && helpers.isPropTypesMember(member, sourceFile); @@ -102,7 +102,7 @@ function getPropsTypeOfReactComponentClass( staticPropTypesGetterMember !== undefined && ts.isGetAccessorDeclaration(staticPropTypesGetterMember) // check to satisfy typechecker ) { - const returnStatement = helpers.find( + const returnStatement = find( staticPropTypesGetterMember.body.statements, (statement) => ts.isReturnStatement(statement), ); @@ -149,7 +149,7 @@ function getInitialStateFromClassDeclaration( ): ts.TypeNode { // initial state class member - const initialStateMember = helpers.find(classDeclaration.members, (member) => { + const initialStateMember = find(classDeclaration.members, (member) => { try { return ts.isPropertyDeclaration(member) && member.name && @@ -169,7 +169,7 @@ function getInitialStateFromClassDeclaration( } // Initial state in constructor - const constructor = helpers.find( + const constructor = find( classDeclaration.members, (member) => member.kind === ts.SyntaxKind.Constructor, ) as ts.ConstructorDeclaration | undefined; diff --git a/src/transforms/react-move-prop-types-to-class-transform.ts b/src/transforms/react-move-prop-types-to-class-transform.ts index 0675aaf..9e43c30 100644 --- a/src/transforms/react-move-prop-types-to-class-transform.ts +++ b/src/transforms/react-move-prop-types-to-class-transform.ts @@ -1,4 +1,5 @@ import * as ts from 'typescript'; +import { find } from 'lodash'; import * as helpers from '../helpers'; @@ -56,7 +57,7 @@ function visitSourceFile(sourceFile: ts.SourceFile, typeChecker: ts.TypeChecker) // Look for the class declarations with the same name const componentName = getComponentName(propTypeAssignment, sourceFile); - const classStatement = helpers.find( + const classStatement = find( statements, (statement) => ts.isClassDeclaration(statement) && statement.name !== undefined &&