esm-require-directory
Version:
require a directory of modules using es6 modules require
64 lines • 2.73 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
Object.defineProperty(exports, "default", {
enumerable: true,
get: function() {
return walk;
}
});
var _fsiterator = /*#__PURE__*/ _interop_require_default(require("fs-iterator"));
var _path = /*#__PURE__*/ _interop_require_default(require("path"));
var _addResultts = /*#__PURE__*/ _interop_require_default(require("./addResult.js"));
var _requireIndexts = /*#__PURE__*/ _interop_require_default(require("./requireIndex.js"));
function _interop_require_default(obj) {
return obj && obj.__esModule ? obj : {
default: obj
};
}
function walk(directory, options, callback) {
var results = options.paths || options.filename ? {} : [];
var iterator = new _fsiterator.default(directory, {
depth: options.recursive ? Infinity : 0,
alwaysStat: true,
filter: function(entry, callback) {
if (entry.path === '') return callback();
// check for index file one level under the directory
if (entry.stats.isDirectory()) {
if (options.recursive) {
callback(); // will pick up index in traverse
return;
}
var cb = function(error, module, indexBasename) {
if (error) return callback(error);
if (module) (0, _addResultts.default)(results, {
basename: indexBasename,
path: _path.default.join(entry.path, indexBasename)
}, options, module);
callback();
};
(0, _requireIndexts.default)(entry.fullPath, options, cb);
} else {
if (!~options.extensions.indexOf(_path.default.extname(entry.basename))) {
callback(); // not a supported index
return;
}
options.loader(entry.fullPath, function(err, module) {
if (err) return callback(err);
if (module) (0, _addResultts.default)(results, entry, options, module);
callback();
});
}
},
callbacks: true
});
iterator.forEach(function(_entry) {}, {
concurrency: 1
}, function(err) {
iterator.destroy();
iterator = null;
err ? callback(err) : callback(null, results);
});
}
/* 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; }