@herb-tools/linter 0.4.2 → 0.5.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.
Files changed (202) hide show
  1. package/README.md +221 -10
  2. package/dist/herb-lint.js +817 -292
  3. package/dist/herb-lint.js.map +1 -1
  4. package/dist/index.cjs +360 -81
  5. package/dist/index.cjs.map +1 -1
  6. package/dist/index.js +355 -83
  7. package/dist/index.js.map +1 -1
  8. package/dist/package.json +4 -4
  9. package/dist/src/cli/argument-parser.js +28 -18
  10. package/dist/src/cli/argument-parser.js.map +1 -1
  11. package/dist/src/cli/file-processor.js +21 -17
  12. package/dist/src/cli/file-processor.js.map +1 -1
  13. package/dist/src/cli/formatters/detailed-formatter.js +9 -9
  14. package/dist/src/cli/formatters/detailed-formatter.js.map +1 -1
  15. package/dist/src/cli/formatters/github-actions-formatter.js +50 -0
  16. package/dist/src/cli/formatters/github-actions-formatter.js.map +1 -0
  17. package/dist/src/cli/formatters/index.js +2 -0
  18. package/dist/src/cli/formatters/index.js.map +1 -1
  19. package/dist/src/cli/formatters/json-formatter.js +58 -0
  20. package/dist/src/cli/formatters/json-formatter.js.map +1 -0
  21. package/dist/src/cli/formatters/simple-formatter.js +15 -15
  22. package/dist/src/cli/formatters/simple-formatter.js.map +1 -1
  23. package/dist/src/cli/output-manager.js +120 -0
  24. package/dist/src/cli/output-manager.js.map +1 -0
  25. package/dist/src/cli/summary-reporter.js +22 -22
  26. package/dist/src/cli/summary-reporter.js.map +1 -1
  27. package/dist/src/cli.js +41 -26
  28. package/dist/src/cli.js.map +1 -1
  29. package/dist/src/default-rules.js +8 -0
  30. package/dist/src/default-rules.js.map +1 -1
  31. package/dist/src/linter.js +37 -6
  32. package/dist/src/linter.js.map +1 -1
  33. package/dist/src/rules/erb-no-empty-tags.js +5 -4
  34. package/dist/src/rules/erb-no-empty-tags.js.map +1 -1
  35. package/dist/src/rules/erb-no-output-control-flow.js +5 -4
  36. package/dist/src/rules/erb-no-output-control-flow.js.map +1 -1
  37. package/dist/src/rules/erb-prefer-image-tag-helper.js +93 -0
  38. package/dist/src/rules/erb-prefer-image-tag-helper.js.map +1 -0
  39. package/dist/src/rules/erb-require-whitespace-inside-tags.js +5 -4
  40. package/dist/src/rules/erb-require-whitespace-inside-tags.js.map +1 -1
  41. package/dist/src/rules/erb-requires-trailing-newline.js +22 -0
  42. package/dist/src/rules/erb-requires-trailing-newline.js.map +1 -0
  43. package/dist/src/rules/html-anchor-require-href.js +5 -4
  44. package/dist/src/rules/html-anchor-require-href.js.map +1 -1
  45. package/dist/src/rules/html-aria-attribute-must-be-valid.js +5 -4
  46. package/dist/src/rules/html-aria-attribute-must-be-valid.js.map +1 -1
  47. package/dist/src/rules/html-aria-level-must-be-valid.js +27 -0
  48. package/dist/src/rules/html-aria-level-must-be-valid.js.map +1 -0
  49. package/dist/src/rules/html-aria-role-heading-requires-level.js +5 -4
  50. package/dist/src/rules/html-aria-role-heading-requires-level.js.map +1 -1
  51. package/dist/src/rules/html-aria-role-must-be-valid.js +5 -4
  52. package/dist/src/rules/html-aria-role-must-be-valid.js.map +1 -1
  53. package/dist/src/rules/html-attribute-double-quotes.js +5 -4
  54. package/dist/src/rules/html-attribute-double-quotes.js.map +1 -1
  55. package/dist/src/rules/html-attribute-values-require-quotes.js +5 -4
  56. package/dist/src/rules/html-attribute-values-require-quotes.js.map +1 -1
  57. package/dist/src/rules/html-boolean-attributes-no-value.js +5 -4
  58. package/dist/src/rules/html-boolean-attributes-no-value.js.map +1 -1
  59. package/dist/src/rules/html-img-require-alt.js +5 -4
  60. package/dist/src/rules/html-img-require-alt.js.map +1 -1
  61. package/dist/src/rules/html-no-block-inside-inline.js +7 -6
  62. package/dist/src/rules/html-no-block-inside-inline.js.map +1 -1
  63. package/dist/src/rules/html-no-duplicate-attributes.js +5 -4
  64. package/dist/src/rules/html-no-duplicate-attributes.js.map +1 -1
  65. package/dist/src/rules/html-no-duplicate-ids.js +5 -4
  66. package/dist/src/rules/html-no-duplicate-ids.js.map +1 -1
  67. package/dist/src/rules/html-no-empty-headings.js +5 -4
  68. package/dist/src/rules/html-no-empty-headings.js.map +1 -1
  69. package/dist/src/rules/html-no-nested-links.js +5 -4
  70. package/dist/src/rules/html-no-nested-links.js.map +1 -1
  71. package/dist/src/rules/html-tag-name-lowercase.js +5 -4
  72. package/dist/src/rules/html-tag-name-lowercase.js.map +1 -1
  73. package/dist/src/rules/index.js +3 -0
  74. package/dist/src/rules/index.js.map +1 -1
  75. package/dist/src/rules/parser-no-errors.js +18 -0
  76. package/dist/src/rules/parser-no-errors.js.map +1 -0
  77. package/dist/src/rules/rule-utils.js +125 -2
  78. package/dist/src/rules/rule-utils.js.map +1 -1
  79. package/dist/src/rules/svg-tag-name-capitalization.js +5 -4
  80. package/dist/src/rules/svg-tag-name-capitalization.js.map +1 -1
  81. package/dist/src/types.js +15 -1
  82. package/dist/src/types.js.map +1 -1
  83. package/dist/tsconfig.tsbuildinfo +1 -1
  84. package/dist/types/cli/argument-parser.d.ts +2 -1
  85. package/dist/types/cli/file-processor.d.ts +6 -5
  86. package/dist/types/cli/formatters/base-formatter.d.ts +2 -2
  87. package/dist/types/cli/formatters/detailed-formatter.d.ts +2 -2
  88. package/dist/types/cli/formatters/github-actions-formatter.d.ts +12 -0
  89. package/dist/types/cli/formatters/index.d.ts +2 -0
  90. package/dist/types/cli/formatters/json-formatter.d.ts +42 -0
  91. package/dist/types/cli/formatters/simple-formatter.d.ts +2 -2
  92. package/dist/types/cli/output-manager.d.ts +31 -0
  93. package/dist/types/cli/summary-reporter.d.ts +3 -3
  94. package/dist/types/cli.d.ts +3 -1
  95. package/dist/types/linter.d.ts +20 -5
  96. package/dist/types/rules/erb-no-empty-tags.d.ts +5 -4
  97. package/dist/types/rules/erb-no-output-control-flow.d.ts +5 -4
  98. package/dist/types/rules/erb-prefer-image-tag-helper.d.ts +7 -0
  99. package/dist/types/rules/erb-require-whitespace-inside-tags.d.ts +5 -4
  100. package/dist/types/rules/erb-requires-trailing-newline.d.ts +6 -0
  101. package/dist/types/rules/html-anchor-require-href.d.ts +5 -4
  102. package/dist/types/rules/html-aria-attribute-must-be-valid.d.ts +5 -4
  103. package/dist/types/rules/html-aria-level-must-be-valid.d.ts +7 -0
  104. package/dist/types/rules/html-aria-role-heading-requires-level.d.ts +5 -4
  105. package/dist/types/rules/html-aria-role-must-be-valid.d.ts +5 -4
  106. package/dist/types/rules/html-attribute-double-quotes.d.ts +5 -4
  107. package/dist/types/rules/html-attribute-values-require-quotes.d.ts +5 -4
  108. package/dist/types/rules/html-boolean-attributes-no-value.d.ts +5 -4
  109. package/dist/types/rules/html-img-require-alt.d.ts +5 -4
  110. package/dist/types/rules/html-no-block-inside-inline.d.ts +5 -4
  111. package/dist/types/rules/html-no-duplicate-attributes.d.ts +5 -4
  112. package/dist/types/rules/html-no-duplicate-ids.d.ts +5 -4
  113. package/dist/types/rules/html-no-empty-headings.d.ts +5 -4
  114. package/dist/types/rules/html-no-nested-links.d.ts +5 -4
  115. package/dist/types/rules/html-tag-name-lowercase.d.ts +5 -4
  116. package/dist/types/rules/index.d.ts +3 -0
  117. package/dist/types/rules/parser-no-errors.d.ts +8 -0
  118. package/dist/types/rules/rule-utils.d.ts +73 -4
  119. package/dist/types/rules/svg-tag-name-capitalization.d.ts +5 -4
  120. package/dist/types/src/cli/argument-parser.d.ts +2 -1
  121. package/dist/types/src/cli/file-processor.d.ts +6 -5
  122. package/dist/types/src/cli/formatters/base-formatter.d.ts +2 -2
  123. package/dist/types/src/cli/formatters/detailed-formatter.d.ts +2 -2
  124. package/dist/types/src/cli/formatters/github-actions-formatter.d.ts +12 -0
  125. package/dist/types/src/cli/formatters/index.d.ts +2 -0
  126. package/dist/types/src/cli/formatters/json-formatter.d.ts +42 -0
  127. package/dist/types/src/cli/formatters/simple-formatter.d.ts +2 -2
  128. package/dist/types/src/cli/output-manager.d.ts +31 -0
  129. package/dist/types/src/cli/summary-reporter.d.ts +3 -3
  130. package/dist/types/src/cli.d.ts +3 -1
  131. package/dist/types/src/linter.d.ts +20 -5
  132. package/dist/types/src/rules/erb-no-empty-tags.d.ts +5 -4
  133. package/dist/types/src/rules/erb-no-output-control-flow.d.ts +5 -4
  134. package/dist/types/src/rules/erb-prefer-image-tag-helper.d.ts +7 -0
  135. package/dist/types/src/rules/erb-require-whitespace-inside-tags.d.ts +5 -4
  136. package/dist/types/src/rules/erb-requires-trailing-newline.d.ts +6 -0
  137. package/dist/types/src/rules/html-anchor-require-href.d.ts +5 -4
  138. package/dist/types/src/rules/html-aria-attribute-must-be-valid.d.ts +5 -4
  139. package/dist/types/src/rules/html-aria-level-must-be-valid.d.ts +7 -0
  140. package/dist/types/src/rules/html-aria-role-heading-requires-level.d.ts +5 -4
  141. package/dist/types/src/rules/html-aria-role-must-be-valid.d.ts +5 -4
  142. package/dist/types/src/rules/html-attribute-double-quotes.d.ts +5 -4
  143. package/dist/types/src/rules/html-attribute-values-require-quotes.d.ts +5 -4
  144. package/dist/types/src/rules/html-boolean-attributes-no-value.d.ts +5 -4
  145. package/dist/types/src/rules/html-img-require-alt.d.ts +5 -4
  146. package/dist/types/src/rules/html-no-block-inside-inline.d.ts +5 -4
  147. package/dist/types/src/rules/html-no-duplicate-attributes.d.ts +5 -4
  148. package/dist/types/src/rules/html-no-duplicate-ids.d.ts +5 -4
  149. package/dist/types/src/rules/html-no-empty-headings.d.ts +5 -4
  150. package/dist/types/src/rules/html-no-nested-links.d.ts +5 -4
  151. package/dist/types/src/rules/html-tag-name-lowercase.d.ts +5 -4
  152. package/dist/types/src/rules/index.d.ts +3 -0
  153. package/dist/types/src/rules/parser-no-errors.d.ts +8 -0
  154. package/dist/types/src/rules/rule-utils.d.ts +73 -4
  155. package/dist/types/src/rules/svg-tag-name-capitalization.d.ts +5 -4
  156. package/dist/types/src/types.d.ts +50 -7
  157. package/dist/types/types.d.ts +50 -7
  158. package/docs/rules/README.md +5 -1
  159. package/docs/rules/erb-prefer-image-tag-helper.md +65 -0
  160. package/docs/rules/erb-requires-trailing-newline.md +37 -0
  161. package/docs/rules/html-anchor-require-href.md +1 -1
  162. package/docs/rules/html-aria-level-must-be-valid.md +37 -0
  163. package/docs/rules/parser-no-errors.md +84 -0
  164. package/package.json +4 -4
  165. package/src/cli/argument-parser.ts +33 -19
  166. package/src/cli/file-processor.ts +27 -21
  167. package/src/cli/formatters/base-formatter.ts +2 -2
  168. package/src/cli/formatters/detailed-formatter.ts +9 -9
  169. package/src/cli/formatters/github-actions-formatter.ts +70 -0
  170. package/src/cli/formatters/index.ts +2 -0
  171. package/src/cli/formatters/json-formatter.ts +107 -0
  172. package/src/cli/formatters/simple-formatter.ts +15 -15
  173. package/src/cli/output-manager.ts +143 -0
  174. package/src/cli/summary-reporter.ts +24 -24
  175. package/src/cli.ts +48 -31
  176. package/src/default-rules.ts +8 -0
  177. package/src/linter.ts +42 -8
  178. package/src/rules/erb-no-empty-tags.ts +7 -6
  179. package/src/rules/erb-no-output-control-flow.ts +8 -6
  180. package/src/rules/erb-prefer-image-tag-helper.ts +124 -0
  181. package/src/rules/erb-require-whitespace-inside-tags.ts +7 -6
  182. package/src/rules/erb-requires-trailing-newline.ts +29 -0
  183. package/src/rules/html-anchor-require-href.ts +7 -6
  184. package/src/rules/html-aria-attribute-must-be-valid.ts +7 -7
  185. package/src/rules/html-aria-level-must-be-valid.ts +42 -0
  186. package/src/rules/html-aria-role-heading-requires-level.ts +7 -6
  187. package/src/rules/html-aria-role-must-be-valid.ts +7 -6
  188. package/src/rules/html-attribute-double-quotes.ts +7 -6
  189. package/src/rules/html-attribute-values-require-quotes.ts +7 -6
  190. package/src/rules/html-boolean-attributes-no-value.ts +7 -6
  191. package/src/rules/html-img-require-alt.ts +7 -6
  192. package/src/rules/html-no-block-inside-inline.ts +9 -8
  193. package/src/rules/html-no-duplicate-attributes.ts +7 -6
  194. package/src/rules/html-no-duplicate-ids.ts +7 -7
  195. package/src/rules/html-no-empty-headings.ts +7 -6
  196. package/src/rules/html-no-nested-links.ts +7 -6
  197. package/src/rules/html-tag-name-lowercase.ts +7 -6
  198. package/src/rules/index.ts +3 -0
  199. package/src/rules/parser-no-errors.ts +25 -0
  200. package/src/rules/rule-utils.ts +156 -4
  201. package/src/rules/svg-tag-name-capitalization.ts +7 -6
  202. package/src/types.ts +61 -7
