const fs = require('fs'); const path = require('path'); const os = require('os'); const extensions = new Map(); async function loadExtensions() { const homeDir = os.homedir(); const extensionsDir = path.join(homeDir, 'WaifuBoards', 'extensions'); if (!fs.existsSync(extensionsDir)) { console.log("⚠️ Extensions directory not found, skipping..."); return; } try { const files = await fs.promises.readdir(extensionsDir); for (const file of files) { if (file.endsWith('.js')) { const filePath = path.join(extensionsDir, file); try { delete require.cache[require.resolve(filePath)]; const ExtensionClass = require(filePath); const instance = typeof ExtensionClass === 'function' ? new ExtensionClass() : (ExtensionClass.default ? new ExtensionClass.default() : null); if (instance && (instance.type === "anime-board" || instance.type === "book-board")) { const name = instance.constructor.name; extensions.set(name, instance); console.log(`📦 Loaded Extension: ${name}`); } } catch (e) { console.error(`❌ Failed to load extension ${file}:`, e.message); } } } console.log(`✅ Loaded ${extensions.size} extensions`); } catch (err) { console.error("❌ Extension Scan Error:", err); } } function getExtension(name) { return extensions.get(name); } function getAllExtensions() { return extensions; } function getExtensionsList() { return Array.from(extensions.keys()); } module.exports = { loadExtensions, getExtension, getAllExtensions, getExtensionsList };