91 lines
2.0 KiB
TypeScript
91 lines
2.0 KiB
TypeScript
export interface CLIOptions {
|
|
dir: string;
|
|
output: string;
|
|
format: 'json' | 'yaml';
|
|
template: string;
|
|
config: string;
|
|
verbose: boolean;
|
|
}
|
|
|
|
export interface ProjectInfo {
|
|
projectType: ProjectType;
|
|
language: string;
|
|
framework: string | null;
|
|
dependencies: DependencyInfo;
|
|
conventions: ConventionInfo | null;
|
|
fileCount: number;
|
|
analysisDate: string;
|
|
}
|
|
|
|
export interface ProjectType {
|
|
primaryLanguage: string;
|
|
languages: string[];
|
|
frameworks: string[];
|
|
buildTools: string[];
|
|
}
|
|
|
|
export interface DependencyInfo {
|
|
direct: Dependency[];
|
|
dev: Dependency[];
|
|
total: number;
|
|
}
|
|
|
|
export interface Dependency {
|
|
name: string;
|
|
version: string;
|
|
type: 'prod' | 'dev';
|
|
isLocal: boolean;
|
|
}
|
|
|
|
export interface ConventionInfo {
|
|
namingConvention: NamingConvention;
|
|
importStyle: ImportStyle;
|
|
testingFramework: string | null;
|
|
codeStyle: CodeStyle;
|
|
}
|
|
|
|
export interface NamingConvention {
|
|
files: 'camelCase' | 'snake_case' | 'kebab-case' | 'PascalCase';
|
|
variables: 'camelCase' | 'snake_case' | 'kebab-case' | 'PascalCase';
|
|
functions: 'camelCase' | 'snake_case' | 'kebab-case' | 'PascalCase';
|
|
classes: 'PascalCase' | 'camelCase' | 'snake_case' | 'kebab-case';
|
|
}
|
|
|
|
export interface ImportStyle {
|
|
style: 'ESM' | 'CommonJS' | 'mixed';
|
|
aliasPrefix: string | null;
|
|
commonPatterns: string[];
|
|
}
|
|
|
|
export interface CodeStyle {
|
|
indentSize: number;
|
|
indentType: 'spaces' | 'tabs';
|
|
lineEndings: 'LF' | 'CRLF';
|
|
quoteStyle: 'single' | 'double';
|
|
}
|
|
|
|
export interface ContextConfig {
|
|
includes: string[];
|
|
excludes: string[];
|
|
outputFormat: 'json' | 'yaml';
|
|
template: 'cursor' | 'copilot' | 'generic' | 'default';
|
|
outputFile: string;
|
|
analyzeConventions: boolean;
|
|
includeDevDependencies: boolean;
|
|
respectGitignore: boolean;
|
|
}
|
|
|
|
export interface TemplateData {
|
|
projectInfo: ProjectInfo;
|
|
files: FileInfo[];
|
|
config: ContextConfig;
|
|
generatedAt: string;
|
|
}
|
|
|
|
export interface FileInfo {
|
|
path: string;
|
|
size: number;
|
|
type: string;
|
|
language: string;
|
|
}
|