@vibe-validate/core 0.9.0 → 0.9.4
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/runner.d.ts +139 -15
- package/dist/runner.d.ts.map +1 -1
- package/dist/runner.js +145 -19
- package/dist/runner.js.map +1 -1
- package/dist/types.d.ts +5 -5
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/runner.d.ts
CHANGED
|
@@ -9,23 +9,46 @@
|
|
|
9
9
|
*
|
|
10
10
|
* @packageDocumentation
|
|
11
11
|
*/
|
|
12
|
+
import { type ChildProcess } from 'child_process';
|
|
12
13
|
import type { ValidationStep, ValidationResult, ValidationConfig, StepResult } from './types.js';
|
|
13
14
|
/**
|
|
14
15
|
* Git tree hash calculator
|
|
15
16
|
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
17
|
+
* NOTE: This is a simplified fallback implementation.
|
|
18
|
+
* For production use, prefer @vibe-validate/git package which provides
|
|
19
|
+
* deterministic git tree hashing using git write-tree instead of git stash create.
|
|
18
20
|
*
|
|
19
|
-
*
|
|
20
|
-
*
|
|
21
|
-
* git write-tree # Content-based hash (no timestamps)
|
|
22
|
-
* git reset # Restore index
|
|
21
|
+
* This implementation uses git stash create, which includes timestamps and is
|
|
22
|
+
* non-deterministic (same code content may produce different hashes).
|
|
23
23
|
*
|
|
24
|
-
* @returns SHA-1 hash representing working tree state (
|
|
24
|
+
* @returns SHA-1 hash representing working tree state (non-deterministic)
|
|
25
|
+
* @internal
|
|
25
26
|
*/
|
|
26
27
|
export declare function getWorkingTreeHash(): string;
|
|
27
28
|
/**
|
|
28
29
|
* Check if validation has already passed for current working tree state
|
|
30
|
+
*
|
|
31
|
+
* Reads the validation state file and compares the git tree hash to determine
|
|
32
|
+
* if validation can be skipped (cache hit).
|
|
33
|
+
*
|
|
34
|
+
* @param currentTreeHash - Current git tree hash of working directory
|
|
35
|
+
* @param stateFilePath - Path to validation state file
|
|
36
|
+
* @returns Object with alreadyPassed flag and optional previousState
|
|
37
|
+
*
|
|
38
|
+
* @example
|
|
39
|
+
* ```typescript
|
|
40
|
+
* const { alreadyPassed, previousState } = checkExistingValidation(
|
|
41
|
+
* 'abc123...',
|
|
42
|
+
* '.validate-state.json'
|
|
43
|
+
* );
|
|
44
|
+
*
|
|
45
|
+
* if (alreadyPassed) {
|
|
46
|
+
* console.log('Validation already passed!');
|
|
47
|
+
* return previousState;
|
|
48
|
+
* }
|
|
49
|
+
* ```
|
|
50
|
+
*
|
|
51
|
+
* @public
|
|
29
52
|
*/
|
|
30
53
|
export declare function checkExistingValidation(currentTreeHash: string, stateFilePath: string): {
|
|
31
54
|
alreadyPassed: boolean;
|
|
@@ -33,17 +56,61 @@ export declare function checkExistingValidation(currentTreeHash: string, stateFi
|
|
|
33
56
|
};
|
|
34
57
|
/**
|
|
35
58
|
* Parse test output to extract specific failures
|
|
36
|
-
*
|
|
59
|
+
*
|
|
60
|
+
* Extracts failure details from validation step output using pattern matching.
|
|
61
|
+
* Supports Vitest, TypeScript, and ESLint error formats.
|
|
62
|
+
*
|
|
63
|
+
* Note: This is a basic implementation - the formatters package provides
|
|
64
|
+
* more sophisticated parsing with tool-specific formatters.
|
|
65
|
+
*
|
|
66
|
+
* @param output - Raw stdout/stderr output from validation step
|
|
67
|
+
* @returns Array of extracted failure messages (max 10 per failure type)
|
|
68
|
+
*
|
|
69
|
+
* @example
|
|
70
|
+
* ```typescript
|
|
71
|
+
* const output = `
|
|
72
|
+
* ❌ should validate user input
|
|
73
|
+
* src/user.ts(42,10): error TS2345: Argument type mismatch
|
|
74
|
+
* `;
|
|
75
|
+
*
|
|
76
|
+
* const failures = parseFailures(output);
|
|
77
|
+
* // ['❌ should validate user input', 'src/user.ts(42,10): error TS2345: ...']
|
|
78
|
+
* ```
|
|
79
|
+
*
|
|
80
|
+
* @public
|
|
37
81
|
*/
|
|
38
82
|
export declare function parseFailures(output: string): string[];
|
|
39
83
|
/**
|
|
40
84
|
* Run validation steps in parallel with smart fail-fast
|
|
41
85
|
*
|
|
42
|
-
*
|
|
43
|
-
*
|
|
44
|
-
*
|
|
86
|
+
* Executes multiple validation steps concurrently, capturing output and
|
|
87
|
+
* providing fail-fast termination if enabled. Each step runs in its own
|
|
88
|
+
* detached process group for clean termination.
|
|
89
|
+
*
|
|
90
|
+
* @param steps - Array of validation steps to execute in parallel
|
|
91
|
+
* @param phaseName - Human-readable phase name for logging
|
|
45
92
|
* @param enableFailFast - If true, kills remaining processes on first failure
|
|
46
|
-
* @param env -
|
|
93
|
+
* @param env - Additional environment variables for child processes
|
|
94
|
+
* @returns Promise resolving to execution results with outputs and step results
|
|
95
|
+
*
|
|
96
|
+
* @example
|
|
97
|
+
* ```typescript
|
|
98
|
+
* const result = await runStepsInParallel(
|
|
99
|
+
* [
|
|
100
|
+
* { name: 'TypeScript', command: 'pnpm typecheck' },
|
|
101
|
+
* { name: 'ESLint', command: 'pnpm lint' },
|
|
102
|
+
* ],
|
|
103
|
+
* 'Pre-Qualification',
|
|
104
|
+
* true, // Enable fail-fast
|
|
105
|
+
* { NODE_ENV: 'test' }
|
|
106
|
+
* );
|
|
107
|
+
*
|
|
108
|
+
* if (!result.success) {
|
|
109
|
+
* console.error(`Step ${result.failedStep?.name} failed`);
|
|
110
|
+
* }
|
|
111
|
+
* ```
|
|
112
|
+
*
|
|
113
|
+
* @public
|
|
47
114
|
*/
|
|
48
115
|
export declare function runStepsInParallel(steps: ValidationStep[], phaseName: string, enableFailFast?: boolean, env?: Record<string, string>): Promise<{
|
|
49
116
|
success: boolean;
|
|
@@ -54,13 +121,70 @@ export declare function runStepsInParallel(steps: ValidationStep[], phaseName: s
|
|
|
54
121
|
/**
|
|
55
122
|
* Validation runner with state tracking and caching
|
|
56
123
|
*
|
|
57
|
-
* Main entry point for running validation with git tree hash caching
|
|
124
|
+
* Main entry point for running validation with git tree hash-based caching.
|
|
125
|
+
* Executes validation phases sequentially, with parallel step execution within
|
|
126
|
+
* each phase. Supports fail-fast termination and comprehensive state tracking.
|
|
127
|
+
*
|
|
128
|
+
* Features:
|
|
129
|
+
* - Git tree hash-based caching (skip if code unchanged)
|
|
130
|
+
* - Parallel step execution within phases
|
|
131
|
+
* - Fail-fast mode (stop on first failure)
|
|
132
|
+
* - Comprehensive output logging
|
|
133
|
+
* - State file persistence for cache validation
|
|
134
|
+
*
|
|
135
|
+
* @param config - Validation configuration with phases, steps, and options
|
|
136
|
+
* @returns Promise resolving to validation result with pass/fail status
|
|
137
|
+
*
|
|
138
|
+
* @example
|
|
139
|
+
* ```typescript
|
|
140
|
+
* const result = await runValidation({
|
|
141
|
+
* phases: [
|
|
142
|
+
* {
|
|
143
|
+
* name: 'Pre-Qualification',
|
|
144
|
+
* parallel: true,
|
|
145
|
+
* steps: [
|
|
146
|
+
* { name: 'TypeScript', command: 'pnpm typecheck' },
|
|
147
|
+
* { name: 'ESLint', command: 'pnpm lint' },
|
|
148
|
+
* ],
|
|
149
|
+
* },
|
|
150
|
+
* ],
|
|
151
|
+
* stateFilePath: '.vibe-validate-state.yaml',
|
|
152
|
+
* enableFailFast: false,
|
|
153
|
+
* forceRun: false,
|
|
154
|
+
* });
|
|
155
|
+
*
|
|
156
|
+
* if (result.passed) {
|
|
157
|
+
* console.log('✅ Validation passed');
|
|
158
|
+
* } else {
|
|
159
|
+
* console.error(`❌ Failed at step: ${result.failedStep}`);
|
|
160
|
+
* console.error(result.failedStepOutput);
|
|
161
|
+
* }
|
|
162
|
+
* ```
|
|
163
|
+
*
|
|
164
|
+
* @public
|
|
58
165
|
*/
|
|
59
166
|
export declare function runValidation(config: ValidationConfig): Promise<ValidationResult>;
|
|
60
167
|
/**
|
|
61
168
|
* Setup signal handlers for graceful cleanup
|
|
62
169
|
*
|
|
63
|
-
*
|
|
170
|
+
* Registers SIGTERM and SIGINT handlers to ensure all active child processes
|
|
171
|
+
* are properly terminated when the validation runner is interrupted.
|
|
172
|
+
*
|
|
173
|
+
* @param activeProcesses - Set of active child processes to track for cleanup
|
|
174
|
+
*
|
|
175
|
+
* @example
|
|
176
|
+
* ```typescript
|
|
177
|
+
* const activeProcesses = new Set<ChildProcess>();
|
|
178
|
+
* setupSignalHandlers(activeProcesses);
|
|
179
|
+
*
|
|
180
|
+
* // When spawning new processes:
|
|
181
|
+
* const proc = spawn('npm', ['test']);
|
|
182
|
+
* activeProcesses.add(proc);
|
|
183
|
+
*
|
|
184
|
+
* // Cleanup is automatic on SIGTERM/SIGINT
|
|
185
|
+
* ```
|
|
186
|
+
*
|
|
187
|
+
* @public
|
|
64
188
|
*/
|
|
65
|
-
export declare function setupSignalHandlers(activeProcesses: Set<
|
|
189
|
+
export declare function setupSignalHandlers(activeProcesses: Set<ChildProcess>): void;
|
|
66
190
|
//# sourceMappingURL=runner.d.ts.map
|
package/dist/runner.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../src/runner.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;
|
|
1
|
+
{"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../src/runner.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAmB,KAAK,YAAY,EAAE,MAAM,eAAe,CAAC;AAKnE,OAAO,KAAK,EACV,cAAc,EACd,gBAAgB,EAChB,gBAAgB,EAChB,UAAU,EAEX,MAAM,YAAY,CAAC;AAEpB;;;;;;;;;;;;GAYG;AACH,wBAAgB,kBAAkB,IAAI,MAAM,CA0B3C;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,uBAAuB,CACrC,eAAe,EAAE,MAAM,EACvB,aAAa,EAAE,MAAM,GACpB;IAAE,aAAa,EAAE,OAAO,CAAC;IAAC,aAAa,CAAC,EAAE,gBAAgB,CAAA;CAAE,CAmB9D;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAsBtD;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,wBAAsB,kBAAkB,CACtC,KAAK,EAAE,cAAc,EAAE,EACvB,SAAS,EAAE,MAAM,EACjB,cAAc,GAAE,OAAe,EAC/B,GAAG,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAM,GAC/B,OAAO,CAAC;IACT,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,CAAC,EAAE,cAAc,CAAC;IAC5B,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,WAAW,EAAE,UAAU,EAAE,CAAC;CAC3B,CAAC,CAoFD;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4CG;AACH,wBAAsB,aAAa,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAkHvF;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,mBAAmB,CAAC,eAAe,EAAE,GAAG,CAAC,YAAY,CAAC,GAAG,IAAI,CAe5E"}
|
package/dist/runner.js
CHANGED
|
@@ -11,19 +11,21 @@
|
|
|
11
11
|
*/
|
|
12
12
|
import { spawn, execSync } from 'child_process';
|
|
13
13
|
import { writeFileSync, appendFileSync, existsSync, readFileSync } from 'fs';
|
|
14
|
+
import { tmpdir } from 'os';
|
|
15
|
+
import { join } from 'path';
|
|
14
16
|
import { stopProcessGroup } from './process-utils.js';
|
|
15
17
|
/**
|
|
16
18
|
* Git tree hash calculator
|
|
17
19
|
*
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
+
* NOTE: This is a simplified fallback implementation.
|
|
21
|
+
* For production use, prefer @vibe-validate/git package which provides
|
|
22
|
+
* deterministic git tree hashing using git write-tree instead of git stash create.
|
|
20
23
|
*
|
|
21
|
-
*
|
|
22
|
-
*
|
|
23
|
-
* git write-tree # Content-based hash (no timestamps)
|
|
24
|
-
* git reset # Restore index
|
|
24
|
+
* This implementation uses git stash create, which includes timestamps and is
|
|
25
|
+
* non-deterministic (same code content may produce different hashes).
|
|
25
26
|
*
|
|
26
|
-
* @returns SHA-1 hash representing working tree state (
|
|
27
|
+
* @returns SHA-1 hash representing working tree state (non-deterministic)
|
|
28
|
+
* @internal
|
|
27
29
|
*/
|
|
28
30
|
export function getWorkingTreeHash() {
|
|
29
31
|
try {
|
|
@@ -46,13 +48,35 @@ export function getWorkingTreeHash() {
|
|
|
46
48
|
stdio: ['pipe', 'pipe', 'ignore']
|
|
47
49
|
}).trim();
|
|
48
50
|
}
|
|
49
|
-
catch (
|
|
51
|
+
catch (_error) {
|
|
50
52
|
// Fallback for non-git repos or git command failures
|
|
51
53
|
return `nogit-${Date.now()}`;
|
|
52
54
|
}
|
|
53
55
|
}
|
|
54
56
|
/**
|
|
55
57
|
* Check if validation has already passed for current working tree state
|
|
58
|
+
*
|
|
59
|
+
* Reads the validation state file and compares the git tree hash to determine
|
|
60
|
+
* if validation can be skipped (cache hit).
|
|
61
|
+
*
|
|
62
|
+
* @param currentTreeHash - Current git tree hash of working directory
|
|
63
|
+
* @param stateFilePath - Path to validation state file
|
|
64
|
+
* @returns Object with alreadyPassed flag and optional previousState
|
|
65
|
+
*
|
|
66
|
+
* @example
|
|
67
|
+
* ```typescript
|
|
68
|
+
* const { alreadyPassed, previousState } = checkExistingValidation(
|
|
69
|
+
* 'abc123...',
|
|
70
|
+
* '.validate-state.json'
|
|
71
|
+
* );
|
|
72
|
+
*
|
|
73
|
+
* if (alreadyPassed) {
|
|
74
|
+
* console.log('Validation already passed!');
|
|
75
|
+
* return previousState;
|
|
76
|
+
* }
|
|
77
|
+
* ```
|
|
78
|
+
*
|
|
79
|
+
* @public
|
|
56
80
|
*/
|
|
57
81
|
export function checkExistingValidation(currentTreeHash, stateFilePath) {
|
|
58
82
|
if (!existsSync(stateFilePath)) {
|
|
@@ -68,13 +92,34 @@ export function checkExistingValidation(currentTreeHash, stateFilePath) {
|
|
|
68
92
|
}
|
|
69
93
|
return { alreadyPassed: false, previousState: state };
|
|
70
94
|
}
|
|
71
|
-
catch (
|
|
95
|
+
catch (_error) {
|
|
72
96
|
return { alreadyPassed: false };
|
|
73
97
|
}
|
|
74
98
|
}
|
|
75
99
|
/**
|
|
76
100
|
* Parse test output to extract specific failures
|
|
77
|
-
*
|
|
101
|
+
*
|
|
102
|
+
* Extracts failure details from validation step output using pattern matching.
|
|
103
|
+
* Supports Vitest, TypeScript, and ESLint error formats.
|
|
104
|
+
*
|
|
105
|
+
* Note: This is a basic implementation - the formatters package provides
|
|
106
|
+
* more sophisticated parsing with tool-specific formatters.
|
|
107
|
+
*
|
|
108
|
+
* @param output - Raw stdout/stderr output from validation step
|
|
109
|
+
* @returns Array of extracted failure messages (max 10 per failure type)
|
|
110
|
+
*
|
|
111
|
+
* @example
|
|
112
|
+
* ```typescript
|
|
113
|
+
* const output = `
|
|
114
|
+
* ❌ should validate user input
|
|
115
|
+
* src/user.ts(42,10): error TS2345: Argument type mismatch
|
|
116
|
+
* `;
|
|
117
|
+
*
|
|
118
|
+
* const failures = parseFailures(output);
|
|
119
|
+
* // ['❌ should validate user input', 'src/user.ts(42,10): error TS2345: ...']
|
|
120
|
+
* ```
|
|
121
|
+
*
|
|
122
|
+
* @public
|
|
78
123
|
*/
|
|
79
124
|
export function parseFailures(output) {
|
|
80
125
|
const failures = [];
|
|
@@ -98,11 +143,34 @@ export function parseFailures(output) {
|
|
|
98
143
|
/**
|
|
99
144
|
* Run validation steps in parallel with smart fail-fast
|
|
100
145
|
*
|
|
101
|
-
*
|
|
102
|
-
*
|
|
103
|
-
*
|
|
146
|
+
* Executes multiple validation steps concurrently, capturing output and
|
|
147
|
+
* providing fail-fast termination if enabled. Each step runs in its own
|
|
148
|
+
* detached process group for clean termination.
|
|
149
|
+
*
|
|
150
|
+
* @param steps - Array of validation steps to execute in parallel
|
|
151
|
+
* @param phaseName - Human-readable phase name for logging
|
|
104
152
|
* @param enableFailFast - If true, kills remaining processes on first failure
|
|
105
|
-
* @param env -
|
|
153
|
+
* @param env - Additional environment variables for child processes
|
|
154
|
+
* @returns Promise resolving to execution results with outputs and step results
|
|
155
|
+
*
|
|
156
|
+
* @example
|
|
157
|
+
* ```typescript
|
|
158
|
+
* const result = await runStepsInParallel(
|
|
159
|
+
* [
|
|
160
|
+
* { name: 'TypeScript', command: 'pnpm typecheck' },
|
|
161
|
+
* { name: 'ESLint', command: 'pnpm lint' },
|
|
162
|
+
* ],
|
|
163
|
+
* 'Pre-Qualification',
|
|
164
|
+
* true, // Enable fail-fast
|
|
165
|
+
* { NODE_ENV: 'test' }
|
|
166
|
+
* );
|
|
167
|
+
*
|
|
168
|
+
* if (!result.success) {
|
|
169
|
+
* console.error(`Step ${result.failedStep?.name} failed`);
|
|
170
|
+
* }
|
|
171
|
+
* ```
|
|
172
|
+
*
|
|
173
|
+
* @public
|
|
106
174
|
*/
|
|
107
175
|
export async function runStepsInParallel(steps, phaseName, enableFailFast = false, env = {}) {
|
|
108
176
|
console.log(`\n🔍 Running ${phaseName} (${steps.length} steps in parallel)...`);
|
|
@@ -144,6 +212,9 @@ export async function runStepsInParallel(steps, phaseName, enableFailFast = fals
|
|
|
144
212
|
}
|
|
145
213
|
else {
|
|
146
214
|
// On first failure, kill other processes if fail-fast enabled
|
|
215
|
+
// RACE CONDITION SAFE: While multiple processes could fail simultaneously,
|
|
216
|
+
// JavaScript's single-threaded event loop ensures atomic assignment.
|
|
217
|
+
// Even if multiple failures occur, only one will be firstFailure, which is acceptable.
|
|
147
218
|
if (enableFailFast && !firstFailure) {
|
|
148
219
|
firstFailure = { step, output };
|
|
149
220
|
console.log(`\n⚠️ Fail-fast enabled: Killing remaining processes...`);
|
|
@@ -172,10 +243,50 @@ export async function runStepsInParallel(steps, phaseName, enableFailFast = fals
|
|
|
172
243
|
/**
|
|
173
244
|
* Validation runner with state tracking and caching
|
|
174
245
|
*
|
|
175
|
-
* Main entry point for running validation with git tree hash caching
|
|
246
|
+
* Main entry point for running validation with git tree hash-based caching.
|
|
247
|
+
* Executes validation phases sequentially, with parallel step execution within
|
|
248
|
+
* each phase. Supports fail-fast termination and comprehensive state tracking.
|
|
249
|
+
*
|
|
250
|
+
* Features:
|
|
251
|
+
* - Git tree hash-based caching (skip if code unchanged)
|
|
252
|
+
* - Parallel step execution within phases
|
|
253
|
+
* - Fail-fast mode (stop on first failure)
|
|
254
|
+
* - Comprehensive output logging
|
|
255
|
+
* - State file persistence for cache validation
|
|
256
|
+
*
|
|
257
|
+
* @param config - Validation configuration with phases, steps, and options
|
|
258
|
+
* @returns Promise resolving to validation result with pass/fail status
|
|
259
|
+
*
|
|
260
|
+
* @example
|
|
261
|
+
* ```typescript
|
|
262
|
+
* const result = await runValidation({
|
|
263
|
+
* phases: [
|
|
264
|
+
* {
|
|
265
|
+
* name: 'Pre-Qualification',
|
|
266
|
+
* parallel: true,
|
|
267
|
+
* steps: [
|
|
268
|
+
* { name: 'TypeScript', command: 'pnpm typecheck' },
|
|
269
|
+
* { name: 'ESLint', command: 'pnpm lint' },
|
|
270
|
+
* ],
|
|
271
|
+
* },
|
|
272
|
+
* ],
|
|
273
|
+
* stateFilePath: '.vibe-validate-state.yaml',
|
|
274
|
+
* enableFailFast: false,
|
|
275
|
+
* forceRun: false,
|
|
276
|
+
* });
|
|
277
|
+
*
|
|
278
|
+
* if (result.passed) {
|
|
279
|
+
* console.log('✅ Validation passed');
|
|
280
|
+
* } else {
|
|
281
|
+
* console.error(`❌ Failed at step: ${result.failedStep}`);
|
|
282
|
+
* console.error(result.failedStepOutput);
|
|
283
|
+
* }
|
|
284
|
+
* ```
|
|
285
|
+
*
|
|
286
|
+
* @public
|
|
176
287
|
*/
|
|
177
288
|
export async function runValidation(config) {
|
|
178
|
-
const { phases, stateFilePath = '.validate-state.json', logPath =
|
|
289
|
+
const { phases, stateFilePath = '.validate-state.json', logPath = join(tmpdir(), `validation-${new Date().toISOString().replace(/[:.]/g, '-')}.log`), enableFailFast = false, forceRun = false, env = {}, onPhaseStart, onPhaseComplete, } = config;
|
|
179
290
|
// Get current working tree hash
|
|
180
291
|
const currentTreeHash = getWorkingTreeHash();
|
|
181
292
|
// Check if validation already passed for this exact code state
|
|
@@ -190,7 +301,6 @@ export async function runValidation(config) {
|
|
|
190
301
|
}
|
|
191
302
|
// Initialize log file
|
|
192
303
|
writeFileSync(logPath, `Validation started at ${new Date().toISOString()}\n\n`);
|
|
193
|
-
let fullOutput = '';
|
|
194
304
|
let failedStep = null;
|
|
195
305
|
const phaseResults = [];
|
|
196
306
|
// Run each phase
|
|
@@ -207,7 +317,6 @@ export async function runValidation(config) {
|
|
|
207
317
|
appendFileSync(logPath, `${stepName}${result.failedStep?.name === stepName ? ' - FAILED' : ''}\n`);
|
|
208
318
|
appendFileSync(logPath, `${'='.repeat(60)}\n`);
|
|
209
319
|
appendFileSync(logPath, output);
|
|
210
|
-
fullOutput += output;
|
|
211
320
|
}
|
|
212
321
|
// Record phase result
|
|
213
322
|
const phaseResult = {
|
|
@@ -260,7 +369,24 @@ export async function runValidation(config) {
|
|
|
260
369
|
/**
|
|
261
370
|
* Setup signal handlers for graceful cleanup
|
|
262
371
|
*
|
|
263
|
-
*
|
|
372
|
+
* Registers SIGTERM and SIGINT handlers to ensure all active child processes
|
|
373
|
+
* are properly terminated when the validation runner is interrupted.
|
|
374
|
+
*
|
|
375
|
+
* @param activeProcesses - Set of active child processes to track for cleanup
|
|
376
|
+
*
|
|
377
|
+
* @example
|
|
378
|
+
* ```typescript
|
|
379
|
+
* const activeProcesses = new Set<ChildProcess>();
|
|
380
|
+
* setupSignalHandlers(activeProcesses);
|
|
381
|
+
*
|
|
382
|
+
* // When spawning new processes:
|
|
383
|
+
* const proc = spawn('npm', ['test']);
|
|
384
|
+
* activeProcesses.add(proc);
|
|
385
|
+
*
|
|
386
|
+
* // Cleanup is automatic on SIGTERM/SIGINT
|
|
387
|
+
* ```
|
|
388
|
+
*
|
|
389
|
+
* @public
|
|
264
390
|
*/
|
|
265
391
|
export function setupSignalHandlers(activeProcesses) {
|
|
266
392
|
const cleanup = async (signal) => {
|
package/dist/runner.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runner.js","sourceRoot":"","sources":["../src/runner.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,KAAK,EAAE,QAAQ,
|
|
1
|
+
{"version":3,"file":"runner.js","sourceRoot":"","sources":["../src/runner.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -90,7 +90,7 @@ export interface ValidationConfig {
|
|
|
90
90
|
phases: ValidationPhase[];
|
|
91
91
|
/** Path to state file (default: .validate-state.json) */
|
|
92
92
|
stateFilePath?: string;
|
|
93
|
-
/** Path to log file (default: /
|
|
93
|
+
/** Path to log file (default: os.tmpdir()/validation-{timestamp}.log) */
|
|
94
94
|
logPath?: string;
|
|
95
95
|
/** Enable fail-fast (stop on first failure) */
|
|
96
96
|
enableFailFast?: boolean;
|
|
@@ -99,13 +99,13 @@ export interface ValidationConfig {
|
|
|
99
99
|
/** Environment variables to pass to all child processes */
|
|
100
100
|
env?: Record<string, string>;
|
|
101
101
|
/** Callback when phase starts */
|
|
102
|
-
onPhaseStart?: (
|
|
102
|
+
onPhaseStart?: (_phase: ValidationPhase) => void;
|
|
103
103
|
/** Callback when phase completes */
|
|
104
|
-
onPhaseComplete?: (
|
|
104
|
+
onPhaseComplete?: (_phase: ValidationPhase, _result: PhaseResult) => void;
|
|
105
105
|
/** Callback when step starts */
|
|
106
|
-
onStepStart?: (
|
|
106
|
+
onStepStart?: (_step: ValidationStep) => void;
|
|
107
107
|
/** Callback when step completes */
|
|
108
|
-
onStepComplete?: (
|
|
108
|
+
onStepComplete?: (_step: ValidationStep, _result: StepResult) => void;
|
|
109
109
|
/** Caching configuration */
|
|
110
110
|
caching?: {
|
|
111
111
|
/** Enable git tree hash caching */
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,+BAA+B;IAC/B,IAAI,EAAE,MAAM,CAAC;IAEb,0EAA0E;IAC1E,OAAO,EAAE,MAAM,CAAC;IAEhB,uCAAuC;IACvC,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,mDAAmD;IACnD,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC9B;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,gCAAgC;IAChC,IAAI,EAAE,MAAM,CAAC;IAEb,6BAA6B;IAC7B,QAAQ,EAAE,OAAO,CAAC;IAElB,wCAAwC;IACxC,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IAErB,qCAAqC;IACrC,KAAK,EAAE,cAAc,EAAE,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,gBAAgB;IAChB,IAAI,EAAE,MAAM,CAAC;IAEb,yBAAyB;IACzB,MAAM,EAAE,OAAO,CAAC;IAEhB,yCAAyC;IACzC,QAAQ,EAAE,MAAM,CAAC;IAEjB,6CAA6C;IAC7C,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,iBAAiB;IACjB,IAAI,EAAE,MAAM,CAAC;IAEb,+CAA+C;IAC/C,QAAQ,EAAE,MAAM,CAAC;IAEjB,0BAA0B;IAC1B,MAAM,EAAE,OAAO,CAAC;IAEhB,oCAAoC;IACpC,KAAK,EAAE,UAAU,EAAE,CAAC;IAEpB,uCAAuC;IACvC,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,2BAA2B;IAC3B,MAAM,EAAE,OAAO,CAAC;IAEhB,yBAAyB;IACzB,SAAS,EAAE,MAAM,CAAC;IAElB,qCAAqC;IACrC,QAAQ,EAAE,MAAM,CAAC;IAEjB,8BAA8B;IAC9B,MAAM,CAAC,EAAE,WAAW,EAAE,CAAC;IAEvB,mCAAmC;IACnC,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,oCAAoC;IACpC,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB,kCAAkC;IAClC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B,wCAAwC;IACxC,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IAEvB,4BAA4B;IAC5B,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,sBAAsB;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,mCAAmC;IACnC,MAAM,EAAE,eAAe,EAAE,CAAC;IAE1B,yDAAyD;IACzD,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|