@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.
@@ -20,5 +20,6 @@ module.exports = {
20
20
  "@html-eslint/no-obsolete-tags": "error",
21
21
  "@html-eslint/require-closing-tags": "error",
22
22
  "@html-eslint/no-duplicate-attrs": "error",
23
+ "@html-eslint/use-baseline": "error",
23
24
  },
24
25
  };
@@ -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;
@@ -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.37.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.37.0",
41
- "@html-eslint/template-syntax-parser": "^0.37.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.37.0",
45
- "@html-eslint/types": "^0.37.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": "8c8b39a840ef0bc2e335200e86cb90c280169a74"
53
+ "gitHead": "501ee2415f685bada6b4a967e0e7e72f605b403c"
54
54
  }
@@ -16,5 +16,6 @@ export let rules: {
16
16
  "@html-eslint/no-obsolete-tags": string;
17
17
  "@html-eslint/require-closing-tags": string;
18
18
  "@html-eslint/no-duplicate-attrs": string;
19
+ "@html-eslint/use-baseline": string;
19
20
  };
20
21
  //# sourceMappingURL=recommended.d.ts.map
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":";;;wBAgEU,UAAU;;eA/DN,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;qBAE3C,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"}
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"}
@@ -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":";;;wBAeU,UAAU;;WAdN,OAAO,oBAAoB,EAAE,GAAG;gBAChC,OAAO,oBAAoB,EAAE,QAAQ;iBACrC,OAAO,oBAAoB,EAAE,SAAS;kBACtC,OAAO,UAAU,EAAE,UAAU,CAAC,EAAE,CAAC"}
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"}