UNPKG

nextjs-analyzer

Version:

A modular tool that comprehensively analyzes Next.js projects. Includes component, performance, security, SEO, data fetching, code quality, and historical analysis features.

128 lines (111 loc) 3.47 kB
const fs = require('fs-extra'); const path = require('path'); const os = require('os'); const { logError } = require('./helpers'); /** * Kullanıcı ayarlarını yöneten sınıf */ class Settings { constructor() { // Ayarlar dosyasının yolu this.settingsDir = path.join(os.homedir(), '.nextjs-analyzer'); this.settingsFile = path.join(this.settingsDir, 'settings.json'); // Varsayılan ayarlar this.defaultSettings = { language: 'en', // Varsayılan dil: İngilizce format: 'text', // Varsayılan çıktı formatı verbose: false // Varsayılan detay seviyesi }; // Ayarları yükle this.settings = this._loadSettings(); } /** * Ayarları dosyadan yükler * @returns {Object} - Yüklenen ayarlar * @private */ _loadSettings() { try { // Ayarlar dizini yoksa oluştur if (!fs.existsSync(this.settingsDir)) { fs.mkdirpSync(this.settingsDir); } // Ayarlar dosyası yoksa varsayılan ayarları kaydet if (!fs.existsSync(this.settingsFile)) { fs.writeJsonSync(this.settingsFile, this.defaultSettings, { spaces: 2 }); return { ...this.defaultSettings }; } // Ayarları oku const settings = fs.readJsonSync(this.settingsFile); // Eksik ayarları varsayılan değerlerle tamamla return { ...this.defaultSettings, ...settings }; } catch (error) { logError('Ayarlar yüklenirken hata oluştu:', error); return { ...this.defaultSettings }; } } /** * Ayarları dosyaya kaydeder * @private */ _saveSettings() { try { // Ayarlar dizini yoksa oluştur if (!fs.existsSync(this.settingsDir)) { fs.mkdirpSync(this.settingsDir); } // Ayarları kaydet fs.writeJsonSync(this.settingsFile, this.settings, { spaces: 2 }); return true; } catch (error) { logError('Ayarlar kaydedilirken hata oluştu:', error); return false; } } /** * Belirtilen ayarı döndürür * @param {string} key - Ayar anahtarı * @param {*} defaultValue - Ayar bulunamazsa döndürülecek varsayılan değer * @returns {*} - Ayar değeri */ get(key, defaultValue) { return this.settings[key] !== undefined ? this.settings[key] : defaultValue; } /** * Belirtilen ayarı günceller * @param {string} key - Ayar anahtarı * @param {*} value - Ayar değeri * @returns {boolean} - Başarılı ise true, değilse false */ set(key, value) { this.settings[key] = value; return this._saveSettings(); } /** * Birden fazla ayarı günceller * @param {Object} settings - Güncellenecek ayarlar * @returns {boolean} - Başarılı ise true, değilse false */ update(settings) { this.settings = { ...this.settings, ...settings }; return this._saveSettings(); } /** * Tüm ayarları döndürür * @returns {Object} - Tüm ayarlar */ getAll() { return { ...this.settings }; } /** * Ayarları varsayılan değerlere sıfırlar * @returns {boolean} - Başarılı ise true, değilse false */ reset() { this.settings = { ...this.defaultSettings }; return this._saveSettings(); } } // Singleton instance const settings = new Settings(); module.exports = settings;