mcp-react-toolkit 1.0.0 → 1.2.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 (235) hide show
  1. package/README.md +146 -42
  2. package/package.json +13 -5
  3. package/server.json +20 -0
  4. package/tools/accessibility-checker/build/index.js +9 -5
  5. package/tools/accessibility-checker/build/index.js.map +1 -1
  6. package/tools/accessibility-checker/build/rules.d.ts.map +1 -1
  7. package/tools/accessibility-checker/build/rules.js +325 -94
  8. package/tools/accessibility-checker/build/rules.js.map +1 -1
  9. package/tools/code-modernizer/build/tools/01-convert-to-typescript.d.ts.map +1 -1
  10. package/tools/code-modernizer/build/tools/01-convert-to-typescript.js +65 -50
  11. package/tools/code-modernizer/build/tools/01-convert-to-typescript.js.map +1 -1
  12. package/tools/code-modernizer/build/types.d.ts +1 -0
  13. package/tools/code-modernizer/build/types.d.ts.map +1 -1
  14. package/tools/code-modernizer/build/utils/ast-parser.d.ts.map +1 -1
  15. package/tools/code-modernizer/build/utils/ast-parser.js +30 -14
  16. package/tools/code-modernizer/build/utils/ast-parser.js.map +1 -1
  17. package/tools/code-modernizer/build/utils/type-generator.d.ts +1 -1
  18. package/tools/code-modernizer/build/utils/type-generator.d.ts.map +1 -1
  19. package/tools/code-modernizer/build/utils/type-generator.js +72 -23
  20. package/tools/code-modernizer/build/utils/type-generator.js.map +1 -1
  21. package/tools/component-factory/build/index.js +59 -7
  22. package/tools/component-factory/build/index.js.map +1 -1
  23. package/tools/component-fixer/README.md +44 -0
  24. package/tools/component-fixer/build/index.d.ts +3 -0
  25. package/tools/component-fixer/build/index.d.ts.map +1 -0
  26. package/tools/component-fixer/build/index.js +647 -0
  27. package/tools/component-fixer/build/index.js.map +1 -0
  28. package/tools/component-fixer/build/index.test.d.ts +2 -0
  29. package/tools/component-fixer/build/index.test.d.ts.map +1 -0
  30. package/tools/component-fixer/build/index.test.js.map +1 -0
  31. package/tools/component-fixer/package.json +20 -0
  32. package/tools/component-reviewer/README.md +54 -0
  33. package/tools/component-reviewer/build/index.d.ts +39 -0
  34. package/tools/component-reviewer/build/index.d.ts.map +1 -0
  35. package/tools/component-reviewer/build/index.js +946 -0
  36. package/tools/component-reviewer/build/index.js.map +1 -0
  37. package/tools/component-reviewer/build/index.test.d.ts +2 -0
  38. package/tools/component-reviewer/build/index.test.d.ts.map +1 -0
  39. package/tools/component-reviewer/build/index.test.js.map +1 -0
  40. package/tools/component-reviewer/package.json +20 -0
  41. package/tools/dep-auditor/build/index.d.ts +1 -0
  42. package/tools/dep-auditor/build/index.d.ts.map +1 -1
  43. package/tools/dep-auditor/build/index.js +71 -16
  44. package/tools/dep-auditor/build/index.js.map +1 -1
  45. package/tools/generate-tests/build/analyzer.d.ts +14 -0
  46. package/tools/generate-tests/build/analyzer.d.ts.map +1 -1
  47. package/tools/generate-tests/build/analyzer.js +96 -42
  48. package/tools/generate-tests/build/analyzer.js.map +1 -1
  49. package/tools/generate-tests/build/generators.d.ts.map +1 -1
  50. package/tools/generate-tests/build/generators.js +304 -79
  51. package/tools/generate-tests/build/generators.js.map +1 -1
  52. package/tools/generate-tests/build/index.js +29 -10
  53. package/tools/generate-tests/build/index.js.map +1 -1
  54. package/tools/json-viewer/build/index.js +29 -6
  55. package/tools/json-viewer/build/index.js.map +1 -1
  56. package/tools/legacy-analyzer/README.md +66 -0
  57. package/tools/legacy-analyzer/build/index.d.ts +3 -0
  58. package/tools/legacy-analyzer/build/index.d.ts.map +1 -0
  59. package/tools/legacy-analyzer/build/index.js +209 -0
  60. package/tools/legacy-analyzer/build/index.js.map +1 -0
  61. package/tools/legacy-analyzer/build/index.test.d.ts +2 -0
  62. package/tools/legacy-analyzer/build/index.test.d.ts.map +1 -0
  63. package/tools/legacy-analyzer/build/index.test.js.map +1 -0
  64. package/tools/legacy-analyzer/build/tools/01-detect-project-tech.d.ts +3 -0
  65. package/tools/legacy-analyzer/build/tools/01-detect-project-tech.d.ts.map +1 -0
  66. package/tools/legacy-analyzer/build/tools/01-detect-project-tech.js +115 -0
  67. package/tools/legacy-analyzer/build/tools/01-detect-project-tech.js.map +1 -0
  68. package/tools/legacy-analyzer/build/tools/02-analyze-folder-structure.d.ts +3 -0
  69. package/tools/legacy-analyzer/build/tools/02-analyze-folder-structure.d.ts.map +1 -0
  70. package/tools/legacy-analyzer/build/tools/02-analyze-folder-structure.js +85 -0
  71. package/tools/legacy-analyzer/build/tools/02-analyze-folder-structure.js.map +1 -0
  72. package/tools/legacy-analyzer/build/tools/03-analyze-components.d.ts +3 -0
  73. package/tools/legacy-analyzer/build/tools/03-analyze-components.d.ts.map +1 -0
  74. package/tools/legacy-analyzer/build/tools/03-analyze-components.js +87 -0
  75. package/tools/legacy-analyzer/build/tools/03-analyze-components.js.map +1 -0
  76. package/tools/legacy-analyzer/build/tools/04-analyze-state-management.d.ts +3 -0
  77. package/tools/legacy-analyzer/build/tools/04-analyze-state-management.d.ts.map +1 -0
  78. package/tools/legacy-analyzer/build/tools/04-analyze-state-management.js +133 -0
  79. package/tools/legacy-analyzer/build/tools/04-analyze-state-management.js.map +1 -0
  80. package/tools/legacy-analyzer/build/tools/05-analyze-api-layer.d.ts +3 -0
  81. package/tools/legacy-analyzer/build/tools/05-analyze-api-layer.d.ts.map +1 -0
  82. package/tools/legacy-analyzer/build/tools/05-analyze-api-layer.js +160 -0
  83. package/tools/legacy-analyzer/build/tools/05-analyze-api-layer.js.map +1 -0
  84. package/tools/legacy-analyzer/build/tools/06-analyze-routing.d.ts +3 -0
  85. package/tools/legacy-analyzer/build/tools/06-analyze-routing.d.ts.map +1 -0
  86. package/tools/legacy-analyzer/build/tools/06-analyze-routing.js +150 -0
  87. package/tools/legacy-analyzer/build/tools/06-analyze-routing.js.map +1 -0
  88. package/tools/legacy-analyzer/build/tools/07-analyze-styling.d.ts +3 -0
  89. package/tools/legacy-analyzer/build/tools/07-analyze-styling.d.ts.map +1 -0
  90. package/tools/legacy-analyzer/build/tools/07-analyze-styling.js +131 -0
  91. package/tools/legacy-analyzer/build/tools/07-analyze-styling.js.map +1 -0
  92. package/tools/legacy-analyzer/build/tools/08-analyze-assets.d.ts +3 -0
  93. package/tools/legacy-analyzer/build/tools/08-analyze-assets.d.ts.map +1 -0
  94. package/tools/legacy-analyzer/build/tools/08-analyze-assets.js +85 -0
  95. package/tools/legacy-analyzer/build/tools/08-analyze-assets.js.map +1 -0
  96. package/tools/legacy-analyzer/build/tools/09-detect-anti-patterns.d.ts +3 -0
  97. package/tools/legacy-analyzer/build/tools/09-detect-anti-patterns.d.ts.map +1 -0
  98. package/tools/legacy-analyzer/build/tools/09-detect-anti-patterns.js +329 -0
  99. package/tools/legacy-analyzer/build/tools/09-detect-anti-patterns.js.map +1 -0
  100. package/tools/legacy-analyzer/build/tools/10-detect-duplication.d.ts +3 -0
  101. package/tools/legacy-analyzer/build/tools/10-detect-duplication.d.ts.map +1 -0
  102. package/tools/legacy-analyzer/build/tools/10-detect-duplication.js +192 -0
  103. package/tools/legacy-analyzer/build/tools/10-detect-duplication.js.map +1 -0
  104. package/tools/legacy-analyzer/build/tools/11-analyze-dependencies-usage.d.ts +3 -0
  105. package/tools/legacy-analyzer/build/tools/11-analyze-dependencies-usage.d.ts.map +1 -0
  106. package/tools/legacy-analyzer/build/tools/11-analyze-dependencies-usage.js +232 -0
  107. package/tools/legacy-analyzer/build/tools/11-analyze-dependencies-usage.js.map +1 -0
  108. package/tools/legacy-analyzer/build/tools/12-analyze-legacy-app.d.ts +3 -0
  109. package/tools/legacy-analyzer/build/tools/12-analyze-legacy-app.d.ts.map +1 -0
  110. package/tools/legacy-analyzer/build/tools/12-analyze-legacy-app.js +247 -0
  111. package/tools/legacy-analyzer/build/tools/12-analyze-legacy-app.js.map +1 -0
  112. package/tools/legacy-analyzer/build/tools/13-detect-features.d.ts +3 -0
  113. package/tools/legacy-analyzer/build/tools/13-detect-features.d.ts.map +1 -0
  114. package/tools/legacy-analyzer/build/tools/13-detect-features.js +141 -0
  115. package/tools/legacy-analyzer/build/tools/13-detect-features.js.map +1 -0
  116. package/tools/legacy-analyzer/build/tools/14-classify-files.d.ts +3 -0
  117. package/tools/legacy-analyzer/build/tools/14-classify-files.d.ts.map +1 -0
  118. package/tools/legacy-analyzer/build/tools/14-classify-files.js +76 -0
  119. package/tools/legacy-analyzer/build/tools/14-classify-files.js.map +1 -0
  120. package/tools/legacy-analyzer/build/tools/15-detect-shared-modules.d.ts +3 -0
  121. package/tools/legacy-analyzer/build/tools/15-detect-shared-modules.d.ts.map +1 -0
  122. package/tools/legacy-analyzer/build/tools/15-detect-shared-modules.js +70 -0
  123. package/tools/legacy-analyzer/build/tools/15-detect-shared-modules.js.map +1 -0
  124. package/tools/legacy-analyzer/build/tools/16-design-target-structure.d.ts +3 -0
  125. package/tools/legacy-analyzer/build/tools/16-design-target-structure.d.ts.map +1 -0
  126. package/tools/legacy-analyzer/build/tools/16-design-target-structure.js +26 -0
  127. package/tools/legacy-analyzer/build/tools/16-design-target-structure.js.map +1 -0
  128. package/tools/legacy-analyzer/build/tools/17-map-files-to-target.d.ts +3 -0
  129. package/tools/legacy-analyzer/build/tools/17-map-files-to-target.d.ts.map +1 -0
  130. package/tools/legacy-analyzer/build/tools/17-map-files-to-target.js +108 -0
  131. package/tools/legacy-analyzer/build/tools/17-map-files-to-target.js.map +1 -0
  132. package/tools/legacy-analyzer/build/tools/18-detect-boundary-violations.d.ts +3 -0
  133. package/tools/legacy-analyzer/build/tools/18-detect-boundary-violations.d.ts.map +1 -0
  134. package/tools/legacy-analyzer/build/tools/18-detect-boundary-violations.js +137 -0
  135. package/tools/legacy-analyzer/build/tools/18-detect-boundary-violations.js.map +1 -0
  136. package/tools/legacy-analyzer/build/tools/19-suggest-module-splitting.d.ts +3 -0
  137. package/tools/legacy-analyzer/build/tools/19-suggest-module-splitting.d.ts.map +1 -0
  138. package/tools/legacy-analyzer/build/tools/19-suggest-module-splitting.js +160 -0
  139. package/tools/legacy-analyzer/build/tools/19-suggest-module-splitting.js.map +1 -0
  140. package/tools/legacy-analyzer/build/tools/20-naming-standardizer.d.ts +3 -0
  141. package/tools/legacy-analyzer/build/tools/20-naming-standardizer.d.ts.map +1 -0
  142. package/tools/legacy-analyzer/build/tools/20-naming-standardizer.js +162 -0
  143. package/tools/legacy-analyzer/build/tools/20-naming-standardizer.js.map +1 -0
  144. package/tools/legacy-analyzer/build/tools/21-generate-refactor-plan.d.ts +3 -0
  145. package/tools/legacy-analyzer/build/tools/21-generate-refactor-plan.d.ts.map +1 -0
  146. package/tools/legacy-analyzer/build/tools/21-generate-refactor-plan.js +108 -0
  147. package/tools/legacy-analyzer/build/tools/21-generate-refactor-plan.js.map +1 -0
  148. package/tools/legacy-analyzer/build/tools/22-refactor-folder-structure.d.ts +3 -0
  149. package/tools/legacy-analyzer/build/tools/22-refactor-folder-structure.d.ts.map +1 -0
  150. package/tools/legacy-analyzer/build/tools/22-refactor-folder-structure.js +98 -0
  151. package/tools/legacy-analyzer/build/tools/22-refactor-folder-structure.js.map +1 -0
  152. package/tools/legacy-analyzer/build/types.d.ts +413 -0
  153. package/tools/legacy-analyzer/build/types.d.ts.map +1 -0
  154. package/tools/legacy-analyzer/build/types.js +12 -0
  155. package/tools/legacy-analyzer/build/types.js.map +1 -0
  156. package/tools/legacy-analyzer/build/utils/ast-parser.d.ts +34 -0
  157. package/tools/legacy-analyzer/build/utils/ast-parser.d.ts.map +1 -0
  158. package/tools/legacy-analyzer/build/utils/ast-parser.js +394 -0
  159. package/tools/legacy-analyzer/build/utils/ast-parser.js.map +1 -0
  160. package/tools/legacy-analyzer/build/utils/file-scanner.d.ts +51 -0
  161. package/tools/legacy-analyzer/build/utils/file-scanner.d.ts.map +1 -0
  162. package/tools/legacy-analyzer/build/utils/file-scanner.js +174 -0
  163. package/tools/legacy-analyzer/build/utils/file-scanner.js.map +1 -0
  164. package/tools/legacy-analyzer/build/utils/import-tracker.d.ts +38 -0
  165. package/tools/legacy-analyzer/build/utils/import-tracker.d.ts.map +1 -0
  166. package/tools/legacy-analyzer/build/utils/import-tracker.js +194 -0
  167. package/tools/legacy-analyzer/build/utils/import-tracker.js.map +1 -0
  168. package/tools/legacy-analyzer/build/utils/refactor-helpers.d.ts +88 -0
  169. package/tools/legacy-analyzer/build/utils/refactor-helpers.d.ts.map +1 -0
  170. package/tools/legacy-analyzer/build/utils/refactor-helpers.js +538 -0
  171. package/tools/legacy-analyzer/build/utils/refactor-helpers.js.map +1 -0
  172. package/tools/legacy-analyzer/package.json +20 -0
  173. package/tools/lighthouse-runner/README.md +45 -0
  174. package/tools/lighthouse-runner/build/index.d.ts +6 -0
  175. package/tools/lighthouse-runner/build/index.d.ts.map +1 -0
  176. package/tools/lighthouse-runner/build/index.js +295 -0
  177. package/tools/lighthouse-runner/build/index.js.map +1 -0
  178. package/tools/lighthouse-runner/build/index.test.d.ts +2 -0
  179. package/tools/lighthouse-runner/build/index.test.d.ts.map +1 -0
  180. package/tools/lighthouse-runner/build/index.test.js.map +1 -0
  181. package/tools/lighthouse-runner/package.json +20 -0
  182. package/tools/monorepo-manager/build/utils.d.ts.map +1 -1
  183. package/tools/monorepo-manager/build/utils.js +12 -9
  184. package/tools/monorepo-manager/build/utils.js.map +1 -1
  185. package/tools/performance-audit/README.md +37 -0
  186. package/tools/performance-audit/build/index.d.ts +13 -0
  187. package/tools/performance-audit/build/index.d.ts.map +1 -0
  188. package/tools/performance-audit/build/index.js +311 -0
  189. package/tools/performance-audit/build/index.js.map +1 -0
  190. package/tools/performance-audit/build/index.test.d.ts +2 -0
  191. package/tools/performance-audit/build/index.test.d.ts.map +1 -0
  192. package/tools/performance-audit/build/index.test.js.map +1 -0
  193. package/tools/performance-audit/package.json +20 -0
  194. package/tools/quality-pipeline/build/index.js +55 -15
  195. package/tools/quality-pipeline/build/index.js.map +1 -1
  196. package/tools/render-analyzer/README.md +43 -0
  197. package/tools/render-analyzer/build/index.d.ts +25 -0
  198. package/tools/render-analyzer/build/index.d.ts.map +1 -0
  199. package/tools/render-analyzer/build/index.js +342 -0
  200. package/tools/render-analyzer/build/index.js.map +1 -0
  201. package/tools/render-analyzer/build/index.test.d.ts +2 -0
  202. package/tools/render-analyzer/build/index.test.d.ts.map +1 -0
  203. package/tools/render-analyzer/build/index.test.js.map +1 -0
  204. package/tools/render-analyzer/package.json +20 -0
  205. package/tools/shared/build/fs.d.ts +8 -0
  206. package/tools/shared/build/fs.d.ts.map +1 -0
  207. package/tools/shared/build/fs.js +45 -0
  208. package/tools/shared/build/fs.js.map +1 -0
  209. package/tools/shared/build/index.d.ts +1 -0
  210. package/tools/shared/build/index.d.ts.map +1 -1
  211. package/tools/shared/build/index.js +1 -0
  212. package/tools/shared/build/index.js.map +1 -1
  213. package/tools/storybook-generator/README.md +39 -0
  214. package/tools/storybook-generator/build/index.d.ts +13 -0
  215. package/tools/storybook-generator/build/index.d.ts.map +1 -0
  216. package/tools/storybook-generator/build/index.js +478 -0
  217. package/tools/storybook-generator/build/index.js.map +1 -0
  218. package/tools/storybook-generator/build/index.test.d.ts +2 -0
  219. package/tools/storybook-generator/build/index.test.d.ts.map +1 -0
  220. package/tools/storybook-generator/build/index.test.js.map +1 -0
  221. package/tools/storybook-generator/package.json +20 -0
  222. package/tools/test-gap-analyzer/README.md +41 -0
  223. package/tools/test-gap-analyzer/build/index.d.ts +20 -0
  224. package/tools/test-gap-analyzer/build/index.d.ts.map +1 -0
  225. package/tools/test-gap-analyzer/build/index.js +371 -0
  226. package/tools/test-gap-analyzer/build/index.js.map +1 -0
  227. package/tools/test-gap-analyzer/build/index.test.d.ts +2 -0
  228. package/tools/test-gap-analyzer/build/index.test.d.ts.map +1 -0
  229. package/tools/test-gap-analyzer/build/index.test.js.map +1 -0
  230. package/tools/test-gap-analyzer/package.json +20 -0
  231. package/tools/typescript-enforcer/build/scanner.d.ts.map +1 -1
  232. package/tools/typescript-enforcer/build/scanner.js +13 -1
  233. package/tools/typescript-enforcer/build/scanner.js.map +1 -1
  234. package/tools/typescript-enforcer/build/types.d.ts +1 -0
  235. package/tools/typescript-enforcer/build/types.d.ts.map +1 -1
