UNPKG

@atlaskit/eslint-plugin-design-system

Version:

The essential plugin for use with the Atlassian Design System.

45 lines 1.53 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'; const IMPORT_SOURCES = [CSS_IN_JS_IMPORTS.compiled, CSS_IN_JS_IMPORTS.atlaskitCss]; const createUnusedCssMapRule = context => { const { text } = getSourceCode(context); if (IMPORT_SOURCES.every(importSource => !text.includes(importSource))) { return {}; } return { CallExpression(node) { const references = getScope(context, node).references; if (!isCssMap(node.callee, references, IMPORT_SOURCES)) { return; } const cssMapObject = getCssMapObject(node); if (!cssMapObject) { return; } const unusedCssMapChecker = new UnusedCssMapChecker(cssMapObject, context, node); unusedCssMapChecker.run(); } }; }; const 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;