bajo
Version:
A framework to build a giant monstrous app rapidly
24 lines (21 loc) • 827 B
JavaScript
import lodash from 'lodash'
const { camelCase, map } = lodash
async function run () {
const me = this
const { runHook, eachPlugins, join } = me.bajo
const { freeze } = me.bajo
const methods = ['init']
if (!me.bajo.applet) methods.push('start')
for (const method of methods) {
await runHook(`bajo:${camelCase(`before ${method} all plugins`)}`)
await eachPlugins(async function ({ ns }) {
if (method === 'start') freeze(me[ns].config)
await runHook(`${ns}:${camelCase(`before ${method}`)}`)
await me[ns][method]()
await runHook(`${ns}:${camelCase(`after ${method}`)}`)
})
await runHook(`bajo:${camelCase(`after ${method} all plugins`)}`)
}
me.bajo.log.debug('loadedPlugins%s', join(map(me.bajo.pluginPkgs, b => camelCase(b))))
}
export default run