async function getFiles()

in ark-demo/webapp/_templates/promptUtils.js [43:74]


async function getFiles(dir) {
  const subdirs = await readdir(dir);
  const files = await Promise.all(
    subdirs.map(async (subdir) => {
      const res = resolve(dir, subdir);
      return (await stat(res)).isDirectory() ? getFiles(res) : res;
    })
  );

  const processedFiles = files
    .reduce((a, f) => a.concat(f), [])
    .reduce((total, file) => {
      // Process file name to convert it to object with path
      let processedFile;
      if (typeof file === 'string') {
        processedFile = {
          path: file.split(`src${path.sep}`)[file.split(`src${path.sep}`).length - 1],
          name: file.split(path.sep)[file.split(path.sep).length - 1],
        };
      } else {
        processedFile = file;
      }

      if (processedFile.name.includes('.js')) {
        total.push(processedFile);
      }

      return total;
    }, []);

  return processedFiles;
}