@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.
Files changed (94) hide show
  1. package/README.md +356 -0
  2. package/dist/analyzer.d.ts +23 -0
  3. package/dist/analyzer.d.ts.map +1 -0
  4. package/dist/analyzer.js +173 -0
  5. package/dist/analyzer.js.map +1 -0
  6. package/dist/checkers/knipChecker.d.ts +11 -0
  7. package/dist/checkers/knipChecker.d.ts.map +1 -0
  8. package/dist/checkers/knipChecker.js +226 -0
  9. package/dist/checkers/knipChecker.js.map +1 -0
  10. package/dist/checkers/typescriptChecker.d.ts +10 -0
  11. package/dist/checkers/typescriptChecker.d.ts.map +1 -0
  12. package/dist/checkers/typescriptChecker.js +174 -0
  13. package/dist/checkers/typescriptChecker.js.map +1 -0
  14. package/dist/cli/index.d.ts +7 -0
  15. package/dist/cli/index.d.ts.map +1 -0
  16. package/dist/cli/index.js +204 -0
  17. package/dist/cli/index.js.map +1 -0
  18. package/dist/config/detectors.d.ts +29 -0
  19. package/dist/config/detectors.d.ts.map +1 -0
  20. package/dist/config/detectors.js +159 -0
  21. package/dist/config/detectors.js.map +1 -0
  22. package/dist/config/templates.d.ts +76 -0
  23. package/dist/config/templates.d.ts.map +1 -0
  24. package/dist/config/templates.js +191 -0
  25. package/dist/config/templates.js.map +1 -0
  26. package/dist/index.d.ts +13 -0
  27. package/dist/index.d.ts.map +1 -0
  28. package/dist/index.js +17 -0
  29. package/dist/index.js.map +1 -0
  30. package/dist/reporters/jsonReporter.d.ts +68 -0
  31. package/dist/reporters/jsonReporter.d.ts.map +1 -0
  32. package/dist/reporters/jsonReporter.js +161 -0
  33. package/dist/reporters/jsonReporter.js.map +1 -0
  34. package/dist/setup/hookInstaller.d.ts +36 -0
  35. package/dist/setup/hookInstaller.d.ts.map +1 -0
  36. package/dist/setup/hookInstaller.js +196 -0
  37. package/dist/setup/hookInstaller.js.map +1 -0
  38. package/dist/setup/installer.d.ts +10 -0
  39. package/dist/setup/installer.d.ts.map +1 -0
  40. package/dist/setup/installer.js +156 -0
  41. package/dist/setup/installer.js.map +1 -0
  42. package/dist/setup/packageJsonUpdater.d.ts +54 -0
  43. package/dist/setup/packageJsonUpdater.d.ts.map +1 -0
  44. package/dist/setup/packageJsonUpdater.js +129 -0
  45. package/dist/setup/packageJsonUpdater.js.map +1 -0
  46. package/dist/src/analyzer.d.ts +23 -0
  47. package/dist/src/analyzer.d.ts.map +1 -0
  48. package/dist/src/analyzer.js +173 -0
  49. package/dist/src/analyzer.js.map +1 -0
  50. package/dist/src/checkers/knipChecker.d.ts +11 -0
  51. package/dist/src/checkers/knipChecker.d.ts.map +1 -0
  52. package/dist/src/checkers/knipChecker.js +226 -0
  53. package/dist/src/checkers/knipChecker.js.map +1 -0
  54. package/dist/src/checkers/typescriptChecker.d.ts +10 -0
  55. package/dist/src/checkers/typescriptChecker.d.ts.map +1 -0
  56. package/dist/src/checkers/typescriptChecker.js +174 -0
  57. package/dist/src/checkers/typescriptChecker.js.map +1 -0
  58. package/dist/src/config/detectors.d.ts +29 -0
  59. package/dist/src/config/detectors.d.ts.map +1 -0
  60. package/dist/src/config/detectors.js +159 -0
  61. package/dist/src/config/detectors.js.map +1 -0
  62. package/dist/src/config/templates.d.ts +76 -0
  63. package/dist/src/config/templates.d.ts.map +1 -0
  64. package/dist/src/config/templates.js +191 -0
  65. package/dist/src/config/templates.js.map +1 -0
  66. package/dist/src/index.d.ts +13 -0
  67. package/dist/src/index.d.ts.map +1 -0
  68. package/dist/src/index.js +17 -0
  69. package/dist/src/index.js.map +1 -0
  70. package/dist/src/reporters/jsonReporter.d.ts +68 -0
  71. package/dist/src/reporters/jsonReporter.d.ts.map +1 -0
  72. package/dist/src/reporters/jsonReporter.js +161 -0
  73. package/dist/src/reporters/jsonReporter.js.map +1 -0
  74. package/dist/src/setup/hookInstaller.d.ts +36 -0
  75. package/dist/src/setup/hookInstaller.d.ts.map +1 -0
  76. package/dist/src/setup/hookInstaller.js +196 -0
  77. package/dist/src/setup/hookInstaller.js.map +1 -0
  78. package/dist/src/setup/installer.d.ts +10 -0
  79. package/dist/src/setup/installer.d.ts.map +1 -0
  80. package/dist/src/setup/installer.js +156 -0
  81. package/dist/src/setup/installer.js.map +1 -0
  82. package/dist/src/setup/packageJsonUpdater.d.ts +54 -0
  83. package/dist/src/setup/packageJsonUpdater.d.ts.map +1 -0
  84. package/dist/src/setup/packageJsonUpdater.js +129 -0
  85. package/dist/src/setup/packageJsonUpdater.js.map +1 -0
  86. package/dist/src/types.d.ts +177 -0
  87. package/dist/src/types.d.ts.map +1 -0
  88. package/dist/src/types.js +5 -0
  89. package/dist/src/types.js.map +1 -0
  90. package/dist/types.d.ts +177 -0
  91. package/dist/types.d.ts.map +1 -0
  92. package/dist/types.js +5 -0
  93. package/dist/types.js.map +1 -0
  94. package/package.json +84 -0
