@oalacea/daemon 0.6.3 → 0.7.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 (289) hide show
  1. package/README.md +268 -58
  2. package/bin/Dockerfile +158 -16
  3. package/dist/cli/cli.d.ts.map +1 -1
  4. package/dist/cli/cli.js +22 -2
  5. package/dist/cli/cli.js.map +1 -1
  6. package/dist/cli/commands/command.types.d.ts +216 -0
  7. package/dist/cli/commands/command.types.d.ts.map +1 -0
  8. package/dist/cli/commands/command.types.js +64 -0
  9. package/dist/cli/commands/command.types.js.map +1 -0
  10. package/dist/cli/commands/history.command.d.ts +91 -0
  11. package/dist/cli/commands/history.command.d.ts.map +1 -0
  12. package/dist/cli/commands/history.command.js +336 -0
  13. package/dist/cli/commands/history.command.js.map +1 -0
  14. package/dist/cli/commands/index.d.ts +14 -3
  15. package/dist/cli/commands/index.d.ts.map +1 -1
  16. package/dist/cli/commands/index.js +7 -0
  17. package/dist/cli/commands/index.js.map +1 -1
  18. package/dist/cli/commands/init.command.d.ts +12 -14
  19. package/dist/cli/commands/init.command.d.ts.map +1 -1
  20. package/dist/cli/commands/init.command.js +278 -144
  21. package/dist/cli/commands/init.command.js.map +1 -1
  22. package/dist/cli/commands/optimize.command.d.ts +110 -0
  23. package/dist/cli/commands/optimize.command.d.ts.map +1 -0
  24. package/dist/cli/commands/optimize.command.js +497 -0
  25. package/dist/cli/commands/optimize.command.js.map +1 -0
  26. package/dist/cli/commands/report.command.d.ts +110 -0
  27. package/dist/cli/commands/report.command.d.ts.map +1 -0
  28. package/dist/cli/commands/report.command.js +532 -0
  29. package/dist/cli/commands/report.command.js.map +1 -0
  30. package/dist/cli/commands/review.command.d.ts +110 -0
  31. package/dist/cli/commands/review.command.d.ts.map +1 -0
  32. package/dist/cli/commands/review.command.js +520 -0
  33. package/dist/cli/commands/review.command.js.map +1 -0
  34. package/dist/cli/commands/score.command.d.ts +47 -0
  35. package/dist/cli/commands/score.command.d.ts.map +1 -0
  36. package/dist/cli/commands/score.command.js +261 -0
  37. package/dist/cli/commands/score.command.js.map +1 -0
  38. package/dist/cli/utils/index.d.ts +10 -0
  39. package/dist/cli/utils/index.d.ts.map +1 -0
  40. package/dist/cli/utils/index.js +10 -0
  41. package/dist/cli/utils/index.js.map +1 -0
  42. package/dist/cli/utils/output.d.ts +192 -0
  43. package/dist/cli/utils/output.d.ts.map +1 -0
  44. package/dist/cli/utils/output.js +411 -0
  45. package/dist/cli/utils/output.js.map +1 -0
  46. package/dist/cli/utils/progress.d.ts +204 -0
  47. package/dist/cli/utils/progress.d.ts.map +1 -0
  48. package/dist/cli/utils/progress.js +396 -0
  49. package/dist/cli/utils/progress.js.map +1 -0
  50. package/dist/core/types/index.d.ts +1 -0
  51. package/dist/core/types/index.d.ts.map +1 -1
  52. package/dist/core/types/project.types.d.ts +3 -3
  53. package/dist/core/types/project.types.d.ts.map +1 -1
  54. package/dist/core/types/scoring.types.d.ts +301 -0
  55. package/dist/core/types/scoring.types.d.ts.map +1 -0
  56. package/dist/core/types/scoring.types.js +8 -0
  57. package/dist/core/types/scoring.types.js.map +1 -0
  58. package/dist/services/detection/framework-detector.d.ts.map +1 -1
  59. package/dist/services/detection/framework-detector.js +74 -5
  60. package/dist/services/detection/framework-detector.js.map +1 -1
  61. package/dist/services/index.d.ts +12 -0
  62. package/dist/services/index.d.ts.map +1 -1
  63. package/dist/services/index.js +14 -0
  64. package/dist/services/index.js.map +1 -1
  65. package/dist/services/optimization/detectors/bug-detector.d.ts +82 -0
  66. package/dist/services/optimization/detectors/bug-detector.d.ts.map +1 -0
  67. package/dist/services/optimization/detectors/bug-detector.js +443 -0
  68. package/dist/services/optimization/detectors/bug-detector.js.map +1 -0
  69. package/dist/services/optimization/detectors/code-smell-detector.d.ts +108 -0
  70. package/dist/services/optimization/detectors/code-smell-detector.d.ts.map +1 -0
  71. package/dist/services/optimization/detectors/code-smell-detector.js +569 -0
  72. package/dist/services/optimization/detectors/code-smell-detector.js.map +1 -0
  73. package/dist/services/optimization/detectors/index.d.ts +7 -0
  74. package/dist/services/optimization/detectors/index.d.ts.map +1 -0
  75. package/dist/services/optimization/detectors/index.js +7 -0
  76. package/dist/services/optimization/detectors/index.js.map +1 -0
  77. package/dist/services/optimization/detectors/perf-detector.d.ts +80 -0
  78. package/dist/services/optimization/detectors/perf-detector.d.ts.map +1 -0
  79. package/dist/services/optimization/detectors/perf-detector.js +451 -0
  80. package/dist/services/optimization/detectors/perf-detector.js.map +1 -0
  81. package/dist/services/optimization/index.d.ts +61 -0
  82. package/dist/services/optimization/index.d.ts.map +1 -0
  83. package/dist/services/optimization/index.js +69 -0
  84. package/dist/services/optimization/index.js.map +1 -0
  85. package/dist/services/optimization/optimization.service.d.ts +65 -0
  86. package/dist/services/optimization/optimization.service.d.ts.map +1 -0
  87. package/dist/services/optimization/optimization.service.js +511 -0
  88. package/dist/services/optimization/optimization.service.js.map +1 -0
  89. package/dist/services/optimization/optimization.types.d.ts +343 -0
  90. package/dist/services/optimization/optimization.types.d.ts.map +1 -0
  91. package/dist/services/optimization/optimization.types.js +8 -0
  92. package/dist/services/optimization/optimization.types.js.map +1 -0
  93. package/dist/services/optimization/optimizers/code-optimizer.d.ts +87 -0
  94. package/dist/services/optimization/optimizers/code-optimizer.d.ts.map +1 -0
  95. package/dist/services/optimization/optimizers/code-optimizer.js +436 -0
  96. package/dist/services/optimization/optimizers/code-optimizer.js.map +1 -0
  97. package/dist/services/optimization/optimizers/index.d.ts +7 -0
  98. package/dist/services/optimization/optimizers/index.d.ts.map +1 -0
  99. package/dist/services/optimization/optimizers/index.js +7 -0
  100. package/dist/services/optimization/optimizers/index.js.map +1 -0
  101. package/dist/services/optimization/optimizers/perf-optimizer.d.ts +64 -0
  102. package/dist/services/optimization/optimizers/perf-optimizer.d.ts.map +1 -0
  103. package/dist/services/optimization/optimizers/perf-optimizer.js +330 -0
  104. package/dist/services/optimization/optimizers/perf-optimizer.js.map +1 -0
  105. package/dist/services/optimization/optimizers/refact-optimizer.d.ts +82 -0
  106. package/dist/services/optimization/optimizers/refact-optimizer.d.ts.map +1 -0
  107. package/dist/services/optimization/optimizers/refact-optimizer.js +354 -0
  108. package/dist/services/optimization/optimizers/refact-optimizer.js.map +1 -0
  109. package/dist/services/optimization/patterns/anti-patterns.d.ts +31 -0
  110. package/dist/services/optimization/patterns/anti-patterns.d.ts.map +1 -0
  111. package/dist/services/optimization/patterns/anti-patterns.js +501 -0
  112. package/dist/services/optimization/patterns/anti-patterns.js.map +1 -0
  113. package/dist/services/optimization/patterns/index.d.ts +5 -0
  114. package/dist/services/optimization/patterns/index.d.ts.map +1 -0
  115. package/dist/services/optimization/patterns/index.js +5 -0
  116. package/dist/services/optimization/patterns/index.js.map +1 -0
  117. package/dist/services/reporting/export/chart.exporter.d.ts +59 -0
  118. package/dist/services/reporting/export/chart.exporter.d.ts.map +1 -0
  119. package/dist/services/reporting/export/chart.exporter.js +350 -0
  120. package/dist/services/reporting/export/chart.exporter.js.map +1 -0
  121. package/dist/services/reporting/export/index.d.ts +9 -0
  122. package/dist/services/reporting/export/index.d.ts.map +1 -0
  123. package/dist/services/reporting/export/index.js +10 -0
  124. package/dist/services/reporting/export/index.js.map +1 -0
  125. package/dist/services/reporting/export/pdf.exporter.d.ts +133 -0
  126. package/dist/services/reporting/export/pdf.exporter.d.ts.map +1 -0
  127. package/dist/services/reporting/export/pdf.exporter.js +270 -0
  128. package/dist/services/reporting/export/pdf.exporter.js.map +1 -0
  129. package/dist/services/reporting/history.service.d.ts +93 -0
  130. package/dist/services/reporting/history.service.d.ts.map +1 -0
  131. package/dist/services/reporting/history.service.js +285 -0
  132. package/dist/services/reporting/history.service.js.map +1 -0
  133. package/dist/services/reporting/index.d.ts +15 -0
  134. package/dist/services/reporting/index.d.ts.map +1 -0
  135. package/dist/services/reporting/index.js +16 -0
  136. package/dist/services/reporting/index.js.map +1 -0
  137. package/dist/services/reporting/report.service.d.ts +102 -0
  138. package/dist/services/reporting/report.service.d.ts.map +1 -0
  139. package/dist/services/reporting/report.service.js +240 -0
  140. package/dist/services/reporting/report.service.js.map +1 -0
  141. package/dist/services/reporting/reporting.types.d.ts +329 -0
  142. package/dist/services/reporting/reporting.types.d.ts.map +1 -0
  143. package/dist/services/reporting/reporting.types.js +8 -0
  144. package/dist/services/reporting/reporting.types.js.map +1 -0
  145. package/dist/services/reporting/templates/html.template.d.ts +81 -0
  146. package/dist/services/reporting/templates/html.template.d.ts.map +1 -0
  147. package/dist/services/reporting/templates/html.template.js +741 -0
  148. package/dist/services/reporting/templates/html.template.js.map +1 -0
  149. package/dist/services/reporting/templates/json.template.d.ts +85 -0
  150. package/dist/services/reporting/templates/json.template.d.ts.map +1 -0
  151. package/dist/services/reporting/templates/json.template.js +308 -0
  152. package/dist/services/reporting/templates/json.template.js.map +1 -0
  153. package/dist/services/reporting/templates/markdown.template.d.ts +69 -0
  154. package/dist/services/reporting/templates/markdown.template.d.ts.map +1 -0
  155. package/dist/services/reporting/templates/markdown.template.js +311 -0
  156. package/dist/services/reporting/templates/markdown.template.js.map +1 -0
  157. package/dist/services/reporting/trend-analyzer.d.ts +73 -0
  158. package/dist/services/reporting/trend-analyzer.d.ts.map +1 -0
  159. package/dist/services/reporting/trend-analyzer.js +291 -0
  160. package/dist/services/reporting/trend-analyzer.js.map +1 -0
  161. package/dist/services/review/analyzers/dependency-analyzer.d.ts +87 -0
  162. package/dist/services/review/analyzers/dependency-analyzer.d.ts.map +1 -0
  163. package/dist/services/review/analyzers/dependency-analyzer.js +458 -0
  164. package/dist/services/review/analyzers/dependency-analyzer.js.map +1 -0
  165. package/dist/services/review/analyzers/index.d.ts +13 -0
  166. package/dist/services/review/analyzers/index.d.ts.map +1 -0
  167. package/dist/services/review/analyzers/index.js +13 -0
  168. package/dist/services/review/analyzers/index.js.map +1 -0
  169. package/dist/services/review/analyzers/nestjs-analyzer.d.ts +210 -0
  170. package/dist/services/review/analyzers/nestjs-analyzer.d.ts.map +1 -0
  171. package/dist/services/review/analyzers/nestjs-analyzer.js +571 -0
  172. package/dist/services/review/analyzers/nestjs-analyzer.js.map +1 -0
  173. package/dist/services/review/analyzers/performance-analyzer.d.ts +91 -0
  174. package/dist/services/review/analyzers/performance-analyzer.d.ts.map +1 -0
  175. package/dist/services/review/analyzers/performance-analyzer.js +589 -0
  176. package/dist/services/review/analyzers/performance-analyzer.js.map +1 -0
  177. package/dist/services/review/analyzers/security-analyzer.d.ts +96 -0
  178. package/dist/services/review/analyzers/security-analyzer.d.ts.map +1 -0
  179. package/dist/services/review/analyzers/security-analyzer.js +512 -0
  180. package/dist/services/review/analyzers/security-analyzer.js.map +1 -0
  181. package/dist/services/review/analyzers/static-analyzer.d.ts +90 -0
  182. package/dist/services/review/analyzers/static-analyzer.d.ts.map +1 -0
  183. package/dist/services/review/analyzers/static-analyzer.js +423 -0
  184. package/dist/services/review/analyzers/static-analyzer.js.map +1 -0
  185. package/dist/services/review/fixers/auto-fixer.d.ts +94 -0
  186. package/dist/services/review/fixers/auto-fixer.d.ts.map +1 -0
  187. package/dist/services/review/fixers/auto-fixer.js +404 -0
  188. package/dist/services/review/fixers/auto-fixer.js.map +1 -0
  189. package/dist/services/review/fixers/index.d.ts +11 -0
  190. package/dist/services/review/fixers/index.d.ts.map +1 -0
  191. package/dist/services/review/fixers/index.js +11 -0
  192. package/dist/services/review/fixers/index.js.map +1 -0
  193. package/dist/services/review/fixers/refactor-suggester.d.ts +100 -0
  194. package/dist/services/review/fixers/refactor-suggester.d.ts.map +1 -0
  195. package/dist/services/review/fixers/refactor-suggester.js +555 -0
  196. package/dist/services/review/fixers/refactor-suggester.js.map +1 -0
  197. package/dist/services/review/fixers/test-generator.d.ts +99 -0
  198. package/dist/services/review/fixers/test-generator.d.ts.map +1 -0
  199. package/dist/services/review/fixers/test-generator.js +458 -0
  200. package/dist/services/review/fixers/test-generator.js.map +1 -0
  201. package/dist/services/review/index.d.ts +14 -0
  202. package/dist/services/review/index.d.ts.map +1 -0
  203. package/dist/services/review/index.js +14 -0
  204. package/dist/services/review/index.js.map +1 -0
  205. package/dist/services/review/reporters/fix-reporter.d.ts +67 -0
  206. package/dist/services/review/reporters/fix-reporter.d.ts.map +1 -0
  207. package/dist/services/review/reporters/fix-reporter.js +437 -0
  208. package/dist/services/review/reporters/fix-reporter.js.map +1 -0
  209. package/dist/services/review/reporters/index.d.ts +10 -0
  210. package/dist/services/review/reporters/index.d.ts.map +1 -0
  211. package/dist/services/review/reporters/index.js +10 -0
  212. package/dist/services/review/reporters/index.js.map +1 -0
  213. package/dist/services/review/reporters/score-reporter.d.ts +84 -0
  214. package/dist/services/review/reporters/score-reporter.d.ts.map +1 -0
  215. package/dist/services/review/reporters/score-reporter.js +560 -0
  216. package/dist/services/review/reporters/score-reporter.js.map +1 -0
  217. package/dist/services/review/review.service.d.ts +129 -0
  218. package/dist/services/review/review.service.d.ts.map +1 -0
  219. package/dist/services/review/review.service.js +396 -0
  220. package/dist/services/review/review.service.js.map +1 -0
  221. package/dist/services/review/review.types.d.ts +443 -0
  222. package/dist/services/review/review.types.d.ts.map +1 -0
  223. package/dist/services/review/review.types.js +11 -0
  224. package/dist/services/review/review.types.js.map +1 -0
  225. package/dist/services/scoring/dimensions/accessibility.analyzer.d.ts +53 -0
  226. package/dist/services/scoring/dimensions/accessibility.analyzer.d.ts.map +1 -0
  227. package/dist/services/scoring/dimensions/accessibility.analyzer.js +260 -0
  228. package/dist/services/scoring/dimensions/accessibility.analyzer.js.map +1 -0
  229. package/dist/services/scoring/dimensions/backend-logic.analyzer.d.ts +138 -0
  230. package/dist/services/scoring/dimensions/backend-logic.analyzer.d.ts.map +1 -0
  231. package/dist/services/scoring/dimensions/backend-logic.analyzer.js +713 -0
  232. package/dist/services/scoring/dimensions/backend-logic.analyzer.js.map +1 -0
  233. package/dist/services/scoring/dimensions/business-logic.analyzer.d.ts +142 -0
  234. package/dist/services/scoring/dimensions/business-logic.analyzer.d.ts.map +1 -0
  235. package/dist/services/scoring/dimensions/business-logic.analyzer.js +747 -0
  236. package/dist/services/scoring/dimensions/business-logic.analyzer.js.map +1 -0
  237. package/dist/services/scoring/dimensions/code-quality.analyzer.d.ts +142 -0
  238. package/dist/services/scoring/dimensions/code-quality.analyzer.d.ts.map +1 -0
  239. package/dist/services/scoring/dimensions/code-quality.analyzer.js +685 -0
  240. package/dist/services/scoring/dimensions/code-quality.analyzer.js.map +1 -0
  241. package/dist/services/scoring/dimensions/index.d.ts +18 -0
  242. package/dist/services/scoring/dimensions/index.d.ts.map +1 -0
  243. package/dist/services/scoring/dimensions/index.js +27 -0
  244. package/dist/services/scoring/dimensions/index.js.map +1 -0
  245. package/dist/services/scoring/dimensions/performance.analyzer.d.ts +125 -0
  246. package/dist/services/scoring/dimensions/performance.analyzer.d.ts.map +1 -0
  247. package/dist/services/scoring/dimensions/performance.analyzer.js +615 -0
  248. package/dist/services/scoring/dimensions/performance.analyzer.js.map +1 -0
  249. package/dist/services/scoring/dimensions/security.analyzer.d.ts +53 -0
  250. package/dist/services/scoring/dimensions/security.analyzer.d.ts.map +1 -0
  251. package/dist/services/scoring/dimensions/security.analyzer.js +327 -0
  252. package/dist/services/scoring/dimensions/security.analyzer.js.map +1 -0
  253. package/dist/services/scoring/dimensions/seo.analyzer.d.ts +77 -0
  254. package/dist/services/scoring/dimensions/seo.analyzer.d.ts.map +1 -0
  255. package/dist/services/scoring/dimensions/seo.analyzer.js +502 -0
  256. package/dist/services/scoring/dimensions/seo.analyzer.js.map +1 -0
  257. package/dist/services/scoring/dimensions/test-coverage.analyzer.d.ts +106 -0
  258. package/dist/services/scoring/dimensions/test-coverage.analyzer.d.ts.map +1 -0
  259. package/dist/services/scoring/dimensions/test-coverage.analyzer.js +496 -0
  260. package/dist/services/scoring/dimensions/test-coverage.analyzer.js.map +1 -0
  261. package/dist/services/scoring/dimensions/ui-ux.analyzer.d.ts +126 -0
  262. package/dist/services/scoring/dimensions/ui-ux.analyzer.d.ts.map +1 -0
  263. package/dist/services/scoring/dimensions/ui-ux.analyzer.js +665 -0
  264. package/dist/services/scoring/dimensions/ui-ux.analyzer.js.map +1 -0
  265. package/dist/services/scoring/index.d.ts +10 -0
  266. package/dist/services/scoring/index.d.ts.map +1 -0
  267. package/dist/services/scoring/index.js +10 -0
  268. package/dist/services/scoring/index.js.map +1 -0
  269. package/dist/services/scoring/scoring-service.d.ts +222 -0
  270. package/dist/services/scoring/scoring-service.d.ts.map +1 -0
  271. package/dist/services/scoring/scoring-service.js +636 -0
  272. package/dist/services/scoring/scoring-service.js.map +1 -0
  273. package/package.json +11 -3
  274. package/templates/README.md +183 -0
  275. package/templates/nestjs/controller.spec.ts +203 -0
  276. package/templates/nestjs/e2e/api.e2e-spec.ts +451 -0
  277. package/templates/nestjs/e2e/auth.e2e-spec.ts +533 -0
  278. package/templates/nestjs/fixtures/test-module.ts +311 -0
  279. package/templates/nestjs/guard.spec.ts +314 -0
  280. package/templates/nestjs/interceptor.spec.ts +458 -0
  281. package/templates/nestjs/module.spec.ts +173 -0
  282. package/templates/nestjs/pipe.spec.ts +474 -0
  283. package/templates/nestjs/service.spec.ts +296 -0
  284. package/templates/rust/Cargo.toml +72 -0
  285. package/templates/rust/actix-controller.test.rs +114 -0
  286. package/templates/rust/axum-handler.test.rs +117 -0
  287. package/templates/rust/integration.test.rs +63 -0
  288. package/templates/rust/rocket-route.test.rs +106 -0
  289. package/templates/rust/unit.test.rs +38 -0
