uaxi-shared-entities 1.0.215 → 1.0.217

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.
@@ -1,4 +1,5 @@
1
1
  import { Model } from "sequelize-typescript";
2
+ import { CreateAdminAuditLogInput } from "../types/admin-audit-log.types";
2
3
  import { User } from "./user.entity";
3
4
  export declare enum AdminAuditHttpMethod {
4
5
  POST = "POST",
@@ -37,6 +38,8 @@ export declare class AdminAuditLog extends Model<AdminAuditLogAttributes, AdminA
37
38
  entityId: string | null;
38
39
  createdAt: Date;
39
40
  performedByUser: User;
41
+ static sanitizeAuditData(data: unknown): Record<string, unknown> | null;
42
+ static persistAdminAuditLog(model: typeof AdminAuditLog, input: CreateAdminAuditLogInput): Promise<void>;
40
43
  }
41
44
  export {};
42
45
  //# sourceMappingURL=admin-audit-log.entity.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"admin-audit-log.entity.d.ts","sourceRoot":"","sources":["../../src/entities/admin-audit-log.entity.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,EAMN,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAErC,oBAAY,oBAAoB;IAC9B,IAAI,SAAS;IACb,GAAG,QAAQ;IACX,KAAK,UAAU;IACf,MAAM,WAAW;CAClB;AAED,MAAM,WAAW,uBAAuB;IACtC,EAAE,EAAE,MAAM,CAAC;IACX,iBAAiB,EAAE,MAAM,CAAC;IAC1B,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAC7C,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IACxC,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,oBAAoB,CAAC;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,SAAS,EAAE,IAAI,CAAC;CACjB;AAED,UAAU,0BAA0B;IAClC,iBAAiB,EAAE,MAAM,CAAC;IAC1B,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAC9C,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IACzC,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,oBAAoB,CAAC;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B;AAED,qBAMa,aAAc,SAAQ,KAAK,CACtC,uBAAuB,EACvB,0BAA0B,CAC3B;IAMS,EAAE,EAAE,MAAM,CAAC;IASnB,iBAAiB,EAAE,MAAM,CAAC;IAO1B,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAO7C,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAOxC,QAAQ,EAAE,MAAM,CAAC;IAOjB,UAAU,EAAE,oBAAoB,CAAC;IAQjC,SAAS,EAAE,MAAM,CAAC;IAQlB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IAGhB,SAAS,EAAE,IAAI,CAAC;IAGxB,eAAe,EAAE,IAAI,CAAC;CACvB"}
1
+ {"version":3,"file":"admin-audit-log.entity.d.ts","sourceRoot":"","sources":["../../src/entities/admin-audit-log.entity.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,EAMN,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,wBAAwB,EAAE,MAAM,gCAAgC,CAAC;AAC1E,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAErC,oBAAY,oBAAoB;IAC9B,IAAI,SAAS;IACb,GAAG,QAAQ;IACX,KAAK,UAAU;IACf,MAAM,WAAW;CAClB;AAED,MAAM,WAAW,uBAAuB;IACtC,EAAE,EAAE,MAAM,CAAC;IACX,iBAAiB,EAAE,MAAM,CAAC;IAC1B,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAC7C,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IACxC,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,oBAAoB,CAAC;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,SAAS,EAAE,IAAI,CAAC;CACjB;AAED,UAAU,0BAA0B;IAClC,iBAAiB,EAAE,MAAM,CAAC;IAC1B,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAC9C,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IACzC,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,oBAAoB,CAAC;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B;AAUD,qBAMa,aAAc,SAAQ,KAAK,CACtC,uBAAuB,EACvB,0BAA0B,CAC3B;IAMS,EAAE,EAAE,MAAM,CAAC;IAQnB,iBAAiB,EAAE,MAAM,CAAC;IAM1B,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAM7C,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAMxC,QAAQ,EAAE,MAAM,CAAC;IAMjB,UAAU,EAAE,oBAAoB,CAAC;IAOjC,SAAS,EAAE,MAAM,CAAC;IAOlB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IAGhB,SAAS,EAAE,IAAI,CAAC;IAGxB,eAAe,EAAE,IAAI,CAAC;IAEtB,MAAM,CAAC,iBAAiB,CACtB,IAAI,EAAE,OAAO,GACZ,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;WAoBpB,oBAAoB,CAC/B,KAAK,EAAE,OAAO,aAAa,EAC3B,KAAK,EAAE,wBAAwB,GAC9B,OAAO,CAAC,IAAI,CAAC;CAejB"}
@@ -8,6 +8,7 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
8
8
  var __metadata = (this && this.__metadata) || function (k, v) {
9
9
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
10
  };
11
+ var AdminAuditLog_1;
11
12
  Object.defineProperty(exports, "__esModule", { value: true });
12
13
  exports.AdminAuditLog = exports.AdminAuditHttpMethod = void 0;
13
14
  const sequelize_typescript_1 = require("sequelize-typescript");
@@ -19,7 +20,42 @@ var AdminAuditHttpMethod;
19
20
  AdminAuditHttpMethod["PATCH"] = "PATCH";
20
21
  AdminAuditHttpMethod["DELETE"] = "DELETE";
21
22
  })(AdminAuditHttpMethod || (exports.AdminAuditHttpMethod = AdminAuditHttpMethod = {}));
