* centralize plugin options * Centralize plugins options - move more options to the top - move validations that depend on options to the top * use isLoose option * Move more validations to the top * Move ref parameter for rewriteModuleStatementsAndPrepareHeader() to the top * fix eslint errors * remove unused parameter * set default systemGlobal value * Revert "Move ref parameter for rewriteModuleStatementsAndPrepareHeader() to the top" This reverts commit b3855302d17fa19d8acb4c8accab3680c8d2710e. * Revert "Move more validations to the top" This reverts commit e5861d8a034ff8f553391f55654f753bcf428a5d. * fix allowMutablePropsOnTags option usage * improve naming * change Contructor definition for sake of consistency * move allowMutablePropsOnTags validation to the top * add missing !
30 lines
874 B
JavaScript
30 lines
874 B
JavaScript
import convertFunctionParams from "./params";
|
|
import convertFunctionRest from "./rest";
|
|
|
|
export default function(babel, options) {
|
|
const { loose } = options;
|
|
return {
|
|
visitor: {
|
|
Function(path) {
|
|
if (
|
|
path.isArrowFunctionExpression() &&
|
|
path
|
|
.get("params")
|
|
.some(param => param.isRestElement() || param.isAssignmentPattern())
|
|
) {
|
|
// default/rest visitors require access to `arguments`, so it cannot be an arrow
|
|
path.arrowFunctionToExpression();
|
|
}
|
|
|
|
const convertedRest = convertFunctionRest(path);
|
|
const convertedParams = convertFunctionParams(path, loose);
|
|
|
|
if (convertedRest || convertedParams) {
|
|
// Manually reprocess this scope to ensure that the moved params are updated.
|
|
path.scope.crawl();
|
|
}
|
|
},
|
|
},
|
|
};
|
|
}
|