@@ -0,0 +1,260 @@
1
+ /**
2
+ * Accessibility Dimension Analyzer
3
+ *
4
+ * Analyzes web accessibility using axe-core and pa11y.
5
+ *
6
+ * @module services/scoring/dimensions/accessibility-analyzer
7
+ */
8
+ import { CommandExecutor } from '../../../shared/utils/command-executor.js';
9
+ import { createLogger } from '../../../shared/utils/logger.js';
10
+ /**
11
+ * WCAG AA compliance thresholds
12
+ */
13
+ const A11Y_THRESHOLDS = {
14
+ critical: 0, // Must have zero critical issues
15
+ serious: 2, // Max 2 serious issues
16
+ moderate: 10, // Max 10 moderate issues
17
+ minor: 20, // Max 20 minor issues
18
+ };
19
+ /**
20
+ * Accessibility Dimension Analyzer
21
+ */
22
+ export class AccessibilityAnalyzer {
23
+ /** Analyzer configuration */
24
+ config = {
25
+ dimension: 'accessibility',
26
+ defaultWeight: 0.10,
27
+ estimatedDuration: 20000,
28
+ requiresRunningProject: true,
29
+ supportedFrameworks: ['Next.js', 'React', 'Vue', 'Nuxt', 'Svelte', 'Angular', 'Remix', 'SvelteKit', 'Astro', 'Gatsby'],
30
+ };
31
+ logger;
32
+ executor;
33
+ constructor() {
34
+ this.logger = createLogger('AccessibilityAnalyzer');
35
+ this.executor = new CommandExecutor();
36
+ }
37
+ /**
38
+ * Analyze accessibility of the project
39
+ */
40
+ async analyze(projectPath, _framework, _options) {
41
+ this.logger.info(`Analyzing accessibility for ${projectPath}`);
42
+ const issues = [];
43
+ const improvements = [];
44
+ let score = 100;
45
+ let axeResults = null;
46
+ try {
47
+ // Run accessibility scan (try multiple URLs)
48
+ axeResults = await this.runA11yScan(projectPath);
49
+ score = this.calculateA11yScore(axeResults);
50
+ // Generate issues from violations
51
+ issues.push(...this.generateA11yIssues(axeResults));
52
+ // Generate improvement suggestions
53
+ improvements.push(...this.generateA11yImprovements(axeResults));
54
+ }
55
+ catch (error) {
56
+ this.logger.warn('Accessibility scan failed', error);
57
+ issues.push({
58
+ severity: 'medium',
59
+ category: 'accessibility',
60
+ description: 'Could not run accessibility scan. Ensure the app is running on localhost:3000',
61
+ fixable: false,
62
+ });
63
+ score = 50;
64
+ }
65
+ return {
66
+ dimension: 'accessibility',
67
+ score,
68
+ weight: 0.10,
69
+ issues: issues.map(i => ({
70
+ severity: i.severity,
71
+ category: i.category,
72
+ description: i.description,
73
+ location: i.location,
74
+ fixable: i.fixable,
75
+ })),
76
+ improvements: improvements.map(imp => ({
77
+ type: imp.type,
78
+ description: imp.description,
79
+ effort: imp.effort,
80
+ impact: imp.impact,
81
+ })),
82
+ };
83
+ }
84
+ /**
85
+ * Run accessibility scan using axe-core
86
+ */
87
+ async runA11yScan(projectPath) {
88
+ const urls = [
89
+ 'http://localhost:3000',
90
+ 'http://localhost:5173',
91
+ 'http://localhost:4173',
92
+ ];
93
+ for (const url of urls) {
94
+ try {
95
+ // Try pa11y first (lighter)
96
+ const pa11yCmd = `npx pa11y ${url} --json --runner axe`;
97
+ const result = await this.executor.execute(pa11yCmd, { cwd: projectPath, timeout: 30000 });
98
+ if (result.success && result.data.stdout) {
99
+ return this.parsePa11yResult(result.data.stdout);
100
+ }
101
+ }
102
+ catch {
103
+ // Try next URL
104
+ }
105
+ }
106
+ // If no URL worked, throw error
107
+ throw new Error('No accessible development server found');
108
+ }
109
+ /**
110
+ * Parse pa11y result into our format
111
+ */
112
+ parsePa11yResult(output) {
113
+ try {
114
+ const data = JSON.parse(output);
115
+ return {
116
+ violations: data.map((v) => ({
117
+ id: v.code || 'unknown',
118
+ impact: this.mapSeverity(v.type),
119
+ description: v.message,
120
+ help: v.context || '',
121
+ nodes: v.selector ? [{ target: [v.selector], html: v.context || '' }] : [],
122
+ })),
123
+ passes: 0,
124
+ incomplete: 0,
125
+ };
126
+ }
127
+ catch {
128
+ return {
129
+ violations: [],
130
+ passes: 0,
131
+ incomplete: 0,
132
+ };
133
+ }
134
+ }
135
+ /**
136
+ * Map pa11y severity to axe impact
137
+ */
138
+ mapSeverity(type) {
139
+ const mapping = {
140
+ error: 'critical',
141
+ warning: 'serious',
142
+ notice: 'moderate',
143
+ };
144
+ return mapping[type] || 'minor';
145
+ }
146
+ /**
147
+ * Calculate accessibility score (0-100)
148
+ */
149
+ calculateA11yScore(results) {
150
+ let score = 100;
151
+ for (const violation of results.violations) {
152
+ switch (violation.impact) {
153
+ case 'critical':
154
+ score -= 30;
155
+ break;
156
+ case 'serious':
157
+ score -= 15;
158
+ break;
159
+ case 'moderate':
160
+ score -= 5;
161
+ break;
162
+ case 'minor':
163
+ score -= 2;
164
+ break;
165
+ }
166
+ }
167
+ return Math.max(0, score);
168
+ }
169
+ /**
170
+ * Generate accessibility issues from violations
171
+ */
172
+ generateA11yIssues(results) {
173
+ return results.violations.slice(0, 20).map(v => ({
174
+ severity: (v.impact === 'critical' || v.impact === 'serious' ? 'high' : 'medium'),
175
+ category: 'accessibility',
176
+ description: `${v.id}: ${v.description}`,
177
+ location: v.nodes[0]?.target[0] || 'multiple',
178
+ fixable: true,
179
+ }));
180
+ }
181
+ /**
182
+ * Generate accessibility improvement suggestions
183
+ */
184
+ generateA11yImprovements(results) {
185
+ const improvements = [];
186
+ const violationIds = new Set(results.violations.map(v => v.id));
187
+ // Common improvements based on violations found
188
+ if (violationIds.has('color-contrast')) {
189
+ improvements.push({
190
+ type: 'a11y',
191
+ description: 'Fix color contrast issues to meet WCAG AA standards (4.5:1 for normal text)',
192
+ effort: 'moderate',
193
+ impact: 'high',
194
+ });
195
+ }
196
+ if (violationIds.has('image-alt')) {
197
+ improvements.push({
198
+ type: 'a11y',
199
+ description: 'Add alt text to all images for screen reader users',
200
+ effort: 'quick',
201
+ impact: 'high',
202
+ });
203
+ }
204
+ if (violationIds.has('label')) {
205
+ improvements.push({
206
+ type: 'a11y',
207
+ description: 'Ensure all form inputs have associated labels',
208
+ effort: 'quick',
209
+ impact: 'high',
210
+ });
211
+ }
212
+ if (violationIds.has('button-name')) {
213
+ improvements.push({
214
+ type: 'a11y',
215
+ description: 'Add accessible names to all buttons and links',
216
+ effort: 'quick',
217
+ impact: 'high',
218
+ });
219
+ }
220
+ if (violationIds.has('heading-order')) {
221
+ improvements.push({
222
+ type: 'a11y',
223
+ description: 'Fix heading order to follow logical hierarchy (h1 → h2 → h3)',
224
+ effort: 'moderate',
225
+ impact: 'medium',
226
+ });
227
+ }
228
+ // General improvements
229
+ improvements.push({
230
+ type: 'a11y',
231
+ description: 'Test your site with a screen reader (NVDA, JAWS, or VoiceOver)',
232
+ effort: 'moderate',
233
+ impact: 'high',
234
+ });
235
+ improvements.push({
236
+ type: 'a11y',
237
+ description: 'Ensure keyboard navigation works for all interactive elements',
238
+ effort: 'moderate',
239
+ impact: 'high',
240
+ });
241
+ improvements.push({
242
+ type: 'a11y',
243
+ description: 'Add skip links for main content navigation',
244
+ effort: 'quick',
245
+ impact: 'medium',
246
+ });
247
+ improvements.push({
248
+ type: 'a11y',
249
+ description: 'Use semantic HTML elements (nav, main, article, etc.)',
250
+ effort: 'moderate',
251
+ impact: 'medium',
252
+ });
253
+ return improvements;
254
+ }
255
+ }
256
+ /**
257
+ * Default accessibility analyzer instance
258
+ */
259
+ export const accessibilityAnalyzer = new AccessibilityAnalyzer();
260
+ //# sourceMappingURL=accessibility.analyzer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"accessibility.analyzer.js","sourceRoot":"","sources":["../../../../src/services/scoring/dimensions/accessibility.analyzer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,138 @@
1
+ /**
2
+ * Backend Logic Analyzer
3
+ *
4
+ * Analyzes backend code quality including API design, error handling consistency,
5
+ * input validation, rate limiting, and caching strategy.
6
+ *
7
+ * @module services/scoring/dimensions/backend-logic
8
+ */
9
+ import type { DimensionScore, CodeDimension, DimensionAnalyzerConfig } from '../../../core/types/scoring.types.js';
10
+ import type { Framework } from '../../../core/types/project.types.js';
11
+ import type { ScoringOptions } from '../../../core/types/scoring.types.js';
12
+ /**
13
+ * Backend logic analyzer configuration
14
+ */
15
+ export interface BackendLogicAnalyzerOptions {
16
+ /** Check API routes */
17
+ checkApiRoutes?: boolean;
18
+ /** Check error handling */
19
+ checkErrorHandling?: boolean;
20
+ /** Check input validation */
21
+ checkInputValidation?: boolean;
22
+ /** Check rate limiting */
23
+ checkRateLimiting?: boolean;
24
+ /** Check caching */
25
+ checkCaching?: boolean;
26
+ }
27
+ /**
28
+ * Backend Logic Analyzer
29
+ *
30
+ * Evaluates backend code quality across multiple dimensions:
31
+ * - API design (REST conventions, status codes)
32
+ * - Error handling consistency
33
+ * - Input validation
34
+ * - Rate limiting presence
35
+ * - Caching strategy
36
+ */
37
+ export declare class BackendLogicAnalyzer {
38
+ /** Analyzer configuration */
39
+ readonly config: DimensionAnalyzerConfig;
40
+ private readonly logger;
41
+ private readonly executor;
42
+ private readonly checkApiRoutesFlag;
43
+ private readonly checkErrorHandlingFlag;
44
+ private readonly checkInputValidationFlag;
45
+ private readonly checkRateLimitingFlag;
46
+ private readonly checkCachingFlag;
47
+ constructor(options?: BackendLogicAnalyzerOptions);
48
+ /**
49
+ * Get the dimension this analyzer handles
50
+ */
51
+ getDimension(): CodeDimension;
52
+ /**
53
+ * Get the default weight for this dimension
54
+ */
55
+ getWeight(): number;
56
+ /**
57
+ * Analyze backend logic for a project
58
+ *
59
+ * @param projectPath - Path to the project root
60
+ * @param _framework - Detected framework (optional, for framework-specific analysis)
61
+ * @param _options - Scoring options (optional)
62
+ * @returns Dimension score with backend metrics
63
+ */
64
+ analyze(projectPath: string, _framework?: Framework, _options?: ScoringOptions): Promise<DimensionScore>;
65
+ /**
66
+ * Detect backend framework
67
+ */
68
+ private detectBackendFramework;
69
+ /**
70
+ * Analyze API routes
71
+ */
72
+ private analyzeApiRoutes;
73
+ /**
74
+ * Scan directory for API routes
75
+ */
76
+ private scanDirectoryForApiRoutes;
77
+ /**
78
+ * Analyze a single API file
79
+ */
80
+ private analyzeApiFile;
81
+ /**
82
+ * Check error handling patterns
83
+ */
84
+ private checkErrorHandling;
85
+ /**
86
+ * Check input validation
87
+ */
88
+ private checkInputValidation;
89
+ /**
90
+ * Check rate limiting
91
+ */
92
+ private checkRateLimiting;
93
+ /**
94
+ * Check caching strategy
95
+ */
96
+ private checkCaching;
97
+ /**
98
+ * Check if directory contains pattern
99
+ */
100
+ private directoryContainsPattern;
101
+ /**
102
+ * Check API versioning
103
+ */
104
+ private checkApiVersioning;
105
+ /**
106
+ * Calculate RESTful adherence score
107
+ */
108
+ private calculateRestfulAdherence;
109
+ /**
110
+ * Check consistent status codes
111
+ */
112
+ private checkConsistentStatusCodes;
113
+ /**
114
+ * Identify backend issues
115
+ */
116
+ private identifyBackendIssues;
117
+ /**
118
+ * Generate backend improvements
119
+ */
120
+ private generateBackendImprovements;
121
+ /**
122
+ * Calculate backend score
123
+ */
124
+ private calculateBackendScore;
125
+ /**
126
+ * Count passed checks for metadata
127
+ */
128
+ private countPassedChecks;
129
+ /**
130
+ * Create result when no backend detected
131
+ */
132
+ private createNoBackendResult;
133
+ }
134
+ /**
135
+ * Default analyzer instance
136
+ */
137
+ export declare const backendLogicAnalyzer: BackendLogicAnalyzer;
138
+ //# sourceMappingURL=backend-logic.analyzer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"backend-logic.analyzer.d.ts","sourceRoot":"","sources":["../../../../src/services/scoring/dimensions/backend-logic.analyzer.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAMH,OAAO,KAAK,EACV,cAAc,EAGd,aAAa,EAMb,uBAAuB,EACxB,MAAM,sCAAsC,CAAC;AAC9C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sCAAsC,CAAC;AACtE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sCAAsC,CAAC;AAkD3E;;GAEG;AACH,MAAM,WAAW,2BAA2B;IAC1C,uBAAuB;IACvB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,2BAA2B;IAC3B,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,6BAA6B;IAC7B,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,0BAA0B;IAC1B,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,oBAAoB;IACpB,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED;;;;;;;;;GASG;AACH,qBAAa,oBAAoB;IAC/B,6BAA6B;IAC7B,QAAQ,CAAC,MAAM,EAAE,uBAAuB,CAKtC;IAEF,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAkB;IAC3C,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAU;IAC7C,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAU;IACjD,OAAO,CAAC,QAAQ,CAAC,wBAAwB,CAAU;IACnD,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAU;IAChD,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAU;gBAE/B,OAAO,GAAE,2BAAgC;IAUrD;;OAEG;IACH,YAAY,IAAI,aAAa;IAI7B;;OAEG;IACH,SAAS,IAAI,MAAM;IAInB;;;;;;;OAOG;IACG,OAAO,CAAC,WAAW,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,SAAS,EAAE,QAAQ,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC;IA2G9G;;OAEG;YACW,sBAAsB;IAwBpC;;OAEG;YACW,gBAAgB;IAqB9B;;OAEG;YACW,yBAAyB;IAwBvC;;OAEG;YACW,cAAc;IAoD5B;;OAEG;YACW,kBAAkB;IAehC;;OAEG;YACW,oBAAoB;IAclC;;OAEG;YACW,iBAAiB;IAiC/B;;OAEG;YACW,YAAY;IA8C1B;;OAEG;YACW,wBAAwB;IAkCtC;;OAEG;YACW,kBAAkB;IA0BhC;;OAEG;IACH,OAAO,CAAC,yBAAyB;IA+BjC;;OAEG;IACH,OAAO,CAAC,0BAA0B;IAOlC;;OAEG;IACH,OAAO,CAAC,qBAAqB;IA4E7B;;OAEG;IACH,OAAO,CAAC,2BAA2B;IA8FnC;;OAEG;IACH,OAAO,CAAC,qBAAqB;IA8B7B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAWzB;;OAEG;IACH,OAAO,CAAC,qBAAqB;CAe9B;AAED;;GAEG;AACH,eAAO,MAAM,oBAAoB,sBAA6B,CAAC"}