@oalacea/daemon 0.6.4 → 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 (285) 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/optimize.command.d.ts +110 -0
  19. package/dist/cli/commands/optimize.command.d.ts.map +1 -0
  20. package/dist/cli/commands/optimize.command.js +497 -0
  21. package/dist/cli/commands/optimize.command.js.map +1 -0
  22. package/dist/cli/commands/report.command.d.ts +110 -0
  23. package/dist/cli/commands/report.command.d.ts.map +1 -0
  24. package/dist/cli/commands/report.command.js +532 -0
  25. package/dist/cli/commands/report.command.js.map +1 -0
  26. package/dist/cli/commands/review.command.d.ts +110 -0
  27. package/dist/cli/commands/review.command.d.ts.map +1 -0
  28. package/dist/cli/commands/review.command.js +520 -0
  29. package/dist/cli/commands/review.command.js.map +1 -0
  30. package/dist/cli/commands/score.command.d.ts +47 -0
  31. package/dist/cli/commands/score.command.d.ts.map +1 -0
  32. package/dist/cli/commands/score.command.js +261 -0
  33. package/dist/cli/commands/score.command.js.map +1 -0
  34. package/dist/cli/utils/index.d.ts +10 -0
  35. package/dist/cli/utils/index.d.ts.map +1 -0
  36. package/dist/cli/utils/index.js +10 -0
  37. package/dist/cli/utils/index.js.map +1 -0
  38. package/dist/cli/utils/output.d.ts +192 -0
  39. package/dist/cli/utils/output.d.ts.map +1 -0
  40. package/dist/cli/utils/output.js +411 -0
  41. package/dist/cli/utils/output.js.map +1 -0
  42. package/dist/cli/utils/progress.d.ts +204 -0
  43. package/dist/cli/utils/progress.d.ts.map +1 -0
  44. package/dist/cli/utils/progress.js +396 -0
  45. package/dist/cli/utils/progress.js.map +1 -0
  46. package/dist/core/types/index.d.ts +1 -0
  47. package/dist/core/types/index.d.ts.map +1 -1
  48. package/dist/core/types/project.types.d.ts +3 -3
  49. package/dist/core/types/project.types.d.ts.map +1 -1
  50. package/dist/core/types/scoring.types.d.ts +301 -0
  51. package/dist/core/types/scoring.types.d.ts.map +1 -0
  52. package/dist/core/types/scoring.types.js +8 -0
  53. package/dist/core/types/scoring.types.js.map +1 -0
  54. package/dist/services/detection/framework-detector.d.ts.map +1 -1
  55. package/dist/services/detection/framework-detector.js +74 -5
  56. package/dist/services/detection/framework-detector.js.map +1 -1
  57. package/dist/services/index.d.ts +12 -0
  58. package/dist/services/index.d.ts.map +1 -1
  59. package/dist/services/index.js +14 -0
  60. package/dist/services/index.js.map +1 -1
  61. package/dist/services/optimization/detectors/bug-detector.d.ts +82 -0
  62. package/dist/services/optimization/detectors/bug-detector.d.ts.map +1 -0
  63. package/dist/services/optimization/detectors/bug-detector.js +443 -0
  64. package/dist/services/optimization/detectors/bug-detector.js.map +1 -0
  65. package/dist/services/optimization/detectors/code-smell-detector.d.ts +108 -0
  66. package/dist/services/optimization/detectors/code-smell-detector.d.ts.map +1 -0
  67. package/dist/services/optimization/detectors/code-smell-detector.js +569 -0
  68. package/dist/services/optimization/detectors/code-smell-detector.js.map +1 -0
  69. package/dist/services/optimization/detectors/index.d.ts +7 -0
  70. package/dist/services/optimization/detectors/index.d.ts.map +1 -0
  71. package/dist/services/optimization/detectors/index.js +7 -0
  72. package/dist/services/optimization/detectors/index.js.map +1 -0
  73. package/dist/services/optimization/detectors/perf-detector.d.ts +80 -0
  74. package/dist/services/optimization/detectors/perf-detector.d.ts.map +1 -0
  75. package/dist/services/optimization/detectors/perf-detector.js +451 -0
  76. package/dist/services/optimization/detectors/perf-detector.js.map +1 -0
  77. package/dist/services/optimization/index.d.ts +61 -0
  78. package/dist/services/optimization/index.d.ts.map +1 -0
  79. package/dist/services/optimization/index.js +69 -0
  80. package/dist/services/optimization/index.js.map +1 -0
  81. package/dist/services/optimization/optimization.service.d.ts +65 -0
  82. package/dist/services/optimization/optimization.service.d.ts.map +1 -0
  83. package/dist/services/optimization/optimization.service.js +511 -0
  84. package/dist/services/optimization/optimization.service.js.map +1 -0
  85. package/dist/services/optimization/optimization.types.d.ts +343 -0
  86. package/dist/services/optimization/optimization.types.d.ts.map +1 -0
  87. package/dist/services/optimization/optimization.types.js +8 -0
  88. package/dist/services/optimization/optimization.types.js.map +1 -0
  89. package/dist/services/optimization/optimizers/code-optimizer.d.ts +87 -0
  90. package/dist/services/optimization/optimizers/code-optimizer.d.ts.map +1 -0
  91. package/dist/services/optimization/optimizers/code-optimizer.js +436 -0
  92. package/dist/services/optimization/optimizers/code-optimizer.js.map +1 -0
  93. package/dist/services/optimization/optimizers/index.d.ts +7 -0
  94. package/dist/services/optimization/optimizers/index.d.ts.map +1 -0
  95. package/dist/services/optimization/optimizers/index.js +7 -0
  96. package/dist/services/optimization/optimizers/index.js.map +1 -0
  97. package/dist/services/optimization/optimizers/perf-optimizer.d.ts +64 -0
  98. package/dist/services/optimization/optimizers/perf-optimizer.d.ts.map +1 -0
  99. package/dist/services/optimization/optimizers/perf-optimizer.js +330 -0
  100. package/dist/services/optimization/optimizers/perf-optimizer.js.map +1 -0
  101. package/dist/services/optimization/optimizers/refact-optimizer.d.ts +82 -0
  102. package/dist/services/optimization/optimizers/refact-optimizer.d.ts.map +1 -0
  103. package/dist/services/optimization/optimizers/refact-optimizer.js +354 -0
  104. package/dist/services/optimization/optimizers/refact-optimizer.js.map +1 -0
  105. package/dist/services/optimization/patterns/anti-patterns.d.ts +31 -0
  106. package/dist/services/optimization/patterns/anti-patterns.d.ts.map +1 -0
  107. package/dist/services/optimization/patterns/anti-patterns.js +501 -0
  108. package/dist/services/optimization/patterns/anti-patterns.js.map +1 -0
  109. package/dist/services/optimization/patterns/index.d.ts +5 -0
  110. package/dist/services/optimization/patterns/index.d.ts.map +1 -0
  111. package/dist/services/optimization/patterns/index.js +5 -0
  112. package/dist/services/optimization/patterns/index.js.map +1 -0
  113. package/dist/services/reporting/export/chart.exporter.d.ts +59 -0
  114. package/dist/services/reporting/export/chart.exporter.d.ts.map +1 -0
  115. package/dist/services/reporting/export/chart.exporter.js +350 -0
  116. package/dist/services/reporting/export/chart.exporter.js.map +1 -0
  117. package/dist/services/reporting/export/index.d.ts +9 -0
  118. package/dist/services/reporting/export/index.d.ts.map +1 -0
  119. package/dist/services/reporting/export/index.js +10 -0
  120. package/dist/services/reporting/export/index.js.map +1 -0
  121. package/dist/services/reporting/export/pdf.exporter.d.ts +133 -0
  122. package/dist/services/reporting/export/pdf.exporter.d.ts.map +1 -0
  123. package/dist/services/reporting/export/pdf.exporter.js +270 -0
  124. package/dist/services/reporting/export/pdf.exporter.js.map +1 -0
  125. package/dist/services/reporting/history.service.d.ts +93 -0
  126. package/dist/services/reporting/history.service.d.ts.map +1 -0
  127. package/dist/services/reporting/history.service.js +285 -0
  128. package/dist/services/reporting/history.service.js.map +1 -0
  129. package/dist/services/reporting/index.d.ts +15 -0
  130. package/dist/services/reporting/index.d.ts.map +1 -0
  131. package/dist/services/reporting/index.js +16 -0
  132. package/dist/services/reporting/index.js.map +1 -0
  133. package/dist/services/reporting/report.service.d.ts +102 -0
  134. package/dist/services/reporting/report.service.d.ts.map +1 -0
  135. package/dist/services/reporting/report.service.js +240 -0
  136. package/dist/services/reporting/report.service.js.map +1 -0
  137. package/dist/services/reporting/reporting.types.d.ts +329 -0
  138. package/dist/services/reporting/reporting.types.d.ts.map +1 -0
  139. package/dist/services/reporting/reporting.types.js +8 -0
  140. package/dist/services/reporting/reporting.types.js.map +1 -0
  141. package/dist/services/reporting/templates/html.template.d.ts +81 -0
  142. package/dist/services/reporting/templates/html.template.d.ts.map +1 -0
  143. package/dist/services/reporting/templates/html.template.js +741 -0
  144. package/dist/services/reporting/templates/html.template.js.map +1 -0
  145. package/dist/services/reporting/templates/json.template.d.ts +85 -0
  146. package/dist/services/reporting/templates/json.template.d.ts.map +1 -0
  147. package/dist/services/reporting/templates/json.template.js +308 -0
  148. package/dist/services/reporting/templates/json.template.js.map +1 -0
  149. package/dist/services/reporting/templates/markdown.template.d.ts +69 -0
  150. package/dist/services/reporting/templates/markdown.template.d.ts.map +1 -0
  151. package/dist/services/reporting/templates/markdown.template.js +311 -0
  152. package/dist/services/reporting/templates/markdown.template.js.map +1 -0
  153. package/dist/services/reporting/trend-analyzer.d.ts +73 -0
  154. package/dist/services/reporting/trend-analyzer.d.ts.map +1 -0
  155. package/dist/services/reporting/trend-analyzer.js +291 -0
  156. package/dist/services/reporting/trend-analyzer.js.map +1 -0
  157. package/dist/services/review/analyzers/dependency-analyzer.d.ts +87 -0
  158. package/dist/services/review/analyzers/dependency-analyzer.d.ts.map +1 -0
  159. package/dist/services/review/analyzers/dependency-analyzer.js +458 -0
  160. package/dist/services/review/analyzers/dependency-analyzer.js.map +1 -0
  161. package/dist/services/review/analyzers/index.d.ts +13 -0
  162. package/dist/services/review/analyzers/index.d.ts.map +1 -0
  163. package/dist/services/review/analyzers/index.js +13 -0
  164. package/dist/services/review/analyzers/index.js.map +1 -0
  165. package/dist/services/review/analyzers/nestjs-analyzer.d.ts +210 -0
  166. package/dist/services/review/analyzers/nestjs-analyzer.d.ts.map +1 -0
  167. package/dist/services/review/analyzers/nestjs-analyzer.js +571 -0
  168. package/dist/services/review/analyzers/nestjs-analyzer.js.map +1 -0
  169. package/dist/services/review/analyzers/performance-analyzer.d.ts +91 -0
  170. package/dist/services/review/analyzers/performance-analyzer.d.ts.map +1 -0
  171. package/dist/services/review/analyzers/performance-analyzer.js +589 -0
  172. package/dist/services/review/analyzers/performance-analyzer.js.map +1 -0
  173. package/dist/services/review/analyzers/security-analyzer.d.ts +96 -0
  174. package/dist/services/review/analyzers/security-analyzer.d.ts.map +1 -0
  175. package/dist/services/review/analyzers/security-analyzer.js +512 -0
  176. package/dist/services/review/analyzers/security-analyzer.js.map +1 -0
  177. package/dist/services/review/analyzers/static-analyzer.d.ts +90 -0
  178. package/dist/services/review/analyzers/static-analyzer.d.ts.map +1 -0
  179. package/dist/services/review/analyzers/static-analyzer.js +423 -0
  180. package/dist/services/review/analyzers/static-analyzer.js.map +1 -0
  181. package/dist/services/review/fixers/auto-fixer.d.ts +94 -0
  182. package/dist/services/review/fixers/auto-fixer.d.ts.map +1 -0
  183. package/dist/services/review/fixers/auto-fixer.js +404 -0
  184. package/dist/services/review/fixers/auto-fixer.js.map +1 -0
  185. package/dist/services/review/fixers/index.d.ts +11 -0
  186. package/dist/services/review/fixers/index.d.ts.map +1 -0
  187. package/dist/services/review/fixers/index.js +11 -0
  188. package/dist/services/review/fixers/index.js.map +1 -0
  189. package/dist/services/review/fixers/refactor-suggester.d.ts +100 -0
  190. package/dist/services/review/fixers/refactor-suggester.d.ts.map +1 -0
  191. package/dist/services/review/fixers/refactor-suggester.js +555 -0
  192. package/dist/services/review/fixers/refactor-suggester.js.map +1 -0
  193. package/dist/services/review/fixers/test-generator.d.ts +99 -0
  194. package/dist/services/review/fixers/test-generator.d.ts.map +1 -0
  195. package/dist/services/review/fixers/test-generator.js +458 -0
  196. package/dist/services/review/fixers/test-generator.js.map +1 -0
  197. package/dist/services/review/index.d.ts +14 -0
  198. package/dist/services/review/index.d.ts.map +1 -0
  199. package/dist/services/review/index.js +14 -0
  200. package/dist/services/review/index.js.map +1 -0
  201. package/dist/services/review/reporters/fix-reporter.d.ts +67 -0
  202. package/dist/services/review/reporters/fix-reporter.d.ts.map +1 -0
  203. package/dist/services/review/reporters/fix-reporter.js +437 -0
  204. package/dist/services/review/reporters/fix-reporter.js.map +1 -0
  205. package/dist/services/review/reporters/index.d.ts +10 -0
  206. package/dist/services/review/reporters/index.d.ts.map +1 -0
  207. package/dist/services/review/reporters/index.js +10 -0
  208. package/dist/services/review/reporters/index.js.map +1 -0
  209. package/dist/services/review/reporters/score-reporter.d.ts +84 -0
  210. package/dist/services/review/reporters/score-reporter.d.ts.map +1 -0
  211. package/dist/services/review/reporters/score-reporter.js +560 -0
  212. package/dist/services/review/reporters/score-reporter.js.map +1 -0
  213. package/dist/services/review/review.service.d.ts +129 -0
  214. package/dist/services/review/review.service.d.ts.map +1 -0
  215. package/dist/services/review/review.service.js +396 -0
  216. package/dist/services/review/review.service.js.map +1 -0
  217. package/dist/services/review/review.types.d.ts +443 -0
  218. package/dist/services/review/review.types.d.ts.map +1 -0
  219. package/dist/services/review/review.types.js +11 -0
  220. package/dist/services/review/review.types.js.map +1 -0
  221. package/dist/services/scoring/dimensions/accessibility.analyzer.d.ts +53 -0
  222. package/dist/services/scoring/dimensions/accessibility.analyzer.d.ts.map +1 -0
  223. package/dist/services/scoring/dimensions/accessibility.analyzer.js +260 -0
  224. package/dist/services/scoring/dimensions/accessibility.analyzer.js.map +1 -0
  225. package/dist/services/scoring/dimensions/backend-logic.analyzer.d.ts +138 -0
  226. package/dist/services/scoring/dimensions/backend-logic.analyzer.d.ts.map +1 -0
  227. package/dist/services/scoring/dimensions/backend-logic.analyzer.js +713 -0
  228. package/dist/services/scoring/dimensions/backend-logic.analyzer.js.map +1 -0
  229. package/dist/services/scoring/dimensions/business-logic.analyzer.d.ts +142 -0
  230. package/dist/services/scoring/dimensions/business-logic.analyzer.d.ts.map +1 -0
  231. package/dist/services/scoring/dimensions/business-logic.analyzer.js +747 -0
  232. package/dist/services/scoring/dimensions/business-logic.analyzer.js.map +1 -0
  233. package/dist/services/scoring/dimensions/code-quality.analyzer.d.ts +142 -0
  234. package/dist/services/scoring/dimensions/code-quality.analyzer.d.ts.map +1 -0
  235. package/dist/services/scoring/dimensions/code-quality.analyzer.js +685 -0
  236. package/dist/services/scoring/dimensions/code-quality.analyzer.js.map +1 -0
  237. package/dist/services/scoring/dimensions/index.d.ts +18 -0
  238. package/dist/services/scoring/dimensions/index.d.ts.map +1 -0
  239. package/dist/services/scoring/dimensions/index.js +27 -0
  240. package/dist/services/scoring/dimensions/index.js.map +1 -0
  241. package/dist/services/scoring/dimensions/performance.analyzer.d.ts +125 -0
  242. package/dist/services/scoring/dimensions/performance.analyzer.d.ts.map +1 -0
  243. package/dist/services/scoring/dimensions/performance.analyzer.js +615 -0
  244. package/dist/services/scoring/dimensions/performance.analyzer.js.map +1 -0
  245. package/dist/services/scoring/dimensions/security.analyzer.d.ts +53 -0
  246. package/dist/services/scoring/dimensions/security.analyzer.d.ts.map +1 -0
  247. package/dist/services/scoring/dimensions/security.analyzer.js +327 -0
  248. package/dist/services/scoring/dimensions/security.analyzer.js.map +1 -0
  249. package/dist/services/scoring/dimensions/seo.analyzer.d.ts +77 -0
  250. package/dist/services/scoring/dimensions/seo.analyzer.d.ts.map +1 -0
  251. package/dist/services/scoring/dimensions/seo.analyzer.js +502 -0
  252. package/dist/services/scoring/dimensions/seo.analyzer.js.map +1 -0
  253. package/dist/services/scoring/dimensions/test-coverage.analyzer.d.ts +106 -0
  254. package/dist/services/scoring/dimensions/test-coverage.analyzer.d.ts.map +1 -0
  255. package/dist/services/scoring/dimensions/test-coverage.analyzer.js +496 -0
  256. package/dist/services/scoring/dimensions/test-coverage.analyzer.js.map +1 -0
  257. package/dist/services/scoring/dimensions/ui-ux.analyzer.d.ts +126 -0
  258. package/dist/services/scoring/dimensions/ui-ux.analyzer.d.ts.map +1 -0
  259. package/dist/services/scoring/dimensions/ui-ux.analyzer.js +665 -0
  260. package/dist/services/scoring/dimensions/ui-ux.analyzer.js.map +1 -0
  261. package/dist/services/scoring/index.d.ts +10 -0
  262. package/dist/services/scoring/index.d.ts.map +1 -0
  263. package/dist/services/scoring/index.js +10 -0
  264. package/dist/services/scoring/index.js.map +1 -0
  265. package/dist/services/scoring/scoring-service.d.ts +222 -0
  266. package/dist/services/scoring/scoring-service.d.ts.map +1 -0
  267. package/dist/services/scoring/scoring-service.js +636 -0
  268. package/dist/services/scoring/scoring-service.js.map +1 -0
  269. package/package.json +11 -3
  270. package/templates/README.md +183 -0
  271. package/templates/nestjs/controller.spec.ts +203 -0
  272. package/templates/nestjs/e2e/api.e2e-spec.ts +451 -0
  273. package/templates/nestjs/e2e/auth.e2e-spec.ts +533 -0
  274. package/templates/nestjs/fixtures/test-module.ts +311 -0
  275. package/templates/nestjs/guard.spec.ts +314 -0
  276. package/templates/nestjs/interceptor.spec.ts +458 -0
  277. package/templates/nestjs/module.spec.ts +173 -0
  278. package/templates/nestjs/pipe.spec.ts +474 -0
  279. package/templates/nestjs/service.spec.ts +296 -0
  280. package/templates/rust/Cargo.toml +72 -0
  281. package/templates/rust/actix-controller.test.rs +114 -0
  282. package/templates/rust/axum-handler.test.rs +117 -0
  283. package/templates/rust/integration.test.rs +63 -0
  284. package/templates/rust/rocket-route.test.rs +106 -0
  285. package/templates/rust/unit.test.rs +38 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-generator.d.ts","sourceRoot":"","sources":["../../../../src/services/review/fixers/test-generator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAOH,OAAO,KAAK,EAAE,KAAK,EAAiB,oBAAoB,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEpG,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AA6D/D;;GAEG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAgB;IACvC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,aAAa,CAA8C;gBAEvD,MAAM,CAAC,EAAE,aAAa;IAMlC;;;;;;OAMG;IACG,aAAa,CACjB,WAAW,EAAE,MAAM,EACnB,OAAO,GAAE;QACP,QAAQ,CAAC,EAAE,aAAa,CAAC;QACzB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;QACvB,SAAS,CAAC,EAAE,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAC;QACxC,MAAM,CAAC,EAAE,OAAO,CAAC;KACb,GACL,OAAO,CAAC,oBAAoB,CAAC;IAuDhC;;;;;OAKG;IACH,uBAAuB,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,EAAE;IAmB/C;;OAEG;YACW,mBAAmB;IAoCjC;;OAEG;IACH,OAAO,CAAC,eAAe;IAoCvB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IA4BzB;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAmB5B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAsBzB;;OAEG;YACW,gBAAgB;IAoC9B;;OAEG;YACW,cAAc;IA6B5B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IA0C3B;;OAEG;YACW,qBAAqB;IAuCnC;;OAEG;IACH,OAAO,CAAC,WAAW;IAcnB;;OAEG;IACH,OAAO,CAAC,WAAW;IAUnB;;OAEG;YACW,aAAa;IAa3B;;OAEG;IACG,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;CAYnF"}
