@mathonsunday/dead-code-toolkit 0.1.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 +356 -0
- package/dist/analyzer.d.ts +23 -0
- package/dist/analyzer.d.ts.map +1 -0
- package/dist/analyzer.js +173 -0
- package/dist/analyzer.js.map +1 -0
- package/dist/checkers/knipChecker.d.ts +11 -0
- package/dist/checkers/knipChecker.d.ts.map +1 -0
- package/dist/checkers/knipChecker.js +226 -0
- package/dist/checkers/knipChecker.js.map +1 -0
- package/dist/checkers/typescriptChecker.d.ts +10 -0
- package/dist/checkers/typescriptChecker.d.ts.map +1 -0
- package/dist/checkers/typescriptChecker.js +174 -0
- package/dist/checkers/typescriptChecker.js.map +1 -0
- package/dist/cli/index.d.ts +7 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +204 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/config/detectors.d.ts +29 -0
- package/dist/config/detectors.d.ts.map +1 -0
- package/dist/config/detectors.js +159 -0
- package/dist/config/detectors.js.map +1 -0
- package/dist/config/templates.d.ts +76 -0
- package/dist/config/templates.d.ts.map +1 -0
- package/dist/config/templates.js +191 -0
- package/dist/config/templates.js.map +1 -0
- package/dist/index.d.ts +13 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +17 -0
- package/dist/index.js.map +1 -0
- package/dist/reporters/jsonReporter.d.ts +68 -0
- package/dist/reporters/jsonReporter.d.ts.map +1 -0
- package/dist/reporters/jsonReporter.js +161 -0
- package/dist/reporters/jsonReporter.js.map +1 -0
- package/dist/setup/hookInstaller.d.ts +36 -0
- package/dist/setup/hookInstaller.d.ts.map +1 -0
- package/dist/setup/hookInstaller.js +196 -0
- package/dist/setup/hookInstaller.js.map +1 -0
- package/dist/setup/installer.d.ts +10 -0
- package/dist/setup/installer.d.ts.map +1 -0
- package/dist/setup/installer.js +156 -0
- package/dist/setup/installer.js.map +1 -0
- package/dist/setup/packageJsonUpdater.d.ts +54 -0
- package/dist/setup/packageJsonUpdater.d.ts.map +1 -0
- package/dist/setup/packageJsonUpdater.js +129 -0
- package/dist/setup/packageJsonUpdater.js.map +1 -0
- package/dist/src/analyzer.d.ts +23 -0
- package/dist/src/analyzer.d.ts.map +1 -0
- package/dist/src/analyzer.js +173 -0
- package/dist/src/analyzer.js.map +1 -0
- package/dist/src/checkers/knipChecker.d.ts +11 -0
- package/dist/src/checkers/knipChecker.d.ts.map +1 -0
- package/dist/src/checkers/knipChecker.js +226 -0
- package/dist/src/checkers/knipChecker.js.map +1 -0
- package/dist/src/checkers/typescriptChecker.d.ts +10 -0
- package/dist/src/checkers/typescriptChecker.d.ts.map +1 -0
- package/dist/src/checkers/typescriptChecker.js +174 -0
- package/dist/src/checkers/typescriptChecker.js.map +1 -0
- package/dist/src/config/detectors.d.ts +29 -0
- package/dist/src/config/detectors.d.ts.map +1 -0
- package/dist/src/config/detectors.js +159 -0
- package/dist/src/config/detectors.js.map +1 -0
- package/dist/src/config/templates.d.ts +76 -0
- package/dist/src/config/templates.d.ts.map +1 -0
- package/dist/src/config/templates.js +191 -0
- package/dist/src/config/templates.js.map +1 -0
- package/dist/src/index.d.ts +13 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +17 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/reporters/jsonReporter.d.ts +68 -0
- package/dist/src/reporters/jsonReporter.d.ts.map +1 -0
- package/dist/src/reporters/jsonReporter.js +161 -0
- package/dist/src/reporters/jsonReporter.js.map +1 -0
- package/dist/src/setup/hookInstaller.d.ts +36 -0
- package/dist/src/setup/hookInstaller.d.ts.map +1 -0
- package/dist/src/setup/hookInstaller.js +196 -0
- package/dist/src/setup/hookInstaller.js.map +1 -0
- package/dist/src/setup/installer.d.ts +10 -0
- package/dist/src/setup/installer.d.ts.map +1 -0
- package/dist/src/setup/installer.js +156 -0
- package/dist/src/setup/installer.js.map +1 -0
- package/dist/src/setup/packageJsonUpdater.d.ts +54 -0
- package/dist/src/setup/packageJsonUpdater.d.ts.map +1 -0
- package/dist/src/setup/packageJsonUpdater.js +129 -0
- package/dist/src/setup/packageJsonUpdater.js.map +1 -0
- package/dist/src/types.d.ts +177 -0
- package/dist/src/types.d.ts.map +1 -0
- package/dist/src/types.js +5 -0
- package/dist/src/types.js.map +1 -0
- package/dist/types.d.ts +177 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +5 -0
- package/dist/types.js.map +1 -0
- package/package.json +84 -0
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Project structure detection
|
|
3
|
+
* Auto-detects project type and configuration
|
|
4
|
+
*/
|
|
5
|
+
import type { ProjectConfig } from '../types.js';
|
|
6
|
+
/**
|
|
7
|
+
* Detect project configuration and type
|
|
8
|
+
*/
|
|
9
|
+
export declare function detectProjectConfig(projectRoot: string): ProjectConfig;
|
|
10
|
+
/**
|
|
11
|
+
* Get entry points for a project based on its type
|
|
12
|
+
*/
|
|
13
|
+
export declare function getEntryPoints(config: ProjectConfig): string[];
|
|
14
|
+
/**
|
|
15
|
+
* Get project source patterns for Knip
|
|
16
|
+
*/
|
|
17
|
+
export declare function getProjectPatterns(config: ProjectConfig): string[];
|
|
18
|
+
/**
|
|
19
|
+
* Get ignore patterns for Knip
|
|
20
|
+
*/
|
|
21
|
+
export declare function getIgnorePatterns(): string[];
|
|
22
|
+
/**
|
|
23
|
+
* Get ESLint paths configuration
|
|
24
|
+
*/
|
|
25
|
+
export declare function getESLintPaths(config: ProjectConfig): {
|
|
26
|
+
include: string[];
|
|
27
|
+
exclude: string[];
|
|
28
|
+
};
|
|
29
|
+
//# sourceMappingURL=detectors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"detectors.d.ts","sourceRoot":"","sources":["../../src/config/detectors.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEjD;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,aAAa,CA8EtE;AASD;;GAEG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,EAAE,CAiC9D;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,EAAE,CAqBlE;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,EAAE,CAY5C;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,aAAa,GAAG;IAAE,OAAO,EAAE,MAAM,EAAE,CAAC;IAAC,OAAO,EAAE,MAAM,EAAE,CAAA;CAAE,CAK9F"}
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Project structure detection
|
|
3
|
+
* Auto-detects project type and configuration
|
|
4
|
+
*/
|
|
5
|
+
import { existsSync, readFileSync } from 'fs';
|
|
6
|
+
import { resolve } from 'path';
|
|
7
|
+
/**
|
|
8
|
+
* Detect project configuration and type
|
|
9
|
+
*/
|
|
10
|
+
export function detectProjectConfig(projectRoot) {
|
|
11
|
+
const config = {
|
|
12
|
+
root: projectRoot,
|
|
13
|
+
hasPackageJson: false,
|
|
14
|
+
hasTypeScript: false,
|
|
15
|
+
type: 'unknown',
|
|
16
|
+
existingConfigs: {},
|
|
17
|
+
};
|
|
18
|
+
// Check for package.json
|
|
19
|
+
const packageJsonPath = resolve(projectRoot, 'package.json');
|
|
20
|
+
if (existsSync(packageJsonPath)) {
|
|
21
|
+
config.hasPackageJson = true;
|
|
22
|
+
try {
|
|
23
|
+
const packageJson = JSON.parse(readFileSync(packageJsonPath, 'utf-8'));
|
|
24
|
+
// Check for React
|
|
25
|
+
if (packageJson.dependencies?.react || packageJson.devDependencies?.react) {
|
|
26
|
+
config.type = 'react';
|
|
27
|
+
}
|
|
28
|
+
// Check for Node.js frameworks
|
|
29
|
+
else if (packageJson.dependencies?.express ||
|
|
30
|
+
packageJson.dependencies?.fastify ||
|
|
31
|
+
packageJson.dependencies?.['next.js'] ||
|
|
32
|
+
packageJson.dependencies?.nest ||
|
|
33
|
+
packageJson.devDependencies?.['@nestjs/core']) {
|
|
34
|
+
config.type = 'node';
|
|
35
|
+
}
|
|
36
|
+
// Default to Node for backend-only projects
|
|
37
|
+
else if (packageJson.type === 'module' && !packageJson.dependencies?.react) {
|
|
38
|
+
config.type = 'node';
|
|
39
|
+
}
|
|
40
|
+
// Check if it's a monorepo
|
|
41
|
+
if (packageJson.workspaces) {
|
|
42
|
+
config.type = 'fullstack';
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
catch (_error) {
|
|
46
|
+
// Ignore parsing errors
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
// Check for TypeScript
|
|
50
|
+
const tsconfigPath = resolve(projectRoot, 'tsconfig.json');
|
|
51
|
+
if (existsSync(tsconfigPath)) {
|
|
52
|
+
config.hasTypeScript = true;
|
|
53
|
+
config.tsconfigPath = tsconfigPath;
|
|
54
|
+
}
|
|
55
|
+
// Detect existing configs
|
|
56
|
+
const configFiles = [
|
|
57
|
+
{ key: 'eslint', names: ['.eslintrc.js', '.eslintrc.json', 'eslint.config.js'] },
|
|
58
|
+
{ key: 'prettier', names: ['.prettierrc', '.prettierrc.js', 'prettier.config.js'] },
|
|
59
|
+
{ key: 'knip', names: ['knip.json'] },
|
|
60
|
+
{ key: 'husky', names: ['.husky'] },
|
|
61
|
+
];
|
|
62
|
+
for (const { key, names } of configFiles) {
|
|
63
|
+
for (const name of names) {
|
|
64
|
+
const path = resolve(projectRoot, name);
|
|
65
|
+
if (existsSync(path)) {
|
|
66
|
+
config.existingConfigs[key] = path;
|
|
67
|
+
break;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
// If no type detected, infer from structure
|
|
72
|
+
if (config.type === 'unknown') {
|
|
73
|
+
if (hasSrcDirectory(projectRoot)) {
|
|
74
|
+
config.type = config.hasPackageJson ? 'node' : 'unknown';
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
return config;
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Check if project has a src directory
|
|
81
|
+
*/
|
|
82
|
+
function hasSrcDirectory(projectRoot) {
|
|
83
|
+
return existsSync(resolve(projectRoot, 'src'));
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Get entry points for a project based on its type
|
|
87
|
+
*/
|
|
88
|
+
export function getEntryPoints(config) {
|
|
89
|
+
const entry = [];
|
|
90
|
+
const root = config.root;
|
|
91
|
+
switch (config.type) {
|
|
92
|
+
case 'react':
|
|
93
|
+
entry.push('src/main.ts', 'src/main.tsx', 'src/index.ts', 'src/index.tsx');
|
|
94
|
+
break;
|
|
95
|
+
case 'node':
|
|
96
|
+
// Common Node.js entry points
|
|
97
|
+
entry.push('src/index.ts', 'src/main.ts', 'dist/index.js', 'index.ts', 'api/index.ts');
|
|
98
|
+
break;
|
|
99
|
+
case 'fullstack':
|
|
100
|
+
// Monorepo: pick sensible defaults
|
|
101
|
+
entry.push('src/main.ts', 'src/index.ts', 'api/index.ts', 'backend/src/index.ts');
|
|
102
|
+
break;
|
|
103
|
+
default:
|
|
104
|
+
// Fallback
|
|
105
|
+
entry.push('src/index.ts', 'index.ts');
|
|
106
|
+
}
|
|
107
|
+
// Filter to entries that exist
|
|
108
|
+
const existingEntries = entry.filter((e) => existsSync(resolve(root, e)));
|
|
109
|
+
// If nothing found, add default globs
|
|
110
|
+
if (existingEntries.length === 0) {
|
|
111
|
+
existingEntries.push('src/index.ts');
|
|
112
|
+
}
|
|
113
|
+
return existingEntries;
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Get project source patterns for Knip
|
|
117
|
+
*/
|
|
118
|
+
export function getProjectPatterns(config) {
|
|
119
|
+
const patterns = [];
|
|
120
|
+
switch (config.type) {
|
|
121
|
+
case 'react':
|
|
122
|
+
patterns.push('src/**/*.{ts,tsx}');
|
|
123
|
+
break;
|
|
124
|
+
case 'node':
|
|
125
|
+
patterns.push('src/**/*.ts', 'api/**/*.ts', 'lib/**/*.ts');
|
|
126
|
+
break;
|
|
127
|
+
case 'fullstack':
|
|
128
|
+
patterns.push('src/**/*.{ts,tsx}', 'api/**/*.ts', 'backend/**/*.ts');
|
|
129
|
+
break;
|
|
130
|
+
default:
|
|
131
|
+
patterns.push('**/*.ts', '**/*.tsx');
|
|
132
|
+
}
|
|
133
|
+
return patterns;
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* Get ignore patterns for Knip
|
|
137
|
+
*/
|
|
138
|
+
export function getIgnorePatterns() {
|
|
139
|
+
return [
|
|
140
|
+
'dist/**',
|
|
141
|
+
'build/**',
|
|
142
|
+
'node_modules/**',
|
|
143
|
+
'**/*.d.ts',
|
|
144
|
+
'**/node_modules/**',
|
|
145
|
+
'.next/**',
|
|
146
|
+
'out/**',
|
|
147
|
+
'coverage/**',
|
|
148
|
+
'.git/**',
|
|
149
|
+
];
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* Get ESLint paths configuration
|
|
153
|
+
*/
|
|
154
|
+
export function getESLintPaths(config) {
|
|
155
|
+
const include = getProjectPatterns(config);
|
|
156
|
+
const exclude = getIgnorePatterns();
|
|
157
|
+
return { include, exclude };
|
|
158
|
+
}
|
|
159
|
+
//# sourceMappingURL=detectors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"detectors.js","sourceRoot":"","sources":["../../src/config/detectors.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Configuration file templates
|
|
3
|
+
* Generates default configs for Knip, ESLint, etc.
|
|
4
|
+
*/
|
|
5
|
+
import type { ProjectConfig } from '../types.js';
|
|
6
|
+
/**
|
|
7
|
+
* Generate knip.json configuration
|
|
8
|
+
*/
|
|
9
|
+
export declare function generateKnipConfig(config: ProjectConfig): Record<string, unknown>;
|
|
10
|
+
/**
|
|
11
|
+
* Generate knip.json as JSON string
|
|
12
|
+
*/
|
|
13
|
+
export declare function generateKnipConfigJSON(config: ProjectConfig): string;
|
|
14
|
+
/**
|
|
15
|
+
* Generate ESLint configuration partial (rules to add)
|
|
16
|
+
*/
|
|
17
|
+
export declare function generateESLintRules(): Record<string, unknown>;
|
|
18
|
+
/**
|
|
19
|
+
* Generate ESLint configuration as JavaScript code
|
|
20
|
+
*/
|
|
21
|
+
export declare function generateESLintConfigCode(): string;
|
|
22
|
+
/**
|
|
23
|
+
* Generate typecoveragerc.json configuration
|
|
24
|
+
*/
|
|
25
|
+
export declare function generateTypeCoverageConfig(config: ProjectConfig): Record<string, unknown>;
|
|
26
|
+
/**
|
|
27
|
+
* Generate typecoveragerc.json as JSON string
|
|
28
|
+
*/
|
|
29
|
+
export declare function generateTypeCoverageConfigJSON(config: ProjectConfig): string;
|
|
30
|
+
/**
|
|
31
|
+
* Generate .lintstagedrc.json configuration
|
|
32
|
+
*/
|
|
33
|
+
export declare function generateLintStagedConfig(): Record<string, unknown>;
|
|
34
|
+
/**
|
|
35
|
+
* Generate .lintstagedrc.json as JSON string
|
|
36
|
+
*/
|
|
37
|
+
export declare function generateLintStagedConfigJSON(): string;
|
|
38
|
+
/**
|
|
39
|
+
* Generate pre-commit hook script
|
|
40
|
+
*/
|
|
41
|
+
export declare function generatePreCommitHook(): string;
|
|
42
|
+
/**
|
|
43
|
+
* Generate package.json scripts to add
|
|
44
|
+
*/
|
|
45
|
+
export declare function generatePackageJsonScripts(): Record<string, string>;
|
|
46
|
+
/**
|
|
47
|
+
* Configuration templates metadata
|
|
48
|
+
*/
|
|
49
|
+
export declare const CONFIG_TEMPLATES: {
|
|
50
|
+
readonly knip: {
|
|
51
|
+
readonly filename: "knip.json";
|
|
52
|
+
readonly description: "Knip configuration for dead code detection";
|
|
53
|
+
readonly generator: typeof generateKnipConfigJSON;
|
|
54
|
+
};
|
|
55
|
+
readonly eslint: {
|
|
56
|
+
readonly filename: "eslint.config.js (partial - add to existing config)";
|
|
57
|
+
readonly description: "ESLint rules for dead code detection";
|
|
58
|
+
readonly generator: typeof generateESLintConfigCode;
|
|
59
|
+
};
|
|
60
|
+
readonly typeCoverage: {
|
|
61
|
+
readonly filename: "typecoveragerc.json";
|
|
62
|
+
readonly description: "Type coverage measurement configuration";
|
|
63
|
+
readonly generator: typeof generateTypeCoverageConfigJSON;
|
|
64
|
+
};
|
|
65
|
+
readonly lintStaged: {
|
|
66
|
+
readonly filename: ".lintstagedrc.json";
|
|
67
|
+
readonly description: "Lint-staged configuration for staged files";
|
|
68
|
+
readonly generator: typeof generateLintStagedConfigJSON;
|
|
69
|
+
};
|
|
70
|
+
readonly preCommit: {
|
|
71
|
+
readonly filename: ".husky/pre-commit";
|
|
72
|
+
readonly description: "Pre-commit hook script";
|
|
73
|
+
readonly generator: typeof generatePreCommitHook;
|
|
74
|
+
};
|
|
75
|
+
};
|
|
76
|
+
//# sourceMappingURL=templates.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"templates.d.ts","sourceRoot":"","sources":["../../src/config/templates.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAGjD;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAcjF;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,CAEpE;AAED;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAY7D;AAED;;GAEG;AACH,wBAAgB,wBAAwB,IAAI,MAAM,CAmBjD;AAED;;GAEG;AACH,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAazF;AAED;;GAEG;AACH,wBAAgB,8BAA8B,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,CAE5E;AAED;;GAEG;AACH,wBAAgB,wBAAwB,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAKlE;AAED;;GAEG;AACH,wBAAgB,4BAA4B,IAAI,MAAM,CAErD;AAED;;GAEG;AACH,wBAAgB,qBAAqB,IAAI,MAAM,CAuC9C;AAED;;GAEG;AACH,wBAAgB,0BAA0B,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CASnE;AAED;;GAEG;AACH,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;CA0BnB,CAAC"}
|
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Configuration file templates
|
|
3
|
+
* Generates default configs for Knip, ESLint, etc.
|
|
4
|
+
*/
|
|
5
|
+
import { getEntryPoints, getProjectPatterns, getIgnorePatterns } from './detectors.js';
|
|
6
|
+
/**
|
|
7
|
+
* Generate knip.json configuration
|
|
8
|
+
*/
|
|
9
|
+
export function generateKnipConfig(config) {
|
|
10
|
+
const entryPoints = getEntryPoints(config);
|
|
11
|
+
const patterns = getProjectPatterns(config);
|
|
12
|
+
const ignorePatterns = getIgnorePatterns();
|
|
13
|
+
return {
|
|
14
|
+
entry: entryPoints,
|
|
15
|
+
project: patterns,
|
|
16
|
+
ignore: ignorePatterns,
|
|
17
|
+
ignoreDependencies: [
|
|
18
|
+
'@types/node', // Type definitions are not "used"
|
|
19
|
+
'typescript', // Compiler is not "used" in code
|
|
20
|
+
],
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Generate knip.json as JSON string
|
|
25
|
+
*/
|
|
26
|
+
export function generateKnipConfigJSON(config) {
|
|
27
|
+
return JSON.stringify(generateKnipConfig(config), null, 2);
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Generate ESLint configuration partial (rules to add)
|
|
31
|
+
*/
|
|
32
|
+
export function generateESLintRules() {
|
|
33
|
+
return {
|
|
34
|
+
'@typescript-eslint/no-redundant-type-constituents': 'warn',
|
|
35
|
+
'@typescript-eslint/no-unused-vars': [
|
|
36
|
+
'warn',
|
|
37
|
+
{
|
|
38
|
+
argsIgnorePattern: '^_',
|
|
39
|
+
varsIgnorePattern: '^_',
|
|
40
|
+
caughtErrorsIgnorePattern: '^_',
|
|
41
|
+
},
|
|
42
|
+
],
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Generate ESLint configuration as JavaScript code
|
|
47
|
+
*/
|
|
48
|
+
export function generateESLintConfigCode() {
|
|
49
|
+
return `// Add to eslint.config.js or update your existing config
|
|
50
|
+
export default [
|
|
51
|
+
// ... existing configs ...
|
|
52
|
+
{
|
|
53
|
+
files: ['src/**/*.{ts,tsx}', 'api/**/*.ts'],
|
|
54
|
+
rules: {
|
|
55
|
+
'@typescript-eslint/no-redundant-type-constituents': 'warn',
|
|
56
|
+
'@typescript-eslint/no-unused-vars': [
|
|
57
|
+
'warn',
|
|
58
|
+
{
|
|
59
|
+
argsIgnorePattern: '^_',
|
|
60
|
+
varsIgnorePattern: '^_',
|
|
61
|
+
caughtErrorsIgnorePattern: '^_',
|
|
62
|
+
},
|
|
63
|
+
],
|
|
64
|
+
},
|
|
65
|
+
},
|
|
66
|
+
];`;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Generate typecoveragerc.json configuration
|
|
70
|
+
*/
|
|
71
|
+
export function generateTypeCoverageConfig(config) {
|
|
72
|
+
const patterns = getProjectPatterns(config);
|
|
73
|
+
return {
|
|
74
|
+
files: patterns,
|
|
75
|
+
ignore: getIgnorePatterns(),
|
|
76
|
+
ignoreFiles: ['**/*.d.ts', '**/node_modules/**'],
|
|
77
|
+
ignoreCatch: true,
|
|
78
|
+
skipLibCheck: true,
|
|
79
|
+
checkPropertyAccess: true,
|
|
80
|
+
strict: true,
|
|
81
|
+
suppressError: false,
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Generate typecoveragerc.json as JSON string
|
|
86
|
+
*/
|
|
87
|
+
export function generateTypeCoverageConfigJSON(config) {
|
|
88
|
+
return JSON.stringify(generateTypeCoverageConfig(config), null, 2);
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Generate .lintstagedrc.json configuration
|
|
92
|
+
*/
|
|
93
|
+
export function generateLintStagedConfig() {
|
|
94
|
+
return {
|
|
95
|
+
'*.{ts,tsx}': ['eslint --fix'],
|
|
96
|
+
'*.{json,md}': ['prettier --write'],
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Generate .lintstagedrc.json as JSON string
|
|
101
|
+
*/
|
|
102
|
+
export function generateLintStagedConfigJSON() {
|
|
103
|
+
return JSON.stringify(generateLintStagedConfig(), null, 2);
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Generate pre-commit hook script
|
|
107
|
+
*/
|
|
108
|
+
export function generatePreCommitHook() {
|
|
109
|
+
return `#!/bin/sh
|
|
110
|
+
# Pre-commit hook for dead code and quality checks
|
|
111
|
+
# Generated by @mathonsunday/dead-code-toolkit
|
|
112
|
+
|
|
113
|
+
set -e
|
|
114
|
+
|
|
115
|
+
echo "[Dead Code Toolkit] Running pre-commit checks..."
|
|
116
|
+
|
|
117
|
+
# Stage 1: lint-staged (on staged files only)
|
|
118
|
+
echo "[Stage 1/4] Running lint-staged (ESLint + Prettier)..."
|
|
119
|
+
npx lint-staged || {
|
|
120
|
+
echo "❌ Lint-staged failed"
|
|
121
|
+
exit 1
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
# Stage 2: Full type check
|
|
125
|
+
echo "[Stage 2/4] Running TypeScript type check..."
|
|
126
|
+
npm run type-check || {
|
|
127
|
+
echo "❌ Type check failed"
|
|
128
|
+
exit 1
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
# Stage 3: Dead code detection (optional - doesn't block on failure)
|
|
132
|
+
echo "[Stage 3/4] Checking for dead code..."
|
|
133
|
+
npm run dead-code || {
|
|
134
|
+
echo "⚠️ Dead code detected. Consider running: npm run dead-code:fix"
|
|
135
|
+
# Don't exit - just warn
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
# Stage 4: Run tests
|
|
139
|
+
echo "[Stage 4/4] Running tests..."
|
|
140
|
+
npm test -- --run || {
|
|
141
|
+
echo "❌ Tests failed"
|
|
142
|
+
exit 1
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
echo "✅ All pre-commit checks passed!"
|
|
146
|
+
exit 0`;
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* Generate package.json scripts to add
|
|
150
|
+
*/
|
|
151
|
+
export function generatePackageJsonScripts() {
|
|
152
|
+
return {
|
|
153
|
+
'dead-code': 'knip',
|
|
154
|
+
'dead-code:fix': 'knip --fix',
|
|
155
|
+
'dead-code:analyze': 'dead-code-toolkit analyze',
|
|
156
|
+
'type:coverage': 'type-coverage --detail --strict',
|
|
157
|
+
'type:report': 'typescript-coverage-report',
|
|
158
|
+
verify: 'npm run type-check && npm run lint && npm run dead-code && npm test',
|
|
159
|
+
};
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* Configuration templates metadata
|
|
163
|
+
*/
|
|
164
|
+
export const CONFIG_TEMPLATES = {
|
|
165
|
+
knip: {
|
|
166
|
+
filename: 'knip.json',
|
|
167
|
+
description: 'Knip configuration for dead code detection',
|
|
168
|
+
generator: generateKnipConfigJSON,
|
|
169
|
+
},
|
|
170
|
+
eslint: {
|
|
171
|
+
filename: 'eslint.config.js (partial - add to existing config)',
|
|
172
|
+
description: 'ESLint rules for dead code detection',
|
|
173
|
+
generator: generateESLintConfigCode,
|
|
174
|
+
},
|
|
175
|
+
typeCoverage: {
|
|
176
|
+
filename: 'typecoveragerc.json',
|
|
177
|
+
description: 'Type coverage measurement configuration',
|
|
178
|
+
generator: generateTypeCoverageConfigJSON,
|
|
179
|
+
},
|
|
180
|
+
lintStaged: {
|
|
181
|
+
filename: '.lintstagedrc.json',
|
|
182
|
+
description: 'Lint-staged configuration for staged files',
|
|
183
|
+
generator: generateLintStagedConfigJSON,
|
|
184
|
+
},
|
|
185
|
+
preCommit: {
|
|
186
|
+
filename: '.husky/pre-commit',
|
|
187
|
+
description: 'Pre-commit hook script',
|
|
188
|
+
generator: generatePreCommitHook,
|
|
189
|
+
},
|
|
190
|
+
};
|
|
191
|
+
//# sourceMappingURL=templates.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"templates.js","sourceRoot":"","sources":["../../src/config/templates.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Main entry point for dead code toolkit
|
|
3
|
+
* Exports public API for programmatic usage
|
|
4
|
+
*/
|
|
5
|
+
export { analyzeDeadCode, fixFindings } from './analyzer.js';
|
|
6
|
+
export type { AnalysisOptions, AnalysisResult, AnalysisSummary, CheckResult, CheckType, Finding, FixResult, FixDetail, SetupOptions, SetupResult, ProjectConfig, } from './types.js';
|
|
7
|
+
export { createJSONReport, formatJSONReport, formatJSONReportCompact, createLLMSummary, type JSONReport, type JSONFinding, type LLMSummaryReport, } from './reporters/jsonReporter.js';
|
|
8
|
+
export { runKnipCheck } from './checkers/knipChecker.js';
|
|
9
|
+
export { runTypeScriptCheck } from './checkers/typescriptChecker.js';
|
|
10
|
+
export { setupProject } from './setup/installer.js';
|
|
11
|
+
export { detectProjectConfig, getEntryPoints, getProjectPatterns } from './config/detectors.js';
|
|
12
|
+
export { generateKnipConfig, generateESLintRules, generateTypeCoverageConfig, generateLintStagedConfig, generatePackageJsonScripts, } from './config/templates.js';
|
|
13
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAG7D,YAAY,EACV,eAAe,EACf,cAAc,EACd,eAAe,EACf,WAAW,EACX,SAAS,EACT,OAAO,EACP,SAAS,EACT,SAAS,EACT,YAAY,EACZ,WAAW,EACX,aAAa,GACd,MAAM,YAAY,CAAC;AAGpB,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAChB,uBAAuB,EACvB,gBAAgB,EAChB,KAAK,UAAU,EACf,KAAK,WAAW,EAChB,KAAK,gBAAgB,GACtB,MAAM,6BAA6B,CAAC;AAGrC,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AAGrE,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAGpD,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAChG,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACnB,0BAA0B,EAC1B,wBAAwB,EACxB,0BAA0B,GAC3B,MAAM,uBAAuB,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Main entry point for dead code toolkit
|
|
3
|
+
* Exports public API for programmatic usage
|
|
4
|
+
*/
|
|
5
|
+
// Core functions
|
|
6
|
+
export { analyzeDeadCode, fixFindings } from './analyzer.js';
|
|
7
|
+
// Reporters
|
|
8
|
+
export { createJSONReport, formatJSONReport, formatJSONReportCompact, createLLMSummary, } from './reporters/jsonReporter.js';
|
|
9
|
+
// Checkers (for advanced usage)
|
|
10
|
+
export { runKnipCheck } from './checkers/knipChecker.js';
|
|
11
|
+
export { runTypeScriptCheck } from './checkers/typescriptChecker.js';
|
|
12
|
+
// Setup functions
|
|
13
|
+
export { setupProject } from './setup/installer.js';
|
|
14
|
+
// Config utilities (for advanced usage)
|
|
15
|
+
export { detectProjectConfig, getEntryPoints, getProjectPatterns } from './config/detectors.js';
|
|
16
|
+
export { generateKnipConfig, generateESLintRules, generateTypeCoverageConfig, generateLintStagedConfig, generatePackageJsonScripts, } from './config/templates.js';
|
|
17
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,iBAAiB;AACjB,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAiB7D,YAAY;AACZ,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAChB,uBAAuB,EACvB,gBAAgB,GAIjB,MAAM,6BAA6B,CAAC;AAErC,gCAAgC;AAChC,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AAErE,kBAAkB;AAClB,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEpD,wCAAwC;AACxC,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAChG,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACnB,0BAA0B,EAC1B,wBAAwB,EACxB,0BAA0B,GAC3B,MAAM,uBAAuB,CAAC"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* JSON reporter - formats analysis results as JSON for programmatic consumption
|
|
3
|
+
* Optimized for LLM interpretation
|
|
4
|
+
*/
|
|
5
|
+
import type { AnalysisResult } from '../types.js';
|
|
6
|
+
export interface JSONReport {
|
|
7
|
+
version: '1.0';
|
|
8
|
+
timestamp: string;
|
|
9
|
+
status: AnalysisResult['status'];
|
|
10
|
+
summary: {
|
|
11
|
+
totalIssues: number;
|
|
12
|
+
fixableIssues: number;
|
|
13
|
+
byCategory: Record<string, number>;
|
|
14
|
+
bySeverity: {
|
|
15
|
+
errors: number;
|
|
16
|
+
warnings: number;
|
|
17
|
+
info: number;
|
|
18
|
+
};
|
|
19
|
+
executionTimeMs: number;
|
|
20
|
+
};
|
|
21
|
+
findings: JSONFinding[];
|
|
22
|
+
recommendations: string[];
|
|
23
|
+
checksRun: string[];
|
|
24
|
+
}
|
|
25
|
+
export interface JSONFinding {
|
|
26
|
+
id: string;
|
|
27
|
+
category: string;
|
|
28
|
+
severity: string;
|
|
29
|
+
file: string;
|
|
30
|
+
location?: {
|
|
31
|
+
line?: number;
|
|
32
|
+
column?: number;
|
|
33
|
+
};
|
|
34
|
+
message: string;
|
|
35
|
+
fixable: boolean;
|
|
36
|
+
suggestion?: string;
|
|
37
|
+
source: string;
|
|
38
|
+
rule?: string;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Convert analysis result to JSON report
|
|
42
|
+
*/
|
|
43
|
+
export declare function createJSONReport(result: AnalysisResult): JSONReport;
|
|
44
|
+
/**
|
|
45
|
+
* Format JSON report as indented string for display
|
|
46
|
+
*/
|
|
47
|
+
export declare function formatJSONReport(report: JSONReport): string;
|
|
48
|
+
/**
|
|
49
|
+
* Format JSON report as compact string for logging
|
|
50
|
+
*/
|
|
51
|
+
export declare function formatJSONReportCompact(report: JSONReport): string;
|
|
52
|
+
/**
|
|
53
|
+
* Create a summary report for LLM consumption
|
|
54
|
+
*/
|
|
55
|
+
export interface LLMSummaryReport {
|
|
56
|
+
status: 'success' | 'failure' | 'partial' | 'clean';
|
|
57
|
+
totalIssues: number;
|
|
58
|
+
summary: string;
|
|
59
|
+
topIssues: Array<{
|
|
60
|
+
count: number;
|
|
61
|
+
type: string;
|
|
62
|
+
severity: string;
|
|
63
|
+
fixable: number;
|
|
64
|
+
}>;
|
|
65
|
+
actionItems: string[];
|
|
66
|
+
}
|
|
67
|
+
export declare function createLLMSummary(result: AnalysisResult): LLMSummaryReport;
|
|
68
|
+
//# sourceMappingURL=jsonReporter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jsonReporter.d.ts","sourceRoot":"","sources":["../../src/reporters/jsonReporter.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAW,MAAM,aAAa,CAAC;AAE3D,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,KAAK,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,cAAc,CAAC,QAAQ,CAAC,CAAC;IACjC,OAAO,EAAE;QACP,WAAW,EAAE,MAAM,CAAC;QACpB,aAAa,EAAE,MAAM,CAAC;QACtB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACnC,UAAU,EAAE;YACV,MAAM,EAAE,MAAM,CAAC;YACf,QAAQ,EAAE,MAAM,CAAC;YACjB,IAAI,EAAE,MAAM,CAAC;SACd,CAAC;QACF,eAAe,EAAE,MAAM,CAAC;KACzB,CAAC;IACF,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE;QACT,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,cAAc,GAAG,UAAU,CAoBnE;AAoFD;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,CAE3D;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,CAElE;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,CAAC;IACpD,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,KAAK,CAAC;QACf,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,EAAE,MAAM,CAAC;QACjB,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC,CAAC;IACH,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,cAAc,GAAG,gBAAgB,CA6CzE"}
|