zerodep
Version:
Zero dependency utils for various environments.
24 lines (23 loc) • 1.2 kB
JavaScript
;
// returns an access point for the structure bellow the given path
const fs = require('../fs');
const fn = require('../fn');
const point = (...pathResolveArgs) => {
if (!fs.exists(...pathResolveArgs)) return undefined;
const workDirArgsLength = pathResolveArgs.length;
const object = {};
const parse = (...pathResolveArgs) => {
const node = pathResolveArgs.length > workDirArgsLength ? fn.get(object, ...pathResolveArgs.slice(workDirArgsLength)) : object;
if (fs.entries(...pathResolveArgs).some((file) => ['js', 'mjs', 'json'].includes(file.split('.').pop()))) {
fn.mergeDeep(node, require(fs.pathResolve(...pathResolveArgs)));
}
fs.dirs(...pathResolveArgs).forEach((dir) => {
const entries = fs.entries(...pathResolveArgs, dir).some((file) => ['js', 'mjs', 'json'].includes(file.split('.').pop()));
fn.mergeDeep(node, { [dir]: entries ? require(fs.pathResolve(...pathResolveArgs, dir)) : {} });
if (fs.dirs(...pathResolveArgs, dir).length) parse(...pathResolveArgs, dir);
});
};
parse(...pathResolveArgs);
return object;
};
module.exports = point;