@@ -0,0 +1,458 @@
1
+ /**
2
+ * Test Generator
3
+ *
4
+ * Génération automatique de tests pour le code non couvert:
5
+ * - Génération de stubs de tests
6
+ * - Détection des fonctions sans tests
7
+ * - Suggestions de cas de test
8
+ * - Suivi des patterns du framework de test
9
+ *
10
+ * @module services/review/fixers/test-generator
11
+ */
12
+ import { readFile, readdir, writeFile, mkdir } from 'node:fs/promises';
13
+ import { join, relative, dirname, basename } from 'node:path';
14
+ import { existsSync } from 'node:fs';
15
+ import { DockerManager } from '../../docker/docker-manager.js';
16
+ import { createLogger } from '../../../shared/utils/logger.js';
17
+ /**
18
+ * Extensions de fichiers source
19
+ */
20
+ const SOURCE_EXTENSIONS = ['.ts', '.tsx', '.js', '.jsx'];
21
+ /**
22
+ * Extensions de fichiers de test
23
+ */
24
+ const TEST_EXTENSIONS = ['.test.ts', '.test.tsx', '.spec.ts', '.spec.tsx', '.test.js', '.test.jsx'];
25
+ /**
26
+ * Configuration de génération par framework
27
+ */
28
+ const FRAMEWORK_TEMPLATES = {
29
+ vitest: {
30
+ import: "import { describe, it, expect } from 'vitest'",
31
+ testBlock: 'describe',
32
+ testCase: 'it',
33
+ assertion: 'expect',
34
+ },
35
+ jest: {
36
+ import: "import { describe, test, expect } from '@jest/globals'",
37
+ testBlock: 'describe',
38
+ testCase: 'test',
39
+ assertion: 'expect',
40
+ },
41
+ mocha: {
42
+ import: "import { describe, it } from 'mocha'",
43
+ testBlock: 'describe',
44
+ testCase: 'it',
45
+ assertion: 'expect',
46
+ },
47
+ };
48
+ /**
49
+ * Générateur de tests
50
+ */
51
+ export class TestGenerator {
52
+ docker;
53
+ logger;
54
+ projectPath;
55
+ testFramework = 'vitest';
56
+ constructor(docker) {
57
+ this.docker = docker ?? new DockerManager();
58
+ this.logger = createLogger('TestGenerator');
59
+ this.projectPath = '';
60
+ }
61
+ /**
62
+ * Génère des tests pour un projet
63
+ *
64
+ * @param projectPath - Chemin du projet
65
+ * @param options - Options de génération
66
+ * @returns Résultat de la génération
67
+ */
68
+ async generateTests(projectPath, options = {}) {
69
+ this.projectPath = projectPath;
70
+ this.testFramework = options.framework ?? this.testFramework;
71
+ this.logger.info(`Starting test generation for: ${projectPath}`);
72
+ const generated = [];
73
+ const failed = [];
74
+ // Détecter les fichiers source sans tests
75
+ const sourceFiles = await this.findFilesWithoutTests(projectPath, options.targetFiles);
76
+ this.logger.info(`Found ${sourceFiles.length} files without tests`);
77
+ // Générer des tests pour chaque fichier
78
+ for (const sourceFile of sourceFiles) {
79
+ try {
80
+ const testContent = await this.generateTestForFile(sourceFile, projectPath);
81
+ if (testContent) {
82
+ const testPath = this.getTestPath(sourceFile, projectPath);
83
+ if (!options.dryRun) {
84
+ await this.writeTestFile(testPath, testContent);
85
+ }
86
+ generated.push({
87
+ filePath: testPath,
88
+ content: testContent,
89
+ type: 'unit',
90
+ estimatedCoverage: 50, // Estimation conservatrice
91
+ });
92
+ }
93
+ else {
94
+ failed.push({
95
+ filePath: sourceFile,
96
+ reason: 'Could not generate test content',
97
+ });
98
+ }
99
+ }
100
+ catch (error) {
101
+ failed.push({
102
+ filePath: sourceFile,
103
+ reason: error instanceof Error ? error.message : String(error),
104
+ });
105
+ }
106
+ }
107
+ this.logger.info(`Generated ${generated.length} tests, ${failed.length} failed`);
108
+ return {
109
+ generated,
110
+ failed,
111
+ totalCoverage: options.coverage,
112
+ };
113
+ }
114
+ /**
115
+ * Génère des suggestions de tests pour une issue spécifique
116
+ *
117
+ * @param issue - Issue de couverture de test
118
+ * @returns Suggestions de tests
119
+ */
120
+ generateTestSuggestions(issue) {
121
+ const suggestions = [];
122
+ const filePath = issue.location.file;
123
+ const fileName = basename(filePath, '.ts').replace(/\.(test|spec)$/, '');
124
+ suggestions.push(`Create test file: ${fileName}.test.ts`);
125
+ suggestions.push('Test the main exported functions');
126
+ suggestions.push('Test edge cases and error conditions');
127
+ suggestions.push('Mock external dependencies');
128
+ if (issue.category === 'testing') {
129
+ suggestions.push('Add test for authentication/authorization');
130
+ suggestions.push('Test with valid and invalid inputs');
131
+ }
132
+ return suggestions;
133
+ }
134
+ /**
135
+ * Génère un stub de test pour un fichier source
136
+ */
137
+ async generateTestForFile(sourceFile, projectPath) {
138
+ const content = await readFile(sourceFile, 'utf-8');
139
+ const relativePath = relative(projectPath, sourceFile);
140
+ const fileName = basename(sourceFile);
141
+ const nameWithoutExt = fileName.replace(/\.(ts|tsx|js|jsx)$/, '');
142
+ // Extraire les fonctions et classes
143
+ const functions = await this.extractFunctions(content);
144
+ const classes = await this.extractClasses(content);
145
+ // Vérifier s'il y a quelque chose à tester
146
+ if (functions.length === 0 && classes.length === 0) {
147
+ // Fichier vide ou uniquement des exports
148
+ return null;
149
+ }
150
+ // Générer le contenu du test
151
+ const template = FRAMEWORK_TEMPLATES[this.testFramework];
152
+ const imports = this.generateImports(relativePath, functions, classes);
153
+ const testCases = this.generateTestCases(functions, classes, nameWithoutExt);
154
+ return `/**
155
+ * Tests for ${nameWithoutExt}
156
+ *
157
+ * Auto-generated test file
158
+ * TODO: Review and complete the tests
159
+ */
160
+
161
+ ${imports}
162
+
163
+ describe('${nameWithoutExt}', () => {
164
+ ${testCases}
165
+ });
166
+ `;
167
+ }
168
+ /**
169
+ * Génère les imports nécessaires pour le fichier de test
170
+ */
171
+ generateImports(relativePath, functions, classes) {
172
+ const imports = [];
173
+ // Import du framework de test
174
+ imports.push(FRAMEWORK_TEMPLATES[this.testFramework].import);
175
+ // Import du fichier à tester (avec / si pas d'extension .js implicite)
176
+ const importPath = relativePath.replace(/\.(ts|tsx|js|jsx)$/, '');
177
+ const isRelative = !importPath.startsWith('.');
178
+ const finalImportPath = isRelative ? `./${importPath}` : importPath;
179
+ // Détecter si c'est un default export ou named export
180
+ const hasDefaultExport = functions.some((f) => f.defaultExport) || classes.some((c) => c.defaultExport);
181
+ const hasNamedExports = functions.some((f) => !f.defaultExport && f.exported) || classes.some((c) => !c.defaultExport && c.exported);
182
+ if (hasDefaultExport && hasNamedExports) {
183
+ imports.push(`import ${basename(finalImportPath)}, * as ${basename(finalImportPath)}NS from '${finalImportPath}'`);
184
+ }
185
+ else if (hasDefaultExport) {
186
+ imports.push(`import ${basename(finalImportPath)} from '${finalImportPath}'`);
187
+ }
188
+ else if (hasNamedExports) {
189
+ // Générer les named exports
190
+ const names = [
191
+ ...functions.filter((f) => !f.defaultExport && f.exported).map((f) => f.name),
192
+ ...classes.filter((c) => !c.defaultExport && c.exported).map((c) => c.name),
193
+ ];
194
+ imports.push(`import { ${names.join(', ')} } from '${finalImportPath}'`);
195
+ }
196
+ else {
197
+ // Importer tout par défaut
198
+ imports.push(`import * as ${basename(finalImportPath).replace(/[^a-zA-Z0-9]/g, '')} from '${finalImportPath}'`);
199
+ }
200
+ return imports.join('\n');
201
+ }
202
+ /**
203
+ * Génère les cas de test
204
+ */
205
+ generateTestCases(functions, classes, fileName) {
206
+ const cases = [];
207
+ // Tests pour les fonctions
208
+ for (const func of functions) {
209
+ if (func.exported || func.defaultExport) {
210
+ cases.push(this.generateFunctionTest(func));
211
+ }
212
+ }
213
+ // Tests pour les classes
214
+ for (const cls of classes) {
215
+ if (cls.exported || cls.defaultExport) {
216
+ cases.push(this.generateClassTest(cls));
217
+ }
218
+ }
219
+ // Si aucun cas spécifique, ajouter un placeholder
220
+ if (cases.length === 0) {
221
+ cases.push(` // TODO: Add tests for ${fileName}`);
222
+ cases.push(` it('should be defined', () => {`);
223
+ cases.push(` expect(true).toBe(true);`);
224
+ cases.push(` });`);
225
+ }
226
+ return cases.join('\n\n');
227
+ }
228
+ /**
229
+ * Génère un test pour une fonction
230
+ */
231
+ generateFunctionTest(func) {
232
+ const template = FRAMEWORK_TEMPLATES[this.testFramework];
233
+ const indent = ' ';
234
+ let test = `${indent}it('should ${func.name}', () => {\n`;
235
+ test += `${indent} // TODO: Implement test\n`;
236
+ test += `${indent} const result = ${func.name}();\n`;
237
+ test += `${indent} ${template.assertion}(result).toBeDefined();\n`;
238
+ test += `${indent}});\n`;
239
+ if (func.hasParams) {
240
+ test += `\n${indent}it('should handle edge cases for ${func.name}', () => {\n`;
241
+ test += `${indent} // TODO: Test with null, undefined, empty values\n`;
242
+ test += `${indent}});\n`;
243
+ }
244
+ return test;
245
+ }
246
+ /**
247
+ * Génère un test pour une classe
248
+ */
249
+ generateClassTest(cls) {
250
+ const template = FRAMEWORK_TEMPLATES[this.testFramework];
251
+ const indent = ' ';
252
+ let test = `${indent}describe('${cls.name}', () => {\n`;
253
+ test += `${indent} let instance: ${cls.name};\n\n`;
254
+ test += `${indent} beforeEach(() => {\n`;
255
+ test += `${indent} instance = new ${cls.name}();\n`;
256
+ test += `${indent} });\n\n`;
257
+ // Tests pour chaque méthode
258
+ for (const method of cls.methods) {
259
+ test += `${indent} it('should have ${method.name} method', () => {\n`;
260
+ test += `${indent} ${template.assertion}(instance.${method.name}).toBeDefined();\n`;
261
+ test += `${indent} });\n\n`;
262
+ }
263
+ test += `${indent}});\n`;
264
+ return test;
265
+ }
266
+ /**
267
+ * Extrait les fonctions d'un fichier
268
+ */
269
+ async extractFunctions(content) {
270
+ const functions = [];
271
+ const lines = content.split('\n');
272
+ // Patterns pour détecter les fonctions
273
+ const patterns = [
274
+ // function name() {}
275
+ /(?:export\s+(?:default\s+)?)?function\s+(\w+)\s*\(/g,
276
+ // const name = () => {}
277
+ /(?:export\s+(?:const|let|var)\s+(?:default\s+)?)(\w+)\s*=\s*(?:async\s+)?\([^)]*\)\s*=>/g,
278
+ // const name = async function() {}
279
+ /(?:export\s+(?:const|let|var)\s+(?:default\s+)?)(\w+)\s*=\s*async\s+function\s*\(/g,
280
+ ];
281
+ for (let i = 0; i < lines.length; i++) {
282
+ const line = lines[i] ?? '';
283
+ for (const pattern of patterns) {
284
+ const match = pattern.exec(line);
285
+ if (match) {
286
+ functions.push({
287
+ name: match[1],
288
+ type: line.includes('=>') ? 'arrow-function' : 'function',
289
+ isAsync: line.includes('async'),
290
+ hasParams: /\([^)]*\)/.test(line),
291
+ line: i + 1,
292
+ exported: line.includes('export'),
293
+ defaultExport: line.includes('default'),
294
+ });
295
+ }
296
+ }
297
+ }
298
+ return functions;
299
+ }
300
+ /**
301
+ * Extrait les classes d'un fichier
302
+ */
303
+ async extractClasses(content) {
304
+ const classes = [];
305
+ const lines = content.split('\n');
306
+ // Pattern pour détecter les classes
307
+ const classPattern = /(?:export\s+(?:default\s+)?)?class\s+(\w+)/g;
308
+ for (let i = 0; i < lines.length; i++) {
309
+ const line = lines[i] ?? '';
310
+ classPattern.lastIndex = 0;
311
+ const match = classPattern.exec(line);
312
+ if (match) {
313
+ // Extraire les méthodes de la classe
314
+ const methods = this.extractClassMethods(lines, i + 1);
315
+ classes.push({
316
+ name: match[1],
317
+ methods,
318
+ line: i + 1,
319
+ exported: line.includes('export'),
320
+ defaultExport: line.includes('default'),
321
+ });
322
+ }
323
+ }
324
+ return classes;
325
+ }
326
+ /**
327
+ * Extrait les méthodes d'une classe
328
+ */
329
+ extractClassMethods(lines, startLine) {
330
+ const methods = [];
331
+ let indentLevel = 0;
332
+ // Trouver le niveau d'indentation de la classe
333
+ for (let i = startLine; i < lines.length; i++) {
334
+ const line = lines[i];
335
+ if (!line) {
336
+ // Fin de classe
337
+ if (indentLevel === 0)
338
+ break;
339
+ continue;
340
+ }
341
+ // Détection du niveau d'indentation
342
+ if (/^\s*\}/.test(line)) {
343
+ if (indentLevel === 0)
344
+ break;
345
+ indentLevel--;
346
+ continue;
347
+ }
348
+ // Détecter les méthodes
349
+ const methodMatch = line.match(/(\w+)\s*\(|^\s+(?:public|private|protected)?\s*(?:async\s+)?(\w+)\s*\(/);
350
+ if (methodMatch) {
351
+ const methodName = methodMatch[1] || methodMatch[2];
352
+ if (methodName && !['constructor', 'get', 'set'].includes(methodName)) {
353
+ methods.push({
354
+ name: methodName,
355
+ type: 'method',
356
+ isAsync: line.includes('async'),
357
+ hasParams: /\([^)]*\)/.test(line),
358
+ line: i + 1,
359
+ exported: true,
360
+ defaultExport: false,
361
+ });
362
+ }
363
+ }
364
+ }
365
+ return methods;
366
+ }
367
+ /**
368
+ * Trouve les fichiers source sans tests
369
+ */
370
+ async findFilesWithoutTests(projectPath, targetFiles) {
371
+ const sourceFiles = [];
372
+ if (targetFiles) {
373
+ return targetFiles.filter((f) => !this.hasTestFile(f, projectPath));
374
+ }
375
+ const sourceExtensions = ['.ts', '.tsx', '.js', '.jsx'];
376
+ const excludeDirs = ['node_modules', '.git', 'dist', 'build', 'coverage', '.next', '__tests__'];
377
+ const traverse = async (dir) => {
378
+ try {
379
+ const entries = await readdir(dir, { withFileTypes: true });
380
+ for (const entry of entries) {
381
+ const fullPath = join(dir, entry.name);
382
+ if (entry.isDirectory()) {
383
+ if (!excludeDirs.includes(entry.name) && !entry.name.startsWith('.')) {
384
+ await traverse(fullPath);
385
+ }
386
+ }
387
+ else if (entry.isFile()) {
388
+ const ext = `.${entry.name.split('.').pop()}`;
389
+ if (sourceExtensions.includes(ext) && !entry.name.includes('.test.') && !entry.name.includes('.spec.')) {
390
+ if (!this.hasTestFile(fullPath, projectPath)) {
391
+ sourceFiles.push(fullPath);
392
+ }
393
+ }
394
+ }
395
+ }
396
+ }
397
+ catch {
398
+ // Ignorer les erreurs
399
+ }
400
+ };
401
+ await traverse(projectPath);
402
+ return sourceFiles;
403
+ }
404
+ /**
405
+ * Vérifie si un fichier a un fichier de test correspondant
406
+ */
407
+ hasTestFile(sourceFile, projectPath) {
408
+ const relativePath = relative(projectPath, sourceFile);
409
+ const baseName = relativePath.replace(/\.(ts|tsx|js|jsx)$/, '');
410
+ for (const testExt of TEST_EXTENSIONS) {
411
+ const testPath = join(projectPath, `${baseName}${testExt}`);
412
+ if (existsSync(testPath)) {
413
+ return true;
414
+ }
415
+ }
416
+ return false;
417
+ }
418
+ /**
419
+ * Obtient le chemin du fichier de test
420
+ */
421
+ getTestPath(sourceFile, projectPath) {
422
+ const relativePath = relative(projectPath, sourceFile);
423
+ const baseName = relativePath.replace(/\.(ts|tsx|js|jsx)$/, '');
424
+ // Préférer .test.ts pour TypeScript, .test.js pour JavaScript
425
+ const ext = sourceFile.endsWith('.ts') || sourceFile.endsWith('.tsx') ? '.test.ts' : '.test.js';
426
+ return join(projectPath, `${baseName}${ext}`);
427
+ }
428
+ /**
429
+ * Écrit le fichier de test
430
+ */
431
+ async writeTestFile(testPath, content) {
432
+ const dir = dirname(testPath);
433
+ try {
434
+ await mkdir(dir, { recursive: true });
435
+ await writeFile(testPath, content, 'utf-8');
436
+ this.logger.debug(`Created test file: ${testPath}`);
437
+ }
438
+ catch (error) {
439
+ this.logger.error(`Failed to write test file: ${testPath}`, error);
440
+ throw error;
441
+ }
442
+ }
443
+ /**
444
+ * Exécute les tests générés
445
+ */
446
+ async runTests(projectPath) {
447
+ const command = 'npm test -- --run --reporter=json 2>&1 || true';
448
+ const result = await this.docker.exec(command, {
449
+ workingDir: projectPath,
450
+ timeout: 60000,
451
+ });
452
+ return {
453
+ success: result.exitCode === 0,
454
+ output: result.stdout + result.stderr,
455
+ };
456
+ }
457
+ }
458
+ //# sourceMappingURL=test-generator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-generator.js","sourceRoot":"","sources":["../../../../src/services/review/fixers/test-generator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Review Service
3
+ *
4
+ * Code review and analysis service for Daemon.
5
+ * Provides static analysis, security scanning, and code quality checks.
6
+ *
7
+ * @module services/review
8
+ */
9
+ export * from './review.types.js';
10
+ export * from './review.service.js';
11
+ export * from './analyzers/index.js';
12
+ export * from './fixers/index.js';
13
+ export * from './reporters/index.js';
14
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/services/review/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Review Service
3
+ *
4
+ * Code review and analysis service for Daemon.
5
+ * Provides static analysis, security scanning, and code quality checks.
6
+ *
7
+ * @module services/review
8
+ */
9
+ export * from './review.types.js';
10
+ export * from './review.service.js';
11
+ export * from './analyzers/index.js';
12
+ export * from './fixers/index.js';
13
+ export * from './reporters/index.js';
14
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/services/review/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC"}
@@ -0,0 +1,67 @@
1
+ /**
2
+ * Fix Reporter
3
+ *
4
+ * Génération de rapports de corrections:
5
+ * - Liste des corrections appliquées
6
+ * - Suggestions en attente
7
+ * - Corrections manuelles nécessaires
8
+ * - Estimation de l'effort restant
9
+ *
10
+ * @module services/review/reporters/fix-reporter
11
+ */
12
+ import type { Suggestion, FixResult, ReportOptions } from '../review.types.js';
13
+ /**
14
+ * Reporter de corrections
15
+ */
16
+ export declare class FixReporter {
17
+ private readonly logger;
18
+ constructor();
19
+ /**
20
+ * Génère un rapport de corrections
21
+ *
22
+ * @param result - Résultat des corrections
23
+ * @param projectPath - Chemin du projet
24
+ * @param options - Options de génération
25
+ */
26
+ generateReport(result: FixResult, projectPath: string, options?: ReportOptions & {
27
+ suggestions?: Suggestion[];
28
+ remainingIssues?: number;
29
+ }): Promise<void>;
30
+ /**
31
+ * Génère un rapport JSON
32
+ */
33
+ private generateJsonReport;
34
+ /**
35
+ * Génère un rapport HTML
36
+ */
37
+ private generateHtmlReport;
38
+ /**
39
+ * Génère un rapport Markdown
40
+ */
41
+ private generateMarkdownReport;
42
+ /**
43
+ * Génère un rapport console
44
+ */
45
+ private generateConsoleReport;
46
+ /**
47
+ * Génère le contenu HTML du rapport
48
+ */
49
+ private generateHtmlContent;
50
+ /**
51
+ * Génère le contenu Markdown du rapport
52
+ */
53
+ private generateMarkdownContent;
54
+ /**
55
+ * Estime l'effort total des suggestions
56
+ */
57
+ estimateEffort(suggestions: Suggestion[]): {
58
+ total: number;
59
+ byPriority: Record<string, number>;
60
+ quickWins: Suggestion[];
61
+ };
62
+ /**
63
+ * S'assure que le répertoire existe
64
+ */
65
+ private ensureDirectoryExists;
66
+ }
67
+ //# sourceMappingURL=fix-reporter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fix-reporter.d.ts","sourceRoot":"","sources":["../../../../src/services/review/reporters/fix-reporter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAKH,OAAO,KAAK,EAAO,UAAU,EAAE,SAAS,EAAgB,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAGlG;;GAEG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;;IAMhC;;;;;;OAMG;IACG,cAAc,CAClB,MAAM,EAAE,SAAS,EACjB,WAAW,EAAE,MAAM,EACnB,OAAO,GAAE,aAAa,GAAG;QACvB,WAAW,CAAC,EAAE,UAAU,EAAE,CAAC;QAC3B,eAAe,CAAC,EAAE,MAAM,CAAC;KACO,GACjC,OAAO,CAAC,IAAI,CAAC;IAmBhB;;OAEG;YACW,kBAAkB;IAgChC;;OAEG;YACW,kBAAkB;IAkBhC;;OAEG;YACW,sBAAsB;IAkBpC;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAyG7B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAmL3B;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAqF/B;;OAEG;IACH,cAAc,CAAC,WAAW,EAAE,UAAU,EAAE,GAAG;QACzC,KAAK,EAAE,MAAM,CAAC;QACd,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACnC,SAAS,EAAE,UAAU,EAAE,CAAC;KACzB;IAeD;;OAEG;YACW,qBAAqB;CAQpC"}