diff --git a/packages/babel-helper-skip-transparent-expression-wrappers/src/index.js b/packages/babel-helper-skip-transparent-expression-wrappers/src/index.ts similarity index 66% rename from packages/babel-helper-skip-transparent-expression-wrappers/src/index.js rename to packages/babel-helper-skip-transparent-expression-wrappers/src/index.ts index c218ac6c8fde..923fccd2087c 100644 --- a/packages/babel-helper-skip-transparent-expression-wrappers/src/index.js +++ b/packages/babel-helper-skip-transparent-expression-wrappers/src/index.ts @@ -1,14 +1,21 @@ -// @flow - import * as t from "@babel/types"; import type { NodePath } from "@babel/traverse"; +export type TransparentExprWrapper = + | t.TSAsExpression + | t.TSTypeAssertion + | t.TSNonNullExpression + | t.TypeCastExpression + | t.ParenthesizedExpression; + // A transparent expression wrapper is an AST node that most plugins will wish // to skip, as its presence does not affect the behaviour of the code. This // includes expressions used for types, and extra parenthesis. For example, in // (a as any)(), this helper can be used to skip the TSAsExpression when // determining the callee. -export function isTransparentExprWrapper(node: Node) { +export function isTransparentExprWrapper( + node: t.Node, +): node is TransparentExprWrapper { return ( t.isTSAsExpression(node) || t.isTSTypeAssertion(node) || @@ -18,10 +25,11 @@ export function isTransparentExprWrapper(node: Node) { ); } -export function skipTransparentExprWrappers(path: NodePath): NodePath { +export function skipTransparentExprWrappers( + path: NodePath, +): NodePath { while (isTransparentExprWrapper(path.node)) { path = path.get("expression"); } - return path; } diff --git a/packages/babel-plugin-bugfix-v8-spread-parameters-in-optional-chaining/src/util.ts b/packages/babel-plugin-bugfix-v8-spread-parameters-in-optional-chaining/src/util.ts index ebfdc8bebe55..c813c79a7281 100644 --- a/packages/babel-plugin-bugfix-v8-spread-parameters-in-optional-chaining/src/util.ts +++ b/packages/babel-plugin-bugfix-v8-spread-parameters-in-optional-chaining/src/util.ts @@ -22,7 +22,7 @@ function matchAffectedArguments(argumentNodes) { export function shouldTransform( path: NodePath, ): boolean { - let optionalPath = path; + let optionalPath: NodePath = path; const chains = []; while ( optionalPath.isOptionalMemberExpression() || diff --git a/tsconfig.json b/tsconfig.json index c4ad33c2724b..a5cdfef327d9 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -20,6 +20,7 @@ "./packages/babel-helper-optimise-call-expression/src/**/*.ts", "./packages/babel-helper-replace-supers/src/**/*.ts", "./packages/babel-helper-simple-access/src/**/*.ts", + "./packages/babel-helper-skip-transparent-expression-wrappers/src/**/*.ts", "./packages/babel-helper-split-export-declaration/src/**/*.ts", "./packages/babel-helper-transform-fixture-test-runner/src/**/*.ts", "./packages/babel-helper-validator-identifier/src/**/*.ts", @@ -96,6 +97,9 @@ "@babel/helper-simple-access": [ "./packages/babel-helper-simple-access/src" ], + "@babel/helper-skip-transparent-expression-wrappers": [ + "./packages/babel-helper-skip-transparent-expression-wrappers/src" + ], "@babel/helper-split-export-declaration": [ "./packages/babel-helper-split-export-declaration/src" ],