@zola_do/audit 0.1.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,45 @@
1
+ export type TActivityAudit = {
2
+ eventTimestamp: Date;
3
+ eventType: EAuditableActivity;
4
+ objectType: string;
5
+ objectId: string;
6
+ payload: {
7
+ name: string;
8
+ message: string;
9
+ };
10
+ changes?: {
11
+ field: string;
12
+ from: any;
13
+ to: any;
14
+ message: any;
15
+ }[];
16
+ metadata?: Record<string, any>;
17
+ user?: {
18
+ id: string;
19
+ accountId: string;
20
+ username: string;
21
+ fullName: string;
22
+ };
23
+ organization?: {
24
+ id: string;
25
+ name: string;
26
+ };
27
+ };
28
+ export declare const ActivityAuditRmqClient = "Activity_Audit_Rmq_Client";
29
+ export declare const ActivityAuditRmqQueue = "activity-audit";
30
+ export declare const ActivityAuditRmqPattern = "create-activity-audit";
31
+ export declare const ActivityAuditDeadLetterExchange = "dead_letter_exchange";
32
+ export declare const ActivityAuditActivityAuditDeadLetterExchangeKey = "activity-audit.dead";
33
+ export declare const ActivityAuditKey = "activityAudit";
34
+ export declare enum EAuditableActivity {
35
+ CREATE = "CREATE",
36
+ UPDATE = "UPDATE",
37
+ DELETE = "DELETE",
38
+ ACTIVATE = "ACTIVATE",
39
+ CHANGE_ADDRESS = "CHANGE_ADDRESS"
40
+ }
41
+ export declare enum EAuditableEntity {
42
+ ORGANIZATION = "ORGANIZATION",
43
+ USER = "USER",
44
+ ACCOUNT = "ACCOUNT"
45
+ }
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.EAuditableEntity = exports.EAuditableActivity = exports.ActivityAuditKey = exports.ActivityAuditActivityAuditDeadLetterExchangeKey = exports.ActivityAuditDeadLetterExchange = exports.ActivityAuditRmqPattern = exports.ActivityAuditRmqQueue = exports.ActivityAuditRmqClient = void 0;
4
+ exports.ActivityAuditRmqClient = 'Activity_Audit_Rmq_Client';
5
+ exports.ActivityAuditRmqQueue = 'activity-audit';
6
+ exports.ActivityAuditRmqPattern = 'create-activity-audit';
7
+ exports.ActivityAuditDeadLetterExchange = 'dead_letter_exchange';
8
+ exports.ActivityAuditActivityAuditDeadLetterExchangeKey = 'activity-audit.dead';
9
+ exports.ActivityAuditKey = 'activityAudit';
10
+ var EAuditableActivity;
11
+ (function (EAuditableActivity) {
12
+ EAuditableActivity["CREATE"] = "CREATE";
13
+ EAuditableActivity["UPDATE"] = "UPDATE";
14
+ EAuditableActivity["DELETE"] = "DELETE";
15
+ EAuditableActivity["ACTIVATE"] = "ACTIVATE";
16
+ EAuditableActivity["CHANGE_ADDRESS"] = "CHANGE_ADDRESS";
17
+ })(EAuditableActivity || (exports.EAuditableActivity = EAuditableActivity = {}));
18
+ var EAuditableEntity;
19
+ (function (EAuditableEntity) {
20
+ EAuditableEntity["ORGANIZATION"] = "ORGANIZATION";
21
+ EAuditableEntity["USER"] = "USER";
22
+ EAuditableEntity["ACCOUNT"] = "ACCOUNT";
23
+ })(EAuditableEntity || (exports.EAuditableEntity = EAuditableEntity = {}));
24
+ //# sourceMappingURL=activity-audit.type.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"activity-audit.type.js","sourceRoot":"","sources":["../src/activity-audit.type.ts"],"names":[],"mappings":";;;AA4Ba,QAAA,sBAAsB,GAAG,2BAA2B,CAAC;AACrD,QAAA,qBAAqB,GAAG,gBAAgB,CAAC;AACzC,QAAA,uBAAuB,GAAG,uBAAuB,CAAC;AAClD,QAAA,+BAA+B,GAAG,sBAAsB,CAAC;AACzD,QAAA,+CAA+C,GAC1D,qBAAqB,CAAC;AACX,QAAA,gBAAgB,GAAG,eAAe,CAAC;AAEhD,IAAY,kBAMX;AAND,WAAY,kBAAkB;IAC5B,uCAAiB,CAAA;IACjB,uCAAiB,CAAA;IACjB,uCAAiB,CAAA;IACjB,2CAAqB,CAAA;IACrB,uDAAiC,CAAA;AACnC,CAAC,EANW,kBAAkB,kCAAlB,kBAAkB,QAM7B;AAED,IAAY,gBAIX;AAJD,WAAY,gBAAgB;IAC1B,iDAA6B,CAAA;IAC7B,iCAAa,CAAA;IACb,uCAAmB,CAAA;AACrB,CAAC,EAJW,gBAAgB,gCAAhB,gBAAgB,QAI3B"}
@@ -0,0 +1,19 @@
1
+ export declare enum EAuditLogRequestMethod {
2
+ GET = "GET",
3
+ POST = "POST",
4
+ PUT = "PUT",
5
+ DELETE = "DELETE",
6
+ PATCH = "PATCH",
7
+ EVENT = "EVENT"
8
+ }
9
+ export declare const AuditLoggerRMQClient = "AUDIT_LOGGER_RMQ_CLIENT";
10
+ export declare const AuditLoggerRMQQueue = "audit";
11
+ export declare const AuditLoggerRMQTopic = "audit-log-topic";
12
+ export declare const AuditDeadLetterExchange = "dead_letter_exchange";
13
+ export declare const DeadAuditRoutingKey = "audit.dead";
14
+ export declare const RegisterRequestAudit = "register-request-audit";
15
+ export declare const CommitRequestAudit = "commit-request-audit";
16
+ export declare const RollbackRequestAudit = "rollback-request-audit";
17
+ export declare const RecordInsertion = "record-insertion";
18
+ export declare const RecordUpdate = "record-update";
19
+ export declare const RecordDeletion = "record-delete";
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RecordDeletion = exports.RecordUpdate = exports.RecordInsertion = exports.RollbackRequestAudit = exports.CommitRequestAudit = exports.RegisterRequestAudit = exports.DeadAuditRoutingKey = exports.AuditDeadLetterExchange = exports.AuditLoggerRMQTopic = exports.AuditLoggerRMQQueue = exports.AuditLoggerRMQClient = exports.EAuditLogRequestMethod = void 0;
4
+ var EAuditLogRequestMethod;
5
+ (function (EAuditLogRequestMethod) {
6
+ EAuditLogRequestMethod["GET"] = "GET";
7
+ EAuditLogRequestMethod["POST"] = "POST";
8
+ EAuditLogRequestMethod["PUT"] = "PUT";
9
+ EAuditLogRequestMethod["DELETE"] = "DELETE";
10
+ EAuditLogRequestMethod["PATCH"] = "PATCH";
11
+ EAuditLogRequestMethod["EVENT"] = "EVENT";
12
+ })(EAuditLogRequestMethod || (exports.EAuditLogRequestMethod = EAuditLogRequestMethod = {}));
13
+ exports.AuditLoggerRMQClient = 'AUDIT_LOGGER_RMQ_CLIENT';
14
+ exports.AuditLoggerRMQQueue = 'audit';
15
+ exports.AuditLoggerRMQTopic = 'audit-log-topic';
16
+ exports.AuditDeadLetterExchange = 'dead_letter_exchange';
17
+ exports.DeadAuditRoutingKey = 'audit.dead';
18
+ exports.RegisterRequestAudit = 'register-request-audit';
19
+ exports.CommitRequestAudit = 'commit-request-audit';
20
+ exports.RollbackRequestAudit = 'rollback-request-audit';
21
+ exports.RecordInsertion = 'record-insertion';
22
+ exports.RecordUpdate = 'record-update';
23
+ exports.RecordDeletion = 'record-delete';
24
+ //# sourceMappingURL=audit-logger.enum.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audit-logger.enum.js","sourceRoot":"","sources":["../src/audit-logger.enum.ts"],"names":[],"mappings":";;;AAAA,IAAY,sBAOX;AAPD,WAAY,sBAAsB;IAChC,qCAAW,CAAA;IACX,uCAAa,CAAA;IACb,qCAAW,CAAA;IACX,2CAAiB,CAAA;IACjB,yCAAe,CAAA;IACf,yCAAe,CAAA;AACjB,CAAC,EAPW,sBAAsB,sCAAtB,sBAAsB,QAOjC;AAEY,QAAA,oBAAoB,GAAG,yBAAyB,CAAC;AACjD,QAAA,mBAAmB,GAAG,OAAO,CAAC;AAC9B,QAAA,mBAAmB,GAAG,iBAAiB,CAAC;AACxC,QAAA,uBAAuB,GAAG,sBAAsB,CAAC;AACjD,QAAA,mBAAmB,GAAG,YAAY,CAAC;AAEnC,QAAA,oBAAoB,GAAG,wBAAwB,CAAC;AAChD,QAAA,kBAAkB,GAAG,sBAAsB,CAAC;AAC5C,QAAA,oBAAoB,GAAG,wBAAwB,CAAC;AAChD,QAAA,eAAe,GAAG,kBAAkB,CAAC;AACrC,QAAA,YAAY,GAAG,eAAe,CAAC;AAC/B,QAAA,cAAc,GAAG,eAAe,CAAC"}
@@ -0,0 +1,17 @@
1
+ import { CallHandler, ExecutionContext, NestInterceptor } from '@nestjs/common';
2
+ import { Reflector } from '@nestjs/core';
3
+ import { Observable } from 'rxjs';
4
+ import { ClientProxy } from '@nestjs/microservices';
5
+ import { DataSource } from 'typeorm';
6
+ export declare class AuditLoggerInterceptor implements NestInterceptor {
7
+ private reflector;
8
+ private readonly connection;
9
+ private readonly rmsRMQClient;
10
+ constructor(reflector: Reflector, connection: DataSource, rmsRMQClient: ClientProxy);
11
+ intercept(context: ExecutionContext, next: CallHandler): Observable<any>;
12
+ private handleRequestAuditInitiation;
13
+ private handleEventAuditInitiation;
14
+ private handleTransaction;
15
+ private mapHeaders;
16
+ private mapCookies;
17
+ }
@@ -0,0 +1,129 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
12
+ return function (target, key) { decorator(target, key, paramIndex); }
13
+ };
14
+ var _a;
15
+ Object.defineProperty(exports, "__esModule", { value: true });
16
+ exports.AuditLoggerInterceptor = void 0;
17
+ const common_1 = require("@nestjs/common");
18
+ const core_1 = require("@nestjs/core");
19
+ const rxjs_1 = require("rxjs");
20
+ const microservices_1 = require("@nestjs/microservices");
21
+ const typeorm_1 = require("typeorm");
22
+ const crypto_1 = require("crypto");
23
+ const event_audit_decorator_1 = require("./event-audit.decorator");
24
+ const audit_logger_enum_1 = require("./audit-logger.enum");
25
+ const ignore_logger_decorator_1 = require("./ignore-logger.decorator");
26
+ let AuditLoggerInterceptor = class AuditLoggerInterceptor {
27
+ constructor(reflector, connection, rmsRMQClient) {
28
+ this.reflector = reflector;
29
+ this.connection = connection;
30
+ this.rmsRMQClient = rmsRMQClient;
31
+ }
32
+ intercept(context, next) {
33
+ const auditRmqEvent = this.reflector.getAllAndOverride(event_audit_decorator_1.AUDIT_RMQ_EVENT, [context.getHandler(), context.getClass()]);
34
+ const isAuditIgnored = this.reflector.getAllAndOverride(ignore_logger_decorator_1.IGNORE_AUDIT_LOGGER, [context.getHandler(), context.getClass()]);
35
+ if (isAuditIgnored)
36
+ return next.handle();
37
+ if (!auditRmqEvent &&
38
+ context.switchToHttp().getRequest().method == audit_logger_enum_1.EAuditLogRequestMethod.GET)
39
+ return next.handle();
40
+ const requestId = (this.connection['requestId'] = (0, crypto_1.randomUUID)());
41
+ const startTime = Date.now();
42
+ if (auditRmqEvent)
43
+ this.handleEventAuditInitiation(context, next, requestId);
44
+ else
45
+ this.handleRequestAuditInitiation(context, next, requestId);
46
+ return next.handle().pipe((0, rxjs_1.map)((resp) => {
47
+ const { statusCode } = context.switchToHttp().getResponse();
48
+ this.handleTransaction('Commit', statusCode, requestId, startTime);
49
+ return resp;
50
+ }), (0, rxjs_1.catchError)((error) => {
51
+ var _a;
52
+ const statusCode = (_a = error.status) !== null && _a !== void 0 ? _a : error.code;
53
+ this.handleTransaction('Rollback', statusCode, requestId, startTime, error === null || error === void 0 ? void 0 : error.message);
54
+ throw error;
55
+ }), (0, rxjs_1.finalize)(() => {
56
+ this.connection['user'] = null;
57
+ this.connection['requestId'] = null;
58
+ }));
59
+ }
60
+ handleRequestAuditInitiation(context, next, requestId) {
61
+ var _a, _b;
62
+ const req = context.switchToHttp().getRequest();
63
+ const { ip, ips, method, originalUrl, headers, body, params, user } = req;
64
+ const userPayload = (this.connection['user'] = {
65
+ id: user === null || user === void 0 ? void 0 : user.id,
66
+ name: `${user === null || user === void 0 ? void 0 : user.firstName} ${user === null || user === void 0 ? void 0 : user.lastName}`,
67
+ organizationId: (_a = user === null || user === void 0 ? void 0 : user.organization) === null || _a === void 0 ? void 0 : _a.id,
68
+ organizationName: (_b = user === null || user === void 0 ? void 0 : user.organization) === null || _b === void 0 ? void 0 : _b.name,
69
+ });
70
+ const log = {
71
+ id: requestId,
72
+ requestMethod: method,
73
+ application: process.env.APPLICATION_NAME,
74
+ module: originalUrl.split('/')[2],
75
+ requestBody: originalUrl.includes('/auth') ? {} : body,
76
+ requestHeader: this.mapHeaders(headers),
77
+ statusCode: 201,
78
+ ipAddress: (ips === null || ips === void 0 ? void 0 : ips.length) ? ips[0] : ip,
79
+ executionTime: 0,
80
+ user: userPayload,
81
+ };
82
+ this.rmsRMQClient.emit(audit_logger_enum_1.RegisterRequestAudit, log);
83
+ }
84
+ handleEventAuditInitiation(context, next, requestId) {
85
+ const eventPayload = context.getArgs()[0];
86
+ const eventPattern = context.getArgs()[1].args[2];
87
+ const userPayload = (this.connection['user'] = {});
88
+ const log = {
89
+ id: requestId,
90
+ requestMethod: audit_logger_enum_1.EAuditLogRequestMethod.EVENT,
91
+ application: process.env.APPLICATION_NAME,
92
+ module: eventPattern,
93
+ requestBody: eventPayload,
94
+ requestHeader: {},
95
+ statusCode: 201,
96
+ ipAddress: '-',
97
+ executionTime: 0,
98
+ user: userPayload,
99
+ };
100
+ this.rmsRMQClient.emit(audit_logger_enum_1.RegisterRequestAudit, log);
101
+ }
102
+ handleTransaction(type, statusCode, requestId, startTime, remark) {
103
+ const executionTime = Date.now() - startTime;
104
+ const approvePayload = {
105
+ requestId,
106
+ executionTime,
107
+ statusCode,
108
+ remark,
109
+ };
110
+ this.rmsRMQClient.emit(type == 'Commit' ? audit_logger_enum_1.CommitRequestAudit : audit_logger_enum_1.RollbackRequestAudit, approvePayload);
111
+ }
112
+ mapHeaders(headers) {
113
+ return Object.assign(Object.assign({}, headers), { authorization: (headers === null || headers === void 0 ? void 0 : headers.authorization) ? 'Bearer [REDACTED]' : undefined, cookie: (headers === null || headers === void 0 ? void 0 : headers.cookie) ? this.mapCookies(headers.cookie) : undefined });
114
+ }
115
+ mapCookies(cookie) {
116
+ return cookie.split(';').reduce((acc, cookie) => {
117
+ const [key] = cookie.split('=').map((part) => part.trim());
118
+ acc.push(key);
119
+ return acc;
120
+ }, []);
121
+ }
122
+ };
123
+ exports.AuditLoggerInterceptor = AuditLoggerInterceptor;
124
+ exports.AuditLoggerInterceptor = AuditLoggerInterceptor = __decorate([
125
+ (0, common_1.Injectable)(),
126
+ __param(2, (0, common_1.Inject)(audit_logger_enum_1.AuditLoggerRMQClient)),
127
+ __metadata("design:paramtypes", [core_1.Reflector, typeof (_a = typeof typeorm_1.DataSource !== "undefined" && typeorm_1.DataSource) === "function" ? _a : Object, microservices_1.ClientProxy])
128
+ ], AuditLoggerInterceptor);
129
+ //# sourceMappingURL=audit-logger.interceptor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audit-logger.interceptor.js","sourceRoot":"","sources":["../src/audit-logger.interceptor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import { EAuditLogRequestMethod } from './audit-logger.enum';
2
+ export type TAuditLog = {
3
+ requestMethod: EAuditLogRequestMethod;
4
+ application: string;
5
+ module: string;
6
+ requestBody: any;
7
+ requestHeader: any;
8
+ statusCode: number;
9
+ ipAddress: string;
10
+ executionTime: number;
11
+ objectIds: string[];
12
+ userId: any;
13
+ userName: any;
14
+ organizationId: any;
15
+ organizationName: any;
16
+ };
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=audit-logger.type.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audit-logger.type.js","sourceRoot":"","sources":["../src/audit-logger.type.ts"],"names":[],"mappings":""}
@@ -0,0 +1,45 @@
1
+ import { EAuditLogRequestMethod } from './audit-logger.enum';
2
+ export declare class CreateAuditLogDto {
3
+ requestMethod: EAuditLogRequestMethod;
4
+ id: string;
5
+ application: string;
6
+ module: string;
7
+ requestBody: any;
8
+ requestHeader: any;
9
+ statusCode: number;
10
+ ipAddress: string;
11
+ executionTime: number;
12
+ user: any;
13
+ }
14
+ export declare class UpdateEventDTO {
15
+ entityId?: string;
16
+ entityName: string;
17
+ user: any;
18
+ requestId: string;
19
+ whereParams?: Record<string, any>;
20
+ setParams?: Record<string, any>;
21
+ createdAt: Date;
22
+ }
23
+ export declare class CreateEventDTO {
24
+ entity: any;
25
+ entityId?: string;
26
+ entityName: string;
27
+ user: any;
28
+ requestId: string;
29
+ createdAt: Date;
30
+ query?: string;
31
+ parameters?: any[];
32
+ }
33
+ export declare class EmitQueryDTO {
34
+ createdAt: Date;
35
+ query: string;
36
+ parameters?: any[];
37
+ requestId: string;
38
+ user?: any;
39
+ }
40
+ export declare class ApproveTransactionPayload {
41
+ requestId: string;
42
+ executionTime: number;
43
+ statusCode: number;
44
+ remark?: string;
45
+ }
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ApproveTransactionPayload = exports.EmitQueryDTO = exports.CreateEventDTO = exports.UpdateEventDTO = exports.CreateAuditLogDto = void 0;
4
+ class CreateAuditLogDto {
5
+ }
6
+ exports.CreateAuditLogDto = CreateAuditLogDto;
7
+ class UpdateEventDTO {
8
+ }
9
+ exports.UpdateEventDTO = UpdateEventDTO;
10
+ class CreateEventDTO {
11
+ }
12
+ exports.CreateEventDTO = CreateEventDTO;
13
+ class EmitQueryDTO {
14
+ }
15
+ exports.EmitQueryDTO = EmitQueryDTO;
16
+ class ApproveTransactionPayload {
17
+ }
18
+ exports.ApproveTransactionPayload = ApproveTransactionPayload;
19
+ //# sourceMappingURL=audit.dto.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audit.dto.js","sourceRoot":"","sources":["../src/audit.dto.ts"],"names":[],"mappings":";;;AAEA,MAAa,iBAAiB;CAW7B;AAXD,8CAWC;AAED,MAAa,cAAc;CAQ1B;AARD,wCAQC;AAED,MAAa,cAAc;CAS1B;AATD,wCASC;AAED,MAAa,YAAY;CAMxB;AAND,oCAMC;AAED,MAAa,yBAAyB;CAKrC;AALD,8DAKC"}
@@ -0,0 +1 @@
1
+ export declare const auditLoggerConfig: any;
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.auditLoggerConfig = void 0;
4
+ const microservices_1 = require("@nestjs/microservices");
5
+ const audit_logger_enum_1 = require("./audit-logger.enum");
6
+ exports.auditLoggerConfig = {
7
+ name: audit_logger_enum_1.AuditLoggerRMQClient,
8
+ transport: microservices_1.Transport.RMQ,
9
+ options: {
10
+ urls: [process.env.RMQ_URL],
11
+ queue: audit_logger_enum_1.AuditLoggerRMQQueue,
12
+ prefetchCount: 1,
13
+ noAck: false,
14
+ isGlobalPrefetchCount: true,
15
+ socketOptions: {
16
+ frameMax: 16384,
17
+ heartbeat: 60,
18
+ },
19
+ queueOptions: {
20
+ durable: true,
21
+ deadLetterExchange: audit_logger_enum_1.AuditDeadLetterExchange,
22
+ deadLetterRoutingKey: audit_logger_enum_1.DeadAuditRoutingKey,
23
+ },
24
+ },
25
+ };
26
+ //# sourceMappingURL=audit.logger.config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audit.logger.config.js","sourceRoot":"","sources":["../src/audit.logger.config.ts"],"names":[],"mappings":";;;AAAA,yDAAkD;AAClD,2DAK6B;AAEhB,QAAA,iBAAiB,GAAQ;IACpC,IAAI,EAAE,wCAAoB;IAC1B,SAAS,EAAE,yBAAS,CAAC,GAAG;IACxB,OAAO,EAAE;QACP,IAAI,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC;QAC3B,KAAK,EAAE,uCAAmB;QAC1B,aAAa,EAAE,CAAC;QAChB,KAAK,EAAE,KAAK;QACZ,qBAAqB,EAAE,IAAI;QAC3B,aAAa,EAAE;YACb,QAAQ,EAAE,KAAK;YACf,SAAS,EAAE,EAAE;SACd;QACD,YAAY,EAAE;YACZ,OAAO,EAAE,IAAI;YACb,kBAAkB,EAAE,2CAAuB;YAC3C,oBAAoB,EAAE,uCAAmB;SAC1C;KACF;CACF,CAAC"}
@@ -0,0 +1,5 @@
1
+ import { DynamicModule } from '@nestjs/common';
2
+ export declare class AuditModule {
3
+ static forRoot(): DynamicModule;
4
+ static forRootAsync(): DynamicModule;
5
+ }
@@ -0,0 +1,94 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var AuditModule_1;
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.AuditModule = void 0;
11
+ const common_1 = require("@nestjs/common");
12
+ const audit_subscriber_1 = require("./audit.subscriber");
13
+ const audit_logger_interceptor_1 = require("./audit-logger.interceptor");
14
+ const core_1 = require("@nestjs/core");
15
+ const microservices_1 = require("@nestjs/microservices");
16
+ const audit_logger_config_1 = require("./audit.logger.config");
17
+ function isAmqplibAvailable() {
18
+ try {
19
+ require.resolve('amqplib');
20
+ return true;
21
+ }
22
+ catch (_a) {
23
+ return false;
24
+ }
25
+ }
26
+ function isMicroservicesAvailable() {
27
+ try {
28
+ require.resolve('@nestjs/microservices');
29
+ return true;
30
+ }
31
+ catch (_a) {
32
+ return false;
33
+ }
34
+ }
35
+ function createAuditModuleConfig() {
36
+ const imports = [];
37
+ const providers = [
38
+ audit_subscriber_1.AuditSubscriber,
39
+ ];
40
+ const hasAmqplib = isAmqplibAvailable();
41
+ const hasMicroservices = isMicroservicesAvailable();
42
+ if (hasAmqplib && hasMicroservices) {
43
+ try {
44
+ imports.push(microservices_1.ClientsModule.register([audit_logger_config_1.auditLoggerConfig]));
45
+ providers.push({
46
+ provide: core_1.APP_INTERCEPTOR,
47
+ useClass: audit_logger_interceptor_1.AuditLoggerInterceptor,
48
+ });
49
+ }
50
+ catch (error) {
51
+ if (process.env.NODE_ENV !== 'production') {
52
+ console.warn('AuditModule: Could not register RabbitMQ client. Audit features will be disabled.');
53
+ }
54
+ }
55
+ }
56
+ else {
57
+ if (process.env.NODE_ENV !== 'production') {
58
+ if (!hasAmqplib && !hasMicroservices) {
59
+ console.warn('AuditModule: @nestjs/microservices and amqplib are not installed. Audit features are disabled.');
60
+ }
61
+ else if (!hasAmqplib) {
62
+ console.warn('AuditModule: amqplib is not installed. Install it to enable audit logging.');
63
+ }
64
+ else if (!hasMicroservices) {
65
+ console.warn('AuditModule: @nestjs/microservices is not installed. Install it to enable audit logging.');
66
+ }
67
+ }
68
+ }
69
+ return { imports, providers };
70
+ }
71
+ const moduleConfig = createAuditModuleConfig();
72
+ let AuditModule = AuditModule_1 = class AuditModule {
73
+ static forRoot() {
74
+ const config = createAuditModuleConfig();
75
+ return {
76
+ module: AuditModule_1,
77
+ imports: config.imports,
78
+ providers: config.providers,
79
+ exports: config.providers,
80
+ };
81
+ }
82
+ static forRootAsync() {
83
+ return AuditModule_1.forRoot();
84
+ }
85
+ };
86
+ exports.AuditModule = AuditModule;
87
+ exports.AuditModule = AuditModule = AuditModule_1 = __decorate([
88
+ (0, common_1.Module)({
89
+ imports: moduleConfig.imports,
90
+ providers: moduleConfig.providers,
91
+ exports: moduleConfig.providers,
92
+ })
93
+ ], AuditModule);
94
+ //# sourceMappingURL=audit.module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audit.module.js","sourceRoot":"","sources":["../src/audit.module.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,2CAAuD;AACvD,yDAAqD;AACrD,yEAAoE;AACpE,uCAA+C;AAC/C,yDAAsD;AACtD,+DAA0D;AAK1D,SAAS,kBAAkB;IACzB,IAAI,CAAC;QACH,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAC3B,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,WAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAKD,SAAS,wBAAwB;IAC/B,IAAI,CAAC;QACH,OAAO,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAC;QACzC,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,WAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,SAAS,uBAAuB;IAC9B,MAAM,OAAO,GAAU,EAAE,CAAC;IAC1B,MAAM,SAAS,GAAU;QACvB,kCAAe;KAChB,CAAC;IAGF,MAAM,UAAU,GAAG,kBAAkB,EAAE,CAAC;IACxC,MAAM,gBAAgB,GAAG,wBAAwB,EAAE,CAAC;IAEpD,IAAI,UAAU,IAAI,gBAAgB,EAAE,CAAC;QACnC,IAAI,CAAC;YACH,OAAO,CAAC,IAAI,CAAC,6BAAa,CAAC,QAAQ,CAAC,CAAC,uCAAiB,CAAC,CAAC,CAAC,CAAC;YAC1D,SAAS,CAAC,IAAI,CAAC;gBACb,OAAO,EAAE,sBAAe;gBACxB,QAAQ,EAAE,iDAAsB;aACjC,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAEf,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,EAAE,CAAC;gBAC1C,OAAO,CAAC,IAAI,CAAC,mFAAmF,CAAC,CAAC;YACpG,CAAC;QACH,CAAC;IACH,CAAC;SAAM,CAAC;QAEN,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,EAAE,CAAC;YAC1C,IAAI,CAAC,UAAU,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBACrC,OAAO,CAAC,IAAI,CAAC,gGAAgG,CAAC,CAAC;YACjH,CAAC;iBAAM,IAAI,CAAC,UAAU,EAAE,CAAC;gBACvB,OAAO,CAAC,IAAI,CAAC,4EAA4E,CAAC,CAAC;YAC7F,CAAC;iBAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBAC7B,OAAO,CAAC,IAAI,CAAC,0FAA0F,CAAC,CAAC;YAC3G,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC;AAChC,CAAC;AAED,MAAM,YAAY,GAAG,uBAAuB,EAAE,CAAC;AAOxC,IAAM,WAAW,mBAAjB,MAAM,WAAW;IACtB,MAAM,CAAC,OAAO;QACZ,MAAM,MAAM,GAAG,uBAAuB,EAAE,CAAC;QACzC,OAAO;YACL,MAAM,EAAE,aAAW;YACnB,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,OAAO,EAAE,MAAM,CAAC,SAAS;SAC1B,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,YAAY;QACjB,OAAO,aAAW,CAAC,OAAO,EAAE,CAAC;IAC/B,CAAC;CACF,CAAA;AAdY,kCAAW;sBAAX,WAAW;IALvB,IAAA,eAAM,EAAC;QACN,OAAO,EAAE,YAAY,CAAC,OAAO;QAC7B,SAAS,EAAE,YAAY,CAAC,SAAS;QACjC,OAAO,EAAE,YAAY,CAAC,SAAS;KAChC,CAAC;GACW,WAAW,CAcvB"}
@@ -0,0 +1,10 @@
1
+ import { ClientProxy } from '@nestjs/microservices';
2
+ import { DataSource, EntitySubscriberInterface, InsertEvent } from 'typeorm';
3
+ import { AfterQueryEvent } from 'typeorm/subscriber/event/QueryEvent';
4
+ export declare class AuditSubscriber implements EntitySubscriberInterface {
5
+ private readonly dataSource;
6
+ private readonly rmsRMQClient;
7
+ constructor(dataSource: DataSource, rmsRMQClient: ClientProxy);
8
+ afterInsert(event: InsertEvent<any>): Promise<any> | void;
9
+ afterQuery(event: AfterQueryEvent<any>): Promise<any> | void;
10
+ }
@@ -0,0 +1,60 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
12
+ return function (target, key) { decorator(target, key, paramIndex); }
13
+ };
14
+ var _a;
15
+ Object.defineProperty(exports, "__esModule", { value: true });
16
+ exports.AuditSubscriber = void 0;
17
+ const common_1 = require("@nestjs/common");
18
+ const microservices_1 = require("@nestjs/microservices");
19
+ const typeorm_1 = require("typeorm");
20
+ const audit_logger_enum_1 = require("./audit-logger.enum");
21
+ let AuditSubscriber = class AuditSubscriber {
22
+ constructor(dataSource, rmsRMQClient) {
23
+ this.dataSource = dataSource;
24
+ this.rmsRMQClient = rmsRMQClient;
25
+ dataSource.subscribers.push(this);
26
+ }
27
+ afterInsert(event) {
28
+ const payload = {
29
+ user: this.dataSource['user'],
30
+ entityName: event.metadata.tableName,
31
+ entityId: event.entity.id,
32
+ entity: event.entity,
33
+ requestId: this.dataSource['requestId'],
34
+ query: 'INSERT',
35
+ createdAt: new Date(),
36
+ };
37
+ this.rmsRMQClient.emit(audit_logger_enum_1.RecordInsertion, payload);
38
+ }
39
+ afterQuery(event) {
40
+ if (!event.success ||
41
+ !(event.query.startsWith('DELETE') || event.query.startsWith('UPDATE'))) {
42
+ return;
43
+ }
44
+ const payload = {
45
+ createdAt: new Date(),
46
+ query: event.query,
47
+ requestId: this.dataSource['requestId'],
48
+ parameters: event.parameters,
49
+ user: this.dataSource['user'],
50
+ };
51
+ this.rmsRMQClient.emit(event.query.startsWith('DELETE') ? audit_logger_enum_1.RecordDeletion : audit_logger_enum_1.RecordUpdate, payload);
52
+ }
53
+ };
54
+ exports.AuditSubscriber = AuditSubscriber;
55
+ exports.AuditSubscriber = AuditSubscriber = __decorate([
56
+ (0, typeorm_1.EventSubscriber)(),
57
+ __param(1, (0, common_1.Inject)(audit_logger_enum_1.AuditLoggerRMQClient)),
58
+ __metadata("design:paramtypes", [typeof (_a = typeof typeorm_1.DataSource !== "undefined" && typeorm_1.DataSource) === "function" ? _a : Object, microservices_1.ClientProxy])
59
+ ], AuditSubscriber);
60
+ //# sourceMappingURL=audit.subscriber.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audit.subscriber.js","sourceRoot":"","sources":["../src/audit.subscriber.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAAwC;AACxC,yDAAoD;AACpD,qCAKiB;AAGjB,2DAK6B;AAGtB,IAAM,eAAe,GAArB,MAAM,eAAe;IAC1B,YACmB,UAAsB,EAEtB,YAAyB;QAFzB,eAAU,GAAV,UAAU,CAAY;QAEtB,iBAAY,GAAZ,YAAY,CAAa;QAE1C,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACpC,CAAC;IAED,WAAW,CAAC,KAAuB;QACjC,MAAM,OAAO,GAAmB;YAC9B,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;YAC7B,UAAU,EAAE,KAAK,CAAC,QAAQ,CAAC,SAAS;YACpC,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE;YACzB,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,SAAS,EAAE,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC;YACvC,KAAK,EAAE,QAAQ;YACf,SAAS,EAAE,IAAI,IAAI,EAAE;SACtB,CAAC;QACF,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,mCAAe,EAAE,OAAO,CAAC,CAAC;IACnD,CAAC;IAED,UAAU,CAAC,KAA2B;QACpC,IACE,CAAC,KAAK,CAAC,OAAO;YACd,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,EACvE,CAAC;YACD,OAAO;QACT,CAAC;QAED,MAAM,OAAO,GAAiB;YAC5B,SAAS,EAAE,IAAI,IAAI,EAAE;YACrB,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,SAAS,EAAE,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC;YACvC,UAAU,EAAE,KAAK,CAAC,UAAU;YAC5B,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;SAC9B,CAAC;QAEF,IAAI,CAAC,YAAY,CAAC,IAAI,CACpB,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,kCAAc,CAAC,CAAC,CAAC,gCAAY,EAChE,OAAO,CACR,CAAC;IACJ,CAAC;CACF,CAAA;AA3CY,0CAAe;0BAAf,eAAe;IAD3B,IAAA,yBAAe,GAAE;IAIb,WAAA,IAAA,eAAM,EAAC,wCAAoB,CAAC,CAAA;yDADA,oBAAU,oBAAV,oBAAU,gCAER,2BAAW;GAJjC,eAAe,CA2C3B"}
@@ -0,0 +1,2 @@
1
+ export declare const AUDIT_RMQ_EVENT = "AuditRmqEvent";
2
+ export declare const AuditRmqEvent: () => import("@nestjs/common").CustomDecorator<string>;
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AuditRmqEvent = exports.AUDIT_RMQ_EVENT = void 0;
4
+ const common_1 = require("@nestjs/common");
5
+ exports.AUDIT_RMQ_EVENT = 'AuditRmqEvent';
6
+ const AuditRmqEvent = () => (0, common_1.SetMetadata)(exports.AUDIT_RMQ_EVENT, true);
7
+ exports.AuditRmqEvent = AuditRmqEvent;
8
+ //# sourceMappingURL=event-audit.decorator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event-audit.decorator.js","sourceRoot":"","sources":["../src/event-audit.decorator.ts"],"names":[],"mappings":";;;AAAA,2CAA6C;AAEhC,QAAA,eAAe,GAAG,eAAe,CAAC;AACxC,MAAM,aAAa,GAAG,GAAG,EAAE,CAAC,IAAA,oBAAW,EAAC,uBAAe,EAAE,IAAI,CAAC,CAAC;AAAzD,QAAA,aAAa,iBAA4C"}
@@ -0,0 +1,2 @@
1
+ export declare const IGNORE_AUDIT_LOGGER = "ignoreAuditLogger";
2
+ export declare const IgnoreLoggerAudit: () => import("@nestjs/common").CustomDecorator<string>;
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.IgnoreLoggerAudit = exports.IGNORE_AUDIT_LOGGER = void 0;
4
+ const common_1 = require("@nestjs/common");
5
+ exports.IGNORE_AUDIT_LOGGER = 'ignoreAuditLogger';
6
+ const IgnoreLoggerAudit = () => (0, common_1.SetMetadata)(exports.IGNORE_AUDIT_LOGGER, true);
7
+ exports.IgnoreLoggerAudit = IgnoreLoggerAudit;
8
+ //# sourceMappingURL=ignore-logger.decorator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ignore-logger.decorator.js","sourceRoot":"","sources":["../src/ignore-logger.decorator.ts"],"names":[],"mappings":";;;AAAA,2CAA6C;AAEhC,QAAA,mBAAmB,GAAG,mBAAmB,CAAC;AAChD,MAAM,iBAAiB,GAAG,GAAG,EAAE,CAAC,IAAA,oBAAW,EAAC,2BAAmB,EAAE,IAAI,CAAC,CAAC;AAAjE,QAAA,iBAAiB,qBAAgD"}
@@ -0,0 +1,10 @@
1
+ export * from './activity-audit.type';
2
+ export * from './audit-logger.enum';
3
+ export * from './audit-logger.interceptor';
4
+ export * from './audit-logger.type';
5
+ export * from './audit.dto';
6
+ export * from './audit.logger.config';
7
+ export * from './audit.module';
8
+ export * from './audit.subscriber';
9
+ export * from './event-audit.decorator';
10
+ export * from './ignore-logger.decorator';
package/dist/index.js ADDED
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./activity-audit.type"), exports);
18
+ __exportStar(require("./audit-logger.enum"), exports);
19
+ __exportStar(require("./audit-logger.interceptor"), exports);
20
+ __exportStar(require("./audit-logger.type"), exports);
21
+ __exportStar(require("./audit.dto"), exports);
22
+ __exportStar(require("./audit.logger.config"), exports);
23
+ __exportStar(require("./audit.module"), exports);
24
+ __exportStar(require("./audit.subscriber"), exports);
25
+ __exportStar(require("./event-audit.decorator"), exports);
26
+ __exportStar(require("./ignore-logger.decorator"), exports);
27
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,wDAAsC;AACtC,sDAAoC;AACpC,6DAA2C;AAC3C,sDAAoC;AACpC,8CAA4B;AAC5B,wDAAsC;AACtC,iDAA+B;AAC/B,qDAAmC;AACnC,0DAAwC;AACxC,4DAA0C"}
package/package.json ADDED
@@ -0,0 +1,41 @@
1
+ {
2
+ "name": "@zola_do/audit",
3
+ "version": "0.1.9",
4
+ "description": "RabbitMQ-based audit logging for NestJS",
5
+ "author": "zolaDO",
6
+ "license": "ISC",
7
+ "publishConfig": {
8
+ "access": "public"
9
+ },
10
+ "main": "./dist/index.js",
11
+ "types": "./dist/index.d.ts",
12
+ "exports": {
13
+ ".": {
14
+ "types": "./dist/index.d.ts",
15
+ "default": "./dist/index.js"
16
+ }
17
+ },
18
+ "files": ["dist", "README.md"],
19
+ "scripts": {
20
+ "build": "rimraf dist && tsc",
21
+ "prepublishOnly": "npm run build"
22
+ },
23
+ "peerDependencies": {
24
+ "@nestjs/common": "^10.0.0 || ^11.0.0",
25
+ "@nestjs/core": "^10.0.0 || ^11.0.0",
26
+ "@nestjs/microservices": "^10.0.0 || ^11.0.0",
27
+ "amqplib": "^0.10.0",
28
+ "reflect-metadata": "^0.1.0 || ^0.2.0",
29
+ "rxjs": "^7.0.0 || ^8.0.0",
30
+ "typeorm": "^0.3.0"
31
+ },
32
+ "peerDependenciesMeta": {
33
+ "@nestjs/microservices": { "optional": true },
34
+ "amqplib": { "optional": true },
35
+ "typeorm": { "optional": true }
36
+ },
37
+ "devDependencies": {
38
+ "rimraf": "^6.1.0",
39
+ "typescript": "^5.9.3"
40
+ }
41
+ }