@html-eslint/eslint-plugin 0.31.1 → 0.33.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.
Files changed (135) hide show
  1. package/lib/rules/attrs-newline.js +3 -5
  2. package/lib/rules/element-newline.js +11 -9
  3. package/lib/rules/id-naming-convention.js +5 -5
  4. package/lib/rules/indent/indent.js +121 -69
  5. package/lib/rules/index.js +20 -0
  6. package/lib/rules/lowercase.js +7 -8
  7. package/lib/rules/max-element-depth.js +96 -0
  8. package/lib/rules/no-abstract-roles.js +4 -4
  9. package/lib/rules/no-accesskey-attrs.js +4 -4
  10. package/lib/rules/no-duplicate-attrs.js +4 -4
  11. package/lib/rules/no-duplicate-id.js +7 -7
  12. package/lib/rules/no-extra-spacing-attrs.js +14 -14
  13. package/lib/rules/no-extra-spacing-text.js +9 -10
  14. package/lib/rules/no-heading-inside-button.js +54 -0
  15. package/lib/rules/no-inline-styles.js +0 -1
  16. package/lib/rules/no-invalid-role.js +287 -0
  17. package/lib/rules/no-multiple-empty-lines.js +5 -5
  18. package/lib/rules/no-multiple-h1.js +2 -2
  19. package/lib/rules/no-nested-interactive.js +120 -0
  20. package/lib/rules/no-positive-tabindex.js +4 -4
  21. package/lib/rules/no-restricted-attr-values.js +6 -6
  22. package/lib/rules/no-restricted-attrs.js +6 -6
  23. package/lib/rules/no-script-style-type.js +4 -4
  24. package/lib/rules/no-skip-heading-levels.js +2 -2
  25. package/lib/rules/no-trailing-spaces.js +3 -3
  26. package/lib/rules/prefer-https.js +106 -0
  27. package/lib/rules/quotes.js +8 -8
  28. package/lib/rules/require-attrs.js +14 -6
  29. package/lib/rules/require-closing-tags.js +4 -4
  30. package/lib/rules/require-explicit-size.js +122 -0
  31. package/lib/rules/require-form-method.js +81 -0
  32. package/lib/rules/require-img-alt.js +2 -3
  33. package/lib/rules/require-input-label.js +77 -0
  34. package/lib/rules/require-meta-charset.js +3 -3
  35. package/lib/rules/require-meta-description.js +3 -3
  36. package/lib/rules/require-meta-viewport.js +3 -3
  37. package/lib/rules/require-open-graph-protocol.js +3 -3
  38. package/lib/rules/require-title.js +5 -5
  39. package/lib/rules/sort-attrs.js +12 -12
  40. package/lib/rules/utils/node.js +72 -32
  41. package/lib/rules/utils/settings.js +2 -2
  42. package/lib/rules/utils/visitors.js +1 -1
  43. package/lib/types/ast.d.ts +204 -0
  44. package/lib/types/index.d.ts +3 -0
  45. package/lib/types/rule.d.ts +83 -0
  46. package/lib/types/settings.ts +13 -0
  47. package/package.json +4 -4
  48. package/types/rules/attrs-newline.d.ts +2 -3
  49. package/types/rules/attrs-newline.d.ts.map +1 -1
  50. package/types/rules/element-newline.d.ts +8 -9
  51. package/types/rules/element-newline.d.ts.map +1 -1
  52. package/types/rules/id-naming-convention.d.ts +4 -4
  53. package/types/rules/id-naming-convention.d.ts.map +1 -1
  54. package/types/rules/indent/indent.d.ts +12 -5
  55. package/types/rules/indent/indent.d.ts.map +1 -1
  56. package/types/rules/index.d.ts +8 -0
  57. package/types/rules/lowercase.d.ts +4 -5
  58. package/types/rules/lowercase.d.ts.map +1 -1
  59. package/types/rules/max-element-depth.d.ts +10 -0
  60. package/types/rules/max-element-depth.d.ts.map +1 -0
  61. package/types/rules/no-abstract-roles.d.ts +4 -4
  62. package/types/rules/no-abstract-roles.d.ts.map +1 -1
  63. package/types/rules/no-accesskey-attrs.d.ts +4 -4
  64. package/types/rules/no-accesskey-attrs.d.ts.map +1 -1
  65. package/types/rules/no-duplicate-attrs.d.ts +4 -4
  66. package/types/rules/no-duplicate-attrs.d.ts.map +1 -1
  67. package/types/rules/no-duplicate-id.d.ts +5 -5
  68. package/types/rules/no-duplicate-id.d.ts.map +1 -1
  69. package/types/rules/no-extra-spacing-attrs.d.ts +11 -11
  70. package/types/rules/no-extra-spacing-attrs.d.ts.map +1 -1
  71. package/types/rules/no-extra-spacing-text.d.ts +7 -8
  72. package/types/rules/no-extra-spacing-text.d.ts.map +1 -1
  73. package/types/rules/no-heading-inside-button.d.ts +7 -0
  74. package/types/rules/no-heading-inside-button.d.ts.map +1 -0
  75. package/types/rules/no-inline-styles.d.ts +1 -2
  76. package/types/rules/no-inline-styles.d.ts.map +1 -1
  77. package/types/rules/no-invalid-role.d.ts +7 -0
  78. package/types/rules/no-invalid-role.d.ts.map +1 -0
  79. package/types/rules/no-multiple-empty-lines.d.ts +5 -5
  80. package/types/rules/no-multiple-empty-lines.d.ts.map +1 -1
  81. package/types/rules/no-multiple-h1.d.ts +2 -2
  82. package/types/rules/no-multiple-h1.d.ts.map +1 -1
  83. package/types/rules/no-nested-interactive.d.ts +8 -0
  84. package/types/rules/no-nested-interactive.d.ts.map +1 -0
  85. package/types/rules/no-positive-tabindex.d.ts +4 -4
  86. package/types/rules/no-positive-tabindex.d.ts.map +1 -1
  87. package/types/rules/no-restricted-attr-values.d.ts +5 -5
  88. package/types/rules/no-restricted-attr-values.d.ts.map +1 -1
  89. package/types/rules/no-restricted-attrs.d.ts +5 -5
  90. package/types/rules/no-restricted-attrs.d.ts.map +1 -1
  91. package/types/rules/no-script-style-type.d.ts +4 -4
  92. package/types/rules/no-script-style-type.d.ts.map +1 -1
  93. package/types/rules/no-skip-heading-levels.d.ts +2 -2
  94. package/types/rules/no-skip-heading-levels.d.ts.map +1 -1
  95. package/types/rules/no-trailing-spaces.d.ts +3 -3
  96. package/types/rules/no-trailing-spaces.d.ts.map +1 -1
  97. package/types/rules/prefer-https.d.ts +11 -0
  98. package/types/rules/prefer-https.d.ts.map +1 -0
  99. package/types/rules/quotes.d.ts +6 -6
  100. package/types/rules/quotes.d.ts.map +1 -1
  101. package/types/rules/require-attrs.d.ts +9 -4
  102. package/types/rules/require-attrs.d.ts.map +1 -1
  103. package/types/rules/require-closing-tags.d.ts +2 -2
  104. package/types/rules/require-closing-tags.d.ts.map +1 -1
  105. package/types/rules/require-explicit-size.d.ts +9 -0
  106. package/types/rules/require-explicit-size.d.ts.map +1 -0
  107. package/types/rules/require-form-method.d.ts +7 -0
  108. package/types/rules/require-form-method.d.ts.map +1 -0
  109. package/types/rules/require-img-alt.d.ts +2 -2
  110. package/types/rules/require-img-alt.d.ts.map +1 -1
  111. package/types/rules/require-input-label.d.ts +8 -0
  112. package/types/rules/require-input-label.d.ts.map +1 -0
  113. package/types/rules/require-meta-charset.d.ts +3 -3
  114. package/types/rules/require-meta-charset.d.ts.map +1 -1
  115. package/types/rules/require-meta-description.d.ts +3 -3
  116. package/types/rules/require-meta-description.d.ts.map +1 -1
  117. package/types/rules/require-meta-viewport.d.ts +3 -3
  118. package/types/rules/require-meta-viewport.d.ts.map +1 -1
  119. package/types/rules/require-open-graph-protocol.d.ts +3 -3
  120. package/types/rules/require-open-graph-protocol.d.ts.map +1 -1
  121. package/types/rules/require-title.d.ts +4 -4
  122. package/types/rules/require-title.d.ts.map +1 -1
  123. package/types/rules/sort-attrs.d.ts +4 -4
  124. package/types/rules/sort-attrs.d.ts.map +1 -1
  125. package/types/rules/utils/node.d.ts +56 -37
  126. package/types/rules/utils/node.d.ts.map +1 -1
  127. package/types/rules/utils/settings.d.ts +2 -2
  128. package/types/rules/utils/settings.d.ts.map +1 -1
  129. package/types/rules/utils/source-code.d.ts +1 -1
  130. package/types/rules/utils/source-code.d.ts.map +1 -1
  131. package/types/rules/utils/visitors.d.ts +1 -1
  132. package/types/rules/utils/visitors.d.ts.map +1 -1
  133. package/types/types/settings.d.ts +13 -0
  134. package/types/types/settings.d.ts.map +1 -0
  135. package/lib/types.d.ts +0 -289
