@askviraj/linter 1.1.2 → 1.1.4
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/node_modules/{synckit → @astrojs/compiler-binding}/LICENSE +1 -1
- package/node_modules/@astrojs/compiler-binding/browser.js +1 -0
- package/node_modules/@astrojs/compiler-binding/index.d.ts +337 -0
- package/node_modules/@astrojs/compiler-binding/index.js +599 -0
- package/node_modules/@astrojs/compiler-binding/package.json +83 -0
- package/node_modules/@astrojs/compiler-binding/webcontainer-fallback.cjs +23 -0
- package/node_modules/@astrojs/compiler-binding-linux-x64-gnu/README.md +3 -0
- package/node_modules/@astrojs/compiler-binding-linux-x64-gnu/astro.linux-x64-gnu.node +0 -0
- package/node_modules/@astrojs/compiler-binding-linux-x64-gnu/package.json +40 -0
- package/node_modules/{parse5 → @astrojs/compiler-rs}/LICENSE +7 -5
- package/node_modules/@astrojs/compiler-rs/README.md +62 -0
- package/node_modules/@astrojs/compiler-rs/async.d.ts +1 -0
- package/node_modules/@astrojs/compiler-rs/dist/async.d.mts +9 -0
- package/node_modules/@astrojs/compiler-rs/dist/async.mjs +1 -0
- package/node_modules/@astrojs/compiler-rs/dist/index.d.mts +9 -0
- package/node_modules/@astrojs/compiler-rs/dist/index.mjs +1 -0
- package/node_modules/@astrojs/compiler-rs/dist/shared.d.mts +45 -0
- package/node_modules/@astrojs/compiler-rs/dist/shared.mjs +1 -0
- package/node_modules/@astrojs/compiler-rs/dist/types.d.mts +94 -0
- package/node_modules/@astrojs/compiler-rs/dist/types.mjs +1 -0
- package/node_modules/@astrojs/compiler-rs/dist/utils.d.mts +4 -0
- package/node_modules/@astrojs/compiler-rs/dist/utils.mjs +1 -0
- package/node_modules/@astrojs/compiler-rs/package.json +55 -0
- package/node_modules/@astrojs/compiler-rs/types.d.ts +1 -0
- package/node_modules/@eslint/config-helpers/README.md +2 -2
- package/node_modules/@eslint/config-helpers/dist/cjs/index.cjs +27 -26
- package/node_modules/@eslint/config-helpers/dist/cjs/index.d.cts +13 -12
- package/node_modules/@eslint/config-helpers/dist/cjs/types.cts +4 -2
- package/node_modules/@eslint/config-helpers/dist/esm/index.d.ts +13 -12
- package/node_modules/@eslint/config-helpers/dist/esm/index.js +27 -26
- package/node_modules/@eslint/config-helpers/dist/esm/types.d.ts +2 -0
- package/node_modules/@eslint/config-helpers/dist/esm/types.ts +4 -2
- package/node_modules/@eslint/config-helpers/package.json +1 -1
- package/node_modules/@eslint/css/README.md +2 -2
- package/node_modules/@eslint/css/dist/build/rules.d.ts +75 -21
- package/node_modules/@eslint/css/dist/build/rules.js +15 -15
- package/node_modules/@eslint/css/dist/data/baseline-data.js +256 -32
- package/node_modules/@eslint/css/dist/index.js +1 -1
- package/node_modules/@eslint/css/dist/rules/font-family-fallbacks.d.ts +15 -15
- package/node_modules/@eslint/css/dist/rules/font-family-fallbacks.js +2 -5
- package/node_modules/@eslint/css/dist/rules/no-duplicate-imports.d.ts +18 -18
- package/node_modules/@eslint/css/dist/rules/no-duplicate-imports.js +9 -12
- package/node_modules/@eslint/css/dist/rules/no-duplicate-keyframe-selectors.d.ts +14 -14
- package/node_modules/@eslint/css/dist/rules/no-duplicate-keyframe-selectors.js +2 -3
- package/node_modules/@eslint/css/dist/rules/no-empty-blocks.d.ts +14 -14
- package/node_modules/@eslint/css/dist/rules/no-empty-blocks.js +2 -3
- package/node_modules/@eslint/css/dist/rules/no-important.d.ts +16 -16
- package/node_modules/@eslint/css/dist/rules/no-important.js +2 -3
- package/node_modules/@eslint/css/dist/rules/no-invalid-at-rule-placement.d.ts +16 -16
- package/node_modules/@eslint/css/dist/rules/no-invalid-at-rule-placement.js +2 -3
- package/node_modules/@eslint/css/dist/rules/no-invalid-at-rules.d.ts +21 -21
- package/node_modules/@eslint/css/dist/rules/no-invalid-at-rules.js +2 -3
- package/node_modules/@eslint/css/dist/rules/no-invalid-named-grid-areas.d.ts +16 -16
- package/node_modules/@eslint/css/dist/rules/no-invalid-named-grid-areas.js +2 -3
- package/node_modules/@eslint/css/dist/rules/no-invalid-properties.d.ts +18 -18
- package/node_modules/@eslint/css/dist/rules/no-invalid-properties.js +2 -3
- package/node_modules/@eslint/css/dist/rules/no-unmatchable-selectors.d.ts +14 -14
- package/node_modules/@eslint/css/dist/rules/no-unmatchable-selectors.js +2 -3
- package/node_modules/@eslint/css/dist/rules/prefer-logical-properties.d.ts +22 -19
- package/node_modules/@eslint/css/dist/rules/prefer-logical-properties.js +66 -23
- package/node_modules/@eslint/css/dist/rules/relative-font-units.d.ts +16 -16
- package/node_modules/@eslint/css/dist/rules/relative-font-units.js +13 -7
- package/node_modules/@eslint/css/dist/rules/selector-complexity.d.ts +17 -17
- package/node_modules/@eslint/css/dist/rules/selector-complexity.js +2 -3
- package/node_modules/@eslint/css/dist/rules/use-baseline.d.ts +22 -22
- package/node_modules/@eslint/css/dist/rules/use-baseline.js +2 -3
- package/node_modules/@eslint/css/dist/rules/use-layers.d.ts +18 -18
- package/node_modules/@eslint/css/dist/rules/use-layers.js +3 -4
- package/node_modules/@eslint/css/package.json +7 -12
- package/node_modules/@eslint/css-tree/README.md +2 -2
- package/node_modules/@eslint/css-tree/dist/csstree.esm.js +1 -1
- package/node_modules/@eslint/css-tree/dist/csstree.js +1 -1
- package/node_modules/@eslint/css-tree/dist/data.cjs +4 -1
- package/node_modules/@eslint/css-tree/dist/data.js +4 -1
- package/node_modules/@eslint/css-tree/dist/version.cjs +1 -1
- package/node_modules/@eslint/css-tree/dist/version.js +1 -1
- package/node_modules/@eslint/css-tree/package.json +3 -3
- package/node_modules/@eslint/json/README.md +2 -2
- package/node_modules/@eslint/json/dist/index.js +1 -1
- package/node_modules/@eslint/json/package.json +4 -9
- package/node_modules/@eslint/markdown/README.md +3 -3
- package/node_modules/@eslint/markdown/dist/build/rules.d.ts +105 -27
- package/node_modules/@eslint/markdown/dist/build/rules.js +21 -21
- package/node_modules/@eslint/markdown/dist/index.d.ts +2 -2
- package/node_modules/@eslint/markdown/dist/index.js +4 -4
- package/node_modules/@eslint/markdown/dist/processor.d.ts +4 -9
- package/node_modules/@eslint/markdown/dist/processor.js +12 -15
- package/node_modules/@eslint/markdown/dist/rules/fenced-code-language.d.ts +17 -17
- package/node_modules/@eslint/markdown/dist/rules/fenced-code-language.js +2 -3
- package/node_modules/@eslint/markdown/dist/rules/fenced-code-meta.d.ts +17 -17
- package/node_modules/@eslint/markdown/dist/rules/fenced-code-meta.js +2 -3
- package/node_modules/@eslint/markdown/dist/rules/heading-increment.d.ts +16 -16
- package/node_modules/@eslint/markdown/dist/rules/heading-increment.js +2 -3
- package/node_modules/@eslint/markdown/dist/rules/no-bare-urls.d.ts +14 -14
- package/node_modules/@eslint/markdown/dist/rules/no-bare-urls.js +2 -3
- package/node_modules/@eslint/markdown/dist/rules/no-duplicate-definitions.d.ts +17 -17
- package/node_modules/@eslint/markdown/dist/rules/no-duplicate-definitions.js +2 -3
- package/node_modules/@eslint/markdown/dist/rules/no-duplicate-headings.d.ts +15 -15
- package/node_modules/@eslint/markdown/dist/rules/no-duplicate-headings.js +2 -3
- package/node_modules/@eslint/markdown/dist/rules/no-empty-definitions.d.ts +17 -17
- package/node_modules/@eslint/markdown/dist/rules/no-empty-definitions.js +2 -3
- package/node_modules/@eslint/markdown/dist/rules/no-empty-images.d.ts +14 -14
- package/node_modules/@eslint/markdown/dist/rules/no-empty-images.js +2 -3
- package/node_modules/@eslint/markdown/dist/rules/no-empty-links.d.ts +14 -14
- package/node_modules/@eslint/markdown/dist/rules/no-empty-links.js +2 -3
- package/node_modules/@eslint/markdown/dist/rules/no-html.d.ts +15 -15
- package/node_modules/@eslint/markdown/dist/rules/no-html.js +2 -3
- package/node_modules/@eslint/markdown/dist/rules/no-invalid-label-refs.d.ts +14 -14
- package/node_modules/@eslint/markdown/dist/rules/no-invalid-label-refs.js +2 -3
- package/node_modules/@eslint/markdown/dist/rules/no-missing-atx-heading-space.d.ts +17 -17
- package/node_modules/@eslint/markdown/dist/rules/no-missing-atx-heading-space.js +2 -3
- package/node_modules/@eslint/markdown/dist/rules/no-missing-label-refs.d.ts +16 -16
- package/node_modules/@eslint/markdown/dist/rules/no-missing-label-refs.js +2 -3
- package/node_modules/@eslint/markdown/dist/rules/no-missing-link-fragments.d.ts +16 -16
- package/node_modules/@eslint/markdown/dist/rules/no-missing-link-fragments.js +2 -3
- package/node_modules/@eslint/markdown/dist/rules/no-multiple-h1.d.ts +16 -16
- package/node_modules/@eslint/markdown/dist/rules/no-multiple-h1.js +2 -3
- package/node_modules/@eslint/markdown/dist/rules/no-reference-like-urls.d.ts +15 -15
- package/node_modules/@eslint/markdown/dist/rules/no-reference-like-urls.js +2 -3
- package/node_modules/@eslint/markdown/dist/rules/no-reversed-media-syntax.d.ts +15 -15
- package/node_modules/@eslint/markdown/dist/rules/no-reversed-media-syntax.js +2 -3
- package/node_modules/@eslint/markdown/dist/rules/no-space-in-emphasis.d.ts +17 -17
- package/node_modules/@eslint/markdown/dist/rules/no-space-in-emphasis.js +2 -3
- package/node_modules/@eslint/markdown/dist/rules/no-unused-definitions.d.ts +17 -17
- package/node_modules/@eslint/markdown/dist/rules/no-unused-definitions.js +2 -3
- package/node_modules/@eslint/markdown/dist/rules/require-alt-text.d.ts +14 -14
- package/node_modules/@eslint/markdown/dist/rules/require-alt-text.js +2 -3
- package/node_modules/@eslint/markdown/dist/rules/table-column-count.d.ts +17 -17
- package/node_modules/@eslint/markdown/dist/rules/table-column-count.js +2 -3
- package/node_modules/@eslint/markdown/package.json +5 -10
- package/node_modules/@eslint-community/eslint-utils/index.js +1 -1
- package/node_modules/@eslint-community/eslint-utils/index.js.map +1 -1
- package/node_modules/@eslint-community/eslint-utils/index.mjs +1 -1
- package/node_modules/@eslint-community/eslint-utils/index.mjs.map +1 -1
- package/node_modules/@eslint-community/eslint-utils/package.json +12 -7
- package/node_modules/@html-eslint/core/dist/index.js +1 -0
- package/node_modules/@html-eslint/core/dist/index.js.map +1 -1
- package/node_modules/@html-eslint/core/dist/index.mjs +1 -0
- package/node_modules/@html-eslint/core/dist/index.mjs.map +1 -1
- package/node_modules/@html-eslint/core/package.json +3 -3
- package/node_modules/@html-eslint/eslint-plugin/lib/rules/require-content.js +20 -1
- package/node_modules/@html-eslint/eslint-plugin/lib/rules/require-input-label.js +110 -8
- package/node_modules/@html-eslint/eslint-plugin/lib/rules/utils/node.js +13 -0
- package/node_modules/@html-eslint/eslint-plugin/package.json +7 -7
- package/node_modules/@html-eslint/eslint-plugin/types/rules/require-content.d.ts.map +1 -1
- package/node_modules/@html-eslint/eslint-plugin/types/rules/require-input-label.d.ts.map +1 -1
- package/node_modules/@html-eslint/eslint-plugin/types/rules/utils/node.d.ts +7 -0
- package/node_modules/@html-eslint/eslint-plugin/types/rules/utils/node.d.ts.map +1 -1
- package/node_modules/@html-eslint/parser/lib/parser.js +0 -1
- package/node_modules/@html-eslint/parser/package.json +4 -4
- package/node_modules/@html-eslint/parser/types/parser.d.ts.map +1 -1
- package/node_modules/@html-eslint/template-parser/package.json +3 -3
- package/node_modules/@html-eslint/template-syntax-parser/package.json +3 -3
- package/node_modules/@html-eslint/types/package.json +2 -2
- package/node_modules/@rviscomi/capo.js/README.md +4 -4
- package/node_modules/@rviscomi/capo.js/dist/adapters/adapter.cjs +7 -2
- package/node_modules/@rviscomi/capo.js/dist/adapters/browser.cjs +31 -3
- package/node_modules/@rviscomi/capo.js/dist/adapters/index.cjs +36 -4
- package/node_modules/@rviscomi/capo.js/dist/adapters/test-suite.cjs +6 -1
- package/node_modules/@rviscomi/capo.js/dist/analyzer.cjs +53 -24
- package/node_modules/@rviscomi/capo.js/dist/chrome/README.md +53 -0
- package/node_modules/@rviscomi/capo.js/{crx → dist/chrome}/capo.html +1 -1
- package/node_modules/@rviscomi/capo.js/dist/chrome/capo.js +3 -0
- package/node_modules/@rviscomi/capo.js/{crx → dist/chrome}/chrome.js +56 -18
- package/node_modules/@rviscomi/capo.js/dist/chrome/manifest.json +26 -0
- package/node_modules/@rviscomi/capo.js/dist/chrome/options/options.js +1 -0
- package/node_modules/@rviscomi/capo.js/dist/chrome.zip +0 -0
- package/node_modules/@rviscomi/capo.js/dist/firefox/README.md +53 -0
- package/node_modules/@rviscomi/capo.js/dist/firefox/background.js +7 -0
- package/node_modules/@rviscomi/capo.js/dist/firefox/capo.css +59 -0
- package/node_modules/@rviscomi/capo.js/dist/firefox/capo.html +12 -0
- package/node_modules/@rviscomi/capo.js/dist/firefox/capo.js +3 -0
- package/node_modules/@rviscomi/capo.js/dist/firefox/chrome.js +120 -0
- package/node_modules/@rviscomi/capo.js/dist/firefox/images/icon128.png +0 -0
- package/node_modules/@rviscomi/capo.js/dist/firefox/manifest.json +39 -0
- package/node_modules/@rviscomi/capo.js/dist/firefox/options/options.css +81 -0
- package/node_modules/@rviscomi/capo.js/dist/firefox/options/options.html +43 -0
- package/node_modules/@rviscomi/capo.js/dist/firefox/options/options.js +1 -0
- package/node_modules/@rviscomi/capo.js/dist/firefox/styles/open-props.css +291 -0
- package/node_modules/@rviscomi/capo.js/dist/firefox.zip +0 -0
- package/node_modules/@rviscomi/capo.js/dist/index.cjs +93 -33
- package/node_modules/@rviscomi/capo.js/dist/lib/colors.cjs +1 -0
- package/node_modules/@rviscomi/capo.js/dist/lib/io.cjs +137 -28
- package/node_modules/@rviscomi/capo.js/dist/lib/options.cjs +61 -0
- package/node_modules/@rviscomi/capo.js/dist/lib/rules.cjs +28 -13
- package/node_modules/@rviscomi/capo.js/dist/lib/validation.cjs +31 -16
- package/node_modules/@rviscomi/capo.js/dist/source.zip +0 -0
- package/node_modules/@rviscomi/capo.js/dist/types/adapters/adapter.d.ts +105 -0
- package/node_modules/@rviscomi/capo.js/dist/types/adapters/browser.d.ts +107 -0
- package/node_modules/@rviscomi/capo.js/dist/types/adapters/index.d.ts +7 -0
- package/node_modules/@rviscomi/capo.js/dist/types/adapters/test-suite.d.ts +52 -0
- package/node_modules/@rviscomi/capo.js/dist/types/analyzer.d.ts +195 -0
- package/node_modules/@rviscomi/capo.js/dist/types/index.d.ts +29 -0
- package/node_modules/@rviscomi/capo.js/dist/types/lib/colors.d.ts +20 -0
- package/node_modules/@rviscomi/capo.js/dist/types/lib/io.d.ts +166 -0
- package/node_modules/@rviscomi/capo.js/dist/types/lib/options.d.ts +114 -0
- package/node_modules/@rviscomi/capo.js/dist/types/lib/rules.d.ts +111 -0
- package/node_modules/@rviscomi/capo.js/dist/types/lib/validation.d.ts +61 -0
- package/node_modules/@rviscomi/capo.js/dist/types/src/adapters/adapter.d.ts +105 -0
- package/node_modules/@rviscomi/capo.js/dist/types/src/adapters/browser.d.ts +107 -0
- package/node_modules/@rviscomi/capo.js/dist/types/src/adapters/index.d.ts +7 -0
- package/node_modules/@rviscomi/capo.js/dist/types/src/adapters/test-suite.d.ts +52 -0
- package/node_modules/@rviscomi/capo.js/dist/types/src/analyzer.d.ts +195 -0
- package/node_modules/@rviscomi/capo.js/dist/types/src/index.d.ts +13 -0
- package/node_modules/@rviscomi/capo.js/dist/types/src/lib/colors.d.ts +20 -0
- package/node_modules/@rviscomi/capo.js/dist/types/src/lib/io.d.ts +166 -0
- package/node_modules/@rviscomi/capo.js/dist/types/src/lib/options.d.ts +114 -0
- package/node_modules/@rviscomi/capo.js/dist/types/src/lib/rules.d.ts +111 -0
- package/node_modules/@rviscomi/capo.js/dist/types/src/lib/validation.d.ts +61 -0
- package/node_modules/@rviscomi/capo.js/package.json +34 -16
- package/node_modules/@rviscomi/capo.js/src/adapters/adapter.js +16 -5
- package/node_modules/@rviscomi/capo.js/src/adapters/browser.js +30 -4
- package/node_modules/@rviscomi/capo.js/src/adapters/test-suite.js +11 -10
- package/node_modules/@rviscomi/capo.js/src/analyzer.js +47 -25
- package/node_modules/@rviscomi/capo.js/src/extension/README.md +53 -0
- package/node_modules/@rviscomi/capo.js/src/extension/background.js +7 -0
- package/node_modules/@rviscomi/capo.js/src/extension/capo.css +59 -0
- package/node_modules/@rviscomi/capo.js/src/extension/capo.html +12 -0
- package/node_modules/@rviscomi/capo.js/src/extension/capo.js +93 -0
- package/node_modules/@rviscomi/capo.js/src/extension/chrome.js +120 -0
- package/node_modules/@rviscomi/capo.js/src/extension/images/icon128.png +0 -0
- package/node_modules/@rviscomi/capo.js/src/extension/images/icon256.png +0 -0
- package/node_modules/@rviscomi/capo.js/{crx → src/extension}/manifest.json +1 -1
- package/node_modules/@rviscomi/capo.js/src/extension/options/options.css +81 -0
- package/node_modules/@rviscomi/capo.js/src/extension/options/options.html +43 -0
- package/node_modules/@rviscomi/capo.js/src/extension/options.js +87 -0
- package/node_modules/@rviscomi/capo.js/src/extension/styles/open-props.css +291 -0
- package/node_modules/@rviscomi/capo.js/src/index.js +10 -0
- package/node_modules/@rviscomi/capo.js/src/lib/colors.js +14 -0
- package/node_modules/@rviscomi/capo.js/src/lib/io.js +171 -32
- package/node_modules/@rviscomi/capo.js/src/lib/options.js +82 -1
- package/node_modules/@rviscomi/capo.js/src/lib/rules.js +120 -43
- package/node_modules/@rviscomi/capo.js/src/lib/validation.js +211 -86
- package/node_modules/@rviscomi/capo.js/src/web/capo.js +5 -8
- package/node_modules/@types/hast/README.md +2 -2
- package/node_modules/@types/hast/index.d.ts +642 -0
- package/node_modules/@types/hast/package.json +9 -3
- package/node_modules/@typescript-eslint/eslint-plugin/dist/configs/eslintrc/all.d.ts +0 -4
- package/node_modules/@typescript-eslint/eslint-plugin/dist/configs/eslintrc/all.js +0 -4
- package/node_modules/@typescript-eslint/eslint-plugin/dist/configs/flat/all.js +0 -4
- package/node_modules/@typescript-eslint/eslint-plugin/dist/index.d.ts +0 -4
- package/node_modules/@typescript-eslint/eslint-plugin/dist/index.js +47 -0
- package/node_modules/@typescript-eslint/eslint-plugin/dist/raw-plugin.d.ts +0 -4
- package/node_modules/@typescript-eslint/eslint-plugin/dist/rules/ban-ts-comment.js +4 -4
- package/node_modules/@typescript-eslint/eslint-plugin/dist/rules/method-signature-style.d.ts +1 -1
- package/node_modules/@typescript-eslint/eslint-plugin/dist/rules/method-signature-style.js +23 -10
- package/node_modules/@typescript-eslint/eslint-plugin/dist/rules/no-base-to-string.js +1 -1
- package/node_modules/@typescript-eslint/eslint-plugin/dist/rules/no-loop-func.js +16 -2
- package/node_modules/@typescript-eslint/eslint-plugin/dist/rules/no-misused-promises.js +41 -3
- package/node_modules/@typescript-eslint/eslint-plugin/dist/rules/no-restricted-imports.js +12 -0
- package/node_modules/@typescript-eslint/eslint-plugin/dist/rules/no-shadow.d.ts +1 -1
- package/node_modules/@typescript-eslint/eslint-plugin/dist/rules/no-shadow.js +5 -4
- package/node_modules/@typescript-eslint/eslint-plugin/dist/rules/no-this-alias.js +1 -1
- package/node_modules/@typescript-eslint/eslint-plugin/dist/rules/no-unnecessary-parameter-property-assignment.js +1 -1
- package/node_modules/@typescript-eslint/eslint-plugin/dist/rules/no-unnecessary-template-expression.js +2 -2
- package/node_modules/@typescript-eslint/eslint-plugin/dist/rules/no-unnecessary-type-assertion.js +5 -1
- package/node_modules/@typescript-eslint/eslint-plugin/dist/rules/no-unused-vars.js +1 -1
- package/node_modules/@typescript-eslint/eslint-plugin/dist/rules/prefer-string-starts-ends-with.js +2 -1
- package/node_modules/@typescript-eslint/eslint-plugin/dist/rules/require-array-sort-compare.js +1 -1
- package/node_modules/@typescript-eslint/eslint-plugin/dist/rules/unbound-method.js +36 -9
- package/node_modules/@typescript-eslint/eslint-plugin/node_modules/ignore/index.js +11 -2
- package/node_modules/@typescript-eslint/eslint-plugin/node_modules/ignore/legacy.js +11 -2
- package/node_modules/@typescript-eslint/eslint-plugin/node_modules/ignore/package.json +1 -1
- package/node_modules/@typescript-eslint/eslint-plugin/package.json +22 -11
- package/node_modules/@typescript-eslint/parser/dist/index.js +47 -0
- package/node_modules/@typescript-eslint/parser/dist/parser.js +11 -6
- package/node_modules/@typescript-eslint/parser/package.json +9 -7
- package/node_modules/@typescript-eslint/project-service/package.json +7 -5
- package/node_modules/@typescript-eslint/scope-manager/dist/scope/FunctionScope.js +2 -2
- package/node_modules/@typescript-eslint/scope-manager/dist/scope/index.d.ts +1 -0
- package/node_modules/@typescript-eslint/scope-manager/dist/scope/index.js +1 -0
- package/node_modules/@typescript-eslint/scope-manager/package.json +8 -6
- package/node_modules/@typescript-eslint/tsconfig-utils/package.json +5 -3
- package/node_modules/@typescript-eslint/type-utils/package.json +9 -7
- package/node_modules/@typescript-eslint/types/dist/generated/ast-spec.d.ts +10 -0
- package/node_modules/@typescript-eslint/types/dist/parser-options.d.ts +13 -0
- package/node_modules/@typescript-eslint/types/package.json +5 -3
- package/node_modules/@typescript-eslint/typescript-estree/dist/check-syntax-errors.js +22 -6
- package/node_modules/@typescript-eslint/typescript-estree/dist/convert.js +5 -4
- package/node_modules/@typescript-eslint/typescript-estree/dist/getImportClausePhaseModifier.d.ts +4 -0
- package/node_modules/@typescript-eslint/typescript-estree/dist/getImportClausePhaseModifier.js +56 -0
- package/node_modules/@typescript-eslint/typescript-estree/dist/parseSettings/createParseSettings.js +1 -1
- package/node_modules/@typescript-eslint/typescript-estree/dist/parseSettings/warnAboutTSVersion.d.ts +1 -1
- package/node_modules/@typescript-eslint/typescript-estree/dist/parseSettings/warnAboutTSVersion.js +27 -18
- package/node_modules/@typescript-eslint/typescript-estree/dist/parser-options.d.ts +8 -0
- package/node_modules/@typescript-eslint/typescript-estree/package.json +9 -7
- package/node_modules/@typescript-eslint/utils/dist/ts-eslint/Rule.d.ts +1 -1
- package/node_modules/@typescript-eslint/utils/package.json +8 -6
- package/node_modules/@typescript-eslint/visitor-keys/package.json +6 -4
- package/node_modules/acorn/CHANGELOG.md +12 -0
- package/node_modules/acorn/README.md +5 -0
- package/node_modules/acorn/dist/acorn.d.mts +8 -0
- package/node_modules/acorn/dist/acorn.d.ts +8 -0
- package/node_modules/acorn/dist/acorn.js +16 -7
- package/node_modules/acorn/dist/acorn.mjs +16 -7
- package/node_modules/acorn/package.json +1 -1
- package/node_modules/astro-eslint-parser/lib/index.d.mts +113 -18
- package/node_modules/astro-eslint-parser/lib/index.mjs +871 -1172
- package/node_modules/astro-eslint-parser/package.json +7 -9
- package/node_modules/brace-expansion/README.md +11 -0
- package/node_modules/brace-expansion/dist/commonjs/index.d.ts +2 -0
- package/node_modules/brace-expansion/dist/commonjs/index.d.ts.map +1 -1
- package/node_modules/brace-expansion/dist/commonjs/index.js +162 -84
- package/node_modules/brace-expansion/dist/commonjs/index.js.map +1 -1
- package/node_modules/brace-expansion/dist/esm/index.d.ts +2 -0
- package/node_modules/brace-expansion/dist/esm/index.d.ts.map +1 -1
- package/node_modules/brace-expansion/dist/esm/index.js +161 -83
- package/node_modules/brace-expansion/dist/esm/index.js.map +1 -1
- package/node_modules/brace-expansion/package.json +2 -2
- package/node_modules/eslint/README.md +2 -2
- package/node_modules/eslint/lib/cli-engine/formatters/html.js +1 -1
- package/node_modules/eslint/lib/languages/js/index.js +1 -1
- package/node_modules/eslint/lib/linter/code-path-analysis/debug-helpers.js +1 -1
- package/node_modules/eslint/lib/linter/vfile.js +1 -1
- package/node_modules/eslint/lib/rules/class-methods-use-this.js +6 -5
- package/node_modules/eslint/lib/rules/complexity.js +1 -1
- package/node_modules/eslint/lib/rules/eqeqeq.js +26 -6
- package/node_modules/eslint/lib/rules/func-name-matching.js +3 -3
- package/node_modules/eslint/lib/rules/generator-star-spacing.js +4 -6
- package/node_modules/eslint/lib/rules/indent.js +4 -6
- package/node_modules/eslint/lib/rules/key-spacing.js +5 -7
- package/node_modules/eslint/lib/rules/max-len.js +1 -1
- package/node_modules/eslint/lib/rules/max-nested-callbacks.js +11 -1
- package/node_modules/eslint/lib/rules/no-compare-neg-zero.js +91 -8
- package/node_modules/eslint/lib/rules/no-control-regex.js +3 -0
- package/node_modules/eslint/lib/rules/no-implicit-coercion.js +22 -8
- package/node_modules/eslint/lib/rules/no-invalid-regexp.js +3 -1
- package/node_modules/eslint/lib/rules/no-mixed-spaces-and-tabs.js +5 -7
- package/node_modules/eslint/lib/rules/no-promise-executor-return.js +5 -7
- package/node_modules/eslint/lib/rules/no-script-url.js +4 -6
- package/node_modules/eslint/lib/rules/no-shadow.js +14 -20
- package/node_modules/eslint/lib/rules/no-unreachable-loop.js +8 -4
- package/node_modules/eslint/lib/rules/prefer-numeric-literals.js +14 -6
- package/node_modules/eslint/lib/rules/prefer-object-has-own.js +4 -6
- package/node_modules/eslint/lib/rules/prefer-object-spread.js +9 -1
- package/node_modules/eslint/lib/rules/prefer-template.js +1 -1
- package/node_modules/eslint/lib/rules/preserve-caught-error.js +268 -116
- package/node_modules/eslint/lib/rules/quotes.js +1 -1
- package/node_modules/eslint/lib/rules/radix.js +58 -57
- package/node_modules/eslint/lib/rules/use-isnan.js +20 -12
- package/node_modules/eslint/lib/rules/utils/ast-utils.js +1 -1
- package/node_modules/eslint/lib/shared/serialization.js +1 -1
- package/node_modules/eslint/lib/shared/translate-cli-options.js +3 -3
- package/node_modules/eslint/lib/types/config-api.d.ts +8 -1
- package/node_modules/eslint/lib/types/index.d.ts +3 -6
- package/node_modules/eslint/lib/types/rules.d.ts +17 -9
- package/node_modules/eslint/package.json +7 -7
- package/node_modules/eslint-plugin-astro/README.md +10 -2
- package/node_modules/eslint-plugin-astro/lib/index.d.mts +0 -1
- package/node_modules/eslint-plugin-astro/lib/index.mjs +76 -637
- package/node_modules/eslint-plugin-astro/package.json +11 -11
- package/node_modules/eslint-plugin-toml/README.md +2 -0
- package/node_modules/eslint-plugin-toml/lib/index.d.mts +6 -5
- package/node_modules/eslint-plugin-toml/lib/index.mjs +32 -3
- package/node_modules/eslint-plugin-toml/package.json +7 -7
- package/node_modules/eslint-plugin-yml/README.md +1 -0
- package/node_modules/eslint-plugin-yml/lib/index.mjs +125 -21
- package/node_modules/eslint-plugin-yml/package.json +7 -7
- package/node_modules/flatted/golang/pkg/flatted/flatted.go +16 -14
- package/node_modules/flatted/package.json +10 -5
- package/node_modules/flatted/types/index.d.ts +1 -1
- package/node_modules/globals/globals.json +105 -33
- package/node_modules/globals/index.d.ts +105 -33
- package/node_modules/globals/package.json +2 -2
- package/node_modules/mdn-data/css/properties.json +64 -16
- package/node_modules/mdn-data/css/properties.schema.json +1 -7
- package/node_modules/mdn-data/css/syntaxes.json +1 -1
- package/node_modules/mdn-data/l10n/css.json +3 -62
- package/node_modules/mdn-data/package.json +1 -1
- package/node_modules/minimatch/package.json +9 -9
- package/node_modules/nanoid/non-secure/index.cjs +2 -2
- package/node_modules/nanoid/non-secure/index.js +2 -2
- package/node_modules/nanoid/package.json +1 -1
- package/node_modules/picomatch/README.md +15 -21
- package/node_modules/picomatch/lib/parse.js +39 -9
- package/node_modules/picomatch/lib/picomatch.js +14 -2
- package/node_modules/picomatch/package.json +3 -2
- package/node_modules/postcss/README.md +1 -2
- package/node_modules/postcss/lib/container.js +81 -34
- package/node_modules/postcss/lib/fromJSON.js +65 -26
- package/node_modules/postcss/lib/input.js +7 -1
- package/node_modules/postcss/lib/lazy-result.js +77 -14
- package/node_modules/postcss/lib/list.js +1 -0
- package/node_modules/postcss/lib/node.d.ts +2 -2
- package/node_modules/postcss/lib/node.js +90 -52
- package/node_modules/postcss/lib/postcss.d.ts +4 -1
- package/node_modules/postcss/lib/previous-map.js +6 -3
- package/node_modules/postcss/lib/processor.js +1 -1
- package/node_modules/postcss/lib/root.js +16 -1
- package/node_modules/postcss/lib/stringifier.js +112 -25
- package/node_modules/postcss/lib/warning.js +10 -0
- package/node_modules/postcss/package.json +2 -2
- package/node_modules/typescript-eslint/dist/index.js +47 -0
- package/node_modules/typescript-eslint/package.json +14 -6
- package/node_modules/yaml-eslint-parser/lib/chunk-CfYAbeIz.mjs +13 -0
- package/node_modules/yaml-eslint-parser/lib/index.d.mts +2 -2
- package/node_modules/yaml-eslint-parser/lib/index.mjs +164 -157
- package/node_modules/yaml-eslint-parser/package.json +17 -18
- package/package.json +23 -23
- package/node_modules/@astrojs/compiler/LICENSE +0 -53
- package/node_modules/@astrojs/compiler/README.md +0 -72
- package/node_modules/@astrojs/compiler/dist/astro.wasm +0 -0
- package/node_modules/@astrojs/compiler/dist/browser/index.cjs +0 -2
- package/node_modules/@astrojs/compiler/dist/browser/index.d.ts +0 -11
- package/node_modules/@astrojs/compiler/dist/browser/index.js +0 -1
- package/node_modules/@astrojs/compiler/dist/browser/utils.cjs +0 -3
- package/node_modules/@astrojs/compiler/dist/browser/utils.d.ts +0 -29
- package/node_modules/@astrojs/compiler/dist/browser/utils.js +0 -3
- package/node_modules/@astrojs/compiler/dist/browser/wasm_exec.cjs +0 -2
- package/node_modules/@astrojs/compiler/dist/browser/wasm_exec.d.ts +0 -37
- package/node_modules/@astrojs/compiler/dist/browser/wasm_exec.js +0 -1
- package/node_modules/@astrojs/compiler/dist/chunk-QR6QDSEV.js +0 -2
- package/node_modules/@astrojs/compiler/dist/chunk-W5DTLHV4.js +0 -1
- package/node_modules/@astrojs/compiler/dist/node/index.cjs +0 -1
- package/node_modules/@astrojs/compiler/dist/node/index.d.ts +0 -12
- package/node_modules/@astrojs/compiler/dist/node/index.js +0 -1
- package/node_modules/@astrojs/compiler/dist/node/sync.cjs +0 -1
- package/node_modules/@astrojs/compiler/dist/node/sync.d.ts +0 -16
- package/node_modules/@astrojs/compiler/dist/node/sync.js +0 -1
- package/node_modules/@astrojs/compiler/dist/node/utils.cjs +0 -3
- package/node_modules/@astrojs/compiler/dist/node/utils.d.ts +0 -29
- package/node_modules/@astrojs/compiler/dist/node/utils.js +0 -3
- package/node_modules/@astrojs/compiler/dist/node/wasm_exec.cjs +0 -1
- package/node_modules/@astrojs/compiler/dist/node/wasm_exec.d.ts +0 -37
- package/node_modules/@astrojs/compiler/dist/node/wasm_exec.js +0 -1
- package/node_modules/@astrojs/compiler/dist/shared/ast.cjs +0 -1
- package/node_modules/@astrojs/compiler/dist/shared/ast.d.ts +0 -74
- package/node_modules/@astrojs/compiler/dist/shared/ast.js +0 -0
- package/node_modules/@astrojs/compiler/dist/shared/diagnostics.cjs +0 -1
- package/node_modules/@astrojs/compiler/dist/shared/diagnostics.d.ts +0 -18
- package/node_modules/@astrojs/compiler/dist/shared/diagnostics.js +0 -1
- package/node_modules/@astrojs/compiler/dist/shared/types.cjs +0 -1
- package/node_modules/@astrojs/compiler/dist/shared/types.d.ts +0 -153
- package/node_modules/@astrojs/compiler/dist/shared/types.js +0 -1
- package/node_modules/@astrojs/compiler/package.json +0 -58
- package/node_modules/@astrojs/compiler/sync.d.ts +0 -1
- package/node_modules/@astrojs/compiler/types.d.ts +0 -1
- package/node_modules/@astrojs/compiler/utils.d.ts +0 -1
- package/node_modules/@pkgr/core/index.d.cts +0 -3
- package/node_modules/@pkgr/core/lib/constants.d.ts +0 -6
- package/node_modules/@pkgr/core/lib/constants.js +0 -9
- package/node_modules/@pkgr/core/lib/constants.js.map +0 -1
- package/node_modules/@pkgr/core/lib/helpers.d.ts +0 -19
- package/node_modules/@pkgr/core/lib/helpers.js +0 -67
- package/node_modules/@pkgr/core/lib/helpers.js.map +0 -1
- package/node_modules/@pkgr/core/lib/index.cjs +0 -91
- package/node_modules/@pkgr/core/lib/index.d.ts +0 -2
- package/node_modules/@pkgr/core/lib/index.js +0 -3
- package/node_modules/@pkgr/core/lib/index.js.map +0 -1
- package/node_modules/@pkgr/core/package.json +0 -38
- package/node_modules/@rviscomi/capo.js/crx/README.md +0 -10
- package/node_modules/@rviscomi/capo.js/crx/capo.js +0 -3
- package/node_modules/@rviscomi/capo.js/crx/options/options.js +0 -1
- package/node_modules/@rviscomi/capo.js/docs/.vscode/extensions.json +0 -4
- package/node_modules/@rviscomi/capo.js/docs/.vscode/launch.json +0 -11
- package/node_modules/@rviscomi/capo.js/docs/README.md +0 -51
- package/node_modules/@rviscomi/capo.js/docs/astro.config.mjs +0 -82
- package/node_modules/@rviscomi/capo.js/docs/package-lock.json +0 -7439
- package/node_modules/@rviscomi/capo.js/docs/package.json +0 -21
- package/node_modules/@rviscomi/capo.js/docs/public/capo-social-alt.webp +0 -0
- package/node_modules/@rviscomi/capo.js/docs/public/capo-social.png +0 -0
- package/node_modules/@rviscomi/capo.js/docs/public/capo-social.webp +0 -0
- package/node_modules/@rviscomi/capo.js/docs/public/favicon.svg +0 -13
- package/node_modules/@rviscomi/capo.js/docs/src/assets/bookmarklet-setup.png +0 -0
- package/node_modules/@rviscomi/capo.js/docs/src/assets/bookmarklet.png +0 -0
- package/node_modules/@rviscomi/capo.js/docs/src/assets/capo-chrome.png +0 -0
- package/node_modules/@rviscomi/capo.js/docs/src/assets/capo-extension.png +0 -0
- package/node_modules/@rviscomi/capo.js/docs/src/assets/capo800.png +0 -0
- package/node_modules/@rviscomi/capo.js/docs/src/assets/crx-console-expanded.png +0 -0
- package/node_modules/@rviscomi/capo.js/docs/src/assets/crx-console-interactive.png +0 -0
- package/node_modules/@rviscomi/capo.js/docs/src/assets/crx-console.png +0 -0
- package/node_modules/@rviscomi/capo.js/docs/src/assets/crx-hover-validation.png +0 -0
- package/node_modules/@rviscomi/capo.js/docs/src/assets/crx-menu.png +0 -0
- package/node_modules/@rviscomi/capo.js/docs/src/assets/crx-options-dark.png +0 -0
- package/node_modules/@rviscomi/capo.js/docs/src/assets/crx-options-light.png +0 -0
- package/node_modules/@rviscomi/capo.js/docs/src/assets/crx-store.png +0 -0
- package/node_modules/@rviscomi/capo.js/docs/src/assets/custom-palette.png +0 -0
- package/node_modules/@rviscomi/capo.js/docs/src/assets/developer-mode.png +0 -0
- package/node_modules/@rviscomi/capo.js/docs/src/assets/devtools-console.png +0 -0
- package/node_modules/@rviscomi/capo.js/docs/src/assets/devtools-snippet.png +0 -0
- package/node_modules/@rviscomi/capo.js/docs/src/assets/devtools-sources.png +0 -0
- package/node_modules/@rviscomi/capo.js/docs/src/assets/houston.webp +0 -0
- package/node_modules/@rviscomi/capo.js/docs/src/assets/load-unpacked.png +0 -0
- package/node_modules/@rviscomi/capo.js/docs/src/assets/validation-areas.png +0 -0
- package/node_modules/@rviscomi/capo.js/docs/src/assets/validation-base.png +0 -0
- package/node_modules/@rviscomi/capo.js/docs/src/assets/validation-crx-stripes.png +0 -0
- package/node_modules/@rviscomi/capo.js/docs/src/assets/validation-csp.png +0 -0
- package/node_modules/@rviscomi/capo.js/docs/src/assets/validation-invalid-element.png +0 -0
- package/node_modules/@rviscomi/capo.js/docs/src/assets/validation-origin-trial.png +0 -0
- package/node_modules/@rviscomi/capo.js/docs/src/assets/validation-title.png +0 -0
- package/node_modules/@rviscomi/capo.js/docs/src/components/CapoClient.astro +0 -165
- package/node_modules/@rviscomi/capo.js/docs/src/components/CapoOptions.astro +0 -10
- package/node_modules/@rviscomi/capo.js/docs/src/components/CapoPalette.astro +0 -26
- package/node_modules/@rviscomi/capo.js/docs/src/components/InlineCapoIcon.astro +0 -15
- package/node_modules/@rviscomi/capo.js/docs/src/components/InlineCapoWeightBars.astro +0 -39
- package/node_modules/@rviscomi/capo.js/docs/src/components/VirtualConsole.astro +0 -11
- package/node_modules/@rviscomi/capo.js/docs/src/content/config.ts +0 -7
- package/node_modules/@rviscomi/capo.js/docs/src/content/docs/developer/contributing.mdx +0 -8
- package/node_modules/@rviscomi/capo.js/docs/src/content/docs/developer/crx-local.mdx +0 -28
- package/node_modules/@rviscomi/capo.js/docs/src/content/docs/developer/custom-adapters.mdx +0 -273
- package/node_modules/@rviscomi/capo.js/docs/src/content/docs/index.mdx +0 -108
- package/node_modules/@rviscomi/capo.js/docs/src/content/docs/migration-v2.mdx +0 -62
- package/node_modules/@rviscomi/capo.js/docs/src/content/docs/user/actionability.mdx +0 -6
- package/node_modules/@rviscomi/capo.js/docs/src/content/docs/user/assessment-mode.mdx +0 -29
- package/node_modules/@rviscomi/capo.js/docs/src/content/docs/user/config.mdx +0 -195
- package/node_modules/@rviscomi/capo.js/docs/src/content/docs/user/demo.mdx +0 -9
- package/node_modules/@rviscomi/capo.js/docs/src/content/docs/user/extension.mdx +0 -116
- package/node_modules/@rviscomi/capo.js/docs/src/content/docs/user/performance.mdx +0 -6
- package/node_modules/@rviscomi/capo.js/docs/src/content/docs/user/quick-start.mdx +0 -26
- package/node_modules/@rviscomi/capo.js/docs/src/content/docs/user/rules.mdx +0 -202
- package/node_modules/@rviscomi/capo.js/docs/src/content/docs/user/validation.mdx +0 -197
- package/node_modules/@rviscomi/capo.js/docs/src/env.d.ts +0 -2
- package/node_modules/@rviscomi/capo.js/docs/src/lib/VirtualConsole.js +0 -190
- package/node_modules/@rviscomi/capo.js/docs/src/lib/capo.js +0 -1533
- package/node_modules/@rviscomi/capo.js/docs/src/styles/custom.css +0 -7
- package/node_modules/@rviscomi/capo.js/docs/src/styles/virtual-console.css +0 -131
- package/node_modules/@rviscomi/capo.js/docs/tests/VirtualConsole.test.js +0 -108
- package/node_modules/@rviscomi/capo.js/docs/tsconfig.json +0 -3
- package/node_modules/@rviscomi/capo.js/src/crx/capo.js +0 -62
- package/node_modules/@rviscomi/capo.js/src/crx/options.js +0 -69
- package/node_modules/astrojs-compiler-sync/LICENSE +0 -53
- package/node_modules/astrojs-compiler-sync/README.md +0 -3
- package/node_modules/astrojs-compiler-sync/browser/index.d.ts +0 -6
- package/node_modules/astrojs-compiler-sync/browser/index.js +0 -76
- package/node_modules/astrojs-compiler-sync/browser/wasm_exec.js +0 -665
- package/node_modules/astrojs-compiler-sync/lib/astrojs-compiler-worker.js +0 -5
- package/node_modules/astrojs-compiler-sync/lib/compiler-sync.cjs +0 -31
- package/node_modules/astrojs-compiler-sync/lib/index.cjs +0 -30
- package/node_modules/astrojs-compiler-sync/lib/index.d.cts +0 -3
- package/node_modules/astrojs-compiler-sync/lib/index.d.ts +0 -14
- package/node_modules/astrojs-compiler-sync/lib/index.js +0 -18
- package/node_modules/astrojs-compiler-sync/package.json +0 -100
- package/node_modules/entities/LICENSE +0 -11
- package/node_modules/entities/dist/decode-codepoint.d.ts +0 -8
- package/node_modules/entities/dist/decode-codepoint.d.ts.map +0 -1
- package/node_modules/entities/dist/decode-codepoint.js +0 -46
- package/node_modules/entities/dist/decode-codepoint.js.map +0 -1
- package/node_modules/entities/dist/decode.d.ts +0 -194
- package/node_modules/entities/dist/decode.d.ts.map +0 -1
- package/node_modules/entities/dist/decode.js +0 -544
- package/node_modules/entities/dist/decode.js.map +0 -1
- package/node_modules/entities/dist/encode.d.ts +0 -24
- package/node_modules/entities/dist/encode.d.ts.map +0 -1
- package/node_modules/entities/dist/encode.js +0 -90
- package/node_modules/entities/dist/encode.js.map +0 -1
- package/node_modules/entities/dist/escape.d.ts +0 -48
- package/node_modules/entities/dist/escape.d.ts.map +0 -1
- package/node_modules/entities/dist/escape.js +0 -132
- package/node_modules/entities/dist/escape.js.map +0 -1
- package/node_modules/entities/dist/generated/decode-data-html.d.ts +0 -3
- package/node_modules/entities/dist/generated/decode-data-html.d.ts.map +0 -1
- package/node_modules/entities/dist/generated/decode-data-html.js +0 -5
- package/node_modules/entities/dist/generated/decode-data-html.js.map +0 -1
- package/node_modules/entities/dist/generated/decode-data-xml.d.ts +0 -3
- package/node_modules/entities/dist/generated/decode-data-xml.d.ts.map +0 -1
- package/node_modules/entities/dist/generated/decode-data-xml.js +0 -5
- package/node_modules/entities/dist/generated/decode-data-xml.js.map +0 -1
- package/node_modules/entities/dist/generated/encode-html.d.ts +0 -5
- package/node_modules/entities/dist/generated/encode-html.d.ts.map +0 -1
- package/node_modules/entities/dist/generated/encode-html.js +0 -12
- package/node_modules/entities/dist/generated/encode-html.js.map +0 -1
- package/node_modules/entities/dist/index.d.ts +0 -89
- package/node_modules/entities/dist/index.d.ts.map +0 -1
- package/node_modules/entities/dist/index.js +0 -91
- package/node_modules/entities/dist/index.js.map +0 -1
- package/node_modules/entities/dist/internal/bin-trie-flags.d.ts +0 -17
- package/node_modules/entities/dist/internal/bin-trie-flags.d.ts.map +0 -1
- package/node_modules/entities/dist/internal/bin-trie-flags.js +0 -18
- package/node_modules/entities/dist/internal/bin-trie-flags.js.map +0 -1
- package/node_modules/entities/dist/internal/decode-shared.d.ts +0 -7
- package/node_modules/entities/dist/internal/decode-shared.d.ts.map +0 -1
- package/node_modules/entities/dist/internal/decode-shared.js +0 -17
- package/node_modules/entities/dist/internal/decode-shared.js.map +0 -1
- package/node_modules/entities/dist/internal/encode-shared.d.ts +0 -33
- package/node_modules/entities/dist/internal/encode-shared.d.ts.map +0 -1
- package/node_modules/entities/dist/internal/encode-shared.js +0 -93
- package/node_modules/entities/dist/internal/encode-shared.js.map +0 -1
- package/node_modules/entities/package.json +0 -83
- package/node_modules/entities/readme.md +0 -131
- package/node_modules/entities/src/decode-codepoint.ts +0 -50
- package/node_modules/entities/src/decode.ts +0 -671
- package/node_modules/entities/src/encode.ts +0 -95
- package/node_modules/entities/src/escape.ts +0 -160
- package/node_modules/entities/src/generated/decode-data-html.ts +0 -7
- package/node_modules/entities/src/generated/decode-data-xml.ts +0 -7
- package/node_modules/entities/src/generated/encode-html.ts +0 -18
- package/node_modules/entities/src/index.ts +0 -162
- package/node_modules/entities/src/internal/bin-trie-flags.ts +0 -16
- package/node_modules/entities/src/internal/decode-shared.ts +0 -18
- package/node_modules/entities/src/internal/encode-shared.ts +0 -123
- package/node_modules/parse5/README.md +0 -38
- package/node_modules/parse5/dist/common/doctype.d.ts +0 -4
- package/node_modules/parse5/dist/common/doctype.js +0 -114
- package/node_modules/parse5/dist/common/error-codes.d.ts +0 -67
- package/node_modules/parse5/dist/common/error-codes.js +0 -63
- package/node_modules/parse5/dist/common/foreign-content.d.ts +0 -9
- package/node_modules/parse5/dist/common/foreign-content.js +0 -228
- package/node_modules/parse5/dist/common/html.d.ts +0 -289
- package/node_modules/parse5/dist/common/html.js +0 -523
- package/node_modules/parse5/dist/common/token.d.ts +0 -84
- package/node_modules/parse5/dist/common/token.js +0 -20
- package/node_modules/parse5/dist/common/unicode.d.ts +0 -42
- package/node_modules/parse5/dist/common/unicode.js +0 -62
- package/node_modules/parse5/dist/index.d.ts +0 -71
- package/node_modules/parse5/dist/index.js +0 -42
- package/node_modules/parse5/dist/parser/formatting-element-list.d.ts +0 -36
- package/node_modules/parse5/dist/parser/formatting-element-list.js +0 -110
- package/node_modules/parse5/dist/parser/index.d.ts +0 -221
- package/node_modules/parse5/dist/parser/index.js +0 -3245
- package/node_modules/parse5/dist/parser/open-element-stack.d.ts +0 -53
- package/node_modules/parse5/dist/parser/open-element-stack.js +0 -324
- package/node_modules/parse5/dist/serializer/index.d.ts +0 -60
- package/node_modules/parse5/dist/serializer/index.js +0 -168
- package/node_modules/parse5/dist/tokenizer/index.d.ts +0 -247
- package/node_modules/parse5/dist/tokenizer/index.js +0 -2712
- package/node_modules/parse5/dist/tokenizer/preprocessor.d.ts +0 -36
- package/node_modules/parse5/dist/tokenizer/preprocessor.js +0 -196
- package/node_modules/parse5/dist/tree-adapters/default.d.ts +0 -84
- package/node_modules/parse5/dist/tree-adapters/default.js +0 -173
- package/node_modules/parse5/dist/tree-adapters/interface.d.ts +0 -255
- package/node_modules/parse5/dist/tree-adapters/interface.js +0 -1
- package/node_modules/parse5/package.json +0 -53
- package/node_modules/synckit/README.md +0 -256
- package/node_modules/synckit/lib/common.d.ts +0 -5
- package/node_modules/synckit/lib/common.js +0 -22
- package/node_modules/synckit/lib/common.js.map +0 -1
- package/node_modules/synckit/lib/constants.d.ts +0 -38
- package/node_modules/synckit/lib/constants.js +0 -54
- package/node_modules/synckit/lib/constants.js.map +0 -1
- package/node_modules/synckit/lib/helpers.d.ts +0 -27
- package/node_modules/synckit/lib/helpers.js +0 -411
- package/node_modules/synckit/lib/helpers.js.map +0 -1
- package/node_modules/synckit/lib/index.cjs +0 -588
- package/node_modules/synckit/lib/index.d.cts +0 -138
- package/node_modules/synckit/lib/index.d.ts +0 -7
- package/node_modules/synckit/lib/index.js +0 -68
- package/node_modules/synckit/lib/index.js.map +0 -1
- package/node_modules/synckit/lib/types.d.ts +0 -48
- package/node_modules/synckit/lib/types.js +0 -2
- package/node_modules/synckit/lib/types.js.map +0 -1
- package/node_modules/synckit/package.json +0 -45
- package/node_modules/yaml-eslint-parser/lib/chunk-15K8U1wQ.mjs +0 -18
- /package/node_modules/@rviscomi/capo.js/{crx → dist/chrome}/background.js +0 -0
- /package/node_modules/@rviscomi/capo.js/{crx → dist/chrome}/capo.css +0 -0
- /package/node_modules/@rviscomi/capo.js/{crx → dist/chrome}/images/icon128.png +0 -0
- /package/node_modules/@rviscomi/capo.js/{crx → dist/chrome}/images/icon256.png +0 -0
- /package/node_modules/@rviscomi/capo.js/{crx → dist/chrome}/options/options.css +0 -0
- /package/node_modules/@rviscomi/capo.js/{crx → dist/chrome}/options/options.html +0 -0
- /package/node_modules/@rviscomi/capo.js/{crx → dist/chrome}/styles/open-props.css +0 -0
- /package/node_modules/@rviscomi/capo.js/{docs/src/assets/capo256.png → dist/firefox/images/icon256.png} +0 -0
- /package/node_modules/eslint-plugin-toml/lib/{chunk-CfYAbeIz.mjs → rolldown-runtime-D7D4PA-g.mjs} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../lib/index.js","../lib/rules/no-invalid-attr-value.js","../lib/utils/baseline.js","../lib/utils/node.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","../lib/rules/class-spacing.js","../lib/rules/no-duplicate-class.js"],"sourcesContent":["export {\n noInvalidAttrValue,\n NO_INVALID_ATTR_VALUE_MESSAGE_IDS,\n} from \"./rules/no-invalid-attr-value\";\nexport { useBaseline, USE_BASELINE_MESSAGE_IDS } from \"./rules/use-baseline\";\nexport {\n noIneffectiveAttrs,\n NO_INEFFECTIVE_ATTRS_MESSAGE_IDS,\n} from \"./rules/no-ineffective-attrs\";\nexport {\n noObsoleteTags,\n NO_OBSOLETE_TAGS_MESSAGE_IDS,\n} from \"./rules/no-obsolete-tags\";\nexport {\n noObsoleteAttrs,\n NO_OBSOLETE_ATTRS_MESSAGE_IDS,\n} from \"./rules/no-obsolete-attrs\";\nexport { classSpacing, CLASS_SPACING_MESSAGE_IDS } from \"./rules/class-spacing\";\nexport {\n noDuplicateClass,\n NO_DUPLICATE_CLASS_MESSAGE_IDS,\n} from \"./rules/no-duplicate-class\";\nexport * from \"./types\";\n","/**\n * @import {\n * ElementAdapter,\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/** @param {NoInvalidAttrValueOptions} options */\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 {ElementAdapter} adapter\n * @returns {NoInvalidAttrValueResult}\n */\n checkAttributes(adapter) {\n const name = adapter.getElementName();\n if (name.includes(\"-\")) {\n return [];\n }\n const spec = element(name);\n /** @type {NoInvalidAttrValueResult} */\n const result = [];\n\n for (const attribute of adapter.getAttributes()) {\n const attributeKey = attribute.getKey();\n if (!attributeKey) {\n continue;\n }\n\n if (attributeKey.hasExpression()) {\n continue;\n }\n\n const attributeValue = attribute.getValue();\n\n if (attributeValue?.hasExpression()) {\n continue;\n }\n\n const attrKeyValue = attributeKey.getValue();\n\n const attrValueValue = attributeValue?.getValue() ?? null;\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 loc: attributeValue?.getLocation() ?? attributeKey?.getLocation(),\n messageId: NO_INVALID_ATTR_VALUE_MESSAGE_IDS.invalid,\n data: {\n value: attrValueValue || \"\",\n attr: 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.interestfor\", \"0:\"],\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.interestfor\", \"0:\"],\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.autoplay\", \"10:2016\"],\n [\"audio.controls\", \"10:2015\"],\n [\"audio.controlslist\", \"0:\"],\n [\"audio.crossorigin\", \"10:2020\"],\n [\"audio.disableremoteplayback\", \"0:\"],\n [\"audio.loading\", \"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.commandfor.implicit_anchor_reference\", \"5:2026\"],\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.interestfor\", \"0:\"],\n [\"button.name\", \"10:2015\"],\n [\"button.popovertarget\", \"5:2024\"],\n [\"button.popovertarget.implicit_anchor_reference\", \"5:2026\"],\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 [\"datalist.input_type_color\", \"0:\"],\n [\"datalist.input_type_date\", \"0:\"],\n [\"datalist.input_type_email\", \"0:\"],\n [\"datalist.input_type_number\", \"0:\"],\n [\"datalist.input_type_range\", \"0:\"],\n [\"datalist.input_type_search\", \"0:\"],\n [\"datalist.input_type_tel\", \"0:\"],\n [\"datalist.input_type_text\", \"0:\"],\n [\"datalist.input_type_time\", \"0:\"],\n [\"datalist.input_type_url\", \"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 [\"geolocation\", \"0:\"],\n [\"geolocation.autolocate\", \"0:\"],\n [\"geolocation.watch\", \"0:\"],\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.browsing-topics\", \"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.browsingtopics\", \"0:\"],\n [\"iframe.credentialless\", \"0:\"],\n [\"iframe.csp\", \"0:\"],\n [\"iframe.height\", \"10:2015\"],\n [\"iframe.loading\", \"10: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\", \"10: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\", \"10: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.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\", \"5:2026\"],\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_color.list\", \"0:\"],\n [\"input.type_date\", \"10:2021\"],\n [\"input.type_date.list\", \"0:\"],\n [\"input.type_datetime-local\", \"10:2021\"],\n [\"input.type_email\", \"10:2015\"],\n [\"input.type_email.list\", \"10:2019\"],\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_number.list\", \"10:2019\"],\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.list\", \"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_search.list\", \"10:2019\"],\n [\"input.type_submit\", \"10:2015\"],\n [\"input.type_tel\", \"10:2015\"],\n [\"input.type_tel.list\", \"10:2019\"],\n [\"input.type_text\", \"10:2015\"],\n [\"input.type_text.list\", \"10:2019\"],\n [\"input.type_time\", \"10:2021\"],\n [\"input.type_time.list\", \"0:\"],\n [\"input.type_url\", \"10:2015\"],\n [\"input.type_url.list\", \"10:2019\"],\n [\"input.type_week\", \"0:\"],\n [\"input.webkitdirectory\", \"5:2025\"],\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\", \"10:2023\"],\n [\"link.imagesrcset\", \"10: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\", \"10: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.text-scale\", \"0:\"],\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.integrity.ed25519_public_key\", \"0:\"],\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\", \"10: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.shadowrootcustomelementregistry\", \"0:\"],\n [\"template.shadowrootdelegatesfocus\", \"5:2024\"],\n [\"template.shadowrootmode\", \"5:2024\"],\n [\"template.shadowrootreferencetarget\", \"0:\"],\n [\"template.shadowrootserializable\", \"0:\"],\n [\"template.shadowrootslotassignment\", \"0:\"],\n [\"textarea\", \"10:2015\"],\n [\"textarea.autocomplete\", \"10:2020\"],\n [\"textarea.cols\", \"10:2015\"],\n [\"textarea.dirname\", \"10: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.loading\", \"0:\"],\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 [\"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 * @param {string} name Element name\n * @returns {boolean}\n */\nexport function isCustomElement(name) {\n return name.includes(\"-\");\n}\n","/**\n * @import {\n * ElementAdapter,\n * UseBaselineOptions,\n * UseBaselineResult\n * } from \"../types\"\n */\nimport {\n elements,\n globalAttributes,\n BASELINE_HIGH,\n BASELINE_LOW,\n} from \"../utils/baseline\";\nimport { isCustomElement } from \"../utils/node\";\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} 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({ available }) {\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 {ElementAdapter} adapter\n * @returns {UseBaselineResult}\n */\n checkAttributes(adapter) {\n const elementName = adapter.getElementName();\n if (isCustomElement(elementName)) {\n return [];\n }\n\n if (!isSupportedElement(elementName)) {\n return [\n {\n messageId: USE_BASELINE_MESSAGE_IDS.noBaselineElement,\n loc: adapter.getLocation(),\n data: {\n element: `<${elementName}>`,\n availability,\n },\n },\n ];\n }\n\n /** @type {UseBaselineResult} */\n const result = [];\n\n for (const attribute of adapter.getAttributes()) {\n const attributeKey = attribute.getKey();\n if (!attributeKey) {\n continue;\n }\n const attributeKeyValue = attributeKey.getValue();\n const attributeKeyHasExpression = attributeKey.hasExpression();\n if (!attributeKeyValue || attributeKeyHasExpression) {\n continue;\n }\n const attributeValue = attribute.getValue();\n const attributeValueValue = attributeValue?.getValue();\n if (attributeValueValue === null) {\n continue;\n }\n\n if (!isSupportedElementAttributeKey(elementName, attributeKeyValue)) {\n result.push({\n messageId: USE_BASELINE_MESSAGE_IDS.notBaselineElementAttribute,\n loc: attributeKey.getLocation(),\n data: {\n element: `<${elementName}>`,\n attr: attributeKey.getValue(),\n availability,\n },\n });\n } else if (!isSupportedGlobalAttributeKey(attributeKeyValue)) {\n result.push({\n messageId: USE_BASELINE_MESSAGE_IDS.notBaselineGlobalAttribute,\n loc: attributeKey.getLocation(),\n data: {\n attr: attributeKey.getValue(),\n availability,\n },\n });\n } else if (attributeValue !== null) {\n if (\n !isSupportedElementAttributeKeyValue(\n elementName,\n attributeKeyValue,\n attributeValueValue || \"\"\n ) ||\n !isSupportedElementSpecificAttributeKeyValue(\n elementName,\n attributeKeyValue,\n attributeValueValue || \"\"\n )\n ) {\n result.push({\n messageId: USE_BASELINE_MESSAGE_IDS.notBaselineElementAttribute,\n loc: attributeValue.getLocation(),\n data: {\n element: `<${elementName}>`,\n attr: `${attributeKeyValue}=\"${attributeValueValue}\"`,\n availability,\n },\n });\n } else if (\n !isSupportedGlobalAttributeKeyValue(\n attributeKeyValue,\n attributeValueValue || \"\"\n )\n ) {\n result.push({\n messageId: USE_BASELINE_MESSAGE_IDS.notBaselineGlobalAttribute,\n loc: attributeValue.getLocation(),\n data: {\n attr: `${attributeKeyValue}=\"${attributeValueValue}\"`,\n availability,\n },\n });\n }\n }\n }\n return result;\n },\n };\n}\n","/**\n * @import {\n * ElementAdapter,\n * NoIneffectiveAttrsResult\n * } from \"../types\"\n */\n\n/**\n * @typedef {{\n * attr: string;\n * when: (adapter: ElementAdapter) => 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\nexport function noIneffectiveAttrs() {\n /**\n * @param {ElementAdapter} 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.getKey()?.getValue();\n if (attrKeyValue && attrKeyValue === attrName) {\n const value = attribute.getValue()?.getValue();\n return value || null;\n }\n }\n return null;\n }\n\n /**\n * @param {ElementAdapter} 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.getKey()?.getValue();\n if (\n keyValue &&\n keyValue.toLocaleLowerCase() === attrName.toLocaleLowerCase()\n ) {\n return true;\n }\n }\n return false;\n }\n /**\n * @param {ElementAdapter} adapter\n * @param {string} attrName\n * @returns {boolean}\n */\n function isAttrValueExpression(adapter, attrName) {\n return adapter.getAttributes().some((attr) => {\n const key = attr.getKey();\n return (\n key?.getValue() === attrName && !!attr?.getValue()?.hasExpression()\n );\n });\n }\n\n /** @type {Record<string, AttributeChecker[]>} */\n const checkersByTag = {\n input: [\n {\n attr: \"multiple\",\n when: (adapter) => {\n if (isAttrValueExpression(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 (isAttrValueExpression(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 (isAttrValueExpression(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 (isAttrValueExpression(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 (isAttrValueExpression(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 (isAttrValueExpression(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 (isAttrValueExpression(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 (isAttrValueExpression(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 (isAttrValueExpression(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 (isAttrValueExpression(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 (isAttrValueExpression(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 (isAttrValueExpression(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 (isAttrValueExpression(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 (isAttrValueExpression(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 (isAttrValueExpression(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 (isAttrValueExpression(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 (isAttrValueExpression(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 (isAttrValueExpression(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 {ElementAdapter} adapter\n * @returns {NoIneffectiveAttrsResult}\n */\n checkAttributes(adapter) {\n const elementName = adapter.getElementName();\n const tagCheckers = checkersByTag[elementName];\n\n if (!tagCheckers) {\n return [];\n }\n\n /** @type {NoIneffectiveAttrsResult} */\n const result = [];\n for (const check of tagCheckers) {\n for (const attribute of adapter.getAttributes()) {\n const attributeKey = attribute.getKey();\n if (!attributeKey) {\n continue;\n }\n if (attributeKey.hasExpression()) {\n continue;\n }\n const attributeValue = attribute.getValue();\n if (attributeValue?.hasExpression()) {\n continue;\n }\n const attributeKeyValue = attributeKey.getValue();\n const attributeValueValue = attributeValue?.getValue();\n if (\n attributeValueValue === null ||\n attributeKeyValue?.toLowerCase() !== check.attr\n ) {\n continue;\n }\n\n if (check.when(adapter)) {\n result.push({\n loc: attributeKey.getLocation(),\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 * ElementAdapter,\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\nexport function noObsoleteTags() {\n return {\n /**\n * @param {ElementAdapter} adapter\n * @returns {NoObsoleteTagsResult}\n */\n checkElement(adapter) {\n const tagName = adapter.getElementName();\n\n if (OBSOLETE_TAGS_SET.has(tagName)) {\n return [\n {\n messageId: NO_OBSOLETE_TAGS_MESSAGE_IDS.unexpected,\n loc: adapter.getOpenStartLocation(),\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 * ElementAdapter,\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\nexport function noObsoleteAttrs() {\n return {\n /**\n * @param {ElementAdapter} adapter\n * @returns {NoObsoleteAttrsResult}\n */\n checkAttributes(adapter) {\n const elementName = adapter.getElementName();\n\n /** @type {NoObsoleteAttrsResult} */\n const result = [];\n\n for (const attribute of adapter.getAttributes()) {\n const attributeKey = attribute.getKey();\n if (!attributeKey) {\n continue;\n }\n\n const attrKeyValue = attributeKey.getValue();\n const attributeValue = attribute.getValue();\n const attrValueValueValue = attributeValue?.getValue();\n // Skip if attribute key is an expression or doesn't have a value\n if (\n attributeKey.hasExpression() ||\n attrKeyValue === null ||\n attrValueValueValue === 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 loc: attributeKey.getLocation(),\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","/**\n * @import {\n * Range,\n * SourceLocation\n * } from \"@html-eslint/types\"\n * @import {\n * AttributeValueAdapter,\n * ClassSpacingResult\n * } from \"../types\"\n */\n\nconst CLASS_BETWEEN_EXTRA_SPACES_REGEX = /\\s{2,}/;\nconst CLASS_BETWEEN_EXTRA_SPACES_REGEX_GLOBAL = /\\s{2,}/g;\nconst LINE_BREAK_REGEX = /\\r\\n|[\\r\\n\\u2028\\u2029]/u;\n/**\n * @type {{\n * extraSpacing: \"extraSpacing\";\n * }}\n */\nexport const CLASS_SPACING_MESSAGE_IDS = {\n extraSpacing: \"extraSpacing\",\n};\n\n/**\n * @param {string} value\n * @param {SourceLocation} loc\n * @param {Range} range\n * @param {ClassSpacingResult} result\n */\nfunction checkLeading(value, loc, range, result) {\n // Skip leading whitespace check if value starts with newline\n if (value.startsWith(\"\\n\")) {\n return;\n }\n\n if (value.startsWith(\" \")) {\n const leadingSpaces = value.length - value.trimStart().length;\n const spacingStart = loc.start;\n const spacingEnd = {\n line: spacingStart.line,\n column: spacingStart.column + leadingSpaces,\n };\n /** @type {Range} */\n const spacingRange = [range[0], range[0] + leadingSpaces];\n result.push({\n messageId: CLASS_SPACING_MESSAGE_IDS.extraSpacing,\n loc: {\n start: spacingStart,\n end: spacingEnd,\n },\n range: spacingRange,\n });\n }\n}\n\n/**\n * @param {string} value\n * @returns {{ line: string; start: number }[]}\n */\nfunction splitLines(value) {\n const lines = value.split(LINE_BREAK_REGEX);\n let pos = 0;\n return lines.map((line, i) => {\n const entry = { line, start: pos };\n const lineBreakLength = i < lines.length - 1 ? 1 : 0;\n pos += line.length + lineBreakLength;\n return entry;\n });\n}\n\n/**\n * @param {number} lineIndex\n * @param {number} columnInLine\n * @param {SourceLocation} loc\n */\nfunction toColumn(lineIndex, columnInLine, loc) {\n return lineIndex === 0 ? loc.start.column + columnInLine : columnInLine;\n}\n\n/**\n * @param {string} value\n * @param {SourceLocation} loc\n * @param {Range} range\n * @param {ClassSpacingResult} result\n */\nfunction checkBetween(value, loc, range, result) {\n const lineEntries = splitLines(value);\n for (let lineIndex = 0; lineIndex < lineEntries.length; lineIndex++) {\n const { line, start: lineStart } = lineEntries[lineIndex];\n const trimmedLine = line.trim();\n if (!CLASS_BETWEEN_EXTRA_SPACES_REGEX.test(trimmedLine)) continue;\n\n const lineLeadingSpaces = line.length - line.trimStart().length;\n\n for (const match of trimmedLine.matchAll(\n CLASS_BETWEEN_EXTRA_SPACES_REGEX_GLOBAL\n )) {\n const matchStartInLine = lineLeadingSpaces + match.index;\n const matchEndInLine = matchStartInLine + match[0].length;\n\n result.push({\n messageId: CLASS_SPACING_MESSAGE_IDS.extraSpacing,\n loc: {\n start: {\n line: loc.start.line + lineIndex,\n column: toColumn(lineIndex, matchStartInLine, loc) + 1,\n },\n end: {\n line: loc.start.line + lineIndex,\n column: toColumn(lineIndex, matchEndInLine, loc),\n },\n },\n range: [\n range[0] + lineStart + matchStartInLine + 1,\n range[0] + lineStart + matchEndInLine,\n ],\n });\n }\n }\n}\n\n/**\n * @param {string} line\n * @param {number} lineIndex\n * @param {boolean} isSingleLine\n * @param {SourceLocation} loc\n */\nfunction trailingLoc(line, lineIndex, isSingleLine, loc) {\n const trailingSpaces = line.length - line.trimEnd().length;\n if (isSingleLine) {\n return {\n start: { line: loc.end.line, column: loc.end.column - trailingSpaces },\n end: { line: loc.end.line, column: loc.end.column },\n };\n }\n const columnOffset = lineIndex === 0 ? loc.start.column : 0;\n return {\n start: {\n line: loc.start.line + lineIndex,\n column: columnOffset + line.length - trailingSpaces,\n },\n end: {\n line: loc.start.line + lineIndex,\n column: columnOffset + line.length,\n },\n };\n}\n\n/**\n * @param {string} value\n * @param {SourceLocation} loc\n * @param {Range} range\n * @param {ClassSpacingResult} result\n */\nfunction checkTrailing(value, loc, range, result) {\n const lineEntries = splitLines(value);\n const isSingleLine = lineEntries.length === 1;\n\n for (let i = 0; i < lineEntries.length; i++) {\n const { line, start: lineStart } = lineEntries[i];\n if (!line.endsWith(\" \")) continue;\n\n const trailingSpaces = line.length - line.trimEnd().length;\n result.push({\n messageId: CLASS_SPACING_MESSAGE_IDS.extraSpacing,\n loc: trailingLoc(line, i, isSingleLine, loc),\n range: [\n range[0] + lineStart + line.length - trailingSpaces,\n range[0] + lineStart + line.length,\n ],\n });\n }\n}\n\nexport function classSpacing() {\n return {\n /**\n * @param {AttributeValueAdapter} classValue\n * @returns {ClassSpacingResult}\n */\n checkClassValue(classValue) {\n /** @type {ClassSpacingResult} */\n const result = [];\n\n if (classValue.hasExpression()) {\n return result;\n }\n\n const value = classValue.getValue();\n if (!value) {\n return result;\n }\n\n const loc = classValue.getLocation();\n const range = classValue.getRange();\n\n checkLeading(value, loc, range, result);\n checkBetween(value, loc, range, result);\n checkTrailing(value, loc, range, result);\n\n return result;\n },\n };\n}\n","/**\n * @import {\n * AttributeValueAdapter,\n * NoDuplicateClassResult\n * } from \"../types\"\n */\n\n/**\n * @type {{\n * duplicateClass: \"duplicateClass\";\n * }}\n */\nexport const NO_DUPLICATE_CLASS_MESSAGE_IDS = {\n duplicateClass: \"duplicateClass\",\n};\n\n/**\n * Split class string into tokens (class names and spaces) with their positions\n *\n * @param {string} value - The class attribute value\n * @returns {{ value: string; pos: number }[]}\n */\nfunction splitClassAndSpaces(value) {\n /** @type {{ value: string; pos: number }[]} */\n const result = [];\n const regex = /(\\s+|\\S+)/g;\n /** @type {RegExpExecArray | null} */\n let match = null;\n\n while ((match = regex.exec(value)) !== null) {\n result.push({\n value: match[0],\n pos: match.index,\n });\n }\n\n return result;\n}\n\nexport function noDuplicateClass() {\n return {\n /**\n * @param {AttributeValueAdapter} classValue\n * @returns {NoDuplicateClassResult}\n */\n checkClassValue(classValue) {\n /** @type {NoDuplicateClassResult} */\n const result = [];\n\n if (classValue.hasExpression()) {\n return result;\n }\n\n const value = classValue.getValue();\n if (!value) {\n return result;\n }\n\n const loc = classValue.getLocation();\n const range = classValue.getRange();\n\n const classesAndSpaces = splitClassAndSpaces(value);\n const classSet = new Set();\n\n classesAndSpaces.forEach(({ value, pos }) => {\n const className = value.trim();\n\n if (className.length) {\n if (classSet.has(className)) {\n const classStart = {\n line: loc.start.line,\n column: loc.start.column + pos,\n };\n const classEnd = {\n line: loc.start.line,\n column: loc.start.column + pos + value.length,\n };\n result.push({\n messageId: NO_DUPLICATE_CLASS_MESSAGE_IDS.duplicateClass,\n loc: {\n start: classStart,\n end: classEnd,\n },\n range: [range[0] + pos, range[0] + pos + value.length],\n data: {\n className,\n },\n });\n } else {\n classSet.add(className);\n }\n }\n });\n\n return result;\n },\n };\n}\n"],"mappings":"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","names":["element","value"]}
|
|
1
|
+
{"version":3,"sources":["../lib/index.js","../lib/rules/no-invalid-attr-value.js","../lib/utils/baseline.js","../lib/utils/node.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","../lib/rules/class-spacing.js","../lib/rules/no-duplicate-class.js"],"sourcesContent":["export {\n noInvalidAttrValue,\n NO_INVALID_ATTR_VALUE_MESSAGE_IDS,\n} from \"./rules/no-invalid-attr-value\";\nexport { useBaseline, USE_BASELINE_MESSAGE_IDS } from \"./rules/use-baseline\";\nexport {\n noIneffectiveAttrs,\n NO_INEFFECTIVE_ATTRS_MESSAGE_IDS,\n} from \"./rules/no-ineffective-attrs\";\nexport {\n noObsoleteTags,\n NO_OBSOLETE_TAGS_MESSAGE_IDS,\n} from \"./rules/no-obsolete-tags\";\nexport {\n noObsoleteAttrs,\n NO_OBSOLETE_ATTRS_MESSAGE_IDS,\n} from \"./rules/no-obsolete-attrs\";\nexport { classSpacing, CLASS_SPACING_MESSAGE_IDS } from \"./rules/class-spacing\";\nexport {\n noDuplicateClass,\n NO_DUPLICATE_CLASS_MESSAGE_IDS,\n} from \"./rules/no-duplicate-class\";\nexport * from \"./types\";\n","/**\n * @import {\n * ElementAdapter,\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/** @param {NoInvalidAttrValueOptions} options */\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 {ElementAdapter} adapter\n * @returns {NoInvalidAttrValueResult}\n */\n checkAttributes(adapter) {\n const name = adapter.getElementName();\n if (name.includes(\"-\")) {\n return [];\n }\n const spec = element(name);\n /** @type {NoInvalidAttrValueResult} */\n const result = [];\n\n for (const attribute of adapter.getAttributes()) {\n const attributeKey = attribute.getKey();\n if (!attributeKey) {\n continue;\n }\n\n if (attributeKey.hasExpression()) {\n continue;\n }\n\n const attributeValue = attribute.getValue();\n\n if (attributeValue?.hasExpression()) {\n continue;\n }\n\n const attrKeyValue = attributeKey.getValue();\n\n const attrValueValue = attributeValue?.getValue() ?? null;\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 loc: attributeValue?.getLocation() ?? attributeKey?.getLocation(),\n messageId: NO_INVALID_ATTR_VALUE_MESSAGE_IDS.invalid,\n data: {\n value: attrValueValue || \"\",\n attr: 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.interestfor\", \"0:\"],\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.interestfor\", \"0:\"],\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.autoplay\", \"10:2016\"],\n [\"audio.controls\", \"10:2015\"],\n [\"audio.controlslist\", \"0:\"],\n [\"audio.crossorigin\", \"10:2020\"],\n [\"audio.disableremoteplayback\", \"0:\"],\n [\"audio.loading\", \"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.commandfor.implicit_anchor_reference\", \"5:2026\"],\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.interestfor\", \"0:\"],\n [\"button.name\", \"10:2015\"],\n [\"button.popovertarget\", \"5:2024\"],\n [\"button.popovertarget.implicit_anchor_reference\", \"5:2026\"],\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 [\"datalist.input_type_color\", \"0:\"],\n [\"datalist.input_type_date\", \"0:\"],\n [\"datalist.input_type_email\", \"0:\"],\n [\"datalist.input_type_number\", \"0:\"],\n [\"datalist.input_type_range\", \"0:\"],\n [\"datalist.input_type_search\", \"0:\"],\n [\"datalist.input_type_tel\", \"0:\"],\n [\"datalist.input_type_text\", \"0:\"],\n [\"datalist.input_type_time\", \"0:\"],\n [\"datalist.input_type_url\", \"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 [\"geolocation\", \"0:\"],\n [\"geolocation.autolocate\", \"0:\"],\n [\"geolocation.watch\", \"0:\"],\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.browsing-topics\", \"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.browsingtopics\", \"0:\"],\n [\"iframe.credentialless\", \"0:\"],\n [\"iframe.csp\", \"0:\"],\n [\"iframe.height\", \"10:2015\"],\n [\"iframe.loading\", \"10: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\", \"10: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\", \"10: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.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\", \"5:2026\"],\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_color.list\", \"0:\"],\n [\"input.type_date\", \"10:2021\"],\n [\"input.type_date.list\", \"0:\"],\n [\"input.type_datetime-local\", \"10:2021\"],\n [\"input.type_email\", \"10:2015\"],\n [\"input.type_email.list\", \"10:2019\"],\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_number.list\", \"10:2019\"],\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.list\", \"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_search.list\", \"10:2019\"],\n [\"input.type_submit\", \"10:2015\"],\n [\"input.type_tel\", \"10:2015\"],\n [\"input.type_tel.list\", \"10:2019\"],\n [\"input.type_text\", \"10:2015\"],\n [\"input.type_text.list\", \"10:2019\"],\n [\"input.type_time\", \"10:2021\"],\n [\"input.type_time.list\", \"0:\"],\n [\"input.type_url\", \"10:2015\"],\n [\"input.type_url.list\", \"10:2019\"],\n [\"input.type_week\", \"0:\"],\n [\"input.webkitdirectory\", \"5:2025\"],\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\", \"10:2023\"],\n [\"link.imagesrcset\", \"10: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\", \"10: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.responsive-embedded-sizing\", \"0:\"],\n [\"meta.name.text-scale\", \"0:\"],\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.integrity.ed25519_public_key\", \"0:\"],\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\", \"10: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.shadowrootcustomelementregistry\", \"0:\"],\n [\"template.shadowrootdelegatesfocus\", \"5:2024\"],\n [\"template.shadowrootmode\", \"5:2024\"],\n [\"template.shadowrootreferencetarget\", \"0:\"],\n [\"template.shadowrootserializable\", \"0:\"],\n [\"template.shadowrootslotassignment\", \"0:\"],\n [\"textarea\", \"10:2015\"],\n [\"textarea.autocomplete\", \"10:2020\"],\n [\"textarea.cols\", \"10:2015\"],\n [\"textarea.dirname\", \"10: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.loading\", \"0:\"],\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 [\"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 * @param {string} name Element name\n * @returns {boolean}\n */\nexport function isCustomElement(name) {\n return name.includes(\"-\");\n}\n","/**\n * @import {\n * ElementAdapter,\n * UseBaselineOptions,\n * UseBaselineResult\n * } from \"../types\"\n */\nimport {\n elements,\n globalAttributes,\n BASELINE_HIGH,\n BASELINE_LOW,\n} from \"../utils/baseline\";\nimport { isCustomElement } from \"../utils/node\";\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} 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({ available }) {\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 {ElementAdapter} adapter\n * @returns {UseBaselineResult}\n */\n checkAttributes(adapter) {\n const elementName = adapter.getElementName();\n if (isCustomElement(elementName)) {\n return [];\n }\n\n if (!isSupportedElement(elementName)) {\n return [\n {\n messageId: USE_BASELINE_MESSAGE_IDS.noBaselineElement,\n loc: adapter.getLocation(),\n data: {\n element: `<${elementName}>`,\n availability,\n },\n },\n ];\n }\n\n /** @type {UseBaselineResult} */\n const result = [];\n\n for (const attribute of adapter.getAttributes()) {\n const attributeKey = attribute.getKey();\n if (!attributeKey) {\n continue;\n }\n const attributeKeyValue = attributeKey.getValue();\n const attributeKeyHasExpression = attributeKey.hasExpression();\n if (!attributeKeyValue || attributeKeyHasExpression) {\n continue;\n }\n const attributeValue = attribute.getValue();\n const attributeValueValue = attributeValue?.getValue();\n if (attributeValueValue === null) {\n continue;\n }\n\n if (!isSupportedElementAttributeKey(elementName, attributeKeyValue)) {\n result.push({\n messageId: USE_BASELINE_MESSAGE_IDS.notBaselineElementAttribute,\n loc: attributeKey.getLocation(),\n data: {\n element: `<${elementName}>`,\n attr: attributeKey.getValue(),\n availability,\n },\n });\n } else if (!isSupportedGlobalAttributeKey(attributeKeyValue)) {\n result.push({\n messageId: USE_BASELINE_MESSAGE_IDS.notBaselineGlobalAttribute,\n loc: attributeKey.getLocation(),\n data: {\n attr: attributeKey.getValue(),\n availability,\n },\n });\n } else if (attributeValue !== null) {\n if (\n !isSupportedElementAttributeKeyValue(\n elementName,\n attributeKeyValue,\n attributeValueValue || \"\"\n ) ||\n !isSupportedElementSpecificAttributeKeyValue(\n elementName,\n attributeKeyValue,\n attributeValueValue || \"\"\n )\n ) {\n result.push({\n messageId: USE_BASELINE_MESSAGE_IDS.notBaselineElementAttribute,\n loc: attributeValue.getLocation(),\n data: {\n element: `<${elementName}>`,\n attr: `${attributeKeyValue}=\"${attributeValueValue}\"`,\n availability,\n },\n });\n } else if (\n !isSupportedGlobalAttributeKeyValue(\n attributeKeyValue,\n attributeValueValue || \"\"\n )\n ) {\n result.push({\n messageId: USE_BASELINE_MESSAGE_IDS.notBaselineGlobalAttribute,\n loc: attributeValue.getLocation(),\n data: {\n attr: `${attributeKeyValue}=\"${attributeValueValue}\"`,\n availability,\n },\n });\n }\n }\n }\n return result;\n },\n };\n}\n","/**\n * @import {\n * ElementAdapter,\n * NoIneffectiveAttrsResult\n * } from \"../types\"\n */\n\n/**\n * @typedef {{\n * attr: string;\n * when: (adapter: ElementAdapter) => 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\nexport function noIneffectiveAttrs() {\n /**\n * @param {ElementAdapter} 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.getKey()?.getValue();\n if (attrKeyValue && attrKeyValue === attrName) {\n const value = attribute.getValue()?.getValue();\n return value || null;\n }\n }\n return null;\n }\n\n /**\n * @param {ElementAdapter} 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.getKey()?.getValue();\n if (\n keyValue &&\n keyValue.toLocaleLowerCase() === attrName.toLocaleLowerCase()\n ) {\n return true;\n }\n }\n return false;\n }\n /**\n * @param {ElementAdapter} adapter\n * @param {string} attrName\n * @returns {boolean}\n */\n function isAttrValueExpression(adapter, attrName) {\n return adapter.getAttributes().some((attr) => {\n const key = attr.getKey();\n return (\n key?.getValue() === attrName && !!attr?.getValue()?.hasExpression()\n );\n });\n }\n\n /** @type {Record<string, AttributeChecker[]>} */\n const checkersByTag = {\n input: [\n {\n attr: \"multiple\",\n when: (adapter) => {\n if (isAttrValueExpression(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 (isAttrValueExpression(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 (isAttrValueExpression(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 (isAttrValueExpression(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 (isAttrValueExpression(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 (isAttrValueExpression(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 (isAttrValueExpression(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 (isAttrValueExpression(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 (isAttrValueExpression(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 (isAttrValueExpression(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 (isAttrValueExpression(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 (isAttrValueExpression(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 (isAttrValueExpression(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 (isAttrValueExpression(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 (isAttrValueExpression(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 (isAttrValueExpression(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 (isAttrValueExpression(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 (isAttrValueExpression(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 {ElementAdapter} adapter\n * @returns {NoIneffectiveAttrsResult}\n */\n checkAttributes(adapter) {\n const elementName = adapter.getElementName();\n const tagCheckers = checkersByTag[elementName];\n\n if (!tagCheckers) {\n return [];\n }\n\n /** @type {NoIneffectiveAttrsResult} */\n const result = [];\n for (const check of tagCheckers) {\n for (const attribute of adapter.getAttributes()) {\n const attributeKey = attribute.getKey();\n if (!attributeKey) {\n continue;\n }\n if (attributeKey.hasExpression()) {\n continue;\n }\n const attributeValue = attribute.getValue();\n if (attributeValue?.hasExpression()) {\n continue;\n }\n const attributeKeyValue = attributeKey.getValue();\n const attributeValueValue = attributeValue?.getValue();\n if (\n attributeValueValue === null ||\n attributeKeyValue?.toLowerCase() !== check.attr\n ) {\n continue;\n }\n\n if (check.when(adapter)) {\n result.push({\n loc: attributeKey.getLocation(),\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 * ElementAdapter,\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\nexport function noObsoleteTags() {\n return {\n /**\n * @param {ElementAdapter} adapter\n * @returns {NoObsoleteTagsResult}\n */\n checkElement(adapter) {\n const tagName = adapter.getElementName();\n\n if (OBSOLETE_TAGS_SET.has(tagName)) {\n return [\n {\n messageId: NO_OBSOLETE_TAGS_MESSAGE_IDS.unexpected,\n loc: adapter.getOpenStartLocation(),\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 * ElementAdapter,\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\nexport function noObsoleteAttrs() {\n return {\n /**\n * @param {ElementAdapter} adapter\n * @returns {NoObsoleteAttrsResult}\n */\n checkAttributes(adapter) {\n const elementName = adapter.getElementName();\n\n /** @type {NoObsoleteAttrsResult} */\n const result = [];\n\n for (const attribute of adapter.getAttributes()) {\n const attributeKey = attribute.getKey();\n if (!attributeKey) {\n continue;\n }\n\n const attrKeyValue = attributeKey.getValue();\n const attributeValue = attribute.getValue();\n const attrValueValueValue = attributeValue?.getValue();\n // Skip if attribute key is an expression or doesn't have a value\n if (\n attributeKey.hasExpression() ||\n attrKeyValue === null ||\n attrValueValueValue === 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 loc: attributeKey.getLocation(),\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","/**\n * @import {\n * Range,\n * SourceLocation\n * } from \"@html-eslint/types\"\n * @import {\n * AttributeValueAdapter,\n * ClassSpacingResult\n * } from \"../types\"\n */\n\nconst CLASS_BETWEEN_EXTRA_SPACES_REGEX = /\\s{2,}/;\nconst CLASS_BETWEEN_EXTRA_SPACES_REGEX_GLOBAL = /\\s{2,}/g;\nconst LINE_BREAK_REGEX = /\\r\\n|[\\r\\n\\u2028\\u2029]/u;\n/**\n * @type {{\n * extraSpacing: \"extraSpacing\";\n * }}\n */\nexport const CLASS_SPACING_MESSAGE_IDS = {\n extraSpacing: \"extraSpacing\",\n};\n\n/**\n * @param {string} value\n * @param {SourceLocation} loc\n * @param {Range} range\n * @param {ClassSpacingResult} result\n */\nfunction checkLeading(value, loc, range, result) {\n // Skip leading whitespace check if value starts with newline\n if (value.startsWith(\"\\n\")) {\n return;\n }\n\n if (value.startsWith(\" \")) {\n const leadingSpaces = value.length - value.trimStart().length;\n const spacingStart = loc.start;\n const spacingEnd = {\n line: spacingStart.line,\n column: spacingStart.column + leadingSpaces,\n };\n /** @type {Range} */\n const spacingRange = [range[0], range[0] + leadingSpaces];\n result.push({\n messageId: CLASS_SPACING_MESSAGE_IDS.extraSpacing,\n loc: {\n start: spacingStart,\n end: spacingEnd,\n },\n range: spacingRange,\n });\n }\n}\n\n/**\n * @param {string} value\n * @returns {{ line: string; start: number }[]}\n */\nfunction splitLines(value) {\n const lines = value.split(LINE_BREAK_REGEX);\n let pos = 0;\n return lines.map((line, i) => {\n const entry = { line, start: pos };\n const lineBreakLength = i < lines.length - 1 ? 1 : 0;\n pos += line.length + lineBreakLength;\n return entry;\n });\n}\n\n/**\n * @param {number} lineIndex\n * @param {number} columnInLine\n * @param {SourceLocation} loc\n */\nfunction toColumn(lineIndex, columnInLine, loc) {\n return lineIndex === 0 ? loc.start.column + columnInLine : columnInLine;\n}\n\n/**\n * @param {string} value\n * @param {SourceLocation} loc\n * @param {Range} range\n * @param {ClassSpacingResult} result\n */\nfunction checkBetween(value, loc, range, result) {\n const lineEntries = splitLines(value);\n for (let lineIndex = 0; lineIndex < lineEntries.length; lineIndex++) {\n const { line, start: lineStart } = lineEntries[lineIndex];\n const trimmedLine = line.trim();\n if (!CLASS_BETWEEN_EXTRA_SPACES_REGEX.test(trimmedLine)) continue;\n\n const lineLeadingSpaces = line.length - line.trimStart().length;\n\n for (const match of trimmedLine.matchAll(\n CLASS_BETWEEN_EXTRA_SPACES_REGEX_GLOBAL\n )) {\n const matchStartInLine = lineLeadingSpaces + match.index;\n const matchEndInLine = matchStartInLine + match[0].length;\n\n result.push({\n messageId: CLASS_SPACING_MESSAGE_IDS.extraSpacing,\n loc: {\n start: {\n line: loc.start.line + lineIndex,\n column: toColumn(lineIndex, matchStartInLine, loc) + 1,\n },\n end: {\n line: loc.start.line + lineIndex,\n column: toColumn(lineIndex, matchEndInLine, loc),\n },\n },\n range: [\n range[0] + lineStart + matchStartInLine + 1,\n range[0] + lineStart + matchEndInLine,\n ],\n });\n }\n }\n}\n\n/**\n * @param {string} line\n * @param {number} lineIndex\n * @param {boolean} isSingleLine\n * @param {SourceLocation} loc\n */\nfunction trailingLoc(line, lineIndex, isSingleLine, loc) {\n const trailingSpaces = line.length - line.trimEnd().length;\n if (isSingleLine) {\n return {\n start: { line: loc.end.line, column: loc.end.column - trailingSpaces },\n end: { line: loc.end.line, column: loc.end.column },\n };\n }\n const columnOffset = lineIndex === 0 ? loc.start.column : 0;\n return {\n start: {\n line: loc.start.line + lineIndex,\n column: columnOffset + line.length - trailingSpaces,\n },\n end: {\n line: loc.start.line + lineIndex,\n column: columnOffset + line.length,\n },\n };\n}\n\n/**\n * @param {string} value\n * @param {SourceLocation} loc\n * @param {Range} range\n * @param {ClassSpacingResult} result\n */\nfunction checkTrailing(value, loc, range, result) {\n const lineEntries = splitLines(value);\n const isSingleLine = lineEntries.length === 1;\n\n for (let i = 0; i < lineEntries.length; i++) {\n const { line, start: lineStart } = lineEntries[i];\n if (!line.endsWith(\" \")) continue;\n\n const trailingSpaces = line.length - line.trimEnd().length;\n result.push({\n messageId: CLASS_SPACING_MESSAGE_IDS.extraSpacing,\n loc: trailingLoc(line, i, isSingleLine, loc),\n range: [\n range[0] + lineStart + line.length - trailingSpaces,\n range[0] + lineStart + line.length,\n ],\n });\n }\n}\n\nexport function classSpacing() {\n return {\n /**\n * @param {AttributeValueAdapter} classValue\n * @returns {ClassSpacingResult}\n */\n checkClassValue(classValue) {\n /** @type {ClassSpacingResult} */\n const result = [];\n\n if (classValue.hasExpression()) {\n return result;\n }\n\n const value = classValue.getValue();\n if (!value) {\n return result;\n }\n\n const loc = classValue.getLocation();\n const range = classValue.getRange();\n\n checkLeading(value, loc, range, result);\n checkBetween(value, loc, range, result);\n checkTrailing(value, loc, range, result);\n\n return result;\n },\n };\n}\n","/**\n * @import {\n * AttributeValueAdapter,\n * NoDuplicateClassResult\n * } from \"../types\"\n */\n\n/**\n * @type {{\n * duplicateClass: \"duplicateClass\";\n * }}\n */\nexport const NO_DUPLICATE_CLASS_MESSAGE_IDS = {\n duplicateClass: \"duplicateClass\",\n};\n\n/**\n * Split class string into tokens (class names and spaces) with their positions\n *\n * @param {string} value - The class attribute value\n * @returns {{ value: string; pos: number }[]}\n */\nfunction splitClassAndSpaces(value) {\n /** @type {{ value: string; pos: number }[]} */\n const result = [];\n const regex = /(\\s+|\\S+)/g;\n /** @type {RegExpExecArray | null} */\n let match = null;\n\n while ((match = regex.exec(value)) !== null) {\n result.push({\n value: match[0],\n pos: match.index,\n });\n }\n\n return result;\n}\n\nexport function noDuplicateClass() {\n return {\n /**\n * @param {AttributeValueAdapter} classValue\n * @returns {NoDuplicateClassResult}\n */\n checkClassValue(classValue) {\n /** @type {NoDuplicateClassResult} */\n const result = [];\n\n if (classValue.hasExpression()) {\n return result;\n }\n\n const value = classValue.getValue();\n if (!value) {\n return result;\n }\n\n const loc = classValue.getLocation();\n const range = classValue.getRange();\n\n const classesAndSpaces = splitClassAndSpaces(value);\n const classSet = new Set();\n\n classesAndSpaces.forEach(({ value, pos }) => {\n const className = value.trim();\n\n if (className.length) {\n if (classSet.has(className)) {\n const classStart = {\n line: loc.start.line,\n column: loc.start.column + pos,\n };\n const classEnd = {\n line: loc.start.line,\n column: loc.start.column + pos + value.length,\n };\n result.push({\n messageId: NO_DUPLICATE_CLASS_MESSAGE_IDS.duplicateClass,\n loc: {\n start: classStart,\n end: classEnd,\n },\n range: [range[0] + pos, range[0] + pos + value.length],\n data: {\n className,\n },\n });\n } else {\n classSet.add(className);\n }\n }\n });\n\n return result;\n },\n };\n}\n"],"mappings":"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","names":["element","value"]}
|