/
Nspection
/
rules-manager-mcp
Обзор
Документация
Войти
/
Nspection
/
rules-manager-mcp
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
dev
dist/data-loader.js
49 строк
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 { loadIndex, generateFileName } from "./utils/index-manager.js"; /** * Загружает все данные: индекс и контент правил */ export async function loadAllData(rulesDir, backupDir) { // Создаём директории await mkdir(rulesDir, { recursive: true }); await mkdir(backupDir, { recursive: true }); // Загружаем индекс const rulesIndex = await loadIndex(rulesDir); // Загружаем контент правил const projectRules = {}; 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, uid, key, content) { const fileName = generateFileName(uid, key); const filePath = join(rulesDir, fileName); await writeFile(filePath, content, "utf-8"); return fileName; } /** * Создаёт бэкап файла правила */ export async function createBackup(backupDir, fileName, oldContent) { 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, backupDir, fileName, content) { await createBackup(backupDir, fileName, content); await unlink(join(rulesDir, fileName)); }