UNPKG

walk-filtered

Version:

A simple, performant file system walker to provided fine-grained control over directories and files to walk. Supports Node 0.10 and above.

40 lines (39 loc) 1.42 kB
import Iterator from 'fs-iterator'; export * from './types.js'; function worker(root, filter, options, callback) { let iterator = new Iterator(root, { depth: options.depth === undefined ? Infinity : options.depth, alwaysStat: options.alwaysStat || false, lstat: options.lstat || false, filter: filter, callbacks: options.callbacks || options.async, error: (err)=>{ if (!~Iterator.EXPECTED_ERRORS.indexOf(err.code)) return false; if (options.error) return options.error(err); return true; } }); return iterator.forEach((_entry)=>{}, { concurrency: options.concurrency || Infinity }, function forEachCallback(err) { iterator.destroy(); iterator = null; callback(err); }); } export default function walk(root, filter, options, callback) { if (typeof root !== 'string') throw new Error('Directory is required'); if (typeof filter !== 'function') throw new Error('Filter is required'); if (typeof options === 'function') { callback = options; options = {}; } options = options || {}; if (typeof callback === 'function') { worker(root, filter, options, callback); return; } return new Promise((resolve, reject)=>worker(root, filter, options, (err)=>{ err ? reject(err) : resolve(undefined); })); }