UNPKG

naily

Version:

写了一个没有模块系统的 Minimal Nest.js 写着玩的~

74 lines 3.21 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.BootNailyApplication = void 0; const express = require("express"); require("reflect-metadata"); const http_decorator_1 = require("./decorator/http.decorator"); const get_1 = require("./router/get"); const post_1 = require("./router/post"); const put_1 = require("./router/put"); const patch_1 = require("./router/patch"); const delete_1 = require("./router/delete"); const options_1 = require("./router/options"); const all_1 = require("./router/all"); const main_1 = require("./main"); const app = express(); http_decorator_1.componentContiner.forEach((item) => { const controllerMetadata = Reflect.getMetadata(http_decorator_1.HTTP_KEY.Controller, item); const prototype = Object.getPrototypeOf(controllerMetadata.clazz); const methodNames = Object.getOwnPropertyNames(prototype).filter((item) => item !== "constructor"); methodNames.forEach((element) => { (0, get_1.initGET)(prototype, element, controllerMetadata, app); (0, post_1.initPOST)(prototype, element, controllerMetadata, app); (0, put_1.initPUT)(prototype, element, controllerMetadata, app); (0, patch_1.initPatch)(prototype, element, controllerMetadata, app); (0, delete_1.initDelete)(prototype, element, controllerMetadata, app); (0, options_1.initOptions)(prototype, element, controllerMetadata, app); (0, all_1.initAll)(prototype, element, controllerMetadata, app); app.use((error, req, res, next) => { const filterReflect = Reflect.getMetadata(http_decorator_1.HTTP_KEY.ExceptionFilter, prototype[element]); if (filterReflect && filterReflect.parameter === main_1.HttpException) { return filterReflect.filter.catch(main_1.HttpException, req, res); } if (error instanceof main_1.HttpException) { let { statusCode, data } = error.message; res.status(statusCode).send(data); } else { const unknownReflect = Reflect.getMetadata(http_decorator_1.HTTP_KEY.UnknownErrorFilter, prototype[element]); if (unknownReflect && !unknownReflect.parameter) { return unknownReflect.filter.catch(error, req, res); } } }); }); }); const BootNailyApplication = (target) => { const init = new target(); const mounted = { boot(port, callBack) { app.listen(port, () => { if (callBack) { callBack(); return; } else { new main_1.Logger().log("Naily APP已经在端口" + port + "启动"); } }); }, useMiddleware(...args) { if (!args) { throw new TypeError("app.useMiddleware() 必须是一个合法的中间件函数"); } app.use(...args); return this; }, useFilter(filter) { return this; }, }; init.main(mounted); }; exports.BootNailyApplication = BootNailyApplication; //# sourceMappingURL=app.js.map