@master/eslint-plugin-css 2.0.0-rc.47 → 2.0.0-rc.48

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -8,12 +8,12 @@ function filterCollisionClasses(classNames, css$1) {
8
8
  const collisionClassesRecord = {};
9
9
  for(let i = 0; i < classNames.length; i++){
10
10
  const className = classNames[i];
11
- const rule = validRules.find((eachValidRule)=>eachValidRule.className === className);
11
+ const rule = validRules.find((eachValidRule)=>eachValidRule.name === className);
12
12
  const collisionClasses = [];
13
13
  if (rule) {
14
14
  for(let j = 0; j < classNames.length; j++){
15
15
  const compareClassName = classNames[j];
16
- const compareRule = validRules.find((eachValidRule)=>eachValidRule.className === compareClassName);
16
+ const compareRule = validRules.find((eachValidRule)=>eachValidRule.name === compareClassName);
17
17
  if (i !== j && compareRule && css.areRulesDuplicated(rule, compareRule) && css.areRuleStatesEqual(rule, compareRule)) {
18
18
  collisionClasses.push(compareClassName);
19
19
  }
@@ -6,12 +6,12 @@ function filterCollisionClasses(classNames, css) {
6
6
  const collisionClassesRecord = {};
7
7
  for(let i = 0; i < classNames.length; i++){
8
8
  const className = classNames[i];
9
- const rule = validRules.find((eachValidRule)=>eachValidRule.className === className);
9
+ const rule = validRules.find((eachValidRule)=>eachValidRule.name === className);
10
10
  const collisionClasses = [];
11
11
  if (rule) {
12
12
  for(let j = 0; j < classNames.length; j++){
13
13
  const compareClassName = classNames[j];
14
- const compareRule = validRules.find((eachValidRule)=>eachValidRule.className === compareClassName);
14
+ const compareRule = validRules.find((eachValidRule)=>eachValidRule.name === compareClassName);
15
15
  if (i !== j && compareRule && areRulesDuplicated(rule, compareRule) && areRuleStatesEqual(rule, compareRule)) {
16
16
  collisionClasses.push(compareClassName);
17
17
  }
@@ -31,7 +31,9 @@ var classCollision = createRule({
31
31
  const sourceCode = context.sourceCode;
32
32
  const sourceCodeLines = sourceCode.lines;
33
33
  const nodeStartLine = node.loc.start.line;
34
+ const nodeStartColumn = node.loc.start.column;
34
35
  const nodeEndLine = node.loc.end.line;
36
+ const nodeEndColumn = node.loc.end.column;
35
37
  // todo css
36
38
  const collisionClassesRecord = filterCollisionClasses(classNames, css);
37
39
  for(const className in collisionClassesRecord){
@@ -43,7 +45,7 @@ var classCollision = createRule({
43
45
  fixClassNames = fixClassNames.replace(new RegExp(`\\s+${regexSafe}|${regexSafe}\\s+`), '');
44
46
  }
45
47
  context.report({
46
- loc: findLoc(className, sourceCodeLines, nodeStartLine, nodeEndLine),
48
+ loc: findLoc(className, sourceCodeLines, nodeStartLine, nodeStartColumn, nodeEndLine, nodeEndColumn),
47
49
  messageId: 'collisionClass',
48
50
  data: {
49
51
  message: `"${className}" applies the same CSS declarations as ${collisionClassNamesMsg}.`
@@ -29,7 +29,9 @@ var classCollision = createRule({
29
29
  const sourceCode = context.sourceCode;
30
30
  const sourceCodeLines = sourceCode.lines;
31
31
  const nodeStartLine = node.loc.start.line;
32
+ const nodeStartColumn = node.loc.start.column;
32
33
  const nodeEndLine = node.loc.end.line;
34
+ const nodeEndColumn = node.loc.end.column;
33
35
  // todo css
34
36
  const collisionClassesRecord = filterCollisionClasses(classNames, css);
35
37
  for(const className in collisionClassesRecord){
@@ -41,7 +43,7 @@ var classCollision = createRule({
41
43
  fixClassNames = fixClassNames.replace(new RegExp(`\\s+${regexSafe}|${regexSafe}\\s+`), '');
42
44
  }
43
45
  context.report({
44
- loc: findLoc(className, sourceCodeLines, nodeStartLine, nodeEndLine),
46
+ loc: findLoc(className, sourceCodeLines, nodeStartLine, nodeStartColumn, nodeEndLine, nodeEndColumn),
45
47
  messageId: 'collisionClass',
46
48
  data: {
47
49
  message: `"${className}" applies the same CSS declarations as ${collisionClassNamesMsg}.`
@@ -150,9 +150,11 @@ var classOrder = createRule({
150
150
  validatedClassNamesValue = prefix + validatedClassNamesValue + suffix;
151
151
  const sourceCodeLines = sourceCode.lines;
152
152
  const nodeStartLine = node.loc.start.line;
153
+ const nodeStartColumn = node.loc.start.column;
153
154
  const nodeEndLine = node.loc.end.line;
155
+ const nodeEndColumn = node.loc.end.column;
154
156
  context.report({
155
- loc: findLoc(originalClassNamesValue, sourceCodeLines, nodeStartLine, nodeEndLine),
157
+ loc: findLoc(originalClassNamesValue, sourceCodeLines, nodeStartLine, nodeStartColumn, nodeEndLine, nodeEndColumn),
156
158
  messageId: 'invalidClassOrder',
157
159
  fix: function(fixer) {
158
160
  return fixer.replaceTextRange([
@@ -148,9 +148,11 @@ var classOrder = createRule({
148
148
  validatedClassNamesValue = prefix + validatedClassNamesValue + suffix;
149
149
  const sourceCodeLines = sourceCode.lines;
150
150
  const nodeStartLine = node.loc.start.line;
151
+ const nodeStartColumn = node.loc.start.column;
151
152
  const nodeEndLine = node.loc.end.line;
153
+ const nodeEndColumn = node.loc.end.column;
152
154
  context.report({
153
- loc: findLoc(originalClassNamesValue, sourceCodeLines, nodeStartLine, nodeEndLine),
155
+ loc: findLoc(originalClassNamesValue, sourceCodeLines, nodeStartLine, nodeStartColumn, nodeEndLine, nodeEndColumn),
154
156
  messageId: 'invalidClassOrder',
155
157
  fix: function(fixer) {
156
158
  return fixer.replaceTextRange([
@@ -32,14 +32,16 @@ var classValidation = createRule({
32
32
  const sourceCode = context.sourceCode;
33
33
  const sourceCodeLines = sourceCode.lines;
34
34
  const nodeStartLine = node.loc.start.line;
35
+ const nodeStartColumn = node.loc.start.column;
35
36
  const nodeEndLine = node.loc.end.line;
37
+ const nodeEndColumn = node.loc.end.column;
36
38
  for (const className of classNames){
37
39
  const { matched, errors } = cssValidator.validate(className, css);
38
40
  if (errors.length > 0) {
39
41
  for (const error of errors){
40
42
  if (matched) {
41
43
  context.report({
42
- loc: findLoc(className, sourceCodeLines, nodeStartLine, nodeEndLine),
44
+ loc: findLoc(className, sourceCodeLines, nodeStartLine, nodeStartColumn, nodeEndLine, nodeEndColumn),
43
45
  messageId: 'invalidClass',
44
46
  data: {
45
47
  message: error.message + '.'
@@ -47,7 +49,7 @@ var classValidation = createRule({
47
49
  });
48
50
  } else if (options.disallowUnknownClass) {
49
51
  context.report({
50
- loc: findLoc(className, sourceCodeLines, nodeStartLine, nodeEndLine),
52
+ loc: findLoc(className, sourceCodeLines, nodeStartLine, nodeStartColumn, nodeEndLine, nodeEndColumn),
51
53
  messageId: 'disallowUnknownClass',
52
54
  data: {
53
55
  message: `"${className}" is not a valid or known class.`
@@ -30,14 +30,16 @@ var classValidation = createRule({
30
30
  const sourceCode = context.sourceCode;
31
31
  const sourceCodeLines = sourceCode.lines;
32
32
  const nodeStartLine = node.loc.start.line;
33
+ const nodeStartColumn = node.loc.start.column;
33
34
  const nodeEndLine = node.loc.end.line;
35
+ const nodeEndColumn = node.loc.end.column;
34
36
  for (const className of classNames){
35
37
  const { matched, errors } = validate(className, css);
36
38
  if (errors.length > 0) {
37
39
  for (const error of errors){
38
40
  if (matched) {
39
41
  context.report({
40
- loc: findLoc(className, sourceCodeLines, nodeStartLine, nodeEndLine),
42
+ loc: findLoc(className, sourceCodeLines, nodeStartLine, nodeStartColumn, nodeEndLine, nodeEndColumn),
41
43
  messageId: 'invalidClass',
42
44
  data: {
43
45
  message: error.message + '.'
@@ -45,7 +47,7 @@ var classValidation = createRule({
45
47
  });
46
48
  } else if (options.disallowUnknownClass) {
47
49
  context.report({
48
- loc: findLoc(className, sourceCodeLines, nodeStartLine, nodeEndLine),
50
+ loc: findLoc(className, sourceCodeLines, nodeStartLine, nodeStartColumn, nodeEndLine, nodeEndColumn),
49
51
  messageId: 'disallowUnknownClass',
50
52
  data: {
51
53
  message: `"${className}" is not a valid or known class.`
@@ -2,7 +2,7 @@
2
2
 
3
3
  var indexOfAll = require('./index-of-all.cjs');
4
4
 
5
- function findLoc(text, lines, startLine, endLine) {
5
+ function findLoc(text, lines, startLine, startColumn, endLine, endColumn) {
6
6
  const targetLines = text.match(/.+(?:\r\n|\n)?/g);
7
7
  let checkingTargetLine = 0;
8
8
  let resultStart = null;
@@ -13,6 +13,9 @@ function findLoc(text, lines, startLine, endLine) {
13
13
  const indexes = indexOfAll.indexOfAll(sourceCodeLine, content);
14
14
  if (indexes.length > 0) {
15
15
  for (const index of indexes){
16
+ if (i === startLine && index < startColumn || i === endLine && index > endColumn) {
17
+ continue;
18
+ }
16
19
  if (index !== 0 && sourceCodeLine[index - 1].match(/\w/) || index + content.length < sourceCodeLine.length && sourceCodeLine[index + content.length].match(/\w/)) {
17
20
  continue;
18
21
  }
@@ -1,4 +1,4 @@
1
- export default function findLoc(text: any, lines: any, startLine: any, endLine: any): {
1
+ export default function findLoc(text: any, lines: any, startLine: any, startColumn: any, endLine: any, endColumn: any): {
2
2
  start: any;
3
3
  end: {
4
4
  line: any;
@@ -1,6 +1,6 @@
1
1
  import { indexOfAll } from './index-of-all.mjs';
2
2
 
3
- function findLoc(text, lines, startLine, endLine) {
3
+ function findLoc(text, lines, startLine, startColumn, endLine, endColumn) {
4
4
  const targetLines = text.match(/.+(?:\r\n|\n)?/g);
5
5
  let checkingTargetLine = 0;
6
6
  let resultStart = null;
@@ -11,6 +11,9 @@ function findLoc(text, lines, startLine, endLine) {
11
11
  const indexes = indexOfAll(sourceCodeLine, content);
12
12
  if (indexes.length > 0) {
13
13
  for (const index of indexes){
14
+ if (i === startLine && index < startColumn || i === endLine && index > endColumn) {
15
+ continue;
16
+ }
14
17
  if (index !== 0 && sourceCodeLine[index - 1].match(/\w/) || index + content.length < sourceCodeLine.length && sourceCodeLine[index + content.length].match(/\w/)) {
15
18
  continue;
16
19
  }
@@ -85,7 +85,7 @@ var extractRangeFromNode = require('./extract-range-from-node.cjs');
85
85
  // Ignore specific keys defined in settings
86
86
  return;
87
87
  }
88
- parseNodeRecursive(rootNode, isUsedByClassNamesPlugin ? prop.key : prop.value, cb, skipConditional, forceIsolation, ignoredKeys, context);
88
+ parseNodeRecursive(prop, isUsedByClassNamesPlugin ? prop.key : prop.value, cb, skipConditional, forceIsolation, ignoredKeys, context);
89
89
  });
90
90
  return;
91
91
  case 'Property':
@@ -83,7 +83,7 @@ import extractRangeFromNode from './extract-range-from-node.mjs';
83
83
  // Ignore specific keys defined in settings
84
84
  return;
85
85
  }
86
- parseNodeRecursive(rootNode, isUsedByClassNamesPlugin ? prop.key : prop.value, cb, skipConditional, forceIsolation, ignoredKeys, context);
86
+ parseNodeRecursive(prop, isUsedByClassNamesPlugin ? prop.key : prop.value, cb, skipConditional, forceIsolation, ignoredKeys, context);
87
87
  });
88
88
  return;
89
89
  case 'Property':
package/package.json CHANGED
@@ -1 +1 @@
1
- {"name":"@master/eslint-plugin-css","type":"module","scripts":{"build":"techor build \"src/**/*.{js,ts}\"","dev":"pnpm build --watch","test":"vitest","type-check":"tsc --noEmit","lint":"eslint"},"keywords":["mastercss","eslint","eslintplugin"],"license":"MIT","description":"Master CSS ESLint Plugin","author":"Aoyue Design LLC.","funding":"https://rc.css.master.co/sponsor","homepage":"https://css.master.co","bugs":{"url":"https://github.com/master-co/css/issues"},"repository":{"type":"git","url":"https://github.com/master-co/css.git","directory":"packages/eslint-plugin"},"sideEffects":false,"main":"./dist/index.cjs","module":"./dist/index.mjs","jsnext:main":"./dist/index.mjs","esnext":"./dist/index.mjs","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.cjs"},"./configs/*":{"types":"./dist/configs/*.d.ts","import":"./dist/configs/*.mjs","require":"./dist/configs/*.cjs"}},"files":["dist"],"publishConfig":{"access":"public","provenance":true},"dependencies":{"@master/css":"^2.0.0-rc.47","@master/css-explore-config":"^2.0.0-rc.47","@master/css-validator":"^2.0.0-rc.47","@typescript-eslint/utils":"^8.15.0","synckit":"^0.9.2","typescript-eslint":"^8.15.0"},"devDependencies":{"@angular-eslint/template-parser":"^18.4.1","@master/css-explore-config":"^2.0.0-rc.47","@typescript-eslint/rule-tester":"^8.15.0","eslint":"^9.15.0","eslint-plugin-markdown":"^5.1.0","eslint-plugin-mdx":"^3.1.5","shared":"^2.0.0-rc.47","svelte-eslint-parser":"^0.43.0","ts-node":"^10.9.2","vue-eslint-parser":"^9.4.3"},"version":"2.0.0-rc.47"}
1
+ {"name":"@master/eslint-plugin-css","type":"module","scripts":{"build":"techor build \"src/**/*.{js,ts}\"","dev":"pnpm build --watch","test":"vitest","type-check":"tsc --noEmit","lint":"eslint"},"keywords":["mastercss","eslint","eslintplugin"],"license":"MIT","description":"Master CSS ESLint Plugin","author":"Aoyue Design LLC.","funding":"https://rc.css.master.co/sponsor","homepage":"https://css.master.co","bugs":{"url":"https://github.com/master-co/css/issues"},"repository":{"type":"git","url":"https://github.com/master-co/css.git","directory":"packages/eslint-plugin"},"sideEffects":false,"main":"./dist/index.cjs","module":"./dist/index.mjs","jsnext:main":"./dist/index.mjs","esnext":"./dist/index.mjs","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.cjs"},"./configs/*":{"types":"./dist/configs/*.d.ts","import":"./dist/configs/*.mjs","require":"./dist/configs/*.cjs"}},"files":["dist"],"publishConfig":{"access":"public","provenance":true},"dependencies":{"@master/css":"^2.0.0-rc.48","@master/css-explore-config":"^2.0.0-rc.48","@master/css-validator":"^2.0.0-rc.48","@typescript-eslint/utils":"^8.15.0","synckit":"^0.9.2","typescript-eslint":"^8.15.0"},"devDependencies":{"@angular-eslint/template-parser":"^18.4.1","@master/css-explore-config":"^2.0.0-rc.48","@typescript-eslint/rule-tester":"^8.15.0","eslint":"^9.15.0","eslint-plugin-markdown":"^5.1.0","eslint-plugin-mdx":"^3.1.5","shared":"^2.0.0-rc.48","svelte-eslint-parser":"^0.43.0","ts-node":"^10.9.2","vue-eslint-parser":"^9.4.3"},"version":"2.0.0-rc.48"}