@master/eslint-plugin-css 2.0.0-beta.185 → 2.0.0-beta.186
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.
- package/lib/index.js +0 -14
- package/lib/rules/class-order.js +41 -121
- package/lib/rules/class-validation.js +123 -0
- package/lib/utils/ast.js +218 -0
- package/lib/utils/resolve-context.js +21 -0
- package/package.json +1 -1
- package/tests/frameworks/react.js +55 -0
- package/tests/{class-order → frameworks}/svelte.js +10 -11
- package/tests/{class-order → frameworks}/vue.js +10 -11
- package/tests/order.js +66 -0
- package/tests/validation.js +69 -0
- package/lib/util/ast.js +0 -370
- package/lib/util/parser.js +0 -21
- package/lib/util/regex.js +0 -16
- package/lib/util/removeDuplicatesFromArray.js +0 -7
- package/lib/util/removeDuplicatesFromClassnamesAndWhitespaces.js +0 -18
- package/lib/util/settings.js +0 -39
- package/tests/class-order/core.js +0 -112
|
@@ -1,112 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @fileoverview Use a consistent orders for the Master CSS classnames, based on property then on variants
|
|
3
|
-
* @author Miles
|
|
4
|
-
*/
|
|
5
|
-
'use strict'
|
|
6
|
-
|
|
7
|
-
// Modified from https://github.com/francoismassart/eslint-plugin-tailwindcss
|
|
8
|
-
|
|
9
|
-
//------------------------------------------------------------------------------
|
|
10
|
-
// Requirements
|
|
11
|
-
//------------------------------------------------------------------------------
|
|
12
|
-
|
|
13
|
-
var rule = require('../../lib/rules/class-order')
|
|
14
|
-
var RuleTester = require('eslint').RuleTester
|
|
15
|
-
var parserOptions = {
|
|
16
|
-
ecmaVersion: 2019,
|
|
17
|
-
sourceType: 'module',
|
|
18
|
-
ecmaFeatures: {
|
|
19
|
-
jsx: true,
|
|
20
|
-
},
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
var ruleTester = new RuleTester({ parserOptions })
|
|
24
|
-
ruleTester.run('class order', rule, {
|
|
25
|
-
valid: [
|
|
26
|
-
{
|
|
27
|
-
code: `<div class="bg:black fg:white f:24 m:8 p:8">Simple, basic</div>`,
|
|
28
|
-
},
|
|
29
|
-
{
|
|
30
|
-
code: `<div test="bg:black fg:white f:24 m:8 p:8">Simple, using 'test' prop</div>`,
|
|
31
|
-
options: [
|
|
32
|
-
{
|
|
33
|
-
classRegex: '^test$',
|
|
34
|
-
},
|
|
35
|
-
],
|
|
36
|
-
},
|
|
37
|
-
],
|
|
38
|
-
invalid: [
|
|
39
|
-
// jsx
|
|
40
|
-
{
|
|
41
|
-
code: `
|
|
42
|
-
export interface FakePropsInterface {
|
|
43
|
-
readonly name?: string;
|
|
44
|
-
}
|
|
45
|
-
function Fake({
|
|
46
|
-
name = 'yolo'
|
|
47
|
-
}: FakeProps) {
|
|
48
|
-
return (
|
|
49
|
-
<>
|
|
50
|
-
<h1 className={"m:8 bg:black p:8 fg:white f:24"}>Welcome {name}</h1>
|
|
51
|
-
<p>Bye {name}</p>
|
|
52
|
-
</>
|
|
53
|
-
);
|
|
54
|
-
}
|
|
55
|
-
export default Fake;
|
|
56
|
-
`,
|
|
57
|
-
output: `
|
|
58
|
-
export interface FakePropsInterface {
|
|
59
|
-
readonly name?: string;
|
|
60
|
-
}
|
|
61
|
-
function Fake({
|
|
62
|
-
name = 'yolo'
|
|
63
|
-
}: FakeProps) {
|
|
64
|
-
return (
|
|
65
|
-
<>
|
|
66
|
-
<h1 className={"bg:black fg:white f:24 m:8 p:8"}>Welcome {name}</h1>
|
|
67
|
-
<p>Bye {name}</p>
|
|
68
|
-
</>
|
|
69
|
-
);
|
|
70
|
-
}
|
|
71
|
-
export default Fake;
|
|
72
|
-
`,
|
|
73
|
-
parser: require.resolve('@typescript-eslint/parser'),
|
|
74
|
-
errors: [{ messageId: 'invalidOrder' }],
|
|
75
|
-
},
|
|
76
|
-
{
|
|
77
|
-
code: `<div class="fg:white f:24 m:8 p:8 bg:black">Classnames will be ordered</div>`,
|
|
78
|
-
output: `<div class="bg:black fg:white f:24 m:8 p:8">Classnames will be ordered</div>`,
|
|
79
|
-
errors: [{ messageId: 'invalidOrder' }],
|
|
80
|
-
},
|
|
81
|
-
// html, angular
|
|
82
|
-
{
|
|
83
|
-
code: `
|
|
84
|
-
<div class="
|
|
85
|
-
m:8
|
|
86
|
-
bg:black
|
|
87
|
-
p:8
|
|
88
|
-
fg:white
|
|
89
|
-
f:24
|
|
90
|
-
">
|
|
91
|
-
:)
|
|
92
|
-
</div>`,
|
|
93
|
-
output: `
|
|
94
|
-
<div class="
|
|
95
|
-
bg:black
|
|
96
|
-
fg:white
|
|
97
|
-
f:24
|
|
98
|
-
m:8
|
|
99
|
-
p:8
|
|
100
|
-
">
|
|
101
|
-
:)
|
|
102
|
-
</div>`,
|
|
103
|
-
errors: [{ messageId: 'invalidOrder' }],
|
|
104
|
-
parser: require.resolve('@angular-eslint/template-parser'),
|
|
105
|
-
},
|
|
106
|
-
{
|
|
107
|
-
code: `<div class="flex uppercase m:0 m:0>li text-decoration:none>li>a px:4>li align-items:baseline fg:gray-30>li>a gap-x:28 font:12 font:semibold pb:6>li pt:20 pt:10>li {bb:3|solid|black}>li:has(>.router-link-active) {fg:black}>li:has(>.router-link-active)>a fg:gray-10>li>a:hover box-shadow:none>li>a:focus">Group</div>`,
|
|
108
|
-
output: `<div class="flex uppercase align-items:baseline box-shadow:none>li>a:focus fg:gray-30>li>a fg:gray-10>li>a:hover gap-x:28 font:12 font:semibold {bb:3|solid|black}>li:has(>.router-link-active) {fg:black}>li:has(>.router-link-active)>a m:0 m:0>li pb:6>li pt:20 pt:10>li px:4>li text-decoration:none>li>a">Group</div>`,
|
|
109
|
-
errors: [{ messageId: 'invalidOrder' }],
|
|
110
|
-
}
|
|
111
|
-
],
|
|
112
|
-
})
|