import { readdir, stat } from 'node:fs/promises';
import path from 'node:path';

// Recursively lists every file under entryPath. A path that is itself a file
// resolves to a single-element list, so callers can mix files and directories.
export async function walk(entryPath) {
  const entryStat = await stat(entryPath);
  if (entryStat.isFile()) return [entryPath];

  const entries = await readdir(entryPath, { withFileTypes: true });
  const files = [];

  for (const entry of entries) {
    const fullPath = path.join(entryPath, entry.name);
    if (entry.isDirectory()) {
      files.push(...(await walk(fullPath)));
    } else {
      files.push(fullPath);
    }
  }

  return files;
}
