From dbb0cfad4e92a2a40d9509e5256f279f3d9b66f1 Mon Sep 17 00:00:00 2001 From: Denys Kniazevych Date: Fri, 27 Dec 2019 19:38:18 +0100 Subject: [PATCH 1/4] Fix SVG tags whitelist in selector-type-no-unknown rule (#4472) --- .gitignore | 1 + lib/rules/selector-type-no-unknown/__tests__/index.js | 4 ++++ lib/rules/selector-type-no-unknown/index.js | 10 +++++++++- 3 files changed, 14 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 44fb258e98..de9fb93677 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ +.idea node_modules *.log .coverage diff --git a/lib/rules/selector-type-no-unknown/__tests__/index.js b/lib/rules/selector-type-no-unknown/__tests__/index.js index 88b415526d..c1bb2d74f8 100644 --- a/lib/rules/selector-type-no-unknown/__tests__/index.js +++ b/lib/rules/selector-type-no-unknown/__tests__/index.js @@ -85,6 +85,10 @@ testRule(rule, { code: 'circle {}', description: 'svg tags', }, + { + code: '.test foreignObject { color: white }', + description: 'svg tags', + }, { code: '@media keyframes { 0.0% {} 49.1% {} 100% {} }', description: 'standard usage of keyframe selectors', diff --git a/lib/rules/selector-type-no-unknown/index.js b/lib/rules/selector-type-no-unknown/index.js index af9f8f94b0..159aac4a23 100644 --- a/lib/rules/selector-type-no-unknown/index.js +++ b/lib/rules/selector-type-no-unknown/index.js @@ -9,12 +9,20 @@ const isStandardSyntaxTypeSelector = require('../../utils/isStandardSyntaxTypeSe const keywordSets = require('../../reference/keywordSets'); const mathMLTags = require('mathml-tag-names'); const optionsMatches = require('../../utils/optionsMatches'); +const originSvgTags = require('svg-tags'); const parseSelector = require('../../utils/parseSelector'); const report = require('../../utils/report'); const ruleMessages = require('../../utils/ruleMessages'); -const svgTags = require('svg-tags'); const validateOptions = require('../../utils/validateOptions'); +/** + * @description Normalize SVG tags. + * 'svg-tags' module exports tags in camelCase format while other tags modules + * (e.g. 'html-tags', 'mathml-tag-names') contain only lower-cased strings + * @type {string[]} + */ +const svgTags = originSvgTags.map((tag) => tag.toLowerCase()); + const ruleName = 'selector-type-no-unknown'; const messages = ruleMessages(ruleName, { From cb28e31780fca86ca81403d0fcd3db2614f401b6 Mon Sep 17 00:00:00 2001 From: Denys Kniazevych Date: Fri, 27 Dec 2019 20:06:03 +0100 Subject: [PATCH 2/4] Revert .gitignore --- .gitignore | 1 - 1 file changed, 1 deletion(-) diff --git a/.gitignore b/.gitignore index de9fb93677..44fb258e98 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,3 @@ -.idea node_modules *.log .coverage From ceca4ba621b64add4a280d3791d6865f2262983b Mon Sep 17 00:00:00 2001 From: Denys Kniazevych Date: Fri, 27 Dec 2019 20:12:51 +0100 Subject: [PATCH 3/4] Add case-sensitive SVG tags check --- lib/rules/selector-type-no-unknown/index.js | 13 +++---------- 1 file changed, 3 insertions(+), 10 deletions(-) diff --git a/lib/rules/selector-type-no-unknown/index.js b/lib/rules/selector-type-no-unknown/index.js index 159aac4a23..592725ec39 100644 --- a/lib/rules/selector-type-no-unknown/index.js +++ b/lib/rules/selector-type-no-unknown/index.js @@ -9,20 +9,12 @@ const isStandardSyntaxTypeSelector = require('../../utils/isStandardSyntaxTypeSe const keywordSets = require('../../reference/keywordSets'); const mathMLTags = require('mathml-tag-names'); const optionsMatches = require('../../utils/optionsMatches'); -const originSvgTags = require('svg-tags'); const parseSelector = require('../../utils/parseSelector'); const report = require('../../utils/report'); const ruleMessages = require('../../utils/ruleMessages'); +const svgTags = require('svg-tags'); const validateOptions = require('../../utils/validateOptions'); -/** - * @description Normalize SVG tags. - * 'svg-tags' module exports tags in camelCase format while other tags modules - * (e.g. 'html-tags', 'mathml-tag-names') contain only lower-cased strings - * @type {string[]} - */ -const svgTags = originSvgTags.map((tag) => tag.toLowerCase()); - const ruleName = 'selector-type-no-unknown'; const messages = ruleMessages(ruleName, { @@ -95,7 +87,8 @@ const rule = function(actual, options) { if ( htmlTags.includes(tagNameLowerCase) || - svgTags.includes(tagNameLowerCase) || + // SVG tags are case-sensitive + svgTags.includes(tagName) || keywordSets.nonStandardHtmlTags.has(tagNameLowerCase) || mathMLTags.includes(tagNameLowerCase) ) { From 8812f245def75ae8903cb32d2825b1b4bbbf89e5 Mon Sep 17 00:00:00 2001 From: Denys Kniazevych Date: Fri, 27 Dec 2019 20:33:56 +0100 Subject: [PATCH 4/4] Update tests for selector-type-no-unknown rule --- lib/rules/selector-type-no-unknown/__tests__/index.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/rules/selector-type-no-unknown/__tests__/index.js b/lib/rules/selector-type-no-unknown/__tests__/index.js index c1bb2d74f8..642a7c2573 100644 --- a/lib/rules/selector-type-no-unknown/__tests__/index.js +++ b/lib/rules/selector-type-no-unknown/__tests__/index.js @@ -86,8 +86,8 @@ testRule(rule, { description: 'svg tags', }, { - code: '.test foreignObject { color: white }', - description: 'svg tags', + code: 'foreignObject {}', + description: 'case-sensitive svg tags', }, { code: '@media keyframes { 0.0% {} 49.1% {} 100% {} }',