esm-require-directory
Version:
require a directory of modules using es6 modules require
26 lines (25 loc) • 1.14 kB
JavaScript
import fileName from './fileName.js';
import filePath from './filePath.js';
const isArray = Array.isArray || ((x)=>Object.prototype.toString.call(x) === '[object Array]');
const endsWith = (string, check)=>string.indexOf(check, string.length - check.length) !== -1;
function setResult(results, key, module) {
if (results[key] !== undefined) {
const value = isArray(results[key]) ? results[key] : [
results[key]
];
results[key] = value.concat(module);
} else results[key] = module;
}
export default function addResult(results, entry, options, module) {
// esm module so extract default by default unless asked not to
if (endsWith(entry.basename, '.mjs')) {
if (options.default === undefined || options.default) {
// check default
if (module.default === undefined) return; // no default
module = module.default;
}
}
if (options.paths) setResult(results, options.filename ? filePath(entry.path) : entry.path, module);
else if (options.filename) setResult(results, fileName(entry.path), module);
else results.push(module);
}