Sha256: d76f260057f8bfe9b2ba748230b9329dce90fc1c0d271a60dbedc6e300675f3e
Contents?: true
Size: 1.49 KB
Versions: 43
Compression:
Stored size: 1.49 KB
Contents
/** * @fileoverview Enforce no duplicate props * @author Markus Ånöstam */ 'use strict'; const has = require('has'); const docsUrl = require('../util/docsUrl'); // ------------------------------------------------------------------------------ // Rule Definition // ------------------------------------------------------------------------------ module.exports = { meta: { docs: { description: 'Enforce no duplicate props', category: 'Possible Errors', recommended: true, url: docsUrl('jsx-no-duplicate-props') }, schema: [{ type: 'object', properties: { ignoreCase: { type: 'boolean' } }, additionalProperties: false }] }, create: function (context) { const configuration = context.options[0] || {}; const ignoreCase = configuration.ignoreCase || false; return { JSXOpeningElement: function (node) { const props = {}; node.attributes.forEach(decl => { if (decl.type === 'JSXSpreadAttribute') { return; } let name = decl.name.name; if (typeof name !== 'string') { return; } if (ignoreCase) { name = name.toLowerCase(); } if (has(props, name)) { context.report({ node: decl, message: 'No duplicate props allowed' }); } else { props[name] = 1; } }); } }; } };
Version data entries
43 entries across 43 versions & 1 rubygems