UNPKG

anchundan

Version:
39 lines (36 loc) 1.42 kB
const path= require('path'); const fs = require('fs'); const publiccom = require('anchundan/src/core/publiccom'); const FrameworkType = require('anchundan/src/core/baseStruct/FrameworkType'); const AsyncFunction = Object.getPrototypeOf(async function(){}).constructor; const getController = ( app )=>{ let controllerlist = publiccom.getTarget('types')[FrameworkType.CONTROLLER]; let result = {}; controllerlist.forEach( controller => { const { name, typePath, content } = controller; if(!content){ const operateClass = require(typePath); const controllerInstance = new operateClass(app); let propers = Object.getOwnPropertyNames(Object.getPrototypeOf(controllerInstance)); propers.forEach( key => { if(controllerInstance[key] instanceof AsyncFunction){ let fun = controllerInstance[key]; controllerInstance[key] = async (context,...params)=>{ controllerInstance.context = context; await fun.apply(controllerInstance,[context,...params]); delete controllerInstance.context; }; } }); result[name] = controllerInstance; } }) return result; }; module.exports = { getController };