@warlock.js/core 3.0.17 → 3.0.18
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/cjs/cache/cache-manager.d.ts +13 -0
- package/cjs/cache/cache-manager.d.ts.map +1 -0
- package/cjs/cache/cache-manager.js +82 -0
- package/cjs/cache/cache-manager.js.map +1 -0
- package/cjs/cache/index.d.ts +2 -0
- package/cjs/cache/index.d.ts.map +1 -0
- package/cjs/code-quality/formatters/summary-formatter.d.ts +18 -1
- package/cjs/code-quality/formatters/summary-formatter.d.ts.map +1 -1
- package/cjs/code-quality/formatters/summary-formatter.js +57 -9
- package/cjs/code-quality/formatters/summary-formatter.js.map +1 -1
- package/cjs/code-quality/index.d.ts +1 -0
- package/cjs/code-quality/index.d.ts.map +1 -1
- package/cjs/code-quality/issue-tracker.d.ts +61 -0
- package/cjs/code-quality/issue-tracker.d.ts.map +1 -0
- package/cjs/code-quality/issue-tracker.js +119 -0
- package/cjs/code-quality/issue-tracker.js.map +1 -0
- package/cjs/code-quality/project-scanner.d.ts.map +1 -1
- package/cjs/code-quality/project-scanner.js +9 -3
- package/cjs/code-quality/project-scanner.js.map +1 -1
- package/cjs/code-quality/single-file-checker.d.ts.map +1 -1
- package/cjs/code-quality/single-file-checker.js +78 -1
- package/cjs/code-quality/single-file-checker.js.map +1 -1
- package/cjs/starters/start-cli-server.js +1 -1
- package/cjs/starters/start-cli-server.js.map +1 -1
- package/cjs/starters/start-http-server.d.ts.map +1 -1
- package/cjs/starters/start-http-server.js +35 -8
- package/cjs/starters/start-http-server.js.map +1 -1
- package/esm/cache/cache-manager.d.ts +13 -0
- package/esm/cache/cache-manager.d.ts.map +1 -0
- package/esm/cache/cache-manager.js +82 -0
- package/esm/cache/cache-manager.js.map +1 -0
- package/esm/cache/index.d.ts +2 -0
- package/esm/cache/index.d.ts.map +1 -0
- package/esm/code-quality/formatters/summary-formatter.d.ts +18 -1
- package/esm/code-quality/formatters/summary-formatter.d.ts.map +1 -1
- package/esm/code-quality/formatters/summary-formatter.js +57 -9
- package/esm/code-quality/formatters/summary-formatter.js.map +1 -1
- package/esm/code-quality/index.d.ts +1 -0
- package/esm/code-quality/index.d.ts.map +1 -1
- package/esm/code-quality/issue-tracker.d.ts +61 -0
- package/esm/code-quality/issue-tracker.d.ts.map +1 -0
- package/esm/code-quality/issue-tracker.js +119 -0
- package/esm/code-quality/issue-tracker.js.map +1 -0
- package/esm/code-quality/project-scanner.d.ts.map +1 -1
- package/esm/code-quality/project-scanner.js +9 -3
- package/esm/code-quality/project-scanner.js.map +1 -1
- package/esm/code-quality/single-file-checker.d.ts.map +1 -1
- package/esm/code-quality/single-file-checker.js +78 -1
- package/esm/code-quality/single-file-checker.js.map +1 -1
- package/esm/starters/start-cli-server.js +1 -1
- package/esm/starters/start-cli-server.js.map +1 -1
- package/esm/starters/start-http-server.d.ts.map +1 -1
- package/esm/starters/start-http-server.js +35 -8
- package/esm/starters/start-http-server.js.map +1 -1
- package/package.json +3 -3
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
type CleanStaleResult = {
|
|
2
|
+
needsFullBuild: boolean;
|
|
3
|
+
removedCount?: number;
|
|
4
|
+
checkedCount?: number;
|
|
5
|
+
duration?: number;
|
|
6
|
+
};
|
|
7
|
+
/**
|
|
8
|
+
* Clean stale cache files by comparing modification times with source files
|
|
9
|
+
* Uses manifest.json as the source of truth for file list
|
|
10
|
+
*/
|
|
11
|
+
export declare function cleanStaleCache(): Promise<CleanStaleResult>;
|
|
12
|
+
export {};
|
|
13
|
+
//# sourceMappingURL=cache-manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cache-manager.d.ts","sourceRoot":"","sources":["../../src/cache/cache-manager.ts"],"names":[],"mappings":"AAQA,KAAK,gBAAgB,GAAG;IACtB,cAAc,EAAE,OAAO,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF;;;GAGG;AACH,wBAAsB,eAAe,IAAI,OAAO,CAAC,gBAAgB,CAAC,CAuGjE"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
'use strict';var fs=require('@mongez/fs'),fs$1=require('fs/promises'),path=require('path'),serveLog=require('../starters/serve-log.js');require('@warlock.js/logger'),require('../utils/date-output.js'),require('../http/middleware/inject-request-context.js');var paths=require('../utils/paths.js');require('@mongez/slug'),require('@mongez/supportive-is'),require('@mongez/reinforcements');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var fs__default=/*#__PURE__*/_interopDefault(fs$1);var path__default=/*#__PURE__*/_interopDefault(path);const log = serveLog.httpLog;
|
|
2
|
+
/**
|
|
3
|
+
* Clean stale cache files by comparing modification times with source files
|
|
4
|
+
* Uses manifest.json as the source of truth for file list
|
|
5
|
+
*/
|
|
6
|
+
async function cleanStaleCache() {
|
|
7
|
+
const startTime = Date.now();
|
|
8
|
+
// Check if .warlock directory exists
|
|
9
|
+
if (!(await fs.directoryExistsAsync(paths.warlockPath()))) {
|
|
10
|
+
return { needsFullBuild: true };
|
|
11
|
+
}
|
|
12
|
+
// Check if .cache directory exists
|
|
13
|
+
const cacheDir = paths.warlockPath(".cache");
|
|
14
|
+
if (!(await fs.directoryExistsAsync(cacheDir))) {
|
|
15
|
+
return { needsFullBuild: true };
|
|
16
|
+
}
|
|
17
|
+
// Load manifest
|
|
18
|
+
const manifestPath = paths.warlockPath("manifest.json");
|
|
19
|
+
if (!(await fs.fileExistsAsync(manifestPath))) {
|
|
20
|
+
return { needsFullBuild: true };
|
|
21
|
+
}
|
|
22
|
+
let manifest;
|
|
23
|
+
try {
|
|
24
|
+
const manifestContent = await fs__default.default.readFile(manifestPath, "utf8");
|
|
25
|
+
manifest = JSON.parse(manifestContent);
|
|
26
|
+
}
|
|
27
|
+
catch (error) {
|
|
28
|
+
log.warn("cache", "scan", `Failed to parse manifest.json: ${error instanceof Error ? error.message : String(error)}`);
|
|
29
|
+
return { needsFullBuild: true };
|
|
30
|
+
}
|
|
31
|
+
const files = manifest.files || [];
|
|
32
|
+
let removedCount = 0;
|
|
33
|
+
let checkedCount = 0;
|
|
34
|
+
// Iterate through manifest files
|
|
35
|
+
for (const fileInfo of files) {
|
|
36
|
+
checkedCount++;
|
|
37
|
+
const sourcePath = fileInfo.fullPath; // Full path from manifest
|
|
38
|
+
const relativePath = fileInfo.path; // Relative path for logging
|
|
39
|
+
// Calculate cache filename the same way warlock-loader.mjs does
|
|
40
|
+
// Convert full path to relative from cwd, then replace / with -
|
|
41
|
+
const relativeFromCwd = path__default.default
|
|
42
|
+
.relative(process.cwd(), sourcePath)
|
|
43
|
+
.replace(/\\/g, "/");
|
|
44
|
+
const cacheFileName = relativeFromCwd
|
|
45
|
+
.replace(/^\./, "")
|
|
46
|
+
.replace(/\//g, "-");
|
|
47
|
+
const cacheFilePath = path__default.default.join(cacheDir, cacheFileName);
|
|
48
|
+
try {
|
|
49
|
+
// Check if cache exists
|
|
50
|
+
if (!(await fs.fileExistsAsync(cacheFilePath))) {
|
|
51
|
+
continue; // Cache will be created on first import
|
|
52
|
+
}
|
|
53
|
+
// Check if source file exists
|
|
54
|
+
if (!(await fs.fileExistsAsync(sourcePath))) {
|
|
55
|
+
// Source file doesn't exist anymore - remove cache
|
|
56
|
+
await fs__default.default.unlink(cacheFilePath);
|
|
57
|
+
removedCount++;
|
|
58
|
+
continue;
|
|
59
|
+
}
|
|
60
|
+
// Compare modification times
|
|
61
|
+
const [cacheStats, sourceStats] = await Promise.all([
|
|
62
|
+
fs__default.default.stat(cacheFilePath),
|
|
63
|
+
fs__default.default.stat(sourcePath),
|
|
64
|
+
]);
|
|
65
|
+
// If source is newer than cache, delete cache
|
|
66
|
+
if (sourceStats.mtimeMs > cacheStats.mtimeMs) {
|
|
67
|
+
await fs__default.default.unlink(cacheFilePath);
|
|
68
|
+
removedCount++;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
catch (error) {
|
|
72
|
+
// Log error but continue processing other files
|
|
73
|
+
log.warn("cache", "error", `Error checking ${relativePath}: ${error instanceof Error ? error.message : String(error)}`);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
const duration = Date.now() - startTime;
|
|
77
|
+
// Only log if we actually did work
|
|
78
|
+
if (removedCount > 0) {
|
|
79
|
+
log.success("cache", "clean", `Removed ${removedCount} stale cache files in ${duration}ms`);
|
|
80
|
+
}
|
|
81
|
+
return { needsFullBuild: false, removedCount, checkedCount, duration };
|
|
82
|
+
}exports.cleanStaleCache=cleanStaleCache;//# sourceMappingURL=cache-manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cache-manager.js","sources":["../../src/cache/cache-manager.ts"],"sourcesContent":[null],"names":["httpLog","directoryExistsAsync","warlockPath","fileExistsAsync","fs","path"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cache/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC"}
|
|
@@ -21,10 +21,27 @@ type ScanSummary = {
|
|
|
21
21
|
totalFiles: number;
|
|
22
22
|
scanTime: number;
|
|
23
23
|
};
|
|
24
|
+
type ProgressInfo = {
|
|
25
|
+
typescript: {
|
|
26
|
+
fixedFiles: number;
|
|
27
|
+
remainingFiles: number;
|
|
28
|
+
totalFilesInBaseline: number;
|
|
29
|
+
fixedErrors: number;
|
|
30
|
+
fixedWarnings: number;
|
|
31
|
+
};
|
|
32
|
+
eslint: {
|
|
33
|
+
fixedFiles: number;
|
|
34
|
+
remainingFiles: number;
|
|
35
|
+
totalFilesInBaseline: number;
|
|
36
|
+
fixedErrors: number;
|
|
37
|
+
fixedWarnings: number;
|
|
38
|
+
};
|
|
39
|
+
hasBaseline: boolean;
|
|
40
|
+
};
|
|
24
41
|
/**
|
|
25
42
|
* Display project scan summary
|
|
26
43
|
*/
|
|
27
|
-
export declare function displayScanSummary(summary: ScanSummary): void;
|
|
44
|
+
export declare function displayScanSummary(summary: ScanSummary, progress?: ProgressInfo): void;
|
|
28
45
|
/**
|
|
29
46
|
* Display compact file list (for project scan)
|
|
30
47
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"summary-formatter.d.ts","sourceRoot":"","sources":["../../../src/code-quality/formatters/summary-formatter.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"summary-formatter.d.ts","sourceRoot":"","sources":["../../../src/code-quality/formatters/summary-formatter.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,YAAY,CAAC;AAQ5B,KAAK,WAAW,GAAG;IACjB,UAAU,EAAE;QACV,UAAU,EAAE,MAAM,CAAC;QACnB,YAAY,EAAE,MAAM,CAAC;QACrB,eAAe,EAAE,KAAK,CAAC;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,CAAC;YAAC,QAAQ,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;KAC5E,CAAC;IACF,MAAM,EAAE;QACN,UAAU,EAAE,MAAM,CAAC;QACnB,YAAY,EAAE,MAAM,CAAC;QACrB,eAAe,EAAE,KAAK,CAAC;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,CAAC;YAAC,QAAQ,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;KAC5E,CAAC;IACF,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,KAAK,YAAY,GAAG;IAClB,UAAU,EAAE;QACV,UAAU,EAAE,MAAM,CAAC;QACnB,cAAc,EAAE,MAAM,CAAC;QACvB,oBAAoB,EAAE,MAAM,CAAC;QAC7B,WAAW,EAAE,MAAM,CAAC;QACpB,aAAa,EAAE,MAAM,CAAC;KACvB,CAAC;IACF,MAAM,EAAE;QACN,UAAU,EAAE,MAAM,CAAC;QACnB,cAAc,EAAE,MAAM,CAAC;QACvB,oBAAoB,EAAE,MAAM,CAAC;QAC7B,WAAW,EAAE,MAAM,CAAC;QACpB,aAAa,EAAE,MAAM,CAAC;KACvB,CAAC;IACF,WAAW,EAAE,OAAO,CAAC;CACtB,CAAC;AAEF;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,WAAW,EACpB,QAAQ,CAAC,EAAE,YAAY,QAkKxB;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,WAAW,EAAE,EAAE,CAAC,UAAU,EAAE,EAC5B,QAAQ,EAAE,MAAM,QAyBjB"}
|
|
@@ -1,15 +1,41 @@
|
|
|
1
1
|
'use strict';var copper=require('@mongez/copper'),path=require('path');require('typescript');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var path__default=/*#__PURE__*/_interopDefault(path);/**
|
|
2
|
+
* Maximum number of files to display in the summary
|
|
3
|
+
* Prevents overwhelming the terminal with too many files
|
|
4
|
+
*/
|
|
5
|
+
const MAX_FILES_TO_DISPLAY = 50;
|
|
6
|
+
/**
|
|
2
7
|
* Display project scan summary
|
|
3
8
|
*/
|
|
4
|
-
function displayScanSummary(summary) {
|
|
9
|
+
function displayScanSummary(summary, progress) {
|
|
5
10
|
console.log(copper.colors.cyanBright(`\n${"=".repeat(60)}\n${copper.colors.bold("📊 Code Quality Scan Complete")}\n${"=".repeat(60)}`));
|
|
6
11
|
const totalErrors = summary.typescript.errorCount + summary.eslint.errorCount;
|
|
7
12
|
const totalWarnings = summary.typescript.warningCount + summary.eslint.warningCount;
|
|
8
13
|
// TypeScript section
|
|
9
14
|
console.log(`\n${copper.colors.bold("⚡ TypeScript")} ${copper.colors.dim("→")} ${summary.typescript.errorCount > 0 ? copper.colors.red(`${summary.typescript.errorCount} errors`) : copper.colors.green("0 errors")}${copper.colors.dim(", ")}${summary.typescript.warningCount > 0 ? copper.colors.yellow(`${summary.typescript.warningCount} warnings`) : copper.colors.dim("0 warnings")}`);
|
|
15
|
+
// Display TypeScript progress if available
|
|
16
|
+
if (progress?.hasBaseline && progress.typescript.totalFilesInBaseline > 0) {
|
|
17
|
+
const tsProgress = progress.typescript;
|
|
18
|
+
const progressPercent = tsProgress.totalFilesInBaseline > 0
|
|
19
|
+
? Math.round((tsProgress.fixedFiles / tsProgress.totalFilesInBaseline) * 100)
|
|
20
|
+
: 0;
|
|
21
|
+
if (tsProgress.fixedFiles > 0) {
|
|
22
|
+
console.log(` ${copper.colors.greenBright("✓")} ${copper.colors.green(`Progress:`)} ${copper.colors.bold(`${tsProgress.fixedFiles}/${tsProgress.totalFilesInBaseline}`)} ${copper.colors.green("files fixed")} ${copper.colors.dim(`(${progressPercent}%)`)} ${copper.colors.dim("→")} ${copper.colors.yellow(`${tsProgress.remainingFiles} remaining`)}`);
|
|
23
|
+
if (tsProgress.fixedErrors > 0 || tsProgress.fixedWarnings > 0) {
|
|
24
|
+
const fixedParts = [];
|
|
25
|
+
if (tsProgress.fixedErrors > 0)
|
|
26
|
+
fixedParts.push(copper.colors.green(`${tsProgress.fixedErrors} errors`));
|
|
27
|
+
if (tsProgress.fixedWarnings > 0)
|
|
28
|
+
fixedParts.push(copper.colors.green(`${tsProgress.fixedWarnings} warnings`));
|
|
29
|
+
console.log(` ${copper.colors.dim("└─")} Fixed: ${fixedParts.join(copper.colors.dim(", "))}`);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
else {
|
|
33
|
+
console.log(` ${copper.colors.dim("Progress:")} ${copper.colors.yellow(`0/${tsProgress.totalFilesInBaseline}`)} ${copper.colors.dim("files fixed")} ${copper.colors.dim("→")} ${copper.colors.yellow(`${tsProgress.remainingFiles} remaining`)}`);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
10
36
|
if (summary.typescript.filesWithIssues.length > 0) {
|
|
11
|
-
const
|
|
12
|
-
for (const file of
|
|
37
|
+
const filesToDisplay = summary.typescript.filesWithIssues.slice(0, MAX_FILES_TO_DISPLAY);
|
|
38
|
+
for (const file of filesToDisplay) {
|
|
13
39
|
const fileName = path__default.default.relative(process.cwd(), file.file);
|
|
14
40
|
const issues = [];
|
|
15
41
|
if (file.errors > 0)
|
|
@@ -18,15 +44,37 @@ function displayScanSummary(summary) {
|
|
|
18
44
|
issues.push(copper.colors.yellow(`${file.warnings} warnings`));
|
|
19
45
|
console.log(` ${copper.colors.dim("├─")} ${copper.colors.cyan(fileName)} ${copper.colors.dim("→")} ${issues.join(copper.colors.dim(", "))}`);
|
|
20
46
|
}
|
|
21
|
-
if (summary.typescript.filesWithIssues.length >
|
|
22
|
-
console.log(copper.colors.dim(` └─ ... and ${summary.typescript.filesWithIssues.length -
|
|
47
|
+
if (summary.typescript.filesWithIssues.length > MAX_FILES_TO_DISPLAY) {
|
|
48
|
+
console.log(copper.colors.dim(` └─ ... and ${summary.typescript.filesWithIssues.length - MAX_FILES_TO_DISPLAY} more files`));
|
|
23
49
|
}
|
|
24
50
|
}
|
|
25
51
|
// ESLint section
|
|
26
52
|
console.log(`\n${copper.colors.bold("📏 ESLint")} ${copper.colors.dim("→")} ${summary.eslint.errorCount > 0 ? copper.colors.red(`${summary.eslint.errorCount} errors`) : copper.colors.green("0 errors")}${copper.colors.dim(", ")}${summary.eslint.warningCount > 0 ? copper.colors.yellow(`${summary.eslint.warningCount} warnings`) : copper.colors.dim("0 warnings")}`);
|
|
53
|
+
// Display ESLint progress if available
|
|
54
|
+
if (progress?.hasBaseline && progress.eslint.totalFilesInBaseline > 0) {
|
|
55
|
+
const eslintProgress = progress.eslint;
|
|
56
|
+
const progressPercent = eslintProgress.totalFilesInBaseline > 0
|
|
57
|
+
? Math.round((eslintProgress.fixedFiles / eslintProgress.totalFilesInBaseline) *
|
|
58
|
+
100)
|
|
59
|
+
: 0;
|
|
60
|
+
if (eslintProgress.fixedFiles > 0) {
|
|
61
|
+
console.log(` ${copper.colors.greenBright("✓")} ${copper.colors.green(`Progress:`)} ${copper.colors.bold(`${eslintProgress.fixedFiles}/${eslintProgress.totalFilesInBaseline}`)} ${copper.colors.green("files fixed")} ${copper.colors.dim(`(${progressPercent}%)`)} ${copper.colors.dim("→")} ${copper.colors.yellow(`${eslintProgress.remainingFiles} remaining`)}`);
|
|
62
|
+
if (eslintProgress.fixedErrors > 0 || eslintProgress.fixedWarnings > 0) {
|
|
63
|
+
const fixedParts = [];
|
|
64
|
+
if (eslintProgress.fixedErrors > 0)
|
|
65
|
+
fixedParts.push(copper.colors.green(`${eslintProgress.fixedErrors} errors`));
|
|
66
|
+
if (eslintProgress.fixedWarnings > 0)
|
|
67
|
+
fixedParts.push(copper.colors.green(`${eslintProgress.fixedWarnings} warnings`));
|
|
68
|
+
console.log(` ${copper.colors.dim("└─")} Fixed: ${fixedParts.join(copper.colors.dim(", "))}`);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
else {
|
|
72
|
+
console.log(` ${copper.colors.dim("Progress:")} ${copper.colors.yellow(`0/${eslintProgress.totalFilesInBaseline}`)} ${copper.colors.dim("files fixed")} ${copper.colors.dim("→")} ${copper.colors.yellow(`${eslintProgress.remainingFiles} remaining`)}`);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
27
75
|
if (summary.eslint.filesWithIssues.length > 0) {
|
|
28
|
-
const
|
|
29
|
-
for (const file of
|
|
76
|
+
const filesToDisplay = summary.eslint.filesWithIssues.slice(0, MAX_FILES_TO_DISPLAY);
|
|
77
|
+
for (const file of filesToDisplay) {
|
|
30
78
|
const fileName = path__default.default.relative(process.cwd(), file.file);
|
|
31
79
|
const issues = [];
|
|
32
80
|
if (file.errors > 0)
|
|
@@ -35,8 +83,8 @@ function displayScanSummary(summary) {
|
|
|
35
83
|
issues.push(copper.colors.yellow(`${file.warnings} warnings`));
|
|
36
84
|
console.log(` ${copper.colors.dim("├─")} ${copper.colors.cyan(fileName)} ${copper.colors.dim("→")} ${issues.join(copper.colors.dim(", "))}`);
|
|
37
85
|
}
|
|
38
|
-
if (summary.eslint.filesWithIssues.length >
|
|
39
|
-
console.log(copper.colors.dim(` └─ ... and ${summary.eslint.filesWithIssues.length -
|
|
86
|
+
if (summary.eslint.filesWithIssues.length > MAX_FILES_TO_DISPLAY) {
|
|
87
|
+
console.log(copper.colors.dim(` └─ ... and ${summary.eslint.filesWithIssues.length - MAX_FILES_TO_DISPLAY} more files`));
|
|
40
88
|
}
|
|
41
89
|
}
|
|
42
90
|
// Overall summary
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"summary-formatter.js","sources":["../../../src/code-quality/formatters/summary-formatter.ts"],"sourcesContent":[null],"names":["colors","path"],"mappings":"
|
|
1
|
+
{"version":3,"file":"summary-formatter.js","sources":["../../../src/code-quality/formatters/summary-formatter.ts"],"sourcesContent":[null],"names":["colors","path"],"mappings":"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"}
|
|
@@ -13,4 +13,5 @@ export * as TypeScriptChecker from "./checkers/typescript-checker";
|
|
|
13
13
|
export * as ESLintFormatter from "./formatters/eslint-formatter";
|
|
14
14
|
export * as SummaryFormatter from "./formatters/summary-formatter";
|
|
15
15
|
export * as TypeScriptFormatter from "./formatters/typescript-formatter";
|
|
16
|
+
export * as IssueTracker from "./issue-tracker";
|
|
16
17
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/code-quality/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAC7D,YAAY,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAGnE,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAGxD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGhD,OAAO,KAAK,aAAa,MAAM,2BAA2B,CAAC;AAC3D,OAAO,KAAK,iBAAiB,MAAM,+BAA+B,CAAC;AAGnE,OAAO,KAAK,eAAe,MAAM,+BAA+B,CAAC;AACjE,OAAO,KAAK,gBAAgB,MAAM,gCAAgC,CAAC;AACnE,OAAO,KAAK,mBAAmB,MAAM,mCAAmC,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/code-quality/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAC7D,YAAY,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAGnE,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAGxD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGhD,OAAO,KAAK,aAAa,MAAM,2BAA2B,CAAC;AAC3D,OAAO,KAAK,iBAAiB,MAAM,+BAA+B,CAAC;AAGnE,OAAO,KAAK,eAAe,MAAM,+BAA+B,CAAC;AACjE,OAAO,KAAK,gBAAgB,MAAM,gCAAgC,CAAC;AACnE,OAAO,KAAK,mBAAmB,MAAM,mCAAmC,CAAC;AAGzE,OAAO,KAAK,YAAY,MAAM,iBAAiB,CAAC"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
type FileIssue = {
|
|
2
|
+
file: string;
|
|
3
|
+
errors: number;
|
|
4
|
+
warnings: number;
|
|
5
|
+
};
|
|
6
|
+
type IssueBaseline = {
|
|
7
|
+
timestamp: number;
|
|
8
|
+
typescript: {
|
|
9
|
+
filesWithIssues: FileIssue[];
|
|
10
|
+
totalErrors: number;
|
|
11
|
+
totalWarnings: number;
|
|
12
|
+
};
|
|
13
|
+
eslint: {
|
|
14
|
+
filesWithIssues: FileIssue[];
|
|
15
|
+
totalErrors: number;
|
|
16
|
+
totalWarnings: number;
|
|
17
|
+
};
|
|
18
|
+
};
|
|
19
|
+
type ProgressInfo = {
|
|
20
|
+
typescript: {
|
|
21
|
+
fixedFiles: number;
|
|
22
|
+
remainingFiles: number;
|
|
23
|
+
totalFilesInBaseline: number;
|
|
24
|
+
fixedErrors: number;
|
|
25
|
+
fixedWarnings: number;
|
|
26
|
+
};
|
|
27
|
+
eslint: {
|
|
28
|
+
fixedFiles: number;
|
|
29
|
+
remainingFiles: number;
|
|
30
|
+
totalFilesInBaseline: number;
|
|
31
|
+
fixedErrors: number;
|
|
32
|
+
fixedWarnings: number;
|
|
33
|
+
};
|
|
34
|
+
hasBaseline: boolean;
|
|
35
|
+
};
|
|
36
|
+
/**
|
|
37
|
+
* Save current issues as baseline for tracking progress
|
|
38
|
+
*/
|
|
39
|
+
export declare function saveBaseline(typescriptIssues: FileIssue[], eslintIssues: FileIssue[]): Promise<void>;
|
|
40
|
+
/**
|
|
41
|
+
* Load baseline issues from file
|
|
42
|
+
*/
|
|
43
|
+
export declare function loadBaseline(): Promise<IssueBaseline | null>;
|
|
44
|
+
/**
|
|
45
|
+
* Calculate progress by comparing current issues with baseline
|
|
46
|
+
*/
|
|
47
|
+
export declare function calculateProgress(currentTypescriptIssues: FileIssue[], currentEslintIssues: FileIssue[]): Promise<ProgressInfo>;
|
|
48
|
+
/**
|
|
49
|
+
* Update baseline by removing a fixed file
|
|
50
|
+
*/
|
|
51
|
+
export declare function updateBaselineOnFileFix(filePath: string, checker: "typescript" | "eslint"): Promise<void>;
|
|
52
|
+
/**
|
|
53
|
+
* Check if baseline exists
|
|
54
|
+
*/
|
|
55
|
+
export declare function hasBaseline(): Promise<boolean>;
|
|
56
|
+
/**
|
|
57
|
+
* Clear baseline (reset tracking)
|
|
58
|
+
*/
|
|
59
|
+
export declare function clearBaseline(): Promise<void>;
|
|
60
|
+
export {};
|
|
61
|
+
//# sourceMappingURL=issue-tracker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"issue-tracker.d.ts","sourceRoot":"","sources":["../../src/code-quality/issue-tracker.ts"],"names":[],"mappings":"AAGA,KAAK,SAAS,GAAG;IACf,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,KAAK,aAAa,GAAG;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE;QACV,eAAe,EAAE,SAAS,EAAE,CAAC;QAC7B,WAAW,EAAE,MAAM,CAAC;QACpB,aAAa,EAAE,MAAM,CAAC;KACvB,CAAC;IACF,MAAM,EAAE;QACN,eAAe,EAAE,SAAS,EAAE,CAAC;QAC7B,WAAW,EAAE,MAAM,CAAC;QACpB,aAAa,EAAE,MAAM,CAAC;KACvB,CAAC;CACH,CAAC;AAEF,KAAK,YAAY,GAAG;IAClB,UAAU,EAAE;QACV,UAAU,EAAE,MAAM,CAAC;QACnB,cAAc,EAAE,MAAM,CAAC;QACvB,oBAAoB,EAAE,MAAM,CAAC;QAC7B,WAAW,EAAE,MAAM,CAAC;QACpB,aAAa,EAAE,MAAM,CAAC;KACvB,CAAC;IACF,MAAM,EAAE;QACN,UAAU,EAAE,MAAM,CAAC;QACnB,cAAc,EAAE,MAAM,CAAC;QACvB,oBAAoB,EAAE,MAAM,CAAC;QAC7B,WAAW,EAAE,MAAM,CAAC;QACpB,aAAa,EAAE,MAAM,CAAC;KACvB,CAAC;IACF,WAAW,EAAE,OAAO,CAAC;CACtB,CAAC;AAOF;;GAEG;AACH,wBAAsB,YAAY,CAChC,gBAAgB,EAAE,SAAS,EAAE,EAC7B,YAAY,EAAE,SAAS,EAAE,GACxB,OAAO,CAAC,IAAI,CAAC,CAmBf;AAED;;GAEG;AACH,wBAAsB,YAAY,IAAI,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAYlE;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CACrC,uBAAuB,EAAE,SAAS,EAAE,EACpC,mBAAmB,EAAE,SAAS,EAAE,GAC/B,OAAO,CAAC,YAAY,CAAC,CA4EvB;AAED;;GAEG;AACH,wBAAsB,uBAAuB,CAC3C,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,YAAY,GAAG,QAAQ,GAC/B,OAAO,CAAC,IAAI,CAAC,CAiCf;AAED;;GAEG;AACH,wBAAsB,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC,CAEpD;AAED;;GAEG;AACH,wBAAsB,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC,CAOnD"}
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
'use strict';var fs=require('@mongez/fs'),path=require('path');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var path__default=/*#__PURE__*/_interopDefault(path);const BASELINE_FILE = path__default.default.resolve(process.cwd(), ".warlock/.issues-baseline.json");
|
|
2
|
+
/**
|
|
3
|
+
* Save current issues as baseline for tracking progress
|
|
4
|
+
*/
|
|
5
|
+
async function saveBaseline(typescriptIssues, eslintIssues) {
|
|
6
|
+
const baseline = {
|
|
7
|
+
timestamp: Date.now(),
|
|
8
|
+
typescript: {
|
|
9
|
+
filesWithIssues: typescriptIssues,
|
|
10
|
+
totalErrors: typescriptIssues.reduce((sum, file) => sum + file.errors, 0),
|
|
11
|
+
totalWarnings: typescriptIssues.reduce((sum, file) => sum + file.warnings, 0),
|
|
12
|
+
},
|
|
13
|
+
eslint: {
|
|
14
|
+
filesWithIssues: eslintIssues,
|
|
15
|
+
totalErrors: eslintIssues.reduce((sum, file) => sum + file.errors, 0),
|
|
16
|
+
totalWarnings: eslintIssues.reduce((sum, file) => sum + file.warnings, 0),
|
|
17
|
+
},
|
|
18
|
+
};
|
|
19
|
+
await fs.putFileAsync(BASELINE_FILE, JSON.stringify(baseline, null, 2), "utf8");
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Load baseline issues from file
|
|
23
|
+
*/
|
|
24
|
+
async function loadBaseline() {
|
|
25
|
+
try {
|
|
26
|
+
const exists = await fs.fileExistsAsync(BASELINE_FILE);
|
|
27
|
+
if (!exists) {
|
|
28
|
+
return null;
|
|
29
|
+
}
|
|
30
|
+
const content = await fs.getFileAsync(BASELINE_FILE);
|
|
31
|
+
return JSON.parse(content);
|
|
32
|
+
}
|
|
33
|
+
catch (error) {
|
|
34
|
+
return null;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Calculate progress by comparing current issues with baseline
|
|
39
|
+
*/
|
|
40
|
+
async function calculateProgress(currentTypescriptIssues, currentEslintIssues) {
|
|
41
|
+
const baseline = await loadBaseline();
|
|
42
|
+
if (!baseline) {
|
|
43
|
+
return {
|
|
44
|
+
typescript: {
|
|
45
|
+
fixedFiles: 0,
|
|
46
|
+
remainingFiles: currentTypescriptIssues.length,
|
|
47
|
+
totalFilesInBaseline: 0,
|
|
48
|
+
fixedErrors: 0,
|
|
49
|
+
fixedWarnings: 0,
|
|
50
|
+
},
|
|
51
|
+
eslint: {
|
|
52
|
+
fixedFiles: 0,
|
|
53
|
+
remainingFiles: currentEslintIssues.length,
|
|
54
|
+
totalFilesInBaseline: 0,
|
|
55
|
+
fixedErrors: 0,
|
|
56
|
+
fixedWarnings: 0,
|
|
57
|
+
},
|
|
58
|
+
hasBaseline: false,
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
// Calculate TypeScript progress
|
|
62
|
+
const tsFixedFiles = baseline.typescript.filesWithIssues.filter(baselineFile => {
|
|
63
|
+
return !currentTypescriptIssues.some(currentFile => currentFile.file === baselineFile.file);
|
|
64
|
+
});
|
|
65
|
+
const tsFixedErrors = tsFixedFiles.reduce((sum, file) => sum + file.errors, 0);
|
|
66
|
+
const tsFixedWarnings = tsFixedFiles.reduce((sum, file) => sum + file.warnings, 0);
|
|
67
|
+
// Calculate ESLint progress
|
|
68
|
+
const eslintFixedFiles = baseline.eslint.filesWithIssues.filter(baselineFile => {
|
|
69
|
+
return !currentEslintIssues.some(currentFile => currentFile.file === baselineFile.file);
|
|
70
|
+
});
|
|
71
|
+
const eslintFixedErrors = eslintFixedFiles.reduce((sum, file) => sum + file.errors, 0);
|
|
72
|
+
const eslintFixedWarnings = eslintFixedFiles.reduce((sum, file) => sum + file.warnings, 0);
|
|
73
|
+
return {
|
|
74
|
+
typescript: {
|
|
75
|
+
fixedFiles: tsFixedFiles.length,
|
|
76
|
+
remainingFiles: currentTypescriptIssues.length,
|
|
77
|
+
totalFilesInBaseline: baseline.typescript.filesWithIssues.length,
|
|
78
|
+
fixedErrors: tsFixedErrors,
|
|
79
|
+
fixedWarnings: tsFixedWarnings,
|
|
80
|
+
},
|
|
81
|
+
eslint: {
|
|
82
|
+
fixedFiles: eslintFixedFiles.length,
|
|
83
|
+
remainingFiles: currentEslintIssues.length,
|
|
84
|
+
totalFilesInBaseline: baseline.eslint.filesWithIssues.length,
|
|
85
|
+
fixedErrors: eslintFixedErrors,
|
|
86
|
+
fixedWarnings: eslintFixedWarnings,
|
|
87
|
+
},
|
|
88
|
+
hasBaseline: true,
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Update baseline by removing a fixed file
|
|
93
|
+
*/
|
|
94
|
+
async function updateBaselineOnFileFix(filePath, checker) {
|
|
95
|
+
const baseline = await loadBaseline();
|
|
96
|
+
if (!baseline) {
|
|
97
|
+
return;
|
|
98
|
+
}
|
|
99
|
+
const normalizedPath = path__default.default.resolve(filePath);
|
|
100
|
+
if (checker === "typescript") {
|
|
101
|
+
const fileIndex = baseline.typescript.filesWithIssues.findIndex(file => path__default.default.resolve(file.file) === normalizedPath);
|
|
102
|
+
if (fileIndex !== -1) {
|
|
103
|
+
const removedFile = baseline.typescript.filesWithIssues[fileIndex];
|
|
104
|
+
baseline.typescript.totalErrors -= removedFile.errors;
|
|
105
|
+
baseline.typescript.totalWarnings -= removedFile.warnings;
|
|
106
|
+
baseline.typescript.filesWithIssues.splice(fileIndex, 1);
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
else {
|
|
110
|
+
const fileIndex = baseline.eslint.filesWithIssues.findIndex(file => path__default.default.resolve(file.file) === normalizedPath);
|
|
111
|
+
if (fileIndex !== -1) {
|
|
112
|
+
const removedFile = baseline.eslint.filesWithIssues[fileIndex];
|
|
113
|
+
baseline.eslint.totalErrors -= removedFile.errors;
|
|
114
|
+
baseline.eslint.totalWarnings -= removedFile.warnings;
|
|
115
|
+
baseline.eslint.filesWithIssues.splice(fileIndex, 1);
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
await fs.putFileAsync(BASELINE_FILE, JSON.stringify(baseline, null, 2), "utf8");
|
|
119
|
+
}exports.calculateProgress=calculateProgress;exports.loadBaseline=loadBaseline;exports.saveBaseline=saveBaseline;exports.updateBaselineOnFileFix=updateBaselineOnFileFix;//# sourceMappingURL=issue-tracker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"issue-tracker.js","sources":["../../src/code-quality/issue-tracker.ts"],"sourcesContent":[null],"names":["path","putFileAsync","fileExistsAsync","getFileAsync"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"project-scanner.d.ts","sourceRoot":"","sources":["../../src/code-quality/project-scanner.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"project-scanner.d.ts","sourceRoot":"","sources":["../../src/code-quality/project-scanner.ts"],"names":[],"mappings":"AAQA;;;GAGG;AACH,wBAAsB,WAAW,CAAC,WAAW,EAAE,MAAM,iBAiHpD"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
'use strict';var copper=require('@mongez/copper'),ts=require('typescript'),eslintChecker=require('./checkers/eslint-checker.js'),typescriptChecker=require('./checkers/typescript-checker.js'),config=require('./config.js'),summaryFormatter=require('./formatters/summary-formatter.js');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var ts__default=/*#__PURE__*/_interopDefault(ts);/**
|
|
1
|
+
'use strict';var copper=require('@mongez/copper'),ts=require('typescript'),eslintChecker=require('./checkers/eslint-checker.js'),typescriptChecker=require('./checkers/typescript-checker.js'),config=require('./config.js'),summaryFormatter=require('./formatters/summary-formatter.js'),issueTracker=require('./issue-tracker.js');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var ts__default=/*#__PURE__*/_interopDefault(ts);/**
|
|
2
2
|
* Run a full project scan (async, background process)
|
|
3
3
|
* Called once on server startup
|
|
4
4
|
*/
|
|
@@ -62,8 +62,14 @@ async function scanProject(projectPath) {
|
|
|
62
62
|
// Sort files by errors (most errors first)
|
|
63
63
|
summary.typescript.filesWithIssues.sort((a, b) => b.errors - a.errors);
|
|
64
64
|
summary.eslint.filesWithIssues.sort((a, b) => b.errors - a.errors);
|
|
65
|
-
//
|
|
66
|
-
|
|
65
|
+
// Calculate progress against baseline
|
|
66
|
+
const progress = await issueTracker.calculateProgress(summary.typescript.filesWithIssues, summary.eslint.filesWithIssues);
|
|
67
|
+
// Save baseline if this is the first scan
|
|
68
|
+
if (!progress.hasBaseline) {
|
|
69
|
+
await issueTracker.saveBaseline(summary.typescript.filesWithIssues, summary.eslint.filesWithIssues);
|
|
70
|
+
}
|
|
71
|
+
// Display summary with progress
|
|
72
|
+
summaryFormatter.displayScanSummary(summary, progress);
|
|
67
73
|
}
|
|
68
74
|
catch (error) {
|
|
69
75
|
console.log(copper.colors.red(`\n❌ Code quality scan failed: ${error instanceof Error ? error.message : String(error)}\n`));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"project-scanner.js","sources":["../../src/code-quality/project-scanner.ts"],"sourcesContent":[null],"names":["config","getConfig","colors","tsChecker.checkProject","eslintChecker.checkProject","ts","summaryFormatter.displayScanSummary"],"mappings":"
|
|
1
|
+
{"version":3,"file":"project-scanner.js","sources":["../../src/code-quality/project-scanner.ts"],"sourcesContent":[null],"names":["config","getConfig","colors","tsChecker.checkProject","eslintChecker.checkProject","ts","issueTracker.calculateProgress","issueTracker.saveBaseline","summaryFormatter.displayScanSummary"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"single-file-checker.d.ts","sourceRoot":"","sources":["../../src/code-quality/single-file-checker.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"single-file-checker.d.ts","sourceRoot":"","sources":["../../src/code-quality/single-file-checker.ts"],"names":[],"mappings":"AASA;;;GAGG;AACH,wBAAsB,eAAe,CAAC,QAAQ,EAAE,MAAM,iBAuErD"}
|