astroboy
Version:
Astroboy(阿童木)is a Nodejs SFB(Separation of Front and Back ends) framework, built on koa2.
51 lines • 1.92 kB
JavaScript
;
const path = require("path");
const lodash = require("lodash");
const Loader_1 = require("../core/Loader");
const util_1 = require("../core/lib/util");
class AstroboyMiddlewareLoader extends Loader_1.Loader {
async load() {
// 加载中间件配置
let middlewareConfig = {};
const configEntries = await this.globDirs(this.config.configPattern || []);
configEntries.forEach((entry) => {
middlewareConfig = lodash.merge(middlewareConfig, require(entry));
});
this.app.middlewareConfig = middlewareConfig;
// 加载中间件文件
let middlewares = {};
const entries = await this.globDirs(this.config.pattern || []);
entries.forEach((entry) => {
const key = this.resolveExtensions(path.basename(entry));
middlewares[key] = require(entry);
if (middlewareConfig[key]) {
try {
middlewareConfig[key]['path'] = entry;
}
catch (_a) {
/* noop */
}
}
});
this.app.middlewares = middlewares;
// 生成中间件加载顺序
let middlewareQueue = [];
Object.keys(middlewareConfig).forEach((item) => {
middlewareQueue.push(Object.assign({
priority: 300,
name: item,
}, middlewareConfig[item]));
});
middlewareQueue = middlewareQueue
.filter((item) => {
return item.enable === true;
})
.sort((a, b) => {
return a.priority - b.priority;
});
this.app.middlewareQueue = middlewareQueue;
await util_1.outputJsonAsync(`${this.app.ROOT_PATH}/run/middlewares.json`, middlewareQueue);
}
}
module.exports = AstroboyMiddlewareLoader;
//# sourceMappingURL=AstroboyMiddlewareLoader.js.map