#!/usr/bin/env node // List folder names in a directory const fs = require('fs') const path = require('path') const relativePath = process.argv[2] if (!relativePath) { process.stdout.write(JSON.stringify({ success: false, error: 'Missing required parameter: directory path' }) + '\n') process.exit(1) } const staticDir = path.resolve(__dirname, '..', 'static') const normalizedPath = path.normalize(relativePath).replace(/\\/g, '/') if (normalizedPath.includes('..') || normalizedPath.startsWith('/')) { process.stdout.write(JSON.stringify({ success: false, error: 'Invalid file path' }) + '\n') process.exit(1) } const targetDir = path.resolve(staticDir, normalizedPath) if (!targetDir.startsWith(staticDir)) { process.stdout.write(JSON.stringify({ success: false, error: 'Path must be within static directory' }) + '\n') process.exit(1) } if (!fs.existsSync(targetDir)) { process.stdout.write(JSON.stringify({ success: false, error: 'Directory does not exist' }) + '\n') process.exit(1) } const stats = fs.statSync(targetDir) if (!stats.isDirectory()) { process.stdout.write(JSON.stringify({ success: false, error: 'Path is not a directory' }) + '\n') process.exit(1) } const entries = fs.readdirSync(targetDir, { withFileTypes: true }) const folderNames = [] for (const entry of entries) { if (entry.isDirectory()) { folderNames.push(entry.name) } } process.stdout.write(JSON.stringify({ success: true, data: folderNames }) + '\n') process.exit(0)