@@ -0,0 +1,93 @@
1
+ import { BaseRuleVisitor, getTagName, findAttributeByName, getAttributes } from "./rule-utils.js";
2
+ import { ParserRule } from "../types.js";
3
+ class ERBPreferImageTagHelperVisitor extends BaseRuleVisitor {
4
+ visitHTMLOpenTagNode(node) {
5
+ this.checkImgTag(node);
6
+ super.visitHTMLOpenTagNode(node);
7
+ }
8
+ visitHTMLSelfCloseTagNode(node) {
9
+ this.checkImgTag(node);
10
+ super.visitHTMLSelfCloseTagNode(node);
11
+ }
12
+ checkImgTag(node) {
13
+ const tagName = getTagName(node);
14
+ if (tagName !== "img") {
15
+ return;
16
+ }
17
+ const attributes = getAttributes(node);
18
+ const srcAttribute = findAttributeByName(attributes, "src");
19
+ if (!srcAttribute) {
20
+ return;
21
+ }
22
+ if (!srcAttribute.value) {
23
+ return;
24
+ }
25
+ const valueNode = srcAttribute.value;
26
+ const hasERBContent = this.containsERBContent(valueNode);
27
+ if (hasERBContent) {
28
+ const suggestedExpression = this.buildSuggestedExpression(valueNode);
29
+ this.addOffense(`Prefer \`image_tag\` helper over manual \`<img>\` with dynamic ERB expressions. Use \`<%= image_tag ${suggestedExpression}, alt: "..." %>\` instead.`, srcAttribute.location, "warning");
30
+ }
31
+ }
32
+ containsERBContent(valueNode) {
33
+ if (!valueNode.children)
34
+ return false;
35
+ return valueNode.children.some(child => child.type === "AST_ERB_CONTENT_NODE");
36
+ }
37
+ buildSuggestedExpression(valueNode) {
38
+ if (!valueNode.children)
39
+ return "expression";
40
+ let hasText = false;
41
+ let hasERB = false;
42
+ for (const child of valueNode.children) {
43
+ if (child.type === "AST_ERB_CONTENT_NODE") {
44
+ hasERB = true;
45
+ }
46
+ else if (child.type === "AST_LITERAL_NODE") {
47
+ const literalNode = child;
48
+ if (literalNode.content && literalNode.content.trim()) {
49
+ hasText = true;
50
+ }
51
+ }
52
+ }
53
+ if (hasText && hasERB) {
54
+ let result = '"';
55
+ for (const child of valueNode.children) {
56
+ if (child.type === "AST_ERB_CONTENT_NODE") {
57
+ const erbNode = child;
58
+ result += `#{${(erbNode.content?.value || "").trim()}}`;
59
+ }
60
+ else if (child.type === "AST_LITERAL_NODE") {
61
+ const literalNode = child;
62
+ result += literalNode.content || "";
63
+ }
64
+ }
65
+ result += '"';
66
+ return result;
67
+ }
68
+ if (hasERB && !hasText) {
69
+ const erbNodes = valueNode.children.filter(child => child.type === "AST_ERB_CONTENT_NODE");
70
+ if (erbNodes.length === 1) {
71
+ return (erbNodes[0].content?.value || "").trim();
72
+ }
73
+ else if (erbNodes.length > 1) {
74
+ let result = '"';
75
+ for (const erbNode of erbNodes) {
76
+ result += `#{${(erbNode.content?.value || "").trim()}}`;
77
+ }
78
+ result += '"';
79
+ return result;
80
+ }
81
+ }
82
+ return "expression";
83
+ }
84
+ }
85
+ export class ERBPreferImageTagHelperRule extends ParserRule {
86
+ name = "erb-prefer-image-tag-helper";
87
+ check(result, context) {
88
+ const visitor = new ERBPreferImageTagHelperVisitor(this.name, context);
89
+ visitor.visit(result.value);
90
+ return visitor.offenses;
91
+ }
92
+ }
93
+ //# sourceMappingURL=erb-prefer-image-tag-helper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"erb-prefer-image-tag-helper.js","sourceRoot":"","sources":["../../../src/rules/erb-prefer-image-tag-helper.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import { isERBNode } from "@herb-tools/core";
2
+ import { ParserRule } from "../types.js";
2
3
  import { BaseRuleVisitor } from "./rule-utils.js";
