@putout/plugin-apply-destructuring
Version:
🐊Putout plugin adds ability use destructuring on variable declarations
42 lines (30 loc) • 926 B
JavaScript
import {types, operator} from 'putout';
const {replaceWith} = operator;
const {
isObjectProperty,
arrayPattern,
} = types;
export const report = () => `Use array destructuring instead of object destructuring`;
export const fix = (path) => {
const elements = [];
for (const {value} of path.node.properties) {
elements.push(value);
}
const array = arrayPattern(elements);
replaceWith(path, array);
};
export const traverse = ({push}) => ({
ObjectPattern(path) {
const properties = path.get('properties');
if (!properties.length)
return;
for (const [i, prop] of properties.entries()) {
if (!isObjectProperty(prop))
return;
const {key} = prop.node;
if (i !== key.value)
return;
}
push(path);
},
});