22
- let AdminAuditLog = class AdminAuditLog extends sequelize_typescript_1.Model {
23
+ const SENSITIVE_AUDIT_FIELDS = [
24
+ "password",
25
+ "refreshToken",
26
+ "verificationToken",
27
+ "access_token",
28
+ "accessToken",
29
+ ];
30
+ let AdminAuditLog = AdminAuditLog_1 = class AdminAuditLog extends sequelize_typescript_1.Model {
31
+ static sanitizeAuditData(data) {
32
+ if (data == null) {
33
+ return null;
34
+ }
35
+ const plain = typeof data.toJSON === "function"
36
+ ? data.toJSON()
37
+ : { ...data };
38
+ for (const field of SENSITIVE_AUDIT_FIELDS) {
39
+ delete plain[field];
40
+ }
41
+ return plain;
42
+ }
43
+ static async persistAdminAuditLog(model, input) {
44
+ try {
45
+ await model.create({
46
+ performedByUserId: input.performedByUserId,
47
+ previousData: AdminAuditLog_1.sanitizeAuditData(input.previousData),
48
+ newData: AdminAuditLog_1.sanitizeAuditData(input.newData),
49
+ endpoint: input.endpoint,
50
+ httpMethod: input.httpMethod,
51
+ tableName: input.tableName,
52
+ entityId: input.entityId ?? null,
53
+ });
54
+ }
55
+ catch (error) {
56
+ console.error("No se pudo persistir admin audit log:", error);
57
+ }
58
+ }
23
59
  };
24
60
  exports.AdminAuditLog = AdminAuditLog;
25
61
  __decorate([
@@ -36,7 +72,6 @@ __decorate([
36
72
  (0, sequelize_typescript_1.Column)({
37
73
  type: sequelize_typescript_1.DataType.UUID,
38
74
  allowNull: false,
39
- comment: "Usuario admin que realizó la acción (del token JWT)",
40
75
  }),
41
76
  __metadata("design:type", String)
42
77
  ], AdminAuditLog.prototype, "performedByUserId", void 0);
@@ -44,7 +79,6 @@ __decorate([
44
79
  (0, sequelize_typescript_1.Column)({
45
80
  type: sequelize_typescript_1.DataType.JSONB,
46
81
  allowNull: true,
47
- comment: "Estado anterior del recurso afectado",
48
82
  }),
49
83
  __metadata("design:type", Object)
50
84
  ], AdminAuditLog.prototype, "previousData", void 0);
@@ -52,7 +86,6 @@ __decorate([
52
86
  (0, sequelize_typescript_1.Column)({
53
87
  type: sequelize_typescript_1.DataType.JSONB,
54
88
  allowNull: true,
55
- comment: "Estado nuevo del recurso afectado",
56
89
  }),
57
90
  __metadata("design:type", Object)
58
91
  ], AdminAuditLog.prototype, "newData", void 0);
@@ -60,7 +93,6 @@ __decorate([
60
93
  (0, sequelize_typescript_1.Column)({
61
94
  type: sequelize_typescript_1.DataType.STRING(500),
62
95
  allowNull: false,
63
- comment: "Ruta del endpoint que ejecutó la acción",
64
96
  }),
65
97
  __metadata("design:type", String)
66
98
  ], AdminAuditLog.prototype, "endpoint", void 0);
@@ -68,7 +100,6 @@ __decorate([
68
100
  (0, sequelize_typescript_1.Column)({
69
101
  type: sequelize_typescript_1.DataType.ENUM(...Object.values(AdminAuditHttpMethod)),
70
102
  allowNull: false,
71
- comment: "Método HTTP de la operación",
72
103
  }),
73
104
  __metadata("design:type", String)
74
105
  ], AdminAuditLog.prototype, "httpMethod", void 0);
@@ -77,7 +108,6 @@ __decorate([
77
108
  (0, sequelize_typescript_1.Column)({
78
109
  type: sequelize_typescript_1.DataType.STRING(100),
79
110
  allowNull: false,
80
- comment: "Nombre de la tabla que fue modificada",
81
111
  }),
82
112
  __metadata("design:type", String)
83
113
  ], AdminAuditLog.prototype, "tableName", void 0);
@@ -86,7 +116,6 @@ __decorate([
86
116
  (0, sequelize_typescript_1.Column)({
87
117
  type: sequelize_typescript_1.DataType.UUID,
88
118
  allowNull: true,
89
- comment: "ID del registro afectado",
90
119
  }),
91
120
  __metadata("design:type", Object)
92
121
  ], AdminAuditLog.prototype, "entityId", void 0);
@@ -98,7 +127,7 @@ __decorate([
98
127
  (0, sequelize_typescript_1.BelongsTo)(() => user_entity_1.User, "performedByUserId"),
99
128
  __metadata("design:type", user_entity_1.User)
100
129
  ], AdminAuditLog.prototype, "performedByUser", void 0);
101
- exports.AdminAuditLog = AdminAuditLog = __decorate([
130
+ exports.AdminAuditLog = AdminAuditLog = AdminAuditLog_1 = __decorate([
102
131
  (0, sequelize_typescript_1.Table)({
103
132
  tableName: "admin_audit_logs",
104
133
  timestamps: true,
@@ -1 +1 @@
1
- {"version":3,"file":"admin-audit-log.entity.js","sourceRoot":"","sources":["../../src/entities/admin-audit-log.entity.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,+DAS8B;AAC9B,+CAAqC;AAErC,IAAY,oBAKX;AALD,WAAY,oBAAoB;IAC9B,qCAAa,CAAA;IACb,mCAAW,CAAA;IACX,uCAAe,CAAA;IACf,yCAAiB,CAAA;AACnB,CAAC,EALW,oBAAoB,oCAApB,oBAAoB,QAK/B;AA8BM,IAAM,aAAa,GAAnB,MAAM,aAAc,SAAQ,4BAGlC;CAkEA,CAAA;AArEY,sCAAa;AAShB;IALP,IAAA,6BAAM,EAAC;QACN,IAAI,EAAE,+BAAQ,CAAC,IAAI;QACnB,YAAY,EAAE,+BAAQ,CAAC,MAAM;QAC7B,UAAU,EAAE,IAAI;KACjB,CAAC;;yCACiB;AASnB;IAPC,4BAAK;IACL,IAAA,iCAAU,EAAC,GAAG,EAAE,CAAC,kBAAI,CAAC;IACtB,IAAA,6BAAM,EAAC;QACN,IAAI,EAAE,+BAAQ,CAAC,IAAI;QACnB,SAAS,EAAE,KAAK;QAChB,OAAO,EAAE,qDAAqD;KAC/D,CAAC;;wDACwB;AAO1B;IALC,IAAA,6BAAM,EAAC;QACN,IAAI,EAAE,+BAAQ,CAAC,KAAK;QACpB,SAAS,EAAE,IAAI;QACf,OAAO,EAAE,sCAAsC;KAChD,CAAC;;mDAC2C;AAO7C;IALC,IAAA,6BAAM,EAAC;QACN,IAAI,EAAE,+BAAQ,CAAC,KAAK;QACpB,SAAS,EAAE,IAAI;QACf,OAAO,EAAE,mCAAmC;KAC7C,CAAC;;8CACsC;AAOxC;IALC,IAAA,6BAAM,EAAC;QACN,IAAI,EAAE,+BAAQ,CAAC,MAAM,CAAC,GAAG,CAAC;QAC1B,SAAS,EAAE,KAAK;QAChB,OAAO,EAAE,yCAAyC;KACnD,CAAC;;+CACe;AAOjB;IALC,IAAA,6BAAM,EAAC;QACN,IAAI,EAAE,+BAAQ,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC;QAC3D,SAAS,EAAE,KAAK;QAChB,OAAO,EAAE,6BAA6B;KACvC,CAAC;;iDAC+B;AAQjC;IANC,4BAAK;IACL,IAAA,6BAAM,EAAC;QACN,IAAI,EAAE,+BAAQ,CAAC,MAAM,CAAC,GAAG,CAAC;QAC1B,SAAS,EAAE,KAAK;QAChB,OAAO,EAAE,uCAAuC;KACjD,CAAC;;gDACgB;AAQlB;IANC,4BAAK;IACL,IAAA,6BAAM,EAAC;QACN,IAAI,EAAE,+BAAQ,CAAC,IAAI;QACnB,SAAS,EAAE,IAAI;QACf,OAAO,EAAE,0BAA0B;KACpC,CAAC;;+CACsB;AAGhB;IADP,gCAAS;8BACS,IAAI;gDAAC;AAGxB;IADC,IAAA,gCAAS,EAAC,GAAG,EAAE,CAAC,kBAAI,EAAE,mBAAmB,CAAC;8BAC1B,kBAAI;sDAAC;wBApEX,aAAa;IANzB,IAAA,4BAAK,EAAC;QACL,SAAS,EAAE,kBAAkB;QAC7B,UAAU,EAAE,IAAI;QAChB,SAAS,EAAE,KAAK;QAChB,QAAQ,EAAE,KAAK;KAChB,CAAC;GACW,aAAa,CAqEzB"}
1
+ {"version":3,"file":"admin-audit-log.entity.js","sourceRoot":"","sources":["../../src/entities/admin-audit-log.entity.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -2,5 +2,4 @@ export * from "./entities";
2
2
  export * from "./enums";
3
3
  export * from "./config";
4
4
  export * from "./types";
5
- export * from "./utils/admin-audit-log.util";
6
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAKA,cAAc,YAAY,CAAC;AAG3B,cAAc,SAAS,CAAC;AAGxB,cAAc,UAAU,CAAC;AAGzB,cAAc,SAAS,CAAC;AAGxB,cAAc,8BAA8B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAKA,cAAc,YAAY,CAAC;AAG3B,cAAc,SAAS,CAAC;AAGxB,cAAc,UAAU,CAAC;AAGzB,cAAc,SAAS,CAAC"}
package/dist/index.js CHANGED
@@ -25,6 +25,4 @@ __exportStar(require("./enums"), exports);
25
25
  __exportStar(require("./config"), exports);
26
26
  // Exportar tipos y interfaces
27
27
  __exportStar(require("./types"), exports);
28
- // Utilidades compartidas
29
- __exportStar(require("./utils/admin-audit-log.util"), exports);
30
28
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA,gDAAgD;AAChD,4BAA4B;AAC5B,gDAAgD;;;;;;;;;;;;;;;;AAEhD,oDAAoD;AACpD,6CAA2B;AAE3B,uDAAuD;AACvD,0CAAwB;AAExB,2BAA2B;AAC3B,2CAAyB;AAEzB,8BAA8B;AAC9B,0CAAwB;AAExB,yBAAyB;AACzB,+DAA6C"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA,gDAAgD;AAChD,4BAA4B;AAC5B,gDAAgD;;;;;;;;;;;;;;;;AAEhD,oDAAoD;AACpD,6CAA2B;AAE3B,uDAAuD;AACvD,0CAAwB;AAExB,2BAA2B;AAC3B,2CAAyB;AAEzB,8BAA8B;AAC9B,0CAAwB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "uaxi-shared-entities",
3
- "version": "1.0.215",
3
+ "version": "1.0.217",
4
4
  "description": "Entidades compartidas para microservicios UAXI",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -8,6 +8,7 @@ import {
8
8
  BelongsTo,
9
9
  Index,
10
10
  } from "sequelize-typescript";
11
+ import { CreateAdminAuditLogInput } from "../types/admin-audit-log.types";
11
12
  import { User } from "./user.entity";
12
13
 
13
14
  export enum AdminAuditHttpMethod {
@@ -39,6 +40,14 @@ interface AdminAuditLogCreationAttrs {
39
40
  entityId?: string | null;
40
41
  }
41
42
 
43
+ const SENSITIVE_AUDIT_FIELDS = [
44
+ "password",
45
+ "refreshToken",
46
+ "verificationToken",
47
+ "access_token",
48
+ "accessToken",
49
+ ];
50
+
42
51
  @Table({
43
52
  tableName: "admin_audit_logs",
44
53
  timestamps: true,
@@ -61,35 +70,30 @@ export class AdminAuditLog extends Model<
61
70
  @Column({
62
71
  type: DataType.UUID,
63
72
  allowNull: false,
64
- comment: "Usuario admin que realizó la acción (del token JWT)",
65
73
  })
66
74
  performedByUserId: string;
67
75
 
68
76
  @Column({
69
77
  type: DataType.JSONB,
70
78
  allowNull: true,
71
- comment: "Estado anterior del recurso afectado",
72
79
  })
73
80
  previousData: Record<string, unknown> | null;
74
81
 
75
82
  @Column({
76
83
  type: DataType.JSONB,
77
84
  allowNull: true,
78
- comment: "Estado nuevo del recurso afectado",
79
85
  })
80
86
  newData: Record<string, unknown> | null;
81
87
 
82
88
  @Column({
83
89
  type: DataType.STRING(500),
84
90
  allowNull: false,
85
- comment: "Ruta del endpoint que ejecutó la acción",
86
91
  })
87
92
  endpoint: string;
88
93
 
89
94
  @Column({
90
95
  type: DataType.ENUM(...Object.values(AdminAuditHttpMethod)),
91
96
  allowNull: false,
92
- comment: "Método HTTP de la operación",
93
97
  })
94
98
  httpMethod: AdminAuditHttpMethod;
95
99
 
@@ -97,7 +101,6 @@ export class AdminAuditLog extends Model<
97
101
  @Column({
98
102
  type: DataType.STRING(100),
99
103
  allowNull: false,
100
- comment: "Nombre de la tabla que fue modificada",
101
104
  })
102
105
  tableName: string;
103
106
 
@@ -105,7 +108,6 @@ export class AdminAuditLog extends Model<
105
108
  @Column({
106
109
  type: DataType.UUID,
107
110
  allowNull: true,
108
- comment: "ID del registro afectado",
109
111
  })
110
112
  entityId: string | null;
111
113
 
@@ -114,4 +116,45 @@ export class AdminAuditLog extends Model<
114
116
 
115
117
  @BelongsTo(() => User, "performedByUserId")
116
118
  performedByUser: User;
119
+
120
+ static sanitizeAuditData(
121
+ data: unknown,
122
+ ): Record<string, unknown> | null {
123
+ if (data == null) {
124
+ return null;
125
+ }
126
+
127
+ const plain =
128
+ typeof (data as { toJSON?: () => unknown }).toJSON === "function"
129
+ ? ((data as { toJSON: () => unknown }).toJSON() as Record<
130
+ string,
131
+ unknown
132
+ >)
133
+ : ({ ...(data as Record<string, unknown>) } as Record<string, unknown>);
134
+
135
+ for (const field of SENSITIVE_AUDIT_FIELDS) {
136
+ delete plain[field];
137
+ }
138
+
139
+ return plain;
140
+ }
141
+
142
+ static async persistAdminAuditLog(
143
+ model: typeof AdminAuditLog,
144
+ input: CreateAdminAuditLogInput,
145
+ ): Promise<void> {
146
+ try {
147
+ await model.create({
148
+ performedByUserId: input.performedByUserId,
149
+ previousData: AdminAuditLog.sanitizeAuditData(input.previousData),
150
+ newData: AdminAuditLog.sanitizeAuditData(input.newData),
151
+ endpoint: input.endpoint,
152
+ httpMethod: input.httpMethod,
153
+ tableName: input.tableName,
154
+ entityId: input.entityId ?? null,
155
+ });
156
+ } catch (error) {
157
+ console.error("No se pudo persistir admin audit log:", error);
158
+ }
159
+ }
117
160
  }
package/src/index.ts CHANGED
@@ -13,6 +13,3 @@ export * from "./config";
13
13
 
14
14
  // Exportar tipos y interfaces
15
15
  export * from "./types";
16
-
17
- // Utilidades compartidas
18
- export * from "./utils/admin-audit-log.util";
@@ -1,5 +0,0 @@
1
- import { AdminAuditLog } from "../entities/admin-audit-log.entity";
2
- import { CreateAdminAuditLogInput } from "../types/admin-audit-log.types";
3
- export declare function sanitizeAuditData(data: unknown): Record<string, unknown> | null;
4
- export declare function persistAdminAuditLog(model: typeof AdminAuditLog, input: CreateAdminAuditLogInput): Promise<void>;
5
- //# sourceMappingURL=admin-audit-log.util.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"admin-audit-log.util.d.ts","sourceRoot":"","sources":["../../src/utils/admin-audit-log.util.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAC;AACnE,OAAO,EAAE,wBAAwB,EAAE,MAAM,gCAAgC,CAAC;AAU1E,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,OAAO,GACZ,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAehC;AAED,wBAAsB,oBAAoB,CACxC,KAAK,EAAE,OAAO,aAAa,EAC3B,KAAK,EAAE,wBAAwB,GAC9B,OAAO,CAAC,IAAI,CAAC,CAcf"}
@@ -1,40 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.sanitizeAuditData = sanitizeAuditData;
4
- exports.persistAdminAuditLog = persistAdminAuditLog;
5
- const SENSITIVE_FIELDS = [
6
- "password",
7
- "refreshToken",
8
- "verificationToken",
9
- "access_token",
10
- "accessToken",
11
- ];
12
- function sanitizeAuditData(data) {
13
- if (data == null) {
14
- return null;
15
- }
16
- const plain = typeof data.toJSON === "function"
17
- ? data.toJSON()
18
- : { ...data };
19
- for (const field of SENSITIVE_FIELDS) {
20
- delete plain[field];
21
- }
22
- return plain;
23
- }
24
- async function persistAdminAuditLog(model, input) {
25
- try {
26
- await model.create({
27
- performedByUserId: input.performedByUserId,
28
- previousData: sanitizeAuditData(input.previousData),
29
- newData: sanitizeAuditData(input.newData),
30
- endpoint: input.endpoint,
31
- httpMethod: input.httpMethod,
32
- tableName: input.tableName,
33
- entityId: input.entityId ?? null,
34
- });
35
- }
36
- catch (error) {
37
- console.error("No se pudo persistir admin audit log:", error);
38
- }
39
- }
40
- //# sourceMappingURL=admin-audit-log.util.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"admin-audit-log.util.js","sourceRoot":"","sources":["../../src/utils/admin-audit-log.util.ts"],"names":[],"mappings":";;AAWA,8CAiBC;AAED,oDAiBC;AA5CD,MAAM,gBAAgB,GAAG;IACvB,UAAU;IACV,cAAc;IACd,mBAAmB;IACnB,cAAc;IACd,aAAa;CACd,CAAC;AAEF,SAAgB,iBAAiB,CAC/B,IAAa;IAEb,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC;QACjB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,KAAK,GACT,OAAQ,IAAmC,CAAC,MAAM,KAAK,UAAU;QAC/D,CAAC,CAAG,IAAkC,CAAC,MAAM,EAA8B;QAC3E,CAAC,CAAE,EAAE,GAAI,IAAgC,EAA8B,CAAC;IAE5E,KAAK,MAAM,KAAK,IAAI,gBAAgB,EAAE,CAAC;QACrC,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC;IACtB,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAEM,KAAK,UAAU,oBAAoB,CACxC,KAA2B,EAC3B,KAA+B;IAE/B,IAAI,CAAC;QACH,MAAM,KAAK,CAAC,MAAM,CAAC;YACjB,iBAAiB,EAAE,KAAK,CAAC,iBAAiB;YAC1C,YAAY,EAAE,iBAAiB,CAAC,KAAK,CAAC,YAAY,CAAC;YACnD,OAAO,EAAE,iBAAiB,CAAC,KAAK,CAAC,OAAO,CAAC;YACzC,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,UAAU,EAAE,KAAK,CAAC,UAAU;YAC5B,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,IAAI;SACjC,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,uCAAuC,EAAE,KAAK,CAAC,CAAC;IAChE,CAAC;AACH,CAAC"}
@@ -1,48 +0,0 @@
1
- import { AdminAuditLog } from "../entities/admin-audit-log.entity";
2
- import { CreateAdminAuditLogInput } from "../types/admin-audit-log.types";
3
-
4
- const SENSITIVE_FIELDS = [
5
- "password",
6
- "refreshToken",
7
- "verificationToken",
8
- "access_token",
9
- "accessToken",
10
- ];
11
-
12
- export function sanitizeAuditData(
13
- data: unknown,
14
- ): Record<string, unknown> | null {
15
- if (data == null) {
16
- return null;
17
- }
18
-
19
- const plain =
20
- typeof (data as { toJSON?: () => unknown }).toJSON === "function"
21
- ? ((data as { toJSON: () => unknown }).toJSON() as Record<string, unknown>)
22
- : ({ ...(data as Record<string, unknown>) } as Record<string, unknown>);
23
-
24
- for (const field of SENSITIVE_FIELDS) {
25
- delete plain[field];
26
- }
27
-
28
- return plain;
29
- }
30
-
31
- export async function persistAdminAuditLog(
32
- model: typeof AdminAuditLog,
33
- input: CreateAdminAuditLogInput,
34
- ): Promise<void> {
35
- try {
36
- await model.create({
37
- performedByUserId: input.performedByUserId,
38
- previousData: sanitizeAuditData(input.previousData),
39
- newData: sanitizeAuditData(input.newData),
40
- endpoint: input.endpoint,
41
- httpMethod: input.httpMethod,
42
- tableName: input.tableName,
43
- entityId: input.entityId ?? null,
44
- });
45
- } catch (error) {
46
- console.error("No se pudo persistir admin audit log:", error);
47
- }
48
- }