const fs = require('fs-extra'); const path = require('path'); const { getCadInfo } = require('./router'); const MAX_SCAN_DEPTH = 8; function toCadKey(cadInfo) { return String(cadInfo?.key || '').toLowerCase(); } async function buildExistingCadKeyIndex(destinationRoot) { const keys = new Set(); if (!destinationRoot || !(await fs.pathExists(destinationRoot))) { return keys; } async function walk(currentDir, depth) { if (depth > MAX_SCAN_DEPTH) { return; } let entries; try { entries = await fs.readdir(currentDir, { withFileTypes: true }); } catch { return; } for (const entry of entries) { const fullPath = path.join(currentDir, entry.name); if (entry.isDirectory()) { await walk(fullPath, depth + 1); continue; } if (!entry.isFile()) { continue; } const cadInfo = getCadInfo(entry.name); if (!cadInfo) { continue; } keys.add(toCadKey(cadInfo)); } } await walk(destinationRoot, 0); return keys; } module.exports = { buildExistingCadKeyIndex, toCadKey };