@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,436 @@
1
+ /**
2
+ * Code Optimizer
3
+ *
4
+ * Applies safe code optimizations including:
5
+ * - Extract constants
6
+ * - Simplify conditions
7
+ * - Reduce nesting
8
+ * - Combine similar functions
9
+ * - Apply safe refactors
10
+ */
11
+ import * as crypto from 'node:crypto';
12
+ import * as fs from 'node:fs/promises';
13
+ import * as path from 'node:path';
14
+ import { createLogger } from '../../../shared/utils/logger.js';
15
+ /**
16
+ * Code Optimizer Service
17
+ */
18
+ export class CodeOptimizer {
19
+ logger;
20
+ config;
21
+ constructor(config = {}) {
22
+ this.logger = createLogger('CodeOptimizer');
23
+ this.config = {
24
+ createBackup: true,
25
+ backupDir: '.daemon/backup',
26
+ maxFileSize: 1024 * 1024, // 1MB
27
+ dryRun: false,
28
+ ...config,
29
+ };
30
+ }
31
+ /**
32
+ * Apply safe code optimizations to a file
33
+ */
34
+ async optimizeFile(filePath, content) {
35
+ const appliedOptimizations = [];
36
+ const errors = [];
37
+ let currentContent = content;
38
+ // Apply each optimization pass
39
+ const passes = [
40
+ this.extractConstants.bind(this),
41
+ this.simplifyConditions.bind(this),
42
+ this.reduceNesting.bind(this),
43
+ this.removeDeadCode.bind(this),
44
+ this.removeConsoleLogs.bind(this),
45
+ this.combineAdjacentDeclarations.bind(this),
46
+ ];
47
+ for (const pass of passes) {
48
+ try {
49
+ const result = await pass(filePath, currentContent);
50
+ if (result) {
51
+ currentContent = result.fixedCode;
52
+ appliedOptimizations.push({
53
+ id: this.generateOptId(),
54
+ type: 'refactoring',
55
+ description: result.description,
56
+ modifiedFiles: [path.relative(process.cwd(), filePath)],
57
+ originalCode: result.originalCode,
58
+ fixedCode: result.fixedCode,
59
+ location: result.location,
60
+ });
61
+ }
62
+ }
63
+ catch (error) {
64
+ errors.push({
65
+ target: filePath,
66
+ message: error instanceof Error ? error.message : String(error),
67
+ fatal: false,
68
+ });
69
+ }
70
+ }
71
+ return {
72
+ optimizedContent: currentContent,
73
+ appliedOptimizations,
74
+ errors,
75
+ };
76
+ }
77
+ /**
78
+ * Extract magic numbers to constants
79
+ */
80
+ async extractConstants(filePath, content) {
81
+ const lines = content.split('\n');
82
+ const constants = new Map();
83
+ // Find magic numbers
84
+ for (let i = 0; i < lines.length; i++) {
85
+ const line = lines[i];
86
+ const matches = line.match(/(?<![\w.])(\d{3,}|0x[0-9A-Fa-f]+)(?![\w.])/g);
87
+ if (matches) {
88
+ for (const num of matches) {
89
+ const key = `CONST_${num.slice(0, 6)}`;
90
+ if (!constants.has(key)) {
91
+ constants.set(key, { value: num, names: [] });
92
+ }
93
+ constants.get(key).names.push(`line_${i + 1}`);
94
+ }
95
+ }
96
+ }
97
+ if (constants.size === 0) {
98
+ return null;
99
+ }
100
+ // Generate constant declarations
101
+ const constantDecls = [];
102
+ const replacements = [];
103
+ for (const [name, { value }] of constants) {
104
+ const constName = this.suggestConstantName(value);
105
+ constantDecls.push(`const ${constName} = ${value};`);
106
+ }
107
+ // Apply replacements
108
+ const optimizedLines = [...lines];
109
+ // Insert constants at the top of the file (after imports)
110
+ let insertIndex = 0;
111
+ for (let i = 0; i < lines.length; i++) {
112
+ if (lines[i].trim().startsWith('import ') || lines[i].trim().startsWith('require(')) {
113
+ insertIndex = i + 1;
114
+ }
115
+ else if (insertIndex > 0 && !lines[i].trim().startsWith('import ')) {
116
+ break;
117
+ }
118
+ }
119
+ for (const decl of constantDecls) {
120
+ optimizedLines.splice(insertIndex, 0, decl);
121
+ insertIndex++;
122
+ }
123
+ return {
124
+ success: true,
125
+ originalCode: lines.join('\n'),
126
+ fixedCode: optimizedLines.join('\n'),
127
+ location: { filePath, line: 1 },
128
+ description: `Extracted ${constants.size} magic numbers to constants`,
129
+ };
130
+ }
131
+ /**
132
+ * Simplify complex conditions using De Morgan's laws and early returns
133
+ */
134
+ async simplifyConditions(filePath, content) {
135
+ let modified = false;
136
+ let optimized = content;
137
+ // Apply simplification patterns
138
+ const simplifications = [
139
+ // Double negation
140
+ { pattern: /!!(\s*\w+)/g, replacement: 'Boolean($1)', description: 'Replace !! with Boolean()' },
141
+ // !! in conditions can be removed
142
+ { pattern: /if\s*\(\s*!!\s*/g, replacement: 'if (', description: 'Remove unnecessary !!' },
143
+ // if (!x) return; else ... → if (x) { ... }
144
+ {
145
+ pattern: /if\s*\(\s*!\s*(\w+)\s*\)\s*{\s*return\s*[^;]*;}\s*else\s*{/gs,
146
+ replacement: 'if ($1) {',
147
+ description: 'Simplify if-not-return-else to if',
148
+ },
149
+ // true && x → x
150
+ { pattern: /true\s*&&\s*/g, replacement: '', description: 'Remove redundant true &&' },
151
+ // false || x → x
152
+ { pattern: /false\s*\|\|\s*/g, replacement: '', description: 'Remove redundant false ||' },
153
+ // x || true → true
154
+ { pattern: /\w+\s*\|\|\s*true/g, replacement: 'true', description: 'Simplify x || true to true' },
155
+ // x && false → false
156
+ { pattern: /\w+\s*&&\s*false/g, replacement: 'false', description: 'Simplify x && false to false' },
157
+ ];
158
+ for (const { pattern, replacement, description } of simplifications) {
159
+ const before = optimized;
160
+ optimized = optimized.replace(pattern, replacement);
161
+ if (before !== optimized) {
162
+ modified = true;
163
+ }
164
+ }
165
+ if (!modified) {
166
+ return null;
167
+ }
168
+ return {
169
+ success: true,
170
+ originalCode: content,
171
+ fixedCode: optimized,
172
+ location: { filePath, line: 1 },
173
+ description: 'Simplified boolean expressions and conditions',
174
+ };
175
+ }
176
+ /**
177
+ * Reduce nesting using early returns and guard clauses
178
+ */
179
+ async reduceNesting(filePath, content) {
180
+ const lines = content.split('\n');
181
+ const optimizations = [];
182
+ for (let i = 0; i < lines.length; i++) {
183
+ const line = lines[i];
184
+ // Look for patterns like: if (!condition) { return; } // rest of code
185
+ // Can be converted to: if (condition) { // rest of code }
186
+ const nestedIfMatch = line.match(/^(\s*)if\s*\(\s*!\s*(\w+)\s*\)\s*{/);
187
+ if (nestedIfMatch) {
188
+ const indent = nestedIfMatch[1];
189
+ const condition = nestedIfMatch[2];
190
+ const nextLine = lines[i + 1];
191
+ if (nextLine && nextLine.trim().startsWith('return')) {
192
+ // Found early return pattern, check if there's an else block
193
+ const closingBraceIndex = this.findClosingBrace(lines, i + 1);
194
+ if (closingBraceIndex > 0) {
195
+ const afterClosing = lines[closingBraceIndex + 1];
196
+ if (afterClosing && afterClosing.trim().startsWith('else')) {
197
+ // Can invert the condition
198
+ optimizations.push(`Convert early return with else to positive condition at line ${i + 1}`);
199
+ }
200
+ }
201
+ }
202
+ }
203
+ }
204
+ if (optimizations.length === 0) {
205
+ return null;
206
+ }
207
+ // Apply the transformations (simplified version)
208
+ let optimized = lines.join('\n');
209
+ // Pattern: if (!x) { return; } else { ... }
210
+ // → if (x) { ... }
211
+ optimized = optimized.replace(/if\s*\(\s*!\s*(\w+)\s*\)\s*{\s*return\s*[^;]*;}\s*else\s*{/gs, 'if ($1) {');
212
+ return {
213
+ success: true,
214
+ originalCode: content,
215
+ fixedCode: optimized,
216
+ location: { filePath, line: 1 },
217
+ description: `Reduced nesting in ${optimizations.length} locations using guard clauses`,
218
+ };
219
+ }
220
+ /**
221
+ * Remove unreachable dead code
222
+ */
223
+ async removeDeadCode(filePath, content) {
224
+ const lines = content.split('\n');
225
+ const linesToRemove = [];
226
+ for (let i = 0; i < lines.length; i++) {
227
+ const line = lines[i].trim();
228
+ // Look for return statements followed by code
229
+ if (line.startsWith('return ') || line === 'return;') {
230
+ // Check if next non-empty line is not a closing brace
231
+ let j = i + 1;
232
+ while (j < lines.length && lines[j].trim() === '') {
233
+ j++;
234
+ }
235
+ if (j < lines.length && !lines[j].trim().startsWith('}') && !lines[j].trim().startsWith('return')) {
236
+ // Potential dead code - mark it
237
+ linesToRemove.push(j);
238
+ }
239
+ }
240
+ // Look for constant conditions
241
+ if (line.startsWith('if (true)') || line.startsWith('if (false)')) {
242
+ linesToRemove.push(i); // Mark for review
243
+ }
244
+ }
245
+ if (linesToRemove.length === 0) {
246
+ return null;
247
+ }
248
+ // Create optimized content by removing dead lines
249
+ const optimizedLines = lines.filter((_, idx) => !linesToRemove.includes(idx));
250
+ return {
251
+ success: true,
252
+ originalCode: content,
253
+ fixedCode: optimizedLines.join('\n'),
254
+ location: { filePath, line: linesToRemove[0] + 1 },
255
+ description: `Removed ${linesToRemove.length} lines of dead code`,
256
+ };
257
+ }
258
+ /**
259
+ * Remove console.log statements (except in development)
260
+ */
261
+ async removeConsoleLogs(filePath, content) {
262
+ const lines = content.split('\n');
263
+ const linesToRemove = [];
264
+ // Check if this is a test file (keep logs in tests)
265
+ const isTestFile = filePath.includes('.test.') || filePath.includes('.spec.') || filePath.includes('__tests__');
266
+ if (isTestFile) {
267
+ return null;
268
+ }
269
+ for (let i = 0; i < lines.length; i++) {
270
+ const line = lines[i];
271
+ // Find console.log, console.error, console.warn statements
272
+ const consoleMatch = line.match(/console\.(log|error|warn|info|debug)\s*\(/);
273
+ if (consoleMatch && !line.trim().startsWith('//')) {
274
+ // Check if it's not commented out
275
+ linesToRemove.push(i);
276
+ }
277
+ }
278
+ if (linesToRemove.length === 0) {
279
+ return null;
280
+ }
281
+ // Remove console statements
282
+ const optimizedLines = lines.filter((_, idx) => !linesToRemove.includes(idx));
283
+ return {
284
+ success: true,
285
+ originalCode: content,
286
+ fixedCode: optimizedLines.join('\n'),
287
+ location: { filePath, line: linesToRemove[0] + 1 },
288
+ description: `Removed ${linesToRemove.length} console statements`,
289
+ };
290
+ }
291
+ /**
292
+ * Combine adjacent variable declarations
293
+ */
294
+ async combineAdjacentDeclarations(filePath, content) {
295
+ const lines = content.split('\n');
296
+ const combinedLines = [];
297
+ let i = 0;
298
+ while (i < lines.length) {
299
+ const line = lines[i];
300
+ const constMatch = line.match(/^(\s*)const\s+(\w+)\s*=/);
301
+ const letMatch = line.match(/^(\s*)let\s+(\w+)\s*=/);
302
+ const varMatch = line.match(/^(\s*)var\s+(\w+)\s*=/);
303
+ const match = constMatch || letMatch || varMatch;
304
+ if (match) {
305
+ const indent = match[1];
306
+ const keyword = constMatch ? 'const' : letMatch ? 'let' : 'var';
307
+ const declarations = [line.trim()];
308
+ // Look for adjacent declarations with same keyword
309
+ let j = i + 1;
310
+ while (j < lines.length) {
311
+ const nextLine = lines[j];
312
+ const nextMatch = nextLine.match(/^\s*const\s+(\w+)\s*=/);
313
+ const nextLetMatch = nextLine.match(/^\s*let\s+(\w+)\s*=/);
314
+ const nextVarMatch = nextLine.match(/^\s*var\s+(\w+)\s*=/);
315
+ const nextKeywordMatch = nextMatch || nextLetMatch || nextVarMatch;
316
+ if (nextKeywordMatch && nextLine.trim().startsWith(keyword)) {
317
+ declarations.push(nextLine.trim());
318
+ j++;
319
+ }
320
+ else {
321
+ break;
322
+ }
323
+ }
324
+ // Combine if we have multiple declarations
325
+ if (declarations.length > 1) {
326
+ const combined = declarations.map(d => d.replace(/^\s*const\s+|\s*const\s+/g, '')).join(', ');
327
+ combinedLines.push(`${indent}${keyword} ${combined};`);
328
+ i = j;
329
+ continue;
330
+ }
331
+ }
332
+ combinedLines.push(line);
333
+ i++;
334
+ }
335
+ if (combinedLines.length === lines.length) {
336
+ return null;
337
+ }
338
+ return {
339
+ success: true,
340
+ originalCode: content,
341
+ fixedCode: combinedLines.join('\n'),
342
+ location: { filePath, line: 1 },
343
+ description: 'Combined adjacent variable declarations',
344
+ };
345
+ }
346
+ /**
347
+ * Apply fixes to a file
348
+ */
349
+ async applyFixes(filePath, fixes) {
350
+ const errors = [];
351
+ try {
352
+ // Read current content
353
+ const content = await fs.readFile(filePath, 'utf-8');
354
+ // Create backup if configured
355
+ if (this.config.createBackup && !this.config.dryRun) {
356
+ await this.createBackup(filePath, content);
357
+ }
358
+ // Apply all fixes (simplified - in real implementation, would track which fixes apply)
359
+ let modified = false;
360
+ for (const fix of fixes) {
361
+ if (fix.modifiedFiles.some(f => f.endsWith(filePath))) {
362
+ modified = true;
363
+ break;
364
+ }
365
+ }
366
+ if (modified && !this.config.dryRun) {
367
+ const { optimizedContent } = await this.optimizeFile(filePath, content);
368
+ await fs.writeFile(filePath, optimizedContent, 'utf-8');
369
+ }
370
+ return { success: true, errors };
371
+ }
372
+ catch (error) {
373
+ errors.push({
374
+ target: filePath,
375
+ message: error instanceof Error ? error.message : String(error),
376
+ fatal: true,
377
+ });
378
+ return { success: false, errors };
379
+ }
380
+ }
381
+ /**
382
+ * Create backup of a file
383
+ */
384
+ async createBackup(filePath, content) {
385
+ const backupDir = path.resolve(this.config.backupDir);
386
+ const backupPath = path.join(backupDir, `${path.basename(filePath)}.${Date.now()}.backup`);
387
+ await fs.mkdir(backupDir, { recursive: true });
388
+ await fs.writeFile(backupPath, content, 'utf-8');
389
+ this.logger.debug(`Created backup: ${backupPath}`);
390
+ }
391
+ /**
392
+ * Find closing brace for a given opening brace position
393
+ */
394
+ findClosingBrace(lines, startLine) {
395
+ let depth = 1;
396
+ for (let i = startLine + 1; i < lines.length; i++) {
397
+ const line = lines[i];
398
+ for (const char of line) {
399
+ if (char === '{')
400
+ depth++;
401
+ if (char === '}')
402
+ depth--;
403
+ if (depth === 0) {
404
+ return i;
405
+ }
406
+ }
407
+ }
408
+ return -1;
409
+ }
410
+ /**
411
+ * Suggest a constant name based on value
412
+ */
413
+ suggestConstantName(value) {
414
+ const num = parseInt(value, value.startsWith('0x') ? 16 : 10);
415
+ if (value.startsWith('0x')) {
416
+ return `HEX_${value.toUpperCase()}`;
417
+ }
418
+ if (num >= 1000 && num % 1000 === 0) {
419
+ return `${num}_MILLISECONDS`;
420
+ }
421
+ if (num === 60 || num === 60000) {
422
+ return 'ONE_MINUTE_MS';
423
+ }
424
+ if (num === 1000) {
425
+ return 'ONE_SECOND_MS';
426
+ }
427
+ return `CONST_${value}`;
428
+ }
429
+ /**
430
+ * Generate unique optimization ID
431
+ */
432
+ generateOptId() {
433
+ return `opt-${crypto.randomBytes(4).toString('hex')}`;
434
+ }
435
+ }
436
+ //# sourceMappingURL=code-optimizer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"code-optimizer.js","sourceRoot":"","sources":["../../../../src/services/optimization/optimizers/code-optimizer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Optimizers Barrel Export
3
+ */
4
+ export { CodeOptimizer } from './code-optimizer.js';
5
+ export { PerfOptimizer } from './perf-optimizer.js';
6
+ export { RefactOptimizer } from './refact-optimizer.js';
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/services/optimization/optimizers/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Optimizers Barrel Export
3
+ */
4
+ export { CodeOptimizer } from './code-optimizer.js';
5
+ export { PerfOptimizer } from './perf-optimizer.js';
6
+ export { RefactOptimizer } from './refact-optimizer.js';
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/services/optimization/optimizers/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC"}
@@ -0,0 +1,64 @@
1
+ /**
2
+ * Performance Optimizer
3
+ *
4
+ * Applies performance optimizations including:
5
+ * - Add React.memo where appropriate
6
+ * - Wrap callbacks in useCallback
7
+ * - Memoize expensive calculations
8
+ * - Suggest code splitting points
9
+ * - Recommend lazy loading
10
+ * - Database query optimization suggestions
11
+ */
12
+ import type { AppliedOptimization, OptimizationError } from '../optimization.types.js';
13
+ /**
14
+ * Performance Optimizer Service
15
+ */
16
+ export declare class PerfOptimizer {
17
+ private readonly logger;
18
+ constructor();
19
+ /**
20
+ * Optimize performance issues in a file
21
+ */
22
+ optimizeFile(filePath: string, content: string): Promise<{
23
+ optimizedContent: string;
24
+ appliedOptimizations: AppliedOptimization[];
25
+ suggestions: string[];
26
+ errors: OptimizationError[];
27
+ }>;
28
+ /**
29
+ * Add React.memo to components
30
+ */
31
+ private addReactMemo;
32
+ /**
33
+ * Add useCallback to callback functions
34
+ */
35
+ private addUseCallback;
36
+ /**
37
+ * Add useMemo to expensive calculations
38
+ */
39
+ private addUseMemo;
40
+ /**
41
+ * Add lazy import for code splitting
42
+ */
43
+ private addLazyImport;
44
+ /**
45
+ * Suggest database query optimizations
46
+ */
47
+ suggestQueryOptimizations(content: string): string[];
48
+ /**
49
+ * Check if file is a React component
50
+ */
51
+ private isReactFile;
52
+ /**
53
+ * Generate unique optimization ID
54
+ */
55
+ private generateOptId;
56
+ /**
57
+ * Apply optimizations to a file
58
+ */
59
+ applyOptimizations(filePath: string, optimizations: AppliedOptimization[], dryRun?: boolean): Promise<{
60
+ success: boolean;
61
+ errors: OptimizationError[];
62
+ }>;
63
+ }
64
+ //# sourceMappingURL=perf-optimizer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"perf-optimizer.d.ts","sourceRoot":"","sources":["../../../../src/services/optimization/optimizers/perf-optimizer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAMH,OAAO,KAAK,EACV,mBAAmB,EAEnB,iBAAiB,EAClB,MAAM,0BAA0B,CAAC;AAGlC;;GAEG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;;IAMhC;;OAEG;IACG,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC;QAC7D,gBAAgB,EAAE,MAAM,CAAC;QACzB,oBAAoB,EAAE,mBAAmB,EAAE,CAAC;QAC5C,WAAW,EAAE,MAAM,EAAE,CAAC;QACtB,MAAM,EAAE,iBAAiB,EAAE,CAAC;KAC7B,CAAC;IAkDF;;OAEG;IACH,OAAO,CAAC,YAAY;IAkEpB;;OAEG;IACH,OAAO,CAAC,cAAc;IAoDtB;;OAEG;IACH,OAAO,CAAC,UAAU;IA8ClB;;OAEG;IACH,OAAO,CAAC,aAAa;IAsErB;;OAEG;IACH,yBAAyB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE;IAkCpD;;OAEG;IACH,OAAO,CAAC,WAAW;IAenB;;OAEG;IACH,OAAO,CAAC,aAAa;IAIrB;;OAEG;IACG,kBAAkB,CACtB,QAAQ,EAAE,MAAM,EAChB,aAAa,EAAE,mBAAmB,EAAE,EACpC,MAAM,GAAE,OAAe,GACtB,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,iBAAiB,EAAE,CAAA;KAAE,CAAC;CAsB9D"}