@oalacea/daemon 0.5.1 → 0.6.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/dist/cli/cli.d.ts +42 -0
- package/dist/cli/cli.d.ts.map +1 -0
- package/dist/cli/cli.js +89 -0
- package/dist/cli/cli.js.map +1 -0
- package/dist/cli/commands/detect.command.d.ts +39 -0
- package/dist/cli/commands/detect.command.d.ts.map +1 -0
- package/dist/cli/commands/detect.command.js +111 -0
- package/dist/cli/commands/detect.command.js.map +1 -0
- package/dist/cli/commands/index.d.ts +14 -0
- package/dist/cli/commands/index.d.ts.map +1 -0
- package/dist/cli/commands/index.js +11 -0
- package/dist/cli/commands/index.js.map +1 -0
- package/dist/cli/commands/init.command.d.ts +41 -0
- package/dist/cli/commands/init.command.d.ts.map +1 -0
- package/dist/cli/commands/init.command.js +111 -0
- package/dist/cli/commands/init.command.js.map +1 -0
- package/dist/cli/commands/test.command.d.ts +58 -0
- package/dist/cli/commands/test.command.d.ts.map +1 -0
- package/dist/cli/commands/test.command.js +180 -0
- package/dist/cli/commands/test.command.js.map +1 -0
- package/dist/cli/index.d.ts +8 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +10 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/core/config/daemon.config.d.ts +32 -0
- package/dist/core/config/daemon.config.d.ts.map +1 -0
- package/dist/core/config/daemon.config.js +83 -0
- package/dist/core/config/daemon.config.js.map +1 -0
- package/dist/core/config/index.d.ts +5 -0
- package/dist/core/config/index.d.ts.map +1 -0
- package/dist/core/config/index.js +5 -0
- package/dist/core/config/index.js.map +1 -0
- package/dist/core/constants.d.ts +36 -0
- package/dist/core/constants.d.ts.map +1 -0
- package/dist/core/constants.js +56 -0
- package/dist/core/constants.js.map +1 -0
- package/dist/core/types/common.types.d.ts +250 -0
- package/dist/core/types/common.types.d.ts.map +1 -0
- package/dist/core/types/common.types.js +7 -0
- package/dist/core/types/common.types.js.map +1 -0
- package/dist/core/types/detection.types.d.ts +232 -0
- package/dist/core/types/detection.types.d.ts.map +1 -0
- package/dist/core/types/detection.types.js +22 -0
- package/dist/core/types/detection.types.js.map +1 -0
- package/dist/core/types/docker.types.d.ts +322 -0
- package/dist/core/types/docker.types.d.ts.map +1 -0
- package/dist/core/types/docker.types.js +7 -0
- package/dist/core/types/docker.types.js.map +1 -0
- package/dist/core/types/index.d.ts +11 -0
- package/dist/core/types/index.d.ts.map +1 -0
- package/dist/core/types/index.js +7 -0
- package/dist/core/types/index.js.map +1 -0
- package/dist/core/types/project.types.d.ts +74 -0
- package/dist/core/types/project.types.d.ts.map +1 -0
- package/dist/core/types/project.types.js +7 -0
- package/dist/core/types/project.types.js.map +1 -0
- package/dist/core/types/shared.types.d.ts +118 -0
- package/dist/core/types/shared.types.d.ts.map +1 -0
- package/dist/core/types/shared.types.js +7 -0
- package/dist/core/types/shared.types.js.map +1 -0
- package/dist/core/types/test.types.d.ts +230 -0
- package/dist/core/types/test.types.d.ts.map +1 -0
- package/dist/core/types/test.types.js +7 -0
- package/dist/core/types/test.types.js.map +1 -0
- package/dist/services/detection/__tests__/framework-detector.test.d.ts +5 -0
- package/dist/services/detection/__tests__/framework-detector.test.d.ts.map +1 -0
- package/dist/services/detection/__tests__/framework-detector.test.js +52 -0
- package/dist/services/detection/__tests__/framework-detector.test.js.map +1 -0
- package/dist/services/detection/framework-detector.d.ts +179 -0
- package/dist/services/detection/framework-detector.d.ts.map +1 -0
- package/dist/services/detection/framework-detector.js +636 -0
- package/dist/services/detection/framework-detector.js.map +1 -0
- package/dist/services/detection/index.d.ts +10 -0
- package/dist/services/detection/index.d.ts.map +1 -0
- package/dist/services/detection/index.js +7 -0
- package/dist/services/detection/index.js.map +1 -0
- package/dist/services/docker/__tests__/docker-manager.test.d.ts +5 -0
- package/dist/services/docker/__tests__/docker-manager.test.d.ts.map +1 -0
- package/dist/services/docker/__tests__/docker-manager.test.js +67 -0
- package/dist/services/docker/__tests__/docker-manager.test.js.map +1 -0
- package/dist/services/docker/docker-manager.d.ts +157 -0
- package/dist/services/docker/docker-manager.d.ts.map +1 -0
- package/dist/services/docker/docker-manager.js +516 -0
- package/dist/services/docker/docker-manager.js.map +1 -0
- package/dist/services/docker/index.d.ts +9 -0
- package/dist/services/docker/index.d.ts.map +1 -0
- package/dist/services/docker/index.js +9 -0
- package/dist/services/docker/index.js.map +1 -0
- package/dist/services/index.d.ts +10 -0
- package/dist/services/index.d.ts.map +1 -0
- package/dist/services/index.js +8 -0
- package/dist/services/index.js.map +1 -0
- package/dist/shared/errors/__tests__/base.error.test.d.ts +5 -0
- package/dist/shared/errors/__tests__/base.error.test.d.ts.map +1 -0
- package/dist/shared/errors/__tests__/base.error.test.js +61 -0
- package/dist/shared/errors/__tests__/base.error.test.js.map +1 -0
- package/dist/shared/errors/__tests__/command.error.test.d.ts +5 -0
- package/dist/shared/errors/__tests__/command.error.test.d.ts.map +1 -0
- package/dist/shared/errors/__tests__/command.error.test.js +62 -0
- package/dist/shared/errors/__tests__/command.error.test.js.map +1 -0
- package/dist/shared/errors/__tests__/file.error.test.d.ts +5 -0
- package/dist/shared/errors/__tests__/file.error.test.d.ts.map +1 -0
- package/dist/shared/errors/__tests__/file.error.test.js +75 -0
- package/dist/shared/errors/__tests__/file.error.test.js.map +1 -0
- package/dist/shared/errors/__tests__/index.test.d.ts +5 -0
- package/dist/shared/errors/__tests__/index.test.d.ts.map +1 -0
- package/dist/shared/errors/__tests__/index.test.js +62 -0
- package/dist/shared/errors/__tests__/index.test.js.map +1 -0
- package/dist/shared/errors/__tests__/validation.error.test.d.ts +5 -0
- package/dist/shared/errors/__tests__/validation.error.test.d.ts.map +1 -0
- package/dist/shared/errors/__tests__/validation.error.test.js +79 -0
- package/dist/shared/errors/__tests__/validation.error.test.js.map +1 -0
- package/dist/shared/errors/base.error.d.ts +54 -0
- package/dist/shared/errors/base.error.d.ts.map +1 -0
- package/dist/shared/errors/base.error.js +85 -0
- package/dist/shared/errors/base.error.js.map +1 -0
- package/dist/shared/errors/command.error.d.ts +58 -0
- package/dist/shared/errors/command.error.d.ts.map +1 -0
- package/dist/shared/errors/command.error.js +102 -0
- package/dist/shared/errors/command.error.js.map +1 -0
- package/dist/shared/errors/detection.error.d.ts +42 -0
- package/dist/shared/errors/detection.error.d.ts.map +1 -0
- package/dist/shared/errors/detection.error.js +82 -0
- package/dist/shared/errors/detection.error.js.map +1 -0
- package/dist/shared/errors/docker.error.d.ts +142 -0
- package/dist/shared/errors/docker.error.d.ts.map +1 -0
- package/dist/shared/errors/docker.error.js +172 -0
- package/dist/shared/errors/docker.error.js.map +1 -0
- package/dist/shared/errors/file.error.d.ts +66 -0
- package/dist/shared/errors/file.error.d.ts.map +1 -0
- package/dist/shared/errors/file.error.js +93 -0
- package/dist/shared/errors/file.error.js.map +1 -0
- package/dist/shared/errors/index.d.ts +56 -0
- package/dist/shared/errors/index.d.ts.map +1 -0
- package/dist/shared/errors/index.js +86 -0
- package/dist/shared/errors/index.js.map +1 -0
- package/dist/shared/errors/validation.error.d.ts +67 -0
- package/dist/shared/errors/validation.error.d.ts.map +1 -0
- package/dist/shared/errors/validation.error.js +97 -0
- package/dist/shared/errors/validation.error.js.map +1 -0
- package/dist/shared/templates/index.d.ts +2 -0
- package/dist/shared/templates/index.d.ts.map +1 -0
- package/dist/shared/templates/index.js +2 -0
- package/dist/shared/templates/index.js.map +1 -0
- package/dist/shared/templates/prompt-builder.d.ts +2 -0
- package/dist/shared/templates/prompt-builder.d.ts.map +1 -0
- package/dist/shared/templates/prompt-builder.js +2 -0
- package/dist/shared/templates/prompt-builder.js.map +1 -0
- package/dist/shared/templates/template-engine.d.ts +2 -0
- package/dist/shared/templates/template-engine.d.ts.map +1 -0
- package/dist/shared/templates/template-engine.js +2 -0
- package/dist/shared/templates/template-engine.js.map +1 -0
- package/dist/shared/utils/__tests__/command-executor.test.d.ts +5 -0
- package/dist/shared/utils/__tests__/command-executor.test.d.ts.map +1 -0
- package/dist/shared/utils/__tests__/command-executor.test.js +45 -0
- package/dist/shared/utils/__tests__/command-executor.test.js.map +1 -0
- package/dist/shared/utils/__tests__/file-helper.test.d.ts +5 -0
- package/dist/shared/utils/__tests__/file-helper.test.d.ts.map +1 -0
- package/dist/shared/utils/__tests__/file-helper.test.js +71 -0
- package/dist/shared/utils/__tests__/file-helper.test.js.map +1 -0
- package/dist/shared/utils/__tests__/logger.test.d.ts +5 -0
- package/dist/shared/utils/__tests__/logger.test.d.ts.map +1 -0
- package/dist/shared/utils/__tests__/logger.test.js +83 -0
- package/dist/shared/utils/__tests__/logger.test.js.map +1 -0
- package/dist/shared/utils/command-executer.d.ts +2 -0
- package/dist/shared/utils/command-executer.d.ts.map +1 -0
- package/dist/shared/utils/command-executer.js +2 -0
- package/dist/shared/utils/command-executer.js.map +1 -0
- package/dist/shared/utils/command-executor.d.ts +255 -0
- package/dist/shared/utils/command-executor.d.ts.map +1 -0
- package/dist/shared/utils/command-executor.js +287 -0
- package/dist/shared/utils/command-executor.js.map +1 -0
- package/dist/shared/utils/file-helper.d.ts +86 -0
- package/dist/shared/utils/file-helper.d.ts.map +1 -0
- package/dist/shared/utils/file-helper.js +323 -0
- package/dist/shared/utils/file-helper.js.map +1 -0
- package/dist/shared/utils/index.d.ts +9 -0
- package/dist/shared/utils/index.d.ts.map +1 -0
- package/dist/shared/utils/index.js +9 -0
- package/dist/shared/utils/index.js.map +1 -0
- package/dist/shared/utils/logger.d.ts +163 -0
- package/dist/shared/utils/logger.d.ts.map +1 -0
- package/dist/shared/utils/logger.js +389 -0
- package/dist/shared/utils/logger.js.map +1 -0
- package/package.json +25 -6
- package/CHANGELOG.md +0 -46
- package/agents/deps-analyzer.js +0 -366
- package/agents/detector.js +0 -570
- package/agents/fix-engine.js +0 -305
- package/agents/lighthouse-scanner.js +0 -405
- package/agents/perf-analyzer.js +0 -294
- package/agents/perf-front-analyzer.js +0 -229
- package/agents/test-generator.js +0 -387
- package/agents/test-runner.js +0 -318
- package/bin/cli.js +0 -449
- package/lib/config.js +0 -250
- package/lib/docker.js +0 -207
- package/lib/reporter.js +0 -297
- package/scripts/dev.js +0 -106
|
@@ -0,0 +1,230 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Test Types
|
|
3
|
+
*
|
|
4
|
+
* Types for test generation, execution, and reporting.
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Test type categories
|
|
8
|
+
*/
|
|
9
|
+
export type TestType = 'unit' | 'integration' | 'e2e' | 'performance' | 'load' | 'security';
|
|
10
|
+
/**
|
|
11
|
+
* Test status states
|
|
12
|
+
*/
|
|
13
|
+
export type TestStatus = 'pending' | 'running' | 'passed' | 'failed' | 'skipped' | 'timed-out';
|
|
14
|
+
/**
|
|
15
|
+
* Test file format
|
|
16
|
+
*/
|
|
17
|
+
export type TestFormat = 'ts' | 'js' | 'tsx' | 'jsx';
|
|
18
|
+
/**
|
|
19
|
+
* Single test result
|
|
20
|
+
*/
|
|
21
|
+
export interface TestResult {
|
|
22
|
+
/** Test name/identifier */
|
|
23
|
+
name: string;
|
|
24
|
+
/** Test file path */
|
|
25
|
+
file: string;
|
|
26
|
+
/** Test status */
|
|
27
|
+
status: TestStatus;
|
|
28
|
+
/** Execution duration in milliseconds */
|
|
29
|
+
duration: number;
|
|
30
|
+
/** Error message if failed */
|
|
31
|
+
error?: string;
|
|
32
|
+
/** Error stack trace if failed */
|
|
33
|
+
stack?: string;
|
|
34
|
+
/** Retry attempt number */
|
|
35
|
+
retry?: number;
|
|
36
|
+
/** Flaky detection */
|
|
37
|
+
flaky?: boolean;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Test suite result
|
|
41
|
+
*/
|
|
42
|
+
export interface TestSuiteResult {
|
|
43
|
+
/** Suite name */
|
|
44
|
+
name: string;
|
|
45
|
+
/** File path */
|
|
46
|
+
file: string;
|
|
47
|
+
/** Individual test results */
|
|
48
|
+
tests: TestResult[];
|
|
49
|
+
/** Total duration in milliseconds */
|
|
50
|
+
duration: number;
|
|
51
|
+
/** Suite status (derived from tests) */
|
|
52
|
+
status: TestStatus;
|
|
53
|
+
/** Number of passed tests */
|
|
54
|
+
passed: number;
|
|
55
|
+
/** Number of failed tests */
|
|
56
|
+
failed: number;
|
|
57
|
+
/** Number of skipped tests */
|
|
58
|
+
skipped: number;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Test run summary
|
|
62
|
+
*/
|
|
63
|
+
export interface TestSummary {
|
|
64
|
+
/** Total number of tests */
|
|
65
|
+
total: number;
|
|
66
|
+
/** Number of passed tests */
|
|
67
|
+
passed: number;
|
|
68
|
+
/** Number of failed tests */
|
|
69
|
+
failed: number;
|
|
70
|
+
/** Number of skipped tests */
|
|
71
|
+
skipped: number;
|
|
72
|
+
/** Total duration in milliseconds */
|
|
73
|
+
duration: number;
|
|
74
|
+
/** Overall success status */
|
|
75
|
+
success: boolean;
|
|
76
|
+
/** Test suites */
|
|
77
|
+
suites: TestSuiteResult[];
|
|
78
|
+
/** Test run timestamp */
|
|
79
|
+
timestamp: Date;
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Coverage metrics
|
|
83
|
+
*/
|
|
84
|
+
export interface CoverageMetrics {
|
|
85
|
+
/** Line coverage percentage */
|
|
86
|
+
lines: number;
|
|
87
|
+
/** Branch coverage percentage */
|
|
88
|
+
branches: number;
|
|
89
|
+
/** Function coverage percentage */
|
|
90
|
+
functions: number;
|
|
91
|
+
/** Statement coverage percentage */
|
|
92
|
+
statements: number;
|
|
93
|
+
/** Overall percentage */
|
|
94
|
+
total: number;
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Coverage report
|
|
98
|
+
*/
|
|
99
|
+
export interface CoverageReport {
|
|
100
|
+
/** Coverage metrics */
|
|
101
|
+
metrics: CoverageMetrics;
|
|
102
|
+
/** Coverage by file */
|
|
103
|
+
files: FileCoverage[];
|
|
104
|
+
/** Uncovered lines by file */
|
|
105
|
+
uncovered: Record<string, number[]>;
|
|
106
|
+
/** Report timestamp */
|
|
107
|
+
timestamp: Date;
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* File coverage information
|
|
111
|
+
*/
|
|
112
|
+
export interface FileCoverage {
|
|
113
|
+
/** File path */
|
|
114
|
+
path: string;
|
|
115
|
+
/** Line coverage percentage */
|
|
116
|
+
lines: number;
|
|
117
|
+
/** Branch coverage percentage */
|
|
118
|
+
branches: number;
|
|
119
|
+
/** Function coverage percentage */
|
|
120
|
+
functions: number;
|
|
121
|
+
/** Statement coverage percentage */
|
|
122
|
+
statements: number;
|
|
123
|
+
/** Total percentage */
|
|
124
|
+
total: number;
|
|
125
|
+
/** Uncovered line numbers */
|
|
126
|
+
uncoveredLines: number[];
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Test generation options
|
|
130
|
+
*/
|
|
131
|
+
export interface TestGenerationOptions {
|
|
132
|
+
/** Test type to generate */
|
|
133
|
+
type: TestType;
|
|
134
|
+
/** Source file to test */
|
|
135
|
+
sourceFile: string;
|
|
136
|
+
/** Output directory */
|
|
137
|
+
outputDir: string;
|
|
138
|
+
/** Test framework */
|
|
139
|
+
framework: 'vitest' | 'jest' | 'mocha' | 'playwright' | 'cypress';
|
|
140
|
+
/** Include coverage setup */
|
|
141
|
+
includeCoverage?: boolean;
|
|
142
|
+
/** Generate snapshot tests */
|
|
143
|
+
snapshots?: boolean;
|
|
144
|
+
/** Test file format */
|
|
145
|
+
format?: TestFormat;
|
|
146
|
+
/** Custom template path */
|
|
147
|
+
templatePath?: string;
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Test generation result
|
|
151
|
+
*/
|
|
152
|
+
export interface TestGenerationResult {
|
|
153
|
+
/** Number of files generated */
|
|
154
|
+
filesGenerated: number;
|
|
155
|
+
/** Generated file paths */
|
|
156
|
+
files: string[];
|
|
157
|
+
/** Generation duration in milliseconds */
|
|
158
|
+
duration: number;
|
|
159
|
+
/** Warnings during generation */
|
|
160
|
+
warnings: string[];
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* Performance test threshold
|
|
164
|
+
*/
|
|
165
|
+
export interface PerformanceThreshold {
|
|
166
|
+
/** Metric name */
|
|
167
|
+
metric: string;
|
|
168
|
+
/** Maximum expected value */
|
|
169
|
+
max: number;
|
|
170
|
+
/** Minimum expected value */
|
|
171
|
+
min?: number;
|
|
172
|
+
/** Unit of measurement */
|
|
173
|
+
unit: 'ms' | 'bytes' | 'count' | 'percent';
|
|
174
|
+
}
|
|
175
|
+
/**
|
|
176
|
+
* Performance test result
|
|
177
|
+
*/
|
|
178
|
+
export interface PerformanceTestResult {
|
|
179
|
+
/** Test name */
|
|
180
|
+
name: string;
|
|
181
|
+
/** Metric values */
|
|
182
|
+
metrics: Record<string, number>;
|
|
183
|
+
/** Threshold results */
|
|
184
|
+
thresholds: Array<{
|
|
185
|
+
metric: string;
|
|
186
|
+
passed: boolean;
|
|
187
|
+
actual: number;
|
|
188
|
+
expected: number;
|
|
189
|
+
}>;
|
|
190
|
+
/** Overall pass/fail */
|
|
191
|
+
passed: boolean;
|
|
192
|
+
}
|
|
193
|
+
/**
|
|
194
|
+
* Load test configuration
|
|
195
|
+
*/
|
|
196
|
+
export interface LoadTestConfig {
|
|
197
|
+
/** Number of virtual users */
|
|
198
|
+
vus: number;
|
|
199
|
+
/** Test duration */
|
|
200
|
+
duration: string;
|
|
201
|
+
/** Target URL */
|
|
202
|
+
target: string;
|
|
203
|
+
/** Requests per second limit */
|
|
204
|
+
rps?: number;
|
|
205
|
+
/** Stages for ramp-up */
|
|
206
|
+
stages?: Array<{
|
|
207
|
+
duration: string;
|
|
208
|
+
target: number;
|
|
209
|
+
}>;
|
|
210
|
+
}
|
|
211
|
+
/**
|
|
212
|
+
* Load test result
|
|
213
|
+
*/
|
|
214
|
+
export interface LoadTestResult {
|
|
215
|
+
/** Total requests made */
|
|
216
|
+
totalRequests: number;
|
|
217
|
+
/** Requests per second */
|
|
218
|
+
rps: number;
|
|
219
|
+
/** Average response time in milliseconds */
|
|
220
|
+
avgResponseTime: number;
|
|
221
|
+
/** p95 response time in milliseconds */
|
|
222
|
+
p95ResponseTime: number;
|
|
223
|
+
/** p99 response time in milliseconds */
|
|
224
|
+
p99ResponseTime: number;
|
|
225
|
+
/** Error rate percentage */
|
|
226
|
+
errorRate: number;
|
|
227
|
+
/** Test passed thresholds */
|
|
228
|
+
passed: boolean;
|
|
229
|
+
}
|
|
230
|
+
//# sourceMappingURL=test.types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test.types.d.ts","sourceRoot":"","sources":["../../../src/core/types/test.types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test.types.js","sourceRoot":"","sources":["../../../src/core/types/test.types.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"framework-detector.test.d.ts","sourceRoot":"","sources":["../../../../src/services/detection/__tests__/framework-detector.test.ts"],"names":[],"mappings":"AAAA;;GAEG"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tests for FrameworkDetector service
|
|
3
|
+
*/
|
|
4
|
+
import { describe, it, expect, vi, beforeEach } from 'vitest';
|
|
5
|
+
import { FrameworkDetector } from '../framework-detector.js';
|
|
6
|
+
// Mock fs/promises
|
|
7
|
+
vi.mock('node:fs/promises', () => ({
|
|
8
|
+
readFile: vi.fn(),
|
|
9
|
+
access: vi.fn(),
|
|
10
|
+
constants: { F_OK: 0 },
|
|
11
|
+
}));
|
|
12
|
+
describe('FrameworkDetector', () => {
|
|
13
|
+
let detector;
|
|
14
|
+
beforeEach(() => {
|
|
15
|
+
detector = new FrameworkDetector();
|
|
16
|
+
vi.clearAllMocks();
|
|
17
|
+
});
|
|
18
|
+
describe('constructor', () => {
|
|
19
|
+
it('should create detector', () => {
|
|
20
|
+
expect(detector).toBeInstanceOf(FrameworkDetector);
|
|
21
|
+
});
|
|
22
|
+
});
|
|
23
|
+
describe('detect', () => {
|
|
24
|
+
it('should have detect method', () => {
|
|
25
|
+
expect(typeof detector.detect).toBe('function');
|
|
26
|
+
});
|
|
27
|
+
});
|
|
28
|
+
describe('detectLanguage', () => {
|
|
29
|
+
it('should have language detection capability', () => {
|
|
30
|
+
expect(detector).toHaveProperty('detect');
|
|
31
|
+
});
|
|
32
|
+
});
|
|
33
|
+
describe('detectAll', () => {
|
|
34
|
+
it('should have detectAll method', () => {
|
|
35
|
+
expect(typeof detector.detectAll).toBe('function');
|
|
36
|
+
});
|
|
37
|
+
});
|
|
38
|
+
describe('clearCache', () => {
|
|
39
|
+
it('should clear cache', () => {
|
|
40
|
+
expect(() => detector.clearCache()).not.toThrow();
|
|
41
|
+
});
|
|
42
|
+
});
|
|
43
|
+
describe('getCacheStats', () => {
|
|
44
|
+
it('should return cache stats', () => {
|
|
45
|
+
const stats = detector.getCacheStats();
|
|
46
|
+
expect(stats).toHaveProperty('size');
|
|
47
|
+
expect(stats).toHaveProperty('keys');
|
|
48
|
+
expect(Array.isArray(stats.keys)).toBe(true);
|
|
49
|
+
});
|
|
50
|
+
});
|
|
51
|
+
});
|
|
52
|
+
//# sourceMappingURL=framework-detector.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"framework-detector.test.js","sourceRoot":"","sources":["../../../../src/services/detection/__tests__/framework-detector.test.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAE7D,mBAAmB;AACnB,EAAE,CAAC,IAAI,CAAC,kBAAkB,EAAE,GAAG,EAAE,CAAC,CAAC;IACjC,QAAQ,EAAE,EAAE,CAAC,EAAE,EAAE;IACjB,MAAM,EAAE,EAAE,CAAC,EAAE,EAAE;IACf,SAAS,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE;CACvB,CAAC,CAAC,CAAC;AAEJ,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;IACjC,IAAI,QAA2B,CAAC;IAEhC,UAAU,CAAC,GAAG,EAAE;QACd,QAAQ,GAAG,IAAI,iBAAiB,EAAE,CAAC;QACnC,EAAE,CAAC,aAAa,EAAE,CAAC;IACrB,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;QAC3B,EAAE,CAAC,wBAAwB,EAAE,GAAG,EAAE;YAChC,MAAM,CAAC,QAAQ,CAAC,CAAC,cAAc,CAAC,iBAAiB,CAAC,CAAC;QACrD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,QAAQ,EAAE,GAAG,EAAE;QACtB,EAAE,CAAC,2BAA2B,EAAE,GAAG,EAAE;YACnC,MAAM,CAAC,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAClD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;QAC9B,EAAE,CAAC,2CAA2C,EAAE,GAAG,EAAE;YACnD,MAAM,CAAC,QAAQ,CAAC,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;QAC5C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,WAAW,EAAE,GAAG,EAAE;QACzB,EAAE,CAAC,8BAA8B,EAAE,GAAG,EAAE;YACtC,MAAM,CAAC,OAAO,QAAQ,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACrD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;QAC1B,EAAE,CAAC,oBAAoB,EAAE,GAAG,EAAE;YAC5B,MAAM,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;QACpD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;QAC7B,EAAE,CAAC,2BAA2B,EAAE,GAAG,EAAE;YACnC,MAAM,KAAK,GAAG,QAAQ,CAAC,aAAa,EAAE,CAAC;YAEvC,MAAM,CAAC,KAAK,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;YACrC,MAAM,CAAC,KAAK,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;YACrC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Framework Detector Service
|
|
3
|
+
*
|
|
4
|
+
* Detects the web framework used in a project based on:
|
|
5
|
+
* - package.json dependencies
|
|
6
|
+
* - Configuration files
|
|
7
|
+
* - Project structure
|
|
8
|
+
*
|
|
9
|
+
* Ported from agents/detector.js FRAMEWORK_PATTERNS
|
|
10
|
+
*/
|
|
11
|
+
import type { Framework } from '../../core/types/project.types.js';
|
|
12
|
+
import type { DetectionResult, FrameworkPattern, DetectionResults } from '../../core/types/detection.types.js';
|
|
13
|
+
/**
|
|
14
|
+
* Framework Detector Options
|
|
15
|
+
*/
|
|
16
|
+
export interface FrameworkDetectorOptions {
|
|
17
|
+
/** Enable result caching */
|
|
18
|
+
enableCache?: boolean;
|
|
19
|
+
/** Cache TTL in milliseconds (default: 5 minutes) */
|
|
20
|
+
cacheTtl?: number;
|
|
21
|
+
/** Include backend frameworks in detection */
|
|
22
|
+
includeBackend?: boolean;
|
|
23
|
+
/** Custom patterns to add */
|
|
24
|
+
customPatterns?: FrameworkPattern[];
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Framework detection result with scoring
|
|
28
|
+
*/
|
|
29
|
+
export interface FrameworkScore {
|
|
30
|
+
/** Framework name */
|
|
31
|
+
framework: Framework;
|
|
32
|
+
/** Confidence score (0-1) */
|
|
33
|
+
score: number;
|
|
34
|
+
/** Evidence for this detection */
|
|
35
|
+
evidence: string[];
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Framework Detector Service
|
|
39
|
+
*
|
|
40
|
+
* Detects web frameworks from project structure and dependencies
|
|
41
|
+
*/
|
|
42
|
+
export declare class FrameworkDetector {
|
|
43
|
+
private cache;
|
|
44
|
+
private cacheTtl;
|
|
45
|
+
private patterns;
|
|
46
|
+
private includeBackend;
|
|
47
|
+
/**
|
|
48
|
+
* Create a new FrameworkDetector
|
|
49
|
+
*/
|
|
50
|
+
constructor(options?: FrameworkDetectorOptions);
|
|
51
|
+
/**
|
|
52
|
+
* Build combined pattern list
|
|
53
|
+
*/
|
|
54
|
+
private buildPatternList;
|
|
55
|
+
/**
|
|
56
|
+
* Detect framework for a project directory
|
|
57
|
+
*
|
|
58
|
+
* @param projectPath - Path to project root
|
|
59
|
+
* @returns Detection result with framework and confidence
|
|
60
|
+
*/
|
|
61
|
+
detect(projectPath: string): Promise<DetectionResult<Framework>>;
|
|
62
|
+
/**
|
|
63
|
+
* Detect all matching frameworks with scores
|
|
64
|
+
*
|
|
65
|
+
* @param projectPath - Path to project root
|
|
66
|
+
* @returns Array of frameworks sorted by confidence score
|
|
67
|
+
*/
|
|
68
|
+
detectWithScore(projectPath: string): Promise<FrameworkScore[]>;
|
|
69
|
+
/**
|
|
70
|
+
* Score a single framework pattern
|
|
71
|
+
*/
|
|
72
|
+
private scoreFramework;
|
|
73
|
+
/**
|
|
74
|
+
* Get all supported framework names
|
|
75
|
+
*
|
|
76
|
+
* @returns Array of framework names
|
|
77
|
+
*/
|
|
78
|
+
getSupportedFrameworks(): Framework[];
|
|
79
|
+
/**
|
|
80
|
+
* Get patterns for a specific framework
|
|
81
|
+
*
|
|
82
|
+
* @param framework - Framework name
|
|
83
|
+
* @returns Framework pattern or undefined
|
|
84
|
+
*/
|
|
85
|
+
getFrameworkPattern(framework: Framework): FrameworkPattern | undefined;
|
|
86
|
+
/**
|
|
87
|
+
* Check if a framework is detected with high confidence
|
|
88
|
+
*
|
|
89
|
+
* @param projectPath - Path to project root
|
|
90
|
+
* @param framework - Framework to check
|
|
91
|
+
* @param threshold - Minimum confidence threshold (default: 0.7)
|
|
92
|
+
* @returns True if framework is detected with confidence >= threshold
|
|
93
|
+
*/
|
|
94
|
+
isFramework(projectPath: string, framework: Framework, threshold?: number): Promise<boolean>;
|
|
95
|
+
/**
|
|
96
|
+
* Get all detected frameworks as a ranked list
|
|
97
|
+
*
|
|
98
|
+
* @param projectPath - Path to project root
|
|
99
|
+
* @returns Array of framework names ranked by confidence
|
|
100
|
+
*/
|
|
101
|
+
getRankedList(projectPath: string): Promise<Framework[]>;
|
|
102
|
+
/**
|
|
103
|
+
* Clear the detection cache
|
|
104
|
+
*/
|
|
105
|
+
clearCache(): void;
|
|
106
|
+
/**
|
|
107
|
+
* Get cache statistics
|
|
108
|
+
*/
|
|
109
|
+
getCacheStats(): {
|
|
110
|
+
size: number;
|
|
111
|
+
keys: string[];
|
|
112
|
+
};
|
|
113
|
+
/**
|
|
114
|
+
* Read and parse package.json
|
|
115
|
+
*/
|
|
116
|
+
private readPackageJson;
|
|
117
|
+
/**
|
|
118
|
+
* Get dependencies based on scope
|
|
119
|
+
*/
|
|
120
|
+
private getDeps;
|
|
121
|
+
/**
|
|
122
|
+
* Check if file exists
|
|
123
|
+
*/
|
|
124
|
+
private fileExists;
|
|
125
|
+
/**
|
|
126
|
+
* Get cache key for project path
|
|
127
|
+
*/
|
|
128
|
+
private getCacheKey;
|
|
129
|
+
/**
|
|
130
|
+
* Get cached result if available and not expired
|
|
131
|
+
*/
|
|
132
|
+
private getFromCache;
|
|
133
|
+
/**
|
|
134
|
+
* Store result in cache
|
|
135
|
+
*/
|
|
136
|
+
private setToCache;
|
|
137
|
+
/**
|
|
138
|
+
* Detect all project information (framework, language, test runner, database)
|
|
139
|
+
*
|
|
140
|
+
* @param projectPath - Path to project root
|
|
141
|
+
* @param options - Detection options
|
|
142
|
+
* @returns Complete detection results
|
|
143
|
+
*/
|
|
144
|
+
detectAll(projectPath: string, options?: {
|
|
145
|
+
verbose?: boolean;
|
|
146
|
+
}): Promise<DetectionResults>;
|
|
147
|
+
/**
|
|
148
|
+
* Detect project language
|
|
149
|
+
*/
|
|
150
|
+
private detectLanguage;
|
|
151
|
+
/**
|
|
152
|
+
* Detect test runner
|
|
153
|
+
*/
|
|
154
|
+
private detectTestRunner;
|
|
155
|
+
/**
|
|
156
|
+
* Detect database
|
|
157
|
+
*/
|
|
158
|
+
private detectDatabase;
|
|
159
|
+
/**
|
|
160
|
+
* Count test files in project
|
|
161
|
+
*/
|
|
162
|
+
private countTestFiles;
|
|
163
|
+
/**
|
|
164
|
+
* Recursively count test files in directory
|
|
165
|
+
*/
|
|
166
|
+
private countTestsInDir;
|
|
167
|
+
}
|
|
168
|
+
/**
|
|
169
|
+
* Get or create default framework detector
|
|
170
|
+
*/
|
|
171
|
+
export declare function getFrameworkDetector(options?: FrameworkDetectorOptions): FrameworkDetector;
|
|
172
|
+
/**
|
|
173
|
+
* Quick detection function using default detector
|
|
174
|
+
*
|
|
175
|
+
* @param projectPath - Path to project root
|
|
176
|
+
* @returns Detected framework or null
|
|
177
|
+
*/
|
|
178
|
+
export declare function detectFramework(projectPath: string): Promise<Framework>;
|
|
179
|
+
//# sourceMappingURL=framework-detector.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"framework-detector.d.ts","sourceRoot":"","sources":["../../../src/services/detection/framework-detector.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,OAAO,KAAK,EAAE,SAAS,EAAqC,MAAM,mCAAmC,CAAC;AACtG,OAAO,KAAK,EAAE,eAAe,EAAE,gBAAgB,EAAE,gBAAgB,EAAoE,MAAM,qCAAqC,CAAC;AA6IjL;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,4BAA4B;IAC5B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,qDAAqD;IACrD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,8CAA8C;IAC9C,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,6BAA6B;IAC7B,cAAc,CAAC,EAAE,gBAAgB,EAAE,CAAC;CACrC;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,qBAAqB;IACrB,SAAS,EAAE,SAAS,CAAC;IACrB,6BAA6B;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,kCAAkC;IAClC,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED;;;;GAIG;AACH,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,KAAK,CAAsC;IACnD,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,QAAQ,CAAqB;IACrC,OAAO,CAAC,cAAc,CAAU;IAEhC;;OAEG;gBACS,OAAO,GAAE,wBAA6B;IAMlD;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAWxB;;;;;OAKG;IACG,MAAM,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;IAiCtE;;;;;OAKG;IACG,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAuCrE;;OAEG;YACW,cAAc;IA8D5B;;;;OAIG;IACH,sBAAsB,IAAI,SAAS,EAAE;IAIrC;;;;;OAKG;IACH,mBAAmB,CAAC,SAAS,EAAE,SAAS,GAAG,gBAAgB,GAAG,SAAS;IAIvE;;;;;;;OAOG;IACG,WAAW,CACf,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,SAAS,EACpB,SAAS,GAAE,MAAY,GACtB,OAAO,CAAC,OAAO,CAAC;IAKnB;;;;;OAKG;IACG,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAK9D;;OAEG;IACH,UAAU,IAAI,IAAI;IAIlB;;OAEG;IACH,aAAa,IAAI;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,EAAE,CAAA;KAAE;IAOjD;;OAEG;YACW,eAAe;IAU7B;;OAEG;IACH,OAAO,CAAC,OAAO;IAOf;;OAEG;YACW,UAAU;IASxB;;OAEG;IACH,OAAO,CAAC,WAAW;IAInB;;OAEG;IACH,OAAO,CAAC,YAAY;IAapB;;OAEG;IACH,OAAO,CAAC,UAAU;IAOlB;;;;;;OAMG;IACG,SAAS,CACb,WAAW,EAAE,MAAM,EACnB,OAAO,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,OAAO,CAAA;KAAE,GAC9B,OAAO,CAAC,gBAAgB,CAAC;IAgD5B;;OAEG;YACW,cAAc;IAsB5B;;OAEG;YACW,gBAAgB;IAoC9B;;OAEG;YACW,cAAc;IA2B5B;;OAEG;YACW,cAAc;IAyC5B;;OAEG;YACW,eAAe;CA4B9B;AAOD;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,CAAC,EAAE,wBAAwB,GAAG,iBAAiB,CAK1F;AAED;;;;;GAKG;AACH,wBAAsB,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,CAI7E"}
|