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.
20 lines (16 loc) • 799 B
JavaScript
const precompose = session => ({ key }) => {
const state = session.getState() ?? session.setState({ modules: {}, totalDuration: 0, durationUnit: 'ms' });
const modules = { ...state.modules, [key]: { key, startTime: performance.now() } };
session.setState({ modules });
};
const postcompose = session => ({ key }) => {
const state = session.getState();
const module = state.modules[key];
const endTime = performance.now();
const duration = endTime - module.startTime;
const modules = { ...state.modules, [key]: { ...module, endTime, duration } };
const totalDuration = state.totalDuration + duration;
session.setState({ totalDuration, modules });
};
const perf = session => () => session.extensions.perf;
module.exports = { precompose, postcompose, perf };