UNPKG

@atlaskit/eslint-plugin-design-system

Version:

The essential plugin for use with the Atlassian Design System.

72 lines (68 loc) 2.53 kB
"use strict"; 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() }; } } };