module-composer
Version:
Bring order to chaos. Level up your JS application architecture with Module Composer, a tiny but powerful module composition utility based on functional dependency injection.
25 lines (17 loc) • 721 B
JavaScript
const configKeys = ['compositionName', 'appName', 'displayName', 'packageName'];
const globalRegister = session => {
const { globalThis } = session.composerOptions;
const { compositions = [] } = globalThis;
const readPackageName = () => {
try { return require(`${globalThis.process.cwd()}/package.json`).name; }
catch { } // eslint-disable-line no-empty
};
const compositionName = [
configKeys.flatMap(key => session.config[key] ?? []),
readPackageName() ?? [],
'Unnamed Composition'
].flat()[0];
compositions.push({ [compositionName]: session.external });
Object.assign(globalThis, { compositions });
};
module.exports = { globalRegister };