From 3266d2679aa01618cd8e391b384ad89cb6180f62 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hu=C3=A1ng=20J=C3=B9nli=C3=A0ng?= Date: Tue, 1 Dec 2020 10:31:39 -0500 Subject: [PATCH] move @babel/helper-optimise-call-expression to ts (#12411) * move @babel/helper-optimise-call-expression to ts * chore: add flow interface --- lib/babel-packages.js.flow | 9 +++++++++ .../src/{index.js => index.ts} | 20 ++++++++++++------- 2 files changed, 22 insertions(+), 7 deletions(-) rename packages/babel-helper-optimise-call-expression/src/{index.js => index.ts} (73%) 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 (