@make-mjs/main
Version:
39 lines • 1.5 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
const tslib_1 = require("tslib");
const path_1 = require("path");
const fs_extra_1 = require("fs-extra");
const fast_traverse_1 = tslib_1.__importDefault(require("fast-traverse"));
const FILTER_EXT = ['.js', '.jsx'];
exports.DEFAULT_FILTER_FUNC = x => FILTER_EXT.some(ext => x.base.endsWith(ext));
const DEEP_FUNC_IGNORED = ['.git', 'node_modules'];
exports.DEFAULT_DEEP_FUNC = x => !DEEP_FUNC_IGNORED.includes(x.base);
exports.DEFAULT_STAT_FUNC = fs_extra_1.lstat;
async function* read(options) {
const { dirname, filter = exports.DEFAULT_FILTER_FUNC, deep = exports.DEFAULT_DEEP_FUNC, stat = exports.DEFAULT_STAT_FUNC } = options;
const traverseReturn = fast_traverse_1.default({
dirname,
readdir: fs_extra_1.readdir,
stat,
join: path_1.join,
deep: param => deep({ base: param.basename, path: param.path })
});
for await (const { list, dirname } of traverseReturn) {
const promises = list
.map(base => {
const path = path_1.join(dirname, base);
return { base, path };
})
.filter(filter)
.map(async ({ path }) => {
const content = await fs_extra_1.readFile(path, 'utf8');
return { path, content };
});
for (const item of promises) {
yield item;
}
}
}
exports.read = read;
exports.default = read;
//# sourceMappingURL=read.js.map
;