naily
Version:
写了一个没有模块系统的 Minimal Nest.js 写着玩的~
74 lines • 3.21 kB
JavaScript
;
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