UNPKG

astroboy

Version:

Astroboy(阿童木)is a Nodejs SFB(Separation of Front and Back ends) framework, built on koa2.

51 lines 1.92 kB
"use strict"; 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