@@ -0,0 +1,156 @@
1
+ /**
2
+ * Main setup orchestrator
3
+ * Coordinates all setup tasks (configs, dependencies, hooks)
4
+ */
5
+ import { existsSync, writeFileSync } from 'fs';
6
+ import { resolve } from 'path';
7
+ import { execSync } from 'child_process';
8
+ import { detectProjectConfig } from '../config/detectors.js';
9
+ import { generateKnipConfigJSON, generateTypeCoverageConfigJSON, generateLintStagedConfigJSON, } from '../config/templates.js';
10
+ import { updatePackageJson, formatDependenciesForInstall } from './packageJsonUpdater.js';
11
+ import { setupAllHooks } from './hookInstaller.js';
12
+ /**
13
+ * Main setup function
14
+ */
15
+ export async function setupProject(options) {
16
+ const result = {
17
+ status: 'success',
18
+ filesCreated: [],
19
+ scriptsAdded: [],
20
+ dependenciesInstalled: [],
21
+ nextSteps: [],
22
+ errors: [],
23
+ };
24
+ try {
25
+ // Validate project root
26
+ if (!existsSync(options.projectRoot)) {
27
+ throw new Error(`Project root does not exist: ${options.projectRoot}`);
28
+ }
29
+ if (options.verbose) {
30
+ console.log(`[Setup] Starting setup in: ${options.projectRoot}`);
31
+ }
32
+ // Detect project configuration
33
+ const projectConfig = detectProjectConfig(options.projectRoot);
34
+ if (options.verbose) {
35
+ console.log(`[Setup] Detected project type: ${projectConfig.type}`);
36
+ }
37
+ // Step 1: Create configuration files
38
+ const configFiles = await createConfigFiles(options.projectRoot, projectConfig);
39
+ result.filesCreated.push(...configFiles);
40
+ // Step 2: Update package.json
41
+ const packageJsonUpdate = updatePackageJson(options.projectRoot, {
42
+ addScripts: true,
43
+ installDependencies: options.installDependencies !== false,
44
+ });
45
+ result.scriptsAdded.push(...packageJsonUpdate.scriptsAdded);
46
+ if (options.verbose && packageJsonUpdate.scriptsAdded.length > 0) {
47
+ console.log(`[Setup] Added ${packageJsonUpdate.scriptsAdded.length} npm scripts`);
48
+ }
49
+ // Step 3: Install dependencies
50
+ if (options.installDependencies !== false) {
51
+ const depsToInstall = packageJsonUpdate.dependenciesToInstall;
52
+ if (Object.keys(depsToInstall).length > 0) {
53
+ await installDependencies(options.projectRoot, depsToInstall, options.verbose);
54
+ result.dependenciesInstalled.push(...Object.keys(depsToInstall));
55
+ }
56
+ }
57
+ // Step 4: Setup Git hooks
58
+ if (options.setupHooks !== false) {
59
+ const hookResult = setupAllHooks(options.projectRoot);
60
+ if (!hookResult.success) {
61
+ result.errors?.push(...hookResult.errors);
62
+ result.status = 'partial';
63
+ }
64
+ // Mark hooks as part of setup
65
+ result.filesCreated.push('.husky/pre-commit', '.husky/commit-msg', 'commitlint.config.js');
66
+ }
67
+ // Generate next steps
68
+ result.nextSteps = generateNextSteps(projectConfig, result);
69
+ if (options.verbose) {
70
+ console.log(`[Setup] Setup complete! Status: ${result.status}`);
71
+ }
72
+ return result;
73
+ }
74
+ catch (error) {
75
+ const message = error instanceof Error ? error.message : String(error);
76
+ result.status = 'failure';
77
+ result.errors?.push(message);
78
+ return result;
79
+ }
80
+ }
81
+ /**
82
+ * Create configuration files
83
+ */
84
+ async function createConfigFiles(projectRoot, projectConfig) {
85
+ const filesCreated = [];
86
+ // Check for existing configs
87
+ if (projectConfig.existingConfigs.knip) {
88
+ console.log('[Setup] knip.json already exists, skipping');
89
+ }
90
+ else {
91
+ // Create knip.json
92
+ const knipConfig = generateKnipConfigJSON(projectConfig);
93
+ const knipPath = resolve(projectRoot, 'knip.json');
94
+ writeFileSync(knipPath, knipConfig);
95
+ filesCreated.push('knip.json');
96
+ console.log('[Setup] Created knip.json');
97
+ }
98
+ // Create typecoveragerc.json (always overwrite with updated config)
99
+ const typeCoverageConfig = generateTypeCoverageConfigJSON(projectConfig);
100
+ const typeCoveragePath = resolve(projectRoot, 'typecoveragerc.json');
101
+ writeFileSync(typeCoveragePath, typeCoverageConfig);
102
+ filesCreated.push('typecoveragerc.json');
103
+ console.log('[Setup] Created typecoveragerc.json');
104
+ // Create .lintstagedrc.json (always overwrite)
105
+ const lintStagedConfig = generateLintStagedConfigJSON();
106
+ const lintStagedPath = resolve(projectRoot, '.lintstagedrc.json');
107
+ writeFileSync(lintStagedPath, lintStagedConfig);
108
+ filesCreated.push('.lintstagedrc.json');
109
+ console.log('[Setup] Created .lintstagedrc.json');
110
+ // Note: ESLint config is not auto-created as it may conflict with existing configs
111
+ if (!projectConfig.existingConfigs.eslint) {
112
+ console.log('[Setup] ⚠️ ESLint config not found. Add these rules to your eslint.config.js:');
113
+ console.log(' @typescript-eslint/no-redundant-type-constituents: warn');
114
+ console.log(' @typescript-eslint/no-unused-vars: [warn, {argsIgnorePattern: "^_"}]');
115
+ }
116
+ return filesCreated;
117
+ }
118
+ /**
119
+ * Install npm dependencies
120
+ */
121
+ async function installDependencies(projectRoot, dependencies, verbose) {
122
+ const deps = formatDependenciesForInstall(dependencies);
123
+ if (verbose) {
124
+ console.log(`[Setup] Installing ${deps.length} dependencies...`);
125
+ }
126
+ try {
127
+ execSync(`npm install --save-dev ${deps.join(' ')}`, {
128
+ cwd: projectRoot,
129
+ stdio: verbose ? 'inherit' : 'ignore',
130
+ });
131
+ if (verbose) {
132
+ console.log(`[Setup] Dependencies installed`);
133
+ }
134
+ }
135
+ catch (error) {
136
+ throw new Error(`Failed to install dependencies: ${error instanceof Error ? error.message : String(error)}`);
137
+ }
138
+ }
139
+ /**
140
+ * Generate next steps for user
141
+ */
142
+ function generateNextSteps(projectConfig, result) {
143
+ const steps = [];
144
+ steps.push('Run: npm run dead-code to check for dead code');
145
+ steps.push('Review findings and consider running: npm run dead-code:fix');
146
+ if (result.scriptsAdded.includes('verify')) {
147
+ steps.push('Use: npm run verify to run all quality checks');
148
+ }
149
+ if (!projectConfig.existingConfigs.eslint) {
150
+ steps.push('⚠️ Update your ESLint config to include dead code detection rules');
151
+ }
152
+ steps.push('Configure pre-commit hooks: git commit -m "message"');
153
+ steps.push('Read: npx dead-code-toolkit --help for more commands');
154
+ return steps;
155
+ }
156
+ //# sourceMappingURL=installer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"installer.js","sourceRoot":"","sources":["../../../src/setup/installer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,54 @@
1
+ /**
2
+ * package.json updater
3
+ * Safely updates package.json with new scripts and dependencies
4
+ */
5
+ interface PackageJson {
6
+ name?: string;
7
+ version?: string;
8
+ scripts?: Record<string, string>;
9
+ dependencies?: Record<string, string>;
10
+ devDependencies?: Record<string, string>;
11
+ [key: string]: unknown;
12
+ }
13
+ /**
14
+ * Read package.json from project
15
+ */
16
+ export declare function readPackageJson(projectRoot: string): PackageJson;
17
+ /**
18
+ * Write package.json back to disk
19
+ */
20
+ export declare function writePackageJson(projectRoot: string, packageJson: PackageJson): void;
21
+ /**
22
+ * Add scripts to package.json
23
+ * Returns list of added scripts
24
+ */
25
+ export declare function addScripts(packageJson: PackageJson): string[];
26
+ /**
27
+ * Get recommended dev dependencies
28
+ */
29
+ export declare function getRecommendedDevDependencies(): Record<string, string>;
30
+ /**
31
+ * Check which dev dependencies are already installed
32
+ */
33
+ export declare function getInstalledDevDependencies(packageJson: PackageJson): Record<string, string>;
34
+ /**
35
+ * Get missing dev dependencies that need to be installed
36
+ */
37
+ export declare function getMissingDevDependencies(packageJson: PackageJson): Record<string, string>;
38
+ /**
39
+ * Format dependencies for npm install command
40
+ */
41
+ export declare function formatDependenciesForInstall(deps: Record<string, string>): string[];
42
+ /**
43
+ * Update package.json with all necessary changes
44
+ */
45
+ export declare function updatePackageJson(projectRoot: string, options?: {
46
+ addScripts?: boolean;
47
+ installDependencies?: boolean;
48
+ }): {
49
+ scriptsAdded: string[];
50
+ dependenciesToInstall: Record<string, string>;
51
+ updated: boolean;
52
+ };
53
+ export {};
54
+ //# sourceMappingURL=packageJsonUpdater.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"packageJsonUpdater.d.ts","sourceRoot":"","sources":["../../../src/setup/packageJsonUpdater.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,UAAU,WAAW;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACzC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,WAAW,CAWhE;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,WAAW,GAAG,IAAI,CAUpF;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,WAAW,EAAE,WAAW,GAAG,MAAM,EAAE,CAgB7D;AAED;;GAEG;AACH,wBAAgB,6BAA6B,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAUtE;AAED;;GAEG;AACH,wBAAgB,2BAA2B,CAAC,WAAW,EAAE,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAY5F;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,WAAW,EAAE,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAY1F;AAED;;GAEG;AACH,wBAAgB,4BAA4B,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,EAAE,CAEnF;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,WAAW,EAAE,MAAM,EACnB,OAAO,GAAE;IAAE,UAAU,CAAC,EAAE,OAAO,CAAC;IAAC,mBAAmB,CAAC,EAAE,OAAO,CAAA;CAAO,GACpE;IACD,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,qBAAqB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9C,OAAO,EAAE,OAAO,CAAC;CAClB,CA8BA"}
@@ -0,0 +1,129 @@
1
+ /**
2
+ * package.json updater
3
+ * Safely updates package.json with new scripts and dependencies
4
+ */
5
+ import { readFileSync, writeFileSync } from 'fs';
6
+ import { resolve } from 'path';
7
+ import { generatePackageJsonScripts } from '../config/templates.js';
8
+ /**
9
+ * Read package.json from project
10
+ */
11
+ export function readPackageJson(projectRoot) {
12
+ const packageJsonPath = resolve(projectRoot, 'package.json');
13
+ try {
14
+ const content = readFileSync(packageJsonPath, 'utf-8');
15
+ return JSON.parse(content);
16
+ }
17
+ catch (error) {
18
+ throw new Error(`Failed to read package.json: ${error instanceof Error ? error.message : String(error)}`);
19
+ }
20
+ }
21
+ /**
22
+ * Write package.json back to disk
23
+ */
24
+ export function writePackageJson(projectRoot, packageJson) {
25
+ const packageJsonPath = resolve(projectRoot, 'package.json');
26
+ try {
27
+ writeFileSync(packageJsonPath, JSON.stringify(packageJson, null, 2) + '\n');
28
+ }
29
+ catch (error) {
30
+ throw new Error(`Failed to write package.json: ${error instanceof Error ? error.message : String(error)}`);
31
+ }
32
+ }
33
+ /**
34
+ * Add scripts to package.json
35
+ * Returns list of added scripts
36
+ */
37
+ export function addScripts(packageJson) {
38
+ const scriptsToAdd = generatePackageJsonScripts();
39
+ const addedScripts = [];
40
+ if (!packageJson.scripts) {
41
+ packageJson.scripts = {};
42
+ }
43
+ for (const [name, command] of Object.entries(scriptsToAdd)) {
44
+ if (!packageJson.scripts[name]) {
45
+ packageJson.scripts[name] = command;
46
+ addedScripts.push(name);
47
+ }
48
+ }
49
+ return addedScripts;
50
+ }
51
+ /**
52
+ * Get recommended dev dependencies
53
+ */
54
+ export function getRecommendedDevDependencies() {
55
+ return {
56
+ knip: '^5.82.1',
57
+ 'type-coverage': '^2.29.7',
58
+ 'typescript-coverage-report': '^1.1.1',
59
+ husky: '^9.1.7',
60
+ 'lint-staged': '^16.2.7',
61
+ '@commitlint/cli': '^20.3.1',
62
+ '@commitlint/config-conventional': '^20.3.1',
63
+ };
64
+ }
65
+ /**
66
+ * Check which dev dependencies are already installed
67
+ */
68
+ export function getInstalledDevDependencies(packageJson) {
69
+ const devDeps = packageJson.devDependencies || {};
70
+ const recommended = getRecommendedDevDependencies();
71
+ const installed = {};
72
+ for (const [name] of Object.entries(recommended)) {
73
+ if (devDeps[name]) {
74
+ installed[name] = devDeps[name];
75
+ }
76
+ }
77
+ return installed;
78
+ }
79
+ /**
80
+ * Get missing dev dependencies that need to be installed
81
+ */
82
+ export function getMissingDevDependencies(packageJson) {
83
+ const devDeps = packageJson.devDependencies || {};
84
+ const recommended = getRecommendedDevDependencies();
85
+ const missing = {};
86
+ for (const [name, version] of Object.entries(recommended)) {
87
+ if (!devDeps[name]) {
88
+ missing[name] = version;
89
+ }
90
+ }
91
+ return missing;
92
+ }
93
+ /**
94
+ * Format dependencies for npm install command
95
+ */
96
+ export function formatDependenciesForInstall(deps) {
97
+ return Object.entries(deps).map(([name, version]) => `${name}@${version}`);
98
+ }
99
+ /**
100
+ * Update package.json with all necessary changes
101
+ */
102
+ export function updatePackageJson(projectRoot, options = {}) {
103
+ const packageJson = readPackageJson(projectRoot);
104
+ let updated = false;
105
+ const scriptsAdded = [];
106
+ // Add scripts
107
+ if (options.addScripts !== false) {
108
+ const added = addScripts(packageJson);
109
+ if (added.length > 0) {
110
+ scriptsAdded.push(...added);
111
+ updated = true;
112
+ }
113
+ }
114
+ // Get dependencies to install
115
+ let dependenciesToInstall = {};
116
+ if (options.installDependencies !== false) {
117
+ dependenciesToInstall = getMissingDevDependencies(packageJson);
118
+ }
119
+ // Write back if updated
120
+ if (updated) {
121
+ writePackageJson(projectRoot, packageJson);
122
+ }
123
+ return {
124
+ scriptsAdded,
125
+ dependenciesToInstall,
126
+ updated,
127
+ };
128
+ }
129
+ //# sourceMappingURL=packageJsonUpdater.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"packageJsonUpdater.js","sourceRoot":"","sources":["../../../src/setup/packageJsonUpdater.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,177 @@
1
+ /**
2
+ * Core type definitions for dead code analysis toolkit
3
+ */
4
+ /**
5
+ * Configuration options for dead code analysis
6
+ */
7
+ export interface AnalysisOptions {
8
+ /** Absolute path to project root directory */
9
+ projectRoot: string;
10
+ /** Which checks to run. Default: all */
11
+ checks?: CheckType[];
12
+ /** Automatically fix issues where possible */
13
+ fix?: boolean;
14
+ /** Custom paths to configuration files */
15
+ configPaths?: Partial<Record<string, string>>;
16
+ /** Verbose logging output */
17
+ verbose?: boolean;
18
+ }
19
+ /**
20
+ * Available check types
21
+ */
22
+ export type CheckType = 'knip' | 'typescript' | 'eslint' | 'type-coverage' | 'exhaustiveness' | 'all';
23
+ /**
24
+ * Result of a single analysis check
25
+ */
26
+ export interface CheckResult {
27
+ type: CheckType;
28
+ status: 'success' | 'failure' | 'skipped';
29
+ findings: Finding[];
30
+ executionTime: number;
31
+ error?: string;
32
+ }
33
+ /**
34
+ * Individual finding - a piece of dead code or issue detected
35
+ */
36
+ export interface Finding {
37
+ /** Category of the finding */
38
+ category: 'unused-export' | 'unused-file' | 'unused-dependency' | 'type-error' | 'unused-var' | 'redundant-type' | 'union-issue' | 'unused-param';
39
+ /** Severity level */
40
+ severity: 'error' | 'warning' | 'info';
41
+ /** File path (relative to project root) */
42
+ file: string;
43
+ /** Line number (1-based, if applicable) */
44
+ line?: number;
45
+ /** Column number (1-based, if applicable) */
46
+ column?: number;
47
+ /** Human-readable message describing the issue */
48
+ message: string;
49
+ /** Whether this issue can be automatically fixed */
50
+ fixable: boolean;
51
+ /** Suggestion for how to fix the issue */
52
+ suggestion?: string;
53
+ /** Source tool that detected this */
54
+ source: CheckType;
55
+ /** Rule name or code from the tool */
56
+ rule?: string;
57
+ }
58
+ /**
59
+ * Summary statistics for analysis results
60
+ */
61
+ export interface AnalysisSummary {
62
+ /** Total number of issues found */
63
+ totalIssues: number;
64
+ /** Breakdown by category */
65
+ byCategory: Record<string, number>;
66
+ /** Number of issues that can be auto-fixed */
67
+ fixableCount: number;
68
+ /** Number of errors (highest severity) */
69
+ errorCount: number;
70
+ /** Number of warnings */
71
+ warningCount: number;
72
+ /** Number of info/low severity items */
73
+ infoCount: number;
74
+ }
75
+ /**
76
+ * Complete analysis result
77
+ */
78
+ export interface AnalysisResult {
79
+ /** Overall status of the analysis */
80
+ status: 'success' | 'partial' | 'failure';
81
+ /** Summary statistics */
82
+ summary: AnalysisSummary;
83
+ /** All findings from all checks */
84
+ findings: Finding[];
85
+ /** Results from individual checks */
86
+ checkResults: CheckResult[];
87
+ /** Total execution time in milliseconds */
88
+ executionTime: number;
89
+ /** Error message if status is 'failure' */
90
+ error?: string;
91
+ }
92
+ /**
93
+ * Result of applying fixes
94
+ */
95
+ export interface FixResult {
96
+ /** Overall status */
97
+ status: 'success' | 'partial' | 'failure';
98
+ /** Number of issues fixed */
99
+ fixedCount: number;
100
+ /** Number of issues that could not be fixed */
101
+ unfixedCount: number;
102
+ /** Files that were modified */
103
+ modifiedFiles: string[];
104
+ /** Details of what was fixed */
105
+ fixes: FixDetail[];
106
+ /** Any errors that occurred */
107
+ errors?: string[];
108
+ }
109
+ /**
110
+ * Details about a single fix that was applied
111
+ */
112
+ export interface FixDetail {
113
+ /** The finding that was fixed */
114
+ finding: Finding;
115
+ /** What was changed */
116
+ action: string;
117
+ /** Was it successful */
118
+ success: boolean;
119
+ /** Error message if unsuccessful */
120
+ error?: string;
121
+ }
122
+ /**
123
+ * Configuration options for setup
124
+ */
125
+ export interface SetupOptions {
126
+ /** Absolute path to project root */
127
+ projectRoot: string;
128
+ /** Install pre-commit hooks */
129
+ setupHooks?: boolean;
130
+ /** Install npm dependencies */
131
+ installDependencies?: boolean;
132
+ /** Override default configs */
133
+ configOverrides?: Partial<Record<string, unknown>>;
134
+ /** Show detailed output */
135
+ verbose?: boolean;
136
+ }
137
+ /**
138
+ * Result of setup process
139
+ */
140
+ export interface SetupResult {
141
+ /** Overall status */
142
+ status: 'success' | 'partial' | 'failure';
143
+ /** Files created during setup */
144
+ filesCreated: string[];
145
+ /** Scripts added to package.json */
146
+ scriptsAdded: string[];
147
+ /** Dependencies installed */
148
+ dependenciesInstalled: string[];
149
+ /** Next steps for user */
150
+ nextSteps: string[];
151
+ /** Any errors that occurred */
152
+ errors?: string[];
153
+ }
154
+ /**
155
+ * Detected project configuration
156
+ */
157
+ export interface ProjectConfig {
158
+ /** Root directory */
159
+ root: string;
160
+ /** Whether package.json exists */
161
+ hasPackageJson: boolean;
162
+ /** Whether TypeScript is configured */
163
+ hasTypeScript: boolean;
164
+ /** TypeScript config path if present */
165
+ tsconfigPath?: string;
166
+ /** Project type */
167
+ type: 'react' | 'node' | 'fullstack' | 'unknown';
168
+ /** Existing tool configs present */
169
+ existingConfigs: {
170
+ eslint?: string;
171
+ prettier?: string;
172
+ knip?: string;
173
+ husky?: string;
174
+ [key: string]: string | undefined;
175
+ };
176
+ }
177
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Core type definitions for dead code analysis toolkit
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG"}