ecstatic
Version:
A simple static file server middleware that works with both Express and Flatiron
38 lines (31 loc) • 769 B
JavaScript
;
const fs = require('fs');
const path = require('path');
module.exports = function sortByIsDirectory(dir, paths, cb) {
// take the listing file names in `dir`
// returns directory and file array, each entry is
// of the array a [name, stat] tuple
let pending = paths.length;
const errs = [];
const dirs = [];
const files = [];
if (!pending) {
cb(errs, dirs, files);
return;
}
paths.forEach((file) => {
fs.stat(path.join(dir, file), (err, s) => {
if (err) {
errs.push([file, err]);
} else if (s.isDirectory()) {
dirs.push([file, s]);
} else {
files.push([file, s]);
}
pending -= 1;
if (pending === 0) {
cb(errs, dirs, files);
}
});
});
};