@zenweb/controller
Version:
Zenweb Controller module
27 lines (26 loc) • 1.15 kB
JavaScript
import { ControllerRegister } from './register.js';
import { debug, discoverControllerClass } from './utils.js';
export * from './controller.js';
export * from './types.js';
export { ControllerRegister, discoverControllerClass, };
export default function setup(opt) {
const option = Object.assign({
discoverPaths: ['./app/controller'],
}, opt);
return async function controller(setup) {
debug('option: %o', option);
setup.assertModuleExists('router');
setup.assertModuleExists('inject');
const controllerRegister = await setup.core.injector.getInstance(ControllerRegister);
if (option.discoverPaths && option.discoverPaths.length) {
for (let p of option.discoverPaths) {
for await (const i of discoverControllerClass(p, option.patterns)) {
controllerRegister.registerClass(i.class, option.autoControllerPrefix ? i.filename.split('/').filter(i => i !== 'index').join('/') : undefined);
}
}
}
setup.after(() => {
controllerRegister.addToRouter(setup.core.router);
});
};
}