@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,80 @@
1
+ /**
2
+ * Performance Detector
3
+ *
4
+ * Detects performance issues including:
5
+ * - React issues: missing Memo, improper useCallback/useMemo
6
+ * - Backend: N+1 query patterns
7
+ * - Bundle: large chunks, code-splitting opportunities
8
+ * - Images: unoptimized images
9
+ * - API: missing caching, redundant calls
10
+ * - CSS: unused styles, large CSS
11
+ */
12
+ import type { DetectionOptions, PerformanceIssue, PerfCategory, Severity } from '../optimization.types.js';
13
+ /**
14
+ * Performance Detector Service
15
+ */
16
+ export declare class PerfDetector {
17
+ private readonly logger;
18
+ constructor();
19
+ /**
20
+ * Detect performance issues in a single file
21
+ */
22
+ detectInFile(filePath: string, content: string, options?: DetectionOptions): Promise<PerformanceIssue[]>;
23
+ /**
24
+ * Detect performance issues across all files in a directory
25
+ */
26
+ detectInDirectory(dirPath: string, options?: DetectionOptions): Promise<PerformanceIssue[]>;
27
+ /**
28
+ * Get prioritized list of performance issues
29
+ */
30
+ prioritizeIssues(issues: PerformanceIssue[]): PerformanceIssue[];
31
+ /**
32
+ * Get issues by category
33
+ */
34
+ getIssuesByCategory(issues: PerformanceIssue[], category: PerfCategory): PerformanceIssue[];
35
+ /**
36
+ * Get issues by impact level
37
+ */
38
+ getIssuesByImpact(issues: PerformanceIssue[], impact: Severity): PerformanceIssue[];
39
+ /**
40
+ * Calculate total potential improvement
41
+ */
42
+ calculateTotalImprovement(issues: PerformanceIssue[]): {
43
+ estimatedGain: number;
44
+ byCategory: Record<PerfCategory, number>;
45
+ };
46
+ /**
47
+ * Generate statistics summary
48
+ */
49
+ generateSummary(issues: PerformanceIssue[]): {
50
+ total: number;
51
+ byCategory: Record<PerfCategory, number>;
52
+ byImpact: Record<Severity, number>;
53
+ totalEstimatedGain: number;
54
+ };
55
+ /**
56
+ * Find all regex matches in content with their positions
57
+ */
58
+ private findAllMatches;
59
+ /**
60
+ * Find line and column for a position in content
61
+ */
62
+ private findLocation;
63
+ /**
64
+ * Generate unique issue ID
65
+ */
66
+ private generateIssueId;
67
+ /**
68
+ * Check if severity matches minimum requirement
69
+ */
70
+ private isSeverityMatch;
71
+ /**
72
+ * Extract metrics from matched text
73
+ */
74
+ private extractMetrics;
75
+ /**
76
+ * Get relevant files to scan
77
+ */
78
+ private getRelevantFiles;
79
+ }
80
+ //# sourceMappingURL=perf-detector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"perf-detector.d.ts","sourceRoot":"","sources":["../../../../src/services/optimization/detectors/perf-detector.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAKH,OAAO,KAAK,EACV,gBAAgB,EAEhB,gBAAgB,EAChB,YAAY,EACZ,QAAQ,EACT,MAAM,0BAA0B,CAAC;AAuMlC;;GAEG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;;IAMhC;;OAEG;IACG,YAAY,CAChB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,gBAAqB,GAC7B,OAAO,CAAC,gBAAgB,EAAE,CAAC;IA+C9B;;OAEG;IACG,iBAAiB,CACrB,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,gBAAqB,GAC7B,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAoB9B;;OAEG;IACH,gBAAgB,CAAC,MAAM,EAAE,gBAAgB,EAAE,GAAG,gBAAgB,EAAE;IAiBhE;;OAEG;IACH,mBAAmB,CAAC,MAAM,EAAE,gBAAgB,EAAE,EAAE,QAAQ,EAAE,YAAY,GAAG,gBAAgB,EAAE;IAI3F;;OAEG;IACH,iBAAiB,CAAC,MAAM,EAAE,gBAAgB,EAAE,EAAE,MAAM,EAAE,QAAQ,GAAG,gBAAgB,EAAE;IAInF;;OAEG;IACH,yBAAyB,CAAC,MAAM,EAAE,gBAAgB,EAAE,GAAG;QACrD,aAAa,EAAE,MAAM,CAAC;QACtB,UAAU,EAAE,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;KAC1C;IAgBD;;OAEG;IACH,eAAe,CAAC,MAAM,EAAE,gBAAgB,EAAE,GAAG;QAC3C,KAAK,EAAE,MAAM,CAAC;QACd,UAAU,EAAE,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;QACzC,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QACnC,kBAAkB,EAAE,MAAM,CAAC;KAC5B;IAmBD;;OAEG;IACH,OAAO,CAAC,cAAc;IAgBtB;;OAEG;IACH,OAAO,CAAC,YAAY;IAUpB;;OAEG;IACH,OAAO,CAAC,eAAe;IAKvB;;OAEG;IACH,OAAO,CAAC,eAAe;IAKvB;;OAEG;IACH,OAAO,CAAC,cAAc;IA+BtB;;OAEG;YACW,gBAAgB;CAqD/B"}
@@ -0,0 +1,451 @@
1
+ /**
2
+ * Performance Detector
3
+ *
4
+ * Detects performance issues including:
5
+ * - React issues: missing Memo, improper useCallback/useMemo
6
+ * - Backend: N+1 query patterns
7
+ * - Bundle: large chunks, code-splitting opportunities
8
+ * - Images: unoptimized images
9
+ * - API: missing caching, redundant calls
10
+ * - CSS: unused styles, large CSS
11
+ */
12
+ import * as fs from 'node:fs/promises';
13
+ import * as path from 'node:path';
14
+ import { createLogger } from '../../../shared/utils/logger.js';
15
+ /** Performance issue patterns */
16
+ const PERF_PATTERNS = {
17
+ 'react-rendering': [
18
+ {
19
+ pattern: /export\s+(?:const|function)\s+\w+\s*\([^)]*\)\s*{[\s\S]{300,}(?!\s*return\s*React\.memo|memo\()/gs,
20
+ impact: 'medium',
21
+ description: 'Large component without React.memo - may re-render unnecessarily',
22
+ expectedImprovement: '30-50% fewer re-renders when props unchanged',
23
+ estimatedGain: 40,
24
+ },
25
+ {
26
+ pattern: /const\s+\w+\s*=\s*\(\)\s*=>\s*{[\s\S]{100,}}\s*,\s*\[\s*\]\s*\)/gs,
27
+ impact: 'medium',
28
+ description: 'useCallback with empty deps but large function body - may indicate missing deps',
29
+ expectedImprovement: 'Prevent stale closures and infinite loops',
30
+ estimatedGain: 20,
31
+ },
32
+ {
33
+ pattern: /{\s*(\w+(?:\s*\|\s*\w+)*)\.map\s*\([^)]+\)\s*=>\s*<[^>]+on[A-Z]\w+=\s*{\s*\([^)]*\)\s*=>/gs,
34
+ impact: 'high',
35
+ description: 'Inline function in map causes new function references on each render',
36
+ expectedImprovement: 'Eliminate unnecessary child re-renders',
37
+ estimatedGain: 50,
38
+ },
39
+ {
40
+ pattern: /<(\w+(?:\.\w+)*)(?:\s+[^>]*?)?\s*key=\{\s*\w+\s*\+\s*\d+\s*\}/gs,
41
+ impact: 'high',
42
+ description: 'Using index as key prevents efficient reconciliation',
43
+ expectedImprovement: 'Proper diffing and reordering of list items',
44
+ estimatedGain: 60,
45
+ },
46
+ {
47
+ pattern: /useState\s*\(\s*\[\s*\]/s,
48
+ impact: 'low',
49
+ description: 'Array initialized with [] may cause issues if mutated directly',
50
+ expectedImprovement: 'Prevent reference equality issues',
51
+ },
52
+ ],
53
+ 'api-efficiency': [
54
+ {
55
+ pattern: /for\s*(?:await|)?\s*\(\s*const\s+\w+\s+of\s+\w+\s*\)\s*{[\s\S]*?(?:fetch\(|axios|\.get\(|\.post\()/gs,
56
+ impact: 'high',
57
+ description: 'Sequential API calls in loop - could be parallelized',
58
+ expectedImprovement: '70-90% faster with Promise.all()',
59
+ estimatedGain: 80,
60
+ },
61
+ {
62
+ pattern: /await\s+(?:fetch|axios\.|http\.)(?:get|post|put|delete)\([\s\S]{0,500}\)\s*;\s*await\s+(?:fetch|axios\.|http\.)(?:get|post|put|delete)\(/gs,
63
+ impact: 'medium',
64
+ description: 'Sequential independent API calls - could be parallelized',
65
+ expectedImprovement: '40-50% faster with parallel requests',
66
+ estimatedGain: 45,
67
+ },
68
+ {
69
+ pattern: /fetch\s*\([^)]+\)\s*(?!.*(?:cache|Cache-Control))/gs,
70
+ impact: 'medium',
71
+ description: 'Fetch without cache headers may cause redundant requests',
72
+ expectedImprovement: 'Reduce network traffic and improve load times',
73
+ estimatedGain: 30,
74
+ },
75
+ ],
76
+ 'database-queries': [
77
+ {
78
+ pattern: /for\s*(?:await|)?\s*\(\s*const\s+\w+\s+of\s+\w+\s*\)\s*{[\s\S]{0,200}(?:db\.|prisma\.|sequelize\.|mongoose\.| knex\()(?:find|query|select|exec)/gs,
79
+ impact: 'critical',
80
+ description: 'N+1 query pattern - querying database inside loop',
81
+ expectedImprovement: '90-99% reduction in database queries',
82
+ estimatedGain: 95,
83
+ },
84
+ {
85
+ pattern: /findMany\s*\([^)]*\)\s*;\s*(?:for|while)\s*[\s\S]{0,200}findUnique\s*\(/gs,
86
+ impact: 'critical',
87
+ description: 'N+1 query with Prisma - related data fetched in loop',
88
+ expectedImprovement: 'Use include/join for eager loading',
89
+ estimatedGain: 95,
90
+ },
91
+ {
92
+ pattern: /\.find\s*\(\s*{\s*[^}]*}\s*\)\s*\.populate\s*\(/gs,
93
+ impact: 'medium',
94
+ description: 'Multiple populate calls may indicate missing eager load',
95
+ expectedImprovement: 'Single query with multiple populates',
96
+ estimatedGain: 50,
97
+ },
98
+ {
99
+ pattern: /SELECT\s+\*\s+FROM/gis,
100
+ impact: 'medium',
101
+ description: 'SELECT * retrieves all columns - specify only needed columns',
102
+ expectedImprovement: '20-40% less data transferred',
103
+ estimatedGain: 30,
104
+ },
105
+ ],
106
+ 'bundle-size': [
107
+ {
108
+ pattern: /import\s+{[^}]+}\s+from\s+['"](?:lodash|moment|@material-ui|@mui|react-bootstrap)['"]/gs,
109
+ impact: 'high',
110
+ description: 'Full library import - use tree-shakeable imports',
111
+ expectedImprovement: '50-200KB reduction in bundle size',
112
+ estimatedGain: 100,
113
+ },
114
+ {
115
+ pattern: /import\s+\w+\s+from\s+['"](?:lodash|@material-ui|@mui)['"]/gs,
116
+ impact: 'high',
117
+ description: 'Default import prevents tree-shaking',
118
+ expectedImprovement: 'Enable tree-shaking with named imports',
119
+ estimatedGain: 80,
120
+ },
121
+ {
122
+ pattern: /import\s+{[^}]+}\s+from\s+['"]\.\.?\/[^'"]+['"]\s*;(?![\s\S]{0,1000}?lazy|Suspense)/gs,
123
+ impact: 'low',
124
+ description: 'Large component could be code-split with lazy loading',
125
+ expectedImprovement: 'Reduce initial bundle size',
126
+ estimatedGain: 15,
127
+ },
128
+ ],
129
+ 'asset-optimization': [
130
+ {
131
+ pattern: /<(?:img|Image)\s+[^>]*src=\s*['"][^'"]*\.(?:png|jpg|jpeg|gif)['"][^>]*(?!\s*width\s*=|\s*height\s*=)/gs,
132
+ impact: 'medium',
133
+ description: 'Image without width/height causes layout shift',
134
+ expectedImprovement: 'Better CLS score and user experience',
135
+ estimatedGain: 25,
136
+ },
137
+ {
138
+ pattern: /<(?:img|Image)\s+[^>]*src=\s*['"][^'"]*(?!\.webp|\.avif)(?:\.png|\.jpg|\.jpeg)['"]/gs,
139
+ impact: 'low',
140
+ description: 'Could use modern image formats (WebP/AVIF) for better compression',
141
+ expectedImprovement: '20-50% smaller image files',
142
+ estimatedGain: 35,
143
+ },
144
+ {
145
+ pattern: /<(?:img|Image)[^>]*src=\s*['"][^'"]*(?!\?auto=format)[^'"]*['"][^>]*(?!\s*loading=\s*['"]lazy['"])/gs,
146
+ impact: 'low',
147
+ description: 'Below-fold image without lazy loading',
148
+ expectedImprovement: 'Faster initial page load',
149
+ estimatedGain: 20,
150
+ },
151
+ ],
152
+ 'css-optimization': [
153
+ {
154
+ pattern: /style=\s*{[^}]*backgroundColor:\s*[^}'\s]+[^}]*}/gs,
155
+ impact: 'low',
156
+ description: 'Inline styles prevent CSS optimization',
157
+ expectedImprovement: 'Move to CSS class for better caching',
158
+ estimatedGain: 10,
159
+ },
160
+ {
161
+ pattern: /<style[^>]*>[\s\S]{1000,}<\/style>/gs,
162
+ impact: 'medium',
163
+ description: 'Large inline style block - consider CSS modules or external CSS',
164
+ expectedImprovement: 'Better caching and smaller HTML',
165
+ estimatedGain: 20,
166
+ },
167
+ ],
168
+ 'memory-usage': [
169
+ {
170
+ pattern: /useState\s*\(\s*(?:new Array\(|Array\(|\[\s*\.\.\.)/gs,
171
+ impact: 'medium',
172
+ description: 'Large array in state may cause memory issues',
173
+ expectedImprovement: 'Consider pagination or virtualization',
174
+ estimatedGain: 40,
175
+ },
176
+ {
177
+ pattern: /useEffect\s*\(\s*\(\)\s*=>\s*{[\s\S]*?const\s+\w+\s*=\s*new\s+(?:Map|Set|WeakMap|WeakSet)/gs,
178
+ impact: 'low',
179
+ description: 'Creating new Map/Set on every render without cleanup',
180
+ expectedImprovement: 'Use useMemo or move outside component',
181
+ estimatedGain: 15,
182
+ },
183
+ ],
184
+ 'network-requests': [
185
+ {
186
+ pattern: /useEffect\s*\(\s*\(\)\s*=>\s*{[\s\S]{0,500}fetch\([^)]+\)[\s\S]{0,500},\s*\[\s*\]\s*\)/gs,
187
+ impact: 'low',
188
+ description: 'Data fetch on every mount - consider caching',
189
+ expectedImprovement: 'Use React Query or SWR for caching',
190
+ estimatedGain: 50,
191
+ },
192
+ {
193
+ pattern: /<link\s+[^>]*rel=\s*['"]stylesheet['"][^>]*>(?![\s\S]{0,100}?rel=['"]preload['"])/gs,
194
+ impact: 'medium',
195
+ description: 'Stylesheet could be preloaded for faster rendering',
196
+ expectedImprovement: 'Faster initial render',
197
+ estimatedGain: 15,
198
+ },
199
+ ],
200
+ };
201
+ /**
202
+ * Performance Detector Service
203
+ */
204
+ export class PerfDetector {
205
+ logger;
206
+ constructor() {
207
+ this.logger = createLogger('PerfDetector');
208
+ }
209
+ /**
210
+ * Detect performance issues in a single file
211
+ */
212
+ async detectInFile(filePath, content, options = {}) {
213
+ const issues = [];
214
+ const lines = content.split('\n');
215
+ // Filter by categories if specified
216
+ const categoriesToCheck = options.perfCategories?.length
217
+ ? options.perfCategories
218
+ : Object.keys(PERF_PATTERNS);
219
+ for (const category of categoriesToCheck) {
220
+ const patterns = PERF_PATTERNS[category];
221
+ if (!patterns)
222
+ continue;
223
+ for (const { pattern, impact, description, expectedImprovement, estimatedGain } of patterns) {
224
+ const matches = this.findAllMatches(content, pattern);
225
+ for (const match of matches) {
226
+ const location = this.findLocation(content, match.start);
227
+ // Check severity filter
228
+ if (options.minSeverity && !this.isSeverityMatch(impact, options.minSeverity)) {
229
+ continue;
230
+ }
231
+ const issue = {
232
+ id: this.generateIssueId(filePath, category, location.line),
233
+ category,
234
+ impact,
235
+ description,
236
+ location: {
237
+ filePath: path.relative(process.cwd(), filePath),
238
+ line: location.line,
239
+ column: location.column,
240
+ },
241
+ currentMetrics: this.extractMetrics(match.text, category),
242
+ expectedImprovement,
243
+ estimatedGain,
244
+ };
245
+ issues.push(issue);
246
+ }
247
+ }
248
+ }
249
+ return issues;
250
+ }
251
+ /**
252
+ * Detect performance issues across all files in a directory
253
+ */
254
+ async detectInDirectory(dirPath, options = {}) {
255
+ const allIssues = [];
256
+ const files = await this.getRelevantFiles(dirPath, options);
257
+ this.logger.info(`Scanning ${files.length} files for performance issues...`);
258
+ for (const filePath of files) {
259
+ try {
260
+ const content = await fs.readFile(filePath, 'utf-8');
261
+ const issues = await this.detectInFile(filePath, content, options);
262
+ allIssues.push(...issues);
263
+ }
264
+ catch (error) {
265
+ this.logger.warn(`Failed to analyze ${filePath}:`, error);
266
+ }
267
+ }
268
+ this.logger.info(`Found ${allIssues.length} performance issues`);
269
+ return allIssues;
270
+ }
271
+ /**
272
+ * Get prioritized list of performance issues
273
+ */
274
+ prioritizeIssues(issues) {
275
+ const impactWeight = { critical: 4, high: 3, medium: 2, low: 1 };
276
+ return issues.sort((a, b) => {
277
+ // First by estimated gain
278
+ if ((a.estimatedGain || 0) !== (b.estimatedGain || 0)) {
279
+ return (b.estimatedGain || 0) - (a.estimatedGain || 0);
280
+ }
281
+ // Then by impact
282
+ const impactDiff = (impactWeight[b.impact] ?? 0) - (impactWeight[a.impact] ?? 0);
283
+ if (impactDiff !== 0)
284
+ return impactDiff;
285
+ return 0;
286
+ });
287
+ }
288
+ /**
289
+ * Get issues by category
290
+ */
291
+ getIssuesByCategory(issues, category) {
292
+ return issues.filter(issue => issue.category === category);
293
+ }
294
+ /**
295
+ * Get issues by impact level
296
+ */
297
+ getIssuesByImpact(issues, impact) {
298
+ return issues.filter(issue => issue.impact === impact);
299
+ }
300
+ /**
301
+ * Calculate total potential improvement
302
+ */
303
+ calculateTotalImprovement(issues) {
304
+ const byCategory = {};
305
+ let totalGain = 0;
306
+ for (const issue of issues) {
307
+ const gain = issue.estimatedGain || 0;
308
+ totalGain += gain;
309
+ byCategory[issue.category] = (byCategory[issue.category] || 0) + gain;
310
+ }
311
+ return {
312
+ estimatedGain: Math.min(totalGain, 100), // Cap at 100%
313
+ byCategory: byCategory,
314
+ };
315
+ }
316
+ /**
317
+ * Generate statistics summary
318
+ */
319
+ generateSummary(issues) {
320
+ const byCategory = {};
321
+ const byImpact = { critical: 0, high: 0, medium: 0, low: 0 };
322
+ let totalEstimatedGain = 0;
323
+ for (const issue of issues) {
324
+ byCategory[issue.category] = (byCategory[issue.category] || 0) + 1;
325
+ byImpact[issue.impact]++;
326
+ totalEstimatedGain += issue.estimatedGain || 0;
327
+ }
328
+ return {
329
+ total: issues.length,
330
+ byCategory: byCategory,
331
+ byImpact,
332
+ totalEstimatedGain: Math.min(totalEstimatedGain, 100),
333
+ };
334
+ }
335
+ /**
336
+ * Find all regex matches in content with their positions
337
+ */
338
+ findAllMatches(content, pattern) {
339
+ const matches = [];
340
+ const globalPattern = new RegExp(pattern.source, pattern.flags.includes('g') ? pattern.flags : pattern.flags + 'g');
341
+ let match;
342
+ while ((match = globalPattern.exec(content)) !== null) {
343
+ matches.push({
344
+ start: match.index,
345
+ end: match.index + match[0].length,
346
+ text: match[0],
347
+ });
348
+ }
349
+ return matches;
350
+ }
351
+ /**
352
+ * Find line and column for a position in content
353
+ */
354
+ findLocation(content, position) {
355
+ const before = content.substring(0, position);
356
+ const lines = before.split('\n');
357
+ return {
358
+ line: lines.length,
359
+ column: lines[lines.length - 1].length + 1,
360
+ };
361
+ }
362
+ /**
363
+ * Generate unique issue ID
364
+ */
365
+ generateIssueId(filePath, category, line) {
366
+ const hash = Buffer.from(`${filePath}:${category}:${line}`).toString('base64').slice(0, 8);
367
+ return `perf-${category}-${hash}`;
368
+ }
369
+ /**
370
+ * Check if severity matches minimum requirement
371
+ */
372
+ isSeverityMatch(severity, minSeverity) {
373
+ const order = ['high', 'medium', 'low'];
374
+ return order.indexOf(severity) <= order.indexOf(minSeverity);
375
+ }
376
+ /**
377
+ * Extract metrics from matched text
378
+ */
379
+ extractMetrics(text, category) {
380
+ const metrics = [];
381
+ switch (category) {
382
+ case 'bundle-size':
383
+ // Estimate bundle impact
384
+ const sizeMatch = text.match(/(?:lodash|moment|@material-ui|@mui)/);
385
+ if (sizeMatch) {
386
+ metrics.push({ name: 'potential_reduction', value: 100, unit: 'KB' });
387
+ }
388
+ break;
389
+ case 'database-queries':
390
+ // Count potential queries
391
+ const loopMatch = text.match(/for\s*\(/gi);
392
+ if (loopMatch) {
393
+ metrics.push({ name: 'queries_multiplier', value: loopMatch.length, unit: 'x' });
394
+ }
395
+ break;
396
+ case 'api-efficiency':
397
+ const fetchMatch = text.match(/fetch|axios|\.get\(|\.post\(/gi);
398
+ if (fetchMatch) {
399
+ metrics.push({ name: 'sequential_calls', value: fetchMatch.length, unit: 'calls' });
400
+ }
401
+ break;
402
+ }
403
+ return metrics;
404
+ }
405
+ /**
406
+ * Get relevant files to scan
407
+ */
408
+ async getRelevantFiles(dirPath, options) {
409
+ const files = [];
410
+ const extensions = ['.ts', '.tsx', '.js', '.jsx', '.vue', '.svelte', '.css', '.scss', '.html'];
411
+ async function walk(currentPath) {
412
+ try {
413
+ const entries = await fs.readdir(currentPath, { withFileTypes: true });
414
+ for (const entry of entries) {
415
+ const fullPath = path.join(currentPath, entry.name);
416
+ // Skip node_modules and common exclusions
417
+ if (entry.name === 'node_modules' ||
418
+ entry.name === '.git' ||
419
+ entry.name === 'dist' ||
420
+ entry.name === 'build' ||
421
+ entry.name === '.next' ||
422
+ entry.name === 'coverage') {
423
+ continue;
424
+ }
425
+ // Check exclude patterns
426
+ if (options.excludePatterns?.some(pattern => entry.name.match(pattern))) {
427
+ continue;
428
+ }
429
+ if (entry.isDirectory()) {
430
+ await walk(fullPath);
431
+ }
432
+ else if (entry.isFile()) {
433
+ const ext = path.extname(entry.name);
434
+ if (extensions.includes(ext)) {
435
+ if (!options.includePatterns?.length ||
436
+ options.includePatterns.some(pattern => entry.name.match(pattern))) {
437
+ files.push(fullPath);
438
+ }
439
+ }
440
+ }
441
+ }
442
+ }
443
+ catch (error) {
444
+ // Skip directories we can't read
445
+ }
446
+ }
447
+ await walk(dirPath);
448
+ return files;
449
+ }
450
+ }
451
+ //# sourceMappingURL=perf-detector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"perf-detector.js","sourceRoot":"","sources":["../../../../src/services/optimization/detectors/perf-detector.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,61 @@
1
+ /**
2
+ * Optimization Service Barrel Export
3
+ *
4
+ * Central export point for all optimization-related services and types.
5
+ */
6
+ import { OptimizationService } from './optimization.service.js';
7
+ import type { DetectionOptions, DetectAndOptimizeOptions, OptimizationReport } from './optimization.types.js';
8
+ export { OptimizationService } from './optimization.service.js';
9
+ export { BugDetector } from './detectors/bug-detector.js';
10
+ export { PerfDetector } from './detectors/perf-detector.js';
11
+ export { CodeSmellDetector } from './detectors/code-smell-detector.js';
12
+ export { CodeOptimizer } from './optimizers/code-optimizer.js';
13
+ export { PerfOptimizer } from './optimizers/perf-optimizer.js';
14
+ export { RefactOptimizer } from './optimizers/refact-optimizer.js';
15
+ export { ANTI_PATTERNS, getAntiPatternsByCategory, getAntiPatternById, getAntiPatternsBySeverity, findMatchingAntiPatterns, } from './patterns/anti-patterns.js';
16
+ export type { BugType, DetectedBug, Location, Severity, PerfCategory, PerformanceIssue, Metric, CodeSmellType, CodeSmell, OptimizationReport, OptimizationResult, OptimizationStats, AppliedOptimization, Suggestion, OptimizationError, PriorityScore, DetectionOptions, OptimizationOptions, DetectAndOptimizeOptions, AntiPattern, PatternMatcher, FileAnalysis, } from './optimization.types.js';
17
+ /**
18
+ * Default optimization service instance
19
+ */
20
+ export declare const optimizationService: OptimizationService;
21
+ /**
22
+ * Convenience function to detect issues in a project
23
+ *
24
+ * @example
25
+ * ```ts
26
+ * import { detectOptimizations } from '@pamacea/daemon';
27
+ *
28
+ * const report = await detectOptimizations('/path/to/project');
29
+ * console.log(`Found ${report.bugs.length} bugs`);
30
+ * ```
31
+ */
32
+ export declare function detectOptimizations(projectPath: string, options?: DetectionOptions): Promise<OptimizationReport>;
33
+ /**
34
+ * Convenience function to detect and optimize in one operation
35
+ *
36
+ * @example
37
+ * ```ts
38
+ * import { detectAndOptimize } from '@pamacea/daemon';
39
+ *
40
+ * const result = await detectAndOptimize('/path/to/project', {
41
+ * autoFix: true,
42
+ * maxFixes: 10,
43
+ * });
44
+ * console.log(`Applied ${result.appliedOptimizations.length} optimizations`);
45
+ * ```
46
+ */
47
+ export declare function detectAndOptimize(projectPath: string, options?: DetectAndOptimizeOptions): Promise<import("./optimization.types.js").OptimizationResult>;
48
+ /**
49
+ * Convenience function to generate a summary report
50
+ *
51
+ * @example
52
+ * ```ts
53
+ * import { generateReport } from '@pamacea/daemon';
54
+ *
55
+ * const report = await detectOptimizations('/path/to/project');
56
+ * const summary = generateReport(report);
57
+ * console.log(summary);
58
+ * ```
59
+ */
60
+ export declare function generateReport(report: OptimizationReport): string;
61
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/services/optimization/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,KAAK,EACV,gBAAgB,EAChB,wBAAwB,EACxB,kBAAkB,EACnB,MAAM,yBAAyB,CAAC;AAGjC,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAGhE,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AAGvE,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AAGnE,OAAO,EACL,aAAa,EACb,yBAAyB,EACzB,kBAAkB,EAClB,yBAAyB,EACzB,wBAAwB,GACzB,MAAM,6BAA6B,CAAC;AAGrC,YAAY,EAEV,OAAO,EACP,WAAW,EACX,QAAQ,EACR,QAAQ,EAGR,YAAY,EACZ,gBAAgB,EAChB,MAAM,EAGN,aAAa,EACb,SAAS,EAGT,kBAAkB,EAClB,kBAAkB,EAClB,iBAAiB,EAGjB,mBAAmB,EACnB,UAAU,EACV,iBAAiB,EACjB,aAAa,EAGb,gBAAgB,EAChB,mBAAmB,EACnB,wBAAwB,EAGxB,WAAW,EACX,cAAc,EAGd,YAAY,GACb,MAAM,yBAAyB,CAAC;AAEjC;;GAEG;AACH,eAAO,MAAM,mBAAmB,qBAA4B,CAAC;AAE7D;;;;;;;;;;GAUG;AACH,wBAAsB,mBAAmB,CACvC,WAAW,EAAE,MAAM,EACnB,OAAO,CAAC,EAAE,gBAAgB,+BAG3B;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAsB,iBAAiB,CACrC,WAAW,EAAE,MAAM,EACnB,OAAO,CAAC,EAAE,wBAAwB,iEAGnC;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,kBAAkB,GAAG,MAAM,CAEjE"}