@html-eslint/core 0.56.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +31 -0
- package/dist/index.d.mts +237 -0
- package/dist/index.d.ts +237 -0
- package/dist/index.js +2037 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +2001 -0
- package/dist/index.mjs.map +1 -0
- package/package.json +61 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../lib/rules/no-invalid-attr-value.js","../lib/utils/baseline.js","../lib/rules/use-baseline.js","../lib/rules/no-ineffective-attrs.js","../lib/rules/no-obsolete-tags.js","../lib/utils/obsolete-attrs.js","../lib/rules/no-obsolete-attrs.js"],"sourcesContent":["/**\n * @import {\n * ElementNodeAdapter,\n * NoInvalidAttrValueOptions,\n * NoInvalidAttrValueResult\n * } from \"../types\"\n */\n\nimport { element } from \"html-standard\";\n\n/**\n * @type {{\n * invalid: \"invalid\";\n * }}\n */\nexport const NO_INVALID_ATTR_VALUE_MESSAGE_IDS = {\n invalid: \"invalid\",\n};\n\n/**\n * @template ElementNode\n * @template AttributeKeyNode\n * @template AttributeValueNode\n * @param {NoInvalidAttrValueOptions} options\n */\nexport function noInvalidAttrValue(options) {\n const allowList = options.allow || [];\n const compiledAllowList = allowList.map((rule) => ({\n tag: rule.tag.toLowerCase(),\n attr: rule.attr.toLowerCase(),\n valuePattern: rule.valuePattern ? new RegExp(rule.valuePattern) : undefined,\n }));\n\n /**\n * @param {string} elementName\n * @param {string} attrKey\n * @param {string} attrValue\n * @returns\n */\n function shouldAllow(elementName, attrKey, attrValue) {\n return compiledAllowList.some((allowRule) => {\n const tagMatch = allowRule.tag === elementName.toLowerCase();\n const attrMatch = allowRule.attr === attrKey.toLowerCase();\n\n if (!tagMatch || !attrMatch) {\n return false;\n }\n\n if (allowRule.valuePattern === undefined) {\n return true;\n }\n\n return allowRule.valuePattern.test(attrValue);\n });\n }\n\n return {\n /**\n * @param {ElementNodeAdapter<\n * ElementNode,\n * AttributeKeyNode,\n * AttributeValueNode\n * >} adapter\n * @returns {NoInvalidAttrValueResult<\n * AttributeKeyNode,\n * AttributeValueNode\n * >}\n */\n checkAttributes(adapter) {\n const name = adapter.getTagName();\n if (name.includes(\"-\")) {\n return [];\n }\n const spec = element(name);\n /**\n * @type {NoInvalidAttrValueResult<\n * AttributeKeyNode,\n * AttributeValueNode\n * >}\n */\n const result = [];\n\n for (const attribute of adapter.getAttributes()) {\n if (attribute.key.isExpression()) {\n continue;\n }\n\n if (attribute.value.isExpression()) {\n continue;\n }\n\n const attrKeyValue = attribute.key.value();\n const attrValueValue = attribute.value.value();\n if (attrValueValue === null) {\n continue;\n }\n\n if (attrKeyValue && shouldAllow(name, attrKeyValue, attrValueValue)) {\n continue;\n }\n if (!attrKeyValue || attrValueValue === null) {\n continue;\n }\n const validator = spec.attributes.get(attrKeyValue);\n if (validator) {\n const validateResult = validator.validateValue(attrValueValue);\n if (!validateResult.valid) {\n result.push({\n node: attribute.value.node() || attribute.key.node(),\n messageId: NO_INVALID_ATTR_VALUE_MESSAGE_IDS.invalid,\n data: {\n value: attrValueValue || \"\",\n attr: attribute.key.raw() || attrKeyValue,\n element: name,\n suggestion: validateResult.reason || \"Use a valid value.\",\n },\n });\n }\n }\n }\n return result;\n },\n };\n}\n","/** This file is auto-generated. (yarn run baseline) */\nconst BASELINE_HIGH = 10;\nconst BASELINE_LOW = 5;\nconst BASELINE_FALSE = 0;\n\nconst elements = new Map([\n [\"a\", \"10:2015\"],\n [\"a.attributionsourceid\", \"0:\"],\n [\"a.attributionsrc\", \"0:\"],\n [\"a.download\", \"10:2019\"],\n [\"a.href\", \"10:2015\"],\n [\"a.href.href_sms\", \"0:\"],\n [\"a.href.href_top\", \"10:2015\"],\n [\"a.hreflang\", \"10:2015\"],\n [\"a.implicit_noopener\", \"10:2021\"],\n [\"a.ping\", \"0:\"],\n [\"a.referrerpolicy\", \"10:2020\"],\n [\"a.referrerpolicy.no-referrer-when-downgrade\", \"0:\"],\n [\"a.referrerpolicy.origin-when-cross-origin\", \"0:\"],\n [\"a.referrerpolicy.unsafe-url\", \"0:\"],\n [\"a.rel\", \"10:2015\"],\n [\"a.rel.noopener\", \"10:2020\"],\n [\"a.rel.noreferrer\", \"10:2015\"],\n [\"a.target\", \"10:2015\"],\n [\"a.target.unfencedTop\", \"0:\"],\n [\"a.text_fragments\", \"5:2024\"],\n [\"a.type\", \"10:2015\"],\n [\"abbr\", \"10:2015\"],\n [\"address\", \"10:2015\"],\n [\"area\", \"10:2015\"],\n [\"area.alt\", \"10:2015\"],\n [\"area.attributionsrc\", \"0:\"],\n [\"area.coords\", \"10:2015\"],\n [\"area.download\", \"10:2017\"],\n [\"area.href\", \"10:2015\"],\n [\"area.implicit_noopener\", \"10:2021\"],\n [\"area.ping\", \"0:\"],\n [\"area.referrerpolicy\", \"10:2020\"],\n [\"area.referrerpolicy.no-referrer-when-downgrade\", \"0:\"],\n [\"area.referrerpolicy.origin-when-cross-origin\", \"0:\"],\n [\"area.referrerpolicy.unsafe-url\", \"0:\"],\n [\"area.rel\", \"10:2015\"],\n [\"area.rel.noopener\", \"10:2020\"],\n [\"area.rel.noreferrer\", \"10:2015\"],\n [\"area.shape\", \"10:2015\"],\n [\"area.target\", \"10:2015\"],\n [\"article\", \"10:2015\"],\n [\"aside\", \"10:2015\"],\n [\"audio\", \"10:2015\"],\n [\"audio.controls\", \"10:2015\"],\n [\"audio.controlslist\", \"0:\"],\n [\"audio.crossorigin\", \"10:2020\"],\n [\"audio.disableremoteplayback\", \"0:\"],\n [\"audio.loop\", \"10:2015\"],\n [\"audio.muted\", \"10:2018\"],\n [\"audio.preload\", \"10:2015\"],\n [\"audio.src\", \"10:2015\"],\n [\"b\", \"10:2015\"],\n [\"base\", \"10:2015\"],\n [\"base.href\", \"10:2015\"],\n [\"base.href.forbid_data_javascript_urls\", \"5:2024\"],\n [\"base.href.relative_url\", \"10:2015\"],\n [\"base.target\", \"10:2015\"],\n [\"bdi\", \"10:2020\"],\n [\"bdo\", \"10:2015\"],\n [\"blockquote\", \"10:2015\"],\n [\"blockquote.cite\", \"10:2015\"],\n [\"body\", \"10:2015\"],\n [\"br\", \"10:2015\"],\n [\"button\", \"10:2015\"],\n [\"button.command\", \"5:2025\"],\n [\"button.command.request-close\", \"5:2025\"],\n [\"button.commandfor\", \"5:2025\"],\n [\"button.disabled\", \"10:2015\"],\n [\"button.form\", \"10:2017\"],\n [\"button.formaction\", \"10:2015\"],\n [\"button.formenctype\", \"10:2015\"],\n [\"button.formmethod\", \"10:2015\"],\n [\"button.formnovalidate\", \"10:2015\"],\n [\"button.formtarget\", \"10:2015\"],\n [\"button.name\", \"10:2015\"],\n [\"button.popovertarget\", \"5:2024\"],\n [\"button.popovertarget.implicit_anchor_reference\", \"0:\"],\n [\"button.popovertargetaction\", \"5:2024\"],\n [\"button.type\", \"10:2015\"],\n [\"button.value\", \"10:2015\"],\n [\"canvas\", \"10:2015\"],\n [\"canvas.height\", \"10:2015\"],\n [\"canvas.width\", \"10:2015\"],\n [\"caption\", \"10:2015\"],\n [\"caption.align\", \"0:\"],\n [\"cite\", \"10:2015\"],\n [\"code\", \"10:2015\"],\n [\"col\", \"10:2015\"],\n [\"col.align\", \"0:\"],\n [\"col.char\", \"0:\"],\n [\"col.charoff\", \"0:\"],\n [\"col.span\", \"10:2015\"],\n [\"col.valign\", \"0:\"],\n [\"col.width\", \"0:\"],\n [\"colgroup\", \"10:2015\"],\n [\"colgroup.align\", \"0:\"],\n [\"colgroup.char\", \"0:\"],\n [\"colgroup.charoff\", \"0:\"],\n [\"colgroup.span\", \"10:2015\"],\n [\"colgroup.valign\", \"0:\"],\n [\"colgroup.width\", \"0:\"],\n [\"data\", \"10:2017\"],\n [\"data.value\", \"10:2017\"],\n [\"datalist\", \"0:\"],\n [\"dd\", \"10:2015\"],\n [\"del\", \"10:2015\"],\n [\"del.cite\", \"10:2015\"],\n [\"del.datetime\", \"10:2015\"],\n [\"details\", \"10:2020\"],\n [\"details.name\", \"5:2024\"],\n [\"details.open\", \"10:2020\"],\n [\"dfn\", \"10:2015\"],\n [\"dialog\", \"10:2022\"],\n [\"dialog.closedby\", \"0:\"],\n [\"dialog.open\", \"10:2022\"],\n [\"div\", \"10:2015\"],\n [\"dl\", \"10:2015\"],\n [\"dt\", \"10:2015\"],\n [\"em\", \"10:2015\"],\n [\"embed\", \"10:2015\"],\n [\"embed.height\", \"10:2015\"],\n [\"embed.src\", \"10:2015\"],\n [\"embed.type\", \"10:2020\"],\n [\"embed.width\", \"10:2015\"],\n [\"fencedframe\", \"0:\"],\n [\"fencedframe.allow\", \"0:\"],\n [\"fencedframe.height\", \"0:\"],\n [\"fencedframe.width\", \"0:\"],\n [\"fieldset\", \"10:2015\"],\n [\"fieldset.disabled\", \"10:2020\"],\n [\"fieldset.form\", \"10:2015\"],\n [\"fieldset.name\", \"10:2015\"],\n [\"figcaption\", \"10:2015\"],\n [\"figure\", \"10:2015\"],\n [\"footer\", \"10:2015\"],\n [\"form\", \"10:2015\"],\n [\"form.accept-charset\", \"10:2015\"],\n [\"form.action\", \"10:2015\"],\n [\"form.autocomplete\", \"10:2015\"],\n [\"form.enctype\", \"10:2015\"],\n [\"form.method\", \"10:2015\"],\n [\"form.name\", \"10:2015\"],\n [\"form.novalidate\", \"10:2017\"],\n [\"form.rel\", \"10:2023\"],\n [\"form.target\", \"10:2015\"],\n [\"h1\", \"10:2015\"],\n [\"h1.no_ua_styles_in_article_aside_nav_section\", \"0:\"],\n [\"h2\", \"10:2015\"],\n [\"h3\", \"10:2015\"],\n [\"h4\", \"10:2015\"],\n [\"h5\", \"10:2015\"],\n [\"h6\", \"10:2015\"],\n [\"head\", \"10:2015\"],\n [\"header\", \"10:2015\"],\n [\"hgroup\", \"10:2015\"],\n [\"hr\", \"10:2015\"],\n [\"html\", \"10:2015\"],\n [\"i\", \"10:2015\"],\n [\"iframe\", \"10:2015\"],\n [\"iframe.allow\", \"10:2020\"],\n [\"iframe.allow.accelerometer\", \"0:\"],\n [\"iframe.allow.ambient-light-sensor\", \"0:\"],\n [\"iframe.allow.attribution-reporting\", \"0:\"],\n [\"iframe.allow.bluetooth\", \"0:\"],\n [\"iframe.allow.camera\", \"10:2020\"],\n [\"iframe.allow.compute-pressure\", \"0:\"],\n [\"iframe.allow.display-capture\", \"0:\"],\n [\"iframe.allow.encrypted-media\", \"0:\"],\n [\"iframe.allow.fullscreen\", \"0:\"],\n [\"iframe.allow.gamepad\", \"0:\"],\n [\"iframe.allow.geolocation\", \"0:\"],\n [\"iframe.allow.gyroscope\", \"0:\"],\n [\"iframe.allow.hid\", \"0:\"],\n [\"iframe.allow.idle-detection\", \"0:\"],\n [\"iframe.allow.local-fonts\", \"0:\"],\n [\"iframe.allow.magnetometer\", \"0:\"],\n [\"iframe.allow.microphone\", \"10:2020\"],\n [\"iframe.allow.midi\", \"0:\"],\n [\"iframe.allow.otp-credentials\", \"0:\"],\n [\"iframe.allow.payment\", \"0:\"],\n [\"iframe.allow.picture-in-picture\", \"0:\"],\n [\"iframe.allow.publickey-credentials-create\", \"0:\"],\n [\"iframe.allow.publickey-credentials-get\", \"0:\"],\n [\"iframe.allow.screen-wake-lock\", \"5:2024\"],\n [\"iframe.allow.serial\", \"0:\"],\n [\"iframe.allow.storage-access\", \"0:\"],\n [\"iframe.allow.usb\", \"0:\"],\n [\"iframe.allow.web-share\", \"0:\"],\n [\"iframe.allow.window-management\", \"0:\"],\n [\"iframe.allow.xr-spatial-tracking\", \"0:\"],\n [\"iframe.allowfullscreen\", \"0:\"],\n [\"iframe.credentialless\", \"0:\"],\n [\"iframe.csp\", \"0:\"],\n [\"iframe.height\", \"10:2015\"],\n [\"iframe.loading\", \"5:2023\"],\n [\"iframe.name\", \"10:2015\"],\n [\"iframe.referrerpolicy\", \"10:2020\"],\n [\"iframe.referrerpolicy.no-referrer-when-downgrade\", \"0:\"],\n [\"iframe.referrerpolicy.origin-when-cross-origin\", \"0:\"],\n [\"iframe.referrerpolicy.unsafe-url\", \"0:\"],\n [\"iframe.sandbox\", \"10:2015\"],\n [\"iframe.sandbox.allow-downloads\", \"5:2023\"],\n [\"iframe.sandbox.allow-forms\", \"10:2020\"],\n [\"iframe.sandbox.allow-modals\", \"10:2020\"],\n [\"iframe.sandbox.allow-pointer-lock\", \"0:\"],\n [\"iframe.sandbox.allow-popups\", \"10:2015\"],\n [\"iframe.sandbox.allow-popups-to-escape-sandbox\", \"10:2020\"],\n [\"iframe.sandbox.allow-presentation\", \"0:\"],\n [\"iframe.sandbox.allow-same-origin\", \"10:2020\"],\n [\"iframe.sandbox.allow-scripts\", \"10:2020\"],\n [\"iframe.sandbox.allow-top-navigation\", \"10:2020\"],\n [\"iframe.sandbox.allow-top-navigation-by-user-activation\", \"10:2020\"],\n [\"iframe.sandbox.allow-top-navigation-to-custom-protocols\", \"0:\"],\n [\"iframe.src\", \"10:2015\"],\n [\"iframe.srcdoc\", \"10:2020\"],\n [\"iframe.width\", \"10:2015\"],\n [\"img\", \"10:2015\"],\n [\"img.alt\", \"10:2015\"],\n [\"img.aspect_ratio_computed_from_attributes\", \"10:2021\"],\n [\"img.attributionsrc\", \"0:\"],\n [\"img.crossorigin\", \"10:2015\"],\n [\"img.decoding\", \"10:2020\"],\n [\"img.fetchpriority\", \"5:2024\"],\n [\"img.height\", \"10:2015\"],\n [\"img.ismap\", \"10:2015\"],\n [\"img.loading\", \"10:2022\"],\n [\"img.referrerpolicy\", \"10:2020\"],\n [\"img.referrerpolicy.no-referrer-when-downgrade\", \"0:\"],\n [\"img.referrerpolicy.origin-when-cross-origin\", \"0:\"],\n [\"img.referrerpolicy.unsafe-url\", \"0:\"],\n [\"img.sizes\", \"10:2016\"],\n [\"img.sizes.auto\", \"0:\"],\n [\"img.src\", \"10:2015\"],\n [\"img.srcset\", \"10:2015\"],\n [\"img.usemap\", \"10:2015\"],\n [\"img.width\", \"10:2015\"],\n [\"input\", \"10:2015\"],\n [\"input.accept\", \"10:2015\"],\n [\"input.alpha\", \"0:\"],\n [\"input.alt\", \"10:2015\"],\n [\"input.capture\", \"0:\"],\n [\"input.checked\", \"10:2015\"],\n [\"input.colorspace\", \"0:\"],\n [\"input.dirname\", \"5:2023\"],\n [\"input.disabled\", \"10:2015\"],\n [\"input.form\", \"10:2015\"],\n [\"input.formaction\", \"10:2015\"],\n [\"input.formenctype\", \"10:2015\"],\n [\"input.formmethod\", \"10:2015\"],\n [\"input.formnovalidate\", \"10:2015\"],\n [\"input.formtarget\", \"10:2015\"],\n [\"input.list\", \"10:2019\"],\n [\"input.max\", \"10:2015\"],\n [\"input.maxlength\", \"10:2015\"],\n [\"input.min\", \"10:2015\"],\n [\"input.minlength\", \"10:2018\"],\n [\"input.multiple\", \"10:2015\"],\n [\"input.name\", \"10:2015\"],\n [\"input.pattern\", \"10:2015\"],\n [\"input.placeholder\", \"10:2015\"],\n [\"input.popovertarget\", \"5:2024\"],\n [\"input.popovertarget.implicit_anchor_reference\", \"0:\"],\n [\"input.popovertargetaction\", \"5:2024\"],\n [\"input.readonly\", \"10:2015\"],\n [\"input.required\", \"10:2015\"],\n [\"input.size\", \"10:2015\"],\n [\"input.src\", \"10:2015\"],\n [\"input.step\", \"10:2015\"],\n [\"input.switch\", \"0:\"],\n [\"input.type_button\", \"10:2015\"],\n [\"input.type_checkbox\", \"10:2015\"],\n [\"input.type_color\", \"0:\"],\n [\"input.type_color.accepts_css_colors\", \"0:\"],\n [\"input.type_date\", \"10:2021\"],\n [\"input.type_datetime-local\", \"10:2021\"],\n [\"input.type_email\", \"10:2015\"],\n [\"input.type_file\", \"10:2015\"],\n [\"input.type_hidden\", \"10:2015\"],\n [\"input.type_image\", \"10:2015\"],\n [\"input.type_month\", \"0:\"],\n [\"input.type_number\", \"10:2015\"],\n [\"input.type_password\", \"10:2015\"],\n [\"input.type_password.insecure_login_handling\", \"0:\"],\n [\"input.type_radio\", \"10:2015\"],\n [\"input.type_range\", \"10:2017\"],\n [\"input.type_range.labeled_values\", \"0:\"],\n [\"input.type_range.tick_marks\", \"10:2023\"],\n [\"input.type_range.vertical_orientation\", \"5:2024\"],\n [\"input.type_reset\", \"10:2015\"],\n [\"input.type_search\", \"10:2015\"],\n [\"input.type_submit\", \"10:2015\"],\n [\"input.type_tel\", \"10:2015\"],\n [\"input.type_text\", \"10:2015\"],\n [\"input.type_time\", \"10:2021\"],\n [\"input.type_url\", \"10:2015\"],\n [\"input.type_week\", \"0:\"],\n [\"ins\", \"10:2015\"],\n [\"ins.cite\", \"10:2015\"],\n [\"ins.datetime\", \"10:2015\"],\n [\"kbd\", \"10:2015\"],\n [\"label\", \"10:2015\"],\n [\"label.for\", \"10:2015\"],\n [\"legend\", \"10:2015\"],\n [\"li\", \"10:2015\"],\n [\"li.value\", \"10:2015\"],\n [\"link\", \"10:2015\"],\n [\"link.as\", \"10:2018\"],\n [\"link.blocking\", \"0:\"],\n [\"link.crossorigin\", \"10:2018\"],\n [\"link.disabled\", \"10:2015\"],\n [\"link.fetchpriority\", \"5:2024\"],\n [\"link.href\", \"10:2015\"],\n [\"link.hreflang\", \"10:2015\"],\n [\"link.imagesizes\", \"5:2023\"],\n [\"link.imagesrcset\", \"5:2023\"],\n [\"link.integrity\", \"10:2018\"],\n [\"link.media\", \"10:2015\"],\n [\"link.referrerpolicy\", \"10:2020\"],\n [\"link.referrerpolicy.no-referrer-when-downgrade\", \"0:\"],\n [\"link.referrerpolicy.origin-when-cross-origin\", \"0:\"],\n [\"link.referrerpolicy.unsafe-url\", \"0:\"],\n [\"link.rel\", \"10:2015\"],\n [\"link.rel.alternate_stylesheet\", \"0:\"],\n [\"link.rel.compression-dictionary\", \"0:\"],\n [\"link.rel.dns-prefetch\", \"5:2025\"],\n [\"link.rel.expect\", \"0:\"],\n [\"link.rel.manifest\", \"0:\"],\n [\"link.rel.modulepreload\", \"5:2023\"],\n [\"link.rel.preconnect\", \"10:2020\"],\n [\"link.rel.prefetch\", \"0:\"],\n [\"link.rel.preload\", \"10:2021\"],\n [\"link.rel.preload.as-fetch\", \"10:2021\"],\n [\"link.rel.preload.as-font\", \"10:2021\"],\n [\"link.rel.preload.as-image\", \"10:2021\"],\n [\"link.rel.preload.as-script\", \"10:2021\"],\n [\"link.rel.preload.as-style\", \"10:2021\"],\n [\"link.rel.preload.as-track\", \"0:\"],\n [\"link.sizes\", \"10:2020\"],\n [\"link.type\", \"10:2015\"],\n [\"main\", \"10:2015\"],\n [\"map\", \"10:2015\"],\n [\"map.name\", \"10:2015\"],\n [\"mark\", \"10:2015\"],\n [\"menu\", \"10:2015\"],\n [\"meta\", \"10:2015\"],\n [\"meta.charset\", \"10:2015\"],\n [\"meta.content\", \"10:2015\"],\n [\"meta.http-equiv\", \"10:2015\"],\n [\"meta.http-equiv.content-security-policy\", \"10:2017\"],\n [\"meta.http-equiv.content-type\", \"10:2017\"],\n [\"meta.http-equiv.refresh\", \"10:2015\"],\n [\"meta.name\", \"10:2015\"],\n [\"meta.name.application-title\", \"0:\"],\n [\"meta.name.color-scheme\", \"10:2022\"],\n [\"meta.name.referrer\", \"10:2020\"],\n [\"meta.name.theme-color\", \"0:\"],\n [\"meter\", \"10:2017\"],\n [\"meter.high\", \"10:2017\"],\n [\"meter.low\", \"10:2017\"],\n [\"meter.max\", \"10:2017\"],\n [\"meter.min\", \"10:2017\"],\n [\"meter.optimum\", \"10:2017\"],\n [\"meter.value\", \"10:2017\"],\n [\"nav\", \"10:2015\"],\n [\"noscript\", \"10:2015\"],\n [\"object\", \"10:2015\"],\n [\"object.data\", \"10:2015\"],\n [\"object.form\", \"10:2015\"],\n [\"object.height\", \"10:2015\"],\n [\"object.name\", \"10:2015\"],\n [\"object.type\", \"10:2015\"],\n [\"object.width\", \"10:2015\"],\n [\"ol\", \"10:2015\"],\n [\"ol.reversed\", \"10:2020\"],\n [\"ol.start\", \"10:2015\"],\n [\"ol.type\", \"10:2015\"],\n [\"optgroup\", \"10:2015\"],\n [\"optgroup.disabled\", \"0:\"],\n [\"optgroup.label\", \"10:2015\"],\n [\"option\", \"10:2015\"],\n [\"option.disabled\", \"10:2015\"],\n [\"option.label\", \"10:2015\"],\n [\"option.selected\", \"10:2015\"],\n [\"option.value\", \"10:2015\"],\n [\"output\", \"10:2018\"],\n [\"output.for\", \"10:2018\"],\n [\"output.form\", \"10:2018\"],\n [\"output.name\", \"10:2018\"],\n [\"p\", \"10:2015\"],\n [\"picture\", \"10:2016\"],\n [\"pre\", \"10:2015\"],\n [\"progress\", \"10:2015\"],\n [\"progress.max\", \"10:2015\"],\n [\"progress.value\", \"10:2015\"],\n [\"q\", \"10:2015\"],\n [\"q.cite\", \"10:2015\"],\n [\"rp\", \"10:2015\"],\n [\"rt\", \"10:2015\"],\n [\"ruby\", \"10:2015\"],\n [\"s\", \"10:2015\"],\n [\"samp\", \"10:2015\"],\n [\"script\", \"10:2015\"],\n [\"script.async\", \"10:2015\"],\n [\"script.attributionsrc\", \"0:\"],\n [\"script.blocking\", \"0:\"],\n [\"script.crossorigin\", \"10:2016\"],\n [\"script.defer\", \"10:2015\"],\n [\"script.fetchpriority\", \"5:2024\"],\n [\"script.integrity\", \"10:2018\"],\n [\"script.nomodule\", \"10:2018\"],\n [\"script.referrerpolicy\", \"10:2020\"],\n [\"script.referrerpolicy.no-referrer-when-downgrade\", \"0:\"],\n [\"script.referrerpolicy.origin-when-cross-origin\", \"0:\"],\n [\"script.referrerpolicy.unsafe-url\", \"0:\"],\n [\"script.src\", \"10:2015\"],\n [\"script.type\", \"10:2015\"],\n [\"script.type.importmap\", \"10:2023\"],\n [\"script.type.module\", \"10:2018\"],\n [\"script.type.speculationrules\", \"0:\"],\n [\"script.type.speculationrules.eagerness\", \"0:\"],\n [\"script.type.speculationrules.expects_no_vary_search\", \"0:\"],\n [\"script.type.speculationrules.prefetch\", \"0:\"],\n [\"script.type.speculationrules.prerender\", \"0:\"],\n [\"script.type.speculationrules.referrer_policy\", \"0:\"],\n [\"script.type.speculationrules.relative_to\", \"0:\"],\n [\"script.type.speculationrules.requires\", \"0:\"],\n [\n \"script.type.speculationrules.requires.anonymous-client-ip-when-cross-origin\",\n \"0:\",\n ],\n [\"script.type.speculationrules.source_optional\", \"0:\"],\n [\"script.type.speculationrules.tag\", \"0:\"],\n [\"script.type.speculationrules.target_hint\", \"0:\"],\n [\"script.type.speculationrules.urls\", \"0:\"],\n [\"script.type.speculationrules.where\", \"0:\"],\n [\"search\", \"5:2023\"],\n [\"section\", \"10:2015\"],\n [\"select\", \"10:2015\"],\n [\"select.disabled\", \"10:2015\"],\n [\"select.form\", \"10:2015\"],\n [\"select.hr_in_select\", \"0:\"],\n [\"select.multiple\", \"10:2015\"],\n [\"select.name\", \"10:2015\"],\n [\"select.required\", \"10:2015\"],\n [\"select.size\", \"0:\"],\n [\"selectedcontent\", \"0:\"],\n [\"slot\", \"10:2020\"],\n [\"slot.name\", \"10:2020\"],\n [\"small\", \"10:2015\"],\n [\"source\", \"10:2015\"],\n [\"source.height\", \"10:2022\"],\n [\"source.media\", \"10:2015\"],\n [\"source.sizes\", \"10:2016\"],\n [\"source.src\", \"10:2015\"],\n [\"source.srcset\", \"10:2016\"],\n [\"source.type\", \"10:2015\"],\n [\"source.width\", \"10:2022\"],\n [\"span\", \"10:2015\"],\n [\"strong\", \"10:2015\"],\n [\"style\", \"10:2015\"],\n [\"style.blocking\", \"0:\"],\n [\"style.media\", \"10:2015\"],\n [\"sub\", \"10:2015\"],\n [\"summary\", \"10:2020\"],\n [\"summary.display_list_item\", \"0:\"],\n [\"sup\", \"10:2015\"],\n [\"table\", \"10:2015\"],\n [\"table.align\", \"0:\"],\n [\"table.bgcolor\", \"0:\"],\n [\"table.border\", \"0:\"],\n [\"table.cellpadding\", \"0:\"],\n [\"table.cellspacing\", \"0:\"],\n [\"table.frame\", \"0:\"],\n [\"table.rules\", \"0:\"],\n [\"table.summary\", \"0:\"],\n [\"table.width\", \"0:\"],\n [\"tbody\", \"10:2015\"],\n [\"tbody.align\", \"0:\"],\n [\"tbody.bgcolor\", \"0:\"],\n [\"tbody.char\", \"0:\"],\n [\"tbody.charoff\", \"0:\"],\n [\"tbody.valign\", \"0:\"],\n [\"td\", \"10:2015\"],\n [\"td.abbr\", \"0:\"],\n [\"td.align\", \"0:\"],\n [\"td.axis\", \"0:\"],\n [\"td.bgcolor\", \"0:\"],\n [\"td.char\", \"0:\"],\n [\"td.charoff\", \"0:\"],\n [\"td.colspan\", \"10:2015\"],\n [\"td.headers\", \"10:2015\"],\n [\"td.rowspan\", \"10:2015\"],\n [\"td.rowspan.rowspan_zero\", \"0:\"],\n [\"td.scope\", \"0:\"],\n [\"td.valign\", \"0:\"],\n [\"td.width\", \"0:\"],\n [\"template\", \"10:2015\"],\n [\"template.shadowrootclonable\", \"5:2024\"],\n [\"template.shadowrootdelegatesfocus\", \"5:2024\"],\n [\"template.shadowrootmode\", \"5:2024\"],\n [\"template.shadowrootreferencetarget\", \"0:\"],\n [\"template.shadowrootserializable\", \"0:\"],\n [\"textarea\", \"10:2015\"],\n [\"textarea.autocomplete\", \"10:2020\"],\n [\"textarea.cols\", \"10:2015\"],\n [\"textarea.dirname\", \"5:2023\"],\n [\"textarea.disabled\", \"10:2015\"],\n [\"textarea.form\", \"10:2015\"],\n [\"textarea.maxlength\", \"10:2015\"],\n [\"textarea.minlength\", \"10:2018\"],\n [\"textarea.name\", \"10:2015\"],\n [\"textarea.placeholder\", \"10:2015\"],\n [\"textarea.placeholder.line_breaks\", \"10:2022\"],\n [\"textarea.readonly\", \"10:2015\"],\n [\"textarea.required\", \"10:2015\"],\n [\"textarea.rows\", \"10:2015\"],\n [\"textarea.wrap\", \"10:2015\"],\n [\"textarea.wrap.hard\", \"0:\"],\n [\"tfoot\", \"10:2015\"],\n [\"tfoot.align\", \"0:\"],\n [\"tfoot.bgcolor\", \"0:\"],\n [\"tfoot.char\", \"0:\"],\n [\"tfoot.charoff\", \"0:\"],\n [\"tfoot.valign\", \"0:\"],\n [\"th\", \"10:2015\"],\n [\"th.abbr\", \"10:2015\"],\n [\"th.align\", \"0:\"],\n [\"th.axis\", \"0:\"],\n [\"th.bgcolor\", \"0:\"],\n [\"th.char\", \"0:\"],\n [\"th.charoff\", \"0:\"],\n [\"th.colspan\", \"10:2015\"],\n [\"th.headers\", \"10:2015\"],\n [\"th.rowspan\", \"10:2015\"],\n [\"th.rowspan.rowspan_zero\", \"0:\"],\n [\"th.scope\", \"10:2015\"],\n [\"th.valign\", \"0:\"],\n [\"th.width\", \"0:\"],\n [\"thead\", \"10:2015\"],\n [\"thead.align\", \"0:\"],\n [\"thead.bgcolor\", \"0:\"],\n [\"thead.char\", \"0:\"],\n [\"thead.charoff\", \"0:\"],\n [\"thead.valign\", \"0:\"],\n [\"time\", \"10:2017\"],\n [\"time.datetime\", \"10:2017\"],\n [\"title\", \"10:2015\"],\n [\"tr\", \"10:2015\"],\n [\"tr.align\", \"0:\"],\n [\"tr.bgcolor\", \"0:\"],\n [\"tr.char\", \"0:\"],\n [\"tr.charoff\", \"0:\"],\n [\"tr.valign\", \"0:\"],\n [\"track\", \"10:2015\"],\n [\"track.default\", \"10:2015\"],\n [\"track.kind\", \"10:2015\"],\n [\"track.label\", \"10:2015\"],\n [\"track.src\", \"10:2016\"],\n [\"track.srclang\", \"10:2015\"],\n [\"u\", \"10:2015\"],\n [\"ul\", \"10:2015\"],\n [\"var\", \"10:2015\"],\n [\"video\", \"10:2015\"],\n [\"video.aspect_ratio_computed_from_attributes\", \"10:2020\"],\n [\"video.autoplay\", \"10:2016\"],\n [\"video.controls\", \"10:2015\"],\n [\"video.controlslist\", \"0:\"],\n [\"video.crossorigin\", \"10:2020\"],\n [\"video.disablepictureinpicture\", \"0:\"],\n [\"video.disableremoteplayback\", \"0:\"],\n [\"video.height\", \"10:2015\"],\n [\"video.loop\", \"10:2015\"],\n [\"video.muted\", \"10:2015\"],\n [\"video.playsinline\", \"0:\"],\n [\"video.poster\", \"10:2015\"],\n [\"video.preload\", \"10:2015\"],\n [\"video.src\", \"10:2015\"],\n [\"video.width\", \"10:2015\"],\n [\"wbr\", \"10:2015\"],\n]);\nconst globalAttributes = new Map([\n [\"accesskey\", \"10:2015\"],\n [\"autocapitalize\", \"0:\"],\n [\"autocorrect\", \"0:\"],\n [\"autofocus\", \"10:2023\"],\n [\"contenteditable\", \"10:2015\"],\n [\"contenteditable.plaintext-only\", \"5:2025\"],\n [\"enterkeyhint\", \"10:2021\"],\n [\"exportparts\", \"10:2020\"],\n [\"inert\", \"10:2023\"],\n [\"inert.ignores_find_in_page\", \"0:\"],\n [\"inputmode\", \"10:2021\"],\n [\"is\", \"0:\"],\n [\"lang\", \"10:2015\"],\n [\"nonce\", \"10:2022\"],\n [\"nonce.nonce_hiding\", \"10:2022\"],\n [\"part\", \"10:2020\"],\n [\"popover\", \"5:2024\"],\n [\"popover.hint\", \"0:\"],\n [\"slot\", \"10:2020\"],\n [\"spellcheck\", \"10:2017\"],\n [\"style\", \"10:2015\"],\n [\"tabindex\", \"10:2015\"],\n [\"title\", \"10:2015\"],\n [\"title.multi-line_titles\", \"10:2018\"],\n [\"translate\", \"10:2023\"],\n [\"virtualkeyboardpolicy\", \"0:\"],\n [\"writingsuggestions\", \"0:\"],\n]);\nexport {\n elements,\n globalAttributes,\n BASELINE_HIGH,\n BASELINE_LOW,\n BASELINE_FALSE,\n};\n","/**\n * @import {\n * ElementNodeAdapter,\n * UseBaselineOptions,\n * UseBaselineResult\n * } from \"../types\"\n */\nimport {\n elements,\n globalAttributes,\n BASELINE_HIGH,\n BASELINE_LOW,\n} from \"../utils/baseline\";\n\n/**\n * @type {{\n * noBaselineElement: \"noBaselineElement\";\n * notBaselineElementAttribute: \"notBaselineElementAttribute\";\n * notBaselineGlobalAttribute: \"notBaselineGlobalAttribute\";\n * }}\n */\nexport const USE_BASELINE_MESSAGE_IDS = {\n noBaselineElement: \"noBaselineElement\",\n notBaselineElementAttribute: \"notBaselineElementAttribute\",\n notBaselineGlobalAttribute: \"notBaselineGlobalAttribute\",\n};\n\n/**\n * @param {string[]} parts\n * @returns {string}\n */\nfunction toStatusKey(...parts) {\n return parts.map((part) => part.toLowerCase().trim()).join(\".\");\n}\n\n/**\n * @param {string} element\n * @returns {boolean}\n */\nfunction isCustomElement(element) {\n return element.includes(\"-\");\n}\n\n/**\n * @param {string} encoded\n * @returns {[number, number]}\n */\nfunction decodeStatus(encoded) {\n const [status, year = NaN] = encoded.split(\":\").map((part) => Number(part));\n return [status, year];\n}\n\n/**\n * @param {string} element\n * @param {string} key\n * @param {string} value\n * @returns {string | null}\n */\nfunction getElementAttributeSpecificStatusKey(element, key, value) {\n const elementName = element.toLowerCase();\n const attributeKey = key.toLowerCase();\n const attributeValue = value.toLowerCase();\n\n // <input type=\"...\">\n if (elementName === \"input\" && attributeKey === \"type\") {\n return `input.type_${attributeValue}`;\n }\n\n // <a href=\"sms:0000..\">\n if (\n elementName === \"a\" &&\n attributeKey === \"href\" &&\n attributeValue.trim().startsWith(\"sms:\")\n ) {\n return \"a.href.href_sms\";\n }\n\n // <td rowspan=\"0\"> <th rowspan=\"0\">\n if (\n (elementName === \"td\" || elementName === \"th\") &&\n attributeKey === \"rowspan\" &&\n attributeValue === \"0\"\n ) {\n return `${elementName}.rowspan.rowspan_zero`;\n }\n return null;\n}\n\n/**\n * @template ElementNode\n * @template AttributeKeyNode\n * @template AttributeValueNode\n * @param {UseBaselineOptions} options\n */\nexport function useBaseline(options) {\n const available = options.available;\n\n const baseYear = typeof available === \"number\" ? available : null;\n const baseStatus = available === \"widely\" ? BASELINE_HIGH : BASELINE_LOW;\n const availability = String(available);\n\n /**\n * @param {string} encoded\n * @returns {boolean}\n */\n function isSupported(encoded) {\n const [status, year = NaN] = decodeStatus(encoded);\n if (baseYear) {\n return year <= baseYear;\n }\n return status >= baseStatus;\n }\n\n /**\n * @param {string} element\n * @param {string} key\n * @returns {boolean}\n */\n function isSupportedElementAttributeKey(element, key) {\n const elementStatus = elements.get(toStatusKey(element, key));\n if (!elementStatus) {\n return true;\n }\n return isSupported(elementStatus);\n }\n\n /**\n * @param {string} key\n * @returns {boolean}\n */\n function isSupportedGlobalAttributeKey(key) {\n const globalAttrStatus = globalAttributes.get(toStatusKey(key));\n if (!globalAttrStatus) {\n return true;\n }\n return isSupported(globalAttrStatus);\n }\n\n /**\n * @param {string} element\n * @param {string} key\n * @param {string} value\n * @returns {boolean}\n */\n function isSupportedElementAttributeKeyValue(element, key, value) {\n const elementStatus = elements.get(toStatusKey(element, key, value));\n if (!elementStatus) {\n return true;\n }\n return isSupported(elementStatus);\n }\n\n /**\n * @param {string} key\n * @param {string} value\n * @returns {boolean}\n */\n function isSupportedGlobalAttributeKeyValue(key, value) {\n const globalAttrStatus = globalAttributes.get(toStatusKey(key, value));\n if (!globalAttrStatus) {\n return true;\n }\n return isSupported(globalAttrStatus);\n }\n\n /**\n * @param {string} element\n * @param {string} key\n * @param {string} value\n * @returns {boolean}\n */\n function isSupportedElementSpecificAttributeKeyValue(element, key, value) {\n const statusKey = getElementAttributeSpecificStatusKey(element, key, value);\n if (!statusKey) {\n return true;\n }\n const elementStatus = elements.get(statusKey);\n if (!elementStatus) {\n return true;\n }\n return isSupported(elementStatus);\n }\n\n /**\n * @param {string} element\n * @returns {boolean}\n */\n function isSupportedElement(element) {\n const elementEncoded = elements.get(element);\n if (!elementEncoded) {\n return true;\n }\n return isSupported(elementEncoded);\n }\n\n return {\n /**\n * @param {ElementNodeAdapter<\n * ElementNode,\n * AttributeKeyNode,\n * AttributeValueNode\n * >} adapter\n * @returns {UseBaselineResult<\n * ElementNode,\n * AttributeKeyNode,\n * AttributeValueNode\n * >}\n */\n checkAttributes(adapter) {\n const elementName = adapter.getTagName();\n if (isCustomElement(elementName)) {\n return [];\n }\n\n if (!isSupportedElement(elementName)) {\n return [\n {\n messageId: USE_BASELINE_MESSAGE_IDS.noBaselineElement,\n node: adapter.node(),\n data: {\n element: `<${elementName}>`,\n availability,\n },\n },\n ];\n }\n\n /**\n * @type {UseBaselineResult<\n * ElementNode,\n * AttributeKeyNode,\n * AttributeValueNode\n * >}\n */\n const result = [];\n\n for (const attribute of adapter.getAttributes()) {\n const attributeKey = attribute.key.value();\n const attributeKeyIsExpression = attribute.key.isExpression();\n if (!attributeKey || attributeKeyIsExpression) {\n continue;\n }\n const attributeValue = attribute.value.value();\n if (attributeValue === null) {\n continue;\n }\n const attrKeyRaw = attribute.key.raw() || attributeKey;\n if (!isSupportedElementAttributeKey(elementName, attributeKey)) {\n result.push({\n messageId: USE_BASELINE_MESSAGE_IDS.notBaselineElementAttribute,\n node: attribute.key.node(),\n data: {\n element: `<${elementName}>`,\n attr: attrKeyRaw,\n availability,\n },\n });\n } else if (!isSupportedGlobalAttributeKey(attributeKey)) {\n result.push({\n messageId: USE_BASELINE_MESSAGE_IDS.notBaselineGlobalAttribute,\n node: attribute.key.node(),\n data: {\n attr: attrKeyRaw,\n availability,\n },\n });\n } else if (attributeValue !== null) {\n if (\n !isSupportedElementAttributeKeyValue(\n elementName,\n attributeKey,\n attributeValue\n ) ||\n !isSupportedElementSpecificAttributeKeyValue(\n elementName,\n attributeKey,\n attributeValue\n )\n ) {\n result.push({\n messageId: USE_BASELINE_MESSAGE_IDS.notBaselineElementAttribute,\n node: attribute.value.node() || adapter.node(),\n data: {\n element: `<${elementName}>`,\n attr: `${attrKeyRaw}=\"${attributeValue}\"`,\n availability,\n },\n });\n } else if (\n !isSupportedGlobalAttributeKeyValue(attributeKey, attributeValue)\n ) {\n const valueNode = attribute.value.node();\n if (valueNode) {\n result.push({\n messageId: USE_BASELINE_MESSAGE_IDS.notBaselineGlobalAttribute,\n node: valueNode,\n data: {\n attr: `${attrKeyRaw}=\"${attributeValue}\"`,\n availability,\n },\n });\n }\n }\n }\n }\n return result;\n },\n };\n}\n","/**\n * @import {\n * ElementNodeAdapter,\n * NoIneffectiveAttrsResult\n * } from \"../types\"\n */\n\n/**\n * @typedef {{\n * attr: string;\n * when: (adapter: ElementNodeAdapter<any, any, any>) => boolean;\n * message: string;\n * }} AttributeChecker\n */\n\n/**\n * @type {{\n * ineffective: \"ineffective\";\n * }}\n */\nexport const NO_INEFFECTIVE_ATTRS_MESSAGE_IDS = {\n ineffective: \"ineffective\",\n};\n\n/**\n * @template ElementNode\n * @template AttributeKeyNode\n * @template AttributeValueNode\n */\nexport function noIneffectiveAttrs() {\n /**\n * @param {ElementNodeAdapter<\n * ElementNode,\n * AttributeKeyNode,\n * AttributeValueNode\n * >} adapter\n * @param {string} attrName\n * @returns {string | null}\n */\n function getAttrValue(adapter, attrName) {\n for (const attribute of adapter.getAttributes()) {\n const attrKeyValue = attribute.key.value();\n if (attrKeyValue && attrKeyValue === attrName) {\n const value = attribute.value.value();\n return value || null;\n }\n }\n return null;\n }\n\n /**\n * @param {ElementNodeAdapter<\n * ElementNode,\n * AttributeKeyNode,\n * AttributeValueNode\n * >} adapter\n * @param {string} attrName\n * @returns {boolean}\n */\n function hasAttr(adapter, attrName) {\n for (const attribute of adapter.getAttributes()) {\n const keyValue = attribute.key.value();\n if (\n keyValue &&\n keyValue.toLocaleLowerCase() === attrName.toLocaleLowerCase()\n ) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * @param {ElementNodeAdapter<\n * ElementNode,\n * AttributeKeyNode,\n * AttributeValueNode\n * >} adapter\n * @param {string} attrName\n * @returns {boolean}\n */\n function isTemplateValueAttr(adapter, attrName) {\n for (const attribute of adapter.getAttributes()) {\n const keyValue = attribute.key.value();\n if (keyValue && keyValue === attrName) {\n const value = attribute.value;\n return value.isExpression();\n }\n }\n return false;\n }\n\n /** @type {Record<string, AttributeChecker[]>} */\n const checkersByTag = {\n input: [\n {\n attr: \"multiple\",\n when: (adapter) => {\n if (isTemplateValueAttr(adapter, \"type\")) {\n return false;\n }\n const type = getAttrValue(adapter, \"type\") || \"text\";\n return [\n \"text\",\n \"password\",\n \"radio\",\n \"checkbox\",\n \"image\",\n \"hidden\",\n \"reset\",\n \"button\",\n ].includes(type);\n },\n message: 'The \"multiple\" attribute has no effect on this input type.',\n },\n {\n attr: \"accept\",\n when: (adapter) => {\n if (isTemplateValueAttr(adapter, \"type\")) {\n return false;\n }\n const type = getAttrValue(adapter, \"type\") || \"text\";\n return type !== \"file\";\n },\n message:\n 'The \"accept\" attribute has no effect unless input type is \"file\".',\n },\n {\n attr: \"readonly\",\n when: (adapter) => {\n if (isTemplateValueAttr(adapter, \"type\")) {\n return false;\n }\n const type = getAttrValue(adapter, \"type\") || \"text\";\n return [\"checkbox\", \"radio\", \"file\", \"range\", \"color\"].includes(type);\n },\n message: 'The \"readonly\" attribute has no effect on this input type.',\n },\n {\n attr: \"min\",\n when: (adapter) => {\n if (isTemplateValueAttr(adapter, \"type\")) {\n return false;\n }\n const type = getAttrValue(adapter, \"type\") || \"text\";\n return ![\n \"number\",\n \"range\",\n \"date\",\n \"datetime-local\",\n \"month\",\n \"time\",\n \"week\",\n ].includes(type);\n },\n message:\n 'The \"min\" attribute only works with numeric, date, and time input types.',\n },\n {\n attr: \"max\",\n when: (adapter) => {\n if (isTemplateValueAttr(adapter, \"type\")) {\n return false;\n }\n const type = getAttrValue(adapter, \"type\") || \"text\";\n return ![\n \"number\",\n \"range\",\n \"date\",\n \"datetime-local\",\n \"month\",\n \"time\",\n \"week\",\n ].includes(type);\n },\n message:\n 'The \"max\" attribute only works with numeric, date, and time input types.',\n },\n {\n attr: \"step\",\n when: (adapter) => {\n if (isTemplateValueAttr(adapter, \"type\")) {\n return false;\n }\n const type = getAttrValue(adapter, \"type\") || \"text\";\n return ![\n \"number\",\n \"range\",\n \"date\",\n \"datetime-local\",\n \"month\",\n \"time\",\n \"week\",\n ].includes(type);\n },\n message:\n 'The \"step\" attribute only works with numeric, date, and time input types.',\n },\n {\n attr: \"pattern\",\n when: (adapter) => {\n if (isTemplateValueAttr(adapter, \"type\")) {\n return false;\n }\n const type = getAttrValue(adapter, \"type\") || \"text\";\n return ![\n \"text\",\n \"search\",\n \"url\",\n \"tel\",\n \"email\",\n \"password\",\n ].includes(type);\n },\n message:\n 'The \"pattern\" attribute only works with text-based input types.',\n },\n {\n attr: \"maxlength\",\n when: (adapter) => {\n if (isTemplateValueAttr(adapter, \"type\")) {\n return false;\n }\n const type = getAttrValue(adapter, \"type\") || \"text\";\n return ![\n \"text\",\n \"search\",\n \"url\",\n \"tel\",\n \"email\",\n \"password\",\n ].includes(type);\n },\n message:\n 'The \"maxlength\" attribute only works with text-based input types.',\n },\n {\n attr: \"minlength\",\n when: (adapter) => {\n if (isTemplateValueAttr(adapter, \"type\")) {\n return false;\n }\n const type = getAttrValue(adapter, \"type\") || \"text\";\n return ![\n \"text\",\n \"search\",\n \"url\",\n \"tel\",\n \"email\",\n \"password\",\n ].includes(type);\n },\n message:\n 'The \"minlength\" attribute only works with text-based input types.',\n },\n {\n attr: \"placeholder\",\n when: (adapter) => {\n if (isTemplateValueAttr(adapter, \"type\")) {\n return false;\n }\n const type = getAttrValue(adapter, \"type\") || \"text\";\n return ![\n \"text\",\n \"search\",\n \"url\",\n \"tel\",\n \"email\",\n \"password\",\n \"number\",\n ].includes(type);\n },\n message:\n 'The \"placeholder\" attribute has no effect on this input type.',\n },\n {\n attr: \"size\",\n when: (adapter) => {\n if (isTemplateValueAttr(adapter, \"type\")) {\n return false;\n }\n const type = getAttrValue(adapter, \"type\") || \"text\";\n return ![\n \"text\",\n \"search\",\n \"url\",\n \"tel\",\n \"email\",\n \"password\",\n ].includes(type);\n },\n message: 'The \"size\" attribute only works with text-based input types.',\n },\n {\n attr: \"list\",\n when: (adapter) => {\n if (isTemplateValueAttr(adapter, \"type\")) {\n return false;\n }\n const type = getAttrValue(adapter, \"type\") || \"text\";\n return [\n \"checkbox\",\n \"radio\",\n \"file\",\n \"submit\",\n \"image\",\n \"reset\",\n \"button\",\n \"hidden\",\n ].includes(type);\n },\n message: 'The \"list\" attribute has no effect on this input type.',\n },\n ],\n script: [\n {\n attr: \"defer\",\n when: (adapter) => !hasAttr(adapter, \"src\"),\n message: 'The \"defer\" attribute has no effect on inline scripts.',\n },\n {\n attr: \"async\",\n when: (adapter) => !hasAttr(adapter, \"src\"),\n message: 'The \"async\" attribute has no effect on inline scripts.',\n },\n ],\n a: [\n {\n attr: \"download\",\n when: (adapter) => !hasAttr(adapter, \"href\"),\n message: 'The \"download\" attribute has no effect without an \"href\".',\n },\n {\n attr: \"ping\",\n when: (adapter) => !hasAttr(adapter, \"href\"),\n message: 'The \"ping\" attribute has no effect without an \"href\".',\n },\n {\n attr: \"target\",\n when: (adapter) => !hasAttr(adapter, \"href\"),\n message: 'The \"target\" attribute has no effect without an \"href\".',\n },\n ],\n audio: [\n {\n attr: \"controlslist\",\n when: (adapter) => !hasAttr(adapter, \"controls\"),\n message:\n 'The \"controlslist\" attribute has no effect without \"controls\".',\n },\n ],\n video: [\n {\n attr: \"controlslist\",\n when: (adapter) => !hasAttr(adapter, \"controls\"),\n message:\n 'The \"controlslist\" attribute has no effect without \"controls\".',\n },\n ],\n form: [\n {\n attr: \"enctype\",\n when: (adapter) => {\n if (isTemplateValueAttr(adapter, \"method\")) {\n return false;\n }\n const method = getAttrValue(adapter, \"method\") || \"get\";\n return method ? method.toLowerCase() !== \"post\" : false;\n },\n message:\n 'The \"enctype\" attribute only has effect when method is \"post\".',\n },\n ],\n button: [\n {\n attr: \"formaction\",\n when: (adapter) => {\n if (isTemplateValueAttr(adapter, \"type\")) {\n return false;\n }\n const type = getAttrValue(adapter, \"type\") || \"submit\";\n return type !== \"submit\";\n },\n message: 'The \"formaction\" attribute only works with type=\"submit\".',\n },\n {\n attr: \"formmethod\",\n when: (adapter) => {\n if (isTemplateValueAttr(adapter, \"type\")) {\n return false;\n }\n const type = getAttrValue(adapter, \"type\") || \"submit\";\n return type !== \"submit\";\n },\n message: 'The \"formmethod\" attribute only works with type=\"submit\".',\n },\n {\n attr: \"formenctype\",\n when: (adapter) => {\n if (isTemplateValueAttr(adapter, \"type\")) {\n return false;\n }\n const type = getAttrValue(adapter, \"type\") || \"submit\";\n return type !== \"submit\";\n },\n message: 'The \"formenctype\" attribute only works with type=\"submit\".',\n },\n {\n attr: \"formnovalidate\",\n when: (adapter) => {\n if (isTemplateValueAttr(adapter, \"type\")) {\n return false;\n }\n const type = getAttrValue(adapter, \"type\") || \"submit\";\n return type !== \"submit\";\n },\n message:\n 'The \"formnovalidate\" attribute only works with type=\"submit\".',\n },\n {\n attr: \"formtarget\",\n when: (adapter) => {\n if (isTemplateValueAttr(adapter, \"type\")) {\n return false;\n }\n const type = getAttrValue(adapter, \"type\") || \"submit\";\n return type !== \"submit\";\n },\n message: 'The \"formtarget\" attribute only works with type=\"submit\".',\n },\n ],\n area: [\n {\n attr: \"download\",\n when: (adapter) => !hasAttr(adapter, \"href\"),\n message: 'The \"download\" attribute has no effect without an \"href\".',\n },\n {\n attr: \"ping\",\n when: (adapter) => !hasAttr(adapter, \"href\"),\n message: 'The \"ping\" attribute has no effect without an \"href\".',\n },\n {\n attr: \"target\",\n when: (adapter) => !hasAttr(adapter, \"href\"),\n message: 'The \"target\" attribute has no effect without an \"href\".',\n },\n ],\n img: [\n {\n attr: \"usemap\",\n when: (adapter) => hasAttr(adapter, \"ismap\"),\n message: 'The \"usemap\" and \"ismap\" attributes cannot be used together.',\n },\n ],\n };\n\n return {\n /**\n * @param {ElementNodeAdapter<\n * ElementNode,\n * AttributeKeyNode,\n * AttributeValueNode\n * >} adapter\n * @returns {NoIneffectiveAttrsResult<AttributeKeyNode>}\n */\n checkAttributes(adapter) {\n const elementName = adapter.getTagName();\n const tagCheckers = checkersByTag[elementName];\n\n if (!tagCheckers) {\n return [];\n }\n\n /** @type {NoIneffectiveAttrsResult<AttributeKeyNode>} */\n const result = [];\n for (const check of tagCheckers) {\n for (const attribute of adapter.getAttributes()) {\n const attrKeyValue = attribute.key.value();\n const attrValueValue = attribute.value.value();\n if (\n attribute.value.isExpression() ||\n attrValueValue === null ||\n attrKeyValue !== check.attr\n ) {\n continue;\n }\n\n if (check.when(adapter)) {\n result.push({\n node: attribute.key.node(),\n messageId: NO_INEFFECTIVE_ATTRS_MESSAGE_IDS.ineffective,\n data: {\n message: check.message,\n },\n });\n }\n }\n }\n\n return result;\n },\n };\n}\n","/**\n * @import {\n * ElementNodeAdapter,\n * NoObsoleteTagsResult\n * } from \"../types\"\n */\n\n// https://html.spec.whatwg.org/#non-conforming-features\nconst OBSOLETE_TAGS = [\n \"applet\",\n \"acronym\",\n \"bgsound\",\n \"dir\",\n \"frame\",\n \"frameset\",\n \"noframes\",\n \"isindex\",\n \"keygen\",\n \"listing\",\n \"menuitem\",\n \"nextid\",\n \"noembed\",\n \"plaintext\",\n \"rb\",\n \"rtc\",\n \"strike\",\n \"xmp\",\n \"basefont\",\n \"big\",\n \"blink\",\n \"center\",\n \"font\",\n \"marquee\",\n \"multicol\",\n \"nobr\",\n \"spacer\",\n \"tt\",\n];\n\nconst OBSOLETE_TAGS_SET = new Set(OBSOLETE_TAGS);\n\n/**\n * @type {{\n * unexpected: \"unexpected\";\n * }}\n */\nexport const NO_OBSOLETE_TAGS_MESSAGE_IDS = {\n unexpected: \"unexpected\",\n};\n\n/**\n * @template ElementNode\n * @template AttributeKeyNode\n * @template AttributeValueNode\n */\nexport function noObsoleteTags() {\n return {\n /**\n * @param {ElementNodeAdapter<\n * ElementNode,\n * AttributeKeyNode,\n * AttributeValueNode\n * >} adapter\n * @returns {NoObsoleteTagsResult<ElementNode>}\n */\n checkElement(adapter) {\n const tagName = adapter.getTagName();\n\n if (OBSOLETE_TAGS_SET.has(tagName)) {\n return [\n {\n messageId: NO_OBSOLETE_TAGS_MESSAGE_IDS.unexpected,\n node: adapter.node(),\n data: {\n tag: tagName,\n },\n },\n ];\n }\n\n return [];\n },\n };\n}\n","/**\n * @typedef {Object} ObsoleteAttrConfig\n * @property {string[]} elements - List of HTML elements where this attribute is\n * obsolete. Use \"*\" for all elements.\n * @property {string} suggestion - Suggestion for what to use instead of this\n * obsolete attribute.\n */\n\n/** @typedef {Record<string, ObsoleteAttrConfig[]>} ObsoleteAttrs */\n\n// https://html.spec.whatwg.org/dev/obsolete.html#non-conforming-features\n/** @type {ObsoleteAttrs} */\nexport const OBSOLETE_ATTRS = {\n charset: [\n {\n elements: [\"a\", \"link\"],\n suggestion:\n \"Use an HTTP `Content-Type` header on the linked resource instead.\",\n },\n {\n elements: [\"script\"],\n suggestion:\n \"It is redundant to specify it on the script element since it inherits from the document.\",\n },\n ],\n coords: [\n {\n elements: [\"a\"],\n suggestion: \"Use area instead of a for image maps.\",\n },\n ],\n shape: [\n {\n elements: [\"a\"],\n suggestion: \"Use area instead of a for image maps.\",\n },\n ],\n methods: [\n {\n elements: [\"a\", \"link\"],\n suggestion: \"Use the HTTP OPTIONS feature instead.\",\n },\n ],\n name: [\n {\n elements: [\"a\", \"embed\", \"img\", \"option\"],\n suggestion: \"Use the id attribute instead.\",\n },\n ],\n rev: [\n {\n elements: [\"a\", \"link\"],\n suggestion:\n 'Use the rel attribute instead, with an opposite term. (For example, instead of rev=\"made\", use rel=\"author\".)',\n },\n ],\n urn: [\n {\n elements: [\"a\", \"link\"],\n suggestion:\n \"Specify the preferred persistent identifier using the href attribute instead.\",\n },\n ],\n accept: [\n {\n elements: [\"form\"],\n suggestion:\n \"Use the accept attribute directly on the input elements instead.\",\n },\n ],\n hreflang: [\n {\n elements: [\"area\"],\n suggestion:\n \"These attributes do not do anything useful, and for historical reasons there are no corresponding IDL attributes on area elements. Omit them altogether.\",\n },\n ],\n type: [\n {\n elements: [\"area\"],\n suggestion:\n \"These attributes do not do anything useful, and for historical reasons there are no corresponding IDL attributes on area elements. Omit them altogether.\",\n },\n {\n elements: [\"li\"],\n suggestion: \"Use CSS instead.\",\n },\n {\n elements: [\"menu\"],\n suggestion:\n \"To implement a custom context menu, use script to handle the contextmenu event. For toolbar menus, omit the attribute.\",\n },\n {\n elements: [\"style\"],\n suggestion:\n \"Omit the attribute for CSS; for data blocks, use script as the container instead of style.\",\n },\n {\n elements: [\"ul\"],\n suggestion: \"Use CSS instead.\",\n },\n ],\n nohref: [\n {\n elements: [\"area\"],\n suggestion:\n \"Omitting the href attribute is sufficient; the nohref attribute is unnecessary. Omit it altogether.\",\n },\n ],\n profile: [\n {\n elements: [\"head\"],\n suggestion: \"Unnecessary. Omit it altogether.\",\n },\n ],\n manifest: [\n {\n elements: [\"html\"],\n suggestion: \"Use service workers instead.\",\n },\n ],\n version: [\n {\n elements: [\"html\"],\n suggestion: \"Unnecessary. Omit it altogether.\",\n },\n ],\n ismap: [\n {\n elements: [\"input\"],\n suggestion:\n \"Unnecessary. Omit it altogether. All input elements with a type attribute in the Image Button state are processed as server-side image maps.\",\n },\n ],\n usemap: [\n {\n elements: [\"input\", \"object\"],\n suggestion: \"Use the img element for image maps.\",\n },\n ],\n longdesc: [\n {\n elements: [\"iframe\", \"img\"],\n suggestion:\n \"Use a regular a element to link to the description, or (in the case of images) use an image map to provide a link from the image to the image's description.\",\n },\n ],\n lowsrc: [\n {\n elements: [\"img\"],\n suggestion:\n \"Use a progressive JPEG image (given in the src attribute), instead of using two separate images.\",\n },\n ],\n target: [\n {\n elements: [\"link\"],\n suggestion: \"Unnecessary. Omit it altogether.\",\n },\n ],\n label: [\n {\n elements: [\"menu\"],\n suggestion:\n \"To implement a custom context menu, use script to handle the contextmenu event.\",\n },\n ],\n contextmenu: [\n {\n elements: [\"*\"],\n suggestion:\n \"To implement a custom context menu, use script to handle the contextmenu event.\",\n },\n ],\n onshow: [\n {\n elements: [\"*\"],\n suggestion:\n \"To implement a custom context menu, use script to handle the contextmenu event.\",\n },\n ],\n scheme: [\n {\n elements: [\"meta\"],\n suggestion:\n \"Use only one scheme per field, or make the scheme declaration part of the value.\",\n },\n ],\n archive: [\n {\n elements: [\"object\"],\n suggestion: \"Use the data and type attributes to invoke plugins.\",\n },\n ],\n classid: [\n {\n elements: [\"object\"],\n suggestion: \"Use the data and type attributes to invoke plugins.\",\n },\n ],\n code: [\n {\n elements: [\"object\"],\n suggestion: \"Use the data and type attributes to invoke plugins.\",\n },\n ],\n codebase: [\n {\n elements: [\"object\"],\n suggestion: \"Use the data and type attributes to invoke plugins.\",\n },\n ],\n codetype: [\n {\n elements: [\"object\"],\n suggestion: \"Use the data and type attributes to invoke plugins.\",\n },\n ],\n declare: [\n {\n elements: [\"object\"],\n suggestion:\n \"Repeat the object element completely each time the resource is to be reused.\",\n },\n ],\n standby: [\n {\n elements: [\"object\"],\n suggestion:\n \"Optimize the linked resource so that it loads quickly or, at least, incrementally.\",\n },\n ],\n typemustmatch: [\n {\n elements: [\"object\"],\n suggestion: \"Avoid using object elements with untrusted resources.\",\n },\n ],\n language: [\n {\n elements: [\"script\"],\n suggestion:\n \"Omit the attribute for JavaScript; for data blocks, use the type attribute instead.\",\n },\n ],\n event: [\n {\n elements: [\"script\"],\n suggestion: \"Use DOM events mechanisms to register event listeners.\",\n },\n ],\n for: [\n {\n elements: [\"script\"],\n suggestion: \"Use DOM events mechanisms to register event listeners.\",\n },\n ],\n datapagesize: [\n {\n elements: [\"table\"],\n suggestion: \"Unnecessary. Omit it altogether.\",\n },\n ],\n summary: [\n {\n elements: [\"table\"],\n suggestion:\n \"Use one of the techniques for describing tables given in the table section instead.\",\n },\n ],\n abbr: [\n {\n elements: [\"td\"],\n suggestion:\n \"Use text that begins in an unambiguous and terse manner, and include any more elaborate text after that. The title attribute can also be useful in including more detailed text, so that the cell's contents can be made terse. If it's a heading, use th (which has an abbr attribute).\",\n },\n ],\n axis: [\n {\n elements: [\"td\", \"th\"],\n suggestion: \"Use the scope attribute on the relevant th.\",\n },\n ],\n scope: [\n {\n elements: [\"td\"],\n suggestion: \"Use th elements for heading cells.\",\n },\n ],\n datasrc: [\n {\n elements: [\n \"a\",\n \"button\",\n \"div\",\n \"frame\",\n \"iframe\",\n \"img\",\n \"input\",\n \"label\",\n \"legend\",\n \"marquee\",\n \"object\",\n \"option\",\n \"select\",\n \"span\",\n \"table\",\n \"textarea\",\n ],\n suggestion:\n \"Use script and a mechanism such as XMLHttpRequest to populate the page dynamically.\",\n },\n ],\n datafld: [\n {\n elements: [\n \"a\",\n \"button\",\n \"div\",\n \"fieldset\",\n \"frame\",\n \"iframe\",\n \"img\",\n \"input\",\n \"label\",\n \"legend\",\n \"marquee\",\n \"object\",\n \"select\",\n \"span\",\n \"textarea\",\n ],\n suggestion:\n \"Use script and a mechanism such as XMLHttpRequest to populate the page dynamically.\",\n },\n ],\n dataformatas: [\n {\n elements: [\n \"button\",\n \"div\",\n \"input\",\n \"label\",\n \"legend\",\n \"marquee\",\n \"object\",\n \"option\",\n \"select\",\n \"span\",\n \"table\",\n ],\n suggestion:\n \"Use script and a mechanism such as XMLHttpRequest to populate the page dynamically.\",\n },\n ],\n dropzone: [\n {\n elements: [\"*\"],\n suggestion:\n \"Use script to handle the dragenter and dragover events instead.\",\n },\n ],\n alink: [\n {\n elements: [\"body\"],\n suggestion: \"Use CSS instead.\",\n },\n ],\n bgcolor: [\n {\n elements: [\"body\", \"table\", \"td\", \"th\", \"tr\"],\n suggestion: \"Use CSS instead.\",\n },\n ],\n bottommargin: [\n {\n elements: [\"body\"],\n suggestion: \"Use CSS instead.\",\n },\n ],\n leftmargin: [\n {\n elements: [\"body\"],\n suggestion: \"Use CSS instead.\",\n },\n ],\n link: [\n {\n elements: [\"body\"],\n suggestion: \"Use CSS instead.\",\n },\n ],\n marginheight: [\n {\n elements: [\"body\", \"iframe\"],\n suggestion: \"Use CSS instead.\",\n },\n ],\n marginwidth: [\n {\n elements: [\"body\", \"iframe\"],\n suggestion: \"Use CSS instead.\",\n },\n ],\n rightmargin: [\n {\n elements: [\"body\"],\n suggestion: \"Use CSS instead.\",\n },\n ],\n text: [\n {\n elements: [\"body\"],\n suggestion: \"Use CSS instead.\",\n },\n ],\n topmargin: [\n {\n elements: [\"body\"],\n suggestion: \"Use CSS instead.\",\n },\n ],\n vlink: [\n {\n elements: [\"body\"],\n suggestion: \"Use CSS instead.\",\n },\n ],\n clear: [\n {\n elements: [\"br\"],\n suggestion: \"Use CSS instead.\",\n },\n ],\n align: [\n {\n elements: [\n \"caption\",\n \"col\",\n \"div\",\n \"embed\",\n \"h1\",\n \"h2\",\n \"h3\",\n \"h4\",\n \"h5\",\n \"h6\",\n \"hr\",\n \"iframe\",\n \"input\",\n \"img\",\n \"legend\",\n \"object\",\n \"p\",\n \"table\",\n \"tbody\",\n \"thead\",\n \"tfoot\",\n \"td\",\n \"th\",\n \"tr\",\n ],\n suggestion: \"Use CSS instead.\",\n },\n ],\n char: [\n {\n elements: [\"col\", \"tbody\", \"thead\", \"tfoot\", \"td\", \"th\", \"tr\"],\n suggestion: \"Use CSS instead.\",\n },\n ],\n charoff: [\n {\n elements: [\"col\", \"tbody\", \"thead\", \"tfoot\", \"td\", \"th\", \"tr\"],\n suggestion: \"Use CSS instead.\",\n },\n ],\n valign: [\n {\n elements: [\"col\", \"tbody\", \"thead\", \"tfoot\", \"td\", \"th\", \"tr\"],\n suggestion: \"Use CSS instead.\",\n },\n ],\n width: [\n {\n elements: [\"col\", \"hr\", \"pre\", \"table\", \"td\", \"th\"],\n suggestion: \"Use CSS instead.\",\n },\n ],\n compact: [\n {\n elements: [\"dl\", \"menu\", \"ol\", \"ul\"],\n suggestion: \"Use CSS instead.\",\n },\n ],\n hspace: [\n {\n elements: [\"embed\", \"iframe\", \"input\", \"img\", \"object\"],\n suggestion: \"Use CSS instead.\",\n },\n ],\n vspace: [\n {\n elements: [\"embed\", \"iframe\", \"input\", \"img\", \"object\"],\n suggestion: \"Use CSS instead.\",\n },\n ],\n color: [\n {\n elements: [\"hr\"],\n suggestion: \"Use CSS instead.\",\n },\n ],\n noshade: [\n {\n elements: [\"hr\"],\n suggestion: \"Use CSS instead.\",\n },\n ],\n size: [\n {\n elements: [\"hr\"],\n suggestion: \"Use CSS instead.\",\n },\n ],\n allowtransparency: [\n {\n elements: [\"iframe\"],\n suggestion: \"Use CSS instead.\",\n },\n ],\n frameborder: [\n {\n elements: [\"iframe\"],\n suggestion: \"Use CSS instead.\",\n },\n ],\n framespacing: [\n {\n elements: [\"iframe\"],\n suggestion: \"Use CSS instead.\",\n },\n ],\n scrolling: [\n {\n elements: [\"iframe\"],\n suggestion: \"Use CSS instead.\",\n },\n ],\n border: [\n {\n elements: [\"input\", \"img\", \"object\", \"table\"],\n suggestion: \"Use CSS instead.\",\n },\n ],\n frame: [\n {\n elements: [\"table\"],\n suggestion: \"Use CSS instead.\",\n },\n ],\n bordercolor: [\n {\n elements: [\"table\"],\n suggestion: \"Use CSS instead.\",\n },\n ],\n cellpadding: [\n {\n elements: [\"table\"],\n suggestion: \"Use CSS instead.\",\n },\n ],\n cellspacing: [\n {\n elements: [\"table\"],\n suggestion: \"Use CSS instead.\",\n },\n ],\n height: [\n {\n elements: [\"table\", \"thead\", \"tbody\", \"tfoot\", \"td\", \"th\", \"tr\"],\n suggestion: \"Use CSS instead.\",\n },\n ],\n rules: [\n {\n elements: [\"table\"],\n suggestion: \"Use CSS instead.\",\n },\n ],\n nowrap: [\n {\n elements: [\"td\", \"th\"],\n suggestion: \"Use CSS instead.\",\n },\n ],\n background: [\n {\n elements: [\"body\", \"table\", \"thead\", \"tbody\", \"tfoot\", \"tr\", \"td\", \"th\"],\n suggestion: \"Use CSS instead.\",\n },\n ],\n};\n","/**\n * @import {\n * ElementNodeAdapter,\n * NoObsoleteAttrsResult\n * } from \"../types\"\n */\n\nimport { OBSOLETE_ATTRS } from \"../utils/obsolete-attrs\";\n\n/**\n * @type {{\n * obsolete: \"obsolete\";\n * }}\n */\nexport const NO_OBSOLETE_ATTRS_MESSAGE_IDS = {\n obsolete: \"obsolete\",\n};\n\n/**\n * @template ElementNode\n * @template AttributeKeyNode\n * @template AttributeValueNode\n */\nexport function noObsoleteAttrs() {\n return {\n /**\n * @param {ElementNodeAdapter<\n * ElementNode,\n * AttributeKeyNode,\n * AttributeValueNode\n * >} adapter\n * @returns {NoObsoleteAttrsResult<AttributeKeyNode>}\n */\n checkAttributes(adapter) {\n const elementName = adapter.getTagName();\n\n /** @type {NoObsoleteAttrsResult<AttributeKeyNode>} */\n const result = [];\n\n for (const attribute of adapter.getAttributes()) {\n const attrKeyValue = attribute.key.value();\n const attrValueValue = attribute.value.value();\n // Skip if attribute key is an expression or doesn't have a value\n if (\n attribute.key.isExpression() ||\n attrKeyValue === null ||\n attrValueValue === null\n ) {\n continue;\n }\n\n const attrName = attrKeyValue.toLowerCase();\n\n // Check if this attribute is in the obsolete list\n if (OBSOLETE_ATTRS[attrName]) {\n const obsoleteConfigs = OBSOLETE_ATTRS[attrName];\n\n // Check if this attribute is obsolete for this specific element\n for (const config of obsoleteConfigs) {\n // Handle wildcard (*) for all elements\n if (\n config.elements.includes(\"*\") ||\n config.elements.includes(elementName)\n ) {\n result.push({\n node: attribute.key.node(),\n messageId: NO_OBSOLETE_ATTRS_MESSAGE_IDS.obsolete,\n data: {\n attr: attrName,\n element: elementName,\n suggestion: config.suggestion,\n },\n });\n break;\n }\n }\n }\n }\n\n return result;\n },\n };\n}\n"],"mappings":"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","names":["element"]}
|
package/package.json
ADDED
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@html-eslint/core",
|
|
3
|
+
"version": "0.56.0",
|
|
4
|
+
"description": "Core HTML validation logic for html-eslint",
|
|
5
|
+
"author": "yeonjuan",
|
|
6
|
+
"homepage": "https://github.com/yeonjuan/html-eslint#readme",
|
|
7
|
+
"license": "MIT",
|
|
8
|
+
"main": "./dist/index.js",
|
|
9
|
+
"module": "./dist/index.mjs",
|
|
10
|
+
"types": "./dist/index.d.ts",
|
|
11
|
+
"exports": {
|
|
12
|
+
".": {
|
|
13
|
+
"import": {
|
|
14
|
+
"types": "./dist/index.d.mts",
|
|
15
|
+
"default": "./dist/index.mjs"
|
|
16
|
+
},
|
|
17
|
+
"require": {
|
|
18
|
+
"types": "./dist/index.d.ts",
|
|
19
|
+
"default": "./dist/index.js"
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
},
|
|
23
|
+
"files": [
|
|
24
|
+
"dist"
|
|
25
|
+
],
|
|
26
|
+
"publishConfig": {
|
|
27
|
+
"access": "public"
|
|
28
|
+
},
|
|
29
|
+
"repository": {
|
|
30
|
+
"type": "git",
|
|
31
|
+
"url": "git+https://github.com/yeonjuan/html-eslint.git"
|
|
32
|
+
},
|
|
33
|
+
"scripts": {
|
|
34
|
+
"ts": "tsc --noEmit",
|
|
35
|
+
"lint": "eslint .",
|
|
36
|
+
"build": "tsup"
|
|
37
|
+
},
|
|
38
|
+
"bugs": {
|
|
39
|
+
"url": "https://github.com/yeonjuan/html-eslint/issues"
|
|
40
|
+
},
|
|
41
|
+
"keywords": [
|
|
42
|
+
"html",
|
|
43
|
+
"eslint",
|
|
44
|
+
"validation",
|
|
45
|
+
"core",
|
|
46
|
+
"lint"
|
|
47
|
+
],
|
|
48
|
+
"dependencies": {
|
|
49
|
+
"@html-eslint/types": "^0.56.0",
|
|
50
|
+
"eslint": "^9.39.1",
|
|
51
|
+
"html-standard": "^0.0.13"
|
|
52
|
+
},
|
|
53
|
+
"devDependencies": {
|
|
54
|
+
"tsup": "^8.5.1",
|
|
55
|
+
"typescript": "^5.8.3"
|
|
56
|
+
},
|
|
57
|
+
"engines": {
|
|
58
|
+
"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
|
|
59
|
+
},
|
|
60
|
+
"gitHead": "cece9315a6d09aff6e1af21091309df7152cb964"
|
|
61
|
+
}
|