@html-eslint/eslint-plugin 0.13.2 → 0.14.1
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/rules/element-newline.js +21 -56
- package/lib/rules/id-naming-convention.js +5 -2
- package/lib/rules/indent.js +165 -179
- package/lib/rules/no-abstract-roles.js +2 -2
- package/lib/rules/no-accesskey-attrs.js +1 -1
- package/lib/rules/no-aria-hidden-body.js +14 -6
- package/lib/rules/no-duplicate-attrs.js +7 -7
- package/lib/rules/no-duplicate-id.js +8 -5
- package/lib/rules/no-extra-spacing-attrs.js +21 -40
- package/lib/rules/no-inline-styles.js +4 -10
- package/lib/rules/no-multiple-h1.js +4 -2
- package/lib/rules/no-non-scalable-viewport.js +8 -3
- package/lib/rules/no-obsolete-tags.js +4 -15
- package/lib/rules/no-positive-tabindex.js +6 -2
- package/lib/rules/no-restricted-attrs.js +12 -18
- package/lib/rules/no-skip-heading-levels.js +5 -2
- package/lib/rules/no-target-blank.js +8 -5
- package/lib/rules/quotes.js +29 -70
- package/lib/rules/require-button-type.js +8 -5
- package/lib/rules/require-closing-tags.js +26 -41
- package/lib/rules/require-doctype.js +1 -1
- package/lib/rules/require-frame-title.js +7 -11
- package/lib/rules/require-img-alt.js +15 -17
- package/lib/rules/require-lang.js +13 -7
- package/lib/rules/require-li-container.js +7 -11
- package/lib/rules/require-meta-charset.js +21 -17
- package/lib/rules/require-meta-description.js +30 -16
- package/lib/rules/require-meta-viewport.js +36 -23
- package/lib/rules/require-title.js +38 -16
- package/lib/rules/utils/node-utils.js +58 -20
- package/lib/types.d.ts +193 -62
- package/package.json +4 -3
package/lib/types.d.ts
CHANGED
|
@@ -1,12 +1,200 @@
|
|
|
1
1
|
import ESTree from "estree";
|
|
2
2
|
import ESLint from "eslint";
|
|
3
|
+
import * as ESHtml from "es-html-parser";
|
|
3
4
|
|
|
4
5
|
type Fix = ESLint.Rule.Fix;
|
|
5
6
|
type Token = ESLint.AST.Token;
|
|
7
|
+
|
|
8
|
+
export type AnyNode = ESHtml.AnyNode | LineNode;
|
|
9
|
+
|
|
6
10
|
export type Range = ESLint.AST.Range;
|
|
7
11
|
|
|
12
|
+
export interface BaseNode {
|
|
13
|
+
range: [number, number];
|
|
14
|
+
loc: {
|
|
15
|
+
start: ESTree.Position;
|
|
16
|
+
end: ESTree.Position;
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
export interface ProgramNode
|
|
21
|
+
extends Omit<ESHtml.DocumentNode, "type" | "children"> {
|
|
22
|
+
type: "Program";
|
|
23
|
+
body: ESHtml.DocumentNode["children"];
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
export interface AttributeKeyNode extends ESHtml.AttributeKeyNode {
|
|
27
|
+
parent: AttributeNode;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
export interface TextNode extends ESHtml.TextNode {
|
|
31
|
+
parent: TagNode;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
export interface TagNode extends ESHtml.TagNode {
|
|
35
|
+
parent: TagNode | ProgramNode;
|
|
36
|
+
openStart: OpenTagStartNode;
|
|
37
|
+
close: CloseTagNode;
|
|
38
|
+
children: Array<
|
|
39
|
+
TextNode | TagNode | ScriptTagNode | StyleTagNode | CommentNode
|
|
40
|
+
>;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
export interface OpenTagStartNode extends ESHtml.OpenTagStartNode {
|
|
44
|
+
parent: TagNode;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
export interface OpenTagEndNode extends ESHtml.OpenTagEndNode {
|
|
48
|
+
parent: TagNode;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
export interface CloseTagNode extends ESHtml.CloseTagNode {
|
|
52
|
+
parent: TagNode;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
export interface AttributeNode extends ESHtml.AttributeNode {
|
|
56
|
+
parent: TagNode;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
export interface AttributeValueNode extends ESHtml.AttributeValueNode {
|
|
60
|
+
parent: AttributeNode;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
export interface AttributeValueWrapperEndNode
|
|
64
|
+
extends ESHtml.AttributeValueWrapperEndNode {
|
|
65
|
+
parent: AttributeNode;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
export interface AttributeValueWrapperStartNode
|
|
69
|
+
extends ESHtml.AttributeValueWrapperStartNode {
|
|
70
|
+
parent: AttributeNode;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
export interface ScriptTagNode extends ESHtml.ScriptTagNode {
|
|
74
|
+
parent: ProgramNode | TagNode;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
export interface OpenScriptTagStartNode extends ESHtml.OpenScriptTagStartNode {
|
|
78
|
+
parent: ScriptTagNode;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
export interface CloseScriptTagNode extends ESHtml.CloseScriptTagNode {
|
|
82
|
+
parent: ScriptTagNode;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
export interface OpenScriptTagEndNode extends ESHtml.OpenScriptTagEndNode {
|
|
86
|
+
parent: ScriptTagNode;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
export interface ScriptTagContentNode extends ESHtml.ScriptTagContentNode {
|
|
90
|
+
parent: ScriptTagNode;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
export interface StyleTagNode extends ESHtml.StyleTagNode {
|
|
94
|
+
parent: TagNode | ProgramNode;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
export interface OpenStyleTagStartNode extends ESHtml.OpenStyleTagStartNode {
|
|
98
|
+
parent: StyleTagNode;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
export interface OpenStyleTagEndNode extends ESHtml.OpenStyleTagEndNode {
|
|
102
|
+
parent: StyleTagNode;
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
export interface StyleTagContentNode extends ESHtml.StyleTagContentNode {
|
|
106
|
+
parent: StyleTagNode;
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
export interface CloseStyleTagNode extends ESHtml.CloseStyleTagNode {
|
|
110
|
+
parent: StyleTagNode;
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
export interface CommentNode extends ESHtml.CommentNode {
|
|
114
|
+
parent: ProgramNode | TagNode;
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
export interface CommentOpenNode extends ESHtml.CommentOpenNode {
|
|
118
|
+
parent: CommentNode;
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
export interface CommentCloseNode extends ESHtml.CommentCloseNode {
|
|
122
|
+
parent: CommentNode;
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
export interface CommentContentNode extends ESHtml.CommentContentNode {
|
|
126
|
+
parent: CommentNode;
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
export interface DoctypeNode extends ESHtml.DoctypeNode {
|
|
130
|
+
parent: ProgramNode;
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
export interface DoctypeOpenNode extends ESHtml.DoctypeOpenNode {
|
|
134
|
+
parent: DoctypeNode;
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
export interface DoctypeCloseNode extends ESHtml.DoctypeCloseNode {
|
|
138
|
+
parent: DoctypeNode;
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
export interface DoctypeAttributeNode extends ESHtml.DoctypeAttributeNode {
|
|
142
|
+
parent: DoctypeNode;
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
export interface DoctypeAttributeValueNode
|
|
146
|
+
extends ESHtml.DoctypeAttributeValueNode {
|
|
147
|
+
parent: DoctypeNode;
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
export interface DoctypeAttributeWrapperStart
|
|
151
|
+
extends ESHtml.DoctypeAttributeWrapperStartNode {
|
|
152
|
+
parent: DoctypeNode;
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
export interface DoctypeAttributeWrapperEnd
|
|
156
|
+
extends ESHtml.DoctypeAttributeWrapperEndNode {
|
|
157
|
+
parent: DoctypeNode;
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
export interface LineNode extends BaseNode {
|
|
161
|
+
type: "Line";
|
|
162
|
+
value: string;
|
|
163
|
+
}
|
|
164
|
+
|
|
8
165
|
interface RuleListener {
|
|
9
|
-
|
|
166
|
+
Program?: (node: ProgramNode) => void;
|
|
167
|
+
AttributeKey?: (node: AttributeKeyNode) => void;
|
|
168
|
+
Text?: (node: TextNode) => void;
|
|
169
|
+
Tag?: (node: TagNode) => void;
|
|
170
|
+
OpenTagStart?: (node: OpenTagStartNode) => void;
|
|
171
|
+
OpenTagEnd?: (node: OpenTagEndNode) => void;
|
|
172
|
+
CloseTag?: (node: CloseTagNode) => void;
|
|
173
|
+
Attribute?: (node: AttributeNode) => void;
|
|
174
|
+
AttributeValue?: (node: AttributeValueNode) => void;
|
|
175
|
+
AttributeValueWrapperEnd?: (node: AttributeValueWrapperEndNode) => void;
|
|
176
|
+
AttributeValueWrapperStart?: (node: AttributeValueWrapperStartNode) => void;
|
|
177
|
+
ScriptTag?: (node: ScriptTagNode) => void;
|
|
178
|
+
OpenScriptTagStart?: (node: OpenScriptTagStartNode) => void;
|
|
179
|
+
CloseScriptTag?: (node: CloseScriptTagNode) => void;
|
|
180
|
+
OpenScriptTagEnd?: (node: OpenScriptTagEndNode) => void;
|
|
181
|
+
ScriptTagContent?: (node: ScriptTagContentNode) => void;
|
|
182
|
+
StyleTag?: (node: StyleTagNode) => void;
|
|
183
|
+
OpenStyleTagStart?: (node: OpenStyleTagStartNode) => void;
|
|
184
|
+
OpenStyleTagEnd?: (node: OpenStyleTagEndNode) => void;
|
|
185
|
+
StyleTagContent?: (node: StyleTagContentNode) => void;
|
|
186
|
+
CloseStyleTag?: (node: CloseStyleTagNode) => void;
|
|
187
|
+
Comment?: (node: CommentNode) => void;
|
|
188
|
+
CommentOpen?: (node: CommentOpenNode) => void;
|
|
189
|
+
CommentClose?: (node: CommentCloseNode) => void;
|
|
190
|
+
CommentContent?: (node: CommentContentNode) => void;
|
|
191
|
+
Doctype?: (node: DoctypeNode) => void;
|
|
192
|
+
DoctypeOpen: (node: DoctypeOpenNode) => void;
|
|
193
|
+
DoctypeClose?: (node: DoctypeCloseNode) => void;
|
|
194
|
+
DoctypeAttribute?: (node: DoctypeAttributeNode) => void;
|
|
195
|
+
DoctypeAttributeValue?: (node: DoctypeAttributeValueNode) => void;
|
|
196
|
+
DoctypeAttributeWrapperStart?: (node: DoctypeAttributeWrapperStart) => void;
|
|
197
|
+
DoctypeAttributeWrapperEnd?: (node: DoctypeAttributeWrapperEnd) => void;
|
|
10
198
|
}
|
|
11
199
|
|
|
12
200
|
export interface Rule {
|
|
@@ -15,19 +203,19 @@ export interface Rule {
|
|
|
15
203
|
}
|
|
16
204
|
|
|
17
205
|
interface RuleFixer {
|
|
18
|
-
insertTextAfter(nodeOrToken:
|
|
206
|
+
insertTextAfter(nodeOrToken: BaseNode | Token, text: string): Fix;
|
|
19
207
|
|
|
20
208
|
insertTextAfterRange(range: Range, text: string): Fix;
|
|
21
209
|
|
|
22
|
-
insertTextBefore(nodeOrToken:
|
|
210
|
+
insertTextBefore(nodeOrToken: BaseNode | Token, text: string): Fix;
|
|
23
211
|
|
|
24
212
|
insertTextBeforeRange(range: Range, text: string): Fix;
|
|
25
213
|
|
|
26
|
-
remove(nodeOrToken:
|
|
214
|
+
remove(nodeOrToken: BaseNode | Token): Fix;
|
|
27
215
|
|
|
28
216
|
removeRange(range: Range): Fix;
|
|
29
217
|
|
|
30
|
-
replaceText(nodeOrToken:
|
|
218
|
+
replaceText(nodeOrToken: BaseNode | Token, text: string): Fix;
|
|
31
219
|
|
|
32
220
|
replaceTextRange(range: Range, text: string): Fix;
|
|
33
221
|
}
|
|
@@ -62,60 +250,3 @@ type ReportDescriptorLocation = {
|
|
|
62
250
|
export interface Context extends Omit<ESLint.Rule.RuleContext, "report"> {
|
|
63
251
|
report(descriptor: ReportDescriptor): void;
|
|
64
252
|
}
|
|
65
|
-
|
|
66
|
-
export interface BaseNode {
|
|
67
|
-
parent?: null | AnyNode;
|
|
68
|
-
range: [number, number];
|
|
69
|
-
start: number;
|
|
70
|
-
end: number;
|
|
71
|
-
loc: {
|
|
72
|
-
start: ESTree.Position;
|
|
73
|
-
end: ESTree.Position;
|
|
74
|
-
};
|
|
75
|
-
type?: string;
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
export interface TagNode extends BaseNode {
|
|
79
|
-
type: undefined;
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
export interface TextLineNode extends BaseNode {
|
|
83
|
-
textLine: string;
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
export interface TextNode extends BaseNode {
|
|
87
|
-
type: "text";
|
|
88
|
-
value: string;
|
|
89
|
-
lineNodes: TextLineNode[];
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
export interface ElementNode extends BaseNode {
|
|
93
|
-
type: string;
|
|
94
|
-
tagName: string;
|
|
95
|
-
attrs: AttrNode[];
|
|
96
|
-
childNodes: ElementNode[];
|
|
97
|
-
startTag?: TagNode;
|
|
98
|
-
endTag?: TagNode;
|
|
99
|
-
namespaceURI?: string;
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
export interface AttrNode extends BaseNode {
|
|
103
|
-
name: string;
|
|
104
|
-
value: string;
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
export interface CommentNode extends BaseNode {
|
|
108
|
-
type: "comment";
|
|
109
|
-
value: string;
|
|
110
|
-
startTag?: TagNode;
|
|
111
|
-
endTag?: TagNode;
|
|
112
|
-
lineNodes: TextLineNode[];
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
export type AnyNode =
|
|
116
|
-
| AttrNode
|
|
117
|
-
| ElementNode
|
|
118
|
-
| TextNode
|
|
119
|
-
| TextLineNode
|
|
120
|
-
| TagNode
|
|
121
|
-
| CommentNode;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@html-eslint/eslint-plugin",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.14.1",
|
|
4
4
|
"description": "ESLint plugin for html",
|
|
5
5
|
"author": "yeonjuan",
|
|
6
6
|
"homepage": "https://github.com/yeonjuan/html-eslint#readme",
|
|
@@ -40,10 +40,11 @@
|
|
|
40
40
|
"accessibility"
|
|
41
41
|
],
|
|
42
42
|
"devDependencies": {
|
|
43
|
-
"@html-eslint/parser": "^0.
|
|
43
|
+
"@html-eslint/parser": "^0.14.0",
|
|
44
44
|
"@types/eslint": "^7.2.10",
|
|
45
45
|
"@types/estree": "^0.0.47",
|
|
46
|
+
"es-html-parser": "^0.0.7",
|
|
46
47
|
"typescript": "^4.4.4"
|
|
47
48
|
},
|
|
48
|
-
"gitHead": "
|
|
49
|
+
"gitHead": "0fd16ae07553f8d73840ba2e2c07cc488233da05"
|
|
49
50
|
}
|