UNPKG

@vulcan-sql/serve

Version:

VulcanSQL package for serving projects

71 lines 3.08 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ActivityLogMiddleware = void 0; const tslib_1 = require("tslib"); const core_1 = require("@vulcan-sql/core"); const models_1 = require("../../models/index"); const inversify_1 = require("inversify"); const moment = require("moment"); const logger = (0, core_1.getLogger)({ scopeName: 'SERVE' }); let ActivityLogMiddleware = class ActivityLogMiddleware extends models_1.BuiltInMiddleware { constructor(config, name, activityLoggers) { super(config, name); this.activityLoggerMap = {}; this.activityLoggers = activityLoggers; } onActivate() { return tslib_1.__awaiter(this, void 0, void 0, function* () { for (const logger of this.activityLoggers) { if (logger.isEnabled()) { const id = logger.getExtensionId(); this.activityLoggerMap[id] = logger; } } }); } handle(context, next) { return tslib_1.__awaiter(this, void 0, void 0, function* () { if (!this.enabled) return next(); const logTime = moment.utc().format('YYYY-MM-DD HH:mm:ss'); const startTime = Date.now(); yield next(); const endTime = Date.now(); const duration = endTime - startTime; const body = context.response.body; const error = body === null || body === void 0 ? void 0 : body.message; const user = context.state.user; const status = context.response.status || context.status; const activityLog = { activityLogType: core_1.ActivityLogType.API_REQUEST, isSuccess: status.toString().startsWith('2') ? true : false, logTime, duration, method: context.request.method, url: context.request.originalUrl, href: context.request.href, ip: context.request.ip, header: context.request.header, params: context.params, query: context.request.query, status, error, user, }; for (const activityLogger of Object.values(this.activityLoggerMap)) { activityLogger.log(activityLog).catch((e) => { logger.debug(`Error when logging activity: ${e}`); }); } }); } }; ActivityLogMiddleware = tslib_1.__decorate([ (0, core_1.VulcanInternalExtension)('activity-log'), tslib_1.__param(0, (0, inversify_1.inject)(core_1.TYPES.ExtensionConfig)), tslib_1.__param(1, (0, inversify_1.inject)(core_1.TYPES.ExtensionName)), tslib_1.__param(2, (0, inversify_1.multiInject)(core_1.TYPES.Extension_ActivityLogger)), tslib_1.__metadata("design:paramtypes", [Object, String, Array]) ], ActivityLogMiddleware); exports.ActivityLogMiddleware = ActivityLogMiddleware; //# sourceMappingURL=activityLogMiddleware.js.map