@vulcan-sql/serve
Version:
VulcanSQL package for serving projects
71 lines • 3.08 kB
JavaScript
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
;