@atlaskit/eslint-plugin-design-system
Version:
The essential plugin for use with the Atlassian Design System.
46 lines • 1.63 kB
JavaScript
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;