Добавить данные после последнего рекурсивного вызова?

#node.js

Вопрос:

Я рекурсивно ищу файлы в папке и возвращаю массив с найденными данными. Наконец, я хочу добавить вызывающие параметры этой функции в массив, который я возвращаю, НО внутри рекурсивной функции и только один раз. Поэтому, когда функция вызывается в другой раз, я мог бы проверить, изменились ли параметры, и если нет, мне не нужно выполнять поиск во второй раз.

Моя функция выглядит так:

 list(start, { matcher, folders = true } = {}) {
    if (!fs.existsSync(start)) throw new Error(`${start} doesn't exists.`)
    const files = []
    const dir = fs.readdirSync(start)
    for (let iCnt = 0; iCnt < dir.length; iCnt  ) {
        const item = path.resolve(start, dir[iCnt])
        let stat = fs.statSync(item)
        switch (true) {
            case stat.isDirectory() amp;amp; folders:
                files.push(...this.list(item, { matcher, folders }))
                break
            case matcher amp;amp; matcher.test(item):
                files.push(new File(item))
                break
            case !matcher:
                files.push(new File(item))
                break
        }
    }
    // anywhere here I think I have to check if this is the last iteration
    // but how? 
    return files
}
 

Я долго думал, но никак не могу собраться с мыслями. Любая помощь была бы очень кстати.