@master/eslint-plugin-css 2.0.0-rc.71 → 2.0.0-rc.73

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.
Files changed (47) hide show
  1. package/README.md +68 -11
  2. package/dist/configs/recommended.cjs +4 -3
  3. package/dist/configs/recommended.mjs +4 -3
  4. package/dist/plugin.cjs +10 -6
  5. package/dist/plugin.mjs +10 -6
  6. package/dist/rules/no-conflicting-classes.cjs +101 -0
  7. package/dist/rules/no-conflicting-classes.d.ts +4 -0
  8. package/dist/rules/no-conflicting-classes.mjs +99 -0
  9. package/dist/rules/no-invalid-classes.cjs +51 -0
  10. package/dist/rules/{class-validation.d.ts → no-invalid-classes.d.ts} +1 -1
  11. package/dist/rules/no-invalid-classes.mjs +49 -0
  12. package/dist/rules/no-unapproved-raw-values.cjs +77 -0
  13. package/dist/rules/no-unapproved-raw-values.d.ts +8 -0
  14. package/dist/rules/no-unapproved-raw-values.mjs +75 -0
  15. package/dist/rules/prefer-canonical-classes.cjs +112 -0
  16. package/dist/rules/prefer-canonical-classes.d.ts +5 -0
  17. package/dist/rules/prefer-canonical-classes.mjs +110 -0
  18. package/dist/rules/{class-order.cjs → sort-classes.cjs} +10 -21
  19. package/dist/rules/{class-order.mjs → sort-classes.mjs} +10 -21
  20. package/dist/settings-schema.cjs +29 -23
  21. package/dist/settings-schema.d.ts +3 -2
  22. package/dist/settings-schema.mjs +25 -23
  23. package/dist/settings.cjs +2 -8
  24. package/dist/settings.d.ts +2 -2
  25. package/dist/settings.mjs +2 -8
  26. package/dist/utils/define-visitors.cjs +1 -1
  27. package/dist/utils/define-visitors.mjs +1 -1
  28. package/dist/utils/master-css.cjs +2 -82
  29. package/dist/utils/master-css.d.ts +0 -16
  30. package/dist/utils/master-css.mjs +1 -75
  31. package/dist/utils/resolve-class-node.cjs +18 -67
  32. package/dist/utils/resolve-class-node.d.ts +15 -7
  33. package/dist/utils/resolve-class-node.mjs +18 -67
  34. package/dist/utils/resolve-context.d.ts +1 -1
  35. package/package.json +1 -1
  36. package/dist/common.cjs +0 -7
  37. package/dist/common.d.ts +0 -2
  38. package/dist/common.mjs +0 -4
  39. package/dist/functions/filter-collision-classes.cjs +0 -29
  40. package/dist/functions/filter-collision-classes.d.ts +0 -2
  41. package/dist/functions/filter-collision-classes.mjs +0 -27
  42. package/dist/rules/class-collision.cjs +0 -76
  43. package/dist/rules/class-collision.d.ts +0 -4
  44. package/dist/rules/class-collision.mjs +0 -74
  45. package/dist/rules/class-validation.cjs +0 -60
  46. package/dist/rules/class-validation.mjs +0 -58
  47. /package/dist/rules/{class-order.d.ts → sort-classes.d.ts} +0 -0
