@fabx.vn/core 1.0.6 → 1.0.8
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.
- package/dist/core/entities/base.entity.d.ts +11 -0
- package/dist/core/entities/base.entity.js +53 -0
- package/dist/core/entities/base.entity.js.map +1 -0
- package/dist/core/services/jwt.service.d.ts +1 -9
- package/dist/core/services/jwt.service.js +4 -50
- package/dist/core/services/jwt.service.js.map +1 -1
- package/dist/core/services/session.service.d.ts +1 -1
- package/dist/core/subscribers/audit.subscriber.js +25 -11
- package/dist/core/subscribers/audit.subscriber.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,53 @@
|
|
|
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.BaseEntity = void 0;
|
|
13
|
+
const typeorm_1 = require("typeorm");
|
|
14
|
+
class BaseEntity {
|
|
15
|
+
}
|
|
16
|
+
exports.BaseEntity = BaseEntity;
|
|
17
|
+
__decorate([
|
|
18
|
+
(0, typeorm_1.PrimaryGeneratedColumn)({ type: "bigint" }),
|
|
19
|
+
__metadata("design:type", Number)
|
|
20
|
+
], BaseEntity.prototype, "id", void 0);
|
|
21
|
+
__decorate([
|
|
22
|
+
(0, typeorm_1.Column)({ name: "search_keyword", type: "text", nullable: true }),
|
|
23
|
+
__metadata("design:type", String)
|
|
24
|
+
], BaseEntity.prototype, "searchKeyword", void 0);
|
|
25
|
+
__decorate([
|
|
26
|
+
(0, typeorm_1.Column)({ name: "created_org", type: "bigint", nullable: true }),
|
|
27
|
+
__metadata("design:type", Number)
|
|
28
|
+
], BaseEntity.prototype, "createdOrg", void 0);
|
|
29
|
+
__decorate([
|
|
30
|
+
(0, typeorm_1.Column)({ name: "created_by", type: "bigint", nullable: true }),
|
|
31
|
+
__metadata("design:type", Number)
|
|
32
|
+
], BaseEntity.prototype, "createdBy", void 0);
|
|
33
|
+
__decorate([
|
|
34
|
+
(0, typeorm_1.Column)({ name: "updated_by", type: "bigint", nullable: true }),
|
|
35
|
+
__metadata("design:type", Number)
|
|
36
|
+
], BaseEntity.prototype, "updatedBy", void 0);
|
|
37
|
+
__decorate([
|
|
38
|
+
(0, typeorm_1.Column)({ name: "deleted_by", type: "bigint", nullable: true }),
|
|
39
|
+
__metadata("design:type", Number)
|
|
40
|
+
], BaseEntity.prototype, "deletedBy", void 0);
|
|
41
|
+
__decorate([
|
|
42
|
+
(0, typeorm_1.CreateDateColumn)({ name: "created_at" }),
|
|
43
|
+
__metadata("design:type", Date)
|
|
44
|
+
], BaseEntity.prototype, "createdAt", void 0);
|
|
45
|
+
__decorate([
|
|
46
|
+
(0, typeorm_1.UpdateDateColumn)({ name: "updated_at", nullable: true }),
|
|
47
|
+
__metadata("design:type", Date)
|
|
48
|
+
], BaseEntity.prototype, "updatedAt", void 0);
|
|
49
|
+
__decorate([
|
|
50
|
+
(0, typeorm_1.DeleteDateColumn)({ name: "deleted_at", nullable: true }),
|
|
51
|
+
__metadata("design:type", Date)
|
|
52
|
+
], BaseEntity.prototype, "deletedAt", void 0);
|
|
53
|
+
//# sourceMappingURL=base.entity.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base.entity.js","sourceRoot":"","sources":["../../../src/core/entities/base.entity.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,qCAMiB;AAEjB,MAAsB,UAAU;CA2B/B;AA3BD,gCA2BC;AAzBC;IADC,IAAA,gCAAsB,EAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;;sCAChC;AAGX;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;iDAC3C;AAGtB;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;8CAC7C;AAGnB;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;6CAC7C;AAGlB;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;6CAC7C;AAGlB;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;6CAC7C;AAGlB;IADC,IAAA,0BAAgB,EAAC,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC;8BAC9B,IAAI;6CAAC;AAGhB;IADC,IAAA,0BAAgB,EAAC,EAAE,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;8BAC9C,IAAI;6CAAC;AAGhB;IADC,IAAA,0BAAgB,EAAC,EAAE,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;8BAC9C,IAAI;6CAAC"}
|
|
@@ -1,9 +1,7 @@
|
|
|
1
1
|
import { JwtService } from "@nestjs/jwt";
|
|
2
2
|
import { SessionService, CurrentUserDto } from "../services/session.service";
|
|
3
3
|
export interface JwtTokenData {
|
|
4
|
-
sub: string
|
|
5
|
-
sessionId?: string;
|
|
6
|
-
email?: string;
|
|
4
|
+
sub: string;
|
|
7
5
|
}
|
|
8
6
|
export interface JwtValidationResult {
|
|
9
7
|
isValid: boolean;
|
|
@@ -16,23 +14,17 @@ export declare class CoreJwtService {
|
|
|
16
14
|
private readonly logger;
|
|
17
15
|
constructor(jwtService: JwtService, sessionService: SessionService);
|
|
18
16
|
createAccessToken(sessionData: CurrentUserDto): Promise<string>;
|
|
19
|
-
createSimpleAccessToken(userId: string | number, email: string): string;
|
|
20
17
|
decodeToken(token: string): JwtTokenData | null;
|
|
21
18
|
verifyToken(token: string): JwtTokenData | null;
|
|
22
19
|
validateTokenSignature(token: string): JwtValidationResult;
|
|
23
20
|
isTokenSignatureValid(token: string): boolean;
|
|
24
|
-
getUserIdFromToken(token: string): string | number | null;
|
|
25
21
|
getSessionIdFromToken(token: string): string | null;
|
|
26
22
|
deleteSessionFromToken(token: string): Promise<boolean>;
|
|
27
|
-
extractTokenFromHeader(request: any): string | null;
|
|
28
23
|
getTokenExpirationTime(token: string): number | null;
|
|
29
24
|
isTokenExpired(token: string): boolean;
|
|
30
|
-
createTokenPayload(userId: string | number, sessionId?: string, email?: string): JwtTokenData;
|
|
31
|
-
signToken(payload: JwtTokenData): string;
|
|
32
25
|
createInternalToken(service: string): string;
|
|
33
26
|
verifyInternalToken(token: string): {
|
|
34
27
|
service: string;
|
|
35
28
|
} | null;
|
|
36
29
|
getCurrentUser(accessToken: string): Promise<CurrentUserDto | null>;
|
|
37
|
-
getEmailFromToken(token: string): string | null;
|
|
38
30
|
}
|
|
@@ -27,18 +27,7 @@ let CoreJwtService = CoreJwtService_1 = class CoreJwtService {
|
|
|
27
27
|
async createAccessToken(sessionData) {
|
|
28
28
|
const ttlSec = date_utils_1.DateUtils.parseExpirationTime(jwt_config_1.jwtConfig.expiresIn);
|
|
29
29
|
const sessionId = await this.sessionService.createSession(sessionData, ttlSec);
|
|
30
|
-
const payload = {
|
|
31
|
-
sub: sessionData.userId,
|
|
32
|
-
sessionId: sessionId,
|
|
33
|
-
email: sessionData.email,
|
|
34
|
-
};
|
|
35
|
-
return this.jwtService.sign(payload);
|
|
36
|
-
}
|
|
37
|
-
createSimpleAccessToken(userId, email) {
|
|
38
|
-
const payload = {
|
|
39
|
-
sub: userId,
|
|
40
|
-
email: email,
|
|
41
|
-
};
|
|
30
|
+
const payload = { sub: sessionId };
|
|
42
31
|
return this.jwtService.sign(payload);
|
|
43
32
|
}
|
|
44
33
|
decodeToken(token) {
|
|
@@ -84,13 +73,9 @@ let CoreJwtService = CoreJwtService_1 = class CoreJwtService {
|
|
|
84
73
|
const result = this.validateTokenSignature(token);
|
|
85
74
|
return result.isValid;
|
|
86
75
|
}
|
|
87
|
-
getUserIdFromToken(token) {
|
|
88
|
-
const payload = this.decodeToken(token);
|
|
89
|
-
return payload?.sub || null;
|
|
90
|
-
}
|
|
91
76
|
getSessionIdFromToken(token) {
|
|
92
77
|
const payload = this.decodeToken(token);
|
|
93
|
-
return payload?.
|
|
78
|
+
return payload?.sub || null;
|
|
94
79
|
}
|
|
95
80
|
async deleteSessionFromToken(token) {
|
|
96
81
|
const sessionId = this.getSessionIdFromToken(token);
|
|
@@ -100,18 +85,6 @@ let CoreJwtService = CoreJwtService_1 = class CoreJwtService {
|
|
|
100
85
|
}
|
|
101
86
|
return false;
|
|
102
87
|
}
|
|
103
|
-
extractTokenFromHeader(request) {
|
|
104
|
-
try {
|
|
105
|
-
const authHeader = request.headers?.authorization;
|
|
106
|
-
if (!authHeader || !authHeader.startsWith("Bearer ")) {
|
|
107
|
-
return null;
|
|
108
|
-
}
|
|
109
|
-
return authHeader.substring(7);
|
|
110
|
-
}
|
|
111
|
-
catch (error) {
|
|
112
|
-
return null;
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
88
|
getTokenExpirationTime(token) {
|
|
116
89
|
try {
|
|
117
90
|
const payload = this.decodeToken(token);
|
|
@@ -131,21 +104,6 @@ let CoreJwtService = CoreJwtService_1 = class CoreJwtService {
|
|
|
131
104
|
const expirationTime = this.getTokenExpirationTime(token);
|
|
132
105
|
return expirationTime === null || expirationTime <= 0;
|
|
133
106
|
}
|
|
134
|
-
createTokenPayload(userId, sessionId, email) {
|
|
135
|
-
const payload = {
|
|
136
|
-
sub: userId,
|
|
137
|
-
};
|
|
138
|
-
if (sessionId) {
|
|
139
|
-
payload.sessionId = sessionId;
|
|
140
|
-
}
|
|
141
|
-
if (email) {
|
|
142
|
-
payload.email = email;
|
|
143
|
-
}
|
|
144
|
-
return payload;
|
|
145
|
-
}
|
|
146
|
-
signToken(payload) {
|
|
147
|
-
return this.jwtService.sign(payload);
|
|
148
|
-
}
|
|
149
107
|
createInternalToken(service) {
|
|
150
108
|
return this.jwtService.sign({ service }, {
|
|
151
109
|
secret: internal_config_1.internalConfig.internalSecret,
|
|
@@ -167,9 +125,9 @@ let CoreJwtService = CoreJwtService_1 = class CoreJwtService {
|
|
|
167
125
|
try {
|
|
168
126
|
const payload = this.decodeToken(accessToken);
|
|
169
127
|
this.logger.log(`Payload: ${JSON.stringify(payload)}`);
|
|
170
|
-
if (!payload?.
|
|
128
|
+
if (!payload?.sub)
|
|
171
129
|
return null;
|
|
172
|
-
const sessionData = await this.sessionService.getSession(payload.
|
|
130
|
+
const sessionData = await this.sessionService.getSession(payload.sub);
|
|
173
131
|
this.logger.log(`Session data: ${JSON.stringify(sessionData)}`);
|
|
174
132
|
return sessionData;
|
|
175
133
|
}
|
|
@@ -177,10 +135,6 @@ let CoreJwtService = CoreJwtService_1 = class CoreJwtService {
|
|
|
177
135
|
return null;
|
|
178
136
|
}
|
|
179
137
|
}
|
|
180
|
-
getEmailFromToken(token) {
|
|
181
|
-
const payload = this.decodeToken(token);
|
|
182
|
-
return payload?.email || null;
|
|
183
|
-
}
|
|
184
138
|
};
|
|
185
139
|
exports.CoreJwtService = CoreJwtService;
|
|
186
140
|
exports.CoreJwtService = CoreJwtService = CoreJwtService_1 = __decorate([
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jwt.service.js","sourceRoot":"","sources":["../../../src/core/services/jwt.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,2CAAoD;AACpD,qCAAyC;AACzC,oEAAgF;AAChF,kDAA8C;AAC9C,mDAA+C;AAC/C,6DAAyD;AACzD,sEAAyD;
|
|
1
|
+
{"version":3,"file":"jwt.service.js","sourceRoot":"","sources":["../../../src/core/services/jwt.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,12 +2,12 @@ import { RedisService } from "../services/redis.service";
|
|
|
2
2
|
export interface CurrentUserDto {
|
|
3
3
|
userUuid: string;
|
|
4
4
|
userId: number;
|
|
5
|
+
orgUnitId: number;
|
|
5
6
|
email: string;
|
|
6
7
|
fullName: string;
|
|
7
8
|
employeeCode: string;
|
|
8
9
|
avatar: string;
|
|
9
10
|
dataScope: string;
|
|
10
|
-
orgUnitIds: number[];
|
|
11
11
|
permissions: string[];
|
|
12
12
|
}
|
|
13
13
|
export declare class SessionService {
|
|
@@ -18,11 +18,26 @@ let AuditSubscriber = class AuditSubscriber {
|
|
|
18
18
|
this.dataSource = dataSource;
|
|
19
19
|
this.dataSource.subscribers.push(this);
|
|
20
20
|
}
|
|
21
|
-
safeSetProperty(entity, property, value) {
|
|
21
|
+
safeSetProperty(entity, property, value, metadata) {
|
|
22
22
|
if (!entity)
|
|
23
23
|
return;
|
|
24
24
|
try {
|
|
25
|
-
|
|
25
|
+
let entityMetadata = metadata;
|
|
26
|
+
if (!entityMetadata && entity.constructor) {
|
|
27
|
+
entityMetadata = this.dataSource.entityMetadatas.find((meta) => meta.target === entity.constructor);
|
|
28
|
+
}
|
|
29
|
+
if (entityMetadata) {
|
|
30
|
+
const hasProperty = entityMetadata.columns.some((column) => column.propertyName === property);
|
|
31
|
+
if (hasProperty) {
|
|
32
|
+
entity[property] = value;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
else {
|
|
36
|
+
if (property in entity ||
|
|
37
|
+
Object.prototype.hasOwnProperty.call(entity, property)) {
|
|
38
|
+
entity[property] = value;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
26
41
|
}
|
|
27
42
|
catch (error) {
|
|
28
43
|
}
|
|
@@ -32,11 +47,10 @@ let AuditSubscriber = class AuditSubscriber {
|
|
|
32
47
|
return;
|
|
33
48
|
const user = request_context_service_1.RequestContextService.getCurrentUser();
|
|
34
49
|
if (user?.userId) {
|
|
35
|
-
this.safeSetProperty(event.entity, "createdBy", user.userId);
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
this.safeSetProperty(event.entity, "orgUnitId", orgUnitId);
|
|
50
|
+
this.safeSetProperty(event.entity, "createdBy", user.userId, event.metadata);
|
|
51
|
+
if (user.orgUnitId) {
|
|
52
|
+
this.safeSetProperty(event.entity, "createdOrg", user.orgUnitId, event.metadata);
|
|
53
|
+
}
|
|
40
54
|
}
|
|
41
55
|
}
|
|
42
56
|
beforeUpdate(event) {
|
|
@@ -45,10 +59,10 @@ let AuditSubscriber = class AuditSubscriber {
|
|
|
45
59
|
const user = request_context_service_1.RequestContextService.getCurrentUser();
|
|
46
60
|
if (user?.userId) {
|
|
47
61
|
if (event.entity.deletedAt) {
|
|
48
|
-
this.safeSetProperty(event.entity, "deletedBy", user.userId);
|
|
62
|
+
this.safeSetProperty(event.entity, "deletedBy", user.userId, event.metadata);
|
|
49
63
|
}
|
|
50
64
|
else {
|
|
51
|
-
this.safeSetProperty(event.entity, "updatedBy", user.userId);
|
|
65
|
+
this.safeSetProperty(event.entity, "updatedBy", user.userId, event.metadata);
|
|
52
66
|
}
|
|
53
67
|
}
|
|
54
68
|
}
|
|
@@ -57,7 +71,7 @@ let AuditSubscriber = class AuditSubscriber {
|
|
|
57
71
|
return;
|
|
58
72
|
const user = request_context_service_1.RequestContextService.getCurrentUser();
|
|
59
73
|
if (user?.userId) {
|
|
60
|
-
this.safeSetProperty(event.entity, "deletedBy", user.userId);
|
|
74
|
+
this.safeSetProperty(event.entity, "deletedBy", user.userId, event.metadata);
|
|
61
75
|
}
|
|
62
76
|
}
|
|
63
77
|
beforeSoftRemove(event) {
|
|
@@ -65,7 +79,7 @@ let AuditSubscriber = class AuditSubscriber {
|
|
|
65
79
|
return;
|
|
66
80
|
const user = request_context_service_1.RequestContextService.getCurrentUser();
|
|
67
81
|
if (user?.userId) {
|
|
68
|
-
this.safeSetProperty(event.entity, "deletedBy", user.userId);
|
|
82
|
+
this.safeSetProperty(event.entity, "deletedBy", user.userId, event.metadata);
|
|
69
83
|
}
|
|
70
84
|
}
|
|
71
85
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"audit.subscriber.js","sourceRoot":"","sources":["../../../src/core/subscribers/audit.subscriber.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,qCAQiB;AACjB,2CAA4C;AAC5C,oFAA+E;AAIxE,IAAM,eAAe,GAArB,MAAM,eAAe;IAC1B,YAAoB,UAAsB;QAAtB,eAAU,GAAV,UAAU,CAAY;QACxC,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACzC,CAAC;
|
|
1
|
+
{"version":3,"file":"audit.subscriber.js","sourceRoot":"","sources":["../../../src/core/subscribers/audit.subscriber.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -19,6 +19,7 @@ export { HttpExceptionFilter } from "./core/filters/http-exception.filter";
|
|
|
19
19
|
export { RequestContextInterceptor } from "./core/interceptors/request-context.interceptor";
|
|
20
20
|
export { JwtStrategy } from "./core/strategies/jwt.strategy";
|
|
21
21
|
export { AuditSubscriber } from "./core/subscribers/audit.subscriber";
|
|
22
|
+
export { BaseEntity } from "./core/entities/base.entity";
|
|
22
23
|
export { jwtConfig } from "./config/jwt.config";
|
|
23
24
|
export { redisConfig } from "./config/redis.config";
|
|
24
25
|
export { databaseConfig } from "./config/database.config";
|
package/dist/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.createServiceClient = exports.apiClient = exports.AxiosClient = exports.DateUtils = exports.SUCCESS_RESPONSES = exports.SUCCESS_MESSAGES = exports.ERROR_RESPONSES = exports.ERROR_MESSAGES = exports.MESSAGES = exports.googleOAuthConfig = exports.corsConfig = exports.internalConfig = exports.cookieConfig = exports.RABBITMQ_ROUTING_KEYS = exports.rabbitmqConfig = exports.databaseConfig = exports.redisConfig = exports.jwtConfig = exports.AuditSubscriber = exports.JwtStrategy = exports.RequestContextInterceptor = exports.HttpExceptionFilter = exports.PaginationMetaDto = exports.PaginationResponseDto = exports.PaginationDto = exports.ApiResponseDto = exports.ANY_PERMISSIONS_KEY = exports.PERMISSIONS_KEY = exports.RequireAnyPermission = exports.RequirePermissions = exports.IS_PUBLIC_KEY = exports.Public = exports.CurrentUser = exports.PermissionGuard = exports.InternalAuthGuard = exports.JwtAuthGuard = exports.BasePaginationService = exports.RequestInfoService = exports.RequestContextService = exports.RabbitMQPublisher = exports.CookieService = exports.RedisService = exports.SessionService = exports.CoreJwtService = exports.CoreModule = void 0;
|
|
3
|
+
exports.createServiceClient = exports.apiClient = exports.AxiosClient = exports.DateUtils = exports.SUCCESS_RESPONSES = exports.SUCCESS_MESSAGES = exports.ERROR_RESPONSES = exports.ERROR_MESSAGES = exports.MESSAGES = exports.googleOAuthConfig = exports.corsConfig = exports.internalConfig = exports.cookieConfig = exports.RABBITMQ_ROUTING_KEYS = exports.rabbitmqConfig = exports.databaseConfig = exports.redisConfig = exports.jwtConfig = exports.BaseEntity = exports.AuditSubscriber = exports.JwtStrategy = exports.RequestContextInterceptor = exports.HttpExceptionFilter = exports.PaginationMetaDto = exports.PaginationResponseDto = exports.PaginationDto = exports.ApiResponseDto = exports.ANY_PERMISSIONS_KEY = exports.PERMISSIONS_KEY = exports.RequireAnyPermission = exports.RequirePermissions = exports.IS_PUBLIC_KEY = exports.Public = exports.CurrentUser = exports.PermissionGuard = exports.InternalAuthGuard = exports.JwtAuthGuard = exports.BasePaginationService = exports.RequestInfoService = exports.RequestContextService = exports.RabbitMQPublisher = exports.CookieService = exports.RedisService = exports.SessionService = exports.CoreJwtService = exports.CoreModule = void 0;
|
|
4
4
|
var core_module_1 = require("./core/core.module");
|
|
5
5
|
Object.defineProperty(exports, "CoreModule", { enumerable: true, get: function () { return core_module_1.CoreModule; } });
|
|
6
6
|
var jwt_service_1 = require("./core/services/jwt.service");
|
|
@@ -49,6 +49,8 @@ var jwt_strategy_1 = require("./core/strategies/jwt.strategy");
|
|
|
49
49
|
Object.defineProperty(exports, "JwtStrategy", { enumerable: true, get: function () { return jwt_strategy_1.JwtStrategy; } });
|
|
50
50
|
var audit_subscriber_1 = require("./core/subscribers/audit.subscriber");
|
|
51
51
|
Object.defineProperty(exports, "AuditSubscriber", { enumerable: true, get: function () { return audit_subscriber_1.AuditSubscriber; } });
|
|
52
|
+
var base_entity_1 = require("./core/entities/base.entity");
|
|
53
|
+
Object.defineProperty(exports, "BaseEntity", { enumerable: true, get: function () { return base_entity_1.BaseEntity; } });
|
|
52
54
|
var jwt_config_1 = require("./config/jwt.config");
|
|
53
55
|
Object.defineProperty(exports, "jwtConfig", { enumerable: true, get: function () { return jwt_config_1.jwtConfig; } });
|
|
54
56
|
var redis_config_1 = require("./config/redis.config");
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAYA,iDAA+C;AAAtC,yGAAA,UAAU,OAAA;AAGnB,0DAA4D;AAAnD,6GAAA,cAAc,OAAA;AACvB,kEAAgF;AAAvE,iHAAA,cAAc,OAAA;AACvB,8DAA4D;AAAnD,6GAAA,YAAY,OAAA;AACrB,gEAGuC;AAFrC,+GAAA,aAAa,OAAA;AAGf,wFAA8E;AAArE,+HAAA,iBAAiB,OAAA;AAC1B,kFAGgD;AAF9C,gIAAA,qBAAqB,OAAA;AAGvB,4EAAyE;AAAhE,0HAAA,kBAAkB,OAAA;AAC3B,kFAA+E;AAAtE,gIAAA,qBAAqB,OAAA;AAG9B,8DAA2D;AAAlD,8GAAA,YAAY,OAAA;AACrB,wEAAqE;AAA5D,wHAAA,iBAAiB,OAAA;AAC1B,kEAAgE;AAAvD,mHAAA,eAAe,OAAA;AAGxB,kFAAsE;AAA7D,qHAAA,WAAW,OAAA;AACpB,sEAA0E;AAAjE,0GAAA,MAAM,OAAA;AAAE,iHAAA,aAAa,OAAA;AAC9B,gGAKwD;AAJtD,mIAAA,kBAAkB,OAAA;AAClB,qIAAA,oBAAoB,OAAA;AACpB,gIAAA,eAAe,OAAA;AACf,oIAAA,mBAAmB,OAAA;AAIrB,gEAA6D;AAApD,kHAAA,cAAc,OAAA;AACvB,4DAImC;AAHjC,+GAAA,aAAa,OAAA;AACb,uHAAA,qBAAqB,OAAA;AACrB,mHAAA,iBAAiB,OAAA;AAInB,6EAA0E;AAAjE,4HAAA,mBAAmB,OAAA;AAG5B,8FAA2F;AAAlF,wIAAA,yBAAyB,OAAA;AAGlC,8DAA4D;AAAnD,2GAAA,WAAW,OAAA;AAGpB,uEAAqE;AAA5D,mHAAA,eAAe,OAAA;AAGxB,iDAA+C;AAAtC,uGAAA,SAAS,OAAA;AAClB,qDAAmD;AAA1C,2GAAA,WAAW,OAAA;AACpB,2DAAyD;AAAhD,iHAAA,cAAc,OAAA;AACvB,2DAAgF;AAAvE,iHAAA,cAAc,OAAA;AAAE,wHAAA,qBAAqB,OAAA;AAC9C,uDAAqD;AAA5C,6GAAA,YAAY,OAAA;AACrB,2DAAyD;AAAhD,iHAAA,cAAc,OAAA;AACvB,mDAAiD;AAAxC,yGAAA,UAAU,OAAA;AACnB,mEAAgE;AAAvD,wHAAA,iBAAiB,OAAA;AAG1B,oEAAyD;AAAhD,8GAAA,QAAQ,OAAA;AACjB,0EAK0C;AAJxC,uHAAA,cAAc,OAAA;AACd,wHAAA,eAAe,OAAA;AACf,yHAAA,gBAAgB,OAAA;AAChB,0HAAA,iBAAiB,OAAA;AAInB,gDAA8C;AAArC,uGAAA,SAAS,OAAA;AAGlB,qCAA0E;AAAjE,oGAAA,WAAW,OAAA;AAAE,kGAAA,SAAS,OAAA;AAAE,4GAAA,mBAAmB,OAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAYA,iDAA+C;AAAtC,yGAAA,UAAU,OAAA;AAGnB,0DAA4D;AAAnD,6GAAA,cAAc,OAAA;AACvB,kEAAgF;AAAvE,iHAAA,cAAc,OAAA;AACvB,8DAA4D;AAAnD,6GAAA,YAAY,OAAA;AACrB,gEAGuC;AAFrC,+GAAA,aAAa,OAAA;AAGf,wFAA8E;AAArE,+HAAA,iBAAiB,OAAA;AAC1B,kFAGgD;AAF9C,gIAAA,qBAAqB,OAAA;AAGvB,4EAAyE;AAAhE,0HAAA,kBAAkB,OAAA;AAC3B,kFAA+E;AAAtE,gIAAA,qBAAqB,OAAA;AAG9B,8DAA2D;AAAlD,8GAAA,YAAY,OAAA;AACrB,wEAAqE;AAA5D,wHAAA,iBAAiB,OAAA;AAC1B,kEAAgE;AAAvD,mHAAA,eAAe,OAAA;AAGxB,kFAAsE;AAA7D,qHAAA,WAAW,OAAA;AACpB,sEAA0E;AAAjE,0GAAA,MAAM,OAAA;AAAE,iHAAA,aAAa,OAAA;AAC9B,gGAKwD;AAJtD,mIAAA,kBAAkB,OAAA;AAClB,qIAAA,oBAAoB,OAAA;AACpB,gIAAA,eAAe,OAAA;AACf,oIAAA,mBAAmB,OAAA;AAIrB,gEAA6D;AAApD,kHAAA,cAAc,OAAA;AACvB,4DAImC;AAHjC,+GAAA,aAAa,OAAA;AACb,uHAAA,qBAAqB,OAAA;AACrB,mHAAA,iBAAiB,OAAA;AAInB,6EAA0E;AAAjE,4HAAA,mBAAmB,OAAA;AAG5B,8FAA2F;AAAlF,wIAAA,yBAAyB,OAAA;AAGlC,8DAA4D;AAAnD,2GAAA,WAAW,OAAA;AAGpB,uEAAqE;AAA5D,mHAAA,eAAe,OAAA;AAGxB,0DAAwD;AAA/C,yGAAA,UAAU,OAAA;AAGnB,iDAA+C;AAAtC,uGAAA,SAAS,OAAA;AAClB,qDAAmD;AAA1C,2GAAA,WAAW,OAAA;AACpB,2DAAyD;AAAhD,iHAAA,cAAc,OAAA;AACvB,2DAAgF;AAAvE,iHAAA,cAAc,OAAA;AAAE,wHAAA,qBAAqB,OAAA;AAC9C,uDAAqD;AAA5C,6GAAA,YAAY,OAAA;AACrB,2DAAyD;AAAhD,iHAAA,cAAc,OAAA;AACvB,mDAAiD;AAAxC,yGAAA,UAAU,OAAA;AACnB,mEAAgE;AAAvD,wHAAA,iBAAiB,OAAA;AAG1B,oEAAyD;AAAhD,8GAAA,QAAQ,OAAA;AACjB,0EAK0C;AAJxC,uHAAA,cAAc,OAAA;AACd,wHAAA,eAAe,OAAA;AACf,yHAAA,gBAAgB,OAAA;AAChB,0HAAA,iBAAiB,OAAA;AAInB,gDAA8C;AAArC,uGAAA,SAAS,OAAA;AAGlB,qCAA0E;AAAjE,oGAAA,WAAW,OAAA;AAAE,kGAAA,SAAS,OAAA;AAAE,4GAAA,mBAAmB,OAAA"}
|