uaxi-shared-entities 1.0.214 → 1.0.215

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,42 @@
1
+ import { Model } from "sequelize-typescript";
2
+ import { User } from "./user.entity";
3
+ export declare enum AdminAuditHttpMethod {
4
+ POST = "POST",
5
+ PUT = "PUT",
6
+ PATCH = "PATCH",
7
+ DELETE = "DELETE"
8
+ }
9
+ export interface AdminAuditLogAttributes {
10
+ id: string;
11
+ performedByUserId: string;
12
+ previousData: Record<string, unknown> | null;
13
+ newData: Record<string, unknown> | null;
14
+ endpoint: string;
15
+ httpMethod: AdminAuditHttpMethod;
16
+ tableName: string;
17
+ entityId: string | null;
18
+ createdAt: Date;
19
+ }
20
+ interface AdminAuditLogCreationAttrs {
21
+ performedByUserId: string;
22
+ previousData?: Record<string, unknown> | null;
23
+ newData?: Record<string, unknown> | null;
24
+ endpoint: string;
25
+ httpMethod: AdminAuditHttpMethod;
26
+ tableName: string;
27
+ entityId?: string | null;
28
+ }
29
+ export declare class AdminAuditLog extends Model<AdminAuditLogAttributes, AdminAuditLogCreationAttrs> {
30
+ id: string;
31
+ performedByUserId: string;
32
+ previousData: Record<string, unknown> | null;
33
+ newData: Record<string, unknown> | null;
34
+ endpoint: string;
35
+ httpMethod: AdminAuditHttpMethod;
36
+ tableName: string;
37
+ entityId: string | null;
38
+ createdAt: Date;
39
+ performedByUser: User;
40
+ }
41
+ export {};
42
+ //# sourceMappingURL=admin-audit-log.entity.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,109 @@
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
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.AdminAuditLog = exports.AdminAuditHttpMethod = void 0;
13
+ const sequelize_typescript_1 = require("sequelize-typescript");
14
+ const user_entity_1 = require("./user.entity");
15
+ var AdminAuditHttpMethod;
16
+ (function (AdminAuditHttpMethod) {
17
+ AdminAuditHttpMethod["POST"] = "POST";
18
+ AdminAuditHttpMethod["PUT"] = "PUT";
19
+ AdminAuditHttpMethod["PATCH"] = "PATCH";
20
+ AdminAuditHttpMethod["DELETE"] = "DELETE";
21
+ })(AdminAuditHttpMethod || (exports.AdminAuditHttpMethod = AdminAuditHttpMethod = {}));
22
+ let AdminAuditLog = class AdminAuditLog extends sequelize_typescript_1.Model {
23
+ };
24
+ exports.AdminAuditLog = AdminAuditLog;
25
+ __decorate([
26
+ (0, sequelize_typescript_1.Column)({
27
+ type: sequelize_typescript_1.DataType.UUID,
28
+ defaultValue: sequelize_typescript_1.DataType.UUIDV4,
29
+ primaryKey: true,
30
+ }),
31
+ __metadata("design:type", String)
32
+ ], AdminAuditLog.prototype, "id", void 0);
33
+ __decorate([
34
+ sequelize_typescript_1.Index,
35
+ (0, sequelize_typescript_1.ForeignKey)(() => user_entity_1.User),
36
+ (0, sequelize_typescript_1.Column)({
37
+ type: sequelize_typescript_1.DataType.UUID,
38
+ allowNull: false,
39
+ comment: "Usuario admin que realizó la acción (del token JWT)",
40
+ }),
41
+ __metadata("design:type", String)
42
+ ], AdminAuditLog.prototype, "performedByUserId", void 0);
43
+ __decorate([
44
+ (0, sequelize_typescript_1.Column)({
45
+ type: sequelize_typescript_1.DataType.JSONB,
46
+ allowNull: true,
47
+ comment: "Estado anterior del recurso afectado",
48
+ }),
49
+ __metadata("design:type", Object)
50
+ ], AdminAuditLog.prototype, "previousData", void 0);
51
+ __decorate([
52
+ (0, sequelize_typescript_1.Column)({
53
+ type: sequelize_typescript_1.DataType.JSONB,
54
+ allowNull: true,
55
+ comment: "Estado nuevo del recurso afectado",
56
+ }),
57
+ __metadata("design:type", Object)
58
+ ], AdminAuditLog.prototype, "newData", void 0);
59
+ __decorate([
60
+ (0, sequelize_typescript_1.Column)({
61
+ type: sequelize_typescript_1.DataType.STRING(500),
62
+ allowNull: false,
63
+ comment: "Ruta del endpoint que ejecutó la acción",
64
+ }),
65
+ __metadata("design:type", String)
66
+ ], AdminAuditLog.prototype, "endpoint", void 0);
67
+ __decorate([
68
+ (0, sequelize_typescript_1.Column)({
69
+ type: sequelize_typescript_1.DataType.ENUM(...Object.values(AdminAuditHttpMethod)),
70
+ allowNull: false,
71
+ comment: "Método HTTP de la operación",
72
+ }),
73
+ __metadata("design:type", String)
74
+ ], AdminAuditLog.prototype, "httpMethod", void 0);
75
+ __decorate([
76
+ sequelize_typescript_1.Index,
77
+ (0, sequelize_typescript_1.Column)({
78
+ type: sequelize_typescript_1.DataType.STRING(100),
79
+ allowNull: false,
80
+ comment: "Nombre de la tabla que fue modificada",
81
+ }),
82
+ __metadata("design:type", String)
83
+ ], AdminAuditLog.prototype, "tableName", void 0);
84
+ __decorate([
85
+ sequelize_typescript_1.Index,
86
+ (0, sequelize_typescript_1.Column)({
87
+ type: sequelize_typescript_1.DataType.UUID,
88
+ allowNull: true,
89
+ comment: "ID del registro afectado",
90
+ }),
91
+ __metadata("design:type", Object)
92
+ ], AdminAuditLog.prototype, "entityId", void 0);
93
+ __decorate([
94
+ sequelize_typescript_1.CreatedAt,
95
+ __metadata("design:type", Date)
96
+ ], AdminAuditLog.prototype, "createdAt", void 0);
97
+ __decorate([
98
+ (0, sequelize_typescript_1.BelongsTo)(() => user_entity_1.User, "performedByUserId"),
99
+ __metadata("design:type", user_entity_1.User)
100
+ ], AdminAuditLog.prototype, "performedByUser", void 0);
101
+ exports.AdminAuditLog = AdminAuditLog = __decorate([
102
+ (0, sequelize_typescript_1.Table)({
103
+ tableName: "admin_audit_logs",
104
+ timestamps: true,
105
+ updatedAt: false,
106
+ paranoid: false,
107
+ })
108
+ ], AdminAuditLog);
109
+ //# sourceMappingURL=admin-audit-log.entity.js.map
@@ -0,0 +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,3 +1,4 @@
1
+ export * from "./admin-audit-log.entity";
1
2
  export * from "./user.entity";
