eslint-plugin-styled-component-jsx-attributes
Version:
A simple plugin for enforcing the use of the id attribute on styled components.
87 lines (71 loc) • 2.51 kB
JavaScript
function ownKeys(object, enumerableOnly) {
var keys = Object.keys(object);
if (Object.getOwnPropertySymbols) {
var symbols = Object.getOwnPropertySymbols(object);
if (enumerableOnly) symbols = symbols.filter(function (sym) {
return Object.getOwnPropertyDescriptor(object, sym).enumerable;
});
keys.push.apply(keys, symbols);
}
return keys;
}
function _objectSpread(target) {
for (var i = 1; i < arguments.length; i++) {
var source = arguments[i] != null ? arguments[i] : {};
if (i % 2) {
ownKeys(Object(source), true).forEach(function (key) {
_defineProperty(target, key, source[key]);
});
} else if (Object.getOwnPropertyDescriptors) {
Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
} else {
ownKeys(Object(source)).forEach(function (key) {
Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
});
}
}
return target;
}
function _defineProperty(obj, key, value) {
if (key in obj) {
Object.defineProperty(obj, key, {
value: value,
enumerable: true,
configurable: true,
writable: true
});
} else {
obj[key] = value;
}
return obj;
}
var rule = require('./rules/missing-ids');
var path = require('path');
var _require2 = require('util'),
inspect = _require2.inspect;
var collectStyledComponentData = require('./collectStyledComponentData');
module.exports = function (name) {
return {
create: function create(context) {
var _objectSpread2;
var nodeParserPath = path.join(__dirname, 'nodeParsers', 'JSXOpeningElement'); // var rule = rules[name];
var styledComponents = {};
var nodesArray = [];
var parserMapping = {
JSXOpeningElement: 'JSXOpeningElement',
JSXElement: 'JSXElement',
JSXAttribute: 'JSXOpeningElement'
};
var parsedElement = parserMapping['JSXOpeningElement'];
return _objectSpread({}, collectStyledComponentData(styledComponents, context, name), (_objectSpread2 = {}, _defineProperty(_objectSpread2, parsedElement, function (node) {
return nodesArray.push(node);
}), _defineProperty(_objectSpread2, "Program:exit", function ProgramExit() {
var parser = require(nodeParserPath)(context, styledComponents, rule, name);
nodesArray.forEach(function (node) {
return parser[parsedElement](node);
});
}), _objectSpread2));
}
};
};
;