/
Nspection
/
rules-manager-mcp
Обзор
Документация
Войти
/
Nspection
/
rules-manager-mcp
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
dev
src/data-loader.ts
76 строк
2 KB
Buglov Evgeny
refactor: split monolithic dist/index.js into separate modules
08 мар 2026, 20:17
08 мар 2026, 20:17
a966cbf
Код
Авторство
О чём код?
import { readFile, writeFile, mkdir, readdir, unlink } from "fs/promises"; import { join } from "path"; import { RulesIndexExtended } from "./types.js"; import { loadIndex, saveIndex, generateFileName } from "./utils/index-manager.js"; /** * Загружает все данные: индекс и контент правил */ export async function loadAllData( rulesDir: string, backupDir: string ): Promise<{ rulesIndex: RulesIndexExtended; projectRules: Record<string, string> }> { // Создаём директории await mkdir(rulesDir, { recursive: true }); await mkdir(backupDir, { recursive: true }); // Загружаем индекс const rulesIndex = await loadIndex(rulesDir); // Загружаем контент правил const projectRules: Record<string, string> = {}; const files = await readdir(rulesDir); for (const file of files.filter(f => f.endsWith(".md") && f !== "_TEMPLATE.md")) { const content = await readFile(join(rulesDir, file), "utf-8"); projectRules[file] = content; } console.error(`📚 Загружено правил: ${Object.keys(projectRules).length}`); console.error(`📋 Метаданных в индексе: ${Object.keys(rulesIndex.rules).length}`); return { rulesIndex, projectRules }; } /** * Сохраняет правило в файл */ export async function saveRule( rulesDir: string, uid: string, key: string, content: string ): Promise<string> { const fileName = generateFileName(uid, key); const filePath = join(rulesDir, fileName); await writeFile(filePath, content, "utf-8"); return fileName; } /** * Создаёт бэкап файла правила */ export async function createBackup( backupDir: string, fileName: string, oldContent: string ): Promise<string> { const timestamp = new Date().toISOString().replace(/[:.]/g, "-"); const backupFileName = `${fileName}.${timestamp}.md`; const backupPath = join(backupDir, backupFileName); await writeFile(backupPath, oldContent, "utf-8"); return backupFileName; } /** * Создаёт бэкап и удаляет файл правила */ export async function deleteRuleWithBackup( rulesDir: string, backupDir: string, fileName: string, content: string ): Promise<void> { await createBackup(backupDir, fileName, content); await unlink(join(rulesDir, fileName)); }