all files / file-manager-js/lib/listDeep/ fn.js

100% Statements 14/14
100% Branches 4/4
100% Functions 0/0
100% Lines 11/11
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24                         
/**
 * file-manager-js/listDeep
 * @copyright 2018 Eyas Ranjous <eyas.ranjous@gmail.com>
 * @license MIT
 */
 
// lists in-depth files and directories inside a directory
module.exports = list => (path) => {
  const entries = { files: [], dirs: [] };
  const listDeep = p => list(p)
    .then((currEntries) => {
      if (currEntries.files.length > 0) {
        entries.files = entries.files.concat(currEntries.files);
      }
      if (currEntries.dirs.length > 0) {
        entries.dirs = entries.dirs.concat(currEntries.dirs);
        const listing = currEntries.dirs.map(listDeep);
        return Promise.all(listing).then(() => entries);
      }
      return entries;
    });
  return listDeep(path);
};