2
3
  export * from "./user-device.entity";
3
4
  export * from "./address.entity";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/entities/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/entities/index.ts"],"names":[],"mappings":"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"}
@@ -14,6 +14,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./admin-audit-log.entity"), exports);
17
18
  __exportStar(require("./user.entity"), exports);
18
19
  __exportStar(require("./user-device.entity"), exports);
19
20
  __exportStar(require("./address.entity"), exports);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/entities/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,gDAA8B;AAC9B,uDAAqC;AACrC,mDAAiC;AACjC,uDAAqC;AACrC,mDAAiC;AACjC,iDAA+B;AAC/B,yDAAuC;AACvC,yDAAuC;AACvC,mEAAiD;AACjD,kDAAgC;AAChC,6DAA2C;AAC3C,kDAAgC;AAChC,4DAA0C;AAC1C,6DAA2C;AAC3C,qDAAmC;AACnC,yDAAuC;AACvC,oDAAkC;AAClC,+CAA6B;AAC7B,oDAAkC;AAClC,iDAA+B;AAC/B,gDAA8B;AAC9B,yDAAuC;AACvC,wDAAsC;AACtC,iDAA+B;AAC/B,iEAA+C;AAC/C,gEAA8C;AAC9C,mDAAiC;AACjC,mEAAiD;AACjD,4DAA0C;AAC1C,mDAAiC;AACjC,oDAAkC;AAClC,0DAAwC;AACxC,wDAAsC;AACtC,2DAAyC;AACzC,kDAAgC;AAChC,qEAAmD;AACnD,yDAAuC;AACvC,gEAA8C;AAC9C,4EAA0D;AAC1D,sDAAoC;AACpC,6DAA2C;AAC3C,yDAAuC;AACvC,iEAA+C;AAC/C,kEAAgD;AAChD,qDAAmC;AACnC,4DAA0C;AAC1C,oDAAkC;AAClC,iEAA+C;AAC/C,iEAA+C;AAC/C,+CAA6B;AAC7B,yDAAuC;AACvC,qDAAmC;AACnC,6DAA2C;AAC3C,2DAAyC;AACzC,6DAA2C;AAC3C,kEAAgD;AAChD,4DAA0C;AAC1C,0DAAwC;AACxC,0DAAwC;AACxC,qDAAmC;AACnC,0DAAwC;AACxC,qEAAmD;AACnD,8DAA4C;AAC5C,uEAAqD;AACrD,uEAAqD;AACrD,wEAAsD;AACtD,qEAAmD;AACnD,gEAA8C;AAC9C,iEAA+C;AAC/C,iFAA+D;AAC/D,gEAA8C;AAC9C,6DAA2C;AAC3C,yDAAuC;AACvC,gEAA8C;AAC9C,kEAAgD;AAChD,mEAAiD;AACjD,gEAA8C;AAC9C,uDAAqC;AACrC,2DAAyC;AACzC,sEAAoD;AACpD,4DAA0C;AAC1C,8DAA4C;AAC5C,+DAA6C;AAC7C,oEAAkD;AAClD,iEAA+C;AAC/C,gEAA8C;AAC9C,yEAAuD;AACvD,gEAA8C;AAC9C,wEAAsD;AACtD,8DAA4C;AAC5C,mEAAiD;AACjD,qEAAmD;AACnD,oEAAkD;AAClD,kEAAgD"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/entities/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2DAAyC;AACzC,gDAA8B;AAC9B,uDAAqC;AACrC,mDAAiC;AACjC,uDAAqC;AACrC,mDAAiC;AACjC,iDAA+B;AAC/B,yDAAuC;AACvC,yDAAuC;AACvC,mEAAiD;AACjD,kDAAgC;AAChC,6DAA2C;AAC3C,kDAAgC;AAChC,4DAA0C;AAC1C,6DAA2C;AAC3C,qDAAmC;AACnC,yDAAuC;AACvC,oDAAkC;AAClC,+CAA6B;AAC7B,oDAAkC;AAClC,iDAA+B;AAC/B,gDAA8B;AAC9B,yDAAuC;AACvC,wDAAsC;AACtC,iDAA+B;AAC/B,iEAA+C;AAC/C,gEAA8C;AAC9C,mDAAiC;AACjC,mEAAiD;AACjD,4DAA0C;AAC1C,mDAAiC;AACjC,oDAAkC;AAClC,0DAAwC;AACxC,wDAAsC;AACtC,2DAAyC;AACzC,kDAAgC;AAChC,qEAAmD;AACnD,yDAAuC;AACvC,gEAA8C;AAC9C,4EAA0D;AAC1D,sDAAoC;AACpC,6DAA2C;AAC3C,yDAAuC;AACvC,iEAA+C;AAC/C,kEAAgD;AAChD,qDAAmC;AACnC,4DAA0C;AAC1C,oDAAkC;AAClC,iEAA+C;AAC/C,iEAA+C;AAC/C,+CAA6B;AAC7B,yDAAuC;AACvC,qDAAmC;AACnC,6DAA2C;AAC3C,2DAAyC;AACzC,6DAA2C;AAC3C,kEAAgD;AAChD,4DAA0C;AAC1C,0DAAwC;AACxC,0DAAwC;AACxC,qDAAmC;AACnC,0DAAwC;AACxC,qEAAmD;AACnD,8DAA4C;AAC5C,uEAAqD;AACrD,uEAAqD;AACrD,wEAAsD;AACtD,qEAAmD;AACnD,gEAA8C;AAC9C,iEAA+C;AAC/C,iFAA+D;AAC/D,gEAA8C;AAC9C,6DAA2C;AAC3C,yDAAuC;AACvC,gEAA8C;AAC9C,kEAAgD;AAChD,mEAAiD;AACjD,gEAA8C;AAC9C,uDAAqC;AACrC,2DAAyC;AACzC,sEAAoD;AACpD,4DAA0C;AAC1C,8DAA4C;AAC5C,+DAA6C;AAC7C,oEAAkD;AAClD,iEAA+C;AAC/C,gEAA8C;AAC9C,yEAAuD;AACvD,gEAA8C;AAC9C,wEAAsD;AACtD,8DAA4C;AAC5C,mEAAiD;AACjD,qEAAmD;AACnD,oEAAkD;AAClD,kEAAgD"}
