@atlaskit/eslint-plugin-ui-styling-standard
Version:
The eslint plugin to enforce and educate on Atlassian's UI Styling Standard
30 lines (28 loc) • 1.1 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.parseSelector = parseSelector;
var _postcssSelectorParser = _interopRequireDefault(require("postcss-selector-parser"));
var _contextCompat = require("@atlaskit/eslint-utils/context-compat");
var cssSelectorProcessor = (0, _postcssSelectorParser.default)();
var selectorCache = new WeakMap();
/**
* Parse each selector once per linted source file. Consumers treat the returned AST as read-only.
*/
function parseSelector(context, selectorText) {
var sourceCode = (0, _contextCompat.getSourceCode)(context);
var sourceFileCache = selectorCache.get(sourceCode);
if (!sourceFileCache) {
sourceFileCache = new Map();
selectorCache.set(sourceCode, sourceFileCache);
}
var cachedSelector = sourceFileCache.get(selectorText);
if (cachedSelector) {
return cachedSelector;
}
var selector = cssSelectorProcessor.astSync(selectorText);
sourceFileCache.set(selectorText, selector);
return selector;
}