Open
Description
Hello,
And it's me again :)
We have a small problem. When working with large nested directory, we often apply the filter. For example, built-in filter by patterns:
const re = require('readdir-enhanced');
let files = null;
try {
files = re.sync('./node_modules', {
deep: true,
filter: '**/test-*'
});
} catch (error) {
console.log('MEMORY: ' + (process.memoryUsage().heapUsed / 1e6) + ' MB');
console.dir(error, { colors: true });
}
console.dir(files, { colors: true });
In the example above, I call the reading of the directory that contains 20320
entries:
$ npm i jest ava babel-core standard eslint typescript tslint monaco xterm readdir-enhanced
After running the script we get the following:
MEMORY: 9.37484 MB
node_modules/readdir-enhanced/lib/call.js:51
throw err;
^
RangeError: Maximum call stack size exceeded
at Object.fs.lstatSync (fs.js:839:18)
at exports.lstat (node_modules/readdir-enhanced/lib/sync/fs.js:58:20)
at Object.safeCall [as safe] (node_modules/readdir-enhanced/lib/call.js:24:8)
at stat (node_modules/readdir-enhanced/lib/stat.js:19:8)
at DirectoryReader.processItem (node_modules/readdir-enhanced/lib/directory-reader.js:171:5)
at node_modules/readdir-enhanced/lib/sync/for-each.js:14:5
at Array.forEach (native)
at Object.syncForEach [as forEach] (node_modules/readdir-enhanced/lib/sync/for-each.js:13:9)
at node_modules/readdir-enhanced/lib/directory-reader.js:80:16
at onceWrapper (node_modules/readdir-enhanced/lib/call.js:45:17)
If I remove any filter (pattern
, function
), everything works fine.