package/dist/index.d.ts CHANGED
@@ -2,4 +2,5 @@ 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";
5
6
  //# 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"}
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"}
package/dist/index.js CHANGED
@@ -25,4 +25,6 @@ __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);
28
30
  //# 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"}
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"}
@@ -0,0 +1,13 @@
1
+ import { AdminAuditHttpMethod } from "../entities/admin-audit-log.entity";
2
+ export interface AdminAuditContext {
3
+ performedByUserId: string;
4
+ endpoint: string;
5
+ httpMethod: AdminAuditHttpMethod;
6
+ tableName: string;
7
+ entityId?: string;
8
+ }
9
+ export interface CreateAdminAuditLogInput extends AdminAuditContext {
10
+ previousData?: Record<string, unknown> | null;
11
+ newData?: Record<string, unknown> | null;
12
+ }
13
+ //# sourceMappingURL=admin-audit-log.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"admin-audit-log.types.d.ts","sourceRoot":"","sources":["../../src/types/admin-audit-log.types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,oCAAoC,CAAC;AAE1E,MAAM,WAAW,iBAAiB;IAChC,iBAAiB,EAAE,MAAM,CAAC;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,oBAAoB,CAAC;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,wBAAyB,SAAQ,iBAAiB;IACjE,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;CAC1C"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=admin-audit-log.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"admin-audit-log.types.js","sourceRoot":"","sources":["../../src/types/admin-audit-log.types.ts"],"names":[],"mappings":""}
@@ -1,2 +1,3 @@
1
1
  export * from "./common.types";