3
4
  class RequireWhitespaceInsideTags extends BaseRuleVisitor {
4
5
  visitChildNodes(node) {
@@ -48,11 +49,11 @@ class RequireWhitespaceInsideTags extends BaseRuleVisitor {
48
49
  this.addOffense(`Add whitespace before \`${closeTag.value}\`.`, closeTag.location, "error");
49
50
  }
50
51
  }
51
- export class ERBRequireWhitespaceRule {
52
+ export class ERBRequireWhitespaceRule extends ParserRule {
52
53
  name = "erb-require-whitespace-inside-tags";
53
- check(node) {
54
- const visitor = new RequireWhitespaceInsideTags(this.name);
55
- visitor.visit(node);
54
+ check(result, context) {
55
+ const visitor = new RequireWhitespaceInsideTags(this.name, context);
56
+ visitor.visit(result.value);
56
57
  return visitor.offenses;
57
58
  }
58
59
  }
@@ -1 +1 @@
1
- {"version":3,"file":"erb-require-whitespace-inside-tags.js","sourceRoot":"","sources":["../../../src/rules/erb-require-whitespace-inside-tags.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAE7C,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AAEjD,MAAM,2BAA4B,SAAQ,eAAe;IAEvD,eAAe,CAAC,IAAU;QACxB,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAA;QAC1B,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,CAAA;IAC7B,CAAC;IAEO,eAAe,CAAC,IAAU;QAChC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;YACrB,OAAM;QACR,CAAC;QACD,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAA;QAChC,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAA;QACjC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAA;QAE5B,IAAI,CAAC,OAAO,IAAI,CAAC,QAAQ,IAAI,CAAC,OAAO,EAAE,CAAC;YACtC,OAAM;QACR,CAAC;QAED,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAA;QAE3B,IAAI,OAAO,CAAC,KAAK,KAAK,KAAK,EAAE,CAAC;YAC5B,IAAI,CAAC,yBAAyB,CAAC,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAA;QAC1D,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,sBAAsB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAA;YAC3C,IAAI,CAAC,uBAAuB,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAA;QAC/C,CAAC;IACH,CAAC;IAEO,yBAAyB,CAAC,OAAc,EAAE,QAAe,EAAE,OAAe;QAChF,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YACtF,IAAI,CAAC,UAAU,CACb,0BAA0B,OAAO,CAAC,KAAK,KAAK,EAC5C,OAAO,CAAC,QAAQ,EAChB,OAAO,CACR,CAAA;QACH,CAAC;aAAM,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;YACpF,IAAI,CAAC,UAAU,CACb,gCAAgC,EAChC,OAAO,CAAC,QAAQ,EAChB,OAAO,CACR,CAAA;QACH,CAAC;QAED,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YACtD,IAAI,CAAC,UAAU,CACb,2BAA2B,QAAQ,CAAC,KAAK,KAAK,EAC9C,QAAQ,CAAC,QAAQ,EACjB,OAAO,CACR,CAAA;QACH,CAAC;IACH,CAAC;IAEO,sBAAsB,CAAC,OAAc,EAAE,OAAc;QAC3D,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YACxD,OAAM;QACR,CAAC;QAED,IAAI,CAAC,UAAU,CACb,0BAA0B,OAAO,CAAC,KAAK,KAAK,EAC5C,OAAO,CAAC,QAAQ,EAChB,OAAO,CACR,CAAA;IACH,CAAC;IAEO,uBAAuB,CAAC,QAAe,EAAE,OAAc;QAC7D,IAAI,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YACpD,OAAM;QACR,CAAC;QAED,IAAI,CAAC,UAAU,CACb,2BAA2B,QAAQ,CAAC,KAAK,KAAK,EAC9C,QAAQ,CAAC,QAAQ,EACjB,OAAO,CACR,CAAA;IACH,CAAC;CACF;AAED,MAAM,OAAO,wBAAwB;IACnC,IAAI,GAAG,oCAAoC,CAAA;IAE3C,KAAK,CAAC,IAAU;QACd,MAAM,OAAO,GAAG,IAAI,2BAA2B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAC1D,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QACnB,OAAO,OAAO,CAAC,QAAQ,CAAA;IACzB,CAAC;CACF"}
1
+ {"version":3,"file":"erb-require-whitespace-inside-tags.js","sourceRoot":"","sources":["../../../src/rules/erb-require-whitespace-inside-tags.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ import { BaseSourceRuleVisitor, createEndOfFileLocation } from "./rule-utils.js";
2
+ import { SourceRule } from "../types.js";
3
+ class ERBRequiresTrailingNewlineVisitor extends BaseSourceRuleVisitor {
4
+ visitSource(source) {
5
+ if (source.length === 0)
6
+ return;
7
+ if (source.endsWith('\n'))
8
+ return;
9
+ if (!this.context.fileName)
10
+ return;
11
+ this.addOffense("File must end with trailing newline", createEndOfFileLocation(source), "error");
12
+ }
13
+ }
14
+ export class ERBRequiresTrailingNewlineRule extends SourceRule {
15
+ name = "erb-requires-trailing-newline";
16
+ check(source, context) {
17
+ const visitor = new ERBRequiresTrailingNewlineVisitor(this.name, context);
18
+ visitor.visit(source);
19
+ return visitor.offenses;
20
+ }
21
+ }
22
+ //# sourceMappingURL=erb-requires-trailing-newline.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"erb-requires-trailing-newline.js","sourceRoot":"","sources":["../../../src/rules/erb-requires-trailing-newline.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAA;AAChF,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAGxC,MAAM,iCAAkC,SAAQ,qBAAqB;IACzD,WAAW,CAAC,MAAc;QAClC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;YAAE,OAAM;QAC/B,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;YAAE,OAAM;QACjC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ;YAAE,OAAM;QAElC,IAAI,CAAC,UAAU,CACb,qCAAqC,EACrC,uBAAuB,CAAC,MAAM,CAAC,EAC/B,OAAO,CACR,CAAA;IACH,CAAC;CACF;AAED,MAAM,OAAO,8BAA+B,SAAQ,UAAU;IAC5D,IAAI,GAAG,+BAA+B,CAAA;IAEtC,KAAK,CAAC,MAAc,EAAE,OAA8B;QAClD,MAAM,OAAO,GAAG,IAAI,iCAAiC,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;QAEzE,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;QAErB,OAAO,OAAO,CAAC,QAAQ,CAAA;IACzB,CAAC;CACF"}
@@ -1,4 +1,5 @@
1
1
  import { BaseRuleVisitor, getTagName, hasAttribute } from "./rule-utils.js";
2
+ import { ParserRule } from "../types.js";
2
3
  class AnchorRechireHrefVisitor extends BaseRuleVisitor {
3
4
  visitHTMLOpenTagNode(node) {
4
5
  this.checkATag(node);
@@ -14,11 +15,11 @@ class AnchorRechireHrefVisitor extends BaseRuleVisitor {
14
15
  }
15
16
  }
16
17
  }
17
- export class HTMLAnchorRequireHrefRule {
18
+ export class HTMLAnchorRequireHrefRule extends ParserRule {
18
19
  name = "html-anchor-require-href";
19
- check(node) {
20
- const visitor = new AnchorRechireHrefVisitor(this.name);
21
- visitor.visit(node);
20
+ check(result, context) {
21
+ const visitor = new AnchorRechireHrefVisitor(this.name, context);
22
+ visitor.visit(result.value);
22
23
  return visitor.offenses;
23
24
  }
24
25
  }
@@ -1 +1 @@
1
- {"version":3,"file":"html-anchor-require-href.js","sourceRoot":"","sources":["../../../src/rules/html-anchor-require-href.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAK3E,MAAM,wBAAyB,SAAQ,eAAe;IACpD,oBAAoB,CAAC,IAAqB;QACxC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;QACpB,KAAK,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAA;IAClC,CAAC;IAEO,SAAS,CAAC,IAAqB;QACrC,MAAM,OAAO,GAAG,UAAU,CAAC,IAAI,CAAC,CAAA;QAEhC,IAAI,OAAO,KAAK,GAAG,EAAE,CAAC;YACpB,OAAM;QACR,CAAC;QAED,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,CAAC;YAChC,IAAI,CAAC,UAAU,CACb,4EAA4E,EAC5E,IAAI,CAAC,QAAS,CAAC,QAAQ,EACvB,OAAO,CACR,CAAA;QACH,CAAC;IACH,CAAC;CACF;AAED,MAAM,OAAO,yBAAyB;IACpC,IAAI,GAAG,0BAA0B,CAAA;IAEjC,KAAK,CAAC,IAAU;QACd,MAAM,OAAO,GAAG,IAAI,wBAAwB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAEvD,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QAEnB,OAAO,OAAO,CAAC,QAAQ,CAAA;IACzB,CAAC;CACF"}
1
+ {"version":3,"file":"html-anchor-require-href.js","sourceRoot":"","sources":["../../../src/rules/html-anchor-require-href.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAE3E,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAIxC,MAAM,wBAAyB,SAAQ,eAAe;IACpD,oBAAoB,CAAC,IAAqB;QACxC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;QACpB,KAAK,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAA;IAClC,CAAC;IAEO,SAAS,CAAC,IAAqB;QACrC,MAAM,OAAO,GAAG,UAAU,CAAC,IAAI,CAAC,CAAA;QAEhC,IAAI,OAAO,KAAK,GAAG,EAAE,CAAC;YACpB,OAAM;QACR,CAAC;QAED,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,CAAC;YAChC,IAAI,CAAC,UAAU,CACb,4EAA4E,EAC5E,IAAI,CAAC,QAAS,CAAC,QAAQ,EACvB,OAAO,CACR,CAAA;QACH,CAAC;IACH,CAAC;CACF;AAED,MAAM,OAAO,yBAA0B,SAAQ,UAAU;IACvD,IAAI,GAAG,0BAA0B,CAAA;IAEjC,KAAK,CAAC,MAAmB,EAAE,OAA8B;QACvD,MAAM,OAAO,GAAG,IAAI,wBAAwB,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;QAEhE,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;QAE3B,OAAO,OAAO,CAAC,QAAQ,CAAA;IACzB,CAAC;CACF"}
@@ -1,4 +1,5 @@
1
1
  import { ARIA_ATTRIBUTES, AttributeVisitorMixin, } from "./rule-utils.js";
2
+ import { ParserRule } from "../types.js";
2
3
  class AriaAttributeMustBeValid extends AttributeVisitorMixin {
3
4
  checkAttribute(attributeName, _attributeValue, attributeNode, _parentNode) {
4
5
  if (!attributeName.startsWith("aria-"))
@@ -13,11 +14,11 @@ class AriaAttributeMustBeValid extends AttributeVisitorMixin {
13
14
  }
14
15
  }
15
16
  }
16
- export class HTMLAriaAttributeMustBeValid {
17
+ export class HTMLAriaAttributeMustBeValid extends ParserRule {
17
18
  name = "html-aria-attribute-must-be-valid";
18
- check(node) {
19
- const visitor = new AriaAttributeMustBeValid(this.name);
20
- visitor.visit(node);
19
+ check(result, context) {
20
+ const visitor = new AriaAttributeMustBeValid(this.name, context);
21
+ visitor.visit(result.value);
21
22
  return visitor.offenses;
22
23
  }
23
24
  }
@@ -1 +1 @@
1
- {"version":3,"file":"html-aria-attribute-must-be-valid.js","sourceRoot":"","sources":["../../../src/rules/html-aria-attribute-must-be-valid.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,qBAAqB,GACtB,MAAM,iBAAiB,CAAC;AAUzB,MAAM,wBAAyB,SAAQ,qBAAqB;IAC1D,cAAc,CACZ,aAAqB,EACrB,eAA8B,EAC9B,aAAgC,EAChC,WAAmD;QAEnD,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,OAAO,CAAC;YAAE,OAAO;QAE/C,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,aAAa,CAAC,EAAC,CAAC;YACvC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;gBACjB,OAAO,EAAE,mBAAmB,aAAa,0FAA0F;gBACnI,QAAQ,EAAE,OAAO;gBACjB,QAAQ,EAAE,aAAa,CAAC,QAAQ;gBAChC,IAAI,EAAE,IAAI,CAAC,QAAQ;aACpB,CAAC,CAAC;QACL,CAAC;IACH,CAAC;CACF;AAED,MAAM,OAAO,4BAA4B;IACvC,IAAI,GAAG,mCAAmC,CAAC;IAE3C,KAAK,CAAC,IAAU;QACd,MAAM,OAAO,GAAG,IAAI,wBAAwB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACxD,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACpB,OAAO,OAAO,CAAC,QAAQ,CAAC;IAC1B,CAAC;CACF"}
1
+ {"version":3,"file":"html-aria-attribute-must-be-valid.js","sourceRoot":"","sources":["../../../src/rules/html-aria-attribute-must-be-valid.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,qBAAqB,GACtB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AASzC,MAAM,wBAAyB,SAAQ,qBAAqB;IAC1D,cAAc,CACZ,aAAqB,EACrB,eAA8B,EAC9B,aAAgC,EAChC,WAAmD;QAEnD,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,OAAO,CAAC;YAAE,OAAO;QAE/C,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,aAAa,CAAC,EAAC,CAAC;YACvC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;gBACjB,OAAO,EAAE,mBAAmB,aAAa,0FAA0F;gBACnI,QAAQ,EAAE,OAAO;gBACjB,QAAQ,EAAE,aAAa,CAAC,QAAQ;gBAChC,IAAI,EAAE,IAAI,CAAC,QAAQ;aACpB,CAAC,CAAC;QACL,CAAC;IACH,CAAC;CACF;AAED,MAAM,OAAO,4BAA6B,SAAQ,UAAU;IAC1D,IAAI,GAAG,mCAAmC,CAAC;IAE3C,KAAK,CAAC,MAAmB,EAAE,OAA8B;QACvD,MAAM,OAAO,GAAG,IAAI,wBAAwB,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACjE,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC5B,OAAO,OAAO,CAAC,QAAQ,CAAC;IAC1B,CAAC;CACF"}
@@ -0,0 +1,27 @@
1
+ import { AttributeVisitorMixin } from "./rule-utils.js";
2
+ import { ParserRule } from "../types.js";
3
+ class HTMLAriaLevelMustBeValidVisitor extends AttributeVisitorMixin {
4
+ checkAttribute(attributeName, attributeValue, attributeNode, _parentNode) {
5
+ if (attributeName !== "aria-level")
6
+ return;
7
+ if (attributeValue !== null && attributeValue.includes("<%"))
8
+ return;
9
+ if (attributeValue === null || attributeValue === "") {
10
+ this.addOffense(`The \`aria-level\` attribute must be an integer between 1 and 6, got an empty value.`, attributeNode.location);
11
+ return;
12
+ }
13
+ const number = parseInt(attributeValue);
14
+ if (isNaN(number) || number < 1 || number > 6 || attributeValue !== number.toString()) {
15
+ this.addOffense(`The \`aria-level\` attribute must be an integer between 1 and 6, got \`${attributeValue}\`.`, attributeNode.location);
16
+ }
17
+ }
18
+ }
19
+ export class HTMLAriaLevelMustBeValidRule extends ParserRule {
20
+ name = "html-aria-level-must-be-valid";
21
+ check(result, context) {
22
+ const visitor = new HTMLAriaLevelMustBeValidVisitor(this.name, context);
23
+ visitor.visit(result.value);
24
+ return visitor.offenses;
25
+ }
26
+ }
27
+ //# sourceMappingURL=html-aria-level-must-be-valid.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"html-aria-level-must-be-valid.js","sourceRoot":"","sources":["../../../src/rules/html-aria-level-must-be-valid.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAA;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAKxC,MAAM,+BAAgC,SAAQ,qBAAqB;IACvD,cAAc,CAAC,aAAqB,EAAE,cAA6B,EAAE,aAAgC,EAAE,WAAmD;QAClK,IAAI,aAAa,KAAK,YAAY;YAAE,OAAM;QAC1C,IAAI,cAAc,KAAK,IAAI,IAAI,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC;YAAE,OAAM;QAEpE,IAAI,cAAc,KAAK,IAAI,IAAI,cAAc,KAAK,EAAE,EAAE,CAAC;YACrD,IAAI,CAAC,UAAU,CACb,sFAAsF,EACtF,aAAa,CAAC,QAAQ,CACvB,CAAA;YAED,OAAM;QACR,CAAC;QAED,MAAM,MAAM,GAAG,QAAQ,CAAC,cAAc,CAAC,CAAA;QAEvC,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,MAAM,GAAG,CAAC,IAAI,MAAM,GAAG,CAAC,IAAI,cAAc,KAAK,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAC;YACtF,IAAI,CAAC,UAAU,CACb,0EAA0E,cAAc,KAAK,EAC7F,aAAa,CAAC,QAAQ,CACvB,CAAA;QACH,CAAC;IACH,CAAC;CACF;AAED,MAAM,OAAO,4BAA6B,SAAQ,UAAU;IAC1D,IAAI,GAAG,+BAA+B,CAAA;IAEtC,KAAK,CAAC,MAAmB,EAAE,OAA8B;QACvD,MAAM,OAAO,GAAG,IAAI,+BAA+B,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;QAEvE,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;QAE3B,OAAO,OAAO,CAAC,QAAQ,CAAA;IACzB,CAAC;CACF"}
@@ -1,4 +1,5 @@
1
1
  import { AttributeVisitorMixin, getAttributeName, getAttributes } from "./rule-utils.js";
2
+ import { ParserRule } from "../types.js";
2
3
  class AriaRoleHeadingRequiresLevel extends AttributeVisitorMixin {
3
4
  // We want to check 2 attributes here:
4
5
  // 1. role="heading"
@@ -15,11 +16,11 @@ class AriaRoleHeadingRequiresLevel extends AttributeVisitorMixin {
15
16
  }
16
17
  }
17
18
  }
18
- export class HTMLAriaRoleHeadingRequiresLevelRule {
19
+ export class HTMLAriaRoleHeadingRequiresLevelRule extends ParserRule {
19
20
  name = "html-aria-role-heading-requires-level";
20
- check(node) {
21
- const visitor = new AriaRoleHeadingRequiresLevel(this.name);
22
- visitor.visit(node);
21
+ check(result, context) {
22
+ const visitor = new AriaRoleHeadingRequiresLevel(this.name, context);
23
+ visitor.visit(result.value);
23
24
  return visitor.offenses;
24
25
  }
25
26
  }
@@ -1 +1 @@
1
- {"version":3,"file":"html-aria-role-heading-requires-level.js","sourceRoot":"","sources":["../../../src/rules/html-aria-role-heading-requires-level.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAKxF,MAAM,4BAA6B,SAAQ,qBAAqB;IAE9D,sCAAsC;IACtC,oBAAoB;IACpB,0DAA0D;IAC1D,cAAc,CACZ,aAAqB,EACrB,cAA6B,EAC7B,aAAgC,EAChC,UAAkD;QAGlD,IAAI,CAAC,CAAC,aAAa,KAAK,MAAM,IAAI,cAAc,KAAK,SAAS,CAAC,EAAE,CAAC;YAChE,OAAM;QACR,CAAC;QAED,MAAM,aAAa,GAAG,aAAa,CAAC,UAAU,CAAC,CAAA;QAE/C,4DAA4D;QAC5D,MAAM,aAAa,GAAG,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,YAAY,CAAC,CAAA;QACzF,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,IAAI,CAAC,UAAU,CACb,wEAAwE,EACxE,aAAa,CAAC,QAAQ,EACtB,OAAO,CACR,CAAA;QACH,CAAC;IACH,CAAC;CACF;AAED,MAAM,OAAO,oCAAoC;IAC/C,IAAI,GAAG,uCAAuC,CAAA;IAE9C,KAAK,CAAC,IAAU;QACd,MAAM,OAAO,GAAG,IAAI,4BAA4B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAC3D,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QACnB,OAAO,OAAO,CAAC,QAAQ,CAAA;IACzB,CAAC;CACF"}
1
+ {"version":3,"file":"html-aria-role-heading-requires-level.js","sourceRoot":"","sources":["../../../src/rules/html-aria-role-heading-requires-level.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAExF,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAIxC,MAAM,4BAA6B,SAAQ,qBAAqB;IAE9D,sCAAsC;IACtC,oBAAoB;IACpB,0DAA0D;IAC1D,cAAc,CACZ,aAAqB,EACrB,cAA6B,EAC7B,aAAgC,EAChC,UAAkD;QAGlD,IAAI,CAAC,CAAC,aAAa,KAAK,MAAM,IAAI,cAAc,KAAK,SAAS,CAAC,EAAE,CAAC;YAChE,OAAM;QACR,CAAC;QAED,MAAM,aAAa,GAAG,aAAa,CAAC,UAAU,CAAC,CAAA;QAE/C,4DAA4D;QAC5D,MAAM,aAAa,GAAG,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,YAAY,CAAC,CAAA;QACzF,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,IAAI,CAAC,UAAU,CACb,wEAAwE,EACxE,aAAa,CAAC,QAAQ,EACtB,OAAO,CACR,CAAA;QACH,CAAC;IACH,CAAC;CACF;AAED,MAAM,OAAO,oCAAqC,SAAQ,UAAU;IAClE,IAAI,GAAG,uCAAuC,CAAA;IAE9C,KAAK,CAAC,MAAmB,EAAE,OAA8B;QACvD,MAAM,OAAO,GAAG,IAAI,4BAA4B,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;QACpE,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;QAC3B,OAAO,OAAO,CAAC,QAAQ,CAAA;IACzB,CAAC;CACF"}
@@ -1,4 +1,5 @@
1
1
  import { AttributeVisitorMixin, VALID_ARIA_ROLES } from "./rule-utils.js";
2
+ import { ParserRule } from "../types.js";
2
3
  class AriaRoleMustBeValid extends AttributeVisitorMixin {
3
4
  checkAttribute(attributeName, attributeValue, attributeNode) {
4
5
  if (attributeName !== "role")
@@ -10,11 +11,11 @@ class AriaRoleMustBeValid extends AttributeVisitorMixin {
10
11
  this.addOffense(`The \`role\` attribute must be a valid ARIA role. Role \`${attributeValue}\` is not recognized.`, attributeNode.location, "error");
11
12
  }
12
13
  }
13
- export class HTMLAriaRoleMustBeValidRule {
14
+ export class HTMLAriaRoleMustBeValidRule extends ParserRule {
14
15
  name = "html-aria-role-must-be-valid";
15
- check(node) {
16
- const visitor = new AriaRoleMustBeValid(this.name);
17
- visitor.visit(node);
16
+ check(result, context) {
17
+ const visitor = new AriaRoleMustBeValid(this.name, context);
18
+ visitor.visit(result.value);
18
19
  return visitor.offenses;
19
20
  }
20
21
  }
@@ -1 +1 @@
1
- {"version":3,"file":"html-aria-role-must-be-valid.js","sourceRoot":"","sources":["../../../src/rules/html-aria-role-must-be-valid.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AAKzE,MAAM,mBAAoB,SAAQ,qBAAqB;IACrD,cAAc,CAAC,aAAqB,EAAE,cAA6B,EAAE,aAAgC;QACnG,IAAI,aAAa,KAAK,MAAM;YAAE,OAAM;QACpC,IAAI,cAAc,KAAK,IAAI;YAAE,OAAM;QACnC,IAAI,gBAAgB,CAAC,GAAG,CAAC,cAAc,CAAC;YAAE,OAAM;QAEhD,IAAI,CAAC,UAAU,CACb,4DAA4D,cAAc,uBAAuB,EACjG,aAAa,CAAC,QAAQ,EACtB,OAAO,CACR,CAAA;IACH,CAAC;CACF;AAED,MAAM,OAAO,2BAA2B;IACtC,IAAI,GAAG,8BAA8B,CAAA;IAErC,KAAK,CAAC,IAAU;QACd,MAAM,OAAO,GAAG,IAAI,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAElD,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QAEnB,OAAO,OAAO,CAAC,QAAQ,CAAA;IACzB,CAAC;CACF"}
1
+ {"version":3,"file":"html-aria-role-must-be-valid.js","sourceRoot":"","sources":["../../../src/rules/html-aria-role-must-be-valid.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AAEzE,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAIxC,MAAM,mBAAoB,SAAQ,qBAAqB;IACrD,cAAc,CAAC,aAAqB,EAAE,cAA6B,EAAE,aAAgC;QACnG,IAAI,aAAa,KAAK,MAAM;YAAE,OAAM;QACpC,IAAI,cAAc,KAAK,IAAI;YAAE,OAAM;QACnC,IAAI,gBAAgB,CAAC,GAAG,CAAC,cAAc,CAAC;YAAE,OAAM;QAEhD,IAAI,CAAC,UAAU,CACb,4DAA4D,cAAc,uBAAuB,EACjG,aAAa,CAAC,QAAQ,EACtB,OAAO,CACR,CAAA;IACH,CAAC;CACF;AAED,MAAM,OAAO,2BAA4B,SAAQ,UAAU;IACzD,IAAI,GAAG,8BAA8B,CAAA;IAErC,KAAK,CAAC,MAAmB,EAAE,OAA8B;QACvD,MAAM,OAAO,GAAG,IAAI,mBAAmB,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;QAE3D,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;QAE3B,OAAO,OAAO,CAAC,QAAQ,CAAA;IACzB,CAAC;CACF"}
@@ -1,4 +1,5 @@
1
1
  import { AttributeVisitorMixin, getAttributeValueQuoteType, hasAttributeValue } from "./rule-utils.js";
2
+ import { ParserRule } from "../types.js";
2
3
  class AttributeDoubleQuotesVisitor extends AttributeVisitorMixin {
3
4
  checkAttribute(attributeName, attributeValue, attributeNode) {
4
5
  if (!hasAttributeValue(attributeNode))
@@ -10,11 +11,11 @@ class AttributeDoubleQuotesVisitor extends AttributeVisitorMixin {
10
11
  this.addOffense(`Attribute \`${attributeName}\` uses single quotes. Prefer double quotes for HTML attribute values: \`${attributeName}="value"\`.`, attributeNode.value.location, "warning");
11
12
  }
12
13
  }
13
- export class HTMLAttributeDoubleQuotesRule {
14
+ export class HTMLAttributeDoubleQuotesRule extends ParserRule {
14
15
  name = "html-attribute-double-quotes";
15
- check(node) {
16
- const visitor = new AttributeDoubleQuotesVisitor(this.name);
17
- visitor.visit(node);
16
+ check(result, context) {
17
+ const visitor = new AttributeDoubleQuotesVisitor(this.name, context);
18
+ visitor.visit(result.value);
18
19
  return visitor.offenses;
19
20
  }
20
21
  }
@@ -1 +1 @@
1
- {"version":3,"file":"html-attribute-double-quotes.js","sourceRoot":"","sources":["../../../src/rules/html-attribute-double-quotes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,0BAA0B,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AAKtG,MAAM,4BAA6B,SAAQ,qBAAqB;IACpD,cAAc,CAAC,aAAqB,EAAE,cAA6B,EAAE,aAAgC;QAC7G,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC;YAAE,OAAM;QAC7C,IAAI,0BAA0B,CAAC,aAAa,CAAC,KAAK,QAAQ;YAAE,OAAM;QAClE,IAAI,cAAc,EAAE,QAAQ,CAAC,GAAG,CAAC;YAAE,OAAM,CAAC,6DAA6D;QAEvG,IAAI,CAAC,UAAU,CACb,eAAe,aAAa,4EAA4E,aAAa,aAAa,EAClI,aAAa,CAAC,KAAM,CAAC,QAAQ,EAC7B,SAAS,CACV,CAAA;IACH,CAAC;CACF;AAED,MAAM,OAAO,6BAA6B;IACxC,IAAI,GAAG,8BAA8B,CAAA;IAErC,KAAK,CAAC,IAAU;QACd,MAAM,OAAO,GAAG,IAAI,4BAA4B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAC3D,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QACnB,OAAO,OAAO,CAAC,QAAQ,CAAA;IACzB,CAAC;CACF"}
1
+ {"version":3,"file":"html-attribute-double-quotes.js","sourceRoot":"","sources":["../../../src/rules/html-attribute-double-quotes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,0BAA0B,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AAEtG,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAIxC,MAAM,4BAA6B,SAAQ,qBAAqB;IACpD,cAAc,CAAC,aAAqB,EAAE,cAA6B,EAAE,aAAgC;QAC7G,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC;YAAE,OAAM;QAC7C,IAAI,0BAA0B,CAAC,aAAa,CAAC,KAAK,QAAQ;YAAE,OAAM;QAClE,IAAI,cAAc,EAAE,QAAQ,CAAC,GAAG,CAAC;YAAE,OAAM,CAAC,6DAA6D;QAEvG,IAAI,CAAC,UAAU,CACb,eAAe,aAAa,4EAA4E,aAAa,aAAa,EAClI,aAAa,CAAC,KAAM,CAAC,QAAQ,EAC7B,SAAS,CACV,CAAA;IACH,CAAC;CACF;AAED,MAAM,OAAO,6BAA8B,SAAQ,UAAU;IAC3D,IAAI,GAAG,8BAA8B,CAAA;IAErC,KAAK,CAAC,MAAmB,EAAE,OAA8B;QACvD,MAAM,OAAO,GAAG,IAAI,4BAA4B,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;QACpE,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;QAC3B,OAAO,OAAO,CAAC,QAAQ,CAAA;IACzB,CAAC;CACF"}
@@ -1,4 +1,5 @@
1
1
  import { AttributeVisitorMixin } from "./rule-utils.js";
2
+ import { ParserRule } from "../types.js";
2
3
  class AttributeValuesRequireQuotesVisitor extends AttributeVisitorMixin {
3
4
  checkAttribute(attributeName, _attributeValue, attributeNode) {
4
5
  if (attributeNode.value?.type !== "AST_HTML_ATTRIBUTE_VALUE_NODE")
@@ -11,11 +12,11 @@ class AttributeValuesRequireQuotesVisitor extends AttributeVisitorMixin {
11
12
  `Attribute value should be quoted: \`${attributeName}="value"\`. Always wrap attribute values in quotes.`, valueNode.location, "error");
12
13
  }
13
14
  }
14
- export class HTMLAttributeValuesRequireQuotesRule {
15
+ export class HTMLAttributeValuesRequireQuotesRule extends ParserRule {
15
16
  name = "html-attribute-values-require-quotes";
16
- check(node) {
17
- const visitor = new AttributeValuesRequireQuotesVisitor(this.name);
18
- visitor.visit(node);
17
+ check(result, context) {
18
+ const visitor = new AttributeValuesRequireQuotesVisitor(this.name, context);
19
+ visitor.visit(result.value);
19
20
  return visitor.offenses;
20
21
  }
21
22
  }
@@ -1 +1 @@
1
- {"version":3,"file":"html-attribute-values-require-quotes.js","sourceRoot":"","sources":["../../../src/rules/html-attribute-values-require-quotes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAA;AAKvD,MAAM,mCAAoC,SAAQ,qBAAqB;IAC3D,cAAc,CAAC,aAAqB,EAAE,eAA8B,EAAE,aAAgC;QAC9G,IAAI,aAAa,CAAC,KAAK,EAAE,IAAI,KAAK,+BAA+B;YAAE,OAAM;QAEzE,MAAM,SAAS,GAAG,aAAa,CAAC,KAA+B,CAAA;QAC/D,IAAI,SAAS,CAAC,MAAM;YAAE,OAAM;QAE5B,IAAI,CAAC,UAAU;QACb,gDAAgD;QAChD,uCAAuC,aAAa,qDAAqD,EACzG,SAAS,CAAC,QAAQ,EAClB,OAAO,CACR,CAAA;IACH,CAAC;CACF;AAED,MAAM,OAAO,oCAAoC;IAC/C,IAAI,GAAG,sCAAsC,CAAA;IAE7C,KAAK,CAAC,IAAU;QACd,MAAM,OAAO,GAAG,IAAI,mCAAmC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAClE,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QACnB,OAAO,OAAO,CAAC,QAAQ,CAAA;IACzB,CAAC;CACF"}
1
+ {"version":3,"file":"html-attribute-values-require-quotes.js","sourceRoot":"","sources":["../../../src/rules/html-attribute-values-require-quotes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAA;AAEvD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAIxC,MAAM,mCAAoC,SAAQ,qBAAqB;IAC3D,cAAc,CAAC,aAAqB,EAAE,eAA8B,EAAE,aAAgC;QAC9G,IAAI,aAAa,CAAC,KAAK,EAAE,IAAI,KAAK,+BAA+B;YAAE,OAAM;QAEzE,MAAM,SAAS,GAAG,aAAa,CAAC,KAA+B,CAAA;QAC/D,IAAI,SAAS,CAAC,MAAM;YAAE,OAAM;QAE5B,IAAI,CAAC,UAAU;QACb,gDAAgD;QAChD,uCAAuC,aAAa,qDAAqD,EACzG,SAAS,CAAC,QAAQ,EAClB,OAAO,CACR,CAAA;IACH,CAAC;CACF;AAED,MAAM,OAAO,oCAAqC,SAAQ,UAAU;IAClE,IAAI,GAAG,sCAAsC,CAAA;IAE7C,KAAK,CAAC,MAAmB,EAAE,OAA8B;QACvD,MAAM,OAAO,GAAG,IAAI,mCAAmC,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;QAC3E,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;QAC3B,OAAO,OAAO,CAAC,QAAQ,CAAA;IACzB,CAAC;CACF"}
@@ -1,4 +1,5 @@
1
1
  import { AttributeVisitorMixin, isBooleanAttribute, hasAttributeValue } from "./rule-utils.js";
2
+ import { ParserRule } from "../types.js";
2
3
  class BooleanAttributesNoValueVisitor extends AttributeVisitorMixin {
3
4
  checkAttribute(attributeName, _attributeValue, attributeNode) {
4
5
  if (!isBooleanAttribute(attributeName))
@@ -8,11 +9,11 @@ class BooleanAttributesNoValueVisitor extends AttributeVisitorMixin {
8
9
  this.addOffense(`Boolean attribute \`${attributeName}\` should not have a value. Use \`${attributeName}\` instead of \`${attributeName}="${attributeName}"\`.`, attributeNode.value.location, "error");
9
10
  }
10
11
  }
11
- export class HTMLBooleanAttributesNoValueRule {
12
+ export class HTMLBooleanAttributesNoValueRule extends ParserRule {
12
13
  name = "html-boolean-attributes-no-value";
13
- check(node) {
14
- const visitor = new BooleanAttributesNoValueVisitor(this.name);
15
- visitor.visit(node);
14
+ check(result, context) {
15
+ const visitor = new BooleanAttributesNoValueVisitor(this.name, context);
16
+ visitor.visit(result.value);
16
17
  return visitor.offenses;
17
18
  }
18
19
  }
@@ -1 +1 @@
1
- {"version":3,"file":"html-boolean-attributes-no-value.js","sourceRoot":"","sources":["../../../src/rules/html-boolean-attributes-no-value.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AAK9F,MAAM,+BAAgC,SAAQ,qBAAqB;IACvD,cAAc,CAAC,aAAqB,EAAE,eAA8B,EAAE,aAAgC;QAC9G,IAAI,CAAC,kBAAkB,CAAC,aAAa,CAAC;YAAE,OAAM;QAC9C,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC;YAAE,OAAM;QAE7C,IAAI,CAAC,UAAU,CACb,uBAAuB,aAAa,qCAAqC,aAAa,mBAAmB,aAAa,KAAK,aAAa,MAAM,EAC9I,aAAa,CAAC,KAAM,CAAC,QAAQ,EAC7B,OAAO,CACR,CAAA;IACH,CAAC;CACF;AAED,MAAM,OAAO,gCAAgC;IAC3C,IAAI,GAAG,kCAAkC,CAAA;IAEzC,KAAK,CAAC,IAAU;QACd,MAAM,OAAO,GAAG,IAAI,+BAA+B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAC9D,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QACnB,OAAO,OAAO,CAAC,QAAQ,CAAA;IACzB,CAAC;CACF"}
1
+ {"version":3,"file":"html-boolean-attributes-no-value.js","sourceRoot":"","sources":["../../../src/rules/html-boolean-attributes-no-value.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AAE9F,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAIxC,MAAM,+BAAgC,SAAQ,qBAAqB;IACvD,cAAc,CAAC,aAAqB,EAAE,eAA8B,EAAE,aAAgC;QAC9G,IAAI,CAAC,kBAAkB,CAAC,aAAa,CAAC;YAAE,OAAM;QAC9C,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC;YAAE,OAAM;QAE7C,IAAI,CAAC,UAAU,CACb,uBAAuB,aAAa,qCAAqC,aAAa,mBAAmB,aAAa,KAAK,aAAa,MAAM,EAC9I,aAAa,CAAC,KAAM,CAAC,QAAQ,EAC7B,OAAO,CACR,CAAA;IACH,CAAC;CACF;AAED,MAAM,OAAO,gCAAiC,SAAQ,UAAU;IAC9D,IAAI,GAAG,kCAAkC,CAAA;IAEzC,KAAK,CAAC,MAAmB,EAAE,OAA8B;QACvD,MAAM,OAAO,GAAG,IAAI,+BAA+B,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;QACvE,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;QAC3B,OAAO,OAAO,CAAC,QAAQ,CAAA;IACzB,CAAC;CACF"}
@@ -1,4 +1,5 @@
1
1
  import { BaseRuleVisitor, getTagName, hasAttribute } from "./rule-utils.js";
2
+ import { ParserRule } from "../types.js";
2
3
  class ImgRequireAltVisitor extends BaseRuleVisitor {
3
4
  visitHTMLOpenTagNode(node) {
4
5
  this.checkImgTag(node);
@@ -18,11 +19,11 @@ class ImgRequireAltVisitor extends BaseRuleVisitor {
18
19
  }
19
20
  }
20
21
  }
21
- export class HTMLImgRequireAltRule {
22
+ export class HTMLImgRequireAltRule extends ParserRule {
22
23
  name = "html-img-require-alt";
23
- check(node) {
24
- const visitor = new ImgRequireAltVisitor(this.name);
25
- visitor.visit(node);
24
+ check(result, context) {
25
+ const visitor = new ImgRequireAltVisitor(this.name, context);
26
+ visitor.visit(result.value);
26
27
  return visitor.offenses;
27
28
  }
28
29
  }
@@ -1 +1 @@
1
- {"version":3,"file":"html-img-require-alt.js","sourceRoot":"","sources":["../../../src/rules/html-img-require-alt.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAK3E,MAAM,oBAAqB,SAAQ,eAAe;IAChD,oBAAoB,CAAC,IAAqB;QACxC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAA;QACtB,KAAK,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAA;IAClC,CAAC;IAED,yBAAyB,CAAC,IAA0B;QAClD,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAA;QACtB,KAAK,CAAC,yBAAyB,CAAC,IAAI,CAAC,CAAA;IACvC,CAAC;IAEO,WAAW,CAAC,IAA4C;QAC9D,MAAM,OAAO,GAAG,UAAU,CAAC,IAAI,CAAC,CAAA;QAEhC,IAAI,OAAO,KAAK,KAAK,EAAE,CAAC;YACtB,OAAM;QACR,CAAC;QAED,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC;YAC/B,IAAI,CAAC,UAAU,CACb,oIAAoI,EACpI,IAAI,CAAC,QAAS,CAAC,QAAQ,EACvB,OAAO,CACR,CAAA;QACH,CAAC;IACH,CAAC;CACF;AAED,MAAM,OAAO,qBAAqB;IAChC,IAAI,GAAG,sBAAsB,CAAA;IAE7B,KAAK,CAAC,IAAU;QACd,MAAM,OAAO,GAAG,IAAI,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACnD,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QACnB,OAAO,OAAO,CAAC,QAAQ,CAAA;IACzB,CAAC;CACF"}
1
+ {"version":3,"file":"html-img-require-alt.js","sourceRoot":"","sources":["../../../src/rules/html-img-require-alt.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAE3E,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAIxC,MAAM,oBAAqB,SAAQ,eAAe;IAChD,oBAAoB,CAAC,IAAqB;QACxC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAA;QACtB,KAAK,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAA;IAClC,CAAC;IAED,yBAAyB,CAAC,IAA0B;QAClD,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAA;QACtB,KAAK,CAAC,yBAAyB,CAAC,IAAI,CAAC,CAAA;IACvC,CAAC;IAEO,WAAW,CAAC,IAA4C;QAC9D,MAAM,OAAO,GAAG,UAAU,CAAC,IAAI,CAAC,CAAA;QAEhC,IAAI,OAAO,KAAK,KAAK,EAAE,CAAC;YACtB,OAAM;QACR,CAAC;QAED,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC;YAC/B,IAAI,CAAC,UAAU,CACb,oIAAoI,EACpI,IAAI,CAAC,QAAS,CAAC,QAAQ,EACvB,OAAO,CACR,CAAA;QACH,CAAC;IACH,CAAC;CACF;AAED,MAAM,OAAO,qBAAsB,SAAQ,UAAU;IACnD,IAAI,GAAG,sBAAsB,CAAA;IAE7B,KAAK,CAAC,MAAmB,EAAE,OAA8B;QACvD,MAAM,OAAO,GAAG,IAAI,oBAAoB,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;QAC5D,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;QAC3B,OAAO,OAAO,CAAC,QAAQ,CAAA;IACzB,CAAC;CACF"}
@@ -1,4 +1,5 @@
1
1
  import { BaseRuleVisitor, isInlineElement, isBlockElement } from "./rule-utils.js";
2
+ import { ParserRule } from "../types.js";
2
3
  class BlockInsideInlineVisitor extends BaseRuleVisitor {
3
4
  inlineStack = [];
4
5
  isValidHTMLOpenTag(node) {
@@ -10,7 +11,7 @@ class BlockInsideInlineVisitor extends BaseRuleVisitor {
10
11
  const isUnknown = !isInline && !isBlock;
11
12
  return { isInline, isBlock, isUnknown };
12
13
  }
13
- addViolationMessage(tagName, isBlock, openTag) {
14
+ addOffenseMessage(tagName, isBlock, openTag) {
14
15
  const parentInline = this.inlineStack[this.inlineStack.length - 1];
15
16
  const elementType = isBlock ? "Block-level" : "Unknown";
16
17
  this.addOffense(`${elementType} element \`<${tagName}>\` cannot be placed inside inline element \`<${parentInline}>\`.`, openTag.tag_name.location, "error");
@@ -39,7 +40,7 @@ class BlockInsideInlineVisitor extends BaseRuleVisitor {
39
40
  }
40
41
  const { isInline, isBlock, isUnknown } = this.getElementType(tagName);
41
42
  if ((isBlock || isUnknown) && this.inlineStack.length > 0) {
42
- this.addViolationMessage(tagName, isBlock, openTag);
43
+ this.addOffenseMessage(tagName, isBlock, openTag);
43
44
  }
44
45
  if (isInline) {
45
46
  this.visitInlineElement(node, tagName);
@@ -48,11 +49,11 @@ class BlockInsideInlineVisitor extends BaseRuleVisitor {
48
49
  this.visitBlockElement(node);
49
50
  }
50
51
  }
51
- export class HTMLNoBlockInsideInlineRule {
52
+ export class HTMLNoBlockInsideInlineRule extends ParserRule {
52
53
  name = "html-no-block-inside-inline";
53
- check(node) {
54
- const visitor = new BlockInsideInlineVisitor(this.name);
55
- visitor.visit(node);
54
+ check(result, context) {
55
+ const visitor = new BlockInsideInlineVisitor(this.name, context);
56
+ visitor.visit(result.value);
56
57
  return visitor.offenses;
57
58
  }
58
59
  }
@@ -1 +1 @@
1
- {"version":3,"file":"html-no-block-inside-inline.js","sourceRoot":"","sources":["../../../src/rules/html-no-block-inside-inline.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAKlF,MAAM,wBAAyB,SAAQ,eAAe;IAC5C,WAAW,GAAa,EAAE,CAAA;IAE1B,kBAAkB,CAAC,IAAqB;QAC9C,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,wBAAwB,CAAC,CAAA;IAC7E,CAAC;IAEO,cAAc,CAAC,OAAe;QACpC,MAAM,QAAQ,GAAG,eAAe,CAAC,OAAO,CAAC,CAAA;QACzC,MAAM,OAAO,GAAG,cAAc,CAAC,OAAO,CAAC,CAAA;QACvC,MAAM,SAAS,GAAG,CAAC,QAAQ,IAAI,CAAC,OAAO,CAAA;QAEvC,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,CAAA;IACzC,CAAC;IAEO,mBAAmB,CAAC,OAAe,EAAE,OAAgB,EAAE,OAAwB;QACrF,MAAM,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;QAClE,MAAM,WAAW,GAAG,OAAO,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,CAAA;QAEvD,IAAI,CAAC,UAAU,CACb,GAAG,WAAW,eAAe,OAAO,iDAAiD,YAAY,MAAM,EACvG,OAAO,CAAC,QAAS,CAAC,QAAQ,EAC1B,OAAO,CACR,CAAA;IACH,CAAC;IAEO,kBAAkB,CAAC,IAAqB,EAAE,OAAe;QAC/D,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QAC9B,KAAK,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAA;QAChC,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,CAAA;IACxB,CAAC;IAEO,iBAAiB,CAAC,IAAqB;QAC7C,MAAM,UAAU,GAAG,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,CAAA;QACxC,IAAI,CAAC,WAAW,GAAG,EAAE,CAAA;QACrB,KAAK,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAA;QAChC,IAAI,CAAC,WAAW,GAAG,UAAU,CAAA;IAC/B,CAAC;IAED,oBAAoB,CAAC,IAAqB;QACxC,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC;YACnC,KAAK,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAA;YAEhC,OAAM;QACR,CAAC;QAED,MAAM,OAAO,GAAG,IAAI,CAAC,QAA2B,CAAA;QAChD,MAAM,OAAO,GAAG,OAAO,CAAC,QAAQ,EAAE,KAAK,CAAC,WAAW,EAAE,CAAA;QAErD,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,KAAK,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAA;YAEhC,OAAM;QACR,CAAC;QAED,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAA;QAErE,IAAI,CAAC,OAAO,IAAI,SAAS,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC1D,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAA;QACrD,CAAC;QAED,IAAI,QAAQ,EAAE,CAAC;YACb,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;YACtC,OAAM;QACR,CAAC;QAED,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAA;IAC9B,CAAC;CACF;AAED,MAAM,OAAO,2BAA2B;IACtC,IAAI,GAAG,6BAA6B,CAAA;IAEpC,KAAK,CAAC,IAAU;QACd,MAAM,OAAO,GAAG,IAAI,wBAAwB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACvD,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QACnB,OAAO,OAAO,CAAC,QAAQ,CAAA;IACzB,CAAC;CACF"}
1
+ {"version":3,"file":"html-no-block-inside-inline.js","sourceRoot":"","sources":["../../../src/rules/html-no-block-inside-inline.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import { BaseRuleVisitor, forEachAttribute } from "./rule-utils.js";
2
+ import { ParserRule } from "../types.js";
2
3
  class NoDuplicateAttributesVisitor extends BaseRuleVisitor {
3
4
  visitHTMLOpenTagNode(node) {
4
5
  this.checkDuplicateAttributes(node);
@@ -32,11 +33,11 @@ class NoDuplicateAttributesVisitor extends BaseRuleVisitor {
32
33
  }
33
34
  }
34
35
  }
35
- export class HTMLNoDuplicateAttributesRule {
36
+ export class HTMLNoDuplicateAttributesRule extends ParserRule {
36
37
  name = "html-no-duplicate-attributes";
37
- check(node) {
38
- const visitor = new NoDuplicateAttributesVisitor(this.name);
39
- visitor.visit(node);
38
+ check(result, context) {
39
+ const visitor = new NoDuplicateAttributesVisitor(this.name, context);
40
+ visitor.visit(result.value);
40
41
  return visitor.offenses;
41
42
  }
42
43
  }
@@ -1 +1 @@
1
- {"version":3,"file":"html-no-duplicate-attributes.js","sourceRoot":"","sources":["../../../src/rules/html-no-duplicate-attributes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AAKnE,MAAM,4BAA6B,SAAQ,eAAe;IACxD,oBAAoB,CAAC,IAAqB;QACxC,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,CAAA;QACnC,KAAK,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAA;IAClC,CAAC;IAED,yBAAyB,CAAC,IAA0B;QAClD,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,CAAA;QACnC,KAAK,CAAC,yBAAyB,CAAC,IAAI,CAAC,CAAA;IACvC,CAAC;IAEO,wBAAwB,CAAC,IAA4C;QAC3E,MAAM,cAAc,GAAG,IAAI,GAAG,EAAmC,CAAA;QAEjE,gBAAgB,CAAC,IAAI,EAAE,CAAC,aAAa,EAAE,EAAE;YACvC,IAAI,aAAa,CAAC,IAAI,EAAE,IAAI,KAAK,8BAA8B;gBAAE,OAAM;YAEvE,MAAM,QAAQ,GAAG,aAAa,CAAC,IAA6B,CAAA;YAC5D,IAAI,CAAC,QAAQ,CAAC,IAAI;gBAAE,OAAM;YAE1B,MAAM,aAAa,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAA,CAAC,uCAAuC;YAE/F,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE,CAAC;gBACvC,cAAc,CAAC,GAAG,CAAC,aAAa,EAAE,EAAE,CAAC,CAAA;YACvC,CAAC;YAED,cAAc,CAAC,GAAG,CAAC,aAAa,CAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QACnD,CAAC,CAAC,CAAA;QAEF,KAAK,MAAM,CAAC,aAAa,EAAE,SAAS,CAAC,IAAI,cAAc,EAAE,CAAC;YACxD,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACzB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;oBAC1C,MAAM,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAC,CAAA;oBAE7B,IAAI,CAAC,UAAU,CACb,yBAAyB,aAAa,mDAAmD,EACzF,QAAQ,CAAC,QAAQ,EACjB,OAAO,CACR,CAAA;gBACH,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;CACF;AAED,MAAM,OAAO,6BAA6B;IACxC,IAAI,GAAG,8BAA8B,CAAA;IAErC,KAAK,CAAC,IAAU;QACd,MAAM,OAAO,GAAG,IAAI,4BAA4B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAC3D,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QACnB,OAAO,OAAO,CAAC,QAAQ,CAAA;IACzB,CAAC;CACF"}
1
+ {"version":3,"file":"html-no-duplicate-attributes.js","sourceRoot":"","sources":["../../../src/rules/html-no-duplicate-attributes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AAEnE,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAIxC,MAAM,4BAA6B,SAAQ,eAAe;IACxD,oBAAoB,CAAC,IAAqB;QACxC,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,CAAA;QACnC,KAAK,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAA;IAClC,CAAC;IAED,yBAAyB,CAAC,IAA0B;QAClD,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,CAAA;QACnC,KAAK,CAAC,yBAAyB,CAAC,IAAI,CAAC,CAAA;IACvC,CAAC;IAEO,wBAAwB,CAAC,IAA4C;QAC3E,MAAM,cAAc,GAAG,IAAI,GAAG,EAAmC,CAAA;QAEjE,gBAAgB,CAAC,IAAI,EAAE,CAAC,aAAa,EAAE,EAAE;YACvC,IAAI,aAAa,CAAC,IAAI,EAAE,IAAI,KAAK,8BAA8B;gBAAE,OAAM;YAEvE,MAAM,QAAQ,GAAG,aAAa,CAAC,IAA6B,CAAA;YAC5D,IAAI,CAAC,QAAQ,CAAC,IAAI;gBAAE,OAAM;YAE1B,MAAM,aAAa,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAA,CAAC,uCAAuC;YAE/F,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE,CAAC;gBACvC,cAAc,CAAC,GAAG,CAAC,aAAa,EAAE,EAAE,CAAC,CAAA;YACvC,CAAC;YAED,cAAc,CAAC,GAAG,CAAC,aAAa,CAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QACnD,CAAC,CAAC,CAAA;QAEF,KAAK,MAAM,CAAC,aAAa,EAAE,SAAS,CAAC,IAAI,cAAc,EAAE,CAAC;YACxD,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACzB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;oBAC1C,MAAM,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAC,CAAA;oBAE7B,IAAI,CAAC,UAAU,CACb,yBAAyB,aAAa,mDAAmD,EACzF,QAAQ,CAAC,QAAQ,EACjB,OAAO,CACR,CAAA;gBACH,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;CACF;AAED,MAAM,OAAO,6BAA8B,SAAQ,UAAU;IAC3D,IAAI,GAAG,8BAA8B,CAAA;IAErC,KAAK,CAAC,MAAmB,EAAE,OAA8B;QACvD,MAAM,OAAO,GAAG,IAAI,4BAA4B,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;QACpE,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;QAC3B,OAAO,OAAO,CAAC,QAAQ,CAAA;IACzB,CAAC;CACF"}
@@ -1,4 +1,5 @@
1
1
  import { AttributeVisitorMixin } from "./rule-utils";
2
+ import { ParserRule } from "../types";
2
3
  class NoDuplicateIdsVisitor extends AttributeVisitorMixin {
3
4
  documentIds = new Set();
4
5
  checkAttribute(attributeName, attributeValue, attributeNode) {
@@ -14,11 +15,11 @@ class NoDuplicateIdsVisitor extends AttributeVisitorMixin {
14
15
  this.documentIds.add(id);
15
16
  }
16
17
  }
17
- export class HTMLNoDuplicateIdsRule {
18
+ export class HTMLNoDuplicateIdsRule extends ParserRule {
18
19
  name = "html-no-duplicate-ids";
19
- check(node) {
20
- const visitor = new NoDuplicateIdsVisitor(this.name);
21
- visitor.visit(node);
20
+ check(result, context) {
21
+ const visitor = new NoDuplicateIdsVisitor(this.name, context);
22
+ visitor.visit(result.value);
22
23
  return visitor.offenses;
23
24
  }
24
25
  }
@@ -1 +1 @@
1
- {"version":3,"file":"html-no-duplicate-ids.js","sourceRoot":"","sources":["../../../src/rules/html-no-duplicate-ids.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAA;AAKpD,MAAM,qBAAsB,SAAQ,qBAAqB;IAC/C,WAAW,GAAgB,IAAI,GAAG,EAAU,CAAA;IAE1C,cAAc,CAAC,aAAqB,EAAE,cAA6B,EAAE,aAAmB;QAChG,IAAI,aAAa,CAAC,WAAW,EAAE,KAAK,IAAI;YAAE,OAAM;QAChD,IAAI,CAAC,cAAc;YAAE,OAAM;QAE3B,MAAM,EAAE,GAAG,cAAc,CAAC,IAAI,EAAE,CAAA;QAEhC,IAAI,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;YAC7B,IAAI,CAAC,UAAU,CACb,kBAAkB,EAAE,iDAAiD,EACrE,aAAa,CAAC,QAAQ,EACtB,OAAO,CACR,CAAA;YAED,OAAM;QACR,CAAC;QAED,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;IAC1B,CAAC;CACF;AAED,MAAM,OAAO,sBAAsB;IACjC,IAAI,GAAG,uBAAuB,CAAA;IAE9B,KAAK,CAAC,IAAU;QACd,MAAM,OAAO,GAAG,IAAI,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAEpD,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QAEnB,OAAO,OAAO,CAAC,QAAQ,CAAA;IACzB,CAAC;CACF"}
1
+ {"version":3,"file":"html-no-duplicate-ids.js","sourceRoot":"","sources":["../../../src/rules/html-no-duplicate-ids.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAA;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA;AAIrC,MAAM,qBAAsB,SAAQ,qBAAqB;IAC/C,WAAW,GAAgB,IAAI,GAAG,EAAU,CAAA;IAE1C,cAAc,CAAC,aAAqB,EAAE,cAA6B,EAAE,aAAmB;QAChG,IAAI,aAAa,CAAC,WAAW,EAAE,KAAK,IAAI;YAAE,OAAM;QAChD,IAAI,CAAC,cAAc;YAAE,OAAM;QAE3B,MAAM,EAAE,GAAG,cAAc,CAAC,IAAI,EAAE,CAAA;QAEhC,IAAI,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;YAC7B,IAAI,CAAC,UAAU,CACb,kBAAkB,EAAE,iDAAiD,EACrE,aAAa,CAAC,QAAQ,EACtB,OAAO,CACR,CAAA;YAED,OAAM;QACR,CAAC;QAED,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;IAC1B,CAAC;CACF;AAED,MAAM,OAAO,sBAAuB,SAAQ,UAAU;IACpD,IAAI,GAAG,uBAAuB,CAAA;IAE9B,KAAK,CAAC,MAAmB,EAAE,OAA8B;QACvD,MAAM,OAAO,GAAG,IAAI,qBAAqB,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;QAE7D,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;QAE3B,OAAO,OAAO,CAAC,QAAQ,CAAA;IACzB,CAAC;CACF"}
@@ -1,4 +1,5 @@
1
1
  import { BaseRuleVisitor, getTagName, getAttributes, findAttributeByName, getAttributeValue, HEADING_TAGS } from "./rule-utils.js";
2
+ import { ParserRule } from "../types.js";
2
3
  class NoEmptyHeadingsVisitor extends BaseRuleVisitor {
3
4
  visitHTMLElementNode(node) {
4
5
  this.checkHeadingElement(node);
@@ -137,11 +138,11 @@ class NoEmptyHeadingsVisitor extends BaseRuleVisitor {
137
138
  return false;
138
139
  }
139
140
  }
140
- export class HTMLNoEmptyHeadingsRule {
141
+ export class HTMLNoEmptyHeadingsRule extends ParserRule {
141
142
  name = "html-no-empty-headings";
142
- check(node) {
143
- const visitor = new NoEmptyHeadingsVisitor(this.name);
144
- visitor.visit(node);
143
+ check(result, context) {
144
+ const visitor = new NoEmptyHeadingsVisitor(this.name, context);
145
+ visitor.visit(result.value);
145
146
  return visitor.offenses;
146
147
  }
147
148
  }
@@ -1 +1 @@
1
- {"version":3,"file":"html-no-empty-headings.js","sourceRoot":"","sources":["../../../src/rules/html-no-empty-headings.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"html-no-empty-headings.js","sourceRoot":"","sources":["../../../src/rules/html-no-empty-headings.ts"],"names":[],"mappings":"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"}