UNPKG

@atlaskit/eslint-plugin-design-system

Version:

The essential plugin for use with the Atlassian Design System.

46 lines 1.63 kB
import { getScope, getSourceCode } from '@atlaskit/eslint-utils/context-compat'; import { CSS_IN_JS_IMPORTS, isCssMap } from '@atlaskit/eslint-utils/is-supported-import'; import { createLintRule } from '../utils/create-lint-rule'; import { getCssMapObject } from './get-css-map-object'; import { UnusedCssMapChecker } from './unused-css-map-checker'; var IMPORT_SOURCES = [CSS_IN_JS_IMPORTS.compiled, CSS_IN_JS_IMPORTS.atlaskitCss]; var createUnusedCssMapRule = function createUnusedCssMapRule(context) { var _getSourceCode = getSourceCode(context), text = _getSourceCode.text; if (IMPORT_SOURCES.every(function (importSource) { return !text.includes(importSource); })) { return {}; } return { CallExpression: function CallExpression(node) { var references = getScope(context, node).references; if (!isCssMap(node.callee, references, IMPORT_SOURCES)) { return; } var cssMapObject = getCssMapObject(node); if (!cssMapObject) { return; } var unusedCssMapChecker = new UnusedCssMapChecker(cssMapObject, context, node); unusedCssMapChecker.run(); } }; }; var noUnusedCssMapRule = createLintRule({ meta: { name: 'no-unused-css-map', docs: { description: 'Detects unused styles in cssMap objects to help keep code clean.', recommended: true, severity: 'warn' }, messages: { unusedCssMapStyle: 'Unused style "{{styleName}}" in cssMap. Consider removing it if not needed.' }, schema: [], type: 'suggestion' }, create: createUnusedCssMapRule }); export default noUnusedCssMapRule;