@herb-tools/linter 0.8.9 → 0.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +5 -5
- package/dist/{src/cli → cli}/argument-parser.js +15 -2
- package/dist/cli/argument-parser.js.map +1 -0
- package/dist/{src/cli → cli}/file-processor.js +155 -9
- package/dist/cli/file-processor.js.map +1 -0
- package/dist/cli/file-url.js +6 -0
- package/dist/cli/file-url.js.map +1 -0
- package/dist/cli/formatters/base-formatter.js.map +1 -0
- package/dist/{src/cli → cli}/formatters/detailed-formatter.js +16 -19
- package/dist/cli/formatters/detailed-formatter.js.map +1 -0
- package/dist/cli/formatters/github-actions-formatter.js.map +1 -0
- package/dist/cli/formatters/index.js.map +1 -0
- package/dist/cli/formatters/json-formatter.js.map +1 -0
- package/dist/cli/formatters/simple-formatter.js +54 -0
- package/dist/cli/formatters/simple-formatter.js.map +1 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/lint-worker.js +143 -0
- package/dist/cli/lint-worker.js.map +1 -0
- package/dist/cli/output-manager.js.map +1 -0
- package/dist/{src/cli → cli}/summary-reporter.js +13 -16
- package/dist/cli/summary-reporter.js.map +1 -0
- package/dist/{src/cli.js → cli.js} +5 -3
- package/dist/cli.js.map +1 -0
- package/dist/{src/custom-rule-loader.js → custom-rule-loader.js} +20 -4
- package/dist/custom-rule-loader.js.map +1 -0
- package/dist/herb-disable-comment-utils.js.map +1 -0
- package/dist/herb-lint.js +60648 -17513
- package/dist/herb-lint.js.map +1 -1
- package/dist/index.cjs +2621 -934
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +2554 -873
- package/dist/index.js.map +1 -1
- package/dist/lint-worker.js +71462 -0
- package/dist/lint-worker.js.map +1 -0
- package/dist/linter-ignore.js.map +1 -0
- package/dist/{src/linter.js → linter.js} +89 -74
- package/dist/linter.js.map +1 -0
- package/dist/loader.cjs +31206 -7834
- package/dist/loader.cjs.map +1 -1
- package/dist/loader.js +31168 -7802
- package/dist/loader.js.map +1 -1
- package/dist/parse-cache.js +30 -0
- package/dist/parse-cache.js.map +1 -0
- package/dist/rules/actionview-no-silent-helper.js +45 -0
- package/dist/rules/actionview-no-silent-helper.js.map +1 -0
- package/dist/{src/rules → rules}/erb-comment-syntax.js +2 -2
- package/dist/rules/erb-comment-syntax.js.map +1 -0
- package/dist/{src/rules → rules}/erb-no-case-node-children.js +2 -2
- package/dist/rules/erb-no-case-node-children.js.map +1 -0
- package/dist/rules/erb-no-conditional-html-element.js +38 -0
- package/dist/rules/erb-no-conditional-html-element.js.map +1 -0
- package/dist/rules/erb-no-conditional-open-tag.js +24 -0
- package/dist/rules/erb-no-conditional-open-tag.js.map +1 -0
- package/dist/rules/erb-no-duplicate-branch-elements.js +245 -0
- package/dist/rules/erb-no-duplicate-branch-elements.js.map +1 -0
- package/dist/{src/rules → rules}/erb-no-empty-tags.js +2 -2
- package/dist/rules/erb-no-empty-tags.js.map +1 -0
- package/dist/{src/rules → rules}/erb-no-extra-newline.js +4 -21
- package/dist/rules/erb-no-extra-newline.js.map +1 -0
- package/dist/{src/rules → rules}/erb-no-extra-whitespace-inside-tags.js +39 -13
- package/dist/rules/erb-no-extra-whitespace-inside-tags.js.map +1 -0
- package/dist/rules/erb-no-inline-case-conditions.js +40 -0
- package/dist/rules/erb-no-inline-case-conditions.js.map +1 -0
- package/dist/rules/erb-no-instance-variables-in-partials.js +67 -0
- package/dist/rules/erb-no-instance-variables-in-partials.js.map +1 -0
- package/dist/rules/erb-no-interpolated-class-names.js +47 -0
- package/dist/rules/erb-no-interpolated-class-names.js.map +1 -0
- package/dist/rules/erb-no-javascript-tag-helper.js +34 -0
- package/dist/rules/erb-no-javascript-tag-helper.js.map +1 -0
- package/dist/{src/rules → rules}/erb-no-output-control-flow.js +9 -12
- package/dist/rules/erb-no-output-control-flow.js.map +1 -0
- package/dist/rules/erb-no-output-in-attribute-name.js +30 -0
- package/dist/rules/erb-no-output-in-attribute-name.js.map +1 -0
- package/dist/rules/erb-no-output-in-attribute-position.js +30 -0
- package/dist/rules/erb-no-output-in-attribute-position.js.map +1 -0
- package/dist/rules/erb-no-raw-output-in-attribute-value.js +35 -0
- package/dist/rules/erb-no-raw-output-in-attribute-value.js.map +1 -0
- package/dist/{src/rules → rules}/erb-no-silent-tag-in-attribute-name.js +2 -2
- package/dist/rules/erb-no-silent-tag-in-attribute-name.js.map +1 -0
- package/dist/rules/erb-no-statement-in-script.js +58 -0
- package/dist/rules/erb-no-statement-in-script.js.map +1 -0
- package/dist/rules/erb-no-then-in-control-flow.js +45 -0
- package/dist/rules/erb-no-then-in-control-flow.js.map +1 -0
- package/dist/rules/erb-no-trailing-whitespace.js +138 -0
- package/dist/rules/erb-no-trailing-whitespace.js.map +1 -0
- package/dist/rules/erb-no-unsafe-js-attribute.js +36 -0
- package/dist/rules/erb-no-unsafe-js-attribute.js.map +1 -0
- package/dist/rules/erb-no-unsafe-raw.js +63 -0
- package/dist/rules/erb-no-unsafe-raw.js.map +1 -0
- package/dist/rules/erb-no-unsafe-script-interpolation.js +54 -0
- package/dist/rules/erb-no-unsafe-script-interpolation.js.map +1 -0
- package/dist/{src/rules → rules}/erb-prefer-image-tag-helper.js +5 -4
- package/dist/rules/erb-prefer-image-tag-helper.js.map +1 -0
- package/dist/{src/rules → rules}/erb-require-trailing-newline.js +2 -2
- package/dist/rules/erb-require-trailing-newline.js.map +1 -0
- package/dist/{src/rules → rules}/erb-require-whitespace-inside-tags.js +39 -15
- package/dist/rules/erb-require-whitespace-inside-tags.js.map +1 -0
- package/dist/{src/rules → rules}/erb-right-trim.js +2 -2
- package/dist/rules/erb-right-trim.js.map +1 -0
- package/dist/{src/rules → rules}/erb-strict-locals-comment-syntax.js +5 -5
- package/dist/rules/erb-strict-locals-comment-syntax.js.map +1 -0
- package/dist/{src/rules → rules}/erb-strict-locals-required.js +2 -2
- package/dist/rules/erb-strict-locals-required.js.map +1 -0
- package/dist/rules/file-utils.js.map +1 -0
- package/dist/rules/herb-disable-comment-base.js.map +1 -0
- package/dist/{src/rules → rules}/herb-disable-comment-malformed.js +2 -2
- package/dist/rules/herb-disable-comment-malformed.js.map +1 -0
- package/dist/{src/rules → rules}/herb-disable-comment-missing-rules.js +2 -2
- package/dist/rules/herb-disable-comment-missing-rules.js.map +1 -0
- package/dist/{src/rules → rules}/herb-disable-comment-no-duplicate-rules.js +2 -2
- package/dist/rules/herb-disable-comment-no-duplicate-rules.js.map +1 -0
- package/dist/{src/rules → rules}/herb-disable-comment-no-redundant-all.js +2 -2
- package/dist/rules/herb-disable-comment-no-redundant-all.js.map +1 -0
- package/dist/{src/rules → rules}/herb-disable-comment-unnecessary.js +2 -2
- package/dist/rules/herb-disable-comment-unnecessary.js.map +1 -0
- package/dist/{src/rules → rules}/herb-disable-comment-valid-rule-name.js +2 -2
- package/dist/rules/herb-disable-comment-valid-rule-name.js.map +1 -0
- package/dist/rules/html-allowed-script-type.js +57 -0
- package/dist/rules/html-allowed-script-type.js.map +1 -0
- package/dist/rules/html-anchor-require-href.js +68 -0
- package/dist/rules/html-anchor-require-href.js.map +1 -0
- package/dist/{src/rules → rules}/html-aria-attribute-must-be-valid.js +3 -3
- package/dist/rules/html-aria-attribute-must-be-valid.js.map +1 -0
- package/dist/{src/rules → rules}/html-aria-label-is-well-formatted.js +3 -3
- package/dist/rules/html-aria-label-is-well-formatted.js.map +1 -0
- package/dist/{src/rules → rules}/html-aria-level-must-be-valid.js +3 -3
- package/dist/rules/html-aria-level-must-be-valid.js.map +1 -0
- package/dist/{src/rules → rules}/html-aria-role-heading-requires-level.js +5 -4
- package/dist/rules/html-aria-role-heading-requires-level.js.map +1 -0
- package/dist/{src/rules → rules}/html-aria-role-must-be-valid.js +3 -3
- package/dist/rules/html-aria-role-must-be-valid.js.map +1 -0
- package/dist/{src/rules → rules}/html-attribute-double-quotes.js +4 -4
- package/dist/rules/html-attribute-double-quotes.js.map +1 -0
- package/dist/{src/rules → rules}/html-attribute-equals-spacing.js +2 -2
- package/dist/rules/html-attribute-equals-spacing.js.map +1 -0
- package/dist/{src/rules → rules}/html-attribute-values-require-quotes.js +2 -2
- package/dist/rules/html-attribute-values-require-quotes.js.map +1 -0
- package/dist/{src/rules → rules}/html-avoid-both-disabled-and-aria-disabled.js +9 -9
- package/dist/rules/html-avoid-both-disabled-and-aria-disabled.js.map +1 -0
- package/dist/{src/rules → rules}/html-body-only-elements.js +5 -4
- package/dist/rules/html-body-only-elements.js.map +1 -0
- package/dist/{src/rules → rules}/html-boolean-attributes-no-value.js +4 -3
- package/dist/rules/html-boolean-attributes-no-value.js.map +1 -0
- package/dist/rules/html-details-has-summary.js +52 -0
- package/dist/rules/html-details-has-summary.js.map +1 -0
- package/dist/{src/rules → rules}/html-head-only-elements.js +6 -5
- package/dist/rules/html-head-only-elements.js.map +1 -0
- package/dist/{src/rules → rules}/html-iframe-has-title.js +8 -11
- package/dist/rules/html-iframe-has-title.js.map +1 -0
- package/dist/{src/rules → rules}/html-img-require-alt.js +11 -5
- package/dist/rules/html-img-require-alt.js.map +1 -0
- package/dist/{src/rules → rules}/html-input-require-autocomplete.js +7 -10
- package/dist/rules/html-input-require-autocomplete.js.map +1 -0
- package/dist/{src/rules → rules}/html-navigation-has-label.js +6 -5
- package/dist/rules/html-navigation-has-label.js.map +1 -0
- package/dist/rules/html-no-abstract-roles.js +29 -0
- package/dist/rules/html-no-abstract-roles.js.map +1 -0
- package/dist/rules/html-no-aria-hidden-on-body.js +42 -0
- package/dist/rules/html-no-aria-hidden-on-body.js.map +1 -0
- package/dist/{src/rules → rules}/html-no-aria-hidden-on-focusable.js +6 -5
- package/dist/rules/html-no-aria-hidden-on-focusable.js.map +1 -0
- package/dist/{src/rules → rules}/html-no-block-inside-inline.js +6 -9
- package/dist/rules/html-no-block-inside-inline.js.map +1 -0
- package/dist/{src/rules → rules}/html-no-duplicate-attributes.js +4 -3
- package/dist/rules/html-no-duplicate-attributes.js.map +1 -0
- package/dist/{src/rules → rules}/html-no-duplicate-ids.js +14 -11
- package/dist/rules/html-no-duplicate-ids.js.map +1 -0
- package/dist/{src/rules → rules}/html-no-duplicate-meta-names.js +22 -20
- package/dist/rules/html-no-duplicate-meta-names.js.map +1 -0
- package/dist/{src/rules → rules}/html-no-empty-attributes.js +2 -2
- package/dist/rules/html-no-empty-attributes.js.map +1 -0
- package/dist/rules/html-no-empty-headings.js +98 -0
- package/dist/rules/html-no-empty-headings.js.map +1 -0
- package/dist/{src/rules → rules}/html-no-nested-links.js +23 -15
- package/dist/rules/html-no-nested-links.js.map +1 -0
- package/dist/{src/rules → rules}/html-no-positive-tab-index.js +3 -3
- package/dist/rules/html-no-positive-tab-index.js.map +1 -0
- package/dist/{src/rules → rules}/html-no-self-closing.js +4 -4
- package/dist/rules/html-no-self-closing.js.map +1 -0
- package/dist/{src/rules → rules}/html-no-space-in-tag.js +4 -6
- package/dist/rules/html-no-space-in-tag.js.map +1 -0
- package/dist/{src/rules → rules}/html-no-title-attribute.js +6 -5
- package/dist/rules/html-no-title-attribute.js.map +1 -0
- package/dist/{src/rules → rules}/html-no-underscores-in-attribute-names.js +2 -2
- package/dist/rules/html-no-underscores-in-attribute-names.js.map +1 -0
- package/dist/rules/html-require-closing-tags.js +29 -0
- package/dist/rules/html-require-closing-tags.js.map +1 -0
- package/dist/{src/rules → rules}/html-tag-name-lowercase.js +13 -9
- package/dist/rules/html-tag-name-lowercase.js.map +1 -0
- package/dist/{src/rules → rules}/index.js +19 -0
- package/dist/rules/index.js.map +1 -0
- package/dist/{src/rules → rules}/parser-no-errors.js +3 -3
- package/dist/rules/parser-no-errors.js.map +1 -0
- package/dist/{src/rules → rules}/rule-utils.js +141 -219
- package/dist/rules/rule-utils.js.map +1 -0
- package/dist/rules/string-utils.js.map +1 -0
- package/dist/{src/rules → rules}/svg-tag-name-capitalization.js +7 -6
- package/dist/rules/svg-tag-name-capitalization.js.map +1 -0
- package/dist/rules/turbo-permanent-require-id.js +34 -0
- package/dist/rules/turbo-permanent-require-id.js.map +1 -0
- package/dist/{src/rules.js → rules.js} +56 -10
- package/dist/rules.js.map +1 -0
- package/dist/types/cli/argument-parser.d.ts +1 -0
- package/dist/types/cli/file-processor.d.ts +13 -0
- package/dist/types/cli/file-url.d.ts +1 -0
- package/dist/types/cli/index.d.ts +1 -0
- package/dist/types/cli/lint-worker.d.ts +34 -0
- package/dist/types/custom-rule-loader.d.ts +4 -0
- package/dist/types/index.d.ts +1 -0
- package/dist/types/linter.d.ts +13 -6
- package/dist/types/parse-cache.d.ts +9 -0
- package/dist/types/{src/rules/html-aria-level-must-be-valid.d.ts → rules/actionview-no-silent-helper.d.ts} +4 -3
- package/dist/types/rules/erb-comment-syntax.d.ts +1 -1
- package/dist/types/rules/erb-no-case-node-children.d.ts +1 -1
- package/dist/types/{src/rules/herb-disable-comment-malformed.d.ts → rules/erb-no-conditional-html-element.d.ts} +3 -3
- package/dist/types/{src/rules/erb-prefer-image-tag-helper.d.ts → rules/erb-no-conditional-open-tag.d.ts} +3 -3
- package/dist/types/rules/erb-no-duplicate-branch-elements.d.ts +17 -0
- package/dist/types/rules/erb-no-empty-tags.d.ts +1 -1
- package/dist/types/rules/erb-no-extra-newline.d.ts +1 -1
- package/dist/types/rules/erb-no-extra-whitespace-inside-tags.d.ts +1 -1
- package/dist/types/{src/rules/html-no-duplicate-attributes.d.ts → rules/erb-no-inline-case-conditions.d.ts} +4 -3
- package/dist/types/rules/erb-no-instance-variables-in-partials.d.ts +10 -0
- package/dist/types/{src/rules/html-no-aria-hidden-on-focusable.d.ts → rules/erb-no-interpolated-class-names.d.ts} +2 -2
- package/dist/types/{src/rules/html-aria-attribute-must-be-valid.d.ts → rules/erb-no-javascript-tag-helper.d.ts} +2 -2
- package/dist/types/rules/erb-no-output-control-flow.d.ts +1 -1
- package/dist/types/{src/rules/erb-no-silent-tag-in-attribute-name.d.ts → rules/erb-no-output-in-attribute-name.d.ts} +2 -2
- package/dist/types/{src/rules/herb-disable-comment-missing-rules.d.ts → rules/erb-no-output-in-attribute-position.d.ts} +2 -2
- package/dist/types/{src/rules/erb-no-empty-tags.d.ts → rules/erb-no-raw-output-in-attribute-value.d.ts} +2 -2
- package/dist/types/rules/erb-no-silent-tag-in-attribute-name.d.ts +1 -1
- package/dist/types/{src/rules/html-navigation-has-label.d.ts → rules/erb-no-statement-in-script.d.ts} +2 -2
- package/dist/types/rules/erb-no-then-in-control-flow.d.ts +9 -0
- package/dist/types/rules/erb-no-trailing-whitespace.d.ts +19 -0
- package/dist/types/{src/rules/html-no-positive-tab-index.d.ts → rules/erb-no-unsafe-js-attribute.d.ts} +2 -2
- package/dist/types/{src/rules/erb-no-case-node-children.d.ts → rules/erb-no-unsafe-raw.d.ts} +2 -2
- package/dist/types/rules/erb-no-unsafe-script-interpolation.d.ts +8 -0
- package/dist/types/rules/erb-prefer-image-tag-helper.d.ts +1 -1
- package/dist/types/rules/erb-require-trailing-newline.d.ts +1 -1
- package/dist/types/rules/erb-require-whitespace-inside-tags.d.ts +1 -1
- package/dist/types/rules/erb-right-trim.d.ts +1 -1
- package/dist/types/rules/erb-strict-locals-comment-syntax.d.ts +1 -1
- package/dist/types/rules/erb-strict-locals-required.d.ts +1 -1
- package/dist/types/rules/herb-disable-comment-malformed.d.ts +1 -1
- package/dist/types/rules/herb-disable-comment-missing-rules.d.ts +1 -1
- package/dist/types/rules/herb-disable-comment-no-duplicate-rules.d.ts +1 -1
- package/dist/types/rules/herb-disable-comment-no-redundant-all.d.ts +1 -1
- package/dist/types/rules/herb-disable-comment-unnecessary.d.ts +1 -1
- package/dist/types/rules/herb-disable-comment-valid-rule-name.d.ts +1 -1
- package/dist/types/{src/rules/html-anchor-require-href.d.ts → rules/html-allowed-script-type.d.ts} +2 -2
- package/dist/types/rules/html-anchor-require-href.d.ts +3 -2
- package/dist/types/rules/html-aria-attribute-must-be-valid.d.ts +1 -1
- package/dist/types/rules/html-aria-label-is-well-formatted.d.ts +1 -1
- package/dist/types/rules/html-aria-level-must-be-valid.d.ts +1 -1
- package/dist/types/rules/html-aria-role-heading-requires-level.d.ts +1 -1
- package/dist/types/rules/html-aria-role-must-be-valid.d.ts +1 -1
- package/dist/types/rules/html-attribute-double-quotes.d.ts +1 -1
- package/dist/types/rules/html-attribute-equals-spacing.d.ts +1 -1
- package/dist/types/rules/html-attribute-values-require-quotes.d.ts +1 -1
- package/dist/types/rules/html-avoid-both-disabled-and-aria-disabled.d.ts +1 -1
- package/dist/types/rules/html-body-only-elements.d.ts +1 -1
- package/dist/types/rules/html-boolean-attributes-no-value.d.ts +1 -1
- package/dist/types/{src/rules/html-no-empty-attributes.d.ts → rules/html-details-has-summary.d.ts} +4 -3
- package/dist/types/rules/html-head-only-elements.d.ts +1 -1
- package/dist/types/rules/html-iframe-has-title.d.ts +1 -1
- package/dist/types/rules/html-img-require-alt.d.ts +1 -1
- package/dist/types/rules/html-input-require-autocomplete.d.ts +1 -1
- package/dist/types/rules/html-navigation-has-label.d.ts +1 -1
- package/dist/types/{src/rules/html-no-empty-headings.d.ts → rules/html-no-abstract-roles.d.ts} +2 -2
- package/dist/types/{src/rules/erb-no-output-control-flow.d.ts → rules/html-no-aria-hidden-on-body.d.ts} +3 -3
- package/dist/types/rules/html-no-aria-hidden-on-focusable.d.ts +1 -1
- package/dist/types/rules/html-no-block-inside-inline.d.ts +1 -1
- package/dist/types/rules/html-no-duplicate-attributes.d.ts +1 -1
- package/dist/types/rules/html-no-duplicate-ids.d.ts +1 -1
- package/dist/types/rules/html-no-duplicate-meta-names.d.ts +1 -1
- package/dist/types/rules/html-no-empty-attributes.d.ts +1 -1
- package/dist/types/rules/html-no-empty-headings.d.ts +1 -1
- package/dist/types/rules/html-no-nested-links.d.ts +1 -1
- package/dist/types/rules/html-no-positive-tab-index.d.ts +1 -1
- package/dist/types/rules/html-no-self-closing.d.ts +1 -1
- package/dist/types/rules/html-no-space-in-tag.d.ts +1 -1
- package/dist/types/rules/html-no-title-attribute.d.ts +1 -1
- package/dist/types/rules/html-no-underscores-in-attribute-names.d.ts +1 -1
- package/dist/types/{src/rules/html-body-only-elements.d.ts → rules/html-require-closing-tags.d.ts} +4 -3
- package/dist/types/rules/html-tag-name-lowercase.d.ts +1 -1
- package/dist/types/rules/index.d.ts +19 -0
- package/dist/types/rules/parser-no-errors.d.ts +1 -1
- package/dist/types/rules/rule-utils.d.ts +35 -88
- package/dist/types/rules/svg-tag-name-capitalization.d.ts +1 -1
- package/dist/types/{src/rules/html-aria-role-must-be-valid.d.ts → rules/turbo-permanent-require-id.d.ts} +2 -2
- package/dist/types/types.d.ts +25 -7
- package/dist/types/urls.d.ts +1 -0
- package/dist/{src/types.js → types.js} +53 -0
- package/dist/types.js.map +1 -0
- package/dist/urls.js +5 -0
- package/dist/urls.js.map +1 -0
- package/docs/rules/README.md +23 -2
- package/docs/rules/actionview-no-silent-helper.md +57 -0
- package/docs/rules/erb-no-conditional-html-element.md +90 -0
- package/docs/rules/erb-no-conditional-open-tag.md +130 -0
- package/docs/rules/erb-no-duplicate-branch-elements.md +98 -0
- package/docs/rules/erb-no-inline-case-conditions.md +85 -0
- package/docs/rules/erb-no-instance-variables-in-partials.md +43 -0
- package/docs/rules/erb-no-interpolated-class-names.md +57 -0
- package/docs/rules/erb-no-javascript-tag-helper.md +33 -0
- package/docs/rules/erb-no-output-in-attribute-name.md +38 -0
- package/docs/rules/erb-no-output-in-attribute-position.md +60 -0
- package/docs/rules/erb-no-raw-output-in-attribute-value.md +37 -0
- package/docs/rules/erb-no-statement-in-script.md +68 -0
- package/docs/rules/erb-no-then-in-control-flow.md +86 -0
- package/docs/rules/erb-no-trailing-whitespace.md +69 -0
- package/docs/rules/erb-no-unsafe-js-attribute.md +41 -0
- package/docs/rules/erb-no-unsafe-raw.md +47 -0
- package/docs/rules/erb-no-unsafe-script-interpolation.md +73 -0
- package/docs/rules/html-allowed-script-type.md +59 -0
- package/docs/rules/html-anchor-require-href.md +19 -6
- package/docs/rules/html-details-has-summary.md +46 -0
- package/docs/rules/html-img-require-alt.md +5 -3
- package/docs/rules/html-no-abstract-roles.md +74 -0
- package/docs/rules/html-no-aria-hidden-on-body.md +44 -0
- package/docs/rules/html-require-closing-tags.md +142 -0
- package/docs/rules/parser-no-errors.md +4 -17
- package/docs/rules/turbo-permanent-require-id.md +41 -0
- package/package.json +12 -11
- package/src/cli/argument-parser.ts +20 -2
- package/src/cli/file-processor.ts +189 -10
- package/src/cli/file-url.ts +6 -0
- package/src/cli/formatters/detailed-formatter.ts +19 -21
- package/src/cli/formatters/simple-formatter.ts +23 -13
- package/src/cli/index.ts +2 -0
- package/src/cli/lint-worker.ts +208 -0
- package/src/cli/summary-reporter.ts +14 -15
- package/src/cli.ts +5 -3
- package/src/custom-rule-loader.ts +20 -5
- package/src/herb-disable-comment-utils.ts +0 -3
- package/src/index.ts +1 -0
- package/src/linter.ts +98 -79
- package/src/parse-cache.ts +39 -0
- package/src/rules/actionview-no-silent-helper.ts +58 -0
- package/src/rules/erb-comment-syntax.ts +2 -2
- package/src/rules/erb-no-case-node-children.ts +2 -2
- package/src/rules/erb-no-conditional-html-element.ts +53 -0
- package/src/rules/erb-no-conditional-open-tag.ts +37 -0
- package/src/rules/erb-no-duplicate-branch-elements.ts +320 -0
- package/src/rules/erb-no-empty-tags.ts +2 -2
- package/src/rules/erb-no-extra-newline.ts +5 -25
- package/src/rules/erb-no-extra-whitespace-inside-tags.ts +45 -15
- package/src/rules/erb-no-inline-case-conditions.ts +54 -0
- package/src/rules/erb-no-instance-variables-in-partials.ts +101 -0
- package/src/rules/erb-no-interpolated-class-names.ts +65 -0
- package/src/rules/erb-no-javascript-tag-helper.ts +47 -0
- package/src/rules/erb-no-output-control-flow.ts +10 -10
- package/src/rules/erb-no-output-in-attribute-name.ts +39 -0
- package/src/rules/erb-no-output-in-attribute-position.ts +39 -0
- package/src/rules/erb-no-raw-output-in-attribute-value.ts +47 -0
- package/src/rules/erb-no-silent-tag-in-attribute-name.ts +2 -2
- package/src/rules/erb-no-statement-in-script.ts +82 -0
- package/src/rules/erb-no-then-in-control-flow.ts +62 -0
- package/src/rules/erb-no-trailing-whitespace.ts +187 -0
- package/src/rules/erb-no-unsafe-js-attribute.ts +47 -0
- package/src/rules/erb-no-unsafe-raw.ts +83 -0
- package/src/rules/erb-no-unsafe-script-interpolation.ts +76 -0
- package/src/rules/erb-prefer-image-tag-helper.ts +5 -4
- package/src/rules/erb-require-trailing-newline.ts +2 -2
- package/src/rules/erb-require-whitespace-inside-tags.ts +42 -18
- package/src/rules/erb-right-trim.ts +2 -2
- package/src/rules/erb-strict-locals-comment-syntax.ts +5 -5
- package/src/rules/erb-strict-locals-required.ts +2 -2
- package/src/rules/herb-disable-comment-malformed.ts +2 -2
- package/src/rules/herb-disable-comment-missing-rules.ts +2 -2
- package/src/rules/herb-disable-comment-no-duplicate-rules.ts +2 -2
- package/src/rules/herb-disable-comment-no-redundant-all.ts +2 -2
- package/src/rules/herb-disable-comment-unnecessary.ts +2 -2
- package/src/rules/herb-disable-comment-valid-rule-name.ts +2 -2
- package/src/rules/html-allowed-script-type.ts +84 -0
- package/src/rules/html-anchor-require-href.ts +73 -11
- package/src/rules/html-aria-attribute-must-be-valid.ts +3 -3
- package/src/rules/html-aria-label-is-well-formatted.ts +3 -3
- package/src/rules/html-aria-level-must-be-valid.ts +3 -3
- package/src/rules/html-aria-role-heading-requires-level.ts +5 -4
- package/src/rules/html-aria-role-must-be-valid.ts +3 -3
- package/src/rules/html-attribute-double-quotes.ts +4 -4
- package/src/rules/html-attribute-equals-spacing.ts +2 -2
- package/src/rules/html-attribute-values-require-quotes.ts +2 -2
- package/src/rules/html-avoid-both-disabled-and-aria-disabled.ts +10 -11
- package/src/rules/html-body-only-elements.ts +5 -4
- package/src/rules/html-boolean-attributes-no-value.ts +4 -3
- package/src/rules/html-details-has-summary.ts +69 -0
- package/src/rules/html-head-only-elements.ts +6 -5
- package/src/rules/html-iframe-has-title.ts +8 -11
- package/src/rules/html-img-require-alt.ts +16 -5
- package/src/rules/html-input-require-autocomplete.ts +7 -10
- package/src/rules/html-navigation-has-label.ts +6 -5
- package/src/rules/html-no-abstract-roles.ts +40 -0
- package/src/rules/html-no-aria-hidden-on-body.ts +58 -0
- package/src/rules/html-no-aria-hidden-on-focusable.ts +6 -5
- package/src/rules/html-no-block-inside-inline.ts +7 -13
- package/src/rules/html-no-duplicate-attributes.ts +4 -3
- package/src/rules/html-no-duplicate-ids.ts +16 -13
- package/src/rules/html-no-duplicate-meta-names.ts +20 -19
- package/src/rules/html-no-empty-attributes.ts +2 -2
- package/src/rules/html-no-empty-headings.ts +44 -58
- package/src/rules/html-no-nested-links.ts +25 -16
- package/src/rules/html-no-positive-tab-index.ts +3 -3
- package/src/rules/html-no-self-closing.ts +5 -5
- package/src/rules/html-no-space-in-tag.ts +5 -8
- package/src/rules/html-no-title-attribute.ts +6 -5
- package/src/rules/html-no-underscores-in-attribute-names.ts +2 -2
- package/src/rules/html-require-closing-tags.ts +41 -0
- package/src/rules/html-tag-name-lowercase.ts +14 -9
- package/src/rules/index.ts +19 -0
- package/src/rules/parser-no-errors.ts +3 -3
- package/src/rules/rule-utils.ts +162 -279
- package/src/rules/svg-tag-name-capitalization.ts +10 -10
- package/src/rules/turbo-permanent-require-id.ts +49 -0
- package/src/rules.ts +60 -10
- package/src/types.ts +76 -7
- package/src/urls.ts +5 -0
- package/dist/package.json +0 -65
- package/dist/src/cli/argument-parser.js.map +0 -1
- package/dist/src/cli/file-processor.js.map +0 -1
- package/dist/src/cli/formatters/base-formatter.js.map +0 -1
- package/dist/src/cli/formatters/detailed-formatter.js.map +0 -1
- package/dist/src/cli/formatters/github-actions-formatter.js.map +0 -1
- package/dist/src/cli/formatters/index.js.map +0 -1
- package/dist/src/cli/formatters/json-formatter.js.map +0 -1
- package/dist/src/cli/formatters/simple-formatter.js +0 -44
- package/dist/src/cli/formatters/simple-formatter.js.map +0 -1
- package/dist/src/cli/index.js.map +0 -1
- package/dist/src/cli/output-manager.js.map +0 -1
- package/dist/src/cli/summary-reporter.js.map +0 -1
- package/dist/src/cli.js.map +0 -1
- package/dist/src/custom-rule-loader.js.map +0 -1
- package/dist/src/herb-disable-comment-utils.js.map +0 -1
- package/dist/src/herb-lint.js +0 -5
- package/dist/src/herb-lint.js.map +0 -1
- package/dist/src/index.js +0 -5
- package/dist/src/index.js.map +0 -1
- package/dist/src/linter-ignore.js.map +0 -1
- package/dist/src/linter.js.map +0 -1
- package/dist/src/loader.js +0 -17
- package/dist/src/loader.js.map +0 -1
- package/dist/src/rules/erb-comment-syntax.js.map +0 -1
- package/dist/src/rules/erb-no-case-node-children.js.map +0 -1
- package/dist/src/rules/erb-no-empty-tags.js.map +0 -1
- package/dist/src/rules/erb-no-extra-newline.js.map +0 -1
- package/dist/src/rules/erb-no-extra-whitespace-inside-tags.js.map +0 -1
- package/dist/src/rules/erb-no-output-control-flow.js.map +0 -1
- package/dist/src/rules/erb-no-silent-tag-in-attribute-name.js.map +0 -1
- package/dist/src/rules/erb-prefer-image-tag-helper.js.map +0 -1
- package/dist/src/rules/erb-require-trailing-newline.js.map +0 -1
- package/dist/src/rules/erb-require-whitespace-inside-tags.js.map +0 -1
- package/dist/src/rules/erb-right-trim.js.map +0 -1
- package/dist/src/rules/erb-strict-locals-comment-syntax.js.map +0 -1
- package/dist/src/rules/erb-strict-locals-required.js.map +0 -1
- package/dist/src/rules/file-utils.js.map +0 -1
- package/dist/src/rules/herb-disable-comment-base.js.map +0 -1
- package/dist/src/rules/herb-disable-comment-malformed.js.map +0 -1
- package/dist/src/rules/herb-disable-comment-missing-rules.js.map +0 -1
- package/dist/src/rules/herb-disable-comment-no-duplicate-rules.js.map +0 -1
- package/dist/src/rules/herb-disable-comment-no-redundant-all.js.map +0 -1
- package/dist/src/rules/herb-disable-comment-unnecessary.js.map +0 -1
- package/dist/src/rules/herb-disable-comment-valid-rule-name.js.map +0 -1
- package/dist/src/rules/html-anchor-require-href.js +0 -32
- package/dist/src/rules/html-anchor-require-href.js.map +0 -1
- package/dist/src/rules/html-aria-attribute-must-be-valid.js.map +0 -1
- package/dist/src/rules/html-aria-label-is-well-formatted.js.map +0 -1
- package/dist/src/rules/html-aria-level-must-be-valid.js.map +0 -1
- package/dist/src/rules/html-aria-role-heading-requires-level.js.map +0 -1
- package/dist/src/rules/html-aria-role-must-be-valid.js.map +0 -1
- package/dist/src/rules/html-attribute-double-quotes.js.map +0 -1
- package/dist/src/rules/html-attribute-equals-spacing.js.map +0 -1
- package/dist/src/rules/html-attribute-values-require-quotes.js.map +0 -1
- package/dist/src/rules/html-avoid-both-disabled-and-aria-disabled.js.map +0 -1
- package/dist/src/rules/html-body-only-elements.js.map +0 -1
- package/dist/src/rules/html-boolean-attributes-no-value.js.map +0 -1
- package/dist/src/rules/html-head-only-elements.js.map +0 -1
- package/dist/src/rules/html-iframe-has-title.js.map +0 -1
- package/dist/src/rules/html-img-require-alt.js.map +0 -1
- package/dist/src/rules/html-input-require-autocomplete.js.map +0 -1
- package/dist/src/rules/html-navigation-has-label.js.map +0 -1
- package/dist/src/rules/html-no-aria-hidden-on-focusable.js.map +0 -1
- package/dist/src/rules/html-no-block-inside-inline.js.map +0 -1
- package/dist/src/rules/html-no-duplicate-attributes.js.map +0 -1
- package/dist/src/rules/html-no-duplicate-ids.js.map +0 -1
- package/dist/src/rules/html-no-duplicate-meta-names.js.map +0 -1
- package/dist/src/rules/html-no-empty-attributes.js.map +0 -1
- package/dist/src/rules/html-no-empty-headings.js +0 -115
- package/dist/src/rules/html-no-empty-headings.js.map +0 -1
- package/dist/src/rules/html-no-nested-links.js.map +0 -1
- package/dist/src/rules/html-no-positive-tab-index.js.map +0 -1
- package/dist/src/rules/html-no-self-closing.js.map +0 -1
- package/dist/src/rules/html-no-space-in-tag.js.map +0 -1
- package/dist/src/rules/html-no-title-attribute.js.map +0 -1
- package/dist/src/rules/html-no-underscores-in-attribute-names.js.map +0 -1
- package/dist/src/rules/html-tag-name-lowercase.js.map +0 -1
- package/dist/src/rules/index.js.map +0 -1
- package/dist/src/rules/parser-no-errors.js.map +0 -1
- package/dist/src/rules/rule-utils.js.map +0 -1
- package/dist/src/rules/string-utils.js.map +0 -1
- package/dist/src/rules/svg-tag-name-capitalization.js.map +0 -1
- package/dist/src/rules.js.map +0 -1
- package/dist/src/types.js.map +0 -1
- package/dist/tsconfig.tsbuildinfo +0 -1
- package/dist/types/src/cli/argument-parser.d.ts +0 -25
- package/dist/types/src/cli/file-processor.d.ts +0 -43
- package/dist/types/src/cli/formatters/base-formatter.d.ts +0 -6
- package/dist/types/src/cli/formatters/detailed-formatter.d.ts +0 -13
- package/dist/types/src/cli/formatters/github-actions-formatter.d.ts +0 -17
- package/dist/types/src/cli/formatters/index.d.ts +0 -5
- package/dist/types/src/cli/formatters/json-formatter.d.ts +0 -48
- package/dist/types/src/cli/formatters/simple-formatter.d.ts +0 -8
- package/dist/types/src/cli/index.d.ts +0 -5
- package/dist/types/src/cli/output-manager.d.ts +0 -32
- package/dist/types/src/cli/summary-reporter.d.ts +0 -28
- package/dist/types/src/cli.d.ts +0 -28
- package/dist/types/src/custom-rule-loader.d.ts +0 -62
- package/dist/types/src/herb-disable-comment-utils.d.ts +0 -69
- package/dist/types/src/herb-lint.d.ts +0 -2
- package/dist/types/src/index.d.ts +0 -4
- package/dist/types/src/linter-ignore.d.ts +0 -12
- package/dist/types/src/linter.d.ts +0 -133
- package/dist/types/src/loader.d.ts +0 -20
- package/dist/types/src/rules/erb-comment-syntax.d.ts +0 -14
- package/dist/types/src/rules/erb-no-extra-newline.d.ts +0 -14
- package/dist/types/src/rules/erb-no-extra-whitespace-inside-tags.d.ts +0 -18
- package/dist/types/src/rules/erb-require-trailing-newline.d.ts +0 -9
- package/dist/types/src/rules/erb-require-whitespace-inside-tags.d.ts +0 -18
- package/dist/types/src/rules/erb-right-trim.d.ts +0 -14
- package/dist/types/src/rules/erb-strict-locals-comment-syntax.d.ts +0 -9
- package/dist/types/src/rules/erb-strict-locals-required.d.ts +0 -9
- package/dist/types/src/rules/file-utils.d.ts +0 -13
- package/dist/types/src/rules/herb-disable-comment-base.d.ts +0 -37
- package/dist/types/src/rules/herb-disable-comment-no-duplicate-rules.d.ts +0 -8
- package/dist/types/src/rules/herb-disable-comment-no-redundant-all.d.ts +0 -8
- package/dist/types/src/rules/herb-disable-comment-unnecessary.d.ts +0 -8
- package/dist/types/src/rules/herb-disable-comment-valid-rule-name.d.ts +0 -8
- package/dist/types/src/rules/html-aria-label-is-well-formatted.d.ts +0 -8
- package/dist/types/src/rules/html-aria-role-heading-requires-level.d.ts +0 -8
- package/dist/types/src/rules/html-attribute-double-quotes.d.ts +0 -15
- package/dist/types/src/rules/html-attribute-equals-spacing.d.ts +0 -14
- package/dist/types/src/rules/html-attribute-values-require-quotes.d.ts +0 -15
- package/dist/types/src/rules/html-avoid-both-disabled-and-aria-disabled.d.ts +0 -8
- package/dist/types/src/rules/html-boolean-attributes-no-value.d.ts +0 -14
- package/dist/types/src/rules/html-head-only-elements.d.ts +0 -9
- package/dist/types/src/rules/html-iframe-has-title.d.ts +0 -8
- package/dist/types/src/rules/html-img-require-alt.d.ts +0 -8
- package/dist/types/src/rules/html-input-require-autocomplete.d.ts +0 -8
- package/dist/types/src/rules/html-no-block-inside-inline.d.ts +0 -8
- package/dist/types/src/rules/html-no-duplicate-ids.d.ts +0 -8
- package/dist/types/src/rules/html-no-duplicate-meta-names.d.ts +0 -9
- package/dist/types/src/rules/html-no-nested-links.d.ts +0 -8
- package/dist/types/src/rules/html-no-self-closing.d.ts +0 -16
- package/dist/types/src/rules/html-no-space-in-tag.d.ts +0 -16
- package/dist/types/src/rules/html-no-title-attribute.d.ts +0 -8
- package/dist/types/src/rules/html-no-underscores-in-attribute-names.d.ts +0 -8
- package/dist/types/src/rules/html-tag-name-lowercase.d.ts +0 -18
- package/dist/types/src/rules/index.d.ts +0 -54
- package/dist/types/src/rules/parser-no-errors.d.ts +0 -9
- package/dist/types/src/rules/rule-utils.d.ts +0 -351
- package/dist/types/src/rules/string-utils.d.ts +0 -15
- package/dist/types/src/rules/svg-tag-name-capitalization.d.ts +0 -16
- package/dist/types/src/rules.d.ts +0 -2
- package/dist/types/src/types.d.ts +0 -190
- /package/dist/{src/cli → cli}/formatters/base-formatter.js +0 -0
- /package/dist/{src/cli → cli}/formatters/github-actions-formatter.js +0 -0
- /package/dist/{src/cli → cli}/formatters/index.js +0 -0
- /package/dist/{src/cli → cli}/formatters/json-formatter.js +0 -0
- /package/dist/{src/cli → cli}/index.js +0 -0
- /package/dist/{src/cli → cli}/output-manager.js +0 -0
- /package/dist/{src/herb-disable-comment-utils.js → herb-disable-comment-utils.js} +0 -0
- /package/dist/{src/linter-ignore.js → linter-ignore.js} +0 -0
- /package/dist/{src/rules → rules}/file-utils.js +0 -0
- /package/dist/{src/rules → rules}/herb-disable-comment-base.js +0 -0
- /package/dist/{src/rules → rules}/string-utils.js +0 -0
|
@@ -1,133 +0,0 @@
|
|
|
1
|
-
import type { RuleClass, Rule, LexerRule, SourceRule, LintResult, LintOffense, UnboundLintOffense, LintContext, AutofixResult } from "./types.js";
|
|
2
|
-
import type { HerbBackend } from "@herb-tools/core";
|
|
3
|
-
import type { RuleConfig, Config } from "@herb-tools/config";
|
|
4
|
-
export interface LinterOptions {
|
|
5
|
-
/**
|
|
6
|
-
* Array of rule classes to use. If not provided, uses default rules.
|
|
7
|
-
*/
|
|
8
|
-
rules?: RuleClass[];
|
|
9
|
-
/**
|
|
10
|
-
* Whether to load custom rules from the project.
|
|
11
|
-
* Defaults to false for backward compatibility.
|
|
12
|
-
*/
|
|
13
|
-
loadCustomRules?: boolean;
|
|
14
|
-
/**
|
|
15
|
-
* Base directory to search for custom rules.
|
|
16
|
-
* Defaults to current working directory.
|
|
17
|
-
*/
|
|
18
|
-
customRulesBaseDir?: string;
|
|
19
|
-
/**
|
|
20
|
-
* Custom glob patterns to search for rule files.
|
|
21
|
-
*/
|
|
22
|
-
customRulesPatterns?: string[];
|
|
23
|
-
/**
|
|
24
|
-
* Whether to suppress custom rule loading errors.
|
|
25
|
-
* Defaults to false.
|
|
26
|
-
*/
|
|
27
|
-
silentCustomRules?: boolean;
|
|
28
|
-
}
|
|
29
|
-
export declare class Linter {
|
|
30
|
-
protected rules: RuleClass[];
|
|
31
|
-
protected allAvailableRules: RuleClass[];
|
|
32
|
-
protected herb: HerbBackend;
|
|
33
|
-
protected offenses: LintOffense[];
|
|
34
|
-
protected config?: Config;
|
|
35
|
-
/**
|
|
36
|
-
* Creates a new Linter instance with automatic rule filtering based on config.
|
|
37
|
-
*
|
|
38
|
-
* @param herb - The Herb backend instance for parsing and lexing
|
|
39
|
-
* @param config - Optional full Config instance for rule filtering, severity overrides, and path-based filtering
|
|
40
|
-
* @param customRules - Optional array of custom rules to include alongside built-in rules
|
|
41
|
-
* @returns A configured Linter instance
|
|
42
|
-
*/
|
|
43
|
-
static from(herb: HerbBackend, config?: Config, customRules?: RuleClass[]): Linter;
|
|
44
|
-
/**
|
|
45
|
-
* Creates a new Linter instance.
|
|
46
|
-
*
|
|
47
|
-
* For most use cases, prefer `Linter.from()` which handles config-based filtering.
|
|
48
|
-
* Use this constructor directly when you need explicit control over rules.
|
|
49
|
-
*
|
|
50
|
-
* @param herb - The Herb backend instance for parsing and lexing
|
|
51
|
-
* @param rules - Array of rule classes (Parser/AST or Lexer) to use. If not provided, uses default rules.
|
|
52
|
-
* @param config - Optional full Config instance for severity overrides and path-based rule filtering
|
|
53
|
-
* @param allAvailableRules - Optional array of ALL available rules (including disabled) for herb:disable validation
|
|
54
|
-
*/
|
|
55
|
-
constructor(herb: HerbBackend, rules?: RuleClass[], config?: Config, allAvailableRules?: RuleClass[]);
|
|
56
|
-
/**
|
|
57
|
-
* Filters rules based on default config and optional user config overrides.
|
|
58
|
-
*
|
|
59
|
-
* Priority:
|
|
60
|
-
* 1. User config override (if rule config exists in userRulesConfig)
|
|
61
|
-
* 2. Default config from rule's defaultConfig getter
|
|
62
|
-
*
|
|
63
|
-
* @param allRules - All available rule classes to filter from
|
|
64
|
-
* @param userRulesConfig - Optional user configuration for rules
|
|
65
|
-
* @returns Filtered array of rule classes that should be enabled
|
|
66
|
-
*/
|
|
67
|
-
static filterRulesByConfig(allRules: RuleClass[], userRulesConfig?: Record<string, RuleConfig>): RuleClass[];
|
|
68
|
-
/**
|
|
69
|
-
* Returns the default set of rule classes used by the linter.
|
|
70
|
-
* These are the rules enabled when no custom rules are provided.
|
|
71
|
-
* Filters all available rules to only include those enabled by default.
|
|
72
|
-
* @returns Array of default rule classes
|
|
73
|
-
*/
|
|
74
|
-
protected getDefaultRules(): RuleClass[];
|
|
75
|
-
/**
|
|
76
|
-
* Returns all available rule classes that can be referenced in herb:disable comments.
|
|
77
|
-
* This includes all rules that exist, regardless of whether they're currently enabled.
|
|
78
|
-
* Includes both built-in rules and any loaded custom rules.
|
|
79
|
-
* @returns Array of all available rule classes
|
|
80
|
-
*/
|
|
81
|
-
protected getAvailableRules(): RuleClass[];
|
|
82
|
-
/**
|
|
83
|
-
* Meta-linting rules for herb:disable comments cannot be disabled
|
|
84
|
-
* This ensures that invalid herb:disable comments are always caught
|
|
85
|
-
*/
|
|
86
|
-
protected get nonExcludableRules(): string[];
|
|
87
|
-
getRuleCount(): number;
|
|
88
|
-
/**
|
|
89
|
-
* Type guard to check if a rule is a LexerRule
|
|
90
|
-
*/
|
|
91
|
-
protected isLexerRule(rule: Rule): rule is LexerRule;
|
|
92
|
-
/**
|
|
93
|
-
* Type guard to check if a rule is a SourceRule
|
|
94
|
-
*/
|
|
95
|
-
protected isSourceRule(rule: Rule): rule is SourceRule;
|
|
96
|
-
/**
|
|
97
|
-
* Execute a single rule and return its unbound offenses.
|
|
98
|
-
* Handles rule type checking (Lexer/Parser/Source) and isEnabled checks.
|
|
99
|
-
*/
|
|
100
|
-
private executeRule;
|
|
101
|
-
private filterOffenses;
|
|
102
|
-
/**
|
|
103
|
-
* Lint source code using Parser/AST, Lexer, and Source rules.
|
|
104
|
-
* @param source - The source code to lint
|
|
105
|
-
* @param context - Optional context for linting (e.g., fileName for distinguishing files vs snippets)
|
|
106
|
-
*/
|
|
107
|
-
lint(source: string, context?: Partial<LintContext>): LintResult;
|
|
108
|
-
/**
|
|
109
|
-
* Bind severity to unbound offenses based on rule's defaultConfig and user config overrides.
|
|
110
|
-
*
|
|
111
|
-
* Priority:
|
|
112
|
-
* 1. User config severity override (if specified in config)
|
|
113
|
-
* 2. Rule's default severity (from defaultConfig.severity)
|
|
114
|
-
*
|
|
115
|
-
* @param unboundOffenses - Array of offenses without severity
|
|
116
|
-
* @param ruleName - Name of the rule that produced the offenses
|
|
117
|
-
* @returns Array of offenses with severity bound
|
|
118
|
-
*/
|
|
119
|
-
protected bindSeverity(unboundOffenses: UnboundLintOffense[], ruleName: string): LintOffense[];
|
|
120
|
-
/**
|
|
121
|
-
* Automatically fix offenses in the source code.
|
|
122
|
-
* Uses AST mutation for parser rules and token mutation for lexer rules.
|
|
123
|
-
* @param source - The source code to fix
|
|
124
|
-
* @param context - Optional context for linting (e.g., fileName)
|
|
125
|
-
* @param offensesToFix - Optional array of specific offenses to fix. If not provided, all fixable offenses will be fixed.
|
|
126
|
-
* @param options - Options for autofix behavior
|
|
127
|
-
* @param options.includeUnsafe - If true, also apply unsafe fixes (rules with unsafeAutocorrectable = true)
|
|
128
|
-
* @returns AutofixResult containing the corrected source and lists of fixed/unfixed offenses
|
|
129
|
-
*/
|
|
130
|
-
autofix(source: string, context?: Partial<LintContext>, offensesToFix?: LintOffense[], options?: {
|
|
131
|
-
includeUnsafe?: boolean;
|
|
132
|
-
}): AutofixResult;
|
|
133
|
-
}
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
export * from "./index.js";
|
|
2
|
-
export { CustomRuleLoader } from "./custom-rule-loader.js";
|
|
3
|
-
export type { CustomRuleLoaderOptions } from "./custom-rule-loader.js";
|
|
4
|
-
import type { RuleClass } from "./types.js";
|
|
5
|
-
/**
|
|
6
|
-
* Loads custom rules from the filesystem.
|
|
7
|
-
* Only available in Node.js environments.
|
|
8
|
-
*/
|
|
9
|
-
export declare function loadCustomRules(options?: {
|
|
10
|
-
baseDir?: string;
|
|
11
|
-
patterns?: string[];
|
|
12
|
-
silent?: boolean;
|
|
13
|
-
}): Promise<{
|
|
14
|
-
rules: RuleClass[];
|
|
15
|
-
ruleInfo: Array<{
|
|
16
|
-
name: string;
|
|
17
|
-
path: string;
|
|
18
|
-
}>;
|
|
19
|
-
warnings: string[];
|
|
20
|
-
}>;
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import { ParserRule, BaseAutofixContext, Mutable } from "../types.js";
|
|
2
|
-
import type { UnboundLintOffense, LintOffense, LintContext, FullRuleConfig } from "../types.js";
|
|
3
|
-
import type { ParseResult, ERBContentNode } from "@herb-tools/core";
|
|
4
|
-
interface ERBCommentSyntaxAutofixContext extends BaseAutofixContext {
|
|
5
|
-
node: Mutable<ERBContentNode>;
|
|
6
|
-
}
|
|
7
|
-
export declare class ERBCommentSyntax extends ParserRule<ERBCommentSyntaxAutofixContext> {
|
|
8
|
-
static autocorrectable: boolean;
|
|
9
|
-
name: string;
|
|
10
|
-
get defaultConfig(): FullRuleConfig;
|
|
11
|
-
check(result: ParseResult, context?: Partial<LintContext>): UnboundLintOffense<ERBCommentSyntaxAutofixContext>[];
|
|
12
|
-
autofix(offense: LintOffense<ERBCommentSyntaxAutofixContext>, result: ParseResult, _context?: Partial<LintContext>): ParseResult | null;
|
|
13
|
-
}
|
|
14
|
-
export {};
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import { SourceRule } from "../types.js";
|
|
2
|
-
import type { UnboundLintOffense, LintOffense, LintContext, BaseAutofixContext, FullRuleConfig } from "../types.js";
|
|
3
|
-
interface ERBNoExtraNewLineAutofixContext extends BaseAutofixContext {
|
|
4
|
-
startOffset: number;
|
|
5
|
-
endOffset: number;
|
|
6
|
-
}
|
|
7
|
-
export declare class ERBNoExtraNewLineRule extends SourceRule {
|
|
8
|
-
static autocorrectable: boolean;
|
|
9
|
-
name: string;
|
|
10
|
-
get defaultConfig(): FullRuleConfig;
|
|
11
|
-
check(source: string, context?: Partial<LintContext>): UnboundLintOffense[];
|
|
12
|
-
autofix(offense: LintOffense<ERBNoExtraNewLineAutofixContext>, source: string, _context?: Partial<LintContext>): string | null;
|
|
13
|
-
}
|
|
14
|
-
export {};
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import { ParserRule, BaseAutofixContext, Mutable } from "../types.js";
|
|
2
|
-
import type { ParseResult, Token, ERBNode } from "@herb-tools/core";
|
|
3
|
-
import type { UnboundLintOffense, LintOffense, LintContext, FullRuleConfig } from "../types.js";
|
|
4
|
-
interface ERBNoExtraWhitespaceAutofixContext extends BaseAutofixContext {
|
|
5
|
-
node: Mutable<ERBNode>;
|
|
6
|
-
openTag: Token;
|
|
7
|
-
closeTag: Token;
|
|
8
|
-
content: string;
|
|
9
|
-
fixType: "after-open" | "before-close" | "after-comment-equals";
|
|
10
|
-
}
|
|
11
|
-
export declare class ERBNoExtraWhitespaceRule extends ParserRule<ERBNoExtraWhitespaceAutofixContext> {
|
|
12
|
-
static autocorrectable: boolean;
|
|
13
|
-
name: string;
|
|
14
|
-
get defaultConfig(): FullRuleConfig;
|
|
15
|
-
check(result: ParseResult, context?: Partial<LintContext>): UnboundLintOffense<ERBNoExtraWhitespaceAutofixContext>[];
|
|
16
|
-
autofix(offense: LintOffense<ERBNoExtraWhitespaceAutofixContext>, result: ParseResult, _context?: Partial<LintContext>): ParseResult | null;
|
|
17
|
-
}
|
|
18
|
-
export {};
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import { SourceRule } from "../types.js";
|
|
2
|
-
import type { UnboundLintOffense, LintOffense, LintContext, FullRuleConfig } from "../types.js";
|
|
3
|
-
export declare class ERBRequireTrailingNewlineRule extends SourceRule {
|
|
4
|
-
static autocorrectable: boolean;
|
|
5
|
-
name: string;
|
|
6
|
-
get defaultConfig(): FullRuleConfig;
|
|
7
|
-
check(source: string, context?: Partial<LintContext>): UnboundLintOffense[];
|
|
8
|
-
autofix(_offense: LintOffense, source: string, _context?: Partial<LintContext>): string | null;
|
|
9
|
-
}
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import { ParserRule, BaseAutofixContext, Mutable } from "../types.js";
|
|
2
|
-
import type { ParseResult, Token, ERBNode } from "@herb-tools/core";
|
|
3
|
-
import type { UnboundLintOffense, LintOffense, LintContext, FullRuleConfig } from "../types.js";
|
|
4
|
-
interface ERBRequireWhitespaceAutofixContext extends BaseAutofixContext {
|
|
5
|
-
node: Mutable<ERBNode>;
|
|
6
|
-
openTag: Token;
|
|
7
|
-
closeTag: Token;
|
|
8
|
-
content: string;
|
|
9
|
-
fixType: "after-open" | "before-close" | "after-comment-equals";
|
|
10
|
-
}
|
|
11
|
-
export declare class ERBRequireWhitespaceRule extends ParserRule<ERBRequireWhitespaceAutofixContext> {
|
|
12
|
-
static autocorrectable: boolean;
|
|
13
|
-
name: string;
|
|
14
|
-
get defaultConfig(): FullRuleConfig;
|
|
15
|
-
check(result: ParseResult, context?: Partial<LintContext>): UnboundLintOffense<ERBRequireWhitespaceAutofixContext>[];
|
|
16
|
-
autofix(offense: LintOffense<ERBRequireWhitespaceAutofixContext>, result: ParseResult, _context?: Partial<LintContext>): ParseResult | null;
|
|
17
|
-
}
|
|
18
|
-
export {};
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import { ParserRule, BaseAutofixContext, Mutable } from "../types.js";
|
|
2
|
-
import type { UnboundLintOffense, LintOffense, LintContext, FullRuleConfig } from "../types.js";
|
|
3
|
-
import type { ERBNode, ParseResult } from "@herb-tools/core";
|
|
4
|
-
interface ERBRightTrimAutofixContext extends BaseAutofixContext {
|
|
5
|
-
node: Mutable<ERBNode>;
|
|
6
|
-
}
|
|
7
|
-
export declare class ERBRightTrimRule extends ParserRule<ERBRightTrimAutofixContext> {
|
|
8
|
-
static autocorrectable: boolean;
|
|
9
|
-
name: string;
|
|
10
|
-
get defaultConfig(): FullRuleConfig;
|
|
11
|
-
check(result: ParseResult, context?: Partial<LintContext>): UnboundLintOffense<ERBRightTrimAutofixContext>[];
|
|
12
|
-
autofix(offense: LintOffense<ERBRightTrimAutofixContext>, result: ParseResult, _context?: Partial<LintContext>): ParseResult | null;
|
|
13
|
-
}
|
|
14
|
-
export {};
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import { ParserRule } from "../types.js";
|
|
2
|
-
import type { UnboundLintOffense, LintContext, FullRuleConfig } from "../types.js";
|
|
3
|
-
import type { ParseResult } from "@herb-tools/core";
|
|
4
|
-
export declare const STRICT_LOCALS_PATTERN: RegExp;
|
|
5
|
-
export declare class ERBStrictLocalsCommentSyntaxRule extends ParserRule {
|
|
6
|
-
name: string;
|
|
7
|
-
get defaultConfig(): FullRuleConfig;
|
|
8
|
-
check(result: ParseResult, context?: Partial<LintContext>): UnboundLintOffense[];
|
|
9
|
-
}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import { SourceRule } from "../types.js";
|
|
2
|
-
import type { UnboundLintOffense, LintOffense, LintContext, FullRuleConfig } from "../types.js";
|
|
3
|
-
export declare class ERBStrictLocalsRequiredRule extends SourceRule {
|
|
4
|
-
static unsafeAutocorrectable: boolean;
|
|
5
|
-
name: string;
|
|
6
|
-
get defaultConfig(): FullRuleConfig;
|
|
7
|
-
check(source: string, context?: Partial<LintContext>): UnboundLintOffense[];
|
|
8
|
-
autofix(_offense: LintOffense, source: string, _context?: Partial<LintContext>): string | null;
|
|
9
|
-
}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* File path and naming utilities for linter rules
|
|
3
|
-
*/
|
|
4
|
-
/**
|
|
5
|
-
* Extracts the basename (filename) from a file path
|
|
6
|
-
* Works with both forward slashes and backslashes
|
|
7
|
-
*/
|
|
8
|
-
export declare function getBasename(filePath: string): string;
|
|
9
|
-
/**
|
|
10
|
-
* Checks if a file is a Rails partial (filename starts with `_`)
|
|
11
|
-
* Returns null if fileName is undefined (unknown context)
|
|
12
|
-
*/
|
|
13
|
-
export declare function isPartialFile(fileName: string | undefined): boolean | null;
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
import { BaseRuleVisitor } from "./rule-utils.js";
|
|
2
|
-
import { ERBContentNode, Location } from "@herb-tools/core";
|
|
3
|
-
import type { LintContext } from "../types.js";
|
|
4
|
-
import type { HerbDisableComment, HerbDisableRuleName } from "../herb-disable-comment-utils.js";
|
|
5
|
-
/**
|
|
6
|
-
* Base visitor class for herb:disable comment validation rules.
|
|
7
|
-
* Handles common patterns like checking ERB comments and parsing herb:disable content.
|
|
8
|
-
*/
|
|
9
|
-
export declare abstract class HerbDisableCommentBaseVisitor extends BaseRuleVisitor {
|
|
10
|
-
constructor(ruleName: string, context?: Partial<LintContext>);
|
|
11
|
-
visitERBContentNode(node: ERBContentNode): void;
|
|
12
|
-
/**
|
|
13
|
-
* Override this method to implement rule-specific logic.
|
|
14
|
-
* This is called for every ERB comment node.
|
|
15
|
-
*/
|
|
16
|
-
protected abstract checkHerbDisableComment(node: ERBContentNode, content: string): void;
|
|
17
|
-
/**
|
|
18
|
-
* Helper to create a precise location for a specific rule name within the comment.
|
|
19
|
-
* Returns null if content location is not available.
|
|
20
|
-
*/
|
|
21
|
-
protected createRuleNameLocation(node: ERBContentNode, ruleDetail: HerbDisableRuleName): Location | null;
|
|
22
|
-
/**
|
|
23
|
-
* Helper to add an offense with a fallback to node location if precise location unavailable.
|
|
24
|
-
*/
|
|
25
|
-
protected addOffenseWithFallback(message: string, preciseLocation: Location | null, node: ERBContentNode): void;
|
|
26
|
-
}
|
|
27
|
-
/**
|
|
28
|
-
* Base visitor for rules that need to process parsed herb:disable comments.
|
|
29
|
-
* Only calls the abstract method if the content successfully parses as a herb:disable comment.
|
|
30
|
-
*/
|
|
31
|
-
export declare abstract class HerbDisableCommentParsedVisitor extends HerbDisableCommentBaseVisitor {
|
|
32
|
-
protected checkHerbDisableComment(node: ERBContentNode, content: string): void;
|
|
33
|
-
/**
|
|
34
|
-
* Override this method to implement rule-specific logic for parsed herb:disable comments.
|
|
35
|
-
*/
|
|
36
|
-
protected abstract checkParsedHerbDisable(node: ERBContentNode, content: string, herbDisable: HerbDisableComment): void;
|
|
37
|
-
}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import { ParserRule } from "../types.js";
|
|
2
|
-
import type { UnboundLintOffense, LintContext, FullRuleConfig } from "../types.js";
|
|
3
|
-
import type { ParseResult } from "@herb-tools/core";
|
|
4
|
-
export declare class HerbDisableCommentNoDuplicateRulesRule extends ParserRule {
|
|
5
|
-
name: string;
|
|
6
|
-
get defaultConfig(): FullRuleConfig;
|
|
7
|
-
check(result: ParseResult, context?: Partial<LintContext>): UnboundLintOffense[];
|
|
8
|
-
}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import { ParserRule } from "../types.js";
|
|
2
|
-
import type { UnboundLintOffense, LintContext, FullRuleConfig } from "../types.js";
|
|
3
|
-
import type { ParseResult } from "@herb-tools/core";
|
|
4
|
-
export declare class HerbDisableCommentNoRedundantAllRule extends ParserRule {
|
|
5
|
-
name: string;
|
|
6
|
-
get defaultConfig(): FullRuleConfig;
|
|
7
|
-
check(result: ParseResult, context?: Partial<LintContext>): UnboundLintOffense[];
|
|
8
|
-
}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import { ParserRule } from "../types.js";
|
|
2
|
-
import type { UnboundLintOffense, LintContext, FullRuleConfig } from "../types.js";
|
|
3
|
-
import type { ParseResult } from "@herb-tools/core";
|
|
4
|
-
export declare class HerbDisableCommentUnnecessaryRule extends ParserRule {
|
|
5
|
-
name: string;
|
|
6
|
-
get defaultConfig(): FullRuleConfig;
|
|
7
|
-
check(result: ParseResult, context?: Partial<LintContext>): UnboundLintOffense[];
|
|
8
|
-
}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import { ParserRule } from "../types.js";
|
|
2
|
-
import type { UnboundLintOffense, LintContext, FullRuleConfig } from "../types.js";
|
|
3
|
-
import type { ParseResult } from "@herb-tools/core";
|
|
4
|
-
export declare class HerbDisableCommentValidRuleNameRule extends ParserRule {
|
|
5
|
-
name: string;
|
|
6
|
-
get defaultConfig(): FullRuleConfig;
|
|
7
|
-
check(result: ParseResult, context?: Partial<LintContext>): UnboundLintOffense[];
|
|
8
|
-
}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import { ParserRule } from "../types.js";
|
|
2
|
-
import type { UnboundLintOffense, LintContext, FullRuleConfig } from "../types.js";
|
|
3
|
-
import type { ParseResult } from "@herb-tools/core";
|
|
4
|
-
export declare class HTMLAriaLabelIsWellFormattedRule extends ParserRule {
|
|
5
|
-
name: string;
|
|
6
|
-
get defaultConfig(): FullRuleConfig;
|
|
7
|
-
check(result: ParseResult, context?: Partial<LintContext>): UnboundLintOffense[];
|
|
8
|
-
}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import { ParserRule } from "../types.js";
|
|
2
|
-
import type { UnboundLintOffense, LintContext, FullRuleConfig } from "../types.js";
|
|
3
|
-
import type { ParseResult } from "@herb-tools/core";
|
|
4
|
-
export declare class HTMLAriaRoleHeadingRequiresLevelRule extends ParserRule {
|
|
5
|
-
name: string;
|
|
6
|
-
get defaultConfig(): FullRuleConfig;
|
|
7
|
-
check(result: ParseResult, context?: Partial<LintContext>): UnboundLintOffense[];
|
|
8
|
-
}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import { ParserRule, BaseAutofixContext, Mutable } from "../types.js";
|
|
2
|
-
import type { UnboundLintOffense, LintOffense, LintContext, FullRuleConfig } from "../types.js";
|
|
3
|
-
import type { ParseResult, HTMLAttributeNode } from "@herb-tools/core";
|
|
4
|
-
interface AttributeDoubleQuotesAutofixContext extends BaseAutofixContext {
|
|
5
|
-
node: Mutable<HTMLAttributeNode>;
|
|
6
|
-
valueContent: string;
|
|
7
|
-
}
|
|
8
|
-
export declare class HTMLAttributeDoubleQuotesRule extends ParserRule<AttributeDoubleQuotesAutofixContext> {
|
|
9
|
-
static autocorrectable: boolean;
|
|
10
|
-
name: string;
|
|
11
|
-
get defaultConfig(): FullRuleConfig;
|
|
12
|
-
check(result: ParseResult, context?: Partial<LintContext>): UnboundLintOffense<AttributeDoubleQuotesAutofixContext>[];
|
|
13
|
-
autofix(offense: LintOffense<AttributeDoubleQuotesAutofixContext>, result: ParseResult, _context?: Partial<LintContext>): ParseResult | null;
|
|
14
|
-
}
|
|
15
|
-
export {};
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import { ParserRule, BaseAutofixContext, Mutable } from "../types.js";
|
|
2
|
-
import type { UnboundLintOffense, LintOffense, LintContext, FullRuleConfig } from "../types.js";
|
|
3
|
-
import type { ParseResult, HTMLAttributeNode } from "@herb-tools/core";
|
|
4
|
-
interface AttributeEqualsSpacingAutofixContext extends BaseAutofixContext {
|
|
5
|
-
node: Mutable<HTMLAttributeNode>;
|
|
6
|
-
}
|
|
7
|
-
export declare class HTMLAttributeEqualsSpacingRule extends ParserRule<AttributeEqualsSpacingAutofixContext> {
|
|
8
|
-
static autocorrectable: boolean;
|
|
9
|
-
name: string;
|
|
10
|
-
get defaultConfig(): FullRuleConfig;
|
|
11
|
-
check(result: ParseResult, context?: Partial<LintContext>): UnboundLintOffense<AttributeEqualsSpacingAutofixContext>[];
|
|
12
|
-
autofix(offense: LintOffense<AttributeEqualsSpacingAutofixContext>, result: ParseResult, _context?: Partial<LintContext>): ParseResult | null;
|
|
13
|
-
}
|
|
14
|
-
export {};
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import { ParserRule, BaseAutofixContext, Mutable } from "../types.js";
|
|
2
|
-
import type { UnboundLintOffense, LintOffense, LintContext, FullRuleConfig } from "../types.js";
|
|
3
|
-
import type { HTMLAttributeNode, ParseResult } from "@herb-tools/core";
|
|
4
|
-
interface AttributeValuesRequireQuotesAutofixContext extends BaseAutofixContext {
|
|
5
|
-
node: Mutable<HTMLAttributeNode>;
|
|
6
|
-
unquotedValue: string;
|
|
7
|
-
}
|
|
8
|
-
export declare class HTMLAttributeValuesRequireQuotesRule extends ParserRule<AttributeValuesRequireQuotesAutofixContext> {
|
|
9
|
-
static autocorrectable: boolean;
|
|
10
|
-
name: string;
|
|
11
|
-
get defaultConfig(): FullRuleConfig;
|
|
12
|
-
check(result: ParseResult, context?: Partial<LintContext>): UnboundLintOffense<AttributeValuesRequireQuotesAutofixContext>[];
|
|
13
|
-
autofix(offense: LintOffense<AttributeValuesRequireQuotesAutofixContext>, result: ParseResult, _context?: Partial<LintContext>): ParseResult | null;
|
|
14
|
-
}
|
|
15
|
-
export {};
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import { ParserRule } from "../types.js";
|
|
2
|
-
import type { UnboundLintOffense, LintContext, FullRuleConfig } from "../types.js";
|
|
3
|
-
import type { ParseResult } from "@herb-tools/core";
|
|
4
|
-
export declare class HTMLAvoidBothDisabledAndAriaDisabledRule extends ParserRule {
|
|
5
|
-
name: string;
|
|
6
|
-
get defaultConfig(): FullRuleConfig;
|
|
7
|
-
check(result: ParseResult, context?: Partial<LintContext>): UnboundLintOffense[];
|
|
8
|
-
}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import { ParserRule, BaseAutofixContext, Mutable } from "../types.js";
|
|
2
|
-
import type { UnboundLintOffense, LintOffense, LintContext, FullRuleConfig } from "../types.js";
|
|
3
|
-
import type { ParseResult, HTMLAttributeNode } from "@herb-tools/core";
|
|
4
|
-
interface BooleanAttributeAutofixContext extends BaseAutofixContext {
|
|
5
|
-
node: Mutable<HTMLAttributeNode>;
|
|
6
|
-
}
|
|
7
|
-
export declare class HTMLBooleanAttributesNoValueRule extends ParserRule<BooleanAttributeAutofixContext> {
|
|
8
|
-
static autocorrectable: boolean;
|
|
9
|
-
name: string;
|
|
10
|
-
get defaultConfig(): FullRuleConfig;
|
|
11
|
-
check(result: ParseResult, context?: Partial<LintContext>): UnboundLintOffense<BooleanAttributeAutofixContext>[];
|
|
12
|
-
autofix(offense: LintOffense<BooleanAttributeAutofixContext>, result: ParseResult, _context?: Partial<LintContext>): ParseResult | null;
|
|
13
|
-
}
|
|
14
|
-
export {};
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import { ParserRule } from "../types";
|
|
2
|
-
import type { ParseResult } from "@herb-tools/core";
|
|
3
|
-
import type { UnboundLintOffense, LintContext, FullRuleConfig } from "../types";
|
|
4
|
-
export declare class HTMLHeadOnlyElementsRule extends ParserRule {
|
|
5
|
-
static autocorrectable: boolean;
|
|
6
|
-
name: string;
|
|
7
|
-
get defaultConfig(): FullRuleConfig;
|
|
8
|
-
check(result: ParseResult, context?: Partial<LintContext>): UnboundLintOffense[];
|
|
9
|
-
}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import { ParserRule } from "../types.js";
|
|
2
|
-
import type { UnboundLintOffense, LintContext, FullRuleConfig } from "../types.js";
|
|
3
|
-
import type { ParseResult } from "@herb-tools/core";
|
|
4
|
-
export declare class HTMLIframeHasTitleRule extends ParserRule {
|
|
5
|
-
name: string;
|
|
6
|
-
get defaultConfig(): FullRuleConfig;
|
|
7
|
-
check(result: ParseResult, context?: Partial<LintContext>): UnboundLintOffense[];
|
|
8
|
-
}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import { ParserRule } from "../types.js";
|
|
2
|
-
import type { UnboundLintOffense, LintContext, FullRuleConfig } from "../types.js";
|
|
3
|
-
import type { ParseResult } from "@herb-tools/core";
|
|
4
|
-
export declare class HTMLImgRequireAltRule extends ParserRule {
|
|
5
|
-
name: string;
|
|
6
|
-
get defaultConfig(): FullRuleConfig;
|
|
7
|
-
check(result: ParseResult, context?: Partial<LintContext>): UnboundLintOffense[];
|
|
8
|
-
}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import { ParserRule } from "../types.js";
|
|
2
|
-
import type { UnboundLintOffense, LintContext, FullRuleConfig } from "../types.js";
|
|
3
|
-
import type { ParseResult } from "@herb-tools/core";
|
|
4
|
-
export declare class HTMLInputRequireAutocompleteRule extends ParserRule {
|
|
5
|
-
name: string;
|
|
6
|
-
get defaultConfig(): FullRuleConfig;
|
|
7
|
-
check(result: ParseResult, context?: Partial<LintContext>): UnboundLintOffense[];
|
|
8
|
-
}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import { ParserRule } from "../types.js";
|
|
2
|
-
import type { UnboundLintOffense, LintContext, FullRuleConfig } from "../types.js";
|
|
3
|
-
import type { ParseResult } from "@herb-tools/core";
|
|
4
|
-
export declare class HTMLNoBlockInsideInlineRule extends ParserRule {
|
|
5
|
-
name: string;
|
|
6
|
-
get defaultConfig(): FullRuleConfig;
|
|
7
|
-
check(result: ParseResult, context?: Partial<LintContext>): UnboundLintOffense[];
|
|
8
|
-
}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import { ParserRule } from "../types";
|
|
2
|
-
import type { ParseResult } from "@herb-tools/core";
|
|
3
|
-
import type { UnboundLintOffense, LintContext, FullRuleConfig } from "../types";
|
|
4
|
-
export declare class HTMLNoDuplicateIdsRule extends ParserRule {
|
|
5
|
-
name: string;
|
|
6
|
-
get defaultConfig(): FullRuleConfig;
|
|
7
|
-
check(result: ParseResult, context?: Partial<LintContext>): UnboundLintOffense[];
|
|
8
|
-
}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import { ParserRule } from "../types";
|
|
2
|
-
import type { ParseResult } from "@herb-tools/core";
|
|
3
|
-
import type { UnboundLintOffense, LintContext, FullRuleConfig } from "../types";
|
|
4
|
-
export declare class HTMLNoDuplicateMetaNamesRule extends ParserRule {
|
|
5
|
-
static autocorrectable: boolean;
|
|
6
|
-
name: string;
|
|
7
|
-
get defaultConfig(): FullRuleConfig;
|
|
8
|
-
check(result: ParseResult, context?: Partial<LintContext>): UnboundLintOffense[];
|
|
9
|
-
}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import { ParserRule } from "../types.js";
|
|
2
|
-
import type { UnboundLintOffense, LintContext, FullRuleConfig } from "../types.js";
|
|
3
|
-
import type { ParseResult } from "@herb-tools/core";
|
|
4
|
-
export declare class HTMLNoNestedLinksRule extends ParserRule {
|
|
5
|
-
name: string;
|
|
6
|
-
get defaultConfig(): FullRuleConfig;
|
|
7
|
-
check(result: ParseResult, context?: Partial<LintContext>): UnboundLintOffense[];
|
|
8
|
-
}
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import { ParserRule, BaseAutofixContext, Mutable } from "../types.js";
|
|
2
|
-
import type { UnboundLintOffense, LintContext, LintOffense, FullRuleConfig } from "../types.js";
|
|
3
|
-
import type { HTMLOpenTagNode, ParseResult } from "@herb-tools/core";
|
|
4
|
-
interface NoSelfClosingAutofixContext extends BaseAutofixContext {
|
|
5
|
-
node: Mutable<HTMLOpenTagNode>;
|
|
6
|
-
tagName: string;
|
|
7
|
-
isVoid: boolean;
|
|
8
|
-
}
|
|
9
|
-
export declare class HTMLNoSelfClosingRule extends ParserRule<NoSelfClosingAutofixContext> {
|
|
10
|
-
static autocorrectable: boolean;
|
|
11
|
-
name: string;
|
|
12
|
-
get defaultConfig(): FullRuleConfig;
|
|
13
|
-
check(result: ParseResult, context?: Partial<LintContext>): UnboundLintOffense<NoSelfClosingAutofixContext>[];
|
|
14
|
-
autofix(offense: LintOffense<NoSelfClosingAutofixContext>, result: ParseResult, _context?: Partial<LintContext>): ParseResult | null;
|
|
15
|
-
}
|
|
16
|
-
export {};
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import { WhitespaceNode } from "@herb-tools/core";
|
|
2
|
-
import { ParserRule, BaseAutofixContext } from "../types.js";
|
|
3
|
-
import type { ParseResult, HTMLOpenTagNode } from "@herb-tools/core";
|
|
4
|
-
import type { UnboundLintOffense, LintOffense, LintContext, FullRuleConfig } from "../types.js";
|
|
5
|
-
interface HTMLNoSpaceInTagAutofixContext extends BaseAutofixContext {
|
|
6
|
-
node: WhitespaceNode | HTMLOpenTagNode;
|
|
7
|
-
message: string;
|
|
8
|
-
}
|
|
9
|
-
export declare class HTMLNoSpaceInTagRule extends ParserRule<HTMLNoSpaceInTagAutofixContext> {
|
|
10
|
-
static autocorrectable: boolean;
|
|
11
|
-
name: string;
|
|
12
|
-
get defaultConfig(): FullRuleConfig;
|
|
13
|
-
check(result: ParseResult, context?: Partial<LintContext>): UnboundLintOffense<HTMLNoSpaceInTagAutofixContext>[];
|
|
14
|
-
autofix(offense: LintOffense<HTMLNoSpaceInTagAutofixContext>, result: ParseResult, _context?: Partial<LintContext>): ParseResult | null;
|
|
15
|
-
}
|
|
16
|
-
export {};
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import { ParserRule } from "../types.js";
|
|
2
|
-
import type { UnboundLintOffense, LintContext, FullRuleConfig } from "../types.js";
|
|
3
|
-
import type { ParseResult } from "@herb-tools/core";
|
|
4
|
-
export declare class HTMLNoTitleAttributeRule extends ParserRule {
|
|
5
|
-
name: string;
|
|
6
|
-
get defaultConfig(): FullRuleConfig;
|
|
7
|
-
check(result: ParseResult, context?: Partial<LintContext>): UnboundLintOffense[];
|
|
8
|
-
}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import { ParserRule } from "../types.js";
|
|
2
|
-
import type { UnboundLintOffense, LintContext, FullRuleConfig } from "../types.js";
|
|
3
|
-
import type { ParseResult } from "@herb-tools/core";
|
|
4
|
-
export declare class HTMLNoUnderscoresInAttributeNamesRule extends ParserRule {
|
|
5
|
-
name: string;
|
|
6
|
-
get defaultConfig(): FullRuleConfig;
|
|
7
|
-
check(result: ParseResult, context?: Partial<LintContext>): UnboundLintOffense[];
|
|
8
|
-
}
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import { ParserRule, BaseAutofixContext, Mutable } from "../types.js";
|
|
2
|
-
import { HTMLOpenTagNode } from "@herb-tools/core";
|
|
3
|
-
import type { UnboundLintOffense, LintOffense, LintContext, FullRuleConfig } from "../types.js";
|
|
4
|
-
import type { HTMLCloseTagNode, ParseResult } from "@herb-tools/core";
|
|
5
|
-
interface TagNameAutofixContext extends BaseAutofixContext {
|
|
6
|
-
node: Mutable<HTMLOpenTagNode | HTMLCloseTagNode>;
|
|
7
|
-
tagName: string;
|
|
8
|
-
correctedTagName: string;
|
|
9
|
-
}
|
|
10
|
-
export declare class HTMLTagNameLowercaseRule extends ParserRule<TagNameAutofixContext> {
|
|
11
|
-
static autocorrectable: boolean;
|
|
12
|
-
name: string;
|
|
13
|
-
get defaultConfig(): FullRuleConfig;
|
|
14
|
-
isEnabled(result: ParseResult, _context?: Partial<LintContext>): boolean;
|
|
15
|
-
check(result: ParseResult, context?: Partial<LintContext>): UnboundLintOffense<TagNameAutofixContext>[];
|
|
16
|
-
autofix(offense: LintOffense<TagNameAutofixContext>, result: ParseResult, _context?: Partial<LintContext>): ParseResult | null;
|
|
17
|
-
}
|
|
18
|
-
export {};
|