UNPKG

fs-iterator

Version:

A file system iterator with filter and asyncIterator iterafaces. Supports Node 0.10 and above

48 lines 2.27 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "default", { enumerable: true, get: function() { return path; } }); var _index = /*#__PURE__*/ _interop_require_default(require("../fs-compat/index.js")); var _lifoFromArray = /*#__PURE__*/ _interop_require_default(require("../lifoFromArray.js")); var _createEntry = /*#__PURE__*/ _interop_require_default(require("./createEntry.js")); var _filter = /*#__PURE__*/ _interop_require_default(require("./filter.js")); var _stat = /*#__PURE__*/ _interop_require_default(require("./stat.js")); function _interop_require_default(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function isDirectory(entry) { if (entry.realStats) return entry.realStats.isDirectory(); return entry.stats.isDirectory(); } function path(item, iterator, callback) { var depth = item.depth; var entry = (0, _createEntry.default)(iterator, item); item = null; // release reference (0, _stat.default)(iterator, entry, function statCallback(err) { if (err || iterator.isDone()) return callback(err); (0, _filter.default)(iterator, entry, function filterCallback(err, keep) { if (err || !keep || iterator.isDone()) return callback(err); // not a directory or is a directory, but next level is too deep if (!isDirectory(entry) || depth + 1 > iterator.depth) return callback(null, entry); // get files in this directory _index.default.readdir(entry.fullPath, iterator.readdirOptions, function readdirCallback(err, files) { if (err || iterator.isDone()) return callback(err); if (files.length) iterator.push({ path: entry.path, depth: depth + 1, files: (0, _lifoFromArray.default)(files) }); return callback(null, entry); }); }); }); } /* CJS INTEROP */ if (exports.__esModule && exports.default) { try { Object.defineProperty(exports.default, '__esModule', { value: true }); for (var key in exports) { exports.default[key] = exports[key]; } } catch (_) {}; module.exports = exports.default; }