UNPKG

eslint-plugin-gamut

Version:

Shared eslint plugin for Gamut applications

51 lines 2.1 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const utils_1 = require("@typescript-eslint/utils"); const createRule_1 = require("./createRule"); const utils_2 = require("./utils"); exports.default = (0, createRule_1.createRule)({ create(context) { return { TaggedTemplateExpression(node) { if (node.tag.type === utils_1.AST_NODE_TYPES.MemberExpression) { if (node.tag.object.type !== 'Identifier') return; const expressionVariable = node.tag.object.name; const arrowFuncExpression = node.quasi.expressions[0]; if (arrowFuncExpression?.type !== utils_1.AST_NODE_TYPES.ArrowFunctionExpression) return; if (!(0, utils_2.isNamedVariableTheme)(arrowFuncExpression)) return; if (expressionVariable === 'styled') { const { themeValueKey, themeCategory } = (0, utils_2.checkArrowFuncBodyTypesAndReturnThemeVars)(arrowFuncExpression) || {}; if (!themeValueKey) return; context.report({ fix: (fixer) => { return fixer.replaceText(arrowFuncExpression, `themed('${themeCategory}.${themeValueKey}')`); }, messageId: 'preferThemed', node, }); } } }, }; }, defaultOptions: [], meta: { docs: { description: 'Prefer themed style utility', recommended: 'error', }, fixable: 'code', messages: { preferThemed: 'Use the our variants API or themed style utility from gamut-styles instead.', }, type: 'suggestion', schema: [], }, name: 'prefer-themed', }); //# sourceMappingURL=prefer-themed.js.map