export class SettingsService { private static instance: SettingsService; private settings: Map = new Map(); private storageKey = 'editor-settings'; private constructor() { this.loadSettings(); } public static getInstance(): SettingsService { if (!SettingsService.instance) { SettingsService.instance = new SettingsService(); } return SettingsService.instance; } private loadSettings(): void { try { const stored = localStorage.getItem(this.storageKey); if (stored) { const data = JSON.parse(stored); this.settings = new Map(Object.entries(data)); } } catch (error) { console.error('[SettingsService] Failed to load settings:', error); } } private saveSettings(): void { try { const data = Object.fromEntries(this.settings); localStorage.setItem(this.storageKey, JSON.stringify(data)); } catch (error) { console.error('[SettingsService] Failed to save settings:', error); } } public get(key: string, defaultValue: T): T { if (this.settings.has(key)) { return this.settings.get(key) as T; } return defaultValue; } public set(key: string, value: T): void { this.settings.set(key, value); this.saveSettings(); } public has(key: string): boolean { return this.settings.has(key); } public delete(key: string): void { this.settings.delete(key); this.saveSettings(); } public clear(): void { this.settings.clear(); this.saveSettings(); } public getAll(): Record { return Object.fromEntries(this.settings); } public getRecentProjects(): string[] { return this.get('recentProjects', []); } public addRecentProject(projectPath: string): void { const recentProjects = this.getRecentProjects(); const filtered = recentProjects.filter(p => p !== projectPath); const updated = [projectPath, ...filtered].slice(0, 10); this.set('recentProjects', updated); } public removeRecentProject(projectPath: string): void { const recentProjects = this.getRecentProjects(); const filtered = recentProjects.filter(p => p !== projectPath); this.set('recentProjects', filtered); } public clearRecentProjects(): void { this.set('recentProjects', []); } }