@html-eslint/eslint-plugin 0.37.0 → 0.38.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/configs/recommended.js +1 -0
- package/lib/rules/indent/indent.js +6 -2
- package/lib/rules/index.js +2 -0
- package/lib/rules/no-duplicate-attrs.js +23 -0
- package/lib/rules/use-baseline.js +269 -0
- package/lib/rules/utils/baseline.js +509 -0
- package/package.json +6 -6
- package/types/configs/recommended.d.ts +1 -0
- package/types/index.d.ts +2 -0
- package/types/rules/indent/indent.d.ts +3 -1
- package/types/rules/indent/indent.d.ts.map +1 -1
- package/types/rules/index.d.ts +2 -0
- package/types/rules/no-duplicate-attrs.d.ts +3 -1
- package/types/rules/no-duplicate-attrs.d.ts.map +1 -1
- package/types/rules/use-baseline.d.ts +14 -0
- package/types/rules/use-baseline.d.ts.map +1 -0
- package/types/rules/utils/baseline.d.ts +9 -0
- package/types/rules/utils/baseline.d.ts.map +1 -0
|
@@ -12,6 +12,8 @@
|
|
|
12
12
|
* @typedef { import("@html-eslint/types").TemplateLiteral } TemplateLiteral
|
|
13
13
|
* @typedef { import("@html-eslint/types").OpenTemplate } OpenTemplate
|
|
14
14
|
* @typedef { import("@html-eslint/types").CloseTemplate } CloseTemplate
|
|
15
|
+
* @typedef { import("@html-eslint/types").ScriptTag } ScriptTag
|
|
16
|
+
* @typedef { import("@html-eslint/types").StyleTag } StyleTag
|
|
15
17
|
*
|
|
16
18
|
* @typedef {AnyNode | Line} AnyNodeOrLine
|
|
17
19
|
* @typedef {Object} IndentType
|
|
@@ -40,6 +42,8 @@ const {
|
|
|
40
42
|
isLine,
|
|
41
43
|
isTag,
|
|
42
44
|
hasTemplate,
|
|
45
|
+
isScript,
|
|
46
|
+
isStyle,
|
|
43
47
|
} = require("../utils/node");
|
|
44
48
|
const {
|
|
45
49
|
shouldCheckTaggedTemplateExpression,
|
|
@@ -121,7 +125,7 @@ module.exports = {
|
|
|
121
125
|
const { indentType, indentSize, indentChar } = getIndentOptionInfo(context);
|
|
122
126
|
|
|
123
127
|
/**
|
|
124
|
-
* @param {Tag} node
|
|
128
|
+
* @param {Tag | ScriptTag | StyleTag} node
|
|
125
129
|
* @return {number}
|
|
126
130
|
*/
|
|
127
131
|
function getTagIncreasingLevel(node) {
|
|
@@ -150,7 +154,7 @@ module.exports = {
|
|
|
150
154
|
if (isLine(node)) {
|
|
151
155
|
return 1;
|
|
152
156
|
}
|
|
153
|
-
if (isTag(node)) {
|
|
157
|
+
if (isTag(node) || isScript(node) || isStyle(node)) {
|
|
154
158
|
return getTagIncreasingLevel(node);
|
|
155
159
|
}
|
|
156
160
|
const type = node.type;
|
package/lib/rules/index.js
CHANGED
|
@@ -45,6 +45,7 @@ const noInvalidRole = require("./no-invalid-role");
|
|
|
45
45
|
const noNestedInteractive = require("./no-nested-interactive");
|
|
46
46
|
const maxElementDepth = require("./max-element-depth");
|
|
47
47
|
const requireExplicitSize = require("./require-explicit-size");
|
|
48
|
+
const useBaseLine = require("./use-baseline");
|
|
48
49
|
// import new rule here ↑
|
|
49
50
|
// DO NOT REMOVE THIS COMMENT
|
|
50
51
|
|
|
@@ -96,6 +97,7 @@ module.exports = {
|
|
|
96
97
|
"require-input-label": requireInputLabel,
|
|
97
98
|
"max-element-depth": maxElementDepth,
|
|
98
99
|
"require-explicit-size": requireExplicitSize,
|
|
100
|
+
"use-baseline": useBaseLine,
|
|
99
101
|
// export new rule here ↑
|
|
100
102
|
// DO NOT REMOVE THIS COMMENT
|
|
101
103
|
};
|
|
@@ -3,6 +3,8 @@
|
|
|
3
3
|
* @typedef { import("@html-eslint/types").StyleTag } StyleTag
|
|
4
4
|
* @typedef { import("@html-eslint/types").ScriptTag } ScriptTag
|
|
5
5
|
* @typedef { import("../types").RuleModule<[]> } RuleModule
|
|
6
|
+
* @typedef { import("@html-eslint/types").Attribute } Attribute
|
|
7
|
+
* @typedef { import("../types").SuggestionReportDescriptor } SuggestionReportDescriptor
|
|
6
8
|
*/
|
|
7
9
|
|
|
8
10
|
const { RULE_CATEGORY } = require("../constants");
|
|
@@ -10,6 +12,7 @@ const { createVisitors } = require("./utils/visitors");
|
|
|
10
12
|
|
|
11
13
|
const MESSAGE_IDS = {
|
|
12
14
|
DUPLICATE_ATTRS: "duplicateAttrs",
|
|
15
|
+
REMOVE_ATTR: "removeAttr",
|
|
13
16
|
};
|
|
14
17
|
|
|
15
18
|
/**
|
|
@@ -26,14 +29,33 @@ module.exports = {
|
|
|
26
29
|
},
|
|
27
30
|
|
|
28
31
|
fixable: null,
|
|
32
|
+
hasSuggestions: true,
|
|
29
33
|
schema: [],
|
|
30
34
|
messages: {
|
|
31
35
|
[MESSAGE_IDS.DUPLICATE_ATTRS]:
|
|
32
36
|
"The attribute '{{attrName}}' is duplicated.",
|
|
37
|
+
[MESSAGE_IDS.REMOVE_ATTR]:
|
|
38
|
+
"Remove this duplicate '{{attrName}}' attribute.",
|
|
33
39
|
},
|
|
34
40
|
},
|
|
35
41
|
|
|
36
42
|
create(context) {
|
|
43
|
+
/**
|
|
44
|
+
* @param {Attribute} node
|
|
45
|
+
* @returns {SuggestionReportDescriptor[]}
|
|
46
|
+
*/
|
|
47
|
+
function getSuggestions(node) {
|
|
48
|
+
return [
|
|
49
|
+
{
|
|
50
|
+
messageId: MESSAGE_IDS.REMOVE_ATTR,
|
|
51
|
+
fix: (fixer) => fixer.removeRange(node.range),
|
|
52
|
+
data: {
|
|
53
|
+
attrName: node.key.value,
|
|
54
|
+
},
|
|
55
|
+
},
|
|
56
|
+
];
|
|
57
|
+
}
|
|
58
|
+
|
|
37
59
|
/**
|
|
38
60
|
* @param {Tag | StyleTag | ScriptTag} node
|
|
39
61
|
*/
|
|
@@ -48,6 +70,7 @@ module.exports = {
|
|
|
48
70
|
attrName: attr.key.value,
|
|
49
71
|
},
|
|
50
72
|
messageId: MESSAGE_IDS.DUPLICATE_ATTRS,
|
|
73
|
+
suggest: getSuggestions(attr),
|
|
51
74
|
});
|
|
52
75
|
} else {
|
|
53
76
|
attrsSet.add(attr.key.value.toLowerCase());
|
|
@@ -0,0 +1,269 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @typedef {Object} Option
|
|
3
|
+
* @property {"widely" | "newly" | number} Option.available
|
|
4
|
+
* @typedef { import("../types").RuleModule<[Option]> } RuleModule
|
|
5
|
+
* @typedef {import("@html-eslint/types").Attribute} Attribute
|
|
6
|
+
* @typedef {import("@html-eslint/types").Tag} Tag
|
|
7
|
+
* @typedef {import("@html-eslint/types").ScriptTag} ScriptTag
|
|
8
|
+
* @typedef {import("@html-eslint/types").StyleTag} StyleTag
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
const { RULE_CATEGORY } = require("../constants");
|
|
12
|
+
const {
|
|
13
|
+
elements,
|
|
14
|
+
globalAttributes,
|
|
15
|
+
BASELINE_HIGH,
|
|
16
|
+
BASELINE_LOW,
|
|
17
|
+
} = require("./utils/baseline");
|
|
18
|
+
const { createVisitors } = require("./utils/visitors");
|
|
19
|
+
|
|
20
|
+
const MESSAGE_IDS = {
|
|
21
|
+
NOT_BASELINE_ELEMENT: "notBaselineElement",
|
|
22
|
+
NOT_BASELINE_ELEMENT_ATTRIBUTE: "notBaselineElementAttribute",
|
|
23
|
+
NOT_BASELINE_GLOBAL_ATTRIBUTE: "notBaselineGlobalAttribute",
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* @type {RuleModule}
|
|
28
|
+
*/
|
|
29
|
+
module.exports = {
|
|
30
|
+
meta: {
|
|
31
|
+
type: "code",
|
|
32
|
+
docs: {
|
|
33
|
+
description: "Enforce the use of baseline features.",
|
|
34
|
+
recommended: true,
|
|
35
|
+
category: RULE_CATEGORY.BEST_PRACTICE,
|
|
36
|
+
},
|
|
37
|
+
fixable: null,
|
|
38
|
+
schema: [
|
|
39
|
+
{
|
|
40
|
+
type: "object",
|
|
41
|
+
properties: {
|
|
42
|
+
available: {
|
|
43
|
+
anyOf: [
|
|
44
|
+
{
|
|
45
|
+
enum: ["widely", "newly"],
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
// baseline year
|
|
49
|
+
type: "integer",
|
|
50
|
+
minimum: 2000,
|
|
51
|
+
maximum: new Date().getFullYear(),
|
|
52
|
+
},
|
|
53
|
+
],
|
|
54
|
+
},
|
|
55
|
+
},
|
|
56
|
+
additionalProperties: false,
|
|
57
|
+
},
|
|
58
|
+
],
|
|
59
|
+
|
|
60
|
+
messages: {
|
|
61
|
+
[MESSAGE_IDS.NOT_BASELINE_ELEMENT]:
|
|
62
|
+
"Element '{{element}}' is not a {{availability}} available baseline feature.",
|
|
63
|
+
[MESSAGE_IDS.NOT_BASELINE_ELEMENT_ATTRIBUTE]:
|
|
64
|
+
"Attribute '{{attr}}' on '{{element}}' is not a {{availability}} available baseline feature.",
|
|
65
|
+
[MESSAGE_IDS.NOT_BASELINE_GLOBAL_ATTRIBUTE]:
|
|
66
|
+
"Attribute '{{attr}}' is not a {{availability}} available baseline feature.",
|
|
67
|
+
},
|
|
68
|
+
},
|
|
69
|
+
|
|
70
|
+
create(context) {
|
|
71
|
+
const options = context.options[0] || { available: "widely" };
|
|
72
|
+
const available = options.available;
|
|
73
|
+
|
|
74
|
+
const baseYear = typeof available === "number" ? available : null;
|
|
75
|
+
const baseStatus = available === "widely" ? BASELINE_HIGH : BASELINE_LOW;
|
|
76
|
+
const availability = String(available);
|
|
77
|
+
|
|
78
|
+
/**
|
|
79
|
+
* @param {string} element
|
|
80
|
+
* @returns {boolean}
|
|
81
|
+
*/
|
|
82
|
+
function isCustomElement(element) {
|
|
83
|
+
return element.includes("-");
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
/**
|
|
87
|
+
* @param {string} encoded
|
|
88
|
+
* @returns {[number, number]}
|
|
89
|
+
*/
|
|
90
|
+
function decodeStatus(encoded) {
|
|
91
|
+
const [status, year = NaN] = encoded
|
|
92
|
+
.split(":")
|
|
93
|
+
.map((part) => Number(part));
|
|
94
|
+
return [status, year];
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
/**
|
|
98
|
+
* @param {string} encoded
|
|
99
|
+
* @returns {boolean}
|
|
100
|
+
*/
|
|
101
|
+
function isSupported(encoded) {
|
|
102
|
+
const [status, year = NaN] = decodeStatus(encoded);
|
|
103
|
+
if (baseYear) {
|
|
104
|
+
return year <= baseYear;
|
|
105
|
+
}
|
|
106
|
+
return status >= baseStatus;
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
/**
|
|
110
|
+
* @param {string} element
|
|
111
|
+
* @returns {boolean}
|
|
112
|
+
*/
|
|
113
|
+
function isSupportedElement(element) {
|
|
114
|
+
const elementEncoded = elements.get(element);
|
|
115
|
+
if (!elementEncoded) {
|
|
116
|
+
return true;
|
|
117
|
+
}
|
|
118
|
+
return isSupported(elementEncoded);
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
/**
|
|
122
|
+
* @param {string[]} parts
|
|
123
|
+
* @returns {string}
|
|
124
|
+
*/
|
|
125
|
+
function toStatusKey(...parts) {
|
|
126
|
+
return parts.map((part) => part.toLowerCase().trim()).join(".");
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
/**
|
|
130
|
+
* @param {string} element
|
|
131
|
+
* @param {string} key
|
|
132
|
+
* @returns {boolean}
|
|
133
|
+
*/
|
|
134
|
+
function isSupportedElementAttributeKey(element, key) {
|
|
135
|
+
const elementStatus = elements.get(toStatusKey(element, key));
|
|
136
|
+
if (!elementStatus) {
|
|
137
|
+
return true;
|
|
138
|
+
}
|
|
139
|
+
return isSupported(elementStatus);
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
/**
|
|
143
|
+
* @param {string} key
|
|
144
|
+
* @returns {boolean}
|
|
145
|
+
*/
|
|
146
|
+
function isSupportedGlobalAttributeKey(key) {
|
|
147
|
+
const globalAttrStatus = globalAttributes.get(toStatusKey(key));
|
|
148
|
+
if (!globalAttrStatus) {
|
|
149
|
+
return true;
|
|
150
|
+
}
|
|
151
|
+
return isSupported(globalAttrStatus);
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
/**
|
|
155
|
+
* @param {string} element
|
|
156
|
+
* @param {string} key
|
|
157
|
+
* @param {string} value
|
|
158
|
+
* @returns {boolean}
|
|
159
|
+
*/
|
|
160
|
+
function isSupportedElementAttributeKeyValue(element, key, value) {
|
|
161
|
+
const elementStatus = elements.get(toStatusKey(element, key, value));
|
|
162
|
+
if (!elementStatus) {
|
|
163
|
+
return true;
|
|
164
|
+
}
|
|
165
|
+
return isSupported(elementStatus);
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
/**
|
|
169
|
+
* @param {string} key
|
|
170
|
+
* @param {string} value
|
|
171
|
+
* @returns {boolean}
|
|
172
|
+
*/
|
|
173
|
+
function isSupportedGlobalAttributeKeyValue(key, value) {
|
|
174
|
+
const globalAttrStatus = globalAttributes.get(toStatusKey(key, value));
|
|
175
|
+
if (!globalAttrStatus) {
|
|
176
|
+
return true;
|
|
177
|
+
}
|
|
178
|
+
return isSupported(globalAttrStatus);
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
/**
|
|
182
|
+
* @param {Tag | ScriptTag | StyleTag} node
|
|
183
|
+
* @param {string} elementName
|
|
184
|
+
* @param {Attribute[]} attributes
|
|
185
|
+
*/
|
|
186
|
+
function check(node, elementName, attributes) {
|
|
187
|
+
if (isCustomElement(elementName)) {
|
|
188
|
+
return;
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
if (!isSupportedElement(elementName)) {
|
|
192
|
+
context.report({
|
|
193
|
+
node: node.openStart,
|
|
194
|
+
messageId: MESSAGE_IDS.NOT_BASELINE_ELEMENT,
|
|
195
|
+
data: {
|
|
196
|
+
element: `<${elementName}>`,
|
|
197
|
+
availability,
|
|
198
|
+
},
|
|
199
|
+
});
|
|
200
|
+
}
|
|
201
|
+
attributes.forEach((attribute) => {
|
|
202
|
+
if (!isSupportedElementAttributeKey(elementName, attribute.key.value)) {
|
|
203
|
+
context.report({
|
|
204
|
+
node: attribute.key,
|
|
205
|
+
messageId: MESSAGE_IDS.NOT_BASELINE_ELEMENT_ATTRIBUTE,
|
|
206
|
+
data: {
|
|
207
|
+
element: `<${elementName}>`,
|
|
208
|
+
attr: attribute.key.value,
|
|
209
|
+
availability,
|
|
210
|
+
},
|
|
211
|
+
});
|
|
212
|
+
} else if (!isSupportedGlobalAttributeKey(attribute.key.value)) {
|
|
213
|
+
context.report({
|
|
214
|
+
node: attribute.key,
|
|
215
|
+
messageId: MESSAGE_IDS.NOT_BASELINE_GLOBAL_ATTRIBUTE,
|
|
216
|
+
data: {
|
|
217
|
+
attr: attribute.key.value,
|
|
218
|
+
availability,
|
|
219
|
+
},
|
|
220
|
+
});
|
|
221
|
+
} else if (attribute.value) {
|
|
222
|
+
if (
|
|
223
|
+
!isSupportedElementAttributeKeyValue(
|
|
224
|
+
elementName,
|
|
225
|
+
attribute.key.value,
|
|
226
|
+
attribute.value.value
|
|
227
|
+
)
|
|
228
|
+
) {
|
|
229
|
+
context.report({
|
|
230
|
+
node: attribute.value,
|
|
231
|
+
messageId: MESSAGE_IDS.NOT_BASELINE_ELEMENT_ATTRIBUTE,
|
|
232
|
+
data: {
|
|
233
|
+
element: `<${elementName}>`,
|
|
234
|
+
attr: `${attribute.key.value}="${attribute.value.value}"`,
|
|
235
|
+
availability,
|
|
236
|
+
},
|
|
237
|
+
});
|
|
238
|
+
} else if (
|
|
239
|
+
!isSupportedGlobalAttributeKeyValue(
|
|
240
|
+
attribute.key.value,
|
|
241
|
+
attribute.value.value
|
|
242
|
+
)
|
|
243
|
+
) {
|
|
244
|
+
context.report({
|
|
245
|
+
node: attribute.value,
|
|
246
|
+
messageId: MESSAGE_IDS.NOT_BASELINE_GLOBAL_ATTRIBUTE,
|
|
247
|
+
data: {
|
|
248
|
+
attr: `${attribute.key.value}="${attribute.value.value}"`,
|
|
249
|
+
availability,
|
|
250
|
+
},
|
|
251
|
+
});
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
});
|
|
255
|
+
}
|
|
256
|
+
|
|
257
|
+
return createVisitors(context, {
|
|
258
|
+
ScriptTag(node) {
|
|
259
|
+
check(node, "script", node.attributes);
|
|
260
|
+
},
|
|
261
|
+
StyleTag(node) {
|
|
262
|
+
check(node, "style", node.attributes);
|
|
263
|
+
},
|
|
264
|
+
Tag(node) {
|
|
265
|
+
check(node, node.name, node.attributes);
|
|
266
|
+
},
|
|
267
|
+
});
|
|
268
|
+
},
|
|
269
|
+
};
|
|
@@ -0,0 +1,509 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This file is auto-generated. (yarn run baseline)
|
|
3
|
+
*/
|
|
4
|
+
const BASELINE_HIGH = 10;
|
|
5
|
+
const BASELINE_LOW = 5;
|
|
6
|
+
const BASELINE_FALSE = 0;
|
|
7
|
+
|
|
8
|
+
const elements = new Map([
|
|
9
|
+
["a", "10:2015"],
|
|
10
|
+
["a.attributionsourceid", "0:"],
|
|
11
|
+
["a.attributionsrc", "0:"],
|
|
12
|
+
["a.download", "10:2019"],
|
|
13
|
+
["a.href", "10:2015"],
|
|
14
|
+
["a.hreflang", "10:2015"],
|
|
15
|
+
["a.ping", "0:"],
|
|
16
|
+
["a.referrerpolicy", "10:2020"],
|
|
17
|
+
["a.referrerpolicy.no-referrer-when-downgrade", "0:"],
|
|
18
|
+
["a.referrerpolicy.origin-when-cross-origin", "0:"],
|
|
19
|
+
["a.referrerpolicy.unsafe-url", "0:"],
|
|
20
|
+
["a.rel", "10:2015"],
|
|
21
|
+
["a.rel.noopener", "10:2020"],
|
|
22
|
+
["a.rel.noreferrer", "10:2015"],
|
|
23
|
+
["a.target", "10:2015"],
|
|
24
|
+
["a.target.unfencedTop", "0:"],
|
|
25
|
+
["a.type", "10:2015"],
|
|
26
|
+
["abbr", "10:2015"],
|
|
27
|
+
["address", "10:2015"],
|
|
28
|
+
["area", "10:2015"],
|
|
29
|
+
["area.alt", "10:2015"],
|
|
30
|
+
["area.attributionsrc", "0:"],
|
|
31
|
+
["area.coords", "10:2015"],
|
|
32
|
+
["area.download", "10:2017"],
|
|
33
|
+
["area.href", "10:2015"],
|
|
34
|
+
["area.ping", "0:"],
|
|
35
|
+
["area.referrerpolicy", "10:2020"],
|
|
36
|
+
["area.referrerpolicy.no-referrer-when-downgrade", "0:"],
|
|
37
|
+
["area.referrerpolicy.origin-when-cross-origin", "0:"],
|
|
38
|
+
["area.referrerpolicy.unsafe-url", "0:"],
|
|
39
|
+
["area.rel", "10:2015"],
|
|
40
|
+
["area.rel.noopener", "10:2020"],
|
|
41
|
+
["area.rel.noreferrer", "10:2015"],
|
|
42
|
+
["area.shape", "10:2015"],
|
|
43
|
+
["area.target", "10:2015"],
|
|
44
|
+
["article", "10:2015"],
|
|
45
|
+
["aside", "10:2015"],
|
|
46
|
+
["audio", "10:2015"],
|
|
47
|
+
["audio.autoplay", "0:"],
|
|
48
|
+
["audio.controls", "10:2015"],
|
|
49
|
+
["audio.controlslist", "0:"],
|
|
50
|
+
["audio.crossorigin", "10:2020"],
|
|
51
|
+
["audio.disableremoteplayback", "0:"],
|
|
52
|
+
["audio.loop", "10:2015"],
|
|
53
|
+
["audio.muted", "10:2018"],
|
|
54
|
+
["audio.preload", "10:2015"],
|
|
55
|
+
["audio.src", "10:2015"],
|
|
56
|
+
["b", "10:2015"],
|
|
57
|
+
["base", "10:2015"],
|
|
58
|
+
["base.href", "10:2015"],
|
|
59
|
+
["base.target", "10:2015"],
|
|
60
|
+
["bdi", "10:2020"],
|
|
61
|
+
["bdo", "10:2015"],
|
|
62
|
+
["blockquote", "10:2015"],
|
|
63
|
+
["blockquote.cite", "10:2015"],
|
|
64
|
+
["body", "10:2015"],
|
|
65
|
+
["br", "10:2015"],
|
|
66
|
+
["button", "10:2015"],
|
|
67
|
+
["button.command", "0:"],
|
|
68
|
+
["button.commandfor", "0:"],
|
|
69
|
+
["button.disabled", "10:2015"],
|
|
70
|
+
["button.form", "10:2017"],
|
|
71
|
+
["button.formaction", "10:2015"],
|
|
72
|
+
["button.formenctype", "10:2015"],
|
|
73
|
+
["button.formmethod", "10:2015"],
|
|
74
|
+
["button.formnovalidate", "10:2015"],
|
|
75
|
+
["button.formtarget", "10:2015"],
|
|
76
|
+
["button.name", "10:2015"],
|
|
77
|
+
["button.popovertarget", "5:2024"],
|
|
78
|
+
["button.popovertargetaction", "5:2024"],
|
|
79
|
+
["button.type", "10:2015"],
|
|
80
|
+
["button.value", "10:2015"],
|
|
81
|
+
["canvas", "10:2015"],
|
|
82
|
+
["canvas.height", "10:2015"],
|
|
83
|
+
["canvas.width", "10:2015"],
|
|
84
|
+
["caption", "10:2015"],
|
|
85
|
+
["cite", "10:2015"],
|
|
86
|
+
["code", "10:2015"],
|
|
87
|
+
["col", "10:2015"],
|
|
88
|
+
["col.span", "10:2015"],
|
|
89
|
+
["colgroup", "10:2015"],
|
|
90
|
+
["colgroup.span", "10:2015"],
|
|
91
|
+
["data", "10:2017"],
|
|
92
|
+
["data.value", "10:2017"],
|
|
93
|
+
["datalist", "0:"],
|
|
94
|
+
["dd", "10:2015"],
|
|
95
|
+
["del", "10:2015"],
|
|
96
|
+
["del.cite", "10:2015"],
|
|
97
|
+
["del.datetime", "10:2015"],
|
|
98
|
+
["details", "10:2020"],
|
|
99
|
+
["details.name", "5:2024"],
|
|
100
|
+
["details.open", "10:2020"],
|
|
101
|
+
["dfn", "10:2015"],
|
|
102
|
+
["dialog", "10:2022"],
|
|
103
|
+
["dialog.open", "10:2022"],
|
|
104
|
+
["div", "10:2015"],
|
|
105
|
+
["dl", "10:2015"],
|
|
106
|
+
["dt", "10:2015"],
|
|
107
|
+
["em", "10:2015"],
|
|
108
|
+
["embed", "10:2015"],
|
|
109
|
+
["embed.height", "10:2015"],
|
|
110
|
+
["embed.src", "10:2015"],
|
|
111
|
+
["embed.type", "10:2020"],
|
|
112
|
+
["embed.width", "10:2015"],
|
|
113
|
+
["fencedframe", "0:"],
|
|
114
|
+
["fencedframe.allow", "0:"],
|
|
115
|
+
["fencedframe.height", "0:"],
|
|
116
|
+
["fencedframe.width", "0:"],
|
|
117
|
+
["fieldset", "10:2015"],
|
|
118
|
+
["fieldset.disabled", "10:2020"],
|
|
119
|
+
["fieldset.form", "10:2015"],
|
|
120
|
+
["fieldset.name", "10:2015"],
|
|
121
|
+
["figcaption", "10:2015"],
|
|
122
|
+
["figure", "10:2015"],
|
|
123
|
+
["footer", "10:2015"],
|
|
124
|
+
["form", "10:2015"],
|
|
125
|
+
["form.accept-charset", "10:2015"],
|
|
126
|
+
["form.action", "10:2015"],
|
|
127
|
+
["form.autocomplete", "10:2015"],
|
|
128
|
+
["form.enctype", "10:2015"],
|
|
129
|
+
["form.method", "10:2015"],
|
|
130
|
+
["form.name", "10:2015"],
|
|
131
|
+
["form.novalidate", "10:2017"],
|
|
132
|
+
["form.rel", "5:2023"],
|
|
133
|
+
["form.target", "10:2015"],
|
|
134
|
+
["h1", "10:2015"],
|
|
135
|
+
["h2", "10:2015"],
|
|
136
|
+
["h3", "10:2015"],
|
|
137
|
+
["h4", "10:2015"],
|
|
138
|
+
["h5", "10:2015"],
|
|
139
|
+
["h6", "10:2015"],
|
|
140
|
+
["head", "10:2015"],
|
|
141
|
+
["header", "10:2015"],
|
|
142
|
+
["hgroup", "10:2015"],
|
|
143
|
+
["hr", "10:2015"],
|
|
144
|
+
["html", "10:2015"],
|
|
145
|
+
["i", "10:2015"],
|
|
146
|
+
["iframe", "10:2015"],
|
|
147
|
+
["iframe.allow", "10:2020"],
|
|
148
|
+
["iframe.allow.accelerometer", "0:"],
|
|
149
|
+
["iframe.allow.ambient-light-sensor", "0:"],
|
|
150
|
+
["iframe.allow.attribution-reporting", "0:"],
|
|
151
|
+
["iframe.allow.bluetooth", "0:"],
|
|
152
|
+
["iframe.allow.camera", "10:2020"],
|
|
153
|
+
["iframe.allow.compute-pressure", "0:"],
|
|
154
|
+
["iframe.allow.display-capture", "0:"],
|
|
155
|
+
["iframe.allow.encrypted-media", "0:"],
|
|
156
|
+
["iframe.allow.fullscreen", "0:"],
|
|
157
|
+
["iframe.allow.gamepad", "0:"],
|
|
158
|
+
["iframe.allow.geolocation", "0:"],
|
|
159
|
+
["iframe.allow.gyroscope", "0:"],
|
|
160
|
+
["iframe.allow.hid", "0:"],
|
|
161
|
+
["iframe.allow.idle-detection", "0:"],
|
|
162
|
+
["iframe.allow.local-fonts", "0:"],
|
|
163
|
+
["iframe.allow.magnetometer", "0:"],
|
|
164
|
+
["iframe.allow.microphone", "10:2020"],
|
|
165
|
+
["iframe.allow.midi", "0:"],
|
|
166
|
+
["iframe.allow.otp-credentials", "0:"],
|
|
167
|
+
["iframe.allow.payment", "0:"],
|
|
168
|
+
["iframe.allow.picture-in-picture", "0:"],
|
|
169
|
+
["iframe.allow.publickey-credentials-create", "0:"],
|
|
170
|
+
["iframe.allow.publickey-credentials-get", "0:"],
|
|
171
|
+
["iframe.allow.screen-wake-lock", "5:2024"],
|
|
172
|
+
["iframe.allow.serial", "0:"],
|
|
173
|
+
["iframe.allow.storage-access", "0:"],
|
|
174
|
+
["iframe.allow.usb", "0:"],
|
|
175
|
+
["iframe.allow.web-share", "0:"],
|
|
176
|
+
["iframe.allow.window-management", "0:"],
|
|
177
|
+
["iframe.allow.xr-spatial-tracking", "0:"],
|
|
178
|
+
["iframe.allowfullscreen", "0:"],
|
|
179
|
+
["iframe.credentialless", "0:"],
|
|
180
|
+
["iframe.csp", "0:"],
|
|
181
|
+
["iframe.height", "10:2015"],
|
|
182
|
+
["iframe.loading", "5:2023"],
|
|
183
|
+
["iframe.name", "10:2015"],
|
|
184
|
+
["iframe.referrerpolicy", "10:2020"],
|
|
185
|
+
["iframe.referrerpolicy.no-referrer-when-downgrade", "0:"],
|
|
186
|
+
["iframe.referrerpolicy.origin-when-cross-origin", "0:"],
|
|
187
|
+
["iframe.referrerpolicy.unsafe-url", "0:"],
|
|
188
|
+
["iframe.sandbox", "10:2015"],
|
|
189
|
+
["iframe.sandbox.allow-downloads", "5:2023"],
|
|
190
|
+
["iframe.sandbox.allow-forms", "10:2020"],
|
|
191
|
+
["iframe.sandbox.allow-modals", "10:2020"],
|
|
192
|
+
["iframe.sandbox.allow-pointer-lock", "0:"],
|
|
193
|
+
["iframe.sandbox.allow-popups", "10:2015"],
|
|
194
|
+
["iframe.sandbox.allow-popups-to-escape-sandbox", "10:2020"],
|
|
195
|
+
["iframe.sandbox.allow-presentation", "0:"],
|
|
196
|
+
["iframe.sandbox.allow-same-origin", "10:2020"],
|
|
197
|
+
["iframe.sandbox.allow-scripts", "10:2020"],
|
|
198
|
+
["iframe.sandbox.allow-top-navigation", "10:2020"],
|
|
199
|
+
["iframe.sandbox.allow-top-navigation-by-user-activation", "10:2020"],
|
|
200
|
+
["iframe.sandbox.allow-top-navigation-to-custom-protocols", "0:"],
|
|
201
|
+
["iframe.src", "10:2015"],
|
|
202
|
+
["iframe.srcdoc", "10:2020"],
|
|
203
|
+
["iframe.width", "10:2015"],
|
|
204
|
+
["img", "10:2015"],
|
|
205
|
+
["img.alt", "10:2015"],
|
|
206
|
+
["img.attributionsrc", "0:"],
|
|
207
|
+
["img.crossorigin", "10:2015"],
|
|
208
|
+
["img.decoding", "10:2020"],
|
|
209
|
+
["img.fetchpriority", "5:2024"],
|
|
210
|
+
["img.height", "10:2015"],
|
|
211
|
+
["img.ismap", "10:2015"],
|
|
212
|
+
["img.loading", "10:2022"],
|
|
213
|
+
["img.referrerpolicy", "10:2020"],
|
|
214
|
+
["img.referrerpolicy.no-referrer-when-downgrade", "0:"],
|
|
215
|
+
["img.referrerpolicy.origin-when-cross-origin", "0:"],
|
|
216
|
+
["img.referrerpolicy.unsafe-url", "0:"],
|
|
217
|
+
["img.sizes", "10:2016"],
|
|
218
|
+
["img.src", "10:2015"],
|
|
219
|
+
["img.srcset", "10:2015"],
|
|
220
|
+
["img.usemap", "10:2015"],
|
|
221
|
+
["img.width", "10:2015"],
|
|
222
|
+
["input", "10:2015"],
|
|
223
|
+
["input.accept", "10:2015"],
|
|
224
|
+
["input.alpha", "0:"],
|
|
225
|
+
["input.alt", "10:2015"],
|
|
226
|
+
["input.capture", "0:"],
|
|
227
|
+
["input.checked", "10:2015"],
|
|
228
|
+
["input.colorspace", "0:"],
|
|
229
|
+
["input.dirname", "5:2023"],
|
|
230
|
+
["input.disabled", "10:2015"],
|
|
231
|
+
["input.form", "10:2015"],
|
|
232
|
+
["input.formaction", "10:2015"],
|
|
233
|
+
["input.formenctype", "10:2015"],
|
|
234
|
+
["input.formmethod", "10:2015"],
|
|
235
|
+
["input.formnovalidate", "10:2015"],
|
|
236
|
+
["input.formtarget", "10:2015"],
|
|
237
|
+
["input.list", "10:2019"],
|
|
238
|
+
["input.max", "10:2015"],
|
|
239
|
+
["input.maxlength", "10:2015"],
|
|
240
|
+
["input.min", "10:2015"],
|
|
241
|
+
["input.minlength", "10:2018"],
|
|
242
|
+
["input.multiple", "10:2015"],
|
|
243
|
+
["input.name", "10:2015"],
|
|
244
|
+
["input.pattern", "10:2015"],
|
|
245
|
+
["input.placeholder", "10:2015"],
|
|
246
|
+
["input.popovertarget", "5:2024"],
|
|
247
|
+
["input.popovertargetaction", "5:2024"],
|
|
248
|
+
["input.readonly", "10:2015"],
|
|
249
|
+
["input.required", "10:2015"],
|
|
250
|
+
["input.size", "10:2015"],
|
|
251
|
+
["input.src", "10:2015"],
|
|
252
|
+
["input.step", "10:2015"],
|
|
253
|
+
["ins", "10:2015"],
|
|
254
|
+
["ins.cite", "10:2015"],
|
|
255
|
+
["ins.datetime", "10:2015"],
|
|
256
|
+
["kbd", "10:2015"],
|
|
257
|
+
["label", "10:2015"],
|
|
258
|
+
["label.for", "10:2015"],
|
|
259
|
+
["legend", "10:2015"],
|
|
260
|
+
["li", "10:2015"],
|
|
261
|
+
["li.value", "10:2015"],
|
|
262
|
+
["link", "10:2015"],
|
|
263
|
+
["link.as", "10:2018"],
|
|
264
|
+
["link.blocking", "0:"],
|
|
265
|
+
["link.crossorigin", "10:2018"],
|
|
266
|
+
["link.disabled", "10:2015"],
|
|
267
|
+
["link.fetchpriority", "5:2024"],
|
|
268
|
+
["link.href", "10:2015"],
|
|
269
|
+
["link.hreflang", "10:2015"],
|
|
270
|
+
["link.imagesizes", "5:2023"],
|
|
271
|
+
["link.imagesrcset", "5:2023"],
|
|
272
|
+
["link.integrity", "10:2018"],
|
|
273
|
+
["link.media", "10:2015"],
|
|
274
|
+
["link.referrerpolicy", "10:2020"],
|
|
275
|
+
["link.referrerpolicy.no-referrer-when-downgrade", "0:"],
|
|
276
|
+
["link.referrerpolicy.origin-when-cross-origin", "0:"],
|
|
277
|
+
["link.referrerpolicy.unsafe-url", "0:"],
|
|
278
|
+
["link.rel", "10:2015"],
|
|
279
|
+
["link.rel.dns-prefetch", "5:2024"],
|
|
280
|
+
["link.rel.expect", "0:"],
|
|
281
|
+
["link.rel.manifest", "0:"],
|
|
282
|
+
["link.rel.modulepreload", "5:2023"],
|
|
283
|
+
["link.rel.preconnect", "10:2020"],
|
|
284
|
+
["link.rel.prefetch", "0:"],
|
|
285
|
+
["link.rel.preload", "10:2021"],
|
|
286
|
+
["link.rel.preload.as-fetch", "10:2021"],
|
|
287
|
+
["link.rel.preload.as-font", "10:2021"],
|
|
288
|
+
["link.rel.preload.as-image", "10:2021"],
|
|
289
|
+
["link.rel.preload.as-script", "10:2021"],
|
|
290
|
+
["link.rel.preload.as-style", "10:2021"],
|
|
291
|
+
["link.rel.preload.as-track", "0:"],
|
|
292
|
+
["link.sizes", "10:2020"],
|
|
293
|
+
["link.type", "10:2015"],
|
|
294
|
+
["main", "10:2015"],
|
|
295
|
+
["map", "10:2015"],
|
|
296
|
+
["map.name", "10:2015"],
|
|
297
|
+
["mark", "10:2015"],
|
|
298
|
+
["menu", "10:2015"],
|
|
299
|
+
["meta", "10:2015"],
|
|
300
|
+
["meta.charset", "10:2015"],
|
|
301
|
+
["meta.content", "10:2015"],
|
|
302
|
+
["meta.http-equiv", "10:2015"],
|
|
303
|
+
["meta.http-equiv.content-security-policy", "10:2017"],
|
|
304
|
+
["meta.http-equiv.content-type", "10:2017"],
|
|
305
|
+
["meta.http-equiv.refresh", "10:2015"],
|
|
306
|
+
["meta.name", "10:2015"],
|
|
307
|
+
["meta.name.application-title", "0:"],
|
|
308
|
+
["meta.name.color-scheme", "10:2022"],
|
|
309
|
+
["meta.name.referrer", "10:2020"],
|
|
310
|
+
["meta.name.theme-color", "0:"],
|
|
311
|
+
["meter", "10:2017"],
|
|
312
|
+
["meter.high", "10:2017"],
|
|
313
|
+
["meter.low", "10:2017"],
|
|
314
|
+
["meter.max", "10:2017"],
|
|
315
|
+
["meter.min", "10:2017"],
|
|
316
|
+
["meter.optimum", "10:2017"],
|
|
317
|
+
["meter.value", "10:2017"],
|
|
318
|
+
["nav", "10:2015"],
|
|
319
|
+
["noscript", "10:2015"],
|
|
320
|
+
["object", "10:2015"],
|
|
321
|
+
["object.data", "10:2015"],
|
|
322
|
+
["object.form", "10:2015"],
|
|
323
|
+
["object.height", "10:2015"],
|
|
324
|
+
["object.name", "10:2015"],
|
|
325
|
+
["object.type", "10:2015"],
|
|
326
|
+
["object.width", "10:2015"],
|
|
327
|
+
["ol", "10:2015"],
|
|
328
|
+
["ol.reversed", "10:2020"],
|
|
329
|
+
["ol.start", "10:2015"],
|
|
330
|
+
["ol.type", "10:2015"],
|
|
331
|
+
["optgroup", "10:2015"],
|
|
332
|
+
["optgroup.disabled", "10:2015"],
|
|
333
|
+
["optgroup.label", "10:2015"],
|
|
334
|
+
["option", "10:2015"],
|
|
335
|
+
["option.disabled", "10:2015"],
|
|
336
|
+
["option.label", "10:2015"],
|
|
337
|
+
["option.selected", "10:2015"],
|
|
338
|
+
["option.value", "10:2015"],
|
|
339
|
+
["output", "10:2018"],
|
|
340
|
+
["output.for", "10:2018"],
|
|
341
|
+
["output.form", "10:2018"],
|
|
342
|
+
["output.name", "10:2018"],
|
|
343
|
+
["p", "10:2015"],
|
|
344
|
+
["picture", "10:2016"],
|
|
345
|
+
["pre", "10:2015"],
|
|
346
|
+
["progress", "10:2015"],
|
|
347
|
+
["progress.max", "10:2015"],
|
|
348
|
+
["progress.value", "10:2015"],
|
|
349
|
+
["q", "10:2015"],
|
|
350
|
+
["q.cite", "10:2015"],
|
|
351
|
+
["rp", "10:2015"],
|
|
352
|
+
["rt", "10:2015"],
|
|
353
|
+
["ruby", "10:2015"],
|
|
354
|
+
["s", "10:2015"],
|
|
355
|
+
["samp", "10:2015"],
|
|
356
|
+
["script", "10:2015"],
|
|
357
|
+
["script.async", "10:2015"],
|
|
358
|
+
["script.attributionsrc", "0:"],
|
|
359
|
+
["script.blocking", "0:"],
|
|
360
|
+
["script.crossorigin", "10:2016"],
|
|
361
|
+
["script.defer", "10:2015"],
|
|
362
|
+
["script.fetchpriority", "5:2024"],
|
|
363
|
+
["script.integrity", "10:2018"],
|
|
364
|
+
["script.nomodule", "10:2018"],
|
|
365
|
+
["script.referrerpolicy", "10:2020"],
|
|
366
|
+
["script.referrerpolicy.no-referrer-when-downgrade", "0:"],
|
|
367
|
+
["script.referrerpolicy.origin-when-cross-origin", "0:"],
|
|
368
|
+
["script.referrerpolicy.unsafe-url", "0:"],
|
|
369
|
+
["script.src", "10:2015"],
|
|
370
|
+
["script.type", "10:2015"],
|
|
371
|
+
["script.type.importmap", "5:2023"],
|
|
372
|
+
["script.type.module", "10:2018"],
|
|
373
|
+
["script.type.speculationrules", "0:"],
|
|
374
|
+
["script.type.speculationrules.eagerness", "0:"],
|
|
375
|
+
["script.type.speculationrules.prefetch", "0:"],
|
|
376
|
+
["script.type.speculationrules.prerender", "0:"],
|
|
377
|
+
["script.type.speculationrules.requires", "0:"],
|
|
378
|
+
[
|
|
379
|
+
"script.type.speculationrules.requires.anonymous-client-ip-when-cross-origin",
|
|
380
|
+
"0:",
|
|
381
|
+
],
|
|
382
|
+
["script.type.speculationrules.urls", "0:"],
|
|
383
|
+
["script.type.speculationrules.where", "0:"],
|
|
384
|
+
["search", "5:2023"],
|
|
385
|
+
["section", "10:2015"],
|
|
386
|
+
["select", "10:2015"],
|
|
387
|
+
["select.disabled", "10:2015"],
|
|
388
|
+
["select.form", "10:2015"],
|
|
389
|
+
["select.multiple", "10:2015"],
|
|
390
|
+
["select.name", "10:2015"],
|
|
391
|
+
["select.required", "10:2015"],
|
|
392
|
+
["select.size", "0:"],
|
|
393
|
+
["selectedcontent", "0:"],
|
|
394
|
+
["slot", "10:2020"],
|
|
395
|
+
["slot.name", "10:2020"],
|
|
396
|
+
["small", "10:2015"],
|
|
397
|
+
["source", "10:2015"],
|
|
398
|
+
["source.height", "5:2022"],
|
|
399
|
+
["source.media", "10:2015"],
|
|
400
|
+
["source.sizes", "10:2016"],
|
|
401
|
+
["source.src", "10:2015"],
|
|
402
|
+
["source.srcset", "10:2016"],
|
|
403
|
+
["source.type", "10:2015"],
|
|
404
|
+
["source.width", "5:2022"],
|
|
405
|
+
["span", "10:2015"],
|
|
406
|
+
["strong", "10:2015"],
|
|
407
|
+
["style", "10:2015"],
|
|
408
|
+
["style.blocking", "0:"],
|
|
409
|
+
["style.media", "10:2015"],
|
|
410
|
+
["sub", "10:2015"],
|
|
411
|
+
["summary", "10:2020"],
|
|
412
|
+
["sup", "10:2015"],
|
|
413
|
+
["table", "10:2015"],
|
|
414
|
+
["tbody", "10:2015"],
|
|
415
|
+
["td", "10:2015"],
|
|
416
|
+
["td.colspan", "10:2015"],
|
|
417
|
+
["td.headers", "10:2015"],
|
|
418
|
+
["td.rowspan", "10:2015"],
|
|
419
|
+
["template", "10:2015"],
|
|
420
|
+
["template.shadowrootclonable", "0:"],
|
|
421
|
+
["template.shadowrootdelegatesfocus", "0:"],
|
|
422
|
+
["template.shadowrootmode", "5:2024"],
|
|
423
|
+
["template.shadowrootserializable", "0:"],
|
|
424
|
+
["textarea", "10:2015"],
|
|
425
|
+
["textarea.autocomplete", "10:2020"],
|
|
426
|
+
["textarea.cols", "10:2015"],
|
|
427
|
+
["textarea.dirname", "5:2023"],
|
|
428
|
+
["textarea.disabled", "10:2015"],
|
|
429
|
+
["textarea.form", "10:2015"],
|
|
430
|
+
["textarea.maxlength", "10:2015"],
|
|
431
|
+
["textarea.minlength", "10:2018"],
|
|
432
|
+
["textarea.name", "10:2015"],
|
|
433
|
+
["textarea.placeholder", "10:2015"],
|
|
434
|
+
["textarea.readonly", "10:2015"],
|
|
435
|
+
["textarea.required", "10:2015"],
|
|
436
|
+
["textarea.rows", "10:2015"],
|
|
437
|
+
["textarea.spellcheck", "10:2015"],
|
|
438
|
+
["textarea.wrap", "10:2015"],
|
|
439
|
+
["textarea.wrap.hard", "0:"],
|
|
440
|
+
["tfoot", "10:2015"],
|
|
441
|
+
["th", "10:2015"],
|
|
442
|
+
["th.abbr", "10:2015"],
|
|
443
|
+
["th.colspan", "10:2015"],
|
|
444
|
+
["th.headers", "10:2015"],
|
|
445
|
+
["th.rowspan", "10:2015"],
|
|
446
|
+
["th.scope", "10:2015"],
|
|
447
|
+
["thead", "10:2015"],
|
|
448
|
+
["time", "10:2017"],
|
|
449
|
+
["time.datetime", "10:2017"],
|
|
450
|
+
["title", "10:2015"],
|
|
451
|
+
["tr", "10:2015"],
|
|
452
|
+
["track", "10:2015"],
|
|
453
|
+
["track.default", "10:2015"],
|
|
454
|
+
["track.kind", "10:2015"],
|
|
455
|
+
["track.label", "10:2015"],
|
|
456
|
+
["track.src", "10:2016"],
|
|
457
|
+
["track.srclang", "10:2015"],
|
|
458
|
+
["u", "10:2015"],
|
|
459
|
+
["ul", "10:2015"],
|
|
460
|
+
["var", "10:2015"],
|
|
461
|
+
["video", "10:2015"],
|
|
462
|
+
["video.autoplay", "10:2016"],
|
|
463
|
+
["video.controls", "10:2015"],
|
|
464
|
+
["video.controlslist", "0:"],
|
|
465
|
+
["video.crossorigin", "10:2020"],
|
|
466
|
+
["video.disablepictureinpicture", "0:"],
|
|
467
|
+
["video.disableremoteplayback", "0:"],
|
|
468
|
+
["video.height", "10:2015"],
|
|
469
|
+
["video.loop", "10:2015"],
|
|
470
|
+
["video.muted", "10:2015"],
|
|
471
|
+
["video.poster", "10:2015"],
|
|
472
|
+
["video.preload", "10:2015"],
|
|
473
|
+
["video.src", "10:2015"],
|
|
474
|
+
["video.width", "10:2015"],
|
|
475
|
+
["wbr", "10:2015"],
|
|
476
|
+
]);
|
|
477
|
+
const globalAttributes = new Map([
|
|
478
|
+
["accesskey", "10:2015"],
|
|
479
|
+
["autocapitalize", "0:"],
|
|
480
|
+
["autocorrect", "0:"],
|
|
481
|
+
["autofocus", "5:2023"],
|
|
482
|
+
["contenteditable", "10:2015"],
|
|
483
|
+
["contenteditable.plaintext-only", "5:2025"],
|
|
484
|
+
["enterkeyhint", "10:2021"],
|
|
485
|
+
["exportparts", "10:2020"],
|
|
486
|
+
["inert", "5:2023"],
|
|
487
|
+
["inputmode", "10:2021"],
|
|
488
|
+
["is", "0:"],
|
|
489
|
+
["lang", "10:2015"],
|
|
490
|
+
["nonce", "10:2022"],
|
|
491
|
+
["part", "10:2020"],
|
|
492
|
+
["popover", "5:2024"],
|
|
493
|
+
["popover.hint", "0:"],
|
|
494
|
+
["slot", "10:2020"],
|
|
495
|
+
["spellcheck", "10:2017"],
|
|
496
|
+
["style", "10:2015"],
|
|
497
|
+
["tabindex", "10:2015"],
|
|
498
|
+
["title", "10:2015"],
|
|
499
|
+
["translate", "5:2023"],
|
|
500
|
+
["virtualkeyboardpolicy", "0:"],
|
|
501
|
+
["writingsuggestions", "0:"],
|
|
502
|
+
]);
|
|
503
|
+
module.exports = {
|
|
504
|
+
elements,
|
|
505
|
+
globalAttributes,
|
|
506
|
+
BASELINE_HIGH,
|
|
507
|
+
BASELINE_LOW,
|
|
508
|
+
BASELINE_FALSE,
|
|
509
|
+
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@html-eslint/eslint-plugin",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.38.1",
|
|
4
4
|
"description": "ESLint plugin for html",
|
|
5
5
|
"author": "yeonjuan",
|
|
6
6
|
"homepage": "https://github.com/yeonjuan/html-eslint#readme",
|
|
@@ -37,12 +37,12 @@
|
|
|
37
37
|
"accessibility"
|
|
38
38
|
],
|
|
39
39
|
"dependencies": {
|
|
40
|
-
"@html-eslint/template-parser": "^0.
|
|
41
|
-
"@html-eslint/template-syntax-parser": "^0.
|
|
40
|
+
"@html-eslint/template-parser": "^0.38.0",
|
|
41
|
+
"@html-eslint/template-syntax-parser": "^0.38.0"
|
|
42
42
|
},
|
|
43
43
|
"devDependencies": {
|
|
44
|
-
"@html-eslint/parser": "^0.
|
|
45
|
-
"@html-eslint/types": "^0.
|
|
44
|
+
"@html-eslint/parser": "^0.38.0",
|
|
45
|
+
"@html-eslint/types": "^0.38.0",
|
|
46
46
|
"@types/eslint": "^9.6.1",
|
|
47
47
|
"@types/estree": "^0.0.47",
|
|
48
48
|
"es-html-parser": "0.1.1",
|
|
@@ -50,5 +50,5 @@
|
|
|
50
50
|
"espree": "^10.3.0",
|
|
51
51
|
"typescript": "^5.7.2"
|
|
52
52
|
},
|
|
53
|
-
"gitHead": "
|
|
53
|
+
"gitHead": "501ee2415f685bada6b4a967e0e7e72f605b403c"
|
|
54
54
|
}
|
package/types/index.d.ts
CHANGED
|
@@ -64,6 +64,7 @@ type AllRules = {
|
|
|
64
64
|
"require-input-label": import("./types").RuleModule<[]>;
|
|
65
65
|
"max-element-depth": import("./types").RuleModule<[import("./rules/max-element-depth").Option]>;
|
|
66
66
|
"require-explicit-size": import("./types").RuleModule<[import("./rules/require-explicit-size").Option]>;
|
|
67
|
+
"use-baseline": import("./types").RuleModule<[import("./rules/use-baseline").Option]>;
|
|
67
68
|
};
|
|
68
69
|
type RecommendedConfig = {
|
|
69
70
|
rules: {
|
|
@@ -84,6 +85,7 @@ type RecommendedConfig = {
|
|
|
84
85
|
"@html-eslint/no-obsolete-tags": string;
|
|
85
86
|
"@html-eslint/require-closing-tags": string;
|
|
86
87
|
"@html-eslint/no-duplicate-attrs": string;
|
|
88
|
+
"@html-eslint/use-baseline": string;
|
|
87
89
|
};
|
|
88
90
|
};
|
|
89
91
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
declare namespace _exports {
|
|
2
|
-
export { AnyNode, Line, Tag, RuleListener, Context, TemplateText, Token, SourceCode, Range, SourceLocation, TemplateLiteral, OpenTemplate, CloseTemplate, AnyNodeOrLine, IndentType, MessageId, IndentOptionInfo, Option1, Option2, RuleModule };
|
|
2
|
+
export { AnyNode, Line, Tag, RuleListener, Context, TemplateText, Token, SourceCode, Range, SourceLocation, TemplateLiteral, OpenTemplate, CloseTemplate, ScriptTag, StyleTag, AnyNodeOrLine, IndentType, MessageId, IndentOptionInfo, Option1, Option2, RuleModule };
|
|
3
3
|
}
|
|
4
4
|
declare const _exports: RuleModule;
|
|
5
5
|
export = _exports;
|
|
@@ -16,6 +16,8 @@ type SourceLocation = import("eslint").AST.SourceLocation;
|
|
|
16
16
|
type TemplateLiteral = import("@html-eslint/types").TemplateLiteral;
|
|
17
17
|
type OpenTemplate = import("@html-eslint/types").OpenTemplate;
|
|
18
18
|
type CloseTemplate = import("@html-eslint/types").CloseTemplate;
|
|
19
|
+
type ScriptTag = import("@html-eslint/types").ScriptTag;
|
|
20
|
+
type StyleTag = import("@html-eslint/types").StyleTag;
|
|
19
21
|
type AnyNodeOrLine = AnyNode | Line;
|
|
20
22
|
type IndentType = {
|
|
21
23
|
TAB: "tab";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"indent.d.ts","sourceRoot":"","sources":["../../../lib/rules/indent/indent.js"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"indent.d.ts","sourceRoot":"","sources":["../../../lib/rules/indent/indent.js"],"names":[],"mappings":";;;wBAoEU,UAAU;;eAnEN,OAAO,oBAAoB,EAAE,OAAO;YACpC,OAAO,aAAa,EAAE,IAAI;WAC1B,OAAO,oBAAoB,EAAE,GAAG;oBAChC,OAAO,aAAa,EAAE,YAAY;eAClC,OAAO,aAAa,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC;oBACpC,OAAO,oBAAoB,EAAE,YAAY;aACzC,OAAO,QAAQ,EAAE,GAAG,CAAC,KAAK;kBAC1B,OAAO,QAAQ,EAAE,UAAU;aAC3B,OAAO,QAAQ,EAAE,GAAG,CAAC,KAAK;sBAC1B,OAAO,QAAQ,EAAE,GAAG,CAAC,cAAc;uBACnC,OAAO,oBAAoB,EAAE,eAAe;oBAC5C,OAAO,oBAAoB,EAAE,YAAY;qBACzC,OAAO,oBAAoB,EAAE,aAAa;iBAC1C,OAAO,oBAAoB,EAAE,SAAS;gBACtC,OAAO,oBAAoB,EAAE,QAAQ;qBAEtC,OAAO,GAAG,IAAI;;SAEb,KAAK;WACL,OAAO;;;kBAEP,aAAa;;;gBAEb,UAAU,CAAC,KAAK,CAAC,GAAG,UAAU,CAAC,OAAO,CAAC;gBACvC,MAAM;gBACN,MAAM;;eAEP,KAAK,GAAG,MAAM;;;;;kBAKb,OAAO,aAAa,EAAE,UAAU,CAAC,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC"}
|
package/types/rules/index.d.ts
CHANGED
|
@@ -46,6 +46,7 @@ declare const _exports: {
|
|
|
46
46
|
"require-input-label": import("../types").RuleModule<[]>;
|
|
47
47
|
"max-element-depth": import("../types").RuleModule<[maxElementDepth.Option]>;
|
|
48
48
|
"require-explicit-size": import("../types").RuleModule<[requireExplicitSize.Option]>;
|
|
49
|
+
"use-baseline": import("../types").RuleModule<[useBaseLine.Option]>;
|
|
49
50
|
};
|
|
50
51
|
export = _exports;
|
|
51
52
|
import requireImgAlt = require("./require-img-alt");
|
|
@@ -65,4 +66,5 @@ import requireOpenGraphProtocol = require("./require-open-graph-protocol");
|
|
|
65
66
|
import sortAttrs = require("./sort-attrs");
|
|
66
67
|
import maxElementDepth = require("./max-element-depth");
|
|
67
68
|
import requireExplicitSize = require("./require-explicit-size");
|
|
69
|
+
import useBaseLine = require("./use-baseline");
|
|
68
70
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
declare namespace _exports {
|
|
2
|
-
export { Tag, StyleTag, ScriptTag, RuleModule };
|
|
2
|
+
export { Tag, StyleTag, ScriptTag, RuleModule, Attribute, SuggestionReportDescriptor };
|
|
3
3
|
}
|
|
4
4
|
declare const _exports: RuleModule;
|
|
5
5
|
export = _exports;
|
|
@@ -7,4 +7,6 @@ type Tag = import("@html-eslint/types").Tag;
|
|
|
7
7
|
type StyleTag = import("@html-eslint/types").StyleTag;
|
|
8
8
|
type ScriptTag = import("@html-eslint/types").ScriptTag;
|
|
9
9
|
type RuleModule = import("../types").RuleModule<[]>;
|
|
10
|
+
type Attribute = import("@html-eslint/types").Attribute;
|
|
11
|
+
type SuggestionReportDescriptor = import("../types").SuggestionReportDescriptor;
|
|
10
12
|
//# sourceMappingURL=no-duplicate-attrs.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"no-duplicate-attrs.d.ts","sourceRoot":"","sources":["../../lib/rules/no-duplicate-attrs.js"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"no-duplicate-attrs.d.ts","sourceRoot":"","sources":["../../lib/rules/no-duplicate-attrs.js"],"names":[],"mappings":";;;wBAkBU,UAAU;;WAjBN,OAAO,oBAAoB,EAAE,GAAG;gBAChC,OAAO,oBAAoB,EAAE,QAAQ;iBACrC,OAAO,oBAAoB,EAAE,SAAS;kBACtC,OAAO,UAAU,EAAE,UAAU,CAAC,EAAE,CAAC;iBACjC,OAAO,oBAAoB,EAAE,SAAS;kCACtC,OAAO,UAAU,EAAE,0BAA0B"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
declare namespace _exports {
|
|
2
|
+
export { Option, RuleModule, Attribute, Tag, ScriptTag, StyleTag };
|
|
3
|
+
}
|
|
4
|
+
declare const _exports: RuleModule;
|
|
5
|
+
export = _exports;
|
|
6
|
+
type Option = {
|
|
7
|
+
available: "widely" | "newly" | number;
|
|
8
|
+
};
|
|
9
|
+
type RuleModule = import("../types").RuleModule<[Option]>;
|
|
10
|
+
type Attribute = import("@html-eslint/types").Attribute;
|
|
11
|
+
type Tag = import("@html-eslint/types").Tag;
|
|
12
|
+
type ScriptTag = import("@html-eslint/types").ScriptTag;
|
|
13
|
+
type StyleTag = import("@html-eslint/types").StyleTag;
|
|
14
|
+
//# sourceMappingURL=use-baseline.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-baseline.d.ts","sourceRoot":"","sources":["../../lib/rules/use-baseline.js"],"names":[],"mappings":";;;wBA0BU,UAAU;;;eAxBN,QAAQ,GAAG,OAAO,GAAG,MAAM;;kBAC3B,OAAO,UAAU,EAAE,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC;iBACxC,OAAO,oBAAoB,EAAE,SAAS;WACtC,OAAO,oBAAoB,EAAE,GAAG;iBAChC,OAAO,oBAAoB,EAAE,SAAS;gBACtC,OAAO,oBAAoB,EAAE,QAAQ"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export const elements: Map<string, string>;
|
|
2
|
+
export const globalAttributes: Map<string, string>;
|
|
3
|
+
/**
|
|
4
|
+
* This file is auto-generated. (yarn run baseline)
|
|
5
|
+
*/
|
|
6
|
+
export const BASELINE_HIGH: 10;
|
|
7
|
+
export const BASELINE_LOW: 5;
|
|
8
|
+
export const BASELINE_FALSE: 0;
|
|
9
|
+
//# sourceMappingURL=baseline.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"baseline.d.ts","sourceRoot":"","sources":["../../../lib/rules/utils/baseline.js"],"names":[],"mappings":"AAOA,2CAodG;AACH,mDAyBG;AArfH;;GAEG;AACH,4BAAsB,EAAE,CAAC;AACzB,2BAAqB,CAAC,CAAC;AACvB,6BAAuB,CAAC,CAAC"}
|