Ts Screener Info

if (!report.summary.passed && report.details.length) console.log('\n🔍 Problematic files:'); for (const file of report.details) if (file.missingTypes.length

let anyCount = 0; let typedSymbols = 0; let totalSymbols = 0; const missingTypes: string[] = []; const implicitAnyLines: number[] = [];

const program = new Command();

private buildReport(reports: FileReport[]): ScreenerReport 80);

private resolveFiles(): string[] const includes = this.options.include.flatMap(pattern => glob.sync(pattern)); const excludes = new Set(this.options.exclude.flatMap(pattern => glob.sync(pattern))); return includes.filter(f => !excludes.has(f)); ts screener

export type ScreenerReport = summary: filesScanned: number; totalAnyUsage: number; totalMissingTypes: number; typeCoveragePercent: number; passed: boolean; ; details: FileReport[]; ; import ts from 'typescript'; import glob from 'glob'; import readFileSync from 'fs'; import FileReport, ScreenerOptions, ScreenerReport from './types.js'; export class TypeScriptScreener { constructor(private options: ScreenerOptions) {}

private analyzeFile(filePath: string): FileReport const sourceText = readFileSync(filePath, 'utf-8'); const sourceFile = ts.createSourceFile(filePath, sourceText, ts.ScriptTarget.Latest, true); let typedSymbols = 0

"name": "ts-screener", "version": "1.0.0", "type": "module", "bin": "ts-screener": "./dist/cli.js" , "scripts": "build": "tsc", "start": "node dist/cli.js" , "dependencies": "commander": "^11.0.0", "glob": "^10.3.0", "typescript": "^5.0.0" , "devDependencies": "@types/node": "^20.0.0"