eslint-plugin-deprecate-classnames
Version:
An ESLint plugin with rules reporting usage of deprecated css classes
62 lines (61 loc) • 1.64 kB
JavaScript
;
var ClassNameChecker = require('../utils/classNameChecker');
var _require = require('../utils/extractClassNames'),
extractClassNamesFromClassName = _require.extractClassNamesFromClassName;
module.exports = {
meta: {
docs: {
description: 'Disallow usage of deprecated classNames in "className" attribute',
category: 'Best Practices',
recommended: true
},
schema: {
type: 'array',
items: {
type: 'object',
properties: {
name: {
type: 'string'
},
nameRegExp: {
type: ['string', 'object']
},
names: {
type: 'array',
items: {
type: 'string'
}
},
use: {
type: 'string'
}
},
additionalProperties: false
}
}
},
create: function create(context) {
var rules = context.options.map(function (option) {
return new ClassNameChecker(option);
});
return {
JSXAttribute: function JSXAttribute(node) {
if (node.name.name === 'className') {
var classNames = extractClassNamesFromClassName(node);
classNames.forEach(function (className) {
rules.forEach(function (rule) {
var errors = rule.check([className]);
errors.forEach(function (_ref) {
var message = _ref.message;
return context.report({
node: node,
message: message
});
});
});
});
}
}
};
}
};