@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,350 @@
1
+ /**
2
+ * Chart Exporter
3
+ *
4
+ * Generates SVG charts for reports without external dependencies.
5
+ */
6
+ /**
7
+ * Default chart colors
8
+ */
9
+ const COLORS = {
10
+ excellent: '#10b981',
11
+ good: '#22c55e',
12
+ fair: '#eab308',
13
+ poor: '#f97316',
14
+ critical: '#ef4444',
15
+ primary: '#3b82f6',
16
+ secondary: '#6366f1',
17
+ background: '#ffffff',
18
+ text: '#1f2937',
19
+ grid: '#e5e7eb',
20
+ };
21
+ /**
22
+ * Dark mode colors
23
+ */
24
+ const DARK_COLORS = {
25
+ excellent: '#059669',
26
+ good: '#16a34a',
27
+ fair: '#ca8a04',
28
+ poor: '#ea580c',
29
+ critical: '#dc2626',
30
+ primary: '#2563eb',
31
+ secondary: '#4f46e5',
32
+ background: '#1f2937',
33
+ text: '#f9fafb',
34
+ grid: '#374151',
35
+ };
36
+ /**
37
+ * Chart exporter for SVG generation
38
+ */
39
+ export class ChartExporter {
40
+ /**
41
+ * Generate a gauge chart SVG
42
+ *
43
+ * @param options - Gauge options
44
+ * @returns SVG string
45
+ */
46
+ static generateGauge(options) {
47
+ const { value, label, width = 200, height = 120, min = 0, max = 100, color, backgroundColor, textColor, zones, } = options;
48
+ const colors = backgroundColor?.startsWith('#1') ? DARK_COLORS : COLORS;
49
+ const bgColor = backgroundColor ?? colors.background;
50
+ const txtColor = textColor ?? colors.text;
51
+ // Determine color based on value
52
+ const getValueColor = (val) => {
53
+ if (zones) {
54
+ const zone = zones.find(z => val >= z.from && val < z.to);
55
+ if (zone)
56
+ return zone.color;
57
+ }
58
+ if (color)
59
+ return color;
60
+ if (val >= 90)
61
+ return colors.excellent;
62
+ if (val >= 70)
63
+ return colors.good;
64
+ if (val >= 50)
65
+ return colors.fair;
66
+ if (val >= 30)
67
+ return colors.poor;
68
+ return colors.critical;
69
+ };
70
+ const valueColor = getValueColor(value);
71
+ const clampedValue = Math.max(min, Math.min(max, value));
72
+ const percentage = (clampedValue - min) / (max - min);
73
+ // SVG parameters
74
+ const cx = width / 2;
75
+ const cy = height - 20;
76
+ const radius = Math.min(width, height * 2) / 2 - 20;
77
+ const startAngle = Math.PI;
78
+ const endAngle = 2 * Math.PI;
79
+ const valueAngle = startAngle + (endAngle - startAngle) * percentage;
80
+ // Generate SVG
81
+ const svg = [
82
+ `<svg width="${width}" height="${height}" viewBox="0 0 ${width} ${height}" xmlns="http://www.w3.org/2000/svg">`,
83
+ ` <defs>`,
84
+ ` <linearGradient id="gaugeGradient" x1="0%" y1="0%" x2="100%" y2="0%">`,
85
+ ` <stop offset="0%" style="stop-color:${colors.critical};stop-opacity:1" />`,
86
+ ` <stop offset="25%" style="stop-color:${colors.poor};stop-opacity:1" />`,
87
+ ` <stop offset="50%" style="stop-color:${colors.fair};stop-opacity:1" />`,
88
+ ` <stop offset="75%" style="stop-color:${colors.good};stop-opacity:1" />`,
89
+ ` <stop offset="100%" style="stop-color:${colors.excellent};stop-opacity:1" />`,
90
+ ` </linearGradient>`,
91
+ ` </defs>`,
92
+ // Background arc
93
+ ` <path d="M ${cx - radius} ${cy} A ${radius} ${radius} 0 0 1 ${cx + radius} ${cy}"`,
94
+ ` fill="none" stroke="${colors.grid}" stroke-width="16" stroke-linecap="round"/>`,
95
+ // Value arc
96
+ ` <path d="M ${cx - radius} ${cy} A ${radius} ${radius} 0 ${percentage > 0.5 ? 1 : 0} 1 ${cx + radius * Math.cos(valueAngle)} ${cy - radius * Math.sin(valueAngle)}"`,
97
+ ` fill="none" stroke="${valueColor}" stroke-width="16" stroke-linecap="round"/>`,
98
+ // Value text
99
+ ` <text x="${cx}" y="${cy - radius / 2}" text-anchor="middle"`,
100
+ ` font-family="system-ui, sans-serif" font-size="32" font-weight="bold" fill="${txtColor}">`,
101
+ ` ${Math.round(value)}`,
102
+ ` </text>`,
103
+ // Label text
104
+ ` <text x="${cx}" y="${cy - radius / 2 + 20}" text-anchor="middle"`,
105
+ ` font-family="system-ui, sans-serif" font-size="12" fill="${colors.secondary}">`,
106
+ ` ${label || ''}`,
107
+ ` </text>`,
108
+ `</svg>`,
109
+ ].join('\n');
110
+ return svg;
111
+ }
112
+ /**
113
+ * Generate a trend line chart SVG
114
+ *
115
+ * @param data - Trend data points
116
+ * @param config - Chart configuration
117
+ * @returns SVG string
118
+ */
119
+ static generateTrendChart(data, config = {}) {
120
+ const { width = 400, height = 200, color, backgroundColor, textColor, showGrid = true, showLabels = true, } = config;
121
+ const colors = backgroundColor?.startsWith('#1') ? DARK_COLORS : COLORS;
122
+ const bgColor = backgroundColor ?? colors.background;
123
+ const txtColor = textColor ?? colors.text;
124
+ const lineColor = color ?? colors.primary;
125
+ if (data.length < 2) {
126
+ return `<svg width="${width}" height="${height}" xmlns="http://www.w3.org/2000/svg">
127
+ <text x="50%" y="50%" text-anchor="middle" fill="${txtColor}">Insufficient data</text>
128
+ </svg>`;
129
+ }
130
+ const padding = { top: 20, right: 20, bottom: 40, left: 50 };
131
+ const chartWidth = width - padding.left - padding.right;
132
+ const chartHeight = height - padding.top - padding.bottom;
133
+ const values = data.map(d => d.value);
134
+ const minVal = Math.min(...values);
135
+ const maxVal = Math.max(...values);
136
+ const valRange = maxVal - minVal || 1;
137
+ // Generate points for the line
138
+ const points = data.map((d, i) => {
139
+ const x = padding.left + (i / (data.length - 1)) * chartWidth;
140
+ const y = padding.top + chartHeight - ((d.value - minVal) / valRange) * chartHeight;
141
+ return `${x},${y}`;
142
+ }).join(' ');
143
+ // Generate area fill points
144
+ const areaPoints = [
145
+ `${padding.left},${padding.top + chartHeight}`,
146
+ points,
147
+ `${padding.left + chartWidth},${padding.top + chartHeight}`,
148
+ ].join(' ');
149
+ // Y-axis labels
150
+ const yLabels = [];
151
+ for (let i = 0; i <= 4; i++) {
152
+ const val = minVal + (valRange * i) / 4;
153
+ const y = padding.top + chartHeight - (i / 4) * chartHeight;
154
+ yLabels.push(` <text x="${padding.left - 10}" y="${y + 4}" text-anchor="end"`, ` font-family="system-ui, sans-serif" font-size="11" fill="${colors.secondary}">`, ` ${Math.round(val)}`, ` </text>`);
155
+ if (showGrid) {
156
+ yLabels.push(` <line x1="${padding.left}" y1="${y}" x2="${width - padding.right}" y2="${y}"`, ` stroke="${colors.grid}" stroke-width="1"/>`);
157
+ }
158
+ }
159
+ // X-axis labels (first and last)
160
+ const xLabels = [];
161
+ if (showLabels && data.length > 0) {
162
+ const formatDate = (date) => {
163
+ return date.toLocaleDateString('en-US', { month: 'short', day: 'numeric' });
164
+ };
165
+ xLabels.push(` <text x="${padding.left}" y="${height - 10}" text-anchor="middle"`, ` font-family="system-ui, sans-serif" font-size="10" fill="${colors.secondary}">`, ` ${formatDate(data[0].timestamp)}`, ` </text>`, ` <text x="${width - padding.right}" y="${height - 10}" text-anchor="middle"`, ` font-family="system-ui, sans-serif" font-size="10" fill="${colors.secondary}">`, ` ${formatDate(data[data.length - 1].timestamp)}`, ` </text>`);
166
+ }
167
+ const svg = [
168
+ `<svg width="${width}" height="${height}" viewBox="0 0 ${width} ${height}" xmlns="http://www.w3.org/2000/svg">`,
169
+ ` <rect width="100%" height="100%" fill="${bgColor}"/>`,
170
+ // Y-axis labels and grid
171
+ ...yLabels,
172
+ // X-axis labels
173
+ ...xLabels,
174
+ // Area fill
175
+ ` <polygon points="${areaPoints}" fill="${lineColor}" opacity="0.1"/>`,
176
+ // Line
177
+ ` <polyline points="${points}" fill="none" stroke="${lineColor}" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>`,
178
+ // Data points
179
+ ...data.map((d, i) => {
180
+ const x = padding.left + (i / (data.length - 1)) * chartWidth;
181
+ const y = padding.top + chartHeight - ((d.value - minVal) / valRange) * chartHeight;
182
+ return ` <circle cx="${x}" cy="${y}" r="4" fill="${bgColor}" stroke="${lineColor}" stroke-width="2"/>`;
183
+ }),
184
+ `</svg>`,
185
+ ].join('\n');
186
+ return svg;
187
+ }
188
+ /**
189
+ * Generate a bar chart SVG
190
+ *
191
+ * @param data - Bar chart data
192
+ * @param config - Chart configuration
193
+ * @returns SVG string
194
+ */
195
+ static generateBarChart(data, config = {}) {
196
+ const { width = 400, height = 250, backgroundColor, textColor, showLabels = true, } = config;
197
+ const colors = backgroundColor?.startsWith('#1') ? DARK_COLORS : COLORS;
198
+ const bgColor = backgroundColor ?? colors.background;
199
+ const txtColor = textColor ?? colors.text;
200
+ if (data.length === 0) {
201
+ return `<svg width="${width}" height="${height}" xmlns="http://www.w3.org/2000/svg">
202
+ <text x="50%" y="50%" text-anchor="middle" fill="${txtColor}">No data</text>
203
+ </svg>`;
204
+ }
205
+ const padding = { top: 20, right: 20, bottom: 60, left: 40 };
206
+ const chartWidth = width - padding.left - padding.right;
207
+ const chartHeight = height - padding.top - padding.bottom;
208
+ const maxVal = Math.max(...data.map(d => d.value), 100);
209
+ const barWidth = (chartWidth / data.length) * 0.7;
210
+ const barGap = (chartWidth / data.length) * 0.3;
211
+ const bars = data.map((d, i) => {
212
+ const x = padding.left + i * (barWidth + barGap) + barGap / 2;
213
+ const barHeight = (d.value / maxVal) * chartHeight;
214
+ const y = padding.top + chartHeight - barHeight;
215
+ const barColor = d.color ?? this.getBarColor(d.value);
216
+ return [
217
+ ` <rect x="${x}" y="${y}" width="${barWidth}" height="${barHeight}"`,
218
+ ` fill="${barColor}" rx="4"/>`,
219
+ ` <text x="${x + barWidth / 2}" y="${y - 8}" text-anchor="middle"`,
220
+ ` font-family="system-ui, sans-serif" font-size="12" font-weight="bold" fill="${txtColor}">`,
221
+ ` ${d.value}`,
222
+ ` </text>`,
223
+ ` <text x="${x + barWidth / 2}" y="${height - 15}" text-anchor="middle"`,
224
+ ` font-family="system-ui, sans-serif" font-size="11" fill="${colors.secondary}">`,
225
+ ` ${this.truncateLabel(d.label, 12)}`,
226
+ ` </text>`,
227
+ ].join('\n');
228
+ }).join('\n');
229
+ // Y-axis labels
230
+ const yLabels = [];
231
+ for (let i = 0; i <= 4; i++) {
232
+ const val = Math.round((maxVal * i) / 4);
233
+ const y = padding.top + chartHeight - (i / 4) * chartHeight;
234
+ yLabels.push(` <text x="${padding.left - 8}" y="${y + 4}" text-anchor="end"`, ` font-family="system-ui, sans-serif" font-size="11" fill="${colors.secondary}">`, ` ${val}`, ` </text>`);
235
+ }
236
+ const svg = [
237
+ `<svg width="${width}" height="${height}" viewBox="0 0 ${width} ${height}" xmlns="http://www.w3.org/2000/svg">`,
238
+ ` <rect width="100%" height="100%" fill="${bgColor}"/>`,
239
+ ` <line x1="${padding.left}" y1="${padding.top}" x2="${padding.left}" y2="${height - padding.bottom}"`,
240
+ ` stroke="${colors.grid}" stroke-width="1"/>`,
241
+ ` <line x1="${padding.left}" y1="${height - padding.bottom}" x2="${width - padding.right}" y2="${height - padding.bottom}"`,
242
+ ` stroke="${colors.grid}" stroke-width="1"/>`,
243
+ ...yLabels,
244
+ bars,
245
+ `</svg>`,
246
+ ].join('\n');
247
+ return svg;
248
+ }
249
+ /**
250
+ * Generate a donut chart SVG
251
+ *
252
+ * @param data - Data segments with labels and values
253
+ * @param config - Chart configuration
254
+ * @returns SVG string
255
+ */
256
+ static generateDonutChart(data, config = {}) {
257
+ const { width = 300, height = 300, backgroundColor, textColor, } = config;
258
+ const colors = backgroundColor?.startsWith('#1') ? DARK_COLORS : COLORS;
259
+ const bgColor = backgroundColor ?? colors.background;
260
+ const txtColor = textColor ?? colors.text;
261
+ if (data.length === 0) {
262
+ return `<svg width="${width}" height="${height}" xmlns="http://www.w3.org/2000/svg">
263
+ <text x="50%" y="50%" text-anchor="middle" fill="${txtColor}">No data</text>
264
+ </svg>`;
265
+ }
266
+ const total = data.reduce((sum, d) => sum + d.value, 0);
267
+ const cx = width / 2;
268
+ const cy = height / 2;
269
+ const outerRadius = Math.min(width, height) / 2 - 20;
270
+ const innerRadius = outerRadius * 0.6;
271
+ let currentAngle = -Math.PI / 2;
272
+ const segments = data.map((d, i) => {
273
+ const sliceAngle = (d.value / total) * 2 * Math.PI;
274
+ const endAngle = currentAngle + sliceAngle;
275
+ const x1 = cx + outerRadius * Math.cos(currentAngle);
276
+ const y1 = cy + outerRadius * Math.sin(currentAngle);
277
+ const x2 = cx + outerRadius * Math.cos(endAngle);
278
+ const y2 = cy + outerRadius * Math.sin(endAngle);
279
+ const x3 = cx + innerRadius * Math.cos(endAngle);
280
+ const y3 = cy + innerRadius * Math.sin(endAngle);
281
+ const x4 = cx + innerRadius * Math.cos(currentAngle);
282
+ const y4 = cy + innerRadius * Math.sin(currentAngle);
283
+ const largeArcFlag = sliceAngle > Math.PI ? 1 : 0;
284
+ const segmentColor = d.color ?? this.getDefaultColor(i);
285
+ const path = ` <path d="M ${x1} ${y1} A ${outerRadius} ${outerRadius} 0 ${largeArcFlag} 1 ${x2} ${y2} L ${x3} ${y3} A ${innerRadius} ${innerRadius} 0 ${largeArcFlag} 0 ${x4} ${y4} Z" fill="${segmentColor}" stroke="${bgColor}" stroke-width="2"/>`;
286
+ // Legend entry
287
+ const legendY = 20 + i * 20;
288
+ const legend = [
289
+ ` <rect x="10" y="${legendY}" width="12" height="12" fill="${segmentColor}" rx="2"/>`,
290
+ ` <text x="28" y="${legendY + 10}" font-family="system-ui, sans-serif" font-size="11" fill="${txtColor}">`,
291
+ ` ${d.label} (${Math.round(d.value / total * 100)}%)`,
292
+ ` </text>`,
293
+ ].join('\n');
294
+ currentAngle = endAngle;
295
+ return path + '\n' + legend;
296
+ }).join('\n');
297
+ // Center text with total
298
+ const centerText = total > 0
299
+ ? ` <text x="${cx}" y="${cy}" text-anchor="middle" dominant-baseline="middle"
300
+ font-family="system-ui, sans-serif" font-size="24" font-weight="bold" fill="${txtColor}">
301
+ ${total}
302
+ </text>`
303
+ : '';
304
+ const svg = [
305
+ `<svg width="${width}" height="${height}" viewBox="0 0 ${width} ${height}" xmlns="http://www.w3.org/2000/svg">`,
306
+ ` <rect width="100%" height="100%" fill="${bgColor}"/>`,
307
+ segments,
308
+ centerText,
309
+ `</svg>`,
310
+ ].join('\n');
311
+ return svg;
312
+ }
313
+ /**
314
+ * Get color based on bar value
315
+ */
316
+ static getBarColor(value) {
317
+ if (value >= 90)
318
+ return COLORS.excellent;
319
+ if (value >= 70)
320
+ return COLORS.good;
321
+ if (value >= 50)
322
+ return COLORS.fair;
323
+ if (value >= 30)
324
+ return COLORS.poor;
325
+ return COLORS.critical;
326
+ }
327
+ /**
328
+ * Get default color for chart segments
329
+ */
330
+ static getDefaultColor(index) {
331
+ const defaultColors = [
332
+ COLORS.primary,
333
+ COLORS.secondary,
334
+ COLORS.excellent,
335
+ COLORS.good,
336
+ COLORS.fair,
337
+ COLORS.poor,
338
+ ];
339
+ return defaultColors[index % defaultColors.length];
340
+ }
341
+ /**
342
+ * Truncate label for display
343
+ */
344
+ static truncateLabel(label, maxLength) {
345
+ if (label.length <= maxLength)
346
+ return label;
347
+ return label.substring(0, maxLength - 3) + '...';
348
+ }
349
+ }
350
+ //# sourceMappingURL=chart.exporter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chart.exporter.js","sourceRoot":"","sources":["../../../../src/services/reporting/export/chart.exporter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Export Barrel Export
3
+ *
4
+ * Central exports for report exporters (charts, PDF, etc.)
5
+ */
6
+ export { ChartExporter } from './chart.exporter.js';
7
+ export { PdfExporter, PrintPdfExporter } from './pdf.exporter.js';
8
+ export type { PdfExportOptions } from './pdf.exporter.js';
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/services/reporting/export/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAGpD,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAGlE,YAAY,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Export Barrel Export
3
+ *
4
+ * Central exports for report exporters (charts, PDF, etc.)
5
+ */
6
+ // Chart exporter
7
+ export { ChartExporter } from './chart.exporter.js';
8
+ // PDF exporter
9
+ export { PdfExporter, PrintPdfExporter } from './pdf.exporter.js';
10
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/services/reporting/export/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,iBAAiB;AACjB,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEpD,eAAe;AACf,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1,133 @@
1
+ /**
2
+ * PDF Exporter
3
+ *
4
+ * Generates PDF reports from HTML templates.
5
+ * Uses browser print API or server-side rendering.
6
+ *
7
+ * Note: This is a placeholder implementation. Full PDF generation
8
+ * would require additional dependencies like puppeteer or jsPDF.
9
+ */
10
+ import type { Report } from '../reporting.types.js';
11
+ /**
12
+ * PDF export options
13
+ */
14
+ export interface PdfExportOptions {
15
+ /** Page orientation */
16
+ orientation?: 'portrait' | 'landscape';
17
+ /** Page format */
18
+ format?: 'A4' | 'A3' | 'Letter';
19
+ /** Whether to include background graphics */
20
+ background?: boolean;
21
+ /** Whether to print headers and footers */
22
+ preferCSSPageSize?: boolean;
23
+ }
24
+ /**
25
+ * PDF Exporter class
26
+ *
27
+ * Provides PDF export functionality for reports.
28
+ */
29
+ export declare class PdfExporter {
30
+ /**
31
+ * Generate PDF from HTML report
32
+ *
33
+ * @param htmlReport - HTML content to convert
34
+ * @param options - PDF export options
35
+ * @returns Promise resolving to PDF buffer or base64 string
36
+ */
37
+ static generatePdf(htmlReport: string, options?: PdfExportOptions): Promise<Uint8Array>;
38
+ /**
39
+ * Generate PDF from report
40
+ *
41
+ * @param report - Report object
42
+ * @param options - PDF export options
43
+ * @returns Promise resolving to PDF buffer
44
+ */
45
+ static exportReportToPdf(report: Report, options?: PdfExportOptions): Promise<Uint8Array>;
46
+ /**
47
+ * Save PDF to file (Node.js environment)
48
+ *
49
+ * @param pdfData - PDF buffer
50
+ * @param outputPath - File path to save to
51
+ */
52
+ static savePdf(pdfData: Uint8Array, outputPath: string): Promise<void>;
53
+ /**
54
+ * Generate print-friendly HTML
55
+ *
56
+ * @param htmlReport - Original HTML report
57
+ * @returns Print-friendly HTML with print styles
58
+ */
59
+ static generatePrintHtml(htmlReport: string): string;
60
+ /**
61
+ * Get recommended print options for browser
62
+ *
63
+ * @returns Print options object
64
+ */
65
+ static getBrowserPrintOptions(): {
66
+ [key: string]: boolean | string;
67
+ };
68
+ /**
69
+ * Extract text content from HTML
70
+ *
71
+ * @param html - HTML content
72
+ * @returns Extracted text content
73
+ */
74
+ private static extractTextContent;
75
+ /**
76
+ * Create basic PDF-like data
77
+ *
78
+ * This is a simplified implementation. Real PDF generation
79
+ * would use libraries like jsPDF or PDFKit.
80
+ *
81
+ * @param content - Text content
82
+ * @param options - PDF options
83
+ * @returns PDF data buffer
84
+ */
85
+ private static createBasicPdf;
86
+ /**
87
+ * Escape string for PDF content
88
+ *
89
+ * @param str - String to escape
90
+ * @returns Escaped string
91
+ */
92
+ private static escapePdfString;
93
+ /**
94
+ * Check if PDF export is available
95
+ *
96
+ * @returns True if PDF export dependencies are available
97
+ */
98
+ static isPdfExportAvailable(): boolean;
99
+ /**
100
+ * Get PDF export capabilities
101
+ *
102
+ * @returns Object describing available features
103
+ */
104
+ static getCapabilities(): {
105
+ basic: boolean;
106
+ serverSide: boolean;
107
+ clientSide: boolean;
108
+ charts: boolean;
109
+ customFonts: boolean;
110
+ };
111
+ }
112
+ /**
113
+ * HTML to PDF conversion via print command
114
+ *
115
+ * This utility provides instructions for generating PDFs
116
+ * using the browser's print functionality.
117
+ */
118
+ export declare class PrintPdfExporter {
119
+ /**
120
+ * Generate HTML with print dialog trigger
121
+ *
122
+ * @param htmlReport - HTML report content
123
+ * @returns HTML with print script
124
+ */
125
+ static generatePrintableHtml(htmlReport: string): string;
126
+ /**
127
+ * Get browser-compatible print URL
128
+ *
129
+ * @returns Data URL for printing
130
+ */
131
+ static getPrintDataUrl(htmlContent: string): string;
132
+ }
133
+ //# sourceMappingURL=pdf.exporter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pdf.exporter.d.ts","sourceRoot":"","sources":["../../../../src/services/reporting/export/pdf.exporter.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAEpD;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,uBAAuB;IACvB,WAAW,CAAC,EAAE,UAAU,GAAG,WAAW,CAAC;IACvC,kBAAkB;IAClB,MAAM,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,QAAQ,CAAC;IAChC,6CAA6C;IAC7C,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,2CAA2C;IAC3C,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED;;;;GAIG;AACH,qBAAa,WAAW;IACtB;;;;;;OAMG;WACU,WAAW,CACtB,UAAU,EAAE,MAAM,EAClB,OAAO,GAAE,gBAAqB,GAC7B,OAAO,CAAC,UAAU,CAAC;IAatB;;;;;;OAMG;WACU,iBAAiB,CAC5B,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,gBAAqB,GAC7B,OAAO,CAAC,UAAU,CAAC;IAQtB;;;;;OAKG;WACU,OAAO,CAAC,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAW5E;;;;;OAKG;IACH,MAAM,CAAC,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM;IAgBpD;;;;OAIG;IACH,MAAM,CAAC,sBAAsB,IAAI;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM,CAAA;KAAE;IASpE;;;;;OAKG;IACH,OAAO,CAAC,MAAM,CAAC,kBAAkB;IAYjC;;;;;;;;;OASG;IACH,OAAO,CAAC,MAAM,CAAC,cAAc;IAsF7B;;;;;OAKG;IACH,OAAO,CAAC,MAAM,CAAC,eAAe;IAS9B;;;;OAIG;IACH,MAAM,CAAC,oBAAoB,IAAI,OAAO;IAKtC;;;;OAIG;IACH,MAAM,CAAC,eAAe,IAAI;QACxB,KAAK,EAAE,OAAO,CAAC;QACf,UAAU,EAAE,OAAO,CAAC;QACpB,UAAU,EAAE,OAAO,CAAC;QACpB,MAAM,EAAE,OAAO,CAAC;QAChB,WAAW,EAAE,OAAO,CAAC;KACtB;CASF;AAED;;;;;GAKG;AACH,qBAAa,gBAAgB;IAC3B;;;;;OAKG;IACH,MAAM,CAAC,qBAAqB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM;IAYxD;;;;OAIG;IACH,MAAM,CAAC,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM;CAGpD"}