babel-plugin-transform-es2015-parameters
Advanced tools
Comparing version 6.3.13 to 6.3.18
@@ -21,2 +21,4 @@ "use strict"; | ||
var loadRest = _babelTemplate2["default"]("\n ARGUMENTS.length <= KEY || ARGUMENTS[KEY] === undefined ? undefined : ARGUMENTS[KEY]\n"); | ||
var memberExpressionOptimisationVisitor = { | ||
@@ -97,18 +99,2 @@ Scope: function Scope(path, state) { | ||
function optimiseMemberExpression(parent, offset) { | ||
if (offset === 0) return; | ||
var newExpr = undefined; | ||
var prop = parent.property; | ||
if (t.isLiteral(prop)) { | ||
prop.value += offset; | ||
prop.raw = String(prop.value); | ||
} else { | ||
// // UnaryExpression, BinaryExpression | ||
newExpr = t.binaryExpression("+", prop, t.numericLiteral(offset)); | ||
parent.property = newExpr; | ||
} | ||
} | ||
function hasRest(node) { | ||
@@ -133,12 +119,22 @@ return t.isRestElement(node.params[node.params.length - 1]); | ||
// support patterns | ||
if (t.isPattern(rest)) { | ||
var pattern = rest; | ||
rest = scope.generateUidIdentifier("ref"); | ||
function optimiseCandidate(parent, parentPath, offset) { | ||
if (t.isReturnStatement(parentPath.parent) || t.isIdentifier(parentPath.parent.id)) { | ||
parentPath.replaceWith(loadRest({ | ||
ARGUMENTS: argsId, | ||
KEY: t.numericLiteral(parent.property.value + offset) | ||
})); | ||
} else { | ||
if (offset === 0) return; | ||
var newExpr = undefined; | ||
var prop = parent.property; | ||
var declar = t.variableDeclaration("let", pattern.elements.map(function (elem, index) { | ||
var accessExpr = t.memberExpression(rest, t.numericLiteral(index), true); | ||
return t.variableDeclarator(elem, accessExpr); | ||
})); | ||
node.body.body.unshift(declar); | ||
if (t.isLiteral(prop)) { | ||
prop.value += offset; | ||
prop.raw = String(prop.value); | ||
} else { | ||
// UnaryExpression, BinaryExpression | ||
newExpr = t.binaryExpression("+", prop, t.numericLiteral(offset)); | ||
parent.property = newExpr; | ||
} | ||
} | ||
} | ||
@@ -184,5 +180,3 @@ | ||
candidate.replaceWith(argsId); | ||
if (candidate.parentPath.isMemberExpression()) { | ||
optimiseMemberExpression(candidate.parent, state.offset); | ||
} | ||
optimiseCandidate(candidate.parent, candidate.parentPath, state.offset); | ||
} | ||
@@ -198,4 +192,2 @@ } | ||
// | ||
var start = t.numericLiteral(node.params.length); | ||
@@ -202,0 +194,0 @@ var key = scope.generateUidIdentifier("key"); |
{ | ||
"name": "babel-plugin-transform-es2015-parameters", | ||
"version": "6.3.13", | ||
"version": "6.3.18", | ||
"description": "Compile ES2015 default and rest parameters to ES5", | ||
@@ -13,3 +13,3 @@ "repository": "https://github.com/babel/babel/tree/master/packages/babel-plugin-transform-es2015-parameters", | ||
"babel-template": "^6.3.13", | ||
"babel-types": "^6.3.13", | ||
"babel-types": "^6.3.18", | ||
"babel-runtime": "^5.0.0" | ||
@@ -16,0 +16,0 @@ }, |
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
New author
Supply chain riskA new npm collaborator published a version of the package for the first time. New collaborators are usually benign additions to a project, but do indicate a change to the security surface area of a package.
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
16416
387
1
Updatedbabel-types@^6.3.18