UNPKG

@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
"use strict"; 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; }