UNPKG

@make-mjs/main

Version:
39 lines 1.5 kB
"use strict"; 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