UNPKG

gather-ts

Version:

A powerful code analysis and packaging tool designed for creating AI-friendly code representations for javascript and typescript projects.

121 lines (120 loc) 3.77 kB
import { IService } from "@/types/services"; import { IFileSystem } from "@/utils/filesystem/interfaces/IFileSystem"; import { ILogger } from "@/utils/logging/interfaces/ILogger"; import { IValidator } from "@/utils/validation/interfaces/IValidator"; import { IGatherTSConfig, IConfigValidationResult } from "@/types/config"; /** * Dependencies required by ConfigManager */ export interface IConfigManagerDeps { fileSystem: IFileSystem; logger: ILogger; validator: IValidator; } /** * Configuration options for ConfigManager */ export interface IConfigManagerOptions { /** Custom config file path */ configPath?: string; /** Enable debug mode */ debug?: boolean; /** Watch for config changes */ watch?: boolean; } /** * Options for loading configuration */ export interface IConfigLoadOptions { /** Whether the load is triggered by watch */ isWatch?: boolean; /** Skip validation */ skipValidation?: boolean; /** Merge strategy for arrays */ arrayMergeStrategy?: "replace" | "concat" | "unique"; } /** * Configuration change event data */ export interface IConfigChangeEvent { /** Type of change */ type: "update" | "reset"; /** Previous configuration */ oldConfig?: IGatherTSConfig; /** New configuration */ newConfig: IGatherTSConfig; /** Timestamp of change */ timestamp: number; /** Whether change was from watch */ isWatch?: boolean; } export interface IConfigValidator { validateConfig(config: Partial<IGatherTSConfig>): void; validateTokenizerConfig(config: Partial<IGatherTSConfig>): void; validateOutputFormat(config: Partial<IGatherTSConfig>): void; validateCustomText(config: Partial<IGatherTSConfig>): void; validateAll(config: Partial<IGatherTSConfig>): IConfigValidationResult; } /** * Configuration validation event data */ export interface IConfigValidationEvent { /** Validation result */ result: IConfigValidationResult; /** Configuration being validated */ config: Partial<IGatherTSConfig>; /** Timestamp of validation */ timestamp: number; } /** * Configuration metrics */ export interface IConfigMetrics { /** Number of configuration loads */ loads: number; /** Number of configuration updates */ updates: number; /** Number of validation errors */ validationErrors: number; /** Last update timestamp */ lastUpdate?: number; } /** * Core ConfigManager interface */ export interface IConfigManager extends IService { on(event: string | symbol, listener: (...args: any[]) => void): this; emit(event: string | symbol, ...args: any[]): boolean; removeAllListeners(event?: string | symbol): this; getConfig(): IGatherTSConfig; updateConfig(updates: Partial<IGatherTSConfig>): Promise<IGatherTSConfig>; saveConfig(): Promise<void>; reset(): void; getMetrics(): IConfigMetrics; onConfigChange(callback: (event: IConfigChangeEvent) => void): void; getProjectRoot(): string; getTokenizerModel(): string; getMaxDepth(): number | undefined; shouldShowTokenCount(): boolean; getTopFilesCount(): number; isDebugEnabled(): boolean; getModelTokenLimit(): number; getTokenWarning(totalTokens: number): string | null; validateConfig(config: Partial<IGatherTSConfig>): IConfigValidationResult; } /** * Static methods for ConfigManager */ export interface IConfigManagerStatic { /** Generate default configuration file */ generateDefaultConfig(outputPath: string, fileSystem: IFileSystem): void; } /** * ConfigManager events map */ export interface IConfigManagerEvents { configChange: IConfigChangeEvent; configValidation: IConfigValidationEvent; error: Error; warning: string; }