diff --git a/lib/core/imports/index.js b/lib/core/imports/index.js index 63622d7636..89b2aca239 100644 --- a/lib/core/imports/index.js +++ b/lib/core/imports/index.js @@ -1,4 +1,4 @@ -import { CssSelectorParser } from 'css-selector-parser'; +import { createParser } from 'css-selector-parser'; import doT from '@deque/dot'; import emojiRegexText from 'emoji-regex'; import memoize from 'memoizee'; @@ -40,10 +40,36 @@ if (window.Uint32Array) { } } +/** + * @deprecated + */ +class CSSSelectorParser { + constructor() { + this.parser = createParser({ + syntax: { + pseudoClasses: { + definitions: { + Selector: ['is', 'not'] + } + }, + combinators: ['>'], + attributes: { + operators: ['^=', '$=', '*=', '~='] + } + } + }); + } + + parse(selector) { + return this.parser.parse(selector); + } +} + /** * Namespace `axe.imports` which holds required external dependencies * * @namespace imports + * @deprecated * @memberof axe */ -export { CssSelectorParser, doT, emojiRegexText, memoize, Color as Colorjs }; +export { CSSSelectorParser, doT, emojiRegexText, memoize, Color as Colorjs }; diff --git a/lib/core/utils/css-parser.js b/lib/core/utils/css-parser.js index 355a40236d..0061230a14 100644 --- a/lib/core/utils/css-parser.js +++ b/lib/core/utils/css-parser.js @@ -1,9 +1,17 @@ -import { CssSelectorParser } from 'css-selector-parser'; +import { createParser } from 'css-selector-parser'; -const parser = new CssSelectorParser(); -parser.registerSelectorPseudos('not'); -parser.registerSelectorPseudos('is'); -parser.registerNestingOperators('>'); -parser.registerAttrEqualityMods('^', '$', '*', '~'); +const parse = createParser({ + syntax: { + pseudoClasses: { + definitions: { + Selector: ['is', 'not'] + } + }, + combinators: ['>'], + attributes: { + operators: ['^=', '$=', '*=', '~='] + } + } +}); -export default parser; +export default { parse }; diff --git a/package-lock.json b/package-lock.json index ff1ce315df..43d4697fc7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -20,12 +20,12 @@ "browser-driver-manager": "1.0.4", "chai": "^4.3.7", "chalk": "^4.x", - "chromedriver": "latest", + "chromedriver": "*", "clone": "^2.1.2", "colorjs.io": "^0.4.3", "conventional-commits-parser": "^5.0.0", "core-js": "^3.27.1", - "css-selector-parser": "^1.4.1", + "css-selector-parser": "^3.0.2", "emoji-regex": "^10.2.1", "es6-promise": "^4.2.8", "esbuild": "^0.10.x", @@ -4194,10 +4194,20 @@ } }, "node_modules/css-selector-parser": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/css-selector-parser/-/css-selector-parser-1.4.1.tgz", - "integrity": "sha512-HYPSb7y/Z7BNDCOrakL4raGO2zltZkbeXyAd6Tg9obzix6QhzxCotdBl6VT0Dv4vZfJGVz3WL/xaEI9Ly3ul0g==", - "dev": true + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/css-selector-parser/-/css-selector-parser-3.0.2.tgz", + "integrity": "sha512-eA5pvYwgtffuxQlDk0gJRApDUKgfwlsQBMAH6uawKuuilTLfxKIOtzyV63Y3IC0LWnDCeTJ/I1qYmlfYvvMzDg==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/mdevils" + }, + { + "type": "patreon", + "url": "https://patreon.com/mdevils" + } + ] }, "node_modules/css-what": { "version": "6.1.0", @@ -15638,9 +15648,9 @@ } }, "css-selector-parser": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/css-selector-parser/-/css-selector-parser-1.4.1.tgz", - "integrity": "sha512-HYPSb7y/Z7BNDCOrakL4raGO2zltZkbeXyAd6Tg9obzix6QhzxCotdBl6VT0Dv4vZfJGVz3WL/xaEI9Ly3ul0g==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/css-selector-parser/-/css-selector-parser-3.0.2.tgz", + "integrity": "sha512-eA5pvYwgtffuxQlDk0gJRApDUKgfwlsQBMAH6uawKuuilTLfxKIOtzyV63Y3IC0LWnDCeTJ/I1qYmlfYvvMzDg==", "dev": true }, "css-what": { diff --git a/package.json b/package.json index 878bf3d12c..1a29799102 100644 --- a/package.json +++ b/package.json @@ -125,7 +125,7 @@ "colorjs.io": "^0.4.3", "conventional-commits-parser": "^5.0.0", "core-js": "^3.27.1", - "css-selector-parser": "^1.4.1", + "css-selector-parser": "^3.0.2", "emoji-regex": "^10.2.1", "es6-promise": "^4.2.8", "esbuild": "^0.10.x",