@atlaskit/eslint-plugin-design-system
Version:
The essential plugin for use with the Atlassian Design System.
72 lines (68 loc) • 2.53 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.JSXAttribute = void 0;
var _eslintCodemodUtils = require("eslint-codemod-utils");
var HelperJSXAttribute = exports.JSXAttribute = {
getName: function getName(node) {
if (!(0, _eslintCodemodUtils.isNodeOfType)(node, 'JSXAttribute')) {
throw new Error('Not a JSXAttribute');
}
if (!(0, _eslintCodemodUtils.isNodeOfType)(node.name, 'JSXIdentifier')) {
throw new Error('name is not a JSXIdentifier');
}
return node.name.name;
},
updateName: function updateName(node, name, fixer) {
if (!(0, _eslintCodemodUtils.isNodeOfType)(node, 'JSXAttribute')) {
throw new Error('Not a JSXAttribute');
}
if (!(0, _eslintCodemodUtils.isNodeOfType)(node.name, 'JSXIdentifier')) {
throw new Error('name is not a JSXIdentifier');
}
return fixer.replaceText(node.name, (0, _eslintCodemodUtils.literal)(name).toString());
},
/**
* A JSXAttribute value can be many things:
* - css='myStyles'
* - css={myStyles}
* - css={[styles1, styles2]}
* - header={<></>}
* - css={styleMap.header}
* - css={...styles}
*
* Currently, `getValue` has only implemented strategies for when the value is a string, or an ExpressionStatement
* If you need additional functionality add it, and set the correct `type` on the returned object
*/
getValue: function getValue(node) {
if (!(0, _eslintCodemodUtils.isNodeOfType)(node, 'JSXAttribute')) {
return;
}
if (!node.value) {
return;
}
// handle `css={myStyles}`
if ((0, _eslintCodemodUtils.isNodeOfType)(node.value, 'JSXExpressionContainer') && (0, _eslintCodemodUtils.isNodeOfType)(node.value.expression, 'Identifier')) {
return {
type: 'ExpressionStatement',
value: node.value.expression.name
};
}
// handle `css={true}`
if ((0, _eslintCodemodUtils.isNodeOfType)(node.value, 'JSXExpressionContainer') && (0, _eslintCodemodUtils.isNodeOfType)(node.value.expression, 'Literal')) {
return {
type: 'ExpressionStatement Literal',
value: node.value.expression.value
};
}
// handle `css='myStyles'`
if ((0, _eslintCodemodUtils.isNodeOfType)(node.value, 'Literal') && node.value.value) {
var _node$value$value;
return {
type: 'Literal',
value: (_node$value$value = node.value.value) === null || _node$value$value === void 0 ? void 0 : _node$value$value.toString()
};
}
}
};