package/lib/types.d.ts DELETED
@@ -1,289 +0,0 @@
1
- import ESTree, { TaggedTemplateExpression, TemplateLiteral } from "estree";
2
- import ESLint from "eslint";
3
- import * as ESHtml from "es-html-parser";
4
-
5
- type Fix = ESLint.Rule.Fix;
6
- type Token = ESLint.AST.Token;
7
-
8
- type AnyNode = ESHtml.AnyNode | LineNode;
9
-
10
- export type Range = ESLint.AST.Range;
11
-
12
- type Location = ESLint.AST.SourceLocation;
13
-
14
- export interface BaseNode {
15
- range: [number, number];
16
- loc: {
17
- start: ESTree.Position;
18
- end: ESTree.Position;
19
- };
20
- }
21
-
22
- interface AttributeKeyNode extends ESHtml.AttributeKeyNode {
23
- parent: AttributeNode;
24
- }
25
-
26
- interface TextNode extends ESHtml.TextNode {
27
- parent: TagNode;
28
- }
29
-
30
- export interface TagNode extends ESHtml.TagNode {
31
- attributes: AttributeNode[];
32
- parent: TagNode | HTMLNode;
33
- openStart: OpenTagStartNode;
34
- openEnd: OpenTagEndNode;
35
- close: CloseTagNode;
36
- children: Array<
37
- TextNode | TagNode | ScriptTagNode | StyleTagNode | CommentNode
38
- >;
39
- }
40
-
41
- interface OpenTagStartNode extends ESHtml.OpenTagStartNode {
42
- parent: TagNode;
43
- }
44
-
45
- interface OpenTagEndNode extends ESHtml.OpenTagEndNode {
46
- parent: TagNode;
47
- }
48
-
49
- interface CloseTagNode extends ESHtml.CloseTagNode {
50
- parent: TagNode;
51
- }
52
-
53
- interface AttributeNode extends ESHtml.AttributeNode {
54
- key: AttributeKeyNode;
55
- value?: AttributeValueNode;
56
- parent: TagNode | StyleTagNode | ScriptTagNode;
57
- }
58
-
59
- interface AttributeValueNode extends ESHtml.AttributeValueNode {
60
- parent: AttributeNode;
61
- }
62
-
63
- interface AttributeValueWrapperEndNode
64
- extends ESHtml.AttributeValueWrapperEndNode {
65
- parent: AttributeNode;
66
- }
67
-
68
- interface AttributeValueWrapperStartNode
69
- extends ESHtml.AttributeValueWrapperStartNode {
70
- parent: AttributeNode;
71
- }
72
-
73
- export interface ScriptTagNode extends ESHtml.ScriptTagNode {
74
- attributes: AttributeNode[];
75
- parent: HTMLNode | TagNode;
76
- openStart: OpenScriptTagStartNode;
77
- openEnd: OpenScriptTagEndNode;
78
- }
79
-
80
- interface OpenScriptTagStartNode extends ESHtml.OpenScriptTagStartNode {
81
- parent: ScriptTagNode;
82
- }
83
-
84
- interface CloseScriptTagNode extends ESHtml.CloseScriptTagNode {
85
- parent: ScriptTagNode;
86
- }
87
-
88
- interface OpenScriptTagEndNode extends ESHtml.OpenScriptTagEndNode {
89
- parent: ScriptTagNode;
90
- }
91
-
92
- interface ScriptTagContentNode extends ESHtml.ScriptTagContentNode {
93
- parent: ScriptTagNode;
94
- }
95
-
96
- export interface StyleTagNode extends ESHtml.StyleTagNode {
97
- attributes: AttributeNode[];
98
- parent: TagNode | HTMLNode;
99
- openStart: OpenStyleTagStartNode;
100
- openEnd: OpenStyleTagEndNode;
101
- }
102
-
103
- interface OpenStyleTagStartNode extends ESHtml.OpenStyleTagStartNode {
104
- parent: StyleTagNode;
105
- }
106
-
107
- interface OpenStyleTagEndNode extends ESHtml.OpenStyleTagEndNode {
108
- parent: StyleTagNode;
109
- }
110
-
111
- interface StyleTagContentNode extends ESHtml.StyleTagContentNode {
112
- parent: StyleTagNode;
113
- }
114
-
115
- interface CloseStyleTagNode extends ESHtml.CloseStyleTagNode {
116
- parent: StyleTagNode;
117
- }
118
-
119
- interface CommentNode extends ESHtml.CommentNode {
120
- parent: HTMLNode | TagNode;
121
- }
122
-
123
- interface CommentOpenNode extends ESHtml.CommentOpenNode {
124
- parent: CommentNode;
125
- }
126
-
127
- interface CommentCloseNode extends ESHtml.CommentCloseNode {
128
- parent: CommentNode;
129
- }
130
-
131
- interface CommentContentNode extends ESHtml.CommentContentNode {
132
- parent: CommentNode;
133
- }
134
-
135
- interface DoctypeNode extends ESHtml.DoctypeNode {
136
- parent: HTMLNode;
137
- }
138
-
139
- interface DoctypeOpenNode extends ESHtml.DoctypeOpenNode {
140
- parent: DoctypeNode;
141
- }
142
-
143
- interface DoctypeCloseNode extends ESHtml.DoctypeCloseNode {
144
- parent: DoctypeNode;
145
- }
146
-
147
- interface DoctypeAttributeNode extends ESHtml.DoctypeAttributeNode {
148
- parent: DoctypeNode;
149
- }
150
-
151
- interface DoctypeAttributeValueNode extends ESHtml.DoctypeAttributeValueNode {
152
- parent: DoctypeNode;
153
- }
154
-
155
- interface DoctypeAttributeWrapperStart
156
- extends ESHtml.DoctypeAttributeWrapperStartNode {
157
- parent: DoctypeNode;
158
- }
159
-
160
- interface DoctypeAttributeWrapperEnd
161
- extends ESHtml.DoctypeAttributeWrapperEndNode {
162
- parent: DoctypeNode;
163
- }
164
-
165
- interface LineNode extends BaseNode {
166
- type: "Line";
167
- value: string;
168
- skipIndentCheck: boolean;
169
- }
170
-
171
- type PostFix<T, S extends string> = {
172
- [K in keyof T as `${K & string}${S}`]: T[K];
173
- };
174
-
175
- export type RuleListener = BaseRuleListener &
176
- PostFix<BaseRuleListener, ":exit">;
177
-
178
- interface BaseRuleListener {
179
- Document?: (node: ESHtml.DocumentNode) => void;
180
- AttributeKey?: (node: AttributeKeyNode) => void;
181
- Text?: (node: TextNode) => void;
182
- Tag?: (node: TagNode) => void;
183
- OpenTagStart?: (node: OpenTagStartNode) => void;
184
- OpenTagEnd?: (node: OpenTagEndNode) => void;
185
- CloseTag?: (node: CloseTagNode) => void;
186
- Attribute?: (node: AttributeNode) => void;
187
- AttributeValue?: (node: AttributeValueNode) => void;
188
- AttributeValueWrapperEnd?: (node: AttributeValueWrapperEndNode) => void;
189
- AttributeValueWrapperStart?: (node: AttributeValueWrapperStartNode) => void;
190
- ScriptTag?: (node: ScriptTagNode) => void;
191
- OpenScriptTagStart?: (node: OpenScriptTagStartNode) => void;
192
- CloseScriptTag?: (node: CloseScriptTagNode) => void;
193
- OpenScriptTagEnd?: (node: OpenScriptTagEndNode) => void;
194
- ScriptTagContent?: (node: ScriptTagContentNode) => void;
195
- StyleTag?: (node: StyleTagNode) => void;
196
- OpenStyleTagStart?: (node: OpenStyleTagStartNode) => void;
197
- OpenStyleTagEnd?: (node: OpenStyleTagEndNode) => void;
198
- StyleTagContent?: (node: StyleTagContentNode) => void;
199
- CloseStyleTag?: (node: CloseStyleTagNode) => void;
200
- Comment?: (node: CommentNode) => void;
201
- CommentOpen?: (node: CommentOpenNode) => void;
202
- CommentClose?: (node: CommentCloseNode) => void;
203
- CommentContent?: (node: CommentContentNode) => void;
204
- Doctype?: (node: DoctypeNode) => void;
205
- DoctypeOpen?: (node: DoctypeOpenNode) => void;
206
- DoctypeClose?: (node: DoctypeCloseNode) => void;
207
- DoctypeAttribute?: (node: DoctypeAttributeNode) => void;
208
- DoctypeAttributeValue?: (node: DoctypeAttributeValueNode) => void;
209
- DoctypeAttributeWrapperStart?: (node: DoctypeAttributeWrapperStart) => void;
210
- DoctypeAttributeWrapperEnd?: (node: DoctypeAttributeWrapperEnd) => void;
211
- TaggedTemplateExpression?: (node: TaggedTemplateExpression) => void;
212
- TemplateLiteral?: (node: TemplateLiteral) => void;
213
- }
214
-
215
- export interface RuleModule extends ESLint.Rule.RuleModule {
216
- create(context: Context): RuleListener;
217
- meta?: ESLint.Rule.RuleMetaData;
218
- }
219
-
220
- export interface RuleFixer {
221
- insertTextAfter(nodeOrToken: BaseNode | Token, text: string): Fix;
222
-
223
- insertTextAfterRange(range: Range, text: string): Fix;
224
-
225
- insertTextBefore(nodeOrToken: BaseNode | Token, text: string): Fix;
226
-
227
- insertTextBeforeRange(range: Range, text: string): Fix;
228
-
229
- remove(nodeOrToken: BaseNode | Token): Fix;
230
-
231
- removeRange(range: Range): Fix;
232
-
233
- replaceText(nodeOrToken: BaseNode | Token, text: string): Fix;
234
-
235
- replaceTextRange(range: Range, text: string): Fix;
236
- }
237
-
238
- interface ReportDescriptorOptionsBase {
239
- data?: { [key: string]: string };
240
-
241
- fix?:
242
- | null
243
- | ((fixer: RuleFixer) => null | Fix | IterableIterator<Fix> | Fix[]);
244
- }
245
-
246
- type SuggestionDescriptorMessage = { desc: string } | { messageId: string };
247
- type SuggestionReportDescriptor = SuggestionDescriptorMessage &
248
- ReportDescriptorOptionsBase;
249
-
250
- interface ReportDescriptorOptions extends ReportDescriptorOptionsBase {
251
- suggest?: SuggestionReportDescriptor[] | null;
252
- }
253
-
254
- type ReportDescriptor = ReportDescriptorMessage &
255
- ReportDescriptorLocation &
256
- ReportDescriptorOptions;
257
- type ReportDescriptorMessage = { message: string } | { messageId: string };
258
- type ReportDescriptorLocation = {
259
- node?: BaseNode;
260
- loc?: ESLint.AST.SourceLocation;
261
- line?: number;
262
- column?: number;
263
- };
264
-
265
- export interface Context extends Omit<ESLint.Rule.RuleContext, "report"> {
266
- report(descriptor: ReportDescriptor): void;
267
- }
268
-
269
- export type ContentNode =
270
- | CommentNode
271
- | DoctypeNode
272
- | ScriptTagNode
273
- | StyleTagNode
274
- | TagNode
275
- | TextNode;
276
-
277
- export type MaybeHTMLSettings = {
278
- templateLiterals?: {
279
- tags?: string[];
280
- comments?: string[];
281
- };
282
- };
283
-
284
- export type HTMLSettings = {
285
- templateLiterals: {
286
- tags: RegExp[];
287
- comments: RegExp[];
288
- };
289
- };