@putout/plugin-remove-useless-spread
Version:
🐊Putout plugin adds ability to remove useless spread
38 lines (27 loc) • 779 B
JavaScript
;
const {types} = require('putout');
const {
isCallExpression,
isReturnStatement,
isSpreadElement,
} = types;
module.exports.report = () => `Avoid useless spread '...'`;
module.exports.filter = (path) => {
const {node, parentPath} = path;
const [first] = node.properties;
const {trailingComments} = first;
if (trailingComments?.length)
return false;
if (isCallExpression(parentPath) && isSpreadElement(first))
return true;
if (isCallExpression(first.argument))
return true;
return isReturnStatement(path.parentPath);
};
module.exports.exclude = () => [
'({...__b && {__c: __d}})',
'__a = {...__a}',
];
module.exports.replace = () => ({
'({...__a})': '__a',
});