waibu-mpa
Version:
MPA support for Waibu Framework
25 lines (22 loc) • 984 B
JavaScript
import ViewEngine from './class/view-engine.js'
async function collectViewEngines (ctx) {
const { eachPlugins, importModule, join, runHook } = this.app.bajo
const { isFunction, omit, isArray } = this.lib._
this.viewEngines = []
this.log.debug('collect%s', 'view engines')
const me = this
await eachPlugins(async function ({ file, ns }) {
let mod = await importModule(file)
if (isFunction(mod)) mod = await mod.call(this, ctx)
if (!isArray(mod)) mod = [mod]
for (const m of mod) {
await runHook(`${me.name}.${mod.name}:beforeCollectViewEngine`, m)
const ve = new ViewEngine(this, m.name, m.fileExts)
Object.assign(ve, omit(m, ['name', 'fileExts']))
me.viewEngines.push(ve)
me.log.trace('- %s@%s (%s)', ve.name, ns, join(ve.fileExts))
await runHook(`${me.name}.${mod.name}:afterCollectViewEngine`, ve)
}
}, { glob: 'view-engine.js', prefix: this.name })
}
export default collectViewEngines