@@ -10,54 +10,106 @@ const VALID_ARIA_ROLES = new Set([
10
10
  'tablist', 'tabpanel', 'term', 'textbox', 'timer', 'toolbar', 'tooltip', 'tree',
11
11
  'treegrid', 'treeitem',
12
12
  ]);
13
+ // Extract a tag's full attribute string (handles multiline JSX by scanning to closing > or />)
14
+ function extractTagContent(content, tagStart) {
15
+ let depth = 0;
16
+ let i = tagStart;
17
+ while (i < Math.min(tagStart + 800, content.length)) {
18
+ const ch = content[i];
19
+ if (ch === '{') {
20
+ depth++;
21
+ i++;
22
+ continue;
23
+ }
24
+ if (ch === '}') {
25
+ depth--;
26
+ i++;
27
+ continue;
28
+ }
29
+ if (depth > 0) {
30
+ i++;
31
+ continue;
32
+ }
33
+ if (content.slice(i, i + 2) === '/>')
34
+ return { tag: content.slice(tagStart, i + 2), end: i + 2 };
35
+ if (ch === '>')
36
+ return { tag: content.slice(tagStart, i + 1), end: i + 1 };
37
+ i++;
38
+ }
39
+ return { tag: content.slice(tagStart, Math.min(tagStart + 200, content.length)), end: tagStart + 200 };
40
+ }
41
+ function lineAt(content, pos) {
42
+ return content.slice(0, pos).split('\n').length;
43
+ }
44
+ function snippetAt(tag) {
45
+ return tag.replace(/\n\s*/g, ' ').slice(0, 120);
46
+ }
13
47
  export const AXE_RULES = [
48
+ // -------------------------------------------------------------------------
49
+ // 1. image-alt (CRITICAL)
50
+ // -------------------------------------------------------------------------
14
51
  {
15
52
  id: 'image-alt',
16
53
  impact: 'critical',
17
54
  wcag: '1.1.1',
18
55
  check: (content, file) => {
19
56
  const issues = [];
20
- const lines = content.split('\n');
21
- for (let i = 0; i < lines.length; i++) {
22
- for (const m of lines[i].matchAll(/<img\s[^>]*>/g)) {
23
- if (!m[0].includes('alt=') && !m[0].includes('aria-label=') && !m[0].includes('aria-labelledby=')) {
24
- issues.push({
25
- rule: 'image-alt', impact: 'critical', file, line: i + 1,
26
- element: m[0].slice(0, 100),
27
- description: 'Image element missing alt attribute. Screen readers cannot describe the image.',
28
- fix: 'Add alt attribute: <img src="..." alt="Descriptive text" />',
29
- wcag: '1.1.1 Non-text Content (Level A)',
30
- });
31
- }
57
+ let pos = 0;
58
+ while (true) {
59
+ const idx = content.indexOf('<img', pos);
60
+ if (idx === -1)
61
+ break;
62
+ const { tag, end } = extractTagContent(content, idx);
63
+ const lc = tag.toLowerCase();
64
+ if (!lc.includes('alt=') && !lc.includes('aria-label=') && !lc.includes('aria-labelledby=') && !lc.includes('aria-hidden=')) {
65
+ issues.push({
66
+ rule: 'image-alt', impact: 'critical', file, line: lineAt(content, idx),
67
+ element: snippetAt(tag),
68
+ description: 'Image element missing alt attribute. Screen readers cannot describe this image.',
69
+ fix: 'Add alt="Descriptive text" (or alt="" for decorative images with aria-hidden="true")',
70
+ wcag: '1.1.1 Non-text Content (Level A)',
71
+ });
32
72
  }
73
+ pos = end;
33
74
  }
34
75
  return issues;
35
76
  },
36
77
  },
78
+ // -------------------------------------------------------------------------
79
+ // 2. button-name (CRITICAL)
80
+ // -------------------------------------------------------------------------
37
81
  {
38
82
  id: 'button-name',
39
83
  impact: 'critical',
40
84
  wcag: '4.1.2',
41
85
  check: (content, file) => {
42
86
  const issues = [];
43
- const lines = content.split('\n');
44
- for (let i = 0; i < lines.length; i++) {
45
- const line = lines[i];
46
- if (/<button[^>]*>\s*<\/button>/.test(line)) {
87
+ // Match <button ...>...</button> blocks
88
+ const btnRegex = /<button\b([\s\S]*?)>([\s\S]*?)<\/button>/g;
89
+ for (const m of content.matchAll(btnRegex)) {
90
+ const attrs = m[1] ?? '';
91
+ const inner = (m[2] ?? '').trim().replace(/<[^>]+>/g, '').trim();
92
+ const hasLabel = attrs.includes('aria-label=') || attrs.includes('aria-labelledby=') || attrs.includes('title=');
93
+ if (!inner && !hasLabel) {
94
+ const lineNum = lineAt(content, m.index ?? 0);
47
95
  issues.push({
48
- rule: 'button-name', impact: 'critical', file, line: i + 1,
49
- element: line.trim(),
50
- description: 'Button has no accessible name.',
51
- fix: 'Add text content, aria-label, or aria-labelledby.',
96
+ rule: 'button-name', impact: 'critical', file, line: lineNum,
97
+ element: snippetAt(m[0]),
98
+ description: 'Button has no accessible name — screen readers will announce it as "button" with no context.',
99
+ fix: 'Add text content, aria-label="Action name", or aria-labelledby pointing to a label.',
52
100
  wcag: '4.1.2 Name, Role, Value (Level A)',
53
101
  });
54
102
  }
55
- if (/<button[^>]*>\s*<(svg|Icon|i|span)[^>]*\/?>\s*<\/button>/.test(line) && !line.includes('aria-label')) {
103
+ }
104
+ // Also catch self-closing icon buttons: <button><Icon /></button>
105
+ for (const m of content.matchAll(/<button\b([^>]*)>\s*<([A-Z][A-Za-z]+|svg|i|span)[^>]*\/?\s*>\s*<\/button>/g)) {
106
+ const attrs = m[1] ?? '';
107
+ if (!attrs.includes('aria-label=') && !attrs.includes('aria-labelledby=') && !attrs.includes('title=')) {
56
108
  issues.push({
57
- rule: 'button-name', impact: 'critical', file, line: i + 1,
58
- element: line.trim().slice(0, 100),
59
- description: 'Icon-only button without aria-label.',
60
- fix: 'Add aria-label: <button aria-label="Close"><CloseIcon /></button>',
109
+ rule: 'button-name', impact: 'critical', file, line: lineAt(content, m.index ?? 0),
110
+ element: snippetAt(m[0]),
111
+ description: 'Icon-only button missing accessible label.',
112
+ fix: 'Add aria-label="Close" (or appropriate action) to the button.',
61
113
  wcag: '4.1.2 Name, Role, Value (Level A)',
62
114
  });
63
115
  }
@@ -65,22 +117,25 @@ export const AXE_RULES = [
65
117
  return issues;
66
118
  },
67
119
  },
120
+ // -------------------------------------------------------------------------
121
+ // 3. link-name (SERIOUS)
122
+ // -------------------------------------------------------------------------
68
123
  {
69
124
  id: 'link-name',
70
125
  impact: 'serious',
71
126
  wcag: '4.1.2',
72
127
  check: (content, file) => {
73
128
  const issues = [];
74
- const lines = content.split('\n');
75
- for (let i = 0; i < lines.length; i++) {
76
- const line = lines[i];
77
- if ((/<a[^>]*>\s*<\/a>/.test(line) || /<a[^>]*>\s*<(svg|Icon|i)[^>]*\/?>\s*<\/a>/.test(line)) &&
78
- !line.includes('aria-label') && !line.includes('aria-labelledby')) {
129
+ for (const m of content.matchAll(/<a\b([\s\S]*?)>([\s\S]*?)<\/a>/g)) {
130
+ const attrs = m[1] ?? '';
131
+ const inner = (m[2] ?? '').trim().replace(/<[^>]+>/g, '').trim();
132
+ const hasLabel = attrs.includes('aria-label=') || attrs.includes('aria-labelledby=') || attrs.includes('title=');
133
+ if (!inner && !hasLabel) {
79
134
  issues.push({
80
- rule: 'link-name', impact: 'serious', file, line: i + 1,
81
- element: line.trim().slice(0, 100),
135
+ rule: 'link-name', impact: 'serious', file, line: lineAt(content, m.index ?? 0),
136
+ element: snippetAt(m[0]),
82
137
  description: 'Link has no accessible name.',
83
- fix: 'Add text content or aria-label to the link.',
138
+ fix: 'Add visible text or aria-label="Destination description" to the link.',
84
139
  wcag: '4.1.2 Name, Role, Value (Level A)',
85
140
  });
86
141
  }
@@ -88,98 +143,152 @@ export const AXE_RULES = [
88
143
  return issues;
89
144
  },
90
145
  },
146
+ // -------------------------------------------------------------------------
147
+ // 4. label (CRITICAL) — input without accessible label
148
+ // -------------------------------------------------------------------------
91
149
  {
92
150
  id: 'label',
93
151
  impact: 'critical',
94
152
  wcag: '1.3.1',
95
153
  check: (content, file) => {
96
154
  const issues = [];
97
- const lines = content.split('\n');
98
- for (let i = 0; i < lines.length; i++) {
99
- const line = lines[i];
100
- if (/<input\s/.test(line) &&
101
- !line.includes('type="hidden"') &&
102
- !line.includes('type="submit"') &&
103
- !line.includes('type="button"') &&
104
- !line.includes('aria-label') &&
105
- !line.includes('aria-labelledby') &&
106
- !line.includes('id=')) {
155
+ let pos = 0;
156
+ while (true) {
157
+ const idx = content.indexOf('<input', pos);
158
+ if (idx === -1)
159
+ break;
160
+ const { tag, end } = extractTagContent(content, idx);
161
+ const lc = tag.toLowerCase();
162
+ const isHidden = lc.includes('type="hidden"') || lc.includes("type='hidden'") || lc.includes('type={');
163
+ const isSubmit = lc.includes('type="submit"') || lc.includes('type="button"') || lc.includes('type="reset"');
164
+ if (!isHidden && !isSubmit) {
165
+ const hasLabel = lc.includes('aria-label=') || lc.includes('aria-labelledby=') || lc.includes('id=')
166
+ || lc.includes('aria-describedby=');
167
+ if (!hasLabel) {
168
+ issues.push({
169
+ rule: 'label', impact: 'critical', file, line: lineAt(content, idx),
170
+ element: snippetAt(tag),
171
+ description: 'Form input missing accessible label.',
172
+ fix: 'Add aria-label="Field name", or pair with a <label htmlFor="..."> and matching id.',
173
+ wcag: '1.3.1 Info and Relationships (Level A)',
174
+ });
175
+ }
176
+ }
177
+ pos = end;
178
+ }
179
+ return issues;
180
+ },
181
+ },
182
+ // -------------------------------------------------------------------------
183
+ // 5. select-name (SERIOUS) — select without label
184
+ // -------------------------------------------------------------------------
185
+ {
186
+ id: 'select-name',
187
+ impact: 'serious',
188
+ wcag: '1.3.1',
189
+ check: (content, file) => {
190
+ const issues = [];
191
+ let pos = 0;
192
+ while (true) {
193
+ const idx = content.indexOf('<select', pos);
194
+ if (idx === -1)
195
+ break;
196
+ const { tag, end } = extractTagContent(content, idx);
197
+ const lc = tag.toLowerCase();
198
+ if (!lc.includes('aria-label=') && !lc.includes('aria-labelledby=') && !lc.includes('id=')) {
107
199
  issues.push({
108
- rule: 'label', impact: 'critical', file, line: i + 1,
109
- element: line.trim().slice(0, 100),
110
- description: 'Form input missing accessible label.',
111
- fix: 'Add aria-label, aria-labelledby, or wrap with <label>.',
200
+ rule: 'select-name', impact: 'serious', file, line: lineAt(content, idx),
201
+ element: snippetAt(tag),
202
+ description: 'Select element missing accessible label.',
203
+ fix: 'Add aria-label or pair with <label htmlFor="..."> using a matching id.',
112
204
  wcag: '1.3.1 Info and Relationships (Level A)',
113
205
  });
114
206
  }
207
+ pos = end;
115
208
  }
116
209
  return issues;
117
210
  },
118
211
  },
212
+ // -------------------------------------------------------------------------
213
+ // 6. heading-order (MODERATE)
214
+ // -------------------------------------------------------------------------
119
215
  {
120
216
  id: 'heading-order',
121
217
  impact: 'moderate',
122
218
  wcag: '1.3.1',
123
219
  check: (content, file) => {
124
220
  const issues = [];
125
- const lines = content.split('\n');
126
- let lastLevel = 0;
127
- for (let i = 0; i < lines.length; i++) {
128
- const m = lines[i].match(/<h(\d)/);
129
- if (m) {
130
- const level = parseInt(m[1]);
131
- if (lastLevel > 0 && level > lastLevel + 1) {
132
- issues.push({
133
- rule: 'heading-order', impact: 'moderate', file, line: i + 1,
134
- element: lines[i].trim().slice(0, 100),
135
- description: `Heading level skipped: h${lastLevel} h${level}.`,
136
- fix: `Use sequential heading levels. After h${lastLevel}, use h${lastLevel + 1}.`,
137
- wcag: '1.3.1 Info and Relationships (Level A)',
138
- });
139
- }
140
- lastLevel = level;
221
+ const headings = [];
222
+ for (const m of content.matchAll(/<h([1-6])\b/g)) {
223
+ headings.push({ level: parseInt(m[1]), pos: m.index ?? 0 });
224
+ }
225
+ for (let i = 1; i < headings.length; i++) {
226
+ const prev = headings[i - 1];
227
+ const curr = headings[i];
228
+ if (curr.level > prev.level + 1) {
229
+ issues.push({
230
+ rule: 'heading-order', impact: 'moderate', file, line: lineAt(content, curr.pos),
231
+ element: content.slice(curr.pos, curr.pos + 80).replace(/\n\s*/g, ' '),
232
+ description: `Heading level skipped: h${prev.level} h${curr.level}.`,
233
+ fix: `Use h${prev.level + 1} instead. Heading levels should not skip.`,
234
+ wcag: '1.3.1 Info and Relationships (Level A)',
235
+ });
141
236
  }
142
237
  }
238
+ // Multiple h1s
239
+ const h1Count = (content.match(/<h1[\s>]/g) ?? []).length;
240
+ if (h1Count > 1) {
241
+ const firstH1 = content.indexOf('<h1');
242
+ issues.push({
243
+ rule: 'heading-order', impact: 'moderate', file, line: lineAt(content, firstH1),
244
+ element: '<h1>',
245
+ description: `${h1Count} <h1> elements found — a page should have only one h1.`,
246
+ fix: 'Use only one <h1> per page/route. Demote secondary headings to h2.',
247
+ wcag: '1.3.1 Info and Relationships (Level A)',
248
+ });
249
+ }
143
250
  return issues;
144
251
  },
145
252
  },
253
+ // -------------------------------------------------------------------------
254
+ // 7. tabindex (SERIOUS) — positive tabindex values
255
+ // -------------------------------------------------------------------------
146
256
  {
147
257
  id: 'tabindex',
148
258
  impact: 'serious',
149
259
  wcag: '2.4.3',
150
260
  check: (content, file) => {
151
261
  const issues = [];
152
- const lines = content.split('\n');
153
- for (let i = 0; i < lines.length; i++) {
154
- const m = lines[i].match(/tabindex=["'](\d+)["']/);
155
- if (m && parseInt(m[1]) > 0) {
156
- issues.push({
157
- rule: 'tabindex', impact: 'serious', file, line: i + 1,
158
- element: lines[i].trim().slice(0, 100),
159
- description: `Positive tabindex (${m[1]}) disrupts natural tab order.`,
160
- fix: 'Use tabindex="0" or tabindex="-1" for programmatic focus.',
161
- wcag: '2.4.3 Focus Order (Level A)',
162
- });
163
- }
262
+ // Both tabIndex={N} (JSX) and tabindex="N" (HTML)
263
+ for (const m of content.matchAll(/tab(?:I|i)ndex=(?:\{["']?|["'])([1-9]\d*)["'}\]?]/g)) {
264
+ issues.push({
265
+ rule: 'tabindex', impact: 'serious', file, line: lineAt(content, m.index ?? 0),
266
+ element: content.slice(m.index ?? 0, (m.index ?? 0) + 80).replace(/\n\s*/g, ' '),
267
+ description: `Positive tabIndex (${m[1]}) breaks the natural keyboard tab order.`,
268
+ fix: 'Use tabIndex={0} to include in focus order, or tabIndex={-1} for programmatic focus only.',
269
+ wcag: '2.4.3 Focus Order (Level A)',
270
+ });
164
271
  }
165
272
  return issues;
166
273
  },
167
274
  },
275
+ // -------------------------------------------------------------------------
276
+ // 8. aria-roles (SERIOUS)
277
+ // -------------------------------------------------------------------------
168
278
  {
169
279
  id: 'aria-roles',
170
280
  impact: 'serious',
171
281
  wcag: '4.1.2',
172
282
  check: (content, file) => {
173
283
  const issues = [];
174
- const lines = content.split('\n');
175
- for (let i = 0; i < lines.length; i++) {
176
- const m = lines[i].match(/role=["'](\w+)["']/);
177
- if (m && !VALID_ARIA_ROLES.has(m[1])) {
284
+ for (const m of content.matchAll(/role=["'{`](\w+)["'}`]/g)) {
285
+ const role = m[1];
286
+ if (!VALID_ARIA_ROLES.has(role)) {
178
287
  issues.push({
179
- rule: 'aria-roles', impact: 'serious', file, line: i + 1,
180
- element: lines[i].trim().slice(0, 100),
181
- description: `Invalid ARIA role "${m[1]}".`,
182
- fix: 'Use a valid ARIA role. See https://www.w3.org/TR/wai-aria-1.1/#role_definitions',
288
+ rule: 'aria-roles', impact: 'serious', file, line: lineAt(content, m.index ?? 0),
289
+ element: content.slice(m.index ?? 0, (m.index ?? 0) + 80).replace(/\n\s*/g, ' '),
290
+ description: `Invalid ARIA role "${role}". Assistive technology won't recognise it.`,
291
+ fix: `Use a valid WAI-ARIA role. Common alternatives: "region", "main", "navigation", "button", "dialog".`,
183
292
  wcag: '4.1.2 Name, Role, Value (Level A)',
184
293
  });
185
294
  }
@@ -187,6 +296,9 @@ export const AXE_RULES = [
187
296
  return issues;
188
297
  },
189
298
  },
299
+ // -------------------------------------------------------------------------
300
+ // 9. aria-hidden-focus (SERIOUS)
301
+ // -------------------------------------------------------------------------
190
302
  {
191
303
  id: 'aria-hidden-focus',
192
304
  impact: 'serious',
@@ -196,19 +308,63 @@ export const AXE_RULES = [
196
308
  const lines = content.split('\n');
197
309
  for (let i = 0; i < lines.length; i++) {
198
310
  const line = lines[i];
199
- if (line.includes('aria-hidden="true"') && (line.includes('<a ') || line.includes('<button') || line.includes('<input'))) {
200
- issues.push({
201
- rule: 'aria-hidden-focus', impact: 'serious', file, line: i + 1,
202
- element: line.trim().slice(0, 100),
203
- description: 'aria-hidden="true" element contains focusable elements.',
204
- fix: 'Remove focusable elements from aria-hidden containers or add tabindex="-1".',
205
- wcag: '4.1.2 Name, Role, Value (Level A)',
206
- });
311
+ if (line.includes('aria-hidden="true"') || line.includes("aria-hidden='true'") || line.includes('aria-hidden={true}')) {
312
+ if (/<(a|button|input|select|textarea)\b/.test(line)) {
313
+ issues.push({
314
+ rule: 'aria-hidden-focus', impact: 'serious', file, line: i + 1,
315
+ element: line.trim().slice(0, 100),
316
+ description: 'aria-hidden="true" applied to an element with focusable children.',
317
+ fix: 'Move aria-hidden to a wrapper, or add tabIndex={-1} to all focusable descendants.',
318
+ wcag: '4.1.2 Name, Role, Value (Level A)',
319
+ });
320
+ }
207
321
  }
208
322
  }
209
323
  return issues;
210
324
  },
211
325
  },
326
+ // -------------------------------------------------------------------------
327
+ // 10. click-events-have-key-events (SERIOUS) — non-interactive elements with onClick
328
+ // -------------------------------------------------------------------------
329
+ {
330
+ id: 'click-events-have-key-events',
331
+ impact: 'serious',
332
+ wcag: '2.1.1',
333
+ check: (content, file) => {
334
+ const issues = [];
335
+ const NON_INTERACTIVE = ['div', 'span', 'p', 'li', 'td', 'th', 'section', 'article', 'main', 'aside', 'header', 'footer', 'nav'];
336
+ for (const tag of NON_INTERACTIVE) {
337
+ for (const m of content.matchAll(new RegExp(`<${tag}\\b([\\s\\S]*?)>`, 'g'))) {
338
+ const attrs = m[1] ?? '';
339
+ if (!attrs.includes('onClick') && !attrs.includes('onClick='))
340
+ continue;
341
+ const hasKeyboard = attrs.includes('onKeyDown') || attrs.includes('onKeyPress') || attrs.includes('onKeyUp');
342
+ const hasRole = attrs.includes('role=');
343
+ const hasTabIndex = attrs.includes('tabIndex') || attrs.includes('tabindex');
344
+ if (!hasKeyboard || !hasRole || !hasTabIndex) {
345
+ const missing = [];
346
+ if (!hasKeyboard)
347
+ missing.push('onKeyDown handler');
348
+ if (!hasRole)
349
+ missing.push('role attribute');
350
+ if (!hasTabIndex)
351
+ missing.push('tabIndex={0}');
352
+ issues.push({
353
+ rule: 'click-events-have-key-events', impact: 'serious', file, line: lineAt(content, m.index ?? 0),
354
+ element: snippetAt(m[0]),
355
+ description: `<${tag}> with onClick is keyboard-inaccessible. Missing: ${missing.join(', ')}.`,
356
+ fix: `Add role="button" tabIndex={0} onKeyDown={(e) => e.key === 'Enter' && handler()} to make it keyboard-accessible, or replace with a <button>.`,
357
+ wcag: '2.1.1 Keyboard (Level A)',
358
+ });
359
+ }
360
+ }
361
+ }
362
+ return issues;
363
+ },
364
+ },
365
+ // -------------------------------------------------------------------------
366
+ // 11. html-has-lang (SERIOUS)
367
+ // -------------------------------------------------------------------------
212
368
  {
213
369
  id: 'html-has-lang',
214
370
  impact: 'serious',
@@ -219,14 +375,86 @@ export const AXE_RULES = [
219
375
  issues.push({
220
376
  rule: 'html-has-lang', impact: 'serious', file, line: 1,
221
377
  element: '<html>',
222
- description: 'html element missing lang attribute.',
223
- fix: 'Add lang attribute: <html lang="en">',
378
+ description: '<html> element missing lang attribute.',
379
+ fix: 'Add lang="en" (or appropriate BCP 47 language code): <html lang="en">',
224
380
  wcag: '3.1.1 Language of Page (Level A)',
225
381
  });
226
382
  }
227
383
  return issues;
228
384
  },
229
385
  },
386
+ // -------------------------------------------------------------------------
387
+ // 12. img-redundant-alt (MINOR)
388
+ // -------------------------------------------------------------------------
389
+ {
390
+ id: 'img-redundant-alt',
391
+ impact: 'minor',
392
+ wcag: '1.1.1',
393
+ check: (content, file) => {
394
+ const issues = [];
395
+ for (const m of content.matchAll(/alt=["'](?:image|photo|picture|icon|graphic|logo)\s*(?:of\s+)?["']/gi)) {
396
+ issues.push({
397
+ rule: 'img-redundant-alt', impact: 'minor', file, line: lineAt(content, m.index ?? 0),
398
+ element: m[0],
399
+ description: `Redundant alt text: "${m[0]}" — screen readers already announce the element as an image.`,
400
+ fix: 'Use descriptive text like alt="Dashboard showing monthly revenue" instead of generic alt="image".',
401
+ wcag: '1.1.1 Non-text Content (Level A)',
402
+ });
403
+ }
404
+ return issues;
405
+ },
406
+ },
407
+ // -------------------------------------------------------------------------
408
+ // 13. no-autofocus (MODERATE)
409
+ // -------------------------------------------------------------------------
410
+ {
411
+ id: 'no-autofocus',
412
+ impact: 'moderate',
413
+ wcag: '3.2.1',
414
+ check: (content, file) => {
415
+ const issues = [];
416
+ for (const m of content.matchAll(/\bautoFocus\b|\bautofocus\b/g)) {
417
+ issues.push({
418
+ rule: 'no-autofocus', impact: 'moderate', file, line: lineAt(content, m.index ?? 0),
419
+ element: content.slice(m.index ?? 0, (m.index ?? 0) + 80).replace(/\n\s*/g, ' '),
420
+ description: 'autoFocus can disorient screen reader and keyboard users.',
421
+ fix: 'Remove autoFocus. If focus management is needed, use programmatic focus via useRef/useEffect after user interaction.',
422
+ wcag: '3.2.1 On Focus (Level A)',
423
+ });
424
+ }
425
+ return issues;
426
+ },
427
+ },
428
+ // -------------------------------------------------------------------------
429
+ // 14. textarea-label (SERIOUS)
430
+ // -------------------------------------------------------------------------
431
+ {
432
+ id: 'textarea-label',
433
+ impact: 'serious',
434
+ wcag: '1.3.1',
435
+ check: (content, file) => {
436
+ const issues = [];
437
+ let pos = 0;
438
+ while (true) {
439
+ const idx = content.indexOf('<textarea', pos);
440
+ if (idx === -1)
441
+ break;
442
+ const { tag, end } = extractTagContent(content, idx);
443
+ const lc = tag.toLowerCase();
444
+ if (!lc.includes('aria-label=') && !lc.includes('aria-labelledby=') && !lc.includes('id=')) {
445
+ issues.push({
446
+ rule: 'textarea-label', impact: 'serious', file, line: lineAt(content, idx),
447
+ element: snippetAt(tag),
448
+ description: 'Textarea missing accessible label.',
449
+ fix: 'Add aria-label or pair with <label htmlFor="..."> using a matching id.',
450
+ wcag: '1.3.1 Info and Relationships (Level A)',
451
+ });
452
+ }
453
+ pos = end;
454
+ }
455
+ return issues;
456
+ },
457
+ },
230
458
  ];
231
459
  const IMPACT_ORDER = {
232
460
  critical: 0, serious: 1, moderate: 2, minor: 3,
@@ -234,7 +462,10 @@ const IMPACT_ORDER = {
234
462
  export function analyzeFile(filePath, content) {
235
463
  const issues = [];
236
464
  for (const rule of AXE_RULES) {
237
- issues.push(...rule.check(content, filePath));
465
+ try {
466
+ issues.push(...rule.check(content, filePath));
467
+ }
468
+ catch { /* skip failed rules */ }
238
469
  }
239
470
  return issues;
240
471
  }
@@ -1 +1 @@
1
- {"version":3,"file":"rules.js","sourceRoot":"","sources":["../src/rules.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"rules.js","sourceRoot":"","sources":["../src/rules.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"01-convert-to-typescript.d.ts","sourceRoot":"","sources":["../../src/tools/01-convert-to-typescript.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,wBAAwB,EAAE,yBAAyB,EAAiB,MAAM,aAAa,CAAC;AAEtG,wBAAsB,mBAAmB,CACvC,KAAK,EAAE,wBAAwB,GAC9B,OAAO,CAAC,yBAAyB,CAAC,CAuGpC"}
1
+ {"version":3,"file":"01-convert-to-typescript.d.ts","sourceRoot":"","sources":["../../src/tools/01-convert-to-typescript.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,wBAAwB,EAAE,yBAAyB,EAAiB,MAAM,aAAa,CAAC;AA4DtG,wBAAsB,mBAAmB,CACvC,KAAK,EAAE,wBAAwB,GAC9B,OAAO,CAAC,yBAAyB,CAAC,CA+EpC"}