@babel/plugin-transform-destructuring
Advanced tools
+1
-1
| import * as _babel_core from '@babel/core'; | ||
| import { NodePath, types, Scope, File } from '@babel/core'; | ||
| import { types, Scope, File, NodePath } from '@babel/core'; | ||
@@ -4,0 +4,0 @@ declare function unshiftForXStatementBody(statementPath: NodePath<types.ForXStatement>, newStatements: types.Statement[]): void; |
+2
-2
@@ -225,3 +225,3 @@ import { declare } from '@babel/helper-plugin-utils'; | ||
| if (!types.isArrayExpression(arr)) return false; | ||
| if (pattern.elements.length > arr.elements.length) return; | ||
| if (pattern.elements.length > arr.elements.length) return false; | ||
| if (pattern.elements.length < arr.elements.length && !hasArrayRest(pattern)) { | ||
@@ -465,3 +465,3 @@ return false; | ||
| var index = declare((api, options) => { | ||
| api.assertVersion("^7.0.0-0 || ^8.0.0 || 8.0.0-rc.2"); | ||
| api.assertVersion("^7.0.0-0 || ^8.0.0 || 8.0.0-rc.3"); | ||
| const { | ||
@@ -468,0 +468,0 @@ useBuiltIns = false |
+1
-1
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"index.js","sources":["../src/util.ts","../src/index.ts"],"sourcesContent":["import { types as t, template } from \"@babel/core\";\nimport type { File, Scope, NodePath } from \"@babel/core\";\n\nfunction isPureVoid(node: t.Node) {\n return (\n t.isUnaryExpression(node) &&\n node.operator === \"void\" &&\n t.isPureish(node.argument)\n );\n}\n\nexport function unshiftForXStatementBody(\n statementPath: NodePath<t.ForXStatement>,\n newStatements: t.Statement[],\n) {\n statementPath.ensureBlock();\n const { scope, node } = statementPath;\n const bodyScopeBindings = statementPath.get(\"body\").scope.bindings;\n const hasShadowedBlockScopedBindings = Object.keys(bodyScopeBindings).some(\n name => scope.hasBinding(name),\n );\n\n if (hasShadowedBlockScopedBindings) {\n // handle shadowed variables referenced in computed keys:\n // var a = 0;for (const { #x: x, [a++]: y } of z) { const a = 1; }\n node.body = t.blockStatement([...newStatements, node.body]);\n } else {\n (node.body as t.BlockStatement).body.unshift(...newStatements);\n }\n}\n\n/**\n * Test if an ArrayPattern's elements contain any RestElements.\n */\n\nfunction hasArrayRest(pattern: t.ArrayPattern) {\n return pattern.elements.some(elem => t.isRestElement(elem));\n}\n\n/**\n * Test if an ObjectPattern's properties contain any RestElements.\n */\n\nfunction hasObjectRest(pattern: t.ObjectPattern) {\n return pattern.properties.some(prop => t.isRestElement(prop));\n}\n\ninterface UnpackableArrayExpression extends t.ArrayExpression {\n elements: (null | t.Expression)[];\n}\n\nconst STOP_TRAVERSAL = {};\n\ninterface ArrayUnpackVisitorState {\n deopt: boolean;\n bindings: Record<string, t.Identifier>;\n}\n\n// NOTE: This visitor is meant to be used via t.traverse\nconst arrayUnpackVisitor = (\n node: t.Node,\n ancestors: t.TraversalAncestors,\n state: ArrayUnpackVisitorState,\n) => {\n if (!ancestors.length) {\n // Top-level node: this is the array literal.\n return;\n }\n\n if (\n t.isIdentifier(node) &&\n t.isReferenced(node, ancestors[ancestors.length - 1].node) &&\n state.bindings[node.name]\n ) {\n state.deopt = true;\n // eslint-disable-next-line @typescript-eslint/only-throw-error\n throw STOP_TRAVERSAL;\n }\n};\n\nexport type DestructuringTransformerNode =\n | t.VariableDeclaration\n | t.ExpressionStatement\n | t.ReturnStatement;\n\n// using/await using declaration must not contain pattern as its id.\nexport type VariableDeclarationKindAllowsPattern = Exclude<\n t.VariableDeclaration[\"kind\"],\n \"using\" | \"await using\"\n>;\n\ninterface DestructuringTransformerOption {\n blockHoist?: number;\n operator?: t.AssignmentExpression[\"operator\"];\n nodes?: DestructuringTransformerNode[];\n kind?: VariableDeclarationKindAllowsPattern;\n scope: Scope;\n arrayLikeIsIterable: boolean;\n iterableIsArray: boolean;\n objectRestNoSymbols: boolean;\n useBuiltIns: boolean;\n addHelper: File[\"addHelper\"];\n}\nexport class DestructuringTransformer {\n private blockHoist: number;\n private operator: t.AssignmentExpression[\"operator\"];\n arrayRefSet: Set<string>;\n private nodes: DestructuringTransformerNode[];\n private scope: Scope;\n private kind: VariableDeclarationKindAllowsPattern;\n private iterableIsArray: boolean;\n private arrayLikeIsIterable: boolean;\n private objectRestNoSymbols: boolean;\n private useBuiltIns: boolean;\n private addHelper: File[\"addHelper\"];\n constructor(opts: DestructuringTransformerOption) {\n this.blockHoist = opts.blockHoist;\n this.operator = opts.operator;\n this.arrayRefSet = new Set();\n this.nodes = opts.nodes || [];\n this.scope = opts.scope;\n this.kind = opts.kind;\n this.iterableIsArray = opts.iterableIsArray;\n this.arrayLikeIsIterable = opts.arrayLikeIsIterable;\n this.objectRestNoSymbols = opts.objectRestNoSymbols;\n this.useBuiltIns = opts.useBuiltIns;\n this.addHelper = opts.addHelper;\n }\n\n getExtendsHelper() {\n return this.useBuiltIns\n ? t.memberExpression(t.identifier(\"Object\"), t.identifier(\"assign\"))\n : this.addHelper(\"extends\");\n }\n\n buildVariableAssignment(\n id: t.AssignmentExpression[\"left\"],\n init: t.Expression,\n ) {\n let op = this.operator;\n if (t.isMemberExpression(id) || t.isOptionalMemberExpression(id)) op = \"=\";\n\n let node: t.ExpressionStatement | t.VariableDeclaration;\n\n if (op) {\n node = t.expressionStatement(\n t.assignmentExpression(\n op,\n id,\n t.cloneNode(init) || this.scope.buildUndefinedNode(),\n ),\n );\n } else {\n let nodeInit: t.Expression;\n\n if (this.kind === \"const\" && init === null) {\n nodeInit = this.scope.buildUndefinedNode();\n } else {\n nodeInit = t.cloneNode(init);\n }\n\n node = t.variableDeclaration(this.kind, [\n t.variableDeclarator(\n id as t.Identifier | t.ArrayPattern | t.ObjectPattern,\n nodeInit,\n ),\n ]);\n }\n\n //@ts-expect-error(todo): document block hoist property\n node._blockHoist = this.blockHoist;\n\n return node;\n }\n\n buildVariableDeclaration(id: t.Identifier, init: t.Expression) {\n const declar = t.variableDeclaration(\"var\", [\n t.variableDeclarator(t.cloneNode(id), t.cloneNode(init)),\n ]);\n // @ts-expect-error todo(flow->ts): avoid mutations\n declar._blockHoist = this.blockHoist;\n return declar;\n }\n\n push(id: t.LVal | t.PatternLike, _init: t.Expression | null) {\n const init = t.cloneNode(_init);\n if (t.isObjectPattern(id)) {\n this.pushObjectPattern(id, init);\n } else if (t.isArrayPattern(id)) {\n this.pushArrayPattern(id, init);\n } else if (t.isAssignmentPattern(id)) {\n this.pushAssignmentPattern(id, init);\n } else {\n this.nodes.push(\n this.buildVariableAssignment(\n id as t.AssignmentExpression[\"left\"],\n init,\n ),\n );\n }\n }\n\n toArray(node: t.Expression, count?: false | number) {\n if (\n this.iterableIsArray ||\n (t.isIdentifier(node) && this.arrayRefSet.has(node.name))\n ) {\n return node;\n } else {\n const { scope, arrayLikeIsIterable } = this;\n\n if (t.isIdentifier(node)) {\n const binding = scope.getBinding(node.name);\n if (binding?.constant && binding.path.isGenericType(\"Array\")) {\n return node;\n }\n }\n\n if (t.isArrayExpression(node)) {\n return node;\n }\n\n if (t.isIdentifier(node, { name: \"arguments\" })) {\n return template.expression.ast`\n Array.prototype.slice.call(${node})\n `;\n }\n\n let helperName;\n const args = [node];\n if (typeof count === \"number\") {\n args.push(t.numericLiteral(count));\n\n // Used in array-rest to create an array from a subset of an iterable.\n helperName = \"slicedToArray\";\n // TODO if (this.hub.isLoose(\"es6.forOf\")) helperName += \"-loose\";\n } else {\n // Used in array-rest to create an array\n helperName = \"toArray\";\n }\n\n if (arrayLikeIsIterable) {\n args.unshift(scope.path.hub.addHelper(helperName));\n helperName = \"maybeArrayLike\";\n }\n\n return t.callExpression(scope.path.hub.addHelper(helperName), args);\n }\n }\n\n pushAssignmentPattern(\n { left, right }: t.AssignmentPattern,\n valueRef: t.Expression | null,\n ) {\n // handle array init with void 0. This also happens when\n // the value was originally a hole.\n // const [x = 42] = [void 0,];\n // -> const x = 42;\n if (isPureVoid(valueRef)) {\n this.push(left, right);\n return;\n }\n\n // we need to assign the current value of the assignment to avoid evaluating\n // it more than once\n const tempId = this.scope.generateUidIdentifierBasedOnNode(valueRef);\n\n this.nodes.push(this.buildVariableDeclaration(tempId, valueRef));\n\n const tempConditional = t.conditionalExpression(\n t.binaryExpression(\n \"===\",\n t.cloneNode(tempId),\n this.scope.buildUndefinedNode(),\n ),\n right,\n t.cloneNode(tempId),\n );\n\n if (t.isPattern(left)) {\n let patternId;\n let node;\n\n if (this.kind === \"const\" || this.kind === \"let\") {\n patternId = this.scope.generateUidIdentifier(tempId.name);\n node = this.buildVariableDeclaration(patternId, tempConditional);\n } else {\n patternId = tempId;\n\n node = t.expressionStatement(\n t.assignmentExpression(\"=\", t.cloneNode(tempId), tempConditional),\n );\n }\n\n this.nodes.push(node);\n this.push(left, patternId);\n } else {\n this.nodes.push(this.buildVariableAssignment(left, tempConditional));\n }\n }\n\n pushObjectRest(\n pattern: t.ObjectPattern,\n objRef: t.Expression,\n spreadProp: t.RestElement,\n spreadPropIndex: number,\n ) {\n const value = buildObjectExcludingKeys(\n pattern.properties.slice(0, spreadPropIndex) as t.ObjectProperty[],\n objRef,\n this.scope,\n name => this.addHelper(name),\n this.objectRestNoSymbols,\n this.useBuiltIns,\n );\n this.nodes.push(this.buildVariableAssignment(spreadProp.argument, value));\n }\n\n pushObjectProperty(prop: t.ObjectProperty, propRef: t.Expression) {\n if (t.isLiteral(prop.key)) prop.computed = true;\n\n const pattern = prop.value as t.AssignmentExpression[\"left\"];\n const objRef = t.memberExpression(\n t.cloneNode(propRef),\n prop.key,\n prop.computed,\n );\n\n if (t.isPattern(pattern)) {\n this.push(pattern, objRef);\n } else {\n this.nodes.push(this.buildVariableAssignment(pattern, objRef));\n }\n }\n\n pushObjectPattern(pattern: t.ObjectPattern, objRef: t.Expression) {\n // https://github.com/babel/babel/issues/681\n\n if (!pattern.properties.length) {\n this.nodes.push(\n t.expressionStatement(\n t.callExpression(\n this.addHelper(\"objectDestructuringEmpty\"),\n isPureVoid(objRef) ? [] : [objRef],\n ),\n ),\n );\n return;\n }\n\n // if we have more than one properties in this pattern and the objectRef is a\n // member expression then we need to assign it to a temporary variable so it's\n // only evaluated once\n\n if (pattern.properties.length > 1 && !this.scope.isStatic(objRef)) {\n const temp = this.scope.generateUidIdentifierBasedOnNode(objRef);\n this.nodes.push(this.buildVariableDeclaration(temp, objRef));\n objRef = temp;\n }\n\n // Replace impure computed key expressions if we have a rest parameter\n if (hasObjectRest(pattern)) {\n let copiedPattern: t.ObjectPattern;\n for (let i = 0; i < pattern.properties.length; i++) {\n const prop = pattern.properties[i];\n if (t.isRestElement(prop)) {\n break;\n }\n const key = prop.key;\n if (prop.computed && !this.scope.isPure(key)) {\n const name = this.scope.generateUidIdentifierBasedOnNode(key);\n this.nodes.push(\n //@ts-expect-error PrivateName has been handled by destructuring-private\n this.buildVariableDeclaration(name, key),\n );\n if (!copiedPattern) {\n copiedPattern = pattern = {\n ...pattern,\n properties: pattern.properties.slice(),\n };\n }\n copiedPattern.properties[i] = {\n ...prop,\n key: name,\n };\n }\n }\n }\n\n for (let i = 0; i < pattern.properties.length; i++) {\n const prop = pattern.properties[i];\n if (t.isRestElement(prop)) {\n this.pushObjectRest(pattern, objRef, prop, i);\n } else {\n this.pushObjectProperty(prop, objRef);\n }\n }\n }\n\n canUnpackArrayPattern(\n pattern: t.ArrayPattern,\n arr: t.Expression,\n ): arr is UnpackableArrayExpression {\n // not an array so there's no way we can deal with this\n if (!t.isArrayExpression(arr)) return false;\n\n // pattern has less elements than the array and doesn't have a rest so some\n // elements won't be evaluated\n if (pattern.elements.length > arr.elements.length) return;\n if (\n pattern.elements.length < arr.elements.length &&\n !hasArrayRest(pattern)\n ) {\n return false;\n }\n\n for (const elem of pattern.elements) {\n // deopt on holes\n if (!elem) return false;\n\n // deopt on member expressions as they may be included in the RHS\n if (t.isMemberExpression(elem)) return false;\n }\n\n for (const elem of arr.elements) {\n // deopt on spread elements\n if (t.isSpreadElement(elem)) return false;\n\n // deopt call expressions as they might change values of LHS variables\n if (t.isCallExpression(elem)) return false;\n\n // deopt on member expressions as they may be getter/setters and have side-effects\n if (t.isMemberExpression(elem)) return false;\n }\n\n // deopt on reference to left side identifiers\n const bindings = t.getBindingIdentifiers(pattern);\n const state: ArrayUnpackVisitorState = { deopt: false, bindings };\n\n try {\n t.traverse(arr, arrayUnpackVisitor, state);\n } catch (e) {\n if (e !== STOP_TRAVERSAL) throw e;\n }\n\n return !state.deopt;\n }\n\n pushUnpackedArrayPattern(\n pattern: t.ArrayPattern,\n arr: UnpackableArrayExpression,\n ) {\n const holeToUndefined = (el: t.Expression) =>\n el ?? this.scope.buildUndefinedNode();\n\n for (let i = 0; i < pattern.elements.length; i++) {\n const elem = pattern.elements[i];\n if (t.isRestElement(elem)) {\n this.push(\n elem.argument,\n t.arrayExpression(arr.elements.slice(i).map(holeToUndefined)),\n );\n } else {\n this.push(elem, holeToUndefined(arr.elements[i]));\n }\n }\n }\n\n pushArrayPattern(pattern: t.ArrayPattern, arrayRef: t.Expression | null) {\n if (arrayRef === null) {\n this.nodes.push(\n t.expressionStatement(\n t.callExpression(this.addHelper(\"objectDestructuringEmpty\"), []),\n ),\n );\n return;\n }\n if (!pattern.elements) return;\n\n // optimise basic array destructuring of an array expression\n //\n // we can't do this to a pattern of unequal size to it's right hand\n // array expression as then there will be values that won't be evaluated\n //\n // eg: let [a, b] = [1, 2];\n\n if (this.canUnpackArrayPattern(pattern, arrayRef)) {\n this.pushUnpackedArrayPattern(pattern, arrayRef);\n return;\n }\n\n // if we have a rest then we need all the elements so don't tell\n // `scope.toArray` to only get a certain amount\n\n const count = !hasArrayRest(pattern) && pattern.elements.length;\n\n // so we need to ensure that the `arrayRef` is an array, `scope.toArray` will\n // return a locally bound identifier if it's been inferred to be an array,\n // otherwise it'll be a call to a helper that will ensure it's one\n\n const toArray = this.toArray(arrayRef, count);\n\n if (t.isIdentifier(toArray)) {\n // we've been given an identifier so it must have been inferred to be an\n // array\n arrayRef = toArray;\n } else {\n arrayRef = this.scope.generateUidIdentifierBasedOnNode(arrayRef);\n this.arrayRefSet.add(arrayRef.name);\n this.nodes.push(this.buildVariableDeclaration(arrayRef, toArray));\n }\n\n for (let i = 0; i < pattern.elements.length; i++) {\n const elem = pattern.elements[i];\n\n // hole\n if (!elem) continue;\n\n if (t.isRestElement(elem)) {\n // set the element to the rest element argument since we've dealt with it\n // being a rest already\n this.push(\n elem.argument,\n t.callExpression(\n t.memberExpression(\n t.callExpression(\n this.scope.path.hub.addHelper(\"arrayLikeToArray\"),\n [arrayRef],\n ),\n t.identifier(\"slice\"),\n ),\n [t.numericLiteral(i)],\n ),\n );\n } else {\n this.push(\n elem,\n t.memberExpression(arrayRef, t.numericLiteral(i), true),\n );\n }\n }\n }\n\n init(pattern: t.LVal, ref: t.Expression) {\n // trying to destructure a value that we can't evaluate more than once so we\n // need to save it to a variable\n\n if (!t.isArrayExpression(ref) && !t.isMemberExpression(ref)) {\n const memo = this.scope.maybeGenerateMemoised(ref, true);\n if (memo) {\n this.nodes.push(this.buildVariableDeclaration(memo, t.cloneNode(ref)));\n ref = memo;\n }\n }\n\n this.push(pattern, ref);\n\n return this.nodes;\n }\n}\n\ninterface ExcludingKey {\n key: t.Expression | t.PrivateName;\n computed: boolean;\n}\n\nexport function buildObjectExcludingKeys<T extends ExcludingKey>(\n excludedKeys: T[],\n objRef: t.Expression,\n scope: Scope,\n addHelper: File[\"addHelper\"],\n objectRestNoSymbols: boolean,\n useBuiltIns: boolean,\n): t.CallExpression {\n // get all the keys that appear in this object before the current spread\n\n const keys = [];\n let allLiteral = true;\n let hasTemplateLiteral = false;\n for (let i = 0; i < excludedKeys.length; i++) {\n const prop = excludedKeys[i];\n const key = prop.key;\n if (t.isIdentifier(key) && !prop.computed) {\n keys.push(t.stringLiteral(key.name));\n } else if (t.isTemplateLiteral(key)) {\n keys.push(t.cloneNode(key));\n hasTemplateLiteral = true;\n } else if (t.isLiteral(key)) {\n // @ts-expect-error todo(flow->ts) NullLiteral\n keys.push(t.stringLiteral(String(key.value)));\n } else if (t.isPrivateName(key)) {\n // private key is not enumerable\n } else {\n keys.push(t.cloneNode(key));\n allLiteral = false;\n }\n }\n\n let value;\n if (keys.length === 0) {\n const extendsHelper = useBuiltIns\n ? t.memberExpression(t.identifier(\"Object\"), t.identifier(\"assign\"))\n : addHelper(\"extends\");\n value = t.callExpression(extendsHelper, [\n t.objectExpression([]),\n t.sequenceExpression([\n t.callExpression(addHelper(\"objectDestructuringEmpty\"), [\n t.cloneNode(objRef),\n ]),\n t.cloneNode(objRef),\n ]),\n ]);\n } else {\n let keyExpression: t.Expression = t.arrayExpression(keys);\n\n if (!allLiteral) {\n keyExpression = t.callExpression(\n t.memberExpression(keyExpression, t.identifier(\"map\")),\n [addHelper(\"toPropertyKey\")],\n );\n } else if (!hasTemplateLiteral && !t.isProgram(scope.block)) {\n // Hoist definition of excluded keys, so that it's not created each time.\n const programScope = scope.getProgramParent();\n const id = programScope.generateUidIdentifier(\"excluded\");\n\n programScope.push({\n id,\n init: keyExpression,\n kind: \"const\",\n });\n\n keyExpression = t.cloneNode(id);\n }\n\n value = t.callExpression(\n addHelper(`objectWithoutProperties${objectRestNoSymbols ? \"Loose\" : \"\"}`),\n [t.cloneNode(objRef), keyExpression],\n );\n }\n return value;\n}\n\nexport function convertVariableDeclaration(\n path: NodePath<t.VariableDeclaration>,\n addHelper: File[\"addHelper\"],\n arrayLikeIsIterable: boolean,\n iterableIsArray: boolean,\n objectRestNoSymbols: boolean,\n useBuiltIns: boolean,\n) {\n const { node, scope } = path;\n\n const nodeKind = node.kind;\n const nodeLoc = node.loc;\n const nodes = [];\n\n for (let i = 0; i < node.declarations.length; i++) {\n const declar = node.declarations[i];\n\n const patternId = declar.init;\n const pattern = declar.id;\n\n const destructuring: DestructuringTransformer =\n new DestructuringTransformer({\n // @ts-expect-error(todo): avoid internal properties access\n blockHoist: node._blockHoist,\n nodes: nodes,\n scope: scope,\n kind: node.kind as VariableDeclarationKindAllowsPattern,\n iterableIsArray,\n arrayLikeIsIterable,\n useBuiltIns,\n objectRestNoSymbols,\n addHelper,\n });\n\n if (t.isPattern(pattern)) {\n // variableDeclarationHasDestructuringPattern ensures that the pattern is not a VoidPattern\n destructuring.init(pattern as Exclude<t.LVal, t.VoidPattern>, patternId);\n\n if (+i !== node.declarations.length - 1) {\n // we aren't the last declarator so let's just make the\n // last transformed node inherit from us\n t.inherits(nodes[nodes.length - 1], declar);\n }\n } else {\n nodes.push(\n t.inherits(\n destructuring.buildVariableAssignment(pattern, patternId),\n declar,\n ),\n );\n }\n }\n\n let tail: t.VariableDeclaration | null = null;\n let nodesOut = [];\n for (const node of nodes) {\n if (t.isVariableDeclaration(node)) {\n if (tail !== null) {\n // Create a single compound declarations\n tail.declarations.push(...node.declarations);\n continue;\n } else {\n // Make sure the original node kind is used for each compound declaration\n node.kind = nodeKind;\n tail = node;\n }\n } else {\n tail = null;\n }\n // Propagate the original declaration node's location\n if (!node.loc) {\n node.loc = nodeLoc;\n }\n nodesOut.push(node);\n }\n\n if (\n nodesOut.length === 2 &&\n t.isVariableDeclaration(nodesOut[0]) &&\n t.isExpressionStatement(nodesOut[1]) &&\n t.isCallExpression(nodesOut[1].expression) &&\n nodesOut[0].declarations.length === 1\n ) {\n // This can only happen when we generate this code:\n // var _ref = DESTRUCTURED_VALUE;\n // babelHelpers.objectDestructuringEmpty(_ref);\n // Since pushing those two statements to the for loop .init will require an IIFE,\n // we can optimize them to\n // babelHelpers.objectDestructuringEmpty(DESTRUCTURED_VALUE);\n const expr = nodesOut[1].expression;\n expr.arguments = [nodesOut[0].declarations[0].init];\n nodesOut = [expr];\n } else {\n // We must keep nodes all are expressions or statements, so `replaceWithMultiple` can work.\n if (\n t.isForStatement(path.parent, { init: node }) &&\n !nodesOut.some(v => t.isVariableDeclaration(v))\n ) {\n for (let i = 0; i < nodesOut.length; i++) {\n const node: t.Node = nodesOut[i];\n if (t.isExpressionStatement(node)) {\n nodesOut[i] = node.expression;\n }\n }\n }\n }\n\n if (nodesOut.length === 1) {\n path.replaceWith(nodesOut[0]);\n } else {\n path.replaceWithMultiple(nodesOut);\n }\n scope.crawl();\n}\n\nexport function convertAssignmentExpression(\n path: NodePath<t.AssignmentExpression & { left: t.Pattern }>,\n addHelper: File[\"addHelper\"],\n arrayLikeIsIterable: boolean,\n iterableIsArray: boolean,\n objectRestNoSymbols: boolean,\n useBuiltIns: boolean,\n) {\n const { node, scope, parentPath } = path;\n\n const nodes: DestructuringTransformerNode[] = [];\n\n const destructuring = new DestructuringTransformer({\n operator: node.operator,\n scope: scope,\n nodes: nodes,\n arrayLikeIsIterable,\n iterableIsArray,\n objectRestNoSymbols,\n useBuiltIns,\n addHelper,\n });\n\n let ref: t.Identifier | void;\n if (\n (!parentPath.isExpressionStatement() &&\n !parentPath.isSequenceExpression()) ||\n path.isCompletionRecord()\n ) {\n ref = scope.generateUidIdentifierBasedOnNode(node.right, \"ref\");\n\n nodes.push(\n t.variableDeclaration(\"var\", [t.variableDeclarator(ref, node.right)]),\n );\n\n if (t.isArrayExpression(node.right)) {\n destructuring.arrayRefSet.add(ref.name);\n }\n }\n\n destructuring.init(node.left, ref || node.right);\n\n if (ref) {\n if (parentPath.isArrowFunctionExpression()) {\n path.replaceWith(t.blockStatement([]));\n nodes.push(t.returnStatement(t.cloneNode(ref)));\n } else {\n nodes.push(t.expressionStatement(t.cloneNode(ref)));\n }\n }\n\n path.replaceWithMultiple(nodes);\n scope.crawl();\n}\n","import { declare } from \"@babel/helper-plugin-utils\";\nimport { types as t, type NodePath } from \"@babel/core\";\nimport {\n DestructuringTransformer,\n convertVariableDeclaration,\n convertAssignmentExpression,\n unshiftForXStatementBody,\n type DestructuringTransformerNode,\n type VariableDeclarationKindAllowsPattern,\n} from \"./util.ts\";\nexport { buildObjectExcludingKeys, unshiftForXStatementBody } from \"./util.ts\";\n\n/**\n * Test if a VariableDeclaration's declarations contains any destructuring patterns.\n * @param node VariableDeclaration node to test\n */\nfunction variableDeclarationHasDestructuringPattern(\n node: t.VariableDeclaration,\n) {\n for (const declar of node.declarations) {\n if (t.isPattern(declar.id) && declar.id.type !== \"VoidPattern\") {\n return true;\n }\n }\n return false;\n}\n\nexport interface Options {\n allowArrayLike?: boolean;\n loose?: boolean;\n useBuiltIns?: boolean;\n}\n\nexport default declare((api, options: Options) => {\n api.assertVersion(REQUIRED_VERSION(7));\n\n const { useBuiltIns = false } = options;\n\n const iterableIsArray =\n api.assumption(\"iterableIsArray\") ?? options.loose ?? false;\n const arrayLikeIsIterable =\n options.allowArrayLike ?? api.assumption(\"arrayLikeIsIterable\") ?? false;\n const objectRestNoSymbols =\n api.assumption(\"objectRestNoSymbols\") ?? options.loose ?? false;\n\n return {\n name: \"transform-destructuring\",\n\n visitor: {\n ExportNamedDeclaration(path) {\n const declaration = path.get(\"declaration\");\n if (!declaration.isVariableDeclaration()) return;\n if (!variableDeclarationHasDestructuringPattern(declaration.node))\n return;\n\n // Split the declaration and export list into two declarations so that the variable\n // declaration can be split up later without needing to worry about not being a\n // top-level statement.\n\n path.splitExportDeclaration();\n },\n ForXStatement(path: NodePath<t.ForXStatement>) {\n const { node, scope } = path;\n const left = node.left;\n\n if (t.isPattern(left)) {\n // for ({ length: k } in { abc: 3 });\n\n const temp = scope.generateUidIdentifier(\"ref\");\n\n node.left = t.variableDeclaration(\"var\", [\n t.variableDeclarator(temp),\n ]);\n\n path.ensureBlock();\n const statementBody = (path.node.body as t.BlockStatement).body;\n const nodes = [];\n // todo: the completion of a for statement can only be observed from\n // a do block (or eval that we don't support),\n // but the new do-expression proposal plans to ban iteration ends in the\n // do block, maybe we can get rid of this\n if (statementBody.length === 0 && path.isCompletionRecord()) {\n nodes.unshift(t.expressionStatement(scope.buildUndefinedNode()));\n }\n\n nodes.unshift(\n t.expressionStatement(\n t.assignmentExpression(\"=\", left, t.cloneNode(temp)),\n ),\n );\n\n unshiftForXStatementBody(path, nodes);\n scope.crawl();\n return;\n }\n\n if (!t.isVariableDeclaration(left)) return;\n\n const pattern = left.declarations[0].id;\n if (!t.isPattern(pattern) || pattern.type === \"VoidPattern\") return;\n\n const key = scope.generateUidIdentifier(\"ref\");\n node.left = t.variableDeclaration(left.kind, [\n t.variableDeclarator(key, null),\n ]);\n\n const nodes: DestructuringTransformerNode[] = [];\n\n const destructuring = new DestructuringTransformer({\n kind: left.kind as VariableDeclarationKindAllowsPattern,\n scope: scope,\n nodes: nodes,\n arrayLikeIsIterable,\n iterableIsArray,\n objectRestNoSymbols,\n useBuiltIns,\n addHelper: name => this.addHelper(name),\n });\n\n destructuring.init(pattern, key);\n\n unshiftForXStatementBody(path, nodes);\n scope.crawl();\n },\n\n CatchClause({ node, scope }) {\n const pattern = node.param;\n if (!t.isPattern(pattern)) return;\n\n const ref = scope.generateUidIdentifier(\"ref\");\n node.param = ref;\n\n const nodes: DestructuringTransformerNode[] = [];\n\n const destructuring = new DestructuringTransformer({\n kind: \"let\",\n scope: scope,\n nodes: nodes,\n arrayLikeIsIterable,\n iterableIsArray,\n objectRestNoSymbols,\n useBuiltIns,\n addHelper: name => this.addHelper(name),\n });\n destructuring.init(pattern, ref);\n\n node.body.body = [...nodes, ...node.body.body];\n scope.crawl();\n },\n\n AssignmentExpression(path, state) {\n if (!t.isPattern(path.node.left)) return;\n convertAssignmentExpression(\n path as NodePath<t.AssignmentExpression & { left: t.Pattern }>,\n name => state.addHelper(name),\n arrayLikeIsIterable,\n iterableIsArray,\n objectRestNoSymbols,\n useBuiltIns,\n );\n },\n\n VariableDeclaration(path, state) {\n const { node, parent } = path;\n if (t.isForXStatement(parent)) return;\n if (!parent || !path.container) return; // i don't know why this is necessary - TODO\n if (!variableDeclarationHasDestructuringPattern(node)) return;\n convertVariableDeclaration(\n path,\n name => state.addHelper(name),\n arrayLikeIsIterable,\n iterableIsArray,\n objectRestNoSymbols,\n useBuiltIns,\n );\n },\n },\n };\n});\n"],"names":["isPureVoid","node","t","isUnaryExpression","operator","isPureish","argument","unshiftForXStatementBody","statementPath","newStatements","ensureBlock","scope","bodyScopeBindings","get","bindings","hasShadowedBlockScopedBindings","Object","keys","some","name","hasBinding","body","blockStatement","unshift","hasArrayRest","pattern","elements","elem","isRestElement","hasObjectRest","properties","prop","STOP_TRAVERSAL","arrayUnpackVisitor","ancestors","state","length","isIdentifier","isReferenced","deopt","DestructuringTransformer","blockHoist","arrayRefSet","nodes","kind","iterableIsArray","arrayLikeIsIterable","objectRestNoSymbols","useBuiltIns","addHelper","constructor","opts","Set","getExtendsHelper","memberExpression","identifier","buildVariableAssignment","id","init","op","isMemberExpression","isOptionalMemberExpression","expressionStatement","assignmentExpression","cloneNode","buildUndefinedNode","nodeInit","variableDeclaration","variableDeclarator","_blockHoist","buildVariableDeclaration","declar","push","_init","isObjectPattern","pushObjectPattern","isArrayPattern","pushArrayPattern","isAssignmentPattern","pushAssignmentPattern","toArray","count","has","binding","getBinding","constant","path","isGenericType","isArrayExpression","template","expression","ast","helperName","args","numericLiteral","hub","callExpression","left","right","valueRef","tempId","generateUidIdentifierBasedOnNode","tempConditional","conditionalExpression","binaryExpression","isPattern","patternId","generateUidIdentifier","pushObjectRest","objRef","spreadProp","spreadPropIndex","value","buildObjectExcludingKeys","slice","pushObjectProperty","propRef","isLiteral","key","computed","isStatic","temp","copiedPattern","i","isPure","canUnpackArrayPattern","arr","isSpreadElement","isCallExpression","getBindingIdentifiers","traverse","e","pushUnpackedArrayPattern","holeToUndefined","el","arrayExpression","map","arrayRef","add","ref","memo","maybeGenerateMemoised","excludedKeys","allLiteral","hasTemplateLiteral","stringLiteral","isTemplateLiteral","String","isPrivateName","extendsHelper","objectExpression","sequenceExpression","keyExpression","isProgram","block","programScope","getProgramParent","convertVariableDeclaration","nodeKind","nodeLoc","loc","declarations","destructuring","inherits","tail","nodesOut","isVariableDeclaration","isExpressionStatement","expr","arguments","isForStatement","parent","v","replaceWith","replaceWithMultiple","crawl","convertAssignmentExpression","parentPath","isSequenceExpression","isCompletionRecord","isArrowFunctionExpression","returnStatement","variableDeclarationHasDestructuringPattern","type","declare","api","options","assertVersion","assumption","loose","allowArrayLike","visitor","ExportNamedDeclaration","declaration","splitExportDeclaration","ForXStatement","statementBody","CatchClause","param","AssignmentExpression","VariableDeclaration","isForXStatement","container"],"mappings":"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"} | ||
| {"version":3,"file":"index.js","sources":["../src/util.ts","../src/index.ts"],"sourcesContent":["import { types as t, template } from \"@babel/core\";\nimport type { File, Scope, NodePath } from \"@babel/core\";\n\nfunction isPureVoid(node: t.Node) {\n return (\n t.isUnaryExpression(node) &&\n node.operator === \"void\" &&\n t.isPureish(node.argument)\n );\n}\n\nexport function unshiftForXStatementBody(\n statementPath: NodePath<t.ForXStatement>,\n newStatements: t.Statement[],\n) {\n statementPath.ensureBlock();\n const { scope, node } = statementPath;\n const bodyScopeBindings = statementPath.get(\"body\").scope.bindings;\n const hasShadowedBlockScopedBindings = Object.keys(bodyScopeBindings).some(\n name => scope.hasBinding(name),\n );\n\n if (hasShadowedBlockScopedBindings) {\n // handle shadowed variables referenced in computed keys:\n // var a = 0;for (const { #x: x, [a++]: y } of z) { const a = 1; }\n node.body = t.blockStatement([...newStatements, node.body]);\n } else {\n (node.body as t.BlockStatement).body.unshift(...newStatements);\n }\n}\n\n/**\n * Test if an ArrayPattern's elements contain any RestElements.\n */\n\nfunction hasArrayRest(pattern: t.ArrayPattern) {\n return pattern.elements.some(elem => t.isRestElement(elem));\n}\n\n/**\n * Test if an ObjectPattern's properties contain any RestElements.\n */\n\nfunction hasObjectRest(pattern: t.ObjectPattern) {\n return pattern.properties.some(prop => t.isRestElement(prop));\n}\n\ninterface UnpackableArrayExpression extends t.ArrayExpression {\n elements: (null | t.Expression)[];\n}\n\nconst STOP_TRAVERSAL = {};\n\ninterface ArrayUnpackVisitorState {\n deopt: boolean;\n bindings: Record<string, t.Identifier>;\n}\n\n// NOTE: This visitor is meant to be used via t.traverse\nconst arrayUnpackVisitor = (\n node: t.Node,\n ancestors: t.TraversalAncestors,\n state: ArrayUnpackVisitorState,\n) => {\n if (!ancestors.length) {\n // Top-level node: this is the array literal.\n return;\n }\n\n if (\n t.isIdentifier(node) &&\n t.isReferenced(node, ancestors[ancestors.length - 1].node) &&\n state.bindings[node.name]\n ) {\n state.deopt = true;\n // eslint-disable-next-line @typescript-eslint/only-throw-error\n throw STOP_TRAVERSAL;\n }\n};\n\nexport type DestructuringTransformerNode =\n | t.VariableDeclaration\n | t.ExpressionStatement\n | t.ReturnStatement;\n\n// using/await using declaration must not contain pattern as its id.\nexport type VariableDeclarationKindAllowsPattern = Exclude<\n t.VariableDeclaration[\"kind\"],\n \"using\" | \"await using\"\n>;\n\ninterface DestructuringTransformerOption {\n blockHoist?: number;\n operator?: t.AssignmentExpression[\"operator\"];\n nodes?: DestructuringTransformerNode[];\n kind?: VariableDeclarationKindAllowsPattern;\n scope: Scope;\n arrayLikeIsIterable: boolean;\n iterableIsArray: boolean;\n objectRestNoSymbols: boolean;\n useBuiltIns: boolean;\n addHelper: File[\"addHelper\"];\n}\nexport class DestructuringTransformer {\n private blockHoist: number | undefined;\n private operator: t.AssignmentExpression[\"operator\"] | undefined;\n arrayRefSet: Set<string>;\n private nodes: DestructuringTransformerNode[];\n private scope: Scope;\n private kind: VariableDeclarationKindAllowsPattern | undefined;\n private iterableIsArray: boolean;\n private arrayLikeIsIterable: boolean;\n private objectRestNoSymbols: boolean;\n private useBuiltIns: boolean;\n private addHelper: File[\"addHelper\"];\n constructor(opts: DestructuringTransformerOption) {\n this.blockHoist = opts.blockHoist;\n this.operator = opts.operator;\n this.arrayRefSet = new Set();\n this.nodes = opts.nodes || [];\n this.scope = opts.scope;\n this.kind = opts.kind;\n this.iterableIsArray = opts.iterableIsArray;\n this.arrayLikeIsIterable = opts.arrayLikeIsIterable;\n this.objectRestNoSymbols = opts.objectRestNoSymbols;\n this.useBuiltIns = opts.useBuiltIns;\n this.addHelper = opts.addHelper;\n }\n\n getExtendsHelper() {\n return this.useBuiltIns\n ? t.memberExpression(t.identifier(\"Object\"), t.identifier(\"assign\"))\n : this.addHelper(\"extends\");\n }\n\n buildVariableAssignment(\n id: t.AssignmentExpression[\"left\"],\n init: t.Expression,\n ) {\n let op = this.operator;\n if (t.isMemberExpression(id) || t.isOptionalMemberExpression(id)) op = \"=\";\n\n let node: t.ExpressionStatement | t.VariableDeclaration;\n\n if (op) {\n node = t.expressionStatement(\n t.assignmentExpression(\n op,\n id,\n t.cloneNode(init) || this.scope.buildUndefinedNode(),\n ),\n );\n } else {\n let nodeInit: t.Expression;\n\n if (this.kind === \"const\" && init === null) {\n nodeInit = this.scope.buildUndefinedNode();\n } else {\n nodeInit = t.cloneNode(init);\n }\n\n node = t.variableDeclaration(this.kind!, [\n t.variableDeclarator(\n id as t.Identifier | t.ArrayPattern | t.ObjectPattern,\n nodeInit,\n ),\n ]);\n }\n\n //@ts-expect-error(todo): document block hoist property\n node._blockHoist = this.blockHoist;\n\n return node;\n }\n\n buildVariableDeclaration(id: t.Identifier, init: t.Expression) {\n const declar = t.variableDeclaration(\"var\", [\n t.variableDeclarator(t.cloneNode(id), t.cloneNode(init)),\n ]);\n // @ts-expect-error todo(flow->ts): avoid mutations\n declar._blockHoist = this.blockHoist;\n return declar;\n }\n\n push(id: t.LVal | t.PatternLike | null, _init: t.Expression) {\n const init = t.cloneNode(_init);\n if (t.isObjectPattern(id)) {\n this.pushObjectPattern(id, init);\n } else if (t.isArrayPattern(id)) {\n this.pushArrayPattern(id, init);\n } else if (t.isAssignmentPattern(id)) {\n this.pushAssignmentPattern(id, init);\n } else {\n this.nodes.push(\n this.buildVariableAssignment(\n id as t.AssignmentExpression[\"left\"],\n init,\n ),\n );\n }\n }\n\n toArray(node: t.Expression, count?: false | number) {\n if (\n this.iterableIsArray ||\n (t.isIdentifier(node) && this.arrayRefSet.has(node.name))\n ) {\n return node;\n } else {\n const { scope, arrayLikeIsIterable } = this;\n\n if (t.isIdentifier(node)) {\n const binding = scope.getBinding(node.name);\n if (binding?.constant && binding.path.isGenericType(\"Array\")) {\n return node;\n }\n }\n\n if (t.isArrayExpression(node)) {\n return node;\n }\n\n if (t.isIdentifier(node, { name: \"arguments\" })) {\n return template.expression.ast`\n Array.prototype.slice.call(${node})\n `;\n }\n\n let helperName;\n const args = [node];\n if (typeof count === \"number\") {\n args.push(t.numericLiteral(count));\n\n // Used in array-rest to create an array from a subset of an iterable.\n helperName = \"slicedToArray\";\n // TODO if (this.hub.isLoose(\"es6.forOf\")) helperName += \"-loose\";\n } else {\n // Used in array-rest to create an array\n helperName = \"toArray\";\n }\n\n if (arrayLikeIsIterable) {\n args.unshift(scope.path.hub.addHelper(helperName));\n helperName = \"maybeArrayLike\";\n }\n\n return t.callExpression(scope.path.hub.addHelper(helperName), args);\n }\n }\n\n pushAssignmentPattern(\n { left, right }: t.AssignmentPattern,\n valueRef: t.Expression,\n ) {\n // handle array init with void 0. This also happens when\n // the value was originally a hole.\n // const [x = 42] = [void 0,];\n // -> const x = 42;\n if (isPureVoid(valueRef)) {\n this.push(left, right);\n return;\n }\n\n // we need to assign the current value of the assignment to avoid evaluating\n // it more than once\n const tempId = this.scope.generateUidIdentifierBasedOnNode(valueRef);\n\n this.nodes.push(this.buildVariableDeclaration(tempId, valueRef));\n\n const tempConditional = t.conditionalExpression(\n t.binaryExpression(\n \"===\",\n t.cloneNode(tempId),\n this.scope.buildUndefinedNode(),\n ),\n right,\n t.cloneNode(tempId),\n );\n\n if (t.isPattern(left)) {\n let patternId;\n let node;\n\n if (this.kind === \"const\" || this.kind === \"let\") {\n patternId = this.scope.generateUidIdentifier(tempId.name);\n node = this.buildVariableDeclaration(patternId, tempConditional);\n } else {\n patternId = tempId;\n\n node = t.expressionStatement(\n t.assignmentExpression(\"=\", t.cloneNode(tempId), tempConditional),\n );\n }\n\n this.nodes.push(node);\n this.push(left, patternId);\n } else {\n this.nodes.push(this.buildVariableAssignment(left, tempConditional));\n }\n }\n\n pushObjectRest(\n pattern: t.ObjectPattern,\n objRef: t.Expression,\n spreadProp: t.RestElement,\n spreadPropIndex: number,\n ) {\n const value = buildObjectExcludingKeys(\n pattern.properties.slice(0, spreadPropIndex) as t.ObjectProperty[],\n objRef,\n this.scope,\n name => this.addHelper(name),\n this.objectRestNoSymbols,\n this.useBuiltIns,\n );\n this.nodes.push(this.buildVariableAssignment(spreadProp.argument, value));\n }\n\n pushObjectProperty(prop: t.ObjectProperty, propRef: t.Expression) {\n if (t.isLiteral(prop.key)) prop.computed = true;\n\n const pattern = prop.value as t.AssignmentExpression[\"left\"];\n const objRef = t.memberExpression(\n t.cloneNode(propRef),\n prop.key,\n prop.computed,\n );\n\n if (t.isPattern(pattern)) {\n this.push(pattern, objRef);\n } else {\n this.nodes.push(this.buildVariableAssignment(pattern, objRef));\n }\n }\n\n pushObjectPattern(pattern: t.ObjectPattern, objRef: t.Expression) {\n // https://github.com/babel/babel/issues/681\n\n if (!pattern.properties.length) {\n this.nodes.push(\n t.expressionStatement(\n t.callExpression(\n this.addHelper(\"objectDestructuringEmpty\"),\n isPureVoid(objRef) ? [] : [objRef],\n ),\n ),\n );\n return;\n }\n\n // if we have more than one properties in this pattern and the objectRef is a\n // member expression then we need to assign it to a temporary variable so it's\n // only evaluated once\n\n if (pattern.properties.length > 1 && !this.scope.isStatic(objRef)) {\n const temp = this.scope.generateUidIdentifierBasedOnNode(objRef);\n this.nodes.push(this.buildVariableDeclaration(temp, objRef));\n objRef = temp;\n }\n\n // Replace impure computed key expressions if we have a rest parameter\n if (hasObjectRest(pattern)) {\n let copiedPattern: t.ObjectPattern | undefined;\n for (let i = 0; i < pattern.properties.length; i++) {\n const prop = pattern.properties[i];\n if (t.isRestElement(prop)) {\n break;\n }\n const key = prop.key;\n if (prop.computed && !this.scope.isPure(key)) {\n const name = this.scope.generateUidIdentifierBasedOnNode(key);\n this.nodes.push(\n //@ts-expect-error PrivateName has been handled by destructuring-private\n this.buildVariableDeclaration(name, key),\n );\n if (!copiedPattern) {\n copiedPattern = pattern = {\n ...pattern,\n properties: pattern.properties.slice(),\n };\n }\n copiedPattern.properties[i] = {\n ...prop,\n key: name,\n };\n }\n }\n }\n\n for (let i = 0; i < pattern.properties.length; i++) {\n const prop = pattern.properties[i];\n if (t.isRestElement(prop)) {\n this.pushObjectRest(pattern, objRef, prop, i);\n } else {\n this.pushObjectProperty(prop, objRef);\n }\n }\n }\n\n canUnpackArrayPattern(\n pattern: t.ArrayPattern,\n arr: t.Expression,\n ): arr is UnpackableArrayExpression {\n // not an array so there's no way we can deal with this\n if (!t.isArrayExpression(arr)) return false;\n\n // pattern has less elements than the array and doesn't have a rest so some\n // elements won't be evaluated\n if (pattern.elements.length > arr.elements.length) return false;\n if (\n pattern.elements.length < arr.elements.length &&\n !hasArrayRest(pattern)\n ) {\n return false;\n }\n\n for (const elem of pattern.elements) {\n // deopt on holes\n if (!elem) return false;\n\n // deopt on member expressions as they may be included in the RHS\n if (t.isMemberExpression(elem)) return false;\n }\n\n for (const elem of arr.elements) {\n // deopt on spread elements\n if (t.isSpreadElement(elem)) return false;\n\n // deopt call expressions as they might change values of LHS variables\n if (t.isCallExpression(elem)) return false;\n\n // deopt on member expressions as they may be getter/setters and have side-effects\n if (t.isMemberExpression(elem)) return false;\n }\n\n // deopt on reference to left side identifiers\n const bindings = t.getBindingIdentifiers(pattern);\n const state: ArrayUnpackVisitorState = { deopt: false, bindings };\n\n try {\n t.traverse(arr, arrayUnpackVisitor, state);\n } catch (e) {\n if (e !== STOP_TRAVERSAL) throw e;\n }\n\n return !state.deopt;\n }\n\n pushUnpackedArrayPattern(\n pattern: t.ArrayPattern,\n arr: UnpackableArrayExpression,\n ) {\n const holeToUndefined = (el: t.Expression | null) =>\n el ?? this.scope.buildUndefinedNode();\n\n for (let i = 0; i < pattern.elements.length; i++) {\n const elem = pattern.elements[i];\n if (t.isRestElement(elem)) {\n this.push(\n elem.argument,\n t.arrayExpression(arr.elements.slice(i).map(holeToUndefined)),\n );\n } else {\n this.push(elem, holeToUndefined(arr.elements[i]));\n }\n }\n }\n\n pushArrayPattern(pattern: t.ArrayPattern, arrayRef: t.Expression | null) {\n if (arrayRef === null) {\n this.nodes.push(\n t.expressionStatement(\n t.callExpression(this.addHelper(\"objectDestructuringEmpty\"), []),\n ),\n );\n return;\n }\n if (!pattern.elements) return;\n\n // optimise basic array destructuring of an array expression\n //\n // we can't do this to a pattern of unequal size to it's right hand\n // array expression as then there will be values that won't be evaluated\n //\n // eg: let [a, b] = [1, 2];\n\n if (this.canUnpackArrayPattern(pattern, arrayRef)) {\n this.pushUnpackedArrayPattern(pattern, arrayRef);\n return;\n }\n\n // if we have a rest then we need all the elements so don't tell\n // `scope.toArray` to only get a certain amount\n\n const count = !hasArrayRest(pattern) && pattern.elements.length;\n\n // so we need to ensure that the `arrayRef` is an array, `scope.toArray` will\n // return a locally bound identifier if it's been inferred to be an array,\n // otherwise it'll be a call to a helper that will ensure it's one\n\n const toArray = this.toArray(arrayRef, count);\n\n if (t.isIdentifier(toArray)) {\n // we've been given an identifier so it must have been inferred to be an\n // array\n arrayRef = toArray;\n } else {\n arrayRef = this.scope.generateUidIdentifierBasedOnNode(arrayRef);\n this.arrayRefSet.add(arrayRef.name);\n this.nodes.push(this.buildVariableDeclaration(arrayRef, toArray));\n }\n\n for (let i = 0; i < pattern.elements.length; i++) {\n const elem = pattern.elements[i];\n\n // hole\n if (!elem) continue;\n\n if (t.isRestElement(elem)) {\n // set the element to the rest element argument since we've dealt with it\n // being a rest already\n this.push(\n elem.argument,\n t.callExpression(\n t.memberExpression(\n t.callExpression(\n this.scope.path.hub.addHelper(\"arrayLikeToArray\"),\n [arrayRef],\n ),\n t.identifier(\"slice\"),\n ),\n [t.numericLiteral(i)],\n ),\n );\n } else {\n this.push(\n elem,\n t.memberExpression(arrayRef, t.numericLiteral(i), true),\n );\n }\n }\n }\n\n init(pattern: t.LVal, ref: t.Expression) {\n // trying to destructure a value that we can't evaluate more than once so we\n // need to save it to a variable\n\n if (!t.isArrayExpression(ref) && !t.isMemberExpression(ref)) {\n const memo = this.scope.maybeGenerateMemoised(ref, true);\n if (memo) {\n this.nodes.push(this.buildVariableDeclaration(memo, t.cloneNode(ref)));\n ref = memo;\n }\n }\n\n this.push(pattern, ref);\n\n return this.nodes;\n }\n}\n\ninterface ExcludingKey {\n key: t.Expression | t.PrivateName;\n computed: boolean;\n}\n\nexport function buildObjectExcludingKeys<T extends ExcludingKey>(\n excludedKeys: T[],\n objRef: t.Expression,\n scope: Scope,\n addHelper: File[\"addHelper\"],\n objectRestNoSymbols: boolean,\n useBuiltIns: boolean,\n): t.CallExpression {\n // get all the keys that appear in this object before the current spread\n\n const keys = [];\n let allLiteral = true;\n let hasTemplateLiteral = false;\n for (let i = 0; i < excludedKeys.length; i++) {\n const prop = excludedKeys[i];\n const key = prop.key;\n if (t.isIdentifier(key) && !prop.computed) {\n keys.push(t.stringLiteral(key.name));\n } else if (t.isTemplateLiteral(key)) {\n keys.push(t.cloneNode(key));\n hasTemplateLiteral = true;\n } else if (t.isLiteral(key)) {\n // @ts-expect-error todo(flow->ts) NullLiteral\n keys.push(t.stringLiteral(String(key.value)));\n } else if (t.isPrivateName(key)) {\n // private key is not enumerable\n } else {\n keys.push(t.cloneNode(key));\n allLiteral = false;\n }\n }\n\n let value;\n if (keys.length === 0) {\n const extendsHelper = useBuiltIns\n ? t.memberExpression(t.identifier(\"Object\"), t.identifier(\"assign\"))\n : addHelper(\"extends\");\n value = t.callExpression(extendsHelper, [\n t.objectExpression([]),\n t.sequenceExpression([\n t.callExpression(addHelper(\"objectDestructuringEmpty\"), [\n t.cloneNode(objRef),\n ]),\n t.cloneNode(objRef),\n ]),\n ]);\n } else {\n let keyExpression: t.Expression = t.arrayExpression(keys);\n\n if (!allLiteral) {\n keyExpression = t.callExpression(\n t.memberExpression(keyExpression, t.identifier(\"map\")),\n [addHelper(\"toPropertyKey\")],\n );\n } else if (!hasTemplateLiteral && !t.isProgram(scope.block)) {\n // Hoist definition of excluded keys, so that it's not created each time.\n const programScope = scope.getProgramParent();\n const id = programScope.generateUidIdentifier(\"excluded\");\n\n programScope.push({\n id,\n init: keyExpression,\n kind: \"const\",\n });\n\n keyExpression = t.cloneNode(id);\n }\n\n value = t.callExpression(\n addHelper(`objectWithoutProperties${objectRestNoSymbols ? \"Loose\" : \"\"}`),\n [t.cloneNode(objRef), keyExpression],\n );\n }\n return value;\n}\n\nexport function convertVariableDeclaration(\n path: NodePath<t.VariableDeclaration>,\n addHelper: File[\"addHelper\"],\n arrayLikeIsIterable: boolean,\n iterableIsArray: boolean,\n objectRestNoSymbols: boolean,\n useBuiltIns: boolean,\n) {\n const { node, scope } = path;\n\n const nodeKind = node.kind;\n const nodeLoc = node.loc;\n const nodes = [];\n\n for (let i = 0; i < node.declarations.length; i++) {\n const declar = node.declarations[i];\n\n const patternId = declar.init!;\n const pattern = declar.id;\n\n const destructuring: DestructuringTransformer =\n new DestructuringTransformer({\n // @ts-expect-error(todo): avoid internal properties access\n blockHoist: node._blockHoist,\n nodes: nodes,\n scope: scope,\n kind: node.kind as VariableDeclarationKindAllowsPattern,\n iterableIsArray,\n arrayLikeIsIterable,\n useBuiltIns,\n objectRestNoSymbols,\n addHelper,\n });\n\n if (t.isPattern(pattern)) {\n // variableDeclarationHasDestructuringPattern ensures that the pattern is not a VoidPattern\n destructuring.init(pattern as Exclude<t.LVal, t.VoidPattern>, patternId);\n\n if (+i !== node.declarations.length - 1) {\n // we aren't the last declarator so let's just make the\n // last transformed node inherit from us\n t.inherits(nodes[nodes.length - 1], declar);\n }\n } else {\n nodes.push(\n t.inherits(\n destructuring.buildVariableAssignment(pattern, patternId),\n declar,\n ),\n );\n }\n }\n\n let tail: t.VariableDeclaration | null = null;\n let nodesOut = [];\n for (const node of nodes) {\n if (t.isVariableDeclaration(node)) {\n if (tail !== null) {\n // Create a single compound declarations\n tail.declarations.push(...node.declarations);\n continue;\n } else {\n // Make sure the original node kind is used for each compound declaration\n node.kind = nodeKind;\n tail = node;\n }\n } else {\n tail = null;\n }\n // Propagate the original declaration node's location\n if (!node.loc) {\n node.loc = nodeLoc;\n }\n nodesOut.push(node);\n }\n\n if (\n nodesOut.length === 2 &&\n t.isVariableDeclaration(nodesOut[0]) &&\n t.isExpressionStatement(nodesOut[1]) &&\n t.isCallExpression(nodesOut[1].expression) &&\n nodesOut[0].declarations.length === 1\n ) {\n // This can only happen when we generate this code:\n // var _ref = DESTRUCTURED_VALUE;\n // babelHelpers.objectDestructuringEmpty(_ref);\n // Since pushing those two statements to the for loop .init will require an IIFE,\n // we can optimize them to\n // babelHelpers.objectDestructuringEmpty(DESTRUCTURED_VALUE);\n const expr = nodesOut[1].expression;\n expr.arguments = [nodesOut[0].declarations[0].init!];\n nodesOut = [expr];\n } else {\n // We must keep nodes all are expressions or statements, so `replaceWithMultiple` can work.\n if (\n t.isForStatement(path.parent, { init: node }) &&\n !nodesOut.some(v => t.isVariableDeclaration(v))\n ) {\n for (let i = 0; i < nodesOut.length; i++) {\n const node: t.Node = nodesOut[i];\n if (t.isExpressionStatement(node)) {\n nodesOut[i] = node.expression;\n }\n }\n }\n }\n\n if (nodesOut.length === 1) {\n path.replaceWith(nodesOut[0]);\n } else {\n path.replaceWithMultiple(nodesOut);\n }\n scope.crawl();\n}\n\nexport function convertAssignmentExpression(\n path: NodePath<t.AssignmentExpression & { left: t.Pattern }>,\n addHelper: File[\"addHelper\"],\n arrayLikeIsIterable: boolean,\n iterableIsArray: boolean,\n objectRestNoSymbols: boolean,\n useBuiltIns: boolean,\n) {\n const { node, scope, parentPath } = path;\n\n const nodes: DestructuringTransformerNode[] = [];\n\n const destructuring = new DestructuringTransformer({\n operator: node.operator,\n scope: scope,\n nodes: nodes,\n arrayLikeIsIterable,\n iterableIsArray,\n objectRestNoSymbols,\n useBuiltIns,\n addHelper,\n });\n\n let ref: t.Identifier | undefined;\n if (\n (!parentPath.isExpressionStatement() &&\n !parentPath.isSequenceExpression()) ||\n path.isCompletionRecord()\n ) {\n ref = scope.generateUidIdentifierBasedOnNode(node.right, \"ref\");\n\n nodes.push(\n t.variableDeclaration(\"var\", [t.variableDeclarator(ref, node.right)]),\n );\n\n if (t.isArrayExpression(node.right)) {\n destructuring.arrayRefSet.add(ref.name);\n }\n }\n\n destructuring.init(node.left, ref || node.right);\n\n if (ref) {\n if (parentPath.isArrowFunctionExpression()) {\n path.replaceWith(t.blockStatement([]));\n nodes.push(t.returnStatement(t.cloneNode(ref)));\n } else {\n nodes.push(t.expressionStatement(t.cloneNode(ref)));\n }\n }\n\n path.replaceWithMultiple(nodes);\n scope.crawl();\n}\n","import { declare } from \"@babel/helper-plugin-utils\";\nimport { types as t, type NodePath } from \"@babel/core\";\nimport {\n DestructuringTransformer,\n convertVariableDeclaration,\n convertAssignmentExpression,\n unshiftForXStatementBody,\n type DestructuringTransformerNode,\n type VariableDeclarationKindAllowsPattern,\n} from \"./util.ts\";\nexport { buildObjectExcludingKeys, unshiftForXStatementBody } from \"./util.ts\";\n\n/**\n * Test if a VariableDeclaration's declarations contains any destructuring patterns.\n * @param node VariableDeclaration node to test\n */\nfunction variableDeclarationHasDestructuringPattern(\n node: t.VariableDeclaration,\n) {\n for (const declar of node.declarations) {\n if (t.isPattern(declar.id) && declar.id.type !== \"VoidPattern\") {\n return true;\n }\n }\n return false;\n}\n\nexport interface Options {\n allowArrayLike?: boolean;\n loose?: boolean;\n useBuiltIns?: boolean;\n}\n\nexport default declare((api, options: Options) => {\n api.assertVersion(REQUIRED_VERSION(7));\n\n const { useBuiltIns = false } = options;\n\n const iterableIsArray =\n api.assumption(\"iterableIsArray\") ?? options.loose ?? false;\n const arrayLikeIsIterable =\n options.allowArrayLike ?? api.assumption(\"arrayLikeIsIterable\") ?? false;\n const objectRestNoSymbols =\n api.assumption(\"objectRestNoSymbols\") ?? options.loose ?? false;\n\n return {\n name: \"transform-destructuring\",\n\n visitor: {\n ExportNamedDeclaration(path) {\n const declaration = path.get(\"declaration\");\n if (!declaration.isVariableDeclaration()) return;\n if (!variableDeclarationHasDestructuringPattern(declaration.node))\n return;\n\n // Split the declaration and export list into two declarations so that the variable\n // declaration can be split up later without needing to worry about not being a\n // top-level statement.\n\n path.splitExportDeclaration();\n },\n ForXStatement(path: NodePath<t.ForXStatement>) {\n const { node, scope } = path;\n const left = node.left;\n\n if (t.isPattern(left)) {\n // for ({ length: k } in { abc: 3 });\n\n const temp = scope.generateUidIdentifier(\"ref\");\n\n node.left = t.variableDeclaration(\"var\", [\n t.variableDeclarator(temp),\n ]);\n\n path.ensureBlock();\n const statementBody = (path.node.body as t.BlockStatement).body;\n const nodes = [];\n // todo: the completion of a for statement can only be observed from\n // a do block (or eval that we don't support),\n // but the new do-expression proposal plans to ban iteration ends in the\n // do block, maybe we can get rid of this\n if (statementBody.length === 0 && path.isCompletionRecord()) {\n nodes.unshift(t.expressionStatement(scope.buildUndefinedNode()));\n }\n\n nodes.unshift(\n t.expressionStatement(\n t.assignmentExpression(\"=\", left, t.cloneNode(temp)),\n ),\n );\n\n unshiftForXStatementBody(path, nodes);\n scope.crawl();\n return;\n }\n\n if (!t.isVariableDeclaration(left)) return;\n\n const pattern = left.declarations[0].id;\n if (!t.isPattern(pattern) || pattern.type === \"VoidPattern\") return;\n\n const key = scope.generateUidIdentifier(\"ref\");\n node.left = t.variableDeclaration(left.kind, [\n t.variableDeclarator(key, null),\n ]);\n\n const nodes: DestructuringTransformerNode[] = [];\n\n const destructuring = new DestructuringTransformer({\n kind: left.kind as VariableDeclarationKindAllowsPattern,\n scope: scope,\n nodes: nodes,\n arrayLikeIsIterable,\n iterableIsArray,\n objectRestNoSymbols,\n useBuiltIns,\n addHelper: name => this.addHelper(name),\n });\n\n destructuring.init(pattern, key);\n\n unshiftForXStatementBody(path, nodes);\n scope.crawl();\n },\n\n CatchClause({ node, scope }) {\n const pattern = node.param;\n if (!t.isPattern(pattern)) return;\n\n const ref = scope.generateUidIdentifier(\"ref\");\n node.param = ref;\n\n const nodes: DestructuringTransformerNode[] = [];\n\n const destructuring = new DestructuringTransformer({\n kind: \"let\",\n scope: scope,\n nodes: nodes,\n arrayLikeIsIterable,\n iterableIsArray,\n objectRestNoSymbols,\n useBuiltIns,\n addHelper: name => this.addHelper(name),\n });\n destructuring.init(pattern, ref);\n\n node.body.body = [...nodes, ...node.body.body];\n scope.crawl();\n },\n\n AssignmentExpression(path, state) {\n if (!t.isPattern(path.node.left)) return;\n convertAssignmentExpression(\n path as NodePath<t.AssignmentExpression & { left: t.Pattern }>,\n name => state.addHelper(name),\n arrayLikeIsIterable,\n iterableIsArray,\n objectRestNoSymbols,\n useBuiltIns,\n );\n },\n\n VariableDeclaration(path, state) {\n const { node, parent } = path;\n if (t.isForXStatement(parent)) return;\n if (!parent || !path.container) return; // i don't know why this is necessary - TODO\n if (!variableDeclarationHasDestructuringPattern(node)) return;\n convertVariableDeclaration(\n path,\n name => state.addHelper(name),\n arrayLikeIsIterable,\n iterableIsArray,\n objectRestNoSymbols,\n useBuiltIns,\n );\n },\n },\n };\n});\n"],"names":["isPureVoid","node","t","isUnaryExpression","operator","isPureish","argument","unshiftForXStatementBody","statementPath","newStatements","ensureBlock","scope","bodyScopeBindings","get","bindings","hasShadowedBlockScopedBindings","Object","keys","some","name","hasBinding","body","blockStatement","unshift","hasArrayRest","pattern","elements","elem","isRestElement","hasObjectRest","properties","prop","STOP_TRAVERSAL","arrayUnpackVisitor","ancestors","state","length","isIdentifier","isReferenced","deopt","DestructuringTransformer","blockHoist","arrayRefSet","nodes","kind","iterableIsArray","arrayLikeIsIterable","objectRestNoSymbols","useBuiltIns","addHelper","constructor","opts","Set","getExtendsHelper","memberExpression","identifier","buildVariableAssignment","id","init","op","isMemberExpression","isOptionalMemberExpression","expressionStatement","assignmentExpression","cloneNode","buildUndefinedNode","nodeInit","variableDeclaration","variableDeclarator","_blockHoist","buildVariableDeclaration","declar","push","_init","isObjectPattern","pushObjectPattern","isArrayPattern","pushArrayPattern","isAssignmentPattern","pushAssignmentPattern","toArray","count","has","binding","getBinding","constant","path","isGenericType","isArrayExpression","template","expression","ast","helperName","args","numericLiteral","hub","callExpression","left","right","valueRef","tempId","generateUidIdentifierBasedOnNode","tempConditional","conditionalExpression","binaryExpression","isPattern","patternId","generateUidIdentifier","pushObjectRest","objRef","spreadProp","spreadPropIndex","value","buildObjectExcludingKeys","slice","pushObjectProperty","propRef","isLiteral","key","computed","isStatic","temp","copiedPattern","i","isPure","canUnpackArrayPattern","arr","isSpreadElement","isCallExpression","getBindingIdentifiers","traverse","e","pushUnpackedArrayPattern","holeToUndefined","el","arrayExpression","map","arrayRef","add","ref","memo","maybeGenerateMemoised","excludedKeys","allLiteral","hasTemplateLiteral","stringLiteral","isTemplateLiteral","String","isPrivateName","extendsHelper","objectExpression","sequenceExpression","keyExpression","isProgram","block","programScope","getProgramParent","convertVariableDeclaration","nodeKind","nodeLoc","loc","declarations","destructuring","inherits","tail","nodesOut","isVariableDeclaration","isExpressionStatement","expr","arguments","isForStatement","parent","v","replaceWith","replaceWithMultiple","crawl","convertAssignmentExpression","parentPath","isSequenceExpression","isCompletionRecord","isArrowFunctionExpression","returnStatement","variableDeclarationHasDestructuringPattern","type","declare","api","options","assertVersion","assumption","loose","allowArrayLike","visitor","ExportNamedDeclaration","declaration","splitExportDeclaration","ForXStatement","statementBody","CatchClause","param","AssignmentExpression","VariableDeclaration","isForXStatement","container"],"mappings":"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"} |
+5
-5
| { | ||
| "name": "@babel/plugin-transform-destructuring", | ||
| "version": "8.0.0-rc.2", | ||
| "version": "8.0.0-rc.3", | ||
| "description": "Compile ES2015 destructuring to ES5", | ||
@@ -20,10 +20,10 @@ "repository": { | ||
| "dependencies": { | ||
| "@babel/helper-plugin-utils": "^8.0.0-rc.2" | ||
| "@babel/helper-plugin-utils": "^8.0.0-rc.3" | ||
| }, | ||
| "peerDependencies": { | ||
| "@babel/core": "^8.0.0-rc.2" | ||
| "@babel/core": "^8.0.0-rc.3" | ||
| }, | ||
| "devDependencies": { | ||
| "@babel/core": "^8.0.0-rc.2", | ||
| "@babel/helper-plugin-test-runner": "^8.0.0-rc.2" | ||
| "@babel/core": "^8.0.0-rc.3", | ||
| "@babel/helper-plugin-test-runner": "^8.0.0-rc.3" | ||
| }, | ||
@@ -30,0 +30,0 @@ "engines": { |
82661
-1.43%