2
+ export * from "./admin-audit-log.types";
2
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAIA,cAAc,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAIA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,yBAAyB,CAAC"}
@@ -18,4 +18,5 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
18
18
  };
19
19
  Object.defineProperty(exports, "__esModule", { value: true });
20
20
  __exportStar(require("./common.types"), exports);
21
+ __exportStar(require("./admin-audit-log.types"), exports);
21
22
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":";AAAA,gDAAgD;AAChD,sCAAsC;AACtC,gDAAgD;;;;;;;;;;;;;;;;AAEhD,iDAA+B"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":";AAAA,gDAAgD;AAChD,sCAAsC;AACtC,gDAAgD;;;;;;;;;;;;;;;;AAEhD,iDAA+B;AAC/B,0DAAwC"}
@@ -0,0 +1,5 @@
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
@@ -0,0 +1 @@
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"}
@@ -0,0 +1,40 @@
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
@@ -0,0 +1 @@
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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "uaxi-shared-entities",
3
- "version": "1.0.214",
3
+ "version": "1.0.215",
4
4
  "description": "Entidades compartidas para microservicios UAXI",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -0,0 +1,117 @@
1
+ import {
2
+ Table,
3
+ Column,
4
+ Model,
5
+ DataType,
6
+ CreatedAt,
7
+ ForeignKey,
8
+ BelongsTo,
9
+ Index,
10
+ } from "sequelize-typescript";
11
+ import { User } from "./user.entity";
12
+
13
+ export enum AdminAuditHttpMethod {
14
+ POST = "POST",
15
+ PUT = "PUT",
16
+ PATCH = "PATCH",
17
+ DELETE = "DELETE",
18
+ }
19
+
20
+ export interface AdminAuditLogAttributes {
21
+ id: string;
22
+ performedByUserId: string;
23
+ previousData: Record<string, unknown> | null;
24
+ newData: Record<string, unknown> | null;
25
+ endpoint: string;
26
+ httpMethod: AdminAuditHttpMethod;
27
+ tableName: string;
28
+ entityId: string | null;
29
+ createdAt: Date;
30
+ }
31
+
32
+ interface AdminAuditLogCreationAttrs {
33
+ performedByUserId: string;
34
+ previousData?: Record<string, unknown> | null;
35
+ newData?: Record<string, unknown> | null;
36
+ endpoint: string;
37
+ httpMethod: AdminAuditHttpMethod;
38
+ tableName: string;
39
+ entityId?: string | null;
40
+ }
41
+
42
+ @Table({
43
+ tableName: "admin_audit_logs",
44
+ timestamps: true,
45
+ updatedAt: false,
46
+ paranoid: false,
47
+ })
48
+ export class AdminAuditLog extends Model<
49
+ AdminAuditLogAttributes,
50
+ AdminAuditLogCreationAttrs
51
+ > {
52
+ @Column({
53
+ type: DataType.UUID,
54
+ defaultValue: DataType.UUIDV4,
55
+ primaryKey: true,
56
+ })
57
+ declare id: string;
58
+
59
+ @Index
60
+ @ForeignKey(() => User)
61
+ @Column({
62
+ type: DataType.UUID,
63
+ allowNull: false,
64
+ comment: "Usuario admin que realizó la acción (del token JWT)",
65
+ })
66
+ performedByUserId: string;
67
+
68
+ @Column({
69
+ type: DataType.JSONB,
70
+ allowNull: true,
71
+ comment: "Estado anterior del recurso afectado",
72
+ })
73
+ previousData: Record<string, unknown> | null;
74
+
75
+ @Column({
76
+ type: DataType.JSONB,
77
+ allowNull: true,
78
+ comment: "Estado nuevo del recurso afectado",
79
+ })
80
+ newData: Record<string, unknown> | null;
81
+
82
+ @Column({
83
+ type: DataType.STRING(500),
84
+ allowNull: false,
85
+ comment: "Ruta del endpoint que ejecutó la acción",
86
+ })
87
+ endpoint: string;
88
+
89
+ @Column({
90
+ type: DataType.ENUM(...Object.values(AdminAuditHttpMethod)),
91
+ allowNull: false,
92
+ comment: "Método HTTP de la operación",
93
+ })
94
+ httpMethod: AdminAuditHttpMethod;
95
+
96
+ @Index
97
+ @Column({
98
+ type: DataType.STRING(100),
99
+ allowNull: false,
100
+ comment: "Nombre de la tabla que fue modificada",
101
+ })
102
+ tableName: string;
103
+
104
+ @Index
105
+ @Column({
106
+ type: DataType.UUID,
107
+ allowNull: true,
108
+ comment: "ID del registro afectado",
109
+ })
110
+ entityId: string | null;
111
+
112
+ @CreatedAt
113
+ declare createdAt: Date;
114
+
115
+ @BelongsTo(() => User, "performedByUserId")
116
+ performedByUser: User;
117
+ }
@@ -1,3 +1,4 @@
1
+ export * from "./admin-audit-log.entity";
1
2
  export * from "./user.entity";
2
3
  export * from "./user-device.entity";
3
4
  export * from "./address.entity";
package/src/index.ts CHANGED
@@ -13,3 +13,6 @@ 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";
@@ -0,0 +1,14 @@
1
+ import { AdminAuditHttpMethod } from "../entities/admin-audit-log.entity";
2
+
3
+ export interface AdminAuditContext {
4
+ performedByUserId: string;
5
+ endpoint: string;
6
+ httpMethod: AdminAuditHttpMethod;
7
+ tableName: string;
8
+ entityId?: string;
9
+ }
10
+
11
+ export interface CreateAdminAuditLogInput extends AdminAuditContext {
12
+ previousData?: Record<string, unknown> | null;
13
+ newData?: Record<string, unknown> | null;
14
+ }
@@ -3,3 +3,4 @@
3
3
  // =============================================
4
4
 
5
5
  export * from "./common.types";
6
+ export * from "./admin-audit-log.types";
@@ -0,0 +1,48 @@
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
+ }