@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.
- package/README.md +268 -58
- package/bin/Dockerfile +158 -16
- package/dist/cli/cli.d.ts.map +1 -1
- package/dist/cli/cli.js +22 -2
- package/dist/cli/cli.js.map +1 -1
- package/dist/cli/commands/command.types.d.ts +216 -0
- package/dist/cli/commands/command.types.d.ts.map +1 -0
- package/dist/cli/commands/command.types.js +64 -0
- package/dist/cli/commands/command.types.js.map +1 -0
- package/dist/cli/commands/history.command.d.ts +91 -0
- package/dist/cli/commands/history.command.d.ts.map +1 -0
- package/dist/cli/commands/history.command.js +336 -0
- package/dist/cli/commands/history.command.js.map +1 -0
- package/dist/cli/commands/index.d.ts +14 -3
- package/dist/cli/commands/index.d.ts.map +1 -1
- package/dist/cli/commands/index.js +7 -0
- package/dist/cli/commands/index.js.map +1 -1
- package/dist/cli/commands/optimize.command.d.ts +110 -0
- package/dist/cli/commands/optimize.command.d.ts.map +1 -0
- package/dist/cli/commands/optimize.command.js +497 -0
- package/dist/cli/commands/optimize.command.js.map +1 -0
- package/dist/cli/commands/report.command.d.ts +110 -0
- package/dist/cli/commands/report.command.d.ts.map +1 -0
- package/dist/cli/commands/report.command.js +532 -0
- package/dist/cli/commands/report.command.js.map +1 -0
- package/dist/cli/commands/review.command.d.ts +110 -0
- package/dist/cli/commands/review.command.d.ts.map +1 -0
- package/dist/cli/commands/review.command.js +520 -0
- package/dist/cli/commands/review.command.js.map +1 -0
- package/dist/cli/commands/score.command.d.ts +47 -0
- package/dist/cli/commands/score.command.d.ts.map +1 -0
- package/dist/cli/commands/score.command.js +261 -0
- package/dist/cli/commands/score.command.js.map +1 -0
- package/dist/cli/utils/index.d.ts +10 -0
- package/dist/cli/utils/index.d.ts.map +1 -0
- package/dist/cli/utils/index.js +10 -0
- package/dist/cli/utils/index.js.map +1 -0
- package/dist/cli/utils/output.d.ts +192 -0
- package/dist/cli/utils/output.d.ts.map +1 -0
- package/dist/cli/utils/output.js +411 -0
- package/dist/cli/utils/output.js.map +1 -0
- package/dist/cli/utils/progress.d.ts +204 -0
- package/dist/cli/utils/progress.d.ts.map +1 -0
- package/dist/cli/utils/progress.js +396 -0
- package/dist/cli/utils/progress.js.map +1 -0
- package/dist/core/types/index.d.ts +1 -0
- package/dist/core/types/index.d.ts.map +1 -1
- package/dist/core/types/project.types.d.ts +3 -3
- package/dist/core/types/project.types.d.ts.map +1 -1
- package/dist/core/types/scoring.types.d.ts +301 -0
- package/dist/core/types/scoring.types.d.ts.map +1 -0
- package/dist/core/types/scoring.types.js +8 -0
- package/dist/core/types/scoring.types.js.map +1 -0
- package/dist/services/detection/framework-detector.d.ts.map +1 -1
- package/dist/services/detection/framework-detector.js +74 -5
- package/dist/services/detection/framework-detector.js.map +1 -1
- package/dist/services/index.d.ts +12 -0
- package/dist/services/index.d.ts.map +1 -1
- package/dist/services/index.js +14 -0
- package/dist/services/index.js.map +1 -1
- package/dist/services/optimization/detectors/bug-detector.d.ts +82 -0
- package/dist/services/optimization/detectors/bug-detector.d.ts.map +1 -0
- package/dist/services/optimization/detectors/bug-detector.js +443 -0
- package/dist/services/optimization/detectors/bug-detector.js.map +1 -0
- package/dist/services/optimization/detectors/code-smell-detector.d.ts +108 -0
- package/dist/services/optimization/detectors/code-smell-detector.d.ts.map +1 -0
- package/dist/services/optimization/detectors/code-smell-detector.js +569 -0
- package/dist/services/optimization/detectors/code-smell-detector.js.map +1 -0
- package/dist/services/optimization/detectors/index.d.ts +7 -0
- package/dist/services/optimization/detectors/index.d.ts.map +1 -0
- package/dist/services/optimization/detectors/index.js +7 -0
- package/dist/services/optimization/detectors/index.js.map +1 -0
- package/dist/services/optimization/detectors/perf-detector.d.ts +80 -0
- package/dist/services/optimization/detectors/perf-detector.d.ts.map +1 -0
- package/dist/services/optimization/detectors/perf-detector.js +451 -0
- package/dist/services/optimization/detectors/perf-detector.js.map +1 -0
- package/dist/services/optimization/index.d.ts +61 -0
- package/dist/services/optimization/index.d.ts.map +1 -0
- package/dist/services/optimization/index.js +69 -0
- package/dist/services/optimization/index.js.map +1 -0
- package/dist/services/optimization/optimization.service.d.ts +65 -0
- package/dist/services/optimization/optimization.service.d.ts.map +1 -0
- package/dist/services/optimization/optimization.service.js +511 -0
- package/dist/services/optimization/optimization.service.js.map +1 -0
- package/dist/services/optimization/optimization.types.d.ts +343 -0
- package/dist/services/optimization/optimization.types.d.ts.map +1 -0
- package/dist/services/optimization/optimization.types.js +8 -0
- package/dist/services/optimization/optimization.types.js.map +1 -0
- package/dist/services/optimization/optimizers/code-optimizer.d.ts +87 -0
- package/dist/services/optimization/optimizers/code-optimizer.d.ts.map +1 -0
- package/dist/services/optimization/optimizers/code-optimizer.js +436 -0
- package/dist/services/optimization/optimizers/code-optimizer.js.map +1 -0
- package/dist/services/optimization/optimizers/index.d.ts +7 -0
- package/dist/services/optimization/optimizers/index.d.ts.map +1 -0
- package/dist/services/optimization/optimizers/index.js +7 -0
- package/dist/services/optimization/optimizers/index.js.map +1 -0
- package/dist/services/optimization/optimizers/perf-optimizer.d.ts +64 -0
- package/dist/services/optimization/optimizers/perf-optimizer.d.ts.map +1 -0
- package/dist/services/optimization/optimizers/perf-optimizer.js +330 -0
- package/dist/services/optimization/optimizers/perf-optimizer.js.map +1 -0
- package/dist/services/optimization/optimizers/refact-optimizer.d.ts +82 -0
- package/dist/services/optimization/optimizers/refact-optimizer.d.ts.map +1 -0
- package/dist/services/optimization/optimizers/refact-optimizer.js +354 -0
- package/dist/services/optimization/optimizers/refact-optimizer.js.map +1 -0
- package/dist/services/optimization/patterns/anti-patterns.d.ts +31 -0
- package/dist/services/optimization/patterns/anti-patterns.d.ts.map +1 -0
- package/dist/services/optimization/patterns/anti-patterns.js +501 -0
- package/dist/services/optimization/patterns/anti-patterns.js.map +1 -0
- package/dist/services/optimization/patterns/index.d.ts +5 -0
- package/dist/services/optimization/patterns/index.d.ts.map +1 -0
- package/dist/services/optimization/patterns/index.js +5 -0
- package/dist/services/optimization/patterns/index.js.map +1 -0
- package/dist/services/reporting/export/chart.exporter.d.ts +59 -0
- package/dist/services/reporting/export/chart.exporter.d.ts.map +1 -0
- package/dist/services/reporting/export/chart.exporter.js +350 -0
- package/dist/services/reporting/export/chart.exporter.js.map +1 -0
- package/dist/services/reporting/export/index.d.ts +9 -0
- package/dist/services/reporting/export/index.d.ts.map +1 -0
- package/dist/services/reporting/export/index.js +10 -0
- package/dist/services/reporting/export/index.js.map +1 -0
- package/dist/services/reporting/export/pdf.exporter.d.ts +133 -0
- package/dist/services/reporting/export/pdf.exporter.d.ts.map +1 -0
- package/dist/services/reporting/export/pdf.exporter.js +270 -0
- package/dist/services/reporting/export/pdf.exporter.js.map +1 -0
- package/dist/services/reporting/history.service.d.ts +93 -0
- package/dist/services/reporting/history.service.d.ts.map +1 -0
- package/dist/services/reporting/history.service.js +285 -0
- package/dist/services/reporting/history.service.js.map +1 -0
- package/dist/services/reporting/index.d.ts +15 -0
- package/dist/services/reporting/index.d.ts.map +1 -0
- package/dist/services/reporting/index.js +16 -0
- package/dist/services/reporting/index.js.map +1 -0
- package/dist/services/reporting/report.service.d.ts +102 -0
- package/dist/services/reporting/report.service.d.ts.map +1 -0
- package/dist/services/reporting/report.service.js +240 -0
- package/dist/services/reporting/report.service.js.map +1 -0
- package/dist/services/reporting/reporting.types.d.ts +329 -0
- package/dist/services/reporting/reporting.types.d.ts.map +1 -0
- package/dist/services/reporting/reporting.types.js +8 -0
- package/dist/services/reporting/reporting.types.js.map +1 -0
- package/dist/services/reporting/templates/html.template.d.ts +81 -0
- package/dist/services/reporting/templates/html.template.d.ts.map +1 -0
- package/dist/services/reporting/templates/html.template.js +741 -0
- package/dist/services/reporting/templates/html.template.js.map +1 -0
- package/dist/services/reporting/templates/json.template.d.ts +85 -0
- package/dist/services/reporting/templates/json.template.d.ts.map +1 -0
- package/dist/services/reporting/templates/json.template.js +308 -0
- package/dist/services/reporting/templates/json.template.js.map +1 -0
- package/dist/services/reporting/templates/markdown.template.d.ts +69 -0
- package/dist/services/reporting/templates/markdown.template.d.ts.map +1 -0
- package/dist/services/reporting/templates/markdown.template.js +311 -0
- package/dist/services/reporting/templates/markdown.template.js.map +1 -0
- package/dist/services/reporting/trend-analyzer.d.ts +73 -0
- package/dist/services/reporting/trend-analyzer.d.ts.map +1 -0
- package/dist/services/reporting/trend-analyzer.js +291 -0
- package/dist/services/reporting/trend-analyzer.js.map +1 -0
- package/dist/services/review/analyzers/dependency-analyzer.d.ts +87 -0
- package/dist/services/review/analyzers/dependency-analyzer.d.ts.map +1 -0
- package/dist/services/review/analyzers/dependency-analyzer.js +458 -0
- package/dist/services/review/analyzers/dependency-analyzer.js.map +1 -0
- package/dist/services/review/analyzers/index.d.ts +13 -0
- package/dist/services/review/analyzers/index.d.ts.map +1 -0
- package/dist/services/review/analyzers/index.js +13 -0
- package/dist/services/review/analyzers/index.js.map +1 -0
- package/dist/services/review/analyzers/nestjs-analyzer.d.ts +210 -0
- package/dist/services/review/analyzers/nestjs-analyzer.d.ts.map +1 -0
- package/dist/services/review/analyzers/nestjs-analyzer.js +571 -0
- package/dist/services/review/analyzers/nestjs-analyzer.js.map +1 -0
- package/dist/services/review/analyzers/performance-analyzer.d.ts +91 -0
- package/dist/services/review/analyzers/performance-analyzer.d.ts.map +1 -0
- package/dist/services/review/analyzers/performance-analyzer.js +589 -0
- package/dist/services/review/analyzers/performance-analyzer.js.map +1 -0
- package/dist/services/review/analyzers/security-analyzer.d.ts +96 -0
- package/dist/services/review/analyzers/security-analyzer.d.ts.map +1 -0
- package/dist/services/review/analyzers/security-analyzer.js +512 -0
- package/dist/services/review/analyzers/security-analyzer.js.map +1 -0
- package/dist/services/review/analyzers/static-analyzer.d.ts +90 -0
- package/dist/services/review/analyzers/static-analyzer.d.ts.map +1 -0
- package/dist/services/review/analyzers/static-analyzer.js +423 -0
- package/dist/services/review/analyzers/static-analyzer.js.map +1 -0
- package/dist/services/review/fixers/auto-fixer.d.ts +94 -0
- package/dist/services/review/fixers/auto-fixer.d.ts.map +1 -0
- package/dist/services/review/fixers/auto-fixer.js +404 -0
- package/dist/services/review/fixers/auto-fixer.js.map +1 -0
- package/dist/services/review/fixers/index.d.ts +11 -0
- package/dist/services/review/fixers/index.d.ts.map +1 -0
- package/dist/services/review/fixers/index.js +11 -0
- package/dist/services/review/fixers/index.js.map +1 -0
- package/dist/services/review/fixers/refactor-suggester.d.ts +100 -0
- package/dist/services/review/fixers/refactor-suggester.d.ts.map +1 -0
- package/dist/services/review/fixers/refactor-suggester.js +555 -0
- package/dist/services/review/fixers/refactor-suggester.js.map +1 -0
- package/dist/services/review/fixers/test-generator.d.ts +99 -0
- package/dist/services/review/fixers/test-generator.d.ts.map +1 -0
- package/dist/services/review/fixers/test-generator.js +458 -0
- package/dist/services/review/fixers/test-generator.js.map +1 -0
- package/dist/services/review/index.d.ts +14 -0
- package/dist/services/review/index.d.ts.map +1 -0
- package/dist/services/review/index.js +14 -0
- package/dist/services/review/index.js.map +1 -0
- package/dist/services/review/reporters/fix-reporter.d.ts +67 -0
- package/dist/services/review/reporters/fix-reporter.d.ts.map +1 -0
- package/dist/services/review/reporters/fix-reporter.js +437 -0
- package/dist/services/review/reporters/fix-reporter.js.map +1 -0
- package/dist/services/review/reporters/index.d.ts +10 -0
- package/dist/services/review/reporters/index.d.ts.map +1 -0
- package/dist/services/review/reporters/index.js +10 -0
- package/dist/services/review/reporters/index.js.map +1 -0
- package/dist/services/review/reporters/score-reporter.d.ts +84 -0
- package/dist/services/review/reporters/score-reporter.d.ts.map +1 -0
- package/dist/services/review/reporters/score-reporter.js +560 -0
- package/dist/services/review/reporters/score-reporter.js.map +1 -0
- package/dist/services/review/review.service.d.ts +129 -0
- package/dist/services/review/review.service.d.ts.map +1 -0
- package/dist/services/review/review.service.js +396 -0
- package/dist/services/review/review.service.js.map +1 -0
- package/dist/services/review/review.types.d.ts +443 -0
- package/dist/services/review/review.types.d.ts.map +1 -0
- package/dist/services/review/review.types.js +11 -0
- package/dist/services/review/review.types.js.map +1 -0
- package/dist/services/scoring/dimensions/accessibility.analyzer.d.ts +53 -0
- package/dist/services/scoring/dimensions/accessibility.analyzer.d.ts.map +1 -0
- package/dist/services/scoring/dimensions/accessibility.analyzer.js +260 -0
- package/dist/services/scoring/dimensions/accessibility.analyzer.js.map +1 -0
- package/dist/services/scoring/dimensions/backend-logic.analyzer.d.ts +138 -0
- package/dist/services/scoring/dimensions/backend-logic.analyzer.d.ts.map +1 -0
- package/dist/services/scoring/dimensions/backend-logic.analyzer.js +713 -0
- package/dist/services/scoring/dimensions/backend-logic.analyzer.js.map +1 -0
- package/dist/services/scoring/dimensions/business-logic.analyzer.d.ts +142 -0
- package/dist/services/scoring/dimensions/business-logic.analyzer.d.ts.map +1 -0
- package/dist/services/scoring/dimensions/business-logic.analyzer.js +747 -0
- package/dist/services/scoring/dimensions/business-logic.analyzer.js.map +1 -0
- package/dist/services/scoring/dimensions/code-quality.analyzer.d.ts +142 -0
- package/dist/services/scoring/dimensions/code-quality.analyzer.d.ts.map +1 -0
- package/dist/services/scoring/dimensions/code-quality.analyzer.js +685 -0
- package/dist/services/scoring/dimensions/code-quality.analyzer.js.map +1 -0
- package/dist/services/scoring/dimensions/index.d.ts +18 -0
- package/dist/services/scoring/dimensions/index.d.ts.map +1 -0
- package/dist/services/scoring/dimensions/index.js +27 -0
- package/dist/services/scoring/dimensions/index.js.map +1 -0
- package/dist/services/scoring/dimensions/performance.analyzer.d.ts +125 -0
- package/dist/services/scoring/dimensions/performance.analyzer.d.ts.map +1 -0
- package/dist/services/scoring/dimensions/performance.analyzer.js +615 -0
- package/dist/services/scoring/dimensions/performance.analyzer.js.map +1 -0
- package/dist/services/scoring/dimensions/security.analyzer.d.ts +53 -0
- package/dist/services/scoring/dimensions/security.analyzer.d.ts.map +1 -0
- package/dist/services/scoring/dimensions/security.analyzer.js +327 -0
- package/dist/services/scoring/dimensions/security.analyzer.js.map +1 -0
- package/dist/services/scoring/dimensions/seo.analyzer.d.ts +77 -0
- package/dist/services/scoring/dimensions/seo.analyzer.d.ts.map +1 -0
- package/dist/services/scoring/dimensions/seo.analyzer.js +502 -0
- package/dist/services/scoring/dimensions/seo.analyzer.js.map +1 -0
- package/dist/services/scoring/dimensions/test-coverage.analyzer.d.ts +106 -0
- package/dist/services/scoring/dimensions/test-coverage.analyzer.d.ts.map +1 -0
- package/dist/services/scoring/dimensions/test-coverage.analyzer.js +496 -0
- package/dist/services/scoring/dimensions/test-coverage.analyzer.js.map +1 -0
- package/dist/services/scoring/dimensions/ui-ux.analyzer.d.ts +126 -0
- package/dist/services/scoring/dimensions/ui-ux.analyzer.d.ts.map +1 -0
- package/dist/services/scoring/dimensions/ui-ux.analyzer.js +665 -0
- package/dist/services/scoring/dimensions/ui-ux.analyzer.js.map +1 -0
- package/dist/services/scoring/index.d.ts +10 -0
- package/dist/services/scoring/index.d.ts.map +1 -0
- package/dist/services/scoring/index.js +10 -0
- package/dist/services/scoring/index.js.map +1 -0
- package/dist/services/scoring/scoring-service.d.ts +222 -0
- package/dist/services/scoring/scoring-service.d.ts.map +1 -0
- package/dist/services/scoring/scoring-service.js +636 -0
- package/dist/services/scoring/scoring-service.js.map +1 -0
- package/package.json +11 -3
- package/templates/README.md +183 -0
- package/templates/nestjs/controller.spec.ts +203 -0
- package/templates/nestjs/e2e/api.e2e-spec.ts +451 -0
- package/templates/nestjs/e2e/auth.e2e-spec.ts +533 -0
- package/templates/nestjs/fixtures/test-module.ts +311 -0
- package/templates/nestjs/guard.spec.ts +314 -0
- package/templates/nestjs/interceptor.spec.ts +458 -0
- package/templates/nestjs/module.spec.ts +173 -0
- package/templates/nestjs/pipe.spec.ts +474 -0
- package/templates/nestjs/service.spec.ts +296 -0
- package/templates/rust/Cargo.toml +72 -0
- package/templates/rust/actix-controller.test.rs +114 -0
- package/templates/rust/axum-handler.test.rs +117 -0
- package/templates/rust/integration.test.rs +63 -0
- package/templates/rust/rocket-route.test.rs +106 -0
- package/templates/rust/unit.test.rs +38 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/services/reporting/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,YAAY,EACV,YAAY,EACZ,aAAa,EACb,oBAAoB,EACpB,WAAW,EACX,oBAAoB,EACpB,aAAa,EACb,UAAU,EACV,UAAU,EACV,WAAW,EACX,aAAa,EACb,eAAe,EACf,UAAU,EACV,MAAM,EACN,cAAc,EACd,WAAW,EACX,YAAY,EACZ,cAAc,EACd,YAAY,EACZ,aAAa,EACb,mBAAmB,EACnB,eAAe,EACf,aAAa,GACd,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAGpD,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACpE,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAG5D,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACjF,YAAY,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Reporting Service Barrel Export
|
|
3
|
+
*
|
|
4
|
+
* Central exports for the reporting and history system.
|
|
5
|
+
*/
|
|
6
|
+
// Services
|
|
7
|
+
export { ReportService } from './report.service.js';
|
|
8
|
+
export { HistoryService } from './history.service.js';
|
|
9
|
+
export { TrendAnalyzer } from './trend-analyzer.js';
|
|
10
|
+
// Templates
|
|
11
|
+
export { HtmlTemplate } from './templates/html.template.js';
|
|
12
|
+
export { MarkdownTemplate } from './templates/markdown.template.js';
|
|
13
|
+
export { JsonTemplate } from './templates/json.template.js';
|
|
14
|
+
// Export
|
|
15
|
+
export { ChartExporter, PdfExporter, PrintPdfExporter } from './export/index.js';
|
|
16
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/services/reporting/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AA4BH,WAAW;AACX,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEpD,YAAY;AACZ,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACpE,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAE5D,SAAS;AACT,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC"}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Report Service
|
|
3
|
+
*
|
|
4
|
+
* Main service for generating reports in various formats.
|
|
5
|
+
*/
|
|
6
|
+
import type { Report, ReportFormat, ExtendedProjectScore, ReportOptions, TrendAnalysis, TestResultForReport } from './reporting.types.js';
|
|
7
|
+
/**
|
|
8
|
+
* Report service for generating code quality reports
|
|
9
|
+
*/
|
|
10
|
+
export declare class ReportService {
|
|
11
|
+
private historyService;
|
|
12
|
+
constructor();
|
|
13
|
+
/**
|
|
14
|
+
* Generate a report in the specified format
|
|
15
|
+
*
|
|
16
|
+
* @param score - Project score to report
|
|
17
|
+
* @param format - Report format
|
|
18
|
+
* @param options - Report generation options
|
|
19
|
+
* @returns Generated report
|
|
20
|
+
*/
|
|
21
|
+
generateReport(score: ExtendedProjectScore, format: ReportFormat, options?: ReportOptions): Promise<Report>;
|
|
22
|
+
/**
|
|
23
|
+
* Generate an HTML report
|
|
24
|
+
*
|
|
25
|
+
* @param score - Project score to report
|
|
26
|
+
* @param trend - Optional trend analysis
|
|
27
|
+
* @param options - Report options
|
|
28
|
+
* @returns HTML string
|
|
29
|
+
*/
|
|
30
|
+
generateHtmlReport(score: ExtendedProjectScore, trend?: TrendAnalysis, options?: ReportOptions): Promise<string>;
|
|
31
|
+
/**
|
|
32
|
+
* Generate a Markdown report
|
|
33
|
+
*
|
|
34
|
+
* @param score - Project score to report
|
|
35
|
+
* @param trend - Optional trend analysis
|
|
36
|
+
* @returns Markdown string
|
|
37
|
+
*/
|
|
38
|
+
generateMarkdownReport(score: ExtendedProjectScore, trend?: TrendAnalysis): Promise<string>;
|
|
39
|
+
/**
|
|
40
|
+
* Generate a JSON report
|
|
41
|
+
*
|
|
42
|
+
* @param score - Project score to report
|
|
43
|
+
* @param trend - Optional trend analysis
|
|
44
|
+
* @returns JSON string
|
|
45
|
+
*/
|
|
46
|
+
generateJsonReport(score: ExtendedProjectScore, trend?: TrendAnalysis): Promise<string>;
|
|
47
|
+
/**
|
|
48
|
+
* Generate a JUnit XML report
|
|
49
|
+
*
|
|
50
|
+
* @param results - Test results to convert
|
|
51
|
+
* @returns JUnit XML string
|
|
52
|
+
*/
|
|
53
|
+
generateJUnitReport(results: TestResultForReport[]): Promise<string>;
|
|
54
|
+
/**
|
|
55
|
+
* Generate a summary report (compact format)
|
|
56
|
+
*
|
|
57
|
+
* @param score - Project score to summarize
|
|
58
|
+
* @returns Summary string
|
|
59
|
+
*/
|
|
60
|
+
generateSummary(score: ExtendedProjectScore): Promise<string>;
|
|
61
|
+
/**
|
|
62
|
+
* Save report to file
|
|
63
|
+
*
|
|
64
|
+
* @param report - Report to save
|
|
65
|
+
* @param outputPath - File path to save to
|
|
66
|
+
* @returns Promise resolving when saved
|
|
67
|
+
*/
|
|
68
|
+
saveReport(report: Report, outputPath: string): Promise<void>;
|
|
69
|
+
/**
|
|
70
|
+
* Generate report with automatic file naming
|
|
71
|
+
*
|
|
72
|
+
* @param score - Project score to report
|
|
73
|
+
* @param format - Report format
|
|
74
|
+
* @param outputDir - Output directory
|
|
75
|
+
* @param options - Report options
|
|
76
|
+
* @returns Path to generated report
|
|
77
|
+
*/
|
|
78
|
+
generateReportToFile(score: ExtendedProjectScore, format: ReportFormat, outputDir: string, options?: ReportOptions): Promise<string>;
|
|
79
|
+
/**
|
|
80
|
+
* Generate multiple formats at once
|
|
81
|
+
*
|
|
82
|
+
* @param score - Project score to report
|
|
83
|
+
* @param formats - Array of formats to generate
|
|
84
|
+
* @param outputDir - Output directory
|
|
85
|
+
* @param options - Report options
|
|
86
|
+
* @returns Map of format to file path
|
|
87
|
+
*/
|
|
88
|
+
generateMultipleReports(score: ExtendedProjectScore, formats: ReportFormat[], outputDir: string, options?: ReportOptions): Promise<Map<ReportFormat, string>>;
|
|
89
|
+
/**
|
|
90
|
+
* Get file extension for format
|
|
91
|
+
*/
|
|
92
|
+
private getFileExtension;
|
|
93
|
+
/**
|
|
94
|
+
* Generate JUnit XML for a single test case
|
|
95
|
+
*/
|
|
96
|
+
private generateJUnitTestCase;
|
|
97
|
+
/**
|
|
98
|
+
* Escape XML special characters
|
|
99
|
+
*/
|
|
100
|
+
private escapeXml;
|
|
101
|
+
}
|
|
102
|
+
//# sourceMappingURL=report.service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"report.service.d.ts","sourceRoot":"","sources":["../../../src/services/reporting/report.service.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EACV,MAAM,EACN,YAAY,EACZ,oBAAoB,EACpB,aAAa,EACb,aAAa,EACb,mBAAmB,EACpB,MAAM,sBAAsB,CAAC;AAO9B;;GAEG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,cAAc,CAAiB;;IAMvC;;;;;;;OAOG;IACG,cAAc,CAClB,KAAK,EAAE,oBAAoB,EAC3B,MAAM,EAAE,YAAY,EACpB,OAAO,GAAE,aAAkB,GAC1B,OAAO,CAAC,MAAM,CAAC;IAuClB;;;;;;;OAOG;IACG,kBAAkB,CACtB,KAAK,EAAE,oBAAoB,EAC3B,KAAK,CAAC,EAAE,aAAa,EACrB,OAAO,GAAE,aAAkB,GAC1B,OAAO,CAAC,MAAM,CAAC;IAKlB;;;;;;OAMG;IACG,sBAAsB,CAC1B,KAAK,EAAE,oBAAoB,EAC3B,KAAK,CAAC,EAAE,aAAa,GACpB,OAAO,CAAC,MAAM,CAAC;IAIlB;;;;;;OAMG;IACG,kBAAkB,CACtB,KAAK,EAAE,oBAAoB,EAC3B,KAAK,CAAC,EAAE,aAAa,GACpB,OAAO,CAAC,MAAM,CAAC;IAIlB;;;;;OAKG;IACG,mBAAmB,CAAC,OAAO,EAAE,mBAAmB,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;IAqC1E;;;;;OAKG;IACG,eAAe,CAAC,KAAK,EAAE,oBAAoB,GAAG,OAAO,CAAC,MAAM,CAAC;IAInE;;;;;;OAMG;IACG,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAWnE;;;;;;;;OAQG;IACG,oBAAoB,CACxB,KAAK,EAAE,oBAAoB,EAC3B,MAAM,EAAE,YAAY,EACpB,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE,aAAkB,GAC1B,OAAO,CAAC,MAAM,CAAC;IAelB;;;;;;;;OAQG;IACG,uBAAuB,CAC3B,KAAK,EAAE,oBAAoB,EAC3B,OAAO,EAAE,YAAY,EAAE,EACvB,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE,aAAkB,GAC1B,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;IAerC;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAUxB;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAuB7B;;OAEG;IACH,OAAO,CAAC,SAAS;CAQlB"}
|
|
@@ -0,0 +1,240 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Report Service
|
|
3
|
+
*
|
|
4
|
+
* Main service for generating reports in various formats.
|
|
5
|
+
*/
|
|
6
|
+
import { HtmlTemplate } from './templates/html.template.js';
|
|
7
|
+
import { MarkdownTemplate } from './templates/markdown.template.js';
|
|
8
|
+
import { JsonTemplate } from './templates/json.template.js';
|
|
9
|
+
import { HistoryService } from './history.service.js';
|
|
10
|
+
/**
|
|
11
|
+
* Report service for generating code quality reports
|
|
12
|
+
*/
|
|
13
|
+
export class ReportService {
|
|
14
|
+
historyService;
|
|
15
|
+
constructor() {
|
|
16
|
+
this.historyService = new HistoryService();
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Generate a report in the specified format
|
|
20
|
+
*
|
|
21
|
+
* @param score - Project score to report
|
|
22
|
+
* @param format - Report format
|
|
23
|
+
* @param options - Report generation options
|
|
24
|
+
* @returns Generated report
|
|
25
|
+
*/
|
|
26
|
+
async generateReport(score, format, options = {}) {
|
|
27
|
+
const trend = options.includeTrend
|
|
28
|
+
? await this.historyService.getFullAnalysis(score.projectPath)
|
|
29
|
+
: undefined;
|
|
30
|
+
let content;
|
|
31
|
+
switch (format) {
|
|
32
|
+
case 'html':
|
|
33
|
+
content = await this.generateHtmlReport(score, trend, options);
|
|
34
|
+
break;
|
|
35
|
+
case 'markdown':
|
|
36
|
+
content = await this.generateMarkdownReport(score, trend);
|
|
37
|
+
break;
|
|
38
|
+
case 'json':
|
|
39
|
+
content = await this.generateJsonReport(score, trend);
|
|
40
|
+
break;
|
|
41
|
+
case 'junit':
|
|
42
|
+
content = await this.generateJUnitReport(score.issues.map(i => ({
|
|
43
|
+
name: i.message,
|
|
44
|
+
file: i.file || 'unknown',
|
|
45
|
+
status: i.severity === 'critical' || i.severity === 'high' ? 'failed' : 'passed',
|
|
46
|
+
duration: 0,
|
|
47
|
+
})));
|
|
48
|
+
break;
|
|
49
|
+
default:
|
|
50
|
+
throw new Error(`Unsupported report format: ${format}`);
|
|
51
|
+
}
|
|
52
|
+
return {
|
|
53
|
+
format,
|
|
54
|
+
content,
|
|
55
|
+
timestamp: new Date(),
|
|
56
|
+
projectPath: score.projectPath,
|
|
57
|
+
score,
|
|
58
|
+
trend,
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Generate an HTML report
|
|
63
|
+
*
|
|
64
|
+
* @param score - Project score to report
|
|
65
|
+
* @param trend - Optional trend analysis
|
|
66
|
+
* @param options - Report options
|
|
67
|
+
* @returns HTML string
|
|
68
|
+
*/
|
|
69
|
+
async generateHtmlReport(score, trend, options = {}) {
|
|
70
|
+
const theme = options.theme ?? 'auto';
|
|
71
|
+
return HtmlTemplate.generate(score, trend, theme);
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Generate a Markdown report
|
|
75
|
+
*
|
|
76
|
+
* @param score - Project score to report
|
|
77
|
+
* @param trend - Optional trend analysis
|
|
78
|
+
* @returns Markdown string
|
|
79
|
+
*/
|
|
80
|
+
async generateMarkdownReport(score, trend) {
|
|
81
|
+
return MarkdownTemplate.generate(score, trend);
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Generate a JSON report
|
|
85
|
+
*
|
|
86
|
+
* @param score - Project score to report
|
|
87
|
+
* @param trend - Optional trend analysis
|
|
88
|
+
* @returns JSON string
|
|
89
|
+
*/
|
|
90
|
+
async generateJsonReport(score, trend) {
|
|
91
|
+
return JsonTemplate.generate(score, trend);
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Generate a JUnit XML report
|
|
95
|
+
*
|
|
96
|
+
* @param results - Test results to convert
|
|
97
|
+
* @returns JUnit XML string
|
|
98
|
+
*/
|
|
99
|
+
async generateJUnitReport(results) {
|
|
100
|
+
const now = new Date();
|
|
101
|
+
const total = results.length;
|
|
102
|
+
const failures = results.filter(r => r.status === 'failed').length;
|
|
103
|
+
const skipped = results.filter(r => r.status === 'skipped').length;
|
|
104
|
+
const errors = results.filter(r => r.status === 'timed-out').length;
|
|
105
|
+
// Group by file (test suite)
|
|
106
|
+
const suites = new Map();
|
|
107
|
+
for (const result of results) {
|
|
108
|
+
const file = result.file || 'default';
|
|
109
|
+
if (!suites.has(file)) {
|
|
110
|
+
suites.set(file, []);
|
|
111
|
+
}
|
|
112
|
+
suites.get(file).push(result);
|
|
113
|
+
}
|
|
114
|
+
const xmlLines = [
|
|
115
|
+
'<?xml version="1.0" encoding="UTF-8"?>',
|
|
116
|
+
`<testsuites name="Daemon" tests="${total}" failures="${failures}" errors="${errors}" skipped="${skipped}" time="${results.reduce((sum, r) => sum + r.duration, 0) / 1000}">`,
|
|
117
|
+
];
|
|
118
|
+
// Add timezone attribute
|
|
119
|
+
xmlLines.push(` <testsuite name="Daemon" id="0" tests="${total}" failures="${failures}" errors="${errors}" skipped="${skipped}" time="${results.reduce((sum, r) => sum + r.duration, 0) / 1000}" timestamp="${now.toISOString()}">`);
|
|
120
|
+
// Generate test cases
|
|
121
|
+
for (const result of results) {
|
|
122
|
+
const testCase = this.generateJUnitTestCase(result);
|
|
123
|
+
xmlLines.push(` ${testCase}`);
|
|
124
|
+
}
|
|
125
|
+
xmlLines.push(' </testsuite>');
|
|
126
|
+
xmlLines.push('</testsuites>');
|
|
127
|
+
return xmlLines.join('\n');
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Generate a summary report (compact format)
|
|
131
|
+
*
|
|
132
|
+
* @param score - Project score to summarize
|
|
133
|
+
* @returns Summary string
|
|
134
|
+
*/
|
|
135
|
+
async generateSummary(score) {
|
|
136
|
+
return MarkdownTemplate.generateSummary(score);
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* Save report to file
|
|
140
|
+
*
|
|
141
|
+
* @param report - Report to save
|
|
142
|
+
* @param outputPath - File path to save to
|
|
143
|
+
* @returns Promise resolving when saved
|
|
144
|
+
*/
|
|
145
|
+
async saveReport(report, outputPath) {
|
|
146
|
+
const { promises: fs } = await import('fs');
|
|
147
|
+
const { dirname } = await import('path');
|
|
148
|
+
// Ensure directory exists
|
|
149
|
+
await fs.mkdir(dirname(outputPath), { recursive: true });
|
|
150
|
+
// Write report
|
|
151
|
+
await fs.writeFile(outputPath, report.content, 'utf-8');
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* Generate report with automatic file naming
|
|
155
|
+
*
|
|
156
|
+
* @param score - Project score to report
|
|
157
|
+
* @param format - Report format
|
|
158
|
+
* @param outputDir - Output directory
|
|
159
|
+
* @param options - Report options
|
|
160
|
+
* @returns Path to generated report
|
|
161
|
+
*/
|
|
162
|
+
async generateReportToFile(score, format, outputDir, options = {}) {
|
|
163
|
+
const report = await this.generateReport(score, format, options);
|
|
164
|
+
const extension = this.getFileExtension(format);
|
|
165
|
+
const timestamp = score.timestamp.toISOString().replace(/[:.]/g, '-');
|
|
166
|
+
const filename = options.title
|
|
167
|
+
? `${options.title.replace(/\s+/g, '-').toLowerCase()}-${timestamp}.${extension}`
|
|
168
|
+
: `daemon-report-${timestamp}.${extension}`;
|
|
169
|
+
const outputPath = `${outputDir}/${filename}`;
|
|
170
|
+
await this.saveReport(report, outputPath);
|
|
171
|
+
return outputPath;
|
|
172
|
+
}
|
|
173
|
+
/**
|
|
174
|
+
* Generate multiple formats at once
|
|
175
|
+
*
|
|
176
|
+
* @param score - Project score to report
|
|
177
|
+
* @param formats - Array of formats to generate
|
|
178
|
+
* @param outputDir - Output directory
|
|
179
|
+
* @param options - Report options
|
|
180
|
+
* @returns Map of format to file path
|
|
181
|
+
*/
|
|
182
|
+
async generateMultipleReports(score, formats, outputDir, options = {}) {
|
|
183
|
+
const results = new Map();
|
|
184
|
+
for (const format of formats) {
|
|
185
|
+
try {
|
|
186
|
+
const path = await this.generateReportToFile(score, format, outputDir, options);
|
|
187
|
+
results.set(format, path);
|
|
188
|
+
}
|
|
189
|
+
catch (error) {
|
|
190
|
+
console.error(`Failed to generate ${format} report:`, error);
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
return results;
|
|
194
|
+
}
|
|
195
|
+
/**
|
|
196
|
+
* Get file extension for format
|
|
197
|
+
*/
|
|
198
|
+
getFileExtension(format) {
|
|
199
|
+
const extensions = {
|
|
200
|
+
html: 'html',
|
|
201
|
+
markdown: 'md',
|
|
202
|
+
json: 'json',
|
|
203
|
+
junit: 'xml',
|
|
204
|
+
};
|
|
205
|
+
return extensions[format];
|
|
206
|
+
}
|
|
207
|
+
/**
|
|
208
|
+
* Generate JUnit XML for a single test case
|
|
209
|
+
*/
|
|
210
|
+
generateJUnitTestCase(result) {
|
|
211
|
+
const escapedName = this.escapeXml(result.name);
|
|
212
|
+
const className = result.file ? this.escapeXml(result.file) : 'Daemon.Test';
|
|
213
|
+
let testCase = `<testcase name="${escapedName}" classname="${className}" time="${result.duration / 1000}">`;
|
|
214
|
+
if (result.status === 'failed' || result.status === 'timed-out') {
|
|
215
|
+
const errorType = result.status === 'timed-out' ? 'error' : 'failure';
|
|
216
|
+
const message = this.escapeXml(result.error || result.name || 'Test failed');
|
|
217
|
+
const text = this.escapeXml(result.stack || result.error || result.name || '');
|
|
218
|
+
testCase += `\n <${errorType} message="${message}">`;
|
|
219
|
+
testCase += `\n <![CDATA[${text}]]>`;
|
|
220
|
+
testCase += `\n </${errorType}>`;
|
|
221
|
+
}
|
|
222
|
+
else if (result.status === 'skipped') {
|
|
223
|
+
testCase += `\n <skipped/>`;
|
|
224
|
+
}
|
|
225
|
+
testCase += '\n </testcase>';
|
|
226
|
+
return testCase;
|
|
227
|
+
}
|
|
228
|
+
/**
|
|
229
|
+
* Escape XML special characters
|
|
230
|
+
*/
|
|
231
|
+
escapeXml(str) {
|
|
232
|
+
return str
|
|
233
|
+
.replace(/&/g, '&')
|
|
234
|
+
.replace(/</g, '<')
|
|
235
|
+
.replace(/>/g, '>')
|
|
236
|
+
.replace(/"/g, '"')
|
|
237
|
+
.replace(/'/g, ''');
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
//# sourceMappingURL=report.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"report.service.js","sourceRoot":"","sources":["../../../src/services/reporting/report.service.ts"],"names":[],"mappings":"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"}
|