UNPKG

kitchensink

Version:

Dispatch's awesome components and style guide

58 lines (52 loc) 1.44 kB
/** * Disallows identical destructuring names for the key and value in favor of using shorthand destructuring. * * Type: `Boolean` * * Value: `true` * * #### Example * * ```js * "disallowIdenticalDestructuringNames": true * ``` * * ##### Valid for mode `true` * * ```js * var {left, top} = obj; // shorthand * var {left, top: topper} = obj; // different identifier * let { [key]: key } = obj; // computed property * ``` * * ##### Invalid for mode `true` * * ```js * var {left: left, top: top} = obj; * ``` */ var assert = require('assert'); module.exports = function() {}; module.exports.prototype = { configure: function(options) { assert( options === true, this.getOptionName() + ' option requires a true value or should be removed' ); }, getOptionName: function() { return 'disallowIdenticalDestructuringNames'; }, check: function(file, errors) { file.iterateNodesByType(['ObjectPattern'], function(node) { var props = node.properties; for (var i = 0; i < props.length; i++) { var prop = props[i]; if (prop.type === 'Property' && !prop.shorthand && !prop.computed && prop.key.name === prop.value.name) { errors.add('Use the shorthand form of destructuring instead', prop.loc.start); } } }); } };