import { readdirSync, statSync, unlinkSync, writeFileSync, existsSync } from 'node:fs' import { join, extname } from 'node:path' const publicDir = './public' const allowedFolders = ['scores', 'pubs', 'album_art', 'images', 'hdp_images'] function getFolderPath(folder) { return join(publicDir, folder) } export default defineEventHandler(async (event) => { const method = event.method const query = getQuery(event) const folder = query.folder if (!folder || !allowedFolders.includes(folder)) { throw createError({ statusCode: 400, message: 'Invalid folder' }) } const folderPath = getFolderPath(folder) if (!existsSync(folderPath)) { throw createError({ statusCode: 404, message: 'Folder not found' }) } if (method === 'GET') { const files = readdirSync(folderPath) .filter(f => statSync(join(folderPath, f)).isFile()) .map(f => ({ name: f, size: statSync(join(folderPath, f)).size, url: `/${folder}/${f}` })) return files } if (method === 'DELETE') { const filename = query.file if (!filename) { throw createError({ statusCode: 400, message: 'Filename required' }) } const filePath = join(folderPath, filename) if (existsSync(filePath)) { unlinkSync(filePath) return { success: true } } throw createError({ statusCode: 404, message: 'File not found' }) } throw createError({ statusCode: 405, message: 'Method not allowed' }) })