@babel/plugin-proposal-object-rest-spread
Advanced tools
Comparing version 7.9.0 to 7.9.5
@@ -14,2 +14,4 @@ "use strict"; | ||
var _pluginTransformParameters = require("@babel/plugin-transform-parameters"); | ||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | ||
@@ -172,5 +174,5 @@ | ||
function replaceRestElement(parentPath, paramPath) { | ||
function replaceRestElement(parentPath, paramPath, container) { | ||
if (paramPath.isAssignmentPattern()) { | ||
replaceRestElement(parentPath, paramPath.get("left")); | ||
replaceRestElement(parentPath, paramPath.get("left"), container); | ||
return; | ||
@@ -183,3 +185,3 @@ } | ||
for (let i = 0; i < elements.length; i++) { | ||
replaceRestElement(parentPath, elements[i]); | ||
replaceRestElement(parentPath, elements[i], container); | ||
} | ||
@@ -193,4 +195,9 @@ } | ||
parentPath.ensureBlock(); | ||
parentPath.get("body").unshiftContainer("body", declar); | ||
if (container) { | ||
container.push(declar); | ||
} else { | ||
parentPath.ensureBlock(); | ||
parentPath.get("body").unshiftContainer("body", declar); | ||
} | ||
paramPath.replaceWith(_core.types.cloneNode(uid)); | ||
@@ -206,6 +213,58 @@ } | ||
const params = path.get("params"); | ||
const paramsWithRestElement = new Set(); | ||
const idsInRestParams = new Set(); | ||
for (let i = params.length - 1; i >= 0; i--) { | ||
replaceRestElement(params[i].parentPath, params[i]); | ||
for (let i = 0; i < params.length; ++i) { | ||
const param = params[i]; | ||
if (hasRestElement(param)) { | ||
paramsWithRestElement.add(i); | ||
for (const name of Object.keys(param.getBindingIdentifiers())) { | ||
idsInRestParams.add(name); | ||
} | ||
} | ||
} | ||
let idInRest = false; | ||
const IdentifierHandler = function (path, functionScope) { | ||
const name = path.node.name; | ||
if (path.scope.getBinding(name) === functionScope.getBinding(name) && idsInRestParams.has(name)) { | ||
idInRest = true; | ||
path.stop(); | ||
} | ||
}; | ||
let i; | ||
for (i = 0; i < params.length && !idInRest; ++i) { | ||
const param = params[i]; | ||
if (!paramsWithRestElement.has(i)) { | ||
if (param.isReferencedIdentifier() || param.isBindingIdentifier()) { | ||
IdentifierHandler(path, path.scope); | ||
} else { | ||
param.traverse({ | ||
"Scope|TypeAnnotation|TSTypeAnnotation": path => path.skip(), | ||
"ReferencedIdentifier|BindingIdentifier": IdentifierHandler | ||
}, path.scope); | ||
} | ||
} | ||
} | ||
if (!idInRest) { | ||
for (let i = 0; i < params.length; ++i) { | ||
const param = params[i]; | ||
if (paramsWithRestElement.has(i)) { | ||
replaceRestElement(param.parentPath, param); | ||
} | ||
} | ||
} else { | ||
const shouldTransformParam = idx => idx >= i - 1 || paramsWithRestElement.has(idx); | ||
(0, _pluginTransformParameters.convertFunctionParams)(path, loose, shouldTransformParam, replaceRestElement); | ||
} | ||
}, | ||
@@ -212,0 +271,0 @@ |
{ | ||
"name": "@babel/plugin-proposal-object-rest-spread", | ||
"version": "7.9.0", | ||
"version": "7.9.5", | ||
"description": "Compile object rest and spread to ES5", | ||
@@ -16,3 +16,4 @@ "repository": "https://github.com/babel/babel/tree/master/packages/babel-plugin-proposal-object-rest-spread", | ||
"@babel/helper-plugin-utils": "^7.8.3", | ||
"@babel/plugin-syntax-object-rest-spread": "^7.8.0" | ||
"@babel/plugin-syntax-object-rest-spread": "^7.8.0", | ||
"@babel/plugin-transform-parameters": "^7.9.5" | ||
}, | ||
@@ -26,3 +27,3 @@ "peerDependencies": { | ||
}, | ||
"gitHead": "8d5e422be27251cfaadf8dd2536b31b4a5024b02" | ||
"gitHead": "5b97e77e030cf3853a147fdff81844ea4026219d" | ||
} |
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
17902
367
4
+ Added@babel/plugin-transform-parameters@7.25.7(transitive)