@herb-tools/linter 0.8.1 → 0.8.2

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/dist/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@herb-tools/linter",
3
- "version": "0.8.1",
3
+ "version": "0.8.2",
4
4
  "description": "HTML+ERB linter for validating HTML structure and enforcing best practices",
5
5
  "license": "MIT",
6
6
  "homepage": "https://herb-tools.dev",
@@ -45,12 +45,12 @@
45
45
  }
46
46
  },
47
47
  "dependencies": {
48
- "@herb-tools/config": "0.8.1",
49
- "@herb-tools/core": "0.8.1",
50
- "@herb-tools/highlighter": "0.8.1",
51
- "@herb-tools/node-wasm": "0.8.1",
52
- "@herb-tools/printer": "0.8.1",
53
- "@herb-tools/rewriter": "0.8.1",
48
+ "@herb-tools/config": "0.8.2",
49
+ "@herb-tools/core": "0.8.2",
50
+ "@herb-tools/highlighter": "0.8.2",
51
+ "@herb-tools/node-wasm": "0.8.2",
52
+ "@herb-tools/printer": "0.8.2",
53
+ "@herb-tools/rewriter": "0.8.2",
54
54
  "glob": "^11.0.3"
55
55
  },
56
56
  "files": [
@@ -1 +1 @@
1
- {"version":3,"file":"herb-disable-comment-utils.js","sourceRoot":"","sources":["../../src/herb-disable-comment-utils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"herb-disable-comment-utils.js","sourceRoot":"","sources":["../../src/herb-disable-comment-utils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,42 @@
1
+ import { isERBCommentNode } from "@herb-tools/core";
2
+ import { Visitor } from "@herb-tools/core";
3
+ const HERB_LINTER_PREFIX = "herb:linter";
4
+ const HERB_LINTER_IGNORE_PREFIX = `${HERB_LINTER_PREFIX} ignore`;
5
+ /**
6
+ * Check if an ERB content node is a herb:linter ignore comment.
7
+ *
8
+ * @param node - The ERB content node to check
9
+ * @returns true if this is a linter ignore directive
10
+ */
11
+ export function isHerbLinterIgnoreComment(node) {
12
+ if (!isERBCommentNode(node))
13
+ return false;
14
+ const content = node?.content?.value || "";
15
+ return content.trim() === HERB_LINTER_IGNORE_PREFIX;
16
+ }
17
+ /**
18
+ * Check if the document contains a herb:linter ignore directive anywhere.
19
+ */
20
+ export function hasLinterIgnoreDirective(parseResult) {
21
+ if (parseResult.failed)
22
+ return false;
23
+ const detector = new LinterIgnoreDetector();
24
+ detector.visit(parseResult.value);
25
+ return detector.hasIgnoreDirective;
26
+ }
27
+ /**
28
+ * Visitor that detects if the AST contains a herb:linter ignore directive.
29
+ */
30
+ class LinterIgnoreDetector extends Visitor {
31
+ hasIgnoreDirective = false;
32
+ visitERBContentNode(node) {
33
+ if (isHerbLinterIgnoreComment(node)) {
34
+ this.hasIgnoreDirective = true;
35
+ return;
36
+ }
37
+ if (this.hasIgnoreDirective)
38
+ return;
39
+ this.visitChildNodes(node);
40
+ }
41
+ }
42
+ //# sourceMappingURL=linter-ignore.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"linter-ignore.js","sourceRoot":"","sources":["../../src/linter-ignore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAA;AACnD,OAAO,EAAE,OAAO,EAAkB,MAAM,kBAAkB,CAAA;AAI1D,MAAM,kBAAkB,GAAG,aAAa,CAAA;AACxC,MAAM,yBAAyB,GAAG,GAAG,kBAAkB,SAAS,CAAA;AAEhE;;;;;GAKG;AACH,MAAM,UAAU,yBAAyB,CAAC,IAAU;IAClD,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC;QAAE,OAAO,KAAK,CAAA;IAEzC,MAAM,OAAO,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,EAAE,CAAA;IAE1C,OAAO,OAAO,CAAC,IAAI,EAAE,KAAK,yBAAyB,CAAA;AACrD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,wBAAwB,CAAC,WAAwB;IAC/D,IAAI,WAAW,CAAC,MAAM;QAAE,OAAO,KAAK,CAAA;IAEpC,MAAM,QAAQ,GAAG,IAAI,oBAAoB,EAAE,CAAA;IAC3C,QAAQ,CAAC,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,CAAA;IACjC,OAAO,QAAQ,CAAC,kBAAkB,CAAA;AACpC,CAAC;AAED;;GAEG;AACH,MAAM,oBAAqB,SAAQ,OAAO;IACjC,kBAAkB,GAAG,KAAK,CAAA;IAEjC,mBAAmB,CAAC,IAAoB;QACtC,IAAI,yBAAyB,CAAC,IAAI,CAAC,EAAE,CAAC;YACpC,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAA;YAC9B,OAAM;QACR,CAAC;QAED,IAAI,IAAI,CAAC,kBAAkB;YAAE,OAAM;QAEnC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAA;IAC5B,CAAC;CACF"}
@@ -4,6 +4,7 @@ import { minimatch } from "minimatch";
4
4
  import { rules } from "./rules.js";
5
5
  import { findNodeByLocation } from "./rules/rule-utils.js";
6
6
  import { parseHerbDisableLine } from "./herb-disable-comment-utils.js";
7
+ import { hasLinterIgnoreDirective } from "./linter-ignore.js";
7
8
  import { ParserNoErrorsRule } from "./rules/parser-no-errors.js";
8
9
  import { DEFAULT_RULE_CONFIG } from "./types.js";
9
10
  export class Linter {
@@ -216,6 +217,17 @@ export class Linter {
216
217
  let ignoredCount = 0;
217
218
  let wouldBeIgnoredCount = 0;
218
219
  const parseResult = this.herb.parse(source, { track_whitespace: true });
220
+ // Check for file-level ignore directive using visitor
221
+ if (hasLinterIgnoreDirective(parseResult)) {
222
+ return {
223
+ offenses: [],
224
+ errors: 0,
225
+ warnings: 0,
226
+ info: 0,
227
+ hints: 0,
228
+ ignored: 0
229
+ };
230
+ }
219
231
  const lexResult = this.herb.lex(source);
220
232
  const hasParserErrors = parseResult.recursiveErrors().length > 0;
221
233
  const sourceLines = source.split("\n");
@@ -1 +1 @@
1
- {"version":3,"file":"linter.js","sourceRoot":"","sources":["../../src/linter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"linter.js","sourceRoot":"","sources":["../../src/linter.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"root":["../src/cli.ts","../src/custom-rule-loader.ts","../src/herb-disable-comment-utils.ts","../src/herb-lint.ts","../src/index.ts","../src/linter.ts","../src/loader.ts","../src/rules.ts","../src/types.ts","../src/cli/argument-parser.ts","../src/cli/file-processor.ts","../src/cli/index.ts","../src/cli/output-manager.ts","../src/cli/summary-reporter.ts","../src/cli/formatters/base-formatter.ts","../src/cli/formatters/detailed-formatter.ts","../src/cli/formatters/github-actions-formatter.ts","../src/cli/formatters/index.ts","../src/cli/formatters/json-formatter.ts","../src/cli/formatters/simple-formatter.ts","../src/rules/erb-comment-syntax.ts","../src/rules/erb-no-case-node-children.ts","../src/rules/erb-no-empty-tags.ts","../src/rules/erb-no-extra-newline.ts","../src/rules/erb-no-extra-whitespace-inside-tags.ts","../src/rules/erb-no-output-control-flow.ts","../src/rules/erb-no-silent-tag-in-attribute-name.ts","../src/rules/erb-prefer-image-tag-helper.ts","../src/rules/erb-require-trailing-newline.ts","../src/rules/erb-require-whitespace-inside-tags.ts","../src/rules/erb-right-trim.ts","../src/rules/herb-disable-comment-base.ts","../src/rules/herb-disable-comment-malformed.ts","../src/rules/herb-disable-comment-missing-rules.ts","../src/rules/herb-disable-comment-no-duplicate-rules.ts","../src/rules/herb-disable-comment-no-redundant-all.ts","../src/rules/herb-disable-comment-unnecessary.ts","../src/rules/herb-disable-comment-valid-rule-name.ts","../src/rules/html-anchor-require-href.ts","../src/rules/html-aria-attribute-must-be-valid.ts","../src/rules/html-aria-label-is-well-formatted.ts","../src/rules/html-aria-level-must-be-valid.ts","../src/rules/html-aria-role-heading-requires-level.ts","../src/rules/html-aria-role-must-be-valid.ts","../src/rules/html-attribute-double-quotes.ts","../src/rules/html-attribute-equals-spacing.ts","../src/rules/html-attribute-values-require-quotes.ts","../src/rules/html-avoid-both-disabled-and-aria-disabled.ts","../src/rules/html-body-only-elements.ts","../src/rules/html-boolean-attributes-no-value.ts","../src/rules/html-head-only-elements.ts","../src/rules/html-iframe-has-title.ts","../src/rules/html-img-require-alt.ts","../src/rules/html-input-require-autocomplete.ts","../src/rules/html-navigation-has-label.ts","../src/rules/html-no-aria-hidden-on-focusable.ts","../src/rules/html-no-block-inside-inline.ts","../src/rules/html-no-duplicate-attributes.ts","../src/rules/html-no-duplicate-ids.ts","../src/rules/html-no-duplicate-meta-names.ts","../src/rules/html-no-empty-attributes.ts","../src/rules/html-no-empty-headings.ts","../src/rules/html-no-nested-links.ts","../src/rules/html-no-positive-tab-index.ts","../src/rules/html-no-self-closing.ts","../src/rules/html-no-space-in-tag.ts","../src/rules/html-no-title-attribute.ts","../src/rules/html-no-underscores-in-attribute-names.ts","../src/rules/html-tag-name-lowercase.ts","../src/rules/index.ts","../src/rules/parser-no-errors.ts","../src/rules/rule-utils.ts","../src/rules/svg-tag-name-capitalization.ts"],"version":"5.9.2"}
1
+ {"root":["../src/cli.ts","../src/custom-rule-loader.ts","../src/herb-disable-comment-utils.ts","../src/herb-lint.ts","../src/index.ts","../src/linter-ignore.ts","../src/linter.ts","../src/loader.ts","../src/rules.ts","../src/types.ts","../src/cli/argument-parser.ts","../src/cli/file-processor.ts","../src/cli/index.ts","../src/cli/output-manager.ts","../src/cli/summary-reporter.ts","../src/cli/formatters/base-formatter.ts","../src/cli/formatters/detailed-formatter.ts","../src/cli/formatters/github-actions-formatter.ts","../src/cli/formatters/index.ts","../src/cli/formatters/json-formatter.ts","../src/cli/formatters/simple-formatter.ts","../src/rules/erb-comment-syntax.ts","../src/rules/erb-no-case-node-children.ts","../src/rules/erb-no-empty-tags.ts","../src/rules/erb-no-extra-newline.ts","../src/rules/erb-no-extra-whitespace-inside-tags.ts","../src/rules/erb-no-output-control-flow.ts","../src/rules/erb-no-silent-tag-in-attribute-name.ts","../src/rules/erb-prefer-image-tag-helper.ts","../src/rules/erb-require-trailing-newline.ts","../src/rules/erb-require-whitespace-inside-tags.ts","../src/rules/erb-right-trim.ts","../src/rules/herb-disable-comment-base.ts","../src/rules/herb-disable-comment-malformed.ts","../src/rules/herb-disable-comment-missing-rules.ts","../src/rules/herb-disable-comment-no-duplicate-rules.ts","../src/rules/herb-disable-comment-no-redundant-all.ts","../src/rules/herb-disable-comment-unnecessary.ts","../src/rules/herb-disable-comment-valid-rule-name.ts","../src/rules/html-anchor-require-href.ts","../src/rules/html-aria-attribute-must-be-valid.ts","../src/rules/html-aria-label-is-well-formatted.ts","../src/rules/html-aria-level-must-be-valid.ts","../src/rules/html-aria-role-heading-requires-level.ts","../src/rules/html-aria-role-must-be-valid.ts","../src/rules/html-attribute-double-quotes.ts","../src/rules/html-attribute-equals-spacing.ts","../src/rules/html-attribute-values-require-quotes.ts","../src/rules/html-avoid-both-disabled-and-aria-disabled.ts","../src/rules/html-body-only-elements.ts","../src/rules/html-boolean-attributes-no-value.ts","../src/rules/html-head-only-elements.ts","../src/rules/html-iframe-has-title.ts","../src/rules/html-img-require-alt.ts","../src/rules/html-input-require-autocomplete.ts","../src/rules/html-navigation-has-label.ts","../src/rules/html-no-aria-hidden-on-focusable.ts","../src/rules/html-no-block-inside-inline.ts","../src/rules/html-no-duplicate-attributes.ts","../src/rules/html-no-duplicate-ids.ts","../src/rules/html-no-duplicate-meta-names.ts","../src/rules/html-no-empty-attributes.ts","../src/rules/html-no-empty-headings.ts","../src/rules/html-no-nested-links.ts","../src/rules/html-no-positive-tab-index.ts","../src/rules/html-no-self-closing.ts","../src/rules/html-no-space-in-tag.ts","../src/rules/html-no-title-attribute.ts","../src/rules/html-no-underscores-in-attribute-names.ts","../src/rules/html-tag-name-lowercase.ts","../src/rules/index.ts","../src/rules/parser-no-errors.ts","../src/rules/rule-utils.ts","../src/rules/svg-tag-name-capitalization.ts"],"version":"5.9.2"}
@@ -0,0 +1,12 @@
1
+ import type { Node, ParseResult } from "@herb-tools/core";
2
+ /**
3
+ * Check if an ERB content node is a herb:linter ignore comment.
4
+ *
5
+ * @param node - The ERB content node to check
6
+ * @returns true if this is a linter ignore directive
7
+ */
8
+ export declare function isHerbLinterIgnoreComment(node: Node): boolean;
9
+ /**
10
+ * Check if the document contains a herb:linter ignore directive anywhere.
11
+ */
12
+ export declare function hasLinterIgnoreDirective(parseResult: ParseResult): boolean;
@@ -0,0 +1,12 @@
1
+ import type { Node, ParseResult } from "@herb-tools/core";
2
+ /**
3
+ * Check if an ERB content node is a herb:linter ignore comment.
4
+ *
5
+ * @param node - The ERB content node to check
6
+ * @returns true if this is a linter ignore directive
7
+ */
8
+ export declare function isHerbLinterIgnoreComment(node: Node): boolean;
9
+ /**
10
+ * Check if the document contains a herb:linter ignore directive anywhere.
11
+ */
12
+ export declare function hasLinterIgnoreDirective(parseResult: ParseResult): boolean;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@herb-tools/linter",
3
- "version": "0.8.1",
3
+ "version": "0.8.2",
4
4
  "description": "HTML+ERB linter for validating HTML structure and enforcing best practices",
5
5
  "license": "MIT",
6
6
  "homepage": "https://herb-tools.dev",
@@ -45,12 +45,12 @@
45
45
  }
46
46
  },
47
47
  "dependencies": {
48
- "@herb-tools/config": "0.8.1",
49
- "@herb-tools/core": "0.8.1",
50
- "@herb-tools/highlighter": "0.8.1",
51
- "@herb-tools/node-wasm": "0.8.1",
52
- "@herb-tools/printer": "0.8.1",
53
- "@herb-tools/rewriter": "0.8.1",
48
+ "@herb-tools/config": "0.8.2",
49
+ "@herb-tools/core": "0.8.2",
50
+ "@herb-tools/highlighter": "0.8.2",
51
+ "@herb-tools/node-wasm": "0.8.2",
52
+ "@herb-tools/printer": "0.8.2",
53
+ "@herb-tools/rewriter": "0.8.2",
54
54
  "glob": "^11.0.3"
55
55
  },
56
56
  "files": [
@@ -2,6 +2,9 @@
2
2
  * Utilities for parsing herb:disable comments
3
3
  */
4
4
 
5
+ import { isERBCommentNode } from "@herb-tools/core"
6
+ import type { Node } from "@herb-tools/core"
7
+
5
8
  /**
6
9
  * Information about a single rule name in a herb:disable comment
7
10
  */
@@ -0,0 +1,50 @@
1
+ import { isERBCommentNode } from "@herb-tools/core"
2
+ import { Visitor, ERBContentNode } from "@herb-tools/core"
3
+
4
+ import type { Node, ParseResult } from "@herb-tools/core"
5
+
6
+ const HERB_LINTER_PREFIX = "herb:linter"
7
+ const HERB_LINTER_IGNORE_PREFIX = `${HERB_LINTER_PREFIX} ignore`
8
+
9
+ /**
10
+ * Check if an ERB content node is a herb:linter ignore comment.
11
+ *
12
+ * @param node - The ERB content node to check
13
+ * @returns true if this is a linter ignore directive
14
+ */
15
+ export function isHerbLinterIgnoreComment(node: Node): boolean {
16
+ if (!isERBCommentNode(node)) return false
17
+
18
+ const content = node?.content?.value || ""
19
+
20
+ return content.trim() === HERB_LINTER_IGNORE_PREFIX
21
+ }
22
+
23
+ /**
24
+ * Check if the document contains a herb:linter ignore directive anywhere.
25
+ */
26
+ export function hasLinterIgnoreDirective(parseResult: ParseResult): boolean {
27
+ if (parseResult.failed) return false
28
+
29
+ const detector = new LinterIgnoreDetector()
30
+ detector.visit(parseResult.value)
31
+ return detector.hasIgnoreDirective
32
+ }
33
+
34
+ /**
35
+ * Visitor that detects if the AST contains a herb:linter ignore directive.
36
+ */
37
+ class LinterIgnoreDetector extends Visitor {
38
+ public hasIgnoreDirective = false
39
+
40
+ visitERBContentNode(node: ERBContentNode): void {
41
+ if (isHerbLinterIgnoreComment(node)) {
42
+ this.hasIgnoreDirective = true
43
+ return
44
+ }
45
+
46
+ if (this.hasIgnoreDirective) return
47
+
48
+ this.visitChildNodes(node)
49
+ }
50
+ }
package/src/linter.ts CHANGED
@@ -5,6 +5,7 @@ import { minimatch } from "minimatch"
5
5
  import { rules } from "./rules.js"
6
6
  import { findNodeByLocation } from "./rules/rule-utils.js"
7
7
  import { parseHerbDisableLine } from "./herb-disable-comment-utils.js"
8
+ import { hasLinterIgnoreDirective } from "./linter-ignore.js"
8
9
 
9
10
  import { ParserNoErrorsRule } from "./rules/parser-no-errors.js"
10
11
  import { DEFAULT_RULE_CONFIG } from "./types.js"
@@ -303,6 +304,18 @@ export class Linter {
303
304
  let wouldBeIgnoredCount = 0
304
305
 
305
306
  const parseResult = this.herb.parse(source, { track_whitespace: true })
307
+
308
+ // Check for file-level ignore directive using visitor
309
+ if (hasLinterIgnoreDirective(parseResult)) {
310
+ return {
311
+ offenses: [],
312
+ errors: 0,
313
+ warnings: 0,
314
+ info: 0,
315
+ hints: 0,
316
+ ignored: 0
317
+ }
318
+ }
306
319
  const lexResult = this.herb.lex(source)
307
320
  const hasParserErrors = parseResult.recursiveErrors().length > 0
308
321
  const sourceLines = source.split("\n")
@@ -573,3 +586,4 @@ export class Linter {
573
586
  }
574
587
  }
575
588
  }
589
+