UNPKG

eslint-plugin-styled-component-jsx-attributes

Version:

A simple plugin for enforcing the use of the id attribute on styled components.

92 lines (74 loc) 4.8 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getAttributeValue = exports.getAttribute = exports.capitalizeWord = void 0; /** * Capitalize a word by making the first letter uppercase * * @param {String} word The worde to capitalize * @returns {String} The capitalized word */ var capitalizeWord = function capitalizeWord(word) { return word[0].toUpperCase() + word.substring(1); }; /** * Get a node attribute by its name * * @param {Object} node The target node * @param {String} attrName The name of the attribute * @returns {Object} The attribute */ exports.capitalizeWord = capitalizeWord; var getAttribute = function getAttribute(node, attrName) { return node.attributes.find(function (attr) { var _attr$name; return (attr === null || attr === void 0 ? void 0 : (_attr$name = attr.name) === null || _attr$name === void 0 ? void 0 : _attr$name.name) === attrName; }); }; /** * Get an attribute value * If it's a literal, it will be returned as is * Otherwise if it's an identifier, it will be returned formatted * * @param {Object} attr The attribute * @returns {String} The attribute value */ exports.getAttribute = getAttribute; var getAttributeValue = function getAttributeValue(attr) { var _attr$value, _attr$value$expressio, _attr$value2, _attr$value2$expressi, _attr$value2$expressi2, _attr$value3, _attr$value4, _attr$value4$expressi, _attr$value5, _attr$value5$expressi, _attr$value5$expressi2, _attr$value5$expressi3, _attr$value5$expressi4; // This is an identifier: <input attr={foo} /> if (attr === null || attr === void 0 ? void 0 : (_attr$value = attr.value) === null || _attr$value === void 0 ? void 0 : (_attr$value$expressio = _attr$value.expression) === null || _attr$value$expressio === void 0 ? void 0 : _attr$value$expressio.name) { return '${' + attr.value.expression.name + '}'; } // This is an identifier inside a template: <input attr={`${foo}`} /> if (attr === null || attr === void 0 ? void 0 : (_attr$value2 = attr.value) === null || _attr$value2 === void 0 ? void 0 : (_attr$value2$expressi = _attr$value2.expression) === null || _attr$value2$expressi === void 0 ? void 0 : (_attr$value2$expressi2 = _attr$value2$expressi.expressions) === null || _attr$value2$expressi2 === void 0 ? void 0 : _attr$value2$expressi2.length) { var expressions = attr.value.expression.expressions.map(function (expression) { if (expression.type === 'Identifier' || expression.type === 'MemberExpression') { //This will check if the Identifier is part of a template string that has more than just the identifier. If true, return said value with the identifier. if (expression.parent.quasis.find(function (node) { return node.value.cooked.length > 0; })) { if (expression.type === 'MemberExpression') { return '${' + expression.property.name + expression.parent.quasis.find(function (node) { return node.value.cooked.length > 0; }).value.cooked + '}'; } return '${' + expression.name + expression.parent.quasis.find(function (node) { return node.value.cooked.length > 0; }).value.cooked + '}'; } return '${' + expression.name + '}'; } else if (expression.type === 'LogicalExpression') { return '${' + (expression.left.name || expression.left.value) + ' ' + expression.operator + ' ' + (expression.right.name || expression.right.value) + '}'; } }).join(''); return expressions; } /* This is either a literal or a template element: <input attr="foo" /> or <input attr={"foo"} /> or <input attr={`foo`} /> */ return (attr === null || attr === void 0 ? void 0 : (_attr$value3 = attr.value) === null || _attr$value3 === void 0 ? void 0 : _attr$value3.value) || (attr === null || attr === void 0 ? void 0 : (_attr$value4 = attr.value) === null || _attr$value4 === void 0 ? void 0 : (_attr$value4$expressi = _attr$value4.expression) === null || _attr$value4$expressi === void 0 ? void 0 : _attr$value4$expressi.value) || (attr === null || attr === void 0 ? void 0 : (_attr$value5 = attr.value) === null || _attr$value5 === void 0 ? void 0 : (_attr$value5$expressi = _attr$value5.expression) === null || _attr$value5$expressi === void 0 ? void 0 : (_attr$value5$expressi2 = _attr$value5$expressi.quasis) === null || _attr$value5$expressi2 === void 0 ? void 0 : (_attr$value5$expressi3 = _attr$value5$expressi2[0]) === null || _attr$value5$expressi3 === void 0 ? void 0 : (_attr$value5$expressi4 = _attr$value5$expressi3.value) === null || _attr$value5$expressi4 === void 0 ? void 0 : _attr$value5$expressi4.raw); }; exports.getAttributeValue = getAttributeValue;