Básicamente lo que hace es leer todos los ficheros de una carpeta, por cada unom si es una carpeta se llama de forma recursiva a la misma función pasando la carpeta interna para que se vayan concatenando todos los ficheros.
Funcionando en node a partir de la versión 10.10.
const { resolve } = require('path');
const { readdir } = require('fs').promises;
async function getFiles(dir) {
const directories = await readdir(dir, { withFileTypes: true });
const files = await Promise.all(directories.map((directory) => {
const res = resolve(dir, directory.name);
return directory.isDirectory() ? getFiles(res) : res;
}));
return Array.prototype.concat(...files);
}