"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getExtensions = getExtensions; exports.getAnimeExtensions = getAnimeExtensions; exports.getBookExtensions = getBookExtensions; exports.getGalleryExtensions = getGalleryExtensions; exports.getExtensionSettings = getExtensionSettings; exports.installExtension = installExtension; exports.uninstallExtension = uninstallExtension; const extensions_1 = require("../../shared/extensions"); async function getExtensions(req, reply) { return { extensions: (0, extensions_1.getExtensionsList)() }; } async function getAnimeExtensions(req, reply) { const animeExtensions = (0, extensions_1.getAnimeExtensionsMap)(); return { extensions: Array.from(animeExtensions.keys()) }; } async function getBookExtensions(req, reply) { const bookExtensions = (0, extensions_1.getBookExtensionsMap)(); return { extensions: Array.from(bookExtensions.keys()) }; } async function getGalleryExtensions(req, reply) { const galleryExtensions = (0, extensions_1.getGalleryExtensionsMap)(); return { extensions: Array.from(galleryExtensions.keys()) }; } async function getExtensionSettings(req, reply) { const { name } = req.params; const ext = (0, extensions_1.getExtension)(name); if (!ext) { return { error: "Extension not found" }; } if (!ext.getSettings) { return { episodeServers: ["default"], supportsDub: false }; } return ext.getSettings(); } async function installExtension(req, reply) { const { fileName } = req.body; if (!fileName || !fileName.endsWith('.js')) { return reply.code(400).send({ error: "Invalid extension fileName provided" }); } try { const downloadUrl = `https://git.waifuboard.app/ItsSkaiya/WaifuBoard-Extensions/raw/branch/main/${fileName}`; await (0, extensions_1.saveExtensionFile)(fileName, downloadUrl); req.server.log.info(`Extension installed: ${fileName}`); return reply.code(200).send({ success: true, message: `Extension ${fileName} installed successfully.` }); } catch (error) { req.server.log.error(`Failed to install extension ${fileName}:`, error); return reply.code(500).send({ success: false, error: `Failed to install extension ${fileName}.` }); } } async function uninstallExtension(req, reply) { const { fileName } = req.body; if (!fileName || !fileName.endsWith('.js')) { return reply.code(400).send({ error: "Invalid extension fileName provided" }); } try { await (0, extensions_1.deleteExtensionFile)(fileName); req.server.log.info(`Extension uninstalled: ${fileName}`); return reply.code(200).send({ success: true, message: `Extension ${fileName} uninstalled successfully.` }); } catch (error) { // @ts-ignore if (error.code === 'ENOENT') { return reply.code(200).send({ success: true, message: `Extension ${fileName} already uninstalled (file not found).` }); } req.server.log.error(`Failed to uninstall extension ${fileName}:`, error); return reply.code(500).send({ success: false, error: `Failed to uninstall extension ${fileName}.` }); } }