babel-plugin-transform-es2015-destructuring
Advanced tools
Comparing version 7.0.0-alpha.15 to 7.0.0-alpha.16
191
lib/index.js
@@ -8,18 +8,8 @@ "use strict"; | ||
function variableDeclarationHasPattern(node) { | ||
for (var _iterator = node.declarations, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) { | ||
var _ref2; | ||
var _arr = node.declarations; | ||
if (_isArray) { | ||
if (_i >= _iterator.length) break; | ||
_ref2 = _iterator[_i++]; | ||
} else { | ||
_i = _iterator.next(); | ||
if (_i.done) break; | ||
_ref2 = _i.value; | ||
} | ||
for (var _i = 0; _i < _arr.length; _i++) { | ||
var declar = _arr[_i]; | ||
var declar = _ref2; | ||
if (t.isPattern(declar.id)) { | ||
@@ -29,2 +19,3 @@ return true; | ||
} | ||
return false; | ||
@@ -34,16 +25,7 @@ } | ||
function hasRest(pattern) { | ||
for (var _iterator2 = pattern.elements, _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : _iterator2[Symbol.iterator]();;) { | ||
var _ref3; | ||
var _arr2 = pattern.elements; | ||
if (_isArray2) { | ||
if (_i2 >= _iterator2.length) break; | ||
_ref3 = _iterator2[_i2++]; | ||
} else { | ||
_i2 = _iterator2.next(); | ||
if (_i2.done) break; | ||
_ref3 = _i2.value; | ||
} | ||
for (var _i2 = 0; _i2 < _arr2.length; _i2++) { | ||
var elem = _arr2[_i2]; | ||
var elem = _ref3; | ||
if (t.isRestElement(elem)) { | ||
@@ -53,2 +35,3 @@ return true; | ||
} | ||
return false; | ||
@@ -68,4 +51,2 @@ } | ||
function DestructuringTransformer(opts) { | ||
_classCallCheck(this, DestructuringTransformer); | ||
this.blockHoist = opts.blockHoist; | ||
@@ -83,3 +64,2 @@ this.operator = opts.operator; | ||
if (t.isMemberExpression(id)) op = "="; | ||
var node = void 0; | ||
@@ -94,3 +74,2 @@ | ||
node._blockHoist = this.blockHoist; | ||
return node; | ||
@@ -126,16 +105,12 @@ }; | ||
DestructuringTransformer.prototype.pushAssignmentPattern = function pushAssignmentPattern(pattern, valueRef) { | ||
var tempValueRef = this.scope.generateUidIdentifierBasedOnNode(valueRef); | ||
var declar = t.variableDeclaration("var", [t.variableDeclarator(tempValueRef, valueRef)]); | ||
declar._blockHoist = this.blockHoist; | ||
this.nodes.push(declar); | ||
var tempConditional = t.conditionalExpression(t.binaryExpression("===", tempValueRef, t.identifier("undefined")), pattern.right, tempValueRef); | ||
var left = pattern.left; | ||
var left = pattern.left; | ||
if (t.isPattern(left)) { | ||
var tempValueDefault = t.expressionStatement(t.assignmentExpression("=", tempValueRef, tempConditional)); | ||
tempValueDefault._blockHoist = this.blockHoist; | ||
this.nodes.push(tempValueDefault); | ||
@@ -149,3 +124,2 @@ this.push(left, tempValueRef); | ||
DestructuringTransformer.prototype.pushObjectRest = function pushObjectRest(pattern, objRef, spreadProp, spreadPropIndex) { | ||
var keys = []; | ||
@@ -155,11 +129,10 @@ | ||
var prop = pattern.properties[i]; | ||
if (i >= spreadPropIndex) break; | ||
if (t.isRestElement(prop)) continue; | ||
var key = prop.key; | ||
var key = prop.key; | ||
if (t.isIdentifier(key) && !prop.computed) { | ||
key = t.stringLiteral(prop.key.name); | ||
} | ||
keys.push(key); | ||
@@ -169,3 +142,2 @@ } | ||
keys = t.arrayExpression(keys); | ||
var value = t.callExpression(this.file.addHelper("objectWithoutProperties"), [objRef, keys]); | ||
@@ -177,3 +149,2 @@ this.nodes.push(this.buildVariableAssignment(spreadProp.argument, value)); | ||
if (t.isLiteral(prop.key)) prop.computed = true; | ||
var pattern = prop.value; | ||
@@ -190,3 +161,2 @@ var objRef = t.memberExpression(propRef, prop.key, prop.computed); | ||
DestructuringTransformer.prototype.pushObjectPattern = function pushObjectPattern(pattern, objRef) { | ||
if (!pattern.properties.length) { | ||
@@ -204,2 +174,3 @@ this.nodes.push(t.expressionStatement(t.callExpression(this.file.addHelper("objectDestructuringEmpty"), [objRef]))); | ||
var prop = pattern.properties[i]; | ||
if (t.isRestElement(prop)) { | ||
@@ -215,4 +186,4 @@ this.pushObjectRest(pattern, objRef, prop, i); | ||
if (!t.isArrayExpression(arr)) return false; | ||
if (pattern.elements.length > arr.elements.length) return; | ||
if (pattern.elements.length > arr.elements.length) return; | ||
if (pattern.elements.length < arr.elements.length && !hasRest(pattern)) { | ||
@@ -222,39 +193,16 @@ return false; | ||
for (var _iterator3 = pattern.elements, _isArray3 = Array.isArray(_iterator3), _i3 = 0, _iterator3 = _isArray3 ? _iterator3 : _iterator3[Symbol.iterator]();;) { | ||
var _ref4; | ||
var _arr3 = pattern.elements; | ||
if (_isArray3) { | ||
if (_i3 >= _iterator3.length) break; | ||
_ref4 = _iterator3[_i3++]; | ||
} else { | ||
_i3 = _iterator3.next(); | ||
if (_i3.done) break; | ||
_ref4 = _i3.value; | ||
} | ||
var elem = _ref4; | ||
for (var _i3 = 0; _i3 < _arr3.length; _i3++) { | ||
var elem = _arr3[_i3]; | ||
if (!elem) return false; | ||
if (t.isMemberExpression(elem)) return false; | ||
} | ||
for (var _iterator4 = arr.elements, _isArray4 = Array.isArray(_iterator4), _i4 = 0, _iterator4 = _isArray4 ? _iterator4 : _iterator4[Symbol.iterator]();;) { | ||
var _ref5; | ||
var _arr4 = arr.elements; | ||
if (_isArray4) { | ||
if (_i4 >= _iterator4.length) break; | ||
_ref5 = _iterator4[_i4++]; | ||
} else { | ||
_i4 = _iterator4.next(); | ||
if (_i4.done) break; | ||
_ref5 = _i4.value; | ||
} | ||
var _elem = _ref5; | ||
for (var _i4 = 0; _i4 < _arr4.length; _i4++) { | ||
var _elem = _arr4[_i4]; | ||
if (t.isSpreadElement(_elem)) return false; | ||
if (t.isCallExpression(_elem)) return false; | ||
if (t.isMemberExpression(_elem)) return false; | ||
@@ -264,3 +212,6 @@ } | ||
var bindings = t.getBindingIdentifiers(pattern); | ||
var state = { deopt: false, bindings: bindings }; | ||
var state = { | ||
deopt: false, | ||
bindings: bindings | ||
}; | ||
this.scope.traverse(arr, arrayUnpackVisitor, state); | ||
@@ -273,2 +224,3 @@ return !state.deopt; | ||
var elem = pattern.elements[i]; | ||
if (t.isRestElement(elem)) { | ||
@@ -290,3 +242,2 @@ this.push(elem.argument, t.arrayExpression(arr.elements.slice(i))); | ||
var count = !hasRest(pattern) && pattern.elements.length; | ||
var toArray = this.toArray(arrayRef, count); | ||
@@ -304,5 +255,3 @@ | ||
var elem = pattern.elements[i]; | ||
if (!elem) continue; | ||
var elemRef = void 0; | ||
@@ -313,3 +262,2 @@ | ||
elemRef = t.callExpression(t.memberExpression(elemRef, t.identifier("slice")), [t.numericLiteral(i)]); | ||
elem = elem.argument; | ||
@@ -325,5 +273,5 @@ } else { | ||
DestructuringTransformer.prototype.init = function init(pattern, ref) { | ||
if (!t.isArrayExpression(ref) && !t.isMemberExpression(ref)) { | ||
var memo = this.scope.maybeGenerateMemoised(ref, true); | ||
if (memo) { | ||
@@ -336,3 +284,2 @@ this.nodes.push(this.buildVariableDeclaration(memo, ref)); | ||
this.push(pattern, ref); | ||
return this.nodes; | ||
@@ -350,3 +297,2 @@ }; | ||
if (!variableDeclarationHasPattern(declaration.node)) return; | ||
var specifiers = []; | ||
@@ -365,15 +311,9 @@ | ||
scope = path.scope; | ||
var left = node.left; | ||
if (t.isPattern(left)) { | ||
var temp = scope.generateUidIdentifier("ref"); | ||
node.left = t.variableDeclaration("var", [t.variableDeclarator(temp)]); | ||
path.ensureBlock(); | ||
node.body.body.unshift(t.variableDeclaration("var", [t.variableDeclarator(left, temp)])); | ||
return; | ||
@@ -383,11 +323,7 @@ } | ||
if (!t.isVariableDeclaration(left)) return; | ||
var pattern = left.declarations[0].id; | ||
if (!t.isPattern(pattern)) return; | ||
var key = scope.generateUidIdentifier("ref"); | ||
node.left = t.variableDeclaration(left.kind, [t.variableDeclarator(key, null)]); | ||
var nodes = []; | ||
var destructuring = new DestructuringTransformer({ | ||
@@ -399,22 +335,15 @@ kind: left.kind, | ||
}); | ||
destructuring.init(pattern, key); | ||
path.ensureBlock(); | ||
var block = node.body; | ||
block.body = nodes.concat(block.body); | ||
}, | ||
CatchClause: function CatchClause(_ref6, file) { | ||
var node = _ref6.node, | ||
scope = _ref6.scope; | ||
CatchClause: function CatchClause(_ref2, file) { | ||
var node = _ref2.node, | ||
scope = _ref2.scope; | ||
var pattern = node.param; | ||
if (!t.isPattern(pattern)) return; | ||
var ref = scope.generateUidIdentifier("ref"); | ||
node.param = ref; | ||
var nodes = []; | ||
var destructuring = new DestructuringTransformer({ | ||
@@ -427,3 +356,2 @@ kind: "let", | ||
destructuring.init(pattern, ref); | ||
node.body.body = nodes.concat(node.body.body); | ||
@@ -434,7 +362,4 @@ }, | ||
scope = path.scope; | ||
if (!t.isPattern(node.left)) return; | ||
var nodes = []; | ||
var destructuring = new DestructuringTransformer({ | ||
@@ -446,7 +371,6 @@ operator: node.operator, | ||
}); | ||
var ref = void 0; | ||
var ref = void 0; | ||
if (path.isCompletionRecord() || !path.parentPath.isExpressionStatement()) { | ||
ref = scope.generateUidIdentifierBasedOnNode(node.right, "ref"); | ||
nodes.push(t.variableDeclaration("var", [t.variableDeclarator(ref, node.right)])); | ||
@@ -471,7 +395,5 @@ | ||
parent = path.parent; | ||
if (t.isForXStatement(parent)) return; | ||
if (!parent || !path.container) return; | ||
if (!variableDeclarationHasPattern(node)) return; | ||
var nodeKind = node.kind; | ||
@@ -483,6 +405,4 @@ var nodes = []; | ||
declar = node.declarations[i]; | ||
var patternId = declar.init; | ||
var pattern = declar.id; | ||
var destructuring = new DestructuringTransformer({ | ||
@@ -508,17 +428,7 @@ blockHoist: node._blockHoist, | ||
var nodesOut = []; | ||
for (var _iterator5 = nodes, _isArray5 = Array.isArray(_iterator5), _i5 = 0, _iterator5 = _isArray5 ? _iterator5 : _iterator5[Symbol.iterator]();;) { | ||
var _ref7; | ||
if (_isArray5) { | ||
if (_i5 >= _iterator5.length) break; | ||
_ref7 = _iterator5[_i5++]; | ||
} else { | ||
_i5 = _iterator5.next(); | ||
if (_i5.done) break; | ||
_ref7 = _i5.value; | ||
} | ||
for (var _i5 = 0; _i5 < nodes.length; _i5++) { | ||
var _node = nodes[_i5]; | ||
var tail = nodesOut[nodesOut.length - 1]; | ||
var _node = _ref7; | ||
var tail = nodesOut[nodesOut.length - 1]; | ||
if (tail && t.isVariableDeclaration(tail) && t.isVariableDeclaration(_node)) { | ||
@@ -534,30 +444,19 @@ var _tail$declarations; | ||
for (var _iterator6 = nodesOut, _isArray6 = Array.isArray(_iterator6), _i6 = 0, _iterator6 = _isArray6 ? _iterator6 : _iterator6[Symbol.iterator]();;) { | ||
var _ref8; | ||
for (var _i6 = 0; _i6 < nodesOut.length; _i6++) { | ||
var nodeOut = nodesOut[_i6]; | ||
if (!nodeOut.declarations) continue; | ||
if (_isArray6) { | ||
if (_i6 >= _iterator6.length) break; | ||
_ref8 = _iterator6[_i6++]; | ||
} else { | ||
_i6 = _iterator6.next(); | ||
if (_i6.done) break; | ||
_ref8 = _i6.value; | ||
} | ||
for (var _iterator = nodeOut.declarations, _isArray = Array.isArray(_iterator), _i7 = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) { | ||
var _ref3; | ||
var nodeOut = _ref8; | ||
if (!nodeOut.declarations) continue; | ||
for (var _iterator7 = nodeOut.declarations, _isArray7 = Array.isArray(_iterator7), _i7 = 0, _iterator7 = _isArray7 ? _iterator7 : _iterator7[Symbol.iterator]();;) { | ||
var _ref9; | ||
if (_isArray7) { | ||
if (_i7 >= _iterator7.length) break; | ||
_ref9 = _iterator7[_i7++]; | ||
if (_isArray) { | ||
if (_i7 >= _iterator.length) break; | ||
_ref3 = _iterator[_i7++]; | ||
} else { | ||
_i7 = _iterator7.next(); | ||
_i7 = _iterator.next(); | ||
if (_i7.done) break; | ||
_ref9 = _i7.value; | ||
_ref3 = _i7.value; | ||
} | ||
var declaration = _ref9; | ||
var declaration = _ref3; | ||
var name = declaration.id.name; | ||
@@ -579,4 +478,2 @@ | ||
}; | ||
}; | ||
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } | ||
}; |
{ | ||
"name": "babel-plugin-transform-es2015-destructuring", | ||
"version": "7.0.0-alpha.15", | ||
"version": "7.0.0-alpha.16", | ||
"description": "Compile ES2015 destructuring to ES5", | ||
@@ -12,4 +12,4 @@ "repository": "https://github.com/babel/babel/tree/master/packages/babel-plugin-transform-es2015-destructuring", | ||
"devDependencies": { | ||
"babel-helper-plugin-test-runner": "7.0.0-alpha.15" | ||
"babel-helper-plugin-test-runner": "7.0.0-alpha.16" | ||
} | ||
} |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
15710
369