@decorators/server
Version:
node decorators - decorators for express library
43 lines • 4.65 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.HandlerCreator = void 0;
const utils_1 = require("../utils");
const constants_1 = require("./constants");
const errors_1 = require("./errors");
class HandlerCreator {
message(message) {
if (message instanceof errors_1.ApiError) {
return message.toObject();
}
if (message instanceof Error) {
return { message: message.message };
}
return message;
}
async params(metadata, context, args) {
const params$ = metadata.map(param => param.factory
? param.factory(context)
: this.getParam(param, args));
const params = await Promise.all(params$);
return params.map(paramFn => (0, utils_1.toStandardType)(paramFn()));
}
async runHandler(handler) {
try {
return await handler();
}
catch (error) {
return error;
}
}
status(message, status) {
if (message instanceof errors_1.ApiError) {
return message.status;
}
if (message instanceof Error) {
return constants_1.HttpStatus.INTERNAL_SERVER_ERROR;
}
return status;
}
}
exports.HandlerCreator = HandlerCreator;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGFuZGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb3JlL2hlbHBlcnMvaGFuZGxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSxvQ0FBMEM7QUFDMUMsMkNBQXlDO0FBRXpDLHFDQUFvQztBQUVwQyxNQUFzQixjQUFjO0lBR2xDLE9BQU8sQ0FBQyxPQUFnQjtRQUN0QixJQUFJLE9BQU8sWUFBWSxpQkFBUSxFQUFFO1lBQy9CLE9BQU8sT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDO1NBQzNCO1FBRUQsSUFBSSxPQUFPLFlBQVksS0FBSyxFQUFFO1lBQzVCLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDO1NBQ3JDO1FBRUQsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQztJQUVELEtBQUssQ0FBQyxNQUFNLENBQUMsUUFBeUIsRUFBRSxPQUFnQixFQUFFLElBQWU7UUFDdkUsTUFBTSxPQUFPLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxPQUFPO1lBQ2pELENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQztZQUN4QixDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQzdCLENBQUM7UUFDRixNQUFNLE1BQU0sR0FBRyxNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFMUMsT0FBTyxNQUFNLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsSUFBQSxzQkFBYyxFQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBRUQsS0FBSyxDQUFDLFVBQVUsQ0FBQyxPQUFnQjtRQUMvQixJQUFJO1lBQ0YsT0FBTyxNQUFNLE9BQU8sRUFBRSxDQUFDO1NBQ3hCO1FBQUMsT0FBTyxLQUFLLEVBQUU7WUFDZCxPQUFPLEtBQUssQ0FBQztTQUNkO0lBQ0gsQ0FBQztJQUVELE1BQU0sQ0FBQyxPQUFnQixFQUFFLE1BQWM7UUFDckMsSUFBSSxPQUFPLFlBQVksaUJBQVEsRUFBRTtZQUMvQixPQUFPLE9BQU8sQ0FBQyxNQUFNLENBQUM7U0FDdkI7UUFFRCxJQUFJLE9BQU8sWUFBWSxLQUFLLEVBQUU7WUFDNUIsT0FBTyxzQkFBVSxDQUFDLHFCQUFxQixDQUFDO1NBQ3pDO1FBRUQsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztDQUNGO0FBNUNELHdDQTRDQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEhhbmRsZXIsIFBhcmFtTWV0YWRhdGEgfSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQgeyB0b1N0YW5kYXJkVHlwZSB9IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCB7IEh0dHBTdGF0dXMgfSBmcm9tICcuL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBDb250ZXh0IH0gZnJvbSAnLi9jb250ZXh0JztcbmltcG9ydCB7IEFwaUVycm9yIH0gZnJvbSAnLi9lcnJvcnMnO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgSGFuZGxlckNyZWF0b3Ige1xuICBhYnN0cmFjdCBnZXRQYXJhbShwYXJhbTogUGFyYW1NZXRhZGF0YSwgYXJnczogdW5rbm93bltdKTogUHJvbWlzZTx1bmtub3duPiB8IHVua25vd247XG5cbiAgbWVzc2FnZShtZXNzYWdlOiB1bmtub3duKSB7XG4gICAgaWYgKG1lc3NhZ2UgaW5zdGFuY2VvZiBBcGlFcnJvcikge1xuICAgICAgcmV0dXJuIG1lc3NhZ2UudG9PYmplY3QoKTtcbiAgICB9XG5cbiAgICBpZiAobWVzc2FnZSBpbnN0YW5jZW9mIEVycm9yKSB7XG4gICAgICByZXR1cm4geyBtZXNzYWdlOiBtZXNzYWdlLm1lc3NhZ2UgfTtcbiAgICB9XG5cbiAgICByZXR1cm4gbWVzc2FnZTtcbiAgfVxuXG4gIGFzeW5jIHBhcmFtcyhtZXRhZGF0YTogUGFyYW1NZXRhZGF0YVtdLCBjb250ZXh0OiBDb250ZXh0LCBhcmdzOiB1bmtub3duW10pIHtcbiAgICBjb25zdCBwYXJhbXMkID0gbWV0YWRhdGEubWFwKHBhcmFtID0+IHBhcmFtLmZhY3RvcnlcbiAgICAgID8gcGFyYW0uZmFjdG9yeShjb250ZXh0KVxuICAgICAgOiB0aGlzLmdldFBhcmFtKHBhcmFtLCBhcmdzKSxcbiAgICApO1xuICAgIGNvbnN0IHBhcmFtcyA9IGF3YWl0IFByb21pc2UuYWxsKHBhcmFtcyQpO1xuXG4gICAgcmV0dXJuIHBhcmFtcy5tYXAocGFyYW1GbiA9PiB0b1N0YW5kYXJkVHlwZShwYXJhbUZuKCkpKTtcbiAgfVxuXG4gIGFzeW5jIHJ1bkhhbmRsZXIoaGFuZGxlcjogSGFuZGxlcikge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gYXdhaXQgaGFuZGxlcigpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICByZXR1cm4gZXJyb3I7XG4gICAgfVxuICB9XG5cbiAgc3RhdHVzKG1lc3NhZ2U6IHVua25vd24sIHN0YXR1czogbnVtYmVyKSB7XG4gICAgaWYgKG1lc3NhZ2UgaW5zdGFuY2VvZiBBcGlFcnJvcikge1xuICAgICAgcmV0dXJuIG1lc3NhZ2Uuc3RhdHVzO1xuICAgIH1cblxuICAgIGlmIChtZXNzYWdlIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAgIHJldHVybiBIdHRwU3RhdHVzLklOVEVSTkFMX1NFUlZFUl9FUlJPUjtcbiAgICB9XG5cbiAgICByZXR1cm4gc3RhdHVzO1xuICB9XG59XG4iXX0=