diff --git a/lib/babel-packages.js.flow b/lib/babel-packages.js.flow index 2f2c9a61bc..11c681b051 100644 --- a/lib/babel-packages.js.flow +++ b/lib/babel-packages.js.flow @@ -34,3 +34,12 @@ declare module "@babel/template" { program: Program, }; } + +declare module "@babel/helper-optimise-call-expression" { + declare export default function optimiseCallExpression( + callee: BabelNodeExpression, + thisNode: BabelNodeExpression, + args: $Readonly>, + optional: boolean + ): BabelNodeCallExpression | BabelNodeOptionalCallExpression; +} diff --git a/packages/babel-helper-optimise-call-expression/src/index.js b/packages/babel-helper-optimise-call-expression/src/index.ts similarity index 73% rename from packages/babel-helper-optimise-call-expression/src/index.js rename to packages/babel-helper-optimise-call-expression/src/index.ts index 362588bd85..703a26d29c 100644 --- a/packages/babel-helper-optimise-call-expression/src/index.js +++ b/packages/babel-helper-optimise-call-expression/src/index.ts @@ -1,20 +1,26 @@ import * as t from "@babel/types"; +import type { + CallExpression, + Expression, + OptionalCallExpression, + SpreadElement, +} from "@babel/types"; /** * A helper function that generates a new call expression with given thisNode. It will also optimize `(...arguments)` to `.apply(arguments)` * * @export - * @param {Node} callee The callee of call expression - * @param {Node} thisNode The desired this of call expression - * @param {Node[]} args The arguments of call expression + * @param {Expression} callee The callee of call expression + * @param {Expression} thisNode The desired this of call expression + * @param {Readonly>} args The arguments of call expression * @param {boolean} optional Whether the call expression is optional * @returns {CallExpression | OptionalCallExpression} The generated new call expression */ -export default function ( - callee: Node, - thisNode: Node, - args: Node[], +export default function optimiseCallExpression( + callee: Expression, + thisNode: Expression, + args: Readonly>, optional: boolean, ): CallExpression | OptionalCallExpression { if (