@html-eslint/eslint-plugin 0.51.0 → 0.52.0
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/configs/recommended.js +8 -2
- package/lib/index.js +2 -6
- package/lib/languages/html-language.js +23 -15
- package/lib/languages/html-source-code.js +34 -26
- package/lib/languages/html-traversal-step.js +6 -10
- package/lib/rules/attrs-newline.js +9 -9
- package/lib/rules/class-spacing.js +148 -0
- package/lib/rules/element-newline.js +18 -21
- package/lib/rules/id-naming-convention.js +15 -12
- package/lib/rules/indent/indent-level.js +10 -17
- package/lib/rules/indent/indent.js +51 -56
- package/lib/rules/index.js +5 -1
- package/lib/rules/lowercase.js +11 -23
- package/lib/rules/max-element-depth.js +8 -10
- package/lib/rules/no-abstract-roles.js +8 -8
- package/lib/rules/no-accesskey-attrs.js +8 -8
- package/lib/rules/no-aria-hidden-body.js +2 -6
- package/lib/rules/no-aria-hidden-on-focusable.js +4 -5
- package/lib/rules/no-duplicate-attrs.js +12 -8
- package/lib/rules/no-duplicate-class.js +8 -14
- package/lib/rules/no-duplicate-id.js +9 -15
- package/lib/rules/no-duplicate-in-head.js +10 -17
- package/lib/rules/no-empty-headings.js +7 -8
- package/lib/rules/no-extra-spacing-attrs.js +13 -8
- package/lib/rules/no-extra-spacing-text.js +11 -14
- package/lib/rules/no-heading-inside-button.js +2 -6
- package/lib/rules/no-ineffective-attrs.js +14 -15
- package/lib/rules/no-inline-styles.js +2 -6
- package/lib/rules/no-invalid-entity.js +4 -8
- package/lib/rules/no-invalid-role.js +3 -10
- package/lib/rules/no-multiple-empty-lines.js +7 -7
- package/lib/rules/no-multiple-h1.js +4 -8
- package/lib/rules/no-nested-interactive.js +5 -9
- package/lib/rules/no-non-scalable-viewport.js +2 -6
- package/lib/rules/no-obsolete-attrs.js +83 -0
- package/lib/rules/no-obsolete-tags.js +2 -6
- package/lib/rules/no-positive-tabindex.js +8 -8
- package/lib/rules/no-restricted-attr-values.js +18 -21
- package/lib/rules/no-restricted-attrs.js +18 -22
- package/lib/rules/no-restricted-tags.js +17 -20
- package/lib/rules/no-script-style-type.js +7 -6
- package/lib/rules/no-skip-heading-levels.js +4 -8
- package/lib/rules/no-target-blank.js +3 -6
- package/lib/rules/no-trailing-spaces.js +7 -6
- package/lib/rules/no-whitespace-only-children.js +7 -8
- package/lib/rules/prefer-https.js +11 -14
- package/lib/rules/quotes.js +13 -16
- package/lib/rules/require-attrs.js +18 -17
- package/lib/rules/require-button-type.js +6 -5
- package/lib/rules/require-closing-tags.js +9 -12
- package/lib/rules/require-doctype.js +2 -6
- package/lib/rules/require-explicit-size.js +2 -5
- package/lib/rules/require-form-method.js +2 -6
- package/lib/rules/require-frame-title.js +2 -6
- package/lib/rules/require-img-alt.js +3 -6
- package/lib/rules/require-input-label.js +3 -5
- package/lib/rules/require-lang.js +2 -6
- package/lib/rules/require-li-container.js +2 -6
- package/lib/rules/require-meta-charset.js +6 -5
- package/lib/rules/require-meta-description.js +6 -5
- package/lib/rules/require-meta-viewport.js +6 -5
- package/lib/rules/require-open-graph-protocol.js +7 -8
- package/lib/rules/require-title.js +7 -5
- package/lib/rules/sort-attrs.js +13 -19
- package/lib/rules/use-baseline.js +8 -6
- package/lib/rules/utils/baseline.js +4 -6
- package/lib/rules/utils/naming.js +14 -7
- package/lib/rules/utils/node.js +63 -29
- package/lib/rules/utils/rule.js +1 -4
- package/lib/rules/utils/settings.js +9 -3
- package/lib/rules/utils/source-code.js +2 -6
- package/lib/rules/utils/template-literal.js +16 -7
- package/lib/rules/utils/visitors.js +4 -1
- package/lib/specs/index.js +5 -0
- package/lib/specs/obsolete-attrs.js +604 -0
- package/lib/types/ast.ts +5 -2
- package/package.json +6 -6
- package/types/configs/recommended.d.ts +2 -1
- package/types/configs/recommended.d.ts.map +1 -1
- package/types/index.d.ts +2 -6
- package/types/index.d.ts.map +1 -1
- package/types/languages/html-language.d.ts +12 -10
- package/types/languages/html-language.d.ts.map +1 -1
- package/types/languages/html-source-code.d.ts +13 -6
- package/types/languages/html-source-code.d.ts.map +1 -1
- package/types/languages/html-traversal-step.d.ts +5 -5
- package/types/languages/html-traversal-step.d.ts.map +1 -1
- package/types/rules/attrs-newline.d.ts +1 -1
- package/types/rules/attrs-newline.d.ts.map +1 -1
- package/types/rules/class-spacing.d.ts +4 -0
- package/types/rules/class-spacing.d.ts.map +1 -0
- package/types/rules/element-newline.d.ts +3 -3
- package/types/rules/element-newline.d.ts.map +1 -1
- package/types/rules/id-naming-convention.d.ts.map +1 -1
- package/types/rules/indent/indent-level.d.ts +10 -17
- package/types/rules/indent/indent-level.d.ts.map +1 -1
- package/types/rules/indent/indent.d.ts.map +1 -1
- package/types/rules/lowercase.d.ts.map +1 -1
- package/types/rules/max-element-depth.d.ts.map +1 -1
- package/types/rules/no-abstract-roles.d.ts.map +1 -1
- package/types/rules/no-accesskey-attrs.d.ts.map +1 -1
- package/types/rules/no-aria-hidden-body.d.ts.map +1 -1
- package/types/rules/no-aria-hidden-on-focusable.d.ts.map +1 -1
- package/types/rules/no-duplicate-attrs.d.ts.map +1 -1
- package/types/rules/no-duplicate-class.d.ts.map +1 -1
- package/types/rules/no-duplicate-id.d.ts.map +1 -1
- package/types/rules/no-duplicate-in-head.d.ts.map +1 -1
- package/types/rules/no-empty-headings.d.ts.map +1 -1
- package/types/rules/no-extra-spacing-attrs.d.ts.map +1 -1
- package/types/rules/no-extra-spacing-text.d.ts.map +1 -1
- package/types/rules/no-heading-inside-button.d.ts.map +1 -1
- package/types/rules/no-ineffective-attrs.d.ts.map +1 -1
- package/types/rules/no-inline-styles.d.ts.map +1 -1
- package/types/rules/no-invalid-entity.d.ts.map +1 -1
- package/types/rules/no-invalid-role.d.ts.map +1 -1
- package/types/rules/no-multiple-empty-lines.d.ts.map +1 -1
- package/types/rules/no-multiple-h1.d.ts.map +1 -1
- package/types/rules/no-nested-interactive.d.ts.map +1 -1
- package/types/rules/no-non-scalable-viewport.d.ts.map +1 -1
- package/types/rules/no-obsolete-attrs.d.ts +4 -0
- package/types/rules/no-obsolete-attrs.d.ts.map +1 -0
- package/types/rules/no-obsolete-tags.d.ts.map +1 -1
- package/types/rules/no-positive-tabindex.d.ts.map +1 -1
- package/types/rules/no-restricted-attr-values.d.ts.map +1 -1
- package/types/rules/no-restricted-attrs.d.ts.map +1 -1
- package/types/rules/no-restricted-tags.d.ts.map +1 -1
- package/types/rules/no-script-style-type.d.ts.map +1 -1
- package/types/rules/no-skip-heading-levels.d.ts.map +1 -1
- package/types/rules/no-target-blank.d.ts.map +1 -1
- package/types/rules/no-trailing-spaces.d.ts.map +1 -1
- package/types/rules/no-whitespace-only-children.d.ts.map +1 -1
- package/types/rules/prefer-https.d.ts.map +1 -1
- package/types/rules/quotes.d.ts.map +1 -1
- package/types/rules/require-attrs.d.ts.map +1 -1
- package/types/rules/require-button-type.d.ts.map +1 -1
- package/types/rules/require-closing-tags.d.ts.map +1 -1
- package/types/rules/require-doctype.d.ts.map +1 -1
- package/types/rules/require-explicit-size.d.ts.map +1 -1
- package/types/rules/require-form-method.d.ts.map +1 -1
- package/types/rules/require-frame-title.d.ts.map +1 -1
- package/types/rules/require-img-alt.d.ts.map +1 -1
- package/types/rules/require-input-label.d.ts.map +1 -1
- package/types/rules/require-lang.d.ts.map +1 -1
- package/types/rules/require-li-container.d.ts.map +1 -1
- package/types/rules/require-meta-charset.d.ts.map +1 -1
- package/types/rules/require-meta-description.d.ts.map +1 -1
- package/types/rules/require-meta-viewport.d.ts.map +1 -1
- package/types/rules/require-open-graph-protocol.d.ts.map +1 -1
- package/types/rules/require-title.d.ts.map +1 -1
- package/types/rules/sort-attrs.d.ts.map +1 -1
- package/types/rules/use-baseline.d.ts.map +1 -1
- package/types/rules/utils/baseline.d.ts +1 -3
- package/types/rules/utils/baseline.d.ts.map +1 -1
- package/types/rules/utils/naming.d.ts +14 -7
- package/types/rules/utils/naming.d.ts.map +1 -1
- package/types/rules/utils/node.d.ts +11 -10
- package/types/rules/utils/node.d.ts.map +1 -1
- package/types/rules/utils/rule.d.ts +1 -4
- package/types/rules/utils/rule.d.ts.map +1 -1
- package/types/rules/utils/settings.d.ts +0 -1
- package/types/rules/utils/settings.d.ts.map +1 -1
- package/types/rules/utils/source-code.d.ts +2 -6
- package/types/rules/utils/source-code.d.ts.map +1 -1
- package/types/rules/utils/template-literal.d.ts +2 -1
- package/types/rules/utils/template-literal.d.ts.map +1 -1
- package/types/rules/utils/visitors.d.ts.map +1 -1
- package/types/specs/index.d.ts +3 -0
- package/types/specs/index.d.ts.map +1 -0
- package/types/specs/obsolete-attrs.d.ts +19 -0
- package/types/specs/obsolete-attrs.d.ts.map +1 -0
- package/types/types/ast.d.ts +5 -2
- package/types/types/ast.d.ts.map +1 -1
|
@@ -0,0 +1,604 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @typedef {Object} ObsoleteAttrConfig
|
|
3
|
+
* @property {string[]} elements - List of HTML elements where this attribute is
|
|
4
|
+
* obsolete. Use "*" for all elements.
|
|
5
|
+
* @property {string} suggestion - Suggestion for what to use instead of this
|
|
6
|
+
* obsolete attribute.
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
/** @typedef {Record<string, ObsoleteAttrConfig[]>} ObsoleteAttrs */
|
|
10
|
+
|
|
11
|
+
// https://html.spec.whatwg.org/dev/obsolete.html#non-conforming-features
|
|
12
|
+
/** @type {ObsoleteAttrs} */
|
|
13
|
+
module.exports = {
|
|
14
|
+
charset: [
|
|
15
|
+
{
|
|
16
|
+
elements: ["a", "link"],
|
|
17
|
+
suggestion:
|
|
18
|
+
"Use an HTTP `Content-Type` header on the linked resource instead.",
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
elements: ["script"],
|
|
22
|
+
suggestion:
|
|
23
|
+
"It is redundant to specify it on the script element since it inherits from the document.",
|
|
24
|
+
},
|
|
25
|
+
],
|
|
26
|
+
coords: [
|
|
27
|
+
{
|
|
28
|
+
elements: ["a"],
|
|
29
|
+
suggestion: "Use area instead of a for image maps.",
|
|
30
|
+
},
|
|
31
|
+
],
|
|
32
|
+
shape: [
|
|
33
|
+
{
|
|
34
|
+
elements: ["a"],
|
|
35
|
+
suggestion: "Use area instead of a for image maps.",
|
|
36
|
+
},
|
|
37
|
+
],
|
|
38
|
+
methods: [
|
|
39
|
+
{
|
|
40
|
+
elements: ["a", "link"],
|
|
41
|
+
suggestion: "Use the HTTP OPTIONS feature instead.",
|
|
42
|
+
},
|
|
43
|
+
],
|
|
44
|
+
name: [
|
|
45
|
+
{
|
|
46
|
+
elements: ["a", "embed", "img", "option"],
|
|
47
|
+
suggestion: "Use the id attribute instead.",
|
|
48
|
+
},
|
|
49
|
+
],
|
|
50
|
+
rev: [
|
|
51
|
+
{
|
|
52
|
+
elements: ["a", "link"],
|
|
53
|
+
suggestion:
|
|
54
|
+
'Use the rel attribute instead, with an opposite term. (For example, instead of rev="made", use rel="author".)',
|
|
55
|
+
},
|
|
56
|
+
],
|
|
57
|
+
urn: [
|
|
58
|
+
{
|
|
59
|
+
elements: ["a", "link"],
|
|
60
|
+
suggestion:
|
|
61
|
+
"Specify the preferred persistent identifier using the href attribute instead.",
|
|
62
|
+
},
|
|
63
|
+
],
|
|
64
|
+
accept: [
|
|
65
|
+
{
|
|
66
|
+
elements: ["form"],
|
|
67
|
+
suggestion:
|
|
68
|
+
"Use the accept attribute directly on the input elements instead.",
|
|
69
|
+
},
|
|
70
|
+
],
|
|
71
|
+
hreflang: [
|
|
72
|
+
{
|
|
73
|
+
elements: ["area"],
|
|
74
|
+
suggestion:
|
|
75
|
+
"These attributes do not do anything useful, and for historical reasons there are no corresponding IDL attributes on area elements. Omit them altogether.",
|
|
76
|
+
},
|
|
77
|
+
],
|
|
78
|
+
type: [
|
|
79
|
+
{
|
|
80
|
+
elements: ["area"],
|
|
81
|
+
suggestion:
|
|
82
|
+
"These attributes do not do anything useful, and for historical reasons there are no corresponding IDL attributes on area elements. Omit them altogether.",
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
elements: ["li"],
|
|
86
|
+
suggestion: "Use CSS instead.",
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
elements: ["menu"],
|
|
90
|
+
suggestion:
|
|
91
|
+
"To implement a custom context menu, use script to handle the contextmenu event. For toolbar menus, omit the attribute.",
|
|
92
|
+
},
|
|
93
|
+
{
|
|
94
|
+
elements: ["style"],
|
|
95
|
+
suggestion:
|
|
96
|
+
"Omit the attribute for CSS; for data blocks, use script as the container instead of style.",
|
|
97
|
+
},
|
|
98
|
+
{
|
|
99
|
+
elements: ["ul"],
|
|
100
|
+
suggestion: "Use CSS instead.",
|
|
101
|
+
},
|
|
102
|
+
],
|
|
103
|
+
nohref: [
|
|
104
|
+
{
|
|
105
|
+
elements: ["area"],
|
|
106
|
+
suggestion:
|
|
107
|
+
"Omitting the href attribute is sufficient; the nohref attribute is unnecessary. Omit it altogether.",
|
|
108
|
+
},
|
|
109
|
+
],
|
|
110
|
+
profile: [
|
|
111
|
+
{
|
|
112
|
+
elements: ["head"],
|
|
113
|
+
suggestion: "Unnecessary. Omit it altogether.",
|
|
114
|
+
},
|
|
115
|
+
],
|
|
116
|
+
manifest: [
|
|
117
|
+
{
|
|
118
|
+
elements: ["html"],
|
|
119
|
+
suggestion: "Use service workers instead.",
|
|
120
|
+
},
|
|
121
|
+
],
|
|
122
|
+
version: [
|
|
123
|
+
{
|
|
124
|
+
elements: ["html"],
|
|
125
|
+
suggestion: "Unnecessary. Omit it altogether.",
|
|
126
|
+
},
|
|
127
|
+
],
|
|
128
|
+
ismap: [
|
|
129
|
+
{
|
|
130
|
+
elements: ["input"],
|
|
131
|
+
suggestion:
|
|
132
|
+
"Unnecessary. Omit it altogether. All input elements with a type attribute in the Image Button state are processed as server-side image maps.",
|
|
133
|
+
},
|
|
134
|
+
],
|
|
135
|
+
usemap: [
|
|
136
|
+
{
|
|
137
|
+
elements: ["input", "object"],
|
|
138
|
+
suggestion: "Use the img element for image maps.",
|
|
139
|
+
},
|
|
140
|
+
],
|
|
141
|
+
longdesc: [
|
|
142
|
+
{
|
|
143
|
+
elements: ["iframe", "img"],
|
|
144
|
+
suggestion:
|
|
145
|
+
"Use a regular a element to link to the description, or (in the case of images) use an image map to provide a link from the image to the image's description.",
|
|
146
|
+
},
|
|
147
|
+
],
|
|
148
|
+
lowsrc: [
|
|
149
|
+
{
|
|
150
|
+
elements: ["img"],
|
|
151
|
+
suggestion:
|
|
152
|
+
"Use a progressive JPEG image (given in the src attribute), instead of using two separate images.",
|
|
153
|
+
},
|
|
154
|
+
],
|
|
155
|
+
target: [
|
|
156
|
+
{
|
|
157
|
+
elements: ["link"],
|
|
158
|
+
suggestion: "Unnecessary. Omit it altogether.",
|
|
159
|
+
},
|
|
160
|
+
],
|
|
161
|
+
label: [
|
|
162
|
+
{
|
|
163
|
+
elements: ["menu"],
|
|
164
|
+
suggestion:
|
|
165
|
+
"To implement a custom context menu, use script to handle the contextmenu event.",
|
|
166
|
+
},
|
|
167
|
+
],
|
|
168
|
+
contextmenu: [
|
|
169
|
+
{
|
|
170
|
+
elements: ["*"],
|
|
171
|
+
suggestion:
|
|
172
|
+
"To implement a custom context menu, use script to handle the contextmenu event.",
|
|
173
|
+
},
|
|
174
|
+
],
|
|
175
|
+
onshow: [
|
|
176
|
+
{
|
|
177
|
+
elements: ["*"],
|
|
178
|
+
suggestion:
|
|
179
|
+
"To implement a custom context menu, use script to handle the contextmenu event.",
|
|
180
|
+
},
|
|
181
|
+
],
|
|
182
|
+
scheme: [
|
|
183
|
+
{
|
|
184
|
+
elements: ["meta"],
|
|
185
|
+
suggestion:
|
|
186
|
+
"Use only one scheme per field, or make the scheme declaration part of the value.",
|
|
187
|
+
},
|
|
188
|
+
],
|
|
189
|
+
archive: [
|
|
190
|
+
{
|
|
191
|
+
elements: ["object"],
|
|
192
|
+
suggestion: "Use the data and type attributes to invoke plugins.",
|
|
193
|
+
},
|
|
194
|
+
],
|
|
195
|
+
classid: [
|
|
196
|
+
{
|
|
197
|
+
elements: ["object"],
|
|
198
|
+
suggestion: "Use the data and type attributes to invoke plugins.",
|
|
199
|
+
},
|
|
200
|
+
],
|
|
201
|
+
code: [
|
|
202
|
+
{
|
|
203
|
+
elements: ["object"],
|
|
204
|
+
suggestion: "Use the data and type attributes to invoke plugins.",
|
|
205
|
+
},
|
|
206
|
+
],
|
|
207
|
+
codebase: [
|
|
208
|
+
{
|
|
209
|
+
elements: ["object"],
|
|
210
|
+
suggestion: "Use the data and type attributes to invoke plugins.",
|
|
211
|
+
},
|
|
212
|
+
],
|
|
213
|
+
codetype: [
|
|
214
|
+
{
|
|
215
|
+
elements: ["object"],
|
|
216
|
+
suggestion: "Use the data and type attributes to invoke plugins.",
|
|
217
|
+
},
|
|
218
|
+
],
|
|
219
|
+
declare: [
|
|
220
|
+
{
|
|
221
|
+
elements: ["object"],
|
|
222
|
+
suggestion:
|
|
223
|
+
"Repeat the object element completely each time the resource is to be reused.",
|
|
224
|
+
},
|
|
225
|
+
],
|
|
226
|
+
standby: [
|
|
227
|
+
{
|
|
228
|
+
elements: ["object"],
|
|
229
|
+
suggestion:
|
|
230
|
+
"Optimize the linked resource so that it loads quickly or, at least, incrementally.",
|
|
231
|
+
},
|
|
232
|
+
],
|
|
233
|
+
typemustmatch: [
|
|
234
|
+
{
|
|
235
|
+
elements: ["object"],
|
|
236
|
+
suggestion: "Avoid using object elements with untrusted resources.",
|
|
237
|
+
},
|
|
238
|
+
],
|
|
239
|
+
language: [
|
|
240
|
+
{
|
|
241
|
+
elements: ["script"],
|
|
242
|
+
suggestion:
|
|
243
|
+
"Omit the attribute for JavaScript; for data blocks, use the type attribute instead.",
|
|
244
|
+
},
|
|
245
|
+
],
|
|
246
|
+
event: [
|
|
247
|
+
{
|
|
248
|
+
elements: ["script"],
|
|
249
|
+
suggestion: "Use DOM events mechanisms to register event listeners.",
|
|
250
|
+
},
|
|
251
|
+
],
|
|
252
|
+
for: [
|
|
253
|
+
{
|
|
254
|
+
elements: ["script"],
|
|
255
|
+
suggestion: "Use DOM events mechanisms to register event listeners.",
|
|
256
|
+
},
|
|
257
|
+
],
|
|
258
|
+
datapagesize: [
|
|
259
|
+
{
|
|
260
|
+
elements: ["table"],
|
|
261
|
+
suggestion: "Unnecessary. Omit it altogether.",
|
|
262
|
+
},
|
|
263
|
+
],
|
|
264
|
+
summary: [
|
|
265
|
+
{
|
|
266
|
+
elements: ["table"],
|
|
267
|
+
suggestion:
|
|
268
|
+
"Use one of the techniques for describing tables given in the table section instead.",
|
|
269
|
+
},
|
|
270
|
+
],
|
|
271
|
+
abbr: [
|
|
272
|
+
{
|
|
273
|
+
elements: ["td"],
|
|
274
|
+
suggestion:
|
|
275
|
+
"Use text that begins in an unambiguous and terse manner, and include any more elaborate text after that. The title attribute can also be useful in including more detailed text, so that the cell's contents can be made terse. If it's a heading, use th (which has an abbr attribute).",
|
|
276
|
+
},
|
|
277
|
+
],
|
|
278
|
+
axis: [
|
|
279
|
+
{
|
|
280
|
+
elements: ["td", "th"],
|
|
281
|
+
suggestion: "Use the scope attribute on the relevant th.",
|
|
282
|
+
},
|
|
283
|
+
],
|
|
284
|
+
scope: [
|
|
285
|
+
{
|
|
286
|
+
elements: ["td"],
|
|
287
|
+
suggestion: "Use th elements for heading cells.",
|
|
288
|
+
},
|
|
289
|
+
],
|
|
290
|
+
datasrc: [
|
|
291
|
+
{
|
|
292
|
+
elements: [
|
|
293
|
+
"a",
|
|
294
|
+
"button",
|
|
295
|
+
"div",
|
|
296
|
+
"frame",
|
|
297
|
+
"iframe",
|
|
298
|
+
"img",
|
|
299
|
+
"input",
|
|
300
|
+
"label",
|
|
301
|
+
"legend",
|
|
302
|
+
"marquee",
|
|
303
|
+
"object",
|
|
304
|
+
"option",
|
|
305
|
+
"select",
|
|
306
|
+
"span",
|
|
307
|
+
"table",
|
|
308
|
+
"textarea",
|
|
309
|
+
],
|
|
310
|
+
suggestion:
|
|
311
|
+
"Use script and a mechanism such as XMLHttpRequest to populate the page dynamically.",
|
|
312
|
+
},
|
|
313
|
+
],
|
|
314
|
+
datafld: [
|
|
315
|
+
{
|
|
316
|
+
elements: [
|
|
317
|
+
"a",
|
|
318
|
+
"button",
|
|
319
|
+
"div",
|
|
320
|
+
"fieldset",
|
|
321
|
+
"frame",
|
|
322
|
+
"iframe",
|
|
323
|
+
"img",
|
|
324
|
+
"input",
|
|
325
|
+
"label",
|
|
326
|
+
"legend",
|
|
327
|
+
"marquee",
|
|
328
|
+
"object",
|
|
329
|
+
"select",
|
|
330
|
+
"span",
|
|
331
|
+
"textarea",
|
|
332
|
+
],
|
|
333
|
+
suggestion:
|
|
334
|
+
"Use script and a mechanism such as XMLHttpRequest to populate the page dynamically.",
|
|
335
|
+
},
|
|
336
|
+
],
|
|
337
|
+
dataformatas: [
|
|
338
|
+
{
|
|
339
|
+
elements: [
|
|
340
|
+
"button",
|
|
341
|
+
"div",
|
|
342
|
+
"input",
|
|
343
|
+
"label",
|
|
344
|
+
"legend",
|
|
345
|
+
"marquee",
|
|
346
|
+
"object",
|
|
347
|
+
"option",
|
|
348
|
+
"select",
|
|
349
|
+
"span",
|
|
350
|
+
"table",
|
|
351
|
+
],
|
|
352
|
+
suggestion:
|
|
353
|
+
"Use script and a mechanism such as XMLHttpRequest to populate the page dynamically.",
|
|
354
|
+
},
|
|
355
|
+
],
|
|
356
|
+
dropzone: [
|
|
357
|
+
{
|
|
358
|
+
elements: ["*"],
|
|
359
|
+
suggestion:
|
|
360
|
+
"Use script to handle the dragenter and dragover events instead.",
|
|
361
|
+
},
|
|
362
|
+
],
|
|
363
|
+
alink: [
|
|
364
|
+
{
|
|
365
|
+
elements: ["body"],
|
|
366
|
+
suggestion: "Use CSS instead.",
|
|
367
|
+
},
|
|
368
|
+
],
|
|
369
|
+
bgcolor: [
|
|
370
|
+
{
|
|
371
|
+
elements: ["body", "table", "td", "th", "tr"],
|
|
372
|
+
suggestion: "Use CSS instead.",
|
|
373
|
+
},
|
|
374
|
+
],
|
|
375
|
+
bottommargin: [
|
|
376
|
+
{
|
|
377
|
+
elements: ["body"],
|
|
378
|
+
suggestion: "Use CSS instead.",
|
|
379
|
+
},
|
|
380
|
+
],
|
|
381
|
+
leftmargin: [
|
|
382
|
+
{
|
|
383
|
+
elements: ["body"],
|
|
384
|
+
suggestion: "Use CSS instead.",
|
|
385
|
+
},
|
|
386
|
+
],
|
|
387
|
+
link: [
|
|
388
|
+
{
|
|
389
|
+
elements: ["body"],
|
|
390
|
+
suggestion: "Use CSS instead.",
|
|
391
|
+
},
|
|
392
|
+
],
|
|
393
|
+
marginheight: [
|
|
394
|
+
{
|
|
395
|
+
elements: ["body", "iframe"],
|
|
396
|
+
suggestion: "Use CSS instead.",
|
|
397
|
+
},
|
|
398
|
+
],
|
|
399
|
+
marginwidth: [
|
|
400
|
+
{
|
|
401
|
+
elements: ["body", "iframe"],
|
|
402
|
+
suggestion: "Use CSS instead.",
|
|
403
|
+
},
|
|
404
|
+
],
|
|
405
|
+
rightmargin: [
|
|
406
|
+
{
|
|
407
|
+
elements: ["body"],
|
|
408
|
+
suggestion: "Use CSS instead.",
|
|
409
|
+
},
|
|
410
|
+
],
|
|
411
|
+
text: [
|
|
412
|
+
{
|
|
413
|
+
elements: ["body"],
|
|
414
|
+
suggestion: "Use CSS instead.",
|
|
415
|
+
},
|
|
416
|
+
],
|
|
417
|
+
topmargin: [
|
|
418
|
+
{
|
|
419
|
+
elements: ["body"],
|
|
420
|
+
suggestion: "Use CSS instead.",
|
|
421
|
+
},
|
|
422
|
+
],
|
|
423
|
+
vlink: [
|
|
424
|
+
{
|
|
425
|
+
elements: ["body"],
|
|
426
|
+
suggestion: "Use CSS instead.",
|
|
427
|
+
},
|
|
428
|
+
],
|
|
429
|
+
clear: [
|
|
430
|
+
{
|
|
431
|
+
elements: ["br"],
|
|
432
|
+
suggestion: "Use CSS instead.",
|
|
433
|
+
},
|
|
434
|
+
],
|
|
435
|
+
align: [
|
|
436
|
+
{
|
|
437
|
+
elements: [
|
|
438
|
+
"caption",
|
|
439
|
+
"col",
|
|
440
|
+
"div",
|
|
441
|
+
"embed",
|
|
442
|
+
"h1",
|
|
443
|
+
"h2",
|
|
444
|
+
"h3",
|
|
445
|
+
"h4",
|
|
446
|
+
"h5",
|
|
447
|
+
"h6",
|
|
448
|
+
"hr",
|
|
449
|
+
"iframe",
|
|
450
|
+
"input",
|
|
451
|
+
"img",
|
|
452
|
+
"legend",
|
|
453
|
+
"object",
|
|
454
|
+
"p",
|
|
455
|
+
"table",
|
|
456
|
+
"tbody",
|
|
457
|
+
"thead",
|
|
458
|
+
"tfoot",
|
|
459
|
+
"td",
|
|
460
|
+
"th",
|
|
461
|
+
"tr",
|
|
462
|
+
],
|
|
463
|
+
suggestion: "Use CSS instead.",
|
|
464
|
+
},
|
|
465
|
+
],
|
|
466
|
+
char: [
|
|
467
|
+
{
|
|
468
|
+
elements: ["col", "tbody", "thead", "tfoot", "td", "th", "tr"],
|
|
469
|
+
suggestion: "Use CSS instead.",
|
|
470
|
+
},
|
|
471
|
+
],
|
|
472
|
+
charoff: [
|
|
473
|
+
{
|
|
474
|
+
elements: ["col", "tbody", "thead", "tfoot", "td", "th", "tr"],
|
|
475
|
+
suggestion: "Use CSS instead.",
|
|
476
|
+
},
|
|
477
|
+
],
|
|
478
|
+
valign: [
|
|
479
|
+
{
|
|
480
|
+
elements: ["col", "tbody", "thead", "tfoot", "td", "th", "tr"],
|
|
481
|
+
suggestion: "Use CSS instead.",
|
|
482
|
+
},
|
|
483
|
+
],
|
|
484
|
+
width: [
|
|
485
|
+
{
|
|
486
|
+
elements: ["col", "hr", "pre", "table", "td", "th"],
|
|
487
|
+
suggestion: "Use CSS instead.",
|
|
488
|
+
},
|
|
489
|
+
],
|
|
490
|
+
compact: [
|
|
491
|
+
{
|
|
492
|
+
elements: ["dl", "menu", "ol", "ul"],
|
|
493
|
+
suggestion: "Use CSS instead.",
|
|
494
|
+
},
|
|
495
|
+
],
|
|
496
|
+
hspace: [
|
|
497
|
+
{
|
|
498
|
+
elements: ["embed", "iframe", "input", "img", "object"],
|
|
499
|
+
suggestion: "Use CSS instead.",
|
|
500
|
+
},
|
|
501
|
+
],
|
|
502
|
+
vspace: [
|
|
503
|
+
{
|
|
504
|
+
elements: ["embed", "iframe", "input", "img", "object"],
|
|
505
|
+
suggestion: "Use CSS instead.",
|
|
506
|
+
},
|
|
507
|
+
],
|
|
508
|
+
color: [
|
|
509
|
+
{
|
|
510
|
+
elements: ["hr"],
|
|
511
|
+
suggestion: "Use CSS instead.",
|
|
512
|
+
},
|
|
513
|
+
],
|
|
514
|
+
noshade: [
|
|
515
|
+
{
|
|
516
|
+
elements: ["hr"],
|
|
517
|
+
suggestion: "Use CSS instead.",
|
|
518
|
+
},
|
|
519
|
+
],
|
|
520
|
+
size: [
|
|
521
|
+
{
|
|
522
|
+
elements: ["hr"],
|
|
523
|
+
suggestion: "Use CSS instead.",
|
|
524
|
+
},
|
|
525
|
+
],
|
|
526
|
+
allowtransparency: [
|
|
527
|
+
{
|
|
528
|
+
elements: ["iframe"],
|
|
529
|
+
suggestion: "Use CSS instead.",
|
|
530
|
+
},
|
|
531
|
+
],
|
|
532
|
+
frameborder: [
|
|
533
|
+
{
|
|
534
|
+
elements: ["iframe"],
|
|
535
|
+
suggestion: "Use CSS instead.",
|
|
536
|
+
},
|
|
537
|
+
],
|
|
538
|
+
framespacing: [
|
|
539
|
+
{
|
|
540
|
+
elements: ["iframe"],
|
|
541
|
+
suggestion: "Use CSS instead.",
|
|
542
|
+
},
|
|
543
|
+
],
|
|
544
|
+
scrolling: [
|
|
545
|
+
{
|
|
546
|
+
elements: ["iframe"],
|
|
547
|
+
suggestion: "Use CSS instead.",
|
|
548
|
+
},
|
|
549
|
+
],
|
|
550
|
+
border: [
|
|
551
|
+
{
|
|
552
|
+
elements: ["input", "img", "object", "table"],
|
|
553
|
+
suggestion: "Use CSS instead.",
|
|
554
|
+
},
|
|
555
|
+
],
|
|
556
|
+
frame: [
|
|
557
|
+
{
|
|
558
|
+
elements: ["table"],
|
|
559
|
+
suggestion: "Use CSS instead.",
|
|
560
|
+
},
|
|
561
|
+
],
|
|
562
|
+
bordercolor: [
|
|
563
|
+
{
|
|
564
|
+
elements: ["table"],
|
|
565
|
+
suggestion: "Use CSS instead.",
|
|
566
|
+
},
|
|
567
|
+
],
|
|
568
|
+
cellpadding: [
|
|
569
|
+
{
|
|
570
|
+
elements: ["table"],
|
|
571
|
+
suggestion: "Use CSS instead.",
|
|
572
|
+
},
|
|
573
|
+
],
|
|
574
|
+
cellspacing: [
|
|
575
|
+
{
|
|
576
|
+
elements: ["table"],
|
|
577
|
+
suggestion: "Use CSS instead.",
|
|
578
|
+
},
|
|
579
|
+
],
|
|
580
|
+
height: [
|
|
581
|
+
{
|
|
582
|
+
elements: ["table", "thead", "tbody", "tfoot", "td", "th", "tr"],
|
|
583
|
+
suggestion: "Use CSS instead.",
|
|
584
|
+
},
|
|
585
|
+
],
|
|
586
|
+
rules: [
|
|
587
|
+
{
|
|
588
|
+
elements: ["table"],
|
|
589
|
+
suggestion: "Use CSS instead.",
|
|
590
|
+
},
|
|
591
|
+
],
|
|
592
|
+
nowrap: [
|
|
593
|
+
{
|
|
594
|
+
elements: ["td", "th"],
|
|
595
|
+
suggestion: "Use CSS instead.",
|
|
596
|
+
},
|
|
597
|
+
],
|
|
598
|
+
background: [
|
|
599
|
+
{
|
|
600
|
+
elements: ["body", "table", "thead", "tbody", "tfoot", "tr", "td", "th"],
|
|
601
|
+
suggestion: "Use CSS instead.",
|
|
602
|
+
},
|
|
603
|
+
],
|
|
604
|
+
};
|
package/lib/types/ast.ts
CHANGED
|
@@ -1,12 +1,15 @@
|
|
|
1
1
|
import eslint from "eslint";
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
|
-
*
|
|
4
|
+
* This is not a node generated by es-html-parser; it is created by utils's
|
|
5
|
+
* splitToLineNodes.
|
|
5
6
|
*/
|
|
6
7
|
export interface Line extends BaseNode {
|
|
7
8
|
type: "Line";
|
|
8
9
|
value: string;
|
|
9
|
-
|
|
10
|
+
isOverlapTemplate: boolean;
|
|
11
|
+
hasOpenTemplate: boolean;
|
|
12
|
+
hasCloseTemplate: boolean;
|
|
10
13
|
}
|
|
11
14
|
|
|
12
15
|
export interface BaseNode {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@html-eslint/eslint-plugin",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.52.0",
|
|
4
4
|
"type": "commonjs",
|
|
5
5
|
"description": "ESLint plugin for HTML",
|
|
6
6
|
"author": "yeonjuan",
|
|
@@ -40,10 +40,10 @@
|
|
|
40
40
|
],
|
|
41
41
|
"dependencies": {
|
|
42
42
|
"@eslint/plugin-kit": "^0.4.1",
|
|
43
|
-
"@html-eslint/parser": "^0.
|
|
44
|
-
"@html-eslint/template-parser": "^0.
|
|
45
|
-
"@html-eslint/template-syntax-parser": "^0.
|
|
46
|
-
"@html-eslint/types": "^0.
|
|
43
|
+
"@html-eslint/parser": "^0.52.0",
|
|
44
|
+
"@html-eslint/template-parser": "^0.52.0",
|
|
45
|
+
"@html-eslint/template-syntax-parser": "^0.52.0",
|
|
46
|
+
"@html-eslint/types": "^0.52.0"
|
|
47
47
|
},
|
|
48
48
|
"peerDependencies": {
|
|
49
49
|
"eslint": "^8.0.0 || ^9.0.0"
|
|
@@ -59,5 +59,5 @@
|
|
|
59
59
|
"engines": {
|
|
60
60
|
"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
|
|
61
61
|
},
|
|
62
|
-
"gitHead": "
|
|
62
|
+
"gitHead": "59a64a0eeb70a3cf6d32866d276e62cbe30b36b6"
|
|
63
63
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @satisfies {import(
|
|
1
|
+
/** @satisfies {import("eslint").Linter.Config["rules"]} */
|
|
2
2
|
export const recommendedRules: {
|
|
3
3
|
"html/require-lang": "error";
|
|
4
4
|
"html/require-img-alt": "error";
|
|
@@ -15,6 +15,7 @@ export const recommendedRules: {
|
|
|
15
15
|
"html/require-li-container": "error";
|
|
16
16
|
"html/quotes": "error";
|
|
17
17
|
"html/no-obsolete-tags": "error";
|
|
18
|
+
"html/no-obsolete-attrs": "error";
|
|
18
19
|
"html/require-closing-tags": "error";
|
|
19
20
|
"html/no-duplicate-attrs": "error";
|
|
20
21
|
"html/use-baseline": "error";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"recommended.d.ts","sourceRoot":"","sources":["../../lib/configs/recommended.js"],"names":[],"mappings":"AAAA,2DAA2D;AAC3D
|
|
1
|
+
{"version":3,"file":"recommended.d.ts","sourceRoot":"","sources":["../../lib/configs/recommended.js"],"names":[],"mappings":"AAAA,2DAA2D;AAC3D;;;;;;;;;;;;;;;;;;;;;EAwBE;AAEF;;IAYE"}
|
package/types/index.d.ts
CHANGED
|
@@ -1,10 +1,6 @@
|
|
|
1
1
|
export = plugin;
|
|
2
|
-
/**
|
|
3
|
-
|
|
4
|
-
*/
|
|
5
|
-
/**
|
|
6
|
-
* @type {ESLint.Plugin}
|
|
7
|
-
*/
|
|
2
|
+
/** @import {ESLint} from "eslint" */
|
|
3
|
+
/** @type {ESLint.Plugin} */
|
|
8
4
|
declare const plugin: ESLint.Plugin;
|
|
9
5
|
import type { ESLint } from "eslint";
|
|
10
6
|
//# sourceMappingURL=index.d.ts.map
|
package/types/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../lib/index.js"],"names":[],"mappings":";AASA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../lib/index.js"],"names":[],"mappings":";AASA,qCAAqC;AAErC,4BAA4B;AAC5B,sBADW,aAAa,CA2CtB;4BA7CwB,QAAQ"}
|