@babel/plugin-transform-parameters
Advanced tools
+1
-0
@@ -7,2 +7,3 @@ import * as _babel_core from '@babel/core'; | ||
| interface Options { | ||
| /** @deprecated Use the `ignoreFunctionLength` assumption instead. */ | ||
| loose?: boolean; | ||
@@ -9,0 +10,0 @@ } |
+4
-1
@@ -469,3 +469,6 @@ import { declare } from '@babel/helper-plugin-utils'; | ||
| const index = declare((api, options) => { | ||
| api.assertVersion("^7.0.0-0 || ^8.0.0 || 8.0.0-rc.4"); | ||
| api.assertVersion("^7.0.0-0 || ^8.0.0 || 8.0.0-rc.5"); | ||
| if ("loose" in options) { | ||
| console.warn("@babel/plugin-transform-parameters: The 'loose' option has been deprecated, " + "use the `ignoreFunctionLength` assumption instead (https://babeljs.io/assumptions)."); | ||
| } | ||
| const ignoreFunctionLength = api.assumption("ignoreFunctionLength") ?? options.loose; | ||
@@ -472,0 +475,0 @@ const noNewArrows = api.assumption("noNewArrows") ?? true; |
+1
-1
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"index.js","sources":["../src/shadow-utils.ts","../src/params.ts","../src/rest.ts","../src/index.ts"],"sourcesContent":["import { types as t } from \"@babel/core\";\nimport type { NodePath, Scope, Visitor } from \"@babel/core\";\n\ntype State = {\n needsOuterBinding: boolean;\n scope: Scope;\n};\n\nexport const iifeVisitor: Visitor<State> = {\n \"ReferencedIdentifier|BindingIdentifier\"(\n path: NodePath<t.Identifier>,\n state,\n ) {\n const { scope, node } = path;\n const { name } = node;\n\n if (\n name === \"eval\" ||\n (scope.getBinding(name) === state.scope.parent!.getBinding(name) &&\n state.scope.hasOwnBinding(name))\n ) {\n state.needsOuterBinding = true;\n path.stop();\n }\n },\n // type annotations don't use or introduce \"real\" bindings\n \"TypeAnnotation|TSTypeAnnotation|TypeParameterDeclaration|TSTypeParameterDeclaration\":\n (path: NodePath) => path.skip(),\n};\n\nexport function collectShadowedParamsNames(\n param: NodePath<t.Function[\"params\"][number]>,\n functionScope: Scope,\n shadowedParams: Set<string>,\n) {\n for (const name of Object.keys(param.getBindingIdentifiers())) {\n const constantViolations = functionScope.bindings[name]?.constantViolations;\n if (constantViolations) {\n for (const redeclarator of constantViolations) {\n const node = redeclarator.node;\n // If a constant violation is a var or a function declaration,\n // we first check to see if it's a var without an init.\n // If so, we remove that declarator.\n // Otherwise, we have to wrap it in an IIFE.\n switch (node.type) {\n case \"VariableDeclarator\": {\n if (node.init === null) {\n const declaration = redeclarator.parentPath;\n // The following uninitialized var declarators should not be removed\n // for (var x in {})\n // for (var x;;)\n if (\n !declaration.parentPath.isFor() ||\n declaration.parentPath.get(\"body\") === declaration\n ) {\n redeclarator.remove();\n break;\n }\n }\n\n shadowedParams.add(name);\n break;\n }\n case \"FunctionDeclaration\":\n shadowedParams.add(name);\n break;\n }\n }\n }\n }\n}\n\nexport function buildScopeIIFE(\n shadowedParams: Set<string>,\n body: t.BlockStatement,\n) {\n const args = [];\n const params = [];\n\n for (const name of shadowedParams) {\n // We create them twice; the other option is to use t.cloneNode\n args.push(t.identifier(name));\n params.push(t.identifier(name));\n }\n\n return t.returnStatement(\n t.callExpression(t.arrowFunctionExpression(params, body), args),\n );\n}\n","import { template, types as t, type NodePath } from \"@babel/core\";\n\nimport {\n iifeVisitor,\n collectShadowedParamsNames,\n buildScopeIIFE,\n} from \"./shadow-utils.ts\";\n\nconst buildDefaultParam = template.statement(`\n let VARIABLE_NAME =\n arguments.length > ARGUMENT_KEY && arguments[ARGUMENT_KEY] !== undefined ?\n arguments[ARGUMENT_KEY]\n :\n DEFAULT_VALUE;\n`);\n\nconst buildLooseDefaultParam = template.statement(`\n if (ASSIGNMENT_IDENTIFIER === UNDEFINED) {\n ASSIGNMENT_IDENTIFIER = DEFAULT_VALUE;\n }\n`);\n\nconst buildLooseDestructuredDefaultParam = template.statement(`\n let ASSIGNMENT_IDENTIFIER = PARAMETER_NAME === UNDEFINED ? DEFAULT_VALUE : PARAMETER_NAME ;\n`);\n\nconst buildSafeArgumentsAccess = template.statement(`\n let $0 = arguments.length > $1 ? arguments[$1] : undefined;\n`);\n\n// last 2 parameters are optional -- they are used by transform-object-rest-spread/src/index.js\nexport default function convertFunctionParams(\n path: NodePath<t.Function>,\n ignoreFunctionLength: boolean | void,\n shouldTransformParam?: (index: number) => boolean,\n replaceRestElement?: (\n path: NodePath<t.Function>,\n paramPath: NodePath<t.Function[\"params\"][number]>,\n transformedRestNodes: t.Statement[],\n ) => void,\n) {\n const params = path.get(\"params\");\n\n const isSimpleParameterList = params.every(param => param.isIdentifier());\n if (isSimpleParameterList) return false;\n\n const { node, scope } = path;\n\n const body = [];\n const shadowedParams = new Set<string>();\n\n for (const param of params) {\n collectShadowedParamsNames(param, scope, shadowedParams);\n }\n\n const state = {\n needsOuterBinding: false,\n scope,\n };\n if (shadowedParams.size === 0) {\n for (const param of params) {\n if (!param.isIdentifier()) param.traverse(iifeVisitor, state);\n if (state.needsOuterBinding) break;\n }\n }\n\n let firstOptionalIndex = null;\n\n for (let i = 0; i < params.length; i++) {\n const param = params[i];\n\n if (shouldTransformParam && !shouldTransformParam(i)) {\n continue;\n }\n const transformedRestNodes: t.Statement[] = [];\n if (replaceRestElement) {\n replaceRestElement(path, param, transformedRestNodes);\n }\n\n const paramIsAssignmentPattern = param.isAssignmentPattern();\n if (\n paramIsAssignmentPattern &&\n (ignoreFunctionLength || t.isMethod(node, { kind: \"set\" }))\n ) {\n const left = param.get(\"left\");\n const right = param.get(\"right\");\n\n const undefinedNode = t.buildUndefinedNode();\n\n if (left.isIdentifier()) {\n body.push(\n buildLooseDefaultParam({\n ASSIGNMENT_IDENTIFIER: t.cloneNode(left.node),\n DEFAULT_VALUE: right.node,\n UNDEFINED: undefinedNode,\n }),\n );\n param.replaceWith(left.node);\n } else if (left.isObjectPattern() || left.isArrayPattern()) {\n const paramName = scope.generateUidIdentifier();\n body.push(\n buildLooseDestructuredDefaultParam({\n ASSIGNMENT_IDENTIFIER: left.node,\n DEFAULT_VALUE: right.node,\n PARAMETER_NAME: t.cloneNode(paramName),\n UNDEFINED: undefinedNode,\n }),\n );\n param.replaceWith(paramName);\n }\n } else if (paramIsAssignmentPattern) {\n if (firstOptionalIndex === null) firstOptionalIndex = i;\n\n const left = param.get(\"left\");\n const right = param.get(\"right\");\n\n const defNode = buildDefaultParam({\n VARIABLE_NAME: left.node,\n DEFAULT_VALUE: right.node,\n ARGUMENT_KEY: t.numericLiteral(i),\n });\n body.push(defNode);\n } else if (firstOptionalIndex !== null) {\n const defNode = buildSafeArgumentsAccess([\n param.node,\n t.numericLiteral(i),\n ]);\n body.push(defNode);\n } else if (param.isObjectPattern() || param.isArrayPattern()) {\n const uid = path.scope.generateUidIdentifier(\"ref\");\n uid.typeAnnotation = param.node.typeAnnotation;\n\n const defNode = t.variableDeclaration(\"let\", [\n t.variableDeclarator(param.node, uid),\n ]);\n body.push(defNode);\n\n param.replaceWith(t.cloneNode(uid));\n }\n\n if (transformedRestNodes) {\n for (const transformedNode of transformedRestNodes) {\n body.push(transformedNode);\n }\n }\n }\n\n // we need to cut off all trailing parameters\n if (firstOptionalIndex !== null) {\n node.params = node.params.slice(0, firstOptionalIndex);\n }\n\n // ensure it's a block, useful for arrow functions\n path.ensureBlock();\n const path2 = path as NodePath<typeof path.node & { body: t.BlockStatement }>;\n\n const { async, generator } = node;\n if (generator || state.needsOuterBinding || shadowedParams.size > 0) {\n body.push(buildScopeIIFE(shadowedParams, path2.node.body));\n\n path.set(\"body\", t.blockStatement(body as t.Statement[]));\n\n // We inject an arrow and then transform it to a normal function, to be\n // sure that we correctly handle this and arguments.\n const bodyPath = path2.get(\"body.body\");\n const arrowPath = bodyPath[bodyPath.length - 1].get(\n \"argument.callee\",\n ) as NodePath<t.ArrowFunctionExpression>;\n\n // This is an IIFE, so we don't need to worry about the noNewArrows assumption\n arrowPath.arrowFunctionToExpression();\n\n arrowPath.node.generator = generator;\n arrowPath.node.async = async;\n\n node.generator = false;\n node.async = false;\n if (async && !generator) {\n // If the default value of a parameter throws, it must reject asynchronously.\n path2.node.body = template.statement.ast`{\n try {\n ${path2.node.body.body}\n } catch (e) {\n return Promise.reject(e);\n }\n }` as t.BlockStatement;\n }\n } else {\n path2.get(\"body\").unshiftContainer(\"body\", body);\n }\n\n return true;\n}\n","import { template, types as t } from \"@babel/core\";\nimport type { NodePath, Visitor } from \"@babel/core\";\n\nimport {\n iifeVisitor,\n collectShadowedParamsNames,\n buildScopeIIFE,\n} from \"./shadow-utils.ts\";\n\nconst buildRest = template.statement(`\n for (var LEN = ARGUMENTS.length,\n ARRAY = new Array(ARRAY_LEN),\n KEY = START;\n KEY < LEN;\n KEY++) {\n ARRAY[ARRAY_KEY] = ARGUMENTS[KEY];\n }\n`);\n\nconst restIndex = template.expression(`\n (INDEX < OFFSET || ARGUMENTS.length <= INDEX) ? undefined : ARGUMENTS[INDEX]\n`);\n\nconst restIndexImpure = template.expression(`\n REF = INDEX, (REF < OFFSET || ARGUMENTS.length <= REF) ? undefined : ARGUMENTS[REF]\n`);\n\nconst restLength = template.expression(`\n ARGUMENTS.length <= OFFSET ? 0 : ARGUMENTS.length - OFFSET\n`);\n\nfunction referencesRest(\n path: NodePath<t.Identifier | t.JSXIdentifier>,\n state: State,\n) {\n if (path.node.name === state.name) {\n // Check rest parameter is not shadowed by a binding in another scope.\n return path.scope.bindingIdentifierEquals(state.name, state.outerBinding);\n }\n\n return false;\n}\n\ntype Candidate = {\n cause: \"argSpread\" | \"indexGetter\" | \"lengthGetter\";\n path: NodePath<t.Identifier | t.JSXIdentifier>;\n};\n\ntype State = {\n references: NodePath<t.Identifier | t.JSXIdentifier>[];\n offset: number;\n\n argumentsNode: t.Identifier;\n outerBinding: t.Identifier;\n\n // candidate member expressions we could optimise if there are no other references\n candidates: Candidate[];\n\n // local rest binding name\n name: string;\n\n /*\n It may be possible to optimize the output code in certain ways, such as\n not generating code to initialize an array (perhaps substituting direct\n references to arguments[i] or arguments.length for reads of the\n corresponding rest parameter property) or positioning the initialization\n code so that it may not have to execute depending on runtime conditions.\n\n This property tracks eligibility for optimization. \"deopted\" means give up\n and don't perform optimization. For example, when any of rest's elements /\n properties is assigned to at the top level, or referenced at all in a\n nested function.\n */\n deopted: boolean;\n noOptimise?: boolean;\n};\n\nconst memberExpressionOptimisationVisitor: Visitor<State> = {\n Scope(path, state) {\n // check if this scope has a local binding that will shadow the rest parameter\n if (!path.scope.bindingIdentifierEquals(state.name, state.outerBinding)) {\n path.skip();\n }\n },\n\n Flow(path: NodePath<t.Flow>) {\n // Do not skip TypeCastExpressions as the contain valid non flow code\n if (path.isTypeCastExpression()) return;\n // don't touch reference in type annotations\n path.skip();\n },\n\n Function(path, state) {\n // Detect whether any reference to rest is contained in nested functions to\n // determine if deopt is necessary.\n const oldNoOptimise = state.noOptimise;\n state.noOptimise = true;\n path.traverse(memberExpressionOptimisationVisitor, state);\n state.noOptimise = oldNoOptimise;\n\n // Skip because optimizing references to rest would refer to the `arguments`\n // of the nested function.\n path.skip();\n },\n\n ReferencedIdentifier(path, state) {\n const { node } = path;\n\n // we can't guarantee the purity of arguments\n if (node.name === \"arguments\") {\n state.deopted = true;\n }\n\n // is this a referenced identifier and is it referencing the rest parameter?\n if (!referencesRest(path, state)) return;\n\n if (state.noOptimise) {\n state.deopted = true;\n } else {\n const { parentPath } = path;\n\n // Is this identifier the right hand side of a default parameter?\n if (\n parentPath.listKey === \"params\" &&\n (parentPath.key as number) < state.offset\n ) {\n return;\n }\n\n // ex: `args[0]`\n // ex: `args.whatever`\n if (parentPath.isMemberExpression({ object: node })) {\n const grandparentPath = parentPath.parentPath;\n\n const argsOptEligible =\n !state.deopted &&\n !(\n // ex: `args[0] = \"whatever\"`\n (\n (grandparentPath.isAssignmentExpression() &&\n parentPath.node === grandparentPath.node.left) || // ex: `[args[0]] = [\"whatever\"]`\n grandparentPath.isLVal() || // ex: `for (rest[0] in this)`\n // ex: `for (rest[0] of this)`\n grandparentPath.isForXStatement() || // ex: `++args[0]`\n // ex: `args[0]--`\n grandparentPath.isUpdateExpression() || // ex: `delete args[0]`\n grandparentPath.isUnaryExpression({ operator: \"delete\" }) || // ex: `args[0]()`\n // ex: `new args[0]()`\n // ex: `new args[0]`\n ((grandparentPath.isCallExpression() ||\n grandparentPath.isNewExpression()) &&\n parentPath.node === grandparentPath.node.callee)\n )\n );\n if (argsOptEligible) {\n if (parentPath.node.computed) {\n // if we know that this member expression is referencing a number then\n // we can safely optimise it\n if (parentPath.get(\"property\").isBaseType(\"number\")) {\n state.candidates.push({ cause: \"indexGetter\", path });\n return;\n }\n } else if (\n // @ts-expect-error .length must not be a private name\n parentPath.node.property.name === \"length\"\n ) {\n // args.length\n state.candidates.push({ cause: \"lengthGetter\", path });\n return;\n }\n }\n }\n\n // we can only do these optimizations if the rest variable would match\n // the arguments exactly\n // optimise single spread args in calls\n // ex: fn(...args)\n if (state.offset === 0 && parentPath.isSpreadElement()) {\n const call = parentPath.parentPath;\n if (call.isCallExpression() && call.node.arguments.length === 1) {\n state.candidates.push({ cause: \"argSpread\", path });\n return;\n }\n }\n\n state.references.push(path);\n }\n },\n\n /**\n * Deopt on use of a binding identifier with the same name as our rest param.\n *\n * See https://github.com/babel/babel/issues/2091\n */\n\n BindingIdentifier(path, state) {\n if (referencesRest(path, state)) {\n state.deopted = true;\n }\n },\n};\n\nfunction getParamsCount(node: t.Function) {\n let count = node.params.length;\n // skip the first parameter if it is a TypeScript 'this parameter'\n if (count > 0 && t.isIdentifier(node.params[0], { name: \"this\" })) {\n count -= 1;\n }\n return count;\n}\n\nfunction hasRest(node: t.Function) {\n const length = node.params.length;\n return length > 0 && t.isRestElement(node.params[length - 1]);\n}\n\nfunction optimiseIndexGetter(\n path: NodePath<t.Identifier | t.JSXIdentifier>,\n argsId: t.Identifier,\n offset: number,\n) {\n const offsetLiteral = t.numericLiteral(offset);\n let index;\n const parent = path.parent as t.MemberExpression;\n\n if (t.isNumericLiteral(parent.property)) {\n index = t.numericLiteral(parent.property.value + offset);\n } else if (offset === 0) {\n // Avoid unnecessary '+ 0'\n index = parent.property;\n } else {\n index = t.binaryExpression(\n \"+\",\n parent.property,\n t.cloneNode(offsetLiteral),\n );\n }\n\n const { scope, parentPath } = path;\n if (!scope.isPure(index)) {\n const temp = scope.generateUidIdentifierBasedOnNode(index);\n scope.push({ id: temp, kind: \"var\" });\n parentPath.replaceWith(\n restIndexImpure({\n ARGUMENTS: argsId,\n OFFSET: offsetLiteral,\n INDEX: index,\n REF: t.cloneNode(temp),\n }),\n );\n } else {\n parentPath.replaceWith(\n restIndex({\n ARGUMENTS: argsId,\n OFFSET: offsetLiteral,\n INDEX: index,\n }),\n );\n const replacedParentPath = parentPath as NodePath<t.ConditionalExpression>;\n\n // See if we can statically evaluate the first test (i.e. index < offset)\n // and optimize the AST accordingly.\n const offsetTestPath = replacedParentPath.get(\n \"test\",\n ) as NodePath<t.BinaryExpression>;\n const valRes = offsetTestPath.get(\"left\").evaluate();\n if (valRes.confident) {\n if (valRes.value === true) {\n replacedParentPath.replaceWith(t.buildUndefinedNode());\n } else {\n offsetTestPath.replaceWith(offsetTestPath.get(\"right\"));\n }\n }\n }\n}\n\nfunction optimiseLengthGetter(\n path: NodePath<t.Identifier | t.JSXIdentifier>,\n argsId: t.Identifier,\n offset: number,\n) {\n if (offset) {\n path.parentPath.replaceWith(\n restLength({\n ARGUMENTS: argsId,\n OFFSET: t.numericLiteral(offset),\n }),\n );\n } else {\n path.replaceWith(argsId);\n }\n}\n\nexport default function convertFunctionRest(path: NodePath<t.Function>) {\n const { node, scope } = path;\n if (!hasRest(node)) return false;\n\n const restPath = path.get(\n `params.${node.params.length - 1}.argument`,\n ) as NodePath<t.ArrayPattern | t.ObjectPattern | t.Identifier>;\n\n if (!restPath.isIdentifier()) {\n const shadowedParams = new Set<string>();\n collectShadowedParamsNames(restPath, path.scope, shadowedParams);\n\n let needsIIFE = shadowedParams.size > 0;\n if (!needsIIFE) {\n const state = {\n needsOuterBinding: false,\n scope,\n };\n restPath.traverse(iifeVisitor, state);\n needsIIFE = state.needsOuterBinding;\n }\n\n if (needsIIFE) {\n path.ensureBlock();\n path.set(\n \"body\",\n t.blockStatement([\n buildScopeIIFE(shadowedParams, path.node.body as t.BlockStatement),\n ]),\n );\n }\n }\n\n let rest = restPath.node;\n node.params.pop(); // This returns 'rest'\n\n if (t.isPattern(rest)) {\n const pattern = rest;\n rest = scope.generateUidIdentifier(\"ref\");\n\n const declar = t.variableDeclaration(\"let\", [\n t.variableDeclarator(pattern, rest),\n ]);\n path.ensureBlock();\n (node.body as t.BlockStatement).body.unshift(declar);\n } else if (rest.name === \"arguments\") {\n scope.rename(rest.name);\n }\n\n const argsId = t.identifier(\"arguments\");\n const paramsCount = getParamsCount(node);\n\n // check and optimise for extremely common cases\n const state: State = {\n references: [],\n offset: paramsCount,\n argumentsNode: argsId,\n outerBinding: scope.getBindingIdentifier(rest.name)!,\n candidates: [],\n name: rest.name,\n deopted: false,\n };\n\n path.traverse(memberExpressionOptimisationVisitor, state);\n\n // There are only \"shorthand\" references\n if (!state.deopted && !state.references.length) {\n for (const { path, cause } of state.candidates) {\n const clonedArgsId = t.cloneNode(argsId);\n switch (cause) {\n case \"indexGetter\":\n optimiseIndexGetter(path, clonedArgsId, state.offset);\n break;\n case \"lengthGetter\":\n optimiseLengthGetter(path, clonedArgsId, state.offset);\n break;\n default:\n path.replaceWith(clonedArgsId);\n }\n }\n return true;\n }\n\n state.references.push(...state.candidates.map(({ path }) => path));\n\n const start = t.numericLiteral(paramsCount);\n const key = scope.generateUidIdentifier(\"key\");\n const len = scope.generateUidIdentifier(\"len\");\n\n let arrKey, arrLen;\n if (paramsCount) {\n // this method has additional params, so we need to subtract\n // the index of the current argument position from the\n // position in the array that we want to populate\n arrKey = t.binaryExpression(\"-\", t.cloneNode(key), t.cloneNode(start));\n\n // we need to work out the size of the array that we're\n // going to store all the rest parameters\n //\n // we need to add a check to avoid constructing the array\n // with <0 if there are less arguments than params as it'll\n // cause an error\n arrLen = t.conditionalExpression(\n t.binaryExpression(\">\", t.cloneNode(len), t.cloneNode(start)),\n t.binaryExpression(\"-\", t.cloneNode(len), t.cloneNode(start)),\n t.numericLiteral(0),\n );\n } else {\n arrKey = t.identifier(key.name);\n arrLen = t.identifier(len.name);\n }\n\n const loop = buildRest({\n ARGUMENTS: argsId,\n ARRAY_KEY: arrKey,\n ARRAY_LEN: arrLen,\n START: start,\n ARRAY: rest,\n KEY: key,\n LEN: len,\n });\n\n if (state.deopted) {\n (node.body as t.BlockStatement).body.unshift(loop);\n } else {\n let target = path\n .getEarliestCommonAncestorFrom(state.references)\n .getStatementParent();\n\n // don't perform the allocation inside a loop\n target.findParent(path => {\n if (path.isLoop()) {\n target = path;\n } else {\n // Stop crawling up if this is a function.\n return path.isFunction();\n }\n return false;\n });\n\n target.insertBefore(loop);\n }\n\n return true;\n}\n","import { declare } from \"@babel/helper-plugin-utils\";\nimport convertFunctionParams from \"./params.ts\";\nimport convertFunctionRest from \"./rest.ts\";\nexport { convertFunctionParams };\n\nexport interface Options {\n loose?: boolean;\n}\n\nexport default declare((api, options: Options) => {\n api.assertVersion(REQUIRED_VERSION(\"^7.0.0-0 || ^8.0.0\"));\n\n const ignoreFunctionLength =\n api.assumption(\"ignoreFunctionLength\") ?? options.loose;\n // Todo(BABEL 8): Consider default it to false\n const noNewArrows = api.assumption(\"noNewArrows\") ?? true;\n\n return {\n name: \"transform-parameters\",\n\n visitor: {\n Function(path) {\n if (\n path.isArrowFunctionExpression() &&\n path\n .get(\"params\")\n .some(param => param.isRestElement() || param.isAssignmentPattern())\n ) {\n // default/rest visitors require access to `arguments`, so it cannot be an arrow\n path.arrowFunctionToExpression({\n allowInsertArrowWithRest: false,\n noNewArrows,\n });\n\n // In some cases arrowFunctionToExpression replaces the function with a wrapper.\n // Return early; the wrapped function will be visited later in the AST traversal.\n if (!path.isFunctionExpression()) return;\n }\n\n const convertedRest = convertFunctionRest(path);\n const convertedParams = convertFunctionParams(\n path,\n ignoreFunctionLength,\n );\n\n if (convertedRest || convertedParams) {\n // Manually reprocess this scope to ensure that the moved params are updated.\n path.scope.crawl();\n }\n },\n },\n };\n});\n"],"names":["iifeVisitor","ReferencedIdentifier|BindingIdentifier","path","state","scope","node","name","getBinding","parent","hasOwnBinding","needsOuterBinding","stop","skip","collectShadowedParamsNames","param","functionScope","shadowedParams","Object","keys","getBindingIdentifiers","constantViolations","bindings","redeclarator","type","init","declaration","parentPath","isFor","get","remove","add","buildScopeIIFE","body","args","params","push","t","identifier","returnStatement","callExpression","arrowFunctionExpression","buildDefaultParam","template","statement","buildLooseDefaultParam","buildLooseDestructuredDefaultParam","buildSafeArgumentsAccess","convertFunctionParams","ignoreFunctionLength","shouldTransformParam","replaceRestElement","isSimpleParameterList","every","isIdentifier","Set","size","traverse","firstOptionalIndex","i","length","transformedRestNodes","paramIsAssignmentPattern","isAssignmentPattern","isMethod","kind","left","right","undefinedNode","buildUndefinedNode","ASSIGNMENT_IDENTIFIER","cloneNode","DEFAULT_VALUE","UNDEFINED","replaceWith","isObjectPattern","isArrayPattern","paramName","generateUidIdentifier","PARAMETER_NAME","defNode","VARIABLE_NAME","ARGUMENT_KEY","numericLiteral","uid","typeAnnotation","variableDeclaration","variableDeclarator","transformedNode","slice","ensureBlock","path2","async","generator","set","blockStatement","bodyPath","arrowPath","arrowFunctionToExpression","ast","unshiftContainer","buildRest","restIndex","expression","restIndexImpure","restLength","referencesRest","bindingIdentifierEquals","outerBinding","memberExpressionOptimisationVisitor","Scope","Flow","isTypeCastExpression","Function","oldNoOptimise","noOptimise","ReferencedIdentifier","deopted","listKey","key","offset","isMemberExpression","object","grandparentPath","argsOptEligible","isAssignmentExpression","isLVal","isForXStatement","isUpdateExpression","isUnaryExpression","operator","isCallExpression","isNewExpression","callee","computed","isBaseType","candidates","cause","property","isSpreadElement","call","arguments","references","BindingIdentifier","getParamsCount","count","hasRest","isRestElement","optimiseIndexGetter","argsId","offsetLiteral","index","isNumericLiteral","value","binaryExpression","isPure","temp","generateUidIdentifierBasedOnNode","id","ARGUMENTS","OFFSET","INDEX","REF","replacedParentPath","offsetTestPath","valRes","evaluate","confident","optimiseLengthGetter","convertFunctionRest","restPath","needsIIFE","rest","pop","isPattern","pattern","declar","unshift","rename","paramsCount","argumentsNode","getBindingIdentifier","clonedArgsId","map","start","len","arrKey","arrLen","conditionalExpression","loop","ARRAY_KEY","ARRAY_LEN","START","ARRAY","KEY","LEN","target","getEarliestCommonAncestorFrom","getStatementParent","findParent","isLoop","isFunction","insertBefore","declare","api","options","assertVersion","assumption","loose","noNewArrows","visitor","isArrowFunctionExpression","some","allowInsertArrowWithRest","isFunctionExpression","convertedRest","convertedParams","crawl"],"mappings":"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"} | ||
| {"version":3,"file":"index.js","sources":["../src/shadow-utils.ts","../src/params.ts","../src/rest.ts","../src/index.ts"],"sourcesContent":["import { types as t } from \"@babel/core\";\nimport type { NodePath, Scope, Visitor } from \"@babel/core\";\n\ntype State = {\n needsOuterBinding: boolean;\n scope: Scope;\n};\n\nexport const iifeVisitor: Visitor<State> = {\n \"ReferencedIdentifier|BindingIdentifier\"(\n path: NodePath<t.Identifier>,\n state,\n ) {\n const { scope, node } = path;\n const { name } = node;\n\n if (\n name === \"eval\" ||\n (scope.getBinding(name) === state.scope.parent!.getBinding(name) &&\n state.scope.hasOwnBinding(name))\n ) {\n state.needsOuterBinding = true;\n path.stop();\n }\n },\n // type annotations don't use or introduce \"real\" bindings\n \"TypeAnnotation|TSTypeAnnotation|TypeParameterDeclaration|TSTypeParameterDeclaration\":\n (path: NodePath) => path.skip(),\n};\n\nexport function collectShadowedParamsNames(\n param: NodePath<t.Function[\"params\"][number]>,\n functionScope: Scope,\n shadowedParams: Set<string>,\n) {\n for (const name of Object.keys(param.getBindingIdentifiers())) {\n const constantViolations = functionScope.bindings[name]?.constantViolations;\n if (constantViolations) {\n for (const redeclarator of constantViolations) {\n const node = redeclarator.node;\n // If a constant violation is a var or a function declaration,\n // we first check to see if it's a var without an init.\n // If so, we remove that declarator.\n // Otherwise, we have to wrap it in an IIFE.\n switch (node.type) {\n case \"VariableDeclarator\": {\n if (node.init === null) {\n const declaration = redeclarator.parentPath;\n // The following uninitialized var declarators should not be removed\n // for (var x in {})\n // for (var x;;)\n if (\n !declaration.parentPath.isFor() ||\n declaration.parentPath.get(\"body\") === declaration\n ) {\n redeclarator.remove();\n break;\n }\n }\n\n shadowedParams.add(name);\n break;\n }\n case \"FunctionDeclaration\":\n shadowedParams.add(name);\n break;\n }\n }\n }\n }\n}\n\nexport function buildScopeIIFE(\n shadowedParams: Set<string>,\n body: t.BlockStatement,\n) {\n const args = [];\n const params = [];\n\n for (const name of shadowedParams) {\n // We create them twice; the other option is to use t.cloneNode\n args.push(t.identifier(name));\n params.push(t.identifier(name));\n }\n\n return t.returnStatement(\n t.callExpression(t.arrowFunctionExpression(params, body), args),\n );\n}\n","import { template, types as t, type NodePath } from \"@babel/core\";\n\nimport {\n iifeVisitor,\n collectShadowedParamsNames,\n buildScopeIIFE,\n} from \"./shadow-utils.ts\";\n\nconst buildDefaultParam = template.statement(`\n let VARIABLE_NAME =\n arguments.length > ARGUMENT_KEY && arguments[ARGUMENT_KEY] !== undefined ?\n arguments[ARGUMENT_KEY]\n :\n DEFAULT_VALUE;\n`);\n\nconst buildLooseDefaultParam = template.statement(`\n if (ASSIGNMENT_IDENTIFIER === UNDEFINED) {\n ASSIGNMENT_IDENTIFIER = DEFAULT_VALUE;\n }\n`);\n\nconst buildLooseDestructuredDefaultParam = template.statement(`\n let ASSIGNMENT_IDENTIFIER = PARAMETER_NAME === UNDEFINED ? DEFAULT_VALUE : PARAMETER_NAME ;\n`);\n\nconst buildSafeArgumentsAccess = template.statement(`\n let $0 = arguments.length > $1 ? arguments[$1] : undefined;\n`);\n\n// last 2 parameters are optional -- they are used by transform-object-rest-spread/src/index.js\nexport default function convertFunctionParams(\n path: NodePath<t.Function>,\n ignoreFunctionLength: boolean | void,\n shouldTransformParam?: (index: number) => boolean,\n replaceRestElement?: (\n path: NodePath<t.Function>,\n paramPath: NodePath<t.Function[\"params\"][number]>,\n transformedRestNodes: t.Statement[],\n ) => void,\n) {\n const params = path.get(\"params\");\n\n const isSimpleParameterList = params.every(param => param.isIdentifier());\n if (isSimpleParameterList) return false;\n\n const { node, scope } = path;\n\n const body: t.Statement[] = [];\n const shadowedParams = new Set<string>();\n\n for (const param of params) {\n collectShadowedParamsNames(param, scope, shadowedParams);\n }\n\n const state = {\n needsOuterBinding: false,\n scope,\n };\n if (shadowedParams.size === 0) {\n for (const param of params) {\n if (!param.isIdentifier()) param.traverse(iifeVisitor, state);\n if (state.needsOuterBinding) break;\n }\n }\n\n let firstOptionalIndex = null;\n\n for (let i = 0; i < params.length; i++) {\n const param = params[i];\n\n if (shouldTransformParam && !shouldTransformParam(i)) {\n continue;\n }\n const transformedRestNodes: t.Statement[] = [];\n if (replaceRestElement) {\n replaceRestElement(path, param, transformedRestNodes);\n }\n\n const paramIsAssignmentPattern = param.isAssignmentPattern();\n if (\n paramIsAssignmentPattern &&\n (ignoreFunctionLength || t.isMethod(node, { kind: \"set\" }))\n ) {\n const left = param.get(\"left\");\n const right = param.get(\"right\");\n\n const undefinedNode = t.buildUndefinedNode();\n\n if (left.isIdentifier()) {\n body.push(\n buildLooseDefaultParam({\n ASSIGNMENT_IDENTIFIER: t.cloneNode(left.node),\n DEFAULT_VALUE: right.node,\n UNDEFINED: undefinedNode,\n }),\n );\n param.replaceWith(left.node);\n } else if (left.isObjectPattern() || left.isArrayPattern()) {\n const paramName = scope.generateUidIdentifier();\n body.push(\n buildLooseDestructuredDefaultParam({\n ASSIGNMENT_IDENTIFIER: left.node,\n DEFAULT_VALUE: right.node,\n PARAMETER_NAME: t.cloneNode(paramName),\n UNDEFINED: undefinedNode,\n }),\n );\n param.replaceWith(paramName);\n }\n } else if (paramIsAssignmentPattern) {\n if (firstOptionalIndex === null) firstOptionalIndex = i;\n\n const left = param.get(\"left\");\n const right = param.get(\"right\");\n\n const defNode = buildDefaultParam({\n VARIABLE_NAME: left.node,\n DEFAULT_VALUE: right.node,\n ARGUMENT_KEY: t.numericLiteral(i),\n });\n body.push(defNode);\n } else if (firstOptionalIndex !== null) {\n const defNode = buildSafeArgumentsAccess([\n param.node,\n t.numericLiteral(i),\n ]);\n body.push(defNode);\n } else if (param.isObjectPattern() || param.isArrayPattern()) {\n const uid = path.scope.generateUidIdentifier(\"ref\");\n uid.typeAnnotation = param.node.typeAnnotation;\n\n const defNode = t.variableDeclaration(\"let\", [\n t.variableDeclarator(param.node, uid),\n ]);\n body.push(defNode);\n\n param.replaceWith(t.cloneNode(uid));\n }\n\n if (transformedRestNodes) {\n for (const transformedNode of transformedRestNodes) {\n body.push(transformedNode);\n }\n }\n }\n\n // we need to cut off all trailing parameters\n if (firstOptionalIndex !== null) {\n node.params = node.params.slice(0, firstOptionalIndex);\n }\n\n // ensure it's a block, useful for arrow functions\n path.ensureBlock();\n const path2 = path as NodePath<typeof path.node & { body: t.BlockStatement }>;\n\n const { async, generator } = node;\n if (generator || state.needsOuterBinding || shadowedParams.size > 0) {\n body.push(buildScopeIIFE(shadowedParams, path2.node.body));\n\n path.set(\"body\", t.blockStatement(body));\n\n // We inject an arrow and then transform it to a normal function, to be\n // sure that we correctly handle this and arguments.\n const bodyPath = path2.get(\"body.body\");\n const arrowPath = bodyPath[bodyPath.length - 1].get(\n \"argument.callee\",\n ) as NodePath<t.ArrowFunctionExpression>;\n\n // This is an IIFE, so we don't need to worry about the noNewArrows assumption\n arrowPath.arrowFunctionToExpression();\n\n arrowPath.node.generator = generator;\n arrowPath.node.async = async;\n\n node.generator = false;\n node.async = false;\n if (async && !generator) {\n // If the default value of a parameter throws, it must reject asynchronously.\n path2.node.body = template.statement.ast`{\n try {\n ${path2.node.body.body}\n } catch (e) {\n return Promise.reject(e);\n }\n }` as t.BlockStatement;\n }\n } else {\n path2.get(\"body\").unshiftContainer(\"body\", body);\n }\n\n return true;\n}\n","import { template, types as t } from \"@babel/core\";\nimport type { NodePath, Visitor } from \"@babel/core\";\n\nimport {\n iifeVisitor,\n collectShadowedParamsNames,\n buildScopeIIFE,\n} from \"./shadow-utils.ts\";\n\nconst buildRest = template.statement(`\n for (var LEN = ARGUMENTS.length,\n ARRAY = new Array(ARRAY_LEN),\n KEY = START;\n KEY < LEN;\n KEY++) {\n ARRAY[ARRAY_KEY] = ARGUMENTS[KEY];\n }\n`);\n\nconst restIndex = template.expression(`\n (INDEX < OFFSET || ARGUMENTS.length <= INDEX) ? undefined : ARGUMENTS[INDEX]\n`);\n\nconst restIndexImpure = template.expression(`\n REF = INDEX, (REF < OFFSET || ARGUMENTS.length <= REF) ? undefined : ARGUMENTS[REF]\n`);\n\nconst restLength = template.expression(`\n ARGUMENTS.length <= OFFSET ? 0 : ARGUMENTS.length - OFFSET\n`);\n\nfunction referencesRest(\n path: NodePath<t.Identifier | t.JSXIdentifier>,\n state: State,\n) {\n if (path.node.name === state.name) {\n // Check rest parameter is not shadowed by a binding in another scope.\n return path.scope.bindingIdentifierEquals(state.name, state.outerBinding);\n }\n\n return false;\n}\n\ntype Candidate = {\n cause: \"argSpread\" | \"indexGetter\" | \"lengthGetter\";\n path: NodePath<t.Identifier | t.JSXIdentifier>;\n};\n\ntype State = {\n references: NodePath<t.Identifier | t.JSXIdentifier>[];\n offset: number;\n\n argumentsNode: t.Identifier;\n outerBinding: t.Identifier;\n\n // candidate member expressions we could optimise if there are no other references\n candidates: Candidate[];\n\n // local rest binding name\n name: string;\n\n /*\n It may be possible to optimize the output code in certain ways, such as\n not generating code to initialize an array (perhaps substituting direct\n references to arguments[i] or arguments.length for reads of the\n corresponding rest parameter property) or positioning the initialization\n code so that it may not have to execute depending on runtime conditions.\n\n This property tracks eligibility for optimization. \"deopted\" means give up\n and don't perform optimization. For example, when any of rest's elements /\n properties is assigned to at the top level, or referenced at all in a\n nested function.\n */\n deopted: boolean;\n noOptimise?: boolean;\n};\n\nconst memberExpressionOptimisationVisitor: Visitor<State> = {\n Scope(path, state) {\n // check if this scope has a local binding that will shadow the rest parameter\n if (!path.scope.bindingIdentifierEquals(state.name, state.outerBinding)) {\n path.skip();\n }\n },\n\n Flow(path: NodePath<t.Flow>) {\n // Do not skip TypeCastExpressions as the contain valid non flow code\n if (path.isTypeCastExpression()) return;\n // don't touch reference in type annotations\n path.skip();\n },\n\n Function(path, state) {\n // Detect whether any reference to rest is contained in nested functions to\n // determine if deopt is necessary.\n const oldNoOptimise = state.noOptimise;\n state.noOptimise = true;\n path.traverse(memberExpressionOptimisationVisitor, state);\n state.noOptimise = oldNoOptimise;\n\n // Skip because optimizing references to rest would refer to the `arguments`\n // of the nested function.\n path.skip();\n },\n\n ReferencedIdentifier(path, state) {\n const { node } = path;\n\n // we can't guarantee the purity of arguments\n if (node.name === \"arguments\") {\n state.deopted = true;\n }\n\n // is this a referenced identifier and is it referencing the rest parameter?\n if (!referencesRest(path, state)) return;\n\n if (state.noOptimise) {\n state.deopted = true;\n } else {\n const { parentPath } = path;\n\n // Is this identifier the right hand side of a default parameter?\n if (\n parentPath.listKey === \"params\" &&\n (parentPath.key as number) < state.offset\n ) {\n return;\n }\n\n // ex: `args[0]`\n // ex: `args.whatever`\n if (parentPath.isMemberExpression({ object: node })) {\n const grandparentPath = parentPath.parentPath;\n\n const argsOptEligible =\n !state.deopted &&\n !(\n // ex: `args[0] = \"whatever\"`\n (\n (grandparentPath.isAssignmentExpression() &&\n parentPath.node === grandparentPath.node.left) || // ex: `[args[0]] = [\"whatever\"]`\n grandparentPath.isLVal() || // ex: `for (rest[0] in this)`\n // ex: `for (rest[0] of this)`\n grandparentPath.isForXStatement() || // ex: `++args[0]`\n // ex: `args[0]--`\n grandparentPath.isUpdateExpression() || // ex: `delete args[0]`\n grandparentPath.isUnaryExpression({ operator: \"delete\" }) || // ex: `args[0]()`\n // ex: `new args[0]()`\n // ex: `new args[0]`\n ((grandparentPath.isCallExpression() ||\n grandparentPath.isNewExpression()) &&\n parentPath.node === grandparentPath.node.callee)\n )\n );\n if (argsOptEligible) {\n if (parentPath.node.computed) {\n // if we know that this member expression is referencing a number then\n // we can safely optimise it\n if (parentPath.get(\"property\").isBaseType(\"number\")) {\n state.candidates.push({ cause: \"indexGetter\", path });\n return;\n }\n } else if (\n // @ts-expect-error .length must not be a private name\n parentPath.node.property.name === \"length\"\n ) {\n // args.length\n state.candidates.push({ cause: \"lengthGetter\", path });\n return;\n }\n }\n }\n\n // we can only do these optimizations if the rest variable would match\n // the arguments exactly\n // optimise single spread args in calls\n // ex: fn(...args)\n if (state.offset === 0 && parentPath.isSpreadElement()) {\n const call = parentPath.parentPath;\n if (call.isCallExpression() && call.node.arguments.length === 1) {\n state.candidates.push({ cause: \"argSpread\", path });\n return;\n }\n }\n\n state.references.push(path);\n }\n },\n\n /**\n * Deopt on use of a binding identifier with the same name as our rest param.\n *\n * See https://github.com/babel/babel/issues/2091\n */\n\n BindingIdentifier(path, state) {\n if (referencesRest(path, state)) {\n state.deopted = true;\n }\n },\n};\n\nfunction getParamsCount(node: t.Function) {\n let count = node.params.length;\n // skip the first parameter if it is a TypeScript 'this parameter'\n if (count > 0 && t.isIdentifier(node.params[0], { name: \"this\" })) {\n count -= 1;\n }\n return count;\n}\n\nfunction hasRest(node: t.Function) {\n const length = node.params.length;\n return length > 0 && t.isRestElement(node.params[length - 1]);\n}\n\nfunction optimiseIndexGetter(\n path: NodePath<t.Identifier | t.JSXIdentifier>,\n argsId: t.Identifier,\n offset: number,\n) {\n const offsetLiteral = t.numericLiteral(offset);\n let index;\n const parent = path.parent as t.MemberExpression;\n\n if (t.isNumericLiteral(parent.property)) {\n index = t.numericLiteral(parent.property.value + offset);\n } else if (offset === 0) {\n // Avoid unnecessary '+ 0'\n index = parent.property;\n } else {\n index = t.binaryExpression(\n \"+\",\n parent.property,\n t.cloneNode(offsetLiteral),\n );\n }\n\n const { scope, parentPath } = path;\n if (!scope.isPure(index)) {\n const temp = scope.generateUidIdentifierBasedOnNode(index);\n scope.push({ id: temp, kind: \"var\" });\n parentPath.replaceWith(\n restIndexImpure({\n ARGUMENTS: argsId,\n OFFSET: offsetLiteral,\n INDEX: index,\n REF: t.cloneNode(temp),\n }),\n );\n } else {\n parentPath.replaceWith(\n restIndex({\n ARGUMENTS: argsId,\n OFFSET: offsetLiteral,\n INDEX: index,\n }),\n );\n const replacedParentPath = parentPath as NodePath<t.ConditionalExpression>;\n\n // See if we can statically evaluate the first test (i.e. index < offset)\n // and optimize the AST accordingly.\n const offsetTestPath = replacedParentPath.get(\n \"test\",\n ) as NodePath<t.BinaryExpression>;\n const valRes = offsetTestPath.get(\"left\").evaluate();\n if (valRes.confident) {\n if (valRes.value === true) {\n replacedParentPath.replaceWith(t.buildUndefinedNode());\n } else {\n offsetTestPath.replaceWith(offsetTestPath.get(\"right\"));\n }\n }\n }\n}\n\nfunction optimiseLengthGetter(\n path: NodePath<t.Identifier | t.JSXIdentifier>,\n argsId: t.Identifier,\n offset: number,\n) {\n if (offset) {\n path.parentPath.replaceWith(\n restLength({\n ARGUMENTS: argsId,\n OFFSET: t.numericLiteral(offset),\n }),\n );\n } else {\n path.replaceWith(argsId);\n }\n}\n\nexport default function convertFunctionRest(path: NodePath<t.Function>) {\n const { node, scope } = path;\n if (!hasRest(node)) return false;\n\n const restPath = path.get(\n `params.${node.params.length - 1}.argument`,\n ) as NodePath<t.ArrayPattern | t.ObjectPattern | t.Identifier>;\n\n if (!restPath.isIdentifier()) {\n const shadowedParams = new Set<string>();\n collectShadowedParamsNames(restPath, path.scope, shadowedParams);\n\n let needsIIFE = shadowedParams.size > 0;\n if (!needsIIFE) {\n const state = {\n needsOuterBinding: false,\n scope,\n };\n restPath.traverse(iifeVisitor, state);\n needsIIFE = state.needsOuterBinding;\n }\n\n if (needsIIFE) {\n path.ensureBlock();\n path.set(\n \"body\",\n t.blockStatement([\n buildScopeIIFE(shadowedParams, path.node.body as t.BlockStatement),\n ]),\n );\n }\n }\n\n let rest = restPath.node;\n node.params.pop(); // This returns 'rest'\n\n if (t.isPattern(rest)) {\n const pattern = rest;\n rest = scope.generateUidIdentifier(\"ref\");\n\n const declar = t.variableDeclaration(\"let\", [\n t.variableDeclarator(pattern, rest),\n ]);\n path.ensureBlock();\n (node.body as t.BlockStatement).body.unshift(declar);\n } else if (rest.name === \"arguments\") {\n scope.rename(rest.name);\n }\n\n const argsId = t.identifier(\"arguments\");\n const paramsCount = getParamsCount(node);\n\n // check and optimise for extremely common cases\n const state: State = {\n references: [],\n offset: paramsCount,\n argumentsNode: argsId,\n outerBinding: scope.getBindingIdentifier(rest.name)!,\n candidates: [],\n name: rest.name,\n deopted: false,\n };\n\n path.traverse(memberExpressionOptimisationVisitor, state);\n\n // There are only \"shorthand\" references\n if (!state.deopted && !state.references.length) {\n for (const { path, cause } of state.candidates) {\n const clonedArgsId = t.cloneNode(argsId);\n switch (cause) {\n case \"indexGetter\":\n optimiseIndexGetter(path, clonedArgsId, state.offset);\n break;\n case \"lengthGetter\":\n optimiseLengthGetter(path, clonedArgsId, state.offset);\n break;\n default:\n path.replaceWith(clonedArgsId);\n }\n }\n return true;\n }\n\n state.references.push(...state.candidates.map(({ path }) => path));\n\n const start = t.numericLiteral(paramsCount);\n const key = scope.generateUidIdentifier(\"key\");\n const len = scope.generateUidIdentifier(\"len\");\n\n let arrKey, arrLen;\n if (paramsCount) {\n // this method has additional params, so we need to subtract\n // the index of the current argument position from the\n // position in the array that we want to populate\n arrKey = t.binaryExpression(\"-\", t.cloneNode(key), t.cloneNode(start));\n\n // we need to work out the size of the array that we're\n // going to store all the rest parameters\n //\n // we need to add a check to avoid constructing the array\n // with <0 if there are less arguments than params as it'll\n // cause an error\n arrLen = t.conditionalExpression(\n t.binaryExpression(\">\", t.cloneNode(len), t.cloneNode(start)),\n t.binaryExpression(\"-\", t.cloneNode(len), t.cloneNode(start)),\n t.numericLiteral(0),\n );\n } else {\n arrKey = t.identifier(key.name);\n arrLen = t.identifier(len.name);\n }\n\n const loop = buildRest({\n ARGUMENTS: argsId,\n ARRAY_KEY: arrKey,\n ARRAY_LEN: arrLen,\n START: start,\n ARRAY: rest,\n KEY: key,\n LEN: len,\n });\n\n if (state.deopted) {\n (node.body as t.BlockStatement).body.unshift(loop);\n } else {\n let target = path\n .getEarliestCommonAncestorFrom(state.references)\n .getStatementParent();\n\n // don't perform the allocation inside a loop\n target.findParent(path => {\n if (path.isLoop()) {\n target = path;\n } else {\n // Stop crawling up if this is a function.\n return path.isFunction();\n }\n return false;\n });\n\n target.insertBefore(loop);\n }\n\n return true;\n}\n","import { declare } from \"@babel/helper-plugin-utils\";\nimport convertFunctionParams from \"./params.ts\";\nimport convertFunctionRest from \"./rest.ts\";\nexport { convertFunctionParams };\n\nexport interface Options {\n /** @deprecated Use the `ignoreFunctionLength` assumption instead. */\n loose?: boolean;\n}\n\nexport default declare((api, options: Options) => {\n api.assertVersion(REQUIRED_VERSION(\"^7.0.0-0 || ^8.0.0\"));\n\n if (\"loose\" in options) {\n console.warn(\n \"@babel/plugin-transform-parameters: The 'loose' option has been deprecated, \" +\n \"use the `ignoreFunctionLength` assumption instead (https://babeljs.io/assumptions).\",\n );\n }\n\n const ignoreFunctionLength =\n api.assumption(\"ignoreFunctionLength\") ?? options.loose;\n // Todo(BABEL 8): Consider default it to false\n const noNewArrows = api.assumption(\"noNewArrows\") ?? true;\n\n return {\n name: \"transform-parameters\",\n\n visitor: {\n Function(path) {\n if (\n path.isArrowFunctionExpression() &&\n path\n .get(\"params\")\n .some(param => param.isRestElement() || param.isAssignmentPattern())\n ) {\n // default/rest visitors require access to `arguments`, so it cannot be an arrow\n path.arrowFunctionToExpression({\n allowInsertArrowWithRest: false,\n noNewArrows,\n });\n\n // In some cases arrowFunctionToExpression replaces the function with a wrapper.\n // Return early; the wrapped function will be visited later in the AST traversal.\n if (!path.isFunctionExpression()) return;\n }\n\n const convertedRest = convertFunctionRest(path);\n const convertedParams = convertFunctionParams(\n path,\n ignoreFunctionLength,\n );\n\n if (convertedRest || convertedParams) {\n // Manually reprocess this scope to ensure that the moved params are updated.\n path.scope.crawl();\n }\n },\n },\n };\n});\n"],"names":["iifeVisitor","ReferencedIdentifier|BindingIdentifier","path","state","scope","node","name","getBinding","parent","hasOwnBinding","needsOuterBinding","stop","skip","collectShadowedParamsNames","param","functionScope","shadowedParams","Object","keys","getBindingIdentifiers","constantViolations","bindings","redeclarator","type","init","declaration","parentPath","isFor","get","remove","add","buildScopeIIFE","body","args","params","push","t","identifier","returnStatement","callExpression","arrowFunctionExpression","buildDefaultParam","template","statement","buildLooseDefaultParam","buildLooseDestructuredDefaultParam","buildSafeArgumentsAccess","convertFunctionParams","ignoreFunctionLength","shouldTransformParam","replaceRestElement","isSimpleParameterList","every","isIdentifier","Set","size","traverse","firstOptionalIndex","i","length","transformedRestNodes","paramIsAssignmentPattern","isAssignmentPattern","isMethod","kind","left","right","undefinedNode","buildUndefinedNode","ASSIGNMENT_IDENTIFIER","cloneNode","DEFAULT_VALUE","UNDEFINED","replaceWith","isObjectPattern","isArrayPattern","paramName","generateUidIdentifier","PARAMETER_NAME","defNode","VARIABLE_NAME","ARGUMENT_KEY","numericLiteral","uid","typeAnnotation","variableDeclaration","variableDeclarator","transformedNode","slice","ensureBlock","path2","async","generator","set","blockStatement","bodyPath","arrowPath","arrowFunctionToExpression","ast","unshiftContainer","buildRest","restIndex","expression","restIndexImpure","restLength","referencesRest","bindingIdentifierEquals","outerBinding","memberExpressionOptimisationVisitor","Scope","Flow","isTypeCastExpression","Function","oldNoOptimise","noOptimise","ReferencedIdentifier","deopted","listKey","key","offset","isMemberExpression","object","grandparentPath","argsOptEligible","isAssignmentExpression","isLVal","isForXStatement","isUpdateExpression","isUnaryExpression","operator","isCallExpression","isNewExpression","callee","computed","isBaseType","candidates","cause","property","isSpreadElement","call","arguments","references","BindingIdentifier","getParamsCount","count","hasRest","isRestElement","optimiseIndexGetter","argsId","offsetLiteral","index","isNumericLiteral","value","binaryExpression","isPure","temp","generateUidIdentifierBasedOnNode","id","ARGUMENTS","OFFSET","INDEX","REF","replacedParentPath","offsetTestPath","valRes","evaluate","confident","optimiseLengthGetter","convertFunctionRest","restPath","needsIIFE","rest","pop","isPattern","pattern","declar","unshift","rename","paramsCount","argumentsNode","getBindingIdentifier","clonedArgsId","map","start","len","arrKey","arrLen","conditionalExpression","loop","ARRAY_KEY","ARRAY_LEN","START","ARRAY","KEY","LEN","target","getEarliestCommonAncestorFrom","getStatementParent","findParent","isLoop","isFunction","insertBefore","declare","api","options","assertVersion","console","warn","assumption","loose","noNewArrows","visitor","isArrowFunctionExpression","some","allowInsertArrowWithRest","isFunctionExpression","convertedRest","convertedParams","crawl"],"mappings":"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"} |
+6
-6
| { | ||
| "name": "@babel/plugin-transform-parameters", | ||
| "version": "8.0.0-rc.4", | ||
| "version": "8.0.0-rc.5", | ||
| "description": "Compile ES2015 default and rest parameters to ES5", | ||
@@ -17,3 +17,3 @@ "repository": { | ||
| "dependencies": { | ||
| "@babel/helper-plugin-utils": "^8.0.0-rc.4" | ||
| "@babel/helper-plugin-utils": "^8.0.0-rc.5" | ||
| }, | ||
@@ -24,10 +24,10 @@ "keywords": [ | ||
| "peerDependencies": { | ||
| "@babel/core": "^8.0.0-rc.4" | ||
| "@babel/core": "^8.0.0-rc.5" | ||
| }, | ||
| "devDependencies": { | ||
| "@babel/core": "^8.0.0-rc.4", | ||
| "@babel/helper-plugin-test-runner": "^8.0.0-rc.4" | ||
| "@babel/core": "^8.0.0-rc.5", | ||
| "@babel/helper-plugin-test-runner": "^8.0.0-rc.5" | ||
| }, | ||
| "engines": { | ||
| "node": "^20.19.0 || >=22.12.0" | ||
| "node": "^22.18.0 || >=24.11.0" | ||
| }, | ||
@@ -34,0 +34,0 @@ "author": "The Babel Team (https://babel.dev/team)", |
URL strings
Supply chain riskPackage contains fragments of external URLs or IP addresses, which the package may be accessing at runtime.
Found 1 instance in 1 package
64795
1.14%503
0.8%1
Infinity%