@@ -1,4 +0,0 @@
1
- declare const _default: import("@typescript-eslint/utils/ts-eslint").RuleModule<"collisionClass", [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener> & {
2
- name: string;
3
- };
4
- export default _default;
@@ -1,74 +0,0 @@
1
- import defineVisitors from '../utils/define-visitors.mjs';
2
- import resolveContext from '../utils/resolve-context.mjs';
3
- import filterCollisionClasses from '../functions/filter-collision-classes.mjs';
4
- import createRule from '../create-rule.mjs';
5
- import settingsSchema from '../settings-schema.mjs';
6
-
7
- var classCollision = createRule({
8
- name: 'class-collision-detection',
9
- meta: {
10
- type: 'layout',
11
- docs: {
12
- description: 'Avoid applying classes with the same declarations'
13
- },
14
- messages: {
15
- collisionClass: '{{message}}'
16
- },
17
- fixable: 'code',
18
- schema: [
19
- settingsSchema
20
- ]
21
- },
22
- defaultOptions: [],
23
- create (context) {
24
- const { settings, css } = resolveContext(context);
25
- return defineVisitors({
26
- context,
27
- settings
28
- }, (node, { raw, start, end, nodes, classNodes, classValues })=>{
29
- const collisionClassesRecord = filterCollisionClasses(classValues, css);
30
- for(const className in collisionClassesRecord){
31
- const collisionClasses = collisionClassesRecord[className];
32
- const collisionClassNamesMsg = collisionClasses.map((x)=>`"${x}"`).join(' and ');
33
- const classNode = classNodes.find((node)=>node.value === className);
34
- const fixedNodes = [
35
- ...nodes
36
- ];
37
- const removeCollision = (removedClassNode)=>{
38
- for(let i = 0; i < fixedNodes.length; i++){
39
- const fixedNode = fixedNodes[i];
40
- const target = fixedNode === removedClassNode;
41
- if (target) {
42
- const prev = fixedNodes[i - 1];
43
- const isSpaceBefore = prev && prev.type === 'space';
44
- fixedNodes.splice(i, 1);
45
- if (isSpaceBefore) {
46
- fixedNodes.splice(i - 1, 1);
47
- }
48
- }
49
- }
50
- };
51
- collisionClasses.forEach((collisionClass)=>{
52
- const collisionNode = classNodes.find((node)=>node.value === collisionClass);
53
- removeCollision(collisionNode);
54
- });
55
- const fixedRaw = fixedNodes.map((node)=>node.raw).join('');
56
- context.report({
57
- loc: classNode.loc,
58
- messageId: 'collisionClass',
59
- data: {
60
- message: `"${className}" applies the same declarations as ${collisionClassNamesMsg}.`
61
- },
62
- fix: function(fixer) {
63
- return fixer.replaceTextRange([
64
- start,
65
- end
66
- ], fixedRaw);
67
- }
68
- });
69
- }
70
- });
71
- }
72
- });
73
-
74
- export { classCollision as default };
@@ -1,60 +0,0 @@
1
- 'use strict';
2
-
3
- var defineVisitors = require('../utils/define-visitors.cjs');
4
- var resolveContext = require('../utils/resolve-context.cjs');
5
- var createRule = require('../create-rule.cjs');
6
- var settingsSchema = require('../settings-schema.cjs');
7
- var cssValidator = require('@master/css-validator');
8
-
9
- var classValidation = createRule({
10
- name: 'syntax-error-checks',
11
- meta: {
12
- type: 'problem',
13
- docs: {
14
- description: 'Detect syntax errors early when writing classes'
15
- },
16
- messages: {
17
- invalidClass: '{{message}}',
18
- disallowUnknownClass: '{{message}}'
19
- },
20
- fixable: null,
21
- schema: [
22
- settingsSchema
23
- ]
24
- },
25
- defaultOptions: [],
26
- create: function(context) {
27
- const { options, settings, css } = resolveContext(context);
28
- return defineVisitors({
29
- context,
30
- settings
31
- }, (_, { classNodes })=>{
32
- for (const node of classNodes){
33
- const { matched, errors } = cssValidator.validate(node.value, css);
34
- if (errors.length > 0) {
35
- for (const error of errors){
36
- if (matched) {
37
- context.report({
38
- node,
39
- messageId: 'invalidClass',
40
- data: {
41
- message: error.message + '.'
42
- }
43
- });
44
- } else if (options.disallowUnknownClass) {
45
- context.report({
46
- node,
47
- messageId: 'disallowUnknownClass',
48
- data: {
49
- message: `"${node.raw}" is not a valid or known class.`
50
- }
51
- });
52
- }
53
- }
54
- }
55
- }
56
- });
57
- }
58
- });
59
-
60
- module.exports = classValidation;
@@ -1,58 +0,0 @@
1
- import defineVisitors from '../utils/define-visitors.mjs';
2
- import resolveContext from '../utils/resolve-context.mjs';
3
- import createRule from '../create-rule.mjs';
4
- import settingsSchema from '../settings-schema.mjs';
5
- import { validate } from '@master/css-validator';
6
-
7
- var classValidation = createRule({
8
- name: 'syntax-error-checks',
9
- meta: {
10
- type: 'problem',
11
- docs: {
12
- description: 'Detect syntax errors early when writing classes'
13
- },
14
- messages: {
15
- invalidClass: '{{message}}',
16
- disallowUnknownClass: '{{message}}'
17
- },
18
- fixable: null,
19
- schema: [
20
- settingsSchema
21
- ]
22
- },
23
- defaultOptions: [],
24
- create: function(context) {
25
- const { options, settings, css } = resolveContext(context);
26
- return defineVisitors({
27
- context,
28
- settings
29
- }, (_, { classNodes })=>{
30
- for (const node of classNodes){
31
- const { matched, errors } = validate(node.value, css);
32
- if (errors.length > 0) {
33
- for (const error of errors){
34
- if (matched) {
35
- context.report({
36
- node,
37
- messageId: 'invalidClass',
38
- data: {
39
- message: error.message + '.'
40
- }
41
- });
42
- } else if (options.disallowUnknownClass) {
43
- context.report({
44
- node,
45
- messageId: 'disallowUnknownClass',
46
- data: {
47
- message: `"${node.raw}" is not a valid or known class.`
48
- }
49
- });
50
- }
51
- }
52
- }
53
- }
54
- });
55
- }
56
- });
57
-
58
- export { classValidation as default };