/** * Recursive data nesting guard. * * In past versions, a buggy update/restore path created data/data/data/... * directories — each containing a full recursive copy of the parent. * This module runs at startup, detects and removes nested duplicates. * * Add to app.js: require('./utilities/nesting-guard')(); */ const fs = require('fs'); const path = require('path'); module.exports = function nestingGuard() { try { const paths = require('../config/paths'); const dataDir = paths.dataDir; const dataDataPath = path.join(dataDir, 'data'); // If data/data exists, it's a recursive duplicate — remove it if (fs.existsSync(dataDataPath)) { const stat = fs.statSync(dataDataPath); if (stat.isDirectory()) { // Verify it's truly a duplicate (contains config.json like the parent) const markerFile = path.join(dataDataPath, 'config.json'); const parentMarker = path.join(dataDir, 'config.json'); if (fs.existsSync(markerFile) && fs.existsSync(parentMarker)) { console.log('[nesting-guard] Removing recursive data nesting: ' + dataDataPath); fs.rmSync(dataDataPath, { recursive: true, force: true }); console.log('[nesting-guard] Recursive nesting removed'); } } } } catch (e) { // Non-fatal — don't crash startup over cleanup console.warn('[nesting-guard] Skipped: ' + e.message); } };